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 1vitQd-000pa3-2k for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Jan 2026 12:04:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vitQc-00Cpoi-1t for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Jan 2026 12:04:46 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vitQb-00CpoN-2R for pgsql-hackers@lists.postgresql.org; Thu, 22 Jan 2026 12:04:46 +0000 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vitQT-001lTU-37 for pgsql-hackers@lists.postgresql.org; Thu, 22 Jan 2026 12:04:40 +0000 Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-64d1ef53cf3so1159934a12.0 for ; Thu, 22 Jan 2026 04:04:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769083477; cv=none; d=google.com; s=arc-20240605; b=QE46QlpQHc0T1XkROKqDQeM76foSU/fmujQznj0S8rlJl5Qe/+K0fk5I/+pz+3hpTk 6oQOojq6dYK2h549X443mGqvaD03fZ9fJkai2Q2+5W+h5qRW4dOuO2sbVKk4Nt9tRCx/ Ammw+1gZlt5fRYrYnh7WAcW7wbmSmSx+dIQEeNJz/ci8hXHEMiQdTuaXo5OaeYlSVlbC SVaS0NH/iHvirGfjYeH5K6twz85uHrPoJo4I2NlUdUQ5cqIFUXzU5V7FVdXoDoeYO81m mLGQr6G2QY0lJn4XEAhrCD7Dqx0T3WSPmfwPO1DIceuKWdM2ln41q+VIlRBnTncr9cNn mPpg== 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=9ZX4V1iMsFJEdtQ1oYhOLj60n2VZZUYcwzXH6nwyOks=; fh=v+45SBsd4OoQwRPsjmlpAJSuRxXBx0aFHVlDlmQFWy0=; b=KIRw3Nt/5AshVf/w63fY1fkjqx1+DGLmZMulmwdrZaLtH5zaVuJvfl5mjaHCFPuhCB iYGA4A7f7WIjZlNrRJIaz3pxOnZwKfkOzGV6HJqjtIHyq4w97gYhB7qDtz/PWsgYi6mj QQ6AcndZGy9ubGELhhT77HyKbolPuS5Q08pLaE4r4wAvmL0InUzs3ZB9eG2vQuP1Sp/3 k0ux/5QvcqhXDobduXIOSOQANmPGMvcutP9zln0K5+Ec/IwSNP0/I+U68wRnouvYOKBg B5EqxUJ/iiayHiI4wfGsDyNbSWa5T2NLhWvh+PsJLkennYx4Yl+i+mV2spbduiEbL5il H7Qg==; 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=20230601; t=1769083477; x=1769688277; 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=9ZX4V1iMsFJEdtQ1oYhOLj60n2VZZUYcwzXH6nwyOks=; b=TM86o55qyIA3Dqpt+f6ut6Dg3xlAsi5zUR282ugQ1DT4DdpVo/FLoS2RaNvWsQCwJF Ch1jXS7fVwjB7c+YLpfguV6Th0yfuCsPZr+V2i7FDT6/O6F3Se3lcHu4YzMXKkDtljx5 g69KniXsprUWEgG1NAELHYktiAgUbhmoygT/nAskHbzsv4qZaWjBk3CVKojcAevZ+vBg 3lu4iFe5kAAbUZLZydgWGb2WH+F86O/fDCkFDGrzQ0+nVfITuo8OUO4PeYCPGDPbRAdB 6me/m/CCjorT1YDTbkjI+27XO31+ZVnPDsZUanjS9zrXmgcg5JZg5kD+cW22AsM2fNNQ PKzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769083477; x=1769688277; 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=9ZX4V1iMsFJEdtQ1oYhOLj60n2VZZUYcwzXH6nwyOks=; b=LEI80hWfKtQX/5PxZUMChaEmKMg6vWwn6jg83r5/4lkrY0GdNn4l1vvFow4ErBb5GT 2yNsy8mwKwaoxFqezo2hmJGCleM8gTU3MlTBTkjrKnXBj6SBaesrXwRUaRQEwFktrULR 5WmLykC8B5OD8K/5hHA8uFJUisXEYNw8U6M89QGcgi4bvGt1vsUvro0JzytKqFU3xihD XOKBnRgOgzrGkle2CJik7BBpYddLTi56Oi1ir2KOBVwNkZfyCiKuX5zrOufm65oloUu+ zS7zANoI+tYg1mjcdKGOgh6LxBWYqMx3aaOk254C89eNyaQ5WBHdFP60LojC+4ArUqwm jGpw== X-Forwarded-Encrypted: i=1; AJvYcCWkKsHgq2H1RNB5xe+9UblIa8Ry363+L3AXzMYrvbKinJkCFJ0PjutcLwd9cRbueR1E3twctVvk0rqTI/3d@lists.postgresql.org X-Gm-Message-State: AOJu0YwdKkPPUo+vNPLDcCw24IddpnEE+jjQo1Fb3DXbS8YXQphtXuFq IkvPIZbQEQD8VyCitwFkYGfJUVq4pwV6dwWiHGmd0u5X/63hYyiUOcyI4f2YV1WGKxrC+UrELTM KjUCaNaEnAPtdp05DtBWrmbrXeoLhkpY= X-Gm-Gg: AZuq6aLe7hPXPzk/6oM7MdJm2tgwF+KiQU4G2Kj3U8nKDNWkaa6+olvpecD82j4t1Mb DH+L6rKtmgn9d2RIBcqEZAazw2O0Z6BTmCx7iP6OI2hBfg0+LumeUNznzlrcL4ZboW0TJdDTQcN Vap0QXMKM+YhzM+Su5EnhgFo4XCszgXisYwdXc7YhVrE1dgNdL+6+iKgqr8TF4O8W3i4DbkgZcE m3Nudp5nrde2b9ckqJ5HEpb0lGBEhOFt2ys8iJvor4lWNsg4WOGUzA6Yz664pqE1ABIQygg/g== X-Received: by 2002:a17:907:3d0a:b0:b86:ef1f:6d19 with SMTP id a640c23a62f3a-b879324d0a2mr1589309166b.59.1769083476794; Thu, 22 Jan 2026 04:04:36 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Thu, 22 Jan 2026 17:34:25 +0530 X-Gm-Features: AZwV_QgvJV4LyUCmcsbWcRIB_dTdS91BDBHhgnkpYokuqadS_OU33UwcMhKRPWo Message-ID: Subject: Re: Skipping schema changes in publication To: Dilip Kumar Cc: shveta malik , Amit Kapila , Peter Smith , vignesh C , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000036e9410648f8d89b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000036e9410648f8d89b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 21 Jan 2026 at 17:11, Dilip Kumar wrote: > > On Wed, Jan 21, 2026 at 4:57=E2=80=AFPM shveta malik wrote: > > > > On Wed, Jan 21, 2026 at 11:35=E2=80=AFAM Dilip Kumar wrote: > > > > > > Thanks for explaining this, overall I like the Approach 1, and I also > > > see the problem when publish via root is given in that case COPY FROM > > > is executed on the root and it would be hard to exclude specific > > > partitions. What is the behavior when root of partition tree is adde= d > > > but publish via root is not true, it doesn't add any relation to > > > publication rel or how does it manage to not copy data from > > > partitions? > > > > > > > So, I believe you are asking about the behavior of COPY on HEAD for > > the following case: > > > > CREATE PUBLICATION pub1 FOR TABLE tab_root WITH > > (publish_via_partition_root =3D false); > > > > In this scenario, pg_publication_rel contains an entry for tab_root, > > while pg_publication_tables contains all leaf partitions (because > > publish_via_partition_root =3D false). Consequently, > > pg_subscription_rel, which is derived from pg_publication_tables, also > > contains all corresponding leaf partitions. As a result, on HEAD, a > > separate tablesync worker is launched for each leaf partition, and > > each leaf partition is copied independently. > > > > ~~ > > > > Now, in Approach 4, when publish_via_partition_root is set to false, > > we propose avoiding the inclusion of leaf partitions in > > pg_publication_tables if their parent appears in the EXCEPT list. > > Given the table hierarchy described in Approach1_challenges: > > > > tab_root > > =E2=94=9C=E2=94=80=E2=94=80 tab_part_1 > > =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 tab_part_1_1 > > =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 tab_part_1_1_1 > > =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80 tab_par= t_1_1_1_1 > > =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80 tab_part_1_1_2 > > =E2=94=82 =E2=94=94=E2=94=80=E2=94=80 tab_part_1_2 > > =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 tab_part_1_2_1 > > =E2=94=82 =E2=94=94=E2=94=80=E2=94=80 tab_part_1_2_2 > > =E2=94=94=E2=94=80=E2=94=80 tab_part_2 > > > > If tab_part_1_1 is specified in the EXCEPT list, then > > pg_publication_tables will include only those leaf partitions that are > > not in the partition-chain of tab_part_1_1. As a result, both > > pg_publication_tables and pg_subscription_rel (which is built from > > pg_publication_tables via fetch_relation_list) will contain: > > > > tab_part_1_2_1 > > tab_part_1_2_2 > > tab_part_2 > > > > With this setup, any INSERT into tab_part_1 or tab_root that routes > > rows to tab_part_1_1_1_1 or tab_part_1_1_2 will not be replicated. > > However, rows routed to any of the three leaf partitions listed above > > will be replicated. > > > > I hope it answers your query. If we have to go by Approach1, then do > > you see any simpler way to overcome the challenges we mention for > > publish_via_partition_root=3Dtrue case. Or any other approach > > altogether? > > Thanks for the explanation, that clears it up. I agree that Approach 3 > is the right path forward. And it makes sense to extend this with > Approach 4. Logically, I think it's reasonable to say that if a user > chooses to partition via the root, they are treating the entire > partition tree as a single entity. Therefore, it makes sense to > disallow the exclusion of individual child partitions in that context. > Hi, I have prepared a patch for Approach-3. We are also checking the feasibility of other approaches. Thanks, Shlok Kyal --00000000000036e9410648f8d89b Content-Type: application/x-patch; name="v36-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v36-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkpejxw70 RnJvbSBlZDQ1M2JmNDdjZWNiZGIwNGU3MDY0YjYyN2FmMWVmMjJiOThmMzgyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgOSBEZWMgMjAyNSAyMjo0MToyMyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjM2 XSBTa2lwIHB1Ymxpc2hpbmcgdGhlIHRhYmxlcyBzcGVjaWZpZWQgaW4gRVhDRVBUIFRBQkxFLgoK QSBuZXcgIkVYQ0VQVCBUQUJMRSIgY2xhdXNlIGZvciBDUkVBVEUgUFVCTElDQVRJT04gYWxsb3dz IG9uZSBvciBtb3JlCnRhYmxlcyB0byBiZSBleGNsdWRlZC4gVGhlIHB1Ymxpc2hlciB3aWxsIG5v dCBzZW5kIHRoZSBkYXRhIG9mIGV4Y2x1ZGVkCnRhYmxlcyB0byB0aGUgc3Vic2NyaWJlci4KClRo ZSBuZXcgc3ludGF4IGFsbG93cyBzcGVjaWZ5aW5nIGV4Y2x1ZGVkIHJlbGF0aW9ucyB3aGVuIGNy ZWF0aW5nIGEKcHVibGljYXRpb24uIEZvciBleGFtcGxlOgpDUkVBVEUgUFVCTElDQVRJT04gcHVi MSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHQxLHQyKTsKCkEgbmV3IGNvbHVtbiAicHJl eGNlcHQiIGlzIGFkZGVkIHRvIHRhYmxlICJwZ19wdWJsaWNhdGlvbl9yZWwiLCB0byBmbGFnCnRo ZSByZWxhdGlvbnMgdGhhdCB0aGUgdXNlciB3YW50cyB0byBleGNsdWRlIGZyb20gdGhlIHB1Ymxp Y2F0aW9ucy4KCnBnX2R1bXAgaXMgdXBkYXRlZCB0byBpZGVudGlmeSBhbmQgZHVtcCB0aGUgZXhj bHVkZWQgdGFibGVzIG9mIHRoZSBwdWJsaWNhdGlvbnMuCgpUaGUgcHNxbCBcZCBmYW1pbHkgb2Yg Y29tbWFuZHMgY2FuIG5vdyBkaXNwbGF5IGV4Y2x1ZGVkIHRhYmxlcy4KCkJ1bXAgY2F0YWxvZyB2 ZXJzaW9uLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAg ICB8ICAxMCArCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAg fCAgIDYgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgICAgICB8 ICA1MSArKystCiBkb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwgICAgICAgICAgICAgICAg fCAgMTEgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAgICB8 IDEzMSArKysrKysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAg ICAgICB8IDEwOSArKysrLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAg ICAgICAgICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAg ICAgICAgICAgfCAgNDIgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jICAgfCAgNDIgKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAg ICAgICAgICAgfCAgMjQgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAg ICAgICAgICB8ICA3MSArKysrKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsICAgICAg ICAgICAgICB8ICAzMCArKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAg ICAgICAgICB8ICA4NyArKysrKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAg ICAgICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5o ICAgICAgICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3Jl bC5oICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAg ICAgICAgIHwgICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0 ICAgICB8ICA5MyArKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwg ICAgICAgICAgfCAgMzcgKystCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQgICAg ICAgICAgICAgfCAgIDEgKwogLi4uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCAg ICAgICAgIHwgMjUzICsrKysrKysrKysrKysrKysrKwogMjIgZmlsZXMgY2hhbmdlZCwgOTA0IGlu c2VydGlvbnMoKyksIDEzNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbAppbmRleCAyZmM2MzQ0Mjk4MC4uOWU4NDcxNTJiNDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC02 NTgxLDYgKzY1ODEsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlv biBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIGlmIHRoZXJl IGlzIG5vIHB1YmxpY2F0aW9uIHF1YWxpZnlpbmcgY29uZGl0aW9uLjwvcGFyYT48L2VudHJ5Pgog ICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgIDxzdHJ1Y3Rm aWVsZD5wcmV4Y2VwdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUcnVlIGlmIHRoZSByZWxhdGlvbiBpcyBleGNsdWRl ZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gU2VlCisgICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNy ZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0LXRhYmxlIj48bGl0ZXJhbD5FWENFUFQg VEFCTEU8L2xpdGVyYWw+PC9saW5rPi4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jv dz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+cHJh dHRyczwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDJ2ZWN0b3I8L3R5cGU+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2lj YWwtcmVwbGljYXRpb24uc2dtbAppbmRleCA1MDI4ZmU5YWYwOS4uZjAxMjgxZmQ0ZjkgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTE2LDcgKzExNiwxMSBAQAogICAg PGxpdGVyYWw+Rk9SIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LCA8bGl0ZXJhbD5GT1IgQUxM IFRBQkxFUzwvbGl0ZXJhbD4sCiAgICBvciA8bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0 ZXJhbD4uIFVubGlrZSB0YWJsZXMsIHNlcXVlbmNlcyBjYW4gYmUKICAgIHN5bmNocm9uaXplZCBh dCBhbnkgdGltZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQotICAgPHhyZWYgbGlua2VuZD0i bG9naWNhbC1yZXBsaWNhdGlvbi1zZXF1ZW5jZXMiLz4uCisgICA8eHJlZiBsaW5rZW5kPSJsb2dp Y2FsLXJlcGxpY2F0aW9uLXNlcXVlbmNlcyIvPi4gV2hlbiBhIHB1YmxpY2F0aW9uIGlzCisgICBj cmVhdGVkIHdpdGggPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+LCB0YWJsZXMgY2Fu IGJlIGV4cGxpY2l0bHkKKyAgIGV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb24gdXNpbmcgdGhlCisg ICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQt dGFibGUiPjxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD48L2xpbms+CisgICBjbGF1c2Uu CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlv bi5zZ21sCmluZGV4IDZlZmJiOTE1Y2VjLi42MTk3NGY0MWZkOSAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCkBAIC0zMiwxMiArMzIsMTYgQEAgQ1JFQVRFIFBVQkxJ Q0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4K IAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9u X2FsbF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKLSAgICBBTEwg VEFCTEVTCisgICAgQUxMIFRBQkxFUyBbIEVYQ0VQVCBbIFRBQkxFIF0gKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3RhYmxlX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4u LiBdICkgXQogICAgIEFMTCBTRVFVRU5DRVMKIAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2FuZF9jb2x1bW5zPC9yZXBsYWNlYWJsZT4gaXM6PC9waHJh c2U+CiAKICAgICBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVf bmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gWyBXSEVSRSAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBdCisK KzxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVf b2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisKKyAgICBbIE9OTFkgXSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdCiA8 L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKQEAgLTE2NCw3ICsxNjgsOCBAQCBDUkVB VEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CiAgICAgICBNYXJrcyB0aGUgcHVi bGljYXRpb24gYXMgb25lIHRoYXQgcmVwbGljYXRlcyBjaGFuZ2VzIGZvciBhbGwgdGFibGVzIGlu Ci0gICAgICB0aGUgZGF0YWJhc2UsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0aGUgZnV0 dXJlLgorICAgICAgdGhlIGRhdGFiYXNlLCBpbmNsdWRpbmcgdGFibGVzIGNyZWF0ZWQgaW4gdGhl IGZ1dHVyZS4gVGFibGVzIGxpc3RlZCBpbgorICAgICAgRVhDRVBUIFRBQkxFIGFyZSBleGNsdWRl ZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE4NCw2ICsxODksMzEgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICA8 L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNx bC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJsZSI+CisgICAgPHRlcm0+ PGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgVGhpcyBjbGF1c2Ugc3BlY2lmaWVzIGEgbGlzdCBvZiB0YWJsZXMg dG8gYmUgZXhjbHVkZWQgZnJvbSB0aGUKKyAgICAgIHB1YmxpY2F0aW9uLgorICAgICA8L3BhcmE+ CisgICAgIDxwYXJhPgorICAgICAgRm9yIGluaGVyaXRlZCB0YWJsZXMsIGlmIDxsaXRlcmFsPk9O TFk8L2xpdGVyYWw+IGlzIHNwZWNpZmllZCBiZWZvcmUgdGhlCisgICAgICB0YWJsZSBuYW1lLCBv bmx5IHRoYXQgdGFibGUgaXMgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uIElmCisgICAg ICA8bGl0ZXJhbD5PTkxZPC9saXRlcmFsPiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgdGFibGUgYW5k IGFsbCBpdHMgZGVzY2VuZGFudAorICAgICAgdGFibGVzIChpZiBhbnkpIGFyZSBleGNsdWRlZC4g T3B0aW9uYWxseSwgPGxpdGVyYWw+KjwvbGl0ZXJhbD4gY2FuIGJlCisgICAgICBzcGVjaWZpZWQg YWZ0ZXIgdGhlIHRhYmxlIG5hbWUgdG8gZXhwbGljaXRseSBpbmRpY2F0ZSB0aGF0IGRlc2NlbmRh bnQKKyAgICAgIHRhYmxlcyBhcmUgZXhjbHVkZWQuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+ CisgICAgICBGb3IgcGFydGl0aW9uZWQgdGFibGVzLCBvbmx5IHRoZSByb290IHBhcnRpdGlvbmVk IHRhYmxlIG1heSBiZSBzcGVjaWZpZWQKKyAgICAgIGluIDxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwv bGl0ZXJhbD4uIERvaW5nIHNvIGV4Y2x1ZGVzIHRoZSByb290IHRhYmxlIGFuZAorICAgICAgYWxs IG9mIGl0cyBwYXJ0aXRpb25zIGZyb20gcmVwbGljYXRpb24sIHJlZ2FyZGxlc3Mgb2YgdGhlIHZh bHVlIG9mCisgICAgICA8bGl0ZXJhbD5wdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdDwvbGl0ZXJh bD4uIFRoZSBvcHRpb25hbAorICAgICAgPGxpdGVyYWw+KjwvbGl0ZXJhbD4gaGFzIG5vIGVmZmVj dCBmb3IgcGFydGl0aW9uZWQgdGFibGVzLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVi bGljYXRpb24tcGFyYW1zLXdpdGgiPgogICAgIDx0ZXJtPjxsaXRlcmFsPldJVEggKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJs ZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5d IFssIC4uLiBdICk8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTQ4OSw2ICs1 MTksMjMgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF9zZXF1ZW5jZXMgRk9SIEFMTCBTRVFVRU5D RVM7CiAgICBhbGwgc2VxdWVuY2VzIGZvciBzeW5jaHJvbml6YXRpb246CiA8cHJvZ3JhbWxpc3Rp bmc+CiBDUkVBVEUgUFVCTElDQVRJT04gYWxsX3RhYmxlc19zZXF1ZW5jZXMgRk9SIEFMTCBUQUJM RVMsIEFMTCBTRVFVRU5DRVM7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBh cmE+CisgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgY2hhbmdlcyBp biBhbGwgdGFibGVzIGV4Y2VwdAorICAgPHN0cnVjdG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+IGFu ZCA8c3RydWN0bmFtZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+ CitDUkVBVEUgUFVCTElDQVRJT04gYWxsX3RhYmxlc19leGNlcHQgRk9SIEFMTCBUQUJMRVMgRVhD RVBUICh1c2VycywgZGVwYXJ0bWVudHMpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgor CisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIHNl cXVlbmNlcyBmb3Igc3luY2hyb25pemF0aW9uLCBhbmQKKyAgIGFsbCBjaGFuZ2VzIGluIGFsbCB0 YWJsZXMgZXhjZXB0IDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQKKyAgIDxzdHJ1 Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFU RSBQVUJMSUNBVElPTiBhbGxfc2VxdWVuY2VzX3RhYmxlc19leGNlcHQgRk9SIEFMTCBTRVFVRU5D RVMsIEFMTCBUQUJMRVMgRVhDRVBUICh1c2VycywgZGVwYXJ0bWVudHMpOwogPC9wcm9ncmFtbGlz dGluZz4KICAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL3BzcWwtcmVmLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKaW5kZXgg ZjU2YzcwMjYzZTAuLjg0MTYxMjhhOWFkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3Bz cWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCkBAIC0xMjk5 LDEwICsxMjk5LDggQEAgU0VMRUNUICQxIFxwYXJzZSBzdG10MQogICAgICAgICA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFjZWFibGU+LCBzaG93IGFsbAogICAg ICAgICBjb2x1bW5zLCB0aGVpciB0eXBlcywgdGhlIHRhYmxlc3BhY2UgKGlmIG5vdCB0aGUgZGVm YXVsdCkgYW5kIGFueQogICAgICAgICBzcGVjaWFsIGF0dHJpYnV0ZXMgc3VjaCBhcyA8bGl0ZXJh bD5OT1QgTlVMTDwvbGl0ZXJhbD4gb3IgZGVmYXVsdHMuCi0gICAgICAgIEFzc29jaWF0ZWQgaW5k ZXhlcywgY29uc3RyYWludHMsIHJ1bGVzLCBhbmQgdHJpZ2dlcnMgYXJlCi0gICAgICAgIGFsc28g c2hvd24uICBGb3IgZm9yZWlnbiB0YWJsZXMsIHRoZSBhc3NvY2lhdGVkIGZvcmVpZ24KLSAgICAg ICAgc2VydmVyIGlzIHNob3duIGFzIHdlbGwuCi0gICAgICAgICg8cXVvdGU+TWF0Y2hpbmcgdGhl IHBhdHRlcm48L3F1b3RlPiBpcyBkZWZpbmVkIGluCisgICAgICAgIEFzc29jaWF0ZWQgaW5kZXhl cywgY29uc3RyYWludHMsIHJ1bGVzLCBwdWJsaWNhdGlvbnMsIGFuZCB0cmlnZ2VycyBhcmUKKyAg ICAgICAgYWxzbyBzaG93bi4gKDxxdW90ZT5NYXRjaGluZyB0aGUgcGF0dGVybjwvcXVvdGU+IGlz IGRlZmluZWQgaW4KICAgICAgICAgPHhyZWYgbGlua2VuZD0iYXBwLXBzcWwtcGF0dGVybnMiLz4g YmVsb3cuKQogICAgICAgICA8L3BhcmE+CiAKQEAgLTIxMDMsOCArMjEwMSw5IEBAIFNFTEVDVCAk MSBccGFyc2Ugc3RtdDEKICAgICAgICAgbGlzdGVkLgogICAgICAgICBJZiA8bGl0ZXJhbD54PC9s aXRlcmFsPiBpcyBhcHBlbmRlZCB0byB0aGUgY29tbWFuZCBuYW1lLCB0aGUgcmVzdWx0cwogICAg ICAgICBhcmUgZGlzcGxheWVkIGluIGV4cGFuZGVkIG1vZGUuCi0gICAgICAgIElmIDxsaXRlcmFs Pis8L2xpdGVyYWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIHRoZSB0YWJsZXMg YW5kCi0gICAgICAgIHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcHVibGljYXRpb24gYXJl IHNob3duIGFzIHdlbGwuCisgICAgICAgIElmIDxsaXRlcmFsPis8L2xpdGVyYWw+IGlzIGFwcGVu ZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIHRoZSB0YWJsZXMsCisgICAgICAgIGV4Y2x1ZGVkIHRh YmxlcywgYW5kIHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcHVibGljYXRpb24gYXJlIHNo b3duCisgICAgICAgIGFzIHdlbGwuCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRl bT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5j CmluZGV4IDlhNDc5MWM1NzNlLi4wZmRkZGQ5NjcwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYwpAQCAtMzY2LDkgKzM2NiwxMSBAQCBHZXRUb3BNb3N0QW5jZXN0b3JJblB1Ymxp Y2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywgaW50ICphbmNlc3Rvcl9sZXZlbAog CWZvcmVhY2gobGMsIGFuY2VzdG9ycykKIAl7CiAJCU9pZAkJCWFuY2VzdG9yID0gbGZpcnN0X29p ZChsYyk7Ci0JCUxpc3QJICAgKmFwdWJpZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNl c3Rvcik7CisJCUxpc3QJICAgKmFwdWJpZHMgPSBOSUw7CiAJCUxpc3QJICAgKmFzY2hlbWFQdWJp ZHMgPSBOSUw7CiAKKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IsICZhcHViaWRz LCBOVUxMKTsKKwogCQlsZXZlbCsrOwogCiAJCWlmIChsaXN0X21lbWJlcl9vaWQoYXB1Ymlkcywg cHVib2lkKSkKQEAgLTQ2Niw2ICs0NjgsMTQgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9p ZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZSh0YXJnZXRyZWwpLCBwdWItPm5hbWUpKSk7CiAJfQogCisJLyoKKwkgKiBIYW5kbGUg dGhlIGNhc2Ugd2hlcmUgYSBwYXJ0aXRpb24gaXMgZXhjbHVkZWQgYnkgRVhDRVBUIFRBQkxFCisJ ICovCisJaWYgKHB1Yi0+YWxsdGFibGVzICYmIHByaS0+ZXhjZXB0ICYmIHRhcmdldHJlbC0+cmRf cmVsLT5yZWxpc3BhcnRpdGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJwYXJ0 aXRpb24gXCIlc1wiIGNhbm5vdCBiZSBleGNsdWRlZCB1c2luZyBFWENFUFQgVEFCTEUiLAorCQkJ CQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSkpKTsKKwogCWNoZWNrX3B1Ymxp Y2F0aW9uX2FkZF9yZWxhdGlvbih0YXJnZXRyZWwpOwogCiAJLyogVmFsaWRhdGUgYW5kIHRyYW5z bGF0ZSBjb2x1bW4gbmFtZXMgaW50byBhIEJpdG1hcHNldCBvZiBhdHRudW1zLiAqLwpAQCAtNDgy LDYgKzQ5Miw4IEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0 aW9uUmVsSW5mbyAqcHJpLAogCQlPYmplY3RJZEdldERhdHVtKHB1YmlkKTsKIAl2YWx1ZXNbQW51 bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJyZWxpZCAtIDFdID0KIAkJT2JqZWN0SWRHZXREYXR1bShy ZWxpZCk7CisJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcmVsX3ByZXhjZXB0IC0gMV0gPQor CQlCb29sR2V0RGF0dW0ocHJpLT5leGNlcHQpOwogCiAJLyogQWRkIHF1YWxpZmljYXRpb25zLCBp ZiBhdmFpbGFibGUgKi8KIAlpZiAocHJpLT53aGVyZUNsYXVzZSAhPSBOVUxMKQpAQCAtNzQ5LDM4 ICs3NjEsNTggQEAgcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFp ZCwgYm9vbCBpZl9ub3RfZXhpc3RzKQogCXJldHVybiBteXNlbGY7CiB9CiAKLS8qIEdldHMgbGlz dCBvZiBwdWJsaWNhdGlvbiBvaWRzIGZvciBhIHJlbGF0aW9uICovCi1MaXN0ICoKLUdldFJlbGF0 aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCkKKy8qCisgKiBHZXQgdGhlIGxpc3Qgb2YgcHVibGlj YXRpb24gb2lkcyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpZWQgcmVsYXRpb24uCisgKgorICog UGFyYW1ldGVyICdwdWJpZHMnIHJldHVybnMgdGhlIE9pZHMgb2YgdGhlIHB1YmxpY2F0aW9ucyB0 aGUgcmVsYXRpb24gaXMgcGFydAorICogb2YuIFBhcmFtZXRlciAnZXhjZXB0X3B1YmlkcycgcmV0 dXJucyB0aGUgT2lkcyBvZiBwdWJsaWNhdGlvbnMgdGhlIHJlbGF0aW9uCisgKiBpcyBleGNsdWRl ZCBmcm9tLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIHRoZSByZWxhdGlv biBpcyBwYXJ0IG9mIGFueSBwdWJsaWNhdGlvbi4KKyAqLworYm9vbAorR2V0UmVsYXRpb25QdWJs aWNhdGlvbnMoT2lkIHJlbGlkLCBMaXN0ICoqcHViaWRzLCBMaXN0ICoqZXhjZXB0X3B1YmlkcykK IHsKLQlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CiAJQ2F0Q0xpc3QgICAqcHVicmVsbGlzdDsKLQlp bnQJCQlpOworCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAKIAkvKiBGaW5kIGFsbCBwdWJsaWNhdGlv bnMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWxhdGlvbi4gKi8KIAlwdWJyZWxsaXN0ID0gU2VhcmNo U3lzQ2FjaGVMaXN0MShQVUJMSUNBVElPTlJFTE1BUCwKIAkJCQkJCQkJCSBPYmplY3RJZEdldERh dHVtKHJlbGlkKSk7Ci0JZm9yIChpID0gMDsgaSA8IHB1YnJlbGxpc3QtPm5fbWVtYmVyczsgaSsr KQorCWZvciAoaW50IGkgPSAwOyBpIDwgcHVicmVsbGlzdC0+bl9tZW1iZXJzOyBpKyspCiAJewog CQlIZWFwVHVwbGUJdHVwID0gJnB1YnJlbGxpc3QtPm1lbWJlcnNbaV0tPnR1cGxlOwotCQlPaWQJ CQlwdWJpZCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApKS0+cHJw dWJpZDsKKwkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVsID0gKEZvcm1fcGdfcHVibGlj YXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKwkJT2lkCQkJcHViaWQgPSBwdWJyZWwtPnBycHVi aWQ7CiAKLQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBwdWJpZCk7CisJCWlmIChwdWJy ZWwtPnByZXhjZXB0KQorCQl7CisJCQlpZiAoZXhjZXB0X3B1YmlkcykKKwkJCQkqZXhjZXB0X3B1 YmlkcyA9IGxhcHBlbmRfb2lkKCpleGNlcHRfcHViaWRzLCBwdWJpZCk7CisJCX0KKwkJZWxzZQor CQl7CisJCQlpZiAocHViaWRzKQorCQkJCSpwdWJpZHMgPSBsYXBwZW5kX29pZCgqcHViaWRzLCBw dWJpZCk7CisJCQlmb3VuZCA9IHRydWU7CisJCX0KIAl9CiAKIAlSZWxlYXNlU3lzQ2FjaGVMaXN0 KHB1YnJlbGxpc3QpOwogCi0JcmV0dXJuIHJlc3VsdDsKKwlyZXR1cm4gZm91bmQ7CiB9CiAKIC8q Ci0gKiBHZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyBmb3IgYSBwdWJsaWNhdGlvbi4KKyAqIElu dGVybmFsIGZ1bmN0aW9uIHRvIGdldCB0aGUgbGlzdCBvZiByZWxhdGlvbiBPaWRzIGZvciBhIHB1 YmxpY2F0aW9uLgogICoKLSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBGT1IgVEFCTEUgcHVi bGljYXRpb25zLCB0aGUgRk9SIEFMTCBUQUJMRVMvU0VRVUVOQ0VTCi0gKiBzaG91bGQgdXNlIEdl dEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKCkuCisgKiBJZiBleGNlcHRfZmxhZyBpcyB0cnVlLCBy ZXR1cm5zIHRoZSBsaXN0IG9mIHJlbGF0aW9ucyBleGNsdWRlZCBmcm9tIHRoZQorICogcHVibGlj YXRpb247IG90aGVyd2lzZSwgcmV0dXJucyB0aGUgbGlzdCBvZiByZWxhdGlvbnMgaW5jbHVkZWQg aW4gdGhlCisgKiBwdWJsaWNhdGlvbi4KICAqLwotTGlzdCAqCi1HZXRQdWJsaWNhdGlvblJlbGF0 aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKK3N0YXRpYyBM aXN0ICoKK2dldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBh cnRPcHQgcHViX3BhcnRvcHQsCisJCQkJCQkgIGJvb2wgZXhjZXB0X2ZsYWcpCiB7CiAJTGlzdAkg ICAqcmVzdWx0OwogCVJlbGF0aW9uCXB1YnJlbHNyZWw7CkBAIC04MDUsOCArODM3LDEwIEBAIEdl dFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9w YXJ0b3B0KQogCQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJyZWw7CiAKIAkJcHVicmVsID0g KEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKLQkJcmVzdWx0ID0gR2V0 UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3VsdCwgcHViX3BhcnRvcHQsCi0JCQkJCQkJ CQkJCQlwdWJyZWwtPnBycmVsaWQpOworCisJCWlmIChleGNlcHRfZmxhZyA9PSBwdWJyZWwtPnBy ZXhjZXB0KQorCQkJcmVzdWx0ID0gR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3Vs dCwgcHViX3BhcnRvcHQsCisJCQkJCQkJCQkJCQkJcHVicmVsLT5wcnJlbGlkKTsKIAl9CiAKIAlz eXN0YWJsZV9lbmRzY2FuKHNjYW4pOwpAQCAtODE5LDYgKzg1MywzNiBAQCBHZXRQdWJsaWNhdGlv blJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIAly ZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogUmV0dXJuIHRoZSBsaXN0IG9mIHJlbGF0aW9uIE9p ZHMgZm9yIGEgcHVibGljYXRpb24uCisgKgorICogRm9yIGEgRk9SIFRBQkxFIHB1YmxpY2F0aW9u LCB0aGlzIHJldHVybnMgdGhlIGxpc3Qgb2YgcmVsYXRpb25zIGV4cGxpY2l0bHkKKyAqIGluY2x1 ZGVkIGluIHRoZSBwdWJsaWNhdGlvbi4KKyAqCisgKiBQdWJsaWNhdGlvbnMgZGVjbGFyZWQgd2l0 aCBGT1IgQUxMIFRBQkxFUyBzaG91bGQgdXNlCisgKiBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9u cygpIHRvIG9idGFpbiB0aGUgY29tcGxldGUgc2V0IG9mIHRhYmxlcyBjb3ZlcmVkIGJ5CisgKiB0 aGUgcHVibGljYXRpb24uCisgKi8KK0xpc3QgKgorR2V0UHVibGljYXRpb25JbmNsdWRlZFJlbGF0 aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKK3sKKwlBc3Nl cnQoIUdldFB1YmxpY2F0aW9uKHB1YmlkKS0+YWxsdGFibGVzKTsKKworCXJldHVybiBnZXRfcHVi bGljYXRpb25fcmVsYXRpb25zKHB1YmlkLCBwdWJfcGFydG9wdCwgZmFsc2UpOworfQorCisvKgor ICogUmV0dXJuIHRoZSBsaXN0IG9mIHRhYmxlcyBPaWRzIGV4Y2x1ZGVkIGZyb20gYSBwdWJsaWNh dGlvbi4KKyAqIFRoaXMgaXMgb25seSBhcHBsaWNhYmxlIGZvciBGT1IgQUxMIFRBQkxFUyBwdWJs aWNhdGlvbnMuCisgKi8KK0xpc3QgKgorR2V0QWxsUHVibGljYXRpb25FeGNsdWRlZFRhYmxlcyhP aWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKK3sKKwlBc3NlcnQoR2V0 UHVibGljYXRpb24ocHViaWQpLT5hbGx0YWJsZXMpOworCisJcmV0dXJuIGdldF9wdWJsaWNhdGlv bl9yZWxhdGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCB0cnVlKTsKK30KKwogLyoKICAqIEdldHMg bGlzdCBvZiBwdWJsaWNhdGlvbiBvaWRzIGZvciBwdWJsaWNhdGlvbnMgbWFya2VkIGFzIEZPUiBB TEwgVEFCTEVTLgogICovCkBAIC04NjQsMTggKzkyOCwyOSBAQCBHZXRBbGxUYWJsZXNQdWJsaWNh dGlvbnModm9pZCkKICAqIHBhcnRpdGlvbmVkIHRhYmxlcywgd2UgbXVzdCBleGNsdWRlIHBhcnRp dGlvbnMgaW4gZmF2b3Igb2YgaW5jbHVkaW5nIHRoZQogICogcm9vdCBwYXJ0aXRpb25lZCB0YWJs ZXMuIFRoaXMgaXMgbm90IGFwcGxpY2FibGUgdG8gRk9SIEFMTCBTRVFVRU5DRVMKICAqIHB1Ymxp Y2F0aW9uLgorICoKKyAqIEZvciBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uLCB0aGUgcmV0 dXJuZWQgbGlzdCBleGNsdWRlcyB0YWJsZXMgbWVudGlvbmVkCisgKiBpbiBFWENFUFQgVEFCTEUg Y2xhdXNlLgogICovCiBMaXN0ICoKLUdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKGNoYXIgcmVs a2luZCwgYm9vbCBwdWJ2aWFyb290KQorR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoUHVibGlj YXRpb24gKnB1YiwgY2hhciByZWxraW5kKQogewogCVJlbGF0aW9uCWNsYXNzUmVsOwogCVNjYW5L ZXlEYXRhIGtleVsxXTsKIAlUYWJsZVNjYW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCXR1cGxlOwog CUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKKwlMaXN0CSAgICpleGNlcHRsaXN0ID0gTklMOworCWJv b2wJCXB1YnZpYXJvb3QgPSBwdWItPnB1YnZpYXJvb3Q7CisJT2lkCQkJcHViaWQgPSBwdWItPm9p ZDsKIAogCUFzc2VydCghKHJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSAmJiBwdWJ2aWFyb290 KSk7CiAKKwlpZiAocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OKQorCQlleGNlcHRsaXN0ID0g R2V0QWxsUHVibGljYXRpb25FeGNsdWRlZFRhYmxlcyhwdWJpZCwgcHVidmlhcm9vdCA/CisJCQkJ CQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6CisJCQkJCQkJCQkJCQkJIFBVQkxJQ0FU SU9OX1BBUlRfTEVBRik7CisKIAljbGFzc1JlbCA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlv bklkLCBBY2Nlc3NTaGFyZUxvY2spOwogCiAJU2NhbktleUluaXQoJmtleVswXSwKQEAgLTg5MSw3 ICs5NjYsOCBAQCBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhjaGFyIHJlbGtpbmQsIGJvb2wg cHVidmlhcm9vdCkKIAkJT2lkCQkJcmVsaWQgPSByZWxGb3JtLT5vaWQ7CiAKIAkJaWYgKGlzX3B1 Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSAmJgotCQkJIShyZWxGb3JtLT5yZWxpc3Bh cnRpdGlvbiAmJiBwdWJ2aWFyb290KSkKKwkJCSEocmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYg cHVidmlhcm9vdCkgJiYKKwkJCSFsaXN0X21lbWJlcl9vaWQoZXhjZXB0bGlzdCwgcmVsaWQpKQog CQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJfQogCkBAIC05MTIsNyAr OTg4LDggQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoY2hhciByZWxraW5kLCBib29sIHB1 YnZpYXJvb3QpCiAJCQlPaWQJCQlyZWxpZCA9IHJlbEZvcm0tPm9pZDsKIAogCQkJaWYgKGlzX3B1 Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSAmJgotCQkJCSFyZWxGb3JtLT5yZWxpc3Bh cnRpdGlvbikKKwkJCQkhcmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYKKwkJCQkhbGlzdF9tZW1i ZXJfb2lkKGV4Y2VwdGxpc3QsIHJlbGlkKSkKIAkJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1 bHQsIHJlbGlkKTsKIAkJfQogCkBAIC0xMTY4LDE3ICsxMjQ1LDE3IEBAIHBnX2dldF9wdWJsaWNh dGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCSAqIHRob3NlLiBPdGhlcndpc2UsIGdl dCB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXRzZWxmLgogCQkJICovCiAJCQlpZiAocHViX2VsZW0t PmFsbHRhYmxlcykKLQkJCQlwdWJfZWxlbV90YWJsZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0 aW9ucyhSRUxLSU5EX1JFTEFUSU9OLAotCQkJCQkJCQkJCQkJCQkJIHB1Yl9lbGVtLT5wdWJ2aWFy b290KTsKKwkJCQlwdWJfZWxlbV90YWJsZXMgPSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhw dWJfZWxlbSwKKwkJCQkJCQkJCQkJCQkJCSBSRUxLSU5EX1JFTEFUSU9OKTsKIAkJCWVsc2UKIAkJ CXsKIAkJCQlMaXN0CSAgICpyZWxpZHMsCiAJCQkJCQkgICAqc2NoZW1hcmVsaWRzOwogCi0JCQkJ cmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViX2VsZW0tPm9pZCwKLQkJCQkJCQkJ CQkJCSBwdWJfZWxlbS0+cHVidmlhcm9vdCA/Ci0JCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFS VF9ST09UIDoKLQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOworCQkJCXJlbGlk cyA9IEdldFB1YmxpY2F0aW9uSW5jbHVkZWRSZWxhdGlvbnMocHViX2VsZW0tPm9pZCwKKwkJCQkJ CQkJCQkJCQkJIHB1Yl9lbGVtLT5wdWJ2aWFyb290ID8KKwkJCQkJCQkJCQkJCQkJIFBVQkxJQ0FU SU9OX1BBUlRfUk9PVCA6CisJCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOwog CQkJCXNjaGVtYXJlbGlkcyA9IEdldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHB1Yl9l bGVtLT5vaWQsCiAJCQkJCQkJCQkJCQkJCQkJcHViX2VsZW0tPnB1YnZpYXJvb3QgPwogCQkJCQkJ CQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6CkBAIC0xMzY3LDcgKzE0NDQsNyBAQCBw Z19nZXRfcHVibGljYXRpb25fc2VxdWVuY2VzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXB1YmxpY2F0 aW9uID0gR2V0UHVibGljYXRpb25CeU5hbWUocHVibmFtZSwgZmFsc2UpOwogCiAJCWlmIChwdWJs aWNhdGlvbi0+YWxsc2VxdWVuY2VzKQotCQkJc2VxdWVuY2VzID0gR2V0QWxsUHVibGljYXRpb25S ZWxhdGlvbnMoUkVMS0lORF9TRVFVRU5DRSwgZmFsc2UpOworCQkJc2VxdWVuY2VzID0gR2V0QWxs UHVibGljYXRpb25SZWxhdGlvbnMocHVibGljYXRpb24sIFJFTEtJTkRfU0VRVUVOQ0UpOwogCiAJ CWZ1bmNjdHgtPnVzZXJfZmN0eCA9IHNlcXVlbmNlczsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJs aWNhdGlvbmNtZHMuYwppbmRleCBmYzNhNGMxOWU2NS4uNmJiODE2YjIxOWMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC0xOTgsNyArMTk4LDEyIEBAIE9iamVjdHNJ blB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCiAJCXN3aXRjaCAocHVib2JqLT5wdWJvYmp0eXBlKQogCQl7CisJCQljYXNlIFBVQkxJ Q0FUSU9OT0JKX0VYQ0VQVF9UQUJMRToKKwkJCQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSB0 cnVlOworCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJ YnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFOgorCQkJCXB1Ym9iai0+cHVidGFi bGUtPmV4Y2VwdCA9IGZhbHNlOwogCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5w dWJ0YWJsZSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9T Q0hFTUE6CkBAIC01MTksOCArNTI0LDggQEAgSW52YWxpZGF0ZVB1YlJlbFN5bmNDYWNoZShPaWQg cHViaWQsIGJvb2wgcHViYWxsdGFibGVzKQogCQkgKiBhIHRhcmdldC4gSG93ZXZlciwgV0FMIHJl Y29yZHMgZm9yIFRSVU5DQVRFIHNwZWNpZnkgYm90aCBhIHJvb3QgYW5kCiAJCSAqIGl0cyBsZWF2 ZXMuCiAJCSAqLwotCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKLQkJ CQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOworCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlv bkluY2x1ZGVkUmVsYXRpb25zKHB1YmlkLAorCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRf QUxMKTsKIAkJc2NoZW1hcmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMo cHViaWQsCiAJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIApAQCAtOTI5LDU1 ICs5MzQsNjEgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQ dWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIAogCS8q IEFzc29jaWF0ZSBvYmplY3RzIHdpdGggdGhlIHB1YmxpY2F0aW9uLiAqLwotCWlmIChzdG10LT5m b3JfYWxsX3RhYmxlcykKKwlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmpl Y3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCisJCQkJCQkJICAgJnNjaGVtYWlkbGlzdCk7CisKKwkv KiBGT1IgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJlcyBzdXBlcnVzZXIgKi8KKwlpZiAoc2NoZW1h aWRsaXN0ICE9IE5JTCAmJiAhc3VwZXJ1c2VyKCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJy Y29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCWVycm1zZygibXVzdCBi ZSBzdXBlcnVzZXIgdG8gY3JlYXRlIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9uIikp OworCisJLyogQWRkIHJlbGF0aW9ucyAodGFibGVzKSB0byB0aGUgcHVibGljYXRpb24uICovCisJ aWYgKHJlbGF0aW9ucyAhPSBOSUwpCiAJewogCQkvKgotCQkgKiBJbnZhbGlkYXRlIHJlbGNhY2hl IHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LiBTZXF1ZW5jZXMKLQkJICogcHVi bGljYXRpb24gZG9lc24ndCByZXF1aXJlIGludmFsaWRhdGlvbiwgYXMgcmVwbGljYSBpZGVudGl0 eQotCQkgKiBjaGVja3MgZG9uJ3QgYXBwbHkgdG8gdGhlbS4KKwkJICogVGhlICdyZWxhdGlvbnMn IGxpc3QgY2FuIGJlIG5vbi1lbXB0eSBpbiBvbmx5IHR3byBjYXNlczoKKwkJICoKKwkJICogMS4g Q1JFQVRFIFBVQkxJQ0FUSU9OIC4uLiBGT1IgVEFCTEUgSW4gdGhpcyBjYXNlLCAncmVsYXRpb25z JworCQkgKiBjb250YWlucyB0aGUgbGlzdCBvZiBzcGVjaWZpZWQgdGFibGVzLgorCQkgKgorCQkg KiAyLiBDUkVBVEUgUFVCTElDQVRJT04gLi4uIEZPUiBBTEwgVEFCTEVTIEluIHRoaXMgY2FzZSwg J3JlbGF0aW9ucycKKwkJICogY29udGFpbnMgdGhlIGxpc3Qgb2YgdGFibGVzIHNwZWNpZmllZCBp biB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZS4KKwkJICogRHVyaW5nIHBhcnNpbmcsIHRoZSAnZXhj ZXB0JyBmbGFnIGlzIHNldCBmb3IgdGhlIGFzc29jaWF0ZWQKKwkJICogUHVibGljYXRpb25SZWxJ bmZvIG9iamVjdHMuCiAJCSAqLwotCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgpOwotCX0K LQllbHNlIGlmICghc3RtdC0+Zm9yX2FsbF9zZXF1ZW5jZXMpCi0JewotCQlPYmplY3RzSW5QdWJs aWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCi0JCQkJ CQkJCSAgICZzY2hlbWFpZGxpc3QpOworCQlMaXN0CSAgICpyZWxzOwogCi0JCS8qIEZPUiBUQUJM RVMgSU4gU0NIRU1BIHJlcXVpcmVzIHN1cGVydXNlciAqLwotCQlpZiAoc2NoZW1haWRsaXN0ICE9 IE5JTCAmJiAhc3VwZXJ1c2VyKCkpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQllcnJjb2RlKEVS UkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCi0JCQkJCWVycm1zZygibXVzdCBiZSBzdXBl cnVzZXIgdG8gY3JlYXRlIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9uIikpOwotCi0J CWlmIChyZWxhdGlvbnMgIT0gTklMKQotCQl7Ci0JCQlMaXN0CSAgICpyZWxzOworCQlyZWxzID0g T3BlblRhYmxlTGlzdChyZWxhdGlvbnMpOworCQlUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVs cywgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCQkJCQkJCSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCk7CiAKLQkJCXJlbHMgPSBPcGVuVGFibGVMaXN0KHJlbGF0aW9ucyk7Ci0JCQlUcmFuc2Zv cm1QdWJXaGVyZUNsYXVzZXMocmVscywgcHN0YXRlLT5wX3NvdXJjZXRleHQsCi0JCQkJCQkJCQkg cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOworCQlDaGVja1B1YlJlbGF0aW9uQ29sdW1uTGlz dChzdG10LT5wdWJuYW1lLCByZWxzLAorCQkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklMLAor CQkJCQkJCQkgICBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKLQkJCUNoZWNrUHViUmVs YXRpb25Db2x1bW5MaXN0KHN0bXQtPnB1Ym5hbWUsIHJlbHMsCi0JCQkJCQkJCQkgICBzY2hlbWFp ZGxpc3QgIT0gTklMLAotCQkJCQkJCQkJICAgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwot Ci0JCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwpOwotCQkJ Q2xvc2VUYWJsZUxpc3QocmVscyk7Ci0JCX0KKwkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lk LCByZWxzLCB0cnVlLCBOVUxMKTsKKwkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CisJfQogCi0JCWlm IChzY2hlbWFpZGxpc3QgIT0gTklMKQotCQl7Ci0JCQkvKgotCQkJICogU2NoZW1hIGxvY2sgaXMg aGVsZCB1bnRpbCB0aGUgcHVibGljYXRpb24gaXMgY3JlYXRlZCB0byBwcmV2ZW50Ci0JCQkgKiBj b25jdXJyZW50IHNjaGVtYSBkZWxldGlvbi4KLQkJCSAqLwotCQkJTG9ja1NjaGVtYUxpc3Qoc2No ZW1haWRsaXN0KTsKLQkJCVB1YmxpY2F0aW9uQWRkU2NoZW1hcyhwdWJvaWQsIHNjaGVtYWlkbGlz dCwgdHJ1ZSwgTlVMTCk7Ci0JCX0KKwlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCkKKwl7CisJCS8q CisJCSAqIFNjaGVtYSBsb2NrIGlzIGhlbGQgdW50aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGNyZWF0 ZWQgdG8gcHJldmVudAorCQkgKiBjb25jdXJyZW50IHNjaGVtYSBkZWxldGlvbi4KKwkJICovCisJ CUxvY2tTY2hlbWFMaXN0KHNjaGVtYWlkbGlzdCk7CisJCVB1YmxpY2F0aW9uQWRkU2NoZW1hcyhw dWJvaWQsIHNjaGVtYWlkbGlzdCwgdHJ1ZSwgTlVMTCk7CiAJfQogCiAJdGFibGVfY2xvc2UocmVs LCBSb3dFeGNsdXNpdmVMb2NrKTsKIAorCWlmIChzdG10LT5mb3JfYWxsX3RhYmxlcykKKwl7CisJ CS8qIEludmFsaWRhdGUgcmVsY2FjaGUgc28gdGhhdCBwdWJsaWNhdGlvbiBpbmZvIGlzIHJlYnVp bHQuICovCisJCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hlQWxsKCk7CisJfQorCiAJSW52b2tlT2Jq ZWN0UG9zdENyZWF0ZUhvb2soUHVibGljYXRpb25SZWxhdGlvbklkLCBwdWJvaWQsIDApOwogCiAJ LyoKQEAgLTEwNTAsOCArMTA2MSw4IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCUxvY2tEYXRhYmFzZU9i amVjdChQdWJsaWNhdGlvblJlbGF0aW9uSWQsIHB1YmZvcm0tPm9pZCwgMCwKIAkJCQkJCSAgIEFj Y2Vzc1NoYXJlTG9jayk7CiAKLQkJcm9vdF9yZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9u cyhwdWJmb3JtLT5vaWQsCi0JCQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJ cm9vdF9yZWxpZHMgPSBHZXRQdWJsaWNhdGlvbkluY2x1ZGVkUmVsYXRpb25zKHB1YmZvcm0tPm9p ZCwKKwkJCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAKIAkJZm9yZWFjaChs Yywgcm9vdF9yZWxpZHMpCiAJCXsKQEAgLTExNzAsOCArMTE4MSw4IEBAIEFsdGVyUHVibGljYXRp b25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQs CiAJCSAqIHRyZWVzLCBub3QganVzdCB0aG9zZSBleHBsaWNpdGx5IG1lbnRpb25lZCBpbiB0aGUg cHVibGljYXRpb24uCiAJCSAqLwogCQlpZiAocm9vdF9yZWxpZHMgPT0gTklMKQotCQkJcmVsaWRz ID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAotCQkJCQkJCQkJCQkgUFVC TElDQVRJT05fUEFSVF9BTEwpOworCQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25JbmNsdWRlZFJl bGF0aW9ucyhwdWJmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfQUxM KTsKIAkJZWxzZQogCQl7CiAJCQkvKgpAQCAtMTI1Niw4ICsxMjY3LDggQEAgQWx0ZXJQdWJsaWNh dGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJ UHVibGljYXRpb25Ecm9wVGFibGVzKHB1YmlkLCByZWxzLCBmYWxzZSk7CiAJZWxzZQkJCQkJCS8q IEFQX1NldE9iamVjdHMgKi8KIAl7Ci0JCUxpc3QJICAgKm9sZHJlbGlkcyA9IEdldFB1YmxpY2F0 aW9uUmVsYXRpb25zKHB1YmlkLAotCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1Qp OworCQlMaXN0CSAgICpvbGRyZWxpZHMgPSBHZXRQdWJsaWNhdGlvbkluY2x1ZGVkUmVsYXRpb25z KHB1YmlkLAorCQkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAJCUxpc3QJ ICAgKmRlbHJlbHMgPSBOSUw7CiAJCUxpc3RDZWxsICAgKm9sZGxjOwogCkBAIC0xMzU4LDYgKzEz NjksNyBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10 LCBIZWFwVHVwbGUgdHVwLAogCQkJCW9sZHJlbCA9IHBhbGxvY19vYmplY3QoUHVibGljYXRpb25S ZWxJbmZvKTsKIAkJCQlvbGRyZWwtPndoZXJlQ2xhdXNlID0gTlVMTDsKIAkJCQlvbGRyZWwtPmNv bHVtbnMgPSBOSUw7CisJCQkJb2xkcmVsLT5leGNlcHQgPSBmYWxzZTsKIAkJCQlvbGRyZWwtPnJl bGF0aW9uID0gdGFibGVfb3BlbihvbGRyZWxpZCwKIAkJCQkJCQkJCQkJICBTaGFyZVVwZGF0ZUV4 Y2x1c2l2ZUxvY2spOwogCQkJCWRlbHJlbHMgPSBsYXBwZW5kKGRlbHJlbHMsIG9sZHJlbCk7CkBA IC0xNDA4LDcgKzE0MjAsOCBAQCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhBbHRlclB1YmxpY2F0 aW9uU3RtdCAqc3RtdCwKIAkJTGlzdENlbGwgICAqbGM7CiAJCUxpc3QJICAgKnJlbG9pZHM7CiAK LQkJcmVsb2lkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwgUFVCTElD QVRJT05fUEFSVF9ST09UKTsKKwkJcmVsb2lkcyA9IEdldFB1YmxpY2F0aW9uSW5jbHVkZWRSZWxh dGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1Qp OwogCiAJCWZvcmVhY2gobGMsIHJlbG9pZHMpCiAJCXsKQEAgLTE3NzEsNiArMTc4NCw3IEBAIE9w ZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCQlwdWJfcmVsLT5yZWxhdGlvbiA9IHJlbDsKIAkJ cHViX3JlbC0+d2hlcmVDbGF1c2UgPSB0LT53aGVyZUNsYXVzZTsKIAkJcHViX3JlbC0+Y29sdW1u cyA9IHQtPmNvbHVtbnM7CisJCXB1Yl9yZWwtPmV4Y2VwdCA9IHQtPmV4Y2VwdDsKIAkJcmVscyA9 IGxhcHBlbmQocmVscywgcHViX3JlbCk7CiAJCXJlbGlkcyA9IGxhcHBlbmRfb2lkKHJlbGlkcywg bXlyZWxpZCk7CiAKQEAgLTE4NDMsNiArMTg1Nyw3IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFi bGVzKQogCiAJCQkJLyogY2hpbGQgaW5oZXJpdHMgY29sdW1uIGxpc3QgZnJvbSBwYXJlbnQgKi8K IAkJCQlwdWJfcmVsLT5jb2x1bW5zID0gdC0+Y29sdW1uczsKKwkJCQlwdWJfcmVsLT5leGNlcHQg PSB0LT5leGNlcHQ7CiAJCQkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7CiAJCQkJcmVs aWRzID0gbGFwcGVuZF9vaWQocmVsaWRzLCBjaGlsZHJlbGlkKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwppbmRleCBmOTc2YzBlNWM3ZS4uMzk1YjhjMGMyYTEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jCkBAIC04Njg4LDcgKzg2ODgsNyBAQCBBVEV4ZWNTZXRFeHByZXNzaW9uKEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCSAq IGV4cHJlc3Npb25zLgogCSAqLwogCWlmIChhdHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVS QVRFRF9WSVJUVUFMICYmCi0JCUdldFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVs aWQocmVsKSkgIT0gTklMKQorCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJl bGlkKHJlbCksIE5VTEwsIE5VTEwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJBTFRFUiBUQUJMRSAv IFNFVCBFWFBSRVNTSU9OIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHZpcnR1YWwgZ2VuZXJhdGVkIGNv bHVtbnMgaW4gdGFibGVzIHRoYXQgYXJlIHBhcnQgb2YgYSBwdWJsaWNhdGlvbiIpLApAQCAtMTg4 ODQsNyArMTg4ODQsNyBAQCBBVFByZXBDaGFuZ2VQZXJzaXN0ZW5jZShBbHRlcmVkVGFibGVJbmZv ICp0YWIsIFJlbGF0aW9uIHJlbCwgYm9vbCB0b0xvZ2dlZCkKIAkgKiBVTkxPR0dFRCwgYXMgVU5M T0dHRUQgdGFibGVzIGNhbid0IGJlIHB1Ymxpc2hlZC4KIAkgKi8KIAlpZiAoIXRvTG9nZ2VkICYm Ci0JCUdldFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkgIT0gTklM KQorCQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKHJlbCksIE5VTEws IE5VTEwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFi bGUgXCIlc1wiIHRvIHVubG9nZ2VkIGJlY2F1c2UgaXQgaXMgcGFydCBvZiBhIHB1YmxpY2F0aW9u IiwKQEAgLTIwMzI1LDYgKzIwMzI1LDcgQEAgQVRFeGVjQXR0YWNoUGFydGl0aW9uKExpc3QgKip3 cXVldWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCiAJY29uc3QgY2hhciAqdHJp Z2dlcl9uYW1lOwogCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOwogCUxpc3QJICAgKnBhcnRCb3VuZENv bnN0cmFpbnQ7CisJTGlzdAkgICAqZXhjZXB0X3B1YmlkcyA9IE5JTDsKIAlQYXJzZVN0YXRlICpw c3RhdGUgPSBtYWtlX3BhcnNlc3RhdGUoTlVMTCk7CiAKIAlwc3RhdGUtPnBfc291cmNldGV4dCA9 IGNvbnRleHQtPnF1ZXJ5U3RyaW5nOwpAQCAtMjA0NDksNiArMjA0NTAsMTQgQEAgQVRFeGVjQXR0 YWNoUGFydGl0aW9uKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpj bWQsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJIGVycm1z ZygiY2Fubm90IGF0dGFjaCB0ZW1wb3JhcnkgcmVsYXRpb24gb2YgYW5vdGhlciBzZXNzaW9uIGFz IHBhcnRpdGlvbiIpKSk7CiAKKwkvKiBDaGVjayBpZiB0aGUgcGFydGl0b24gaXMgcGFydCBvZiBF WENFUFQgbGlzdCBvZiBhbnkgcHVibGljYXRpb24gKi8KKwlHZXRSZWxhdGlvblB1YmxpY2F0aW9u cyhSZWxhdGlvbkdldFJlbGlkKGF0dGFjaHJlbCksIE5VTEwsICZleGNlcHRfcHViaWRzKTsKKwlp ZiAoZXhjZXB0X3B1YmlkcyAhPSBOSUwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygi Y2Fubm90IGF0dGFjaCByZWxhdGlvbiBcIiVzXCIgYXMgcGFydGl0aW9uIGJlY2F1c2UgaXQgaXMg cGFydCBvZiBFWENFUFQgbGlzdCBpbiBwdWJsaWNhdGlvbiIsCisJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShhdHRhY2hyZWwpKSkpOworCiAJLyoKIAkgKiBDaGVjayBpZiBhdHRhY2hyZWwg aGFzIGFueSBpZGVudGl0eSBjb2x1bW5zIG9yIGFueSBjb2x1bW5zIHRoYXQgYXJlbid0CiAJICog aW4gdGhlIHBhcmVudC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDcxM2VlNWMxMGEyLi5kM2MzZTlmNTljNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CkBAIC0yMDMsNiArMjAzLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc0NBU2Jp dHMoaW50IGNhc19iaXRzLCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIgKmNvbnN0clR5cGUsCiBz dGF0aWMgUGFydGl0aW9uU3RyYXRlZ3kgcGFyc2VQYXJ0aXRpb25TdHJhdGVneShjaGFyICpzdHJh dGVneSwgaW50IGxvY2F0aW9uLAogCQkJCQkJCQkJCQkJY29yZV95eXNjYW5fdCB5eXNjYW5uZXIp Owogc3RhdGljIHZvaWQgcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxf b2JqZWN0c19saXN0LAorCQkJCQkJCQkJCQlMaXN0ICoqcHVib2JqZWN0cywKIAkJCQkJCQkJCQkJ Ym9vbCAqYWxsX3RhYmxlcywKIAkJCQkJCQkJCQkJYm9vbCAqYWxsX3NlcXVlbmNlcywKIAkJCQkJ CQkJCQkJY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwpAQCAtNDU1LDYgKzQ1Niw3IEBAIHN0YXRp YyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlh c2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJVHJpZ2dlclRyYW5zaXRpb25zIFRyaWdnZXJSZWZlcmVu Y2luZwogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0IG9wdF92YWN1dW1fcmVsYXRpb25fbGlzdAog CQkJCWRyb3Bfb3B0aW9uX2xpc3QgcHViX29ial9saXN0IHB1Yl9hbGxfb2JqX3R5cGVfbGlzdAor CQkJCXB1Yl9leGNlcHRfb2JqX2xpc3Qgb3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAKICV0eXBlIDxy ZXRjbGF1c2U+IHJldHVybmluZ19jbGF1c2UKICV0eXBlIDxub2RlPglyZXR1cm5pbmdfb3B0aW9u CkBAIC01OTIsNiArNTk0LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2Rl Pgl2YXJfdmFsdWUgem9uZV92YWx1ZQogJXR5cGUgPHJvbGVzcGVjPiBhdXRoX2lkZW50IFJvbGVT cGVjIG9wdF9ncmFudGVkX2J5CiAldHlwZSA8cHVibGljYXRpb25vYmplY3RzcGVjPiBQdWJsaWNh dGlvbk9ialNwZWMKKyV0eXBlIDxwdWJsaWNhdGlvbm9iamVjdHNwZWM+IFB1YmxpY2F0aW9uRXhj ZXB0T2JqU3BlYwogJXR5cGUgPHB1YmxpY2F0aW9uYWxsb2JqZWN0c3BlYz4gUHVibGljYXRpb25B bGxPYmpTcGVjCiAKICV0eXBlIDxrZXl3b3JkPiB1bnJlc2VydmVkX2tleXdvcmQgdHlwZV9mdW5j X25hbWVfa2V5d29yZApAQCAtMTA3OTIsNyArMTA3OTUsNyBAQCBBbHRlck93bmVyU3RtdDogQUxU RVIgQUdHUkVHQVRFIGFnZ3JlZ2F0ZV93aXRoX2FyZ3R5cGVzIE9XTkVSIFRPIFJvbGVTcGVjCiAg KgogICogcHViX2FsbF9vYmpfdHlwZSBpcyBvbmUgb2Y6CiAgKgotICoJCVRBQkxFUworICoJCVRB QkxFUyBbRVhDRVBUIFtUQUJMRV0gKCB0YWJsZSBbLCAuLi5dICldCiAgKgkJU0VRVUVOQ0VTCiAg KgogICogQ1JFQVRFIFBVQkxJQ0FUSU9OIEZPUiBwdWJfb2JqIFssIC4uLl0gW1dJVEggb3B0aW9u c10KQEAgLTEwODE4LDcgKzEwODIxLDggQEAgQ3JlYXRlUHVibGljYXRpb25TdG10OgogCQkJCQlD cmVhdGVQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVQdWJsaWNhdGlvblN0bXQp OwogCiAJCQkJCW4tPnB1Ym5hbWUgPSAkMzsKLQkJCQkJcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5 cGVfbGlzdCgkNSwgJm4tPmZvcl9hbGxfdGFibGVzLAorCQkJCQlwcmVwcm9jZXNzX3B1Yl9hbGxf b2JqdHlwZV9saXN0KCQ1LCAmbi0+cHVib2JqZWN0cywKKwkJCQkJCQkJCQkJCQkmbi0+Zm9yX2Fs bF90YWJsZXMsCiAJCQkJCQkJCQkJCQkJJm4tPmZvcl9hbGxfc2VxdWVuY2VzLAogCQkJCQkJCQkJ CQkJCXl5c2Nhbm5lcik7CiAJCQkJCW4tPm9wdGlvbnMgPSAkNjsKQEAgLTEwODU4LDYgKzEwODYy LDcgQEAgUHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0g JDI7CiAJCQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQzOwogCQkJCQkkJC0+cHVidGFibGUt PndoZXJlQ2xhdXNlID0gJDQ7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOwogCQkJCX0KIAkJCXwg VEFCTEVTIElOX1AgU0NIRU1BIENvbElkCiAJCQkJewpAQCAtMTA5MzMsMTEgKzEwOTM4LDE5IEBA IHB1Yl9vYmpfbGlzdDoJUHVibGljYXRpb25PYmpTcGVjCiAJCQkJCXsgJCQgPSBsYXBwZW5kKCQx LCAkMyk7IH0KIAk7CiAKK29wdF9wdWJfZXhjZXB0X2NsYXVzZToKKwkJCUVYQ0VQVCBvcHRfdGFi bGUgJygnIHB1Yl9leGNlcHRfb2JqX2xpc3QgJyknCXsgJCQgPSAkNDsgfQorCQkJfCAvKkVNUFRZ Ki8JCQkJCQkJCQkJeyAkJCA9IE5JTDsgfQorCQk7CisKIFB1YmxpY2F0aW9uQWxsT2JqU3BlYzoK LQkJCQlBTEwgVEFCTEVTCisJCQkJQUxMIFRBQkxFUyBvcHRfcHViX2V4Y2VwdF9jbGF1c2UKIAkJ CQkJewogCQkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbkFsbE9ialNwZWMpOwogCQkJCQkJ JCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTl9BTExfVEFCTEVTOworCQkJCQkJJCQtPmV4Y2Vw dF90YWJsZXMgPSAkMzsKKwkJCQkJCWlmKCQkLT5leGNlcHRfdGFibGVzICE9IE5VTEwpCisJCQkJ CQkJcHJlcHJvY2Vzc19wdWJvYmpfbGlzdCgkJC0+ZXhjZXB0X3RhYmxlcywgeXlzY2FubmVyKTsK IAkJCQkJCSQkLT5sb2NhdGlvbiA9IEAxOwogCQkJCQl9CiAJCQkJfCBBTEwgU0VRVUVOQ0VTCkBA IC0xMDk1NCw2ICsxMDk2NywyMyBAQCBwdWJfYWxsX29ial90eXBlX2xpc3Q6CVB1YmxpY2F0aW9u QWxsT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwogCitQdWJsaWNh dGlvbkV4Y2VwdE9ialNwZWM6CisJCQkgcmVsYXRpb25fZXhwcgorCQkJCXsKKwkJCQkJJCQgPSBt YWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJ Q0FUSU9OT0JKX0VYQ0VQVF9UQUJMRTsKKwkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVi bGljYXRpb25UYWJsZSk7CisJCQkJCSQkLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkJ JCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQxOworCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKKwkJ CQl9CisJOworCitwdWJfZXhjZXB0X29ial9saXN0OiBQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWMK KwkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHB1Yl9leGNlcHRfb2JqX2xpc3Qg JywnIFB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYworCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMp OyB9CisJOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0xOTc5NCw4ICsxOTgyNCw5 IEBAIHBhcnNlUGFydGl0aW9uU3RyYXRlZ3koY2hhciAqc3RyYXRlZ3ksIGludCBsb2NhdGlvbiwg Y29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAgKiBBbHNvLCBjaGVja3MgaWYgdGhlIHB1Yl9vYmpl Y3RfdHlwZSBoYXMgYmVlbiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UuCiAgKi8KIHN0YXRpYyB2 b2lkCi1wcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xp c3QsIGJvb2wgKmFsbF90YWJsZXMsCi0JCQkJCQkJCWJvb2wgKmFsbF9zZXF1ZW5jZXMsIGNvcmVf eXlzY2FuX3QgeXlzY2FubmVyKQorcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0 ICphbGxfb2JqZWN0c19saXN0LCBMaXN0ICoqcHVib2JqZWN0cywKKwkJCQkJCQkJYm9vbCAqYWxs X3RhYmxlcywgYm9vbCAqYWxsX3NlcXVlbmNlcywKKwkJCQkJCQkJY29yZV95eXNjYW5fdCB5eXNj YW5uZXIpCiB7CiAJaWYgKCFhbGxfb2JqZWN0c19saXN0KQogCQlyZXR1cm47CkBAIC0xOTgxNSw2 ICsxOTg0Niw3IEBAIHByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29i amVjdHNfbGlzdCwgYm9vbCAqYWxsX3RhYmxlcywKIAkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihv YmotPmxvY2F0aW9uKSk7CiAKIAkJCSphbGxfdGFibGVzID0gdHJ1ZTsKKwkJCSpwdWJvYmplY3Rz ID0gbGlzdF9jb25jYXQoKnB1Ym9iamVjdHMsIG9iai0+ZXhjZXB0X3RhYmxlcyk7CiAJCX0KIAkJ ZWxzZSBpZiAob2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OX0FMTF9TRVFVRU5DRVMpCiAJ CXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0 LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDll ZTg5NDllMDQwLi4zYWYwYjIxYmMwNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jCkBAIC0yMDg4LDcgKzIwODgsNyBAQCBnZXRfcmVsX3N5bmNfZW50cnko UEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAlpZiAoIWVudHJ5LT5yZXBs aWNhdGVfdmFsaWQpCiAJewogCQlPaWQJCQlzY2hlbWFJZCA9IGdldF9yZWxfbmFtZXNwYWNlKHJl bGlkKTsKLQkJTGlzdAkgICAqcHViaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQp OworCQlMaXN0CSAgICpwdWJpZHMgPSBOSUw7CiAKIAkJLyoKIAkJICogV2UgZG9uJ3QgYWNxdWly ZSBhIGxvY2sgb24gdGhlIG5hbWVzcGFjZSBzeXN0ZW0gdGFibGUgYXMgd2UgYnVpbGQKQEAgLTIx MDMsNiArMjEwMyw4IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJl bGF0aW9uIHJlbGF0aW9uKQogCQljaGFyCQlyZWxraW5kID0gZ2V0X3JlbF9yZWxraW5kKHJlbGlk KTsKIAkJTGlzdAkgICAqcmVsX3B1YmxpY2F0aW9ucyA9IE5JTDsKIAorCQlHZXRSZWxhdGlvblB1 YmxpY2F0aW9ucyhyZWxpZCwgJnB1YmlkcywgTlVMTCk7CisKIAkJLyogUmVsb2FkIHB1YmxpY2F0 aW9ucyBpZiBuZWVkZWQgYmVmb3JlIHVzZS4gKi8KIAkJaWYgKCFwdWJsaWNhdGlvbnNfdmFsaWQp CiAJCXsKQEAgLTIyMDIsMjAgKzIyMDQsNDEgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0 RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkvKgogCQkJICogSWYgdGhpcyBpcyBh IEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uLCBwaWNrIHRoZSBwYXJ0aXRpb24KIAkJCSAqIHJv b3QgYW5kIHNldCB0aGUgYW5jZXN0b3IgbGV2ZWwgYWNjb3JkaW5nbHkuCisJCQkgKgorCQkJICog SWYgdGhpcyBpcyBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uIGFuZCBpdCBoYXMgYW4gRVhD RVBUCisJCQkgKiBUQUJMRSBsaXN0CisJCQkgKiAxLiBGb3IgYSBub3JtYWwgdGFibGUgb3IgYSBw YXJ0aXRpb25lZCB0YWJsZSwgaWYgaXQgaXMgcGFydCBvZgorCQkJICogCSAgdGhlIEVYQ0VQVCBU QUJMRSBsaXN0LCB3ZSBkb24ndCBwdWJsaXNoIGl0LgorCQkJICogMi4gRm9yIGEgcGFydGl0aW9u LCBpZiB0aGUgdG9wbW9zdCBhbmNlc3RvciBpcyBwYXJ0IG9mCisJCQkgKiAJICB0aGUgRVhDRVBU IFRBQkxFIGxpc3QsIHdlIGRvbid0IHB1Ymxpc2ggaXQuCisJCQkgKiBUaGlzIGlzIGFjaGlldmVk IGJ5IGtlZXBpbmcgdGhlIHZhcmlhYmxlICJwdWJsaXNoIiBzZXQgdG8KKwkJCSAqIGZhbHNlLiBB bmQgZXZlbnR1YWxseSwgZW50cnktPnB1YmFjdGlvbnMgd2lsbCByZW1haW4gYWxsIGZhbHNlCisJ CQkgKiBmb3IgdGhpcyBwdWJsaWNhdGlvbi4KIAkJCSAqLwogCQkJaWYgKHB1Yi0+YWxsdGFibGVz KQogCQkJewotCQkJCXB1Ymxpc2ggPSB0cnVlOwotCQkJCWlmIChwdWItPnB1YnZpYXJvb3QgJiYg YW1fcGFydGl0aW9uKQorCQkJCUxpc3QJICAgKmV4Y2VwdHB1YmlkcyA9IE5JTDsKKwkJCQlMaXN0 CSAgICphbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWxpZCk7CisJCQkJT2lk CQkJcm9vdF9yZWxpZCA9IHJlbGlkOworCisJCQkJaWYgKGFtX3BhcnRpdGlvbikKIAkJCQl7Ci0J CQkJCUxpc3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsK KwkJCQkJcm9vdF9yZWxpZCA9IGxsYXN0X29pZChhbmNlc3RvcnMpOworCQkJCQlHZXRSZWxhdGlv blB1YmxpY2F0aW9ucyhyb290X3JlbGlkLCBOVUxMLCAmZXhjZXB0cHViaWRzKTsKIAotCQkJCQlw dWJfcmVsaWQgPSBsbGFzdF9vaWQoYW5jZXN0b3JzKTsKLQkJCQkJYW5jZXN0b3JfbGV2ZWwgPSBs aXN0X2xlbmd0aChhbmNlc3RvcnMpOworCQkJCQlpZiAocHViLT5wdWJ2aWFyb290KQorCQkJCQl7 CisJCQkJCQlwdWJfcmVsaWQgPSByb290X3JlbGlkOworCQkJCQkJYW5jZXN0b3JfbGV2ZWwgPSBs aXN0X2xlbmd0aChhbmNlc3RvcnMpOworCQkJCQl9CiAJCQkJfQotCQkJfQogCi0JCQlpZiAoIXB1 Ymxpc2gpCisJCQkJaWYgKCFsaXN0X21lbWJlcl9vaWQoZXhjZXB0cHViaWRzLCBwdWItPm9pZCkp CisJCQkJCXB1Ymxpc2ggPSB0cnVlOworCisJCQkJbGlzdF9mcmVlKGV4Y2VwdHB1Ymlkcyk7CisJ CQl9CisJCQllbHNlIGlmICghcHVibGlzaCkKIAkJCXsKIAkJCQlib29sCQlhbmNlc3Rvcl9wdWJs aXNoZWQgPSBmYWxzZTsKIApAQCAtMjI1OSw2ICsyMjgyLDkgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5 KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkgKiBEb24ndCBwdWJs aXNoIGNoYW5nZXMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgYmVjYXVzZQogCQkJICogcHVibGlz aGluZyB0aG9zZSBvZiBpdHMgcGFydGl0aW9ucyBzdWZmaWNlcywgdW5sZXNzIHBhcnRpdGlvbgog CQkJICogY2hhbmdlcyB3b24ndCBiZSBwdWJsaXNoZWQgZHVlIHRvIHB1YnZpYXJvb3QgYmVpbmcg c2V0LgorCQkJICoKKwkJCSAqIElmIHRoZSByZWxhdGlvbiBpcyBwYXJ0IG9mIEVYQ0VQVCBUQUJM RSBsaXN0IG9mIGEgcHVibGljYXRpb24sCisJCQkgKiB0aGUgJ3B1Ymxpc2gnIHZhcmlhYmxlIGlz IGFscmVhZHkgc2V0IHRvIGZhbHNlLgogCQkJICovCiAJCQlpZiAocHVibGlzaCAmJgogCQkJCShy ZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgfHwgcHViLT5wdWJ2aWFyb290KSkK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IDZiNjM0YzlmZmYxLi5lYzdmODJmYmNk YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01Nzg4LDcgKzU3ODgsOSBAQCBS ZWxhdGlvbkdldEV4Y2x1c2lvbkluZm8oUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIHZvaWQKIFJl bGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9u RGVzYyAqcHViZGVzYykKIHsKLQlMaXN0CSAgICpwdWJvaWRzOworCUxpc3QJICAgKnB1Ym9pZHMg PSBOSUw7CisJTGlzdAkgICAqZXhjZXB0cHVib2lkcyA9IE5JTDsKKwlMaXN0CSAgICphbGx0YWJs ZXNwdWJvaWRzOwogCUxpc3RDZWxsICAgKmxjOwogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCU9p ZAkJCXNjaGVtYWlkOwpAQCAtNTgyNiw3ICs1ODI4LDcgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0 aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCXB1 YmRlc2MtPmdlbmNvbHNfdmFsaWRfZm9yX2RlbGV0ZSA9IHRydWU7CiAKIAkvKiBGZXRjaCB0aGUg cHVibGljYXRpb24gbWVtYmVyc2hpcCBpbmZvLiAqLwotCXB1Ym9pZHMgPSBHZXRSZWxhdGlvblB1 YmxpY2F0aW9ucyhyZWxpZCk7CisJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQsICZwdWJv aWRzLCAmZXhjZXB0cHVib2lkcyk7CiAJc2NoZW1haWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShy ZWxhdGlvbik7CiAJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywgR2V0 U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSk7CiAKQEAgLTU4MzUsMTkgKzU4MzcsMzEgQEAg UmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRp b25EZXNjICpwdWJkZXNjKQogCQkvKiBBZGQgcHVibGljYXRpb25zIHRoYXQgdGhlIGFuY2VzdG9y cyBhcmUgaW4gdG9vLiAqLwogCQlhbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhy ZWxpZCk7CiAKKwkJLyoKKwkJICogT25seSB0aGUgdG9wbW9zdCBhbmNlc3RvciBvZiBhIHBhcnRp dGlvbmVkIHRhYmxlIGNhbiBiZSBzcGVjaWZpZWQKKwkJICogaW4gRVhDRVBUIFRBQkxFUyBjbGF1 c2Ugb2YgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbi4gU28gZmV0Y2gKKwkJICogdGhlIHB1 YmxpY2F0aW9ucyBleGNsdWRpbmcgdGhlIHRvcG1vc3QgYW5jZXN0b3Igb25seS4KKwkJICovCisJ CUdldFJlbGF0aW9uUHVibGljYXRpb25zKGxsYXN0X29pZChhbmNlc3RvcnMpLCBOVUxMLCAmZXhj ZXB0cHVib2lkcyk7CisKIAkJZm9yZWFjaChsYywgYW5jZXN0b3JzKQogCQl7CiAJCQlPaWQJCQlh bmNlc3RvciA9IGxmaXJzdF9vaWQobGMpOworCQkJTGlzdAkgICAqYW5jZXN0b3JfcHVib2lkcyA9 IE5JTDsKIAotCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKLQkJ CQkJCQkJCQkJIEdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yKSk7CisJCQlHZXRSZWxh dGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgJmFuY2VzdG9yX3B1Ym9pZHMsIE5VTEwpOworCisJ CQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBhbmNlc3Rvcl9wdWJv aWRzKTsKIAkJCXNjaGVtYWlkID0gZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpOwogCQkJcHVi b2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKIAkJCQkJCQkJCQkJIEdldFNj aGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOwogCQl9CiAJfQotCXB1Ym9pZHMgPSBsaXN0X2Nv bmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucygpKTsKIAor CWFsbHRhYmxlc3B1Ym9pZHMgPSBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnMoKTsKKwlwdWJvaWRz ID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAorCQkJCQkJCQkJIGxpc3RfZGlmZmVy ZW5jZV9vaWQoYWxsdGFibGVzcHVib2lkcywKKwkJCQkJCQkJCQkJCQkJIGV4Y2VwdHB1Ym9pZHMp KTsKIAlmb3JlYWNoKGxjLCBwdWJvaWRzKQogCXsKIAkJT2lkCQkJcHViaWQgPSBsZmlyc3Rfb2lk KGxjKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCmluZGV4IGZmZjkyOWIyNmRmLi5kYTQ2OTBjOWU1NCAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCkBAIC00NjQ2LDkgKzQ2NDYsNTggQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQp CiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YnZpYXJvb3QpLCAidCIpID09IDAp OwogCQlwdWJpbmZvW2ldLnB1YmdlbmNvbHNfdHlwZSA9CiAJCQkqKFBRZ2V0dmFsdWUocmVzLCBp LCBpX3B1YmdlbmNvbHMpKTsKKwkJcHViaW5mb1tpXS5leGNlcHRfdGFibGVzID0gKFNpbXBsZVB0 ckxpc3QpCisJCXsKKwkJCU5VTEwsIE5VTEwKKwkJfTsKIAogCQkvKiBEZWNpZGUgd2hldGhlciB3 ZSB3YW50IHRvIGR1bXAgaXQgKi8KIAkJc2VsZWN0RHVtcGFibGVPYmplY3QoJihwdWJpbmZvW2ld LmRvYmopLCBmb3V0KTsKKworCQkvKgorCQkgKiBHZXQgdGhlIGxpc3Qgb2YgdGFibGVzIGZvciBw dWJsaWNhdGlvbnMgc3BlY2lmaWVkIHdpdGggdGhlIEVYQ0VQVAorCQkgKiBUQUJMRSBjbGF1c2Uu IFRoaXMgaXMgaW50cm9kdWNlZCBpbiBQb3N0Z3JlU1FMIDE5LgorCQkgKgorCQkgKiBFWENFUFQg VEFCTEVTIGlzIHByb2Nlc3NlZCBoZXJlIGFuZCBvdXRwdXQgZGlyZWN0bHkgYnkKKwkJICogZHVt cFB1YmxpY2F0aW9uKCkuIFRoaXMgZGlmZmVycyBmcm9tIHRoZSBhcHByb2FjaCB1c2VkIGluCisJ CSAqIGR1bXBQdWJsaWNhdGlvblRhYmxlKCkgYW5kIGR1bXBQdWJsaWNhdGlvbk5hbWVzcGFjZSgp LCBzaW5jZSB0aGF0CisJCSAqIGFwcHJvYWNoIHdvdWxkIHJlcXVpcmUgRVhDRVBUIFRBQkxFIHN1 cHBvcnQgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OLAorCQkgKiB3aGljaCBpcyBub3QgY3VycmVudGx5 IHN1cHBvcnRlZC4KKwkJICovCisJCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE5MDAwMCkK KwkJeworCQkJaW50CQkJbnRibHM7CisJCQlQR3Jlc3VsdCAgICpyZXNfdGJsczsKKworCQkJcmVz ZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJ CQkgICJTRUxFQ1QgcHJyZWxpZFxuIgorCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJs aWNhdGlvbl9yZWxcbiIKKwkJCQkJCQkgICJXSEVSRSBwcnB1YmlkID0gJXUgYW5kIHByZXhjZXB0 IiwKKwkJCQkJCQkgIHB1YmluZm9baV0uZG9iai5jYXRJZC5vaWQpOworCisJCQlyZXNfdGJscyA9 IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKKwor CQkJbnRibHMgPSBQUW50dXBsZXMocmVzX3RibHMpOworCQkJaWYgKG50YmxzID09IDApCisJCQkJ Y29udGludWU7CisKKwkJCWZvciAoaW50IGogPSAwOyBqIDwgbnRibHM7IGorKykKKwkJCXsKKwkJ CQlPaWQJCQlwcnJlbGlkOworCQkJCVRhYmxlSW5mbyAgKnRiaW5mbzsKKworCQkJCXBycmVsaWQg PSBhdG9vaWQoUFFnZXR2YWx1ZShyZXNfdGJscywgaiwgMCkpOworCisJCQkJdGJpbmZvID0gZmlu ZFRhYmxlQnlPaWQocHJyZWxpZCk7CisJCQkJaWYgKHRiaW5mbyA9PSBOVUxMKQorCQkJCQljb250 aW51ZTsKKworCQkJCXNpbXBsZV9wdHJfbGlzdF9hcHBlbmQoJnB1YmluZm9baV0uZXhjZXB0X3Rh YmxlcywgdGJpbmZvKTsKKwkJCX0KKworCQkJUFFjbGVhcihyZXNfdGJscyk7CisJCX0KIAl9CiAK IGNsZWFudXA6CkBAIC00Njg4LDcgKzQ3MzcsMjUgQEAgZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUg KmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbykKIAlpZiAocHViaW5mby0+cHVi YWxsdGFibGVzICYmIHB1YmluZm8tPnB1YmFsbHNlcXVlbmNlcykKIAkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksICIgRk9SIEFMTCBUQUJMRVMsIEFMTCBTRVFVRU5DRVMiKTsKIAllbHNlIGlm IChwdWJpbmZvLT5wdWJhbGx0YWJsZXMpCisJeworCQlpbnQJCQluX2V4Y2x1ZGVkID0gMDsKKwog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFRBQkxFUyIpOworCisJCS8q IEluY2x1ZGUgRVhDRVBUIFRBQkxFIGNsYXVzZSBpZiB0aGVyZSBhcmUgZXhjZXB0X3RhYmxlcy4g Ki8KKwkJZm9yIChTaW1wbGVQdHJMaXN0Q2VsbCAqY2VsbCA9IHB1YmluZm8tPmV4Y2VwdF90YWJs ZXMuaGVhZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQpCisJCXsKKwkJCVRhYmxlSW5mbyAgKnRi aW5mbyA9IChUYWJsZUluZm8gKikgY2VsbC0+cHRyOworCisJCQlpZiAoKytuX2V4Y2x1ZGVkID09 IDEpCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRVhDRVBUIFRBQkxFICgiKTsK KwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgIik7CisJCQlhcHBl bmRQUUV4cEJ1ZmZlcihxdWVyeSwgIk9OTFkgJXMiLCBmbXRRdWFsaWZpZWREdW1wYWJsZSh0Ymlu Zm8pKTsKKwkJfQorCQlpZiAobl9leGNsdWRlZCA+IDApCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwgIikiKTsKKwl9CiAJZWxzZSBpZiAocHViaW5mby0+cHViYWxsc2VxdWVuY2VzKQog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFNFUVVFTkNFUyIpOwogCkBA IC00ODY4LDYgKzQ5MzUsNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBU YWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCiAJLyogQ29sbGVjdCBhbGwgcHVi bGljYXRpb24gbWVtYmVyc2hpcCBpbmZvLiAqLwogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDE1MDAwMCkKKwl7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiU0VM RUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVsaWQsICIKIAkJCQkJCQkgInBnX2NhdGFs b2cucGdfZ2V0X2V4cHIocHJxdWFsLCBwcnJlbGlkKSBBUyBwcnJlbHF1YWwsICIKQEAgLTQ4ODAs NiArNDk0OCw5IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5m byB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJCQkJICIgICAgICBXSEVSRSBhdHRyZWxp ZCA9IHByLnBycmVsaWQgQU5EIGF0dG51bSA9IHByYXR0cnNbc10pXG4iCiAJCQkJCQkJICIgIEVM U0UgTlVMTCBFTkQpIHByYXR0cnMgIgogCQkJCQkJCSAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1Ymxp Y2F0aW9uX3JlbCBwciIpOworCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxOTAwMDApCisJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBXSEVSRSBOT1QgcHIucHJleGNlcHQiKTsK Kwl9CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVD VCB0YWJsZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlkLCAiCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA0YzRi MTRlNWZjNy4uZDE0MWViNjZkMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjc2LDYgKzY3Niw3IEBAIHR5 cGVkZWYgc3RydWN0IF9QdWJsaWNhdGlvbkluZm8KIAlib29sCQlwdWJ0cnVuY2F0ZTsKIAlib29s CQlwdWJ2aWFyb290OwogCVB1Ymxpc2hHZW5jb2xzVHlwZSBwdWJnZW5jb2xzX3R5cGU7CisJU2lt cGxlUHRyTGlzdCBleGNlcHRfdGFibGVzOwogfSBQdWJsaWNhdGlvbkluZm87CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVt cC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IDI4ODEyZDI4YWE5Li40ZTZlNGNiZGQ3YyAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTMxNzAsNiArMzE3MCwzNiBAQCBteSAldGVzdHMgPSAo CiAJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAogCX0s CiAKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjgnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUw LAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI4IEZPUiBBTEwg VEFCTEVTIEVYQ0VQVCAoZHVtcF90ZXN0LnRlc3RfdGFibGUpOycsCisJCXJlZ2V4cCA9PiBxci9e CisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWI4IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJM RSAoT05MWSBkdW1wX3Rlc3QudGVzdF90YWJsZSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVw ZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9y dW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQ1JFQVRFIFBVQkxJQ0FU SU9OIHB1YjknID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQljcmVhdGVfc3FsID0+CisJ CSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI5IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAo ZHVtcF90ZXN0LnRlc3RfdGFibGUsIGR1bXBfdGVzdC50ZXN0X3NlY29uZF90YWJsZSk7JywKKwkJ cmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjkgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFIChPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlLCBPTkxZIGR1bXBfdGVz dC50ZXN0X3NlY29uZF90YWJsZSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVs ZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0 aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEw JyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA5MiwKKwkJY3JlYXRlX3NxbCA9PgorCQkgICdDUkVB VEUgUFVCTElDQVRJT04gcHViMTAgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChkdW1wX3Rl c3QudGVzdF9pbmhlcml0YW5jZV9wYXJlbnQpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNS RUFURSBQVUJMSUNBVElPTiBwdWIxMCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKE9OTFkg ZHVtcF90ZXN0LnRlc3RfaW5oZXJpdGFuY2VfcGFyZW50LCBPTkxZIGR1bXBfdGVzdC50ZXN0X2lu aGVyaXRhbmNlX2NoaWxkKSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUs IHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25f cG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKwogCSdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEnID0+ IHsKIAkJY3JlYXRlX29yZGVyID0+IDUwLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgU1VCU0NS SVBUSU9OIHN1YjEKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggMzU4NGM0ZTE0MjguLjFiZmVjMGJkM2VmIDEwMDY0NAot LS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUu YwpAQCAtMzA3MywxNyArMzA3MywzNCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBj aGFyICpzY2hlbWFuYW1lLAogCQkJCQkJCQkgICIgICAgICAgICAgV0hFUkUgYXR0cmVsaWQgPSBw ci5wcnJlbGlkIEFORCBhdHRudW0gPSBwcmF0dHJzW3NdKVxuIgogCQkJCQkJCQkgICIgICAgICAg IEVMU0UgTlVMTCBFTkQpICIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0 aW9uIHBcbiIKLQkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25f cmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgotCQkJCQkJCQkgICIgICAgIEpPSU4gcGdf Y2F0YWxvZy5wZ19jbGFzcyBjIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCQkgICJX SEVSRSBwci5wcnJlbGlkID0gJyVzJ1xuIgorCQkJCQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5w Z19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBwci5wcnB1YmlkXG4iCisJCQkJCQkJCSAg IgkJSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCisJ CQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnXG4iLAorCQkJCQkJCQkgIG9pZCwgb2lk LCBvaWQpOworCisJCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQkJCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cigmYnVmLCAiIEFORCBOT1QgcHIucHJleGNlcHRcbiIpOworCisJCQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJICAiVU5JT05cbiIKIAkJCQkJCQkJICAiU0VM RUNUIHB1Ym5hbWVcbiIKLQkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKLQkJCQkJCQkJICAiICAg ICAsIE5VTExcbiIKKwkJCQkJCQkJICAiCQksIE5VTExcbiIKKwkJCQkJCQkJICAiCQksIE5VTExc biIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKLQkJCQkJ CQkJICAiV0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNf cHVibGlzaGFibGUoJyVzJylcbiIKLQkJCQkJCQkJICAiT1JERVIgQlkgMTsiLAotCQkJCQkJCQkg IG9pZCwgb2lkLCBvaWQsIG9pZCk7CisJCQkJCQkJCSAgIldIRVJFIHAucHViYWxsdGFibGVzIEFO RCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iLAorCQkJCQkJ CQkgIG9pZCk7CisKKwkJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCQkJCWFwcGVu ZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCQkgICIgICAgIEFORCBOT1QgRVhJU1RTIChcbiIK KwkJCQkJCQkJCSAgIgkJU0VMRUNUIDFcbiIKKwkJCQkJCQkJCSAgIgkJRlJPTSBwZ19jYXRhbG9n LnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgorCQkJCQkJCQkJICAiCQlKT0lOIHBnX2NhdGFsb2cu cGdfY2xhc3MgcGNcbiIKKwkJCQkJCQkJCSAgIgkJT04gcHIucHJyZWxpZCA9IHBjLm9pZFxuIgor CQkJCQkJCQkJICAiCQlXSEVSRSBwci5wcnJlbGlkID0gJyVzJyBBTkQgcHIucHJwdWJpZCA9IHAu b2lkKVxuIiwKKwkJCQkJCQkJCSAgb2lkKTsKKworCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZi dWYsICJPUkRFUiBCWSAxOyIpOwogCQkJfQogCQkJZWxzZQogCQkJewpAQCAtMzEzNCw2ICszMTUx LDM1IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJ CQlQUWNsZWFyKHJlc3VsdCk7CiAJCX0KIAorCQkvKiBQcmludCBwdWJsaWNhdGlvbnMgdGhhdCB0 aGUgdGFibGUgaXMgZXhwbGljaXRseSBleGNsdWRlZCBmcm9tICovCisJCWlmIChwc2V0LnN2ZXJz aW9uID49IDE5MDAwMCkKKwkJeworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkg ICJTRUxFQ1QgcHVibmFtZVxuIgorCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNh dGlvbiBwXG4iCisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBw ciBPTiBwLm9pZCA9IHByLnBycHViaWRcbiIKKwkJCQkJCQkgICJXSEVSRSBwci5wcnJlbGlkID0g JyVzJ1xuIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCSAgIk9SREVSIEJZIDE7Iiwgb2lkKTsK KworCQkJcmVzdWx0ID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCQkJaWYgKCFyZXN1bHQpCisJCQkJ Z290byBlcnJvcl9yZXR1cm47CisJCQllbHNlCisJCQkJdHVwbGVzID0gUFFudHVwbGVzKHJlc3Vs dCk7CisKKwkJCWlmICh0dXBsZXMgPiAwKQorCQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQs IF8oIkV4Y2VwdCBQdWJsaWNhdGlvbnM6IikpOworCisJCQkvKiBNaWdodCBiZSBhbiBlbXB0eSBz ZXQgLSB0aGF0J3Mgb2sgKi8KKwkJCWZvciAoaSA9IDA7IGkgPCB0dXBsZXM7IGkrKykKKwkJCXsK KwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgIFwiJXNcIiIsIFBRZ2V0dmFsdWUocmVz dWx0LCBpLCAwKSk7CisKKwkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBidWYuZGF0YSk7 CisJCQl9CisJCQlQUWNsZWFyKHJlc3VsdCk7CisJCX0KKwogCQkvKgogCQkgKiBJZiB2ZXJib3Nl LCBwcmludCBOT1QgTlVMTCBjb25zdHJhaW50cy4KIAkJICovCkBAIC02NzUzLDggKzY3OTksMTIg QEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJCQkJCQkgICIg ICAgIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCiAJCQkJCQkJICAiV0hFUkUg Yy5yZWxuYW1lc3BhY2UgPSBuLm9pZFxuIgogCQkJCQkJCSAgIiAgQU5EIGMub2lkID0gcHIucHJy ZWxpZFxuIgotCQkJCQkJCSAgIiAgQU5EIHByLnBycHViaWQgPSAnJXMnXG4iCi0JCQkJCQkJICAi T1JERVIgQlkgMSwyIiwgcHViaWQpOworCQkJCQkJCSAgIiAgQU5EIHByLnBycHViaWQgPSAnJXMn XG4iLCBwdWJpZCk7CisKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJCQlhcHBl bmRQUUV4cEJ1ZmZlcigmYnVmLCAiICBBTkQgTk9UIHByLnByZXhjZXB0XG4iKTsKKworCQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIk9SREVSIEJZIDEsMiIpOwogCQkJaWYgKCFhZGRGb290ZXJU b1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJUYWJsZXM6IiksIGZhbHNlLCAmY29udCkpCiAJCQkJ Z290byBlcnJvcl9yZXR1cm47CiAKQEAgLTY3NzIsNiArNjgyMiwyMyBAQCBkZXNjcmliZVB1Ymxp Y2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJ CX0KIAkJfQorCQllbHNlCisJCXsKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJ CXsKKwkJCQkvKiBHZXQgdGhlIGV4Y2x1ZGVkIHRhYmxlcyBmb3IgdGhlIHNwZWNpZmllZCBwdWJs aWNhdGlvbiAqLworCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCSAgIlNFTEVD VCBjb25jYXQoYy5yZWxuYW1lc3BhY2U6OnJlZ25hbWVzcGFjZSwgJy4nLCBjLnJlbG5hbWUpXG4i CisJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4iCisJCQkJCQkJCSAgIiAg ICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBjLm9pZCA9IHByLnBy cmVsaWRcbiIKKwkJCQkJCQkJICAiV0hFUkUgcHIucHJwdWJpZCA9ICclcydcbiIKKwkJCQkJCQkJ ICAiICBBTkQgcHIucHJleGNlcHRcbiIKKwkJCQkJCQkJICAiT1JERVIgQlkgMSIsIHB1YmlkKTsK KwkJCQlpZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIkV4Y2VwdCB0YWJs ZXM6IiksCisJCQkJCQkJCQkJCQl0cnVlLCAmY29udCkpCisJCQkJCWdvdG8gZXJyb3JfcmV0dXJu OworCQkJfQorCQl9CiAKIAkJcHJpbnRUYWJsZSgmY29udCwgcHNldC5xdWVyeUZvdXQsIGZhbHNl LCBwc2V0LmxvZ2ZpbGUpOwogCQlwcmludFRhYmxlQ2xlYW51cCgmY29udCk7CmRpZmYgLS1naXQg YS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMKaW5kZXggOGI5MWJjMDAwNjIuLjM5NDA0ZWEwZjY5IDEwMDY0NAotLS0gYS9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jCkBAIC0zNjY5LDcgKzM2NjksMTcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBh dHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0 Y2hBbnksICJGT1IiLCAiQUxMIikpCiAJCUNPTVBMRVRFX1dJVEgoIlRBQkxFUyIsICJTRVFVRU5D RVMiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIikpCi0JCUNPTVBMRVRFX1dJVEgoIldJVEggKCIpOwor CQlDT01QTEVURV9XSVRIKCJFWENFUFQgVEFCTEUgKCIsICJXSVRIICgiKTsKKwllbHNlIGlmIChN YXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAi VEFCTEVTIiwgIkVYQ0VQVCIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRSAoIik7CisJZWxzZSBp ZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxM IiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCIpOwor CWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9S IiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIiwgIigiKSkKKwkJQ09NUExFVEVf V0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzKTsKKwllbHNlIGlmIChN YXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAi VEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIsICIoIiwgTWF0Y2hBbnlOKSAmJiBlbmRzX3dpdGgo cHJldl93ZCwgJywnKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xp c3Rfb2ZfdGFibGVzKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIsICIo IiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJ VEgoIikiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIkZPUiIsICJUQUJMRVMiKSkKIAkJQ09NUExFVEVfV0lUSCgiSU4gU0NIRU1BIik7CiAJ ZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1Ii LCAiVEFCTEUiLCBNYXRjaEFueSkgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCmluZGV4IDM2OGJlY2NhODk5Li41MTI2Yzk5NmZmNyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtMTQ2LDE0ICsxNDYsMTYgQEAg dHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25SZWxJbmZvCiAJUmVsYXRpb24JcmVsYXRpb247CiAJ Tm9kZQkgICAqd2hlcmVDbGF1c2U7CiAJTGlzdAkgICAqY29sdW1uczsKKwlib29sCQlleGNlcHQ7 CiB9IFB1YmxpY2F0aW9uUmVsSW5mbzsKIAogZXh0ZXJuIFB1YmxpY2F0aW9uICpHZXRQdWJsaWNh dGlvbihPaWQgcHViaWQpOwogZXh0ZXJuIFB1YmxpY2F0aW9uICpHZXRQdWJsaWNhdGlvbkJ5TmFt ZShjb25zdCBjaGFyICpwdWJuYW1lLCBib29sIG1pc3Npbmdfb2spOwotZXh0ZXJuIExpc3QgKkdl dFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBHZXRSZWxhdGlv blB1YmxpY2F0aW9ucyhPaWQgcmVsaWQsIExpc3QgKipwdWJpZHMsIExpc3QgKipleGNlcHRfcHVi aWRzKTsKIAogLyotLS0tLS0tLS0KLSAqIEV4cGVjdGVkIHZhbHVlcyBmb3IgcHViX3BhcnRvcHQg cGFyYW1ldGVyIG9mIEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKCksCisgKiBFeHBlY3RlZCB2YWx1 ZXMgZm9yIHB1Yl9wYXJ0b3B0IHBhcmFtZXRlciBvZgorICogR2V0UHVibGljYXRpb25JbmNsdWRl ZFJlbGF0aW9ucygpLCBhbmQgR2V0QWxsUHVibGljYXRpb25FeGNsdWRlZFRhYmxlcygpLAogICog d2hpY2ggYWxsb3dzIGNhbGxlcnMgdG8gc3BlY2lmeSB3aGljaCBwYXJ0aXRpb25zIG9mIHBhcnRp dGlvbmVkIHRhYmxlcwogICogbWVudGlvbmVkIGluIHRoZSBwdWJsaWNhdGlvbiB0aGV5IGV4cGVj dCB0byBzZWUuCiAgKgpAQCAtMTY4LDkgKzE3MCwxMiBAQCB0eXBlZGVmIGVudW0gUHVibGljYXRp b25QYXJ0T3B0CiAJUFVCTElDQVRJT05fUEFSVF9BTEwsCiB9IFB1YmxpY2F0aW9uUGFydE9wdDsK IAotZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGlj YXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKK2V4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvbklu Y2x1ZGVkUmVsYXRpb25zKE9pZCBwdWJpZCwKKwkJCQkJCQkJCQkJIFB1YmxpY2F0aW9uUGFydE9w dCBwdWJfcGFydG9wdCk7CitleHRlcm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25FeGNsdWRlZFRh YmxlcyhPaWQgcHViaWQsCisJCQkJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRv cHQpOwogZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKTsKLWV4dGVy biBMaXN0ICpHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhjaGFyIHJlbGtpbmQsIGJvb2wgcHVi dmlhcm9vdCk7CitleHRlcm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoUHVibGlj YXRpb24gKnB1YiwgY2hhciByZWxraW5kKTsKIGV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblNj aGVtYXMoT2lkIHB1YmlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvbnMoT2lk IHNjaGVtYWlkKTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhP aWQgc2NoZW1haWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uX3JlbC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaAppbmRl eCAzYTg3OTBlODQ4Mi4uZTNjY2JhNWVjNzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHVibGljYXRpb25fcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbl9yZWwuaApAQCAtMzEsNiArMzEsNyBAQCBDQVRBTE9HKHBnX3B1YmxpY2F0aW9uX3Jl bCw2MTA2LFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCkKIAlPaWQJCQlvaWQ7CQkJLyogb2lkICov CiAJT2lkCQkJcHJwdWJpZCBCS0lfTE9PS1VQKHBnX3B1YmxpY2F0aW9uKTsgLyogT2lkIG9mIHRo ZSBwdWJsaWNhdGlvbiAqLwogCU9pZAkJCXBycmVsaWQgQktJX0xPT0tVUChwZ19jbGFzcyk7CS8q IE9pZCBvZiB0aGUgcmVsYXRpb24gKi8KKwlib29sCQlwcmV4Y2VwdCBCS0lfREVGQVVMVChmKTsJ LyogZXhjbHVkZSB0aGUgcmVsYXRpb24gKi8KIAogI2lmZGVmCUNBVEFMT0dfVkFSTEVOCQkJLyog dmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJcGdfbm9kZV90cmVlIHBycXVh bDsJCS8qIHF1YWxpZmljYXRpb25zICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggNjQ2ZDZj ZWQ3NjMuLjUyODI0MjViNGRkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC00MzAwLDYgKzQz MDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblRhYmxlCiAJUmFuZ2VWYXIgICAqcmVs YXRpb247CQkvKiByZWxhdGlvbiB0byBiZSBwdWJsaXNoZWQgKi8KIAlOb2RlCSAgICp3aGVyZUNs YXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KIAlMaXN0CSAgICpjb2x1bW5zOwkJLyogTGlzdCBv ZiBjb2x1bW5zIGluIGEgcHVibGljYXRpb24gdGFibGUgKi8KKwlib29sCQlleGNlcHQ7CQkJLyog ZXhjbHVkZSB0aGUgcmVsYXRpb24gKi8KIH0gUHVibGljYXRpb25UYWJsZTsKIAogLyoKQEAgLTQz MDgsNiArNDMwOSw3IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uVGFibGUKIHR5cGVkZWYg ZW51bSBQdWJsaWNhdGlvbk9ialNwZWNUeXBlCiB7CiAJUFVCTElDQVRJT05PQkpfVEFCTEUsCQkv KiBBIHRhYmxlICovCisJUFVCTElDQVRJT05PQkpfRVhDRVBUX1RBQkxFLAkvKiBBIHRhYmxlIHRv IGJlIGV4Y2x1ZGVkICovCiAJUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQSwJLyogQWxs IHRhYmxlcyBpbiBzY2hlbWEgKi8KIAlQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVN QSwJLyogQWxsIHRhYmxlcyBpbiBmaXJzdCBlbGVtZW50IG9mCiAJCQkJCQkJCQkJCSAqIHNlYXJj aF9wYXRoICovCkBAIC00MzM2LDYgKzQzMzgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlv bkFsbE9ialNwZWMKIHsKIAlOb2RlVGFnCQl0eXBlOwogCVB1YmxpY2F0aW9uQWxsT2JqVHlwZSBw dWJvYmp0eXBlOwkvKiB0eXBlIG9mIHRoaXMgcHVibGljYXRpb24gb2JqZWN0ICovCisJTGlzdAkg ICAqZXhjZXB0X3RhYmxlczsJLyogTGlzdCBvZiB0YWJsZXMgdG8gYmUgZXhjbHVkZWQgKi8KIAlQ YXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICov CiB9IFB1YmxpY2F0aW9uQWxsT2JqU3BlYzsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dAppbmRleCA3ZmI0OWFhZjI5Yi4uYjIxMTVlZGIzYzMgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC0yMTMsMzMgKzIxMywxMDQgQEAg Tm90LW51bGwgY29uc3RyYWludHM6CiAgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAg ICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKICgxIHJvdykKIAotRFJPUCBUQUJMRSB0ZXN0 cHViX3RibDI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHVi X2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYTsKLUNS RUFURSBUQUJMRSB0ZXN0cHViX3RibDMgKGEgaW50KTsKLUNSRUFURSBUQUJMRSB0ZXN0cHViX3Ri bDNhIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3RibDMpOwogU0VUIGNsaWVudF9taW5fbWVz c2FnZXMgPSAnRVJST1InOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0 ZXN0cHViX3RibDM7Ci1DUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkg dGVzdHB1Yl90YmwzOworLS0gRXhjbHVkZSB0YWJsZXMgdXNpbmcgRk9SIEFMTCBUQUJMRVMgRVhD RVBUIFRBQkxFICh0YWJsZWxpc3QpCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0 YWJsZXNfZXhjZXB0dGFibGUgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3Ri bDEsIHRlc3RwdWJfdGJsMik7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJs ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAg ICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90Ymwx IgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwyIgorCistLSBFeGNsdWRlIHRhYmxlcyB1c2luZyBG T1IgQUxMIFRBQkxFUyBFWENFUFQgKHRhYmxlbGlzdCkKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0 cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf Zm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAg ICAgICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCisKKy0t IENoZWNrIHRoYXQgdGhlIHRhYmxlIGRlc2NyaXB0aW9uIHNob3dzIHRoZSBwdWJsaWNhdGlvbiBs aXN0IHRoZSB0YWJsZSBpcworLS0gZXhjbHVkZWQgZnJvbQorXGQgdGVzdHB1Yl90YmwxCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZXN0cHViX3RibDEiCisgQ29s dW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgIERl ZmF1bHQgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGlk ICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IG5leHR2YWwoJ3Rlc3RwdWJf dGJsMV9pZF9zZXEnOjpyZWdjbGFzcykKKyBkYXRhICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlc3RwdWJfdGJsMV9wa2V5IiBQUklNQVJZIEtF WSwgYnRyZWUgKGlkKQorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlcyIK K0V4Y2VwdCBQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRh YmxlIgorICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEiCisKIFJFU0VUIGNs aWVudF9taW5fbWVzc2FnZXM7CitEUk9QIFRBQkxFIHRlc3RwdWJfdGJsMjsKK0RST1AgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9y c2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNl cHR0YWJsZSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxOworQ1JFQVRFIFRBQkxF IHRlc3RwdWJfdGJsX3BhcmVudCAoYSBpbnQpOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsX2No aWxkIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHViX3RibF9wYXJlbnQpOworU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBU QUJMRSB0ZXN0cHViX3RibF9wYXJlbnQ7CiBcZFJwKyB0ZXN0cHViMwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjMKICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBj b2x1bW5zIHwgVmlhIHJvb3QgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQogIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCiBUYWJsZXM6Ci0gICAg InB1YmxpYy50ZXN0cHViX3RibDMiCi0gICAgInB1YmxpYy50ZXN0cHViX3RibDNhIgorICAgICJw dWJsaWMudGVzdHB1Yl90YmxfY2hpbGQiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQi CiAKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3Ri bF9wYXJlbnQ7CiBcZFJwKyB0ZXN0cHViNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjQKICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJv b3QgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCiBUYWJsZXM6Ci0gICAgInB1YmxpYy50ZXN0cHVi X3RibDMiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCiAKLURST1AgVEFCTEUgdGVz dHB1Yl90YmwzLCB0ZXN0cHViX3RibDNhOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVz dHB1YjQ7CistLSBFeGNsdWRlIHBhcmVudCB0YWJsZSwgb21pdHRpbmcgYm90aCBvZiAnT05MWScg YW5kICcqJworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEZPUiBBTEwgVEFCTEVTIEVYQ0VQ VCBUQUJMRSAodGVzdHB1Yl90YmxfcGFyZW50KTsKK1xkUnArIHRlc3RwdWI1CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2Vx dWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJh dGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2VwdCB0 YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibF9jaGlsZCIKKyAgICAicHVibGljLnRlc3Rw dWJfdGJsX3BhcmVudCIKKworLS0gRVhDRVBUIHdpdGggJyonOiBleGNsdWRlIHRhYmxlIGFuZCBh bGwgZGVzY2VuZGFudHMKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgQUxMIFRBQkxF UyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVudCAqKTsKK1xkUnArIHRlc3RwdWI2Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViNgorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYK K0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibF9jaGlsZCIKKyAgICAicHVi bGljLnRlc3RwdWJfdGJsX3BhcmVudCIKKworLS0gRVhDRVBUIHdpdGggT05MWTogZXhjbHVkZSB0 YWJsZSBidXQgbm90IGRlc2NlbmRhbnRzCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjcgRk9S IEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIHRlc3RwdWJfdGJsX3BhcmVudCk7CitcZFJw KyB0ZXN0cHViNworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjcKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAg ICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfcGFy ZW50IgorCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworRFJPUCBUQUJMRSB0ZXN0cHViX3Ri bF9wYXJlbnQsIHRlc3RwdWJfdGJsX2NoaWxkOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMywg dGVzdHB1YjQsIHRlc3RwdWI1LCB0ZXN0cHViNiwgdGVzdHB1Yjc7CiAtLS0gVGVzdHMgZm9yIHB1 YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUwogQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3Nl cTA7CiBDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QucmVncmVzc19wdWJfc2VxMTsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCA4NWIwMGJkNjdjOC4uNTIyNGRhOTNkNzcgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTEwNSwyMCArMTA1LDQxIEBAIFNF TEVDVCBwdWJuYW1lLCBwdWJhbGx0YWJsZXMgRlJPTSBwZ19wdWJsaWNhdGlvbiBXSEVSRSBwdWJu YW1lID0gJ3Rlc3RwdWJfZm9yYWxsCiBcZCsgdGVzdHB1Yl90YmwyCiBcZFJwKyB0ZXN0cHViX2Zv cmFsbHRhYmxlcwogCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CistLSBFeGNs dWRlIHRhYmxlcyB1c2luZyBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRhYmxlbGlzdCkK K0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBGT1Ig QUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyKTsKK1xk UnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCistLSBFeGNsdWRlIHRhYmxlcyB1 c2luZyBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHRhYmxlbGlzdCkKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBU ICh0ZXN0cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUx CistLSBDaGVjayB0aGF0IHRoZSB0YWJsZSBkZXNjcmlwdGlvbiBzaG93cyB0aGUgcHVibGljYXRp b24gbGlzdCB0aGUgdGFibGUgaXMKKy0tIGV4Y2x1ZGVkIGZyb20KK1xkIHRlc3RwdWJfdGJsMQor CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7Ci1E Uk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0 ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYTsKK0RST1AgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2No ZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0 YWJsZSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxOwogCi1DUkVBVEUgVEFCTEUg dGVzdHB1Yl90YmwzIChhIGludCk7Ci1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzYSAoYiB0ZXh0 KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9wYXJl bnQgKGEgaW50KTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9jaGlsZCAoYiB0ZXh0KSBJTkhF UklUUyAodGVzdHB1Yl90YmxfcGFyZW50KTsKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VS Uk9SJzsKLUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90Ymwz OwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJs MzsKLVJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudDsKIFxkUnArIHRlc3RwdWIzCitDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmxfcGFyZW50Owog XGRScCsgdGVzdHB1YjQKKy0tIEV4Y2x1ZGUgcGFyZW50IHRhYmxlLCBvbWl0dGluZyBib3RoIG9m ICdPTkxZJyBhbmQgJyonCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjUgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibF9wYXJlbnQpOworXGRScCsgdGVzdHB1YjUKKy0t IEVYQ0VQVCB3aXRoICcqJzogZXhjbHVkZSB0YWJsZSBhbmQgYWxsIGRlc2NlbmRhbnRzCitDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0 cHViX3RibF9wYXJlbnQgKik7CitcZFJwKyB0ZXN0cHViNgorLS0gRVhDRVBUIHdpdGggT05MWTog ZXhjbHVkZSB0YWJsZSBidXQgbm90IGRlc2NlbmRhbnRzCitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1YjcgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIHRlc3RwdWJfdGJsX3BhcmVu dCk7CitcZFJwKyB0ZXN0cHViNwogCi1EUk9QIFRBQkxFIHRlc3RwdWJfdGJsMywgdGVzdHB1Yl90 YmwzYTsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3RwdWI0OworUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgdGVzdHB1Yl90YmxfcGFyZW50LCB0ZXN0cHViX3Ri bF9jaGlsZDsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3RwdWI0LCB0ZXN0cHViNSwg dGVzdHB1YjYsIHRlc3RwdWI3OwogCiAtLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNF UVVFTkNFUwogQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTA7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v bWVzb24uYnVpbGQKaW5kZXggYTRjN2RiYWZmNTkuLjA3MjgyYWEzYzE4IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL21lc29uLmJ1aWxkCkBAIC00Niw2ICs0Niw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAz NF90ZW1wb3JhbC5wbCcsCiAgICAgICAndC8wMzVfY29uZmxpY3RzLnBsJywKICAgICAgICd0LzAz Nl9zZXF1ZW5jZXMucGwnLAorICAgICAgJ3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5w bCcsCiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAgICAgXSwKICAgfSwKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40YzNjODE0NjJhNQotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNl cHRfdGFibGUucGwKQEAgLTAsMCArMSwyNTMgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAy NSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBMb2dpY2FsIHJlcGxp Y2F0aW9uIHRlc3RzIGZvciBFWENFUFQgVEFCTEUgcHVibGljYXRpb25zCit1c2Ugc3RyaWN0Owor dXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXplIHB1Ymxp c2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1p bmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgSW5pdGlhbGl6 ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQoYWxs b3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisK KyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRVhDRVBU IFRBQkxFIHRlc3QgY2FzZXMgZm9yIG5vcm1hbCB0YWJsZXMKKyMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxlcyBv biBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFx KAorCUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWIxIEFTIFNFTEVD VCBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgQVMgYTsKKykpOworCisjIENyZWF0ZSBzY2hlbWFzIGFu ZCB0YWJsZXMgb24gc3Vic2NyaWJlcgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxKAorCUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50 YWIxIChhIGludCk7CispKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVi bGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0 Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg UFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChz Y2gxLnRhYjEpIgorKTsKKyMgQ3JlYXRlIGEgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfY3JlYXRlX2xv Z2ljYWxfcmVwbGljYXRpb25fc2xvdCgndGVzdF9zbG90JywgJ3Bnb3V0cHV0JykiKTsKKworJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1Yl9zY2hlbWEgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNB VElPTiB0YXBfcHViX3NjaGVtYSIKKyk7CisKKyMgV2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5j IHRvIGZpbmlzaAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMo JG5vZGVfcHVibGlzaGVyLAorCSd0YXBfc3ViX3NjaGVtYScpOworCisjIENoZWNrIHRoZSB0YWJs ZSBkYXRhIGRvZXMgbm90IHN5bmMgZm9yIGV4Y2x1ZGVkIHRhYmxlCitteSAkcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSwg bWluKGEpLCBtYXgoYSkgRlJPTSBzY2gxLnRhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDB8fCksCisJ J2NoZWNrIHRoZXJlIGlzIG5vIGluaXRpYWwgZGF0YSBjb3BpZWQgZm9yIHRoZSBleGNsdWRlZCB0 YWJsZScpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyBzY2gxLnRhYjEgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygxMSwyMCkpIik7CisKKyMg VmVyaWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCB0byBleGNsdWRlZCB0YWJsZSBpcyBub3QgcHVibGlz aGVkLgorJHJlc3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBjb3VudCgqKSA9IDAgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2JpbmFyeV9jaGFu Z2VzKCd0ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMLCAncHJvdG9fdmVyc2lvbicsICcxJywgJ3B1Ymxp Y2F0aW9uX25hbWVzJywgJ3RhcF9zdWJfc2NoZW1hJykiCispOworaXMoJHJlc3VsdCwgcXEodCks ICdjaGVjayBubyBjaGFuZ2VzIGZvciBleGNsdWRlZCB0YWJsZSBpbiByZXBsaWNhdGlvbiBzbG90 Jyk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9zY2hlbWEn KTsKKworIyBWZXJpZnkgdGhhdCBkYXRhIGluc2VydGVkIHRvIHRoZSBleGNsdWRlZCB0YWJsZSBp cyBub3QgcmVwbGljYXRlZC4KKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopLCBtaW4oYSksIG1heChhKSBGUk9NIHNjaDEu dGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMHx8KSwgJ2NoZWNrIHJlcGxpY2F0ZWQgaW5zZXJ0cyBv biBzdWJzY3JpYmVyJyk7CisKKyMgY2xlYW51cAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkRST1AgUFVCTElDQVRJT04gdGFwX3B1Yl9zY2hlbWEiKTsKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1 Yl9zY2hlbWEiKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorIyBFWENFUFQgVEFCTEUgdGVzdCBjYXNlcyBmb3IgcGFydGl0aW9uZWQgdGFibGVzCisj IENoZWNrIGJlaGF2aW9yIG9mIEVYQ0VQVCBUQUJMRSB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlv bl9yb290IG9uIGEKKyMgcGFydGl0aW9uZWQgdGFibGUgYW5kIGl0cyBwYXJ0aXRpb25zLgorIyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBTZXR1cCBwYXJ0 aXRpb25lZCB0YWJsZSBhbmQgcGFydGl0aW9ucyBvbiB0aGUgcHVibGlzaGVyIHRoYXQgbWFwIHRv IG5vcm1hbAorIyB0YWJsZXMgb24gdGhlIHN1YnNjcmliZXIKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBUQUJMRSBzY2gxLnQxKGEgaW50KSBQ QVJUSVRJT04gQlkgUkFOR0UoYSk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDEgUEFSVElUSU9O IE9GIHNjaDEudDEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTAwKTsKKwlDUkVBVEUgVEFCTEUg c2NoMS5wYXJ0MihhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOworCUNSRUFURSBUQUJMRSBz Y2gxLnBhcnQyXzEgUEFSVElUSU9OIE9GIHNjaDEucGFydDIgRk9SIFZBTFVFUyBGUk9NICgxMDEp IFRPICgxNTApOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQyXzIgUEFSVElUSU9OIE9GIHNjaDEu cGFydDIgRk9SIFZBTFVFUyBGUk9NICgxNTEpIFRPICgyMDApOworCUFMVEVSIFRBQkxFIHNjaDEu dDEgQVRUQUNIIFBBUlRJVElPTiBzY2gxLnBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTAxKSBUTyAo MjAwKTsKKykpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXEoCisJQ1JFQVRFIFRBQkxFIHNjaDEudDEoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBh cnQxKGEgaW50KTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0MihhIGludCk7CisJQ1JFQVRFIFRB QkxFIHNjaDEucGFydDJfMShhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEucGFydDJfMihhIGlu dCk7CispKTsKKworIyBQYXJ0aXRpdGlvbnMgY2Fubm90IGJlIGV4Y2x1ZGVkIHVzaW5nIEVYQ0VQ VCBUQUJMRQorbXkgKCRzdGRvdXQsICRzdGRlcnIpOworKCRyZXN1bHQsICRzdGRvdXQsICRzdGRl cnIpID0gJG5vZGVfcHVibGlzaGVyLT5wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBQ VUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gx LnBhcnQyKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKKykpOwor bGlrZSgKKwkkc3RkZXJyLAorCXFyL3BhcnRpdGlvbiAicGFydDIiIGNhbm5vdCBiZSBleGNsdWRl ZCB1c2luZyBFWENFUFQgVEFCTEUvLAorCSdwYXJ0aXRpb24gInBhcnQyIiBjYW5ub3QgYmUgZXhj bHVkZWQgdXNpbmcgRVhDRVBUIFRBQkxFJyk7CisKKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJy KSA9ICRub2RlX3B1Ymxpc2hlci0+cHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgUFVC TElDQVRJT04gdGFwX3B1Yl9wYXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS5w YXJ0MikgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKKykpOworbGlr ZSgKKwkkc3RkZXJyLAorCXFyL3BhcnRpdGlvbiAicGFydDIiIGNhbm5vdCBiZSBleGNsdWRlZCB1 c2luZyBFWENFUFQgVEFCTEUvLAorCSdwYXJ0aXRpb24gInBhcnQyIiBjYW5ub3QgYmUgZXhjbHVk ZWQgdXNpbmcgRVhDRVBUIFRBQkxFJyk7CisKKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9 ICRub2RlX3B1Ymxpc2hlci0+cHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgUFVCTElD QVRJT04gdGFwX3B1Yl9wYXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS5wYXJ0 Ml8xKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKKykpOworbGlr ZSgKKwkkc3RkZXJyLAorCXFyL3BhcnRpdGlvbiAicGFydDJfMSIgY2Fubm90IGJlIGV4Y2x1ZGVk IHVzaW5nIEVYQ0VQVCBUQUJMRS8sCisJJ3BhcnRpdGlvbiAicGFydDJfMSIgY2Fubm90IGJlIGV4 Y2x1ZGVkIHVzaW5nIEVYQ0VQVCBUQUJMRScpOworCisoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVy cikgPSAkbm9kZV9wdWJsaXNoZXItPnBzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFBV QkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEu cGFydDJfMSkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKKykpOwor bGlrZSgKKwkkc3RkZXJyLAorCXFyL3BhcnRpdGlvbiAicGFydDJfMSIgY2Fubm90IGJlIGV4Y2x1 ZGVkIHVzaW5nIEVYQ0VQVCBUQUJMRS8sCisJJ3BhcnRpdGlvbiAicGFydDJfMSIgY2Fubm90IGJl IGV4Y2x1ZGVkIHVzaW5nIEVYQ0VQVCBUQUJMRScpOworCisjIEV4Y2x1ZGluZyB0aGUgcm9vdCBw YXJ0aXRpb25lZCB0YWJsZSBleGNsdWRlcyBhbGwgaXRzIHBhcnRpdGlvbnMgYXMgd2VsbCB3aGVu CisjIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UuCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1 Yl9wYXJ0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoc2NoMS50MSkgV0lUSCAocHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSk7CisJSU5TRVJUIElOVE8gc2NoMS50MSBWQUxV RVMgKDEpLCAoMTAxKSwgKDE1MSk7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCBDT05ORUNUSU9O ICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCIKKyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIs ICd0YXBfc3ViX3BhcnQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBzbG90X25hbWUgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJ3Rl c3Rfc2xvdCcsIHBnX2N1cnJlbnRfd2FsX2xzbigpKTsiCispOworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDIpLCAo MTAyKSwgKDE1MikiKTsKKworIyBWZXJpZnkgdGhhdCBkYXRhIGluc2VydGVkIHRvIHRoZSBwYXJ0 aXRpb25lZCB0YWJsZSBpcyBub3QgcHVibGlzaGVkIHdoZW4gaXQgaXMKKyMgZXhjbHVkZWQgd2l0 aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUuCiskcmVzdWx0ID0gJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopID0gMCBGUk9N IHBnX2xvZ2ljYWxfc2xvdF9nZXRfYmluYXJ5X2NoYW5nZXMoJ3Rlc3Rfc2xvdCcsIE5VTEwsIE5V TEwsICdwcm90b192ZXJzaW9uJywgJzEnLCAncHVibGljYXRpb25fbmFtZXMnLCAndGFwX3B1Yl9w YXJ0JykiCispOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3Bh cnQnKTsKKworIyBDaGVjayB0aGF0IG5vIHJvd3MgYXJlIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl cgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUICogRlJPTSBzY2gxLnQxIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiBy b290IHRhYmxlJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0MSIpOworaXMoJHJlc3VsdCwgcXEoKSwg J2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0MScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDIi KTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDInKTsK KworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUICogRlJPTSBzY2gxLnBhcnQyXzEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayBy b3dzIG9uIHRhYmxlIHNjaDEucGFydDJfMScpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDJfMiIp OworaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gdGFibGUgc2NoMS5wYXJ0Ml8yJyk7 CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJ UFRJT04gdGFwX3N1Yl9wYXJ0Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7Iik7CisKKyMgRXhjbHVkaW5nIHRo ZSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGV4Y2x1ZGVzIGFsbCBpdHMgcGFydGl0aW9ucyBhcyB3 ZWxsIHdoZW4KKyMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlLgorJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEudDEpIFdJVEgg KHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CispKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJf cGFydCBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJf cGFydCIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygk bm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViX3BhcnQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBzbG90X25hbWUgRlJPTSBwZ19yZXBsaWNhdGlvbl9z bG90X2FkdmFuY2UoJ3Rlc3Rfc2xvdCcsIHBnX2N1cnJlbnRfd2FsX2xzbigpKTsiCispOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gc2NoMS50 MSBWQUxVRVMgKDMpLCAoMTAzKSwgKDE1Myk7Iik7CisKKyMgVmVyaWZ5IHRoYXQgZGF0YSBpbnNl cnRlZCB0byB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXMgbm90IHB1Ymxpc2hlZCB3aGVuIGl0IGlz CisjIGV4Y2x1ZGVkIHdpdGggcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlLgorJHJl c3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBj b3VudCgqKSA9IDAgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2JpbmFyeV9jaGFuZ2VzKCd0ZXN0 X3Nsb3QnLCBOVUxMLCBOVUxMLCAncHJvdG9fdmVyc2lvbicsICcxJywgJ3B1YmxpY2F0aW9uX25h bWVzJywgJ3RhcF9wdWJfcGFydCcpIgorKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgndGFwX3N1Yl9wYXJ0Jyk7CisKKyMgQ2hlY2sgdGhhdCBubyByb3dzIGFyZSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS50MSIpOworaXMoJHJlc3VsdCwgcXEoKSwg J2NoZWNrIHJvd3Mgb24gcm9vdCB0YWJsZScpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDEiKTsKK2lz KCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDEnKTsKKworJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICog RlJPTSBzY2gxLnBhcnQyIik7CitpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJs ZSBzY2gxLnBhcnQyJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0Ml8xIik7CitpcygkcmVzdWx0 LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQyXzEnKTsKKworJHJlc3VsdCA9 CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJP TSBzY2gxLnBhcnQyXzIiKTsKK2lzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxl IHNjaDEucGFydDJfMicpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCIpOworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0OyIpOwor CisjIENhbm5vdCBhdHRhY2ggcGFydGl0aW9uIHRoYXQgaXMgcGFydCBvZiBFWENFUFQgbGlzdCBp biBwdWJsaWNhdGlvbgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki QUxURVIgVEFCTEUgc2NoMS50MSBERVRBQ0ggUEFSVElUSU9OIHNjaDEucGFydDIiKTsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0 YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChzY2gxLnBhcnQyKSBXSVRI IChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpIgorKTsKKygkcmVzdWx0LCAkc3Rk b3V0LCAkc3RkZXJyKSA9ICRub2RlX3B1Ymxpc2hlci0+cHNxbCgKKwkncG9zdGdyZXMnLCBxcSgK KwlBTFRFUiBUQUJMRSBzY2gxLnQxIEFUVEFDSCBQQVJUSVRJT04gc2NoMS5wYXJ0MiBGT1IgVkFM VUVTIEZST00gKDEwMSkgVE8gKDIwMCk7CispKTsKK2xpa2UoCisJJHN0ZGVyciwKKwlxci9jYW5u b3QgYXR0YWNoIHJlbGF0aW9uICJwYXJ0MiIgYXMgcGFydGl0aW9uIGJlY2F1c2UgaXQgaXMgcGFy dCBvZiBFWENFUFQgbGlzdCBpbiBwdWJsaWNhdGlvbi8sCisJJ2Nhbm5vdCBhdHRhY2ggcmVsYXRp b24gInBhcnQyIiBhcyBwYXJ0aXRpb24gYmVjYXVzZSBpdCBpcyBwYXJ0IG9mIEVYQ0VQVCBsaXN0 IGluIHB1YmxpY2F0aW9uJworKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnZmFzdCcpOwor JG5vZGVfcHVibGlzaGVyLT5zdG9wKCdmYXN0Jyk7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4z NC4xCgo= --00000000000036e9410648f8d89b--