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 1qHPzF-00028e-4B for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Jul 2023 14:29:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qHPzC-0006TW-VZ for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Jul 2023 14:29:34 +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 1qHPzC-0006TN-Ei for pgsql-hackers@lists.postgresql.org; Thu, 06 Jul 2023 14:29:34 +0000 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qHPz6-002YVg-U7 for pgsql-hackers@postgresql.org; Thu, 06 Jul 2023 14:29:33 +0000 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-53fbf2c42bfso590770a12.3 for ; Thu, 06 Jul 2023 07:29:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688653767; x=1691245767; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=yJtKpjsiRxnukCYq1/nzMcz0ujVxhLCRWaivgAN0SdU=; b=jEFn4wL4E9jOdSm775wqLTwMVwWtWnoTpwQXNLys2nilJYYIbSeAmVn/dXoWqIpTBW tGqAgQzSSytJvIN4aDoDgsF6zVvqnmVVX9vR510lUZ24o29Lj9fBhnzOYp82uIVJpKOX iKtFt/FY07JqvhKYRftylKVFu9gwI3iop0/x8yP6/b2fe8v3OBtrhBkal2otXdsPFVpR l9/8EreH0T2oSeqZMIcvBT1YV/x5eAPpCl0nkucnWgNM15vzlYdw5tBX9XSedLAyEybU ywf39onVo4crIE7ODayqXy05OH3s0hUG7S2PA7Nh3620fDkm9yZX2t5cXt6C/EvSQy4I wsCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688653767; x=1691245767; 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=yJtKpjsiRxnukCYq1/nzMcz0ujVxhLCRWaivgAN0SdU=; b=fMLfCCyZ45koxOiP1MvrRfrrEj0qiJouT3r6PN3gmYAlHyuD0eqfYvkN17KpKhewXt gS0dt2F3lWGN9HfM6WApgtfTcjuOKl2pWf4MZchFdB91z+yfdeHq+2rhVB4kouhOiHO8 8ezadxqcPW4UUg+cRjlk7NyXt9EUiegBTZsda800aimYBl4wVPWwMC+YXBq1PzdIyex4 /uR8S5qd5AynDdMFP3DNHuYyruQ+GT8eCIqwKxKPtHwEjqS5ZvOOF2qEKK12or4XghgF BR3jsny+d9jHN2tfeLXtvU2VnqT/UexeKC/6NyObQHA/M95LvIXiAu4OOq8wWr0NL/2q s6dA== X-Gm-Message-State: ABy/qLayQy6pkMu9MjnY/6aWcArZmzJxaKtSSlztCy5TGbWYO06EOUAM H4mdVm1AnWepVEJgMtCA9bwnI8Ycho+5CVVD5ME= X-Google-Smtp-Source: APBJJlGCrzMGA6mVbzelY5x9VSlj6HbACJ3xVoHdA5BnoGmKDlg/RrwlMfbeIolbpLbud03Zff+6NHmHNF2c7m0fjfE= X-Received: by 2002:a05:6a20:8419:b0:12b:6898:2986 with SMTP id c25-20020a056a20841900b0012b68982986mr2738828pzd.1.1688653766686; Thu, 06 Jul 2023 07:29:26 -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: <9D23D8BB-83EE-451E-95C1-CF42ADB76869@yesql.se> From: Amit Langote Date: Thu, 6 Jul 2023 23:29:10 +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="000000000000ea017b05ffd25775" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ea017b05ffd25775 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 function > 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. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com [1] https://postgr/es/m/CA+HiwqFA=3DswkzgGK8AmXUNFtLeEXFJwFyY3E7cTxvL46aa1O= Tw@mail.gmail.com --000000000000ea017b05ffd25775 Content-Type: application/octet-stream; name="v40-0004-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v40-0004-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ljr8tj160 RnJvbSA3NjQzYzM2OWU0ODc3YWQ3N2Q1N2MzOGU3Yzg2Yzg4OGVmZmYzNzcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0OSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQw 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== --000000000000ea017b05ffd25775 Content-Type: application/octet-stream; name="v40-0002-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Disposition: attachment; filename="v40-0002-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ljr8tj1z2 RnJvbSBjZWRlNDIzYmI3Y2ZlYjg3OWI3OGY2MzA4N2QxODMyNmNkYTEzZjViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0MyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQw 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 ZGVzL3BhcnNlbm9kZXMuaAppbmRleCA4OGIwM2NjNDcyLi5jMTM2MGY4N2VlIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC05OTUsMTEgKzk5NSwxNiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25DbWQKICAqCiAgKgkgIGluRnJvbUNsIG1hcmtzIHRob3NlIHJhbmdlIHZhcmlhYmxlcyB0aGF0 IGFyZSBsaXN0ZWQgaW4gdGhlIEZST00gY2xhdXNlLgogICoJICBJdCdzIGZhbHNlIGZvciBSVEVz IHRoYXQgYXJlIGFkZGVkIHRvIGEgcXVlcnkgYmVoaW5kIHRoZSBzY2VuZXMsIHN1Y2gKLSAqCSAg YXMgdGhlIE5FVyBhbmQgT0xEIHZhcmlhYmxlcyBmb3IgYSBydWxlLCBvciB0aGUgc3VicXVlcmll cyBvZiBhIFVOSU9OLgorICoJICBhcyB0aGUgTkVXIGFuZCBPTEQgdmFyaWFibGVzIGZvciBhIHJ1 bGUsIG9yIHRoZSBzdWJxdWVyaWVzIG9mIGEgVU5JT04sCisgKgkgIG9yIHRoZSBSVEVzIG9mIGlu aGVyaXRhbmNlIGNoaWxkIHRhYmxlcyB0aGF0IGFyZSBhZGRlZCBieSB0aGUgcGxhbm5lci4KICAq CSAgVGhpcyBmbGFnIGlzIG5vdCB1c2VkIGR1cmluZyBwYXJzaW5nIChleGNlcHQgaW4gdHJhbnNm b3JtTG9ja2luZ0NsYXVzZSwKICAqCSAgcS52Lik7IHRoZSBwYXJzZXIgbm93IHVzZXMgYSBzZXBh cmF0ZSAibmFtZXNwYWNlIiBkYXRhIHN0cnVjdHVyZSB0bwogICoJICBjb250cm9sIHZpc2liaWxp dHkuICBCdXQgaXQgaXMgbmVlZGVkIGJ5IHJ1bGV1dGlscy5jIHRvIGRldGVybWluZQotICoJICB3 aGV0aGVyIFJURXMgc2hvdWxkIGJlIHNob3duIGluIGRlY29tcGlsZWQgcXVlcmllcy4KKyAqCSAg d2hldGhlciBSVEVzIHNob3VsZCBiZSBzaG93biBpbiBkZWNvbXBpbGVkIHF1ZXJpZXMuICBJdCBp cyB1c2VkIGJ5IHRoZQorICoJICBleGVjdXRvciB0byBkZXRlcm1pbmUgdGhhdCBhIGdpdmVuIFJU RV9SRUxBVElPTiBlbnRyeSBiZWxvbmdzIHRvIGEgdGFibGUKKyAqCSAgZGlyZWN0bHkgbWVudGlv bmVkIGluIHRoZSBxdWVyeSBvciB0byBhIGNoaWxkIHRhYmxlIGFkZGVkIGJ5IHRoZSBwbGFubmVy LgorICoJICBJdCBuZWVkcyB0byBrbm93IHRoYXQgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBjaGls ZCB0YWJsZXMgaW4gYSBwbGFuIG5lZWQKKyAqCSAgdG8gYmUgbG9ja2VkLgogICoKICAqCSAgc2Vj dXJpdHlRdWFscyBpcyBhIGxpc3Qgb2Ygc2VjdXJpdHkgYmFycmllciBxdWFscyAoYm9vbGVhbiBl eHByZXNzaW9ucyksCiAgKgkgIHRvIGJlIHRlc3RlZCBpbiB0aGUgbGlzdGVkIG9yZGVyIGJlZm9y ZSByZXR1cm5pbmcgYSByb3cgZnJvbSB0aGUKLS0gCjIuMzUuMwoK --000000000000ea017b05ffd25775 Content-Type: application/octet-stream; name="v40-0003-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Disposition: attachment; filename="v40-0003-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ljr8tj1w1 RnJvbSA1ZmNjNmY3YjJkNTVlZmJkNjFkYzRjZjlhYzY5ZjNmZjZiNGY4MWE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0NSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQw 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 ZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAxMDYgKysrKystCiBzcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyAgICAgICAgICB8ICAxNCArCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyAgICAgICAgICAgfCAgNTAgKystCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgICAgICAgfCAgNjMgKysrLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBZ2cuYyAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgICAgICAgIHwgIDQ4ICsrLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jICAgICAgICAgIHwgIDMxICstCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcE9yLmMgICAgICAgICAgIHwgIDMxICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQ3VzdG9tLmMgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUZvcmVpZ25zY2FuLmMgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlR2F0aGVyLmMgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHYXRoZXJNZXJnZS5jICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdyb3VwLmMgICAgICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSGFzaC5jICAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVIYXNoam9pbi5jICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluY3JlbWVudGFsU29ydC5jICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhvbmx5c2Nhbi5jICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleHNjYW4uYyAgICAgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxp bWl0LmMgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9j a1Jvd3MuYyAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRl cmlhbC5jICAgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9p emUuYyAgICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYyAgICAgICAgfCAgNDcgKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vq b2luLmMgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29w LmMgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNl dC5jICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1 bmlvbi5jICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jICAg ICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5j ICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAg ICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jICAgICAgICAg ICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyAgICAgICAgICAg ICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgICAg ICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyAgICAg ICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jICAgICAgICAgICAg fCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jICAgICAgICAgICAgIHwg ICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgICAgfCAg IDYgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICAgICAgICB8ICA0 OSArKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgICAgICAgICAgICAgICB8ICA0 NSArKysKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8ICAx MyArLQogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgMzQw ICsrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMg ICAgICAgICAgIHwgIDIxICsrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAg ICAgICAgICAgfCAxNDkgKysrLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVt LmMgICAgICAgICAgICB8ICAgOSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAg ICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAg ICAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAg ICAgICAgICAgfCAgMTMgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAg ICAgICAgIHwgICA2ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oICAgICAgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAgICAg IHwgIDE0ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgICAgICAgICAgICB8 ICAgNCArCiBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSAgICAgfCAg IDMgKy0KIC4uLi9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyB8ICA2 MyArKystCiAuLi4vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dCAgICAgICAgICAgfCAx NTYgKysrKysrKysKIC4uLi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYyAgICAgICAgICAg ICB8ICA2MSArKysrCiA2OSBmaWxlcyBjaGFuZ2VkLCAxMTkzIGluc2VydGlvbnMoKyksIDU4OCBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4 ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0CiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVw bGFuLnNwZWMKCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcu YyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IGM1Y2FkYTU1ZmIu LjFlZGQ0YzNmMTcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zk dy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0yNjU4LDcg KzI2NTgsMTEgQEAgcG9zdGdyZXNCZWdpbkRpcmVjdE1vZGlmeShGb3JlaWduU2NhblN0YXRlICpu b2RlLCBpbnQgZWZsYWdzKQogCS8qIEdldCBpbmZvIGFib3V0IGZvcmVpZ24gdGFibGUuICovCiAJ cnRpbmRleCA9IG5vZGUtPnJlc3VsdFJlbEluZm8tPnJpX1JhbmdlVGFibGVJbmRleDsKIAlpZiAo ZnNwbGFuLT5zY2FuLnNjYW5yZWxpZCA9PSAwKQorCXsKIAkJZG1zdGF0ZS0+cmVsID0gRXhlY09w ZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBydGluZGV4LCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuOworCX0KIAllbHNlCiAJCWRtc3RhdGUtPnJl bCA9IG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbjsKIAl0YWJsZSA9IEdldEZvcmVpZ25UYWJs ZShSZWxhdGlvbkdldFJlbGlkKGRtc3RhdGUtPnJlbCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRl eCA5ZTRiMjQzN2E1Li44MjQ0MTk0NjgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtNTU4LDcg KzU1OCw4IEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJKChEUl9jb3B5ICop IGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVl c3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNj KHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQljc3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLAorCQkJCQkJCQkJCQlwc3RhdGUtPnBfc291cmNldGV4dCwK IAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBz aG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKQEAgLTU2OSw2ICs1NzAsNyBA QCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCSAqIEV4ZWN1dG9yU3RhcnQgY29t cHV0ZXMgYSByZXN1bHQgdHVwZGVzYyBmb3IgdXMKIAkJICovCiAJCUV4ZWN1dG9yU3RhcnQoY3N0 YXRlLT5xdWVyeURlc2MsIDApOworCQlBc3NlcnQoY3N0YXRlLT5xdWVyeURlc2MtPnBsYW5fdmFs aWQpOwogCiAJCXR1cERlc2MgPSBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYzsKIAl9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYwppbmRleCBlOTE5MjBjYTE0Li4xOGIwN2MwMjAwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NyZWF0ZWFzLmMKQEAgLTMyNSw3ICszMjUsNyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVBY3RpdmVT bmFwc2hvdENvbW1hbmRJZCgpOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rp bmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBDcmVhdGVR dWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCUdl dEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFt cywgcXVlcnlFbnYsIDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggODU3MGIxNGY2Mi4u YjFlYTQ1ZWYyYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMzkzLDYgKzM5Myw3IEBAIEV4 cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCWVsc2UKIAl7 CiAJCVBsYW5uZWRTdG10ICpwbGFuOworCQlRdWVyeURlc2MgICAqcXVlcnlEZXNjOwogCQlpbnN0 cl90aW1lCXBsYW5zdGFydCwKIAkJCQkJcGxhbmR1cmF0aW9uOwogCQlCdWZmZXJVc2FnZSBidWZ1 c2FnZV9zdGFydCwKQEAgLTQxNSwxMiArNDE2LDkwIEBAIEV4cGxhaW5PbmVRdWVyeShRdWVyeSAq cXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZnVz YWdlLCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKIAkJfQogCisJCXF1ZXJ5RGVz YyA9IEV4cGxhaW5RdWVyeURlc2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsIGludG8sIGVzLAor CQkJCQkJCQkJIHBhcmFtcywgcXVlcnlFbnYpOworCQlBc3NlcnQocXVlcnlEZXNjKTsKKwogCQkv KiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JCUV4cGxhaW5PbmVQ bGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwkJRXhw bGFpbk9uZVBsYW4ocXVlcnlEZXNjLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVl cnlFbnYsCiAJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6 IE5VTEwpKTsKIAl9CiB9CiAKKy8qCisgKiBFeHBsYWluUXVlcnlEZXNjCisgKgkJU2V0IHVwIFF1 ZXJ5RGVzYyBmb3IgRVhQTEFJTmluZyBhIGdpdmVuIHBsYW4KKyAqCisgKiBUaGlzIHJldHVybnMg TlVMTCBpZiBjcGxhbiBpcyBmb3VuZCB0byBiZSBubyBsb25nZXIgdmFsaWQuCisgKi8KK1F1ZXJ5 RGVzYyAqCitFeHBsYWluUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpzdG10LCBDYWNoZWRQbGFuICpj cGxhbiwKKwkJCQkgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIEludG9DbGF1c2UgKmludG8sIEV4 cGxhaW5TdGF0ZSAqZXMsCisJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudikKK3sKKwlRdWVyeURlc2MgICpxdWVyeURlc2M7CisJRGVzdFJlY2VpdmVy ICpkZXN0OworCWludAkJCWVmbGFnczsKKwlpbnQJCQlpbnN0cnVtZW50X29wdGlvbiA9IDA7CisK KwkvKgorCSAqIE5vcm1hbGx5IHdlIGRpc2NhcmQgdGhlIHF1ZXJ5J3Mgb3V0cHV0LCBidXQgaWYg ZXhwbGFpbmluZyBDUkVBVEUgVEFCTEUKKwkgKiBBUywgd2UnZCBiZXR0ZXIgdXNlIHRoZSBhcHBy b3ByaWF0ZSB0dXBsZSByZWNlaXZlci4KKwkgKi8KKwlpZiAoaW50bykKKwkJZGVzdCA9IENyZWF0 ZUludG9SZWxEZXN0UmVjZWl2ZXIoaW50byk7CisJZWxzZQorCQlkZXN0ID0gTm9uZV9SZWNlaXZl cjsKKworCWlmIChlcy0+YW5hbHl6ZSAmJiBlcy0+dGltaW5nKQorCQlpbnN0cnVtZW50X29wdGlv biB8PSBJTlNUUlVNRU5UX1RJTUVSOworCWVsc2UgaWYgKGVzLT5hbmFseXplKQorCQlpbnN0cnVt ZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1JPV1M7CisKKwlpZiAoZXMtPmJ1ZmZlcnMpCisJCWlu c3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfQlVGRkVSUzsKKwlpZiAoZXMtPndhbCkKKwkJ aW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9XQUw7CisKKwkvKgorCSAqIFVzZSBhIHNu YXBzaG90IHdpdGggYW4gdXBkYXRlZCBjb21tYW5kIElEIHRvIGVuc3VyZSB0aGlzIHF1ZXJ5IHNl ZXMKKwkgKiByZXN1bHRzIG9mIGFueSBwcmV2aW91c2x5IGV4ZWN1dGVkIHF1ZXJpZXMuCisJICov CisJUHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2ZVNuYXBzaG90KCkpOworCVVwZGF0ZUFjdGl2 ZVNuYXBzaG90Q29tbWFuZElkKCk7CisKKwkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBx dWVyeSAqLworCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LCBjcGxhbiwgcXVlcnlT dHJpbmcsCisJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKKwkJ CQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRpb24pOworCisJLyog U2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCisJaWYgKGVzLT5hbmFseXplKQorCQllZmxhZ3Mg PSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCisJZWxzZQorCQll ZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZOworCWlmIChlcy0+Z2VuZXJpYykKKwkJZWZs YWdzIHw9IEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUM7CisJaWYgKGludG8pCisJCWVmbGFncyB8 PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOworCisJLyoKKwkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQg dG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLiAgQSBjYWNoZWQgcGxhbgorCSAqIG1h eSBnZXQgaW52YWxpZGF0ZWQgYXMgd2UncmUgZG9pbmcgdGhhdC4KKwkgKi8KKwlFeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwlpZiAoIXF1ZXJ5RGVzYy0+cGxhbl92YWxpZCkKKwl7 CisJCS8qIENsZWFuIHVwLiAqLworCQlFeGVjdXRvckVuZChxdWVyeURlc2MpOworCQlGcmVlUXVl cnlEZXNjKHF1ZXJ5RGVzYyk7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCXJldHVybiBOVUxM OworCX0KKworCXJldHVybiBxdWVyeURlc2M7Cit9CisKIC8qCiAgKiBFeHBsYWluT25lVXRpbGl0 eSAtCiAgKgkgIHByaW50IG91dCB0aGUgZXhlY3V0aW9uIHBsYW4gZm9yIG9uZSB1dGlsaXR5IHN0 YXRlbWVudApAQCAtNTI0LDI5ICs2MDMsMTYgQEAgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRp bGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAgKiB0byBjYWxs IGl0LgogICovCiB2b2lkCi1FeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQs IEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCitFeHBsYWluT25lUGxhbihRdWVy eURlc2MgKnF1ZXJ5RGVzYywKKwkJCSAgIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAq ZXMsCiAJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgUGFyYW1MaXN0SW5mbyBwYXJhbXMs CiAJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwgY29uc3QgaW5zdHJfdGltZSAqcGxh bmR1cmF0aW9uLAogCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlKQogewotCURlc3RS ZWNlaXZlciAqZGVzdDsKLQlRdWVyeURlc2MgICpxdWVyeURlc2M7CiAJaW5zdHJfdGltZQlzdGFy dHRpbWU7CiAJZG91YmxlCQl0b3RhbHRpbWUgPSAwOwotCWludAkJCWVmbGFnczsKLQlpbnQJCQlp bnN0cnVtZW50X29wdGlvbiA9IDA7Ci0KLQlBc3NlcnQocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBl ICE9IENNRF9VVElMSVRZKTsKIAotCWlmIChlcy0+YW5hbHl6ZSAmJiBlcy0+dGltaW5nKQotCQlp bnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1RJTUVSOwotCWVsc2UgaWYgKGVzLT5hbmFs eXplKQotCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1JPV1M7Ci0KLQlpZiAoZXMt PmJ1ZmZlcnMpCi0JCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfQlVGRkVSUzsKLQlp ZiAoZXMtPndhbCkKLQkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9XQUw7CisJQXNz ZXJ0KHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKTsK IAogCS8qCiAJICogV2UgYWx3YXlzIGNvbGxlY3QgdGltaW5nIGZvciB0aGUgZW50aXJlIHN0YXRl bWVudCwgZXZlbiB3aGVuIG5vZGUtbGV2ZWwKQEAgLTU1NSw0MCArNjIxLDYgQEAgRXhwbGFpbk9u ZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWlu U3RhdGUgKmVzLAogCSAqLwogCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoc3RhcnR0aW1lKTsKIAot CS8qCi0JICogVXNlIGEgc25hcHNob3Qgd2l0aCBhbiB1cGRhdGVkIGNvbW1hbmQgSUQgdG8gZW5z dXJlIHRoaXMgcXVlcnkgc2VlcwotCSAqIHJlc3VsdHMgb2YgYW55IHByZXZpb3VzbHkgZXhlY3V0 ZWQgcXVlcmllcy4KLQkgKi8KLQlQdXNoQ29waWVkU25hcHNob3QoR2V0QWN0aXZlU25hcHNob3Qo KSk7Ci0JVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKLQotCS8qCi0JICogTm9ybWFs bHkgd2UgZGlzY2FyZCB0aGUgcXVlcnkncyBvdXRwdXQsIGJ1dCBpZiBleHBsYWluaW5nIENSRUFU RSBUQUJMRQotCSAqIEFTLCB3ZSdkIGJldHRlciB1c2UgdGhlIGFwcHJvcHJpYXRlIHR1cGxlIHJl Y2VpdmVyLgotCSAqLwotCWlmIChpbnRvKQotCQlkZXN0ID0gQ3JlYXRlSW50b1JlbERlc3RSZWNl aXZlcihpbnRvKTsKLQllbHNlCi0JCWRlc3QgPSBOb25lX1JlY2VpdmVyOwotCi0JLyogQ3JlYXRl IGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURl c2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAotCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgp LCBJbnZhbGlkU25hcHNob3QsCi0JCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIGluc3Ry dW1lbnRfb3B0aW9uKTsKLQotCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLwotCWlmIChl cy0+YW5hbHl6ZSkKLQkJZWZsYWdzID0gMDsJCQkJLyogZGVmYXVsdCBydW4tdG8tY29tcGxldGlv biBmbGFncyAqLwotCWVsc2UKLQkJZWZsYWdzID0gRVhFQ19GTEFHX0VYUExBSU5fT05MWTsKLQlp ZiAoZXMtPmdlbmVyaWMpCi0JCWVmbGFncyB8PSBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDOwot CWlmIChpbnRvKQotCQllZmxhZ3MgfD0gR2V0SW50b1JlbEVGbGFncyhpbnRvKTsKLQotCS8qIGNh bGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24gKi8KLQlF eGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKLQogCS8qIEV4ZWN1dGUgdGhlIHBsYW4g Zm9yIHN0YXRpc3RpY3MgaWYgYXNrZWQgZm9yICovCiAJaWYgKGVzLT5hbmFseXplKQogCXsKQEAg LTQ4NjUsNiArNDg5NywxNyBAQCBFeHBsYWluRHVtbXlHcm91cChjb25zdCBjaGFyICpvYmp0eXBl LCBjb25zdCBjaGFyICpsYWJlbG5hbWUsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJfQogfQogCisvKgor ICogRGlzY2FyZCBvdXRwdXQgYnVmZmVyIGZvciBhIGZyZXNoIHJlc3RhcnQuCisgKi8KK3ZvaWQK K0V4cGxhaW5SZXNldE91dHB1dChFeHBsYWluU3RhdGUgKmVzKQoreworCUFzc2VydChlcy0+c3Ry KTsKKwlyZXNldFN0cmluZ0luZm8oZXMtPnN0cik7CisJRXhwbGFpbkJlZ2luT3V0cHV0KGVzKTsK K30KKwogLyoKICAqIEVtaXQgdGhlIHN0YXJ0LW9mLW91dHB1dCBib2lsZXJwbGF0ZS4KICAqCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IDBlYWJlMTgzMzUuLjVhNzYzNDMxMjMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC03OTcsMTEgKzc5NywxMyBAQCBleGVjdXRlX3NxbF9z dHJpbmcoY29uc3QgY2hhciAqc3FsKQogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCiAJCQkJcWRl c2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCXNx bCwKIAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRlc3Qs IE5VTEwsIE5VTEwsIDApOwogCiAJCQkJRXhlY3V0b3JTdGFydChxZGVzYywgMCk7CisJCQkJQXNz ZXJ0KHFkZXNjLT5wbGFuX3ZhbGlkKTsKIAkJCQlFeGVjdXRvclJ1bihxZGVzYywgRm9yd2FyZFNj YW5EaXJlY3Rpb24sIDAsIHRydWUpOwogCQkJCUV4ZWN1dG9yRmluaXNoKHFkZXNjKTsKIAkJCQlF eGVjdXRvckVuZChxZGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2 aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggZjlhM2JkZmMzYS4u MWMxY2UxZTE3ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDA5LDEyICs0MDksMTMgQEAg cmVmcmVzaF9tYXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5 LAogCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkvKiBDcmVhdGUgYSBRdWVy eURlc2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQlxdWVy eURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0g Q3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3Rp dmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEws IDApOwogCiAJLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4 ZWN1dGlvbiAqLwogCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKKwlBc3NlcnQocXVlcnlE ZXNjLT5wbGFuX3ZhbGlkKTsKIAogCS8qIHJ1biB0aGUgcGxhbiAqLwogCUV4ZWN1dG9yUnVuKHF1 ZXJ5RGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDAsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9y dGFsY21kcy5jCmluZGV4IDczZWQ3YWEyZjAuLjRhYmJlYzA1NGIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9w b3J0YWxjbWRzLmMKQEAgLTE0Niw2ICsxNDYsNyBAQCBQZXJmb3JtQ3Vyc29yT3BlbihQYXJzZVN0 YXRlICpwc3RhdGUsIERlY2xhcmVDdXJzb3JTdG10ICpjc3RtdCwgUGFyYW1MaXN0SW5mbyBwYQog CVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1zLCAwLCBHZXRBY3RpdmVTbmFwc2hvdCgpKTsKIAog CUFzc2VydChwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUKTsKKwlBc3NlcnQo cG9ydGFsLT5wbGFuX3ZhbGlkKTsKIAogCS8qCiAJICogV2UncmUgZG9uZTsgdGhlIHF1ZXJ5IHdv bid0IGFjdHVhbGx5IGJlIHJ1biB1bnRpbCBQZXJmb3JtUG9ydGFsRmV0Y2ggaXMKQEAgLTI0OSw2 ICsyNTAsMTcgQEAgUGVyZm9ybVBvcnRhbENsb3NlKGNvbnN0IGNoYXIgKm5hbWUpCiAJUG9ydGFs RHJvcChwb3J0YWwsIGZhbHNlKTsKIH0KIAorLyoKKyAqIFJlbGVhc2UgYSBwb3J0YWwncyBRdWVy eURlc2MuCisgKi8KK3ZvaWQKK1BvcnRhbFF1ZXJ5RmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNj KQoreworCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7CisJRXhlY3V0b3JFbmQocXVlcnlEZXNj KTsKKwlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7Cit9CisKIC8qCiAgKiBQb3J0YWxDbGVhbnVw CiAgKgpAQCAtMjk1LDkgKzMwNyw3IEBAIFBvcnRhbENsZWFudXAoUG9ydGFsIHBvcnRhbCkKIAkJ CWlmIChwb3J0YWwtPnJlc293bmVyKQogCQkJCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gcG9ydGFs LT5yZXNvd25lcjsKIAotCQkJRXhlY3V0b3JGaW5pc2gocXVlcnlEZXNjKTsKLQkJCUV4ZWN1dG9y RW5kKHF1ZXJ5RGVzYyk7Ci0JCQlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7CisJCQlQb3J0YWxR dWVyeUZpbmlzaChxdWVyeURlc2MpOwogCiAJCQlDdXJyZW50UmVzb3VyY2VPd25lciA9IHNhdmVS ZXNvdXJjZU93bmVyOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVw YXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggMThmNzAzMTlmYy4u YzkwNzBlZDk3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMTgzLDYgKzE4Myw3IEBAIEV4 ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCXBhcmFtTEkgPSBFdmFsdWF0ZVBhcmFt cyhwc3RhdGUsIGVudHJ5LCBzdG10LT5wYXJhbXMsIGVzdGF0ZSk7CiAJfQogCityZXBsYW46CiAJ LyogQ3JlYXRlIGEgbmV3IHBvcnRhbCB0byBydW4gdGhlIHF1ZXJ5IGluICovCiAJcG9ydGFsID0g Q3JlYXRlTmV3UG9ydGFsKCk7CiAJLyogRG9uJ3QgZGlzcGxheSB0aGUgcG9ydGFsIGluIHBnX2N1 cnNvcnMsIGl0IGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSAqLwpAQCAtMjUxLDEwICsyNTIsMTkg QEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAl9CiAKIAkvKgotCSAqIFJ1biB0 aGUgcG9ydGFsIGFzIGFwcHJvcHJpYXRlLgorCSAqIFJ1biB0aGUgcG9ydGFsIGFzIGFwcHJvcHJp YXRlLiAgSWYgdGhlIHBvcnRhbCBjb250YWlucyBhIGNhY2hlZCBwbGFuLCBpdAorCSAqIG11c3Qg YmUgcmVjcmVhdGVkIGlmIHBvcnRhbC0+cGxhbl92YWxpZCBpcyBmYWxzZSB3aGljaCB0ZWxscyB0 aGF0IHRoZQorCSAqIGNhY2hlZCBwbGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0 ZWQgd2hlbiBpbml0aWFsaXppbmcgb25lIG9mCisJICogdGhlIHBsYW4gdHJlZXMgY29udGFpbmVk IGluIGl0LgogCSAqLwogCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgZWZsYWdzLCBHZXRB Y3RpdmVTbmFwc2hvdCgpKTsKIAorCWlmICghcG9ydGFsLT5wbGFuX3ZhbGlkKQorCXsKKwkJUG9y dGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKwkJZ290byByZXBsYW47CisJfQorCiAJKHZvaWQpIFBv cnRhbFJ1bihwb3J0YWwsIGNvdW50LCBmYWxzZSwgdHJ1ZSwgZGVzdCwgZGVzdCwgcWMpOwogCiAJ UG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKQEAgLTU3NCw3ICs1ODQsNyBAQCBFeHBsYWluRXhl Y3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFp blN0YXRlICplcywKIHsKIAlQcmVwYXJlZFN0YXRlbWVudCAqZW50cnk7CiAJY29uc3QgY2hhciAq cXVlcnlfc3RyaW5nOwotCUNhY2hlZFBsYW4gKmNwbGFuOworCUNhY2hlZFBsYW4gKmNwbGFuID0g TlVMTDsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7CiAJTGlzdENlbGwgICAqcDsKIAlQYXJhbUxpc3RJ bmZvIHBhcmFtTEkgPSBOVUxMOwpAQCAtNjE4LDYgKzYyOCw3IEBAIEV4cGxhaW5FeGVjdXRlUXVl cnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUg KmVzLAogCX0KIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBhY3F1aXJlIGEgdHJhbnNpZW50 IHJlZmNvdW50ICovCityZXBsYW46CiAJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFu c291cmNlLCBwYXJhbUxJLAogCQkJCQkJICBDdXJyZW50UmVzb3VyY2VPd25lciwgcXVlcnlFbnYp OwogCkBAIC02MzksOCArNjUwLDIxIEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQg KmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQlQbGFubmVk U3RtdCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgcCk7CiAKIAkJaWYgKHBzdG10 LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkKLQkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBp bnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBxdWVyeUVudiwKLQkJCQkJCSAgICZwbGFu ZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsKKwkJeworCQkJUXVl cnlEZXNjICpxdWVyeURlc2M7CisKKwkJCXF1ZXJ5RGVzYyA9IEV4cGxhaW5RdWVyeURlc2MocHN0 bXQsIGNwbGFuLCBxdWVyeVN0cmluZywKKwkJCQkJCQkJCQkgaW50bywgZXMsIHBhcmFtTEksIHF1 ZXJ5RW52KTsKKwkJCWlmIChxdWVyeURlc2MgPT0gTlVMTCkKKwkJCXsKKwkJCQlFeHBsYWluUmVz ZXRPdXRwdXQoZXMpOworCQkJCVJlbGVhc2VDYWNoZWRQbGFuKGNwbGFuLCBDdXJyZW50UmVzb3Vy Y2VPd25lcik7CisJCQkJZ290byByZXBsYW47CisJCQl9CisJCQlFeHBsYWluT25lUGxhbihxdWVy eURlc2MsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksCisJCQkJCQkgICBxdWVyeUVu diwgJnBsYW5kdXJhdGlvbiwKKwkJCQkJCSAgIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5V TEwpKTsKKwkJfQogCQllbHNlCiAJCQlFeHBsYWluT25lVXRpbGl0eShwc3RtdC0+dXRpbGl0eVN0 bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsCiAJCQkJCQkJICBwYXJhbUxJLCBxdWVyeUVudik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCA0YzVhN2JiZjYyLi5hMmY2YWM5ZDFjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTYyMCw2ICs2MjAsMTcgQEAgRXhlY0NoZWNrUGVybWlz c2lvbnMoTGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcnRlcGVybWluZm9zLAogCQlSVEVQZXJtaXNz aW9uSW5mbyAqcGVybWluZm8gPSBsZmlyc3Rfbm9kZShSVEVQZXJtaXNzaW9uSW5mbywgbCk7CiAK IAkJQXNzZXJ0KE9pZElzVmFsaWQocGVybWluZm8tPnJlbGlkKSk7CisKKwkJLyoKKwkJICogUmVs YXRpb25zIHdob3NlIHBlcm1pc3Npb25zIG5lZWQgdG8gYmUgY2hlY2tlZCBtdXN0IGFscmVhZHkg aGF2ZQorCQkgKiBiZWVuIGxvY2tlZCBieSB0aGUgcGFyc2VyIG9yIGJ5IEdldENhY2hlZFBsYW4o KSBpZiBhIGNhY2hlZCBwbGFuIGlzCisJCSAqIGJlaW5nIGV4ZWN1dGVkLgorCQkgKgorCQkgKiBY WFggc2hvdWxkbid0IHdlIHNraXAgY2FsbGluZyBFeGVjQ2hlY2tQZXJtaXNzaW9ucyBmcm9tIElu aXRQbGFuCisJCSAqIGluIGEgcGFyYWxsZWwgd29ya2VyPworCQkgKi8KKwkJQXNzZXJ0KENoZWNr UmVsTG9ja2VkQnlNZShwZXJtaW5mby0+cmVsaWQsIEFjY2Vzc1NoYXJlTG9jaywgdHJ1ZSkgfHwK KwkJCSAgIElzUGFyYWxsZWxXb3JrZXIoKSk7CiAJCXJlc3VsdCA9IEV4ZWNDaGVja09uZVJlbFBl cm1zKHBlcm1pbmZvKTsKIAkJaWYgKCFyZXN1bHQpCiAJCXsKQEAgLTgyOSw2ICs4NDAsMjMgQEAg RXhlY0NoZWNrWGFjdFJlYWRPbmx5KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCkKICAqCiAgKgkJ SW5pdGlhbGl6ZXMgdGhlIHF1ZXJ5IHBsYW46IG9wZW4gZmlsZXMsIGFsbG9jYXRlIHN0b3JhZ2UK ICAqCQlhbmQgc3RhcnQgdXAgdGhlIHJ1bGUgbWFuYWdlcgorICoKKyAqCisgKiBOb3JtYWxseSwg dGhlIHBsYW4gdHJlZSBnaXZlbiBpbiBxdWVyeURlc2MtPnBsYW5uZWRzdG10IGlzIGtub3duIHRv IGJlCisgKiB2YWxpZCBpbiBhIHJhY2UtZnJlZSBtYW5uZXIsIHRoYXQgaXMsIGFsbCByZWxhdGlv bnMgY29udGFpbmVkIGluCisgKiBwbGFubmVkc3RtdC0+cmVsYXRpb25PaWRzIHdvdWxkIGhhdmUg YWxyZWFkeSBiZWVuIGxvY2tlZC4gIFRoYXQgaXMgbm90IHRoZQorICogY2FzZSBob3dldmVyIGlm IHRoZSBwbGFubmVkc3RtdCBjb21lcyBmcm9tIGEgQ2FjaGVkUGxhbiwgb25lIGdpdmVuIGluCisg KiBxdWVyeURlc2MtPmNwbGFuLiAgVGhhdCdzIGJlY2F1c2UgR2V0Q2FjaGVkUGxhbigpIG9ubHkg bG9ja3MgdGhlIHRhYmxlcworICogdGhhdCBhcmUgbWVudGlvbmVkIGluIHRoZSBvcmlnaW5hbCBx dWVyeSBidXQgbm90IHRoZSBjaGlsZCB0YWJsZXMsIHdoaWNoCisgKiB3b3VsZCBoYXZlIGJlZW4g YWRkZWQgdG8gdGhlIHBsYW4gYnkgdGhlIHBsYW5uZXIuICBJbiB0aGF0IGNhc2UsIGxvY2tzIG9u CisgKiBjaGlsZCB0YWJsZXMgd2lsbCBiZSB0YWtlbiB3aGVuIGluaXRpYWxpemluZyB0aGVpciBT Y2FuIG5vZGVzIGluCisgKiBFeGVjSW5pdE5vZGUoKSB0byBiZSBkb25lIGhlcmUuICBJZiB0aGUg Q2FjaGVkUGxhbiBnZXRzIGludmFsaWRhdGVkIGFzCisgKiB0aG9zZSBsb2NrcyBhcmUgdGFrZW4s IHBsYW4gdHJlZSBpbml0aWFsaXphdGlvbiBpcyBzdXNwZW5kZWQgYXQgdGhlIHBvaW50CisgKiB3 aGVyZSB0aGUgaW52YWxpZGF0aW9uIGlzIGZpcnN0IGRldGVjdGVkLCBxdWVyeURlc2MtPnBsYW5z dGF0ZSB3aWxsIGJlIHNldAorICogdG8gTlVMTCwgYW5kIHF1ZXJ5RGVzYy0+cGxhbl92YWxpZCB0 byBmYWxzZS4gIENhbGxlcnMgbXVzdCByZXRyeSB0aGUKKyAqIGV4ZWN1dGlvbiBhZnRlciBjcmVh dGluZyBhIG5ldyBDYWNoZWRQbGFuIGluIHRoYXQgY2FzZSwgYWZ0ZXIgcHJvcGVybHkKKyAqIHJl bGVhc2luZyB0aGUgcmVzb3VyY2VzIG9mIHRoaXMgUXVlcnlEZXNjLCB3aGljaCBpbmNsdWRlcyBj YWxsaW5nCisgKiBFeGVjdXRvckZpbmlzaCgpIGFuZCBFeGVjdXRvckVuZCgpIG9uIHRoZSBFU3Rh dGUgY29udGFpbmVkIHRoZXJlaW4uCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC04 MzksNyArODY3LDcgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp CiAJUGxhbgkgICAqcGxhbiA9IHBsYW5uZWRzdG10LT5wbGFuVHJlZTsKIAlMaXN0CSAgICpyYW5n ZVRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJsZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHF1ZXJ5 RGVzYy0+ZXN0YXRlOwotCVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZTsKKwlQbGFuU3RhdGUgICpwbGFu c3RhdGUgPSBOVUxMOwogCVR1cGxlRGVzYwl0dXBUeXBlOwogCUxpc3RDZWxsICAgKmw7CiAJaW50 CQkJaTsKQEAgLTg1MCwxMCArODc4LDExIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKQogCUV4ZWNDaGVja1Blcm1pc3Npb25zKHJhbmdlVGFibGUsIHBsYW5uZWRz dG10LT5wZXJtSW5mb3MsIHRydWUpOwogCiAJLyoKLQkgKiBpbml0aWFsaXplIHRoZSBub2RlJ3Mg ZXhlY3V0aW9uIHN0YXRlCisJICogU2V0IHVwIHJhbmdlIHRhYmxlIGluIEVTdGF0ZS4KIAkgKi8K IAlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVy bUluZm9zKTsKIAorCWVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiA9IHF1ZXJ5RGVzYy0+Y3BsYW47CiAJ ZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwogCiAJLyoKQEAgLTg4Niw2ICs5 MTUsOCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCQlj YXNlIFJPV19NQVJLX0tFWVNIQVJFOgogCQkJCWNhc2UgUk9XX01BUktfUkVGRVJFTkNFOgogCQkJ CQlyZWxhdGlvbiA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCByYy0+cnRpKTsK KwkJCQkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCQkJCWdvdG8gcGxhbl9p bml0X3N1c3BlbmRlZDsKIAkJCQkJYnJlYWs7CiAJCQkJY2FzZSBST1dfTUFSS19DT1BZOgogCQkJ CQkvKiBubyBwaHlzaWNhbCB0YWJsZSBhY2Nlc3MgaXMgcmVxdWlyZWQgKi8KQEAgLTk1Myw2ICs5 ODQsMTEgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlz cF9lZmxhZ3MgfD0gRVhFQ19GTEFHX1JFV0lORDsKIAogCQlzdWJwbGFuc3RhdGUgPSBFeGVjSW5p dE5vZGUoc3VicGxhbiwgZXN0YXRlLCBzcF9lZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQl7CisJCQlBc3NlcnQoc3VicGxhbnN0YXRlID09IE5VTEwpOworCQkJ Z290byBwbGFuX2luaXRfc3VzcGVuZGVkOworCQl9CiAKIAkJZXN0YXRlLT5lc19zdWJwbGFuc3Rh dGVzID0gbGFwcGVuZChlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJCQkJCQkJICAgc3Vi cGxhbnN0YXRlKTsKQEAgLTk2Niw2ICsxMDAyLDExIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKQogCSAqIHByb2Nlc3NpbmcgdHVwbGVzLgogCSAqLwogCXBsYW5z dGF0ZSA9IEV4ZWNJbml0Tm9kZShwbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkKKwl7CisJCUFzc2VydChwbGFuc3RhdGUgPT0gTlVMTCk7CisJ CWdvdG8gcGxhbl9pbml0X3N1c3BlbmRlZDsKKwl9CiAKIAkvKgogCSAqIEdldCB0aGUgdHVwbGUg ZGVzY3JpcHRvciBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIHR1cGxlcyB0byByZXR1cm4uCkBAIC0x MDA4LDcgKzEwNDksMTkgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxh Z3MpCiAJfQogCiAJcXVlcnlEZXNjLT50dXBEZXNjID0gdHVwVHlwZTsKKwlBc3NlcnQocGxhbnN0 YXRlICE9IE5VTEwpOwogCXF1ZXJ5RGVzYy0+cGxhbnN0YXRlID0gcGxhbnN0YXRlOworCXF1ZXJ5 RGVzYy0+cGxhbl92YWxpZCA9IHRydWU7CisJcmV0dXJuOworCitwbGFuX2luaXRfc3VzcGVuZGVk OgorCS8qCisJICogUGxhbiBpbml0aWFsaXphdGlvbiBmYWlsZWQuICBNYXJrIFF1ZXJ5RGVzYyBh cyBzdWNoLiAgRXhlY0VuZFBsYW4oKQorCSAqIHdpbGwgY2xlYW4gdXAgaW5pdGlhbGl6ZWQgcGxh biBub2RlcyBmcm9tIGVzdGF0ZS0+ZXNfaW5pdGVkX3BsYW5ub2Rlcy4KKwkgKi8KKwlBc3NlcnQo cGxhbnN0YXRlID09IE5VTEwpOworCXF1ZXJ5RGVzYy0+cGxhbnN0YXRlID0gTlVMTDsKKwlxdWVy eURlc2MtPnBsYW5fdmFsaWQgPSBmYWxzZTsKIH0KIAogLyoKQEAgLTE0MjYsNyArMTQ3OSw3IEBA IEV4ZWNHZXRBbmNlc3RvclJlc3VsdFJlbHMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8pCiAKIAkJCS8qCiAJCQkgKiBBbGwgYW5jZXN0b3JzIHVwIHRvIHRoZSBy b290IHRhcmdldCByZWxhdGlvbiBtdXN0IGhhdmUgYmVlbgotCQkJICogbG9ja2VkIGJ5IHRoZSBw bGFubmVyIG9yIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkuCisJCQkgKiBsb2NrZWQgYnkgdGhlIHBs YW5uZXIgb3IgRXhlY0xvY2tBcHBlbmROb25MZWFmUmVsYXRpb25zKCkuCiAJCQkgKi8KIAkJCWFu Y1JlbCA9IHRhYmxlX29wZW4oYW5jT2lkLCBOb0xvY2spOwogCQkJckluZm8gPSBtYWtlTm9kZShS ZXN1bHRSZWxJbmZvKTsKQEAgLTE1MDQsMTggKzE1NTcsMTUgQEAgRXhlY0VuZFBsYW4oUGxhblN0 YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlKQogCUxpc3RDZWxsICAgKmw7CiAKIAkvKgot CSAqIHNodXQgZG93biB0aGUgbm9kZS10eXBlLXNwZWNpZmljIHF1ZXJ5IHByb2Nlc3NpbmcKKwkg KiBTaHV0IGRvd24gdGhlIG5vZGUtdHlwZS1zcGVjaWZpYyBxdWVyeSBwcm9jZXNzaW5nIGZvciBh bGwgbm9kZXMgdGhhdAorCSAqIHdlcmUgaW5pdGlhbGl6ZWQgZHVyaW5nIEluaXRQbGFuKCksIGJv dGggaW4gdGhlIG1haW4gcGxhbiB0cmVlIGFuZCB0aG9zZQorCSAqIGluIHN1YnBsYW5zIChlc19z dWJwbGFuc3RhdGVzKSwgaWYgYW55LgogCSAqLwotCUV4ZWNFbmROb2RlKHBsYW5zdGF0ZSk7Ci0K LQkvKgotCSAqIGZvciBzdWJwbGFucyB0b28KLQkgKi8KLQlmb3JlYWNoKGwsIGVzdGF0ZS0+ZXNf c3VicGxhbnN0YXRlcykKKwlmb3JlYWNoKGwsIGVzdGF0ZS0+ZXNfaW5pdGVkX3BsYW5ub2RlcykK IAl7Ci0JCVBsYW5TdGF0ZSAgKnN1YnBsYW5zdGF0ZSA9IChQbGFuU3RhdGUgKikgbGZpcnN0KGwp OworCQlQbGFuU3RhdGUgICpwc3RhdGUgPSAoUGxhblN0YXRlICopIGxmaXJzdChsKTsKIAotCQlF eGVjRW5kTm9kZShzdWJwbGFuc3RhdGUpOworCQlFeGVjRW5kTm9kZShwc3RhdGUpOwogCX0KIAog CS8qCkBAIC0yODU4LDcgKzI5MDgsOCBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBx c3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCSAqIENoaWxkIEVQUSBFU3RhdGVzIHNoYXJlIHRoZSBw YXJlbnQncyBjb3B5IG9mIHVuY2hhbmdpbmcgc3RhdGUgc3VjaCBhcwogCSAqIHRoZSBzbmFwc2hv dCwgcmFuZ2V0YWJsZSwgYW5kIGV4dGVybmFsIFBhcmFtIGluZm8uICBUaGV5IG5lZWQgdGhlaXIg b3duCiAJICogY29waWVzIG9mIGxvY2FsIHN0YXRlLCBpbmNsdWRpbmcgYSB0dXBsZSB0YWJsZSwg ZXNfcGFyYW1fZXhlY192YWxzLAotCSAqIHJlc3VsdC1yZWwgaW5mbywgZXRjLgorCSAqIHJlc3Vs dC1yZWwgaW5mbywgZXRjLiAgQWxzbywgd2UgZG9uJ3QgcGFzcyB0aGUgcGFyZW50J3QgY29weSBv ZiB0aGUKKwkgKiBDYWNoZWRQbGFuLCBiZWNhdXNlIG5vIG5ldyBsb2NrcyB3aWxsIGJlIHRha2Vu IGZvciBFdmFsUGxhblF1YWwoKS4KIAkgKi8KIAlyY2VzdGF0ZS0+ZXNfZGlyZWN0aW9uID0gRm9y d2FyZFNjYW5EaXJlY3Rpb247CiAJcmNlc3RhdGUtPmVzX3NuYXBzaG90ID0gcGFyZW50ZXN0YXRl LT5lc19zbmFwc2hvdDsKQEAgLTI5NDUsNiArMjk5NiwxMiBAQCBFdmFsUGxhblF1YWxTdGFydChF UFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCQlQbGFuU3RhdGUgICpzdWJwbGFu c3RhdGU7CiAKIAkJc3VicGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHN1YnBsYW4sIHJjZXN0YXRl LCAwKTsKKworCQkvKgorCQkgKiBBdCB0aGlzIHBvaW50LCB3ZSBoYWQgYmV0dGVyIG5vdCByZWNl aXZlZCBhbnkgbmV3IGludmFsaWRhdGlvbgorCQkgKiBtZXNzYWdlcyB0aGF0IHdvdWxkIGhhdmUg Y2F1c2VkIHRoZSBwbGFuIHRyZWUgdG8gZ28gc3RhbGUuCisJCSAqLworCQlBc3NlcnQoRXhlY1Bs YW5TdGlsbFZhbGlkKHJjZXN0YXRlKSAmJiBzdWJwbGFuc3RhdGUpOwogCQlyY2VzdGF0ZS0+ZXNf c3VicGxhbnN0YXRlcyA9IGxhcHBlbmQocmNlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJ CQkJCQkJCSBzdWJwbGFuc3RhdGUpOwogCX0KQEAgLTI5ODgsNiArMzA0NSwxMiBAQCBFdmFsUGxh blF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCSAqLwogCWVw cXN0YXRlLT5yZWNoZWNrcGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHBsYW5UcmVlLCByY2VzdGF0 ZSwgMCk7CiAKKwkvKgorCSAqIEF0IHRoaXMgcG9pbnQsIHdlIGhhZCBiZXR0ZXIgbm90IHJlY2Vp dmVkIGFueSBuZXcgaW52YWxpZGF0aW9uIG1lc3NhZ2VzCisJICogdGhhdCB3b3VsZCBoYXZlIGNh dXNlZCB0aGUgcGxhbiB0cmVlIHRvIGdvIHN0YWxlLgorCSAqLworCUFzc2VydChFeGVjUGxhblN0 aWxsVmFsaWQocmNlc3RhdGUpICYmIGVwcXN0YXRlLT5yZWNoZWNrcGxhbnN0YXRlKTsKKwogCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIH0KIApAQCAtMzAxMCw2ICszMDczLDEw IEBAIEV2YWxQbGFuUXVhbEVuZChFUFFTdGF0ZSAqZXBxc3RhdGUpCiAJTWVtb3J5Q29udGV4dCBv bGRjb250ZXh0OwogCUxpc3RDZWxsICAgKmw7CiAKKwkvKiBOb3RoaW5nIHRvIGRvIGlmIEV2YWxQ bGFuUXVhbEluaXQoKSB3YXNuJ3QgZG9uZSB0byBiZWdpbiB3aXRoLiAqLworCWlmIChlcHFzdGF0 ZS0+cGFyZW50ZXN0YXRlID09IE5VTEwpCisJCXJldHVybjsKKwogCXJ0c2l6ZSA9IGVwcXN0YXRl LT5wYXJlbnRlc3RhdGUtPmVzX3JhbmdlX3RhYmxlX3NpemU7CiAKIAkvKgpAQCAtMzAzMCwxMyAr MzA5NywxNiBAQCBFdmFsUGxhblF1YWxFbmQoRVBRU3RhdGUgKmVwcXN0YXRlKQogCiAJb2xkY29u dGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CiAKLQlF eGVjRW5kTm9kZShlcHFzdGF0ZS0+cmVjaGVja3BsYW5zdGF0ZSk7Ci0KLQlmb3JlYWNoKGwsIGVz dGF0ZS0+ZXNfc3VicGxhbnN0YXRlcykKKwkvKgorCSAqIFNodXQgZG93biB0aGUgbm9kZS10eXBl LXNwZWNpZmljIHF1ZXJ5IHByb2Nlc3NpbmcgZm9yIGFsbCBub2RlcyB0aGF0CisJICogd2VyZSBp bml0aWFsaXplZCBkdXJpbmcgRXZhbFBsYW5RdWFsU3RhcnQoKSwgYm90aCBpbiB0aGUgbWFpbiBw bGFuIHRyZWUKKwkgKiBhbmQgdGhvc2UgaW4gc3VicGxhbnMgKGVzX3N1YnBsYW5zdGF0ZXMpLCBp ZiBhbnkuCisJICovCisJZm9yZWFjaChsLCBlc3RhdGUtPmVzX2luaXRlZF9wbGFubm9kZXMpCiAJ ewotCQlQbGFuU3RhdGUgICpzdWJwbGFuc3RhdGUgPSAoUGxhblN0YXRlICopIGxmaXJzdChsKTsK KwkJUGxhblN0YXRlICAqcGxhbnN0YXRlID0gKFBsYW5TdGF0ZSAqKSBsZmlyc3QobCk7CiAKLQkJ RXhlY0VuZE5vZGUoc3VicGxhbnN0YXRlKTsKKwkJRXhlY0VuZE5vZGUocGxhbnN0YXRlKTsKIAl9 CiAKIAkvKiB0aHJvdyBhd2F5IHRoZSBwZXItZXN0YXRlIHR1cGxlIHRhYmxlLCBzb21lIG5vZGUg bWF5IGhhdmUgdXNlZCBpdCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBj YzJiOGNjYWI3Li40MmRmN2I2NDI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpA QCAtMTI0OCw4ICsxMjQ4LDE3IEBAIEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0 b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJcGFyYW1zcGFjZSA9IHNobV90b2NfbG9va3Vw KHRvYywgUEFSQUxMRUxfS0VZX1BBUkFNTElTVElORk8sIGZhbHNlKTsKIAlwYXJhbUxJID0gUmVz dG9yZVBhcmFtTGlzdCgmcGFyYW1zcGFjZSk7CiAKLQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9y IHRoZSBxdWVyeS4gKi8KKwkvKgorCSAqIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5 LiAgTm90ZSB0aGF0IG5vIENhY2hlZFBsYW4gaXMgYXZhaWxhYmxlCisJICogaGVyZSBldmVuIGlm IHRoZSBsZWFkZXIgbWF5IGhhdmUgZ290dGVuIHRoZSBwbGFuIHRyZWUgZnJvbSBvbmUuICBUaGF0 J3MKKwkgKiBmaW5lIHRob3VnaCwgYmVjYXVzZSB0aGUgbGVhZGVyIHdvdWxkIGhhdmUgdGFrZW4g dGhlIGxvY2tzIG5lY2Vzc2FyeQorCSAqIGZvciB0aGUgcGxhbiB0cmVlIHRoYXQgd2UgaGF2ZSBo ZXJlIHRvIGJlIGZ1bGx5IHZhbGlkLiAgVGhhdCBpcyB0cnVlCisJICogZGVzcGl0ZSB0aGUgZmFj dCB0aGF0IHdlIHdpbGwgYmUgdGFraW5nIG91ciBvd24gY29waWVzIG9mIHRob3NlIGxvY2tzCisJ ICogaW4gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbigpLCBiZWNhdXNlIG5vbmUgb2YgdGhlbSB3 b3VsZCBiZSB0aGUgbG9ja3MKKwkgKiB0aGF0IGFyZSBub3QgYWxyZWFkeSB0YWtlbiBieSB0aGUg bGVhZGVyLgorCSAqLwogCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQsCisJCQkJCQkgICBO VUxMLAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBHZXRBY3RpdmVTbmFwc2hvdCgp LCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZlciwgcGFyYW1MSSwgTlVMTCwgaW5z dHJ1bWVudF9vcHRpb25zKTsKQEAgLTE0MzEsNiArMTQ0MCw3IEBAIFBhcmFsbGVsUXVlcnlNYWlu KGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkvKiBTdGFydCB1cCB0aGUgZXhlY3V0 b3IgKi8KIAlxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5qaXRGbGFncyA9IGZwZXMtPmppdF9mbGFn czsKIAlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZnBlcy0+ZWZsYWdzKTsKKwlBc3NlcnQocXVl cnlEZXNjLT5wbGFuX3ZhbGlkKTsKIAogCS8qIFNwZWNpYWwgZXhlY3V0b3IgaW5pdGlhbGl6YXRp b24gc3RlcHMgZm9yIHBhcmFsbGVsIHdvcmtlcnMgKi8KIAlxdWVyeURlc2MtPnBsYW5zdGF0ZS0+ c3RhdGUtPmVzX3F1ZXJ5X2RzYSA9IGFyZWE7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9u LmMKaW5kZXggZWI4YTg3ZmQ2My4uY2Y3M2QyOGJhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uYwpAQCAtNTEzLDYgKzUxMywxMyBAQCBFeGVjSW5pdFBhcnRpdGlvbkluZm8oTW9k aWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAKIAlvbGRjeHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8ocHJvdXRlLT5tZW1jeHQpOwogCisJLyoKKwkgKiBOb3RlIHRoYXQg d2hpbGUgd2Ugbm9ybWFsbHkgY2hlY2sgRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkgYWZ0ZXIg ZWFjaAorCSAqIGxvY2sgdGFrZW4gZHVyaW5nIGV4ZWN1dGlvbiBpbml0aWFsaXphdGlvbiwgaXQg aXMgZmluZSBub3QgZG8gc28gZm9yCisJICogcGFydGl0aW9ucyBvcGVuZWQgaGVyZSwgZm9yIHR1 cGxlIHJvdXRpbmcuICBMb2NrcyB0YWtlbiBoZXJlIGNhbid0CisJICogcG9zc2libHkgaW52YWxp ZGF0ZSB0aGUgcGxhbiBnaXZlbiB0aGF0IHRoZSBwbGFuIGRvZXNuJ3QgY29udGFpbiBhbnkKKwkg KiBpbmZvIGFib3V0IHRob3NlIHBhcnRpdGlvbnMuCisJICovCiAJcGFydHJlbCA9IHRhYmxlX29w ZW4ocGFydE9pZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAlsZWFmX3BhcnRfcnJpID0gbWFrZU5v ZGUoUmVzdWx0UmVsSW5mbyk7CkBAIC0xMTExLDYgKzExMTgsOSBAQCBFeGVjSW5pdFBhcnRpdGlv bkRpc3BhdGNoSW5mbyhFU3RhdGUgKmVzdGF0ZSwKIAkgKiBPbmx5IHN1Yi1wYXJ0aXRpb25lZCB0 YWJsZXMgbmVlZCB0byBiZSBsb2NrZWQgaGVyZS4gIFRoZSByb290CiAJICogcGFydGl0aW9uZWQg dGFibGUgd2lsbCBhbHJlYWR5IGhhdmUgYmVlbiBsb2NrZWQgYXMgaXQncyByZWZlcmVuY2VkIGlu CiAJICogdGhlIHF1ZXJ5J3MgcnRhYmxlLgorCSAqCisJICogU2VlIHRoZSBjb21tZW50IGluIEV4 ZWNJbml0UGFydGl0aW9uSW5mbygpIGFib3V0IHRha2luZyBsb2NrcyBhbmQKKwkgKiBub3QgY2hl Y2tpbmcgRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkgaGVyZS4KIAkgKi8KIAlpZiAocGFydG9p ZCAhPSBSZWxhdGlvbkdldFJlbGlkKHByb3V0ZS0+cGFydGl0aW9uX3Jvb3QpKQogCQlyZWwgPSB0 YWJsZV9vcGVuKHBhcnRvaWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwpAQCAtMTgwMSw2ICsxODExLDgg QEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCiAJLyog Q3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3RydWN0dXJlIGZvciBwcnVuaW5nICovCiAJcHJ1bmVz dGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUocGxhbnN0YXRlLCBwcnVuZWluZm8pOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoK IAkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVk LgpAQCAtMTkyNyw2ICsxOTM5LDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3Rh dGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkgKiBkdXJh dGlvbiBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4KIAkJCSAqLwogCQkJcGFydHJlbCA9IEV4ZWNHZXRS YW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7CisJCQlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCXJldHVybiBOVUxMOwogCQkJcGFydGtleSA9IFJl bGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRyZWwpOwogCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25E aXJlY3RvcnlMb29rdXAoZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5LAogCQkJCQkJCQkJ CQkJcGFydHJlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25v ZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IDRkMjg4YmM4 ZDQuLmYzYmIxZDQ1OTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9j bm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC0xMzUs NyArMTM1LDE3IEBAIHN0YXRpYyBib29sIEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0 ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CiAgKgkJICAnZXN0YXRlJyBpcyB0aGUgc2hhcmVkIGV4 ZWN1dGlvbiBzdGF0ZSBmb3IgdGhlIHBsYW4gdHJlZQogICoJCSAgJ2VmbGFncycgaXMgYSBiaXR3 aXNlIE9SIG9mIGZsYWcgYml0cyBkZXNjcmliZWQgaW4gZXhlY3V0b3IuaAogICoKLSAqCQlSZXR1 cm5zIGEgUGxhblN0YXRlIG5vZGUgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gUGxhbiBub2Rl LgorICoJCVJldHVybnMgYSBQbGFuU3RhdGUgbm9kZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZl biBQbGFuIG5vZGUgb3IgTlVMTC4KKyAqCisgKgkJTlVMTCBtYXkgYmUgcmV0dXJuZWQgZWl0aGVy IGlmIHRoZSBpbnB1dCBub2RlIGlzIE5VTEwgb3IgaWYgdGhlIHBsYW4KKyAqCQl0cmVlIHRoYXQg dGhlIG5vZGUgaXMgYSBwYXJ0IG9mIGlzIGZvdW5kIHRvIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCB3 aGVuCisgKgkJdGFraW5nIGEgbG9jayBvbiB0aGUgcmVsYXRpb24gbWVudGlvbmVkIGluIHRoZSBu b2RlIG9yIGluIGEgY2hpbGQKKyAqCQlub2RlLiAgVGhlIGxhdHRlciBjYXNlIGFyaXNlcyBpZiB0 aGUgcGxhbiB0cmVlIGNvbnRhaW5zIGluaGVyaXRhbmNlLworICoJCXBhcnRpdGlvbiBjaGlsZCB0 YWJsZXMgYW5kIGlzIGZyb20gYSBDYWNoZWRQbGFuLgorICoKKyAqCQlBbHNvLCBhbGwgbm9uLU5V TEwgUGxhblN0YXRlIG5vZGVzIGFyZSBhZGRlZCB0bworICoJCWVzdGF0ZS0+ZXNfaW5pdGVkX3Bs YW5ub2RlcyBmb3IgRXhlY0VuZFBsYW4oKSB0byBpdGVyYXRlIG92ZXIgdG8gY2xvc2UKKyAqCQll YWNoIG9uZSB1c2luZyBFeGVjRW5kTm9kZSgpLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIFBs YW5TdGF0ZSAqCkBAIC0zODgsNiArMzk4LDEzIEBAIEV4ZWNJbml0Tm9kZShQbGFuICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCWJyZWFrOwogCX0KIAorCWlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJeworCQlBc3NlcnQocmVzdWx0ID09IE5VTEwpOworCQly ZXR1cm4gTlVMTDsKKwl9CisKKwlBc3NlcnQocmVzdWx0ICE9IE5VTEwpOwogCUV4ZWNTZXRFeGVj UHJvY05vZGUocmVzdWx0LCByZXN1bHQtPkV4ZWNQcm9jTm9kZSk7CiAKIAkvKgpAQCAtNDExLDYg KzQyOCwxMyBAQCBFeGVjSW5pdE5vZGUoUGxhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJCXJlc3VsdC0+aW5zdHJ1bWVudCA9IEluc3RyQWxsb2MoMSwgZXN0YXRlLT5lc19p bnN0cnVtZW50LAogCQkJCQkJCQkJCXJlc3VsdC0+YXN5bmNfY2FwYWJsZSk7CiAKKwkvKgorCSAq IFJlbWVtYmVyIHZhbGlkIFBsYW5TdGF0ZSBub2RlcyBpbiBFU3RhdGUgZm9yIHRoZSBwcm9jZXNz aW5nIGluCisJICogRXhlY0VuZFBsYW4oKS4KKwkgKi8KKwllc3RhdGUtPmVzX2luaXRlZF9wbGFu bm9kZXMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfaW5pdGVkX3BsYW5ub2RlcywKKwkJCQkJCQkJCQkg IHJlc3VsdCk7CisKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC01NDUsMjkgKzU2OSwyMSBAQCBN dWx0aUV4ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5vZGUpCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY0Vu ZE5vZGUKICAqCi0gKgkJUmVjdXJzaXZlbHkgY2xlYW5zIHVwIGFsbCB0aGUgbm9kZXMgaW4gdGhl IHBsYW4gcm9vdGVkCi0gKgkJYXQgJ25vZGUnLgorICoJCUNsZWFucyB1cCBub2RlCiAgKgotICoJ CUFmdGVyIHRoaXMgb3BlcmF0aW9uLCB0aGUgcXVlcnkgcGxhbiB3aWxsIG5vdCBiZSBhYmxlIHRv IGJlCi0gKgkJcHJvY2Vzc2VkIGFueSBmdXJ0aGVyLiAgVGhpcyBzaG91bGQgYmUgY2FsbGVkIG9u bHkgYWZ0ZXIKKyAqCQlDaGlsZCBub2RlcywgaWYgYW55LCB3b3VsZCBoYXZlIGJlZW4gY2xvc2Vk IGJ5IHRoZSBjYWxsZXIsIHNvIHRoZQorICoJCUV4ZWNFbmQqIHJvdXRpbmUgZm9yIGEgZ2l2ZW4g bm9kZSB0eXBlIGlzIG9ubHkgcmVzcG9uc2libGUgZm9yCisgKgkJY2xlYW5pbmcgdXAgdGhlIHJl c291cmNlcyBsb2NhbCB0byB0aGF0IG5vZGUuCisgKgorICoJCUFmdGVyIHRoaXMgb3BlcmF0aW9u LCB0aGUgcXVlcnkgcGxhbiBjb250YWluaW5nIHRoaXMgbm9kZSB3aWxsIG5vdCBiZQorICoJCWFi bGUgdG8gYmUgcHJvY2Vzc2VkIGFueSBmdXJ0aGVyLiAgVGhpcyBzaG91bGQgYmUgY2FsbGVkIG9u bHkgYWZ0ZXIKICAqCQl0aGUgcXVlcnkgcGxhbiBoYXMgYmVlbiBmdWxseSBleGVjdXRlZC4KICAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICAqLwogdm9pZAogRXhlY0VuZE5vZGUoUGxhblN0YXRlICpub2RlKQogewotCS8q Ci0JICogZG8gbm90aGluZyB3aGVuIHdlIGdldCB0byB0aGUgZW5kIG9mIGEgbGVhZiBvbiB0cmVl LgotCSAqLwotCWlmIChub2RlID09IE5VTEwpCi0JCXJldHVybjsKLQotCS8qCi0JICogTWFrZSBz dXJlIHRoZXJlJ3MgZW5vdWdoIHN0YWNrIGF2YWlsYWJsZS4gTmVlZCB0byBjaGVjayBoZXJlLCBp bgotCSAqIGFkZGl0aW9uIHRvIEV4ZWNQcm9jTm9kZSgpICh2aWEgRXhlY1Byb2NOb2RlRmlyc3Qo KSksIGJlY2F1c2UgaXQncyBub3QKLQkgKiBndWFyYW50ZWVkIHRoYXQgRXhlY1Byb2NOb2RlKCkg aXMgcmVhY2hlZCBmb3IgYWxsIG5vZGVzLgotCSAqLwotCWNoZWNrX3N0YWNrX2RlcHRoKCk7CisJ QXNzZXJ0KG5vZGUgIT0gTlVMTCk7CiAKIAlpZiAobm9kZS0+Y2hnUGFyYW0gIT0gTlVMTCkKIAl7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IGMwNmIyMjg4NTguLmFmOTJkMmIzYzMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04MDQsNyArODA0LDI1IEBAIEV4ZWNHZXRSYW5n ZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKIAogCQlBc3NlcnQocnRl LT5ydGVraW5kID09IFJURV9SRUxBVElPTik7CiAKLQkJaWYgKCFJc1BhcmFsbGVsV29ya2VyKCkp CisJCWlmIChJc1BhcmFsbGVsV29ya2VyKCkgfHwKKwkJCShlc3RhdGUtPmVzX2NhY2hlZHBsYW4g IT0gTlVMTCAmJiAhcnRlLT5pbkZyb21DbCkpCisJCXsKKwkJCS8qCisJCQkgKiBUYWtlIGEgbG9j ayBpZiB3ZSBhcmUgYSBwYXJhbGxlbCB3b3JrZXIgb3IgaWYgdGhpcyBpcyBhIGNoaWxkCisJCQkg KiB0YWJsZSByZWZlcmVuY2VkIGluIGEgY2FjaGVkIHBsYW4uCisJCQkgKgorCQkJICogUGFyYWxs ZWwgd29ya2VycyBuZWVkIHRvIGhhdmUgdGhlaXIgb3duIGxvY2FsIGxvY2sgb24gdGhlCisJCQkg KiByZWxhdGlvbi4gIFRoaXMgZW5zdXJlcyBzYW5lIGJlaGF2aW9yIGluIGNhc2UgdGhlIHBhcmVu dCBwcm9jZXNzCisJCQkgKiBleGl0cyBiZWZvcmUgd2UgZG8uCisJCQkgKgorCQkJICogV2hlbiBl eGVjdXRpbmcgYSBjYWNoZWQgcGxhbiwgY2hpbGQgdGFibGVzIG11c3QgYmUgbG9ja2VkCisJCQkg KiBoZXJlLCBiZWNhdXNlIHBsYW5jYWNoZS5jIChHZXRDYWNoZWRQbGFuKCkpIHdvdWxkIG9ubHkg aGF2ZQorCQkJICogbG9ja2VkIHRhYmxlcyBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5LCB0aGF0IGlz LCB0YWJsZXMgd2hvc2UKKwkJCSAqIFJURXMnIGluRnJvbUNsIGlzIHRydWUuCisJCQkgKi8KKwkJ CXJlbCA9IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCX0KKwkJ ZWxzZQogCQl7CiAJCQkvKgogCQkJICogSW4gYSBub3JtYWwgcXVlcnksIHdlIHNob3VsZCBhbHJl YWR5IGhhdmUgdGhlIGFwcHJvcHJpYXRlIGxvY2ssCkBAIC04MTcsMTUgKzgzNSw2IEBAIEV4ZWNH ZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKIAkJCUFzc2Vy dChydGUtPnJlbGxvY2ttb2RlID09IEFjY2Vzc1NoYXJlTG9jayB8fAogCQkJCSAgIENoZWNrUmVs YXRpb25Mb2NrZWRCeU1lKHJlbCwgcnRlLT5yZWxsb2NrbW9kZSwgZmFsc2UpKTsKIAkJfQotCQll bHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBJZiB3ZSBhcmUgYSBwYXJhbGxlbCB3b3JrZXIsIHdlIG5l ZWQgdG8gb2J0YWluIG91ciBvd24gbG9jYWwKLQkJCSAqIGxvY2sgb24gdGhlIHJlbGF0aW9uLiAg VGhpcyBlbnN1cmVzIHNhbmUgYmVoYXZpb3IgaW4gY2FzZSB0aGUKLQkJCSAqIHBhcmVudCBwcm9j ZXNzIGV4aXRzIGJlZm9yZSB3ZSBkby4KLQkJCSAqLwotCQkJcmVsID0gdGFibGVfb3BlbihydGUt PnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKLQkJfQogCiAJCWVzdGF0ZS0+ZXNfcmVsYXRpb25z W3J0aSAtIDFdID0gcmVsOwogCX0KQEAgLTgzMyw2ICs4NDIsMzggQEAgRXhlY0dldFJhbmdlVGFi bGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpKQogCXJldHVybiByZWw7CiB9CiAK Ky8qCisgKiBFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlvbnMKKyAqCQlMb2NrIG5vbi1sZWFm IHJlbGF0aW9ucyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieSBhIGdpdmVuCisgKgkJQXBw ZW5kL01lcmdlQXBwZW5kIG5vZGUKKyAqLwordm9pZAorRXhlY0xvY2tBcHBlbmROb25MZWFmUmVs YXRpb25zKEVTdGF0ZSAqZXN0YXRlLCBMaXN0ICphbGxwYXJ0cmVsaWRzKQoreworCUxpc3RDZWxs ICpsOworCisJLyogVGhpcyBzaG91bGQgZ2V0IGNhbGxlZCBvbmx5IHdoZW4gZXhlY3V0aW5nIGNh Y2hlZCBwbGFucy4gKi8KKwlBc3NlcnQoZXN0YXRlLT5lc19jYWNoZWRwbGFuICE9IE5VTEwpOwor CWZvcmVhY2gobCwgYWxscGFydHJlbGlkcykKKwl7CisJCUJpdG1hcHNldCAqcGFydHJlbGlkcyA9 IGxmaXJzdF9ub2RlKEJpdG1hcHNldCwgbCk7CisJCWludAkJaTsKKworCQkvKgorCQkgKiBOb3Rl IHRoYXQgd2UgZG9uJ3QgbG9jayB0aGUgZmlyc3QgbWVtYmVyIChpPTApIG9mIGVhY2ggYml0bWFw c2V0CisJCSAqIGJlY2F1c2UgaXQgc3RhbmRzIGZvciB0aGUgcm9vdCBwYXJlbnQgbWVudGlvbmVk IGluIHRoZSBxdWVyeSB0aGF0CisJCSAqIHNob3VsZCBhbHdheXMgaGF2ZSBiZWVuIGxvY2tlZCBi ZWZvcmUgZW50ZXJpbmcgdGhlIGV4ZWN1dG9yLgorCQkgKi8KKwkJaSA9IDA7CisJCXdoaWxlICgo aSA9IGJtc19uZXh0X21lbWJlcihwYXJ0cmVsaWRzLCBpKSkgPiAwKQorCQl7CisJCQlSYW5nZVRi bEVudHJ5ICpydGUgPSBleGVjX3J0X2ZldGNoKGksIGVzdGF0ZSk7CisKKwkJCUxvY2tSZWxhdGlv bk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJfQorCX0KK30KKwogLyoKICAq IEV4ZWNJbml0UmVzdWx0UmVsYXRpb24KICAqCQlPcGVuIHJlbGF0aW9uIGdpdmVuIGJ5IHRoZSBw YXNzZWQtaW4gUlQgaW5kZXggYW5kIGZpbGwgaXRzCkBAIC04NDgsNiArODg5LDggQEAgRXhlY0lu aXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVs SW5mbywKIAlSZWxhdGlvbglyZXN1bHRSZWxhdGlvbkRlc2M7CiAKIAlyZXN1bHRSZWxhdGlvbkRl c2MgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcnRpKTsKKwlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm47CiAJSW5pdFJlc3VsdFJlbEluZm8ocmVz dWx0UmVsSW5mbywKIAkJCQkJICByZXN1bHRSZWxhdGlvbkRlc2MsCiAJCQkJCSAgcnRpLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCBmNTU0MjRlYjVhLi5jODhmNzJiYzRlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtODM4LDYgKzgzOCw3IEBAIHBvc3RxdWVsX3N0YXJ0KGV4 ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQlkZXN0ID0g Tm9uZV9SZWNlaXZlcjsKIAogCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwKKwkJ CQkJCQkgTlVMTCwJLyogZm1ncl9zcWwoKSBkb2Vzbid0IHVzZSBDYWNoZWRQbGFucyAqLwogCQkJ CQkJCSBmY2FjaGUtPnNyYywKIAkJCQkJCQkgR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkg SW52YWxpZFNuYXBzaG90LApAQCAtODYzLDYgKzg2NCw3IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1 dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQllbHNlCiAJCQll ZmxhZ3MgPSAwOwkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KIAkJRXhl Y3V0b3JTdGFydChlcy0+cWQsIGVmbGFncyk7CisJCUFzc2VydChlcy0+cWQtPnBsYW5fdmFsaWQp OwogCX0KIAogCWVzLT5zdGF0dXMgPSBGX0VYRUNfUlVOOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmlu ZGV4IDQ2OGRiOTRmZTUuLjU0Zjc0MjgyMGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTMz MDQsNiArMzMwNCw4IEBAIEV4ZWNJbml0QWdnKEFnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW4gPSBv dXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUoYWdnc3RhdGUpID0gRXhlY0luaXROb2Rl KG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIHNvdXJjZSB0dXBs ZSB0eXBlLgpAQCAtNDMwNCw3ICs0MzA2LDYgQEAgR2V0QWdnSW5pdFZhbChEYXR1bSB0ZXh0SW5p dFZhbCwgT2lkIHRyYW5zdHlwZSkKIHZvaWQKIEV4ZWNFbmRBZ2coQWdnU3RhdGUgKm5vZGUpCiB7 Ci0JUGxhblN0YXRlICAqb3V0ZXJQbGFuOwogCWludAkJCXRyYW5zbm87CiAJaW50CQkJbnVtR3Jv dXBpbmdTZXRzID0gTWF4KG5vZGUtPm1heHNldHMsIDEpOwogCWludAkJCXNldG5vOwpAQCAtNDM2 Niw5ICs0MzY3LDYgQEAgRXhlY0VuZEFnZyhBZ2dTdGF0ZSAqbm9kZSkKIAogCS8qIGNsZWFuIHVw IHR1cGxlIHRhYmxlICovCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xv dCk7Ci0KLQlvdXRlclBsYW4gPSBvdXRlclBsYW5TdGF0ZShub2RlKTsKLQlFeGVjRW5kTm9kZShv dXRlclBsYW4pOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggNjA5 ZGY2YjllNi4uYTZkYWRiN2QwNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtMTMz LDYgKzEzMywyNyBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCWFwcGVuZHN0YXRlLT5hc19zeW5jZG9uZSA9IGZhbHNlOwogCWFwcGVu ZHN0YXRlLT5hc19iZWd1biA9IGZhbHNlOwogCisJLyoKKwkgKiBNdXN0IHRha2UgbG9ja3Mgb24g Y2hpbGQgdGFibGVzIGlmIHJ1bm5pbmcgYSBjYWNoZWQgcGxhbiwgYmVjYXVzZQorCSAqIEdldENh Y2hlZFBsYW4oKSB3b3VsZCd2ZSBvbmx5IGxvY2tlZCB0aGUgcm9vdCBwYXJlbnQgbmFtZWQgaW4g dGhlCisJICogcXVlcnkuCisJICoKKwkgKiBGaXJzdCBsb2NrIG5vbi1sZWFmIHBhcnRpdGlvbnMg YmVmb3JlIGRvaW5nIHBydW5pbmcgaWYgYW55LiAgRXZlbiB3aGVuCisJICogbm8gcHJ1bmluZyBp cyB0byBiZSBkb25lLCBub24tbGVhZiBwYXJ0aXRpb25zIHN0aWxsIG11c3QgYmUgbG9ja2VkCisJ ICogZXhwbGljaXRseSBsaWtlIHRoaXMsIGJlY2F1c2UgdGhleSdyZSBub3QgcmVmZXJlbmNlZCBl bHNld2hlcmUgaW4KKwkgKiB0aGUgcGxhbiB0cmVlLiAgWFhYIC0gT1RPSCwgbm9uLWxlYWYgcGFy dGl0aW9ucyBtZW50aW9uZWQgaW4KKwkgKiBwYXJ0X3BydW5lX2luZm8sIGlmIGFueSwgd291bGQg YmUgb3BlbmVkIGJ5IEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygpCisJICogdXNpbmcgRXhlY0dl dFJhbmdlVGFibGVSZWxhdGlvbigpIHdoaWNoIGxvY2tzIGNoaWxkIHRhYmxlcywgcmVkdW5kYW50 bHkKKwkgKiBpbiB0aGlzIGNhc2UuCisJICovCisJaWYgKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbikK Kwl7CisJCUV4ZWNMb2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucyhlc3RhdGUsIG5vZGUtPmFsbHBh cnRyZWxpZHMpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJu IE5VTEw7CisKKwl9CisKIAkvKiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFi bGVkLCB0aGVuIHNldCB0aGF0IHVwIG5vdyAqLwogCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZm8g IT0gTlVMTCkKIAl7CkBAIC0xNDcsNiArMTY4LDggQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0 aChub2RlLT5hcHBlbmRwbGFucyksCiAJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZv LAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwogCQlhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3Rh dGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFu cyk7CiAKQEAgLTIyMSw2ICsyNDQsOCBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJZmlyc3R2YWxpZCA9IGo7CiAKIAkJYXBwZW5k cGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7 CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gTlVMTDsKIAl9 CiAKIAlhcHBlbmRzdGF0ZS0+YXNfZmlyc3RfcGFydGlhbF9wbGFuID0gZmlyc3R2YWxpZDsKQEAg LTM3NiwzMCArNDAxLDE1IEBAIEV4ZWNBcHBlbmQoUGxhblN0YXRlICpwc3RhdGUpCiAKIC8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAqCQlFeGVjRW5kQXBwZW5kCi0gKgotICoJCVNodXRzIGRvd24gdGhlIHN1YnNjYW5z IG9mIHRoZSBhcHBlbmQgbm9kZS4KLSAqCi0gKgkJUmV0dXJucyBub3RoaW5nIG9mIGludGVyZXN0 LgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICovCiB2b2lkCiBFeGVjRW5kQXBwZW5kKEFwcGVuZFN0YXRlICpub2Rl KQogewotCVBsYW5TdGF0ZSAqKmFwcGVuZHBsYW5zOwotCWludAkJCW5wbGFuczsKLQlpbnQJCQlp OwotCi0JLyoKLQkgKiBnZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQotCSAqLwotCWFwcGVu ZHBsYW5zID0gbm9kZS0+YXBwZW5kcGxhbnM7Ci0JbnBsYW5zID0gbm9kZS0+YXNfbnBsYW5zOwot Ci0JLyoKLQkgKiBzaHV0IGRvd24gZWFjaCBvZiB0aGUgc3Vic2NhbnMKLQkgKi8KLQlmb3IgKGkg PSAwOyBpIDwgbnBsYW5zOyBpKyspCi0JCUV4ZWNFbmROb2RlKGFwcGVuZHBsYW5zW2ldKTsKKwkg LyoKKwkgICogTm90aGluZyB0byBkbyBhcyBzdWJzY2FucyBvZiB0aGUgYXBwZW5kIG5vZGUgd291 bGQgYmUgY2xlYW5lZCB1cCBieQorCSAgKglFeGVjRW5kUGxhbigpLgorCSAgKi8KIH0KIAogdm9p ZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCmluZGV4IDRjNWViMmIyM2IuLjE4N2Fl YTRiYjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMKQEAgLTg4LDggKzg4LDkg QEAgRXhlY0luaXRCaXRtYXBBbmQoQml0bWFwQW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAlmb3JlYWNoKGwsIG5vZGUtPmJpdG1hcHBsYW5zKQogCXsKIAkJaW5pdE5vZGUg PSAoUGxhbiAqKSBsZmlyc3QobCk7Ci0JCWJpdG1hcHBsYW5zdGF0ZXNbaV0gPSBFeGVjSW5pdE5v ZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKLQkJaSsrOworCQliaXRtYXBwbGFuc3RhdGVz W2krK10gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwkJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwogCX0KIAogCS8qCkBA IC0xNjgsMzMgKzE2OSwxNSBAQCBNdWx0aUV4ZWNCaXRtYXBBbmQoQml0bWFwQW5kU3RhdGUgKm5v ZGUpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjRW5kQml0bWFwQW5kCi0gKgotICoJCVNodXRzIGRv d24gdGhlIHN1YnNjYW5zIG9mIHRoZSBCaXRtYXBBbmQgbm9kZS4KLSAqCi0gKgkJUmV0dXJucyBu b3RoaW5nIG9mIGludGVyZXN0LgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiB2b2lkCiBFeGVjRW5kQml0bWFw QW5kKEJpdG1hcEFuZFN0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAqKmJpdG1hcHBsYW5zOwot CWludAkJCW5wbGFuczsKLQlpbnQJCQlpOwotCi0JLyoKLQkgKiBnZXQgaW5mb3JtYXRpb24gZnJv bSB0aGUgbm9kZQotCSAqLwotCWJpdG1hcHBsYW5zID0gbm9kZS0+Yml0bWFwcGxhbnM7Ci0JbnBs YW5zID0gbm9kZS0+bnBsYW5zOwotCi0JLyoKLQkgKiBzaHV0IGRvd24gZWFjaCBvZiB0aGUgc3Vi c2NhbnMgKHRoYXQgd2UndmUgaW5pdGlhbGl6ZWQpCi0JICovCi0JZm9yIChpID0gMDsgaSA8IG5w bGFuczsgaSsrKQotCXsKLQkJaWYgKGJpdG1hcHBsYW5zW2ldKQotCQkJRXhlY0VuZE5vZGUoYml0 bWFwcGxhbnNbaV0pOwotCX0KKwkgLyoKKwkgICogTm90aGluZyB0byBkbyBhcyBhbnkgc3Vic2Nh bnMgdGhhdCB3b3VsZCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd291bGQKKwkgICogYmUgY2xlYW5l ZCB1cCBieSBFeGVjRW5kUGxhbigpLgorCSAgKi8KIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCBmMzVkZjBiOGJmLi5lZTEwMDg1MTliIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwpAQCAtNjY3LDExICs2 NjcsNiBAQCBFeGVjRW5kQml0bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkK IAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAlFeGVj Q2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIAotCS8qCi0JICogY2xvc2Ug ZG93biBzdWJwbGFucwotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsK LQogCS8qCiAJICogcmVsZWFzZSBiaXRtYXBzIGFuZCBidWZmZXJzIGlmIGFueQogCSAqLwpAQCAt NzYzLDExICs3NTgsMTUgQEAgRXhlY0luaXRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhbiAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxh dGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0 ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgY2hpbGQg bm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShzY2Fuc3RhdGUpID0gRXhlY0luaXROb2RlKG91 dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBnZXQgdGhlIHNjYW4gdHlwZSBm cm9tIHRoZSByZWxhdGlvbiBkZXNjcmlwdG9yLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEluZGV4c2Nhbi5jCmluZGV4IDgzZWM5ZWRlODkuLjk5MDE1ODEyYTEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKQEAgLTIxMSw2ICsyMTEsNyBAQCBC aXRtYXBJbmRleFNjYW5TdGF0ZSAqCiBFeGVjSW5pdEJpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRl eFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogewogCUJpdG1hcEluZGV4 U2NhblN0YXRlICppbmRleHN0YXRlOworCVJlbGF0aW9uCWluZGV4UmVsYXRpb247CiAJTE9DS01P REUJbG9ja21vZGU7CiAKIAkvKiBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgZmxhZ3MgKi8KQEAgLTI2 Miw3ICsyNjMsMTMgQEAgRXhlY0luaXRCaXRtYXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2FuICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIE9wZW4gdGhlIGluZGV4IHJl bGF0aW9uLiAqLwogCWxvY2ttb2RlID0gZXhlY19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxp ZCwgZXN0YXRlKS0+cmVsbG9ja21vZGU7Ci0JaW5kZXhzdGF0ZS0+Ymlzc19SZWxhdGlvbkRlc2Mg PSBpbmRleF9vcGVuKG5vZGUtPmluZGV4aWQsIGxvY2ttb2RlKTsKKwlpbmRleFJlbGF0aW9uID0g aW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaWYgKCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkKKwl7CisJCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIGxvY2ttb2Rl KTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCWluZGV4c3RhdGUtPmJpc3NfUmVsYXRpb25EZXNjID0g aW5kZXhSZWxhdGlvbjsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBpbmRleC1zcGVjaWZpYyBzY2Fu IHN0YXRlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jCmluZGV4IDBiZjhhZjk2NTIuLjNm NTE5MThmZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jCkBAIC04OSw4ICs4OSw5 IEBAIEV4ZWNJbml0Qml0bWFwT3IoQml0bWFwT3IgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCWZvcmVhY2gobCwgbm9kZS0+Yml0bWFwcGxhbnMpCiAJewogCQlpbml0Tm9kZSA9 IChQbGFuICopIGxmaXJzdChsKTsKLQkJYml0bWFwcGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9k ZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwotCQlpKys7CisJCWJpdG1hcHBsYW5zdGF0ZXNb aSsrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7CiAJfQogCiAJLyoKQEAg LTE4NiwzMyArMTg3LDE1IEBAIE11bHRpRXhlY0JpdG1hcE9yKEJpdG1hcE9yU3RhdGUgKm5vZGUp CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjRW5kQml0bWFwT3IKLSAqCi0gKgkJU2h1dHMgZG93biB0 aGUgc3Vic2NhbnMgb2YgdGhlIEJpdG1hcE9yIG5vZGUuCi0gKgotICoJCVJldHVybnMgbm90aGlu ZyBvZiBpbnRlcmVzdC4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogdm9pZAogRXhlY0VuZEJpdG1hcE9yKEJp dG1hcE9yU3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRlICoqYml0bWFwcGxhbnM7Ci0JaW50CQkJ bnBsYW5zOwotCWludAkJCWk7Ci0KLQkvKgotCSAqIGdldCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBu b2RlCi0JICovCi0JYml0bWFwcGxhbnMgPSBub2RlLT5iaXRtYXBwbGFuczsKLQlucGxhbnMgPSBu b2RlLT5ucGxhbnM7Ci0KLQkvKgotCSAqIHNodXQgZG93biBlYWNoIG9mIHRoZSBzdWJzY2FucyAo dGhhdCB3ZSd2ZSBpbml0aWFsaXplZCkKLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBp KyspCi0JewotCQlpZiAoYml0bWFwcGxhbnNbaV0pCi0JCQlFeGVjRW5kTm9kZShiaXRtYXBwbGFu c1tpXSk7Ci0JfQorCSAvKgorCSAgKiBOb3RoaW5nIHRvIGRvIGFzIGFueSBzdWJzY2FucyB0aGF0 IHdvdWxkIGhhdmUgYmVlbiBpbml0aWFsaXplZCB3b3VsZAorCSAgKiBiZSBjbGVhbmVkIHVwIGJ5 IEV4ZWNFbmRQbGFuKCkuCisJICAqLwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9t LmMKaW5kZXggYmQ0MmM2NWIyOS4uOTEyMzljYzUwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0 b20uYwpAQCAtNjEsNiArNjEsOCBAQCBFeGVjSW5pdEN1c3RvbVNjYW4oQ3VzdG9tU2NhbiAqY3Nj YW4sIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChzY2FucmVsaWQgPiAwKQogCXsK IAkJc2Nhbl9yZWwgPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIHNjYW5yZWxpZCwgZWZs YWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxM OwogCQljc3MtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IHNjYW5fcmVsOwogCX0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYwppbmRleCBjMjEzOWFjY2EwLi4yMDcxNjVmNDRm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYwpAQCAtMTczLDYgKzE3Myw4 IEBAIEV4ZWNJbml0Rm9yZWlnblNjYW4oRm9yZWlnblNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCWlmIChzY2FucmVsaWQgPiAwKQogCXsKIAkJY3VycmVudFJlbGF0aW9u ID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBzY2FucmVsaWQsIGVmbGFncyk7CisJCWlm ICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gTlVMTDsKIAkJc2NhbnN0 YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJCWZkd3JvdXRp bmUgPSBHZXRGZHdSb3V0aW5lRm9yUmVsYXRpb24oY3VycmVudFJlbGF0aW9uLCB0cnVlKTsKIAl9 CkBAIC0yNjQsNiArMjY2LDggQEAgRXhlY0luaXRGb3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKG91dGVyUGxhbihub2RlKSkKIAkJ b3V0ZXJQbGFuU3RhdGUoc2NhbnN0YXRlKSA9CiAJCQlFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5v ZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIFRlbGwgdGhlIEZEVyB0byBpbml0aWFsaXplIHRo ZSBzY2FuLgpAQCAtMzA5LDEwICszMTMsNiBAQCBFeGVjRW5kRm9yZWlnblNjYW4oRm9yZWlnblNj YW5TdGF0ZSAqbm9kZSkKIAllbHNlCiAJCW5vZGUtPmZkd3JvdXRpbmUtPkVuZEZvcmVpZ25TY2Fu KG5vZGUpOwogCi0JLyogU2h1dCBkb3duIGFueSBvdXRlciBwbGFuLiAqLwotCWlmIChvdXRlclBs YW5TdGF0ZShub2RlKSkKLQkJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwotCiAJ LyogRnJlZSB0aGUgZXhwcmNvbnRleHQgKi8KIAlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5z cy5wcyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwppbmRleCAzMDdmYzEwZWVhLi40MDBj OGI0MmVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCkBAIC04OSw2ICs4OSw5IEBAIEV4 ZWNJbml0R2F0aGVyKEdhdGhlciAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ ICovCiAJb3V0ZXJOb2RlID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGdhdGhl cnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKKwogCXR1cERlc2Mg PSBFeGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShnYXRoZXJzdGF0ZSkpOwogCiAJLyoK QEAgLTI0OCw3ICsyNTEsNiBAQCBFeGVjR2F0aGVyKFBsYW5TdGF0ZSAqcHN0YXRlKQogdm9pZAog RXhlY0VuZEdhdGhlcihHYXRoZXJTdGF0ZSAqbm9kZSkKIHsKLQlFeGVjRW5kTm9kZShvdXRlclBs YW5TdGF0ZShub2RlKSk7CS8qIGxldCBjaGlsZHJlbiBjbGVhbiB1cCBmaXJzdCAqLwogCUV4ZWNT aHV0ZG93bkdhdGhlcihub2RlKTsKIAlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7CiAJ aWYgKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdh dGhlck1lcmdlLmMKaW5kZXggOWQ1ZTFhNDZlOS4uOTA3N2M0YmM1NSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKQEAgLTEwOCw2ICsxMDgsOCBAQCBFeGVjSW5pdEdhdGhl ck1lcmdlKEdhdGhlck1lcmdlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkg Ki8KIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUoZ21fc3Rh dGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBMZWFk ZXIgbWF5IGFjY2VzcyBFeGVjUHJvY05vZGUgcmVzdWx0IGRpcmVjdGx5IChpZgpAQCAtMjg4LDcg KzI5MCw2IEBAIEV4ZWNHYXRoZXJNZXJnZShQbGFuU3RhdGUgKnBzdGF0ZSkKIHZvaWQKIEV4ZWNF bmRHYXRoZXJNZXJnZShHYXRoZXJNZXJnZVN0YXRlICpub2RlKQogewotCUV4ZWNFbmROb2RlKG91 dGVyUGxhblN0YXRlKG5vZGUpKTsJLyogbGV0IGNoaWxkcmVuIGNsZWFuIHVwIGZpcnN0ICovCiAJ RXhlY1NodXRkb3duR2F0aGVyTWVyZ2Uobm9kZSk7CiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9k ZS0+cHMpOwogCWlmIChub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVHcm91cC5jCmluZGV4IDI1YTE2MTg5NTIuLjk3NmU3MzlhYjcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVHcm91cC5jCkBAIC0xODUsNiArMTg1LDggQEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2Rlcwog CSAqLwogCW91dGVyUGxhblN0YXRlKGdycHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4o bm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBzY2FuIHNsb3QgYW5kIHR5 cGUuCkBAIC0yMjYsMTUgKzIyOCwxMCBAQCBFeGVjSW5pdEdyb3VwKEdyb3VwICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4ZWNFbmRHcm91cChHcm91cFN0YXRlICpu b2RlKQogewotCVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKLQogCUV4ZWNGcmVlRXhwckNvbnRleHQo Jm5vZGUtPnNzLnBzKTsKIAogCS8qIGNsZWFuIHVwIHR1cGxlIHRhYmxlICovCiAJRXhlY0NsZWFy VHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KLQlvdXRlclBsYW4gPSBvdXRlclBs YW5TdGF0ZShub2RlKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW4pOwogfQogCiB2b2lkCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUhhc2guYwppbmRleCA4YjVjMzViODJiLi5mYzdhNmIyY2NjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVIYXNoLmMKQEAgLTM4Niw2ICszODYsOCBAQCBFeGVjSW5pdEhhc2goSGFzaCAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2Rl cwogCSAqLwogCW91dGVyUGxhblN0YXRlKGhhc2hzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQ bGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgb3VyIHJlc3VsdCBz bG90IGFuZCB0eXBlLiBObyBuZWVkIHRvIGJ1aWxkIHByb2plY3Rpb24KQEAgLTQxMywxOCArNDE1 LDEwIEBAIEV4ZWNJbml0SGFzaChIYXNoICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIHZvaWQKIEV4ZWNFbmRIYXNoKEhhc2hTdGF0ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgICpv dXRlclBsYW47Ci0KIAkvKgogCSAqIGZyZWUgZXhwcmNvbnRleHQKIAkgKi8KIAlFeGVjRnJlZUV4 cHJDb250ZXh0KCZub2RlLT5wcyk7Ci0KLQkvKgotCSAqIHNodXQgZG93biB0aGUgc3VicGxhbgot CSAqLwotCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwotCUV4ZWNFbmROb2RlKG91 dGVyUGxhbik7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhh c2hqb2luLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYwppbmRleCA5ODA3 NDYxMjhiLi40YzRiMzljZTJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SGFzaGpvaW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYwpAQCAt NzUyLDggKzc1MiwxMiBAQCBFeGVjSW5pdEhhc2hKb2luKEhhc2hKb2luICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAloYXNoTm9kZSA9IChIYXNoICopIGlubmVyUGxhbihub2Rl KTsKIAogCW91dGVyUGxhblN0YXRlKGhqc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwg ZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJl dHVybiBOVUxMOwogCW91dGVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRl KGhqc3RhdGUpKTsKIAlpbm5lclBsYW5TdGF0ZShoanN0YXRlKSA9IEV4ZWNJbml0Tm9kZSgoUGxh biAqKSBoYXNoTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCWlubmVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBl KGlubmVyUGxhblN0YXRlKGhqc3RhdGUpKTsKIAogCS8qCkBAIC04NzgsMTIgKzg4Miw2IEBAIEV4 ZWNFbmRIYXNoSm9pbihIYXNoSm9pblN0YXRlICpub2RlKQogCUV4ZWNDbGVhclR1cGxlKG5vZGUt PmpzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+aGpfT3V0 ZXJUdXBsZVNsb3QpOwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmhqX0hhc2hUdXBsZVNsb3QpOwot Ci0JLyoKLQkgKiBjbGVhbiB1cCBzdWJ0cmVlcwotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVyUGxh blN0YXRlKG5vZGUpKTsKLQlFeGVjRW5kTm9kZShpbm5lclBsYW5TdGF0ZShub2RlKSk7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0 LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMKaW5kZXggNzY4 M2UzMzQxYy4uNWIxMWFmZWI5NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluY3JlbWVudGFsU29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1l bnRhbFNvcnQuYwpAQCAtMTA0MSw2ICsxMDQxLDggQEAgRXhlY0luaXRJbmNyZW1lbnRhbFNvcnQo SW5jcmVtZW50YWxTb3J0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBu b2RlcyBtYXkgYmUgYWJsZSB0byBkbyBzb21ldGhpbmcgbW9yZSB1c2VmdWwuCiAJICovCiAJb3V0 ZXJQbGFuU3RhdGUoaW5jcnNvcnRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUp LCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJ cmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpA QCAtMTEwMSwxMSArMTEwMyw2IEBAIEV4ZWNFbmRJbmNyZW1lbnRhbFNvcnQoSW5jcmVtZW50YWxT b3J0U3RhdGUgKm5vZGUpCiAJCW5vZGUtPnByZWZpeHNvcnRfc3RhdGUgPSBOVUxMOwogCX0KIAot CS8qCi0JICogU2h1dCBkb3duIHRoZSBzdWJwbGFuLgotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVy UGxhblN0YXRlKG5vZGUpKTsKLQogCVNPX3ByaW50ZigiRXhlY0VuZEluY3JlbWVudGFsU29ydDog c29ydCBub2RlIHNodXRkb3duXG4iKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRl eG9ubHlzY2FuLmMKaW5kZXggMGI0M2E5Yjk2OS4uZWE4YmVmNGI5NyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCkBAIC00OTAsNiArNDkwLDcgQEAgRXhlY0luaXRJ bmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogewogCUluZGV4T25seVNjYW5TdGF0ZSAqaW5kZXhzdGF0ZTsKIAlSZWxhdGlvbgljdXJy ZW50UmVsYXRpb247CisJUmVsYXRpb24JaW5kZXhSZWxhdGlvbjsKIAlMT0NLTU9ERQlsb2NrbW9k ZTsKIAlUdXBsZURlc2MJdHVwRGVzYzsKIApAQCAtNTEyLDYgKzUxMyw4IEBAIEV4ZWNJbml0SW5k ZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0g RXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAog CWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsKIAlp bmRleHN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBubyBoZWFwIHNjYW4g aGVyZSAqLwpAQCAtNTY0LDcgKzU2NywxMyBAQCBFeGVjSW5pdEluZGV4T25seVNjYW4oSW5kZXhP bmx5U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAkvKiBPcGVuIHRo ZSBpbmRleCByZWxhdGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+c2Nh bi5zY2FucmVsaWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOwotCWluZGV4c3RhdGUtPmlvc3NfUmVs YXRpb25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaW5kZXhS ZWxhdGlvbiA9IGluZGV4X29wZW4obm9kZS0+aW5kZXhpZCwgbG9ja21vZGUpOworCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJeworCQlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9u LCBsb2NrbW9kZSk7CisJCXJldHVybiBOVUxMOworCX0KKwlpbmRleHN0YXRlLT5pb3NzX1JlbGF0 aW9uRGVzYyA9IGluZGV4UmVsYXRpb247CiAKIAkvKgogCSAqIEluaXRpYWxpemUgaW5kZXgtc3Bl Y2lmaWMgc2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4IDQ1 NDBjNzc4MWQuLjk1NmU5ZTU1NDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMK QEAgLTkwNCw2ICs5MDQsNyBAQCBFeGVjSW5pdEluZGV4U2NhbihJbmRleFNjYW4gKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogewogCUluZGV4U2NhblN0YXRlICppbmRleHN0YXRl OwogCVJlbGF0aW9uCWN1cnJlbnRSZWxhdGlvbjsKKwlSZWxhdGlvbglpbmRleFJlbGF0aW9uOwog CUxPQ0tNT0RFCWxvY2ttb2RlOwogCiAJLyoKQEAgLTkyNSw2ICs5MjYsOCBAQCBFeGVjSW5pdElu ZGV4U2NhbihJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAq IG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3Bl blNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlm ICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJaW5kZXhz dGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9uOwogCWluZGV4c3Rh dGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CS8qIG5vIGhlYXAgc2NhbiBoZXJlICov CkBAIC05NjksNyArOTcyLDEzIEBAIEV4ZWNJbml0SW5kZXhTY2FuKEluZGV4U2NhbiAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAkvKiBPcGVuIHRoZSBpbmRleCByZWxhdGlv bi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVz dGF0ZSktPnJlbGxvY2ttb2RlOwotCWluZGV4c3RhdGUtPmlzc19SZWxhdGlvbkRlc2MgPSBpbmRl eF9vcGVuKG5vZGUtPmluZGV4aWQsIGxvY2ttb2RlKTsKKwlpbmRleFJlbGF0aW9uID0gaW5kZXhf b3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkKKwl7CisJCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIGxvY2ttb2RlKTsKKwkJ cmV0dXJuIE5VTEw7CisJfQorCWluZGV4c3RhdGUtPmlzc19SZWxhdGlvbkRlc2MgPSBpbmRleFJl bGF0aW9uOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIGluZGV4LXNwZWNpZmljIHNjYW4gc3RhdGUK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKaW5kZXggNDI1ZmJmYzQwNS4uMWNjODg0YmM2NSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKQEAgLTQ3Niw2ICs0NzYsOCBAQCBFeGVjSW5pdExpbWl0 KExpbWl0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKi8KIAlvdXRlclBs YW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUobGltaXRzdGF0ZSkgPSBFeGVj SW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgY2hp bGQgZXhwcmVzc2lvbnMKQEAgLTUzNSw3ICs1MzcsNiBAQCB2b2lkCiBFeGVjRW5kTGltaXQoTGlt aXRTdGF0ZSAqbm9kZSkKIHsKIAlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7Ci0JRXhl Y0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUxvY2tSb3dzLmMKaW5kZXggZTQ1OTk3MWQzMi4uNzc3MzFjMGM4YyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUxvY2tSb3dzLmMKQEAgLTMyMiw2ICszMjIsOCBAQCBFeGVjSW5pdExvY2tSb3dzKExv Y2tSb3dzICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiB0aGVuIGluaXRp YWxpemUgb3V0ZXIgcGxhbgogCSAqLwogCW91dGVyUGxhblN0YXRlKGxyc3RhdGUpID0gRXhlY0lu aXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyogbm9kZSByZXR1cm5zIHVubW9kaWZp ZWQgc2xvdHMgZnJvbSB0aGUgb3V0ZXIgcGxhbiAqLwogCWxyc3RhdGUtPnBzLnJlc3VsdG9wc3Nl dCA9IHRydWU7CkBAIC0zODYsNyArMzg4LDYgQEAgRXhlY0VuZExvY2tSb3dzKExvY2tSb3dzU3Rh dGUgKm5vZGUpCiB7CiAJLyogV2UgbWF5IGhhdmUgc2h1dCBkb3duIEVQUSBhbHJlYWR5LCBidXQg bm8gaGFybSBpbiBhbm90aGVyIGNhbGwgKi8KIAlFdmFsUGxhblF1YWxFbmQoJm5vZGUtPmxyX2Vw cXN0YXRlKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CiB9CiAKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwppbmRleCAwOTYzMjY3OGIwLi5hMzhiOTgwNWE1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwpAQCAtMjE0LDYgKzIxNCw4IEBAIEV4ZWNJ bml0TWF0ZXJpYWwoTWF0ZXJpYWwgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKG1hdHN0YXRl KSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogSW5pdGlh bGl6ZSByZXN1bHQgdHlwZSBhbmQgc2xvdC4gTm8gbmVlZCB0byBpbml0aWFsaXplIHByb2plY3Rp b24gaW5mbwpAQCAtMjUwLDExICsyNTIsNiBAQCBFeGVjRW5kTWF0ZXJpYWwoTWF0ZXJpYWxTdGF0 ZSAqbm9kZSkKIAlpZiAobm9kZS0+dHVwbGVzdG9yZXN0YXRlICE9IE5VTEwpCiAJCXR1cGxlc3Rv cmVfZW5kKG5vZGUtPnR1cGxlc3RvcmVzdGF0ZSk7CiAJbm9kZS0+dHVwbGVzdG9yZXN0YXRlID0g TlVMTDsKLQotCS8qCi0JICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCi0JICovCi0JRXhlY0VuZE5v ZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lbW9pemUuYwppbmRleCA0ZjA0MjY5ZTI2Li5hODk5N2JhN2RhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNZW1vaXplLmMKQEAgLTkzOCw2ICs5MzgsOCBAQCBFeGVjSW5pdE1lbW9pemUoTWVt b2l6ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAlvdXRlck5vZGUgPSBv dXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUobXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShv dXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSByZXR1cm4gc2xvdCBh bmQgdHlwZS4gTm8gbmVlZCB0byBpbml0aWFsaXplIHByb2plY3Rpb24gaW5mbwpAQCAtMTA5OSwx MSArMTEwMSw2IEBAIEV4ZWNFbmRNZW1vaXplKE1lbW9pemVTdGF0ZSAqbm9kZSkKIAkgKiBmcmVl IGV4cHJjb250ZXh0CiAJICovCiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwot Ci0JLyoKLQkgKiBzaHV0IGRvd24gdGhlIHN1YnBsYW4KLQkgKi8KLQlFeGVjRW5kTm9kZShvdXRl clBsYW5TdGF0ZShub2RlKSk7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdl QXBwZW5kLmMKaW5kZXggMjFiNTcyNmU2ZS4uODcxOGYyMDgyNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1lcmdlQXBwZW5kLmMKQEAgLTgxLDYgKzgxLDI3IEBAIEV4ZWNJbml0TWVyZ2VBcHBl bmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCW1lcmdl c3RhdGUtPnBzLnN0YXRlID0gZXN0YXRlOwogCW1lcmdlc3RhdGUtPnBzLkV4ZWNQcm9jTm9kZSA9 IEV4ZWNNZXJnZUFwcGVuZDsKIAorCS8qCisJICogTXVzdCB0YWtlIGxvY2tzIG9uIGNoaWxkIHRh YmxlcyBpZiBydW5uaW5nIGEgY2FjaGVkIHBsYW4sIGJlY2F1c2UKKwkgKiBHZXRDYWNoZWRQbGFu KCkgd291bGQndmUgb25seSBsb2NrZWQgdGhlIHJvb3QgcGFyZW50IG5hbWVkIGluIHRoZQorCSAq IHF1ZXJ5LgorCSAqCisJICogRmlyc3QgbG9jayBub24tbGVhZiBwYXJ0aXRpb25zIGJlZm9yZSBk b2luZyBwcnVuaW5nIGlmIGFueS4gIEV2ZW4gd2hlbgorCSAqIG5vIHBydW5pbmcgaXMgdG8gYmUg ZG9uZSwgbm9uLWxlYWYgcGFydGl0aW9ucyBzdGlsbCBtdXN0IGJlIGxvY2tlZAorCSAqIGV4cGxp Y2l0bHkgbGlrZSB0aGlzLCBiZWNhdXNlIHRoZXkncmUgbm90IHJlZmVyZW5jZWQgZWxzZXdoZXJl IGluCisJICogdGhlIHBsYW4gdHJlZS4gIFhYWCAtIE9UT0gsIG5vbi1sZWFmIHBhcnRpdGlvbnMg bWVudGlvbmVkIGluCisJICogcGFydF9wcnVuZV9pbmZvLCBpZiBhbnksIHdvdWxkIGJlIG9wZW5l ZCBieSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKQorCSAqIHVzaW5nIEV4ZWNHZXRSYW5nZVRh YmxlUmVsYXRpb24oKSB3aGljaCBsb2NrcyBjaGlsZCB0YWJsZXMsIHJlZHVuZGFudGx5CisJICog aW4gdGhpcyBjYXNlLgorCSAqLworCWlmIChlc3RhdGUtPmVzX2NhY2hlZHBsYW4pCisJeworCQlF eGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlvbnMoZXN0YXRlLCBub2RlLT5hbGxwYXJ0cmVsaWRz KTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwor CisJfQorCiAJLyogSWYgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMgZW5hYmxlZCwgdGhl biBzZXQgdGhhdCB1cCBub3cgKi8KIAlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmZvICE9IE5VTEwp CiAJewpAQCAtOTUsNiArMTE2LDggQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJCQkJCSAgbGlzdF9sZW5n dGgobm9kZS0+bWVyZ2VwbGFucyksCiAJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZv LAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwogCQltZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0 ZSA9IHBydW5lc3RhdGU7CiAJCW5wbGFucyA9IGJtc19udW1fbWVtYmVycyh2YWxpZHN1YnBsYW5z KTsKIApAQCAtMTUxLDYgKzE3NCw4IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlQbGFuCSAgICppbml0Tm9kZSA9 IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPm1lcmdlcGxhbnMsIGkpOwogCiAJCW1lcmdlcGxhbnN0 YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCWlm ICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gTlVMTDsKIAl9CiAKIAlt ZXJnZXN0YXRlLT5wcy5wc19Qcm9qSW5mbyA9IE5VTEw7CkBAIC0zMTAsMzAgKzMzNSwxNCBAQCBo ZWFwX2NvbXBhcmVfc2xvdHMoRGF0dW0gYSwgRGF0dW0gYiwgdm9pZCAqYXJnKQogCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgKgkJRXhlY0VuZE1lcmdlQXBwZW5kCi0gKgotICoJCVNodXRzIGRvd24gdGhlIHN1YnNj YW5zIG9mIHRoZSBNZXJnZUFwcGVuZCBub2RlLgotICoKLSAqCQlSZXR1cm5zIG5vdGhpbmcgb2Yg aW50ZXJlc3QuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHZvaWQKIEV4ZWNFbmRNZXJnZUFwcGVuZChNZXJn ZUFwcGVuZFN0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAqKm1lcmdlcGxhbnM7Ci0JaW50CQkJ bnBsYW5zOwotCWludAkJCWk7Ci0KLQkvKgotCSAqIGdldCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBu b2RlCi0JICovCi0JbWVyZ2VwbGFucyA9IG5vZGUtPm1lcmdlcGxhbnM7Ci0JbnBsYW5zID0gbm9k ZS0+bXNfbnBsYW5zOwotCi0JLyoKLQkgKiBzaHV0IGRvd24gZWFjaCBvZiB0aGUgc3Vic2NhbnMK LQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCi0JCUV4ZWNFbmROb2RlKG1lcmdl cGxhbnNbaV0pOworCSAvKgorCSAgKiBOb3RoaW5nIHRvIGRvIGFzIHN1YnNjYW5zIHdvdWxkIGJl IGNsZWFuZWQgdXAgYnkgRXhlY0VuZFBsYW4oKS4KKwkgICovCiB9CiAKIHZvaWQKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwppbmRleCAwMGY5NmQwNDVlLi5jNjY0NGM2ODE2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCkBAIC0xNDkwLDExICsxNDkwLDE1IEBAIEV4 ZWNJbml0TWVyZ2VKb2luKE1lcmdlSm9pbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJbWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID0gbm9kZS0+c2tpcF9tYXJrX3Jl c3RvcmU7CiAKIAlvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRl clBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChl c3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlvdXRlckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShv dXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAJaW5uZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkg PSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUsCiAJCQkJCQkJCQkJCSAgbWVy Z2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID8KIAkJCQkJCQkJCQkJICBlZmxhZ3MgOgogCQkJ CQkJCQkJCQkgIChlZmxhZ3MgfCBFWEVDX0ZMQUdfTUFSSykpOworCWlmICghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCWlubmVyRGVzYyA9IEV4ZWNHZXRSZXN1 bHRUeXBlKGlubmVyUGxhblN0YXRlKG1lcmdlc3RhdGUpKTsKIAogCS8qCkBAIC0xNjU0LDEyICsx NjU4LDYgQEAgRXhlY0VuZE1lcmdlSm9pbihNZXJnZUpvaW5TdGF0ZSAqbm9kZSkKIAlFeGVjQ2xl YXJUdXBsZShub2RlLT5qcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwogCUV4ZWNDbGVhclR1cGxl KG5vZGUtPm1qX01hcmtlZFR1cGxlU2xvdCk7CiAKLQkvKgotCSAqIHNodXQgZG93biB0aGUgc3Vi cGxhbnMKLQkgKi8KLQlFeGVjRW5kTm9kZShpbm5lclBsYW5TdGF0ZShub2RlKSk7Ci0JRXhlY0Vu ZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwotCiAJTUoxX3ByaW50ZigiRXhlY0VuZE1lcmdl Sm9pbjogJXNcbiIsCiAJCQkgICAibm9kZSBwcm9jZXNzaW5nIGVuZGVkIik7CiB9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDJhNWZlYzhkMDEuLjBjM2FlYjExNTQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC0zOTg0LDYgKzM5ODQs OSBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAkJCQkJCQkgICBsaW5pdGlhbF9pbnQobm9kZS0+cmVzdWx0UmVsYXRp b25zKSk7CiAJfQogCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJu IE5VTEw7CisKIAkvKiBzZXQgdXAgZXBxc3RhdGUgd2l0aCBkdW1teSBzdWJwbGFuIGRhdGEgZm9y IHRoZSBtb21lbnQgKi8KIAlFdmFsUGxhblF1YWxJbml0KCZtdHN0YXRlLT5tdF9lcHFzdGF0ZSwg ZXN0YXRlLCBOVUxMLCBOSUwsCiAJCQkJCSBub2RlLT5lcHFQYXJhbSwgbm9kZS0+cmVzdWx0UmVs YXRpb25zKTsKQEAgLTQwMTEsNiArNDAxNCw4IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5 VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlpZiAocmVzdWx0UmVs SW5mbyAhPSBtdHN0YXRlLT5yb290UmVzdWx0UmVsSW5mbykKIAkJewogCQkJRXhlY0luaXRSZXN1 bHRSZWxhdGlvbihlc3RhdGUsIHJlc3VsdFJlbEluZm8sIHJlc3VsdFJlbGF0aW9uKTsKKwkJCWlm ICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQkJcmV0dXJuIE5VTEw7CiAKIAkJCS8q CiAJCQkgKiBGb3IgY2hpbGQgcmVzdWx0IHJlbGF0aW9ucywgc3RvcmUgdGhlIHJvb3QgcmVzdWx0 IHJlbGF0aW9uCkBAIC00MDM4LDYgKzQwNDMsOCBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlm eVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBOb3cgd2UgbWF5 IGluaXRpYWxpemUgdGhlIHN1YnBsYW4uCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUobXRzdGF0ZSkg PSBFeGVjSW5pdE5vZGUoc3VicGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBEbyBhZGRpdGlv bmFsIHBlci1yZXN1bHQtcmVsYXRpb24gaW5pdGlhbGl6YXRpb24uCkBAIC00NDYwLDExICs0NDY3 LDYgQEAgRXhlY0VuZE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUpCiAJICogVGVy bWluYXRlIEVQUSBleGVjdXRpb24gaWYgYWN0aXZlCiAJICovCiAJRXZhbFBsYW5RdWFsRW5kKCZu b2RlLT5tdF9lcHFzdGF0ZSk7Ci0KLQkvKgotCSAqIHNodXQgZG93biBzdWJwbGFuCi0JICovCi0J RXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwogfQogCiB2b2lkCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVOZXN0bG9vcC5jCmluZGV4IGIzZDUyZTY5ZWMuLjcxYTFmODEwMWMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jCkBAIC0yOTUsMTEgKzI5NSwxNSBAQCBFeGVjSW5pdE5l c3RMb29wKE5lc3RMb29wICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiB2 YWx1ZXMuCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUobmxzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0 ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAJaWYgKG5vZGUtPm5lc3RQYXJhbXMgPT0gTklMKQog CQllZmxhZ3MgfD0gRVhFQ19GTEFHX1JFV0lORDsKIAllbHNlCiAJCWVmbGFncyAmPSB+RVhFQ19G TEFHX1JFV0lORDsKIAlpbm5lclBsYW5TdGF0ZShubHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShpbm5l clBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChl c3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSByZXN1bHQgc2xv dCwgdHlwZSBhbmQgcHJvamVjdGlvbi4KQEAgLTM3NCwxMiArMzc4LDYgQEAgRXhlY0VuZE5lc3RM b29wKE5lc3RMb29wU3RhdGUgKm5vZGUpCiAJICovCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+anMu cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAotCS8qCi0JICogY2xvc2UgZG93biBzdWJwbGFucwot CSAqLwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKLQlFeGVjRW5kTm9kZShp bm5lclBsYW5TdGF0ZShub2RlKSk7Ci0KIAlOTDFfcHJpbnRmKCJFeGVjRW5kTmVzdExvb3A6ICVz XG4iLAogCQkJICAgIm5vZGUgcHJvY2Vzc2luZyBlbmRlZCIpOwogfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVQcm9qZWN0U2V0LmMKaW5kZXggZjZmZjNkYzQ0Yy4uYWJjYmQ3ZTc2NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jCkBAIC0yNDcsNiArMjQ3LDggQEAgRXhlY0luaXRQ cm9qZWN0U2V0KFByb2plY3RTZXQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShzdGF0ZSkg PSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIHdl IGRvbid0IHVzZSBpbm5lciBwbGFuCkBAIC0zMjksMTEgKzMzMSw2IEBAIEV4ZWNFbmRQcm9qZWN0 U2V0KFByb2plY3RTZXRTdGF0ZSAqbm9kZSkKIAkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxl CiAJICovCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQot CS8qCi0JICogc2h1dCBkb3duIHN1YnBsYW5zCi0JICovCi0JRXhlY0VuZE5vZGUob3V0ZXJQbGFu U3RhdGUobm9kZSkpOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlUmVjdXJzaXZldW5pb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNp dmV1bmlvbi5jCmluZGV4IGU3ODEwMDM5MzQuLjg0YTcwNjQ1OGEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jCkBAIC0yNDQsNyArMjQ0LDExIEBAIEV4ZWNJbml0 UmVjdXJzaXZlVW5pb24oUmVjdXJzaXZlVW5pb24gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0 ZShydXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlp bm5lclBsYW5TdGF0ZShydXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShpbm5lclBsYW4obm9kZSksIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gTlVMTDsKIAogCS8qCiAJICogSWYgaGFzaGluZywgcHJlY29tcHV0ZSBmbWdyIGxvb2t1cCBk YXRhIGZvciBpbm5lciBsb29wLCBhbmQgY3JlYXRlIHRoZQpAQCAtMjgwLDEyICsyODQsNiBAQCBF eGVjRW5kUmVjdXJzaXZlVW5pb24oUmVjdXJzaXZlVW5pb25TdGF0ZSAqbm9kZSkKIAkJTWVtb3J5 Q29udGV4dERlbGV0ZShub2RlLT50ZW1wQ29udGV4dCk7CiAJaWYgKG5vZGUtPnRhYmxlQ29udGV4 dCkKIAkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJsZUNvbnRleHQpOwotCi0JLyoKLQkg KiBjbG9zZSBkb3duIHN1YnBsYW5zCi0JICovCi0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUo bm9kZSkpOwotCUV4ZWNFbmROb2RlKGlubmVyUGxhblN0YXRlKG5vZGUpKTsKIH0KIAogLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCmluZGV4IDQyMTk3MTJkMzAuLjMzMGNhNjhk MTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKQEAgLTIwOCw2ICsyMDgsOCBAQCBFeGVj SW5pdFJlc3VsdChSZXN1bHQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAq IGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShyZXNzdGF0ZSkg PSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIHdl IGRvbid0IHVzZSBpbm5lciBwbGFuCkBAIC0yNDksMTEgKzI1MSw2IEBAIEV4ZWNFbmRSZXN1bHQo UmVzdWx0U3RhdGUgKm5vZGUpCiAJICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQogCSAqLwog CUV4ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0KLQkvKgotCSAq IHNodXQgZG93biBzdWJwbGFucwotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5v ZGUpKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNh bXBsZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKaW5kZXgg ZDdlMjJiMWRiYi4uMjIzNTdlN2EwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNhbXBsZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nh bi5jCkBAIC0xMjUsNiArMTI1LDggQEAgRXhlY0luaXRTYW1wbGVTY2FuKFNhbXBsZVNjYW4gKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlFeGVjT3BlblNjYW5SZWxhdGlvbihl c3RhdGUsCiAJCQkJCQkJIG5vZGUtPnNjYW4uc2NhbnJlbGlkLAogCQkJCQkJCSBlZmxhZ3MpOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyog d2Ugd29uJ3Qgc2V0IHVwIHRoZSBIZWFwU2NhbkRlc2MgdGlsbCBsYXRlciAqLwogCXNjYW5zdGF0 ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nh bi5jCmluZGV4IDRkYTBmMjhmN2IuLmIwYjM0Y2QxNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNl cXNjYW4uYwpAQCAtMTUzLDYgKzE1Myw4IEBAIEV4ZWNJbml0U2VxU2NhbihTZXFTY2FuICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0 YXRlLAogCQkJCQkJCSBub2RlLT5zY2FuLnNjYW5yZWxpZCwKIAkJCQkJCQkgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qIGFu ZCBjcmVhdGUgc2xvdCB3aXRoIHRoZSBhcHByb3ByaWF0ZSByb3d0eXBlICovCiAJRXhlY0luaXRT Y2FuVHVwbGVTbG90KGVzdGF0ZSwgJnNjYW5zdGF0ZS0+c3MsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRP cC5jCmluZGV4IDRiYzI0MDZiODkuLjkxMmNmN2IzN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXRPcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRP cC5jCkBAIC01MjgsNiArNTI4LDggQEAgRXhlY0luaXRTZXRPcChTZXRPcCAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKG5vZGUtPnN0cmF0ZWd5ID09IFNFVE9QX0hBU0hF RCkKIAkJZWZsYWdzICY9IH5FWEVDX0ZMQUdfUkVXSU5EOwogCW91dGVyUGxhblN0YXRlKHNldG9w c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCW91dGVy RGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKHNldG9wc3RhdGUpKTsKIAog CS8qCkBAIC01ODksOCArNTkxLDYgQEAgRXhlY0VuZFNldE9wKFNldE9wU3RhdGUgKm5vZGUpCiAJ aWYgKG5vZGUtPnRhYmxlQ29udGV4dCkKIAkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJs ZUNvbnRleHQpOwogCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnBzKTsKLQotCUV4ZWNFbmRO b2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwpp bmRleCBjNmM3MmM2ZTY3Li4xYmE1MzM3M2MyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKQEAg LTI2Myw2ICsyNjMsOCBAQCBFeGVjSW5pdFNvcnQoU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJZWZsYWdzICY9IH4oRVhFQ19GTEFHX1JFV0lORCB8IEVYRUNfRkxBR19C QUNLV0FSRCB8IEVYRUNfRkxBR19NQVJLKTsKIAogCW91dGVyUGxhblN0YXRlKHNvcnRzdGF0ZSkg PSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIElu aXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpAQCAtMzE3LDExICszMTksNiBAQCBFeGVjRW5k U29ydChTb3J0U3RhdGUgKm5vZGUpCiAJCXR1cGxlc29ydF9lbmQoKFR1cGxlc29ydHN0YXRlICop IG5vZGUtPnR1cGxlc29ydHN0YXRlKTsKIAlub2RlLT50dXBsZXNvcnRzdGF0ZSA9IE5VTEw7CiAK LQkvKgotCSAqIHNodXQgZG93biB0aGUgc3VicGxhbgotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVy UGxhblN0YXRlKG5vZGUpKTsKLQogCVNPMV9wcmludGYoIkV4ZWNFbmRTb3J0OiAlc1xuIiwKIAkJ CSAgICJzb3J0IG5vZGUgc2h1dGRvd24iKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJx dWVyeXNjYW4uYwppbmRleCA0MjQ3MWJmYzA0Li4xMjAxNDI1MGFlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCkBAIC0xMjQsNiArMTI0LDggQEAgRXhlY0luaXRTdWJx dWVyeVNjYW4oU3VicXVlcnlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkgKiBpbml0aWFsaXplIHN1YnF1ZXJ5CiAJICovCiAJc3VicXVlcnlzdGF0ZS0+c3VicGxhbiA9 IEV4ZWNJbml0Tm9kZShub2RlLT5zdWJwbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIEluaXRp YWxpemUgc2NhbiBzbG90IGFuZCB0eXBlIChuZWVkZWQgYnkgRXhlY0Fzc2lnblNjYW5Qcm9qZWN0 aW9uSW5mbykKQEAgLTE3OCwxMSArMTgwLDYgQEAgRXhlY0VuZFN1YnF1ZXJ5U2NhbihTdWJxdWVy eVNjYW5TdGF0ZSAqbm9kZSkKIAlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQog CQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwogCUV4ZWND bGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwotCi0JLyoKLQkgKiBjbG9zZSBk b3duIHN1YnF1ZXJ5Ci0JICovCi0JRXhlY0VuZE5vZGUobm9kZS0+c3VicGxhbik7CiB9CiAKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNj YW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwppbmRleCAyMTI0 YzU1ZWY1Li42MTNiMzc3YzdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl VGlkcmFuZ2VzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nh bi5jCkBAIC0zODYsNiArMzg2LDggQEAgRXhlY0luaXRUaWRSYW5nZVNjYW4oVGlkUmFuZ2VTY2Fu ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJl bGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0 YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCXRpZHJhbmdlc3RhdGUtPnNzLnNzX2N1 cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsKIAl0aWRyYW5nZXN0YXRlLT5zcy5zc19j dXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBubyB0YWJsZSBzY2FuIGhlcmUgKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlVGlkc2Nhbi5jCmluZGV4IDg2MmJkMDMzMGIuLjFiMGEyZDgwODMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwpAQCAtNTI5LDYgKzUyOSw4IEBAIEV4ZWNJbml0VGlkU2Nh bihUaWRTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRo ZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVs YXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCXRpZHN0YXRlLT5zcy5z c19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJdGlkc3RhdGUtPnNzLnNzX2N1 cnJlbnRTY2FuRGVzYyA9IE5VTEw7IC8qIG5vIGhlYXAgc2NhbiBoZXJlICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlVW5pcXVlLmMKaW5kZXggNDUwMzVkNzRmYS4uYmQ3MTAzMzYyMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVVbmlxdWUuYwpAQCAtMTM2LDYgKzEzNiw4IEBAIEV4ZWNJbml0VW5pcXVlKFVuaXF1 ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogdGhlbiBpbml0aWFsaXpl IG91dGVyIHBsYW4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZSh1bmlxdWVzdGF0ZSkgPSBFeGVjSW5p dE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUg cmVzdWx0IHNsb3QgYW5kIHR5cGUuIFVuaXF1ZSBub2RlcyBkbyBubyBwcm9qZWN0aW9ucywgc28K QEAgLTE3Miw4ICsxNzQsNiBAQCBFeGVjRW5kVW5pcXVlKFVuaXF1ZVN0YXRlICpub2RlKQogCUV4 ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CiAKIAlFeGVjRnJlZUV4 cHJDb250ZXh0KCZub2RlLT5wcyk7Ci0KLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2Rl KSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0Fn Zy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IDMxMGFjMjNl M2EuLjQ4M2YyM2RhMTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5k b3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAgLTI0 NTgsNiArMjQ1OCw4IEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUp OwogCW91dGVyUGxhblN0YXRlKHdpbnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gTlVMTDsKIAogCS8qCiAJICogaW5pdGlhbGl6ZSBzb3VyY2UgdHVwbGUgdHlwZSAod2hpY2gg aXMgYWxzbyB0aGUgdHVwbGUgdHlwZSB0aGF0IHdlJ2xsCkBAIC0yNjgxLDcgKzI2ODMsNiBAQCBF eGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogdm9pZAogRXhlY0VuZFdpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSkKIHsKLQlQ bGFuU3RhdGUgICpvdXRlclBsYW47CiAJaW50CQkJaTsKIAogCXJlbGVhc2VfcGFydGl0aW9uKG5v ZGUpOwpAQCAtMjcxMyw5ICsyNzE0LDYgQEAgRXhlY0VuZFdpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0 ZSAqbm9kZSkKIAogCXBmcmVlKG5vZGUtPnBlcmZ1bmMpOwogCXBmcmVlKG5vZGUtPnBlcmFnZyk7 Ci0KLQlvdXRlclBsYW4gPSBvdXRlclBsYW5TdGF0ZShub2RlKTsKLQlFeGVjRW5kTm9kZShvdXRl clBsYW4pOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCAzMzk3 NTY4N2IzLi4wN2IxZjQ1M2UyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGku YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAtNzEsNyArNzEsNyBAQCBzdGF0 aWMgaW50CV9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0 ZU9wdGlvbnMgKm9wdGlvbnMsCiBzdGF0aWMgUGFyYW1MaXN0SW5mbyBfU1BJX2NvbnZlcnRfcGFy YW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywKIAkJCQkJCQkJCQkgRGF0dW0gKlZhbHVlcywg Y29uc3QgY2hhciAqTnVsbHMpOwogCi1zdGF0aWMgaW50CV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpOworc3RhdGljIGlu dAlfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgdWludDY0IHRjb3VudCk7CiAKIHN0 YXRpYyB2b2lkIF9TUElfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIApAQCAtMTYyMyw2ICsx NjIzLDcgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBs YW5QdHIgcGxhbiwKIAlfU1BJX2N1cnJlbnQtPnByb2Nlc3NlZCA9IDA7CiAJX1NQSV9jdXJyZW50 LT50dXB0YWJsZSA9IE5VTEw7CiAKK3JlcGxhbjoKIAkvKiBDcmVhdGUgdGhlIHBvcnRhbCAqLwog CWlmIChuYW1lID09IE5VTEwgfHwgbmFtZVswXSA9PSAnXDAnKQogCXsKQEAgLTE3NjYsNyArMTc2 NywxMCBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxh blB0ciBwbGFuLAogCX0KIAogCS8qCi0JICogU3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4KKwkgKiBT dGFydCBwb3J0YWwgZXhlY3V0aW9uLiAgSWYgdGhlIHBvcnRhbCBjb250YWlucyBhIGNhY2hlZCBw bGFuLCBpdCBtdXN0CisJICogYmUgcmVjcmVhdGVkIGlmIHBvcnRhbC0+cGxhbl92YWxpZCBpcyBm YWxzZSB3aGljaCB0ZWxscyB0aGF0IHRoZSBjYWNoZWQKKwkgKiBwbGFuIHdhcyBmb3VuZCB0byBo YXZlIGJlZW4gaW52YWxpZGF0ZWQgd2hlbiBpbml0aWFsaXppbmcgb25lIG9mIHRoZQorCSAqIHBs YW4gdHJlZXMgY29udGFpbmVkIGluIGl0LgogCSAqLwogCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFy YW1MSSwgMCwgc25hcHNob3QpOwogCkBAIC0xNzc1LDYgKzE3NzksMTIgQEAgU1BJX2N1cnNvcl9v cGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkvKiBQb3Ag dGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KIAllcnJvcl9jb250ZXh0X3N0YWNrID0gc3BpZXJy Y29udGV4dC5wcmV2aW91czsKIAorCWlmICghcG9ydGFsLT5wbGFuX3ZhbGlkKQorCXsKKwkJUG9y dGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKwkJZ290byByZXBsYW47CisJfQorCiAJLyogUG9wIHRo ZSBTUEkgc3RhY2sgKi8KIAlfU1BJX2VuZF9jYWxsKHRydWUpOwogCkBAIC0yNTUyLDYgKzI1NjIs NyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVP cHRpb25zICpvcHRpb25zLAogCQkgKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgaW5jcmVtZW50IHBs YW4gcmVmY291bnQuICBJZiBpdCdzIGEgc2F2ZWQKIAkJICogcGxhbiwgdGhlIHJlZmNvdW50IG11 c3QgYmUgYmFja2VkIGJ5IHRoZSBwbGFuX293bmVyLgogCQkgKi8KK3JlcGxhbjoKIAkJY3BsYW4g PSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIG9wdGlvbnMtPnBhcmFtcywKIAkJCQkJCQkgIHBs YW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOwogCkBAIC0yNjYxLDYgKzI2NzIsNyBA QCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRp b25zICpvcHRpb25zLAogCQkJewogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCQkJCVNuYXBzaG90 CXNuYXA7CisJCQkJaW50CQkJZWZsYWdzOwogCiAJCQkJaWYgKEFjdGl2ZVNuYXBzaG90U2V0KCkp CiAJCQkJCXNuYXAgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOwpAQCAtMjY2OCwxNCArMjY4MCwzMiBA QCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRp b25zICpvcHRpb25zLAogCQkJCQlzbmFwID0gSW52YWxpZFNuYXBzaG90OwogCiAJCQkJcWRlc2Mg PSBDcmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJCQkJCQkJCQljcGxhbiwKIAkJCQkJCQkJCQlwbGFu c291cmNlLT5xdWVyeV9zdHJpbmcsCiAJCQkJCQkJCQkJc25hcCwgY3Jvc3NjaGVja19zbmFwc2hv dCwKIAkJCQkJCQkJCQlkZXN0LAogCQkJCQkJCQkJCW9wdGlvbnMtPnBhcmFtcywKIAkJCQkJCQkJ CQlfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAogCQkJCQkJCQkJCTApOwotCQkJCXJlcyA9IF9TUElf cHF1ZXJ5KHFkZXNjLCBmaXJlX3RyaWdnZXJzLAotCQkJCQkJCQkgIGNhblNldFRhZyA/IG9wdGlv bnMtPnRjb3VudCA6IDApOworCisJCQkJLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCisJ CQkJaWYgKGZpcmVfdHJpZ2dlcnMpCisJCQkJCWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVu LXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KKwkJCQllbHNlCisJCQkJCWVmbGFncyA9IEVYRUNfRkxB R19TS0lQX1RSSUdHRVJTOworCisJCQkJRXhlY3V0b3JTdGFydChxZGVzYywgZWZsYWdzKTsKKwkJ CQlpZiAoIXFkZXNjLT5wbGFuX3ZhbGlkKQorCQkJCXsKKwkJCQkJRXhlY3V0b3JGaW5pc2gocWRl c2MpOworCQkJCQlFeGVjdXRvckVuZChxZGVzYyk7CisJCQkJCUZyZWVRdWVyeURlc2MocWRlc2Mp OworCQkJCQlBc3NlcnQoY3BsYW4pOworCQkJCQlSZWxlYXNlQ2FjaGVkUGxhbihjcGxhbiwgcGxh bl9vd25lcik7CisJCQkJCWdvdG8gcmVwbGFuOworCQkJCX0KKworCQkJCXJlcyA9IF9TUElfcHF1 ZXJ5KHFkZXNjLCBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKIAkJCQlGcmVlUXVl cnlEZXNjKHFkZXNjKTsKIAkJCX0KIAkJCWVsc2UKQEAgLTI4NTAsMTAgKzI4ODAsOSBAQCBfU1BJ X2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywKIH0KIAogc3RhdGljIGlu dAotX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2Vycywg dWludDY0IHRjb3VudCkKK19TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCB1aW50NjQg dGNvdW50KQogewogCWludAkJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3BlcmF0aW9uOwotCWlu dAkJCWVmbGFnczsKIAlpbnQJCQlyZXM7CiAKIAlzd2l0Y2ggKG9wZXJhdGlvbikKQEAgLTI4OTcs MTQgKzI5MjYsNiBAQCBfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJl X3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQogCQlSZXNldFVzYWdlKCk7CiAjZW5kaWYKIAotCS8q IFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLwotCWlmIChmaXJlX3RyaWdnZXJzKQotCQllZmxh Z3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCi0JZWxzZQot CQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsKLQotCUV4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBlZmxhZ3MpOwotCiAJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2NhbkRp cmVjdGlvbiwgdGNvdW50LCB0cnVlKTsKIAogCV9TUElfY3VycmVudC0+cHJvY2Vzc2VkID0gcXVl cnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9sbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCmluZGV4 IGVlOWI4OWE2NzIuLmM4MDdlOWNkY2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9sbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwpAQCAtMjcs NiArMjcsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zaW52YWxhZHQuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgogCiAKIC8qCkBAIC0zNjQsNiArMzY1LDUwIEBAIENoZWNrUmVsYXRp b25Mb2NrZWRCeU1lKFJlbGF0aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCBv cnN0cm9uZ2VyKQogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqCQlDaGVja1JlbExvY2tlZEJ5 TWUKKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgY3VycmVudCB0cmFuc2FjdGlvbiBob2xkcyBhIGxv Y2sgb24gdGhlIGdpdmVuIHJlbGF0aW9uIG9mCisgKiBtb2RlICdsb2NrbW9kZScuICBJZiAnb3Jz dHJvbmdlcicgaXMgdHJ1ZSwgYSBzdHJvbmdlciBsb2NrbW9kZSBpcyBhbHNvIE9LLgorICogKCJT dHJvbmdlciIgaXMgZGVmaW5lZCBhcyAibnVtZXJpY2FsbHkgaGlnaGVyIiwgd2hpY2ggaXMgYSBi aXQKKyAqIHNlbWFudGljYWxseSBkdWJpb3VzIGJ1dCBpcyBPSyBmb3IgdGhlIHB1cnBvc2VzIHdl IHVzZSB0aGlzIGZvci4pCisgKi8KK2Jvb2wKK0NoZWNrUmVsTG9ja2VkQnlNZShPaWQgcmVsaWQs IExPQ0tNT0RFIGxvY2ttb2RlLCBib29sIG9yc3Ryb25nZXIpCit7CisJT2lkCQkJZGJJZCA9IGdl dF9yZWxfcmVsaXNzaGFyZWQocmVsaWQpID8gSW52YWxpZE9pZCA6IE15RGF0YWJhc2VJZDsKKwlM T0NLVEFHCQl0YWc7CisKKwlTRVRfTE9DS1RBR19SRUxBVElPTih0YWcsIGRiSWQsIHJlbGlkKTsK KworCWlmIChMb2NrSGVsZEJ5TWUoJnRhZywgbG9ja21vZGUpKQorCQlyZXR1cm4gdHJ1ZTsKKwor CWlmIChvcnN0cm9uZ2VyKQorCXsKKwkJTE9DS01PREUJc2xvY2ttb2RlOworCisJCWZvciAoc2xv Y2ttb2RlID0gbG9ja21vZGUgKyAxOworCQkJIHNsb2NrbW9kZSA8PSBNYXhMb2NrTW9kZTsKKwkJ CSBzbG9ja21vZGUrKykKKwkJeworCQkJaWYgKExvY2tIZWxkQnlNZSgmdGFnLCBzbG9ja21vZGUp KQorCQkJeworI2lmZGVmIE5PVF9VU0VECisJCQkJLyogU29tZXRpbWVzIHRoaXMgbWlnaHQgYmUg dXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMgKi8KKwkJCQllbG9nKFdBUk5JTkcsICJsb2Nr IG1vZGUgJXMgc3Vic3RpdHV0ZWQgZm9yICVzIG9uIHJlbGF0aW9uICVzIiwKKwkJCQkJIEdldExv Y2ttb2RlTmFtZSh0YWcubG9ja3RhZ19sb2NrbWV0aG9kaWQsIHNsb2NrbW9kZSksCisJCQkJCSBH ZXRMb2NrbW9kZU5hbWUodGFnLmxvY2t0YWdfbG9ja21ldGhvZGlkLCBsb2NrbW9kZSksCisJCQkJ CSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOworI2VuZGlmCisJCQkJcmV0dXJu IHRydWU7CisJCQl9CisJCX0KKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKgkJTG9j a0hhc1dhaXRlcnNSZWxhdGlvbgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9z dGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAwMWI2Y2MxZjdkLi40 OTMxZmIyZGE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIv c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0xMjMzLDYgKzEyMzMsNyBAQCBleGVjX3Np bXBsZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcpCiAJCSAqIFN0YXJ0IHRoZSBwb3J0 YWwuICBObyBwYXJhbWV0ZXJzIGhlcmUuCiAJCSAqLwogCQlQb3J0YWxTdGFydChwb3J0YWwsIE5V TEwsIDAsIEludmFsaWRTbmFwc2hvdCk7CisJCUFzc2VydChwb3J0YWwtPnBsYW5fdmFsaWQpOwog CiAJCS8qCiAJCSAqIFNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgb3V0cHV0IGZvcm1hdDogdGV4dCB1 bmxlc3Mgd2UgYXJlIGRvaW5nIGEKQEAgLTE3MzcsNiArMTczOCw3IEBAIGV4ZWNfYmluZF9tZXNz YWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkJCQkJCSJjb21tYW5kcyBpZ25vcmVkIHVu dGlsIGVuZCBvZiB0cmFuc2FjdGlvbiBibG9jayIpLAogCQkJCSBlcnJkZXRhaWxfYWJvcnQoKSkp OwogCityZXBsYW46CiAJLyoKIAkgKiBDcmVhdGUgdGhlIHBvcnRhbC4gIEFsbG93IHNpbGVudCBy ZXBsYWNlbWVudCBvZiBhbiBleGlzdGluZyBwb3J0YWwgb25seQogCSAqIGlmIHRoZSB1bm5hbWVk IHBvcnRhbCBpcyBzcGVjaWZpZWQuCkBAIC0yMDI4LDEwICsyMDMwLDE5IEBAIGV4ZWNfYmluZF9t ZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsK IAogCS8qCi0JICogQW5kIHdlJ3JlIHJlYWR5IHRvIHN0YXJ0IHBvcnRhbCBleGVjdXRpb24uCisJ ICogU3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4gIElmIHRoZSBwb3J0YWwgY29udGFpbnMgYSBjYWNo ZWQgcGxhbiwgaXQgbXVzdAorCSAqIGJlIHJlY3JlYXRlZCBpZiBwb3J0YWwtPnBsYW5fdmFsaWQg aXMgZmFsc2Ugd2hpY2ggdGVsbHMgdGhhdCB0aGUgY2FjaGVkCisJICogcGxhbiB3YXMgZm91bmQg dG8gaGF2ZSBiZWVuIGludmFsaWRhdGVkIHdoZW4gaW5pdGlhbGl6aW5nIG9uZSBvZiB0aGUKKwkg KiBwbGFuIHRyZWVzIGNvbnRhaW5lZCBpbiBpdC4KIAkgKi8KIAlQb3J0YWxTdGFydChwb3J0YWws IHBhcmFtcywgMCwgSW52YWxpZFNuYXBzaG90KTsKIAorCWlmICghcG9ydGFsLT5wbGFuX3ZhbGlk KQorCXsKKwkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKwkJZ290byByZXBsYW47CisJfQor CiAJLyoKIAkgKiBBcHBseSB0aGUgcmVzdWx0IGZvcm1hdCByZXF1ZXN0cyB0byB0aGUgcG9ydGFs LgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNr ZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggNTU2NWYyMDBjMy4uZGFiOTcxYWIwZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVy eS5jCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL3ByZXBhcmUuaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5oIgog I2luY2x1ZGUgImV4ZWN1dG9yL3RzdG9yZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAicGdfdHJhY2UuaCIKQEAgLTM1LDEyICszNiw2IEBACiBQb3J0YWwJCUFj dGl2ZVBvcnRhbCA9IE5VTEw7CiAKIAotc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRT dG10ICpwbGFuLAotCQkJCQkJIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCi0JCQkJCQkgUGFyYW1M aXN0SW5mbyBwYXJhbXMsCi0JCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCi0JCQkJ CQkgRGVzdFJlY2VpdmVyICpkZXN0LAotCQkJCQkJIFF1ZXJ5Q29tcGxldGlvbiAqcWMpOwogc3Rh dGljIHZvaWQgRmlsbFBvcnRhbFN0b3JlKFBvcnRhbCBwb3J0YWwsIGJvb2wgaXNUb3BMZXZlbCk7 CiBzdGF0aWMgdWludDY0IFJ1bkZyb21TdG9yZShQb3J0YWwgcG9ydGFsLCBTY2FuRGlyZWN0aW9u IGRpcmVjdGlvbiwgdWludDY0IGNvdW50LAogCQkJCQkJICAgRGVzdFJlY2VpdmVyICpkZXN0KTsK QEAgLTY1LDYgKzYwLDcgQEAgc3RhdGljIHZvaWQgRG9Qb3J0YWxSZXdpbmQoUG9ydGFsIHBvcnRh bCk7CiAgKi8KIFF1ZXJ5RGVzYyAqCiBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5u ZWRzdG10LAorCQkJCUNhY2hlZFBsYW4gKmNwbGFuLAogCQkJCWNvbnN0IGNoYXIgKnNvdXJjZVRl eHQsCiAJCQkJU25hcHNob3Qgc25hcHNob3QsCiAJCQkJU25hcHNob3QgY3Jvc3NjaGVja19zbmFw c2hvdCwKQEAgLTc3LDYgKzczLDcgQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFu bmVkc3RtdCwKIAogCXFkLT5vcGVyYXRpb24gPSBwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGU7CS8q IG9wZXJhdGlvbiAqLwogCXFkLT5wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwkvKiBwbGFuICov CisJcWQtPmNwbGFuID0gY3BsYW47CQkJCS8qIENhY2hlZFBsYW4sIGlmIHBsYW4gaXMgZnJvbSBv bmUgKi8KIAlxZC0+c291cmNlVGV4dCA9IHNvdXJjZVRleHQ7CS8qIHF1ZXJ5IHRleHQgKi8KIAlx ZC0+c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsJLyogc25hcHNob3QgKi8K IAkvKiBSSSBjaGVjayBzbmFwc2hvdCAqLwpAQCAtMTE2LDg2ICsxMTMsNiBAQCBGcmVlUXVlcnlE ZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiB9CiAKIAotLyoKLSAqIFByb2Nlc3NRdWVyeQotICoJCUV4 ZWN1dGUgYSBzaW5nbGUgcGxhbm5hYmxlIHF1ZXJ5IHdpdGhpbiBhIFBPUlRBTF9NVUxUSV9RVUVS WSwKLSAqCQlQT1JUQUxfT05FX1JFVFVSTklORywgb3IgUE9SVEFMX09ORV9NT0RfV0lUSCBwb3J0 YWwKLSAqCi0gKglwbGFuOiB0aGUgcGxhbiB0cmVlIGZvciB0aGUgcXVlcnkKLSAqCXNvdXJjZVRl eHQ6IHRoZSBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkKLSAqCXBhcmFtczogYW55IHBhcmFtZXRl cnMgbmVlZGVkCi0gKglkZXN0OiB3aGVyZSB0byBzZW5kIHJlc3VsdHMKLSAqCXFjOiB3aGVyZSB0 byBzdG9yZSB0aGUgY29tbWFuZCBjb21wbGV0aW9uIHN0YXR1cyBkYXRhLgotICoKLSAqIHFjIG1h eSBiZSBOVUxMIGlmIGNhbGxlciBkb2Vzbid0IHdhbnQgYSBzdGF0dXMgc3RyaW5nLgotICoKLSAq IE11c3QgYmUgY2FsbGVkIGluIGEgbWVtb3J5IGNvbnRleHQgdGhhdCB3aWxsIGJlIHJlc2V0IG9y IGRlbGV0ZWQgb24KLSAqIGVycm9yOyBvdGhlcndpc2UgdGhlIGV4ZWN1dG9yJ3MgbWVtb3J5IHVz YWdlIHdpbGwgYmUgbGVha2VkLgotICovCi1zdGF0aWMgdm9pZAotUHJvY2Vzc1F1ZXJ5KFBsYW5u ZWRTdG10ICpwbGFuLAotCQkJIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCi0JCQkgUGFyYW1MaXN0 SW5mbyBwYXJhbXMsCi0JCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCi0JCQkgRGVzdFJl Y2VpdmVyICpkZXN0LAotCQkJIFF1ZXJ5Q29tcGxldGlvbiAqcWMpCi17Ci0JUXVlcnlEZXNjICAq cXVlcnlEZXNjOwotCi0JLyoKLQkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYyBvYmplY3QKLQkgKi8K LQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgc291cmNlVGV4dCwKLQkJCQkJCQkJ R2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAotCQkJCQkJCQlkZXN0LCBwYXJh bXMsIHF1ZXJ5RW52LCAwKTsKLQotCS8qCi0JICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBh cmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgotCSAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNj LCAwKTsKLQotCS8qCi0JICogUnVuIHRoZSBwbGFuIHRvIGNvbXBsZXRpb24uCi0JICovCi0JRXhl Y3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMCwgdHJ1ZSk7Ci0KLQkv KgotCSAqIEJ1aWxkIGNvbW1hbmQgY29tcGxldGlvbiBzdGF0dXMgZGF0YSwgaWYgY2FsbGVyIHdh bnRzIG9uZS4KLQkgKi8KLQlpZiAocWMpCi0JewotCQlzd2l0Y2ggKHF1ZXJ5RGVzYy0+b3BlcmF0 aW9uKQotCQl7Ci0JCQljYXNlIENNRF9TRUxFQ1Q6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFj LCBDTURUQUdfU0VMRUNULCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQli cmVhazsKLQkJCWNhc2UgQ01EX0lOU0VSVDoKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENN RFRBR19JTlNFUlQsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFr OwotCQkJY2FzZSBDTURfVVBEQVRFOgotCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFH X1VQREFURSwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0J CQljYXNlIENNRF9ERUxFVEU6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfREVM RVRFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNh c2UgQ01EX01FUkdFOgotCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX01FUkdFLCBx dWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6 Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfVU5LTk9XTiwgcXVlcnlEZXNjLT5l c3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIE5v dywgd2UgY2xvc2UgZG93biBhbGwgdGhlIHNjYW5zIGFuZCBmcmVlIGFsbG9jYXRlZCByZXNvdXJj ZXMuCi0JICovCi0JRXhlY3V0b3JGaW5pc2gocXVlcnlEZXNjKTsKLQlFeGVjdXRvckVuZChxdWVy eURlc2MpOwotCi0JRnJlZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOwotfQotCiAvKgogICogQ2hvb3Nl UG9ydGFsU3RyYXRlZ3kKICAqCQlTZWxlY3QgcG9ydGFsIGV4ZWN1dGlvbiBzdHJhdGVneSBnaXZl biB0aGUgaW50ZW5kZWQgc3RhdGVtZW50IGxpc3QuCkBAIC00MjcsNyArMzQ0LDggQEAgRmV0Y2hT dGF0ZW1lbnRUYXJnZXRMaXN0KE5vZGUgKnN0bXQpCiAgKiB0byBiZSB1c2VkIGZvciBjdXJzb3Jz KS4KICAqCiAgKiBPbiByZXR1cm4sIHBvcnRhbCBpcyByZWFkeSB0byBhY2NlcHQgUG9ydGFsUnVu KCkgY2FsbHMsIGFuZCB0aGUgcmVzdWx0Ci0gKiB0dXBkZXNjIChpZiBhbnkpIGlzIGtub3duLgor ICogdHVwZGVzYyAoaWYgYW55KSBpcyBrbm93biwgdW5sZXNzIHBvcnRhbC0+cGxhbl92YWxpZCBp cyBzZXQgdG8gZmFsc2UsIGluCisgKiB3aGljaCBjYXNlLCB0aGUgY2FsbGVyIG11c3QgcmV0cnkg YWZ0ZXIgZ2VuZXJhdGluZyBhIG5ldyBDYWNoZWRQbGFuLgogICovCiB2b2lkCiBQb3J0YWxTdGFy dChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKQEAgLTQzNSwxMCArMzUzLDkg QEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiB7CiAJ UG9ydGFsCQlzYXZlQWN0aXZlUG9ydGFsOwogCVJlc291cmNlT3duZXIgc2F2ZVJlc291cmNlT3du ZXI7Ci0JTWVtb3J5Q29udGV4dCBzYXZlUG9ydGFsQ29udGV4dDsKIAlNZW1vcnlDb250ZXh0IG9s ZENvbnRleHQ7CiAJUXVlcnlEZXNjICAqcXVlcnlEZXNjOwotCWludAkJCW15ZWZsYWdzOworCWlu dAkJCW15ZWZsYWdzID0gMDsKIAogCUFzc2VydChQb3J0YWxJc1ZhbGlkKHBvcnRhbCkpOwogCUFz c2VydChwb3J0YWwtPnN0YXR1cyA9PSBQT1JUQUxfREVGSU5FRCk7CkBAIC00NDgsMTUgKzM2NSwx MyBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkg Ki8KIAlzYXZlQWN0aXZlUG9ydGFsID0gQWN0aXZlUG9ydGFsOwogCXNhdmVSZXNvdXJjZU93bmVy ID0gQ3VycmVudFJlc291cmNlT3duZXI7Ci0Jc2F2ZVBvcnRhbENvbnRleHQgPSBQb3J0YWxDb250 ZXh0OwogCVBHX1RSWSgpOwogCXsKIAkJQWN0aXZlUG9ydGFsID0gcG9ydGFsOwogCQlpZiAocG9y dGFsLT5yZXNvd25lcikKIAkJCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gcG9ydGFsLT5yZXNvd25l cjsKLQkJUG9ydGFsQ29udGV4dCA9IHBvcnRhbC0+cG9ydGFsQ29udGV4dDsKIAotCQlvbGRDb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFBvcnRhbENvbnRleHQpOworCQlvbGRDb250ZXh0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBvcnRhbC0+cXVlcnlDb250ZXh0KTsKIAogCQkvKiBN dXN0IHJlbWVtYmVyIHBvcnRhbCBwYXJhbSBsaXN0LCBpZiBhbnkgKi8KIAkJcG9ydGFsLT5wb3J0 YWxQYXJhbXMgPSBwYXJhbXM7CkBAIC00NzIsNiArMzg3LDggQEAgUG9ydGFsU3RhcnQoUG9ydGFs IHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCXN3aXRjaCAocG9ydGFsLT5zdHJhdGVn eSkKIAkJewogCQkJY2FzZSBQT1JUQUxfT05FX1NFTEVDVDoKKwkJCWNhc2UgUE9SVEFMX09ORV9S RVRVUk5JTkc6CisJCQljYXNlIFBPUlRBTF9PTkVfTU9EX1dJVEg6CiAKIAkJCQkvKiBNdXN0IHNl dCBzbmFwc2hvdCBiZWZvcmUgc3RhcnRpbmcgZXhlY3V0b3IuICovCiAJCQkJaWYgKHNuYXBzaG90 KQpAQCAtNDkzLDYgKzQxMCw3IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlz dEluZm8gcGFyYW1zLAogCQkJCSAqIHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkg Ki8KIAkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVk U3RtdCwgcG9ydGFsLT5zdG10cyksCisJCQkJCQkJCQkJCXBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJ CQkJCXBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwK IAkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LApAQCAtNTAxLDMwICs0MTksNTIgQEAgUG9ydGFs U3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkJCQkJCXBv cnRhbC0+cXVlcnlFbnYsCiAJCQkJCQkJCQkJCTApOwogCisJCQkJLyogUmVtZW1iZXIgZm9yIFBv cnRhbFJ1bk11bHRpKCkuICovCisJCQkJaWYgKHBvcnRhbC0+c3RyYXRlZ3kgPT0gUE9SVEFMX09O RV9SRVRVUk5JTkcgfHwKKwkJCQkJcG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX01PRF9X SVRIKQorCQkJCQlwb3J0YWwtPnFkZXNjcyA9IGxpc3RfbWFrZTEocXVlcnlEZXNjKTsKKwogCQkJ CS8qCiAJCQkJICogSWYgaXQncyBhIHNjcm9sbGFibGUgY3Vyc29yLCBleGVjdXRvciBuZWVkcyB0 byBzdXBwb3J0CiAJCQkJICogUkVXSU5EIGFuZCBiYWNrd2FyZHMgc2NhbiwgYXMgd2VsbCBhcyB3 aGF0ZXZlciB0aGUgY2FsbGVyCiAJCQkJICogbWlnaHQndmUgYXNrZWQgZm9yLgogCQkJCSAqLwot CQkJCWlmIChwb3J0YWwtPmN1cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1NDUk9MTCkKKwkJCQlp ZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1NFTEVDVCAmJgorCQkJCQkocG9ydGFs LT5jdXJzb3JPcHRpb25zICYgQ1VSU09SX09QVF9TQ1JPTEwpKQogCQkJCQlteWVmbGFncyA9IGVm bGFncyB8IEVYRUNfRkxBR19SRVdJTkQgfCBFWEVDX0ZMQUdfQkFDS1dBUkQ7CiAJCQkJZWxzZQog CQkJCQlteWVmbGFncyA9IGVmbGFnczsKIAogCQkJCS8qCi0JCQkJICogQ2FsbCBFeGVjdXRvclN0 YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgorCQkJCSAqIENhbGwgRXhlY3V0 b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24uICBBCisJCQkJICogY2Fj aGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRlZCBhcyB3ZSdyZSBkb2luZyB0aGF0LgogCQkJCSAq LwogCQkJCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBteWVmbGFncyk7CisJCQkJaWYgKCFxdWVy eURlc2MtPnBsYW5fdmFsaWQpCisJCQkJeworCQkJCQlBc3NlcnQocXVlcnlEZXNjLT5jcGxhbik7 CisJCQkJCVBvcnRhbFF1ZXJ5RmluaXNoKHF1ZXJ5RGVzYyk7CisJCQkJCVBvcEFjdGl2ZVNuYXBz aG90KCk7CisJCQkJCXBvcnRhbC0+cGxhbl92YWxpZCA9IGZhbHNlOworCQkJCQlnb3RvIGVhcmx5 X2V4aXQ7CisJCQkJfQogCiAJCQkJLyoKLQkJCQkgKiBUaGlzIHRlbGxzIFBvcnRhbENsZWFudXAg dG8gc2h1dCBkb3duIHRoZSBleGVjdXRvcgorCQkJCSAqIFRoaXMgdGVsbHMgUG9ydGFsQ2xlYW51 cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9yLCB0aG91Z2gKKwkJCQkgKiBub3QgbmVlZGVkIGZv ciBxdWVyaWVzIGhhbmRsZWQgYnkgUG9ydGFsUnVuTXVsdGkoKS4KIAkJCQkgKi8KLQkJCQlwb3J0 YWwtPnF1ZXJ5RGVzYyA9IHF1ZXJ5RGVzYzsKKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQ T1JUQUxfT05FX1NFTEVDVCkKKwkJCQkJcG9ydGFsLT5xdWVyeURlc2MgPSBxdWVyeURlc2M7CiAK IAkJCQkvKgotCQkJCSAqIFJlbWVtYmVyIHR1cGxlIGRlc2NyaXB0b3IgKGNvbXB1dGVkIGJ5IEV4 ZWN1dG9yU3RhcnQpCisJCQkJICogUmVtZW1iZXIgdHVwbGUgZGVzY3JpcHRvciAoY29tcHV0ZWQg YnkgRXhlY3V0b3JTdGFydCksCisJCQkJICogdGhvdWdoIG1ha2UgaXQgaW5kZXBlbmRlbnQgb2Yg UXVlcnlEZXNjIGZvciBxdWVyaWVzIGhhbmRsZWQKKwkJCQkgKiBieSBQb3J0YWxSdW5NdWx0aSgp LgogCQkJCSAqLwotCQkJCXBvcnRhbC0+dHVwRGVzYyA9IHF1ZXJ5RGVzYy0+dHVwRGVzYzsKKwkJ CQlpZiAocG9ydGFsLT5zdHJhdGVneSAhPSBQT1JUQUxfT05FX1NFTEVDVCkKKwkJCQkJcG9ydGFs LT50dXBEZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weShxdWVyeURlc2MtPnR1cERlc2MpOworCQkJ CWVsc2UKKwkJCQkJcG9ydGFsLT50dXBEZXNjID0gcXVlcnlEZXNjLT50dXBEZXNjOwogCiAJCQkJ LyoKIAkJCQkgKiBSZXNldCBjdXJzb3IgcG9zaXRpb24gZGF0YSB0byAic3RhcnQgb2YgcXVlcnki CkBAIC01MzIsMzMgKzQ3MiwxMSBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxp c3RJbmZvIHBhcmFtcywKIAkJCQlwb3J0YWwtPmF0U3RhcnQgPSB0cnVlOwogCQkJCXBvcnRhbC0+ YXRFbmQgPSBmYWxzZTsJLyogYWxsb3cgZmV0Y2hlcyAqLwogCQkJCXBvcnRhbC0+cG9ydGFsUG9z ID0gMDsKKwkJCQlwb3J0YWwtPnBsYW5fdmFsaWQgPSB0cnVlOwogCiAJCQkJUG9wQWN0aXZlU25h cHNob3QoKTsKIAkJCQlicmVhazsKIAotCQkJY2FzZSBQT1JUQUxfT05FX1JFVFVSTklORzoKLQkJ CWNhc2UgUE9SVEFMX09ORV9NT0RfV0lUSDoKLQotCQkJCS8qCi0JCQkJICogV2UgZG9uJ3Qgc3Rh cnQgdGhlIGV4ZWN1dG9yIHVudGlsIHdlIGFyZSB0b2xkIHRvIHJ1biB0aGUKLQkJCQkgKiBwb3J0 YWwuICBXZSBkbyBuZWVkIHRvIHNldCB1cCB0aGUgcmVzdWx0IHR1cGRlc2MuCi0JCQkJICovCi0J CQkJewotCQkJCQlQbGFubmVkU3RtdCAqcHN0bXQ7Ci0KLQkJCQkJcHN0bXQgPSBQb3J0YWxHZXRQ cmltYXJ5U3RtdChwb3J0YWwpOwotCQkJCQlwb3J0YWwtPnR1cERlc2MgPQotCQkJCQkJRXhlY0Ns ZWFuVHlwZUZyb21UTChwc3RtdC0+cGxhblRyZWUtPnRhcmdldGxpc3QpOwotCQkJCX0KLQotCQkJ CS8qCi0JCQkJICogUmVzZXQgY3Vyc29yIHBvc2l0aW9uIGRhdGEgdG8gInN0YXJ0IG9mIHF1ZXJ5 IgotCQkJCSAqLwotCQkJCXBvcnRhbC0+YXRTdGFydCA9IHRydWU7Ci0JCQkJcG9ydGFsLT5hdEVu ZCA9IGZhbHNlOwkvKiBhbGxvdyBmZXRjaGVzICovCi0JCQkJcG9ydGFsLT5wb3J0YWxQb3MgPSAw OwotCQkJCWJyZWFrOwotCiAJCQljYXNlIFBPUlRBTF9VVElMX1NFTEVDVDoKIAogCQkJCS8qCkBA IC01NzgsMTEgKzQ5Niw4NyBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJ bmZvIHBhcmFtcywKIAkJCQlwb3J0YWwtPmF0U3RhcnQgPSB0cnVlOwogCQkJCXBvcnRhbC0+YXRF bmQgPSBmYWxzZTsJLyogYWxsb3cgZmV0Y2hlcyAqLwogCQkJCXBvcnRhbC0+cG9ydGFsUG9zID0g MDsKKwkJCQlwb3J0YWwtPnBsYW5fdmFsaWQgPSB0cnVlOwogCQkJCWJyZWFrOwogCiAJCQljYXNl IFBPUlRBTF9NVUxUSV9RVUVSWToKLQkJCQkvKiBOZWVkIGRvIG5vdGhpbmcgbm93ICovCisJCQkJ eworCQkJCQlMaXN0Q2VsbCAgICpsYzsKKwkJCQkJYm9vbAkJZmlyc3QgPSB0cnVlOworCisJCQkJ CW15ZWZsYWdzID0gZWZsYWdzOworCQkJCQlmb3JlYWNoKGxjLCBwb3J0YWwtPnN0bXRzKQorCQkJ CQl7CisJCQkJCQlQbGFubmVkU3RtdCAqcGxhbiA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBs Yyk7CisJCQkJCQlib29sCQlpc191dGlsaXR5ID0gKHBsYW4tPnV0aWxpdHlTdG10ICE9IE5VTEwp OworCisJCQkJCQkvKgorCQkJCQkJICogUHVzaCB0aGUgc25hcHNob3QgdG8gYmUgdXNlZCBieSB0 aGUgZXhlY3V0b3IuCisJCQkJCQkgKi8KKwkJCQkJCWlmICghaXNfdXRpbGl0eSkKKwkJCQkJCXsK KwkJCQkJCQkvKgorCQkJCQkJCSAqIE11c3QgY29weSB0aGUgc25hcHNob3QgZm9yIGFsbCBzdGF0 ZW1lbnRzCisJCQkJCQkJICogZXhjZXB0IHRoZWMgZmlyc3QgYXMgd2UnbGwgbmVlZCB0byB1cGRh dGUgaXRzCisJCQkJCQkJICogY29tbWFuZCBJRC4KKwkJCQkJCQkgKi8KKwkJCQkJCQlpZiAoIWZp cnN0KQorCQkJCQkJCQlQdXNoQ29waWVkU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgp KTsKKwkJCQkJCQllbHNlCisJCQkJCQkJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOworCQkJCQkJfQorCisJCQkJCQkvKgorCQkJCQkJICogRnJvbSB0aGUgMm5k IHN0YXRlbWVudCBvbndhcmRzLCB1cGRhdGUgdGhlIGNvbW1hbmQKKwkJCQkJCSAqIElEIGFuZCB0 aGUgc25hcHNob3QgdG8gbWF0Y2guCisJCQkJCQkgKi8KKwkJCQkJCWlmICghZmlyc3QpCisJCQkJ CQl7CisJCQkJCQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwkJCQkJCQlVcGRhdGVBY3Rp dmVTbmFwc2hvdENvbW1hbmRJZCgpOworCQkJCQkJfQorCisJCQkJCQlmaXJzdCA9IGZhbHNlOwor CisJCQkJCQkvKgorCQkJCQkJICogQ3JlYXRlIHRoZSBRdWVyeURlc2Mgb2JqZWN0LiAgRGVzdFJl Y2VpdmVyIHdpbGwKKwkJCQkJCSAqIGJlIHNldCBpbiBQb3J0YWxSdW5NdWx0aSgpLgorCQkJCQkJ ICovCisJCQkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcG9ydGFsLT5jcGxh biwKKwkJCQkJCQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRleHQsCisJCQkJCQkJCQkJCQkJIWlzX3V0 aWxpdHkgPworCQkJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCkgOgorCQkJCQkJCQkJCQkJ CUludmFsaWRTbmFwc2hvdCwKKwkJCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCisJCQkJCQkJ CQkJCQkJTlVMTCwKKwkJCQkJCQkJCQkJCQlwYXJhbXMsCisJCQkJCQkJCQkJCQkJcG9ydGFsLT5x dWVyeUVudiwgMCk7CisKKwkJCQkJCS8qIFJlbWVtYmVyIGZvciBQb3J0YWxSdW5NdWx0aSgpICov CisJCQkJCQlwb3J0YWwtPnFkZXNjcyA9IGxhcHBlbmQocG9ydGFsLT5xZGVzY3MsIHF1ZXJ5RGVz Yyk7CisKKwkJCQkJCWlmIChpc191dGlsaXR5KQorCQkJCQkJCWNvbnRpbnVlOworCisJCQkJCQkv KgorCQkJCQkJICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yCisJ CQkJCQkgKiBleGVjdXRpb24uICBBIGNhY2hlZCBwbGFuIG1heSBnZXQgaW52YWxpZGF0ZWQgYXMK KwkJCQkJCSAqIHdlJ3JlIGRvaW5nIHRoYXQuCisJCQkJCQkgKi8KKwkJCQkJCUV4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCBteWVmbGFncyk7CisJCQkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQkJ CQkJaWYgKCFxdWVyeURlc2MtPnBsYW5fdmFsaWQpCisJCQkJCQl7CisJCQkJCQkJQXNzZXJ0KHF1 ZXJ5RGVzYy0+Y3BsYW4pOworCQkJCQkJCVBvcnRhbFF1ZXJ5RmluaXNoKHF1ZXJ5RGVzYyk7CisJ CQkJCQkJcG9ydGFsLT5wbGFuX3ZhbGlkID0gZmFsc2U7CisJCQkJCQkJZ290byBlYXJseV9leGl0 OworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCiAJCQkJcG9ydGFsLT50dXBEZXNjID0gTlVMTDsK KwkJCQlwb3J0YWwtPnBsYW5fdmFsaWQgPSB0cnVlOwogCQkJCWJyZWFrOwogCQl9CiAJfQpAQCAt NTk0LDE5ICs1ODgsMTggQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5m byBwYXJhbXMsCiAJCS8qIFJlc3RvcmUgZ2xvYmFsIHZhcnMgYW5kIHByb3BhZ2F0ZSBlcnJvciAq LwogCQlBY3RpdmVQb3J0YWwgPSBzYXZlQWN0aXZlUG9ydGFsOwogCQlDdXJyZW50UmVzb3VyY2VP d25lciA9IHNhdmVSZXNvdXJjZU93bmVyOwotCQlQb3J0YWxDb250ZXh0ID0gc2F2ZVBvcnRhbENv bnRleHQ7CiAKIAkJUEdfUkVfVEhST1coKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogCisJcG9ydGFs LT5zdGF0dXMgPSBQT1JUQUxfUkVBRFk7CisKK2Vhcmx5X2V4aXQ6CiAJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZENvbnRleHQpOwogCiAJQWN0aXZlUG9ydGFsID0gc2F2ZUFjdGl2ZVBvcnRhbDsK IAlDdXJyZW50UmVzb3VyY2VPd25lciA9IHNhdmVSZXNvdXJjZU93bmVyOwotCVBvcnRhbENvbnRl eHQgPSBzYXZlUG9ydGFsQ29udGV4dDsKLQotCXBvcnRhbC0+c3RhdHVzID0gUE9SVEFMX1JFQURZ OwogfQogCiAvKgpAQCAtMTE5Myw3ICsxMTg2LDcgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBv cnRhbCwKIAkJCSAgIFF1ZXJ5Q29tcGxldGlvbiAqcWMpCiB7CiAJYm9vbAkJYWN0aXZlX3NuYXBz aG90X3NldCA9IGZhbHNlOwotCUxpc3RDZWxsICAgKnN0bXRsaXN0X2l0ZW07CisJTGlzdENlbGwg ICAqcWRlc2NfaXRlbTsKIAogCS8qCiAJICogSWYgdGhlIGRlc3RpbmF0aW9uIGlzIERlc3RSZW1v dGVFeGVjdXRlLCBjaGFuZ2UgdG8gRGVzdE5vbmUuICBUaGUKQEAgLTEyMTQsOSArMTIwNywxMCBA QCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCSAqIExvb3AgdG8gaGFuZGxlIHRoZSBp bmRpdmlkdWFsIHF1ZXJpZXMgZ2VuZXJhdGVkIGZyb20gYSBzaW5nbGUgcGFyc2V0cmVlCiAJICog YnkgYW5hbHlzaXMgYW5kIHJld3JpdGUuCiAJICovCi0JZm9yZWFjaChzdG10bGlzdF9pdGVtLCBw b3J0YWwtPnN0bXRzKQorCWZvcmVhY2gocWRlc2NfaXRlbSwgcG9ydGFsLT5xZGVzY3MpCiAJewot CQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgc3RtdGxpc3Rf aXRlbSk7CisJCVF1ZXJ5RGVzYyAqcWRlc2MgPSAoUXVlcnlEZXNjICopIGxmaXJzdChxZGVzY19p dGVtKTsKKwkJUGxhbm5lZFN0bXQgKnBzdG10ID0gcWRlc2MtPnBsYW5uZWRzdG10OwogCiAJCS8q CiAJCSAqIElmIHdlIGdvdCBhIGNhbmNlbCBzaWduYWwgaW4gcHJpb3IgY29tbWFuZCwgcXVpdApA QCAtMTIzMywzMyArMTIyNywyNiBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJ aWYgKGxvZ19leGVjdXRvcl9zdGF0cykKIAkJCQlSZXNldFVzYWdlKCk7CiAKLQkJCS8qCi0JCQkg KiBNdXN0IGFsd2F5cyBoYXZlIGEgc25hcHNob3QgZm9yIHBsYW5uYWJsZSBxdWVyaWVzLiAgRmly c3QgdGltZQotCQkJICogdGhyb3VnaCwgdGFrZSBhIG5ldyBzbmFwc2hvdDsgZm9yIHN1YnNlcXVl bnQgcXVlcmllcyBpbiB0aGUKLQkJCSAqIHNhbWUgcG9ydGFsLCBqdXN0IHVwZGF0ZSB0aGUgc25h cHNob3QncyBjb3B5IG9mIHRoZSBjb21tYW5kCi0JCQkgKiBjb3VudGVyLgotCQkJICovCisJCQkv KiBQdXNoIHRoZSBzbmFwc2hvdCBmb3IgcGxhbm5hYmxlIHF1ZXJpZXMuICovCiAJCQlpZiAoIWFj dGl2ZV9zbmFwc2hvdF9zZXQpCiAJCQl7Ci0JCQkJU25hcHNob3QJc25hcHNob3QgPSBHZXRUcmFu c2FjdGlvblNuYXBzaG90KCk7CisJCQkJU25hcHNob3QJc25hcHNob3QgPSBxZGVzYy0+c25hcHNo b3Q7CiAKLQkJCQkvKiBJZiB0b2xkIHRvLCByZWdpc3RlciB0aGUgc25hcHNob3QgYW5kIHNhdmUg aW4gcG9ydGFsICovCisJCQkJLyoKKwkJCQkgKiBJZiB0b2xkIHRvLCByZWdpc3RlciB0aGUgc25h cHNob3QgYW5kIHNhdmUgaW4gcG9ydGFsCisJCQkJICoKKwkJCQkgKiBOb3RlIHRoYXQgdGhlIGNv bW1hbmQgSUQgb2YgcWRlc2MtPnNuYXBzaG90IGZvciAybmQgcXVlcnkKKwkJCQkgKiBvbndhcmRz IHdvdWxkIGhhdmUgYmVlbiB1cGRhdGVkIGluIFBvcnRhbFN0YXJ0KCkgdG8gYWNjb3VudAorCQkJ CSAqIGZvciBDQ0koKSBkb25lIGJldHdlZW4gcXVlcmllcywgYnV0IGl0J3MgT0sgdGhhdCBoZXJl IHdlCisJCQkJICogZG9uJ3QgbGlrZXdpc2UgdXBkYXRlIGhvbGRTbmFwc2hvdCdzIGNvbW1hbmQg SUQuCisJCQkJICovCiAJCQkJaWYgKHNldEhvbGRTbmFwc2hvdCkKIAkJCQl7CiAJCQkJCXNuYXBz aG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCQkJCXBvcnRhbC0+aG9sZFNuYXBz aG90ID0gc25hcHNob3Q7CiAJCQkJfQogCi0JCQkJLyoKLQkJCQkgKiBXZSBjYW4ndCBoYXZlIHRo ZSBob2xkU25hcHNob3QgYWxzbyBiZSB0aGUgYWN0aXZlIG9uZSwKLQkJCQkgKiBiZWNhdXNlIFVw ZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkIHdvdWxkIGNvbXBsYWluLiAgU28KLQkJCQkgKiBm b3JjZSBhbiBleHRyYSBzbmFwc2hvdCBjb3B5LiAgUGxhaW4gUHVzaEFjdGl2ZVNuYXBzaG90Ci0J CQkJICogd291bGQgaGF2ZSBjb3BpZWQgdGhlIHRyYW5zYWN0aW9uIHNuYXBzaG90IGFueXdheSwg c28gdGhpcwotCQkJCSAqIG9ubHkgYWRkcyBhIGNvcHkgc3RlcCB3aGVuIHNldEhvbGRTbmFwc2hv dCBpcyB0cnVlLiAgKEl0J3MKLQkJCQkgKiBva2F5IGZvciB0aGUgY29tbWFuZCBJRCBvZiB0aGUg YWN0aXZlIHNuYXBzaG90IHRvIGRpdmVyZ2UKLQkJCQkgKiBmcm9tIHdoYXQgaG9sZFNuYXBzaG90 IGhhcy4pCi0JCQkJICovCi0JCQkJUHVzaENvcGllZFNuYXBzaG90KHNuYXBzaG90KTsKKwkJCQlQ dXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwogCiAJCQkJLyoKIAkJCQkgKiBBcyBmb3IgUE9S VEFMX09ORV9TRUxFQ1QgcG9ydGFscywgaXQgZG9lcyBub3Qgc2VlbQpAQCAtMTI2OCwyNiArMTI1 NSwzOSBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCiAJCQkJYWN0aXZlX3NuYXBz aG90X3NldCA9IHRydWU7CiAJCQl9Ci0JCQllbHNlCi0JCQkJVXBkYXRlQWN0aXZlU25hcHNob3RD b21tYW5kSWQoKTsKIAorCQkJLyoKKwkJCSAqIFJ1biB0aGUgcGxhbiB0byBjb21wbGV0aW9uLgor CQkJICovCisJCQlxZGVzYy0+ZGVzdCA9IGRlc3Q7CisJCQlFeGVjdXRvclJ1bihxZGVzYywgRm9y d2FyZFNjYW5EaXJlY3Rpb24sIDAsIHRydWUpOworCisJCQkvKgorCQkJICogQnVpbGQgY29tbWFu ZCBjb21wbGV0aW9uIHN0YXR1cyBkYXRhIGlmIG5lZWRlZC4KKwkJCSAqLwogCQkJaWYgKHBzdG10 LT5jYW5TZXRUYWcpCiAJCQl7Ci0JCQkJLyogc3RhdGVtZW50IGNhbiBzZXQgdGFnIHN0cmluZyAq LwotCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKLQkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAot CQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKLQkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwK LQkJCQkJCQkgZGVzdCwgcWMpOwotCQkJfQotCQkJZWxzZQotCQkJewotCQkJCS8qIHN0bXQgYWRk ZWQgYnkgcmV3cml0ZSBjYW5ub3Qgc2V0IHRhZyAqLwotCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwK LQkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAotCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFt cywKLQkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwKLQkJCQkJCQkgYWx0ZGVzdCwgTlVMTCk7CisJ CQkJc3dpdGNoIChxZGVzYy0+b3BlcmF0aW9uKQorCQkJCXsKKwkJCQkJY2FzZSBDTURfU0VMRUNU OgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfU0VMRUNULCBxZGVzYy0+ZXN0 YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgQ01EX0lOU0VSVDoK KwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX0lOU0VSVCwgcWRlc2MtPmVzdGF0 ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIENNRF9VUERBVEU6CisJ CQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19VUERBVEUsIHFkZXNjLT5lc3RhdGUt PmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBDTURfREVMRVRFOgorCQkJ CQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfREVMRVRFLCBxZGVzYy0+ZXN0YXRlLT5l c19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgQ01EX01FUkdFOgorCQkJCQkJ U2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfTUVSR0UsIHFkZXNjLT5lc3RhdGUtPmVzX3By b2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJCVNldFF1ZXJ5Q29t cGxldGlvbihxYywgQ01EVEFHX1VOS05PV04sIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7 CisJCQkJCQlicmVhazsKKwkJCQl9CiAJCQl9CiAKIAkJCWlmIChsb2dfZXhlY3V0b3Jfc3RhdHMp CkBAIC0xMzQyLDEyICsxMzQyLDEyIEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJ CWlmIChwb3J0YWwtPnN0bXRzID09IE5JTCkKIAkJCWJyZWFrOwogCi0JCS8qCi0JCSAqIEluY3Jl bWVudCBjb21tYW5kIGNvdW50ZXIgYmV0d2VlbiBxdWVyaWVzLCBidXQgbm90IGFmdGVyIHRoZSBs YXN0Ci0JCSAqIG9uZS4KLQkJICovCi0JCWlmIChsbmV4dChwb3J0YWwtPnN0bXRzLCBzdG10bGlz dF9pdGVtKSAhPSBOVUxMKQotCQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwkJaWYgKHFk ZXNjLT5lc3RhdGUpCisJCXsKKwkJCUV4ZWN1dG9yRmluaXNoKHFkZXNjKTsKKwkJCUV4ZWN1dG9y RW5kKHFkZXNjKTsKKwkJfQorCQlGcmVlUXVlcnlEZXNjKHFkZXNjKTsKIAl9CiAKIAkvKiBQb3Ag dGhlIHNuYXBzaG90IGlmIHdlIHB1c2hlZCBvbmUuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNj YWNoZS5jCmluZGV4IDYwOTc4Zjk0MTUuLmRlM2ZjNzU2ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2xzeXNjYWNoZS5jCkBAIC0yMDczLDYgKzIwNzMsMjcgQEAgZ2V0X3JlbF9wZXJzaXN0ZW5jZShP aWQgcmVsaWQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIGdldF9yZWxfcmVsaXNzaGFy ZWQKKyAqCisgKgkJUmV0dXJucyBpZiB0aGUgZ2l2ZW4gcmVsYXRpb24gaXMgc2hhcmVkIG9yIG5v dAorICovCitib29sCitnZXRfcmVsX3JlbGlzc2hhcmVkKE9pZCByZWxpZCkKK3sKKwlIZWFwVHVw bGUJdHA7CisJRm9ybV9wZ19jbGFzcyByZWx0dXA7CisJYm9vbAkJcmVzdWx0OworCisJdHAgPSBT ZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7CisJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQg Zm9yIHJlbGF0aW9uICV1IiwgcmVsaWQpOworCXJlbHR1cCA9IChGb3JtX3BnX2NsYXNzKSBHRVRT VFJVQ1QodHApOworCXJlc3VsdCA9IHJlbHR1cC0+cmVsaXNzaGFyZWQ7CisJUmVsZWFzZVN5c0Nh Y2hlKHRwKTsKKworCXJldHVybiByZXN1bHQ7Cit9CiAKIC8qCQkJCS0tLS0tLS0tLS0gVFJBTlNG T1JNIENBQ0hFIC0tLS0tLS0tLS0JCQkJCQkgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2Fj aGUuYwppbmRleCAzZDNmN2E5YmVhLi5lNjIzN2Q3MGIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9w bGFuY2FjaGUuYwpAQCAtMTAyLDEzICsxMDIsMTMgQEAgc3RhdGljIHZvaWQgUmVsZWFzZUdlbmVy aWNQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIExpc3QgKlJldmFs aWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkg ICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiBzdGF0aWMgYm9vbCBDaGVja0NhY2hlZFBs YW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CitzdGF0aWMgYm9vbCBHZW5lcmljUGxh bklzVmFsaWQoQ2FjaGVkUGxhbiAqY3BsYW4pOwogc3RhdGljIENhY2hlZFBsYW4gKkJ1aWxkQ2Fj aGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAkJCQkJ CQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlF bnYpOwogc3RhdGljIGJvb2wgY2hvb3NlX2N1c3RvbV9wbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UsCiAJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcyk7CiBzdGF0aWMg ZG91YmxlIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3Bs YW5uZXIpOwogc3RhdGljIFF1ZXJ5ICpRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10 cyk7Ci1zdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJv b2wgYWNxdWlyZSk7CiBzdGF0aWMgdm9pZCBBY3F1aXJlUGxhbm5lckxvY2tzKExpc3QgKnN0bXRf bGlzdCwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lkIFNjYW5RdWVyeUZvckxvY2tzKFF1ZXJ5 ICpwYXJzZXRyZWUsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgYm9vbCBTY2FuUXVlcnlXYWxrZXIo Tm9kZSAqbm9kZSwgYm9vbCAqYWNxdWlyZSk7CkBAIC03OTAsOCArNzkwLDE0IEBAIFJldmFsaWRh dGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogICogQ2FsbGVyIG11 c3QgaGF2ZSBhbHJlYWR5IGNhbGxlZCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkgdG8gdmVyaWZ5IHRo YXQgdGhlCiAgKiBxdWVyeXRyZWUgaXMgdXAgdG8gZGF0ZS4KICAqCi0gKiBPbiBhICJ0cnVlIiBy ZXR1cm4sIHdlIGhhdmUgYWNxdWlyZWQgdGhlIGxvY2tzIG5lZWRlZCB0byBydW4gdGhlIHBsYW4u Ci0gKiAoV2UgbXVzdCBkbyB0aGlzIGZvciB0aGUgInRydWUiIHJlc3VsdCB0byBiZSByYWNlLWNv bmRpdGlvbi1mcmVlLikKKyAqIE5vdGUgdGhvdWdoIHRoYXQgaWYgdGhlIHBsYW4gY29udGFpbnMg YW55IGNoaWxkIHJlbGF0aW9ucyB0aGF0IHdvdWxkIGhhdmUKKyAqIGJlZW4gYWRkZWQgYnkgdGhl IHBsYW5uZXIsIHdoaWNoIHdvdWxkIG5vdCBoYXZlIGJlZW4gbG9ja2VkIHlldCAoYmVjYXVzZQor ICogQWNxdWlyZVBsYW5uZXJMb2NrcygpIG9ubHkgbG9ja3MgcmVsYXRpb25zIHRoYXQgd291bGQg YmUgcHJlc2VudCBpbiB0aGUKKyAqIHJhbmdlIHRhYmxlIGJlZm9yZSBlbnRlcmluZyB0aGUgcGxh bm5lciksIHRoZSBwbGFuIGNvdWxkIGdvIHN0YWxlIGJlZm9yZQorICogaXQgcmVhY2hlcyBleGVj dXRpb24gaWYgYW55IG9mIHRob3NlIGNoaWxkIHJlbGF0aW9ucyBnZXQgbW9kaWZpZWQKKyAqIGNv bmN1cnJlbnRseS4gIFRoZSBleGVjdXRvciBtdXN0IGNoZWNrIHRoYXQgdGhlIHBsYW4gKENhY2hl ZFBsYW4pIGlzIHN0aWxsCisgKiB2YWxpZCBhZnRlciB0YWtpbmcgYSBsb2NrIG9uIGVhY2ggb2Yg dGhlIGNoaWxkIHRhYmxlcywgYW5kIGlmIGl0IGlzIG5vdCwKKyAqIGFzayB0aGUgY2FsbGVyIHRv IHJlY3JlYXRlIHRoZSBwbGFuLgogICovCiBzdGF0aWMgYm9vbAogQ2hlY2tDYWNoZWRQbGFuKENh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCkBAIC04MDUsNjAgKzgxMSw1NiBAQCBDaGVja0Nh Y2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKIAlpZiAoIXBsYW4pCiAJCXJl dHVybiBmYWxzZTsKIAotCUFzc2VydChwbGFuLT5tYWdpYyA9PSBDQUNIRURQTEFOX01BR0lDKTsK LQkvKiBHZW5lcmljIHBsYW5zIGFyZSBuZXZlciBvbmUtc2hvdCAqLwotCUFzc2VydCghcGxhbi0+ aXNfb25lc2hvdCk7CisJaWYgKEdlbmVyaWNQbGFuSXNWYWxpZChwbGFuKSkKKwkJcmV0dXJuIHRy dWU7CiAKIAkvKgotCSAqIElmIHBsYW4gaXNuJ3QgdmFsaWQgZm9yIGN1cnJlbnQgcm9sZSwgd2Ug Y2FuJ3QgdXNlIGl0LgorCSAqIFBsYW4gaGFzIGJlZW4gaW52YWxpZGF0ZWQsIHNvIHVubGluayBp dCBmcm9tIHRoZSBwYXJlbnQgYW5kIHJlbGVhc2UgaXQuCiAJICovCi0JaWYgKHBsYW4tPmlzX3Zh bGlkICYmIHBsYW4tPmRlcGVuZHNPblJvbGUgJiYKLQkJcGxhbi0+cGxhblJvbGVJZCAhPSBHZXRV c2VySWQoKSkKLQkJcGxhbi0+aXNfdmFsaWQgPSBmYWxzZTsKKwlSZWxlYXNlR2VuZXJpY1BsYW4o cGxhbnNvdXJjZSk7CiAKLQkvKgotCSAqIElmIGl0IGFwcGVhcnMgdmFsaWQsIGFjcXVpcmUgbG9j a3MgYW5kIHJlY2hlY2s7IHRoaXMgaXMgbXVjaCB0aGUgc2FtZQotCSAqIGxvZ2ljIGFzIGluIFJl dmFsaWRhdGVDYWNoZWRRdWVyeSwgYnV0IGZvciBhIHBsYW4uCi0JICovCi0JaWYgKHBsYW4tPmlz X3ZhbGlkKQorCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIEdlbmVyaWNQbGFuSXNWYWxpZAor ICoJCUlzIGEgZ2VuZXJpYyBwbGFuIHN0aWxsIHZhbGlkPworICoKKyAqIEl0IG1heSBoYXZlIGdv bmUgc3RhbGUgZHVlIHRvIGNvbmN1cnJlbnQgc2NoZW1hIG1vZGlmaWNhdGlvbnMgb2YgcmVsYXRp b25zCisgKiBtZW50aW9uZWQgaW4gdGhlIHBsYW4gb3IgYSBjb3VwbGUgb2Ygb3RoZXIgdGhpbmdz IG1lbnRpb25lZCBiZWxvdy4KKyAqLworc3RhdGljIGJvb2wKK0dlbmVyaWNQbGFuSXNWYWxpZChD YWNoZWRQbGFuICpjcGxhbikKK3sKKwlBc3NlcnQoY3BsYW4gIT0gTlVMTCk7CisJQXNzZXJ0KGNw bGFuLT5tYWdpYyA9PSBDQUNIRURQTEFOX01BR0lDKTsKKwkvKiBHZW5lcmljIHBsYW5zIGFyZSBu ZXZlciBvbmUtc2hvdCAqLworCUFzc2VydCghY3BsYW4tPmlzX29uZXNob3QpOworCisJaWYgKGNw bGFuLT5pc192YWxpZCkKIAl7CiAJCS8qCiAJCSAqIFBsYW4gbXVzdCBoYXZlIHBvc2l0aXZlIHJl ZmNvdW50IGJlY2F1c2UgaXQgaXMgcmVmZXJlbmNlZCBieQogCQkgKiBwbGFuc291cmNlOyBzbyBu byBuZWVkIHRvIGZlYXIgaXQgZGlzYXBwZWFycyB1bmRlciB1cyBoZXJlLgogCQkgKi8KLQkJQXNz ZXJ0KHBsYW4tPnJlZmNvdW50ID4gMCk7Ci0KLQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+ c3RtdF9saXN0LCB0cnVlKTsKKwkJQXNzZXJ0KGNwbGFuLT5yZWZjb3VudCA+IDApOwogCiAJCS8q Ci0JCSAqIElmIHBsYW4gd2FzIHRyYW5zaWVudCwgY2hlY2sgdG8gc2VlIGlmIFRyYW5zYWN0aW9u WG1pbiBoYXMKLQkJICogYWR2YW5jZWQsIGFuZCBpZiBzbyBpbnZhbGlkYXRlIGl0LgorCQkgKiBJ ZiBwbGFuIGlzbid0IHZhbGlkIGZvciBjdXJyZW50IHJvbGUsIHdlIGNhbid0IHVzZSBpdC4KIAkJ ICovCi0JCWlmIChwbGFuLT5pc192YWxpZCAmJgotCQkJVHJhbnNhY3Rpb25JZElzVmFsaWQocGxh bi0+c2F2ZWRfeG1pbikgJiYKLQkJCSFUcmFuc2FjdGlvbklkRXF1YWxzKHBsYW4tPnNhdmVkX3ht aW4sIFRyYW5zYWN0aW9uWG1pbikpCi0JCQlwbGFuLT5pc192YWxpZCA9IGZhbHNlOworCQlpZiAo Y3BsYW4tPmRlcGVuZHNPblJvbGUgJiYgY3BsYW4tPnBsYW5Sb2xlSWQgIT0gR2V0VXNlcklkKCkp CisJCQljcGxhbi0+aXNfdmFsaWQgPSBmYWxzZTsKIAogCQkvKgotCQkgKiBCeSBub3csIGlmIGFu eSBpbnZhbGlkYXRpb24gaGFzIGhhcHBlbmVkLCB0aGUgaW52YWwgY2FsbGJhY2sKLQkJICogZnVu Y3Rpb25zIHdpbGwgaGF2ZSBtYXJrZWQgdGhlIHBsYW4gaW52YWxpZC4KKwkJICogSWYgcGxhbiB3 YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUgaWYgVHJhbnNhY3Rpb25YbWluIGhhcworCQkgKiBh ZHZhbmNlZCwgYW5kIGlmIHNvIGludmFsaWRhdGUgaXQuCiAJCSAqLwotCQlpZiAocGxhbi0+aXNf dmFsaWQpCi0JCXsKLQkJCS8qIFN1Y2Nlc3NmdWxseSByZXZhbGlkYXRlZCBhbmQgbG9ja2VkIHRo ZSBxdWVyeS4gKi8KLQkJCXJldHVybiB0cnVlOwotCQl9Ci0KLQkJLyogT29wcywgdGhlIHJhY2Ug Y2FzZSBoYXBwZW5lZC4gIFJlbGVhc2UgdXNlbGVzcyBsb2Nrcy4gKi8KLQkJQWNxdWlyZUV4ZWN1 dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBmYWxzZSk7CisJCWlmIChUcmFuc2FjdGlvbklkSXNW YWxpZChjcGxhbi0+c2F2ZWRfeG1pbikgJiYKKwkJCSFUcmFuc2FjdGlvbklkRXF1YWxzKGNwbGFu LT5zYXZlZF94bWluLCBUcmFuc2FjdGlvblhtaW4pKQorCQkJY3BsYW4tPmlzX3ZhbGlkID0gZmFs c2U7CiAJfQogCi0JLyoKLQkgKiBQbGFuIGhhcyBiZWVuIGludmFsaWRhdGVkLCBzbyB1bmxpbmsg aXQgZnJvbSB0aGUgcGFyZW50IGFuZCByZWxlYXNlIGl0LgotCSAqLwotCVJlbGVhc2VHZW5lcmlj UGxhbihwbGFuc291cmNlKTsKLQotCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gY3BsYW4tPmlzX3Zh bGlkOwogfQogCiAvKgpAQCAtMTEyOCw4ICsxMTMwLDE1IEBAIGNhY2hlZF9wbGFuX2Nvc3QoQ2Fj aGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpCiAgKiBwbGFuIG9yIGEgY3VzdG9t IHBsYW4gZm9yIHRoZSBnaXZlbiBwYXJhbWV0ZXJzOiB0aGUgY2FsbGVyIGRvZXMgbm90IGtub3cK ICAqIHdoaWNoIGl0IHdpbGwgZ2V0LgogICoKLSAqIE9uIHJldHVybiwgdGhlIHBsYW4gaXMgdmFs aWQgYW5kIHdlIGhhdmUgc3VmZmljaWVudCBsb2NrcyB0byBiZWdpbgotICogZXhlY3V0aW9uLgor ICogT24gcmV0dXJuLCB0aGUgcGxhbiBpcyB2YWxpZCB1bmxlc3MgaXQgY29udGFpbnMgaW5oZXJp dGFuY2UvcGFydGl0aW9uIGNoaWxkCisgKiB0YWJsZXMsIHRoYXQgaXMsIG9ubHkgdGhlIGxvY2tz IG9uIHRoZSB0YWJsZXMgbWVudGlvbmVkIGluIHRoZSBxdWVyeSBoYXZlCisgKiBiZWVuIHRha2Vu LiAgSWYgYW55IG9mIHRob3NlIHRhYmxlcyBoYXZlIGluaGVyaXRhbmNlL3BhcnRpdGlvbiB0YWJs ZXMsIHRoZQorICogZXhlY3V0b3IgbXVzdCBhbHNvIGxvY2sgdGhlbSBiZWZvcmUgZXhlY3V0aW5n IHRoZSBwbGFuIGFuZCBpZiB0aGUgcGxhbiBnZXRzCisgKiBpbnZhbGlkYXRlZCBhcyBhIHJlc3Vs dCBvZiB0YWtpbmcgdGhvc2UgbG9ja3MsIG11c3QgYXNrIHRoZSBjYWxsZXIgdG8gZ2V0CisgKiBh IG5ldyBwbGFuIGJ5IGNhbGxpbmcgaGVyZSBhZ2Fpbi4gIExvY2tpbmcgb2YgdGhlIGNoaWxkIHRh YmxlcyBtdXN0IGJlCisgKiBkZWZlcnJlZCB0byB0aGUgZXhlY3V0b3IgbGlrZSB0aGlzLCBiZWNh dXNlIG5vdCBhbGwgY2hpbGQgdGFibGVzIG1heSBuZWVkCisgKiB0byBiZSBsb2NrZWQ7IHNvbWUg bWF5IGdldCBwcnVuZWQgZHVyaW5nIHRoZSBleGVjdXRvciBwbGFuIGluaXRpYWxpemF0aW9uCisg KiBwaGFzZSAoSW5pdFBsYW4oKSkuCiAgKgogICogT24gcmV0dXJuLCB0aGUgcmVmY291bnQgb2Yg dGhlIHBsYW4gaGFzIGJlZW4gaW5jcmVtZW50ZWQ7IGEgbGF0ZXIKICAqIFJlbGVhc2VDYWNoZWRQ bGFuKCkgY2FsbCBpcyBleHBlY3RlZC4gIElmICJvd25lciIgaXMgbm90IE5VTEwgdGhlbgpAQCAt MTM2Miw4ICsxMzcxLDggQEAgQ2FjaGVkUGxhbkFsbG93c1NpbXBsZVZhbGlkaXR5Q2hlY2soQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAl9CiAKIAkvKgotCSAqIFJlamVjdCBpZiBBY3F1 aXJlRXhlY3V0b3JMb2NrcyB3b3VsZCBoYXZlIGFueXRoaW5nIHRvIGRvLiAgVGhpcyBpcwotCSAq IHByb2JhYmx5IHVubmVjZXNzYXJ5IGdpdmVuIHRoZSBwcmV2aW91cyBjaGVjaywgYnV0IGxldCdz IGJlIHNhZmUuCisJICogUmVqZWN0IGlmIHRoZSBleGVjdXRvciB3b3VsZCBuZWVkIHRvIHRha2Ug YWRkaXRpb25hbCBsb2NrcywgdGhhdCBpcywgaW4KKwkgKiBhZGRpdGlvbiB0byB0aG9zZSB0YWtl biBieSBBY3F1aXJlUGxhbm5lckxvY2tzKCkgb24gYSBnaXZlbiBxdWVyeS4KIAkgKi8KIAlmb3Jl YWNoKGxjLCBwbGFuLT5zdG10X2xpc3QpCiAJewpAQCAtMTczNyw1OCArMTc0Niw2IEBAIFF1ZXJ5 TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRzKQogCXJldHVybiBOVUxMOwogfQogCi0vKgot ICogQWNxdWlyZUV4ZWN1dG9yTG9ja3M6IGFjcXVpcmUgbG9ja3MgbmVlZGVkIGZvciBleGVjdXRp b24gb2YgYSBjYWNoZWQgcGxhbjsKLSAqIG9yIHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZh bHNlLgotICovCi1zdGF0aWMgdm9pZAotQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9s aXN0LCBib29sIGFjcXVpcmUpCi17Ci0JTGlzdENlbGwgICAqbGMxOwotCi0JZm9yZWFjaChsYzEs IHN0bXRfbGlzdCkKLQl7Ci0JCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IGxmaXJzdF9ub2Rl KFBsYW5uZWRTdG10LCBsYzEpOwotCQlMaXN0Q2VsbCAgICpsYzI7Ci0KLQkJaWYgKHBsYW5uZWRz dG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKLQkJewotCQkJLyoKLQkJCSAqIElnbm9y ZSB1dGlsaXR5IHN0YXRlbWVudHMsIGV4Y2VwdCB0aG9zZSAoc3VjaCBhcyBFWFBMQUlOKSB0aGF0 Ci0JCQkgKiBjb250YWluIGEgcGFyc2VkLWJ1dC1ub3QtcGxhbm5lZCBxdWVyeS4gIE5vdGU6IGl0 J3Mgb2theSB0byB1c2UKLQkJCSAqIFNjYW5RdWVyeUZvckxvY2tzLCBldmVuIHRob3VnaCB0aGUg cXVlcnkgaGFzbid0IGJlZW4gdGhyb3VnaAotCQkJICogcnVsZSByZXdyaXRpbmcsIGJlY2F1c2Ug cmV3cml0aW5nIGRvZXNuJ3QgY2hhbmdlIHRoZSBxdWVyeQotCQkJICogcmVwcmVzZW50YXRpb24u Ci0JCQkgKi8KLQkJCVF1ZXJ5CSAgICpxdWVyeSA9IFV0aWxpdHlDb250YWluc1F1ZXJ5KHBsYW5u ZWRzdG10LT51dGlsaXR5U3RtdCk7Ci0KLQkJCWlmIChxdWVyeSkKLQkJCQlTY2FuUXVlcnlGb3JM b2NrcyhxdWVyeSwgYWNxdWlyZSk7Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCWZvcmVhY2gobGMy LCBwbGFubmVkc3RtdC0+cnRhYmxlKQotCQl7Ci0JCQlSYW5nZVRibEVudHJ5ICpydGUgPSAoUmFu Z2VUYmxFbnRyeSAqKSBsZmlyc3QobGMyKTsKLQotCQkJaWYgKCEocnRlLT5ydGVraW5kID09IFJU RV9SRUxBVElPTiB8fAotCQkJCSAgKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYgT2lk SXNWYWxpZChydGUtPnJlbGlkKSkpKQotCQkJCWNvbnRpbnVlOwotCi0JCQkvKgotCQkJICogQWNx dWlyZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBvZiBsb2NrIG9uIGVhY2ggcmVsYXRpb24gT0lELiBO b3RlCi0JCQkgKiB0aGF0IHdlIGRvbid0IGFjdHVhbGx5IHRyeSB0byBvcGVuIHRoZSByZWwsIGFu ZCBoZW5jZSB3aWxsIG5vdAotCQkJICogZmFpbCBpZiBpdCdzIGJlZW4gZHJvcHBlZCBlbnRpcmVs eSAtLS0gd2UnbGwganVzdCB0cmFuc2llbnRseQotCQkJICogYWNxdWlyZSBhIG5vbi1jb25mbGlj dGluZyBsb2NrLgotCQkJICovCi0JCQlpZiAoYWNxdWlyZSkKLQkJCQlMb2NrUmVsYXRpb25PaWQo cnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7Ci0JCQllbHNlCi0JCQkJVW5sb2NrUmVsYXRp b25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7Ci0JCX0KLQl9Ci19Ci0KIC8qCiAg KiBBY3F1aXJlUGxhbm5lckxvY2tzOiBhY3F1aXJlIGxvY2tzIG5lZWRlZCBmb3IgcGxhbm5pbmcg b2YgYSBxdWVyeXRyZWUgbGlzdDsKICAqIG9yIHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZh bHNlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKaW5kZXggMDZkZmE4NWYwNC4uMGNhZDQ1 MGRjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBAIC0yMDEsNiArMjAxLDEzIEBA IENyZWF0ZVBvcnRhbChjb25zdCBjaGFyICpuYW1lLCBib29sIGFsbG93RHVwLCBib29sIGR1cFNp bGVudCkKIAlwb3J0YWwtPnBvcnRhbENvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9w UG9ydGFsQ29udGV4dCwKIAkJCQkJCQkJCQkJCSAgIlBvcnRhbENvbnRleHQiLAogCQkJCQkJCQkJ CQkJICBBTExPQ1NFVF9TTUFMTF9TSVpFUyk7CisJLyoKKwkgKiBpbml0aWFsaXplIHBvcnRhbCdz IHF1ZXJ5IGNvbnRleHQgdG8gc3RvcmUgUXVlcnlEZXNjcyBjcmVhdGVkIGR1cmluZworCSAqIFBv cnRhbFN0YXJ0KCkgYW5kIHRoZW4gdXNlZCBpbiBQb3J0YWxSdW4oKS4KKwkgKi8KKwlwb3J0YWwt PnF1ZXJ5Q29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BQb3J0YWxDb250ZXh0LAor CQkJCQkJCQkJCQkJICJQb3J0YWxRdWVyeUNvbnRleHQiLAorCQkJCQkJCQkJCQkJIEFMTE9DU0VU X1NNQUxMX1NJWkVTKTsKIAogCS8qIGNyZWF0ZSBhIHJlc291cmNlIG93bmVyIGZvciB0aGUgcG9y dGFsICovCiAJcG9ydGFsLT5yZXNvd25lciA9IFJlc291cmNlT3duZXJDcmVhdGUoQ3VyVHJhbnNh Y3Rpb25SZXNvdXJjZU93bmVyLApAQCAtMjI0LDYgKzIzMSw3IEBAIENyZWF0ZVBvcnRhbChjb25z dCBjaGFyICpuYW1lLCBib29sIGFsbG93RHVwLCBib29sIGR1cFNpbGVudCkKIAogCS8qIGZvciBu YW1lZCBwb3J0YWxzIHJldXNlIHBvcnRhbC0+bmFtZSBjb3B5ICovCiAJTWVtb3J5Q29udGV4dFNl dElkZW50aWZpZXIocG9ydGFsLT5wb3J0YWxDb250ZXh0LCBwb3J0YWwtPm5hbWVbMF0gPyBwb3J0 YWwtPm5hbWUgOiAiPHVubmFtZWQ+Iik7CisJTWVtb3J5Q29udGV4dFNldElkZW50aWZpZXIocG9y dGFsLT5xdWVyeUNvbnRleHQsIHBvcnRhbC0+bmFtZVswXSA/IHBvcnRhbC0+bmFtZSA6ICI8dW5u YW1lZD4iKTsKIAogCXJldHVybiBwb3J0YWw7CiB9CkBAIC01OTQsNiArNjAyLDcgQEAgUG9ydGFs RHJvcChQb3J0YWwgcG9ydGFsLCBib29sIGlzVG9wQ29tbWl0KQogCiAJLyogcmVsZWFzZSBzdWJz aWRpYXJ5IHN0b3JhZ2UgKi8KIAlNZW1vcnlDb250ZXh0RGVsZXRlKHBvcnRhbC0+cG9ydGFsQ29u dGV4dCk7CisJTWVtb3J5Q29udGV4dERlbGV0ZShwb3J0YWwtPnF1ZXJ5Q29udGV4dCk7CiAKIAkv KiByZWxlYXNlIHBvcnRhbCBzdHJ1Y3QgKGl0J3MgaW4gVG9wUG9ydGFsQ29udGV4dCkgKi8KIAlw ZnJlZShwb3J0YWwpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5o IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IDNkM2U2MzJhMGMuLjM5MmFi YjUxNTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9z cmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTg4LDcgKzg4LDExIEBAIGV4dGVybiB2 b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRv LAogCQkJCQkJCSAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJ CQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYp OwogCi1leHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQs IEludG9DbGF1c2UgKmludG8sCitleHRlcm4gUXVlcnlEZXNjICpFeHBsYWluUXVlcnlEZXNjKFBs YW5uZWRTdG10ICpzdG10LCBzdHJ1Y3QgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJIGNvbnN0IGNo YXIgKnF1ZXJ5U3RyaW5nLCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorCQkJ CSBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworZXh0 ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCisJCQkJCQkgICBJ bnRvQ2xhdXNlICppbnRvLAogCQkJCQkJICAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAq cXVlcnlTdHJpbmcsCiAJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9u bWVudCAqcXVlcnlFbnYsCiAJCQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24s CkBAIC0xMDQsNiArMTA4LDcgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpblF1ZXJ5UGFyYW1ldGVycyhF eHBsYWluU3RhdGUgKmVzLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgaW50IG0KIAogZXh0ZXJuIHZv aWQgRXhwbGFpbkJlZ2luT3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpOwogZXh0ZXJuIHZvaWQgRXhw bGFpbkVuZE91dHB1dChFeHBsYWluU3RhdGUgKmVzKTsKK2V4dGVybiB2b2lkIEV4cGxhaW5SZXNl dE91dHB1dChFeHBsYWluU3RhdGUgKmVzKTsKIGV4dGVybiB2b2lkIEV4cGxhaW5TZXBhcmF0ZVBs YW5zKEV4cGxhaW5TdGF0ZSAqZXMpOwogCiBleHRlcm4gdm9pZCBFeHBsYWluUHJvcGVydHlMaXN0 KGNvbnN0IGNoYXIgKnFsYWJlbCwgTGlzdCAqZGF0YSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCmlu ZGV4IGFmMmJmMzZkZmIuLmMzNmMyNWI0OTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaApAQCAt MzIsOSArMzIsMTIgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiB7CisJTm9kZVRh ZwkJdHlwZTsKKwogCS8qIFRoZXNlIGZpZWxkcyBhcmUgcHJvdmlkZWQgYnkgQ3JlYXRlUXVlcnlE ZXNjICovCiAJQ21kVHlwZQkJb3BlcmF0aW9uOwkJLyogQ01EX1NFTEVDVCwgQ01EX1VQREFURSwg ZXRjLiAqLwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdDsJLyogcGxhbm5lcidzIG91dHB1dCAo Y291bGQgYmUgdXRpbGl0eSwgdG9vKSAqLworCXN0cnVjdCBDYWNoZWRQbGFuICpjcGxhbjsJLyog Q2FjaGVkUGxhbiwgaWYgcGxhbm5lZHN0bXQgaXMgZnJvbSBvbmUgKi8KIAljb25zdCBjaGFyICpz b3VyY2VUZXh0OwkJLyogc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNob3QJc25h cHNob3Q7CQkvKiBzbmFwc2hvdCB0byB1c2UgZm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJY3Jvc3Nj aGVja19zbmFwc2hvdDsJLyogY3Jvc3NjaGVjayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAqLwpAQCAt NDcsNiArNTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAlUdXBsZURlc2MJdHVwRGVz YzsJCS8qIGRlc2NyaXB0b3IgZm9yIHJlc3VsdCB0dXBsZXMgKi8KIAlFU3RhdGUJICAgKmVzdGF0 ZTsJCQkvKiBleGVjdXRvcidzIHF1ZXJ5LXdpZGUgc3RhdGUgKi8KIAlQbGFuU3RhdGUgICpwbGFu c3RhdGU7CQkvKiB0cmVlIG9mIHBlci1wbGFuLW5vZGUgc3RhdGUgKi8KKwlib29sCQlwbGFuX3Zh bGlkOwkJLyogaXMgcGxhbnN0YXRlIHRyZWUgZnVsbHkgdmFsaWQ/ICovCiAKIAkvKiBUaGlzIGZp ZWxkIGlzIHNldCBieSBFeGVjdXRvclJ1biAqLwogCWJvb2wJCWFscmVhZHlfZXhlY3V0ZWQ7CS8q IHRydWUgaWYgcHJldmlvdXNseSBleGVjdXRlZCAqLwpAQCAtNTcsNiArNjEsNyBAQCB0eXBlZGVm IHN0cnVjdCBRdWVyeURlc2MKIAogLyogaW4gcHF1ZXJ5LmMgKi8KIGV4dGVybiBRdWVyeURlc2Mg KkNyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCSAgc3Ry dWN0IENhY2hlZFBsYW4gKmNwbGFuLAogCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQs CiAJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCSAgU25hcHNob3QgY3Jvc3Nj aGVja19zbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9y LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IGFjMDIyNDc5NDcuLjY0 MGI5MDU5NzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysr IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMTksNiArMTksNyBAQAogI2lu Y2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5o IgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcGxhbmNhY2hl LmgiCiAKIAogLyoKQEAgLTI1Niw2ICsyNTcsMTcgQEAgZXh0ZXJuIHZvaWQgRXhlY0VuZE5vZGUo UGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTaHV0ZG93bk5vZGUoUGxhblN0YXRl ICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVk ZWQsIFBsYW5TdGF0ZSAqY2hpbGRfbm9kZSk7CiAKKy8qCisgKiBJcyB0aGUgY2FjaGVkIHBsYW4s IGlmIGFueSwgc3RpbGwgdmFsaWQgYXQgdGhpcyBwb2ludD8gIFRoYXQgaXMsIG5vdAorICogaW52 YWxpZGF0ZWQgYnkgdGhlIGluY29taW5nIGludmFsaWRhdGlvbiBtZXNzYWdlcyB0aGF0IGhhdmUg YmVlbiBwcm9jZXNzZWQKKyAqIHJlY2VudGx5LgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4 ZWNQbGFuU3RpbGxWYWxpZChFU3RhdGUgKmVzdGF0ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5lc19j YWNoZWRwbGFuID09IE5VTEwgPyB0cnVlIDoKKwkJQ2FjaGVkUGxhblN0aWxsVmFsaWQoZXN0YXRl LT5lc19jYWNoZWRwbGFuKTsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNQcm9jTm9kZQpAQCAt NTkwLDYgKzYwMiw3IEBAIGV4ZWNfcnRfZmV0Y2goSW5kZXggcnRpLCBFU3RhdGUgKmVzdGF0ZSkK IH0KIAogZXh0ZXJuIFJlbGF0aW9uIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICpl c3RhdGUsIEluZGV4IHJ0aSk7CitleHRlcm4gdm9pZCBFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxh dGlvbnMoRVN0YXRlICplc3RhdGUsIExpc3QgKmFsbHBhcnRyZWxpZHMpOwogZXh0ZXJuIHZvaWQg RXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVz dWx0UmVsSW5mbywKIAkJCQkJCQkJICAgSW5kZXggcnRpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApp bmRleCBjYjcxNGY0YTE5Li5mMGM1MTc3YjA2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjIz LDYgKzYyMyw4IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dN YXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBM aXN0IG9mIFJURVBlcm1pc3Npb25JbmZvICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10 OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KKwlzdHJ1Y3QgQ2FjaGVkUGxhbiAqZXNf Y2FjaGVkcGxhbjsJLyogQ2FjaGVkUGxhbiBpZiBwbGFubmVkc3RtdCBpcyBmcm9tCisJCQkJCQkJ CQkJICogb25lICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQg ZnJvbSBRdWVyeURlc2MgKi8KIAogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1s ZXZlbCBqdW5rIGZpbHRlciwgaWYgYW55ICovCkBAIC02NzEsNiArNjczLDEwIEBAIHR5cGVkZWYg c3RydWN0IEVTdGF0ZQogCiAJTGlzdAkgICAqZXNfZXhwcmNvbnRleHRzOwkvKiBMaXN0IG9mIEV4 cHJDb250ZXh0cyB3aXRoaW4gRVN0YXRlICovCiAKKwlMaXN0CSAgICplc19pbml0ZWRfcGxhbm5v ZGVzOyAvKiBMaXN0IG9mIFBsYW5TdGF0ZSBvZiBub2RlcyBmcm9tIHRoZQorCQkJCQkJCQkJICAq IHBsYW4gdHJlZSB0aGF0IHdlcmUgZnVsbHkKKwkJCQkJCQkJCSAgKiBpbml0aWFsaXplZCAqLwor CiAJTGlzdAkgICAqZXNfc3VicGxhbnN0YXRlczsJLyogTGlzdCBvZiBQbGFuU3RhdGUgZm9yIFN1 YlBsYW5zICovCiAKIAlMaXN0CSAgICplc19hdXhtb2RpZnl0YWJsZXM7IC8qIExpc3Qgb2Ygc2Vj b25kYXJ5IE1vZGlmeVRhYmxlU3RhdGVzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9y YWdlL2xtZ3IuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCmluZGV4IDRlZTkxZTNjZjku LjU5OGJmMjY4OGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCisrKyBi L3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCkBAIC00OCw2ICs0OCw3IEBAIGV4dGVybiBib29s IENvbmRpdGlvbmFsTG9ja1JlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2Nr bW9kZSk7CiBleHRlcm4gdm9pZCBVbmxvY2tSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgTE9D S01PREUgbG9ja21vZGUpOwogZXh0ZXJuIGJvb2wgQ2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUoUmVs YXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJCQkJCQkJYm9vbCBvcnN0cm9u Z2VyKTsKK2V4dGVybiBib29sIENoZWNrUmVsTG9ja2VkQnlNZShPaWQgcmVsaWQsIExPQ0tNT0RF IGxvY2ttb2RlLCBib29sIG9yc3Ryb25nZXIpOwogZXh0ZXJuIGJvb2wgTG9ja0hhc1dhaXRlcnNS ZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUpOwogCiBleHRlcm4g dm9pZCBMb2NrUmVsYXRpb25JZEZvclNlc3Npb24oTG9ja1JlbElkICpyZWxpZCwgTE9DS01PREUg bG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9z cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCA0ZjU0MThiOTcyLi4zMDc0ZTYwNGRk IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5j bHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTM5LDYgKzEzOSw3IEBAIGV4dGVybiBjaGFyIGdl dF9yZWxfcmVsa2luZChPaWQgcmVsaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X3JlbF9yZWxpc3BhcnRp dGlvbihPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmVsX3RhYmxlc3BhY2UoT2lkIHJlbGlk KTsKIGV4dGVybiBjaGFyIGdldF9yZWxfcGVyc2lzdGVuY2UoT2lkIHJlbGlkKTsKK2V4dGVybiBi b29sIGdldF9yZWxfcmVsaXNzaGFyZWQoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5z Zm9ybV9mcm9tc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0 ZXJuIE9pZAlnZXRfdHJhbnNmb3JtX3Rvc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAq dHJmdHlwZXMpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGls cy9wbGFuY2FjaGUuaAppbmRleCBhNDQzMTgxZDQxLi44OTkwZmU3MmUzIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFu Y2FjaGUuaApAQCAtMjIxLDYgKzIyMSwyMCBAQCBleHRlcm4gQ2FjaGVkUGxhbiAqR2V0Q2FjaGVk UGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgUGFyYW1MaXN0SW5m byBib3VuZFBhcmFtcywKIAkJCQkJCQkJIFJlc291cmNlT3duZXIgb3duZXIsCiAJCQkJCQkJCSBR dWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisKKy8qCisgKiBDYWNoZWRQbGFuU3RpbGxWYWxp ZAorICoJCVJldHVybnMgaWYgYSBjYWNoZWQgZ2VuZXJpYyBwbGFuIGlzIHN0aWxsIHZhbGlkCisg KgorICogQ2FsbGVkIGJ5IHRoZSBleGVjdXRvciBvbiBldmVyeSByZWxhdGlvbiBsb2NrIHRha2Vu IHdoZW4gaW5pdGlhbGl6aW5nIHRoZQorICogcGxhbiB0cmVlIGluIHRoZSBDYWNoZWRQbGFuLgor ICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0NhY2hlZFBsYW5TdGlsbFZhbGlkKENhY2hlZFBsYW4g KmNwbGFuKQoreworCXJldHVybiBjcGxhbi0+aXNfdmFsaWQ7Cit9CisKIGV4dGVybiB2b2lkIFJl bGVhc2VDYWNoZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpOwog CiBleHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9y dGFsLmggYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAppbmRleCBhYTA4YjFlMGZjLi4yNGQ0 MjBiOWU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9wb3J0YWwuaApAQCAtMTM4LDYgKzEzOCw5IEBAIHR5cGVkZWYgc3RydWN0 IFBvcnRhbERhdGEKIAlRdWVyeUNvbXBsZXRpb24gcWM7CQkJLyogY29tbWFuZCBjb21wbGV0aW9u IGRhdGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5ICovCiAJTGlzdAkgICAqc3RtdHM7CQkJLyogbGlzdCBv ZiBQbGFubmVkU3RtdHMgKi8KIAlDYWNoZWRQbGFuICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBp ZiBzdG10cyBhcmUgZnJvbSBvbmUgKi8KKwlMaXN0CSAgICpxZGVzY3M7CQkJLyogbGlzdCBvZiBR dWVyeURlc2NzICovCisJTWVtb3J5Q29udGV4dCBxdWVyeUNvbnRleHQ7CS8qIG1lbW9yeSBmb3Ig UXVlcnlEZXNjcyBhbmQgY2hpbGRyZW4gKi8KKwlib29sCQlwbGFuX3ZhbGlkOwkJLyogYXJlIHBs YW5zIGluIHFkZXNjcyByZWFkeSBmb3IgZXhlY3V0aW9uPyAqLwogCiAJUGFyYW1MaXN0SW5mbyBw b3J0YWxQYXJhbXM7IC8qIHBhcmFtcyB0byBwYXNzIHRvIHF1ZXJ5ICovCiAJUXVlcnlFbnZpcm9u bWVudCAqcXVlcnlFbnY7IC8qIGVudmlyb25tZW50IGZvciBxdWVyeSAqLwpAQCAtMjQyLDYgKzI0 NSw3IEBAIGV4dGVybiB2b2lkIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJCQkJ CQkJICBDb21tYW5kVGFnIGNvbW1hbmRUYWcsCiAJCQkJCQkJICBMaXN0ICpzdG10cywKIAkJCQkJ CQkgIENhY2hlZFBsYW4gKmNwbGFuKTsKK2V4dGVybiB2b2lkIFBvcnRhbFF1ZXJ5RmluaXNoKFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjKTsKIGV4dGVybiBQbGFubmVkU3RtdCAqUG9ydGFsR2V0UHJpbWFy eVN0bXQoUG9ydGFsIHBvcnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxDcmVhdGVIb2xkU3RvcmUo UG9ydGFsIHBvcnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxIYXNoVGFibGVEZWxldGVBbGwodm9p ZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmls ZSBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCmluZGV4IDcwZjI0 ZTg0NmQuLjJmY2E4NGQwMjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhl Y3V0aW9uL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01h a2VmaWxlCkBAIC04LDcgKzgsOCBAQCBPQkpTID0gXAogCWRlbGF5X2V4ZWN1dGlvbi5vCiAKIElT T0xBVElPTiA9IHBhcnRpdGlvbi1hZGRpdGlvbiBcCi0JICAgIHBhcnRpdGlvbi1yZW1vdmFsLTEK KwkgICAgcGFydGl0aW9uLXJlbW92YWwtMSBcCisJCWNhY2hlZC1wbGFuLXJlcGxhbgogCiBpZmRl ZiBVU0VfUEdYUwogUEdfQ09ORklHID0gcGdfY29uZmlnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyBiL3NyYy90ZXN0L21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCmluZGV4IDdjZDc2ZWIzNGIuLjUx NWIyYzBjOTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2Rl bGF5X2V4ZWN1dGlvbi5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2Rl bGF5X2V4ZWN1dGlvbi5jCkBAIC0xLDE0ICsxLDE4IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq CiAgKiBkZWxheV9leGVjdXRpb24uYwotICoJCVRlc3QgbW9kdWxlIHRvIGFsbG93IGRlbGF5IGJl dHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGEgcXVlcnkuCisgKgkJVGVzdCBtb2R1bGUg dG8gaW50cm9kdWNlIGRlbGF5IGF0IHZhcmlvdXMgcG9pbnRzIGR1cmluZyBleGVjdXRpb24gb2Yg YQorICoJCXF1ZXJ5IHRvIHRlc3QgdGhhdCBleGVjdXRpb24gcHJvY2VlZHMgc2FmZWx5IGluIGxp Z2h0IG9mIGNvbmN1cnJlbnQKKyAqCQljaGFuZ2VzLgogICoKICAqIFRoZSBkZWxheSBpcyBpbXBs ZW1lbnRlZCBieSB0YWtpbmcgYW5kIGltbWVkaWF0ZWx5IHJlbGVhc2luZyBhIHNwZWNpZmllZAog ICogYWR2aXNvcnkgbG9jay4gIElmIGFub3RoZXIgcHJvY2VzcyBoYXMgcHJldmlvdXNseSB0YWtl biB0aGF0IGxvY2ssIHRoZQogICogY3VycmVudCBwcm9jZXNzIHdpbGwgYmUgYmxvY2tlZCB1bnRp bCB0aGUgbG9jayBpcyByZWxlYXNlZDsgb3RoZXJ3aXNlLAogICogdGhlcmUncyBubyBlZmZlY3Qu ICBUaGlzIGFsbG93cyBhbiBpc29sYXRpb250ZXN0ZXIgc2NyaXB0IHRvIHJlbGlhYmx5Ci0gKiB0 ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90 aGVyIGJhY2tlbmQKLSAqIGJldHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBkZXNp cmVkIHF1ZXJ5LgorICogdGVzdCBiZWhhdmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0aW9u IGhhcHBlbnMgaW4gYW5vdGhlciBiYWNrZW5kIGluCisgKiBhIGNvdXBsZSBvZiBjYXNlczogMSkg YmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkKKyAqIHdo ZW4gdXNpbmcgdGhlIHBsYW5uZXJfaG9vaywgMikgYmV0d2VlbiBSZXZhbGlkYXRlQ2FjaGVkUXVl cnkoKSBhbmQKKyAqIEV4ZWN1dG9yU3RhcnQoKSB3aGVuIHVzaW5nIHRoZSBFeGVjdXRvclN0YXJ0 X2hvb2suCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjMsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCiAgKgpAQCAtMjIsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8bGlt aXRzLmg+CiAKKyNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm9wdGlt aXplci9wbGFubmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1 dGlscy9ndWMuaCIKQEAgLTMyLDkgKzM3LDExIEBAIFBHX01PRFVMRV9NQUdJQzsKIAogLyogR1VD OiBhZHZpc29yeSBsb2NrIElEIHRvIHVzZS4gIFplcm8gZGlzYWJsZXMgdGhlIGZlYXR1cmUuICov CiBzdGF0aWMgaW50CXBvc3RfcGxhbm5pbmdfbG9ja19pZCA9IDA7CitzdGF0aWMgaW50CWV4ZWN1 dG9yX3N0YXJ0X2xvY2tfaWQgPSAwOwogCi0vKiBTYXZlIHByZXZpb3VzIHBsYW5uZXIgaG9vayB1 c2VyIHRvIGJlIGEgZ29vZCBjaXRpemVuICovCisvKiBTYXZlIHByZXZpb3VzIGhvb2sgdXNlcnMg dG8gYmUgYSBnb29kIGNpdGl6ZW4gKi8KIHN0YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBwcmV2X3Bs YW5uZXJfaG9vayA9IE5VTEw7CitzdGF0aWMgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUgcHJldl9F eGVjdXRvclN0YXJ0X2hvb2sgPSBOVUxMOwogCiAKIC8qIHBsYW5uZXJfaG9vayBmdW5jdGlvbiB0 byBwcm92aWRlIHRoZSBkZXNpcmVkIGRlbGF5ICovCkBAIC03MCwxMSArNzcsNDEgQEAgZGVsYXlf ZXhlY3V0aW9uX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcs CiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogRXhlY3V0b3JTdGFydF9ob29rIGZ1bmN0aW9uIHRv IHByb3ZpZGUgdGhlIGRlc2lyZWQgZGVsYXkgKi8KK3N0YXRpYyB2b2lkCitkZWxheV9leGVjdXRp b25fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKK3sKKwkv KiBJZiBlbmFibGVkLCBkZWxheSBieSB0YWtpbmcgYW5kIHJlbGVhc2luZyB0aGUgc3BlY2lmaWVk IGxvY2sgKi8KKwlpZiAoZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCAhPSAwKQorCXsKKwkJRGlyZWN0 RnVuY3Rpb25DYWxsMShwZ19hZHZpc29yeV9sb2NrX2ludDgsCisJCQkJCQkJSW50NjRHZXREYXR1 bSgoaW50NjQpIGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQpKTsKKwkJRGlyZWN0RnVuY3Rpb25DYWxs MShwZ19hZHZpc29yeV91bmxvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkg ZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCkpOworCisJCS8qCisJCSAqIEVuc3VyZSB0aGF0IHdlIG5v dGljZSBhbnkgcGVuZGluZyBpbnZhbGlkYXRpb25zLCBzaW5jZSB0aGUgYWR2aXNvcnkKKwkJICog bG9jayBmdW5jdGlvbnMgZG9uJ3QgZG8gdGhpcy4KKwkJICovCisJCUFjY2VwdEludmFsaWRhdGlv bk1lc3NhZ2VzKCk7CisJfQorCisJLyogTm93IHN0YXJ0IHRoZSBleGVjdXRvciwgcG9zc2libHkg dmlhIGEgcHJldmlvdXMgaG9vayB1c2VyICovCisJaWYgKHByZXZfRXhlY3V0b3JTdGFydF9ob29r KQorCQlwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayhxdWVyeURlc2MsIGVmbGFncyk7CisJZWxzZQor CQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCWlmIChleGVj dXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJCWVsb2coTk9USUNFLCAiRmluaXNoZWQgRXhlY3V0 b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzICVzIiwKKwkJCSBxdWVyeURlc2MtPmNwbGFuLT5pc192 YWxpZCA/ICJ2YWxpZCIgOiAibm90IHZhbGlkIik7Cit9CisKIC8qIE1vZHVsZSBsb2FkIGZ1bmN0 aW9uICovCiB2b2lkCiBfUEdfaW5pdCh2b2lkKQogewotCS8qIFNldCB1cCB0aGUgR1VDIHRvIGNv bnRyb2wgd2hpY2ggbG9jayBpcyB1c2VkICovCisJLyogU2V0IHVwIEdVQ3MgdG8gY29udHJvbCB3 aGljaCBsb2NrIGlzIHVzZWQgKi8KIAlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgiZGVsYXlfZXhl Y3V0aW9uLnBvc3RfcGxhbm5pbmdfbG9ja19pZCIsCiAJCQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5 IGxvY2sgSUQgdG8gYmUgbG9ja2VkL3VubG9ja2VkIGFmdGVyIHBsYW5uaW5nLiIsCiAJCQkJCQkJ Ilplcm8gZGlzYWJsZXMgdGhlIGRlbGF5LiIsCkBAIC04NiwxMCArMTIzLDIyIEBAIF9QR19pbml0 KHZvaWQpCiAJCQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMLAogCQkJCQkJCU5VTEwpOwotCisJRGVm aW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2Nr X2lkIiwKKwkJCQkJCQkiU2V0cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5s b2NrZWQgYmVmb3JlIHN0YXJ0aW5nIGV4ZWN1dGlvbi4iLAorCQkJCQkJCSJaZXJvIGRpc2FibGVz IHRoZSBkZWxheS4iLAorCQkJCQkJCSZleGVjdXRvcl9zdGFydF9sb2NrX2lkLAorCQkJCQkJCTAs CisJCQkJCQkJMCwgSU5UX01BWCwKKwkJCQkJCQlQR0NfVVNFUlNFVCwKKwkJCQkJCQkwLAorCQkJ CQkJCU5VTEwsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMKTsKIAlNYXJrR1VDUHJlZml4UmVz ZXJ2ZWQoImRlbGF5X2V4ZWN1dGlvbiIpOwogCi0JLyogSW5zdGFsbCBvdXIgaG9vayAqLworCS8q IEluc3RhbGwgb3VyIGhvb2tzLiAqLwogCXByZXZfcGxhbm5lcl9ob29rID0gcGxhbm5lcl9ob29r OwogCXBsYW5uZXJfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9wbGFubmVyOworCXByZXZfRXhlY3V0 b3JTdGFydF9ob29rID0gRXhlY3V0b3JTdGFydF9ob29rOworCUV4ZWN1dG9yU3RhcnRfaG9vayA9 IGRlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dCBi L3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJl cGxhbi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMGFjNmExN2My YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4 cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQKQEAgLTAsMCArMSwxNTYgQEAKK1BhcnNlZCB0 ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAg czJsb2NrIHMxZXhlYyBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDogU0VUIHBsYW5fY2Fj aGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICog RlJPTSBmb292IFdIRVJFIGEgPSAkMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUg cSAoMSk7CitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAg ICAgICAgICAgICAgICAgICAgIAorICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMSBmb29f MSAgICAgICAKKyAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9ICQxKSAgICAgICAgICAgICAgCisg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBmb28xMV9hX2lkeAorICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoYSA9ICQxKSAgICAgICAgICAKKyg2IHJvd3MpCisKK3N0ZXAgczJsb2Nr OiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjOiBM T0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jf c3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBx ICgxKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzExX2E7Citz dGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlz b3J5X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJv dykKKworc3RlcCBzMWV4ZWM6IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVk IEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBG aW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5k ICAgICAgICAgICAgICAgICAgICAgICAKKyAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgCisg IC0+ICBTZXEgU2NhbiBvbiBmb28xMSBmb29fMQorICAgICAgICBGaWx0ZXI6IChhID0gJDEpICAg ICAKKyg0IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDIgczJsb2NrIHMx ZXhlYzIgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXAyOiBTRVQgcGxhbl9jYWNoZV9tb2Rl ID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTIgQVMgU0VMRUNUICogRlJPTSBm b292IFdIRVJFIGEgPSAxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsKK3Mx OiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQK K1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMSBmb28gICAg ICAgICAKKyAgUmVjaGVjayBDb25kOiAoYSA9IDEpICAgICAgICAgICAgICAgCisgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiBmb28xMV9hX2lkeAorICAgICAgICBJbmRleCBDb25kOiAoYSA9IDEp ICAgICAgICAgICAKKyg0IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlf bG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogTE9BRCAnZGVsYXlfZXhlY3V0aW9u JzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0 NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IDx3YWl0aW5nIC4uLj4KK3N0 ZXAgczJkcm9waTogRFJPUCBJTkRFWCBmb28xMV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBn X2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0t LS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogPC4u LiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNo ZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQo KTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0KK1NlcSBTY2FuIG9uIGZvbzExIGZvbworICBGaWx0ZXI6IChhID0gMSkgICAg CisoMiByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAzIHMybG9jayBzMWV4 ZWMzIHMyZHJvcGkgczJ1bmxvY2sKK3N0ZXAgczFwcmVwMzogU0VUIHBsYW5fY2FjaGVfbW9kZSA9 IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVn YXRlID0gb247CisJCSAgU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gPSBvbjsKKwkJICBQ UkVQQVJFIHEzIEFTIFNFTEVDVCB0MS5hLCBjb3VudCh0Mi5iKSBGUk9NIGZvbyB0MSwgZm9vIHQy IFdIRVJFIHQxLmEgPSB0Mi5hIEdST1VQIEJZIDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBF WEVDVVRFIHEzOworczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVk UGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5kICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgR3JvdXBBZ2dy ZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICBHcm91cCBLZXk6IHQxLmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICAtPiAgTWVyZ2UgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25kOiAodDEuYSA9IHQyLmEpICAgICAg ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVz aW5nIGZvbzExX2FfaWR4IG9uIGZvbzExIHQxIAorICAgICAgICAgICAgICAtPiAgTWF0ZXJpYWxp emUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg ICAtPiAgSW5kZXggU2NhbiB1c2luZyBmb28xMV9hX2lkeCBvbiBmb28xMSB0MgorICAtPiAgR3Jv dXBBZ2dyZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICBHcm91cCBLZXk6IHQxXzEuYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAtPiAgTWVyZ2UgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25kOiAodDFfMS5hID0gdDJf MS5hKSAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBT b3J0IEtleTogdDFfMS5hICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMiB0MV8xICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDJfMS5hICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMiB0 Ml8xICAgICAgICAgICAgICAgICAgIAorKDE4IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1Qg cGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMzogTE9BRCAnZGVs YXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xv Y2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IDx3YWl0 aW5nIC4uLj4KK3N0ZXAgczJkcm9waTogRFJPUCBJTkRFWCBmb28xMV9hOworc3RlcCBzMnVubG9j azogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sK Ky0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAg czFleGVjMzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JT dGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4 ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICAtPiAgR3JvdXBBZ2dyZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg ICAgIEdyb3VwIEtleTogdDEuYSAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1l cmdlIEpvaW4gICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25k OiAodDEuYSA9IHQyLmEpICAgICAgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxLmEgICAgICAgICAg IAorICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTEgdDEgCisgICAgICAg ICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg ICAgU29ydCBLZXk6IHQyLmEgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gZm9vMTEgdDIgCisgIC0+ICBHcm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgR3JvdXAgS2V5OiB0MV8xLmEgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICAtPiAgTWVyZ2UgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg ICAgIE1lcmdlIENvbmQ6ICh0MV8xLmEgPSB0Ml8xLmEpICAKKyAgICAgICAgICAgICAgLT4gIFNv cnQgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTog dDFfMS5hICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28y IHQxXzEKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDJfMS5hICAgICAgICAgCisgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28yIHQyXzEKKygyMSByb3dzKQorCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBs YW4uc3BlYyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1w bGFuLXJlcGxhbi5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNj OTJjYmQ1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1 dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYwpAQCAtMCwwICsxLDYxIEBACisjIFRl c3QgdG8gY2hlY2sgdGhhdCBpbnZhbGlkYXRpb24gb2YgY2FjaGVkIGdlbmVyaWMgcGxhbnMgZHVy aW5nIEV4ZWN1dG9yU3RhcnQKKyMgY29ycmVjdGx5IHRyaWdnZXJzIHJlcGxhbm5pbmcgYW5kIHJl LWV4ZWN1dGlvbi4KKworc2V0dXAKK3sKKyAgQ1JFQVRFIFRBQkxFIGZvbyAoYSBpbnQsIGIgdGV4 dCkgUEFSVElUSU9OIEJZIExJU1QoYSk7CisgIENSRUFURSBUQUJMRSBmb28xIFBBUlRJVElPTiBP RiBmb28gRk9SIFZBTFVFUyBJTiAoMSkgUEFSVElUSU9OIEJZIExJU1QgKGEpOworICBDUkVBVEUg VEFCTEUgZm9vMTEgUEFSVElUSU9OIE9GIGZvbzEgRk9SIFZBTFVFUyBJTiAoMSk7CisgIENSRUFU RSBJTkRFWCBmb28xMV9hIE9OIGZvbzEgKGEpOworICBDUkVBVEUgVEFCTEUgZm9vMiBQQVJUSVRJ T04gT0YgZm9vIEZPUiBWQUxVRVMgSU4gKDIpOworICBDUkVBVEUgVklFVyBmb292IEFTIFNFTEVD VCAqIEZST00gZm9vOworfQorCit0ZWFyZG93bgoreworICBEUk9QIFZJRVcgZm9vdjsKKyAgRFJP UCBUQUJMRSBmb287Cit9CisKK3Nlc3Npb24gInMxIgorIyBBcHBlbmQgd2l0aCBydW4tdGltZSBw cnVuaW5nCitzdGVwICJzMXByZXAiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2Vu ZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9 ICQxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgfQorCisjIG5vIEFw cGVuZCBjYXNlIChvbmx5IG9uZSBwYXJ0aXRpb24gc2VsZWN0ZWQgYnkgdGhlIHBsYW5uZXIpCitz dGVwICJzMXByZXAyIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxh bjsKKwkJICBQUkVQQVJFIHEyIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gMTsKKwkJ ICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IH0KKworIyBBcHBlbmQgd2l0aCBwYXJ0 aXRpb24td2lzZSBqb2luIGFnZ3JlZ2F0ZSBhbmQgam9pbiBwbGFucyBhcyBjaGlsZCBzdWJwbGFu cworc3RlcCAiczFwcmVwMyIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmlj X3BsYW47CisJCSAgU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSA9IG9uOworCQkg IFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luID0gb247CisJCSAgUFJFUEFSRSBxMyBBUyBT RUxFQ1QgdDEuYSwgY291bnQodDIuYikgRlJPTSBmb28gdDEsIGZvbyB0MiBXSEVSRSB0MS5hID0g dDIuYSBHUk9VUCBCWSAxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgfQor CisjIEV4ZWN1dGVzIGEgZ2VuZXJpYyBwbGFuCitzdGVwICJzMWV4ZWMiCXsgTE9BRCAnZGVsYXlf ZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tf aWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IH0KK3N0 ZXAgInMxZXhlYzIiCXsgTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhl Y3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NU UyBPRkYpIEVYRUNVVEUgcTI7IH0KK3N0ZXAgInMxZXhlYzMiCXsgTE9BRCAnZGVsYXlfZXhlY3V0 aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAx MjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IH0KKworc2Vzc2lvbiAi czIiCitzdGVwICJzMmxvY2siCXsgU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOyB9Citz dGVwICJzMnVubG9jayIJeyBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsgfQorc3Rl cCAiczJkcm9waSIJeyBEUk9QIElOREVYIGZvbzExX2E7IH0KKworIyBXaGlsZSAiczFleGVjIiwg ZXRjLiB3YWl0IHRvIGFjcXVpcmUgdGhlIGFkdmlzb3J5IGxvY2ssICJzMmRyb3AiIGlzIGFibGUg dG8KKyMgZHJvcCB0aGUgaW5kZXggYmVpbmcgdXNlZCBpbiB0aGUgY2FjaGVkIHBsYW4uICBXaGVu ICJzMWV4ZWMiIGlzIHRoZW4KKyMgdW5ibG9ja2VkIGFuZCBpbml0aWFsaXplcyB0aGUgY2FjaGVk IHBsYW4gZm9yIGV4ZWN1dGlvbiwgaXQgZGV0ZWN0cyB0aGUKKyMgY29uY3VycmVudCBpbmRleCBk cm9wIGFuZCBjYXVzZXMgdGhlIGNhY2hlZCBwbGFuIHRvIGJlIGRpc2NhcmRlZCBhbmQKKyMgcmVj cmVhdGVkIHdpdGhvdXQgdGhlIGluZGV4LgorcGVybXV0YXRpb24gInMxcHJlcCIgInMybG9jayIg InMxZXhlYyIgInMyZHJvcGkiICJzMnVubG9jayIKK3Blcm11dGF0aW9uICJzMXByZXAyIiAiczJs b2NrIiAiczFleGVjMiIgInMyZHJvcGkiICJzMnVubG9jayIKK3Blcm11dGF0aW9uICJzMXByZXAz IiAiczJsb2NrIiAiczFleGVjMyIgInMyZHJvcGkiICJzMnVubG9jayIKLS0gCjIuMzUuMwoK --000000000000ea017b05ffd25775 Content-Type: application/octet-stream; name="v40-0001-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Disposition: attachment; filename="v40-0001-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ljr8tj213 RnJvbSA1NDU1NGMxNjc2MzgzMTAzN2I0OGQ3Yzc2ODZmODgzYzJjODgyMTA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQw 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= --000000000000ea017b05ffd25775--