Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qJvuQ-0002o7-PQ for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Jul 2023 12:59:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qJvuP-0004v0-EJ for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Jul 2023 12:59:01 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qJvuO-0004uq-Q6 for pgsql-hackers@lists.postgresql.org; Thu, 13 Jul 2023 12:59:01 +0000 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qJvuK-000EPe-Qz for pgsql-hackers@postgresql.org; Thu, 13 Jul 2023 12:59:00 +0000 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-1b89cfb4571so5599675ad.3 for ; Thu, 13 Jul 2023 05:58:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689253135; x=1691845135; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=7lnam6ccH+wjqn4xXcLs7ooPIPPmF1DGlvu9YWcPUNA=; b=EKK9u5vj/IGLKPd0roOoqlGO9E/XSZtDlctsdm0bHydWZaT7m4mK0q/ZWblx8oEG3h +359+UAdV2IG1dDwMsrB5olgvnrKyZ3JyOjulJO1cs/3T4M82pGMS1jEkl45a11zMgXA XWu4lBbRXQq1/OVzlFErmDIJU6YWrgg1t+tIFMCOfPor2TkeGeS8Mjotph/I+qL65PrN gw+bKd9g19MYv4RBjXz7ydRcBvj9mlu33bCtxByb8OE3g9YN7HEN3RqQC6Fm2W6fvWQU 3U4wKtl9y7O7TjOG4quRVcL+alD/4wMQtqm22Ob6VsJ4+WgEDlerFjJKYPqlwnFdjiYA D6oA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689253135; x=1691845135; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7lnam6ccH+wjqn4xXcLs7ooPIPPmF1DGlvu9YWcPUNA=; b=dMFlxsyPLD5Z+n3mdRneSrcd5EazdYBxFrAJDSc6JfCld8t6UxekWMeFKtOfQFbsRa or3g48Q4LlkPKKaWt6dprwWbS/lAMbABmCeX6AHwZehbtzG+1qLnuf1TKtKUQxEMJCoj SBBsY9cyPEnGoc+8D3NctuHdooA6/DDOFhd/K7E5rLZAHBia3NWMU/Zv5XKBOPYHUg5q le+anQopjM4/U3OXFOPzpy2HAMOfV5n9xqRaHVvAJJct4lNNjVnxv+TlgqloLXBdfOhR e14Zc9UJfZnfaz4QO0kU3eWsvlJJ0n67M2kpAOUFK07tPhAPCtSkXwajotRdnOeIuiOd Usww== X-Gm-Message-State: ABy/qLbyBuG1lYTXwWaZbKiDsbThD+hIwQeqiAAD8MTsDsc7ln5lhLKU 5Zahkjwn1ilgk2bCld7lsWgC4ql/ZoF/ORBBwJA= X-Google-Smtp-Source: APBJJlEzn5MUqyBS6ekRkA6JmCV/qeNo+cCBCzi4ILM2nOPjaMtmuanO+4ceZYdxoYO9YkMmR5fBJV5HFoEbTPBsy5A= X-Received: by 2002:a17:902:7589:b0:1b5:694:b1a9 with SMTP id j9-20020a170902758900b001b50694b1a9mr1343433pll.32.1689253135108; Thu, 13 Jul 2023 05:58:55 -0700 (PDT) MIME-Version: 1.0 References: <20221221101846.7zsi7lscnm5ediik@alvherre.pgsql> <1350682.1671635927@sss.pgh.pa.us> <4191508.1674157166@sss.pgh.pa.us> <349124.1674185509@sss.pgh.pa.us> <20230207180855.xy5m4puwh5gzd7xy@awork3.anarazel.de> <1274885.1680558101@sss.pgh.pa.us> <9D23D8BB-83EE-451E-95C1-CF42ADB76869@yesql.se> In-Reply-To: From: Amit Langote Date: Thu, 13 Jul 2023 21:58:38 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Daniel Gustafsson Cc: Tom Lane , Alvaro Herrera , Andres Freund , David Rowley , Jacob Champion , PostgreSQL Hackers , Robert Haas Content-Type: multipart/mixed; boundary="0000000000000dedc806005de532" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000dedc806005de532 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jul 6, 2023 at 11:29=E2=80=AFPM Amit Langote wrote: > On Mon, Jul 3, 2023 at 10:27=E2=80=AFPM Daniel Gustafsson wrote: > > > On 8 Jun 2023, at 16:23, Amit Langote wrote= : > > > Here is a new version. > > > > The local planstate variable in the hunk below is shadowing the functio= n > > parameter planstate which cause a compiler warning: > > Thanks Daniel for the heads up. > > Attached new version fixes that and contains a few other notable > changes. Before going into the details of those changes, let me > reiterate in broad strokes what the patch is trying to do. > > The idea is to move the locking of some tables referenced in a cached > (generic) plan from plancache/GetCachedPlan() to the > executor/ExecutorStart(). Specifically, the locking of inheritance > child tables. Why? Because partition pruning with "initial pruning > steps" contained in the Append/MergeAppend nodes may eliminate some > child tables that need not have been locked to begin with, though the > pruning can only occur during ExecutorStart(). > > After applying this patch, GetCachedPlan() only locks the tables that > are directly mentioned in the query to ensure that the > analyzed-rewritten-but-unplanned query tree backing a given CachedPlan > is still valid (cf RevalidateCachedQuery()), but not the tables in the > CachedPlan that would have been added by the planner. Tables in a > CachePlan that would not be locked currently only include the > inheritance child tables / partitions of the tables mentioned in the > query. This means that the plan trees in a given CachedPlan returned > by GetCachedPlan() are only partially valid and are subject to > invalidation because concurrent sessions can possibly modify the child > tables referenced in them before ExecutorStart() gets around to > locking them. If the concurrent modifications do happen, > ExecutorStart() is now equipped to detect them by way of noticing that > the CachedPlan is invalidated and inform the caller to discard and > recreate the CachedPlan. This entails changing all the call sites of > ExecutorStart() that pass it a plan tree from a CachedPlan to > implement the replan-and-retry-execution loop. > > Given the above, ExecutorStart(), which has not needed so far to take > any locks (except on indexes mentioned in IndexScans), now needs to > lock child tables if executing a cached plan which contains them. In > the previous versions, the patch used a flag passed in > EState.es_top_eflags to signal ExecGetRangeTableRelation() to lock the > table. The flag would be set in ExecInitAppend() and > ExecInitMergeAppend() for the duration of the loop that initializes > child subplans with the assumption that that's where the child tables > would be opened. But not all child subplans of Append/MergeAppend > scan child tables (think UNION ALL queries), so this approach can > result in redundant locking. Worse, I needed to invent > PlannedStmt.elidedAppendChildRelations to separately track child > tables whose Scan nodes' parent Append/MergeAppend would be removed by > setrefs.c in some cases. > > So, this new patch uses a flag in the RangeTblEntry itself to denote > if the table is a child table instead of the above roundabout way. > ExecGetRangeTableRelation() can simply look at the RTE to decide > whether to take a lock or not. I considered adding a new bool field, > but noticed we already have inFromCl to track if a given RTE is for > table/entity directly mentioned in the query or for something added > behind-the-scenes into the range table as the field's description in > parsenodes.h says. RTEs for child tables are added behind-the-scenes > by the planner and it makes perfect sense to me to mark their inFromCl > as false. I can't find anything that relies on the current behavior > of inFromCl being set to the same value as the root inheritance parent > (true). Patch 0002 makes this change for child RTEs. > > A few other notes: > > * A parallel worker does ExecutorStart() without access to the > CachedPlan that the leader may have gotten its plan tree from. This > means that parallel workers do not have the ability to detect plan > tree invalidations. I think that's fine, because if the leader would > have been able to launch workers at all, it would also have gotten all > the locks to protect the (portion of) the plan tree that the workers > would be executing. I had an off-list discussion about this with > Robert and he mentioned his concern that each parallel worker would > have its own view of which child subplans of a parallel Append are > "valid" that depends on the result of its own evaluation of initial > pruning. So, there may be race conditions whereby a worker may try > to execute plan nodes that are no longer valid, for example, if the > partition a worker considers valid is not viewed as such by the leader > and thus not locked. I shared my thoughts as to why that sounds > unlikely at [1], though maybe I'm a bit too optimistic? > > * For multi-query portals, you can't now do ExecutorStart() > immediately followed by ExecutorRun() for each query in the portal, > because ExecutorStart() may now fail to start a plan if it gets > invalidated. So PortalStart() now does ExecutorStart()s for all > queries and remembers the QueryDescs for PortalRun() then to do > ExecutorRun()s using. A consequence of this is that > CommandCounterIncrement() now must be done between the > ExecutorStart()s of the individual plans in PortalStart() and not > between the ExecutorRun()s in PortalRunMulti(). make check-world > passes with this new arrangement, though I'm not entirely confident > that there are no problems lurking. In an absolutely brown-paper-bag moment, I realized that I had not updated src/backend/executor/README to reflect the changes to the executor's control flow that this patch makes. That is, after scrapping the old design back in January whose details *were* reflected in the patches before that redesign. Anyway, the attached fixes that. Tom, do you think you have bandwidth in the near future to give this another look? I think I've addressed the comments that you had given back in April, though as mentioned in the previous message, there may still be some funny-looking aspects still remaining. In any case, I have no intention of pressing ahead with the patch without another committer having had a chance to sign off on it. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --0000000000000dedc806005de532 Content-Type: application/x-patch; name="v41-0001-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Disposition: attachment; filename="v41-0001-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lk1553ua3 RnJvbSA5MWRjYTkyYTk5MTgzMzU5NTIxNzhhZjFmMzgyNzA4N2QzYjMzNDg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQx IDEvNF0gQWRkIGZpZWxkIHRvIHN0b3JlIHBhcmVudCByZWxpZHMgdG8KIEFwcGVuZC9NZXJnZUFw cGVuZAoKVGhlcmUncyBubyB3YXkgY3VycmVudGx5IGluIHRoZSBleGVjdXRvciB0byB0ZWxsIGlm IHRoZSBjaGlsZApzdWJwbGFucyBvZiBBcHBlbmQvTWVyZ2VBcHBlbmQgYXJlIHNjYW5uaW5nIHBh cnRpdGlvbnMsIGFuZCBpZgp0aGV5IGluZGVlZCBkbywgd2hhdCB0aGUgUlQgaW5kZXhlcyBvZiB0 aGVpciBwYXJlbnQvYW5jZXN0b3IgdGFibGVzCmFyZS4gIEV4ZWN1dG9yIGRvZXNuJ3QgbmVlZCB0 byBzZWUgdGhlaXIgUlQgaW5kZXhlcyBleGNlcHQgZm9yCnJ1bi10aW1lIHBydW5pbmcsIGluIHdo aWNoIGNhc2UgdGhleSBjYW4gY2FuIGJlIGZvdW5kIGluIHRoZQpQYXJ0aXRpb25QcnVuZUluZm8s IGJ1dCBhIGZ1dHVyZSBjb21taXQgd2lsbCBjcmVhdGUgYSBuZWVkIGZvcgp0aGVtIHRvIGJlIGF2 YWlsYWJsZSBhdCBhbGwgdGltZXMgZm9yIHRoZSBwdXJwb3NlIG9mIGxvY2tpbmcKdGhvc2UgcGFy ZW50L2FuY2VzdG9yIHRhYmxlcyB3aGVuIGV4ZWN1dGluZyBhIGNhY2hlZCBwbGFuLgoKVGhlIGNv ZGUgdG8gbG9vayB1cCBwYXJ0aXRpb25lZCBwYXJlbnQgcmVsaWRzIGZvciBhIGdpdmVuIGxpc3Qg b2YKcGFydGl0aW9uIHNjYW4gc3VicGF0aHMgb2YgYW4gQXBwZW5kL01lcmdlQXBwZW5kIGlzIGFs cmVhZHkgcHJlc2VudAppbiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKSBidXQgaXQncyBsb2Nh bCB0byBwYXJ0cHJ1bmUuYy4gIFRoaXMKY29tbWl0IHJlZmFjdG9ycyB0aGF0IGNvZGUgaW50byBp dHMgb3duIGZ1bmN0aW9uIGNhbGxlZAphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcygpIGRl ZmluZWQgaW4gYXBwZW5kaW5mby5jIGFuZApnZW5lcmFsaXplcyBpdCB0byBjb25zaWRlciBjaGls ZCBqb2luIGFuZCBhZ2dyZWdhdGUgcGF0aHMuICBUbwpmYWNpbGl0YXRlIGxvb2tpbmcgdXAgb2Yg cGFyZW50IHJlbHMgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyBpbgphZGRfYXBwZW5kX3N1YnBhdGhf cGFydHJlbGlkcygpLCBwYXJlbnQgbGlua3MgYXJlIG5vdyBhbHNvIHNldCBpbgp0aGUgUmVsT3B0 SW5mb3Mgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyB0b28sIGxpa2UgdGhleSBhcmUgaW4KdGhvc2Ug b2YgY2hpbGQgYmFzZSBhbmQgam9pbiByZWxzLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQStIaXdxRkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdA bWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMgfCAgNDEgKysrKysrLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAg ICB8ICAgMyArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgfCAgIDQg Kwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jIHwgMTM0ICsrKysrKysr KysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAg IHwgMTI0ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oICAgICAgICAgICB8ICAxNCArKysKIHNyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZv LmggICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggICAg fCAgIDMgKy0KIDggZmlsZXMgY2hhbmdlZCwgMjAzIGluc2VydGlvbnMoKyksIDEyMyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggZWM3Mzc4 OWJjMi4uNWVlMmI1YjdmOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v Y3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4u YwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4dGVuc2libGUuaCIKICNpbmNs dWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNp bmNsdWRlICJvcHRpbWl6ZXIvYXBwZW5kaW5mby5oIgogI2luY2x1ZGUgIm9wdGltaXplci9jbGF1 c2VzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2Nvc3QuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIv b3B0aW1pemVyLmgiCkBAIC0xMjEwLDYgKzEyMTEsNyBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxh bm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCU9pZAkJ ICAgKm5vZGVDb2xsYXRpb25zID0gTlVMTDsKIAlib29sCSAgICpub2RlTnVsbHNGaXJzdCA9IE5V TEw7CiAJYm9vbAkJY29uc2lkZXJfYXN5bmMgPSBmYWxzZTsKKwlMaXN0CSAgICphbGxwYXJ0cmVs aWRzID0gTklMOwogCiAJLyoKIAkgKiBUaGUgc3VicGF0aHMgbGlzdCBjb3VsZCBiZSBlbXB0eSwg aWYgZXZlcnkgY2hpbGQgd2FzIHByb3ZlbiBlbXB0eSBieQpAQCAtMTM1MSwxNSArMTM1MywyMyBA QCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3Rf cGF0aCwgaW50IGZsYWdzKQogCQkJKytuYXN5bmNwbGFuczsKIAkJfQogCisJCS8qCisJCSAqIEZp bmQgcGFydGl0aW9uZWQgcGFyZW50IHJlbChzKSBvZiB0aGUgc3VicGF0aCdzIHJlbChzKS4KKwkJ ICovCisJCWFsbHBhcnRyZWxpZHMgPSBhZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhyb290 LCBzdWJwYXRoLCByZWwsCisJCQkJCQkJCQkJCQkJICBhbGxwYXJ0cmVsaWRzKTsKKwogCQlzdWJw bGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCXBsYW4tPmFsbHBhcnRy ZWxpZHMgPSBhbGxwYXJ0cmVsaWRzOworCiAJLyoKLQkgKiBJZiBhbnkgcXVhbHMgZXhpc3QsIHRo ZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9uCi0JICogcHJ1bmlu ZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9uIG5lZWRlZCBieSB0aGUgZXhl Y3V0b3IgdG8KLQkgKiBkbyBwYXJ0aXRpb24gcHJ1bmluZy4KKwkgKiBJZiBzY2FubmluZyBwYXJ0 aXRpb25zLCBjaGVjayBpZiB0aGVyZSBhcmUgcXVhbHMgdGhhdCBtYXkgYmUgdXNlZnVsIHRvCisJ ICogcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBH YXRoZXIgaW5mb3JtYXRpb24KKwkgKiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvIGRvIHBhcnRp dGlvbiBwcnVuaW5nLgogCSAqLwotCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcpCisJaWYg KGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAmJiBhbGxwYXJ0cmVsaWRzICE9IE5JTCkKIAl7CiAJ CUxpc3QJICAgKnBydW5lcXVhbDsKIApAQCAtMTM4MCw3ICsxMzkwLDggQEAgY3JlYXRlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFn cykKIAkJCXBhcnRwcnVuZWluZm8gPQogCQkJCW1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290 LCByZWwsCiAJCQkJCQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJIHBydW5l cXVhbCk7CisJCQkJCQkJCQkJIHBydW5lcXVhbCwKKwkJCQkJCQkJCQkgYWxscGFydHJlbGlkcyk7 CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKQEAgLTE0MjYsNiArMTQzNyw3 IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBl bmRQYXRoICpiZXN0X3BhdGgsCiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJUmVsT3B0SW5mbyAq cmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsKIAlQYXJ0aXRpb25QcnVuZUluZm8gKnBhcnRw cnVuZWluZm8gPSBOVUxMOworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHMgPSBOSUw7CiAKIAkvKgog CSAqIFdlIGRvbid0IGhhdmUgdGhlIGFjdHVhbCBjcmVhdGlvbiBvZiB0aGUgTWVyZ2VBcHBlbmQg bm9kZSBzcGxpdCBvdXQKQEAgLTE1MTUsMTUgKzE1MjcsMjMgQEAgY3JlYXRlX21lcmdlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJ CXN1YnBsYW4gPSAoUGxhbiAqKSBzb3J0OwogCQl9CiAKKwkJLyoKKwkJICogRmluZCBwYXJ0aXRp b25lZCBwYXJlbnQgcmVsKHMpIG9mIHRoZSBzdWJwYXRoJ3MgcmVsKHMpLgorCQkgKi8KKwkJYWxs cGFydHJlbGlkcyA9IGFkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKHJvb3QsIHN1YnBhdGgs IHJlbCwKKwkJCQkJCQkJCQkJCQkgIGFsbHBhcnRyZWxpZHMpOworCiAJCXN1YnBsYW5zID0gbGFw cGVuZChzdWJwbGFucywgc3VicGxhbik7CiAJfQogCisJbm9kZS0+YWxscGFydHJlbGlkcyA9IGFs bHBhcnRyZWxpZHM7CisKIAkvKgotCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUg dXNlZnVsIHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KLQkgKiBwcnVuaW5nIGR1cmluZyBl eGVjdXRpb24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0bwot CSAqIGRvIHBhcnRpdGlvbiBwcnVuaW5nLgorCSAqIElmIHNjYW5uaW5nIHBhcnRpdGlvbnMsIGNo ZWNrIGlmIHRoZXJlIGFyZSBxdWFscyB0aGF0IG1heSBiZSB1c2VmdWwgdG8KKwkgKiBwZXJmb3Jt IGZ1cnRoZXIgcGFydGl0aW9uIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZv cm1hdGlvbgorCSAqIG5lZWRlZCBieSB0aGUgZXhlY3V0b3IgdG8gZG8gcGFydGl0aW9uIHBydW5p bmcuCiAJICovCi0JaWYgKGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZykKKwlpZiAoZW5hYmxlX3Bh cnRpdGlvbl9wcnVuaW5nICYmIGFsbHBhcnRyZWxpZHMgIT0gTklMKQogCXsKIAkJTGlzdAkgICAq cHJ1bmVxdWFsOwogCkBAIC0xNTM1LDcgKzE1NTUsOCBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3Bs YW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQlpZiAo cHJ1bmVxdWFsICE9IE5JTCkKIAkJCXBhcnRwcnVuZWluZm8gPSBtYWtlX3BhcnRpdGlvbl9wcnVu ZWluZm8ocm9vdCwgcmVsLAogCQkJCQkJCQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJ CQkJCQkJCQkJCSBwcnVuZXF1YWwpOworCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwsCisJCQkJCQkJ CQkJCQkJIGFsbHBhcnRyZWxpZHMpOwogCX0KIAogCW5vZGUtPm1lcmdlcGxhbnMgPSBzdWJwbGFu czsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCAwZTEyZmRlYjYwLi43YmM2 ZWVjMzY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC03ODM1LDggKzc4 MzUsMTEgQEAgY3JlYXRlX3BhcnRpdGlvbndpc2VfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8g KnJvb3QsCiAJCQkJCQkJCQkgICBhZ2dfY29zdHMsIGdkLCAmY2hpbGRfZXh0cmEsCiAJCQkJCQkJ CQkgICAmY2hpbGRfcGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKIAorCQkvKiBNYXJrIGFzIGNoaWxk IG9mIGdyb3VwZWRfcmVsLiAqLworCQljaGlsZF9ncm91cGVkX3JlbC0+cGFyZW50ID0gZ3JvdXBl ZF9yZWw7CiAJCWlmIChjaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpCiAJCXsKKwkJCWNoaWxk X3BhcnRpYWxseV9ncm91cGVkX3JlbC0+cGFyZW50ID0gZ3JvdXBlZF9yZWw7CiAJCQlwYXJ0aWFs bHlfZ3JvdXBlZF9saXZlX2NoaWxkcmVuID0KIAkJCQlsYXBwZW5kKHBhcnRpYWxseV9ncm91cGVk X2xpdmVfY2hpbGRyZW4sCiAJCQkJCQljaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IGM2Mzc1OGNiMmIuLjM5NmM4M2UzNTcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTE3NTQsNiArMTc1NCw4IEBA IHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlzZXRfZHVtbXlfdGxp c3RfcmVmZXJlbmNlcygoUGxhbiAqKSBhcGxhbiwgcnRvZmZzZXQpOwogCiAJYXBsYW4tPmFwcHJl bGlkcyA9IG9mZnNldF9yZWxpZF9zZXQoYXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWZv cmVhY2gobCwgYXBsYW4tPmFsbHBhcnRyZWxpZHMpCisJCWxmaXJzdChsKSA9IG9mZnNldF9yZWxp ZF9zZXQoKFJlbGlkcykgbGZpcnN0KGwpLCBydG9mZnNldCk7CiAKIAlpZiAoYXBsYW4tPnBhcnRf cHJ1bmVfaW5mbykKIAl7CkBAIC0xODMwLDYgKzE4MzIsOCBAQCBzZXRfbWVyZ2VhcHBlbmRfcmVm ZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNlcygo UGxhbiAqKSBtcGxhbiwgcnRvZmZzZXQpOwogCiAJbXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9y ZWxpZF9zZXQobXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWZvcmVhY2gobCwgbXBsYW4t PmFsbHBhcnRyZWxpZHMpCisJCWxmaXJzdChsKSA9IG9mZnNldF9yZWxpZF9zZXQoKFJlbGlkcykg bGZpcnN0KGwpLCBydG9mZnNldCk7CiAKIAlpZiAobXBsYW4tPnBhcnRfcHJ1bmVfaW5mbykKIAl7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKaW5kZXggZjQ1NmIzYjBhNC4u NWJkOGU4MmI5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5k aW5mby5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwpAQCAt NDEsNiArNDEsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX2luaF90cmFuc2xhdGlvbl9saXN0KFJlbGF0 aW9uIG9sZHJlbGF0aW9uLAogCQkJCQkJCQkJICBBcHBlbmRSZWxJbmZvICphcHBpbmZvKTsKIHN0 YXRpYyBOb2RlICphZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJ CQkJCQkJCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19jb250ZXh0ICpjb250ZXh0KTsKK3N0YXRp YyBMaXN0ICphZGRfcGFydF9yZWxpZHMoTGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpw YXJ0cmVsaWRzKTsKIAogCiAvKgpAQCAtMTAzNSwzICsxMDM2LDEzNiBAQCBkaXN0cmlidXRlX3Jv d19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KQogCQl9CiAJfQogfQorCisvKgorICog YWRkX2FwcGVuZF9zdWJwYXRoX3BhcnRyZWxpZHMKKyAqCQlMb29rIHVwIGEgY2hpbGQgc3VicGF0 aCdzIHJlbCdzIHBhcnRpdGlvbmVkIHBhcmVudCByZWxpZHMgdXAgdG8KKyAqCQlwYXJlbnRyZWwg YW5kIGFkZCB0aGUgYml0bWFwc2V0IGNvbnRhaW5pbmcgdGhvc2UgaW50bworICoJCSdhbGxwYXJ0 cmVsaWRzJworICovCitMaXN0ICoKK2FkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKFBsYW5u ZXJJbmZvICpyb290LCBQYXRoICpzdWJwYXRoLAorCQkJCQkJCSAgUmVsT3B0SW5mbyAqcGFyZW50 cmVsLAorCQkJCQkJCSAgTGlzdCAqYWxscGFydHJlbGlkcykKK3sKKwlSZWxPcHRJbmZvICpwcmVs ID0gc3VicGF0aC0+cGFyZW50OworCVJlbGlkcwkJcGFydHJlbGlkcyA9IE5VTEw7CisKKwkvKiBO b3RoaW5nIHRvIGRvIGlmIHRoZXJlJ3Mgbm8gcGFyZW50IHRvIGJlZ2luIHdpdGguICovCisJaWYg KCFJU19PVEhFUl9SRUwocHJlbCkpCisJCXJldHVybiBhbGxwYXJ0cmVsaWRzOworCisJLyoKKwkg KiBUcmF2ZXJzZSB1cCB0byB0aGUgcGF0aHJlbCdzIHRvcG1vc3QgcGFydGl0aW9uZWQgcGFyZW50 LCBjb2xsZWN0aW5nCisJICogcGFyZW50IHJlbGlkcyBhcyB3ZSBnbzsgYnV0IHN0b3AgaWYgd2Ug cmVhY2ggcGFyZW50cmVsLiAgKE5vcm1hbGx5LCBhCisJICogcGF0aHJlbCdzIHRvcG1vc3QgcGFy dGl0aW9uZWQgcGFyZW50IGlzIGVpdGhlciBwYXJlbnRyZWwgb3IgYSBVTklPTiBBTEwKKwkgKiBh cHBlbmRyZWwgY2hpbGQgb2YgcGFyZW50cmVsLiAgQnV0IHdoZW4gaGFuZGxpbmcgcGFydGl0aW9u d2lzZSBqb2lucyBvZgorCSAqIG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyB0cmVlcywgd2UgY2Fu IHNlZSBhbiBhcHBlbmQgcGF0aCB3aG9zZQorCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlh dGUgcGFydGl0aW9uZWQgdGFibGUuKQorCSAqLworCWRvCisJeworCQlSZWxpZHMJcGFyZW50X3Jl bGlkcyA9IE5VTEw7CisKKwkJLyoKKwkJICogRm9yIHNpbXBsZSBjaGlsZCByZWxzLCB3ZSBjYW4g c2ltcGx5IHNldCB0aGUgcGFyZW50X3JlbGlkcyB0bworCQkgKiBwcmVsLT5wYXJlbnQtPnJlbGlk cy4gIEJ1dCBmb3IgcGFydGl0aW9ud2lzZSBqb2luIGFuZCBhZ2dyZWdhdGUKKwkJICogY2hpbGQg cmVscywgd2hpbGUgd2UgY2FuIHVzZSBwcmVsLT5wYXJlbnQgdG8gbW92ZSB1cCB0aGUgdHJlZSwK KwkJICogcGFyZW50X3JlbGlkcyBtdXN0IGJlIGZvdW5kIHRoZSBoYXJkIHdheSB0aHJvdWdoIEFw cGVuZEluZm9JbmZvcywKKwkJICogYmVjYXVzZSAxKSBhIGpvaW5yZWwncyByZWxpZHMgbWF5IHBv aW50IHRvIFJURV9KT0lOIGVudHJpZXMsCisJCSAqIDIpIHRvcG1vc3QgcGFyZW50IGdyb3VwaW5n IHJlbCdzIHJlbGlkcyBmaWVsZCBpcyBOVUxMLgorCQkgKi8KKwkJaWYgKElTX1NJTVBMRV9SRUwo cHJlbCkpCisJCXsKKwkJCXByZWwgPSBwcmVsLT5wYXJlbnQ7CisJCQkvKiBTdG9wIG9uY2Ugd2Ug cmVhY2ggdGhlIHJvb3QgcGFydGl0aW9uZWQgcmVsLiAqLworCQkJaWYgKCFJU19QQVJUSVRJT05F RF9SRUwocHJlbCkpCisJCQkJYnJlYWs7CisJCQlwYXJlbnRfcmVsaWRzID0gYm1zX2FkZF9tZW1i ZXJzKHBhcmVudF9yZWxpZHMsIHByZWwtPnJlbGlkcyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlB cHBlbmRSZWxJbmZvICoqYXBwaW5mb3M7CisJCQlpbnQJCW5hcHBpbmZvcywKKwkJCQkJaTsKKwor CQkJYXBwaW5mb3MgPSBmaW5kX2FwcGluZm9zX2J5X3JlbGlkcyhyb290LCBwcmVsLT5yZWxpZHMs CisJCQkJCQkJCQkJCSAgICZuYXBwaW5mb3MpOworCQkJZm9yIChpID0gMDsgaSA8IG5hcHBpbmZv czsgaSsrKQorCQkJeworCQkJCUFwcGVuZFJlbEluZm8gKmFwcGluZm8gPSBhcHBpbmZvc1tpXTsK KworCQkJCXBhcmVudF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcihwYXJlbnRfcmVsaWRzLAorCQkJ CQkJCQkJCQkgICBhcHBpbmZvLT5wYXJlbnRfcmVsaWQpOworCQkJfQorCQkJcGZyZWUoYXBwaW5m b3MpOworCQkJcHJlbCA9IHByZWwtPnBhcmVudDsKKwkJfQorCQkvKiBhY2NlcHQgdGhpcyBsZXZl bCBhcyBhbiBpbnRlcmVzdGluZyBwYXJlbnQgKi8KKwkJcGFydHJlbGlkcyA9IGJtc19hZGRfbWVt YmVycyhwYXJ0cmVsaWRzLCBwYXJlbnRfcmVsaWRzKTsKKwkJaWYgKHByZWwgPT0gcGFyZW50cmVs KQorCQkJYnJlYWs7CQkvKiBkb24ndCB0cmF2ZXJzZSBhYm92ZSBwYXJlbnRyZWwgKi8KKwl9IHdo aWxlIChJU19PVEhFUl9SRUwocHJlbCkpOworCisJaWYgKHBhcnRyZWxpZHMgPT0gTlVMTCkKKwkJ cmV0dXJuIGFsbHBhcnRyZWxpZHM7CisKKwlyZXR1cm4gYWRkX3BhcnRfcmVsaWRzKGFsbHBhcnRy ZWxpZHMsIHBhcnRyZWxpZHMpOworfQorCisvKgorICogYWRkX3BhcnRfcmVsaWRzCisgKgkJQWRk IG5ldyBpbmZvIHRvIGEgbGlzdCBvZiBCaXRtYXBzZXRzIG9mIHBhcnRpdGlvbmVkIHJlbGlkcy4K KyAqCisgKiBXaXRoaW4gJ2FsbHBhcnRyZWxpZHMnLCB0aGVyZSBpcyBvbmUgQml0bWFwc2V0IGZv ciBlYWNoIHRvcG1vc3QgcGFyZW50CisgKiBwYXJ0aXRpb25lZCByZWwuICBFYWNoIEJpdG1hcHNl dCBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiB0aGUgdG9wbW9zdAorICogcGFyZW50IGFzIHdl bGwgYXMgaXRzIHJlbGV2YW50IG5vbi1sZWFmIGNoaWxkIHBhcnRpdGlvbnMuICBTaW5jZSAoYnkK KyAqIGNvbnN0cnVjdGlvbiBvZiB0aGUgcmFuZ2V0YWJsZSBsaXN0KSBwYXJlbnQgcGFydGl0aW9u cyBtdXN0IGhhdmUgbG93ZXIKKyAqIFJUIGluZGV4ZXMgdGhhbiB0aGVpciBjaGlsZHJlbiwgd2Ug Y2FuIGRpc3Rpbmd1aXNoIHRoZSB0b3Btb3N0IHBhcmVudAorICogYXMgYmVpbmcgdGhlIGxvd2Vz dCBzZXQgYml0IGluIHRoZSBCaXRtYXBzZXQuCisgKgorICogJ3BhcnRyZWxpZHMnIGNvbnRhaW5z IHRoZSBSVCBpbmRleGVzIG9mIGEgcGFyZW50IHBhcnRpdGlvbmVkIHJlbCwgYW5kCisgKiBwb3Nz aWJseSBzb21lIG5vbi1sZWFmIGNoaWxkcmVuLCB0aGF0IGFyZSBuZXdseSBpZGVudGlmaWVkIGFz IHBhcmVudHMgb2YKKyAqIHNvbWUgc3VicGF0aCByZWwgcGFzc2VkIHRvIG1ha2VfcGFydGl0aW9u X3BydW5laW5mbygpLiAgVGhlc2UgYXJlIGFkZGVkCisgKiB0byBhbiBhcHByb3ByaWF0ZSBtZW1i ZXIgb2YgJ2FsbHBhcnRyZWxpZHMnLgorICoKKyAqIE5vdGUgdGhhdCB0aGUgbGlzdCBjb250YWlu cyBvbmx5IFJUIGluZGV4ZXMgb2YgcGFydGl0aW9uZWQgdGFibGVzIHRoYXQKKyAqIGFyZSBwYXJl bnRzIG9mIHNvbWUgc2Nhbi1sZXZlbCByZWxhdGlvbiBhcHBlYXJpbmcgaW4gdGhlICdzdWJwYXRo cycgdGhhdAorICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKCkgaXMgZGVhbGluZyB3aXRoLiAg QWxzbywgInRvcG1vc3QiIHBhcmVudHMgYXJlCisgKiBub3QgYWxsb3dlZCB0byBiZSBoaWdoZXIg dGhhbiB0aGUgJ3BhcmVudHJlbCcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhcHBlbmQKKyAqIHBhdGgu ICBJbiB0aGlzIHdheSwgd2UgYXZvaWQgZXhwZW5kaW5nIGN5Y2xlcyBvbiBwYXJ0aXRpb25lZCBy ZWxzIHRoYXQKKyAqIGNhbid0IGNvbnRyaWJ1dGUgdXNlZnVsIHBydW5pbmcgaW5mb3JtYXRpb24g Zm9yIHRoZSBwcm9ibGVtIGF0IGhhbmQuCisgKiAoSXQgaXMgcG9zc2libGUgZm9yICdwYXJlbnRy ZWwnIHRvIGJlIGEgY2hpbGQgcGFydGl0aW9uZWQgdGFibGUsIGFuZCBpdAorICogaXMgYWxzbyBw b3NzaWJsZSBmb3Igc2Nhbi1sZXZlbCByZWxhdGlvbnMgdG8gYmUgY2hpbGQgcGFydGl0aW9uZWQg dGFibGVzCisgKiByYXRoZXIgdGhhbiBsZWFmIHBhcnRpdGlvbnMuICBIZW5jZSB3ZSBtdXN0IGNv bnN0cnVjdCB0aGlzIHJlbGF0aW9uIHNldAorICogd2l0aCByZWZlcmVuY2UgdG8gdGhlIHBhcnRp Y3VsYXIgYXBwZW5kIHBhdGggd2UncmUgZGVhbGluZyB3aXRoLCByYXRoZXIKKyAqIHRoYW4gbG9v a2luZyBhdCB0aGUgZnVsbCBwYXJ0aXRpb25pbmcgc3RydWN0dXJlIHJlcHJlc2VudGVkIGluIHRo ZQorICogUmVsT3B0SW5mb3MuKQorICovCitzdGF0aWMgTGlzdCAqCithZGRfcGFydF9yZWxpZHMo TGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpwYXJ0cmVsaWRzKQoreworCUluZGV4CQl0 YXJnZXRwYXJ0OworCUxpc3RDZWxsICAgKmxjOworCisJLyogV2UgY2FuIGVhc2lseSBnZXQgdGhl IGxvd2VzdCBzZXQgYml0IHRoaXMgd2F5OiAqLworCXRhcmdldHBhcnQgPSBibXNfbmV4dF9tZW1i ZXIocGFydHJlbGlkcywgLTEpOworCUFzc2VydCh0YXJnZXRwYXJ0ID4gMCk7CisKKwkvKiBMb29r IGZvciBhIG1hdGNoaW5nIHRvcG1vc3QgcGFyZW50ICovCisJZm9yZWFjaChsYywgYWxscGFydHJl bGlkcykKKwl7CisJCUJpdG1hcHNldCAgKmN1cnJwYXJ0cmVsaWRzID0gKEJpdG1hcHNldCAqKSBs Zmlyc3QobGMpOworCQlJbmRleAkJY3VycnRhcmdldCA9IGJtc19uZXh0X21lbWJlcihjdXJycGFy dHJlbGlkcywgLTEpOworCisJCWlmICh0YXJnZXRwYXJ0ID09IGN1cnJ0YXJnZXQpCisJCXsKKwkJ CS8qIEZvdW5kIGEgbWF0Y2gsIHNvIGFkZCBhbnkgbmV3IFJUIGluZGV4ZXMgdG8gdGhpcyBoaWVy YXJjaHkgKi8KKwkJCWN1cnJwYXJ0cmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGN1cnJwYXJ0cmVs aWRzLCBwYXJ0cmVsaWRzKTsKKwkJCWxmaXJzdChsYykgPSBjdXJycGFydHJlbGlkczsKKwkJCXJl dHVybiBhbGxwYXJ0cmVsaWRzOworCQl9CisJfQorCS8qIE5vIG1hdGNoLCBzbyBhZGQgdGhlIG5l dyBwYXJ0aXRpb24gaGllcmFyY2h5IHRvIHRoZSBsaXN0ICovCisJcmV0dXJuIGxhcHBlbmQoYWxs cGFydHJlbGlkcywgcGFydHJlbGlkcyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5l LmMKaW5kZXggNzE3OWIyMmEwNS4uMjEzNTEyYTVmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0cHJ1bmUuYwpAQCAtMTM4LDcgKzEzOCw2IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lU3RlcFJl c3VsdAogfSBQcnVuZVN0ZXBSZXN1bHQ7CiAKIAotc3RhdGljIExpc3QgKmFkZF9wYXJ0X3JlbGlk cyhMaXN0ICphbGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpOwogc3RhdGljIExp c3QgKm1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LAogCQkJ CQkJCQkJCSAgIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJCQkgICBMaXN0ICpwcnVu ZXF1YWwsCkBAIC0yMTgsMzMgKzIxNywzMiBAQCBzdGF0aWMgdm9pZCBwYXJ0a2V5X2RhdHVtX2Zy b21fZXhwcihQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAgKiBvZiBzY2FuIHBhdGhz IGZvciBpdHMgY2hpbGQgcmVscy4KICAqICdwcnVuZXF1YWwnIGlzIGEgbGlzdCBvZiBwb3RlbnRp YWwgcHJ1bmluZyBxdWFscyAoaS5lLiwgcmVzdHJpY3Rpb24KICAqIGNsYXVzZXMgdGhhdCBhcmUg YXBwbGljYWJsZSB0byB0aGUgYXBwZW5kcmVsKS4KKyAqICdhbGxwYXJ0cmVsaWRzJyBjb250YWlu cyBCaXRtYXBzZXRzIG9mIFJUIGluZGV4ZXMgb2YgcGFydGl0aW9uZWQgcGFyZW50cworICogd2hv c2UgcGFydGl0aW9ucycgUGF0aHMgYXJlIGluICdzdWJwYXRocyc7IHRoZXJlJ3Mgb25lIEJpdG1h cHNldCBmb3IgZXZlcnkKKyAqIHBhcnRpdGlvbiB0cmVlIGludm9sdmVkLgogICovCiBQYXJ0aXRp b25QcnVuZUluZm8gKgogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQkJCQkgTGlzdCAqc3VicGF0aHMsCi0JCQkJCQkg TGlzdCAqcHJ1bmVxdWFsKQorCQkJCQkJIExpc3QgKnBydW5lcXVhbCwKKwkJCQkJCSBMaXN0ICph bGxwYXJ0cmVsaWRzKQogewogCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvOwogCUJpdG1h cHNldCAgKmFsbG1hdGNoZWRzdWJwbGFucyA9IE5VTEw7Ci0JTGlzdAkgICAqYWxscGFydHJlbGlk czsKIAlMaXN0CSAgICpwcnVuZXJlbGluZm9zOwogCWludAkJICAgKnJlbGlkX3N1YnBsYW5fbWFw OwogCUxpc3RDZWxsICAgKmxjOwogCWludAkJCWk7CiAKKwlBc3NlcnQobGlzdF9sZW5ndGgoYWxs cGFydHJlbGlkcykgPiAwKTsKKwogCS8qCi0JICogU2NhbiB0aGUgc3VicGF0aHMgdG8gc2VlIHdo aWNoIG9uZXMgYXJlIHNjYW5zIG9mIHBhcnRpdGlvbiBjaGlsZAotCSAqIHJlbGF0aW9ucywgYW5k IGlkZW50aWZ5IHRoZWlyIHBhcmVudCBwYXJ0aXRpb25lZCByZWxzLiAgKE5vdGU6IHdlIG11c3QK LQkgKiByZXN0cmljdCB0aGUgcGFyZW50IHBhcnRpdGlvbmVkIHJlbHMgdG8gYmUgcGFyZW50cmVs IG9yIGNoaWxkcmVuIG9mCi0JICogcGFyZW50cmVsLCBvdGhlcndpc2Ugd2UgY291bGRuJ3QgdHJh bnNsYXRlIHBydW5lcXVhbCB0byBtYXRjaC4pCi0JICoKLQkgKiBBbHNvIGNvbnN0cnVjdCBhIHRl bXBvcmFyeSBhcnJheSB0byBtYXAgZnJvbSBwYXJ0aXRpb24tY2hpbGQtcmVsYXRpb24KLQkgKiBy ZWxpZCB0byB0aGUgaW5kZXggaW4gJ3N1YnBhdGhzJyBvZiB0aGUgc2NhbiBwbGFuIGZvciB0aGF0 IHBhcnRpdGlvbi4KKwkgKiBDb25zdHJ1Y3QgYSB0ZW1wb3JhcnkgYXJyYXkgdG8gbWFwIGZyb20g cGFydGl0aW9uLWNoaWxkLXJlbGF0aW9uIHJlbGlkCisJICogdG8gdGhlIGluZGV4IGluICdzdWJw YXRocycgb2YgdGhlIHNjYW4gcGxhbiBmb3IgdGhhdCBwYXJ0aXRpb24uCiAJICogKFVzZSBvZiAi c3VicGxhbiIgcmF0aGVyIHRoYW4gInN1YnBhdGgiIGlzIGEgYml0IG9mIGEgbWlzbm9tZXIsIGJ1 dAogCSAqIHdlJ2xsIGxldCBpdCBzdGFuZC4pICBGb3IgY29udmVuaWVuY2UsIHdlIHVzZSAxLWJh c2VkIGluZGV4ZXMgaGVyZSwgc28KIAkgKiB0aGF0IHplcm8gY2FuIHJlcHJlc2VudCBhbiB1bi1m aWxsZWQgYXJyYXkgZW50cnkuCiAJICovCi0JYWxscGFydHJlbGlkcyA9IE5JTDsKIAlyZWxpZF9z dWJwbGFuX21hcCA9IHBhbGxvYzAoc2l6ZW9mKGludCkgKiByb290LT5zaW1wbGVfcmVsX2FycmF5 X3NpemUpOwogCiAJaSA9IDE7CkBAIC0yNTMsNTAgKzI1MSw5IEBAIG1ha2VfcGFydGl0aW9uX3By dW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlQYXRo CSAgICpwYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKIAkJUmVsT3B0SW5mbyAqcGF0aHJlbCA9 IHBhdGgtPnBhcmVudDsKIAotCQkvKiBXZSBkb24ndCBjb25zaWRlciBwYXJ0aXRpb25lZCBqb2lu cyBoZXJlICovCi0JCWlmIChwYXRocmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1C RVJfUkVMKQotCQl7Ci0JCQlSZWxPcHRJbmZvICpwcmVsID0gcGF0aHJlbDsKLQkJCUJpdG1hcHNl dCAgKnBhcnRyZWxpZHMgPSBOVUxMOwotCi0JCQkvKgotCQkJICogVHJhdmVyc2UgdXAgdG8gdGhl IHBhdGhyZWwncyB0b3Btb3N0IHBhcnRpdGlvbmVkIHBhcmVudCwKLQkJCSAqIGNvbGxlY3Rpbmcg cGFyZW50IHJlbGlkcyBhcyB3ZSBnbzsgYnV0IHN0b3AgaWYgd2UgcmVhY2gKLQkJCSAqIHBhcmVu dHJlbC4gIChOb3JtYWxseSwgYSBwYXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQK LQkJCSAqIGlzIGVpdGhlciBwYXJlbnRyZWwgb3IgYSBVTklPTiBBTEwgYXBwZW5kcmVsIGNoaWxk IG9mCi0JCQkgKiBwYXJlbnRyZWwuICBCdXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpv aW5zIG9mCi0JCQkgKiBtdWx0aS1sZXZlbCBwYXJ0aXRpb25pbmcgdHJlZXMsIHdlIGNhbiBzZWUg YW4gYXBwZW5kIHBhdGggd2hvc2UKLQkJCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlhdGUg cGFydGl0aW9uZWQgdGFibGUuKQotCQkJICovCi0JCQlkbwotCQkJewotCQkJCUFwcGVuZFJlbElu Zm8gKmFwcGluZm87Ci0KLQkJCQlBc3NlcnQocHJlbC0+cmVsaWQgPCByb290LT5zaW1wbGVfcmVs X2FycmF5X3NpemUpOwotCQkJCWFwcGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3ByZWwt PnJlbGlkXTsKLQkJCQlwcmVsID0gZmluZF9iYXNlX3JlbChyb290LCBhcHBpbmZvLT5wYXJlbnRf cmVsaWQpOwotCQkJCWlmICghSVNfUEFSVElUSU9ORURfUkVMKHByZWwpKQotCQkJCQlicmVhazsJ CS8qIHJlYWNoZWQgYSBub24tcGFydGl0aW9uZWQgcGFyZW50ICovCi0JCQkJLyogYWNjZXB0IHRo aXMgbGV2ZWwgYXMgYW4gaW50ZXJlc3RpbmcgcGFyZW50ICovCi0JCQkJcGFydHJlbGlkcyA9IGJt c19hZGRfbWVtYmVyKHBhcnRyZWxpZHMsIHByZWwtPnJlbGlkKTsKLQkJCQlpZiAocHJlbCA9PSBw YXJlbnRyZWwpCi0JCQkJCWJyZWFrOwkJLyogZG9uJ3QgdHJhdmVyc2UgYWJvdmUgcGFyZW50cmVs ICovCi0JCQl9IHdoaWxlIChwcmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1CRVJf UkVMKTsKLQotCQkJaWYgKHBhcnRyZWxpZHMpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBGb3VuZCBz b21lIHJlbGV2YW50IHBhcmVudCBwYXJ0aXRpb25zLCB3aGljaCBtYXkgb3IgbWF5IG5vdAotCQkJ CSAqIG92ZXJsYXAgd2l0aCBwYXJ0aXRpb24gdHJlZXMgd2UgYWxyZWFkeSBmb3VuZC4gIEFkZCBu ZXcKLQkJCQkgKiBpbmZvcm1hdGlvbiB0byB0aGUgYWxscGFydHJlbGlkcyBsaXN0LgotCQkJCSAq LwotCQkJCWFsbHBhcnRyZWxpZHMgPSBhZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlkcywgcGFy dHJlbGlkcyk7Ci0JCQkJLyogQWxzbyByZWNvcmQgdGhlIHN1YnBsYW4gaW4gcmVsaWRfc3VicGxh bl9tYXBbXSAqLwotCQkJCS8qIE5vIGR1cGxpY2F0ZXMgcGxlYXNlICovCi0JCQkJQXNzZXJ0KHJl bGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9PSAwKTsKLQkJCQlyZWxpZF9zdWJwbGFu X21hcFtwYXRocmVsLT5yZWxpZF0gPSBpOwotCQkJfQotCQl9CisJCS8qIE5vIGR1cGxpY2F0ZXMg cGxlYXNlICovCisJCUFzc2VydChyZWxpZF9zdWJwbGFuX21hcFtwYXRocmVsLT5yZWxpZF0gPT0g MCk7CisJCXJlbGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9IGk7CiAJCWkrKzsKIAl9 CiAKQEAgLTM2Miw2MyArMzE5LDYgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJcmV0dXJuIHBydW5laW5mbzsKIH0K IAotLyoKLSAqIGFkZF9wYXJ0X3JlbGlkcwotICoJCUFkZCBuZXcgaW5mbyB0byBhIGxpc3Qgb2Yg Qml0bWFwc2V0cyBvZiBwYXJ0aXRpb25lZCByZWxpZHMuCi0gKgotICogV2l0aGluICdhbGxwYXJ0 cmVsaWRzJywgdGhlcmUgaXMgb25lIEJpdG1hcHNldCBmb3IgZWFjaCB0b3Btb3N0IHBhcmVudAot ICogcGFydGl0aW9uZWQgcmVsLiAgRWFjaCBCaXRtYXBzZXQgY29udGFpbnMgdGhlIFJUIGluZGV4 ZXMgb2YgdGhlIHRvcG1vc3QKLSAqIHBhcmVudCBhcyB3ZWxsIGFzIGl0cyByZWxldmFudCBub24t bGVhZiBjaGlsZCBwYXJ0aXRpb25zLiAgU2luY2UgKGJ5Ci0gKiBjb25zdHJ1Y3Rpb24gb2YgdGhl IHJhbmdldGFibGUgbGlzdCkgcGFyZW50IHBhcnRpdGlvbnMgbXVzdCBoYXZlIGxvd2VyCi0gKiBS VCBpbmRleGVzIHRoYW4gdGhlaXIgY2hpbGRyZW4sIHdlIGNhbiBkaXN0aW5ndWlzaCB0aGUgdG9w bW9zdCBwYXJlbnQKLSAqIGFzIGJlaW5nIHRoZSBsb3dlc3Qgc2V0IGJpdCBpbiB0aGUgQml0bWFw c2V0LgotICoKLSAqICdwYXJ0cmVsaWRzJyBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiBhIHBh cmVudCBwYXJ0aXRpb25lZCByZWwsIGFuZAotICogcG9zc2libHkgc29tZSBub24tbGVhZiBjaGls ZHJlbiwgdGhhdCBhcmUgbmV3bHkgaWRlbnRpZmllZCBhcyBwYXJlbnRzIG9mCi0gKiBzb21lIHN1 YnBhdGggcmVsIHBhc3NlZCB0byBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKS4gIFRoZXNlIGFy ZSBhZGRlZAotICogdG8gYW4gYXBwcm9wcmlhdGUgbWVtYmVyIG9mICdhbGxwYXJ0cmVsaWRzJy4K LSAqCi0gKiBOb3RlIHRoYXQgdGhlIGxpc3QgY29udGFpbnMgb25seSBSVCBpbmRleGVzIG9mIHBh cnRpdGlvbmVkIHRhYmxlcyB0aGF0Ci0gKiBhcmUgcGFyZW50cyBvZiBzb21lIHNjYW4tbGV2ZWwg cmVsYXRpb24gYXBwZWFyaW5nIGluIHRoZSAnc3VicGF0aHMnIHRoYXQKLSAqIG1ha2VfcGFydGl0 aW9uX3BydW5laW5mbygpIGlzIGRlYWxpbmcgd2l0aC4gIEFsc28sICJ0b3Btb3N0IiBwYXJlbnRz IGFyZQotICogbm90IGFsbG93ZWQgdG8gYmUgaGlnaGVyIHRoYW4gdGhlICdwYXJlbnRyZWwnIGFz c29jaWF0ZWQgd2l0aCB0aGUgYXBwZW5kCi0gKiBwYXRoLiAgSW4gdGhpcyB3YXksIHdlIGF2b2lk IGV4cGVuZGluZyBjeWNsZXMgb24gcGFydGl0aW9uZWQgcmVscyB0aGF0Ci0gKiBjYW4ndCBjb250 cmlidXRlIHVzZWZ1bCBwcnVuaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgcHJvYmxlbSBhdCBoYW5k LgotICogKEl0IGlzIHBvc3NpYmxlIGZvciAncGFyZW50cmVsJyB0byBiZSBhIGNoaWxkIHBhcnRp dGlvbmVkIHRhYmxlLCBhbmQgaXQKLSAqIGlzIGFsc28gcG9zc2libGUgZm9yIHNjYW4tbGV2ZWwg cmVsYXRpb25zIHRvIGJlIGNoaWxkIHBhcnRpdGlvbmVkIHRhYmxlcwotICogcmF0aGVyIHRoYW4g bGVhZiBwYXJ0aXRpb25zLiAgSGVuY2Ugd2UgbXVzdCBjb25zdHJ1Y3QgdGhpcyByZWxhdGlvbiBz ZXQKLSAqIHdpdGggcmVmZXJlbmNlIHRvIHRoZSBwYXJ0aWN1bGFyIGFwcGVuZCBwYXRoIHdlJ3Jl IGRlYWxpbmcgd2l0aCwgcmF0aGVyCi0gKiB0aGFuIGxvb2tpbmcgYXQgdGhlIGZ1bGwgcGFydGl0 aW9uaW5nIHN0cnVjdHVyZSByZXByZXNlbnRlZCBpbiB0aGUKLSAqIFJlbE9wdEluZm9zLikKLSAq Lwotc3RhdGljIExpc3QgKgotYWRkX3BhcnRfcmVsaWRzKExpc3QgKmFsbHBhcnRyZWxpZHMsIEJp dG1hcHNldCAqcGFydHJlbGlkcykKLXsKLQlJbmRleAkJdGFyZ2V0cGFydDsKLQlMaXN0Q2VsbCAg ICpsYzsKLQotCS8qIFdlIGNhbiBlYXNpbHkgZ2V0IHRoZSBsb3dlc3Qgc2V0IGJpdCB0aGlzIHdh eTogKi8KLQl0YXJnZXRwYXJ0ID0gYm1zX25leHRfbWVtYmVyKHBhcnRyZWxpZHMsIC0xKTsKLQlB c3NlcnQodGFyZ2V0cGFydCA+IDApOwotCi0JLyogTG9vayBmb3IgYSBtYXRjaGluZyB0b3Btb3N0 IHBhcmVudCAqLwotCWZvcmVhY2gobGMsIGFsbHBhcnRyZWxpZHMpCi0JewotCQlCaXRtYXBzZXQg ICpjdXJycGFydHJlbGlkcyA9IChCaXRtYXBzZXQgKikgbGZpcnN0KGxjKTsKLQkJSW5kZXgJCWN1 cnJ0YXJnZXQgPSBibXNfbmV4dF9tZW1iZXIoY3VycnBhcnRyZWxpZHMsIC0xKTsKLQotCQlpZiAo dGFyZ2V0cGFydCA9PSBjdXJydGFyZ2V0KQotCQl7Ci0JCQkvKiBGb3VuZCBhIG1hdGNoLCBzbyBh ZGQgYW55IG5ldyBSVCBpbmRleGVzIHRvIHRoaXMgaGllcmFyY2h5ICovCi0JCQljdXJycGFydHJl bGlkcyA9IGJtc19hZGRfbWVtYmVycyhjdXJycGFydHJlbGlkcywgcGFydHJlbGlkcyk7Ci0JCQls Zmlyc3QobGMpID0gY3VycnBhcnRyZWxpZHM7Ci0JCQlyZXR1cm4gYWxscGFydHJlbGlkczsKLQkJ fQotCX0KLQkvKiBObyBtYXRjaCwgc28gYWRkIHRoZSBuZXcgcGFydGl0aW9uIGhpZXJhcmNoeSB0 byB0aGUgbGlzdCAqLwotCXJldHVybiBsYXBwZW5kKGFsbHBhcnRyZWxpZHMsIHBhcnRyZWxpZHMp OwotfQotCiAvKgogICogbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8KICAqCQlCdWlsZCBh IExpc3Qgb2YgUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zLCBvbmUgZm9yIGVhY2ggaW50ZXJlc3Rp bmcKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMWI3ODdmZTAzMS4uN2E1ZjNiYTYyNSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGxhbm5vZGVzLmgKQEAgLTI2Nyw2ICsyNjcsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5k CiAJTGlzdAkgICAqYXBwZW5kcGxhbnM7CiAJaW50CQkJbmFzeW5jcGxhbnM7CS8qICMgb2YgYXN5 bmNocm9ub3VzIHBsYW5zICovCiAKKwkvKgorCSAqIFJUSXMgb2YgYWxsIHBhcnRpdGlvbmVkIHRh YmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQorCSAqIGFwcGVuZHBsYW5zLiBUaGUg bGlzdCBjb250YWlucyBhIGJpdG1hcHNldCBmb3IgZXZlcnkgcGFydGl0aW9uIHRyZWUKKwkgKiBj b3ZlcmVkIGJ5IHRoaXMgQXBwZW5kLgorCSAqLworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHM7CisK IAkvKgogCSAqIEFsbCAnYXBwZW5kcGxhbnMnIHByZWNlZGluZyB0aGlzIGluZGV4IGFyZSBub24t cGFydGlhbCBwbGFucy4gQWxsCiAJICogJ2FwcGVuZHBsYW5zJyBmcm9tIHRoaXMgaW5kZXggb253 YXJkcyBhcmUgcGFydGlhbCBwbGFucy4KQEAgLTI5MSw2ICsyOTgsMTMgQEAgdHlwZWRlZiBzdHJ1 Y3QgTWVyZ2VBcHBlbmQKIAogCUxpc3QJICAgKm1lcmdlcGxhbnM7CiAKKwkvKgorCSAqIFJUSXMg b2YgYWxsIHBhcnRpdGlvbmVkIHRhYmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQor CSAqIG1lcmdlcGxhbnMuIFRoZSBsaXN0IGNvbnRhaW5zIGEgYml0bWFwc2V0IGZvciBldmVyeSBw YXJ0aXRpb24gdHJlZQorCSAqIGNvdmVyZWQgYnkgdGhpcyBNZXJnZUFwcGVuZC4KKwkgKi8KKwlM aXN0CSAgICphbGxwYXJ0cmVsaWRzOworCiAJLyogdGhlc2UgZmllbGRzIGFyZSBqdXN0IGxpa2Ug dGhlIHNvcnQta2V5IGluZm8gaW4gc3RydWN0IFNvcnQ6ICovCiAKIAkvKiBudW1iZXIgb2Ygc29y dC1rZXkgY29sdW1ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVu ZGluZm8uaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZvLmgKaW5kZXggYTA1Zjkx Zjc3ZC4uMTYyMWE3MzE5YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVu ZGluZm8uaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oCkBAIC00Niw1 ICs0Niw4IEBAIGV4dGVybiB2b2lkIGFkZF9yb3dfaWRlbnRpdHlfY29sdW1ucyhQbGFubmVySW5m byAqcm9vdCwgSW5kZXggcnRpbmRleCwKIAkJCQkJCQkJCSBSYW5nZVRibEVudHJ5ICp0YXJnZXRf cnRlLAogCQkJCQkJCQkJIFJlbGF0aW9uIHRhcmdldF9yZWxhdGlvbik7CiBleHRlcm4gdm9pZCBk aXN0cmlidXRlX3Jvd19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KTsKK2V4dGVybiBM aXN0ICphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhQbGFubmVySW5mbyAqcm9vdCwgUGF0 aCAqc3VicGF0aCwKKwkJCQkJCQkgIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKKwkJCQkJCQkgIExp c3QgKmFsbHBhcnRyZWxpZHMpOwogCiAjZW5kaWYJCQkJCQkJLyogQVBQRU5ESU5GT19IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggYi9zcmMvaW5j bHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKaW5kZXggODYzNmUwNGUzNy4uY2FhNzc0YTEx MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCisrKyBi L3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaApAQCAtNzMsNyArNzMsOCBAQCB0 eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUNvbnRleHQKIGV4dGVybiBQYXJ0aXRpb25QcnVu ZUluZm8gKm1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3Qs CiAJCQkJCQkJCQkJCQkJc3RydWN0IFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJCQkJ CQlMaXN0ICpzdWJwYXRocywKLQkJCQkJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworCQkJCQkJ CQkJCQkJCUxpc3QgKnBydW5lcXVhbCwKKwkJCQkJCQkJCQkJCQlMaXN0ICphbGxwYXJ0cmVsaWRz KTsKIGV4dGVybiBCaXRtYXBzZXQgKnBydW5lX2FwcGVuZF9yZWxfcGFydGl0aW9ucyhzdHJ1Y3Qg UmVsT3B0SW5mbyAqcmVsKTsKIGV4dGVybiBCaXRtYXBzZXQgKmdldF9tYXRjaGluZ19wYXJ0aXRp b25zKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIExpc3QgKnBy dW5pbmdfc3RlcHMpOwotLSAKMi4zNS4zCgo= --0000000000000dedc806005de532 Content-Type: application/x-patch; name="v41-0004-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v41-0004-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lk1553u40 RnJvbSBiOGZkMzg3OTg3ZDI4YjEzYTIyMjk1MTVkMGZhNDUxZTMzMmI5ZDhlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0OSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQx IDQvNF0gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVT dGF0ZQoKVGhpcyBtYWtlcyBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zIGZhc3RlciB3aGVu IHRoZXJlIGFyZSBtYW55CnJlbGF0aW9ucyBpbiB0aGUgcmFuZ2UgdGFibGUgYnV0IG9ubHkgYSBm ZXcgYXJlIG9wZW5lZCBkdXJpbmcKZXhlY3V0aW9uLCBzdWNoIGFzIHdoZW4gcnVuLXRpbWUgcHJ1 bmluZyBraWNrcyBpbiBvbiBhbiBBcHBlbmQKY29udGFpbmluZyB0aG91c2FuZHMgb2YgcGFydGl0 aW9uIHN1YnBsYW5zLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdr TVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb20K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICB8IDkgKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDIgKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgIHwgMiArKwogMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYTJmNmFjOWQxYy4uMDUz ZDhhMmRjMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xNjUwLDEyICsxNjUwLDEzIEBA IEV4ZWNDbG9zZVJlc3VsdFJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSkKIHZvaWQKIEV4ZWNDbG9z ZVJhbmdlVGFibGVSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUpCiB7Ci0JaW50CQkJaTsKKwlMaXN0 Q2VsbCAqbGM7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXpl OyBpKyspCisJZm9yZWFjaChsYywgZXN0YXRlLT5lc19vcGVuZWRfcmVsYXRpb25zKQogCXsKLQkJ aWYgKGVzdGF0ZS0+ZXNfcmVsYXRpb25zW2ldKQotCQkJdGFibGVfY2xvc2UoZXN0YXRlLT5lc19y ZWxhdGlvbnNbaV0sIE5vTG9jayk7CisJCVJlbGF0aW9uIHJlbCA9IGxmaXJzdChsYyk7CisKKwkJ dGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwppbmRleCBhZjkyZDJiM2MzLi5mMDMyMGNmYTM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwpAQCAtODM3LDYgKzgzNyw4IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICpl c3RhdGUsIEluZGV4IHJ0aSkKIAkJfQogCiAJCWVzdGF0ZS0+ZXNfcmVsYXRpb25zW3J0aSAtIDFd ID0gcmVsOworCQllc3RhdGUtPmVzX29wZW5lZF9yZWxhdGlvbnMgPSBsYXBwZW5kKGVzdGF0ZS0+ ZXNfb3BlbmVkX3JlbGF0aW9ucywKKwkJCQkJCQkJCQkJICByZWwpOwogCX0KIAogCXJldHVybiBy ZWw7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGYwYzUxNzdiMDYuLmJlMDZjNDA3NjYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCkBAIC02MTksNiArNjE5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRl CiAJSW5kZXgJCWVzX3JhbmdlX3RhYmxlX3NpemU7CS8qIHNpemUgb2YgdGhlIHJhbmdlIHRhYmxl IGFycmF5cyAqLwogCVJlbGF0aW9uICAgKmVzX3JlbGF0aW9uczsJLyogQXJyYXkgb2YgcGVyLXJh bmdlLXRhYmxlLWVudHJ5IFJlbGF0aW9uCiAJCQkJCQkJCSAqIHBvaW50ZXJzLCBvciBOVUxMIGlm IG5vdCB5ZXQgb3BlbmVkICovCisJTGlzdAkgICAqZXNfb3BlbmVkX3JlbGF0aW9uczsgLyogTGlz dCBvZiBub24tTlVMTCBlbnRyaWVzIGluCisJCQkJCQkJCQkgICogZXNfcmVsYXRpb25zIGluIG5v IHNwZWNpZmljIG9yZGVyICovCiAJc3RydWN0IEV4ZWNSb3dNYXJrICoqZXNfcm93bWFya3M7CS8q IEFycmF5IG9mIHBlci1yYW5nZS10YWJsZS1lbnRyeQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJr cywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0 IG9mIFJURVBlcm1pc3Npb25JbmZvICovCi0tIAoyLjM1LjMKCg== --0000000000000dedc806005de532 Content-Type: application/x-patch; name="v41-0002-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Disposition: attachment; filename="v41-0002-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lk1553u92 RnJvbSAwMmY3ZmEwNTQ2NDlmZGE1OTNjZDE3ZmMyYzBjYjQwNTQzY2Y5YmFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0MyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQx IDIvNF0gU2V0IGluRnJvbUNsIHRvIGZhbHNlIGluIGNoaWxkIHRhYmxlIFJURXMKClRoaXMgaXMg dG8gYWxsb3cgdGhlIGV4ZWN1dG9yIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggdGFibGVzIHRoYXQg YXJlCmRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUgcXVlcnkgZnJvbSB0aG9zZSB0aGF0IGdldCBh ZGRlZCB0byB0aGUKcXVlcnkgZHVyaW5nIHBsYW5uaW5nLiAgQSBzdWJzZXF1ZW50IGNvbW1pdCB3 aWxsIHRlYWNoIHRoZSBleGVjdXRvcgp0byBsb2NrIG9ubHkgdGhlIHRhYmxlcyBvZiB0aGUgbGF0 dGVyIGtpbmQgd2hlbiBleGVjdXRpbmcgYSBjYWNoZWQKcGxhbi4KCkRpc2N1c3Npb246IGh0dHBz Oi8vcG9zdGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3b29pdEVF cGJLQjBPX21nQG1haWwuZ21haWwuY29tawotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGls L2luaGVyaXQuYyB8IDYgKysrKysrCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAgICAg ICAgfCA3ICsrKy0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICB8IDkg KysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jCmluZGV4IDk0ZGU4NTVhMjIuLjli YWMwN2JmNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2luaGVyaXQu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9pbmhlcml0LmMKQEAgLTQ5Miw2ICs0 OTIsMTIgQEAgZXhwYW5kX3NpbmdsZV9pbmhlcml0YW5jZV9jaGlsZChQbGFubmVySW5mbyAqcm9v dCwgUmFuZ2VUYmxFbnRyeSAqcGFyZW50cnRlLAogCX0KIAllbHNlCiAJCWNoaWxkcnRlLT5pbmgg PSBmYWxzZTsKKwkvKgorCSAqIE1hcmsgY2hpbGQgdGFibGVzIGFzIG5vdCBiZWluZyBkaXJlY3Rs eSBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5LiAgVGhpcworCSAqIGFsbG93cyB0aGUgZXhlY3V0b3In cyBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgdG8gY29udmVuaWVudGx5CisJICogaWRlbnRp ZnkgaXQgYXMgYW4gaW5oZXJpdGFuY2UgY2hpbGQgdGFibGUuCisJICovCisJY2hpbGRydGUtPmlu RnJvbUNsID0gZmFsc2U7CiAJY2hpbGRydGUtPnNlY3VyaXR5UXVhbHMgPSBOSUw7CiAKIAkvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9hbmFseXplLmMKaW5kZXggNDAwNjYzMjA5Mi4uYmNmNmZjZGRlMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5h bHl6ZS5jCkBAIC0zMjY3LDEwICszMjY3LDkgQEAgdHJhbnNmb3JtTG9ja2luZ0NsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsIFF1ZXJ5ICpxcnksIExvY2tpbmdDbGF1c2UgKmxjLAogCQkvKgogCQkg KiBMb2NrIGFsbCByZWd1bGFyIHRhYmxlcyB1c2VkIGluIHF1ZXJ5IGFuZCBpdHMgc3VicXVlcmll cy4gIFdlCiAJCSAqIGV4YW1pbmUgaW5Gcm9tQ2wgdG8gZXhjbHVkZSBhdXRvLWFkZGVkIFJURXMs IHBhcnRpY3VsYXJseSBORVcvT0xECi0JCSAqIGluIHJ1bGVzLiAgVGhpcyBpcyBhIGJpdCBvZiBh biBhYnVzZSBvZiBhIG1vc3RseS1vYnNvbGV0ZSBmbGFnLCBidXQKLQkJICogaXQncyBjb252ZW5p ZW50LiAgV2UgY2FuJ3QgcmVseSBvbiB0aGUgbmFtZXNwYWNlIG1lY2hhbmlzbSB0aGF0IGhhcwot CQkgKiBsYXJnZWx5IHJlcGxhY2VkIGluRnJvbUNsLCBzaW5jZSBmb3IgZXhhbXBsZSB3ZSBuZWVk IHRvIGxvY2sKLQkJICogYmFzZS1yZWxhdGlvbiBSVEVzIGV2ZW4gaWYgdGhleSBhcmUgbWFza2Vk IGJ5IHVwcGVyIGpvaW5zLgorCQkgKiBpbiBydWxlcy4gIFdlIGNhbid0IHJlbHkgb24gdGhlIG5h bWVzcGFjZSBtZWNoYW5pc20gc2luY2UgZm9yCisJCSAqIGV4YW1wbGUgd2UgbmVlZCB0byBsb2Nr IGJhc2UtcmVsYXRpb24gUlRFcyBldmVuIGlmIHRoZXkgYXJlIG1hc2tlZAorCQkgKiBieSB1cHBl ciBqb2lucy4KIAkJICovCiAJCWkgPSAwOwogCQlmb3JlYWNoKHJ0LCBxcnktPnJ0YWJsZSkKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAppbmRleCBlZmI1YzNlMDk4Li5hODkxMjcyZTZlIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC05OTQsMTEgKzk5NCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25DbWQKICAqCiAgKgkgIGluRnJvbUNsIG1hcmtzIHRob3NlIHJhbmdlIHZhcmlhYmxlcyB0aGF0 IGFyZSBsaXN0ZWQgaW4gdGhlIEZST00gY2xhdXNlLgogICoJICBJdCdzIGZhbHNlIGZvciBSVEVz IHRoYXQgYXJlIGFkZGVkIHRvIGEgcXVlcnkgYmVoaW5kIHRoZSBzY2VuZXMsIHN1Y2gKLSAqCSAg YXMgdGhlIE5FVyBhbmQgT0xEIHZhcmlhYmxlcyBmb3IgYSBydWxlLCBvciB0aGUgc3VicXVlcmll cyBvZiBhIFVOSU9OLgorICoJICBhcyB0aGUgTkVXIGFuZCBPTEQgdmFyaWFibGVzIGZvciBhIHJ1 bGUsIG9yIHRoZSBzdWJxdWVyaWVzIG9mIGEgVU5JT04sCisgKgkgIG9yIHRoZSBSVEVzIG9mIGlu aGVyaXRhbmNlIGNoaWxkIHRhYmxlcyB0aGF0IGFyZSBhZGRlZCBieSB0aGUgcGxhbm5lci4KICAq CSAgVGhpcyBmbGFnIGlzIG5vdCB1c2VkIGR1cmluZyBwYXJzaW5nIChleGNlcHQgaW4gdHJhbnNm b3JtTG9ja2luZ0NsYXVzZSwKICAqCSAgcS52Lik7IHRoZSBwYXJzZXIgbm93IHVzZXMgYSBzZXBh cmF0ZSAibmFtZXNwYWNlIiBkYXRhIHN0cnVjdHVyZSB0bwogICoJICBjb250cm9sIHZpc2liaWxp dHkuICBCdXQgaXQgaXMgbmVlZGVkIGJ5IHJ1bGV1dGlscy5jIHRvIGRldGVybWluZQotICoJICB3 aGV0aGVyIFJURXMgc2hvdWxkIGJlIHNob3duIGluIGRlY29tcGlsZWQgcXVlcmllcy4KKyAqCSAg d2hldGhlciBSVEVzIHNob3VsZCBiZSBzaG93biBpbiBkZWNvbXBpbGVkIHF1ZXJpZXMuICBJdCBp cyB1c2VkIGJ5IHRoZQorICoJICBleGVjdXRvciB0byBkZXRlcm1pbmUgdGhhdCBhIGdpdmVuIFJU RV9SRUxBVElPTiBlbnRyeSBiZWxvbmdzIHRvIGEgdGFibGUKKyAqCSAgZGlyZWN0bHkgbWVudGlv bmVkIGluIHRoZSBxdWVyeSBvciB0byBhIGNoaWxkIHRhYmxlIGFkZGVkIGJ5IHRoZSBwbGFubmVy LgorICoJICBJdCBuZWVkcyB0byBrbm93IHRoYXQgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBjaGls ZCB0YWJsZXMgaW4gYSBwbGFuIG5lZWQKKyAqCSAgdG8gYmUgbG9ja2VkLgogICoKICAqCSAgc2Vj dXJpdHlRdWFscyBpcyBhIGxpc3Qgb2Ygc2VjdXJpdHkgYmFycmllciBxdWFscyAoYm9vbGVhbiBl eHByZXNzaW9ucyksCiAgKgkgIHRvIGJlIHRlc3RlZCBpbiB0aGUgbGlzdGVkIG9yZGVyIGJlZm9y ZSByZXR1cm5pbmcgYSByb3cgZnJvbSB0aGUKLS0gCjIuMzUuMwoK --0000000000000dedc806005de532 Content-Type: application/x-patch; name="v41-0003-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Disposition: attachment; filename="v41-0003-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lk1553u91 RnJvbSAxN2Y4Y2UyNmI4NmMzZThhZWJmZDUyNzlmYzZiYmRjNzk5Nzg5NGY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0NSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQx IDMvNF0gRGVsYXkgbG9ja2luZyBvZiBjaGlsZCB0YWJsZXMgaW4gY2FjaGVkIHBsYW5zIHVudGls CiBFeGVjdXRvclN0YXJ0KCkKCkN1cnJlbnRseSwgR2V0Q2FjaGVkUGxhbigpIHRha2VzIGEgbG9j ayBvbiBhbGwgcmVsYXRpb25zIGNvbnRhaW5lZCBpbgphIGNhY2hlZCBwbGFuIGJlZm9yZSByZXR1 cm5pbmcgaXQgYXMgYSB2YWxpZCBwbGFuIHRvIGl0cyBjYWxsZXJzIGZvcgpleGVjdXRpb24uICBP bmUgZGlzYWR2YW50YWdlIGlzIHRoYXQgaWYgdGhlIHBsYW4gY29udGFpbnMgcGFydGl0aW9ucwp0 aGF0IGFyZSBwcnVuYWJsZSB3aXRoIGNvbmRpdGlvbnMgaW52b2x2aW5nIEVYVEVSTiBwYXJhbWV0 ZXJzIGFuZApvdGhlciBzdGFibGUgZXhwcmVzc2lvbnMgKGtub3duIGFzICJpbml0aWFsIHBydW5p bmciKSwgbWFueSBvZiB0aGVtCndvdWxkIGJlIGxvY2tlZCB1bm5lY2Vzc2FyaWx5LCBiZWNhdXNl IG9ubHkgdGhvc2UgdGhhdCBzdXJ2aXZlCmluaXRpYWwgcHJ1bmluZyBuZWVkIHRvIGhhdmUgYmVl biBsb2NrZWQuICBMb2NraW5nIGFsbCBwYXJ0aXRpb25zIHRoaXMKd2F5IGNhdXNlcyBzaWduaWZp Y2FudCBkZWxheSB3aGVuIHRoZXJlIGFyZSBtYW55IHBhcnRpdGlvbnMuICBOb3RlCnRoYXQgaW5p dGlhbCBwcnVuaW5nIG9jY3VycyBkdXJpbmcgZXhlY3V0b3IncyBpbml0aWFsaXphdGlvbiBvZiB0 aGUKcGxhbiwgdGhhdCBpcywgSW5pdFBsYW4oKS4KClRoaXMgY29tbWl0IHJlYXJyYW5nZXMgdGhp bmdzIHRvIG1vdmUgdGhlIGxvY2tpbmcgb2YgY2hpbGQgdGFibGVzCnJlZmVyZW5jZWQgaW4gYSBj YWNoZWQgcGxhbiB0byBvY2N1ciBkdXJpbmcgSW5pdFBsYW4oKSBzbyB0aGF0CmluaXRpYWwgcHJ1 bmluZyBjYW4gZWxpbWluYXRlIGFueSBjaGlsZCB0YWJsZXMgdGhhdCBuZWVkIG5vdCBiZQpzY2Fu bmVkIGFuZCB0aHVzIGxvY2tlZC4KClRvIGRldGVybWluZSB0aGF0IGEgZ2l2ZW4gdGFibGUgaXMg YSBjaGlsZCB0YWJsZSwKRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbigpIG5vdyBsb29rcyBhdCB0 aGUgUlRFJ3MgaW5Gcm9tQ2wgZmllbGQsCndoaWNoIGlzIG9ubHkgdHJ1ZSBmb3IgdGFibGVzIHRo YXQgYXJlIGRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUKcXVlcnkgYnV0IGZhbHNlIGZvciBjaGls ZCB0YWJsZXMuICBOb3RlIHRoYXQgYW55IHRhYmxlcyB3aG9zZSBSVEVzJwppbkZyb21DbCBpcyB0 cnVlIHdvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGxvY2tlZCBieSBHZXRDYWNoZWRQbGFuKCksCnNv IG5lZWQgbm90IGJlIGxvY2tlZCBhZ2FpbiBkdXJpbmcgZXhlY3V0aW9uLgoKSWYgdGhlIGxvY2tp bmcgb2YgY2hpbGQgdGFibGVzIGNhdXNlcyB0aGUgQ2FjaGVkUGxhbiB0byBnbyBzdGFsZSwgdGhh dAppcywgaXRzIGlzX3ZhbGlkIHNldCB0byBmYWxzZSBieSBQbGFuQ2FjaGVSZWxDYWxsYmFjaygp IHdoZW4gYW4KaW52YWxpZGF0aW9uIG1lc3NhZ2UgbWF0Y2hpbmcgc29tZSBjaGlsZCB0YWJsZSBj b250YWluZWQgaW4gdGhlIHBsYW4KaXMgcHJvY2Vzc2VkLCBFeGVjSW5pdE5vZGUoKSBhYmFuZG9u cyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlCnJlbWFpbmluZyBub2RlcyBpbiB0aGUgcGxhbiB0 cmVlLiAgSW4gdGhhdCBjYXNlLCBJbml0UGxhbigpIHJldHVybnMKYWZ0ZXIgc2V0dGluZyBRdWVy eURlc2MucGxhbnN0YXRlIHRvIE5VTEwgdG8gaW5kaWNhdGUgdG8gdGhlIGNhbGxlcgp0aGF0IG5v IGV4ZWN1dGlvbiBpcyBwb3NzaWJsZSB3aXRoIHRoZSBwbGFuIHRyZWUgYXMgaXMuICBUaG91Z2gg c29tZQpwbGFuIHRyZWUgc3Vibm9kZXMgbWF5IGdldCBmdWxseSBpbml0aWFsaXplZCBieSBFeGVj SW5pdE5vZGUoKSBiZWZvcmUKdGhlIENhY2hlZFBsYW4ncyBpbnZhbGlkYXRpb24gaXMgZGV0ZWN0 ZWQsIHNvIHRvIGVuc3VyZSB0aGF0IHRoZXkKYXJlIHJlbGVhc2VkIGJ5IEV4ZWNFbmRQbGFuKCks IEV4ZWNJbml0Tm9kZSgpIG5vdyBhZGRzIHRoZSBQbGFuU3RhdGUKbm9kZXMgb2YgdGhlIG5vZGVz IHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIHRvIGEgbmV3IExpc3QgaW4KRVN0YXRlIGNhbGxl ZCBlc19pbml0ZWRfcGxhbm5vZGVzLiAgRXhlY0VuZFBsYW4oKSByZWxlYXNlcyB0aGVtCmluZGl2 aWR1YWxseSBieSBjYWxsaW5nIEV4ZWNFbmROb2RlKCkgb24gZWFjaCBlbGVtZW50IG9mIHRoZSBu ZXcKTGlzdC4gIEV4ZWNFbmROb2RlKCkgaXMgbm8gbG9uZ2VyIHJlY3Vyc2l2ZSwgYmVjYXVzZSBh bGwgbm9kZXMgdGhhdApuZWVkIHRvIGJlIGNsb3NlZCBjYW4gYmUgZm91bmQgaW4gZXNfaW5pdGVk X3BsYW5ub2Rlcy4KCkNhbGwgc2l0ZXMgdGhhdCB1c2UgR2V0Q2FjaGVkUGxhbigpIHRvIGdldCB0 aGUgcGxhbiB0cmVlcyB0byBwYXNzIHRvCnRoZSBleGVjdXRvciBzaG91bGQgbm93IGJlIHByZXBh cmVkIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgb2xkCkNhY2hlZFBsYW4gZ2V0cyBpbnZh bGlkYXRlZCBkdXJpbmcgRXhlY3V0b3JTdGFydCgpIGFzIGRlc2NyaWJlZAphYm92ZS4gIFNvIHRo aXMgY29tbWl0IHJlZmFjdG9ycyB0aGUgcmVsZXZhbnQgY29kZSBzaXRlcyB0byBtb3ZlIHRoZQpF eGVjdXRvclN0YXJ0KCkgY2FsbCAgY2xvc2VyIHRvIHRoZSBHZXRDYWNoZWRQbGFuKCkgdG8gaW1w bGVtZW50IHRoZQpyZXBsYW4gbG9vcCBjb252ZW5pZW50bHkuCgpHaXZlbiB0aGlzIG5ldyBiZWhh dmlvciwgUG9ydGFsU3RhcnQoKSBub3cgbXVzdCBhbHdheXMgcGVyZm9ybQpFeGVjdXRvclN0YXJ0 KCkgdG8gYmUgYWJsZSB0byBkcm9wIGFuZCByZWNyZWF0ZSBjYWNoZWQgcGxhbnMgaWYKbmVlZGVk LCB3aGljaCBpcyBjdXJyZW50bHkgb25seSBkb25lIHNvIGZvciBzaW5nbGUtcXVlcnkgcG9ydGFs cy4KRm9yIG11bHRpLXF1ZXJ5IHBvcnRhbHMsIHRoZSBRdWVyeURlc2NzIHRoYXQgYXJlIG5vdyBj cmVhdGVkIGR1cmluZwpQb3J0YWxTdGFydCgpIGFyZSByZW1lbWJlcmVkIGluIGEgbmV3IExpc3Qg ZmllbGQgb2YgUG9ydGFsIGNhbGxlZAoncWRlc2NzJyBhbmQgYWxsb2NhdGVkIGluIGEgbmV3IG1l bW9yeSBjb250ZXh0ICdxdWVyeUNvbnRleHQnLgpQb3J0YWxSdW5NdWx0aSgpIG5vdyBzaW1wbHkg cGVyZm9ybXMgRXhlY3V0b3JSdW4oKSBvbiB0aGUKUXVlcnlEZXNjcyBmb3VuZCBpbiAncWRlc2Nz Jy4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtR emRlMG9ocEF5Y0xRdVY3b29pdEVFcGJLQjBPX21nQG1haWwuZ21haWwuY29tCi0tLQogY29udHJp Yi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvY3JlYXRlYXMuYyAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAxNDUgKysrKystLS0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgICAgICAgICAgICB8ICAxNiArLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAgIHwgIDMyICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9SRUFETUUgICAgICAgICAgICAgICAgICAgfCAgMzkgKy0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8IDEwNiArKysrKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgICAgICAgIHwgIDE0ICsKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jICAgICAgICAgICB8ICA1MCArKy0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICA2MyArKystCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFnZy5jICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgICAgICAgfCAgNDggKystCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwQW5kLmMgICAgICAgICAgfCAgMzEgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jICAgIHwgICA5ICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwT3IuYyAgICAgICAgICAgfCAgMzEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVDdXN0b20uYyAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlRm9yZWlnbnNjYW4uYyAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHYXRoZXIuYyAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdhdGhlck1lcmdlLmMgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlR3JvdXAuYyAgICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVIYXNoLmMgICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUhhc2hqb2luLmMgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5jcmVtZW50YWxTb3J0LmMgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleG9ubHlzY2FuLmMgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4c2Nhbi5jICAgICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGlt aXQuYyAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2Nr Um93cy5jICAgICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVy aWFsLmMgICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6 ZS5jICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFw cGVuZC5jICAgICAgICB8ICA0NyArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpv aW4uYyAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMgICAgICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3Au YyAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0 LmMgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVu aW9uLmMgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMgICAg ICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMg ICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jICAgICAg ICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgICAgICAgICAg ICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jICAgICAgICAgICAg ICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYyAgICAg ICB8ICAgNyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jICAgICAg IHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMgICAgICAgICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgICAgICAgICAgICAgfCAg IDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyAgICAgICAgICB8ICAg NiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgICAgICAgICAgIHwgIDQ5 ICsrLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYyAgICAgICAgICAgICAgIHwgIDQ1 ICsrKwogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgIDEz ICstCiBzcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jICAgICAgICAgICAgICAgICAgICAgfCAzNDAg KysrKysrKysrLS0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyAg ICAgICAgICAgfCAgMjEgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAg ICAgICAgICB8IDE0OSArKystLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0u YyAgICAgICAgICAgIHwgICA5ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAg ICAgICAgICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAgICAg ICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAg ICAgICAgICB8ICAxMyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAg ICAgICAgfCAgIDYgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggICAgICAgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAgICAgICAgICAg fCAgMTQgKwogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgICAgICAgIHwg ICA0ICsKIHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlICAgICB8ICAg MyArLQogLi4uL21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIHwgIDYz ICsrKy0KIC4uLi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0ICAgICAgICAgICB8IDE1 NiArKysrKysrKwogLi4uL3NwZWNzL2NhY2hlZC1wbGFuLXJlcGxhbi5zcGVjICAgICAgICAgICAg IHwgIDYxICsrKysKIDcwIGZpbGVzIGNoYW5nZWQsIDEyMzEgaW5zZXJ0aW9ucygrKSwgNTg5IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhl Y3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBs YW4uc3BlYwoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5j IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKaW5kZXggYzVjYWRhNTVmYi4u MWVkZDRjM2YxNyAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3 LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKQEAgLTI2NTgsNyAr MjY1OCwxMSBAQCBwb3N0Z3Jlc0JlZ2luRGlyZWN0TW9kaWZ5KEZvcmVpZ25TY2FuU3RhdGUgKm5v ZGUsIGludCBlZmxhZ3MpCiAJLyogR2V0IGluZm8gYWJvdXQgZm9yZWlnbiB0YWJsZS4gKi8KIAly dGluZGV4ID0gbm9kZS0+cmVzdWx0UmVsSW5mby0+cmlfUmFuZ2VUYWJsZUluZGV4OwogCWlmIChm c3BsYW4tPnNjYW4uc2NhbnJlbGlkID09IDApCisJewogCQlkbXN0YXRlLT5yZWwgPSBFeGVjT3Bl blNjYW5SZWxhdGlvbihlc3RhdGUsIHJ0aW5kZXgsIGVmbGFncyk7CisJCWlmICghRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm47CisJfQogCWVsc2UKIAkJZG1zdGF0ZS0+cmVs ID0gbm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uOwogCXRhYmxlID0gR2V0Rm9yZWlnblRhYmxl KFJlbGF0aW9uR2V0UmVsaWQoZG1zdGF0ZS0+cmVsKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4 IDllNGIyNDM3YTUuLjgyNDQxOTQ2ODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC01NTgsNyAr NTU4LDggQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkoKERSX2NvcHkgKikg ZGVzdCktPmNzdGF0ZSA9IGNzdGF0ZTsKIAogCQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgcmVxdWVz dGluZyBubyBvdXRwdXQgKi8KLQkJY3N0YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Mo cGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRl UXVlcnlEZXNjKHBsYW4sIE5VTEwsCisJCQkJCQkJCQkJCXBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAog CQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNo b3QsCiAJCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwpAQCAtNTY5LDYgKzU3MCw3IEBA IEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJICogRXhlY3V0b3JTdGFydCBjb21w dXRlcyBhIHJlc3VsdCB0dXBkZXNjIGZvciB1cwogCQkgKi8KIAkJRXhlY3V0b3JTdGFydChjc3Rh dGUtPnF1ZXJ5RGVzYywgMCk7CisJCUFzc2VydChjc3RhdGUtPnF1ZXJ5RGVzYy0+cGxhbl92YWxp ZCk7CiAKIAkJdHVwRGVzYyA9IGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjOwogCX0KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jcmVhdGVhcy5jCmluZGV4IGU5MTkyMGNhMTQuLjE4YjA3YzAyMDAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY3JlYXRlYXMuYwpAQCAtMzI1LDcgKzMyNSw3IEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCVVwZGF0ZUFjdGl2ZVNu YXBzaG90Q29tbWFuZElkKCk7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGlu ZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCi0JCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJcXVlcnlEZXNjID0gQ3JlYXRl UXVlcnlEZXNjKHBsYW4sIE5VTEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJR2V0 QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJZGVzdCwgcGFyYW1z LCBxdWVyeUVudiwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCA4NTcwYjE0ZjYyLi5i MWVhNDVlZjJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0zOTMsNiArMzkzLDcgQEAgRXhw bGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJZWxzZQogCXsK IAkJUGxhbm5lZFN0bXQgKnBsYW47CisJCVF1ZXJ5RGVzYyAgICpxdWVyeURlc2M7CiAJCWluc3Ry X3RpbWUJcGxhbnN0YXJ0LAogCQkJCQlwbGFuZHVyYXRpb247CiAJCUJ1ZmZlclVzYWdlIGJ1ZnVz YWdlX3N0YXJ0LApAQCAtNDE1LDEyICs0MTYsOTAgQEAgRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpx dWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmYnVmdXNh Z2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOwogCQl9CiAKKwkJcXVlcnlEZXNj ID0gRXhwbGFpblF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBxdWVyeVN0cmluZywgaW50bywgZXMsCisJ CQkJCQkJCQkgcGFyYW1zLCBxdWVyeUVudik7CisJCUFzc2VydChxdWVyeURlc2MpOworCiAJCS8q IHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBvdXRwdXQgKi8KLQkJRXhwbGFpbk9uZVBs YW4ocGxhbiwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAorCQlFeHBs YWluT25lUGxhbihxdWVyeURlc2MsIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVy eUVudiwKIAkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDog TlVMTCkpOwogCX0KIH0KIAorLyoKKyAqIEV4cGxhaW5RdWVyeURlc2MKKyAqCQlTZXQgdXAgUXVl cnlEZXNjIGZvciBFWFBMQUlOaW5nIGEgZ2l2ZW4gcGxhbgorICoKKyAqIFRoaXMgcmV0dXJucyBO VUxMIGlmIGNwbGFuIGlzIGZvdW5kIHRvIGJlIG5vIGxvbmdlciB2YWxpZC4KKyAqLworUXVlcnlE ZXNjICoKK0V4cGxhaW5RdWVyeURlc2MoUGxhbm5lZFN0bXQgKnN0bXQsIENhY2hlZFBsYW4gKmNw bGFuLAorCQkJCSBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgSW50b0NsYXVzZSAqaW50bywgRXhw bGFpblN0YXRlICplcywKKwkJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52KQoreworCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKKwlEZXN0UmVjZWl2ZXIg KmRlc3Q7CisJaW50CQkJZWZsYWdzOworCWludAkJCWluc3RydW1lbnRfb3B0aW9uID0gMDsKKwor CS8qCisJICogTm9ybWFsbHkgd2UgZGlzY2FyZCB0aGUgcXVlcnkncyBvdXRwdXQsIGJ1dCBpZiBl eHBsYWluaW5nIENSRUFURSBUQUJMRQorCSAqIEFTLCB3ZSdkIGJldHRlciB1c2UgdGhlIGFwcHJv cHJpYXRlIHR1cGxlIHJlY2VpdmVyLgorCSAqLworCWlmIChpbnRvKQorCQlkZXN0ID0gQ3JlYXRl SW50b1JlbERlc3RSZWNlaXZlcihpbnRvKTsKKwllbHNlCisJCWRlc3QgPSBOb25lX1JlY2VpdmVy OworCisJaWYgKGVzLT5hbmFseXplICYmIGVzLT50aW1pbmcpCisJCWluc3RydW1lbnRfb3B0aW9u IHw9IElOU1RSVU1FTlRfVElNRVI7CisJZWxzZSBpZiAoZXMtPmFuYWx5emUpCisJCWluc3RydW1l bnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfUk9XUzsKKworCWlmIChlcy0+YnVmZmVycykKKwkJaW5z dHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9CVUZGRVJTOworCWlmIChlcy0+d2FsKQorCQlp bnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1dBTDsKKworCS8qCisJICogVXNlIGEgc25h cHNob3Qgd2l0aCBhbiB1cGRhdGVkIGNvbW1hbmQgSUQgdG8gZW5zdXJlIHRoaXMgcXVlcnkgc2Vl cworCSAqIHJlc3VsdHMgb2YgYW55IHByZXZpb3VzbHkgZXhlY3V0ZWQgcXVlcmllcy4KKwkgKi8K KwlQdXNoQ29waWVkU25hcHNob3QoR2V0QWN0aXZlU25hcHNob3QoKSk7CisJVXBkYXRlQWN0aXZl U25hcHNob3RDb21tYW5kSWQoKTsKKworCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1 ZXJ5ICovCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsIGNwbGFuLCBxdWVyeVN0 cmluZywKKwkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAorCQkJ CQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbik7CisKKwkvKiBT ZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8KKwlpZiAoZXMtPmFuYWx5emUpCisJCWVmbGFncyA9 IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KKwllbHNlCisJCWVm bGFncyA9IEVYRUNfRkxBR19FWFBMQUlOX09OTFk7CisJaWYgKGVzLT5nZW5lcmljKQorCQllZmxh Z3MgfD0gRVhFQ19GTEFHX0VYUExBSU5fR0VORVJJQzsKKwlpZiAoaW50bykKKwkJZWZsYWdzIHw9 IEdldEludG9SZWxFRmxhZ3MoaW50byk7CisKKwkvKgorCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0 byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24uICBBIGNhY2hlZCBwbGFuCisJICogbWF5 IGdldCBpbnZhbGlkYXRlZCBhcyB3ZSdyZSBkb2luZyB0aGF0LgorCSAqLworCUV4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCWlmICghcXVlcnlEZXNjLT5wbGFuX3ZhbGlkKQorCXsK KwkJLyogQ2xlYW4gdXAuICovCisJCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisJCUZyZWVRdWVy eURlc2MocXVlcnlEZXNjKTsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJcmV0dXJuIE5VTEw7 CisJfQorCisJcmV0dXJuIHF1ZXJ5RGVzYzsKK30KKwogLyoKICAqIEV4cGxhaW5PbmVVdGlsaXR5 IC0KICAqCSAgcHJpbnQgb3V0IHRoZSBleGVjdXRpb24gcGxhbiBmb3Igb25lIHV0aWxpdHkgc3Rh dGVtZW50CkBAIC01MjQsMjkgKzYwMywxNiBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGls aXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNhbGwg aXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwg SW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLAorCQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICpl cywKIAkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywK IAkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFu ZHVyYXRpb24sCiAJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UpCiB7Ci0JRGVzdFJl Y2VpdmVyICpkZXN0OwotCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKIAlpbnN0cl90aW1lCXN0YXJ0 dGltZTsKIAlkb3VibGUJCXRvdGFsdGltZSA9IDA7Ci0JaW50CQkJZWZsYWdzOwotCWludAkJCWlu c3RydW1lbnRfb3B0aW9uID0gMDsKLQotCUFzc2VydChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUg IT0gQ01EX1VUSUxJVFkpOwogCi0JaWYgKGVzLT5hbmFseXplICYmIGVzLT50aW1pbmcpCi0JCWlu c3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfVElNRVI7Ci0JZWxzZSBpZiAoZXMtPmFuYWx5 emUpCi0JCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfUk9XUzsKLQotCWlmIChlcy0+ YnVmZmVycykKLQkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9CVUZGRVJTOwotCWlm IChlcy0+d2FsKQotCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1dBTDsKKwlBc3Nl cnQocXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpOwog CiAJLyoKIAkgKiBXZSBhbHdheXMgY29sbGVjdCB0aW1pbmcgZm9yIHRoZSBlbnRpcmUgc3RhdGVt ZW50LCBldmVuIHdoZW4gbm9kZS1sZXZlbApAQCAtNTU1LDQwICs2MjEsNiBAQCBFeHBsYWluT25l UGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5T dGF0ZSAqZXMsCiAJICovCiAJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydHRpbWUpOwogCi0J LyoKLQkgKiBVc2UgYSBzbmFwc2hvdCB3aXRoIGFuIHVwZGF0ZWQgY29tbWFuZCBJRCB0byBlbnN1 cmUgdGhpcyBxdWVyeSBzZWVzCi0JICogcmVzdWx0cyBvZiBhbnkgcHJldmlvdXNseSBleGVjdXRl ZCBxdWVyaWVzLgotCSAqLwotCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRBY3RpdmVTbmFwc2hvdCgp KTsKLQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwotCi0JLyoKLQkgKiBOb3JtYWxs eSB3ZSBkaXNjYXJkIHRoZSBxdWVyeSdzIG91dHB1dCwgYnV0IGlmIGV4cGxhaW5pbmcgQ1JFQVRF IFRBQkxFCi0JICogQVMsIHdlJ2QgYmV0dGVyIHVzZSB0aGUgYXBwcm9wcmlhdGUgdHVwbGUgcmVj ZWl2ZXIuCi0JICovCi0JaWYgKGludG8pCi0JCWRlc3QgPSBDcmVhdGVJbnRvUmVsRGVzdFJlY2Vp dmVyKGludG8pOwotCWVsc2UKLQkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7Ci0KLQkvKiBDcmVhdGUg YSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVz YyhwbGFubmVkc3RtdCwgcXVlcnlTdHJpbmcsCi0JCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCks IEludmFsaWRTbmFwc2hvdCwKLQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1 bWVudF9vcHRpb24pOwotCi0JLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCi0JaWYgKGVz LT5hbmFseXplKQotCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9u IGZsYWdzICovCi0JZWxzZQotCQllZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZOwotCWlm IChlcy0+Z2VuZXJpYykKLQkJZWZsYWdzIHw9IEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUM7Ci0J aWYgKGludG8pCi0JCWVmbGFncyB8PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOwotCi0JLyogY2Fs bCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwotCiAJLyogRXhlY3V0ZSB0aGUgcGxhbiBm b3Igc3RhdGlzdGljcyBpZiBhc2tlZCBmb3IgKi8KIAlpZiAoZXMtPmFuYWx5emUpCiAJewpAQCAt NDg2NSw2ICs0ODk3LDE3IEBAIEV4cGxhaW5EdW1teUdyb3VwKGNvbnN0IGNoYXIgKm9ianR5cGUs IGNvbnN0IGNoYXIgKmxhYmVsbmFtZSwgRXhwbGFpblN0YXRlICplcykKIAl9CiB9CiAKKy8qCisg KiBEaXNjYXJkIG91dHB1dCBidWZmZXIgZm9yIGEgZnJlc2ggcmVzdGFydC4KKyAqLwordm9pZAor RXhwbGFpblJlc2V0T3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpCit7CisJQXNzZXJ0KGVzLT5zdHIp OworCXJlc2V0U3RyaW5nSW5mbyhlcy0+c3RyKTsKKwlFeHBsYWluQmVnaW5PdXRwdXQoZXMpOwor fQorCiAvKgogICogRW1pdCB0aGUgc3RhcnQtb2Ytb3V0cHV0IGJvaWxlcnBsYXRlLgogICoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXh0ZW5zaW9uLmMKaW5kZXggOWEyZWUxYzYwMC4uNzJkNjBkOWM0ZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTc5NywxMSArNzk3LDEzIEBAIGV4ZWN1dGVfc3FsX3N0 cmluZyhjb25zdCBjaGFyICpzcWwpCiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAKIAkJCQlxZGVz YyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCQkJCQkJCU5VTEwsCiAJCQkJCQkJCQkJc3Fs LAogCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIE5VTEwsCiAJCQkJCQkJCQkJZGVzdCwg TlVMTCwgTlVMTCwgMCk7CiAKIAkJCQlFeGVjdXRvclN0YXJ0KHFkZXNjLCAwKTsKKwkJCQlBc3Nl cnQocWRlc2MtPnBsYW5fdmFsaWQpOwogCQkJCUV4ZWN1dG9yUnVuKHFkZXNjLCBGb3J3YXJkU2Nh bkRpcmVjdGlvbiwgMCwgdHJ1ZSk7CiAJCQkJRXhlY3V0b3JGaW5pc2gocWRlc2MpOwogCQkJCUV4 ZWN1dG9yRW5kKHFkZXNjKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZp ZXcuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwppbmRleCBhYzJlNzRmYTNmLi5h NjQ4ODBiNzE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCkBAIC00MDgsMTIgKzQwOCwxMyBAQCBy ZWZyZXNoX21hdHZpZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnks CiAJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5 RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCXF1ZXJ5 RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBD cmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2 ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwg MCk7CiAKIAkvKiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhl Y3V0aW9uICovCiAJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApOworCUFzc2VydChxdWVyeURl c2MtPnBsYW5fdmFsaWQpOwogCiAJLyogcnVuIHRoZSBwbGFuICovCiAJRXhlY3V0b3JSdW4ocXVl cnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMCwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0 YWxjbWRzLmMKaW5kZXggNzNlZDdhYTJmMC4uNGFiYmVjMDU0YiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Bv cnRhbGNtZHMuYwpAQCAtMTQ2LDYgKzE0Niw3IEBAIFBlcmZvcm1DdXJzb3JPcGVuKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgRGVjbGFyZUN1cnNvclN0bXQgKmNzdG10LCBQYXJhbUxpc3RJbmZvIHBhCiAJ UG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEdldEFjdGl2ZVNuYXBzaG90KCkpOwogCiAJ QXNzZXJ0KHBvcnRhbC0+c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9TRUxFQ1QpOworCUFzc2VydChw b3J0YWwtPnBsYW5fdmFsaWQpOwogCiAJLyoKIAkgKiBXZSdyZSBkb25lOyB0aGUgcXVlcnkgd29u J3QgYWN0dWFsbHkgYmUgcnVuIHVudGlsIFBlcmZvcm1Qb3J0YWxGZXRjaCBpcwpAQCAtMjQ5LDYg KzI1MCwxNyBAQCBQZXJmb3JtUG9ydGFsQ2xvc2UoY29uc3QgY2hhciAqbmFtZSkKIAlQb3J0YWxE cm9wKHBvcnRhbCwgZmFsc2UpOwogfQogCisvKgorICogUmVsZWFzZSBhIHBvcnRhbCdzIFF1ZXJ5 RGVzYy4KKyAqLwordm9pZAorUG9ydGFsUXVlcnlGaW5pc2goUXVlcnlEZXNjICpxdWVyeURlc2Mp Cit7CisJRXhlY3V0b3JGaW5pc2gocXVlcnlEZXNjKTsKKwlFeGVjdXRvckVuZChxdWVyeURlc2Mp OworCUZyZWVRdWVyeURlc2MocXVlcnlEZXNjKTsKK30KKwogLyoKICAqIFBvcnRhbENsZWFudXAK ICAqCkBAIC0yOTUsOSArMzA3LDcgQEAgUG9ydGFsQ2xlYW51cChQb3J0YWwgcG9ydGFsKQogCQkJ aWYgKHBvcnRhbC0+cmVzb3duZXIpCiAJCQkJQ3VycmVudFJlc291cmNlT3duZXIgPSBwb3J0YWwt PnJlc293bmVyOwogCi0JCQlFeGVjdXRvckZpbmlzaChxdWVyeURlc2MpOwotCQkJRXhlY3V0b3JF bmQocXVlcnlEZXNjKTsKLQkJCUZyZWVRdWVyeURlc2MocXVlcnlEZXNjKTsKKwkJCVBvcnRhbFF1 ZXJ5RmluaXNoKHF1ZXJ5RGVzYyk7CiAKIAkJCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZVJl c291cmNlT3duZXI7CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBh cmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAxOGY3MDMxOWZjLi5j OTA3MGVkOTdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC0xODMsNiArMTgzLDcgQEAgRXhl Y3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJcGFyYW1MSSA9IEV2YWx1YXRlUGFyYW1z KHBzdGF0ZSwgZW50cnksIHN0bXQtPnBhcmFtcywgZXN0YXRlKTsKIAl9CiAKK3JlcGxhbjoKIAkv KiBDcmVhdGUgYSBuZXcgcG9ydGFsIHRvIHJ1biB0aGUgcXVlcnkgaW4gKi8KIAlwb3J0YWwgPSBD cmVhdGVOZXdQb3J0YWwoKTsKIAkvKiBEb24ndCBkaXNwbGF5IHRoZSBwb3J0YWwgaW4gcGdfY3Vy c29ycywgaXQgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5ICovCkBAIC0yNTEsMTAgKzI1MiwxOSBA QCBFeGVjdXRlUXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCX0KIAogCS8qCi0JICogUnVuIHRo ZSBwb3J0YWwgYXMgYXBwcm9wcmlhdGUuCisJICogUnVuIHRoZSBwb3J0YWwgYXMgYXBwcm9wcmlh dGUuICBJZiB0aGUgcG9ydGFsIGNvbnRhaW5zIGEgY2FjaGVkIHBsYW4sIGl0CisJICogbXVzdCBi ZSByZWNyZWF0ZWQgaWYgcG9ydGFsLT5wbGFuX3ZhbGlkIGlzIGZhbHNlIHdoaWNoIHRlbGxzIHRo YXQgdGhlCisJICogY2FjaGVkIHBsYW4gd2FzIGZvdW5kIHRvIGhhdmUgYmVlbiBpbnZhbGlkYXRl ZCB3aGVuIGluaXRpYWxpemluZyBvbmUgb2YKKwkgKiB0aGUgcGxhbiB0cmVlcyBjb250YWluZWQg aW4gaXQuCiAJICovCiAJUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbUxJLCBlZmxhZ3MsIEdldEFj dGl2ZVNuYXBzaG90KCkpOwogCisJaWYgKCFwb3J0YWwtPnBsYW5fdmFsaWQpCisJeworCQlQb3J0 YWxEcm9wKHBvcnRhbCwgZmFsc2UpOworCQlnb3RvIHJlcGxhbjsKKwl9CisKIAkodm9pZCkgUG9y dGFsUnVuKHBvcnRhbCwgY291bnQsIGZhbHNlLCB0cnVlLCBkZXN0LCBkZXN0LCBxYyk7CiAKIAlQ b3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOwpAQCAtNTc0LDcgKzU4NCw3IEBAIEV4cGxhaW5FeGVj dXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWlu U3RhdGUgKmVzLAogewogCVByZXBhcmVkU3RhdGVtZW50ICplbnRyeTsKIAljb25zdCBjaGFyICpx dWVyeV9zdHJpbmc7Ci0JQ2FjaGVkUGxhbiAqY3BsYW47CisJQ2FjaGVkUGxhbiAqY3BsYW4gPSBO VUxMOwogCUxpc3QJICAgKnBsYW5fbGlzdDsKIAlMaXN0Q2VsbCAgICpwOwogCVBhcmFtTGlzdElu Zm8gcGFyYW1MSSA9IE5VTEw7CkBAIC02MTgsNiArNjI4LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVy eShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAq ZXMsCiAJfQogCiAJLyogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGFjcXVpcmUgYSB0cmFuc2llbnQg cmVmY291bnQgKi8KK3JlcGxhbjoKIAljcGxhbiA9IEdldENhY2hlZFBsYW4oZW50cnktPnBsYW5z b3VyY2UsIHBhcmFtTEksCiAJCQkJCQkgIEN1cnJlbnRSZXNvdXJjZU93bmVyLCBxdWVyeUVudik7 CiAKQEAgLTYzOSw4ICs2NTAsMjEgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAq ZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCVBsYW5uZWRT dG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBwKTsKIAogCQlpZiAocHN0bXQt PmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGlu dG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHF1ZXJ5RW52LAotCQkJCQkJICAgJnBsYW5k dXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOworCQl7CisJCQlRdWVy eURlc2MgKnF1ZXJ5RGVzYzsKKworCQkJcXVlcnlEZXNjID0gRXhwbGFpblF1ZXJ5RGVzYyhwc3Rt dCwgY3BsYW4sIHF1ZXJ5U3RyaW5nLAorCQkJCQkJCQkJCSBpbnRvLCBlcywgcGFyYW1MSSwgcXVl cnlFbnYpOworCQkJaWYgKHF1ZXJ5RGVzYyA9PSBOVUxMKQorCQkJeworCQkJCUV4cGxhaW5SZXNl dE91dHB1dChlcyk7CisJCQkJUmVsZWFzZUNhY2hlZFBsYW4oY3BsYW4sIEN1cnJlbnRSZXNvdXJj ZU93bmVyKTsKKwkJCQlnb3RvIHJlcGxhbjsKKwkJCX0KKwkJCUV4cGxhaW5PbmVQbGFuKHF1ZXJ5 RGVzYywgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwKKwkJCQkJCSAgIHF1ZXJ5RW52 LCAmcGxhbmR1cmF0aW9uLAorCQkJCQkJICAgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVM TCkpOworCQl9CiAJCWVsc2UKIAkJCUV4cGxhaW5PbmVVdGlsaXR5KHBzdG10LT51dGlsaXR5U3Rt dCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywKIAkJCQkJCQkgIHBhcmFtTEksIHF1ZXJ5RW52KTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL1JFQURNRQppbmRleCAxNzc3NWE0OWUyLi4xMTAwNjJlMGU4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVB RE1FCkBAIC0yODAsNiArMjgwLDM4IEBAIGFyZSB0eXBpY2FsbHkgcmVzZXQgdG8gZW1wdHkgb25j ZSBwZXIgdHVwbGUuICBQZXItdHVwbGUgY29udGV4dHMgYXJlIHVzdWFsbHkKIGFzc29jaWF0ZWQg d2l0aCBFeHByQ29udGV4dHMsIGFuZCBjb21tb25seSBlYWNoIFBsYW5TdGF0ZSBub2RlIGhhcyBp dHMgb3duCiBFeHByQ29udGV4dCB0byBldmFsdWF0ZSBpdHMgcXVhbCBhbmQgdGFyZ2V0bGlzdCBl eHByZXNzaW9ucyBpbi4KIAorUmVsYXRpb24gTG9ja2luZworLS0tLS0tLS0tLS0tLS0tLQorCitO b3JtYWxseSwgdGhlIGV4ZWN1dG9yIGRvZXMgbm90IGxvY2sgbm9uLWluZGV4IHJlbGF0aW9ucyBh cHBlYXJpbmcgaW4gYSBnaXZlbgorcGxhbiB0cmVlIHdoZW4gaW5pdGlhbGl6aW5nIGl0IGZvciBl eGVjdXRpb24gaWYgdGhlIHBsYW4gdHJlZSBpcyBmcmVzaGx5CitjcmVhdGVkLCB0aGF0IGlzLCBu b3QgZGVyaXZlZCBmcm9tIGEgQ2FjaGVkUGxhbi4gIFRoZSByZWFzb24gZm9yIHRoYXQgaXMgdGhh dAordGhlIGxvY2tzIG11c3QgYWxyZWFkeSBoYXZlIGJlZW4gdGFrZW4gZHVyaW5nIHBhcnNpbmcs IHJld3JpdGluZywgYW5kIHBsYW5uaW5nCitvZiB0aGUgcXVlcnkgaW4gdGhhdCBjYXNlLiAgSWYg dGhlIHBsYW4gdHJlZSBpcyBhIGNhY2hlZCBvbmUsIHRoZXJlIG1heSBzdGlsbAorYmUgdW5sb2Nr ZWQgcmVsYXRpb25zIHByZXNlbnQgaW4gdGhlIHBsYW4gdHJlZSwgYmVjYXVzZSBHZXRDYWNoZWRQ bGFuKCkgb25seQorbG9ja3MgdGhlIHJlbGF0aW9ucyB0aGF0IHdvdWxkIGJlIHByZXNlbnQgaW4g dGhlIHF1ZXJ5J3MgcmFuZ2UgdGFibGUgYmVmb3JlCitwbGFubmluZyBvY2N1cnMsIGJ1dCBub3Qg cmVsYXRpb25zIHRoYXQgd291bGQgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSByYW5nZQordGFibGUg ZHVyaW5nIHBsYW5uaW5nLiAgVGhpcyBtZWFucyB0aGF0IGluaGVyaXRhbmNlIGNoaWxkIHRhYmxl cywgd2hpY2ggYXJlCithZGRlZCB0byB0aGUgcXVlcnkncyByYW5nZSB0YWJsZSBkdXJpbmcgcGxh bm5pbmcsIGlmIHRoZXkgYXJlIHByZXNlbnQgaW4gYQorY2FjaGVkIHBsYW4gdHJlZSB3b3VsZCBu b3QgaGF2ZSBiZWVuIGxvY2tlZC4KKworR2V0Q2FjaGVkUGxhbigpIHB1bnRzIG9uIGxvY2tpbmcg Y2hpbGQgdGFibGVzIGJlY2F1c2Ugbm90IGFsbCBtYXkgYWN0dWFsbHkgYmUKK3NjYW5uZWQgZHVy aW5nIGEgZ2l2ZW4gZXhlY3V0aW9uIG9mIHRoZSBwbGFuIGlmIHRoZSBjaGlsZCB0YWJsZXMgYXJl IHBhcnRpdGlvbnMKK3doaWNoIG1heSBnZXQgcHJ1bmVkIGF3YXkgZHVlIHRvIGV4ZWN1dG9yLWlu aXRpYWxpemF0aW9uLXRpbWUgcHJ1bmluZy4gIFNvIHRoZQorbG9ja2luZyBvZiBjaGlsZCB0YWJs ZXMgbXVzdCB3YWl0IHRpbGwgZXhlY3V0aW9uLWluaXRpYWxpemF0aW9uLXRpbWUsIHdoaWNoCitv Y2N1cnMgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIG9uIHRoZSBwbGFuIG5vZGVzIGNvbnRhaW5pbmcg dGhlIGNoaWxkIHRhYmxlcy4KKworU28sIHRoZXJlJ3MgYSB0aW1lIHdpbmRvdyBkdXJpbmcgd2hp Y2ggYSBjYWNoZWQgcGxhbiB0cmVlIGNvdWxkIGdvIHN0YWxlCitpZiBpdCBjb250YWlucyBjaGls ZCB0YWJsZXMsIGJlY2F1c2UgdGhleSBjb3VsZCBnZXQgY2hhbmdlZCBpbiBvdGhlciBiYWNrZW5k cworYmVmb3JlIEV4ZWNJbml0Tm9kZSgpIGdldHMgYSBsb2NrIG9uIHRoZW0uICBUaGlzIG1lYW5z IHRoZSBleGVjdXRvciBub3cgbXVzdAorY2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBwbGFuIHRy ZWUgZXZlcnkgdGltZSBpdCB0YWtlcyBhIGxvY2sgb24gYSBjaGlsZAordGFibGUgY29udGFpbmVk IGluIHRoZSB0cmVlIChhZnRlciBleGVjdXRvci1pbml0aWFsaXphdGlvbi1wcnVuaW5nLCBpZiBh bnksCitoYXMgYmVlbiBwZXJmb3JtZWQpLCB3aGljaCBpdCBkb2VzIGJ5IGxvb2tpbmcgYXQgQ2Fj aGVkUGxhbi5pc192YWxpZCBvZiB0aGUKK0NhY2hlZFBsYW4gcGFzc2VkIHRvIGl0LiAgSWYgdGhl IHBsYW4gdHJlZSBpcyBpbmRlZWQgc3RhbGUgKGlzX3ZhbGlkPWZhbHNlKSwKK3RoZSBleGVjdXRv ciBtdXN0IGdpdmUgdXAgY29udGludWluZyB0byBpbnRpYXRpYWxpemUgaXQgYW55IGZ1cnRoZXIg YW5kCityZXR1cm4gdG8gdGhlIGNhbGxlciBsZXR0aW5nIGl0IGtub3cgdGhhdCB0aGUgZXhlY3V0 aW9uIG11c3QgYmUgcmV0cmllZCB3aXRoCithIG5ldyBwbGFuIHRyZWUuCisKIAogUXVlcnkgUHJv Y2Vzc2luZyBDb250cm9sIEZsb3cKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0z MDAsNiArMzMyLDExIEBAIFRoaXMgaXMgYSBza2V0Y2ggb2YgY29udHJvbCBmbG93IGZvciBmdWxs IHF1ZXJ5IHByb2Nlc3Npbmc6CiAJCQkJY3JlYXRlcyBwZXItdHVwbGUgY29udGV4dAogCQkJRXhl Y0luaXRFeHByCiAKK0FzIG1lbnRpb25lZCBpbiB0aGUgIlJlbGF0aW9uIExvY2tpbmciIHNlY3Rp b24sIGlmIHRoZSBwbGFuIHRyZWUgaXMgZm91bmQgdG8KK2JlIHN0YWxlIGR1cmluZyBvbmUgb2Yg dGhlIHJlY3Vyc2l2ZSBjYWxscyBvZiBFeGVjSW5pdE5vZGUoKSBzaG93biBhYm92ZSBhZnRlcgor dGFraW5nIGEgbG9jayBvbiBhIGNoaWxkIHRhYmxlLCB0aGUgY29udHJvbCBpcyByZXR1cm5lZCB0 byB0aGUgY2FsbGVyLCB3aGljaAorbXVzdCByZWRvIHRoZSBzdGVwcyBmcm9tIENyZWF0ZVF1ZXJ5 RGVzYyB3aXRoIGEgbmV3IHBsYW4gdHJlZS4KKwogCUV4ZWN1dG9yUnVuCiAJCUV4ZWNQcm9jTm9k ZSAtLS0gcmVjdXJzaXZlbHkgY2FsbGVkIGluIHBlci1xdWVyeSBjb250ZXh0CiAJCQlFeGVjRXZh bEV4cHIgLS0tIGNhbGxlZCBpbiBwZXItdHVwbGUgY29udGV4dApAQCAtMzEwLDcgKzM0Nyw3IEBA IFRoaXMgaXMgYSBza2V0Y2ggb2YgY29udHJvbCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Np bmc6CiAJCUFmdGVyVHJpZ2dlckVuZFF1ZXJ5CiAKIAlFeGVjdXRvckVuZAotCQlFeGVjRW5kTm9k ZSAtLS0gcmVjdXJzaXZlbHkgcmVsZWFzZXMgcmVzb3VyY2VzCisJCUV4ZWNFbmROb2RlIC0tLSBy ZWxlYXNlcyByZXNvdXJjZXMKIAkJRnJlZUV4ZWN1dG9yU3RhdGUKIAkJCWZyZWVzIHBlci1xdWVy eSBjb250ZXh0IGFuZCBjaGlsZCBjb250ZXh0cwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRl eCA0YzVhN2JiZjYyLi5hMmY2YWM5ZDFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTYy MCw2ICs2MjAsMTcgQEAgRXhlY0NoZWNrUGVybWlzc2lvbnMoTGlzdCAqcmFuZ2VUYWJsZSwgTGlz dCAqcnRlcGVybWluZm9zLAogCQlSVEVQZXJtaXNzaW9uSW5mbyAqcGVybWluZm8gPSBsZmlyc3Rf bm9kZShSVEVQZXJtaXNzaW9uSW5mbywgbCk7CiAKIAkJQXNzZXJ0KE9pZElzVmFsaWQocGVybWlu Zm8tPnJlbGlkKSk7CisKKwkJLyoKKwkJICogUmVsYXRpb25zIHdob3NlIHBlcm1pc3Npb25zIG5l ZWQgdG8gYmUgY2hlY2tlZCBtdXN0IGFscmVhZHkgaGF2ZQorCQkgKiBiZWVuIGxvY2tlZCBieSB0 aGUgcGFyc2VyIG9yIGJ5IEdldENhY2hlZFBsYW4oKSBpZiBhIGNhY2hlZCBwbGFuIGlzCisJCSAq IGJlaW5nIGV4ZWN1dGVkLgorCQkgKgorCQkgKiBYWFggc2hvdWxkbid0IHdlIHNraXAgY2FsbGlu ZyBFeGVjQ2hlY2tQZXJtaXNzaW9ucyBmcm9tIEluaXRQbGFuCisJCSAqIGluIGEgcGFyYWxsZWwg d29ya2VyPworCQkgKi8KKwkJQXNzZXJ0KENoZWNrUmVsTG9ja2VkQnlNZShwZXJtaW5mby0+cmVs aWQsIEFjY2Vzc1NoYXJlTG9jaywgdHJ1ZSkgfHwKKwkJCSAgIElzUGFyYWxsZWxXb3JrZXIoKSk7 CiAJCXJlc3VsdCA9IEV4ZWNDaGVja09uZVJlbFBlcm1zKHBlcm1pbmZvKTsKIAkJaWYgKCFyZXN1 bHQpCiAJCXsKQEAgLTgyOSw2ICs4NDAsMjMgQEAgRXhlY0NoZWNrWGFjdFJlYWRPbmx5KFBsYW5u ZWRTdG10ICpwbGFubmVkc3RtdCkKICAqCiAgKgkJSW5pdGlhbGl6ZXMgdGhlIHF1ZXJ5IHBsYW46 IG9wZW4gZmlsZXMsIGFsbG9jYXRlIHN0b3JhZ2UKICAqCQlhbmQgc3RhcnQgdXAgdGhlIHJ1bGUg bWFuYWdlcgorICoKKyAqCisgKiBOb3JtYWxseSwgdGhlIHBsYW4gdHJlZSBnaXZlbiBpbiBxdWVy eURlc2MtPnBsYW5uZWRzdG10IGlzIGtub3duIHRvIGJlCisgKiB2YWxpZCBpbiBhIHJhY2UtZnJl ZSBtYW5uZXIsIHRoYXQgaXMsIGFsbCByZWxhdGlvbnMgY29udGFpbmVkIGluCisgKiBwbGFubmVk c3RtdC0+cmVsYXRpb25PaWRzIHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGxvY2tlZC4gIFRoYXQg aXMgbm90IHRoZQorICogY2FzZSBob3dldmVyIGlmIHRoZSBwbGFubmVkc3RtdCBjb21lcyBmcm9t IGEgQ2FjaGVkUGxhbiwgb25lIGdpdmVuIGluCisgKiBxdWVyeURlc2MtPmNwbGFuLiAgVGhhdCdz IGJlY2F1c2UgR2V0Q2FjaGVkUGxhbigpIG9ubHkgbG9ja3MgdGhlIHRhYmxlcworICogdGhhdCBh cmUgbWVudGlvbmVkIGluIHRoZSBvcmlnaW5hbCBxdWVyeSBidXQgbm90IHRoZSBjaGlsZCB0YWJs ZXMsIHdoaWNoCisgKiB3b3VsZCBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIHBsYW4gYnkgdGhlIHBs YW5uZXIuICBJbiB0aGF0IGNhc2UsIGxvY2tzIG9uCisgKiBjaGlsZCB0YWJsZXMgd2lsbCBiZSB0 YWtlbiB3aGVuIGluaXRpYWxpemluZyB0aGVpciBTY2FuIG5vZGVzIGluCisgKiBFeGVjSW5pdE5v ZGUoKSB0byBiZSBkb25lIGhlcmUuICBJZiB0aGUgQ2FjaGVkUGxhbiBnZXRzIGludmFsaWRhdGVk IGFzCisgKiB0aG9zZSBsb2NrcyBhcmUgdGFrZW4sIHBsYW4gdHJlZSBpbml0aWFsaXphdGlvbiBp cyBzdXNwZW5kZWQgYXQgdGhlIHBvaW50CisgKiB3aGVyZSB0aGUgaW52YWxpZGF0aW9uIGlzIGZp cnN0IGRldGVjdGVkLCBxdWVyeURlc2MtPnBsYW5zdGF0ZSB3aWxsIGJlIHNldAorICogdG8gTlVM TCwgYW5kIHF1ZXJ5RGVzYy0+cGxhbl92YWxpZCB0byBmYWxzZS4gIENhbGxlcnMgbXVzdCByZXRy eSB0aGUKKyAqIGV4ZWN1dGlvbiBhZnRlciBjcmVhdGluZyBhIG5ldyBDYWNoZWRQbGFuIGluIHRo YXQgY2FzZSwgYWZ0ZXIgcHJvcGVybHkKKyAqIHJlbGVhc2luZyB0aGUgcmVzb3VyY2VzIG9mIHRo aXMgUXVlcnlEZXNjLCB3aGljaCBpbmNsdWRlcyBjYWxsaW5nCisgKiBFeGVjdXRvckZpbmlzaCgp IGFuZCBFeGVjdXRvckVuZCgpIG9uIHRoZSBFU3RhdGUgY29udGFpbmVkIHRoZXJlaW4uCiAgKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC04MzksNyArODY3LDcgQEAgSW5pdFBsYW4oUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJUGxhbgkgICAqcGxhbiA9IHBsYW5uZWRz dG10LT5wbGFuVHJlZTsKIAlMaXN0CSAgICpyYW5nZVRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJs ZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0YXRlOwotCVBsYW5TdGF0ZSAg KnBsYW5zdGF0ZTsKKwlQbGFuU3RhdGUgICpwbGFuc3RhdGUgPSBOVUxMOwogCVR1cGxlRGVzYwl0 dXBUeXBlOwogCUxpc3RDZWxsICAgKmw7CiAJaW50CQkJaTsKQEAgLTg1MCwxMCArODc4LDExIEBA IEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCUV4ZWNDaGVja1Bl cm1pc3Npb25zKHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MsIHRydWUpOwogCiAJ LyoKLQkgKiBpbml0aWFsaXplIHRoZSBub2RlJ3MgZXhlY3V0aW9uIHN0YXRlCisJICogU2V0IHVw IHJhbmdlIHRhYmxlIGluIEVTdGF0ZS4KIAkgKi8KIAlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRl LCByYW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVybUluZm9zKTsKIAorCWVzdGF0ZS0+ZXNfY2Fj aGVkcGxhbiA9IHF1ZXJ5RGVzYy0+Y3BsYW47CiAJZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IHBs YW5uZWRzdG10OwogCiAJLyoKQEAgLTg4Niw2ICs5MTUsOCBAQCBJbml0UGxhbihRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCQljYXNlIFJPV19NQVJLX0tFWVNIQVJFOgogCQkJ CWNhc2UgUk9XX01BUktfUkVGRVJFTkNFOgogCQkJCQlyZWxhdGlvbiA9IEV4ZWNHZXRSYW5nZVRh YmxlUmVsYXRpb24oZXN0YXRlLCByYy0+cnRpKTsKKwkJCQkJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwkJCQkJCWdvdG8gcGxhbl9pbml0X3N1c3BlbmRlZDsKIAkJCQkJYnJlYWs7 CiAJCQkJY2FzZSBST1dfTUFSS19DT1BZOgogCQkJCQkvKiBubyBwaHlzaWNhbCB0YWJsZSBhY2Nl c3MgaXMgcmVxdWlyZWQgKi8KQEAgLTk1Myw2ICs5ODQsMTEgQEAgSW5pdFBsYW4oUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlzcF9lZmxhZ3MgfD0gRVhFQ19GTEFHX1JFV0lO RDsKIAogCQlzdWJwbGFuc3RhdGUgPSBFeGVjSW5pdE5vZGUoc3VicGxhbiwgZXN0YXRlLCBzcF9l ZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQl7CisJCQlBc3Nl cnQoc3VicGxhbnN0YXRlID09IE5VTEwpOworCQkJZ290byBwbGFuX2luaXRfc3VzcGVuZGVkOwor CQl9CiAKIAkJZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzID0gbGFwcGVuZChlc3RhdGUtPmVzX3N1 YnBsYW5zdGF0ZXMsCiAJCQkJCQkJCQkJICAgc3VicGxhbnN0YXRlKTsKQEAgLTk2Niw2ICsxMDAy LDExIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCSAqIHBy b2Nlc3NpbmcgdHVwbGVzLgogCSAqLwogCXBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShwbGFuLCBl c3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwl7CisJ CUFzc2VydChwbGFuc3RhdGUgPT0gTlVMTCk7CisJCWdvdG8gcGxhbl9pbml0X3N1c3BlbmRlZDsK Kwl9CiAKIAkvKgogCSAqIEdldCB0aGUgdHVwbGUgZGVzY3JpcHRvciBkZXNjcmliaW5nIHRoZSB0 eXBlIG9mIHR1cGxlcyB0byByZXR1cm4uCkBAIC0xMDA4LDcgKzEwNDksMTkgQEAgSW5pdFBsYW4o UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJfQogCiAJcXVlcnlEZXNjLT50dXBE ZXNjID0gdHVwVHlwZTsKKwlBc3NlcnQocGxhbnN0YXRlICE9IE5VTEwpOwogCXF1ZXJ5RGVzYy0+ cGxhbnN0YXRlID0gcGxhbnN0YXRlOworCXF1ZXJ5RGVzYy0+cGxhbl92YWxpZCA9IHRydWU7CisJ cmV0dXJuOworCitwbGFuX2luaXRfc3VzcGVuZGVkOgorCS8qCisJICogUGxhbiBpbml0aWFsaXph dGlvbiBmYWlsZWQuICBNYXJrIFF1ZXJ5RGVzYyBhcyBzdWNoLiAgRXhlY0VuZFBsYW4oKQorCSAq IHdpbGwgY2xlYW4gdXAgaW5pdGlhbGl6ZWQgcGxhbiBub2RlcyBmcm9tIGVzdGF0ZS0+ZXNfaW5p dGVkX3BsYW5ub2Rlcy4KKwkgKi8KKwlBc3NlcnQocGxhbnN0YXRlID09IE5VTEwpOworCXF1ZXJ5 RGVzYy0+cGxhbnN0YXRlID0gTlVMTDsKKwlxdWVyeURlc2MtPnBsYW5fdmFsaWQgPSBmYWxzZTsK IH0KIAogLyoKQEAgLTE0MjYsNyArMTQ3OSw3IEBAIEV4ZWNHZXRBbmNlc3RvclJlc3VsdFJlbHMo RVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pCiAKIAkJCS8qCiAJ CQkgKiBBbGwgYW5jZXN0b3JzIHVwIHRvIHRoZSByb290IHRhcmdldCByZWxhdGlvbiBtdXN0IGhh dmUgYmVlbgotCQkJICogbG9ja2VkIGJ5IHRoZSBwbGFubmVyIG9yIEFjcXVpcmVFeGVjdXRvckxv Y2tzKCkuCisJCQkgKiBsb2NrZWQgYnkgdGhlIHBsYW5uZXIgb3IgRXhlY0xvY2tBcHBlbmROb25M ZWFmUmVsYXRpb25zKCkuCiAJCQkgKi8KIAkJCWFuY1JlbCA9IHRhYmxlX29wZW4oYW5jT2lkLCBO b0xvY2spOwogCQkJckluZm8gPSBtYWtlTm9kZShSZXN1bHRSZWxJbmZvKTsKQEAgLTE1MDQsMTgg KzE1NTcsMTUgQEAgRXhlY0VuZFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0 YXRlKQogCUxpc3RDZWxsICAgKmw7CiAKIAkvKgotCSAqIHNodXQgZG93biB0aGUgbm9kZS10eXBl LXNwZWNpZmljIHF1ZXJ5IHByb2Nlc3NpbmcKKwkgKiBTaHV0IGRvd24gdGhlIG5vZGUtdHlwZS1z cGVjaWZpYyBxdWVyeSBwcm9jZXNzaW5nIGZvciBhbGwgbm9kZXMgdGhhdAorCSAqIHdlcmUgaW5p dGlhbGl6ZWQgZHVyaW5nIEluaXRQbGFuKCksIGJvdGggaW4gdGhlIG1haW4gcGxhbiB0cmVlIGFu ZCB0aG9zZQorCSAqIGluIHN1YnBsYW5zIChlc19zdWJwbGFuc3RhdGVzKSwgaWYgYW55LgogCSAq LwotCUV4ZWNFbmROb2RlKHBsYW5zdGF0ZSk7Ci0KLQkvKgotCSAqIGZvciBzdWJwbGFucyB0b28K LQkgKi8KLQlmb3JlYWNoKGwsIGVzdGF0ZS0+ZXNfc3VicGxhbnN0YXRlcykKKwlmb3JlYWNoKGws IGVzdGF0ZS0+ZXNfaW5pdGVkX3BsYW5ub2RlcykKIAl7Ci0JCVBsYW5TdGF0ZSAgKnN1YnBsYW5z dGF0ZSA9IChQbGFuU3RhdGUgKikgbGZpcnN0KGwpOworCQlQbGFuU3RhdGUgICpwc3RhdGUgPSAo UGxhblN0YXRlICopIGxmaXJzdChsKTsKIAotCQlFeGVjRW5kTm9kZShzdWJwbGFuc3RhdGUpOwor CQlFeGVjRW5kTm9kZShwc3RhdGUpOwogCX0KIAogCS8qCkBAIC0yODU4LDcgKzI5MDgsOCBAQCBF dmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCSAq IENoaWxkIEVQUSBFU3RhdGVzIHNoYXJlIHRoZSBwYXJlbnQncyBjb3B5IG9mIHVuY2hhbmdpbmcg c3RhdGUgc3VjaCBhcwogCSAqIHRoZSBzbmFwc2hvdCwgcmFuZ2V0YWJsZSwgYW5kIGV4dGVybmFs IFBhcmFtIGluZm8uICBUaGV5IG5lZWQgdGhlaXIgb3duCiAJICogY29waWVzIG9mIGxvY2FsIHN0 YXRlLCBpbmNsdWRpbmcgYSB0dXBsZSB0YWJsZSwgZXNfcGFyYW1fZXhlY192YWxzLAotCSAqIHJl c3VsdC1yZWwgaW5mbywgZXRjLgorCSAqIHJlc3VsdC1yZWwgaW5mbywgZXRjLiAgQWxzbywgd2Ug ZG9uJ3QgcGFzcyB0aGUgcGFyZW50J3QgY29weSBvZiB0aGUKKwkgKiBDYWNoZWRQbGFuLCBiZWNh dXNlIG5vIG5ldyBsb2NrcyB3aWxsIGJlIHRha2VuIGZvciBFdmFsUGxhblF1YWwoKS4KIAkgKi8K IAlyY2VzdGF0ZS0+ZXNfZGlyZWN0aW9uID0gRm9yd2FyZFNjYW5EaXJlY3Rpb247CiAJcmNlc3Rh dGUtPmVzX3NuYXBzaG90ID0gcGFyZW50ZXN0YXRlLT5lc19zbmFwc2hvdDsKQEAgLTI5NDUsNiAr Mjk5NiwxMiBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBs YW5UcmVlKQogCQlQbGFuU3RhdGUgICpzdWJwbGFuc3RhdGU7CiAKIAkJc3VicGxhbnN0YXRlID0g RXhlY0luaXROb2RlKHN1YnBsYW4sIHJjZXN0YXRlLCAwKTsKKworCQkvKgorCQkgKiBBdCB0aGlz IHBvaW50LCB3ZSBoYWQgYmV0dGVyIG5vdCByZWNlaXZlZCBhbnkgbmV3IGludmFsaWRhdGlvbgor CQkgKiBtZXNzYWdlcyB0aGF0IHdvdWxkIGhhdmUgY2F1c2VkIHRoZSBwbGFuIHRyZWUgdG8gZ28g c3RhbGUuCisJCSAqLworCQlBc3NlcnQoRXhlY1BsYW5TdGlsbFZhbGlkKHJjZXN0YXRlKSAmJiBz dWJwbGFuc3RhdGUpOwogCQlyY2VzdGF0ZS0+ZXNfc3VicGxhbnN0YXRlcyA9IGxhcHBlbmQocmNl c3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJCQkJCQkJCSBzdWJwbGFuc3RhdGUpOwogCX0K QEAgLTI5ODgsNiArMzA0NSwxMiBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3Rh dGUsIFBsYW4gKnBsYW5UcmVlKQogCSAqLwogCWVwcXN0YXRlLT5yZWNoZWNrcGxhbnN0YXRlID0g RXhlY0luaXROb2RlKHBsYW5UcmVlLCByY2VzdGF0ZSwgMCk7CiAKKwkvKgorCSAqIEF0IHRoaXMg cG9pbnQsIHdlIGhhZCBiZXR0ZXIgbm90IHJlY2VpdmVkIGFueSBuZXcgaW52YWxpZGF0aW9uIG1l c3NhZ2VzCisJICogdGhhdCB3b3VsZCBoYXZlIGNhdXNlZCB0aGUgcGxhbiB0cmVlIHRvIGdvIHN0 YWxlLgorCSAqLworCUFzc2VydChFeGVjUGxhblN0aWxsVmFsaWQocmNlc3RhdGUpICYmIGVwcXN0 YXRlLT5yZWNoZWNrcGxhbnN0YXRlKTsKKwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250 ZXh0KTsKIH0KIApAQCAtMzAxMCw2ICszMDczLDEwIEBAIEV2YWxQbGFuUXVhbEVuZChFUFFTdGF0 ZSAqZXBxc3RhdGUpCiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCUxpc3RDZWxsICAgKmw7 CiAKKwkvKiBOb3RoaW5nIHRvIGRvIGlmIEV2YWxQbGFuUXVhbEluaXQoKSB3YXNuJ3QgZG9uZSB0 byBiZWdpbiB3aXRoLiAqLworCWlmIChlcHFzdGF0ZS0+cGFyZW50ZXN0YXRlID09IE5VTEwpCisJ CXJldHVybjsKKwogCXJ0c2l6ZSA9IGVwcXN0YXRlLT5wYXJlbnRlc3RhdGUtPmVzX3JhbmdlX3Rh YmxlX3NpemU7CiAKIAkvKgpAQCAtMzAzMCwxMyArMzA5NywxNiBAQCBFdmFsUGxhblF1YWxFbmQo RVBRU3RhdGUgKmVwcXN0YXRlKQogCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CiAKLQlFeGVjRW5kTm9kZShlcHFzdGF0ZS0+cmVjaGVj a3BsYW5zdGF0ZSk7Ci0KLQlmb3JlYWNoKGwsIGVzdGF0ZS0+ZXNfc3VicGxhbnN0YXRlcykKKwkv KgorCSAqIFNodXQgZG93biB0aGUgbm9kZS10eXBlLXNwZWNpZmljIHF1ZXJ5IHByb2Nlc3Npbmcg Zm9yIGFsbCBub2RlcyB0aGF0CisJICogd2VyZSBpbml0aWFsaXplZCBkdXJpbmcgRXZhbFBsYW5R dWFsU3RhcnQoKSwgYm90aCBpbiB0aGUgbWFpbiBwbGFuIHRyZWUKKwkgKiBhbmQgdGhvc2UgaW4g c3VicGxhbnMgKGVzX3N1YnBsYW5zdGF0ZXMpLCBpZiBhbnkuCisJICovCisJZm9yZWFjaChsLCBl c3RhdGUtPmVzX2luaXRlZF9wbGFubm9kZXMpCiAJewotCQlQbGFuU3RhdGUgICpzdWJwbGFuc3Rh dGUgPSAoUGxhblN0YXRlICopIGxmaXJzdChsKTsKKwkJUGxhblN0YXRlICAqcGxhbnN0YXRlID0g KFBsYW5TdGF0ZSAqKSBsZmlyc3QobCk7CiAKLQkJRXhlY0VuZE5vZGUoc3VicGxhbnN0YXRlKTsK KwkJRXhlY0VuZE5vZGUocGxhbnN0YXRlKTsKIAl9CiAKIAkvKiB0aHJvdyBhd2F5IHRoZSBwZXIt ZXN0YXRlIHR1cGxlIHRhYmxlLCBzb21lIG5vZGUgbWF5IGhhdmUgdXNlZCBpdCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBjYzJiOGNjYWI3Li40MmRmN2I2NDI4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTI0OCw4ICsxMjQ4LDE3IEBAIEV4ZWNQ YXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIs CiAJcGFyYW1zcGFjZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUkFNTElT VElORk8sIGZhbHNlKTsKIAlwYXJhbUxJID0gUmVzdG9yZVBhcmFtTGlzdCgmcGFyYW1zcGFjZSk7 CiAKLQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KKwkvKgorCSAqIENy ZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAgTm90ZSB0aGF0IG5vIENhY2hlZFBsYW4g aXMgYXZhaWxhYmxlCisJICogaGVyZSBldmVuIGlmIHRoZSBsZWFkZXIgbWF5IGhhdmUgZ290dGVu IHRoZSBwbGFuIHRyZWUgZnJvbSBvbmUuICBUaGF0J3MKKwkgKiBmaW5lIHRob3VnaCwgYmVjYXVz ZSB0aGUgbGVhZGVyIHdvdWxkIGhhdmUgdGFrZW4gdGhlIGxvY2tzIG5lY2Vzc2FyeQorCSAqIGZv ciB0aGUgcGxhbiB0cmVlIHRoYXQgd2UgaGF2ZSBoZXJlIHRvIGJlIGZ1bGx5IHZhbGlkLiAgVGhh dCBpcyB0cnVlCisJICogZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHdlIHdpbGwgYmUgdGFraW5nIG91 ciBvd24gY29waWVzIG9mIHRob3NlIGxvY2tzCisJICogaW4gRXhlY0dldFJhbmdlVGFibGVSZWxh dGlvbigpLCBiZWNhdXNlIG5vbmUgb2YgdGhlbSB3b3VsZCBiZSB0aGUgbG9ja3MKKwkgKiB0aGF0 IGFyZSBub3QgYWxyZWFkeSB0YWtlbiBieSB0aGUgbGVhZGVyLgorCSAqLwogCXJldHVybiBDcmVh dGVRdWVyeURlc2MocHN0bXQsCisJCQkJCQkgICBOVUxMLAogCQkJCQkJICAgcXVlcnlTdHJpbmcs CiAJCQkJCQkgICBHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkg ICByZWNlaXZlciwgcGFyYW1MSSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKQEAgLTE0MzEs NiArMTQ0MCw3IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2Mg KnRvYykKIAkvKiBTdGFydCB1cCB0aGUgZXhlY3V0b3IgKi8KIAlxdWVyeURlc2MtPnBsYW5uZWRz dG10LT5qaXRGbGFncyA9IGZwZXMtPmppdF9mbGFnczsKIAlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVz YywgZnBlcy0+ZWZsYWdzKTsKKwlBc3NlcnQocXVlcnlEZXNjLT5wbGFuX3ZhbGlkKTsKIAogCS8q IFNwZWNpYWwgZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24gc3RlcHMgZm9yIHBhcmFsbGVsIHdvcmtl cnMgKi8KIAlxdWVyeURlc2MtPnBsYW5zdGF0ZS0+c3RhdGUtPmVzX3F1ZXJ5X2RzYSA9IGFyZWE7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggZWI4YTg3ZmQ2My4uY2Y3M2Qy OGJhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtNTEzLDYgKzUxMywx MyBAQCBFeGVjSW5pdFBhcnRpdGlvbkluZm8oTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0 YXRlICplc3RhdGUsCiAKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJvdXRlLT5t ZW1jeHQpOwogCisJLyoKKwkgKiBOb3RlIHRoYXQgd2hpbGUgd2Ugbm9ybWFsbHkgY2hlY2sgRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkgYWZ0ZXIgZWFjaAorCSAqIGxvY2sgdGFrZW4gZHVyaW5n IGV4ZWN1dGlvbiBpbml0aWFsaXphdGlvbiwgaXQgaXMgZmluZSBub3QgZG8gc28gZm9yCisJICog cGFydGl0aW9ucyBvcGVuZWQgaGVyZSwgZm9yIHR1cGxlIHJvdXRpbmcuICBMb2NrcyB0YWtlbiBo ZXJlIGNhbid0CisJICogcG9zc2libHkgaW52YWxpZGF0ZSB0aGUgcGxhbiBnaXZlbiB0aGF0IHRo ZSBwbGFuIGRvZXNuJ3QgY29udGFpbiBhbnkKKwkgKiBpbmZvIGFib3V0IHRob3NlIHBhcnRpdGlv bnMuCisJICovCiAJcGFydHJlbCA9IHRhYmxlX29wZW4ocGFydE9pZCwgUm93RXhjbHVzaXZlTG9j ayk7CiAKIAlsZWFmX3BhcnRfcnJpID0gbWFrZU5vZGUoUmVzdWx0UmVsSW5mbyk7CkBAIC0xMTEx LDYgKzExMTgsOSBAQCBFeGVjSW5pdFBhcnRpdGlvbkRpc3BhdGNoSW5mbyhFU3RhdGUgKmVzdGF0 ZSwKIAkgKiBPbmx5IHN1Yi1wYXJ0aXRpb25lZCB0YWJsZXMgbmVlZCB0byBiZSBsb2NrZWQgaGVy ZS4gIFRoZSByb290CiAJICogcGFydGl0aW9uZWQgdGFibGUgd2lsbCBhbHJlYWR5IGhhdmUgYmVl biBsb2NrZWQgYXMgaXQncyByZWZlcmVuY2VkIGluCiAJICogdGhlIHF1ZXJ5J3MgcnRhYmxlLgor CSAqCisJICogU2VlIHRoZSBjb21tZW50IGluIEV4ZWNJbml0UGFydGl0aW9uSW5mbygpIGFib3V0 IHRha2luZyBsb2NrcyBhbmQKKwkgKiBub3QgY2hlY2tpbmcgRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkgaGVyZS4KIAkgKi8KIAlpZiAocGFydG9pZCAhPSBSZWxhdGlvbkdldFJlbGlkKHByb3V0 ZS0+cGFydGl0aW9uX3Jvb3QpKQogCQlyZWwgPSB0YWJsZV9vcGVuKHBhcnRvaWQsIFJvd0V4Y2x1 c2l2ZUxvY2spOwpAQCAtMTgwMSw2ICsxODExLDggQEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5n KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCiAJLyogQ3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3Ry dWN0dXJlIGZvciBwcnVuaW5nICovCiAJcHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5l U3RhdGUocGxhbnN0YXRlLCBwcnVuZWluZm8pOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFy dGl0aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVkLgpAQCAtMTkyNyw2ICsxOTM5LDggQEAgQ3Jl YXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1 bmVJbmZvICpwcnVuZWluZm8pCiAJCQkgKiBkdXJhdGlvbiBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4K IAkJCSAqLwogCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBw aW5mby0+cnRpbmRleCk7CisJCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJ CXJldHVybiBOVUxMOwogCQkJcGFydGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRy ZWwpOwogCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoZXN0YXRlLT5lc19w YXJ0aXRpb25fZGlyZWN0b3J5LAogCQkJCQkJCQkJCQkJcGFydHJlbCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQcm9jbm9kZS5jCmluZGV4IDRkMjg4YmM4ZDQuLmYzYmIxZDQ1OTEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC0xMzUsNyArMTM1LDE3IEBAIHN0YXRpYyBib29sIEV4 ZWNTaHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CiAg KgkJICAnZXN0YXRlJyBpcyB0aGUgc2hhcmVkIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgdGhlIHBsYW4g dHJlZQogICoJCSAgJ2VmbGFncycgaXMgYSBiaXR3aXNlIE9SIG9mIGZsYWcgYml0cyBkZXNjcmli ZWQgaW4gZXhlY3V0b3IuaAogICoKLSAqCQlSZXR1cm5zIGEgUGxhblN0YXRlIG5vZGUgY29ycmVz cG9uZGluZyB0byB0aGUgZ2l2ZW4gUGxhbiBub2RlLgorICoJCVJldHVybnMgYSBQbGFuU3RhdGUg bm9kZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBQbGFuIG5vZGUgb3IgTlVMTC4KKyAqCisg KgkJTlVMTCBtYXkgYmUgcmV0dXJuZWQgZWl0aGVyIGlmIHRoZSBpbnB1dCBub2RlIGlzIE5VTEwg b3IgaWYgdGhlIHBsYW4KKyAqCQl0cmVlIHRoYXQgdGhlIG5vZGUgaXMgYSBwYXJ0IG9mIGlzIGZv dW5kIHRvIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCB3aGVuCisgKgkJdGFraW5nIGEgbG9jayBvbiB0 aGUgcmVsYXRpb24gbWVudGlvbmVkIGluIHRoZSBub2RlIG9yIGluIGEgY2hpbGQKKyAqCQlub2Rl LiAgVGhlIGxhdHRlciBjYXNlIGFyaXNlcyBpZiB0aGUgcGxhbiB0cmVlIGNvbnRhaW5zIGluaGVy aXRhbmNlLworICoJCXBhcnRpdGlvbiBjaGlsZCB0YWJsZXMgYW5kIGlzIGZyb20gYSBDYWNoZWRQ bGFuLgorICoKKyAqCQlBbHNvLCBhbGwgbm9uLU5VTEwgUGxhblN0YXRlIG5vZGVzIGFyZSBhZGRl ZCB0bworICoJCWVzdGF0ZS0+ZXNfaW5pdGVkX3BsYW5ub2RlcyBmb3IgRXhlY0VuZFBsYW4oKSB0 byBpdGVyYXRlIG92ZXIgdG8gY2xvc2UKKyAqCQllYWNoIG9uZSB1c2luZyBFeGVjRW5kTm9kZSgp LgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIFBsYW5TdGF0ZSAqCkBAIC0zODgsNiArMzk4LDEz IEBAIEV4ZWNJbml0Tm9kZShQbGFuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkJCWJyZWFrOwogCX0KIAorCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJewor CQlBc3NlcnQocmVzdWx0ID09IE5VTEwpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlBc3NlcnQo cmVzdWx0ICE9IE5VTEwpOwogCUV4ZWNTZXRFeGVjUHJvY05vZGUocmVzdWx0LCByZXN1bHQtPkV4 ZWNQcm9jTm9kZSk7CiAKIAkvKgpAQCAtNDExLDYgKzQyOCwxMyBAQCBFeGVjSW5pdE5vZGUoUGxh biAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCXJlc3VsdC0+aW5zdHJ1bWVu dCA9IEluc3RyQWxsb2MoMSwgZXN0YXRlLT5lc19pbnN0cnVtZW50LAogCQkJCQkJCQkJCXJlc3Vs dC0+YXN5bmNfY2FwYWJsZSk7CiAKKwkvKgorCSAqIFJlbWVtYmVyIHZhbGlkIFBsYW5TdGF0ZSBu b2RlcyBpbiBFU3RhdGUgZm9yIHRoZSBwcm9jZXNzaW5nIGluCisJICogRXhlY0VuZFBsYW4oKS4K KwkgKi8KKwllc3RhdGUtPmVzX2luaXRlZF9wbGFubm9kZXMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNf aW5pdGVkX3BsYW5ub2RlcywKKwkJCQkJCQkJCQkgIHJlc3VsdCk7CisKIAlyZXR1cm4gcmVzdWx0 OwogfQogCkBAIC01NDUsMjkgKzU2OSwyMSBAQCBNdWx0aUV4ZWNQcm9jTm9kZShQbGFuU3RhdGUg Km5vZGUpCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY0VuZE5vZGUKICAqCi0gKgkJUmVjdXJzaXZlbHkg Y2xlYW5zIHVwIGFsbCB0aGUgbm9kZXMgaW4gdGhlIHBsYW4gcm9vdGVkCi0gKgkJYXQgJ25vZGUn LgorICoJCUNsZWFucyB1cCBub2RlCiAgKgotICoJCUFmdGVyIHRoaXMgb3BlcmF0aW9uLCB0aGUg cXVlcnkgcGxhbiB3aWxsIG5vdCBiZSBhYmxlIHRvIGJlCi0gKgkJcHJvY2Vzc2VkIGFueSBmdXJ0 aGVyLiAgVGhpcyBzaG91bGQgYmUgY2FsbGVkIG9ubHkgYWZ0ZXIKKyAqCQlDaGlsZCBub2Rlcywg aWYgYW55LCB3b3VsZCBoYXZlIGJlZW4gY2xvc2VkIGJ5IHRoZSBjYWxsZXIsIHNvIHRoZQorICoJ CUV4ZWNFbmQqIHJvdXRpbmUgZm9yIGEgZ2l2ZW4gbm9kZSB0eXBlIGlzIG9ubHkgcmVzcG9uc2li bGUgZm9yCisgKgkJY2xlYW5pbmcgdXAgdGhlIHJlc291cmNlcyBsb2NhbCB0byB0aGF0IG5vZGUu CisgKgorICoJCUFmdGVyIHRoaXMgb3BlcmF0aW9uLCB0aGUgcXVlcnkgcGxhbiBjb250YWluaW5n IHRoaXMgbm9kZSB3aWxsIG5vdCBiZQorICoJCWFibGUgdG8gYmUgcHJvY2Vzc2VkIGFueSBmdXJ0 aGVyLiAgVGhpcyBzaG91bGQgYmUgY2FsbGVkIG9ubHkgYWZ0ZXIKICAqCQl0aGUgcXVlcnkgcGxh biBoYXMgYmVlbiBmdWxseSBleGVjdXRlZC4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogdm9pZAogRXhlY0Vu ZE5vZGUoUGxhblN0YXRlICpub2RlKQogewotCS8qCi0JICogZG8gbm90aGluZyB3aGVuIHdlIGdl dCB0byB0aGUgZW5kIG9mIGEgbGVhZiBvbiB0cmVlLgotCSAqLwotCWlmIChub2RlID09IE5VTEwp Ci0JCXJldHVybjsKLQotCS8qCi0JICogTWFrZSBzdXJlIHRoZXJlJ3MgZW5vdWdoIHN0YWNrIGF2 YWlsYWJsZS4gTmVlZCB0byBjaGVjayBoZXJlLCBpbgotCSAqIGFkZGl0aW9uIHRvIEV4ZWNQcm9j Tm9kZSgpICh2aWEgRXhlY1Byb2NOb2RlRmlyc3QoKSksIGJlY2F1c2UgaXQncyBub3QKLQkgKiBn dWFyYW50ZWVkIHRoYXQgRXhlY1Byb2NOb2RlKCkgaXMgcmVhY2hlZCBmb3IgYWxsIG5vZGVzLgot CSAqLwotCWNoZWNrX3N0YWNrX2RlcHRoKCk7CisJQXNzZXJ0KG5vZGUgIT0gTlVMTCk7CiAKIAlp ZiAobm9kZS0+Y2hnUGFyYW0gIT0gTlVMTCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmlu ZGV4IGMwNmIyMjg4NTguLmFmOTJkMmIzYzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBA IC04MDQsNyArODA0LDI1IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3Rh dGUsIEluZGV4IHJ0aSkKIAogCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7 CiAKLQkJaWYgKCFJc1BhcmFsbGVsV29ya2VyKCkpCisJCWlmIChJc1BhcmFsbGVsV29ya2VyKCkg fHwKKwkJCShlc3RhdGUtPmVzX2NhY2hlZHBsYW4gIT0gTlVMTCAmJiAhcnRlLT5pbkZyb21DbCkp CisJCXsKKwkJCS8qCisJCQkgKiBUYWtlIGEgbG9jayBpZiB3ZSBhcmUgYSBwYXJhbGxlbCB3b3Jr ZXIgb3IgaWYgdGhpcyBpcyBhIGNoaWxkCisJCQkgKiB0YWJsZSByZWZlcmVuY2VkIGluIGEgY2Fj aGVkIHBsYW4uCisJCQkgKgorCQkJICogUGFyYWxsZWwgd29ya2VycyBuZWVkIHRvIGhhdmUgdGhl aXIgb3duIGxvY2FsIGxvY2sgb24gdGhlCisJCQkgKiByZWxhdGlvbi4gIFRoaXMgZW5zdXJlcyBz YW5lIGJlaGF2aW9yIGluIGNhc2UgdGhlIHBhcmVudCBwcm9jZXNzCisJCQkgKiBleGl0cyBiZWZv cmUgd2UgZG8uCisJCQkgKgorCQkJICogV2hlbiBleGVjdXRpbmcgYSBjYWNoZWQgcGxhbiwgY2hp bGQgdGFibGVzIG11c3QgYmUgbG9ja2VkCisJCQkgKiBoZXJlLCBiZWNhdXNlIHBsYW5jYWNoZS5j IChHZXRDYWNoZWRQbGFuKCkpIHdvdWxkIG9ubHkgaGF2ZQorCQkJICogbG9ja2VkIHRhYmxlcyBt ZW50aW9uZWQgaW4gdGhlIHF1ZXJ5LCB0aGF0IGlzLCB0YWJsZXMgd2hvc2UKKwkJCSAqIFJURXMn IGluRnJvbUNsIGlzIHRydWUuCisJCQkgKi8KKwkJCXJlbCA9IHRhYmxlX29wZW4ocnRlLT5yZWxp ZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCX0KKwkJZWxzZQogCQl7CiAJCQkvKgogCQkJICogSW4g YSBub3JtYWwgcXVlcnksIHdlIHNob3VsZCBhbHJlYWR5IGhhdmUgdGhlIGFwcHJvcHJpYXRlIGxv Y2ssCkBAIC04MTcsMTUgKzgzNSw2IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRl ICplc3RhdGUsIEluZGV4IHJ0aSkKIAkJCUFzc2VydChydGUtPnJlbGxvY2ttb2RlID09IEFjY2Vz c1NoYXJlTG9jayB8fAogCQkJCSAgIENoZWNrUmVsYXRpb25Mb2NrZWRCeU1lKHJlbCwgcnRlLT5y ZWxsb2NrbW9kZSwgZmFsc2UpKTsKIAkJfQotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBJZiB3 ZSBhcmUgYSBwYXJhbGxlbCB3b3JrZXIsIHdlIG5lZWQgdG8gb2J0YWluIG91ciBvd24gbG9jYWwK LQkJCSAqIGxvY2sgb24gdGhlIHJlbGF0aW9uLiAgVGhpcyBlbnN1cmVzIHNhbmUgYmVoYXZpb3Ig aW4gY2FzZSB0aGUKLQkJCSAqIHBhcmVudCBwcm9jZXNzIGV4aXRzIGJlZm9yZSB3ZSBkby4KLQkJ CSAqLwotCQkJcmVsID0gdGFibGVfb3BlbihydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsK LQkJfQogCiAJCWVzdGF0ZS0+ZXNfcmVsYXRpb25zW3J0aSAtIDFdID0gcmVsOwogCX0KQEAgLTgz Myw2ICs4NDIsMzggQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwg SW5kZXggcnRpKQogCXJldHVybiByZWw7CiB9CiAKKy8qCisgKiBFeGVjTG9ja0FwcGVuZE5vbkxl YWZSZWxhdGlvbnMKKyAqCQlMb2NrIG5vbi1sZWFmIHJlbGF0aW9ucyB3aG9zZSBjaGlsZHJlbiBh cmUgc2Nhbm5lZCBieSBhIGdpdmVuCisgKgkJQXBwZW5kL01lcmdlQXBwZW5kIG5vZGUKKyAqLwor dm9pZAorRXhlY0xvY2tBcHBlbmROb25MZWFmUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlLCBMaXN0 ICphbGxwYXJ0cmVsaWRzKQoreworCUxpc3RDZWxsICpsOworCisJLyogVGhpcyBzaG91bGQgZ2V0 IGNhbGxlZCBvbmx5IHdoZW4gZXhlY3V0aW5nIGNhY2hlZCBwbGFucy4gKi8KKwlBc3NlcnQoZXN0 YXRlLT5lc19jYWNoZWRwbGFuICE9IE5VTEwpOworCWZvcmVhY2gobCwgYWxscGFydHJlbGlkcykK Kwl7CisJCUJpdG1hcHNldCAqcGFydHJlbGlkcyA9IGxmaXJzdF9ub2RlKEJpdG1hcHNldCwgbCk7 CisJCWludAkJaTsKKworCQkvKgorCQkgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbG9jayB0aGUgZmly c3QgbWVtYmVyIChpPTApIG9mIGVhY2ggYml0bWFwc2V0CisJCSAqIGJlY2F1c2UgaXQgc3RhbmRz IGZvciB0aGUgcm9vdCBwYXJlbnQgbWVudGlvbmVkIGluIHRoZSBxdWVyeSB0aGF0CisJCSAqIHNo b3VsZCBhbHdheXMgaGF2ZSBiZWVuIGxvY2tlZCBiZWZvcmUgZW50ZXJpbmcgdGhlIGV4ZWN1dG9y LgorCQkgKi8KKwkJaSA9IDA7CisJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihwYXJ0cmVs aWRzLCBpKSkgPiAwKQorCQl7CisJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBleGVjX3J0X2ZldGNo KGksIGVzdGF0ZSk7CisKKwkJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxv Y2ttb2RlKTsKKwkJfQorCX0KK30KKwogLyoKICAqIEV4ZWNJbml0UmVzdWx0UmVsYXRpb24KICAq CQlPcGVuIHJlbGF0aW9uIGdpdmVuIGJ5IHRoZSBwYXNzZWQtaW4gUlQgaW5kZXggYW5kIGZpbGwg aXRzCkBAIC04NDgsNiArODg5LDggQEAgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVz dGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAlSZWxhdGlvbglyZXN1bHRSZWxh dGlvbkRlc2M7CiAKIAlyZXN1bHRSZWxhdGlvbkRlc2MgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0 aW9uKGVzdGF0ZSwgcnRpKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQly ZXR1cm47CiAJSW5pdFJlc3VsdFJlbEluZm8ocmVzdWx0UmVsSW5mbywKIAkJCQkJICByZXN1bHRS ZWxhdGlvbkRlc2MsCiAJCQkJCSAgcnRpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCBm NTU0MjRlYjVhLi5jODhmNzJiYzRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9m dW5jdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtODM4 LDYgKzgzOCw3IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0 aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCWVzLT5xZCA9 IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwKKwkJCQkJCQkgTlVMTCwJLyogZm1ncl9zcWwoKSBk b2Vzbid0IHVzZSBDYWNoZWRQbGFucyAqLwogCQkJCQkJCSBmY2FjaGUtPnNyYywKIAkJCQkJCQkg R2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LApAQCAtODYzLDYg Kzg2NCw3IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9u Q2FjaGVQdHIgZmNhY2hlKQogCQllbHNlCiAJCQllZmxhZ3MgPSAwOwkJCS8qIGRlZmF1bHQgcnVu LXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KIAkJRXhlY3V0b3JTdGFydChlcy0+cWQsIGVmbGFncyk7 CisJCUFzc2VydChlcy0+cWQtPnBsYW5fdmFsaWQpOwogCX0KIAogCWVzLT5zdGF0dXMgPSBGX0VY RUNfUlVOOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4IDQ2OGRiOTRmZTUuLjU0Zjc0MjgyMGIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTMzMDQsNiArMzMwNCw4IEBAIEV4ZWNJbml0QWdn KEFnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCWVmbGFncyAmPSB+RVhF Q19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFu U3RhdGUoYWdnc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3Mp OworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJ LyoKIAkgKiBpbml0aWFsaXplIHNvdXJjZSB0dXBsZSB0eXBlLgpAQCAtNDMwNCw3ICs0MzA2LDYg QEAgR2V0QWdnSW5pdFZhbChEYXR1bSB0ZXh0SW5pdFZhbCwgT2lkIHRyYW5zdHlwZSkKIHZvaWQK IEV4ZWNFbmRBZ2coQWdnU3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRlICAqb3V0ZXJQbGFuOwog CWludAkJCXRyYW5zbm87CiAJaW50CQkJbnVtR3JvdXBpbmdTZXRzID0gTWF4KG5vZGUtPm1heHNl dHMsIDEpOwogCWludAkJCXNldG5vOwpAQCAtNDM2Niw5ICs0MzY3LDYgQEAgRXhlY0VuZEFnZyhB Z2dTdGF0ZSAqbm9kZSkKIAogCS8qIGNsZWFuIHVwIHR1cGxlIHRhYmxlICovCiAJRXhlY0NsZWFy VHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KLQlvdXRlclBsYW4gPSBvdXRlclBs YW5TdGF0ZShub2RlKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW4pOwogfQogCiB2b2lkCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggNjA5ZGY2YjllNi4uYTZkYWRiN2QwNyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtMTMzLDYgKzEzMywyNyBAQCBFeGVjSW5pdEFwcGVu ZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWFwcGVuZHN0YXRl LT5hc19zeW5jZG9uZSA9IGZhbHNlOwogCWFwcGVuZHN0YXRlLT5hc19iZWd1biA9IGZhbHNlOwog CisJLyoKKwkgKiBNdXN0IHRha2UgbG9ja3Mgb24gY2hpbGQgdGFibGVzIGlmIHJ1bm5pbmcgYSBj YWNoZWQgcGxhbiwgYmVjYXVzZQorCSAqIEdldENhY2hlZFBsYW4oKSB3b3VsZCd2ZSBvbmx5IGxv Y2tlZCB0aGUgcm9vdCBwYXJlbnQgbmFtZWQgaW4gdGhlCisJICogcXVlcnkuCisJICoKKwkgKiBG aXJzdCBsb2NrIG5vbi1sZWFmIHBhcnRpdGlvbnMgYmVmb3JlIGRvaW5nIHBydW5pbmcgaWYgYW55 LiAgRXZlbiB3aGVuCisJICogbm8gcHJ1bmluZyBpcyB0byBiZSBkb25lLCBub24tbGVhZiBwYXJ0 aXRpb25zIHN0aWxsIG11c3QgYmUgbG9ja2VkCisJICogZXhwbGljaXRseSBsaWtlIHRoaXMsIGJl Y2F1c2UgdGhleSdyZSBub3QgcmVmZXJlbmNlZCBlbHNld2hlcmUgaW4KKwkgKiB0aGUgcGxhbiB0 cmVlLiAgWFhYIC0gT1RPSCwgbm9uLWxlYWYgcGFydGl0aW9ucyBtZW50aW9uZWQgaW4KKwkgKiBw YXJ0X3BydW5lX2luZm8sIGlmIGFueSwgd291bGQgYmUgb3BlbmVkIGJ5IEV4ZWNJbml0UGFydGl0 aW9uUHJ1bmluZygpCisJICogdXNpbmcgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbigpIHdoaWNo IGxvY2tzIGNoaWxkIHRhYmxlcywgcmVkdW5kYW50bHkKKwkgKiBpbiB0aGlzIGNhc2UuCisJICov CisJaWYgKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbikKKwl7CisJCUV4ZWNMb2NrQXBwZW5kTm9uTGVh ZlJlbGF0aW9ucyhlc3RhdGUsIG5vZGUtPmFsbHBhcnRyZWxpZHMpOworCQlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7CisKKwl9CisKIAkvKiBJZiBydW4t dGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0aGVuIHNldCB0aGF0IHVwIG5vdyAq LwogCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZm8gIT0gTlVMTCkKIAl7CkBAIC0xNDcsNiArMTY4 LDggQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyksCiAJCQkJ CQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBs YW5zKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxM OwogCQlhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMg PSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7CiAKQEAgLTIyMSw2ICsyNDQsOCBAQCBF eGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CQkJZmlyc3R2YWxpZCA9IGo7CiAKIAkJYXBwZW5kcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXRO b2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCQlyZXR1cm4gTlVMTDsKIAl9CiAKIAlhcHBlbmRzdGF0ZS0+YXNfZmlyc3Rf cGFydGlhbF9wbGFuID0gZmlyc3R2YWxpZDsKQEAgLTM3NiwzMCArNDAxLDE1IEBAIEV4ZWNBcHBl bmQoUGxhblN0YXRlICpwc3RhdGUpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjRW5kQXBwZW5kCi0g KgotICoJCVNodXRzIGRvd24gdGhlIHN1YnNjYW5zIG9mIHRoZSBhcHBlbmQgbm9kZS4KLSAqCi0g KgkJUmV0dXJucyBub3RoaW5nIG9mIGludGVyZXN0LgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiB2b2lkCiBF eGVjRW5kQXBwZW5kKEFwcGVuZFN0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAqKmFwcGVuZHBs YW5zOwotCWludAkJCW5wbGFuczsKLQlpbnQJCQlpOwotCi0JLyoKLQkgKiBnZXQgaW5mb3JtYXRp b24gZnJvbSB0aGUgbm9kZQotCSAqLwotCWFwcGVuZHBsYW5zID0gbm9kZS0+YXBwZW5kcGxhbnM7 Ci0JbnBsYW5zID0gbm9kZS0+YXNfbnBsYW5zOwotCi0JLyoKLQkgKiBzaHV0IGRvd24gZWFjaCBv ZiB0aGUgc3Vic2NhbnMKLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCi0JCUV4 ZWNFbmROb2RlKGFwcGVuZHBsYW5zW2ldKTsKKwkgLyoKKwkgICogTm90aGluZyB0byBkbyBhcyBz dWJzY2FucyBvZiB0aGUgYXBwZW5kIG5vZGUgd291bGQgYmUgY2xlYW5lZCB1cCBieQorCSAgKglF eGVjRW5kUGxhbigpLgorCSAgKi8KIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cEFuZC5jCmluZGV4IDRjNWViMmIyM2IuLjE4N2FlYTRiYjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQml0bWFwQW5kLmMKQEAgLTg4LDggKzg4LDkgQEAgRXhlY0luaXRCaXRtYXBBbmQoQml0bWFw QW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlmb3JlYWNoKGwsIG5vZGUt PmJpdG1hcHBsYW5zKQogCXsKIAkJaW5pdE5vZGUgPSAoUGxhbiAqKSBsZmlyc3QobCk7Ci0JCWJp dG1hcHBsYW5zdGF0ZXNbaV0gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdz KTsKLQkJaSsrOworCQliaXRtYXBwbGFuc3RhdGVzW2krK10gPSBFeGVjSW5pdE5vZGUoaW5pdE5v ZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJCXJldHVybiBOVUxMOwogCX0KIAogCS8qCkBAIC0xNjgsMzMgKzE2OSwxNSBAQCBNdWx0aUV4 ZWNCaXRtYXBBbmQoQml0bWFwQW5kU3RhdGUgKm5vZGUpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVj RW5kQml0bWFwQW5kCi0gKgotICoJCVNodXRzIGRvd24gdGhlIHN1YnNjYW5zIG9mIHRoZSBCaXRt YXBBbmQgbm9kZS4KLSAqCi0gKgkJUmV0dXJucyBub3RoaW5nIG9mIGludGVyZXN0LgogICogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICovCiB2b2lkCiBFeGVjRW5kQml0bWFwQW5kKEJpdG1hcEFuZFN0YXRlICpub2RlKQog ewotCVBsYW5TdGF0ZSAqKmJpdG1hcHBsYW5zOwotCWludAkJCW5wbGFuczsKLQlpbnQJCQlpOwot Ci0JLyoKLQkgKiBnZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQotCSAqLwotCWJpdG1hcHBs YW5zID0gbm9kZS0+Yml0bWFwcGxhbnM7Ci0JbnBsYW5zID0gbm9kZS0+bnBsYW5zOwotCi0JLyoK LQkgKiBzaHV0IGRvd24gZWFjaCBvZiB0aGUgc3Vic2NhbnMgKHRoYXQgd2UndmUgaW5pdGlhbGl6 ZWQpCi0JICovCi0JZm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsrKQotCXsKLQkJaWYgKGJpdG1h cHBsYW5zW2ldKQotCQkJRXhlY0VuZE5vZGUoYml0bWFwcGxhbnNbaV0pOwotCX0KKwkgLyoKKwkg ICogTm90aGluZyB0byBkbyBhcyBhbnkgc3Vic2NhbnMgdGhhdCB3b3VsZCBoYXZlIGJlZW4gaW5p dGlhbGl6ZWQgd291bGQKKwkgICogYmUgY2xlYW5lZCB1cCBieSBFeGVjRW5kUGxhbigpLgorCSAg Ki8KIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwpp bmRleCBmMzVkZjBiOGJmLi5lZTEwMDg1MTliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwSGVhcHNjYW4uYwpAQCAtNjY3LDExICs2NjcsNiBAQCBFeGVjRW5kQml0bWFwSGVhcFNj YW4oQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Mu cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2Fu VHVwbGVTbG90KTsKIAotCS8qCi0JICogY2xvc2UgZG93biBzdWJwbGFucwotCSAqLwotCUV4ZWNF bmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKLQogCS8qCiAJICogcmVsZWFzZSBiaXRtYXBz IGFuZCBidWZmZXJzIGlmIGFueQogCSAqLwpAQCAtNzYzLDExICs3NTgsMTUgQEAgRXhlY0luaXRC aXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlv biA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVm bGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7 CiAKIAkvKgogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0 ZShzY2Fuc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxh Z3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwog CiAJLyoKIAkgKiBnZXQgdGhlIHNjYW4gdHlwZSBmcm9tIHRoZSByZWxhdGlvbiBkZXNjcmlwdG9y LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCmluZGV4IDgzZWM5 ZWRlODkuLjk5MDE1ODEyYTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5k ZXhzY2FuLmMKQEAgLTIxMSw2ICsyMTEsNyBAQCBCaXRtYXBJbmRleFNjYW5TdGF0ZSAqCiBFeGVj SW5pdEJpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogewogCUJpdG1hcEluZGV4U2NhblN0YXRlICppbmRleHN0YXRlOworCVJl bGF0aW9uCWluZGV4UmVsYXRpb247CiAJTE9DS01PREUJbG9ja21vZGU7CiAKIAkvKiBjaGVjayBm b3IgdW5zdXBwb3J0ZWQgZmxhZ3MgKi8KQEAgLTI2Miw3ICsyNjMsMTMgQEAgRXhlY0luaXRCaXRt YXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAqLwogCWxvY2ttb2RlID0gZXhl Y19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVsbG9ja21vZGU7Ci0J aW5kZXhzdGF0ZS0+Ymlzc19SZWxhdGlvbkRlc2MgPSBpbmRleF9vcGVuKG5vZGUtPmluZGV4aWQs IGxvY2ttb2RlKTsKKwlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBs b2NrbW9kZSk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwl7CisJCWluZGV4 X2Nsb3NlKGluZGV4UmVsYXRpb24sIGxvY2ttb2RlKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCWlu ZGV4c3RhdGUtPmJpc3NfUmVsYXRpb25EZXNjID0gaW5kZXhSZWxhdGlvbjsKIAogCS8qCiAJICog SW5pdGlhbGl6ZSBpbmRleC1zcGVjaWZpYyBzY2FuIHN0YXRlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBPci5jCmluZGV4IDBiZjhhZjk2NTIuLjNmNTE5MThmZTEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVCaXRtYXBPci5jCkBAIC04OSw4ICs4OSw5IEBAIEV4ZWNJbml0Qml0bWFwT3IoQml0bWFw T3IgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWZvcmVhY2gobCwgbm9kZS0+ Yml0bWFwcGxhbnMpCiAJewogCQlpbml0Tm9kZSA9IChQbGFuICopIGxmaXJzdChsKTsKLQkJYml0 bWFwcGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3Mp OwotCQlpKys7CisJCWJpdG1hcHBsYW5zdGF0ZXNbaSsrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9k ZSwgZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQor CQkJcmV0dXJuIE5VTEw7CiAJfQogCiAJLyoKQEAgLTE4NiwzMyArMTg3LDE1IEBAIE11bHRpRXhl Y0JpdG1hcE9yKEJpdG1hcE9yU3RhdGUgKm5vZGUpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjRW5k Qml0bWFwT3IKLSAqCi0gKgkJU2h1dHMgZG93biB0aGUgc3Vic2NhbnMgb2YgdGhlIEJpdG1hcE9y IG5vZGUuCi0gKgotICoJCVJldHVybnMgbm90aGluZyBvZiBpbnRlcmVzdC4KICAqIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICAqLwogdm9pZAogRXhlY0VuZEJpdG1hcE9yKEJpdG1hcE9yU3RhdGUgKm5vZGUpCiB7Ci0JUGxh blN0YXRlICoqYml0bWFwcGxhbnM7Ci0JaW50CQkJbnBsYW5zOwotCWludAkJCWk7Ci0KLQkvKgot CSAqIGdldCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0JICovCi0JYml0bWFwcGxhbnMgPSBu b2RlLT5iaXRtYXBwbGFuczsKLQlucGxhbnMgPSBub2RlLT5ucGxhbnM7Ci0KLQkvKgotCSAqIHNo dXQgZG93biBlYWNoIG9mIHRoZSBzdWJzY2FucyAodGhhdCB3ZSd2ZSBpbml0aWFsaXplZCkKLQkg Ki8KLQlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCi0JewotCQlpZiAoYml0bWFwcGxhbnNb aV0pCi0JCQlFeGVjRW5kTm9kZShiaXRtYXBwbGFuc1tpXSk7Ci0JfQorCSAvKgorCSAgKiBOb3Ro aW5nIHRvIGRvIGFzIGFueSBzdWJzY2FucyB0aGF0IHdvdWxkIGhhdmUgYmVlbiBpbml0aWFsaXpl ZCB3b3VsZAorCSAgKiBiZSBjbGVhbmVkIHVwIGJ5IEV4ZWNFbmRQbGFuKCkuCisJICAqLwogfQog CiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKaW5kZXggYmQ0MmM2NWIyOS4uOTEyMzlj YzUwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYwpAQCAtNjEsNiArNjEsOCBAQCBFeGVj SW5pdEN1c3RvbVNjYW4oQ3VzdG9tU2NhbiAqY3NjYW4sIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCWlmIChzY2FucmVsaWQgPiAwKQogCXsKIAkJc2Nhbl9yZWwgPSBFeGVjT3BlblNjYW5S ZWxhdGlvbihlc3RhdGUsIHNjYW5yZWxpZCwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwogCQljc3MtPnNzLnNzX2N1cnJlbnRSZWxh dGlvbiA9IHNjYW5fcmVsOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUZvcmVpZ25zY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4u YwppbmRleCBjMjEzOWFjY2EwLi4yMDcxNjVmNDRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Rm9yZWlnbnNjYW4uYwpAQCAtMTczLDYgKzE3Myw4IEBAIEV4ZWNJbml0Rm9yZWlnblNjYW4oRm9y ZWlnblNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChzY2FucmVs aWQgPiAwKQogCXsKIAkJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0 YXRlLCBzY2FucmVsaWQsIGVmbGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCQlyZXR1cm4gTlVMTDsKIAkJc2NhbnN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24g PSBjdXJyZW50UmVsYXRpb247CiAJCWZkd3JvdXRpbmUgPSBHZXRGZHdSb3V0aW5lRm9yUmVsYXRp b24oY3VycmVudFJlbGF0aW9uLCB0cnVlKTsKIAl9CkBAIC0yNjQsNiArMjY2LDggQEAgRXhlY0lu aXRGb3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJaWYgKG91dGVyUGxhbihub2RlKSkKIAkJb3V0ZXJQbGFuU3RhdGUoc2NhbnN0YXRlKSA9 CiAJCQlFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAq IFRlbGwgdGhlIEZEVyB0byBpbml0aWFsaXplIHRoZSBzY2FuLgpAQCAtMzA5LDEwICszMTMsNiBA QCBFeGVjRW5kRm9yZWlnblNjYW4oRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAllbHNlCiAJCW5v ZGUtPmZkd3JvdXRpbmUtPkVuZEZvcmVpZ25TY2FuKG5vZGUpOwogCi0JLyogU2h1dCBkb3duIGFu eSBvdXRlciBwbGFuLiAqLwotCWlmIChvdXRlclBsYW5TdGF0ZShub2RlKSkKLQkJRXhlY0VuZE5v ZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwotCiAJLyogRnJlZSB0aGUgZXhwcmNvbnRleHQgKi8K IAlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5wcyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVH YXRoZXIuYwppbmRleCAzMDdmYzEwZWVhLi40MDBjOGI0MmVkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdhdGhlci5jCkBAIC04OSw2ICs4OSw5IEBAIEV4ZWNJbml0R2F0aGVyKEdhdGhlciAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJOb2RlID0gb3V0ZXJQbGFu KG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGdhdGhlcnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRl ck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQlyZXR1cm4gTlVMTDsKKwogCXR1cERlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShvdXRlclBs YW5TdGF0ZShnYXRoZXJzdGF0ZSkpOwogCiAJLyoKQEAgLTI0OCw3ICsyNTEsNiBAQCBFeGVjR2F0 aGVyKFBsYW5TdGF0ZSAqcHN0YXRlKQogdm9pZAogRXhlY0VuZEdhdGhlcihHYXRoZXJTdGF0ZSAq bm9kZSkKIHsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CS8qIGxldCBjaGls ZHJlbiBjbGVhbiB1cCBmaXJzdCAqLwogCUV4ZWNTaHV0ZG93bkdhdGhlcihub2RlKTsKIAlFeGVj RnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7CiAJaWYgKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxl U2xvdCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKaW5kZXggOWQ1ZTFhNDZl OS4uOTA3N2M0YmM1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhl ck1lcmdlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKQEAg LTEwOCw2ICsxMDgsOCBAQCBFeGVjSW5pdEdhdGhlck1lcmdlKEdhdGhlck1lcmdlICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKi8KIAlvdXRlck5vZGUgPSBvdXRlclBsYW4o bm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUoZ21fc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9k ZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJ CXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBMZWFkZXIgbWF5IGFjY2VzcyBFeGVjUHJvY05vZGUg cmVzdWx0IGRpcmVjdGx5IChpZgpAQCAtMjg4LDcgKzI5MCw2IEBAIEV4ZWNHYXRoZXJNZXJnZShQ bGFuU3RhdGUgKnBzdGF0ZSkKIHZvaWQKIEV4ZWNFbmRHYXRoZXJNZXJnZShHYXRoZXJNZXJnZVN0 YXRlICpub2RlKQogewotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsJLyogbGV0 IGNoaWxkcmVuIGNsZWFuIHVwIGZpcnN0ICovCiAJRXhlY1NodXRkb3duR2F0aGVyTWVyZ2Uobm9k ZSk7CiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+cHMpOwogCWlmIChub2RlLT5wcy5wc19S ZXN1bHRUdXBsZVNsb3QpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3Jv dXAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCmluZGV4IDI1YTE2MTg5NTIu Ljk3NmU3MzlhYjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCkBAIC0xODUsNiArMTg1LDgg QEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKGdycHN0 YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJ ICogSW5pdGlhbGl6ZSBzY2FuIHNsb3QgYW5kIHR5cGUuCkBAIC0yMjYsMTUgKzIyOCwxMCBAQCBF eGVjSW5pdEdyb3VwKEdyb3VwICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZv aWQKIEV4ZWNFbmRHcm91cChHcm91cFN0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAgKm91dGVy UGxhbjsKLQogCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKIAogCS8qIGNsZWFu IHVwIHR1cGxlIHRhYmxlICovCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxl U2xvdCk7Ci0KLQlvdXRlclBsYW4gPSBvdXRlclBsYW5TdGF0ZShub2RlKTsKLQlFeGVjRW5kTm9k ZShvdXRlclBsYW4pOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSGFzaC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwppbmRleCA4YjVj MzViODJiLi5mYzdhNmIyY2NjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKQEAgLTM4Niw2ICsz ODYsOCBAQCBFeGVjSW5pdEhhc2goSGFzaCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKGhh c2hzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7 CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkv KgogCSAqIGluaXRpYWxpemUgb3VyIHJlc3VsdCBzbG90IGFuZCB0eXBlLiBObyBuZWVkIHRvIGJ1 aWxkIHByb2plY3Rpb24KQEAgLTQxMywxOCArNDE1LDEwIEBAIEV4ZWNJbml0SGFzaChIYXNoICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4ZWNFbmRIYXNoKEhhc2hT dGF0ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgICpvdXRlclBsYW47Ci0KIAkvKgogCSAqIGZyZWUg ZXhwcmNvbnRleHQKIAkgKi8KIAlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7Ci0KLQkv KgotCSAqIHNodXQgZG93biB0aGUgc3VicGxhbgotCSAqLwotCW91dGVyUGxhbiA9IG91dGVyUGxh blN0YXRlKG5vZGUpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CiB9CiAKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSGFzaGpvaW4uYwppbmRleCA5ODA3NDYxMjhiLi40YzRiMzljZTJkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYwpAQCAtNzUyLDggKzc1MiwxMiBAQCBFeGVjSW5pdEhh c2hKb2luKEhhc2hKb2luICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAloYXNo Tm9kZSA9IChIYXNoICopIGlubmVyUGxhbihub2RlKTsKIAogCW91dGVyUGxhblN0YXRlKGhqc3Rh dGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCW91dGVyRGVzYyA9IEV4 ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKGhqc3RhdGUpKTsKIAlpbm5lclBsYW5TdGF0 ZShoanN0YXRlKSA9IEV4ZWNJbml0Tm9kZSgoUGxhbiAqKSBoYXNoTm9kZSwgZXN0YXRlLCBlZmxh Z3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwog CWlubmVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKGlubmVyUGxhblN0YXRlKGhqc3RhdGUpKTsK IAogCS8qCkBAIC04NzgsMTIgKzg4Miw2IEBAIEV4ZWNFbmRIYXNoSm9pbihIYXNoSm9pblN0YXRl ICpub2RlKQogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7 CiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+aGpfT3V0ZXJUdXBsZVNsb3QpOwogCUV4ZWNDbGVhclR1 cGxlKG5vZGUtPmhqX0hhc2hUdXBsZVNsb3QpOwotCi0JLyoKLQkgKiBjbGVhbiB1cCBzdWJ0cmVl cwotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKLQlFeGVjRW5kTm9k ZShpbm5lclBsYW5TdGF0ZShub2RlKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5jcmVtZW50YWxTb3J0LmMKaW5kZXggNzY4M2UzMzQxYy4uNWIxMWFmZWI5NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYwpAQCAtMTA0MSw2ICsxMDQx LDggQEAgRXhlY0luaXRJbmNyZW1lbnRhbFNvcnQoSW5jcmVtZW50YWxTb3J0ICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBub2RlcyBtYXkgYmUgYWJsZSB0byBkbyBzb21l dGhpbmcgbW9yZSB1c2VmdWwuCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoaW5jcnNvcnRzdGF0ZSkg PSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIElu aXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpAQCAtMTEwMSwxMSArMTEwMyw2IEBAIEV4ZWNF bmRJbmNyZW1lbnRhbFNvcnQoSW5jcmVtZW50YWxTb3J0U3RhdGUgKm5vZGUpCiAJCW5vZGUtPnBy ZWZpeHNvcnRfc3RhdGUgPSBOVUxMOwogCX0KIAotCS8qCi0JICogU2h1dCBkb3duIHRoZSBzdWJw bGFuLgotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKLQogCVNPX3By aW50ZigiRXhlY0VuZEluY3JlbWVudGFsU29ydDogc29ydCBub2RlIHNodXRkb3duXG4iKTsKIH0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKaW5kZXggMGI0M2E5Yjk2 OS4uZWE4YmVmNGI5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4 b25seXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5j CkBAIC00OTAsNiArNDkwLDcgQEAgRXhlY0luaXRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4g Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogewogCUluZGV4T25seVNjYW5TdGF0 ZSAqaW5kZXhzdGF0ZTsKIAlSZWxhdGlvbgljdXJyZW50UmVsYXRpb247CisJUmVsYXRpb24JaW5k ZXhSZWxhdGlvbjsKIAlMT0NLTU9ERQlsb2NrbW9kZTsKIAlUdXBsZURlc2MJdHVwRGVzYzsKIApA QCAtNTEyLDYgKzUxMyw4IEBAIEV4ZWNJbml0SW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0 aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRl LCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRS ZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50U2Nh bkRlc2MgPSBOVUxMOwkvKiBubyBoZWFwIHNjYW4gaGVyZSAqLwpAQCAtNTY0LDcgKzU2NywxMyBA QCBFeGVjSW5pdEluZGV4T25seVNjYW4oSW5kZXhPbmx5U2NhbiAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAKIAkvKiBPcGVuIHRoZSBpbmRleCByZWxhdGlvbi4gKi8KIAlsb2Nr bW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVzdGF0ZSktPnJlbGxv Y2ttb2RlOwotCWluZGV4c3RhdGUtPmlvc3NfUmVsYXRpb25EZXNjID0gaW5kZXhfb3Blbihub2Rl LT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4obm9kZS0+ aW5kZXhpZCwgbG9ja21vZGUpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJ eworCQlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9uLCBsb2NrbW9kZSk7CisJCXJldHVybiBOVUxM OworCX0KKwlpbmRleHN0YXRlLT5pb3NzX1JlbGF0aW9uRGVzYyA9IGluZGV4UmVsYXRpb247CiAK IAkvKgogCSAqIEluaXRpYWxpemUgaW5kZXgtc3BlY2lmaWMgc2NhbiBzdGF0ZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4IDQ1NDBjNzc4MWQuLjk1NmU5ZTU1NDMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKQEAgLTkwNCw2ICs5MDQsNyBAQCBFeGVjSW5p dEluZGV4U2NhbihJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog ewogCUluZGV4U2NhblN0YXRlICppbmRleHN0YXRlOwogCVJlbGF0aW9uCWN1cnJlbnRSZWxhdGlv bjsKKwlSZWxhdGlvbglpbmRleFJlbGF0aW9uOwogCUxPQ0tNT0RFCWxvY2ttb2RlOwogCiAJLyoK QEAgLTkyNSw2ICs5MjYsOCBAQCBFeGVjSW5pdEluZGV4U2NhbihJbmRleFNjYW4gKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkg Ki8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUt PnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCXJldHVybiBOVUxMOwogCiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9u ID0gY3VycmVudFJlbGF0aW9uOwogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9 IE5VTEw7CS8qIG5vIGhlYXAgc2NhbiBoZXJlICovCkBAIC05NjksNyArOTcyLDEzIEBAIEV4ZWNJ bml0SW5kZXhTY2FuKEluZGV4U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAKIAkvKiBPcGVuIHRoZSBpbmRleCByZWxhdGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRf ZmV0Y2gobm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOwotCWluZGV4 c3RhdGUtPmlzc19SZWxhdGlvbkRlc2MgPSBpbmRleF9vcGVuKG5vZGUtPmluZGV4aWQsIGxvY2tt b2RlKTsKKwlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9k ZSk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwl7CisJCWluZGV4X2Nsb3Nl KGluZGV4UmVsYXRpb24sIGxvY2ttb2RlKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCWluZGV4c3Rh dGUtPmlzc19SZWxhdGlvbkRlc2MgPSBpbmRleFJlbGF0aW9uOwogCiAJLyoKIAkgKiBJbml0aWFs aXplIGluZGV4LXNwZWNpZmljIHNjYW4gc3RhdGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVMaW1pdC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKaW5k ZXggNDI1ZmJmYzQwNS4uMWNjODg0YmM2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUxpbWl0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKQEAg LTQ3Niw2ICs0NzYsOCBAQCBFeGVjSW5pdExpbWl0KExpbWl0ICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAkgKi8KIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0 ZXJQbGFuU3RhdGUobGltaXRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUs IGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5V TEw7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgY2hpbGQgZXhwcmVzc2lvbnMKQEAgLTUzNSw3ICs1 MzcsNiBAQCB2b2lkCiBFeGVjRW5kTGltaXQoTGltaXRTdGF0ZSAqbm9kZSkKIHsKIAlFeGVjRnJl ZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7Ci0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9k ZSkpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93 cy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKaW5kZXggZTQ1OTk3MWQz Mi4uNzc3MzFjMGM4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tS b3dzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKQEAgLTMyMiw2 ICszMjIsOCBAQCBFeGVjSW5pdExvY2tSb3dzKExvY2tSb3dzICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAkgKiB0aGVuIGluaXRpYWxpemUgb3V0ZXIgcGxhbgogCSAqLwogCW91 dGVyUGxhblN0YXRlKGxyc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBl ZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxM OwogCiAJLyogbm9kZSByZXR1cm5zIHVubW9kaWZpZWQgc2xvdHMgZnJvbSB0aGUgb3V0ZXIgcGxh biAqLwogCWxyc3RhdGUtPnBzLnJlc3VsdG9wc3NldCA9IHRydWU7CkBAIC0zODYsNyArMzg4LDYg QEAgRXhlY0VuZExvY2tSb3dzKExvY2tSb3dzU3RhdGUgKm5vZGUpCiB7CiAJLyogV2UgbWF5IGhh dmUgc2h1dCBkb3duIEVQUSBhbHJlYWR5LCBidXQgbm8gaGFybSBpbiBhbm90aGVyIGNhbGwgKi8K IAlFdmFsUGxhblF1YWxFbmQoJm5vZGUtPmxyX2VwcXN0YXRlKTsKLQlFeGVjRW5kTm9kZShvdXRl clBsYW5TdGF0ZShub2RlKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1hdGVyaWFsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwpp bmRleCAwOTYzMjY3OGIwLi5hMzhiOTgwNWE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWF0ZXJpYWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJp YWwuYwpAQCAtMjE0LDYgKzIxNCw4IEBAIEV4ZWNJbml0TWF0ZXJpYWwoTWF0ZXJpYWwgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5v ZGUpOwogCW91dGVyUGxhblN0YXRlKG1hdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4s IGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQly ZXR1cm4gTlVMTDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSByZXN1bHQgdHlwZSBhbmQgc2xvdC4g Tm8gbmVlZCB0byBpbml0aWFsaXplIHByb2plY3Rpb24gaW5mbwpAQCAtMjUwLDExICsyNTIsNiBA QCBFeGVjRW5kTWF0ZXJpYWwoTWF0ZXJpYWxTdGF0ZSAqbm9kZSkKIAlpZiAobm9kZS0+dHVwbGVz dG9yZXN0YXRlICE9IE5VTEwpCiAJCXR1cGxlc3RvcmVfZW5kKG5vZGUtPnR1cGxlc3RvcmVzdGF0 ZSk7CiAJbm9kZS0+dHVwbGVzdG9yZXN0YXRlID0gTlVMTDsKLQotCS8qCi0JICogc2h1dCBkb3du IHRoZSBzdWJwbGFuCi0JICovCi0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwog fQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVt b2l6ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwppbmRleCA0ZjA0MjY5 ZTI2Li5hODk5N2JhN2RhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVt b2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAgLTkzOCw2 ICs5MzgsOCBAQCBFeGVjSW5pdE1lbW9pemUoTWVtb2l6ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAKIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFu U3RhdGUobXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsK KwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8q CiAJICogSW5pdGlhbGl6ZSByZXR1cm4gc2xvdCBhbmQgdHlwZS4gTm8gbmVlZCB0byBpbml0aWFs aXplIHByb2plY3Rpb24gaW5mbwpAQCAtMTA5OSwxMSArMTEwMSw2IEBAIEV4ZWNFbmRNZW1vaXpl KE1lbW9pemVTdGF0ZSAqbm9kZSkKIAkgKiBmcmVlIGV4cHJjb250ZXh0CiAJICovCiAJRXhlY0Zy ZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCi0JLyoKLQkgKiBzaHV0IGRvd24gdGhlIHN1 YnBsYW4KLQkgKi8KLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CiB9CiAKIHZv aWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggMjFiNTcyNmU2ZS4u ODcxOGYyMDgyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBw ZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKQEAgLTgx LDYgKzgxLDI3IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCW1lcmdlc3RhdGUtPnBzLnN0YXRlID0gZXN0YXRlOwog CW1lcmdlc3RhdGUtPnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNNZXJnZUFwcGVuZDsKIAorCS8qCisJ ICogTXVzdCB0YWtlIGxvY2tzIG9uIGNoaWxkIHRhYmxlcyBpZiBydW5uaW5nIGEgY2FjaGVkIHBs YW4sIGJlY2F1c2UKKwkgKiBHZXRDYWNoZWRQbGFuKCkgd291bGQndmUgb25seSBsb2NrZWQgdGhl IHJvb3QgcGFyZW50IG5hbWVkIGluIHRoZQorCSAqIHF1ZXJ5LgorCSAqCisJICogRmlyc3QgbG9j ayBub24tbGVhZiBwYXJ0aXRpb25zIGJlZm9yZSBkb2luZyBwcnVuaW5nIGlmIGFueS4gIEV2ZW4g d2hlbgorCSAqIG5vIHBydW5pbmcgaXMgdG8gYmUgZG9uZSwgbm9uLWxlYWYgcGFydGl0aW9ucyBz dGlsbCBtdXN0IGJlIGxvY2tlZAorCSAqIGV4cGxpY2l0bHkgbGlrZSB0aGlzLCBiZWNhdXNlIHRo ZXkncmUgbm90IHJlZmVyZW5jZWQgZWxzZXdoZXJlIGluCisJICogdGhlIHBsYW4gdHJlZS4gIFhY WCAtIE9UT0gsIG5vbi1sZWFmIHBhcnRpdGlvbnMgbWVudGlvbmVkIGluCisJICogcGFydF9wcnVu ZV9pbmZvLCBpZiBhbnksIHdvdWxkIGJlIG9wZW5lZCBieSBFeGVjSW5pdFBhcnRpdGlvblBydW5p bmcoKQorCSAqIHVzaW5nIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oKSB3aGljaCBsb2NrcyBj aGlsZCB0YWJsZXMsIHJlZHVuZGFudGx5CisJICogaW4gdGhpcyBjYXNlLgorCSAqLworCWlmIChl c3RhdGUtPmVzX2NhY2hlZHBsYW4pCisJeworCQlFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlv bnMoZXN0YXRlLCBub2RlLT5hbGxwYXJ0cmVsaWRzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOworCisJfQorCiAJLyogSWYgcnVuLXRpbWUgcGFy dGl0aW9uIHBydW5pbmcgaXMgZW5hYmxlZCwgdGhlbiBzZXQgdGhhdCB1cCBub3cgKi8KIAlpZiAo bm9kZS0+cGFydF9wcnVuZV9pbmZvICE9IE5VTEwpCiAJewpAQCAtOTUsNiArMTE2LDggQEAgRXhl Y0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgobm9kZS0+bWVyZ2VwbGFucyksCiAJCQkJ CQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBs YW5zKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxM OwogCQltZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7CiAJCW5wbGFucyA9 IGJtc19udW1fbWVtYmVycyh2YWxpZHN1YnBsYW5zKTsKIApAQCAtMTUxLDYgKzE3NCw4IEBAIEV4 ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCQlQbGFuCSAgICppbml0Tm9kZSA9IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPm1l cmdlcGxhbnMsIGkpOwogCiAJCW1lcmdlcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGlu aXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCQlyZXR1cm4gTlVMTDsKIAl9CiAKIAltZXJnZXN0YXRlLT5wcy5wc19Qcm9qSW5mbyA9 IE5VTEw7CkBAIC0zMTAsMzAgKzMzNSwxNCBAQCBoZWFwX2NvbXBhcmVfc2xvdHMoRGF0dW0gYSwg RGF0dW0gYiwgdm9pZCAqYXJnKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY0VuZE1lcmdlQXBwZW5k Ci0gKgotICoJCVNodXRzIGRvd24gdGhlIHN1YnNjYW5zIG9mIHRoZSBNZXJnZUFwcGVuZCBub2Rl LgotICoKLSAqCQlSZXR1cm5zIG5vdGhpbmcgb2YgaW50ZXJlc3QuCiAgKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8K IHZvaWQKIEV4ZWNFbmRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZFN0YXRlICpub2RlKQogewotCVBs YW5TdGF0ZSAqKm1lcmdlcGxhbnM7Ci0JaW50CQkJbnBsYW5zOwotCWludAkJCWk7Ci0KLQkvKgot CSAqIGdldCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0JICovCi0JbWVyZ2VwbGFucyA9IG5v ZGUtPm1lcmdlcGxhbnM7Ci0JbnBsYW5zID0gbm9kZS0+bXNfbnBsYW5zOwotCi0JLyoKLQkgKiBz aHV0IGRvd24gZWFjaCBvZiB0aGUgc3Vic2NhbnMKLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgbnBs YW5zOyBpKyspCi0JCUV4ZWNFbmROb2RlKG1lcmdlcGxhbnNbaV0pOworCSAvKgorCSAgKiBOb3Ro aW5nIHRvIGRvIGFzIHN1YnNjYW5zIHdvdWxkIGJlIGNsZWFuZWQgdXAgYnkgRXhlY0VuZFBsYW4o KS4KKwkgICovCiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNZXJnZWpvaW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwppbmRl eCAwMGY5NmQwNDVlLi5jNjY0NGM2ODE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTWVyZ2Vqb2luLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9p bi5jCkBAIC0xNDkwLDExICsxNDkwLDE1IEBAIEV4ZWNJbml0TWVyZ2VKb2luKE1lcmdlSm9pbiAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJbWVyZ2VzdGF0ZS0+bWpfU2tpcE1h cmtSZXN0b3JlID0gbm9kZS0+c2tpcF9tYXJrX3Jlc3RvcmU7CiAKIAlvdXRlclBsYW5TdGF0ZSht ZXJnZXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlv dXRlckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7 CiAJaW5uZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5v ZGUpLCBlc3RhdGUsCiAJCQkJCQkJCQkJCSAgbWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3Jl ID8KIAkJCQkJCQkJCQkJICBlZmxhZ3MgOgogCQkJCQkJCQkJCQkgIChlZmxhZ3MgfCBFWEVDX0ZM QUdfTUFSSykpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBO VUxMOwogCWlubmVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKGlubmVyUGxhblN0YXRlKG1lcmdl c3RhdGUpKTsKIAogCS8qCkBAIC0xNjU0LDEyICsxNjU4LDYgQEAgRXhlY0VuZE1lcmdlSm9pbihN ZXJnZUpvaW5TdGF0ZSAqbm9kZSkKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5qcy5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpOwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPm1qX01hcmtlZFR1cGxlU2xvdCk7 CiAKLQkvKgotCSAqIHNodXQgZG93biB0aGUgc3VicGxhbnMKLQkgKi8KLQlFeGVjRW5kTm9kZShp bm5lclBsYW5TdGF0ZShub2RlKSk7Ci0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkp OwotCiAJTUoxX3ByaW50ZigiRXhlY0VuZE1lcmdlSm9pbjogJXNcbiIsCiAJCQkgICAibm9kZSBw cm9jZXNzaW5nIGVuZGVkIik7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j CmluZGV4IDJhNWZlYzhkMDEuLjBjM2FlYjExNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN b2RpZnlUYWJsZS5jCkBAIC0zOTg0LDYgKzM5ODQsOSBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1v ZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJCQkgICBs aW5pdGlhbF9pbnQobm9kZS0+cmVzdWx0UmVsYXRpb25zKSk7CiAJfQogCisJaWYgKCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CisKIAkvKiBzZXQgdXAgZXBxc3Rh dGUgd2l0aCBkdW1teSBzdWJwbGFuIGRhdGEgZm9yIHRoZSBtb21lbnQgKi8KIAlFdmFsUGxhblF1 YWxJbml0KCZtdHN0YXRlLT5tdF9lcHFzdGF0ZSwgZXN0YXRlLCBOVUxMLCBOSUwsCiAJCQkJCSBu b2RlLT5lcHFQYXJhbSwgbm9kZS0+cmVzdWx0UmVsYXRpb25zKTsKQEAgLTQwMTEsNiArNDAxNCw4 IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCQlpZiAocmVzdWx0UmVsSW5mbyAhPSBtdHN0YXRlLT5yb290UmVzdWx0 UmVsSW5mbykKIAkJewogCQkJRXhlY0luaXRSZXN1bHRSZWxhdGlvbihlc3RhdGUsIHJlc3VsdFJl bEluZm8sIHJlc3VsdFJlbGF0aW9uKTsKKwkJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCQkJcmV0dXJuIE5VTEw7CiAKIAkJCS8qCiAJCQkgKiBGb3IgY2hpbGQgcmVzdWx0IHJl bGF0aW9ucywgc3RvcmUgdGhlIHJvb3QgcmVzdWx0IHJlbGF0aW9uCkBAIC00MDM4LDYgKzQwNDMs OCBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAkgKiBOb3cgd2UgbWF5IGluaXRpYWxpemUgdGhlIHN1YnBsYW4uCiAJ ICovCiAJb3V0ZXJQbGFuU3RhdGUobXRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoc3VicGxhbiwgZXN0 YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVy biBOVUxMOwogCiAJLyoKIAkgKiBEbyBhZGRpdGlvbmFsIHBlci1yZXN1bHQtcmVsYXRpb24gaW5p dGlhbGl6YXRpb24uCkBAIC00NDYwLDExICs0NDY3LDYgQEAgRXhlY0VuZE1vZGlmeVRhYmxlKE1v ZGlmeVRhYmxlU3RhdGUgKm5vZGUpCiAJICogVGVybWluYXRlIEVQUSBleGVjdXRpb24gaWYgYWN0 aXZlCiAJICovCiAJRXZhbFBsYW5RdWFsRW5kKCZub2RlLT5tdF9lcHFzdGF0ZSk7Ci0KLQkvKgot CSAqIHNodXQgZG93biBzdWJwbGFuCi0JICovCi0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUo bm9kZSkpOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TmVzdGxvb3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jCmluZGV4IGIz ZDUyZTY5ZWMuLjcxYTFmODEwMWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVOZXN0bG9vcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jCkBA IC0yOTUsMTEgKzI5NSwxNSBAQCBFeGVjSW5pdE5lc3RMb29wKE5lc3RMb29wICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiB2YWx1ZXMuCiAJICovCiAJb3V0ZXJQbGFuU3Rh dGUobmxzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFn cyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAJ aWYgKG5vZGUtPm5lc3RQYXJhbXMgPT0gTklMKQogCQllZmxhZ3MgfD0gRVhFQ19GTEFHX1JFV0lO RDsKIAllbHNlCiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlpbm5lclBsYW5TdGF0 ZShubHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShpbm5lclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAog CS8qCiAJICogSW5pdGlhbGl6ZSByZXN1bHQgc2xvdCwgdHlwZSBhbmQgcHJvamVjdGlvbi4KQEAg LTM3NCwxMiArMzc4LDYgQEAgRXhlY0VuZE5lc3RMb29wKE5lc3RMb29wU3RhdGUgKm5vZGUpCiAJ ICovCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAot CS8qCi0JICogY2xvc2UgZG93biBzdWJwbGFucwotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVyUGxh blN0YXRlKG5vZGUpKTsKLQlFeGVjRW5kTm9kZShpbm5lclBsYW5TdGF0ZShub2RlKSk7Ci0KIAlO TDFfcHJpbnRmKCJFeGVjRW5kTmVzdExvb3A6ICVzXG4iLAogCQkJICAgIm5vZGUgcHJvY2Vzc2lu ZyBlbmRlZCIpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2pl Y3RTZXQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKaW5kZXggZjZm ZjNkYzQ0Yy4uYWJjYmQ3ZTc2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVByb2plY3RTZXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5j CkBAIC0yNDcsNiArMjQ3LDggQEAgRXhlY0luaXRQcm9qZWN0U2V0KFByb2plY3RTZXQgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMK IAkgKi8KIAlvdXRlclBsYW5TdGF0ZShzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5v ZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIHdlIGRvbid0IHVzZSBpbm5lciBwbGFuCkBAIC0z MjksMTEgKzMzMSw2IEBAIEV4ZWNFbmRQcm9qZWN0U2V0KFByb2plY3RTZXRTdGF0ZSAqbm9kZSkK IAkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCiAJICovCiAJRXhlY0NsZWFyVHVwbGUobm9k ZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQotCS8qCi0JICogc2h1dCBkb3duIHN1YnBsYW5z Ci0JICovCi0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwogfQogCiB2b2lkCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jCmluZGV4IGU3ODEwMDM5MzQu Ljg0YTcwNjQ1OGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNp dmV1bmlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5j CkBAIC0yNDQsNyArMjQ0LDExIEBAIEV4ZWNJbml0UmVjdXJzaXZlVW5pb24oUmVjdXJzaXZlVW5p b24gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUgY2hp bGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShydXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShv dXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlpbm5lclBsYW5TdGF0ZShydXN0YXRlKSA9IEV4 ZWNJbml0Tm9kZShpbm5lclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogSWYgaGFz aGluZywgcHJlY29tcHV0ZSBmbWdyIGxvb2t1cCBkYXRhIGZvciBpbm5lciBsb29wLCBhbmQgY3Jl YXRlIHRoZQpAQCAtMjgwLDEyICsyODQsNiBAQCBFeGVjRW5kUmVjdXJzaXZlVW5pb24oUmVjdXJz aXZlVW5pb25TdGF0ZSAqbm9kZSkKIAkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50ZW1wQ29u dGV4dCk7CiAJaWYgKG5vZGUtPnRhYmxlQ29udGV4dCkKIAkJTWVtb3J5Q29udGV4dERlbGV0ZShu b2RlLT50YWJsZUNvbnRleHQpOwotCi0JLyoKLQkgKiBjbG9zZSBkb3duIHN1YnBsYW5zCi0JICov Ci0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwotCUV4ZWNFbmROb2RlKGlubmVy UGxhblN0YXRlKG5vZGUpKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3Vs dC5jCmluZGV4IDQyMTk3MTJkMzAuLjMzMGNhNjhkMTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVSZXN1bHQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVz dWx0LmMKQEAgLTIwOCw2ICsyMDgsOCBAQCBFeGVjSW5pdFJlc3VsdChSZXN1bHQgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkg Ki8KIAlvdXRlclBsYW5TdGF0ZShyZXNzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5v ZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIHdlIGRvbid0IHVzZSBpbm5lciBwbGFuCkBAIC0y NDksMTEgKzI1MSw2IEBAIEV4ZWNFbmRSZXN1bHQoUmVzdWx0U3RhdGUgKm5vZGUpCiAJICogY2xl YW4gb3V0IHRoZSB0dXBsZSB0YWJsZQogCSAqLwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCk7Ci0KLQkvKgotCSAqIHNodXQgZG93biBzdWJwbGFucwotCSAqLwot CUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKaW5kZXggZDdlMjJiMWRiYi4uMjIzNTdlN2EwZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCkBAIC0xMjUsNiArMTI1LDggQEAgRXhl Y0luaXRTYW1wbGVTY2FuKFNhbXBsZVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCQlFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsCiAJCQkJCQkJIG5vZGUtPnNjYW4u c2NhbnJlbGlkLAogCQkJCQkJCSBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyogd2Ugd29uJ3Qgc2V0IHVwIHRoZSBIZWFwU2Nh bkRlc2MgdGlsbCBsYXRlciAqLwogCXNjYW5zdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0g TlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDRkYTBmMjhmN2IuLmIwYjM0 Y2QxNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtMTUzLDYgKzE1Myw4IEBA IEV4ZWNJbml0U2VxU2NhbihTZXFTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkJRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLAogCQkJCQkJCSBub2RlLT5zY2FuLnNj YW5yZWxpZCwKIAkJCQkJCQkgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qIGFuZCBjcmVhdGUgc2xvdCB3aXRoIHRoZSBhcHBy b3ByaWF0ZSByb3d0eXBlICovCiAJRXhlY0luaXRTY2FuVHVwbGVTbG90KGVzdGF0ZSwgJnNjYW5z dGF0ZS0+c3MsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCmluZGV4IDRiYzI0MDZiODkuLjkxMmNm N2IzN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCkBAIC01MjgsNiArNTI4LDggQEAgRXhl Y0luaXRTZXRPcChTZXRPcCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYg KG5vZGUtPnN0cmF0ZWd5ID09IFNFVE9QX0hBU0hFRCkKIAkJZWZsYWdzICY9IH5FWEVDX0ZMQUdf UkVXSU5EOwogCW91dGVyUGxhblN0YXRlKHNldG9wc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVy UGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCXJldHVybiBOVUxMOwogCW91dGVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91 dGVyUGxhblN0YXRlKHNldG9wc3RhdGUpKTsKIAogCS8qCkBAIC01ODksOCArNTkxLDYgQEAgRXhl Y0VuZFNldE9wKFNldE9wU3RhdGUgKm5vZGUpCiAJaWYgKG5vZGUtPnRhYmxlQ29udGV4dCkKIAkJ TWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJsZUNvbnRleHQpOwogCUV4ZWNGcmVlRXhwckNv bnRleHQoJm5vZGUtPnBzKTsKLQotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsK IH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwppbmRleCBjNmM3MmM2ZTY3Li4xYmE1MzM3M2My IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKQEAgLTI2Myw2ICsyNjMsOCBAQCBFeGVjSW5pdFNv cnQoU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJZWZsYWdzICY9IH4o RVhFQ19GTEFHX1JFV0lORCB8IEVYRUNfRkxBR19CQUNLV0FSRCB8IEVYRUNfRkxBR19NQVJLKTsK IAogCW91dGVyUGxhblN0YXRlKHNvcnRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5v ZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBl LgpAQCAtMzE3LDExICszMTksNiBAQCBFeGVjRW5kU29ydChTb3J0U3RhdGUgKm5vZGUpCiAJCXR1 cGxlc29ydF9lbmQoKFR1cGxlc29ydHN0YXRlICopIG5vZGUtPnR1cGxlc29ydHN0YXRlKTsKIAlu b2RlLT50dXBsZXNvcnRzdGF0ZSA9IE5VTEw7CiAKLQkvKgotCSAqIHNodXQgZG93biB0aGUgc3Vi cGxhbgotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKLQogCVNPMV9w cmludGYoIkV4ZWNFbmRTb3J0OiAlc1xuIiwKIAkJCSAgICJzb3J0IG5vZGUgc2h1dGRvd24iKTsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwppbmRleCA0MjQ3MWJmYzA0 Li4xMjAxNDI1MGFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVl cnlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCkBA IC0xMjQsNiArMTI0LDggQEAgRXhlY0luaXRTdWJxdWVyeVNjYW4oU3VicXVlcnlTY2FuICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIHN1YnF1ZXJ5CiAJ ICovCiAJc3VicXVlcnlzdGF0ZS0+c3VicGxhbiA9IEV4ZWNJbml0Tm9kZShub2RlLT5zdWJwbGFu LCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJ cmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlIChu ZWVkZWQgYnkgRXhlY0Fzc2lnblNjYW5Qcm9qZWN0aW9uSW5mbykKQEAgLTE3OCwxMSArMTgwLDYg QEAgRXhlY0VuZFN1YnF1ZXJ5U2NhbihTdWJxdWVyeVNjYW5TdGF0ZSAqbm9kZSkKIAlpZiAobm9k ZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQogCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5w cy5wc19SZXN1bHRUdXBsZVNsb3QpOwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5U dXBsZVNsb3QpOwotCi0JLyoKLQkgKiBjbG9zZSBkb3duIHN1YnF1ZXJ5Ci0JICovCi0JRXhlY0Vu ZE5vZGUobm9kZS0+c3VicGxhbik7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVUaWRyYW5nZXNjYW4uYwppbmRleCAyMTI0YzU1ZWY1Li42MTNiMzc3YzdjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCkBAIC0zODYsNiArMzg2LDggQEAgRXhl Y0luaXRUaWRSYW5nZVNjYW4oVGlkUmFuZ2VTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0 aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwg ZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVM TDsKIAogCXRpZHJhbmdlc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxh dGlvbjsKIAl0aWRyYW5nZXN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBu byB0YWJsZSBzY2FuIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVUaWRzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCmluZGV4IDg2 MmJkMDMzMGIuLjFiMGEyZDgwODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVUaWRzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwpAQCAt NTI5LDYgKzUyOSw4IEBAIEV4ZWNJbml0VGlkU2NhbihUaWRTY2FuICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3Vy cmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNj YW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQly ZXR1cm4gTlVMTDsKIAogCXRpZHN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50 UmVsYXRpb247CiAJdGlkc3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7IC8qIG5v IGhlYXAgc2NhbiBoZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl VW5pcXVlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKaW5kZXggNDUwMzVk NzRmYS4uYmQ3MTAzMzYyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVu aXF1ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwpAQCAtMTM2LDYg KzEzNiw4IEBAIEV4ZWNJbml0VW5pcXVlKFVuaXF1ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJICogdGhlbiBpbml0aWFsaXplIG91dGVyIHBsYW4KIAkgKi8KIAlvdXRlclBs YW5TdGF0ZSh1bmlxdWVzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3Rh dGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJu IE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHNsb3QgYW5kIHR5cGUuIFVuaXF1 ZSBub2RlcyBkbyBubyBwcm9qZWN0aW9ucywgc28KQEAgLTE3Miw4ICsxNzQsNiBAQCBFeGVjRW5k VW5pcXVlKFVuaXF1ZVN0YXRlICpub2RlKQogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jl c3VsdFR1cGxlU2xvdCk7CiAKIAlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7Ci0KLQlF eGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVdpbmRvd0FnZy5jCmluZGV4IDMxMGFjMjNlM2EuLjQ4M2YyM2RhMTggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAgLTI0NTgsNiArMjQ1OCw4IEBAIEV4ZWNJbml0V2lu ZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICov CiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKHdpbnN0YXRl KSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogaW5pdGlh bGl6ZSBzb3VyY2UgdHVwbGUgdHlwZSAod2hpY2ggaXMgYWxzbyB0aGUgdHVwbGUgdHlwZSB0aGF0 IHdlJ2xsCkBAIC0yNjgxLDcgKzI2ODMsNiBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhlY0VuZFdpbmRvd0Fn ZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgICpvdXRlclBsYW47CiAJaW50 CQkJaTsKIAogCXJlbGVhc2VfcGFydGl0aW9uKG5vZGUpOwpAQCAtMjcxMyw5ICsyNzE0LDYgQEAg RXhlY0VuZFdpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSkKIAogCXBmcmVlKG5vZGUtPnBl cmZ1bmMpOwogCXBmcmVlKG5vZGUtPnBlcmFnZyk7Ci0KLQlvdXRlclBsYW4gPSBvdXRlclBsYW5T dGF0ZShub2RlKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW4pOwogfQogCiAvKiAtLS0tLS0tLS0t LS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9zcGkuYwppbmRleCAzMzk3NTY4N2IzLi4wN2IxZjQ1M2UyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9zcGkuYwpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgaW50CV9TUElfZXhlY3V0ZV9wbGFuKFNQ SVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiBzdGF0aWMg UGFyYW1MaXN0SW5mbyBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0eXBl cywKIAkJCQkJCQkJCQkgRGF0dW0gKlZhbHVlcywgY29uc3QgY2hhciAqTnVsbHMpOwogCi1zdGF0 aWMgaW50CV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dl cnMsIHVpbnQ2NCB0Y291bnQpOworc3RhdGljIGludAlfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgdWludDY0IHRjb3VudCk7CiAKIHN0YXRpYyB2b2lkIF9TUElfZXJyb3JfY2FsbGJh Y2sodm9pZCAqYXJnKTsKIApAQCAtMTYyMyw2ICsxNjIzLDcgQEAgU1BJX2N1cnNvcl9vcGVuX2lu dGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAlfU1BJX2N1cnJlbnQt PnByb2Nlc3NlZCA9IDA7CiAJX1NQSV9jdXJyZW50LT50dXB0YWJsZSA9IE5VTEw7CiAKK3JlcGxh bjoKIAkvKiBDcmVhdGUgdGhlIHBvcnRhbCAqLwogCWlmIChuYW1lID09IE5VTEwgfHwgbmFtZVsw XSA9PSAnXDAnKQogCXsKQEAgLTE3NjYsNyArMTc2NywxMCBAQCBTUElfY3Vyc29yX29wZW5faW50 ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCX0KIAogCS8qCi0JICog U3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4KKwkgKiBTdGFydCBwb3J0YWwgZXhlY3V0aW9uLiAgSWYg dGhlIHBvcnRhbCBjb250YWlucyBhIGNhY2hlZCBwbGFuLCBpdCBtdXN0CisJICogYmUgcmVjcmVh dGVkIGlmIHBvcnRhbC0+cGxhbl92YWxpZCBpcyBmYWxzZSB3aGljaCB0ZWxscyB0aGF0IHRoZSBj YWNoZWQKKwkgKiBwbGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQgd2hlbiBp bml0aWFsaXppbmcgb25lIG9mIHRoZQorCSAqIHBsYW4gdHJlZXMgY29udGFpbmVkIGluIGl0Lgog CSAqLwogCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgMCwgc25hcHNob3QpOwogCkBAIC0x Nzc1LDYgKzE3NzksMTIgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5h bWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8K IAllcnJvcl9jb250ZXh0X3N0YWNrID0gc3BpZXJyY29udGV4dC5wcmV2aW91czsKIAorCWlmICgh cG9ydGFsLT5wbGFuX3ZhbGlkKQorCXsKKwkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKwkJ Z290byByZXBsYW47CisJfQorCiAJLyogUG9wIHRoZSBTUEkgc3RhY2sgKi8KIAlfU1BJX2VuZF9j YWxsKHRydWUpOwogCkBAIC0yNTUyLDYgKzI1NjIsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQ bGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkgKiBSZXBs YW4gaWYgbmVlZGVkLCBhbmQgaW5jcmVtZW50IHBsYW4gcmVmY291bnQuICBJZiBpdCdzIGEgc2F2 ZWQKIAkJICogcGxhbiwgdGhlIHJlZmNvdW50IG11c3QgYmUgYmFja2VkIGJ5IHRoZSBwbGFuX293 bmVyLgogCQkgKi8KK3JlcGxhbjoKIAkJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2Us IG9wdGlvbnMtPnBhcmFtcywKIAkJCQkJCQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVl cnlFbnYpOwogCkBAIC0yNjYxLDYgKzI2NzIsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFu UHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJewogCQkJCVF1 ZXJ5RGVzYyAgKnFkZXNjOwogCQkJCVNuYXBzaG90CXNuYXA7CisJCQkJaW50CQkJZWZsYWdzOwog CiAJCQkJaWYgKEFjdGl2ZVNuYXBzaG90U2V0KCkpCiAJCQkJCXNuYXAgPSBHZXRBY3RpdmVTbmFw c2hvdCgpOwpAQCAtMjY2OCwxNCArMjY4MCwzMiBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFu UHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJCQlzbmFwID0g SW52YWxpZFNuYXBzaG90OwogCiAJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJ CQkJCQkJCQljcGxhbiwKIAkJCQkJCQkJCQlwbGFuc291cmNlLT5xdWVyeV9zdHJpbmcsCiAJCQkJ CQkJCQkJc25hcCwgY3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJCQkJCQkJCQlkZXN0LAogCQkJCQkJ CQkJCW9wdGlvbnMtPnBhcmFtcywKIAkJCQkJCQkJCQlfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAog CQkJCQkJCQkJCTApOwotCQkJCXJlcyA9IF9TUElfcHF1ZXJ5KHFkZXNjLCBmaXJlX3RyaWdnZXJz LAotCQkJCQkJCQkgIGNhblNldFRhZyA/IG9wdGlvbnMtPnRjb3VudCA6IDApOworCisJCQkJLyog U2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCisJCQkJaWYgKGZpcmVfdHJpZ2dlcnMpCisJCQkJ CWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KKwkJ CQllbHNlCisJCQkJCWVmbGFncyA9IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTOworCisJCQkJRXhl Y3V0b3JTdGFydChxZGVzYywgZWZsYWdzKTsKKwkJCQlpZiAoIXFkZXNjLT5wbGFuX3ZhbGlkKQor CQkJCXsKKwkJCQkJRXhlY3V0b3JGaW5pc2gocWRlc2MpOworCQkJCQlFeGVjdXRvckVuZChxZGVz Yyk7CisJCQkJCUZyZWVRdWVyeURlc2MocWRlc2MpOworCQkJCQlBc3NlcnQoY3BsYW4pOworCQkJ CQlSZWxlYXNlQ2FjaGVkUGxhbihjcGxhbiwgcGxhbl9vd25lcik7CisJCQkJCWdvdG8gcmVwbGFu OworCQkJCX0KKworCQkJCXJlcyA9IF9TUElfcHF1ZXJ5KHFkZXNjLCBjYW5TZXRUYWcgPyBvcHRp b25zLT50Y291bnQgOiAwKTsKIAkJCQlGcmVlUXVlcnlEZXNjKHFkZXNjKTsKIAkJCX0KIAkJCWVs c2UKQEAgLTI4NTAsMTAgKzI4ODAsOSBAQCBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywg T2lkICphcmd0eXBlcywKIH0KIAogc3RhdGljIGludAotX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpx dWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCkKK19TUElfcHF1ZXJ5 KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCB1aW50NjQgdGNvdW50KQogewogCWludAkJCW9wZXJhdGlv biA9IHF1ZXJ5RGVzYy0+b3BlcmF0aW9uOwotCWludAkJCWVmbGFnczsKIAlpbnQJCQlyZXM7CiAK IAlzd2l0Y2ggKG9wZXJhdGlvbikKQEAgLTI4OTcsMTQgKzI5MjYsNiBAQCBfU1BJX3BxdWVyeShR dWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQog CQlSZXNldFVzYWdlKCk7CiAjZW5kaWYKIAotCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAq LwotCWlmIChmaXJlX3RyaWdnZXJzKQotCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10 by1jb21wbGV0aW9uIGZsYWdzICovCi0JZWxzZQotCQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9U UklHR0VSUzsKLQotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwotCiAJRXhlY3V0 b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgdGNvdW50LCB0cnVlKTsKIAog CV9TUElfY3VycmVudC0+cHJvY2Vzc2VkID0gcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3Nl ZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCmluZGV4IGVlOWI4OWE2NzIuLmM4MDdlOWNkY2MgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaW52YWxhZHQuaCIKICNpbmNsdWRl ICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogCiAKIC8qCkBA IC0zNjQsNiArMzY1LDUwIEBAIENoZWNrUmVsYXRpb25Mb2NrZWRCeU1lKFJlbGF0aW9uIHJlbGF0 aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCBvcnN0cm9uZ2VyKQogCXJldHVybiBmYWxzZTsK IH0KIAorLyoKKyAqCQlDaGVja1JlbExvY2tlZEJ5TWUKKyAqCisgKiBSZXR1cm5zIHRydWUgaWYg Y3VycmVudCB0cmFuc2FjdGlvbiBob2xkcyBhIGxvY2sgb24gdGhlIGdpdmVuIHJlbGF0aW9uIG9m CisgKiBtb2RlICdsb2NrbW9kZScuICBJZiAnb3JzdHJvbmdlcicgaXMgdHJ1ZSwgYSBzdHJvbmdl ciBsb2NrbW9kZSBpcyBhbHNvIE9LLgorICogKCJTdHJvbmdlciIgaXMgZGVmaW5lZCBhcyAibnVt ZXJpY2FsbHkgaGlnaGVyIiwgd2hpY2ggaXMgYSBiaXQKKyAqIHNlbWFudGljYWxseSBkdWJpb3Vz IGJ1dCBpcyBPSyBmb3IgdGhlIHB1cnBvc2VzIHdlIHVzZSB0aGlzIGZvci4pCisgKi8KK2Jvb2wK K0NoZWNrUmVsTG9ja2VkQnlNZShPaWQgcmVsaWQsIExPQ0tNT0RFIGxvY2ttb2RlLCBib29sIG9y c3Ryb25nZXIpCit7CisJT2lkCQkJZGJJZCA9IGdldF9yZWxfcmVsaXNzaGFyZWQocmVsaWQpID8g SW52YWxpZE9pZCA6IE15RGF0YWJhc2VJZDsKKwlMT0NLVEFHCQl0YWc7CisKKwlTRVRfTE9DS1RB R19SRUxBVElPTih0YWcsIGRiSWQsIHJlbGlkKTsKKworCWlmIChMb2NrSGVsZEJ5TWUoJnRhZywg bG9ja21vZGUpKQorCQlyZXR1cm4gdHJ1ZTsKKworCWlmIChvcnN0cm9uZ2VyKQorCXsKKwkJTE9D S01PREUJc2xvY2ttb2RlOworCisJCWZvciAoc2xvY2ttb2RlID0gbG9ja21vZGUgKyAxOworCQkJ IHNsb2NrbW9kZSA8PSBNYXhMb2NrTW9kZTsKKwkJCSBzbG9ja21vZGUrKykKKwkJeworCQkJaWYg KExvY2tIZWxkQnlNZSgmdGFnLCBzbG9ja21vZGUpKQorCQkJeworI2lmZGVmIE5PVF9VU0VECisJ CQkJLyogU29tZXRpbWVzIHRoaXMgbWlnaHQgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9z ZXMgKi8KKwkJCQllbG9nKFdBUk5JTkcsICJsb2NrIG1vZGUgJXMgc3Vic3RpdHV0ZWQgZm9yICVz IG9uIHJlbGF0aW9uICVzIiwKKwkJCQkJIEdldExvY2ttb2RlTmFtZSh0YWcubG9ja3RhZ19sb2Nr bWV0aG9kaWQsIHNsb2NrbW9kZSksCisJCQkJCSBHZXRMb2NrbW9kZU5hbWUodGFnLmxvY2t0YWdf bG9ja21ldGhvZGlkLCBsb2NrbW9kZSksCisJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShy ZWxhdGlvbikpOworI2VuZGlmCisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCX0KKwl9CisKKwly ZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKgkJTG9ja0hhc1dhaXRlcnNSZWxhdGlvbgogICoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYwppbmRleCAzNmNjOTllYzljLi4xNjBhZWY5MmY4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j CkBAIC0xMjMzLDYgKzEyMzMsNyBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25zdCBjaGFyICpxdWVy eV9zdHJpbmcpCiAJCSAqIFN0YXJ0IHRoZSBwb3J0YWwuICBObyBwYXJhbWV0ZXJzIGhlcmUuCiAJ CSAqLwogCQlQb3J0YWxTdGFydChwb3J0YWwsIE5VTEwsIDAsIEludmFsaWRTbmFwc2hvdCk7CisJ CUFzc2VydChwb3J0YWwtPnBsYW5fdmFsaWQpOwogCiAJCS8qCiAJCSAqIFNlbGVjdCB0aGUgYXBw cm9wcmlhdGUgb3V0cHV0IGZvcm1hdDogdGV4dCB1bmxlc3Mgd2UgYXJlIGRvaW5nIGEKQEAgLTE3 MzcsNiArMTczOCw3IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2Fn ZSkKIAkJCQkJCSJjb21tYW5kcyBpZ25vcmVkIHVudGlsIGVuZCBvZiB0cmFuc2FjdGlvbiBibG9j ayIpLAogCQkJCSBlcnJkZXRhaWxfYWJvcnQoKSkpOwogCityZXBsYW46CiAJLyoKIAkgKiBDcmVh dGUgdGhlIHBvcnRhbC4gIEFsbG93IHNpbGVudCByZXBsYWNlbWVudCBvZiBhbiBleGlzdGluZyBw b3J0YWwgb25seQogCSAqIGlmIHRoZSB1bm5hbWVkIHBvcnRhbCBpcyBzcGVjaWZpZWQuCkBAIC0y MDI4LDEwICsyMDMwLDE5IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVz c2FnZSkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAogCS8qCi0JICogQW5kIHdlJ3JlIHJlYWR5 IHRvIHN0YXJ0IHBvcnRhbCBleGVjdXRpb24uCisJICogU3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4g IElmIHRoZSBwb3J0YWwgY29udGFpbnMgYSBjYWNoZWQgcGxhbiwgaXQgbXVzdAorCSAqIGJlIHJl Y3JlYXRlZCBpZiBwb3J0YWwtPnBsYW5fdmFsaWQgaXMgZmFsc2Ugd2hpY2ggdGVsbHMgdGhhdCB0 aGUgY2FjaGVkCisJICogcGxhbiB3YXMgZm91bmQgdG8gaGF2ZSBiZWVuIGludmFsaWRhdGVkIHdo ZW4gaW5pdGlhbGl6aW5nIG9uZSBvZiB0aGUKKwkgKiBwbGFuIHRyZWVzIGNvbnRhaW5lZCBpbiBp dC4KIAkgKi8KIAlQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtcywgMCwgSW52YWxpZFNuYXBzaG90 KTsKIAorCWlmICghcG9ydGFsLT5wbGFuX3ZhbGlkKQorCXsKKwkJUG9ydGFsRHJvcChwb3J0YWws IGZhbHNlKTsKKwkJZ290byByZXBsYW47CisJfQorCiAJLyoKIAkgKiBBcHBseSB0aGUgcmVzdWx0 IGZvcm1hdCByZXF1ZXN0cyB0byB0aGUgcG9ydGFsLgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggNTU2 NWYyMDBjMy4uZGFiOTcxYWIwZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnku YworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC0xOSw2ICsxOSw3IEBACiAKICNp bmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ByZXBhcmUuaCIKKyNp bmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3RzdG9yZVJl Y2VpdmVyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdfdHJhY2UuaCIK QEAgLTM1LDEyICszNiw2IEBACiBQb3J0YWwJCUFjdGl2ZVBvcnRhbCA9IE5VTEw7CiAKIAotc3Rh dGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAotCQkJCQkJIGNvbnN0IGNo YXIgKnNvdXJjZVRleHQsCi0JCQkJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCi0JCQkJCQkgUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCi0JCQkJCQkgRGVzdFJlY2VpdmVyICpkZXN0LAotCQkJ CQkJIFF1ZXJ5Q29tcGxldGlvbiAqcWMpOwogc3RhdGljIHZvaWQgRmlsbFBvcnRhbFN0b3JlKFBv cnRhbCBwb3J0YWwsIGJvb2wgaXNUb3BMZXZlbCk7CiBzdGF0aWMgdWludDY0IFJ1bkZyb21TdG9y ZShQb3J0YWwgcG9ydGFsLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgdWludDY0IGNvdW50LAog CQkJCQkJICAgRGVzdFJlY2VpdmVyICpkZXN0KTsKQEAgLTY1LDYgKzYwLDcgQEAgc3RhdGljIHZv aWQgRG9Qb3J0YWxSZXdpbmQoUG9ydGFsIHBvcnRhbCk7CiAgKi8KIFF1ZXJ5RGVzYyAqCiBDcmVh dGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJCUNhY2hlZFBsYW4gKmNw bGFuLAogCQkJCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJU25hcHNob3Qgc25hcHNob3Qs CiAJCQkJU25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hvdCwKQEAgLTc3LDYgKzczLDcgQEAgQ3Jl YXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKIAogCXFkLT5vcGVyYXRpb24g PSBwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGU7CS8qIG9wZXJhdGlvbiAqLwogCXFkLT5wbGFubmVk c3RtdCA9IHBsYW5uZWRzdG10OwkvKiBwbGFuICovCisJcWQtPmNwbGFuID0gY3BsYW47CQkJCS8q IENhY2hlZFBsYW4sIGlmIHBsYW4gaXMgZnJvbSBvbmUgKi8KIAlxZC0+c291cmNlVGV4dCA9IHNv dXJjZVRleHQ7CS8qIHF1ZXJ5IHRleHQgKi8KIAlxZC0+c25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KHNuYXBzaG90KTsJLyogc25hcHNob3QgKi8KIAkvKiBSSSBjaGVjayBzbmFwc2hvdCAqLwpA QCAtMTE2LDg2ICsxMTMsNiBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiB9CiAK IAotLyoKLSAqIFByb2Nlc3NRdWVyeQotICoJCUV4ZWN1dGUgYSBzaW5nbGUgcGxhbm5hYmxlIHF1 ZXJ5IHdpdGhpbiBhIFBPUlRBTF9NVUxUSV9RVUVSWSwKLSAqCQlQT1JUQUxfT05FX1JFVFVSTklO Rywgb3IgUE9SVEFMX09ORV9NT0RfV0lUSCBwb3J0YWwKLSAqCi0gKglwbGFuOiB0aGUgcGxhbiB0 cmVlIGZvciB0aGUgcXVlcnkKLSAqCXNvdXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4dCBvZiB0aGUg cXVlcnkKLSAqCXBhcmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVkCi0gKglkZXN0OiB3aGVyZSB0 byBzZW5kIHJlc3VsdHMKLSAqCXFjOiB3aGVyZSB0byBzdG9yZSB0aGUgY29tbWFuZCBjb21wbGV0 aW9uIHN0YXR1cyBkYXRhLgotICoKLSAqIHFjIG1heSBiZSBOVUxMIGlmIGNhbGxlciBkb2Vzbid0 IHdhbnQgYSBzdGF0dXMgc3RyaW5nLgotICoKLSAqIE11c3QgYmUgY2FsbGVkIGluIGEgbWVtb3J5 IGNvbnRleHQgdGhhdCB3aWxsIGJlIHJlc2V0IG9yIGRlbGV0ZWQgb24KLSAqIGVycm9yOyBvdGhl cndpc2UgdGhlIGV4ZWN1dG9yJ3MgbWVtb3J5IHVzYWdlIHdpbGwgYmUgbGVha2VkLgotICovCi1z dGF0aWMgdm9pZAotUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAotCQkJIGNvbnN0IGNo YXIgKnNvdXJjZVRleHQsCi0JCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCi0JCQkgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYsCi0JCQkgRGVzdFJlY2VpdmVyICpkZXN0LAotCQkJIFF1ZXJ5Q29t cGxldGlvbiAqcWMpCi17Ci0JUXVlcnlEZXNjICAqcXVlcnlEZXNjOwotCi0JLyoKLQkgKiBDcmVh dGUgdGhlIFF1ZXJ5RGVzYyBvYmplY3QKLQkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURl c2MocGxhbiwgc291cmNlVGV4dCwKLQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxp ZFNuYXBzaG90LAotCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKLQotCS8qCi0J ICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgot CSAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKLQotCS8qCi0JICogUnVuIHRoZSBw bGFuIHRvIGNvbXBsZXRpb24uCi0JICovCi0JRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJk U2NhbkRpcmVjdGlvbiwgMCwgdHJ1ZSk7Ci0KLQkvKgotCSAqIEJ1aWxkIGNvbW1hbmQgY29tcGxl dGlvbiBzdGF0dXMgZGF0YSwgaWYgY2FsbGVyIHdhbnRzIG9uZS4KLQkgKi8KLQlpZiAocWMpCi0J ewotCQlzd2l0Y2ggKHF1ZXJ5RGVzYy0+b3BlcmF0aW9uKQotCQl7Ci0JCQljYXNlIENNRF9TRUxF Q1Q6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfU0VMRUNULCBxdWVyeURlc2Mt PmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX0lOU0VSVDoK LQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19JTlNFUlQsIHF1ZXJ5RGVzYy0+ZXN0 YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfVVBEQVRFOgotCQkJ CVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1VQREFURSwgcXVlcnlEZXNjLT5lc3RhdGUt PmVzX3Byb2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIENNRF9ERUxFVEU6Ci0JCQkJU2V0 UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfREVMRVRFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNf cHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX01FUkdFOgotCQkJCVNldFF1ZXJ5 Q29tcGxldGlvbihxYywgQ01EVEFHX01FUkdFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vz c2VkKTsKLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFj LCBDTURUQUdfVU5LTk9XTiwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0JCQkJ YnJlYWs7Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIE5vdywgd2UgY2xvc2UgZG93biBhbGwgdGhlIHNj YW5zIGFuZCBmcmVlIGFsbG9jYXRlZCByZXNvdXJjZXMuCi0JICovCi0JRXhlY3V0b3JGaW5pc2go cXVlcnlEZXNjKTsKLQlFeGVjdXRvckVuZChxdWVyeURlc2MpOwotCi0JRnJlZVF1ZXJ5RGVzYyhx dWVyeURlc2MpOwotfQotCiAvKgogICogQ2hvb3NlUG9ydGFsU3RyYXRlZ3kKICAqCQlTZWxlY3Qg cG9ydGFsIGV4ZWN1dGlvbiBzdHJhdGVneSBnaXZlbiB0aGUgaW50ZW5kZWQgc3RhdGVtZW50IGxp c3QuCkBAIC00MjcsNyArMzQ0LDggQEAgRmV0Y2hTdGF0ZW1lbnRUYXJnZXRMaXN0KE5vZGUgKnN0 bXQpCiAgKiB0byBiZSB1c2VkIGZvciBjdXJzb3JzKS4KICAqCiAgKiBPbiByZXR1cm4sIHBvcnRh bCBpcyByZWFkeSB0byBhY2NlcHQgUG9ydGFsUnVuKCkgY2FsbHMsIGFuZCB0aGUgcmVzdWx0Ci0g KiB0dXBkZXNjIChpZiBhbnkpIGlzIGtub3duLgorICogdHVwZGVzYyAoaWYgYW55KSBpcyBrbm93 biwgdW5sZXNzIHBvcnRhbC0+cGxhbl92YWxpZCBpcyBzZXQgdG8gZmFsc2UsIGluCisgKiB3aGlj aCBjYXNlLCB0aGUgY2FsbGVyIG11c3QgcmV0cnkgYWZ0ZXIgZ2VuZXJhdGluZyBhIG5ldyBDYWNo ZWRQbGFuLgogICovCiB2b2lkCiBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJ bmZvIHBhcmFtcywKQEAgLTQzNSwxMCArMzUzLDkgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRh bCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiB7CiAJUG9ydGFsCQlzYXZlQWN0aXZlUG9ydGFsOwog CVJlc291cmNlT3duZXIgc2F2ZVJlc291cmNlT3duZXI7Ci0JTWVtb3J5Q29udGV4dCBzYXZlUG9y dGFsQ29udGV4dDsKIAlNZW1vcnlDb250ZXh0IG9sZENvbnRleHQ7CiAJUXVlcnlEZXNjICAqcXVl cnlEZXNjOwotCWludAkJCW15ZWZsYWdzOworCWludAkJCW15ZWZsYWdzID0gMDsKIAogCUFzc2Vy dChQb3J0YWxJc1ZhbGlkKHBvcnRhbCkpOwogCUFzc2VydChwb3J0YWwtPnN0YXR1cyA9PSBQT1JU QUxfREVGSU5FRCk7CkBAIC00NDgsMTUgKzM2NSwxMyBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9y dGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkgKi8KIAlzYXZlQWN0aXZlUG9ydGFsID0gQWN0 aXZlUG9ydGFsOwogCXNhdmVSZXNvdXJjZU93bmVyID0gQ3VycmVudFJlc291cmNlT3duZXI7Ci0J c2F2ZVBvcnRhbENvbnRleHQgPSBQb3J0YWxDb250ZXh0OwogCVBHX1RSWSgpOwogCXsKIAkJQWN0 aXZlUG9ydGFsID0gcG9ydGFsOwogCQlpZiAocG9ydGFsLT5yZXNvd25lcikKIAkJCUN1cnJlbnRS ZXNvdXJjZU93bmVyID0gcG9ydGFsLT5yZXNvd25lcjsKLQkJUG9ydGFsQ29udGV4dCA9IHBvcnRh bC0+cG9ydGFsQ29udGV4dDsKIAotCQlvbGRDb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KFBvcnRhbENvbnRleHQpOworCQlvbGRDb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBv cnRhbC0+cXVlcnlDb250ZXh0KTsKIAogCQkvKiBNdXN0IHJlbWVtYmVyIHBvcnRhbCBwYXJhbSBs aXN0LCBpZiBhbnkgKi8KIAkJcG9ydGFsLT5wb3J0YWxQYXJhbXMgPSBwYXJhbXM7CkBAIC00NzIs NiArMzg3LDggQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJh bXMsCiAJCXN3aXRjaCAocG9ydGFsLT5zdHJhdGVneSkKIAkJewogCQkJY2FzZSBQT1JUQUxfT05F X1NFTEVDVDoKKwkJCWNhc2UgUE9SVEFMX09ORV9SRVRVUk5JTkc6CisJCQljYXNlIFBPUlRBTF9P TkVfTU9EX1dJVEg6CiAKIAkJCQkvKiBNdXN0IHNldCBzbmFwc2hvdCBiZWZvcmUgc3RhcnRpbmcg ZXhlY3V0b3IuICovCiAJCQkJaWYgKHNuYXBzaG90KQpAQCAtNDkzLDYgKzQxMCw3IEBAIFBvcnRh bFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCSAqIHRoZSBk ZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlxdWVyeURlc2MgPSBDcmVhdGVR dWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5zdG10cyksCisJCQkJ CQkJCQkJCXBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJCQkJCXBvcnRhbC0+c291cmNlVGV4dCwKIAkJ CQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90 LApAQCAtNTAxLDMwICs0MTksNTIgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1M aXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkJCQkJCXBvcnRhbC0+cXVlcnlFbnYsCiAJCQkJCQkJCQkJ CTApOwogCisJCQkJLyogUmVtZW1iZXIgZm9yIFBvcnRhbFJ1bk11bHRpKCkuICovCisJCQkJaWYg KHBvcnRhbC0+c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9SRVRVUk5JTkcgfHwKKwkJCQkJcG9ydGFs LT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX01PRF9XSVRIKQorCQkJCQlwb3J0YWwtPnFkZXNjcyA9 IGxpc3RfbWFrZTEocXVlcnlEZXNjKTsKKwogCQkJCS8qCiAJCQkJICogSWYgaXQncyBhIHNjcm9s bGFibGUgY3Vyc29yLCBleGVjdXRvciBuZWVkcyB0byBzdXBwb3J0CiAJCQkJICogUkVXSU5EIGFu ZCBiYWNrd2FyZHMgc2NhbiwgYXMgd2VsbCBhcyB3aGF0ZXZlciB0aGUgY2FsbGVyCiAJCQkJICog bWlnaHQndmUgYXNrZWQgZm9yLgogCQkJCSAqLwotCQkJCWlmIChwb3J0YWwtPmN1cnNvck9wdGlv bnMgJiBDVVJTT1JfT1BUX1NDUk9MTCkKKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JU QUxfT05FX1NFTEVDVCAmJgorCQkJCQkocG9ydGFsLT5jdXJzb3JPcHRpb25zICYgQ1VSU09SX09Q VF9TQ1JPTEwpKQogCQkJCQlteWVmbGFncyA9IGVmbGFncyB8IEVYRUNfRkxBR19SRVdJTkQgfCBF WEVDX0ZMQUdfQkFDS1dBUkQ7CiAJCQkJZWxzZQogCQkJCQlteWVmbGFncyA9IGVmbGFnczsKIAog CQkJCS8qCi0JCQkJICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9y IGV4ZWN1dGlvbgorCQkJCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFu IGZvciBleGVjdXRpb24uICBBCisJCQkJICogY2FjaGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRl ZCBhcyB3ZSdyZSBkb2luZyB0aGF0LgogCQkJCSAqLwogCQkJCUV4ZWN1dG9yU3RhcnQocXVlcnlE ZXNjLCBteWVmbGFncyk7CisJCQkJaWYgKCFxdWVyeURlc2MtPnBsYW5fdmFsaWQpCisJCQkJewor CQkJCQlBc3NlcnQocXVlcnlEZXNjLT5jcGxhbik7CisJCQkJCVBvcnRhbFF1ZXJ5RmluaXNoKHF1 ZXJ5RGVzYyk7CisJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQkJCXBvcnRhbC0+cGxhbl92 YWxpZCA9IGZhbHNlOworCQkJCQlnb3RvIGVhcmx5X2V4aXQ7CisJCQkJfQogCiAJCQkJLyoKLQkJ CQkgKiBUaGlzIHRlbGxzIFBvcnRhbENsZWFudXAgdG8gc2h1dCBkb3duIHRoZSBleGVjdXRvcgor CQkJCSAqIFRoaXMgdGVsbHMgUG9ydGFsQ2xlYW51cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9y LCB0aG91Z2gKKwkJCQkgKiBub3QgbmVlZGVkIGZvciBxdWVyaWVzIGhhbmRsZWQgYnkgUG9ydGFs UnVuTXVsdGkoKS4KIAkJCQkgKi8KLQkJCQlwb3J0YWwtPnF1ZXJ5RGVzYyA9IHF1ZXJ5RGVzYzsK KwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1NFTEVDVCkKKwkJCQkJcG9y dGFsLT5xdWVyeURlc2MgPSBxdWVyeURlc2M7CiAKIAkJCQkvKgotCQkJCSAqIFJlbWVtYmVyIHR1 cGxlIGRlc2NyaXB0b3IgKGNvbXB1dGVkIGJ5IEV4ZWN1dG9yU3RhcnQpCisJCQkJICogUmVtZW1i ZXIgdHVwbGUgZGVzY3JpcHRvciAoY29tcHV0ZWQgYnkgRXhlY3V0b3JTdGFydCksCisJCQkJICog dGhvdWdoIG1ha2UgaXQgaW5kZXBlbmRlbnQgb2YgUXVlcnlEZXNjIGZvciBxdWVyaWVzIGhhbmRs ZWQKKwkJCQkgKiBieSBQb3J0YWxSdW5NdWx0aSgpLgogCQkJCSAqLwotCQkJCXBvcnRhbC0+dHVw RGVzYyA9IHF1ZXJ5RGVzYy0+dHVwRGVzYzsKKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSAhPSBQ T1JUQUxfT05FX1NFTEVDVCkKKwkJCQkJcG9ydGFsLT50dXBEZXNjID0gQ3JlYXRlVHVwbGVEZXNj Q29weShxdWVyeURlc2MtPnR1cERlc2MpOworCQkJCWVsc2UKKwkJCQkJcG9ydGFsLT50dXBEZXNj ID0gcXVlcnlEZXNjLT50dXBEZXNjOwogCiAJCQkJLyoKIAkJCQkgKiBSZXNldCBjdXJzb3IgcG9z aXRpb24gZGF0YSB0byAic3RhcnQgb2YgcXVlcnkiCkBAIC01MzIsMzMgKzQ3MiwxMSBAQCBQb3J0 YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQlwb3J0YWwt PmF0U3RhcnQgPSB0cnVlOwogCQkJCXBvcnRhbC0+YXRFbmQgPSBmYWxzZTsJLyogYWxsb3cgZmV0 Y2hlcyAqLwogCQkJCXBvcnRhbC0+cG9ydGFsUG9zID0gMDsKKwkJCQlwb3J0YWwtPnBsYW5fdmFs aWQgPSB0cnVlOwogCiAJCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJCQlicmVhazsKIAotCQkJ Y2FzZSBQT1JUQUxfT05FX1JFVFVSTklORzoKLQkJCWNhc2UgUE9SVEFMX09ORV9NT0RfV0lUSDoK LQotCQkJCS8qCi0JCQkJICogV2UgZG9uJ3Qgc3RhcnQgdGhlIGV4ZWN1dG9yIHVudGlsIHdlIGFy ZSB0b2xkIHRvIHJ1biB0aGUKLQkJCQkgKiBwb3J0YWwuICBXZSBkbyBuZWVkIHRvIHNldCB1cCB0 aGUgcmVzdWx0IHR1cGRlc2MuCi0JCQkJICovCi0JCQkJewotCQkJCQlQbGFubmVkU3RtdCAqcHN0 bXQ7Ci0KLQkJCQkJcHN0bXQgPSBQb3J0YWxHZXRQcmltYXJ5U3RtdChwb3J0YWwpOwotCQkJCQlw b3J0YWwtPnR1cERlc2MgPQotCQkJCQkJRXhlY0NsZWFuVHlwZUZyb21UTChwc3RtdC0+cGxhblRy ZWUtPnRhcmdldGxpc3QpOwotCQkJCX0KLQotCQkJCS8qCi0JCQkJICogUmVzZXQgY3Vyc29yIHBv c2l0aW9uIGRhdGEgdG8gInN0YXJ0IG9mIHF1ZXJ5IgotCQkJCSAqLwotCQkJCXBvcnRhbC0+YXRT dGFydCA9IHRydWU7Ci0JCQkJcG9ydGFsLT5hdEVuZCA9IGZhbHNlOwkvKiBhbGxvdyBmZXRjaGVz ICovCi0JCQkJcG9ydGFsLT5wb3J0YWxQb3MgPSAwOwotCQkJCWJyZWFrOwotCiAJCQljYXNlIFBP UlRBTF9VVElMX1NFTEVDVDoKIAogCQkJCS8qCkBAIC01NzgsMTEgKzQ5Niw4NyBAQCBQb3J0YWxT dGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQlwb3J0YWwtPmF0 U3RhcnQgPSB0cnVlOwogCQkJCXBvcnRhbC0+YXRFbmQgPSBmYWxzZTsJLyogYWxsb3cgZmV0Y2hl cyAqLwogCQkJCXBvcnRhbC0+cG9ydGFsUG9zID0gMDsKKwkJCQlwb3J0YWwtPnBsYW5fdmFsaWQg PSB0cnVlOwogCQkJCWJyZWFrOwogCiAJCQljYXNlIFBPUlRBTF9NVUxUSV9RVUVSWToKLQkJCQkv KiBOZWVkIGRvIG5vdGhpbmcgbm93ICovCisJCQkJeworCQkJCQlMaXN0Q2VsbCAgICpsYzsKKwkJ CQkJYm9vbAkJZmlyc3QgPSB0cnVlOworCisJCQkJCW15ZWZsYWdzID0gZWZsYWdzOworCQkJCQlm b3JlYWNoKGxjLCBwb3J0YWwtPnN0bXRzKQorCQkJCQl7CisJCQkJCQlQbGFubmVkU3RtdCAqcGxh biA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYyk7CisJCQkJCQlib29sCQlpc191dGlsaXR5 ID0gKHBsYW4tPnV0aWxpdHlTdG10ICE9IE5VTEwpOworCisJCQkJCQkvKgorCQkJCQkJICogUHVz aCB0aGUgc25hcHNob3QgdG8gYmUgdXNlZCBieSB0aGUgZXhlY3V0b3IuCisJCQkJCQkgKi8KKwkJ CQkJCWlmICghaXNfdXRpbGl0eSkKKwkJCQkJCXsKKwkJCQkJCQkvKgorCQkJCQkJCSAqIE11c3Qg Y29weSB0aGUgc25hcHNob3QgZm9yIGFsbCBzdGF0ZW1lbnRzCisJCQkJCQkJICogZXhjZXB0IHRo ZWMgZmlyc3QgYXMgd2UnbGwgbmVlZCB0byB1cGRhdGUgaXRzCisJCQkJCQkJICogY29tbWFuZCBJ RC4KKwkJCQkJCQkgKi8KKwkJCQkJCQlpZiAoIWZpcnN0KQorCQkJCQkJCQlQdXNoQ29waWVkU25h cHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJCQkJCQllbHNlCisJCQkJCQkJCVB1 c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJCQkJfQorCisJ CQkJCQkvKgorCQkJCQkJICogRnJvbSB0aGUgMm5kIHN0YXRlbWVudCBvbndhcmRzLCB1cGRhdGUg dGhlIGNvbW1hbmQKKwkJCQkJCSAqIElEIGFuZCB0aGUgc25hcHNob3QgdG8gbWF0Y2guCisJCQkJ CQkgKi8KKwkJCQkJCWlmICghZmlyc3QpCisJCQkJCQl7CisJCQkJCQkJQ29tbWFuZENvdW50ZXJJ bmNyZW1lbnQoKTsKKwkJCQkJCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOworCQkJ CQkJfQorCisJCQkJCQlmaXJzdCA9IGZhbHNlOworCisJCQkJCQkvKgorCQkJCQkJICogQ3JlYXRl IHRoZSBRdWVyeURlc2Mgb2JqZWN0LiAgRGVzdFJlY2VpdmVyIHdpbGwKKwkJCQkJCSAqIGJlIHNl dCBpbiBQb3J0YWxSdW5NdWx0aSgpLgorCQkJCQkJICovCisJCQkJCQlxdWVyeURlc2MgPSBDcmVh dGVRdWVyeURlc2MocGxhbiwgcG9ydGFsLT5jcGxhbiwKKwkJCQkJCQkJCQkJCQlwb3J0YWwtPnNv dXJjZVRleHQsCisJCQkJCQkJCQkJCQkJIWlzX3V0aWxpdHkgPworCQkJCQkJCQkJCQkJCUdldEFj dGl2ZVNuYXBzaG90KCkgOgorCQkJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKKwkJCQkJCQkJ CQkJCQlJbnZhbGlkU25hcHNob3QsCisJCQkJCQkJCQkJCQkJTlVMTCwKKwkJCQkJCQkJCQkJCQlw YXJhbXMsCisJCQkJCQkJCQkJCQkJcG9ydGFsLT5xdWVyeUVudiwgMCk7CisKKwkJCQkJCS8qIFJl bWVtYmVyIGZvciBQb3J0YWxSdW5NdWx0aSgpICovCisJCQkJCQlwb3J0YWwtPnFkZXNjcyA9IGxh cHBlbmQocG9ydGFsLT5xZGVzY3MsIHF1ZXJ5RGVzYyk7CisKKwkJCQkJCWlmIChpc191dGlsaXR5 KQorCQkJCQkJCWNvbnRpbnVlOworCisJCQkJCQkvKgorCQkJCQkJICogQ2FsbCBFeGVjdXRvclN0 YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yCisJCQkJCQkgKiBleGVjdXRpb24uICBBIGNhY2hl ZCBwbGFuIG1heSBnZXQgaW52YWxpZGF0ZWQgYXMKKwkJCQkJCSAqIHdlJ3JlIGRvaW5nIHRoYXQu CisJCQkJCQkgKi8KKwkJCQkJCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBteWVmbGFncyk7CisJ CQkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQkJCQkJaWYgKCFxdWVyeURlc2MtPnBsYW5fdmFs aWQpCisJCQkJCQl7CisJCQkJCQkJQXNzZXJ0KHF1ZXJ5RGVzYy0+Y3BsYW4pOworCQkJCQkJCVBv cnRhbFF1ZXJ5RmluaXNoKHF1ZXJ5RGVzYyk7CisJCQkJCQkJcG9ydGFsLT5wbGFuX3ZhbGlkID0g ZmFsc2U7CisJCQkJCQkJZ290byBlYXJseV9leGl0OworCQkJCQkJfQorCQkJCQl9CisJCQkJfQor CiAJCQkJcG9ydGFsLT50dXBEZXNjID0gTlVMTDsKKwkJCQlwb3J0YWwtPnBsYW5fdmFsaWQgPSB0 cnVlOwogCQkJCWJyZWFrOwogCQl9CiAJfQpAQCAtNTk0LDE5ICs1ODgsMTggQEAgUG9ydGFsU3Rh cnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCS8qIFJlc3RvcmUgZ2xv YmFsIHZhcnMgYW5kIHByb3BhZ2F0ZSBlcnJvciAqLwogCQlBY3RpdmVQb3J0YWwgPSBzYXZlQWN0 aXZlUG9ydGFsOwogCQlDdXJyZW50UmVzb3VyY2VPd25lciA9IHNhdmVSZXNvdXJjZU93bmVyOwot CQlQb3J0YWxDb250ZXh0ID0gc2F2ZVBvcnRhbENvbnRleHQ7CiAKIAkJUEdfUkVfVEhST1coKTsK IAl9CiAJUEdfRU5EX1RSWSgpOwogCisJcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfUkVBRFk7CisK K2Vhcmx5X2V4aXQ6CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZENvbnRleHQpOwogCiAJQWN0 aXZlUG9ydGFsID0gc2F2ZUFjdGl2ZVBvcnRhbDsKIAlDdXJyZW50UmVzb3VyY2VPd25lciA9IHNh dmVSZXNvdXJjZU93bmVyOwotCVBvcnRhbENvbnRleHQgPSBzYXZlUG9ydGFsQ29udGV4dDsKLQot CXBvcnRhbC0+c3RhdHVzID0gUE9SVEFMX1JFQURZOwogfQogCiAvKgpAQCAtMTE5Myw3ICsxMTg2 LDcgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCSAgIFF1ZXJ5Q29tcGxldGlv biAqcWMpCiB7CiAJYm9vbAkJYWN0aXZlX3NuYXBzaG90X3NldCA9IGZhbHNlOwotCUxpc3RDZWxs ICAgKnN0bXRsaXN0X2l0ZW07CisJTGlzdENlbGwgICAqcWRlc2NfaXRlbTsKIAogCS8qCiAJICog SWYgdGhlIGRlc3RpbmF0aW9uIGlzIERlc3RSZW1vdGVFeGVjdXRlLCBjaGFuZ2UgdG8gRGVzdE5v bmUuICBUaGUKQEAgLTEyMTQsOSArMTIwNywxMCBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9y dGFsLAogCSAqIExvb3AgdG8gaGFuZGxlIHRoZSBpbmRpdmlkdWFsIHF1ZXJpZXMgZ2VuZXJhdGVk IGZyb20gYSBzaW5nbGUgcGFyc2V0cmVlCiAJICogYnkgYW5hbHlzaXMgYW5kIHJld3JpdGUuCiAJ ICovCi0JZm9yZWFjaChzdG10bGlzdF9pdGVtLCBwb3J0YWwtPnN0bXRzKQorCWZvcmVhY2gocWRl c2NfaXRlbSwgcG9ydGFsLT5xZGVzY3MpCiAJewotCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmly c3Rfbm9kZShQbGFubmVkU3RtdCwgc3RtdGxpc3RfaXRlbSk7CisJCVF1ZXJ5RGVzYyAqcWRlc2Mg PSAoUXVlcnlEZXNjICopIGxmaXJzdChxZGVzY19pdGVtKTsKKwkJUGxhbm5lZFN0bXQgKnBzdG10 ID0gcWRlc2MtPnBsYW5uZWRzdG10OwogCiAJCS8qCiAJCSAqIElmIHdlIGdvdCBhIGNhbmNlbCBz aWduYWwgaW4gcHJpb3IgY29tbWFuZCwgcXVpdApAQCAtMTIzMywzMyArMTIyNywyNiBAQCBQb3J0 YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJaWYgKGxvZ19leGVjdXRvcl9zdGF0cykKIAkJ CQlSZXNldFVzYWdlKCk7CiAKLQkJCS8qCi0JCQkgKiBNdXN0IGFsd2F5cyBoYXZlIGEgc25hcHNo b3QgZm9yIHBsYW5uYWJsZSBxdWVyaWVzLiAgRmlyc3QgdGltZQotCQkJICogdGhyb3VnaCwgdGFr ZSBhIG5ldyBzbmFwc2hvdDsgZm9yIHN1YnNlcXVlbnQgcXVlcmllcyBpbiB0aGUKLQkJCSAqIHNh bWUgcG9ydGFsLCBqdXN0IHVwZGF0ZSB0aGUgc25hcHNob3QncyBjb3B5IG9mIHRoZSBjb21tYW5k Ci0JCQkgKiBjb3VudGVyLgotCQkJICovCisJCQkvKiBQdXNoIHRoZSBzbmFwc2hvdCBmb3IgcGxh bm5hYmxlIHF1ZXJpZXMuICovCiAJCQlpZiAoIWFjdGl2ZV9zbmFwc2hvdF9zZXQpCiAJCQl7Ci0J CQkJU25hcHNob3QJc25hcHNob3QgPSBHZXRUcmFuc2FjdGlvblNuYXBzaG90KCk7CisJCQkJU25h cHNob3QJc25hcHNob3QgPSBxZGVzYy0+c25hcHNob3Q7CiAKLQkJCQkvKiBJZiB0b2xkIHRvLCBy ZWdpc3RlciB0aGUgc25hcHNob3QgYW5kIHNhdmUgaW4gcG9ydGFsICovCisJCQkJLyoKKwkJCQkg KiBJZiB0b2xkIHRvLCByZWdpc3RlciB0aGUgc25hcHNob3QgYW5kIHNhdmUgaW4gcG9ydGFsCisJ CQkJICoKKwkJCQkgKiBOb3RlIHRoYXQgdGhlIGNvbW1hbmQgSUQgb2YgcWRlc2MtPnNuYXBzaG90 IGZvciAybmQgcXVlcnkKKwkJCQkgKiBvbndhcmRzIHdvdWxkIGhhdmUgYmVlbiB1cGRhdGVkIGlu IFBvcnRhbFN0YXJ0KCkgdG8gYWNjb3VudAorCQkJCSAqIGZvciBDQ0koKSBkb25lIGJldHdlZW4g cXVlcmllcywgYnV0IGl0J3MgT0sgdGhhdCBoZXJlIHdlCisJCQkJICogZG9uJ3QgbGlrZXdpc2Ug dXBkYXRlIGhvbGRTbmFwc2hvdCdzIGNvbW1hbmQgSUQuCisJCQkJICovCiAJCQkJaWYgKHNldEhv bGRTbmFwc2hvdCkKIAkJCQl7CiAJCQkJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFw c2hvdCk7CiAJCQkJCXBvcnRhbC0+aG9sZFNuYXBzaG90ID0gc25hcHNob3Q7CiAJCQkJfQogCi0J CQkJLyoKLQkJCQkgKiBXZSBjYW4ndCBoYXZlIHRoZSBob2xkU25hcHNob3QgYWxzbyBiZSB0aGUg YWN0aXZlIG9uZSwKLQkJCQkgKiBiZWNhdXNlIFVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElk IHdvdWxkIGNvbXBsYWluLiAgU28KLQkJCQkgKiBmb3JjZSBhbiBleHRyYSBzbmFwc2hvdCBjb3B5 LiAgUGxhaW4gUHVzaEFjdGl2ZVNuYXBzaG90Ci0JCQkJICogd291bGQgaGF2ZSBjb3BpZWQgdGhl IHRyYW5zYWN0aW9uIHNuYXBzaG90IGFueXdheSwgc28gdGhpcwotCQkJCSAqIG9ubHkgYWRkcyBh IGNvcHkgc3RlcCB3aGVuIHNldEhvbGRTbmFwc2hvdCBpcyB0cnVlLiAgKEl0J3MKLQkJCQkgKiBv a2F5IGZvciB0aGUgY29tbWFuZCBJRCBvZiB0aGUgYWN0aXZlIHNuYXBzaG90IHRvIGRpdmVyZ2UK LQkJCQkgKiBmcm9tIHdoYXQgaG9sZFNuYXBzaG90IGhhcy4pCi0JCQkJICovCi0JCQkJUHVzaENv cGllZFNuYXBzaG90KHNuYXBzaG90KTsKKwkJCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3Qp OwogCiAJCQkJLyoKIAkJCQkgKiBBcyBmb3IgUE9SVEFMX09ORV9TRUxFQ1QgcG9ydGFscywgaXQg ZG9lcyBub3Qgc2VlbQpAQCAtMTI2OCwyNiArMTI1NSwzOSBAQCBQb3J0YWxSdW5NdWx0aShQb3J0 YWwgcG9ydGFsLAogCiAJCQkJYWN0aXZlX3NuYXBzaG90X3NldCA9IHRydWU7CiAJCQl9Ci0JCQll bHNlCi0JCQkJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAorCQkJLyoKKwkJCSAq IFJ1biB0aGUgcGxhbiB0byBjb21wbGV0aW9uLgorCQkJICovCisJCQlxZGVzYy0+ZGVzdCA9IGRl c3Q7CisJCQlFeGVjdXRvclJ1bihxZGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDAsIHRydWUp OworCisJCQkvKgorCQkJICogQnVpbGQgY29tbWFuZCBjb21wbGV0aW9uIHN0YXR1cyBkYXRhIGlm IG5lZWRlZC4KKwkJCSAqLwogCQkJaWYgKHBzdG10LT5jYW5TZXRUYWcpCiAJCQl7Ci0JCQkJLyog c3RhdGVtZW50IGNhbiBzZXQgdGFnIHN0cmluZyAqLwotCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwK LQkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAotCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFt cywKLQkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwKLQkJCQkJCQkgZGVzdCwgcWMpOwotCQkJfQot CQkJZWxzZQotCQkJewotCQkJCS8qIHN0bXQgYWRkZWQgYnkgcmV3cml0ZSBjYW5ub3Qgc2V0IHRh ZyAqLwotCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKLQkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0 LAotCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKLQkJCQkJCQkgcG9ydGFsLT5xdWVyeUVu diwKLQkJCQkJCQkgYWx0ZGVzdCwgTlVMTCk7CisJCQkJc3dpdGNoIChxZGVzYy0+b3BlcmF0aW9u KQorCQkJCXsKKwkJCQkJY2FzZSBDTURfU0VMRUNUOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9u KHFjLCBDTURUQUdfU0VMRUNULCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJ YnJlYWs7CisJCQkJCWNhc2UgQ01EX0lOU0VSVDoKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihx YywgQ01EVEFHX0lOU0VSVCwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJy ZWFrOworCQkJCQljYXNlIENNRF9VUERBVEU6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMs IENNRFRBR19VUERBVEUsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVh azsKKwkJCQkJY2FzZSBDTURfREVMRVRFOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBD TURUQUdfREVMRVRFLCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7 CisJCQkJCWNhc2UgQ01EX01FUkdFOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURU QUdfTUVSR0UsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJ CQkJZGVmYXVsdDoKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1VOS05PV04s IHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQl9CiAJCQl9 CiAKIAkJCWlmIChsb2dfZXhlY3V0b3Jfc3RhdHMpCkBAIC0xMzQyLDEyICsxMzQyLDEyIEBAIFBv cnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCWlmIChwb3J0YWwtPnN0bXRzID09IE5JTCkK IAkJCWJyZWFrOwogCi0JCS8qCi0JCSAqIEluY3JlbWVudCBjb21tYW5kIGNvdW50ZXIgYmV0d2Vl biBxdWVyaWVzLCBidXQgbm90IGFmdGVyIHRoZSBsYXN0Ci0JCSAqIG9uZS4KLQkJICovCi0JCWlm IChsbmV4dChwb3J0YWwtPnN0bXRzLCBzdG10bGlzdF9pdGVtKSAhPSBOVUxMKQotCQkJQ29tbWFu ZENvdW50ZXJJbmNyZW1lbnQoKTsKKwkJaWYgKHFkZXNjLT5lc3RhdGUpCisJCXsKKwkJCUV4ZWN1 dG9yRmluaXNoKHFkZXNjKTsKKwkJCUV4ZWN1dG9yRW5kKHFkZXNjKTsKKwkJfQorCQlGcmVlUXVl cnlEZXNjKHFkZXNjKTsKIAl9CiAKIAkvKiBQb3AgdGhlIHNuYXBzaG90IGlmIHdlIHB1c2hlZCBv bmUuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4IDYwOTc4Zjk0MTUuLmRl M2ZjNzU2ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0yMDczLDYgKzIw NzMsMjcgQEAgZ2V0X3JlbF9wZXJzaXN0ZW5jZShPaWQgcmVsaWQpCiAJcmV0dXJuIHJlc3VsdDsK IH0KIAorLyoKKyAqIGdldF9yZWxfcmVsaXNzaGFyZWQKKyAqCisgKgkJUmV0dXJucyBpZiB0aGUg Z2l2ZW4gcmVsYXRpb24gaXMgc2hhcmVkIG9yIG5vdAorICovCitib29sCitnZXRfcmVsX3JlbGlz c2hhcmVkKE9pZCByZWxpZCkKK3sKKwlIZWFwVHVwbGUJdHA7CisJRm9ybV9wZ19jbGFzcyByZWx0 dXA7CisJYm9vbAkJcmVzdWx0OworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBPYmpl Y3RJZEdldERhdHVtKHJlbGlkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJZWxv ZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uICV1IiwgcmVsaWQpOwor CXJlbHR1cCA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHApOworCXJlc3VsdCA9IHJlbHR1 cC0+cmVsaXNzaGFyZWQ7CisJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKworCXJldHVybiByZXN1bHQ7 Cit9CiAKIC8qCQkJCS0tLS0tLS0tLS0gVFJBTlNGT1JNIENBQ0hFIC0tLS0tLS0tLS0JCQkJCQkg Ki8KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCAzZDNmN2E5YmVhLi5lNjIz N2Q3MGIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtMTAyLDEzICsxMDIs MTMgQEAgc3RhdGljIHZvaWQgUmVsZWFzZUdlbmVyaWNQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UpOwogc3RhdGljIExpc3QgKlJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu dik7CiBzdGF0aWMgYm9vbCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSk7CitzdGF0aWMgYm9vbCBHZW5lcmljUGxhbklzVmFsaWQoQ2FjaGVkUGxhbiAqY3BsYW4p Owogc3RhdGljIENhY2hlZFBsYW4gKkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAkJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBh cmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogc3RhdGljIGJvb2wgY2hvb3NlX2N1 c3RvbV9wbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJICAgUGFyYW1M aXN0SW5mbyBib3VuZFBhcmFtcyk7CiBzdGF0aWMgZG91YmxlIGNhY2hlZF9wbGFuX2Nvc3QoQ2Fj aGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpOwogc3RhdGljIFF1ZXJ5ICpRdWVy eUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cyk7Ci1zdGF0aWMgdm9pZCBBY3F1aXJlRXhl Y3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgdm9pZCBB Y3F1aXJlUGxhbm5lckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKIHN0YXRp YyB2b2lkIFNjYW5RdWVyeUZvckxvY2tzKFF1ZXJ5ICpwYXJzZXRyZWUsIGJvb2wgYWNxdWlyZSk7 CiBzdGF0aWMgYm9vbCBTY2FuUXVlcnlXYWxrZXIoTm9kZSAqbm9kZSwgYm9vbCAqYWNxdWlyZSk7 CkBAIC03OTAsOCArNzkwLDE0IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291 cmNlICpwbGFuc291cmNlLAogICogQ2FsbGVyIG11c3QgaGF2ZSBhbHJlYWR5IGNhbGxlZCBSZXZh bGlkYXRlQ2FjaGVkUXVlcnkgdG8gdmVyaWZ5IHRoYXQgdGhlCiAgKiBxdWVyeXRyZWUgaXMgdXAg dG8gZGF0ZS4KICAqCi0gKiBPbiBhICJ0cnVlIiByZXR1cm4sIHdlIGhhdmUgYWNxdWlyZWQgdGhl IGxvY2tzIG5lZWRlZCB0byBydW4gdGhlIHBsYW4uCi0gKiAoV2UgbXVzdCBkbyB0aGlzIGZvciB0 aGUgInRydWUiIHJlc3VsdCB0byBiZSByYWNlLWNvbmRpdGlvbi1mcmVlLikKKyAqIE5vdGUgdGhv dWdoIHRoYXQgaWYgdGhlIHBsYW4gY29udGFpbnMgYW55IGNoaWxkIHJlbGF0aW9ucyB0aGF0IHdv dWxkIGhhdmUKKyAqIGJlZW4gYWRkZWQgYnkgdGhlIHBsYW5uZXIsIHdoaWNoIHdvdWxkIG5vdCBo YXZlIGJlZW4gbG9ja2VkIHlldCAoYmVjYXVzZQorICogQWNxdWlyZVBsYW5uZXJMb2NrcygpIG9u bHkgbG9ja3MgcmVsYXRpb25zIHRoYXQgd291bGQgYmUgcHJlc2VudCBpbiB0aGUKKyAqIHJhbmdl IHRhYmxlIGJlZm9yZSBlbnRlcmluZyB0aGUgcGxhbm5lciksIHRoZSBwbGFuIGNvdWxkIGdvIHN0 YWxlIGJlZm9yZQorICogaXQgcmVhY2hlcyBleGVjdXRpb24gaWYgYW55IG9mIHRob3NlIGNoaWxk IHJlbGF0aW9ucyBnZXQgbW9kaWZpZWQKKyAqIGNvbmN1cnJlbnRseS4gIFRoZSBleGVjdXRvciBt dXN0IGNoZWNrIHRoYXQgdGhlIHBsYW4gKENhY2hlZFBsYW4pIGlzIHN0aWxsCisgKiB2YWxpZCBh ZnRlciB0YWtpbmcgYSBsb2NrIG9uIGVhY2ggb2YgdGhlIGNoaWxkIHRhYmxlcywgYW5kIGlmIGl0 IGlzIG5vdCwKKyAqIGFzayB0aGUgY2FsbGVyIHRvIHJlY3JlYXRlIHRoZSBwbGFuLgogICovCiBz dGF0aWMgYm9vbAogQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Up CkBAIC04MDUsNjAgKzgxMSw1NiBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSkKIAlpZiAoIXBsYW4pCiAJCXJldHVybiBmYWxzZTsKIAotCUFzc2VydChwbGFu LT5tYWdpYyA9PSBDQUNIRURQTEFOX01BR0lDKTsKLQkvKiBHZW5lcmljIHBsYW5zIGFyZSBuZXZl ciBvbmUtc2hvdCAqLwotCUFzc2VydCghcGxhbi0+aXNfb25lc2hvdCk7CisJaWYgKEdlbmVyaWNQ bGFuSXNWYWxpZChwbGFuKSkKKwkJcmV0dXJuIHRydWU7CiAKIAkvKgotCSAqIElmIHBsYW4gaXNu J3QgdmFsaWQgZm9yIGN1cnJlbnQgcm9sZSwgd2UgY2FuJ3QgdXNlIGl0LgorCSAqIFBsYW4gaGFz IGJlZW4gaW52YWxpZGF0ZWQsIHNvIHVubGluayBpdCBmcm9tIHRoZSBwYXJlbnQgYW5kIHJlbGVh c2UgaXQuCiAJICovCi0JaWYgKHBsYW4tPmlzX3ZhbGlkICYmIHBsYW4tPmRlcGVuZHNPblJvbGUg JiYKLQkJcGxhbi0+cGxhblJvbGVJZCAhPSBHZXRVc2VySWQoKSkKLQkJcGxhbi0+aXNfdmFsaWQg PSBmYWxzZTsKKwlSZWxlYXNlR2VuZXJpY1BsYW4ocGxhbnNvdXJjZSk7CiAKLQkvKgotCSAqIElm IGl0IGFwcGVhcnMgdmFsaWQsIGFjcXVpcmUgbG9ja3MgYW5kIHJlY2hlY2s7IHRoaXMgaXMgbXVj aCB0aGUgc2FtZQotCSAqIGxvZ2ljIGFzIGluIFJldmFsaWRhdGVDYWNoZWRRdWVyeSwgYnV0IGZv ciBhIHBsYW4uCi0JICovCi0JaWYgKHBsYW4tPmlzX3ZhbGlkKQorCXJldHVybiBmYWxzZTsKK30K KworLyoKKyAqIEdlbmVyaWNQbGFuSXNWYWxpZAorICoJCUlzIGEgZ2VuZXJpYyBwbGFuIHN0aWxs IHZhbGlkPworICoKKyAqIEl0IG1heSBoYXZlIGdvbmUgc3RhbGUgZHVlIHRvIGNvbmN1cnJlbnQg c2NoZW1hIG1vZGlmaWNhdGlvbnMgb2YgcmVsYXRpb25zCisgKiBtZW50aW9uZWQgaW4gdGhlIHBs YW4gb3IgYSBjb3VwbGUgb2Ygb3RoZXIgdGhpbmdzIG1lbnRpb25lZCBiZWxvdy4KKyAqLworc3Rh dGljIGJvb2wKK0dlbmVyaWNQbGFuSXNWYWxpZChDYWNoZWRQbGFuICpjcGxhbikKK3sKKwlBc3Nl cnQoY3BsYW4gIT0gTlVMTCk7CisJQXNzZXJ0KGNwbGFuLT5tYWdpYyA9PSBDQUNIRURQTEFOX01B R0lDKTsKKwkvKiBHZW5lcmljIHBsYW5zIGFyZSBuZXZlciBvbmUtc2hvdCAqLworCUFzc2VydCgh Y3BsYW4tPmlzX29uZXNob3QpOworCisJaWYgKGNwbGFuLT5pc192YWxpZCkKIAl7CiAJCS8qCiAJ CSAqIFBsYW4gbXVzdCBoYXZlIHBvc2l0aXZlIHJlZmNvdW50IGJlY2F1c2UgaXQgaXMgcmVmZXJl bmNlZCBieQogCQkgKiBwbGFuc291cmNlOyBzbyBubyBuZWVkIHRvIGZlYXIgaXQgZGlzYXBwZWFy cyB1bmRlciB1cyBoZXJlLgogCQkgKi8KLQkJQXNzZXJ0KHBsYW4tPnJlZmNvdW50ID4gMCk7Ci0K LQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCB0cnVlKTsKKwkJQXNzZXJ0 KGNwbGFuLT5yZWZjb3VudCA+IDApOwogCiAJCS8qCi0JCSAqIElmIHBsYW4gd2FzIHRyYW5zaWVu dCwgY2hlY2sgdG8gc2VlIGlmIFRyYW5zYWN0aW9uWG1pbiBoYXMKLQkJICogYWR2YW5jZWQsIGFu ZCBpZiBzbyBpbnZhbGlkYXRlIGl0LgorCQkgKiBJZiBwbGFuIGlzbid0IHZhbGlkIGZvciBjdXJy ZW50IHJvbGUsIHdlIGNhbid0IHVzZSBpdC4KIAkJICovCi0JCWlmIChwbGFuLT5pc192YWxpZCAm JgotCQkJVHJhbnNhY3Rpb25JZElzVmFsaWQocGxhbi0+c2F2ZWRfeG1pbikgJiYKLQkJCSFUcmFu c2FjdGlvbklkRXF1YWxzKHBsYW4tPnNhdmVkX3htaW4sIFRyYW5zYWN0aW9uWG1pbikpCi0JCQlw bGFuLT5pc192YWxpZCA9IGZhbHNlOworCQlpZiAoY3BsYW4tPmRlcGVuZHNPblJvbGUgJiYgY3Bs YW4tPnBsYW5Sb2xlSWQgIT0gR2V0VXNlcklkKCkpCisJCQljcGxhbi0+aXNfdmFsaWQgPSBmYWxz ZTsKIAogCQkvKgotCQkgKiBCeSBub3csIGlmIGFueSBpbnZhbGlkYXRpb24gaGFzIGhhcHBlbmVk LCB0aGUgaW52YWwgY2FsbGJhY2sKLQkJICogZnVuY3Rpb25zIHdpbGwgaGF2ZSBtYXJrZWQgdGhl IHBsYW4gaW52YWxpZC4KKwkJICogSWYgcGxhbiB3YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUg aWYgVHJhbnNhY3Rpb25YbWluIGhhcworCQkgKiBhZHZhbmNlZCwgYW5kIGlmIHNvIGludmFsaWRh dGUgaXQuCiAJCSAqLwotCQlpZiAocGxhbi0+aXNfdmFsaWQpCi0JCXsKLQkJCS8qIFN1Y2Nlc3Nm dWxseSByZXZhbGlkYXRlZCBhbmQgbG9ja2VkIHRoZSBxdWVyeS4gKi8KLQkJCXJldHVybiB0cnVl OwotCQl9Ci0KLQkJLyogT29wcywgdGhlIHJhY2UgY2FzZSBoYXBwZW5lZC4gIFJlbGVhc2UgdXNl bGVzcyBsb2Nrcy4gKi8KLQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBm YWxzZSk7CisJCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChjcGxhbi0+c2F2ZWRfeG1pbikgJiYK KwkJCSFUcmFuc2FjdGlvbklkRXF1YWxzKGNwbGFuLT5zYXZlZF94bWluLCBUcmFuc2FjdGlvblht aW4pKQorCQkJY3BsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CiAJfQogCi0JLyoKLQkgKiBQbGFuIGhh cyBiZWVuIGludmFsaWRhdGVkLCBzbyB1bmxpbmsgaXQgZnJvbSB0aGUgcGFyZW50IGFuZCByZWxl YXNlIGl0LgotCSAqLwotCVJlbGVhc2VHZW5lcmljUGxhbihwbGFuc291cmNlKTsKLQotCXJldHVy biBmYWxzZTsKKwlyZXR1cm4gY3BsYW4tPmlzX3ZhbGlkOwogfQogCiAvKgpAQCAtMTEyOCw4ICsx MTMwLDE1IEBAIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRl X3BsYW5uZXIpCiAgKiBwbGFuIG9yIGEgY3VzdG9tIHBsYW4gZm9yIHRoZSBnaXZlbiBwYXJhbWV0 ZXJzOiB0aGUgY2FsbGVyIGRvZXMgbm90IGtub3cKICAqIHdoaWNoIGl0IHdpbGwgZ2V0LgogICoK LSAqIE9uIHJldHVybiwgdGhlIHBsYW4gaXMgdmFsaWQgYW5kIHdlIGhhdmUgc3VmZmljaWVudCBs b2NrcyB0byBiZWdpbgotICogZXhlY3V0aW9uLgorICogT24gcmV0dXJuLCB0aGUgcGxhbiBpcyB2 YWxpZCB1bmxlc3MgaXQgY29udGFpbnMgaW5oZXJpdGFuY2UvcGFydGl0aW9uIGNoaWxkCisgKiB0 YWJsZXMsIHRoYXQgaXMsIG9ubHkgdGhlIGxvY2tzIG9uIHRoZSB0YWJsZXMgbWVudGlvbmVkIGlu IHRoZSBxdWVyeSBoYXZlCisgKiBiZWVuIHRha2VuLiAgSWYgYW55IG9mIHRob3NlIHRhYmxlcyBo YXZlIGluaGVyaXRhbmNlL3BhcnRpdGlvbiB0YWJsZXMsIHRoZQorICogZXhlY3V0b3IgbXVzdCBh bHNvIGxvY2sgdGhlbSBiZWZvcmUgZXhlY3V0aW5nIHRoZSBwbGFuIGFuZCBpZiB0aGUgcGxhbiBn ZXRzCisgKiBpbnZhbGlkYXRlZCBhcyBhIHJlc3VsdCBvZiB0YWtpbmcgdGhvc2UgbG9ja3MsIG11 c3QgYXNrIHRoZSBjYWxsZXIgdG8gZ2V0CisgKiBhIG5ldyBwbGFuIGJ5IGNhbGxpbmcgaGVyZSBh Z2Fpbi4gIExvY2tpbmcgb2YgdGhlIGNoaWxkIHRhYmxlcyBtdXN0IGJlCisgKiBkZWZlcnJlZCB0 byB0aGUgZXhlY3V0b3IgbGlrZSB0aGlzLCBiZWNhdXNlIG5vdCBhbGwgY2hpbGQgdGFibGVzIG1h eSBuZWVkCisgKiB0byBiZSBsb2NrZWQ7IHNvbWUgbWF5IGdldCBwcnVuZWQgZHVyaW5nIHRoZSBl eGVjdXRvciBwbGFuIGluaXRpYWxpemF0aW9uCisgKiBwaGFzZSAoSW5pdFBsYW4oKSkuCiAgKgog ICogT24gcmV0dXJuLCB0aGUgcmVmY291bnQgb2YgdGhlIHBsYW4gaGFzIGJlZW4gaW5jcmVtZW50 ZWQ7IGEgbGF0ZXIKICAqIFJlbGVhc2VDYWNoZWRQbGFuKCkgY2FsbCBpcyBleHBlY3RlZC4gIElm ICJvd25lciIgaXMgbm90IE5VTEwgdGhlbgpAQCAtMTM2Miw4ICsxMzcxLDggQEAgQ2FjaGVkUGxh bkFsbG93c1NpbXBsZVZhbGlkaXR5Q2hlY2soQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwK IAl9CiAKIAkvKgotCSAqIFJlamVjdCBpZiBBY3F1aXJlRXhlY3V0b3JMb2NrcyB3b3VsZCBoYXZl IGFueXRoaW5nIHRvIGRvLiAgVGhpcyBpcwotCSAqIHByb2JhYmx5IHVubmVjZXNzYXJ5IGdpdmVu IHRoZSBwcmV2aW91cyBjaGVjaywgYnV0IGxldCdzIGJlIHNhZmUuCisJICogUmVqZWN0IGlmIHRo ZSBleGVjdXRvciB3b3VsZCBuZWVkIHRvIHRha2UgYWRkaXRpb25hbCBsb2NrcywgdGhhdCBpcywg aW4KKwkgKiBhZGRpdGlvbiB0byB0aG9zZSB0YWtlbiBieSBBY3F1aXJlUGxhbm5lckxvY2tzKCkg b24gYSBnaXZlbiBxdWVyeS4KIAkgKi8KIAlmb3JlYWNoKGxjLCBwbGFuLT5zdG10X2xpc3QpCiAJ ewpAQCAtMTczNyw1OCArMTc0Niw2IEBAIFF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0 bXRzKQogCXJldHVybiBOVUxMOwogfQogCi0vKgotICogQWNxdWlyZUV4ZWN1dG9yTG9ja3M6IGFj cXVpcmUgbG9ja3MgbmVlZGVkIGZvciBleGVjdXRpb24gb2YgYSBjYWNoZWQgcGxhbjsKLSAqIG9y IHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNlLgotICovCi1zdGF0aWMgdm9pZAotQWNx dWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCi17Ci0JTGlz dENlbGwgICAqbGMxOwotCi0JZm9yZWFjaChsYzEsIHN0bXRfbGlzdCkKLQl7Ci0JCVBsYW5uZWRT dG10ICpwbGFubmVkc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYzEpOwotCQlMaXN0 Q2VsbCAgICpsYzI7Ci0KLQkJaWYgKHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJ TElUWSkKLQkJewotCQkJLyoKLQkJCSAqIElnbm9yZSB1dGlsaXR5IHN0YXRlbWVudHMsIGV4Y2Vw dCB0aG9zZSAoc3VjaCBhcyBFWFBMQUlOKSB0aGF0Ci0JCQkgKiBjb250YWluIGEgcGFyc2VkLWJ1 dC1ub3QtcGxhbm5lZCBxdWVyeS4gIE5vdGU6IGl0J3Mgb2theSB0byB1c2UKLQkJCSAqIFNjYW5R dWVyeUZvckxvY2tzLCBldmVuIHRob3VnaCB0aGUgcXVlcnkgaGFzbid0IGJlZW4gdGhyb3VnaAot CQkJICogcnVsZSByZXdyaXRpbmcsIGJlY2F1c2UgcmV3cml0aW5nIGRvZXNuJ3QgY2hhbmdlIHRo ZSBxdWVyeQotCQkJICogcmVwcmVzZW50YXRpb24uCi0JCQkgKi8KLQkJCVF1ZXJ5CSAgICpxdWVy eSA9IFV0aWxpdHlDb250YWluc1F1ZXJ5KHBsYW5uZWRzdG10LT51dGlsaXR5U3RtdCk7Ci0KLQkJ CWlmIChxdWVyeSkKLQkJCQlTY2FuUXVlcnlGb3JMb2NrcyhxdWVyeSwgYWNxdWlyZSk7Ci0JCQlj b250aW51ZTsKLQkJfQotCi0JCWZvcmVhY2gobGMyLCBwbGFubmVkc3RtdC0+cnRhYmxlKQotCQl7 Ci0JCQlSYW5nZVRibEVudHJ5ICpydGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBsZmlyc3QobGMyKTsK LQotCQkJaWYgKCEocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAotCQkJCSAgKHJ0ZS0+ cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYgT2lkSXNWYWxpZChydGUtPnJlbGlkKSkpKQotCQkJ CWNvbnRpbnVlOwotCi0JCQkvKgotCQkJICogQWNxdWlyZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBv ZiBsb2NrIG9uIGVhY2ggcmVsYXRpb24gT0lELiBOb3RlCi0JCQkgKiB0aGF0IHdlIGRvbid0IGFj dHVhbGx5IHRyeSB0byBvcGVuIHRoZSByZWwsIGFuZCBoZW5jZSB3aWxsIG5vdAotCQkJICogZmFp bCBpZiBpdCdzIGJlZW4gZHJvcHBlZCBlbnRpcmVseSAtLS0gd2UnbGwganVzdCB0cmFuc2llbnRs eQotCQkJICogYWNxdWlyZSBhIG5vbi1jb25mbGljdGluZyBsb2NrLgotCQkJICovCi0JCQlpZiAo YWNxdWlyZSkKLQkJCQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9k ZSk7Ci0JCQllbHNlCi0JCQkJVW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxs b2NrbW9kZSk7Ci0JCX0KLQl9Ci19Ci0KIC8qCiAgKiBBY3F1aXJlUGxhbm5lckxvY2tzOiBhY3F1 aXJlIGxvY2tzIG5lZWRlZCBmb3IgcGxhbm5pbmcgb2YgYSBxdWVyeXRyZWUgbGlzdDsKICAqIG9y IHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFs bWVtLmMKaW5kZXggMDZkZmE4NWYwNC4uMGNhZDQ1MGRjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3Bv cnRhbG1lbS5jCkBAIC0yMDEsNiArMjAxLDEzIEBAIENyZWF0ZVBvcnRhbChjb25zdCBjaGFyICpu YW1lLCBib29sIGFsbG93RHVwLCBib29sIGR1cFNpbGVudCkKIAlwb3J0YWwtPnBvcnRhbENvbnRl eHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wUG9ydGFsQ29udGV4dCwKIAkJCQkJCQkJCQkJ CSAgIlBvcnRhbENvbnRleHQiLAogCQkJCQkJCQkJCQkJICBBTExPQ1NFVF9TTUFMTF9TSVpFUyk7 CisJLyoKKwkgKiBpbml0aWFsaXplIHBvcnRhbCdzIHF1ZXJ5IGNvbnRleHQgdG8gc3RvcmUgUXVl cnlEZXNjcyBjcmVhdGVkIGR1cmluZworCSAqIFBvcnRhbFN0YXJ0KCkgYW5kIHRoZW4gdXNlZCBp biBQb3J0YWxSdW4oKS4KKwkgKi8KKwlwb3J0YWwtPnF1ZXJ5Q29udGV4dCA9IEFsbG9jU2V0Q29u dGV4dENyZWF0ZShUb3BQb3J0YWxDb250ZXh0LAorCQkJCQkJCQkJCQkJICJQb3J0YWxRdWVyeUNv bnRleHQiLAorCQkJCQkJCQkJCQkJIEFMTE9DU0VUX1NNQUxMX1NJWkVTKTsKIAogCS8qIGNyZWF0 ZSBhIHJlc291cmNlIG93bmVyIGZvciB0aGUgcG9ydGFsICovCiAJcG9ydGFsLT5yZXNvd25lciA9 IFJlc291cmNlT3duZXJDcmVhdGUoQ3VyVHJhbnNhY3Rpb25SZXNvdXJjZU93bmVyLApAQCAtMjI0 LDYgKzIzMSw3IEBAIENyZWF0ZVBvcnRhbChjb25zdCBjaGFyICpuYW1lLCBib29sIGFsbG93RHVw LCBib29sIGR1cFNpbGVudCkKIAogCS8qIGZvciBuYW1lZCBwb3J0YWxzIHJldXNlIHBvcnRhbC0+ bmFtZSBjb3B5ICovCiAJTWVtb3J5Q29udGV4dFNldElkZW50aWZpZXIocG9ydGFsLT5wb3J0YWxD b250ZXh0LCBwb3J0YWwtPm5hbWVbMF0gPyBwb3J0YWwtPm5hbWUgOiAiPHVubmFtZWQ+Iik7CisJ TWVtb3J5Q29udGV4dFNldElkZW50aWZpZXIocG9ydGFsLT5xdWVyeUNvbnRleHQsIHBvcnRhbC0+ bmFtZVswXSA/IHBvcnRhbC0+bmFtZSA6ICI8dW5uYW1lZD4iKTsKIAogCXJldHVybiBwb3J0YWw7 CiB9CkBAIC01OTQsNiArNjAyLDcgQEAgUG9ydGFsRHJvcChQb3J0YWwgcG9ydGFsLCBib29sIGlz VG9wQ29tbWl0KQogCiAJLyogcmVsZWFzZSBzdWJzaWRpYXJ5IHN0b3JhZ2UgKi8KIAlNZW1vcnlD b250ZXh0RGVsZXRlKHBvcnRhbC0+cG9ydGFsQ29udGV4dCk7CisJTWVtb3J5Q29udGV4dERlbGV0 ZShwb3J0YWwtPnF1ZXJ5Q29udGV4dCk7CiAKIAkvKiByZWxlYXNlIHBvcnRhbCBzdHJ1Y3QgKGl0 J3MgaW4gVG9wUG9ydGFsQ29udGV4dCkgKi8KIAlwZnJlZShwb3J0YWwpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhw bGFpbi5oCmluZGV4IDNkM2U2MzJhMGMuLjM5MmFiYjUxNTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWlu LmgKQEAgLTg4LDcgKzg4LDExIEBAIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUg KnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJCSAgRXhwbGFpblN0YXRlICpl cywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFt cywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogCi1leHRlcm4gdm9pZCBFeHBsYWluT25l UGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sCitleHRlcm4g UXVlcnlEZXNjICpFeHBsYWluUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpzdG10LCBzdHJ1Y3QgQ2Fj aGVkUGxhbiAqY3BsYW4sCisJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBJbnRvQ2xhdXNl ICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorCQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUXVl cnlEZXNjICpxdWVyeURlc2MsCisJCQkJCQkgICBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJICAg RXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBQYXJh bUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCiAJCQkJCQkgICBj b25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCkBAIC0xMDQsNiArMTA4LDcgQEAgZXh0ZXJu IHZvaWQgRXhwbGFpblF1ZXJ5UGFyYW1ldGVycyhFeHBsYWluU3RhdGUgKmVzLCBQYXJhbUxpc3RJ bmZvIHBhcmFtcywgaW50IG0KIAogZXh0ZXJuIHZvaWQgRXhwbGFpbkJlZ2luT3V0cHV0KEV4cGxh aW5TdGF0ZSAqZXMpOwogZXh0ZXJuIHZvaWQgRXhwbGFpbkVuZE91dHB1dChFeHBsYWluU3RhdGUg KmVzKTsKK2V4dGVybiB2b2lkIEV4cGxhaW5SZXNldE91dHB1dChFeHBsYWluU3RhdGUgKmVzKTsK IGV4dGVybiB2b2lkIEV4cGxhaW5TZXBhcmF0ZVBsYW5zKEV4cGxhaW5TdGF0ZSAqZXMpOwogCiBl eHRlcm4gdm9pZCBFeHBsYWluUHJvcGVydHlMaXN0KGNvbnN0IGNoYXIgKnFsYWJlbCwgTGlzdCAq ZGF0YSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCmluZGV4IGFmMmJmMzZkZmIuLmMzNmMyNWI0OTcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaApAQCAtMzIsOSArMzIsMTIgQEAKICAqLwogdHlwZWRl ZiBzdHJ1Y3QgUXVlcnlEZXNjCiB7CisJTm9kZVRhZwkJdHlwZTsKKwogCS8qIFRoZXNlIGZpZWxk cyBhcmUgcHJvdmlkZWQgYnkgQ3JlYXRlUXVlcnlEZXNjICovCiAJQ21kVHlwZQkJb3BlcmF0aW9u OwkJLyogQ01EX1NFTEVDVCwgQ01EX1VQREFURSwgZXRjLiAqLwogCVBsYW5uZWRTdG10ICpwbGFu bmVkc3RtdDsJLyogcGxhbm5lcidzIG91dHB1dCAoY291bGQgYmUgdXRpbGl0eSwgdG9vKSAqLwor CXN0cnVjdCBDYWNoZWRQbGFuICpjcGxhbjsJLyogQ2FjaGVkUGxhbiwgaWYgcGxhbm5lZHN0bXQg aXMgZnJvbSBvbmUgKi8KIAljb25zdCBjaGFyICpzb3VyY2VUZXh0OwkJLyogc291cmNlIHRleHQg b2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNob3QJc25hcHNob3Q7CQkvKiBzbmFwc2hvdCB0byB1c2Ug Zm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJY3Jvc3NjaGVja19zbmFwc2hvdDsJLyogY3Jvc3NjaGVj ayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAqLwpAQCAtNDcsNiArNTAsNyBAQCB0eXBlZGVmIHN0cnVj dCBRdWVyeURlc2MKIAlUdXBsZURlc2MJdHVwRGVzYzsJCS8qIGRlc2NyaXB0b3IgZm9yIHJlc3Vs dCB0dXBsZXMgKi8KIAlFU3RhdGUJICAgKmVzdGF0ZTsJCQkvKiBleGVjdXRvcidzIHF1ZXJ5LXdp ZGUgc3RhdGUgKi8KIAlQbGFuU3RhdGUgICpwbGFuc3RhdGU7CQkvKiB0cmVlIG9mIHBlci1wbGFu LW5vZGUgc3RhdGUgKi8KKwlib29sCQlwbGFuX3ZhbGlkOwkJLyogaXMgcGxhbnN0YXRlIHRyZWUg ZnVsbHkgdmFsaWQ/ICovCiAKIAkvKiBUaGlzIGZpZWxkIGlzIHNldCBieSBFeGVjdXRvclJ1biAq LwogCWJvb2wJCWFscmVhZHlfZXhlY3V0ZWQ7CS8qIHRydWUgaWYgcHJldmlvdXNseSBleGVjdXRl ZCAqLwpAQCAtNTcsNiArNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAogLyogaW4g cHF1ZXJ5LmMgKi8KIGV4dGVybiBRdWVyeURlc2MgKkNyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3Rt dCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCSAgc3RydWN0IENhY2hlZFBsYW4gKmNwbGFuLAogCQkJ CQkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNo b3QsCiAJCQkJCQkJCSAgU25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hvdCwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oCmluZGV4IGFjMDIyNDc5NDcuLjY0MGI5MDU5NzMgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y3V0b3IuaApAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgi CiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCisjaW5jbHVkZSAidXRpbHMvcGxhbmNhY2hlLmgiCiAKIAogLyoKQEAgLTI1Niw2ICsyNTcs MTcgQEAgZXh0ZXJuIHZvaWQgRXhlY0VuZE5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2 b2lkIEV4ZWNTaHV0ZG93bk5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNT ZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0ZSAqY2hpbGRfbm9kZSk7 CiAKKy8qCisgKiBJcyB0aGUgY2FjaGVkIHBsYW4sIGlmIGFueSwgc3RpbGwgdmFsaWQgYXQgdGhp cyBwb2ludD8gIFRoYXQgaXMsIG5vdAorICogaW52YWxpZGF0ZWQgYnkgdGhlIGluY29taW5nIGlu dmFsaWRhdGlvbiBtZXNzYWdlcyB0aGF0IGhhdmUgYmVlbiBwcm9jZXNzZWQKKyAqIHJlY2VudGx5 LgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4ZWNQbGFuU3RpbGxWYWxpZChFU3RhdGUgKmVz dGF0ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFuID09IE5VTEwgPyB0cnVlIDoK KwkJQ2FjaGVkUGxhblN0aWxsVmFsaWQoZXN0YXRlLT5lc19jYWNoZWRwbGFuKTsKK30KIAogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICoJCUV4ZWNQcm9jTm9kZQpAQCAtNTkwLDYgKzYwMiw3IEBAIGV4ZWNfcnRfZmV0 Y2goSW5kZXggcnRpLCBFU3RhdGUgKmVzdGF0ZSkKIH0KIAogZXh0ZXJuIFJlbGF0aW9uIEV4ZWNH ZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSk7CitleHRlcm4g dm9pZCBFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUsIExpc3Qg KmFsbHBhcnRyZWxpZHMpOwogZXh0ZXJuIHZvaWQgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3Rh dGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJICAgSW5k ZXggcnRpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBjYjcxNGY0YTE5Li5mMGM1MTc3YjA2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjIzLDYgKzYyMyw4IEBAIHR5cGVkZWYgc3RydWN0 IEVTdGF0ZQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJ TGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0IG9mIFJURVBlcm1pc3Npb25JbmZvICov CiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRy ZWUgKi8KKwlzdHJ1Y3QgQ2FjaGVkUGxhbiAqZXNfY2FjaGVkcGxhbjsJLyogQ2FjaGVkUGxhbiBp ZiBwbGFubmVkc3RtdCBpcyBmcm9tCisJCQkJCQkJCQkJICogb25lICovCiAJY29uc3QgY2hhciAq ZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQgZnJvbSBRdWVyeURlc2MgKi8KIAogCUp1bmtG aWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZpbHRlciwgaWYgYW55ICov CkBAIC02NzEsNiArNjczLDEwIEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCiAJTGlzdAkgICAq ZXNfZXhwcmNvbnRleHRzOwkvKiBMaXN0IG9mIEV4cHJDb250ZXh0cyB3aXRoaW4gRVN0YXRlICov CiAKKwlMaXN0CSAgICplc19pbml0ZWRfcGxhbm5vZGVzOyAvKiBMaXN0IG9mIFBsYW5TdGF0ZSBv ZiBub2RlcyBmcm9tIHRoZQorCQkJCQkJCQkJICAqIHBsYW4gdHJlZSB0aGF0IHdlcmUgZnVsbHkK KwkJCQkJCQkJCSAgKiBpbml0aWFsaXplZCAqLworCiAJTGlzdAkgICAqZXNfc3VicGxhbnN0YXRl czsJLyogTGlzdCBvZiBQbGFuU3RhdGUgZm9yIFN1YlBsYW5zICovCiAKIAlMaXN0CSAgICplc19h dXhtb2RpZnl0YWJsZXM7IC8qIExpc3Qgb2Ygc2Vjb25kYXJ5IE1vZGlmeVRhYmxlU3RhdGVzICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaCBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvbG1nci5oCmluZGV4IDRlZTkxZTNjZjkuLjU5OGJmMjY4OGEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5o CkBAIC00OCw2ICs0OCw3IEBAIGV4dGVybiBib29sIENvbmRpdGlvbmFsTG9ja1JlbGF0aW9uKFJl bGF0aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBleHRlcm4gdm9pZCBVbmxvY2tS ZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUpOwogZXh0ZXJuIGJv b2wgQ2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUoUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxv Y2ttb2RlLAogCQkJCQkJCQkJYm9vbCBvcnN0cm9uZ2VyKTsKK2V4dGVybiBib29sIENoZWNrUmVs TG9ja2VkQnlNZShPaWQgcmVsaWQsIExPQ0tNT0RFIGxvY2ttb2RlLCBib29sIG9yc3Ryb25nZXIp OwogZXh0ZXJuIGJvb2wgTG9ja0hhc1dhaXRlcnNSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwg TE9DS01PREUgbG9ja21vZGUpOwogCiBleHRlcm4gdm9pZCBMb2NrUmVsYXRpb25JZEZvclNlc3Np b24oTG9ja1JlbElkICpyZWxpZCwgTE9DS01PREUgbG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUu aAppbmRleCA0ZjU0MThiOTcyLi4zMDc0ZTYwNGRkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAt MTM5LDYgKzEzOSw3IEBAIGV4dGVybiBjaGFyIGdldF9yZWxfcmVsa2luZChPaWQgcmVsaWQpOwog ZXh0ZXJuIGJvb2wgZ2V0X3JlbF9yZWxpc3BhcnRpdGlvbihPaWQgcmVsaWQpOwogZXh0ZXJuIE9p ZAlnZXRfcmVsX3RhYmxlc3BhY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBjaGFyIGdldF9yZWxfcGVy c2lzdGVuY2UoT2lkIHJlbGlkKTsKK2V4dGVybiBib29sIGdldF9yZWxfcmVsaXNzaGFyZWQoT2lk IHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV9mcm9tc3FsKE9pZCB0eXBpZCwgT2lk IGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIE9pZAlnZXRfdHJhbnNmb3JtX3Rvc3Fs KE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIGJvb2wgZ2V0 X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv cGxhbmNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAppbmRleCBhNDQzMTgx ZDQxLi44OTkwZmU3MmUzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaApAQCAtMjIxLDYgKzIyMSwyMCBA QCBleHRlcm4gQ2FjaGVkUGxhbiAqR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLAogCQkJCQkJCQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAkJCQkJCQkJIFJl c291cmNlT3duZXIgb3duZXIsCiAJCQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7 CisKKy8qCisgKiBDYWNoZWRQbGFuU3RpbGxWYWxpZAorICoJCVJldHVybnMgaWYgYSBjYWNoZWQg Z2VuZXJpYyBwbGFuIGlzIHN0aWxsIHZhbGlkCisgKgorICogQ2FsbGVkIGJ5IHRoZSBleGVjdXRv ciBvbiBldmVyeSByZWxhdGlvbiBsb2NrIHRha2VuIHdoZW4gaW5pdGlhbGl6aW5nIHRoZQorICog cGxhbiB0cmVlIGluIHRoZSBDYWNoZWRQbGFuLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0Nh Y2hlZFBsYW5TdGlsbFZhbGlkKENhY2hlZFBsYW4gKmNwbGFuKQoreworCXJldHVybiBjcGxhbi0+ aXNfdmFsaWQ7Cit9CisKIGV4dGVybiB2b2lkIFJlbGVhc2VDYWNoZWRQbGFuKENhY2hlZFBsYW4g KnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpOwogCiBleHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxs b3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggYi9zcmMvaW5jbHVkZS91dGlscy9w b3J0YWwuaAppbmRleCBhYTA4YjFlMGZjLi4yNGQ0MjBiOWU5IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaApAQCAt MTM4LDYgKzEzOCw5IEBAIHR5cGVkZWYgc3RydWN0IFBvcnRhbERhdGEKIAlRdWVyeUNvbXBsZXRp b24gcWM7CQkJLyogY29tbWFuZCBjb21wbGV0aW9uIGRhdGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5ICov CiAJTGlzdAkgICAqc3RtdHM7CQkJLyogbGlzdCBvZiBQbGFubmVkU3RtdHMgKi8KIAlDYWNoZWRQ bGFuICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBzdG10cyBhcmUgZnJvbSBvbmUgKi8KKwlM aXN0CSAgICpxZGVzY3M7CQkJLyogbGlzdCBvZiBRdWVyeURlc2NzICovCisJTWVtb3J5Q29udGV4 dCBxdWVyeUNvbnRleHQ7CS8qIG1lbW9yeSBmb3IgUXVlcnlEZXNjcyBhbmQgY2hpbGRyZW4gKi8K Kwlib29sCQlwbGFuX3ZhbGlkOwkJLyogYXJlIHBsYW5zIGluIHFkZXNjcyByZWFkeSBmb3IgZXhl Y3V0aW9uPyAqLwogCiAJUGFyYW1MaXN0SW5mbyBwb3J0YWxQYXJhbXM7IC8qIHBhcmFtcyB0byBw YXNzIHRvIHF1ZXJ5ICovCiAJUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnY7IC8qIGVudmlyb25t ZW50IGZvciBxdWVyeSAqLwpAQCAtMjQyLDYgKzI0NSw3IEBAIGV4dGVybiB2b2lkIFBvcnRhbERl ZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJCQkJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRUYWcs CiAJCQkJCQkJICBMaXN0ICpzdG10cywKIAkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuKTsKK2V4 dGVybiB2b2lkIFBvcnRhbFF1ZXJ5RmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKTsKIGV4dGVy biBQbGFubmVkU3RtdCAqUG9ydGFsR2V0UHJpbWFyeVN0bXQoUG9ydGFsIHBvcnRhbCk7CiBleHRl cm4gdm9pZCBQb3J0YWxDcmVhdGVIb2xkU3RvcmUoUG9ydGFsIHBvcnRhbCk7CiBleHRlcm4gdm9p ZCBQb3J0YWxIYXNoVGFibGVEZWxldGVBbGwodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlf ZXhlY3V0aW9uL01ha2VmaWxlCmluZGV4IDcwZjI0ZTg0NmQuLjJmY2E4NGQwMjcgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCkBAIC04LDcgKzgsOCBAQCBPQkpT ID0gXAogCWRlbGF5X2V4ZWN1dGlvbi5vCiAKIElTT0xBVElPTiA9IHBhcnRpdGlvbi1hZGRpdGlv biBcCi0JICAgIHBhcnRpdGlvbi1yZW1vdmFsLTEKKwkgICAgcGFydGl0aW9uLXJlbW92YWwtMSBc CisJCWNhY2hlZC1wbGFuLXJlcGxhbgogCiBpZmRlZiBVU0VfUEdYUwogUEdfQ09ORklHID0gcGdf Y29uZmlnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxh eV9leGVjdXRpb24uYyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4 ZWN1dGlvbi5jCmluZGV4IDdjZDc2ZWIzNGIuLjUxNWIyYzBjOTUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCkBAIC0xLDE0ICsx LDE4IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBkZWxheV9leGVjdXRpb24uYwotICoJ CVRlc3QgbW9kdWxlIHRvIGFsbG93IGRlbGF5IGJldHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9u IG9mIGEgcXVlcnkuCisgKgkJVGVzdCBtb2R1bGUgdG8gaW50cm9kdWNlIGRlbGF5IGF0IHZhcmlv dXMgcG9pbnRzIGR1cmluZyBleGVjdXRpb24gb2YgYQorICoJCXF1ZXJ5IHRvIHRlc3QgdGhhdCBl eGVjdXRpb24gcHJvY2VlZHMgc2FmZWx5IGluIGxpZ2h0IG9mIGNvbmN1cnJlbnQKKyAqCQljaGFu Z2VzLgogICoKICAqIFRoZSBkZWxheSBpcyBpbXBsZW1lbnRlZCBieSB0YWtpbmcgYW5kIGltbWVk aWF0ZWx5IHJlbGVhc2luZyBhIHNwZWNpZmllZAogICogYWR2aXNvcnkgbG9jay4gIElmIGFub3Ro ZXIgcHJvY2VzcyBoYXMgcHJldmlvdXNseSB0YWtlbiB0aGF0IGxvY2ssIHRoZQogICogY3VycmVu dCBwcm9jZXNzIHdpbGwgYmUgYmxvY2tlZCB1bnRpbCB0aGUgbG9jayBpcyByZWxlYXNlZDsgb3Ro ZXJ3aXNlLAogICogdGhlcmUncyBubyBlZmZlY3QuICBUaGlzIGFsbG93cyBhbiBpc29sYXRpb250 ZXN0ZXIgc2NyaXB0IHRvIHJlbGlhYmx5Ci0gKiB0ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNw ZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90aGVyIGJhY2tlbmQKLSAqIGJldHdlZW4gcGFy c2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBkZXNpcmVkIHF1ZXJ5LgorICogdGVzdCBiZWhhdmlv cnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0aW9uIGhhcHBlbnMgaW4gYW5vdGhlciBiYWNrZW5k IGluCisgKiBhIGNvdXBsZSBvZiBjYXNlczogMSkgYmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRp b24gb2YgYW55IGRlc2lyZWQgcXVlcnkKKyAqIHdoZW4gdXNpbmcgdGhlIHBsYW5uZXJfaG9vaywg MikgYmV0d2VlbiBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoKSBhbmQKKyAqIEV4ZWN1dG9yU3RhcnQo KSB3aGVuIHVzaW5nIHRoZSBFeGVjdXRvclN0YXJ0X2hvb2suCiAgKgogICogQ29weXJpZ2h0IChj KSAyMDIwLTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKgpAQCAt MjIsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRlICJleGVjdXRv ci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgiCiAjaW5jbHVkZSAi dXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKQEAgLTMyLDkgKzM3LDEx IEBAIFBHX01PRFVMRV9NQUdJQzsKIAogLyogR1VDOiBhZHZpc29yeSBsb2NrIElEIHRvIHVzZS4g IFplcm8gZGlzYWJsZXMgdGhlIGZlYXR1cmUuICovCiBzdGF0aWMgaW50CXBvc3RfcGxhbm5pbmdf bG9ja19pZCA9IDA7CitzdGF0aWMgaW50CWV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAwOwogCi0v KiBTYXZlIHByZXZpb3VzIHBsYW5uZXIgaG9vayB1c2VyIHRvIGJlIGEgZ29vZCBjaXRpemVuICov CisvKiBTYXZlIHByZXZpb3VzIGhvb2sgdXNlcnMgdG8gYmUgYSBnb29kIGNpdGl6ZW4gKi8KIHN0 YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBwcmV2X3BsYW5uZXJfaG9vayA9IE5VTEw7CitzdGF0aWMg RXhlY3V0b3JTdGFydF9ob29rX3R5cGUgcHJldl9FeGVjdXRvclN0YXJ0X2hvb2sgPSBOVUxMOwog CiAKIC8qIHBsYW5uZXJfaG9vayBmdW5jdGlvbiB0byBwcm92aWRlIHRoZSBkZXNpcmVkIGRlbGF5 ICovCkBAIC03MCwxMSArNzcsNDEgQEAgZGVsYXlfZXhlY3V0aW9uX3BsYW5uZXIoUXVlcnkgKnBh cnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyog RXhlY3V0b3JTdGFydF9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRlc2lyZWQgZGVsYXkg Ki8KK3N0YXRpYyB2b2lkCitkZWxheV9leGVjdXRpb25fRXhlY3V0b3JTdGFydChRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncykKK3sKKwkvKiBJZiBlbmFibGVkLCBkZWxheSBieSB0YWtp bmcgYW5kIHJlbGVhc2luZyB0aGUgc3BlY2lmaWVkIGxvY2sgKi8KKwlpZiAoZXhlY3V0b3Jfc3Rh cnRfbG9ja19pZCAhPSAwKQorCXsKKwkJRGlyZWN0RnVuY3Rpb25DYWxsMShwZ19hZHZpc29yeV9s b2NrX2ludDgsCisJCQkJCQkJSW50NjRHZXREYXR1bSgoaW50NjQpIGV4ZWN1dG9yX3N0YXJ0X2xv Y2tfaWQpKTsKKwkJRGlyZWN0RnVuY3Rpb25DYWxsMShwZ19hZHZpc29yeV91bmxvY2tfaW50OCwK KwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCkpOwor CisJCS8qCisJCSAqIEVuc3VyZSB0aGF0IHdlIG5vdGljZSBhbnkgcGVuZGluZyBpbnZhbGlkYXRp b25zLCBzaW5jZSB0aGUgYWR2aXNvcnkKKwkJICogbG9jayBmdW5jdGlvbnMgZG9uJ3QgZG8gdGhp cy4KKwkJICovCisJCUFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CisJfQorCisJLyogTm93 IHN0YXJ0IHRoZSBleGVjdXRvciwgcG9zc2libHkgdmlhIGEgcHJldmlvdXMgaG9vayB1c2VyICov CisJaWYgKHByZXZfRXhlY3V0b3JTdGFydF9ob29rKQorCQlwcmV2X0V4ZWN1dG9yU3RhcnRfaG9v ayhxdWVyeURlc2MsIGVmbGFncyk7CisJZWxzZQorCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1 ZXJ5RGVzYywgZWZsYWdzKTsKKworCWlmIChleGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJ CWVsb2coTk9USUNFLCAiRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzICVz IiwKKwkJCSBxdWVyeURlc2MtPmNwbGFuLT5pc192YWxpZCA/ICJ2YWxpZCIgOiAibm90IHZhbGlk Iik7Cit9CisKIC8qIE1vZHVsZSBsb2FkIGZ1bmN0aW9uICovCiB2b2lkCiBfUEdfaW5pdCh2b2lk KQogewotCS8qIFNldCB1cCB0aGUgR1VDIHRvIGNvbnRyb2wgd2hpY2ggbG9jayBpcyB1c2VkICov CisJLyogU2V0IHVwIEdVQ3MgdG8gY29udHJvbCB3aGljaCBsb2NrIGlzIHVzZWQgKi8KIAlEZWZp bmVDdXN0b21JbnRWYXJpYWJsZSgiZGVsYXlfZXhlY3V0aW9uLnBvc3RfcGxhbm5pbmdfbG9ja19p ZCIsCiAJCQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQgdG8gYmUgbG9ja2VkL3VubG9j a2VkIGFmdGVyIHBsYW5uaW5nLiIsCiAJCQkJCQkJIlplcm8gZGlzYWJsZXMgdGhlIGRlbGF5LiIs CkBAIC04NiwxMCArMTIzLDIyIEBAIF9QR19pbml0KHZvaWQpCiAJCQkJCQkJTlVMTCwKIAkJCQkJ CQlOVUxMLAogCQkJCQkJCU5VTEwpOwotCisJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5 X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkIiwKKwkJCQkJCQkiU2V0cyB0aGUgYWR2 aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5sb2NrZWQgYmVmb3JlIHN0YXJ0aW5nIGV4ZWN1 dGlvbi4iLAorCQkJCQkJCSJaZXJvIGRpc2FibGVzIHRoZSBkZWxheS4iLAorCQkJCQkJCSZleGVj dXRvcl9zdGFydF9sb2NrX2lkLAorCQkJCQkJCTAsCisJCQkJCQkJMCwgSU5UX01BWCwKKwkJCQkJ CQlQR0NfVVNFUlNFVCwKKwkJCQkJCQkwLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCwKKwkJ CQkJCQlOVUxMKTsKIAlNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoImRlbGF5X2V4ZWN1dGlvbiIpOwog Ci0JLyogSW5zdGFsbCBvdXIgaG9vayAqLworCS8qIEluc3RhbGwgb3VyIGhvb2tzLiAqLwogCXBy ZXZfcGxhbm5lcl9ob29rID0gcGxhbm5lcl9ob29rOwogCXBsYW5uZXJfaG9vayA9IGRlbGF5X2V4 ZWN1dGlvbl9wbGFubmVyOworCXByZXZfRXhlY3V0b3JTdGFydF9ob29rID0gRXhlY3V0b3JTdGFy dF9ob29rOworCUV4ZWN1dG9yU3RhcnRfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0 YXJ0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhw ZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhl Y3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uMGFjNmExN2MyYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5v dXQKQEAgLTAsMCArMSwxNTYgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAgczJsb2NrIHMxZXhlYyBzMmRyb3BpIHMydW5s b2NrCitzdGVwIHMxcHJlcDogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxh bjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSAkMTsKKwkJ ICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7CitRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAg Qml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMSBmb29fMSAgICAgICAKKyAgICAgICAgUmVjaGVjayBD b25kOiAoYSA9ICQxKSAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2Nh biBvbiBmb28xMV9hX2lkeAorICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9ICQxKSAgICAg ICAgICAKKyg2IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygx MjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg ICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjOiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkg IFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkg IEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBz MmRyb3BpOiBEUk9QIElOREVYIGZvbzExX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2 aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0tLS0t LS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWM6IDwuLi4gY29t cGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxh biBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENh Y2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAKKyAg U3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMSBmb29f MQorICAgICAgICBGaWx0ZXI6IChhID0gJDEpICAgICAKKyg0IHJvd3MpCisKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMxcHJlcDIgczJsb2NrIHMxZXhlYzIgczJkcm9waSBzMnVubG9jaworc3Rl cCBzMXByZXAyOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkg IFBSRVBBUkUgcTIgQVMgU0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSAxOworCQkgIEVYUExB SU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRv clN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQml0 bWFwIEhlYXAgU2NhbiBvbiBmb28xMSBmb28gICAgICAgICAKKyAgUmVjaGVjayBDb25kOiAoYSA9 IDEpICAgICAgICAgICAgICAgCisgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBmb28xMV9hX2lk eAorICAgICAgICBJbmRleCBDb25kOiAoYSA9IDEpICAgICAgICAgICAKKyg0IHJvd3MpCisKK3N0 ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9s b2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAg czFleGVjMjogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9u LmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYp IEVYRUNVVEUgcTI7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJkcm9waTogRFJPUCBJTkRFWCBmb28x MV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7Citw Z19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAg CisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAg RmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5P VElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVF UlkgUExBTiAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NlcSBTY2FuIG9uIGZv bzExIGZvbworICBGaWx0ZXI6IChhID0gMSkgICAgCisoMiByb3dzKQorCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMXByZXAzIHMybG9jayBzMWV4ZWMzIHMyZHJvcGkgczJ1bmxvY2sKK3N0ZXAg czFwcmVwMzogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBT RVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRlID0gb247CisJCSAgU0VUIGVuYWJsZV9w YXJ0aXRpb253aXNlX2pvaW4gPSBvbjsKKwkJICBQUkVQQVJFIHEzIEFTIFNFTEVDVCB0MS5hLCBj b3VudCh0Mi5iKSBGUk9NIGZvbyB0MSwgZm9vIHQyIFdIRVJFIHQxLmEgPSB0Mi5hIEdST1VQIEJZ IDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOworczE6IE5PVElDRTogIEZp bmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAtPiAgR3JvdXBBZ2dyZWdhdGUgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBHcm91cCBLZXk6IHQxLmEgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgTWVyZ2UgSm9pbiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBN ZXJnZSBDb25kOiAodDEuYSA9IHQyLmEpICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIGZvbzExX2FfaWR4IG9uIGZvbzExIHQx IAorICAgICAgICAgICAgICAtPiAgTWF0ZXJpYWxpemUgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBmb28x MV9hX2lkeCBvbiBmb28xMSB0MgorICAtPiAgR3JvdXBBZ2dyZWdhdGUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBHcm91cCBLZXk6IHQxXzEuYSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgTWVyZ2Ug Sm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg ICAgICBNZXJnZSBDb25kOiAodDFfMS5hID0gdDJfMS5hKSAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDFfMS5hICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9v MiB0MV8xICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBT b3J0IEtleTogdDJfMS5hICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMiB0Ml8xICAgICAgICAgICAgICAgICAgIAorKDE4 IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7Citw Z19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCisoMSBy b3cpCisKK3N0ZXAgczFleGVjMzogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVs YXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlO IChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJkcm9waTogRFJP UCBJTkRFWCBmb28xMV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9j aygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAg ICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMzogPC4uLiBjb21wbGV0ZWQ+Citz MTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2 YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBp cyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgR3JvdXBBZ2dyZWdhdGUg ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEdyb3VwIEtleTogdDEuYSAgICAgICAg ICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1lcmdlIEpvaW4gICAgICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25kOiAodDEuYSA9IHQyLmEpICAgICAgCisgICAg ICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg ICAgICAgU29ydCBLZXk6IHQxLmEgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gZm9vMTEgdDEgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyLmEgICAgICAgICAg IAorICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTEgdDIgCisgIC0+ICBH cm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgR3JvdXAgS2V5 OiB0MV8xLmEgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgTWVyZ2UgSm9pbiAgICAg ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0MV8xLmEgPSB0 Ml8xLmEpICAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDFfMS5hICAgICAgICAgCisgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28yIHQxXzEKKyAgICAgICAgICAgICAgLT4gIFNv cnQgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTog dDJfMS5hICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28y IHQyXzEKKygyMSByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4 ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYyBiL3NyYy90ZXN0L21vZHVsZXMv ZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLXJlcGxhbi5zcGVjCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNjOTJjYmQ1YzYKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBs YW4uc3BlYwpAQCAtMCwwICsxLDYxIEBACisjIFRlc3QgdG8gY2hlY2sgdGhhdCBpbnZhbGlkYXRp b24gb2YgY2FjaGVkIGdlbmVyaWMgcGxhbnMgZHVyaW5nIEV4ZWN1dG9yU3RhcnQKKyMgY29ycmVj dGx5IHRyaWdnZXJzIHJlcGxhbm5pbmcgYW5kIHJlLWV4ZWN1dGlvbi4KKworc2V0dXAKK3sKKyAg Q1JFQVRFIFRBQkxFIGZvbyAoYSBpbnQsIGIgdGV4dCkgUEFSVElUSU9OIEJZIExJU1QoYSk7Cisg IENSRUFURSBUQUJMRSBmb28xIFBBUlRJVElPTiBPRiBmb28gRk9SIFZBTFVFUyBJTiAoMSkgUEFS VElUSU9OIEJZIExJU1QgKGEpOworICBDUkVBVEUgVEFCTEUgZm9vMTEgUEFSVElUSU9OIE9GIGZv bzEgRk9SIFZBTFVFUyBJTiAoMSk7CisgIENSRUFURSBJTkRFWCBmb28xMV9hIE9OIGZvbzEgKGEp OworICBDUkVBVEUgVEFCTEUgZm9vMiBQQVJUSVRJT04gT0YgZm9vIEZPUiBWQUxVRVMgSU4gKDIp OworICBDUkVBVEUgVklFVyBmb292IEFTIFNFTEVDVCAqIEZST00gZm9vOworfQorCit0ZWFyZG93 bgoreworICBEUk9QIFZJRVcgZm9vdjsKKyAgRFJPUCBUQUJMRSBmb287Cit9CisKK3Nlc3Npb24g InMxIgorIyBBcHBlbmQgd2l0aCBydW4tdGltZSBwcnVuaW5nCitzdGVwICJzMXByZXAiICAgeyBT RVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcSBB UyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQxOworCQkgIEVYUExBSU4gKENPU1RTIE9G RikgRVhFQ1VURSBxICgxKTsgfQorCisjIG5vIEFwcGVuZCBjYXNlIChvbmx5IG9uZSBwYXJ0aXRp b24gc2VsZWN0ZWQgYnkgdGhlIHBsYW5uZXIpCitzdGVwICJzMXByZXAyIiAgIHsgU0VUIHBsYW5f Y2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEyIEFTIFNFTEVD VCAqIEZST00gZm9vdiBXSEVSRSBhID0gMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNV VEUgcTI7IH0KKworIyBBcHBlbmQgd2l0aCBwYXJ0aXRpb24td2lzZSBqb2luIGFnZ3JlZ2F0ZSBh bmQgam9pbiBwbGFucyBhcyBjaGlsZCBzdWJwbGFucworc3RlcCAiczFwcmVwMyIgICB7IFNFVCBw bGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgU0VUIGVuYWJsZV9wYXJ0 aXRpb253aXNlX2FnZ3JlZ2F0ZSA9IG9uOworCQkgIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9q b2luID0gb247CisJCSAgUFJFUEFSRSBxMyBBUyBTRUxFQ1QgdDEuYSwgY291bnQodDIuYikgRlJP TSBmb28gdDEsIGZvbyB0MiBXSEVSRSB0MS5hID0gdDIuYSBHUk9VUCBCWSAxOworCQkgIEVYUExB SU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgfQorCisjIEV4ZWN1dGVzIGEgZ2VuZXJpYyBwbGFu CitzdGVwICJzMWV4ZWMiCXsgTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlf ZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChD T1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IH0KK3N0ZXAgInMxZXhlYzIiCXsgTE9BRCAnZGVsYXlf ZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tf aWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IH0KK3N0ZXAg InMxZXhlYzMiCXsgTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0 aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBP RkYpIEVYRUNVVEUgcTM7IH0KKworc2Vzc2lvbiAiczIiCitzdGVwICJzMmxvY2siCXsgU0VMRUNU IHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOyB9CitzdGVwICJzMnVubG9jayIJeyBTRUxFQ1QgcGdf YWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsgfQorc3RlcCAiczJkcm9waSIJeyBEUk9QIElOREVYIGZv bzExX2E7IH0KKworIyBXaGlsZSAiczFleGVjIiwgZXRjLiB3YWl0IHRvIGFjcXVpcmUgdGhlIGFk dmlzb3J5IGxvY2ssICJzMmRyb3AiIGlzIGFibGUgdG8KKyMgZHJvcCB0aGUgaW5kZXggYmVpbmcg dXNlZCBpbiB0aGUgY2FjaGVkIHBsYW4uICBXaGVuICJzMWV4ZWMiIGlzIHRoZW4KKyMgdW5ibG9j a2VkIGFuZCBpbml0aWFsaXplcyB0aGUgY2FjaGVkIHBsYW4gZm9yIGV4ZWN1dGlvbiwgaXQgZGV0 ZWN0cyB0aGUKKyMgY29uY3VycmVudCBpbmRleCBkcm9wIGFuZCBjYXVzZXMgdGhlIGNhY2hlZCBw bGFuIHRvIGJlIGRpc2NhcmRlZCBhbmQKKyMgcmVjcmVhdGVkIHdpdGhvdXQgdGhlIGluZGV4Lgor cGVybXV0YXRpb24gInMxcHJlcCIgInMybG9jayIgInMxZXhlYyIgInMyZHJvcGkiICJzMnVubG9j ayIKK3Blcm11dGF0aW9uICJzMXByZXAyIiAiczJsb2NrIiAiczFleGVjMiIgInMyZHJvcGkiICJz MnVubG9jayIKK3Blcm11dGF0aW9uICJzMXByZXAzIiAiczJsb2NrIiAiczFleGVjMyIgInMyZHJv cGkiICJzMnVubG9jayIKLS0gCjIuMzUuMwoK --0000000000000dedc806005de532--