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 1onsrY-0000wT-MW for pgsql-hackers@arkaria.postgresql.org; Thu, 27 Oct 2022 02:43:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1onsqZ-0006V5-Dx for pgsql-hackers@arkaria.postgresql.org; Thu, 27 Oct 2022 02:42:19 +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 1onsqY-0006Uw-S1 for pgsql-hackers@lists.postgresql.org; Thu, 27 Oct 2022 02:42:19 +0000 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1onsqV-0004ZH-7r for pgsql-hackers@postgresql.org; Thu, 27 Oct 2022 02:42:18 +0000 Received: by mail-pj1-x102c.google.com with SMTP id v13-20020a17090a6b0d00b0021332e5388fso177598pjj.1 for ; Wed, 26 Oct 2022 19:42:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=SdotFeIbgyKCpH/Zjuib/8yvdKG+RnVl2HFuydqOIpU=; b=RUqW1FdKMkxkfbtQKfdTSx8mZrj23KnR5Yh9Xw0DXiVLrOjNT4p1HPTAHKMg9VQCQL iLv73CEGwxELPKqqLQ7NMX+z3iGCzylmoTggK3vOXhjGz05RK/TWCWw1vYE3Y0MD6UyC Yw1i+K5uJWE2PIw/zZuExzYbewm3+w7s11bVCsCN85/r06cyRcE9EtoCOFGsyZhUU7mA 4uD8TlvGLREfJd1RDDugexa2Lt4JsK4ZNJWWGw1apJ+sOctJZzbRu3+3PG9l3pR5NgPU pX8H0xPMRgtYyGJLhstU6sQ2k9vA8SBIWwiAxpxkhAaQ0ST1PWdBa9WGPegBmH3oYXnD KR1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=SdotFeIbgyKCpH/Zjuib/8yvdKG+RnVl2HFuydqOIpU=; b=x+QKMqgAoM6nWTWVpH9BqvYeUyO4yVQOSAYQBVkA1R0TCYBNY2MSCqG+baO4eycx/X BD3hlaWUM3vcBjRGu+jF3ncHldTWLqrnc34GwiB1mqKNk2C1A5dRIxoag/8NPXUR5Tv8 7e7ftqao0utwQ7A+4gcz9kQ6cwxLgthBJkHTY7kFKepgsUN/pMKvZl8ZjkJaKnYmUa5y 53ov7fukIQVANlJK1UxGex2PVmfGyHlmzGwq3x8Srxa7pnwS+FYtpOpAefX1B7IinGmn nygUGpGBVqqb+MhZQlctWBMlrPRy5wZ2DszNxVMFk58cOLBBD5crsFt9t4WE6QFfwFlK UMpQ== X-Gm-Message-State: ACrzQf1Pg8INQkfRU/69r47jray2frGDXZmBWsI0zCjfZVnJ92ErSJXu 5QZ8wUV1cXj1082D0J7vKkDhKphKpzLE4pRVtOE= X-Google-Smtp-Source: AMsMyM7+GdjDAuVSIa80BHtb44spBt9In9LzYg5G1bOJZmhoHFuGR+Zlj8lLR1ViSLoaBWUQqonPE51TmeHxIKEOplE= X-Received: by 2002:a17:90b:350d:b0:20d:5438:f594 with SMTP id ls13-20020a17090b350d00b0020d5438f594mr7761498pjb.216.1666838532819; Wed, 26 Oct 2022 19:42:12 -0700 (PDT) MIME-Version: 1.0 References: <215356.1647286703@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Thu, 27 Oct 2022 11:41:55 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Robert Haas Cc: Jacob Champion , Zhihong Yu , David Rowley , Tom Lane , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000a6c2e105ebfb163c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a6c2e105ebfb163c Content-Type: text/plain; charset="UTF-8" On Mon, Oct 17, 2022 at 6:29 PM Amit Langote wrote: > On Wed, Oct 12, 2022 at 4:36 PM Amit Langote wrote: > > On Fri, Jul 29, 2022 at 1:20 PM Amit Langote wrote: > > > On Thu, Jul 28, 2022 at 1:27 AM Robert Haas wrote: > > > > 0001 adds es_part_prune_result but does not use it, so maybe the > > > > introduction of that field should be deferred until it's needed for > > > > something. > > > > > > Oops, looks like a mistake when breaking the patch. Will move that bit to 0002. > > > > Fixed that and also noticed that I had defined PartitionPruneResult in > > the wrong header (execnodes.h). That led to PartitionPruneResult > > nodes not being able to be written and read, because > > src/backend/nodes/gen_node_support.pl doesn't create _out* and _read* > > routines for the nodes defined in execnodes.h. I moved its definition > > to plannodes.h, even though it is not actually the planner that > > instantiates those; no other include/nodes header sounds better. > > > > One more thing I realized is that Bitmapsets added to the List > > PartitionPruneResult.valid_subplan_offs_list are not actually > > read/write-able. That's a problem that I also faced in [1], so I > > proposed a patch there to make Bitmapset a read/write-able Node and > > mark (only) the Bitmapsets that are added into read/write-able node > > trees with the corresponding NodeTag. I'm including that patch here > > as well (0002) for the main patch to work (pass > > -DWRITE_READ_PARSE_PLAN_TREES build tests), though it might make sense > > to discuss it in its own thread? > > Had second thoughts on the use of List of Bitmapsets for this, such > that the make-Bitmapset-Nodes patch is no longer needed. > > I had defined PartitionPruneResult such that it stood for the results > of pruning for all PartitionPruneInfos contained in > PlannedStmt.partPruneInfos (covering all Append/MergeAppend nodes that > can use partition pruning in a given plan). So, it had a List of > Bitmapset. I think it's perhaps better for PartitionPruneResult to > cover only one PartitionPruneInfo and thus need only a Bitmapset and > not a List thereof, which I have implemented in the attached updated > patch 0002. So, instead of needing to pass around a > PartitionPruneResult with each PlannedStmt, this now passes a List of > PartitionPruneResult with an entry for each in > PlannedStmt.partPruneInfos. Rebased over 3b2db22fe. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --000000000000a6c2e105ebfb163c Content-Type: application/octet-stream; name="v23-0001-Move-PartitioPruneInfo-out-of-plan-nodes-into-Pl.patch" Content-Disposition: attachment; filename="v23-0001-Move-PartitioPruneInfo-out-of-plan-nodes-into-Pl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l9qgm18e1 RnJvbSBjODA1OTY1Y2FkYzEyMjE3NDA2MzA5MjIxZTJjODllM2MxN2JlNDMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyNyBNYXkgMjAyMiAxNjowMDoyOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjIzIDEv Ml0gTW92ZSBQYXJ0aXRpb1BydW5lSW5mbyBvdXQgb2YgcGxhbiBub2RlcyBpbnRvCiBQbGFubmVk U3RtdAoKVGhlIHBsYW5uZXIgd2lsbCBub3cgYWRkIGEgZ2l2ZW4gUGFydGl0aW9QcnVuZUluZm8g dG8KUGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3MgaW5zdGVhZCBvZiBkaXJlY3RseSB0byB0aGUK QXBwZW5kL01lcmdlQXBwZW5kIHBsYW4gbm9kZS4gIFdoYXQgZ2V0cyBzZXQgaW5zdGVhZCBpbiB0 aGUKbGF0dGVyIGlzIGFuIGluZGV4IGZpZWxkIHdoaWNoIHBvaW50cyB0byB0aGUgbGlzdCBlbGVt ZW50Cm9mIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zIGNvbnRhaW5pbmcgdGhlIFBhcnRpdGlv UHJ1bmVJbmZvCmJlbG9uZ2luZyB0byB0aGUgcGxhbiBub2RlLgoKQSBsYXRlciBjb21taXQgd2ls bCBtYWtlIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgZG8gdGhlIGluaXRpYWwKcGFydGl0aW9uIHBy dW5pbmcgdG8gZGV0ZXJtaW5lIGEgbWluaW1hbCBzZXQgb2YgcGFydGl0aW9ucyB0byBiZQpsb2Nr ZWQgd2hlbiB2YWxpZGF0aW5nIGEgcGxhbiB0cmVlIGFuZCBpdCB3aWxsIG5lZWQgdG8gY29uc3Vs dCB0aGUKUGFydGl0aW9QcnVuZUluZm9zIHJlZmVyZW5jZWQgdGhlcmVpbiB0byBkbyBzby4gIEl0 IHdvdWxkIGJlIGJldHRlcgpmb3IgdGhlIFBhcnRpdGlvUHJ1bmVJbmZvcyB0byBiZSBhY2Nlc3Np YmxlIGRpcmVjdGx5IHRoYW4gcmVxdWlyaW5nCmEgd2FsayBvZiB0aGUgcGxhbiB0cmVlIHRvIGZp bmQgdGhlbSwgd2hpY2ggaXMgZWFzaWVyIHdoZW4gaXQgY2FuIGJlCmRvbmUgYnkgc2ltcGx5IGl0 ZXJhdGluZyBvdmVyIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zLgotLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJhbGxlbC5jICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYyAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAg ICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgfCAgNCAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgIHwgIDQgKy0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8IDI0ICsrKystLS0tLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgIHwgNjUgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQog c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAgIHwgMTggKysrKy0tLQogc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oICAgICAgICAgICB8ICA2ICsrKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVz LmggICAgICAgICAgIHwgMTEgKysrLS0KIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1 bmUuaCAgICB8ICA4ICstLQogMTUgZmlsZXMgY2hhbmdlZCwgOTAgaW5zZXJ0aW9ucygrKSwgNjIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggZDc4ODYyZTY2MC4uMzI0 NzVlMzNmZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC04MjUsNiArODI1LDcgQEAgSW5p dFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJRXhlY0luaXRSYW5nZVRh YmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSk7CiAKIAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxh bm5lZHN0bXQ7CisJZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zID0gcGxhbm5lZHN0bXQtPnBh cnRQcnVuZUluZm9zOwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJy YXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cmFsbGVsLmMKaW5kZXggOTk1MTI4MjZjNS4uYWNhMGM2ZjMyMyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMKQEAgLTE4Myw2ICsxODMsNyBAQCBFeGVjU2VyaWFsaXplUGxhbihQbGFu ICpwbGFuLCBFU3RhdGUgKmVzdGF0ZSkKIAlwc3RtdC0+ZGVwZW5kc09uUm9sZSA9IGZhbHNlOwog CXBzdG10LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBmYWxzZTsKIAlwc3RtdC0+cGxhblRyZWUgPSBw bGFuOworCXBzdG10LT5wYXJ0UHJ1bmVJbmZvcyA9IGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZv czsKIAlwc3RtdC0+cnRhYmxlID0gZXN0YXRlLT5lc19yYW5nZV90YWJsZTsKIAlwc3RtdC0+cmVz dWx0UmVsYXRpb25zID0gTklMOwogCXBzdG10LT5hcHBlbmRSZWxhdGlvbnMgPSBOSUw7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggNDBlM2MwNzY5My4uODAxOTdkNTE0MSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTc5MSwxMSArMTc5MSwxMyBA QCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFw ICphdHRyTWFwKQogUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCiBFeGVjSW5pdFBhcnRpdGlvblBydW5p bmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCi0J CQkJCQkgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkgaW50IHBhcnRfcHJ1 bmVfaW5kZXgsCiAJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKQog ewogCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJRVN0YXRlCSAgICplc3RhdGUg PSBwbGFuc3RhdGUtPnN0YXRlOworCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0gbGlz dF9udGgoZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zLAorCQkJCQkJCQkJCQkgcGFydF9wcnVu ZV9pbmRleCk7CiAKIAkvKiBXZSBtYXkgbmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQgdG8gZXZh bHVhdGUgcGFydGl0aW9uIGV4cHJzICovCiAJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwg cGxhbnN0YXRlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggOWRmMWY4MWVhOC4uMjFm NGMxMDkzNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTExOSw2ICsxMTksNyBAQCBD cmVhdGVFeGVjdXRvclN0YXRlKHZvaWQpCiAJZXN0YXRlLT5lc19yZWxhdGlvbnMgPSBOVUxMOwog CWVzdGF0ZS0+ZXNfcm93bWFya3MgPSBOVUxMOwogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBO VUxMOworCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IE5JTDsKIAogCWVzdGF0ZS0+ZXNf anVua0ZpbHRlciA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCAzNTdl MTBhMWQ3Li5jNmY4NmE2NTEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl QXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xMzQs NyArMTM0LDcgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAlhcHBlbmRzdGF0ZS0+YXNfYmVndW4gPSBmYWxzZTsKIAogCS8qIElmIHJ1 bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93 ICovCi0JaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5mbyAhPSBOVUxMKQorCWlmIChub2RlLT5wYXJ0 X3BydW5lX2luZGV4ID49IDApCiAJewogCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRl OwogCkBAIC0xNDUsNyArMTQ1LDcgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICovCiAJCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBh cnRpdGlvblBydW5pbmcoJmFwcGVuZHN0YXRlLT5wcywKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0 aChub2RlLT5hcHBlbmRwbGFucyksCi0JCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZv LAorCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXgsCiAJCQkJCQkJCQkJCSAgJnZh bGlkc3VicGxhbnMpOwogCQlhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRl OwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IGM1YzYyZmE1YzcuLjhkMzU4NjBjMzAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC04Miw3ICs4Miw3IEBAIEV4 ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCW1lcmdlc3RhdGUtPnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNNZXJnZUFwcGVuZDsK IAogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0 IHRoYXQgdXAgbm93ICovCi0JaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5mbyAhPSBOVUxMKQorCWlm IChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCiAJewogCQlQYXJ0aXRpb25QcnVuZVN0YXRl ICpwcnVuZXN0YXRlOwogCkBAIC05Myw3ICs5Myw3IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVy Z2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKi8KIAkJcHJ1 bmVzdGF0ZSA9IEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygmbWVyZ2VzdGF0ZS0+cHMsCiAJCQkJ CQkJCQkJCSAgbGlzdF9sZW5ndGgobm9kZS0+bWVyZ2VwbGFucyksCi0JCQkJCQkJCQkJCSAgbm9k ZS0+cGFydF9wcnVuZV9pbmZvLAorCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXgs CiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOwogCQltZXJnZXN0YXRlLT5tc19wcnVuZV9z dGF0ZSA9IHBydW5lc3RhdGU7CiAJCW5wbGFucyA9IGJtc19udW1fbWVtYmVycyh2YWxpZHN1YnBs YW5zKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4u YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCBhYzg2Y2U5 MDAzLi41MGE1NzE5YWM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9j cmVhdGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5j CkBAIC0xMjAzLDcgKzEyMDMsNiBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJv b3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCUxpc3RDZWxsICAgKnN1YnBh dGhzOwogCWludAkJCW5hc3luY3BsYW5zID0gMDsKIAlSZWxPcHRJbmZvICpyZWwgPSBiZXN0X3Bh dGgtPnBhdGgucGFyZW50OwotCVBhcnRpdGlvblBydW5lSW5mbyAqcGFydHBydW5laW5mbyA9IE5V TEw7CiAJaW50CQkJbm9kZW51bXNvcnRrZXlzID0gMDsKIAlBdHRyTnVtYmVyICpub2RlU29ydENv bElkeCA9IE5VTEw7CiAJT2lkCQkgICAqbm9kZVNvcnRPcGVyYXRvcnMgPSBOVUxMOwpAQCAtMTM1 NCw2ICsxMzUzLDkgQEAgY3JlYXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBl bmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAkJc3VicGxhbnMgPSBsYXBwZW5kKHN1YnBs YW5zLCBzdWJwbGFuKTsKIAl9CiAKKwkvKiBTZXQgYmVsb3cgaWYgd2UgZmluZCBxdWFscyB0aGF0 IHdlIGNhbiB1c2UgdG8gcnVuLXRpbWUgcHJ1bmUgKi8KKwlwbGFuLT5wYXJ0X3BydW5lX2luZGV4 ID0gLTE7CisKIAkvKgogCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUgdXNlZnVs IHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KIAkgKiBwcnVuaW5nIGR1cmluZyBleGVjdXRp b24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0bwpAQCAtMTM3 NywxNiArMTM3OSwxNCBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFw cGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCQl9CiAKIAkJaWYgKHBydW5lcXVhbCAh PSBOSUwpCi0JCQlwYXJ0cHJ1bmVpbmZvID0KLQkJCQltYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8o cm9vdCwgcmVsLAotCQkJCQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJCQkJCQkJCSBw cnVuZXF1YWwpOworCQkJcGxhbi0+cGFydF9wcnVuZV9pbmRleCA9IG1ha2VfcGFydGl0aW9uX3By dW5laW5mbyhyb290LCByZWwsCisJCQkJCQkJCQkJCQkJCQkgIGJlc3RfcGF0aC0+c3VicGF0aHMs CisJCQkJCQkJCQkJCQkJCQkgIHBydW5lcXVhbCk7CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMg PSBzdWJwbGFuczsKIAlwbGFuLT5uYXN5bmNwbGFucyA9IG5hc3luY3BsYW5zOwogCXBsYW4tPmZp cnN0X3BhcnRpYWxfcGxhbiA9IGJlc3RfcGF0aC0+Zmlyc3RfcGFydGlhbF9wYXRoOwotCXBsYW4t PnBhcnRfcHJ1bmVfaW5mbyA9IHBhcnRwcnVuZWluZm87CiAKIAljb3B5X2dlbmVyaWNfcGF0aF9p bmZvKCZwbGFuLT5wbGFuLCAoUGF0aCAqKSBiZXN0X3BhdGgpOwogCkBAIC0xNDI1LDcgKzE0MjUs NiBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBw ZW5kUGF0aCAqYmVzdF9wYXRoLAogCUxpc3QJICAgKnN1YnBsYW5zID0gTklMOwogCUxpc3RDZWxs ICAgKnN1YnBhdGhzOwogCVJlbE9wdEluZm8gKnJlbCA9IGJlc3RfcGF0aC0+cGF0aC5wYXJlbnQ7 Ci0JUGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0cHJ1bmVpbmZvID0gTlVMTDsKIAogCS8qCiAJICog V2UgZG9uJ3QgaGF2ZSB0aGUgYWN0dWFsIGNyZWF0aW9uIG9mIHRoZSBNZXJnZUFwcGVuZCBub2Rl IHNwbGl0IG91dApAQCAtMTUxOCw2ICsxNTE3LDkgQEAgY3JlYXRlX21lcmdlX2FwcGVuZF9wbGFu KFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJc3VicGxh bnMgPSBsYXBwZW5kKHN1YnBsYW5zLCBzdWJwbGFuKTsKIAl9CiAKKwkvKiBTZXQgYmVsb3cgaWYg d2UgZmluZCBxdWFscyB0aGF0IHdlIGNhbiB1c2UgdG8gcnVuLXRpbWUgcHJ1bmUgKi8KKwlub2Rl LT5wYXJ0X3BydW5lX2luZGV4ID0gLTE7CisKIAkvKgogCSAqIElmIGFueSBxdWFscyBleGlzdCwg dGhleSBtYXkgYmUgdXNlZnVsIHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KIAkgKiBwcnVu aW5nIGR1cmluZyBleGVjdXRpb24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBl eGVjdXRvciB0bwpAQCAtMTU0MSwxMyArMTU0MywxMyBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3Bs YW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQl9CiAK IAkJaWYgKHBydW5lcXVhbCAhPSBOSUwpCi0JCQlwYXJ0cHJ1bmVpbmZvID0gbWFrZV9wYXJ0aXRp b25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwKLQkJCQkJCQkJCQkJCQkgYmVzdF9wYXRoLT5zdWJwYXRo cywKLQkJCQkJCQkJCQkJCQkgcHJ1bmVxdWFsKTsKKwkJCW5vZGUtPnBhcnRfcHJ1bmVfaW5kZXgg PSBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwgcmVsLAorCQkJCQkJCQkJCQkJCQkJICBi ZXN0X3BhdGgtPnN1YnBhdGhzLAorCQkJCQkJCQkJCQkJCQkJICBwcnVuZXF1YWwpOwogCX0KIAog CW5vZGUtPm1lcmdlcGxhbnMgPSBzdWJwbGFuczsKLQlub2RlLT5wYXJ0X3BydW5lX2luZm8gPSBw YXJ0cHJ1bmVpbmZvOworCiAKIAkvKgogCSAqIElmIHByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlz IGFkZGVkIHNvcnQgY29sdW1ucywgYnV0IHdlIHdlcmUgdG9sZCB0bwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vcGxhbm5lci5jCmluZGV4IDc4YTgxNzQ1MzQuLjI0MGQ1MGYxYzAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTUxOSw2ICs1MTksNyBAQCBzdGFuZGFyZF9wbGFu bmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0 aW9ucywKIAlyZXN1bHQtPmRlcGVuZHNPblJvbGUgPSBnbG9iLT5kZXBlbmRzT25Sb2xlOwogCXJl c3VsdC0+cGFyYWxsZWxNb2RlTmVlZGVkID0gZ2xvYi0+cGFyYWxsZWxNb2RlTmVlZGVkOwogCXJl c3VsdC0+cGxhblRyZWUgPSB0b3BfcGxhbjsKKwlyZXN1bHQtPnBhcnRQcnVuZUluZm9zID0gZ2xv Yi0+cGFydFBydW5lSW5mb3M7CiAJcmVzdWx0LT5ydGFibGUgPSBnbG9iLT5maW5hbHJ0YWJsZTsK IAlyZXN1bHQtPnJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsKIAlyZXN1 bHQtPmFwcGVuZFJlbGF0aW9ucyA9IGdsb2ItPmFwcGVuZFJlbGF0aW9uczsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3NldHJlZnMuYwppbmRleCAxY2IwYWJkYmMxLi43MjBmMjBmNTYzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0zNDgsNiArMzQ4LDI5IEBAIHNldF9wbGFu X3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4pCiAJCX0KIAl9CiAKKwkv KiBBbHNvIGZpeCB1cCB0aGUgaW5mb3JtYXRpb24gaW4gUGFydGl0aW9uUHJ1bmVJbmZvcy4gKi8K Kwlmb3JlYWNoIChsYywgcm9vdC0+cGFydFBydW5lSW5mb3MpCisJeworCQlQYXJ0aXRpb25QcnVu ZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdChsYyk7CisJCUxpc3RDZWxsICAqbDsKKworCQlmb3Jl YWNoKGwsIHBydW5laW5mby0+cHJ1bmVfaW5mb3MpCisJCXsKKwkJCUxpc3QJICAgKnBydW5lX2lu Zm9zID0gbGZpcnN0KGwpOworCQkJTGlzdENlbGwgICAqbDI7CisKKwkJCWZvcmVhY2gobDIsIHBy dW5lX2luZm9zKQorCQkJeworCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxm aXJzdChsMik7CisKKwkJCQkvKiBSVCBpbmRleCBvZiB0aGUgdGFibGUgdG8gd2hpY2ggdGhlIHBp bmZvIGJlbG9uZ3MuICovCisJCQkJcGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7CisJCQl9CisJ CX0KKworCQlnbG9iLT5wYXJ0UHJ1bmVJbmZvcyA9IGxhcHBlbmQoZ2xvYi0+cGFydFBydW5lSW5m b3MsIHBydW5laW5mbyk7CisJfQorCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTY1OCwyMSAr MTY4MSwxMiBAQCBzZXRfYXBwZW5kX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAlh cGxhbi0+YXBwcmVsaWRzID0gb2Zmc2V0X3JlbGlkX3NldChhcGxhbi0+YXBwcmVsaWRzLCBydG9m ZnNldCk7CiAKLQlpZiAoYXBsYW4tPnBhcnRfcHJ1bmVfaW5mbykKLQl7Ci0JCWZvcmVhY2gobCwg YXBsYW4tPnBhcnRfcHJ1bmVfaW5mby0+cHJ1bmVfaW5mb3MpCi0JCXsKLQkJCUxpc3QJICAgKnBy dW5lX2luZm9zID0gbGZpcnN0KGwpOwotCQkJTGlzdENlbGwgICAqbDI7Ci0KLQkJCWZvcmVhY2go bDIsIHBydW5lX2luZm9zKQotCQkJewotCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5m byA9IGxmaXJzdChsMik7Ci0KLQkJCQlwaW5mby0+cnRpbmRleCArPSBydG9mZnNldDsKLQkJCX0K LQkJfQotCX0KKwkvKgorCSAqIFBhcnRpdGlvblBydW5lSW5mb3Mgd2lsbCBiZSBhZGRlZCB0byBh IGxpc3QgaW4gUGxhbm5lckdsb2JhbCwgc28gdXBkYXRlCisJICogdGhlIGluZGV4LgorCSAqLwor CWlmIChhcGxhbi0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQorCQlhcGxhbi0+cGFydF9wcnVuZV9p bmRleCArPSBsaXN0X2xlbmd0aChyb290LT5nbG9iLT5wYXJ0UHJ1bmVJbmZvcyk7CiAKIAkvKiBX ZSBkb24ndCBuZWVkIHRvIHJlY3Vyc2UgdG8gbGVmdHRyZWUgb3IgcmlnaHR0cmVlIC4uLiAqLwog CUFzc2VydChhcGxhbi0+cGxhbi5sZWZ0dHJlZSA9PSBOVUxMKTsKQEAgLTE3MzQsMjEgKzE3NDgs MTIgQEAgc2V0X21lcmdlYXBwZW5kX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAlt cGxhbi0+YXBwcmVsaWRzID0gb2Zmc2V0X3JlbGlkX3NldChtcGxhbi0+YXBwcmVsaWRzLCBydG9m ZnNldCk7CiAKLQlpZiAobXBsYW4tPnBhcnRfcHJ1bmVfaW5mbykKLQl7Ci0JCWZvcmVhY2gobCwg bXBsYW4tPnBhcnRfcHJ1bmVfaW5mby0+cHJ1bmVfaW5mb3MpCi0JCXsKLQkJCUxpc3QJICAgKnBy dW5lX2luZm9zID0gbGZpcnN0KGwpOwotCQkJTGlzdENlbGwgICAqbDI7Ci0KLQkJCWZvcmVhY2go bDIsIHBydW5lX2luZm9zKQotCQkJewotCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5m byA9IGxmaXJzdChsMik7Ci0KLQkJCQlwaW5mby0+cnRpbmRleCArPSBydG9mZnNldDsKLQkJCX0K LQkJfQotCX0KKwkvKgorCSAqIFBhcnRpdGlvblBydW5lSW5mb3Mgd2lsbCBiZSBhZGRlZCB0byBh IGxpc3QgaW4gUGxhbm5lckdsb2JhbCwgc28gdXBkYXRlCisJICogdGhlIGluZGV4LgorCSAqLwor CWlmIChtcGxhbi0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQorCQltcGxhbi0+cGFydF9wcnVuZV9p bmRleCArPSBsaXN0X2xlbmd0aChyb290LT5nbG9iLT5wYXJ0UHJ1bmVJbmZvcyk7CiAKIAkvKiBX ZSBkb24ndCBuZWVkIHRvIHJlY3Vyc2UgdG8gbGVmdHRyZWUgb3IgcmlnaHR0cmVlIC4uLiAqLwog CUFzc2VydChtcGxhbi0+cGxhbi5sZWZ0dHJlZSA9PSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0cHJ1bmUuYwppbmRleCA2MTg4YmY2OWNiLi42NTY1YjZlZDAxIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBAIC0yMDksMTYgKzIwOSwyMCBAQCBzdGF0aWMgdm9pZCBw YXJ0a2V5X2RhdHVtX2Zyb21fZXhwcihQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAK IC8qCiAgKiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8KLSAqCQlCdWlsZHMgYSBQYXJ0aXRpb25Q cnVuZUluZm8gd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGV4ZWN1dG9yIHRvIGFsbG93Ci0gKgkJ YWRkaXRpb25hbCBwYXJ0aXRpb24gcHJ1bmluZyB0byB0YWtlIHBsYWNlLiAgUmV0dXJucyBOVUxM IHdoZW4KLSAqCQlwYXJ0aXRpb24gcHJ1bmluZyB3b3VsZCBiZSB1c2VsZXNzLgorICoJCUNoZWNr cyBpZiB0aGUgZ2l2ZW4gc2V0IG9mIHF1YWxzIGNhbiBiZSB1c2VkIHRvIGJ1aWxkIHBydW5pbmcg c3RlcHMKKyAqCQl0aGF0IHRoZSBleGVjdXRvciBjYW4gdXNlIHRvIHBydW5lIGF3YXkgdW5uZWVk ZWQgcGFydGl0aW9ucy4gIElmCisgKgkJc3VpdGFibGUgcXVhbHMgYXJlIGZvdW5kIHRoZW4gYSBQ YXJ0aXRpb25QcnVuZUluZm8gaXMgYnVpbHQgYW5kIHRhZ2dlZAorICoJCW9udG8gdGhlIFBsYW5u ZXJJbmZvJ3MgcGFydFBydW5lSW5mb3MgbGlzdC4KKyAqCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlz IHRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZSBpdGVtIGFkZGVkIHRvIHRoZQorICogcGFydFBydW5l SW5mb3MgbGlzdCBvciAtMSBpZiBub3RoaW5nIHdhcyBhZGRlZC4KICAqCiAgKiAncGFyZW50cmVs JyBpcyB0aGUgUmVsT3B0SW5mbyBmb3IgYW4gYXBwZW5kcmVsLCBhbmQgJ3N1YnBhdGhzJyBpcyB0 aGUgbGlzdAogICogb2Ygc2NhbiBwYXRocyBmb3IgaXRzIGNoaWxkIHJlbHMuCiAgKiAncHJ1bmVx dWFsJyBpcyBhIGxpc3Qgb2YgcG90ZW50aWFsIHBydW5pbmcgcXVhbHMgKGkuZS4sIHJlc3RyaWN0 aW9uCiAgKiBjbGF1c2VzIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGFwcGVuZHJlbCkuCiAg Ki8KLVBhcnRpdGlvblBydW5lSW5mbyAqCitpbnQKIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJIExpc3QgKnN1 YnBhdGhzLAogCQkJCQkJIExpc3QgKnBydW5lcXVhbCkKQEAgLTMzMiw3ICszMzYsNyBAQCBtYWtl X3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVu dHJlbCwKIAkgKiBxdWFscywgdGhlbiB3ZSBjYW4ganVzdCBub3QgYm90aGVyIHdpdGggcnVuLXRp bWUgcHJ1bmluZy4KIAkgKi8KIAlpZiAocHJ1bmVyZWxpbmZvcyA9PSBOSUwpCi0JCXJldHVybiBO VUxMOworCQlyZXR1cm4gLTE7CiAKIAkvKiBFbHNlIGJ1aWxkIHRoZSByZXN1bHQgZGF0YSBzdHJ1 Y3R1cmUgKi8KIAlwcnVuZWluZm8gPSBtYWtlTm9kZShQYXJ0aXRpb25QcnVuZUluZm8pOwpAQCAt MzU4LDcgKzM2Miw5IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCWVsc2UKIAkJcHJ1bmVpbmZvLT5vdGhlcl9zdWJw bGFucyA9IE5VTEw7CiAKLQlyZXR1cm4gcHJ1bmVpbmZvOworCXJvb3QtPnBhcnRQcnVuZUluZm9z ID0gbGFwcGVuZChyb290LT5wYXJ0UHJ1bmVJbmZvcywgcHJ1bmVpbmZvKTsKKworCXJldHVybiBs aXN0X2xlbmd0aChyb290LT5wYXJ0UHJ1bmVJbmZvcykgLSAxOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5oCmluZGV4IDcwODQzNWU5NTIuLmJmOTYyYWY3YWYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKQEAgLTEyMyw5ICsxMjMsOCBAQCB0eXBlZGVm IHN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlCiAKIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRl ICpFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJ CQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAotCQkJCQkJCQkJCQkJCSBQYXJ0aXRpb25QcnVu ZUluZm8gKnBydW5laW5mbywKKwkJCQkJCQkJCQkJCQkgaW50IHBhcnRfcHJ1bmVfaW5kZXgsCiAJ CQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyk7CiBleHRl cm4gQml0bWFwc2V0ICpFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0 ZSAqcHJ1bmVzdGF0ZSwKIAkJCQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUpOwotCiAjZW5k aWYJCQkJCQkJLyogRVhFQ1BBUlRJVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDAx YjE3MjdmYzAuLjRhNzQxYjA1M2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MTEsNiArNjEx LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJc3RydWN0IEV4ZWNSb3dNYXJrICoqZXNfcm93 bWFya3M7CS8qIEFycmF5IG9mIHBlci1yYW5nZS10YWJsZS1lbnRyeQogCQkJCQkJCQkJCSAqIEV4 ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRz dG10OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KKwlMaXN0CQkqZXNfcGFydF9wcnVu ZV9pbmZvczsJLyogUGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3MgKi8KIAljb25zdCBjaGFyICpl c19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAqLwogCiAJSnVua0Zp bHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggMDkzNDJkMTI4ZC4uZmJlNzVkY2EwZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmgKQEAgLTEyMiw2ICsxMjIsOSBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVyR2xv YmFsCiAJLyogImZsYXQiIGxpc3Qgb2YgQXBwZW5kUmVsSW5mb3MgKi8KIAlMaXN0CSAgICphcHBl bmRSZWxhdGlvbnM7CiAKKwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWluZWQg aW4gdGhlIHBsYW4gKi8KKwlMaXN0CSAgICpwYXJ0UHJ1bmVJbmZvczsKKwogCS8qIE9JRHMgb2Yg cmVsYXRpb25zIHRoZSBwbGFuIGRlcGVuZHMgb24gKi8KIAlMaXN0CSAgICpyZWxhdGlvbk9pZHM7 CiAKQEAgLTUwMyw2ICs1MDYsOSBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAogCS8qIERvZXMgdGhp cyBxdWVyeSBtb2RpZnkgYW55IHBhcnRpdGlvbiBrZXkgY29sdW1ucz8gKi8KIAlib29sCQlwYXJ0 Q29sc1VwZGF0ZWQ7CisKKwkvKiBQYXJ0aXRpb25QcnVuZUluZm9zIGFkZGVkIGluIHRoaXMgcXVl cnkncyBwbGFuLiAqLworCUxpc3QJICAgKnBhcnRQcnVuZUluZm9zOwogfTsKIAogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oCmluZGV4IDVjMmFiMWIzNzkuLjJlMTMyYWZjNWEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oCkBAIC03MCw2ICs3MCw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZWRTdG10CiAKIAlzdHJ1 Y3QgUGxhbiAqcGxhblRyZWU7CQkvKiB0cmVlIG9mIFBsYW4gbm9kZXMgKi8KIAorCUxpc3QJICAg KnBhcnRQcnVuZUluZm9zOwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWluZWQg aW4KKwkJCQkJCQkJICogdGhlIHBsYW4gKi8KKwogCUxpc3QJICAgKnJ0YWJsZTsJCQkvKiBsaXN0 IG9mIFJhbmdlVGJsRW50cnkgbm9kZXMgKi8KIAogCS8qIHJ0YWJsZSBpbmRleGVzIG9mIHRhcmdl dCByZWxhdGlvbnMgZm9yIElOU0VSVC9VUERBVEUvREVMRVRFL01FUkdFICovCkBAIC0yNzAsOCAr MjczLDggQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kCiAJICovCiAJaW50CQkJZmlyc3RfcGFydGlh bF9wbGFuOwogCi0JLyogSW5mbyBmb3IgcnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlm IHdlJ3JlIG5vdCBkb2luZyB0aGF0ICovCi0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFy dF9wcnVuZV9pbmZvOworCS8qIEluZGV4IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9y IC0xIGlmIG5vIHJ1bi10aW1lIHBydW5pbmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4Owog fSBBcHBlbmQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTMwNSw4ICszMDgsOCBAQCB0eXBl ZGVmIHN0cnVjdCBNZXJnZUFwcGVuZAogCS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0aW9ucyAq LwogCWJvb2wJICAgKm51bGxzRmlyc3QgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykp OwogCi0JLyogSW5mbyBmb3IgcnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3Jl IG5vdCBkb2luZyB0aGF0ICovCi0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVu ZV9pbmZvOworCS8qIEluZGV4IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlm IG5vIHJ1bi10aW1lIHBydW5pbmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBNZXJn ZUFwcGVuZDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRw cnVuZS5oCmluZGV4IDkwNjg0ZWZhMjUuLmViZjBkY2ZmOGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25p bmcvcGFydHBydW5lLmgKQEAgLTcwLDEwICs3MCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25QcnVuZUNvbnRleHQKICNkZWZpbmUgUHJ1bmVDeHRTdGF0ZUlkeChwYXJ0bmF0dHMsIHN0ZXBf aWQsIGtleW5vKSBcCiAJKChwYXJ0bmF0dHMpICogKHN0ZXBfaWQpICsgKGtleW5vKSkKIAotZXh0 ZXJuIFBhcnRpdGlvblBydW5lSW5mbyAqbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHN0cnVjdCBQ bGFubmVySW5mbyAqcm9vdCwKLQkJCQkJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50 cmVsLAotCQkJCQkJCQkJCQkJCUxpc3QgKnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCUxpc3QgKnBy dW5lcXVhbCk7CitleHRlcm4gaW50IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxh bm5lckluZm8gKnJvb3QsCisJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAor CQkJCQkJCQkJTGlzdCAqc3VicGF0aHMsCisJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOwogZXh0 ZXJuIEJpdG1hcHNldCAqcHJ1bmVfYXBwZW5kX3JlbF9wYXJ0aXRpb25zKHN0cnVjdCBSZWxPcHRJ bmZvICpyZWwpOwogZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X21hdGNoaW5nX3BhcnRpdGlvbnMoUGFy dGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgTGlzdCAqcHJ1bmluZ19z dGVwcyk7Ci0tIAoyLjM1LjMKCg== --000000000000a6c2e105ebfb163c Content-Type: application/octet-stream; name="v23-0002-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Disposition: attachment; filename="v23-0002-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l9qgm17u0 RnJvbSBhZTlhNmI3MTg2Yzc3ODg4ZmQ4NWRkN2U0MDU2ZGQzY2Q2MDc2MTdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBEZWMgMjAyMSAxNjo1NToxNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjIzIDIv Ml0gT3B0aW1pemUgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBieSBsb2NraW5nIG9ubHkKIHVucHJ1 bmVkIHBhcnRpdGlvbnMKClRoaXMgY29tbWl0IHRlYWNoZXMgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSB0byBwZXJmb3JtIGluaXRpYWwKcGFydGl0aW9uIHBydW5pbmcgdG8gbm90aW9uYWxseSBlbGlt aW5hdGUgdGhlIHN1Ym5vZGVzIGNvbnRhaW5lZCBpbiBhCmdlbmVyaWMgY2FjaGVkIHBsYW4gdGhh dCBuZWVkIG5vdCBiZSBpbml0aWFsaXplZCBkdXJpbmcgdGhlIGFjdHVhbApleGVjdXRpb24gb2Yg dGhlIHBsYW4gYW5kIHNraXAgbG9ja2luZyB0aGUgcGFydGl0aW9uIHNjYW5uZWQgYnkgdGhvc2UK c3Vibm9kZXMuCgpUaGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1 bmluZyB0aGlzIHdheSBiZWZvcmUgdGhlCmFjdHVhbCBleGVjdXRpb24gaGFzIHN0YXJ0ZWQgaXMg bWFkZSBhdmFpbGFibGUgdG8gdGhlIGFjdHVhbCBleGVjdXRpb24gdmlhClBhcnRpdGlvblBydW5l UmVzdWx0LCBtYWRlIGF2YWlsYWJsZSBhbG9uZyB3aXRoIHRoZSBQbGFubmVkU3RtdCBieSB0aGUK Y2FsbGVycyBvZiB0aGUgZXhlY3V0b3IgdGhhdCB1c2VkIHBsYW5jYWNoZS5jIHRvIGdldCB0aGUg cGxhbi4gIEl0IGlzIE5VTEwKaW4gdGhlIGNhc2VzIGluIHdoaWNoIHRoZSBwbGFuIGlzIG9idGFp bmVkIGJ5IGNhbGxpbmcgdGhlIHBsYW5uZXIKZGlyZWN0bHkgb3IgaWYgdGhlIHBsYW4gb2J0YWlu ZWQgYnkgcGxhbmNhY2hlLmMgaXMgbm90IGEgZ2VuZXJpYyBvbmUuCi0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NyZWF0ZWFzLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICB8ICAyNiArKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgICAgICAgIHwgIDMyICsrKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgIHwgIDUxICsrKysrKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgfCAgMjYgKystCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMgICB8IDI0MSArKysrKysrKysrKysrKysrKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFwcGVuZC5jICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJn ZUFwcGVuZC5jIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAg ICB8ICAyNyArKy0KIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgIHwgICA4 ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICB8ICAgMiArCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICB8ICA0NiArKysrKwogc3JjL2JhY2tl bmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAgfCAgNDEgKysrKy0KIHNyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYyAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC90Y29wL3BxdWVy eS5jICAgICAgICAgICAgICB8ICAyOCArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5j YWNoZS5jICAgIHwgMjA4ICsrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMv bW1nci9wb3J0YWxtZW0uYyAgICAgfCAgMTkgKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxh aW4uaCAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9u LmggICB8ICAgOSArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAgICAgICAgfCAg IDMgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgfCAgIDMgKwogc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv bm9kZXMvbm9kZXMuaCAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmggICAgICAgICAgfCAgMTIgKysKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5o ICAgICAgICAgIHwgIDQ2ICsrKysrCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAg ICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgfCAg IDMgKwogMzMgZmlsZXMgY2hhbmdlZCwgNzgyIGluc2VydGlvbnMoKyksIDEwMCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IDI1MjdlNjYwNTkuLmZiODc3OWZlYzAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHl0by5jCkBAIC01NTgsNyArNTU4LDcgQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCQkoKERSX2NvcHkgKikgZGVzdCktPmNzdGF0ZSA9IGNzdGF0ZTsKIAogCQkv KiBDcmVhdGUgYSBRdWVyeURlc2MgcmVxdWVzdGluZyBubyBvdXRwdXQgKi8KLQkJY3N0YXRlLT5x dWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJ CWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5JTCwgcHN0YXRlLT5w X3NvdXJjZXRleHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJ CUludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYwppbmRleCAxNTJjMjliNTUxLi45NDI0NDk1NDRjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NyZWF0ZWFzLmMKQEAgLTMyNSw3ICszMjUsNyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVBY3RpdmVT bmFwc2hvdENvbW1hbmRJZCgpOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rp bmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBDcmVhdGVR dWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhwbGFuLCBOSUwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJR2V0 QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJZGVzdCwgcGFyYW1z LCBxdWVyeUVudiwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBmODY5ODNjNjYwLi4y ZjJiNTU4NjA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC00MDcsNyArNDA3LDcgQEAgRXhw bGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCX0KIAogCQkv KiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JCUV4cGxhaW5PbmVQ bGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwkJRXhw bGFpbk9uZVBsYW4ocGxhbiwgTklMLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVl cnlFbnYsCiAJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6 IE5VTEwpKTsKIAl9CiB9CkBAIC01MTUsNyArNTE1LDggQEAgRXhwbGFpbk9uZVV0aWxpdHkoTm9k ZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAgKiB0 byBjYWxsIGl0LgogICovCiB2b2lkCi1FeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5l ZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCitFeHBsYWluT25lUGxh bihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIExpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0cywKKwkJ CSAgIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkgICBjb25zdCBjaGFy ICpxdWVyeVN0cmluZywgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgICBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudiwgY29uc3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9uLAogCQkJICAgY29u c3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlKQpAQCAtNTYzLDcgKzU2NCw3IEBAIEV4cGxhaW5PbmVQ bGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0 YXRlICplcywKIAkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURl c2MgZm9yIHRoZSBxdWVyeSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVk c3RtdCwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRz dG10LCBwYXJ0X3BydW5lX3Jlc3VsdHMsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVT bmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlF bnYsIGluc3RydW1lbnRfb3B0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwppbmRleCAx YTYyZTVkYWM1Li5jYzM2YjZmZDE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9l eHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwpAQCAtNzc2 LDcgKzc3Niw3IEBAIGV4ZWN1dGVfc3FsX3N0cmluZyhjb25zdCBjaGFyICpzcWwpCiAJCQl7CiAJ CQkJUXVlcnlEZXNjICAqcWRlc2M7CiAKLQkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10 LAorCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsIE5JTCwKIAkJCQkJCQkJCQlzcWws CiAJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgTlVMTCwKIAkJCQkJCQkJCQlkZXN0LCBO VUxMLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwppbmRleCA5YWMwMzgzNDU5Li42NWM4 ZDBhYTU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCkBAIC00MDgsNyArNDA4LDcgQEAgcmVmcmVz aF9tYXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5LAogCVVw ZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2Ms IHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRl UXVlcnlEZXNjKHBsYW4sIE5JTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBz aG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCA5ZTI5NTg0ZDkzLi4yOWI0NTUzOWQzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHJlcGFyZS5jCkBAIC0xNTUsNiArMTU1LDcgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAlQcmVwYXJlZFN0YXRlbWVudCAqZW50cnk7CiAJQ2FjaGVkUGxhbiAqY3Bs YW47CiAJTGlzdAkgICAqcGxhbl9saXN0OworCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0c19s aXN0OwogCVBhcmFtTGlzdEluZm8gcGFyYW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUg PSBOVUxMOwogCVBvcnRhbAkJcG9ydGFsOwpAQCAtMTkzLDcgKzE5NCwxMCBAQCBFeGVjdXRlUXVl cnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJICAgZW50cnktPnBsYW5zb3VyY2UtPnF1 ZXJ5X3N0cmluZyk7CiAKIAkvKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgaW5jcmVtZW50IHBsYW4g cmVmY291bnQgZm9yIHBvcnRhbCAqLwotCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxh bnNvdXJjZSwgcGFyYW1MSSwgTlVMTCwgTlVMTCk7CisJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVu dHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBOVUxMLAorCQkJCQkJICAmcGFydF9wcnVu ZV9yZXN1bHRzX2xpc3QpOworCUFzc2VydChsaXN0X2xlbmd0aChjcGxhbi0+c3RtdF9saXN0KSA9 PQorCQkgICBsaXN0X2xlbmd0aChwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCkpOwogCXBsYW5fbGlz dCA9IGNwbGFuLT5zdG10X2xpc3Q7CiAKIAkvKgpAQCAtMjA3LDYgKzIxMSw5IEBAIEV4ZWN1dGVR dWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCSAgcGxhbl9saXN0LAogCQkJCQkgIGNwbGFu KTsKIAorCS8qIENvcHkgTGlzdHMgb2YgUGFydGl0aW9uUHJ1bmVSZXN1bHRzIGludG8gdGhlIHBv cnRhbCdzIGNvbnRleHQuICovCisJUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMocG9y dGFsLCBwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCk7CisKIAkvKgogCSAqIEZvciBDUkVBVEUgVEFC TEUgLi4uIEFTIEVYRUNVVEUsIHdlIG11c3QgdmVyaWZ5IHRoYXQgdGhlIHByZXBhcmVkCiAJICog c3RhdGVtZW50IGlzIG9uZSB0aGF0IHByb2R1Y2VzIHR1cGxlcy4gIEN1cnJlbnRseSB3ZSBpbnNp c3QgdGhhdCBpdCBiZQpAQCAtNTc2LDcgKzU4Myw5IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhl Y3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAog CWNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZzsKIAlDYWNoZWRQbGFuICpjcGxhbjsKIAlMaXN0CSAg ICpwbGFuX2xpc3Q7Ci0JTGlzdENlbGwgICAqcDsKKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3Vs dHNfbGlzdDsKKwlMaXN0Q2VsbCAgICpwLAorCQkJICAgKnBwOwogCVBhcmFtTGlzdEluZm8gcGFy YW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxMOwogCWluc3RyX3RpbWUJcGxh bnN0YXJ0OwpAQCAtNjE5LDcgKzYyOCwxMCBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVT dG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAogCS8q IFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBhY3F1aXJlIGEgdHJhbnNpZW50IHJlZmNvdW50ICovCiAJ Y3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLAotCQkJCQkJ ICBDdXJyZW50UmVzb3VyY2VPd25lciwgcXVlcnlFbnYpOworCQkJCQkJICBDdXJyZW50UmVzb3Vy Y2VPd25lciwgcXVlcnlFbnYsCisJCQkJCQkgICZwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCk7CisJ QXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09CisJCSAgIGxpc3RfbGVuZ3Ro KHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KSk7CiAKIAlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBs YW5kdXJhdGlvbik7CiAJSU5TVFJfVElNRV9TVUJUUkFDVChwbGFuZHVyYXRpb24sIHBsYW5zdGFy dCk7CkBAIC02MzQsMTMgKzY0NiwxNSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10 ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlwbGFuX2xp c3QgPSBjcGxhbi0+c3RtdF9saXN0OwogCiAJLyogRXhwbGFpbiBlYWNoIHF1ZXJ5ICovCi0JZm9y ZWFjaChwLCBwbGFuX2xpc3QpCisJZm9yYm90aChwLCBwbGFuX2xpc3QsIHBwLCBwYXJ0X3BydW5l X3Jlc3VsdHNfbGlzdCkKIAl7CiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBs YW5uZWRTdG10LCBwKTsKKwkJTGlzdCAqcGFydF9wcnVuZV9yZXN1bHRzID0gbGZpcnN0X25vZGUo TGlzdCwgcHApOwogCiAJCWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpCi0J CQlFeHBsYWluT25lUGxhbihwc3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwg cXVlcnlFbnYsCi0JCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNh Z2UgOiBOVUxMKSk7CisJCQlFeHBsYWluT25lUGxhbihwc3RtdCwgcGFydF9wcnVuZV9yZXN1bHRz LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLAorCQkJCQkJICAgcGFyYW1MSSwgcXVlcnlFbnYsICZw bGFuZHVyYXRpb24sCisJCQkJCQkgICAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7 CiAJCWVsc2UKIAkJCUV4cGxhaW5PbmVVdGlsaXR5KHBzdG10LT51dGlsaXR5U3RtdCwgaW50bywg ZXMsIHF1ZXJ5X3N0cmluZywKIAkJCQkJCQkgIHBhcmFtTEksIHF1ZXJ5RW52KTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JF QURNRQppbmRleCAwYjUxODNmYzRhLi5mMTRmOTE5N2I1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCkBAIC02 NSw2ICs2NSwzNCBAQCBmb3VuZCB0aGVyZS4gIFRoaXMgY3VycmVudGx5IG9ubHkgb2NjdXJzIGZv ciBBcHBlbmQgYW5kIE1lcmdlQXBwZW5kIG5vZGVzLiAgSW4KIHRoaXMgY2FzZSB0aGUgbm9uLXJl cXVpcmVkIHN1YnBsYW5zIGFyZSBpZ25vcmVkIGFuZCB0aGUgZXhlY3V0b3Igc3RhdGUncwogc3Vi bm9kZSBhcnJheSB3aWxsIGJlY29tZSBvdXQgb2Ygc2VxdWVuY2UgdG8gdGhlIHBsYW4ncyBzdWJw bGFuIGxpc3QuCiAKK0FjdHVhbGx5LCB0aGUgc28tY2FsbGVkIGV4ZWN1dGlvbiB0aW1lIHBydW5p bmcgbWF5IGFsc28gb2NjdXIgZXZlbiBiZWZvcmUgdGhlCitleGVjdXRpb24gaGFzIHN0YXJ0ZWQu ICBPbmUgY2FzZSB3aGVyZSB0aGF0IG9jY3VycyBpcyB3aGVuIGEgY2FjaGVkIGdlbmVyaWMKK3Bs YW4gaXMgYmVpbmcgdmFsaWRhdGVkIGZvciBleGVjdXRpb24gYnkgcGxhbmNhY2hlLmM6IEdldENh Y2hlZFBsYW4oKSwgd2hpY2gKK3dvcmtzIGJ5IGxvY2tpbmcgYWxsIHRoZSByZWxhdGlvbnMgdGhh dCB3aWxsIGJlIHNjYW5uZWQgYnkgdGhhdCBwbGFuLiAgSWYgdGhlCitnZW5lcmljIHBsYW4gY29u dGFpbnMgbm9kZXMgdGhhdCBjYW4gcGVyZm9ybSBleGVjdXRpb24gdGltZSBwYXJ0aXRpb24gcHJ1 bmluZworKHRoYXQgaXMsIGNvbnRhaW4gYSBQYXJ0aXRpb25QcnVuZUluZm8pLCBhIHN1YnNldCBv ZiBwcnVuaW5nIHN0ZXBzIGNvbnRhaW5lZAoraW4gYSBnaXZlbiBub2RlJ3MgUGFydGl0aW9uUHJ1 bmVJbmZvIHRoYXQgZG8gbm90IGRlcGVuZCBvbiB0aGUgZXhlY3V0aW9uCithY3R1YWxseSBoYXZp bmcgc3RhcnRlZCAoY2FsbGVkICJpbml0aWFsIiBwcnVuaW5nIHN0ZXBzKSBhcmUgcGVyZm9ybWVk IHRvCitmaWd1cmUgb3V0IHRoZSBtaW5pbWFsIHNldCBvZiBjaGlsZCBzdWJwbGFucyB0aGF0IHNh dGlzZnkgdGhvc2UgcHJ1bmluZyBzdGVwcy4KK0FjcXVpcmVFeGVjdXRvckxvY2tzKCkgbG9va2lu ZyBhdCBhIGdpdmVuIGdlbmVyaWMgcGxhbiB3aWxsIHRoZW4gbG9jayBvbmx5IHRoZQorcmVsYXRp b25zIHNjYW5uZWQgYnkgdGhlIGNoaWxkIHN1YnBsYW5zIHRoYXQgc3Vydml2ZWQgc3VjaCBwcnVu aW5nLCBhbG9uZyB3aXRoCit0aG9zZSBwcmVzZW50IGluIFBsYW5uZWRTdG10Lm1pbkxvY2tSZWxp ZHMuICBOb3RlIHRoYXQgdGhlIHN1YnBsYW5zIGFyZSBvbmx5Citub3Rpb25hbGx5IHBydW5lZCwg dGhhdCBpcywgdGhleSBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgcGxhbiB0cmVlIGFzIHN1Y2gu CisKK1RvIHByZXZlbnQgdGhlIGV4ZWN1dG9yIGFuZCBhbnkgdGhpcmQgcGFydHkgZXhlY3V0aW9u IGNvZGUgdGhhdCBjYW4gbG9vayBhdAordGhlIHBsYW4gdHJlZSBmcm9tIHRyeWluZyB0byBleGVj dXRlIHRoZSBzdWJwbGFucyB0aGF0IHdlcmUgcHJ1bmVkIGFzCitkZXNjcmliZWQgYWJvdmUsIHRo ZSByZXN1bHQgb2YgcHJ1bmluZyBpcyBwYXNzZWQgdG8gdGhlIGV4ZWN1dG9yIGFzIGEgTGlzdAor b2YgUGFydGl0aW9uUHJ1bmVSZXN1bHQgbm9kZXMgdmlhIHRoZSBRdWVyeURlc2MuICBFYWNoIFBh cnRpdGlvblBydW5lUmVzdWx0Citjb25zaXN0cyBvZiB0aGUgc2V0IG9mIGluZGV4ZXMgb2Ygc3Vy dml2aW5nIHN1YnBsYW5zIGluIHRoZSByZXNwZWN0aXZlIHBhcmVudAorcGxhbiBub2RlJ3MgKHRo ZSBvbmUgdG8gd2hpY2ggdGhlIGNvcnJlc3BvbmRpbmcgUGFydGl0aW9uUHJ1bmVJbmZvIGJlbG9u Z3MpCitsaXN0IG9mIGNoaWxkIHN1YnBsYW5zLCBzYXZlZCBhcyBhIGJpdG1hcHNldCAodmFsaWRf c3VicGxhbl9vZmZzKS4gIEluIG90aGVyCit3b3JkcywgdGhlIGV4ZWN1dG9yIGV4ZWN1dGluZyBh IGdlbmVyaWMgcGxhbiBzaG91bGQgbm90IHJlLWV2YWx1YXRlIHRoZSBzZXQgb2YKK2luaXRpYWxs eSB2YWxpZCBzdWJwbGFucyBmb3IgYSBnaXZlbiBwbGFuIG5vZGUgYnkgcmVkb2luZyB0aGUgaW5p dGlhbCBwcnVuaW5nCitpZiBpdCB3YXMgYWxyZWFkeSBkb25lIGJ5IEFjcXVpcmVFeGVjdXRvckxv Y2tzKCkgd2hlbiB2YWxpZGF0aW5nIHRoZSBwbGFuLgorU3VjaCByZS1ldmFsdWF0aW9uIG9mIHRo ZSBwcnVuaW5nIHN0ZXBzIG1heSB2ZXJ5IHdlbGwgZW5kIHVwIHJlc3VsdGluZyBpbiBhCitkaWZm ZXJlbnQgc2V0IG9mIHN1YnBsYW5zLCBjb250YWluaW5nIHNvbWUgd2hvc2UgcmVsYXRpb25zIHdl cmUgbm90IGxvY2tlZCBieQorQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKS4KKwogRWFjaCBQbGFuIG5v ZGUgbWF5IGhhdmUgZXhwcmVzc2lvbiB0cmVlcyBhc3NvY2lhdGVkIHdpdGggaXQsIHRvIHJlcHJl c2VudAogaXRzIHRhcmdldCBsaXN0LCBxdWFsaWZpY2F0aW9uIGNvbmRpdGlvbnMsIGV0Yy4gIFRo ZXNlIHRyZWVzIGFyZSBhbHNvCiByZWFkLW9ubHkgdG8gdGhlIGV4ZWN1dG9yLCBidXQgdGhlIGV4 ZWN1dG9yIHN0YXRlIGZvciBleHByZXNzaW9uIGV2YWx1YXRpb24KQEAgLTI4Niw2ICszMTQsMTAg QEAgUXVlcnkgUHJvY2Vzc2luZyBDb250cm9sIEZsb3cKIAogVGhpcyBpcyBhIHNrZXRjaCBvZiBj b250cm9sIGZsb3cgZm9yIGZ1bGwgcXVlcnkgcHJvY2Vzc2luZzoKIAorICBbIEV4ZWN1dG9yRG9J bml0aWFsUHJ1bmluZyBdIC0tLSBhbiBvcHRpb25hbCBzdGVwIHRvIHBlcmZvcm0gaW5pdGlhbAor CQlwYXJ0aXRpb24gcHJ1bmluZyBvbiB0aGUgcGxhbiB0cmVlIHRoZSByZXN1bHQgb2Ygd2hpY2gg aXMgcGFzc2VkCisJCXRvIHRoZSBleGVjdXRvciB2aWEgUXVlcnlEZXNjCisKIAlDcmVhdGVRdWVy eURlc2MKIAogCUV4ZWN1dG9yU3RhcnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDMyNDc1 ZTMzZmYuLmI1OTQ3NDg0MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNDksNiArNDks NyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL21hdHZpZXcuaCIKICNpbmNsdWRlICJjb21tYW5kcy90 cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2RlYnVnLmgiCisjaW5jbHVkZSAiZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFuLmgi CiAjaW5jbHVkZSAiZm9yZWlnbi9mZHdhcGkuaCIKICNpbmNsdWRlICJqaXQvaml0LmgiCkBAIC0x MDQsNiArMTA1LDU0IEBAIHN0YXRpYyB2b2lkIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICpl cHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpOwogCiAvKiBlbmQgb2YgbG9jYWwgZGVjbHMgKi8KIAor LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICoJCUV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZworICoKKyAqCQlGb3IgZWFj aCBwbGFuIHRyZWUgbm9kZSB0aGF0IGhhcyBiZWVuIGFzc2lnbmVkIGEgUGFydGl0aW9uUHJ1bmVJ bmZvLAorICoJCXRoaXMgcGVyZm9ybXMgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmluZyB1c2luZyB0 aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisgKgkJdGhlcmVpbiB0byBkZXRlcm1pbmUgdGhlIHNl dCBvZiBjaGlsZCBzdWJwbGFucyB0aGF0IHNhdGlzZnkgdGhlIGluaXRpYWwKKyAqCQlwcnVuaW5n IHN0ZXBzLCB0byBiZSByZXR1cm5lZCBhcyBhIGJpdG1hcHNldCBvZiB0aGVpciBpbmRleGVzIGlu IHRoZQorICoJCW5vZGUncyBsaXN0IG9mIGNoaWxkIHN1YnBsYW5zIChmb3IgZXhhbXBsZSwgYW4g QXBwZW5kJ3MgYXBwZW5kcGxhbnMpLgorICoKKyAqIFJldHVybiB2YWx1ZSBpcyBhIFBhcnRpdGlv blBydW5lUmVzdWx0IG5vZGUgdGhhdCBjb250YWlucyBhIGxpc3Qgb2YgdGhvc2UKKyAqIGJpdG1h cHNldHMsIHdpdGggb25lIGVsZW1lbnQgZm9yIGV2ZXJ5IFBhcnRpdGlvblBydW5lSW5mbywgYW5k IGEgYml0bWFwc2V0CisgKiBvZiB0aGUgUlQgaW5kZXhlcyBvZiBhbGwgdGhlIGxlYWYgcGFydGl0 aW9ucyBzY2FubmVkIGJ5IHRob3NlIGNob3NlbgorICogc3VicGxhbnMuICBOb3RlIHRoYXQgdGhl IGxhdHRlciBpcyBzaGFyZWQgYWNyb3NzIGFsbCBQYXJ0aXRpb25QcnVuZUluZm9zLgorICoKKyAq IFRoZSBleGVjdXRvciBtdXN0IHNlZSB0aGUgZXhhY3RseSBzYW1lIHNldCBvZiBzdWJwbGFucyBh cyB2YWxpZCBmb3IKKyAqIGV4ZWN1dGlvbiB3aGVuIGRvaW5nIEV4ZWNJbml0Tm9kZSgpIG9uIHRo ZSBwbGFuIG5vZGVzIHdob3NlCisgKiBQYXJ0aXRpb25QcnVuZUluZm9zIGFyZSBwcm9jZXNzZWQg aGVyZS4gIFNvLCBpdCBtdXN0IGdldCB0aGUgc2V0IGZyb20gdGhlCisgKiBhZm9yZW1lbnRpb25l ZCBQYXJ0aXRpb25QcnVuZVJlc3VsdCwgaW5zdGVhZCBvZiBjb21wdXRpbmcgaXQgYWxsIG92ZXIK KyAqIGFnYWluIGJ5IHJlZG9pbmcgdGhlIGluaXRpYWwgcHJ1bmluZy4gIEl0J3MgdGhlIGNhbGxl cidzIGpvYiB0byBwYXNzIHRoZQorICogUGFydGl0aW9uUHJ1bmVSZXN1bHQgdG8gdGhlIGV4ZWN1 dG9yLgorICoKKyAqIE5vdGU6IFBhcnRpdGlvbmVkIHRhYmxlcyBtZW50aW9uZWQgaW4gUGFydGl0 aW9uZWRSZWxQcnVuZUluZm8gbm9kZXMgdGhhdAorICogZHJpdmUgdGhlIHBydW5pbmcgd2lsbCBi ZSBsb2NrZWQgYmVmb3JlIGRvaW5nIHRoZSBwcnVuaW5nLgorICogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitMaXN0 ICoKK0V4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIFBh cmFtTGlzdEluZm8gcGFyYW1zLAorCQkJCQkJIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRp cykKK3sKKwlMaXN0CSAqcGFydF9wcnVuZV9yZXN1bHRzID0gTklMOworCUxpc3RDZWxsICpsYzsK KworCS8qIE9ubHkgZ2V0IGhlcmUgaWYgdGhlcmUgaXMgYW55IHBydW5pbmcgdG8gZG8uICovCisJ QXNzZXJ0KHBsYW5uZWRzdG10LT5jb250YWluc0luaXRpYWxQcnVuaW5nKTsKKworCWZvcmVhY2go bGMsIHBsYW5uZWRzdG10LT5wYXJ0UHJ1bmVJbmZvcykKKwl7CisJCVBhcnRpdGlvblBydW5lSW5m byAqcHJ1bmVpbmZvID0gbGZpcnN0KGxjKTsKKwkJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBydW5l cmVzdWx0ID0gbWFrZU5vZGUoUGFydGl0aW9uUHJ1bmVSZXN1bHQpOworCisJCXBydW5lcmVzdWx0 LT52YWxpZF9zdWJwbGFuX29mZnMgPQorCQkJRXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmco cGxhbm5lZHN0bXQsIHBhcmFtcywgcHJ1bmVpbmZvLAorCQkJCQkJCQkJCSAgc2Nhbl9sZWFmcGFy dF9ydGlzKTsKKwkJcGFydF9wcnVuZV9yZXN1bHRzID0gbGFwcGVuZChwYXJ0X3BydW5lX3Jlc3Vs dHMsIHBydW5lcmVzdWx0KTsKKwl9CisKKwlyZXR1cm4gcGFydF9wcnVuZV9yZXN1bHRzOworfQog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKgkJRXhlY3V0b3JTdGFydApAQCAtODA2LDYgKzg1NSw3IEBAIEluaXRQ bGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogewogCUNtZFR5cGUJCW9wZXJh dGlvbiA9IHF1ZXJ5RGVzYy0+b3BlcmF0aW9uOwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9 IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQ7CisJTGlzdAkgICAqcGFydF9wcnVuZV9yZXN1bHRzID0g cXVlcnlEZXNjLT5wYXJ0X3BydW5lX3Jlc3VsdHM7CiAJUGxhbgkgICAqcGxhbiA9IHBsYW5uZWRz dG10LT5wbGFuVHJlZTsKIAlMaXN0CSAgICpyYW5nZVRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJs ZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0YXRlOwpAQCAtODI2LDYgKzg3 Niw3IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCiAJZXN0 YXRlLT5lc19wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVu ZV9pbmZvcyA9IHBsYW5uZWRzdG10LT5wYXJ0UHJ1bmVJbmZvczsKKwllc3RhdGUtPmVzX3BhcnRf cHJ1bmVfcmVzdWx0cyA9IHBhcnRfcHJ1bmVfcmVzdWx0czsKIAogCS8qCiAJICogTmV4dCwgYnVp bGQgdGhlIEV4ZWNSb3dNYXJrIGFycmF5IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMpLCBpZiBhbnku CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGFjYTBjNmYzMjMuLjkxNzA3OWEw MzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC02Niw2ICs2Niw3IEBACiAj ZGVmaW5lIFBBUkFMTEVMX0tFWV9RVUVSWV9URVhUCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAw MDAwMDgpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9KSVRfSU5TVFJVTUVOVEFUSU9OIFVJTlQ2NENP TlNUKDB4RTAwMDAwMDAwMDAwMDAwOSkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQkJ CVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwQSkKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1BB UlRJVElPTl9QUlVORV9SRVNVTFRTCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwQikKIAog I2RlZmluZSBQQVJBTExFTF9UVVBMRV9RVUVVRV9TSVpFCQk2NTUzNgogCkBAIC0xODIsNiArMTgz LDcgQEAgRXhlY1NlcmlhbGl6ZVBsYW4oUGxhbiAqcGxhbiwgRVN0YXRlICplc3RhdGUpCiAJcHN0 bXQtPnRyYW5zaWVudFBsYW4gPSBmYWxzZTsKIAlwc3RtdC0+ZGVwZW5kc09uUm9sZSA9IGZhbHNl OwogCXBzdG10LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBmYWxzZTsKKwlwc3RtdC0+Y29udGFpbnNJ bml0aWFsUHJ1bmluZyA9IGZhbHNlOwogCXBzdG10LT5wbGFuVHJlZSA9IHBsYW47CiAJcHN0bXQt PnBhcnRQcnVuZUluZm9zID0gZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zOwogCXBzdG10LT5y dGFibGUgPSBlc3RhdGUtPmVzX3JhbmdlX3RhYmxlOwpAQCAtNTk3LDEyICs1OTksMTUgQEAgRXhl Y0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAog CUZpeGVkUGFyYWxsZWxFeGVjdXRvclN0YXRlICpmcGVzOwogCWNoYXIJICAgKnBzdG10X2RhdGE7 CiAJY2hhcgkgICAqcHN0bXRfc3BhY2U7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRzX2Rh dGE7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNlOwogCWNoYXIJICAgKnBhcmFt bGlzdGluZm9fc3BhY2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlX3NwYWNlOwogCVdhbFVzYWdl ICAgKndhbHVzYWdlX3NwYWNlOwogCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICppbnN0 cnVtZW50YXRpb24gPSBOVUxMOwogCVNoYXJlZEppdEluc3RydW1lbnRhdGlvbiAqaml0X2luc3Ry dW1lbnRhdGlvbiA9IE5VTEw7CiAJaW50CQkJcHN0bXRfbGVuOworCWludAkJCXBhcnRfcHJ1bmVf cmVzdWx0c19sZW47CiAJaW50CQkJcGFyYW1saXN0aW5mb19sZW47CiAJaW50CQkJaW5zdHJ1bWVu dGF0aW9uX2xlbiA9IDA7CiAJaW50CQkJaml0X2luc3RydW1lbnRhdGlvbl9sZW4gPSAwOwpAQCAt NjMxLDYgKzYzNiw3IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRl LCBFU3RhdGUgKmVzdGF0ZSwKIAogCS8qIEZpeCB1cCBhbmQgc2VyaWFsaXplIHBsYW4gdG8gYmUg c2VudCB0byB3b3JrZXJzLiAqLwogCXBzdG10X2RhdGEgPSBFeGVjU2VyaWFsaXplUGxhbihwbGFu c3RhdGUtPnBsYW4sIGVzdGF0ZSk7CisJcGFydF9wcnVuZV9yZXN1bHRzX2RhdGEgPSBub2RlVG9T dHJpbmcoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMpOwogCiAJLyogQ3JlYXRlIGEgcGFy YWxsZWwgY29udGV4dC4gKi8KIAlwY3h0ID0gQ3JlYXRlUGFyYWxsZWxDb250ZXh0KCJwb3N0Z3Jl cyIsICJQYXJhbGxlbFF1ZXJ5TWFpbiIsIG53b3JrZXJzKTsKQEAgLTY1Nyw2ICs2NjMsMTEgQEAg RXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRl LAogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgcHN0bXRfbGVuKTsK IAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CiAKKwkvKiBFc3Rp bWF0ZSBzcGFjZSBmb3Igc2VyaWFsaXplZCBMaXN0IG9mIFBhcnRpdGlvblBydW5lUmVzdWx0LiAq LworCXBhcnRfcHJ1bmVfcmVzdWx0c19sZW4gPSBzdHJsZW4ocGFydF9wcnVuZV9yZXN1bHRzX2Rh dGEpICsgMTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBhcnRf cHJ1bmVfcmVzdWx0c19sZW4pOworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1h dG9yLCAxKTsKKwogCS8qIEVzdGltYXRlIHNwYWNlIGZvciBzZXJpYWxpemVkIFBhcmFtTGlzdElu Zm8uICovCiAJcGFyYW1saXN0aW5mb19sZW4gPSBFc3RpbWF0ZVBhcmFtTGlzdFNwYWNlKGVzdGF0 ZS0+ZXNfcGFyYW1fbGlzdF9pbmZvKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5l c3RpbWF0b3IsIHBhcmFtbGlzdGluZm9fbGVuKTsKQEAgLTc1MSw2ICs3NjIsMTIgQEAgRXhlY0lu aXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCW1l bWNweShwc3RtdF9zcGFjZSwgcHN0bXRfZGF0YSwgcHN0bXRfbGVuKTsKIAlzaG1fdG9jX2luc2Vy dChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9QTEFOTkVEU1RNVCwgcHN0bXRfc3BhY2UpOwogCisJ LyogU3RvcmUgc2VyaWFsaXplZCBMaXN0IG9mIFBhcnRpdGlvblBydW5lUmVzdWx0ICovCisJcGFy dF9wcnVuZV9yZXN1bHRzX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHBhcnRf cHJ1bmVfcmVzdWx0c19sZW4pOworCW1lbWNweShwYXJ0X3BydW5lX3Jlc3VsdHNfc3BhY2UsIHBh cnRfcHJ1bmVfcmVzdWx0c19kYXRhLCBwYXJ0X3BydW5lX3Jlc3VsdHNfbGVuKTsKKwlzaG1fdG9j X2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9QQVJUSVRJT05fUFJVTkVfUkVTVUxUUywK KwkJCQkgICBwYXJ0X3BydW5lX3Jlc3VsdHNfc3BhY2UpOworCiAJLyogU3RvcmUgc2VyaWFsaXpl ZCBQYXJhbUxpc3RJbmZvLiAqLwogCXBhcmFtbGlzdGluZm9fc3BhY2UgPSBzaG1fdG9jX2FsbG9j YXRlKHBjeHQtPnRvYywgcGFyYW1saXN0aW5mb19sZW4pOwogCXNobV90b2NfaW5zZXJ0KHBjeHQt PnRvYywgUEFSQUxMRUxfS0VZX1BBUkFNTElTVElORk8sIHBhcmFtbGlzdGluZm9fc3BhY2UpOwpA QCAtMTIzMiw4ICsxMjQ5LDEwIEBAIEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0 b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJCQkJCQkgaW50IGluc3RydW1lbnRfb3B0aW9u cykKIHsKIAljaGFyCSAgICpwc3RtdHNwYWNlOworCWNoYXIJICAgKnBhcnRfcHJ1bmVfcmVzdWx0 c19zcGFjZTsKIAljaGFyCSAgICpwYXJhbXNwYWNlOwogCVBsYW5uZWRTdG10ICpwc3RtdDsKKwlM aXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdHM7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJOwogCWNo YXIJICAgKnF1ZXJ5U3RyaW5nOwogCkBAIC0xMjQ0LDEyICsxMjYzLDE3IEBAIEV4ZWNQYXJhbGxl bEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJcHN0 bXRzcGFjZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BMQU5ORURTVE1ULCBm YWxzZSk7CiAJcHN0bXQgPSAoUGxhbm5lZFN0bXQgKikgc3RyaW5nVG9Ob2RlKHBzdG10c3BhY2Up OwogCisJLyogUmVjb25zdHJ1Y3QgbGVhZGVyLXN1cHBsaWVkIFBhcnRpdGlvblBydW5lUmVzdWx0 LiAqLworCXBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZSA9CisJCXNobV90b2NfbG9va3VwKHRvYywg UEFSQUxMRUxfS0VZX1BBUlRJVElPTl9QUlVORV9SRVNVTFRTLCBmYWxzZSk7CisJcGFydF9wcnVu ZV9yZXN1bHRzID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKHBhcnRfcHJ1bmVfcmVzdWx0c19zcGFj ZSk7CisKIAkvKiBSZWNvbnN0cnVjdCBQYXJhbUxpc3RJbmZvLiAqLwogCXBhcmFtc3BhY2UgPSBz aG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9QQVJBTUxJU1RJTkZPLCBmYWxzZSk7CiAJ cGFyYW1MSSA9IFJlc3RvcmVQYXJhbUxpc3QoJnBhcmFtc3BhY2UpOwogCiAJLyogQ3JlYXRlIGEg UXVlcnlEZXNjIGZvciB0aGUgcXVlcnkuICovCi0JcmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3Rt dCwKKwlyZXR1cm4gQ3JlYXRlUXVlcnlEZXNjKHBzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdHMsCiAJ CQkJCQkgICBxdWVyeVN0cmluZywKIAkJCQkJCSAgIEdldEFjdGl2ZVNuYXBzaG90KCksIEludmFs aWRTbmFwc2hvdCwKIAkJCQkJCSAgIHJlY2VpdmVyLCBwYXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50 X29wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDgwMTk3ZDUx NDEuLjg3Mjg3NDVjNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTI1 LDYgKzI1LDcgQEAKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJz ZXRyZWUuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIgogI2luY2x1ZGUg InBhcnRpdGlvbmluZy9wYXJ0ZGVzYy5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0cHJ1 bmUuaCIKQEAgLTE4NSw3ICsxODYsMTEgQEAgc3RhdGljIGNoYXIgKkV4ZWNCdWlsZFNsb3RQYXJ0 aXRpb25LZXlEZXNjcmlwdGlvbihSZWxhdGlvbiByZWwsCiBzdGF0aWMgTGlzdCAqYWRqdXN0X3Bh cnRpdGlvbl9jb2xub3MoTGlzdCAqY29sbm9zLCBSZXN1bHRSZWxJbmZvICpsZWFmX3BhcnRfcnJp KTsKIHN0YXRpYyBMaXN0ICphZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAq Y29sbm9zLCBBdHRyTWFwICphdHRyTWFwKTsKIHN0YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICpD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAotCQkJCQkJCQkJ CQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pOworCQkJCQkJCQkJCQkJCSAgUGFy dGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkJCQkJCQkJICBib29sIGNvbnNpZGVy X2luaXRpYWxfc3RlcHMsCisJCQkJCQkJCQkJCQkJICBib29sIGNvbnNpZGVyX2V4ZWNfc3RlcHMs CisJCQkJCQkJCQkJCQkJICBMaXN0ICpydGFibGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwKKwkJ CQkJCQkJCQkJCQkgIFBhcnRpdGlvbkRpcmVjdG9yeSBwYXJ0ZGlyKTsKIHN0YXRpYyB2b2lkIElu aXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAog CQkJCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBzLAogCQkJCQkJCQkJICBQYXJ0aXRpb25EZXNj IHBhcnRkZXNjLApAQCAtMTk4LDcgKzIwMyw4IEBAIHN0YXRpYyB2b2lkIFBhcnRpdGlvblBydW5l Rml4U3ViUGxhbk1hcChQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogc3RhdGljIHZv aWQgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBhcnRpdGlvblBydW5pbmdEYXRhICpw cnVuZWRhdGEsCiAJCQkJCQkJCQkJICAgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSAqcHBydW5l LAogCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKLQkJCQkJCQkJCQkgICBCaXRtYXBz ZXQgKip2YWxpZHN1YnBsYW5zKTsKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBs YW5zLAorCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcyk7CiAKIAog LyoKQEAgLTE3NDYsOCArMTc1MiwxMCBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19t YXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICogY29uc2lkZXJlZCB0byBiZSBh IHN0YWJsZSBleHByZXNzaW9uLCBpdCBjYW4gY2hhbmdlIHZhbHVlIGZyb20gb25lIHBsYW4KICAq IG5vZGUgc2NhbiB0byB0aGUgbmV4dCBkdXJpbmcgcXVlcnkgZXhlY3V0aW9uLiAgU3RhYmxlIGNv bXBhcmlzb24KICAqIGV4cHJlc3Npb25zIHRoYXQgZG9uJ3QgaW52b2x2ZSBzdWNoIFBhcmFtcyBh bGxvdyBwYXJ0aXRpb24gcHJ1bmluZyB0byBiZQotICogZG9uZSBvbmNlIGR1cmluZyBleGVjdXRv ciBzdGFydHVwLiAgRXhwcmVzc2lvbnMgdGhhdCBkbyBpbnZvbHZlIHN1Y2ggUGFyYW1zCi0gKiBy ZXF1aXJlIHVzIHRvIHBydW5lIHNlcGFyYXRlbHkgZm9yIGVhY2ggc2NhbiBvZiB0aGUgcGFyZW50 IHBsYW4gbm9kZS4KKyAqIGRvbmUgb25jZSBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1cCBvciBkdXJp bmcgRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkgdGhhdAorICogcnVucyBhcyBwYXJ0IG9mIHBl cmZvcm1pbmcgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBvbiBhIGdpdmVuIHBsYW4gdHJlZS4KKyAq IEV4cHJlc3Npb25zIHRoYXQgZG8gaW52b2x2ZSBzdWNoIFBhcmFtcyByZXF1aXJlIHVzIHRvIHBy dW5lIHNlcGFyYXRlbHkgZm9yCisgKiBlYWNoIHNjYW4gb2YgdGhlIHBhcmVudCBwbGFuIG5vZGUu CiAgKgogICogTm90ZSB0aGF0IHBydW5pbmcgYXdheSB1bm5lZWRlZCBzdWJwbGFucyBkdXJpbmcg ZXhlY3V0b3Igc3RhcnR1cCBoYXMgdGhlCiAgKiBhZGRlZCBiZW5lZml0IG9mIG5vdCBoYXZpbmcg dG8gaW5pdGlhbGl6ZSB0aGUgdW5uZWVkZWQgc3VicGxhbnMgYXQgYWxsLgpAQCAtMTc2NCw2ICsx NzcyLDEzIEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3Ms IEF0dHJNYXAgKmF0dHJNYXApCiAgKgkJYWNjb3VudCBmb3IgaW5pdGlhbCBwcnVuaW5nIHBvc3Np Ymx5IGhhdmluZyBlbGltaW5hdGVkIHNvbWUgb2YgdGhlCiAgKgkJc3VicGxhbnMuCiAgKgorICog RXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmc6CisgKgkJRG8gaW5pdGlhbCBwcnVuaW5nIHdp dGggdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiBhIGdpdmVuCisgKgkJUGFydGl0aW9uUHJ1 bmVJbmZvIHRvIGRldGVybWluZSB0aGUgbWluaW1hbCBzZXQgb2YgY2hpbGQgc3VicGxhbnMKKyAq CQl0byBiZSBleGVjdXRlZCBvZiB0aGUgcGFyZW50IHBsYW4gbm9kZSB0byB3aGljaCB0aGUgUGFy dGl0aW9uUHJ1bmVJbmZvCisgKgkJYmVsb25ncyBhbmQgYWxzbyB0aGUgc2V0IG9mIHRoZSBSVCBp bmRleGVzIG9mIGxlYWYgcGFydGl0aW9ucyB0aGF0IHdpbGwKKyAqCQliZSBzY2FubmVkIHdpdGgg dGhvc2Ugc3VicGxhbnMuCisgKgogICogRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zOgogICoJCVJl dHVybnMgaW5kZXhlcyBvZiBtYXRjaGluZyBzdWJwbGFucyBhZnRlciBldmFsdWF0aW5nIHRoZSBl eHByZXNzaW9ucwogICoJCXRoYXQgYXJlIHNhZmUgdG8gZXZhbHVhdGUgYXQgYSBnaXZlbiBwb2lu dC4gIFRoaXMgZnVuY3Rpb24gaXMgZmlyc3QKQEAgLTE3ODEsOCArMTc5Niw5IEBAIGFkanVzdF9w YXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXAp CiAgKgogICogT24gcmV0dXJuLCAqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zIGlzIGFzc2lnbmVk IHRoZSBzZXQgb2YgaW5kZXhlcyBvZgogICogY2hpbGQgc3VicGxhbnMgdGhhdCBtdXN0IGJlIGlu aXRpYWxpemVkIGFsb25nIHdpdGggdGhlIHBhcmVudCBwbGFuIG5vZGUuCi0gKiBJbml0aWFsIHBy dW5pbmcgaXMgcGVyZm9ybWVkIGhlcmUgaWYgbmVlZGVkIGFuZCBpbiB0aGF0IGNhc2Ugb25seSB0 aGUKLSAqIHN1cnZpdmluZyBzdWJwbGFucycgaW5kZXhlcyBhcmUgYWRkZWQuCisgKiBJbml0aWFs IHBydW5pbmcgaXMgcGVyZm9ybWVkIGhlcmUgaWYgbmVlZGVkICh1bmxlc3MgaXQgaGFzIGFscmVh ZHkgYmVlbiBkb25lCisgKiBieSBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSksIGFuZCBpbiB0 aGF0IGNhc2Ugb25seSB0aGUgc3Vydml2aW5nCisgKiBzdWJwbGFucycgaW5kZXhlcyBhcmUgYWRk ZWQuCiAgKgogICogSWYgc3VicGxhbnMgYXJlIGluZGVlZCBwcnVuZWQsIHN1YnBsYW5fbWFwIGFy cmF5cyBjb250YWluZWQgaW4gdGhlIHJldHVybmVkCiAgKiBQYXJ0aXRpb25QcnVuZVN0YXRlIGFy ZSByZS1zZXF1ZW5jZWQgdG8gbm90IGNvdW50IHRob3NlLCB0aG91Z2ggb25seSBpZiB0aGUKQEAg LTE3OTQsMjggKzE4MTAsNjUgQEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAq cGxhbnN0YXRlLAogCQkJCQkJIGludCBwYXJ0X3BydW5lX2luZGV4LAogCQkJCQkJIEJpdG1hcHNl dCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucykKIHsKLQlQYXJ0aXRpb25QcnVuZVN0YXRlICpw cnVuZXN0YXRlOworCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUgPSBOVUxMOwogCUVT dGF0ZQkgICAqZXN0YXRlID0gcGxhbnN0YXRlLT5zdGF0ZTsKIAlQYXJ0aXRpb25QcnVuZUluZm8g KnBydW5laW5mbyA9IGxpc3RfbnRoKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcywKIAkJCQkJ CQkJCQkJIHBhcnRfcHJ1bmVfaW5kZXgpOworCVBhcnRpdGlvblBydW5lUmVzdWx0ICpwcnVuZXJl c3VsdCA9IE5VTEw7CisJYm9vbAlkb19wcnVuaW5nID0gKHBydW5laW5mby0+bmVlZHNfaW5pdF9w cnVuaW5nIHx8CisJCQkJCQkgIHBydW5laW5mby0+bmVlZHNfZXhlY19wcnVuaW5nKTsKKworCS8q CisJICogTm8gbmVlZCB0byBkbyBpbml0aWFsIHBydW5pbmcgaWYgaXQgd2FzIGRvbmUgYWxyZWFk eSBieQorCSAqIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpLCB3aGljaCBpdCB3b3VsZCBiZSBp ZiBlc19wYXJ0X3BydW5lX3Jlc3VsdHMKKwkgKiBpcyBzZXQuCisJICovCisJaWYgKGVzdGF0ZS0+ ZXNfcGFydF9wcnVuZV9yZXN1bHRzKQorCXsKKwkJcHJ1bmVyZXN1bHQgPSBsaXN0X250aChlc3Rh dGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cywgcGFydF9wcnVuZV9pbmRleCk7CisJCUFzc2VydChJ c0EocHJ1bmVyZXN1bHQsIFBhcnRpdGlvblBydW5lUmVzdWx0KSk7CisJCWRvX3BydW5pbmcgPSBw cnVuZWluZm8tPm5lZWRzX2V4ZWNfcHJ1bmluZzsKKwl9CiAKLQkvKiBXZSBtYXkgbmVlZCBhbiBl eHByZXNzaW9uIGNvbnRleHQgdG8gZXZhbHVhdGUgcGFydGl0aW9uIGV4cHJzICovCi0JRXhlY0Fz c2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRlKTsKKwlpZiAoZG9fcHJ1bmluZykKKwl7 CisJCS8qIFdlIG1heSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBwYXJ0 aXRpb24gZXhwcnMgKi8KKwkJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRl KTsKIAotCS8qIENyZWF0ZSB0aGUgd29ya2luZyBkYXRhIHN0cnVjdHVyZSBmb3IgcHJ1bmluZyAq LwotCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKHBsYW5zdGF0ZSwgcHJ1 bmVpbmZvKTsKKwkJLyogRm9yIGRhdGEgcmVhZGluZywgZXhlY3V0b3IgYWx3YXlzIG9taXRzIGRl dGFjaGVkIHBhcnRpdGlvbnMgKi8KKwkJaWYgKGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9y eSA9PSBOVUxMKQorCQkJZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID0KKwkJCQlDcmVh dGVQYXJ0aXRpb25EaXJlY3RvcnkoZXN0YXRlLT5lc19xdWVyeV9jeHQsIGZhbHNlKTsKKworCQkv KgorCQkgKiBDcmVhdGUgdGhlIHdvcmtpbmcgZGF0YSBzdHJ1Y3R1cmUgZm9yIHBydW5pbmcuICBO byBuZWVkIHRvIGNvbnNpZGVyCisJCSAqIGluaXRpYWwgcHJ1bmluZyBzdGVwcyBpZiB3ZSBoYXZl IGEgUGFydGl0aW9uUHJ1bmVSZXN1bHQuCisJCSAqLworCQlwcnVuZXN0YXRlID0gQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShwbGFuc3RhdGUsIHBydW5laW5mbywKKwkJCQkJCQkJCQkJICAgcHJ1 bmVyZXN1bHQgPT0gTlVMTCwgdHJ1ZSwKKwkJCQkJCQkJCQkJICAgTklMLCBwbGFuc3RhdGUtPnBz X0V4cHJDb250ZXh0LAorCQkJCQkJCQkJCQkgICBlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3Rv cnkpOworCX0KIAogCS8qCiAJICogUGVyZm9ybSBhbiBpbml0aWFsIHBhcnRpdGlvbiBwcnVuZSBw YXNzLCBpZiByZXF1aXJlZC4KIAkgKi8KLQlpZiAocHJ1bmVzdGF0ZS0+ZG9faW5pdGlhbF9wcnVu ZSkKLQkJKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyA9IEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFu cyhwcnVuZXN0YXRlLCB0cnVlKTsKKwlpZiAocHJ1bmVyZXN1bHQpCisJeworCQkqaW5pdGlhbGx5 X3ZhbGlkX3N1YnBsYW5zID0gYm1zX2NvcHkocHJ1bmVyZXN1bHQtPnZhbGlkX3N1YnBsYW5fb2Zm cyk7CisJfQorCWVsc2UgaWYgKHBydW5lc3RhdGUgJiYgcHJ1bmVzdGF0ZS0+ZG9faW5pdGlhbF9w cnVuZSkKKwl7CisJCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgPSBFeGVjRmluZE1hdGNoaW5n U3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkJCSBOVUxMKTsKKwl9CiAJ ZWxzZQogCXsKLQkJLyogTm8gcHJ1bmluZywgc28gd2UnbGwgbmVlZCB0byBpbml0aWFsaXplIGFs bCBzdWJwbGFucyAqLworCQkvKiBObyBpbml0aWFsIHBydW5pbmcsIHNvIHdlJ2xsIG5lZWQgdG8g aW5pdGlhbGl6ZSBhbGwgc3VicGxhbnMgKi8KIAkJQXNzZXJ0KG5fdG90YWxfc3VicGxhbnMgPiAw KTsKIAkJKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyA9IGJtc19hZGRfcmFuZ2UoTlVMTCwgMCwK IAkJCQkJCQkJCQkJCSAgbl90b3RhbF9zdWJwbGFucyAtIDEpOworCQlyZXR1cm4gcHJ1bmVzdGF0 ZTsKIAl9CiAKIAkvKgpAQCAtMTgyMyw3ICsxODc2LDggQEAgRXhlY0luaXRQYXJ0aXRpb25QcnVu aW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCSAqIHRoYXQgd2VyZSByZW1vdmVkIGFib3ZlIGR1 ZSB0byBpbml0aWFsIHBydW5pbmcuICBObyBuZWVkIHRvIGRvIHRoaXMgaWYKIAkgKiBubyBzdGVw cyB3ZXJlIHJlbW92ZWQuCiAJICovCi0JaWYgKGJtc19udW1fbWVtYmVycygqaW5pdGlhbGx5X3Zh bGlkX3N1YnBsYW5zKSA8IG5fdG90YWxfc3VicGxhbnMpCisJaWYgKHBydW5lc3RhdGUgJiYKKwkJ Ym1zX251bV9tZW1iZXJzKCppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpIDwgbl90b3RhbF9zdWJw bGFucykKIAl7CiAJCS8qCiAJCSAqIFdlIGNhbiBzYWZlbHkgc2tpcCB0aGlzIHdoZW4gIWRvX2V4 ZWNfcHJ1bmUsIGV2ZW4gdGhvdWdoIHRoYXQKQEAgLTE4MzksMTEgKzE4OTMsNzQgQEAgRXhlY0lu aXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCXJldHVybiBwcnVuZXN0 YXRlOwogfQogCisvKgorICogRXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmcKKyAqCQlQZXJm b3JtIGluaXRpYWwgcHJ1bmluZyB1c2luZyBnaXZlbiBQYXJ0aXRpb25QcnVuZUluZm8gdG8gZGV0 ZXJtaW5lCisgKgkJdGhlIG1pbmltYWwgc2V0IG9mIGNoaWxkIHN1YnBsYW5zIHRoYXQgd2lsbCBi ZSBleGVjdXRlZCBhbmQgYWxzbyB0aGUKKyAqCQlzZXQgb2YgUlQgaW5kZXhlcyBvZiB0aGUgbGVh ZiBwYXJ0aXRpb25zIHNjYW5uZWQgYnkgdGhvc2Ugc3VicGxhbnMuCisgKi8KK0JpdG1hcHNldCAq CitFeGVjUGFydGl0aW9uRG9Jbml0aWFsUHJ1bmluZyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQs IFBhcmFtTGlzdEluZm8gcGFyYW1zLAorCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8sCisJCQkJCQkJICBCaXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpCit7CisJTGlz dAkJICpydGFibGUgPSBwbGFubmVkc3RtdC0+cnRhYmxlOworCUV4cHJDb250ZXh0CSAqZWNvbnRl eHQ7CisJUGFydGl0aW9uRGlyZWN0b3J5IHBkaXI7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0 LAorCQkJCSAgdG1wY29udGV4dDsKKwlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwor CUJpdG1hcHNldAkgKnZhbGlkX3N1YnBsYW5fb2ZmczsKKworCS8qCisJICogQSB0ZW1wb3Jhcnkg Y29udGV4dCBmb3IgbWVtb3J5IGFsbG9jYXRpb25zIHJlcXVpcmVkIHdoaWxlIGV4ZWN1dGluZwor CSAqIHBhcnRpdGlvbiBwcnVuaW5nIHN0ZXBzLgorCSAqLworCXRtcGNvbnRleHQgPSBBbGxvY1Nl dENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkgICAiaW5pdGlh bCBwcnVuaW5nIHdvcmtpbmcgZGF0YSIsCisJCQkJCQkJCQkgICBBTExPQ1NFVF9ERUZBVUxUX1NJ WkVTKTsKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHRtcGNvbnRleHQpOwor CisJLyoKKwkgKiBQYXJ0aXRpb25EaXJlY3RvcnkgdG8gbG9vayB1cCBwYXJ0aXRpb24gZGVzY3Jp cHRvcnMuCisJICogTm90ZSB0aGF0IHdlIGRvbid0IG9taXQgZGV0YWNoZWQgcGFydGl0aW9ucywg anVzdCBsaWtlIGR1cmluZworCSAqIGV4ZWN1dGlvbiBwcm9wZXIuCisJICovCisJcGRpciA9IENy ZWF0ZVBhcnRpdGlvbkRpcmVjdG9yeShDdXJyZW50TWVtb3J5Q29udGV4dCwgZmFsc2UpOworCisJ LyoKKwkgKiBXZSBkb24ndCB5ZXQgaGF2ZSBhIFBsYW5TdGF0ZSBmb3IgdGhlIHBhcmVudCBwbGFu IG5vZGUsIHNvIHdlIG11c3QKKwkgKiBjcmVhdGUgYSBzdGFuZGFsb25lIEV4cHJDb250ZXh0IHRv IGV2YWx1YXRlIHBydW5pbmcgZXhwcmVzc2lvbnMsCisJICogZXF1aXBwZWQgd2l0aCB0aGUgaW5m b3JtYXRpb24gYWJvdXQgdGhlIEVYVEVSTiBwYXJhbWV0ZXJzIHRoYXQgdGhlCisJICogY2FsbGVy IHBhc3NlZCB1cy4gIE5vdGUgdGhhdCB0aGF0J3Mgb2theSBiZWNhdXNlIHRoZSBpbml0aWFsIHBy dW5pbmcKKwkgKiBzdGVwcyBkbyBub3QgY29udGFpbiBhbnl0aGluZyB0aGF0IHJlcXVpcmVzIHRo ZSBleGVjdXRpb24gdG8gaGF2ZQorCSAqIHN0YXJ0ZWQgYW5kIHRodXMgbmVlZCB0aGUgaW5mb3Jt YXRpb24gY29udGFpbmVkIGluIGEgUGxhblN0YXRlLgorCSAqLworCWVjb250ZXh0ID0gQ3JlYXRl U3RhbmRhbG9uZUV4cHJDb250ZXh0KCk7CisJZWNvbnRleHQtPmVjeHRfcGFyYW1fbGlzdF9pbmZv ID0gcGFyYW1zOworCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKE5VTEws IHBydW5laW5mbywgdHJ1ZSwgZmFsc2UsCisJCQkJCQkJCQkJICAgcnRhYmxlLCBlY29udGV4dCwg cGRpcik7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJLyogRG8gdGhl IGluaXRpYWwgcHJ1bmluZy4gKi8KKwl2YWxpZF9zdWJwbGFuX29mZnMgPSBFeGVjRmluZE1hdGNo aW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJCSAgc2Nhbl9sZWFmcGFy dF9ydGlzKTsKKworCUZyZWVFeHByQ29udGV4dChlY29udGV4dCwgdHJ1ZSk7CisJRGVzdHJveVBh cnRpdGlvbkRpcmVjdG9yeShwZGlyKTsKKwlNZW1vcnlDb250ZXh0RGVsZXRlKHRtcGNvbnRleHQp OworCisJcmV0dXJuIHZhbGlkX3N1YnBsYW5fb2ZmczsKK30KKwogLyoKICAqIENyZWF0ZVBhcnRp dGlvblBydW5lU3RhdGUKICAqCQlCdWlsZCB0aGUgZGF0YSBzdHJ1Y3R1cmUgcmVxdWlyZWQgZm9y IGNhbGxpbmcgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zCiAgKgotICogJ3BsYW5zdGF0ZScgaXMg dGhlIHBhcmVudCBwbGFuIG5vZGUncyBleGVjdXRpb24gc3RhdGUuCisgKiAncGxhbnN0YXRlJywg aWYgbm90IE5VTEwsIGlzIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3MgZXhlY3V0aW9uIHN0YXRlLiAg SXQKKyAqIGNhbiBiZSBOVUxMIGlmIGJlaW5nIGNhbGxlZCBiZWZvcmUgRXhlY3V0b3JTdGFydCgp LCBpbiB3aGljaCBjYXNlLAorICogJ3J0YWJsZScgKHJhbmdlIHRhYmxlKSwgJ2Vjb250ZXh0Jywg YW5kICdwYXJ0ZGlyJyBtdXN0IGJlIGV4cGxpY2l0bHkKKyAqIHByb3ZpZGVkLgogICoKICAqICdw cnVuZWluZm8nIGlzIGEgUGFydGl0aW9uUHJ1bmVJbmZvIGFzIGdlbmVyYXRlZCBieQogICogbWFr ZV9wYXJ0aXRpb25fcHJ1bmVpbmZvLiAgSGVyZSB3ZSBidWlsZCBhIFBhcnRpdGlvblBydW5lU3Rh dGUgY29udGFpbmluZyBhCkBAIC0xODU3LDE5ICsxOTc0LDIxIEBAIEV4ZWNJbml0UGFydGl0aW9u UHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKICAqIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZv LgogICovCiBzdGF0aWMgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCi1DcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bykKK0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsCisJCQkJ CQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJICBib29sIGNvbnNpZGVy X2luaXRpYWxfc3RlcHMsCisJCQkJCQkgIGJvb2wgY29uc2lkZXJfZXhlY19zdGVwcywKKwkJCQkJ CSAgTGlzdCAqcnRhYmxlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsCisJCQkJCQkgIFBhcnRpdGlv bkRpcmVjdG9yeSBwYXJ0ZGlyKQogewotCUVTdGF0ZQkgICAqZXN0YXRlID0gcGxhbnN0YXRlLT5z dGF0ZTsKKwlFU3RhdGUJICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZSA/IHBsYW5zdGF0ZS0+c3RhdGUg OiBOVUxMOwogCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJaW50CQkJbl9wYXJ0 X2hpZXJhcmNoaWVzOwogCUxpc3RDZWxsICAgKmxjOwogCWludAkJCWk7Ci0JRXhwckNvbnRleHQg KmVjb250ZXh0ID0gcGxhbnN0YXRlLT5wc19FeHByQ29udGV4dDsKIAotCS8qIEZvciBkYXRhIHJl YWRpbmcsIGV4ZWN1dG9yIGFsd2F5cyBvbWl0cyBkZXRhY2hlZCBwYXJ0aXRpb25zICovCi0JaWYg KGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSA9PSBOVUxMKQotCQllc3RhdGUtPmVzX3Bh cnRpdGlvbl9kaXJlY3RvcnkgPQotCQkJQ3JlYXRlUGFydGl0aW9uRGlyZWN0b3J5KGVzdGF0ZS0+ ZXNfcXVlcnlfY3h0LCBmYWxzZSk7CisJQXNzZXJ0KChlc3RhdGUgIT0gTlVMTCkgfHwKKwkJCShw YXJ0ZGlyICE9IE5VTEwgJiYgZWNvbnRleHQgIT0gTlVMTCAmJiBydGFibGUgIT0gTklMKSk7CiAK IAluX3BhcnRfaGllcmFyY2hpZXMgPSBsaXN0X2xlbmd0aChwcnVuZWluZm8tPnBydW5lX2luZm9z KTsKIAlBc3NlcnQobl9wYXJ0X2hpZXJhcmNoaWVzID4gMCk7CkBAIC0xOTI0LDE1ICsyMDQzLDQy IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRp dGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJUGFydGl0aW9uS2V5IHBhcnRrZXk7CiAKIAkJ CS8qCi0JCQkgKiBXZSBjYW4gcmVseSBvbiB0aGUgY29waWVzIG9mIHRoZSBwYXJ0aXRpb25lZCB0 YWJsZSdzIHBhcnRpdGlvbgotCQkJICoga2V5IGFuZCBwYXJ0aXRpb24gZGVzY3JpcHRvciBhcHBl YXJpbmcgaW4gaXRzIHJlbGNhY2hlIGVudHJ5LAotCQkJICogYmVjYXVzZSB0aGF0IGVudHJ5IHdp bGwgYmUgaGVsZCBvcGVuIGFuZCBsb2NrZWQgZm9yIHRoZQotCQkJICogZHVyYXRpb24gb2YgdGhp cyBleGVjdXRvciBydW4uCisJCQkgKiBNdXN0IG9wZW4gdGhlIHJlbGF0aW9uIGJ5IG91cnNlbHZl cyB3aGVuIGNhbGxlZCBiZWZvcmUgdGhlCisJCQkgKiBleGVjdXRpb24gaGFzIHN0YXJ0ZWQsIHN1 Y2ggYXMsIHdoZW4gY2FsbGVkIGR1cmluZworCQkJICogRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5n KCkgb24gYSBjYWNoZWQgcGxhbi4gIEluIHRoYXQgY2FzZSwKKwkJCSAqIHN1Yi1wYXJ0aXRpb25z IG11c3QgYmUgbG9ja2VkLCBiZWNhdXNlIEFjcXVpcmVQbGFubmVyTG9ja3MoKQorCQkJICogd291 bGQgbm90IGhhdmUgc2VlbiB0aGVtLiAoMXN0IHJlbGF0aW9uIGluIGEgcGFydHJlbHBydW5laW5m b3MKKwkJCSAqIGxpc3QgaXMgYWx3YXlzIHRoZSByb290IHBhcnRpdGlvbmVkIHRhYmxlIGFwcGVh cmluZyBpbiB0aGUKKwkJCSAqIHF1ZXJ5LCB3aGljaCBBY3F1aXJlUGxhbm5lckxvY2tzKCkgd291 bGQgaGF2ZSBsb2NrZWQ7IHRoZQorCQkJICogQXNzZXJ0IGluIHJlbGF0aW9uX29wZW4oKSBndWFy ZHMgdGhhdCBhc3N1bXB0aW9uLikKKwkJCSAqLworCQkJaWYgKGVzdGF0ZSA9PSBOVUxMKQorCQkJ eworCQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IHJ0X2ZldGNoKHBpbmZvLT5ydGluZGV4LCBydGFi bGUpOworCQkJCWludAkJbG9ja21vZGUgPSAoaiA9PSAwKSA/IE5vTG9jayA6IHJ0ZS0+cmVsbG9j a21vZGU7CisKKwkJCQlwYXJ0cmVsID0gdGFibGVfb3BlbihydGUtPnJlbGlkLCBsb2NrbW9kZSk7 CisJCQl9CisJCQllbHNlCisJCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24o ZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7CisKKwkJCS8qCisJCQkgKiBXZSBjYW4gcmVseSBvbiB0 aGUgY29weSBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUncyBwYXJ0aXRpb24KKwkJCSAqIGtleSBm cm9tIGluIGl0cyByZWxjYWNoZSBlbnRyeSwgYmVjYXVzZSBpdCBjYW4ndCBjaGFuZ2UgKG9yCisJ CQkgKiBnZXQgZGVzdHJveWVkKSBhcyBsb25nIGFzIHRoZSByZWxhdGlvbiBpcyBsb2NrZWQuICBQ YXJ0aXRpb24KKwkJCSAqIGRlc2NyaXB0b3IgaXMgdGFrZW4gZnJvbSB0aGUgUGFydGl0aW9uRGly ZWN0b3J5IGFzc29jaWF0ZWQgd2l0aAorCQkJICogdGhlIHRhYmxlIHRoYXQgaXMgaGVsZCBvcGVu IGxvbmcgZW5vdWdoIGZvciB0aGUgZGVzY3JpcHRvciB0bworCQkJICogcmVtYWluIHZhbGlkIHdo aWxlIGl0J3MgdXNlZCB0byBwZXJmb3JtIHRoZSBwcnVuaW5nIHN0ZXBzLgogCQkJICovCi0JCQlw YXJ0cmVsID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHBpbmZvLT5ydGluZGV4 KTsKIAkJCXBhcnRrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJ0cmVsKTsKLQkJCXBh cnRkZXNjID0gUGFydGl0aW9uRGlyZWN0b3J5TG9va3VwKGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2Rp cmVjdG9yeSwKLQkJCQkJCQkJCQkJCXBhcnRyZWwpOworCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25E aXJlY3RvcnlMb29rdXAocGFydGRpciwgcGFydHJlbCk7CisKKwkJCS8qCisJCQkgKiBNdXN0IGNs b3NlIHBhcnRyZWwsIGtlZXBpbmcgdGhlIGxvY2sgdGFrZW4sIGlmIHdlJ3JlIG5vdCB1c2luZwor CQkJICogRVN0YXRlJ3MgZW50cnkuCisJCQkgKi8KKwkJCWlmIChlc3RhdGUgPT0gTlVMTCkKKwkJ CQl0YWJsZV9jbG9zZShwYXJ0cmVsLCBOb0xvY2spOwogCiAJCQkvKgogCQkJICogSW5pdGlhbGl6 ZSB0aGUgc3VicGxhbl9tYXAgYW5kIHN1YnBhcnRfbWFwLgpAQCAtMTk0Niw2ICsyMDkyLDcgQEAg Q3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9u UHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQlBc3NlcnQocGFydGRlc2MtPm5wYXJ0cyA+PSBwaW5m by0+bnBhcnRzKTsKIAkJCXBwcnVuZS0+bnBhcnRzID0gcGFydGRlc2MtPm5wYXJ0czsKIAkJCXBw cnVuZS0+c3VicGxhbl9tYXAgPSBwYWxsb2Moc2l6ZW9mKGludCkgKiBwYXJ0ZGVzYy0+bnBhcnRz KTsKKwkJCXBwcnVuZS0+cnRpX21hcCA9IHBhbGxvYyhzaXplb2YoSW5kZXgpICogcGFydGRlc2Mt Pm5wYXJ0cyk7CiAJCQlpZiAocGFydGRlc2MtPm5wYXJ0cyA9PSBwaW5mby0+bnBhcnRzKQogCQkJ ewogCQkJCS8qCkBAIC0xOTU2LDYgKzIxMDMsOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRl KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJ CQlwcHJ1bmUtPnN1YnBhcnRfbWFwID0gcGluZm8tPnN1YnBhcnRfbWFwOwogCQkJCW1lbWNweShw cHJ1bmUtPnN1YnBsYW5fbWFwLCBwaW5mby0+c3VicGxhbl9tYXAsCiAJCQkJCSAgIHNpemVvZihp bnQpICogcGluZm8tPm5wYXJ0cyk7CisJCQkJbWVtY3B5KHBwcnVuZS0+cnRpX21hcCwgcGluZm8t PnJ0aV9tYXAsCisJCQkJCSAgIHNpemVvZihpbnQpICogcGluZm8tPm5wYXJ0cyk7CiAKIAkJCQkv KgogCQkJCSAqIERvdWJsZS1jaGVjayB0aGF0IHRoZSBsaXN0IG9mIHVucHJ1bmVkIHJlbGF0aW9u cyBoYXMgbm90CkBAIC0yMDA2LDYgKzIxNTUsOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRl KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJ CQkJCQlwaW5mby0+c3VicGxhbl9tYXBbcGRfaWR4XTsKIAkJCQkJCXBwcnVuZS0+c3VicGFydF9t YXBbcHBfaWR4XSA9CiAJCQkJCQkJcGluZm8tPnN1YnBhcnRfbWFwW3BkX2lkeF07CisJCQkJCQlw cHJ1bmUtPnJ0aV9tYXBbcHBfaWR4XSA9CisJCQkJCQkJcGluZm8tPnJ0aV9tYXBbcGRfaWR4XTsK IAkJCQkJCXBkX2lkeCsrOwogCQkJCQl9CiAJCQkJCWVsc2UKQEAgLTIwMTMsNiArMjE2NCw3IEBA IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlv blBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJCQkJLyogdGhpcyBwYXJ0ZGVzYyBlbnRyeSBpcyBu b3QgaW4gdGhlIHBsYW4gKi8KIAkJCQkJCXBwcnVuZS0+c3VicGxhbl9tYXBbcHBfaWR4XSA9IC0x OwogCQkJCQkJcHBydW5lLT5zdWJwYXJ0X21hcFtwcF9pZHhdID0gLTE7CisJCQkJCQlwcHJ1bmUt PnJ0aV9tYXBbcHBfaWR4XSA9IDA7CiAJCQkJCX0KIAkJCQl9CiAKQEAgLTIwMzQsNyArMjE4Niw3 IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRp dGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJICogSW5pdGlhbGl6ZSBwcnVuaW5nIGNvbnRl eHRzIGFzIG5lZWRlZC4KIAkJCSAqLwogCQkJcHBydW5lLT5pbml0aWFsX3BydW5pbmdfc3RlcHMg PSBwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzOwotCQkJaWYgKHBpbmZvLT5pbml0aWFsX3By dW5pbmdfc3RlcHMpCisJCQlpZiAoY29uc2lkZXJfaW5pdGlhbF9zdGVwcyAmJiBwaW5mby0+aW5p dGlhbF9wcnVuaW5nX3N0ZXBzKQogCQkJewogCQkJCUluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQo JnBwcnVuZS0+aW5pdGlhbF9jb250ZXh0LAogCQkJCQkJCQkJCSAgcGluZm8tPmluaXRpYWxfcHJ1 bmluZ19zdGVwcywKQEAgLTIwNDQsNyArMjE5Niw3IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3Rh dGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQog CQkJCXBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUgPSB0cnVlOwogCQkJfQogCQkJcHBydW5l LT5leGVjX3BydW5pbmdfc3RlcHMgPSBwaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzOwotCQkJaWYg KHBpbmZvLT5leGVjX3BydW5pbmdfc3RlcHMpCisJCQlpZiAoY29uc2lkZXJfZXhlY19zdGVwcyAm JiBwaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzKQogCQkJewogCQkJCUluaXRQYXJ0aXRpb25QcnVu ZUNvbnRleHQoJnBwcnVuZS0+ZXhlY19jb250ZXh0LAogCQkJCQkJCQkJCSAgcGluZm8tPmV4ZWNf cHJ1bmluZ19zdGVwcywKQEAgLTIyNzIsMTAgKzI0MjQsMTQgQEAgUGFydGl0aW9uUHJ1bmVGaXhT dWJQbGFuTWFwKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAgKiBQYXNzIGluaXRp YWxfcHJ1bmUgaWYgUEFSQU1fRVhFQyBQYXJhbXMgY2Fubm90IHlldCBiZSBldmFsdWF0ZWQuICBU aGlzCiAgKiBkaWZmZXJlbnRpYXRlcyB0aGUgaW5pdGlhbCBleGVjdXRvci10aW1lIHBydW5pbmcg c3RlcCBmcm9tIGxhdGVyCiAgKiBydW50aW1lIHBydW5pbmcuCisgKgorICogUlQgaW5kZXhlcyBv ZiBsZWFmIHBhcnRpdGlvbnMgc2Nhbm5lZCBieSB0aGUgY2hvc2VuIHN1YnBsYW5zIGFyZSBhZGRl ZCB0bworICogKnNjYW5fbGVhZnBhcnRfcnRpcyBpZiB0aGUgcG9pbnRlciBpcyBub24tTlVMTC4K ICAqLwogQml0bWFwc2V0ICoKIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVu ZVN0YXRlICpwcnVuZXN0YXRlLAotCQkJCQkJIGJvb2wgaW5pdGlhbF9wcnVuZSkKKwkJCQkJCSBi b29sIGluaXRpYWxfcHJ1bmUsCisJCQkJCQkgQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlz KQogewogCUJpdG1hcHNldCAgKnJlc3VsdCA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250 ZXh0OwpAQCAtMjMxMCw3ICsyNDY2LDcgQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRp dGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAJCSAqLwogCQlwcHJ1bmUgPSAmcHJ1bmVkYXRh LT5wYXJ0cmVscHJ1bmVkYXRhWzBdOwogCQlmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2Uo cHJ1bmVkYXRhLCBwcHJ1bmUsIGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJCQkgICAmcmVzdWx0KTsK KwkJCQkJCQkJCSAgICZyZXN1bHQsIHNjYW5fbGVhZnBhcnRfcnRpcyk7CiAKIAkJLyogRXhwcmVz c2lvbiBldmFsIG1heSBoYXZlIHVzZWQgc3BhY2UgaW4gRXhwckNvbnRleHQgdG9vICovCiAJCWlm IChwcHJ1bmUtPmV4ZWNfcHJ1bmluZ19zdGVwcykKQEAgLTIzMjQsNiArMjQ4MCw4IEBAIEV4ZWNG aW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCiAJ LyogQ29weSByZXN1bHQgb3V0IG9mIHRoZSB0ZW1wIGNvbnRleHQgYmVmb3JlIHdlIHJlc2V0IGl0 ICovCiAJcmVzdWx0ID0gYm1zX2NvcHkocmVzdWx0KTsKKwlpZiAoc2Nhbl9sZWFmcGFydF9ydGlz KQorCQkqc2Nhbl9sZWFmcGFydF9ydGlzID0gYm1zX2NvcHkoKnNjYW5fbGVhZnBhcnRfcnRpcyk7 CiAKIAlNZW1vcnlDb250ZXh0UmVzZXQocHJ1bmVzdGF0ZS0+cHJ1bmVfY29udGV4dCk7CiAKQEAg LTIzMzQsMTMgKzI0OTIsMTUgQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBy dW5lU3RhdGUgKnBydW5lc3RhdGUsCiAgKiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UK ICAqCQlSZWN1cnNpdmUgd29ya2VyIGZ1bmN0aW9uIGZvciBFeGVjRmluZE1hdGNoaW5nU3ViUGxh bnMKICAqCi0gKiBBZGRzIHZhbGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4gSURzIHRvICp2YWxp ZHN1YnBsYW5zCisgKiBBZGRzIHZhbGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4gSURzIHRvICp2 YWxpZHN1YnBsYW5zIGFuZCBSVCBpbmRleGVzIG9mCisgKiBvZiB0aGUgY29ycmVzcG9uZGluZyBs ZWFmIHBhcnRpdGlvbnMgdG8gKnNjYW5fbGVhZnBhcnRfcnRpcyAoaWYgYXNrZWQgZm9yKS4KICAq Lwogc3RhdGljIHZvaWQKIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25Q cnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJCQkJCSAgIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0Rh dGEgKnBwcnVuZSwKIAkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJICAgQml0 bWFwc2V0ICoqdmFsaWRzdWJwbGFucykKKwkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBs YW5zLAorCQkJCQkJCSAgIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcykKIHsKIAlCaXRt YXBzZXQgICpwYXJ0c2V0OwogCWludAkJCWk7CkBAIC0yMzY3LDggKzI1MjcsMTQgQEAgZmluZF9t YXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEs CiAJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHBhcnRzZXQsIGkpKSA+PSAwKQogCXsKIAkJ aWYgKHBwcnVuZS0+c3VicGxhbl9tYXBbaV0gPj0gMCkKKwkJewogCQkJKnZhbGlkc3VicGxhbnMg PSBibXNfYWRkX21lbWJlcigqdmFsaWRzdWJwbGFucywKIAkJCQkJCQkJCQkJcHBydW5lLT5zdWJw bGFuX21hcFtpXSk7CisJCQlBc3NlcnQocHBydW5lLT5ydGlfbWFwW2ldID4gMCk7CisJCQlpZiAo c2Nhbl9sZWFmcGFydF9ydGlzKQorCQkJCSpzY2FuX2xlYWZwYXJ0X3J0aXMgPSBibXNfYWRkX21l bWJlcigqc2Nhbl9sZWFmcGFydF9ydGlzLAorCQkJCQkJCQkJCQkJCSBwcHJ1bmUtPnJ0aV9tYXBb aV0pOworCQl9CiAJCWVsc2UKIAkJewogCQkJaW50CQkJcGFydGlkeCA9IHBwcnVuZS0+c3VicGFy dF9tYXBbaV07CkBAIC0yMzc2LDcgKzI1NDIsOCBAQCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3Jl Y3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwKIAkJCWlmIChwYXJ0aWR4ID49 IDApCiAJCQkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5lZGF0YSwKIAkJCQkJ CQkJCQkJICAgJnBydW5lZGF0YS0+cGFydHJlbHBydW5lZGF0YVtwYXJ0aWR4XSwKLQkJCQkJCQkJ CQkJICAgaW5pdGlhbF9wcnVuZSwgdmFsaWRzdWJwbGFucyk7CisJCQkJCQkJCQkJCSAgIGluaXRp YWxfcHJ1bmUsIHZhbGlkc3VicGxhbnMsCisJCQkJCQkJCQkJCSAgIHNjYW5fbGVhZnBhcnRfcnRp cyk7CiAJCQllbHNlCiAJCQl7CiAJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXgg MjFmNGMxMDkzNy4uNjdhNThjNzE2MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTEz NCw2ICsxMzQsNyBAQCBDcmVhdGVFeGVjdXRvclN0YXRlKHZvaWQpCiAJZXN0YXRlLT5lc19wYXJh bV9leGVjX3ZhbHMgPSBOVUxMOwogCiAJZXN0YXRlLT5lc19xdWVyeUVudiA9IE5VTEw7CisJZXN0 YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMgPSBOSUw7CiAKIAllc3RhdGUtPmVzX3F1ZXJ5X2N4 dCA9IHFjb250ZXh0OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlv bnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IGUxMzRhODJmZjcu LjE4ZDNiOThjZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC04NDIsNyArODQyLDcg QEAgcG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0 ciBmY2FjaGUpCiAJZWxzZQogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAotCWVzLT5xZCA9IENy ZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwKKwllcy0+cWQgPSBDcmVhdGVRdWVyeURlc2MoZXMtPnN0 bXQsIE5JTCwKIAkJCQkJCQkgZmNhY2hlLT5zcmMsCiAJCQkJCQkJIEdldEFjdGl2ZVNuYXBzaG90 KCksCiAJCQkJCQkJIEludmFsaWRTbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpp bmRleCBjNmY4NmE2NTEwLi45Njg4MGUxMjJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5j CkBAIC0xNTUsNyArMTU1LDggQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogc3VicGxhbiwgd2UgY2FuIGZpbGwgYXNfdmFsaWRf c3VicGxhbnMgaW1tZWRpYXRlbHksIHByZXZlbnRpbmcKIAkJICogbGF0ZXIgY2FsbHMgdG8gRXhl Y0ZpbmRNYXRjaGluZ1N1YlBsYW5zLgogCQkgKi8KLQkJaWYgKCFwcnVuZXN0YXRlLT5kb19leGVj X3BydW5lICYmIG5wbGFucyA+IDApCisJCWlmIChhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUg PT0gTlVMTCB8fAorCQkJKCFhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUtPmRvX2V4ZWNfcHJ1 bmUgJiYgbnBsYW5zID4gMCkpCiAJCQlhcHBlbmRzdGF0ZS0+YXNfdmFsaWRfc3VicGxhbnMgPSBi bXNfYWRkX3JhbmdlKE5VTEwsIDAsIG5wbGFucyAtIDEpOwogCX0KIAllbHNlCkBAIC01NzcsNyAr NTc4LDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9sb2NhbGx5KEFwcGVuZFN0YXRlICpub2RlKQog CQl9CiAJCWVsc2UgaWYgKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJCQlub2Rl LT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUt PmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5v ZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAKIAkJd2hpY2hwbGFuID0gLTE7CiAJ fQpAQCAtNjQyLDcgKzY0Myw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX2xlYWRlcihBcHBl bmRTdGF0ZSAqbm9kZSkKIAkJaWYgKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJ CXsKIAkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3Vi UGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCQlFeGVjRmluZE1hdGNoaW5n U3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAogCQkJLyoKIAkJ CSAqIE1hcmsgZWFjaCBpbnZhbGlkIHBsYW4gYXMgZmluaXNoZWQgdG8gYWxsb3cgdGhlIGxvb3Ag YmVsb3cgdG8KQEAgLTcxNyw3ICs3MTgsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl93b3Jr ZXIoQXBwZW5kU3RhdGUgKm5vZGUpCiAJZWxzZSBpZiAobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMg PT0gTlVMTCkKIAl7CiAJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCUV4ZWNGaW5kTWF0 Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJRXhlY0ZpbmRN YXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAJCW1h cmtfaW52YWxpZF9zdWJwbGFuc19hc19maW5pc2hlZChub2RlKTsKIAl9CiAKQEAgLTg2OCw3ICs4 NjksNyBAQCBFeGVjQXBwZW5kQXN5bmNCZWdpbihBcHBlbmRTdGF0ZSAqbm9kZSkKIAlpZiAobm9k ZS0+YXNfdmFsaWRfc3VicGxhbnMgPT0gTlVMTCkKIAl7CiAJCW5vZGUtPmFzX3ZhbGlkX3N1YnBs YW5zID0KLQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwg ZmFsc2UpOworCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRl LCBmYWxzZSwgTlVMTCk7CiAKIAkJY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMobm9kZSk7CiAJ fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCA4ZDM1ODYwYzMwLi4y MzEyZTVhNjMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBl bmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtMTAz LDcgKzEwMyw4IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKiBzdWJwbGFuLCB3ZSBjYW4gZmlsbCBtc192YWxp ZF9zdWJwbGFucyBpbW1lZGlhdGVseSwgcHJldmVudGluZwogCQkgKiBsYXRlciBjYWxscyB0byBF eGVjRmluZE1hdGNoaW5nU3ViUGxhbnMuCiAJCSAqLwotCQlpZiAoIXBydW5lc3RhdGUtPmRvX2V4 ZWNfcHJ1bmUgJiYgbnBsYW5zID4gMCkKKwkJaWYgKG1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRl ID09IE5VTEwgfHwKKwkJCSghbWVyZ2VzdGF0ZS0+bXNfcHJ1bmVfc3RhdGUtPmRvX2V4ZWNfcHJ1 bmUgJiYgbnBsYW5zID4gMCkpCiAJCQltZXJnZXN0YXRlLT5tc192YWxpZF9zdWJwbGFucyA9IGJt c19hZGRfcmFuZ2UoTlVMTCwgMCwgbnBsYW5zIC0gMSk7CiAJfQogCWVsc2UKQEAgLTIxOCw3ICsy MTksNyBAQCBFeGVjTWVyZ2VBcHBlbmQoUGxhblN0YXRlICpwc3RhdGUpCiAJCSAqLwogCQlpZiAo bm9kZS0+bXNfdmFsaWRfc3VicGxhbnMgPT0gTlVMTCkKIAkJCW5vZGUtPm1zX3ZhbGlkX3N1YnBs YW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+bXNfcHJ1bmVfc3RhdGUs IGZhbHNlKTsKKwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+bXNfcHJ1bmVfc3Rh dGUsIGZhbHNlLCBOVUxMKTsKIAogCQkvKgogCQkgKiBGaXJzdCB0aW1lIHRocm91Z2g6IHB1bGwg dGhlIGZpcnN0IHR1cGxlIGZyb20gZWFjaCB2YWxpZCBzdWJwbGFuLApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRl eCBmZDU3OTZmMWI5Li45MzAxMmE1YjNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9zcGkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAtMTU3OCw2ICsxNTc4 LDcgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5Q dHIgcGxhbiwKIAlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlOwogCUNhY2hlZFBsYW4gKmNw bGFuOwogCUxpc3QJICAgKnN0bXRfbGlzdDsKKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdHNf bGlzdDsKIAljaGFyCSAgICpxdWVyeV9zdHJpbmc7CiAJU25hcHNob3QJc25hcHNob3Q7CiAJTWVt b3J5Q29udGV4dCBvbGRjb250ZXh0OwpAQCAtMTY1Nyw3ICsxNjU4LDEwIEBAIFNQSV9jdXJzb3Jf b3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJICovCiAK IAkvKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgaW5jcmVtZW50IHBsYW4gcmVmY291bnQgZm9yIHBv cnRhbCAqLwotCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBwYXJhbUxJLCBOVUxM LCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKKwljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxhbnNv dXJjZSwgcGFyYW1MSSwgTlVMTCwgX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKKwkJCQkJCSAgJnBh cnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKKwlBc3NlcnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0bXRf bGlzdCkgPT0KKwkJICAgbGlzdF9sZW5ndGgocGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpKTsKIAlz dG10X2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OwogCiAJaWYgKCFwbGFuLT5zYXZlZCkKQEAgLTE2 ODUsNiArMTY4OSw5IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1l LCBTUElQbGFuUHRyIHBsYW4sCiAJCQkJCSAgc3RtdF9saXN0LAogCQkJCQkgIGNwbGFuKTsKIAor CS8qIENvcHkgTGlzdHMgb2YgUGFydGl0aW9uUHJ1bmVSZXN1bHRzIGludG8gdGhlIHBvcnRhbCdz IGNvbnRleHQuICovCisJUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMocG9ydGFsLCBw YXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCk7CisKIAkvKgogCSAqIFNldCB1cCBvcHRpb25zIGZvciBw b3J0YWwuICBEZWZhdWx0IFNDUk9MTCB0eXBlIGlzIGNob3NlbiB0aGUgc2FtZSB3YXkKIAkgKiBh cyBQZXJmb3JtQ3Vyc29yT3BlbiBkb2VzIGl0LgpAQCAtMjA5Miw3ICsyMDk5LDggQEAgU1BJX3Bs YW5fZ2V0X2NhY2hlZF9wbGFuKFNQSVBsYW5QdHIgcGxhbikKIAkvKiBHZXQgdGhlIGdlbmVyaWMg cGxhbiBmb3IgdGhlIHF1ZXJ5ICovCiAJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2Us IE5VTEwsCiAJCQkJCQkgIHBsYW4tPnNhdmVkID8gQ3VycmVudFJlc291cmNlT3duZXIgOiBOVUxM LAotCQkJCQkJICBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKKwkJCQkJCSAgX1NQSV9jdXJyZW50 LT5xdWVyeUVudiwKKwkJCQkJCSAgTlVMTCAvKiBOb3QgaW50ZXJlc3RlZCBpbiBQYXJ0aXRpb25Q cnVuZVJlc3VsdHMgKi8pOwogCUFzc2VydChjcGxhbiA9PSBwbGFuc291cmNlLT5ncGxhbik7CiAK IAkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KQEAgLTI0NzMsNyArMjQ4MSw5IEBA IF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlv bnMgKm9wdGlvbnMsCiAJewogCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlID0gKENhY2hl ZFBsYW5Tb3VyY2UgKikgbGZpcnN0KGxjMSk7CiAJCUxpc3QJICAgKnN0bXRfbGlzdDsKLQkJTGlz dENlbGwgICAqbGMyOworCQlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdDsKKwkJTGlz dENlbGwgICAqbGMyLAorCQkJCSAgICpsYzM7CiAKIAkJc3BpY2FsbGJhY2thcmcucXVlcnkgPSBw bGFuc291cmNlLT5xdWVyeV9zdHJpbmc7CiAKQEAgLTI1NDksOCArMjU1OSwxMCBAQCBfU1BJX2V4 ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRp b25zLAogCQkgKiBwbGFuLCB0aGUgcmVmY291bnQgbXVzdCBiZSBiYWNrZWQgYnkgdGhlIHBsYW5f b3duZXIuCiAJCSAqLwogCQljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgb3B0aW9u cy0+cGFyYW1zLAotCQkJCQkJCSAgcGxhbl9vd25lciwgX1NQSV9jdXJyZW50LT5xdWVyeUVudik7 Ci0KKwkJCQkJCQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYsCisJCQkJCQkJ ICZwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCk7CisJCUFzc2VydChsaXN0X2xlbmd0aChjcGxhbi0+ c3RtdF9saXN0KSA9PQorCQkJICAgbGlzdF9sZW5ndGgocGFydF9wcnVuZV9yZXN1bHRzX2xpc3Qp KTsKIAkJc3RtdF9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCQkvKgpAQCAtMjU4OSw5ICsy NjAxLDEwIEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhl Y3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQl9CiAJCX0KIAotCQlmb3JlYWNoKGxjMiwgc3RtdF9s aXN0KQorCQlmb3Jib3RoKGxjMiwgc3RtdF9saXN0LCBsYzMsIHBhcnRfcHJ1bmVfcmVzdWx0c19s aXN0KQogCQl7CiAJCQlQbGFubmVkU3RtdCAqc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10 LCBsYzIpOworCQkJTGlzdAkgICAqcGFydF9wcnVuZV9yZXN1bHRzID0gbGZpcnN0X25vZGUoTGlz dCwgbGMzKTsKIAkJCWJvb2wJCWNhblNldFRhZyA9IHN0bXQtPmNhblNldFRhZzsKIAkJCURlc3RS ZWNlaXZlciAqZGVzdDsKIApAQCAtMjY2Myw3ICsyNjc2LDcgQEAgX1NQSV9leGVjdXRlX3BsYW4o U1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQll bHNlCiAJCQkJCXNuYXAgPSBJbnZhbGlkU25hcHNob3Q7CiAKLQkJCQlxZGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhzdG10LAorCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsIHBhcnRfcHJ1 bmVfcmVzdWx0cywKIAkJCQkJCQkJCQlwbGFuc291cmNlLT5xdWVyeV9zdHJpbmcsCiAJCQkJCQkJ CQkJc25hcCwgY3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJCQkJCQkJCQlkZXN0LApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFk ZnVuY3MuYwppbmRleCBiNGZmODU1ZjdjLi43Nzk5MGEyNzMyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3Mu YwpAQCAtMTU4LDYgKzE1OCwxMSBAQAogCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOwkJLyog c2tpcCA6ZmxkbmFtZSAqLyBcCiAJbG9jYWxfbm9kZS0+ZmxkbmFtZSA9IHJlYWRJbnRDb2xzKGxl bikKIAorLyogUmVhZCBhbiBJbmRleCBhcnJheSAqLworI2RlZmluZSBSRUFEX0lOREVYX0FSUkFZ KGZsZG5hbWUsIGxlbikgXAorCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOwkJLyogc2tpcCA6 ZmxkbmFtZSAqLyBcCisJbG9jYWxfbm9kZS0+ZmxkbmFtZSA9IHJlYWRJbmRleENvbHMobGVuKQor CiAvKiBSZWFkIGEgYm9vbCBhcnJheSAqLwogI2RlZmluZSBSRUFEX0JPT0xfQVJSQVkoZmxkbmFt ZSwgbGVuKSBcCiAJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7CQkvKiBza2lwIDpmbGRuYW1l ICovIFwKQEAgLTc5NSw3ICs4MDAsNiBAQCBmbm5hbWUoaW50IG51bUNvbHMpIFwKICAqLwogUkVB RF9TQ0FMQVJfQVJSQVkocmVhZEF0dHJOdW1iZXJDb2xzLCBpbnQxNiwgYXRvaSkKIFJFQURfU0NB TEFSX0FSUkFZKHJlYWRPaWRDb2xzLCBPaWQsIGF0b29pZCkKLS8qIG91dGZ1bmNzLmMgaGFzIHdy aXRlSW5kZXhDb2xzLCBidXQgd2UgZG9uJ3QgeWV0IG5lZWQgdGhhdCBoZXJlICovCi0vKiBSRUFE X1NDQUxBUl9BUlJBWShyZWFkSW5kZXhDb2xzLCBJbmRleCwgYXRvdWkpICovCitSRUFEX1NDQUxB Ul9BUlJBWShyZWFkSW5kZXhDb2xzLCBJbmRleCwgYXRvdWkpCiBSRUFEX1NDQUxBUl9BUlJBWShy ZWFkSW50Q29scywgaW50LCBhdG9pKQogUkVBRF9TQ0FMQVJfQVJSQVkocmVhZEJvb2xDb2xzLCBi b29sLCBzdHJ0b2Jvb2wpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9w bGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggMjQw ZDUwZjFjMC4uYjc4MDFlYTA0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpA QCAtNTIwLDcgKzUyMCw5IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBj aGFyICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+cGFyYWxsZWxN b2RlTmVlZGVkID0gZ2xvYi0+cGFyYWxsZWxNb2RlTmVlZGVkOwogCXJlc3VsdC0+cGxhblRyZWUg PSB0b3BfcGxhbjsKIAlyZXN1bHQtPnBhcnRQcnVuZUluZm9zID0gZ2xvYi0+cGFydFBydW5lSW5m b3M7CisJcmVzdWx0LT5jb250YWluc0luaXRpYWxQcnVuaW5nID0gZ2xvYi0+Y29udGFpbnNJbml0 aWFsUHJ1bmluZzsKIAlyZXN1bHQtPnJ0YWJsZSA9IGdsb2ItPmZpbmFscnRhYmxlOworCXJlc3Vs dC0+bWluTG9ja1JlbGlkcyA9IGdsb2ItPm1pbkxvY2tSZWxpZHM7CiAJcmVzdWx0LT5yZXN1bHRS ZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRSZWxhdGlvbnM7CiAJcmVzdWx0LT5hcHBlbmRSZWxhdGlv bnMgPSBnbG9iLT5hcHBlbmRSZWxhdGlvbnM7CiAJcmVzdWx0LT5zdWJwbGFucyA9IGdsb2ItPnN1 YnBsYW5zOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5j IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDcyMGYyMGY1NjMu LjYxZDY5MzQ5NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJl ZnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTI3MCw2 ICsyNzAsMTYgQEAgc2V0X3BsYW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAq cGxhbikKIAkgKi8KIAlhZGRfcnRlc190b19mbGF0X3J0YWJsZShyb290LCBmYWxzZSk7CiAKKwkv KgorCSAqIEFkZCB0aGUgcXVlcnkncyBhZGp1c3RlZCByYW5nZSBvZiBSVCBpbmRleGVzIHRvIGds b2ItPm1pbkxvY2tSZWxpZHMuCisJICogVGhlIGFkanVzdGVkIFJUIGluZGV4ZXMgb2YgcHJ1bmFi bGUgcmVsYXRpb25zIHdpbGwgYmUgZGVsZXRlZCBmcm9tIHRoZQorCSAqIHNldCBiZWxvdyB3aGVy ZSBQYXJ0aXRpb25QcnVuZUluZm9zIGFyZSBwcm9jZXNzZWQuCisJICovCisJZ2xvYi0+bWluTG9j a1JlbGlkcyA9CisJCWJtc19hZGRfcmFuZ2UoZ2xvYi0+bWluTG9ja1JlbGlkcywKKwkJCQkJICBy dG9mZnNldCArIDEsCisJCQkJCSAgcnRvZmZzZXQgKyBsaXN0X2xlbmd0aChyb290LT5wYXJzZS0+ cnRhYmxlKSk7CisKIAkvKgogCSAqIEFkanVzdCBSVCBpbmRleGVzIG9mIFBsYW5Sb3dNYXJrcyBh bmQgYWRkIHRvIGZpbmFsIHJvd21hcmtzIGxpc3QKIAkgKi8KQEAgLTM1Miw2ICszNjIsNyBAQCBz ZXRfcGxhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuKQogCWZvcmVh Y2ggKGxjLCByb290LT5wYXJ0UHJ1bmVJbmZvcykKIAl7CiAJCVBhcnRpdGlvblBydW5lSW5mbyAq cHJ1bmVpbmZvID0gbGZpcnN0KGxjKTsKKwkJQml0bWFwc2V0ICpsZWFmcGFydF9ydGlzID0gTlVM TDsKIAkJTGlzdENlbGwgICpsOwogCiAJCWZvcmVhY2gobCwgcHJ1bmVpbmZvLT5wcnVuZV9pbmZv cykKQEAgLTM2MiwxNSArMzczLDUwIEBAIHNldF9wbGFuX3JlZmVyZW5jZXMoUGxhbm5lckluZm8g KnJvb3QsIFBsYW4gKnBsYW4pCiAJCQlmb3JlYWNoKGwyLCBwcnVuZV9pbmZvcykKIAkJCXsKIAkJ CQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGluZm8gPSBsZmlyc3QobDIpOworCQkJCWludAkJ aTsKIAogCQkJCS8qIFJUIGluZGV4IG9mIHRoZSB0YWJsZSB0byB3aGljaCB0aGUgcGluZm8gYmVs b25ncy4gKi8KIAkJCQlwaW5mby0+cnRpbmRleCArPSBydG9mZnNldDsKKworCQkJCS8qIEFsc28g b2YgdGhlIGxlYWYgcGFydGl0aW9ucyB0aGF0IG1pZ2h0IGJlIHNjYW5uZWQuICovCisJCQkJZm9y IChpID0gMDsgaSA8IHBpbmZvLT5ucGFydHM7IGkrKykKKwkJCQl7CisJCQkJCWlmIChwaW5mby0+ cnRpX21hcFtpXSA+IDAgJiYgcGluZm8tPnN1YnBsYW5fbWFwW2ldID49IDApCisJCQkJCXsKKwkJ CQkJCXBpbmZvLT5ydGlfbWFwW2ldICs9IHJ0b2Zmc2V0OworCQkJCQkJbGVhZnBhcnRfcnRpcyA9 IGJtc19hZGRfbWVtYmVyKGxlYWZwYXJ0X3J0aXMsCisJCQkJCQkJCQkJCQkJICAgcGluZm8tPnJ0 aV9tYXBbaV0pOworCQkJCQl9CisJCQkJfQogCQkJfQogCQl9CiAKKwkJaWYgKHBydW5laW5mby0+ bmVlZHNfaW5pdF9wcnVuaW5nKQorCQl7CisJCQlnbG9iLT5jb250YWluc0luaXRpYWxQcnVuaW5n ID0gdHJ1ZTsKKworCQkJLyoKKwkJCSAqIERlbGV0ZSB0aGUgbGVhZiBwYXJ0aXRpb24gUlRJcyBm cm9tIHRoZSBnbG9iYWwgc2V0IG9mIHJlbGF0aW9ucworCQkJICogdG8gYmUgbG9ja2VkIGJlZm9y ZSBleGVjdXRpbmcgdGhlIHBsYW4uICBBY3F1aXJlRXhlY3V0b3JMb2NrcygpCisJCQkgKiB3aWxs IGZpbmQgdGhlIG9uZXMgdG8gYWRkIHRvIHRoZSBzZXQgYWZ0ZXIgcGVyZm9ybWluZyBpbml0aWFs CisJCQkgKiBwcnVuaW5nLgorCQkJICovCisJCQlnbG9iLT5taW5Mb2NrUmVsaWRzID0gYm1zX2Rl bF9tZW1iZXJzKGdsb2ItPm1pbkxvY2tSZWxpZHMsCisJCQkJCQkJCQkJCQkgIGxlYWZwYXJ0X3J0 aXMpOworCQl9CisKIAkJZ2xvYi0+cGFydFBydW5lSW5mb3MgPSBsYXBwZW5kKGdsb2ItPnBhcnRQ cnVuZUluZm9zLCBwcnVuZWluZm8pOwogCX0KIAorCS8qCisJICogSXQgc2VlbXMgd29ydGggZG9p bmcgYSBibXNfY29weSgpIG9uIGdsb2ItPm1pbkxvY2tSZWxpZHMgaWYgd2UgZGVsZXRlZAorCSAq IGJpdHMgZnJvbSBpdCBhYm92ZSB0byBnZXQgcmlkIG9mIGFueSBlbXB0eSB0YWlsIGJpdHMuICBJ dCBzZWVtcyBiZXR0ZXIKKwkgKiBmb3IgdGhlIGxvb3Agb3ZlciB0aGlzIHNldCBpbiBBY3F1aXJl RXhlY3V0b3JMb2NrcygpIHRvIG5vdCBoYXZlIHRvIGdvCisJICogdGhyb3VnaCB0aG9zZSB1c2Vs ZXNzIGJpdCB3b3Jkcy4KKwkgKi8KKwlpZiAoZ2xvYi0+Y29udGFpbnNJbml0aWFsUHJ1bmluZykK KwkJZ2xvYi0+bWluTG9ja1JlbGlkcyA9IGJtc19jb3B5KGdsb2ItPm1pbkxvY2tSZWxpZHMpOwor CiAJcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9u aW5nL3BhcnRwcnVuZS5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCmlu ZGV4IDY1NjViNmVkMDEuLjM3ZjNlNmFmNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRp dGlvbmluZy9wYXJ0cHJ1bmUuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBy dW5lLmMKQEAgLTE0NCw3ICsxNDQsOSBAQCBzdGF0aWMgTGlzdCAqbWFrZV9wYXJ0aXRpb25lZHJl bF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJICAgTGlzdCAqcHJ1bmVx dWFsLAogCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqcGFydHJlbGlkcywKIAkJCQkJCQkJCQkgICBp bnQgKnJlbGlkX3N1YnBsYW5fbWFwLAotCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKm1hdGNoZWRz dWJwbGFucyk7CisJCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5zLAorCQkJ CQkJCQkJCSAgIGJvb2wgKm5lZWRzX2luaXRfcHJ1bmluZywKKwkJCQkJCQkJCQkgICBib29sICpu ZWVkc19leGVjX3BydW5pbmcpOwogc3RhdGljIHZvaWQgZ2VuX3BhcnRwcnVuZV9zdGVwcyhSZWxP cHRJbmZvICpyZWwsIExpc3QgKmNsYXVzZXMsCiAJCQkJCQkJCVBhcnRDbGF1c2VUYXJnZXQgdGFy Z2V0LAogCQkJCQkJCQlHZW5lcmF0ZVBydW5pbmdTdGVwc0NvbnRleHQgKmNvbnRleHQpOwpAQCAt MjM0LDYgKzIzNiw4IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCWludAkJICAgKnJlbGlkX3N1YnBsYW5fbWFwOwog CUxpc3RDZWxsICAgKmxjOwogCWludAkJCWk7CisJYm9vbAkJbmVlZHNfaW5pdF9wcnVuaW5nID0g ZmFsc2U7CisJYm9vbAkJbmVlZHNfZXhlY19wcnVuaW5nID0gZmFsc2U7CiAKIAkvKgogCSAqIFNj YW4gdGhlIHN1YnBhdGhzIHRvIHNlZSB3aGljaCBvbmVzIGFyZSBzY2FucyBvZiBwYXJ0aXRpb24g Y2hpbGQKQEAgLTMxMywxMiArMzE3LDE2IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlCaXRtYXBzZXQgICpwYXJ0 cmVsaWRzID0gKEJpdG1hcHNldCAqKSBsZmlyc3QobGMpOwogCQlMaXN0CSAgICpwaW5mb2xpc3Q7 CiAJCUJpdG1hcHNldCAgKm1hdGNoZWRzdWJwbGFucyA9IE5VTEw7CisJCWJvb2wJCXBhcnRyZWxf bmVlZHNfaW5pdF9wcnVuaW5nOworCQlib29sCQlwYXJ0cmVsX25lZWRzX2V4ZWNfcHJ1bmluZzsK IAogCQlwaW5mb2xpc3QgPSBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhyb290LCBwYXJl bnRyZWwsCiAJCQkJCQkJCQkJCQkgIHBydW5lcXVhbCwKIAkJCQkJCQkJCQkJCSAgcGFydHJlbGlk cywKIAkJCQkJCQkJCQkJCSAgcmVsaWRfc3VicGxhbl9tYXAsCi0JCQkJCQkJCQkJCQkgICZtYXRj aGVkc3VicGxhbnMpOworCQkJCQkJCQkJCQkJICAmbWF0Y2hlZHN1YnBsYW5zLAorCQkJCQkJCQkJ CQkJICAmcGFydHJlbF9uZWVkc19pbml0X3BydW5pbmcsCisJCQkJCQkJCQkJCQkgICZwYXJ0cmVs X25lZWRzX2V4ZWNfcHJ1bmluZyk7CiAKIAkJLyogV2hlbiBwcnVuaW5nIGlzIHBvc3NpYmxlLCBy ZWNvcmQgdGhlIG1hdGNoZWQgc3VicGxhbnMgKi8KIAkJaWYgKHBpbmZvbGlzdCAhPSBOSUwpCkBA IC0zMjcsNiArMzM1LDkgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpy b290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQlhbGxtYXRjaGVkc3VicGxhbnMgPSBibXNf am9pbihtYXRjaGVkc3VicGxhbnMsCiAJCQkJCQkJCQkJICBhbGxtYXRjaGVkc3VicGxhbnMpOwog CQl9CisKKwkJbmVlZHNfaW5pdF9wcnVuaW5nIHw9IHBhcnRyZWxfbmVlZHNfaW5pdF9wcnVuaW5n OworCQluZWVkc19leGVjX3BydW5pbmcgfD0gcGFydHJlbF9uZWVkc19leGVjX3BydW5pbmc7CiAJ fQogCiAJcGZyZWUocmVsaWRfc3VicGxhbl9tYXApOwpAQCAtMzQxLDYgKzM1Miw4IEBAIG1ha2Vf cGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50 cmVsLAogCS8qIEVsc2UgYnVpbGQgdGhlIHJlc3VsdCBkYXRhIHN0cnVjdHVyZSAqLwogCXBydW5l aW5mbyA9IG1ha2VOb2RlKFBhcnRpdGlvblBydW5lSW5mbyk7CiAJcHJ1bmVpbmZvLT5wcnVuZV9p bmZvcyA9IHBydW5lcmVsaW5mb3M7CisJcHJ1bmVpbmZvLT5uZWVkc19pbml0X3BydW5pbmcgPSBu ZWVkc19pbml0X3BydW5pbmc7CisJcHJ1bmVpbmZvLT5uZWVkc19leGVjX3BydW5pbmcgPSBuZWVk c19leGVjX3BydW5pbmc7CiAKIAkvKgogCSAqIFNvbWUgc3VicGxhbnMgbWF5IG5vdCBiZWxvbmcg dG8gYW55IG9mIHRoZSBpZGVudGlmaWVkIHBhcnRpdGlvbmVkIHJlbHMuCkBAIC00NDEsMTMgKzQ1 NCwxOCBAQCBhZGRfcGFydF9yZWxpZHMoTGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpw YXJ0cmVsaWRzKQogICogSWYgd2UgY2Fubm90IGZpbmQgYW55IHVzZWZ1bCBydW4tdGltZSBwcnVu aW5nIHN0ZXBzLCByZXR1cm4gTklMLgogICogSG93ZXZlciwgb24gc3VjY2VzcywgZWFjaCByZWwg aWRlbnRpZmllZCBpbiBwYXJ0cmVsaWRzIHdpbGwgaGF2ZQogICogYW4gZWxlbWVudCBpbiB0aGUg cmVzdWx0IGxpc3QsIGV2ZW4gaWYgc29tZSBvZiB0aGVtIGFyZSB1c2VsZXNzLgorICogKm5lZWRz X2luaXRfcHJ1bmluZyBhbmQgKm5lZWRzX2V4ZWNfcHJ1bmluZyBhcmUgc2V0IHRvIGluZGljYXRl IHRoYXQgdGhlCisgKiByZXR1cm5lZCBQYXJ0aXRpb25lZFJlbFBydW5lSW5mb3MgY29udGFpbnMg cHJ1bmluZyBzdGVwcyB0aGF0IGNhbiBiZQorICogcGVyZm9ybWVkIGJlZm9yZSBhbmQgYWZ0ZXIg ZXhlY3V0aW9uIGJlZ2lucywgcmVzcGVjdGl2ZWx5LgogICovCiBzdGF0aWMgTGlzdCAqCiBtYWtl X3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq cGFyZW50cmVsLAogCQkJCQkJCSAgTGlzdCAqcHJ1bmVxdWFsLAogCQkJCQkJCSAgQml0bWFwc2V0 ICpwYXJ0cmVsaWRzLAogCQkJCQkJCSAgaW50ICpyZWxpZF9zdWJwbGFuX21hcCwKLQkJCQkJCQkg IEJpdG1hcHNldCAqKm1hdGNoZWRzdWJwbGFucykKKwkJCQkJCQkgIEJpdG1hcHNldCAqKm1hdGNo ZWRzdWJwbGFucywKKwkJCQkJCQkgIGJvb2wgKm5lZWRzX2luaXRfcHJ1bmluZywKKwkJCQkJCQkg IGJvb2wgKm5lZWRzX2V4ZWNfcHJ1bmluZykKIHsKIAlSZWxPcHRJbmZvICp0YXJnZXRwYXJ0ID0g TlVMTDsKIAlMaXN0CSAgICpwaW5mb2xpc3QgPSBOSUw7CkBAIC00NTgsNiArNDc2LDEwIEBAIG1h a2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpwYXJlbnRyZWwsCiAJaW50CQkJcnRpOwogCWludAkJCWk7CiAKKwkvKiBXaWxsIGZpbmQgb3V0 IGJlbG93LiAqLworCSpuZWVkc19pbml0X3BydW5pbmcgPSBmYWxzZTsKKwkqbmVlZHNfZXhlY19w cnVuaW5nID0gZmFsc2U7CisKIAkvKgogCSAqIEV4YW1pbmUgZWFjaCBwYXJ0aXRpb25lZCByZWws IGNvbnN0cnVjdGluZyBhIHRlbXBvcmFyeSBhcnJheSB0byBtYXAKIAkgKiBmcm9tIHBsYW5uZXIg cmVsaWRzIHRvIGluZGV4IG9mIHRoZSBwYXJ0aXRpb25lZCByZWwsIGFuZCBidWlsZGluZyBhCkBA IC01NDUsNiArNTY3LDkgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJICogZXhlY3V0b3IgcGVyLXNjYW4g cHJ1bmluZyBzdGVwcy4gIFRoaXMgZmlyc3QgcGFzcyBjcmVhdGVzIHN0YXJ0dXAKIAkJICogcHJ1 bmluZyBzdGVwcyBhbmQgZGV0ZWN0cyB3aGV0aGVyIHRoZXJlJ3MgYW55IHBvc3NpYmx5LXVzZWZ1 bCBxdWFscwogCQkgKiB0aGF0IHdvdWxkIHJlcXVpcmUgcGVyLXNjYW4gcHJ1bmluZy4KKwkJICoK KwkJICogSW4gdGhlIGZpcnN0IHBhc3MsIHdlIG5vdGUgd2hldGhlciB0aGUgMm5kIHBhc3MgaXMg bmVjZXNzYXJ5IGJ5CisJCSAqIG5vdGluZyB0aGUgcHJlc2VuY2Ugb2YgRVhFQyBwYXJhbWV0ZXJz LgogCQkgKi8KIAkJZ2VuX3BhcnRwcnVuZV9zdGVwcyhzdWJwYXJ0LCBwYXJ0cHJ1bmVxdWFsLCBQ QVJUVEFSR0VUX0lOSVRJQUwsCiAJCQkJCQkJJmNvbnRleHQpOwpAQCAtNjE5LDYgKzY0NCwxMiBA QCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqcGFyZW50cmVsLAogCQlwaW5mby0+ZXhlY3BhcmFtaWRzID0gZXhlY3BhcmFtaWRzOwog CQkvKiBSZW1haW5pbmcgZmllbGRzIHdpbGwgYmUgZmlsbGVkIGluIHRoZSBuZXh0IGxvb3AgKi8K IAorCQkvKiByZWNvcmQgd2hpY2ggdHlwZXMgb2YgcHJ1bmluZyBzdGVwcyB3ZSd2ZSBzZWVuIHNv IGZhciAqLworCQlpZiAoaW5pdGlhbF9wcnVuaW5nX3N0ZXBzICE9IE5JTCkKKwkJCSpuZWVkc19p bml0X3BydW5pbmcgPSB0cnVlOworCQlpZiAoZXhlY19wcnVuaW5nX3N0ZXBzICE9IE5JTCkKKwkJ CSpuZWVkc19leGVjX3BydW5pbmcgPSB0cnVlOworCiAJCXBpbmZvbGlzdCA9IGxhcHBlbmQocGlu Zm9saXN0LCBwaW5mbyk7CiAJfQogCkBAIC02NDYsNiArNjc3LDcgQEAgbWFrZV9wYXJ0aXRpb25l ZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwK IAkJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJCWludAkJICAgKnN1YnBhcnRfbWFwOwogCQlPaWQJ CSAgICpyZWxpZF9tYXA7CisJCUluZGV4CSAgICpydGlfbWFwOwogCiAJCS8qCiAJCSAqIENvbnN0 cnVjdCB0aGUgc3VicGxhbiBhbmQgc3VicGFydCBtYXBzIGZvciB0aGlzIHBhcnRpdGlvbmluZyBs ZXZlbC4KQEAgLTY1OCw2ICs2OTAsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlzdWJwYXJ0X21hcCA9 IChpbnQgKikgcGFsbG9jKG5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAkJbWVtc2V0KHN1YnBhcnRf bWFwLCAtMSwgbnBhcnRzICogc2l6ZW9mKGludCkpOwogCQlyZWxpZF9tYXAgPSAoT2lkICopIHBh bGxvYzAobnBhcnRzICogc2l6ZW9mKE9pZCkpOworCQlydGlfbWFwID0gKEluZGV4ICopIHBhbGxv YzAobnBhcnRzICogc2l6ZW9mKEluZGV4KSk7CiAJCXByZXNlbnRfcGFydHMgPSBOVUxMOwogCiAJ CWkgPSAtMTsKQEAgLTY3Miw2ICs3MDUsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5m byhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJc3VicGxhbl9t YXBbaV0gPSBzdWJwbGFuaWR4ID0gcmVsaWRfc3VicGxhbl9tYXBbcGFydHJlbC0+cmVsaWRdIC0g MTsKIAkJCXN1YnBhcnRfbWFwW2ldID0gc3VicGFydGlkeCA9IHJlbGlkX3N1YnBhcnRfbWFwW3Bh cnRyZWwtPnJlbGlkXSAtIDE7CiAJCQlyZWxpZF9tYXBbaV0gPSBwbGFubmVyX3J0X2ZldGNoKHBh cnRyZWwtPnJlbGlkLCByb290KS0+cmVsaWQ7CisJCQlydGlfbWFwW2ldID0gcGFydHJlbC0+cmVs aWQ7CiAJCQlpZiAoc3VicGxhbmlkeCA+PSAwKQogCQkJewogCQkJCXByZXNlbnRfcGFydHMgPSBi bXNfYWRkX21lbWJlcihwcmVzZW50X3BhcnRzLCBpKTsKQEAgLTY5Niw2ICs3MzAsNyBAQCBtYWtl X3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq cGFyZW50cmVsLAogCQlwaW5mby0+c3VicGxhbl9tYXAgPSBzdWJwbGFuX21hcDsKIAkJcGluZm8t PnN1YnBhcnRfbWFwID0gc3VicGFydF9tYXA7CiAJCXBpbmZvLT5yZWxpZF9tYXAgPSByZWxpZF9t YXA7CisJCXBpbmZvLT5ydGlfbWFwID0gcnRpX21hcDsKIAl9CiAKIAlwZnJlZShyZWxpZF9zdWJw YXJ0X21hcCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggYTlhMTg1MWM5NC4uYTFiZTgxNzllOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYwpAQCAtMTU5OCw2ICsxNTk4LDcgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3Ry aW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCWludDE2CSAgICpyZm9ybWF0cyA9IE5VTEw7CiAJQ2Fj aGVkUGxhblNvdXJjZSAqcHNyYzsKIAlDYWNoZWRQbGFuICpjcGxhbjsKKwlMaXN0CSAgICpwYXJ0 X3BydW5lX3Jlc3VsdHNfbGlzdDsKIAlQb3J0YWwJCXBvcnRhbDsKIAljaGFyCSAgICpxdWVyeV9z dHJpbmc7CiAJY2hhcgkgICAqc2F2ZWRfc3RtdF9uYW1lOwpAQCAtMTk3Miw3ICsxOTczLDkgQEAg ZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCSAqIHdpbGwgYmUg Z2VuZXJhdGVkIGluIE1lc3NhZ2VDb250ZXh0LiAgVGhlIHBsYW4gcmVmY291bnQgd2lsbCBiZQog CSAqIGFzc2lnbmVkIHRvIHRoZSBQb3J0YWwsIHNvIGl0IHdpbGwgYmUgcmVsZWFzZWQgYXQgcG9y dGFsIGRlc3RydWN0aW9uLgogCSAqLwotCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwc3JjLCBwYXJh bXMsIE5VTEwsIE5VTEwpOworCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwc3JjLCBwYXJhbXMsIE5V TEwsIE5VTEwsICZwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCk7CisJQXNzZXJ0KGxpc3RfbGVuZ3Ro KGNwbGFuLT5zdG10X2xpc3QpID09CisJCSAgIGxpc3RfbGVuZ3RoKHBhcnRfcHJ1bmVfcmVzdWx0 c19saXN0KSk7CiAKIAkvKgogCSAqIE5vdyB3ZSBjYW4gZGVmaW5lIHRoZSBwb3J0YWwuCkBAIC0x OTg3LDYgKzE5OTAsOSBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3Nh Z2UpCiAJCQkJCSAgY3BsYW4tPnN0bXRfbGlzdCwKIAkJCQkJICBjcGxhbik7CiAKKwkvKiBDb3B5 IExpc3RzIG9mIFBhcnRpdGlvblBydW5lUmVzdWx0cyBpbnRvIHRoZSBwb3J0YWwncyBjb250ZXh0 LiAqLworCVBvcnRhbFN0b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKHBvcnRhbCwgcGFydF9wcnVu ZV9yZXN1bHRzX2xpc3QpOworCiAJLyogRG9uZSB3aXRoIHRoZSBzbmFwc2hvdCB1c2VkIGZvciBw YXJhbWV0ZXIgSS9PIGFuZCBwYXJzaW5nL3BsYW5uaW5nICovCiAJaWYgKHNuYXBzaG90X3NldCkK IAkJUG9wQWN0aXZlU25hcHNob3QoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1 ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDVhYTVhMzUwZjMuLjIyNmVl ODFiNjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMzUsNyArMzUsNyBAQAogUG9ydGFsCQlBY3RpdmVQb3J0 YWwgPSBOVUxMOwogCiAKLXN0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxh biwKK3N0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwgTGlzdCAqcGFy dF9wcnVuZV9yZXN1bHRzLAogCQkJCQkJIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkg UGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYs CkBAIC02NSw2ICs2NSw3IEBAIHN0YXRpYyB2b2lkIERvUG9ydGFsUmV3aW5kKFBvcnRhbCBwb3J0 YWwpOwogICovCiBRdWVyeURlc2MgKgogQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFu bmVkc3RtdCwKKwkJCQlMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkJY29uc3QgY2hhciAq c291cmNlVGV4dCwKIAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlTbmFwc2hvdCBjcm9zc2No ZWNrX3NuYXBzaG90LApAQCAtNzcsNiArNzgsOCBAQCBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0 bXQgKnBsYW5uZWRzdG10LAogCiAJcWQtPm9wZXJhdGlvbiA9IHBsYW5uZWRzdG10LT5jb21tYW5k VHlwZTsJLyogb3BlcmF0aW9uICovCiAJcWQtPnBsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CS8q IHBsYW4gKi8KKwlxZC0+cGFydF9wcnVuZV9yZXN1bHRzID0gcGFydF9wcnVuZV9yZXN1bHRzOyAv KiBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKQorCQkJCQkJCQkJCQkJICAqIG91dHB1dCBmb3Ig cGxhbiAqLwogCXFkLT5zb3VyY2VUZXh0ID0gc291cmNlVGV4dDsJLyogcXVlcnkgdGV4dCAqLwog CXFkLT5zbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwkvKiBzbmFwc2hvdCAq LwogCS8qIFJJIGNoZWNrIHNuYXBzaG90ICovCkBAIC0xMjIsNiArMTI1LDcgQEAgRnJlZVF1ZXJ5 RGVzYyhRdWVyeURlc2MgKnFkZXNjKQogICoJCVBPUlRBTF9PTkVfUkVUVVJOSU5HLCBvciBQT1JU QUxfT05FX01PRF9XSVRIIHBvcnRhbAogICoKICAqCXBsYW46IHRoZSBwbGFuIHRyZWUgZm9yIHRo ZSBxdWVyeQorICoJcGFydF9wcnVuZV9yZXN1bHRzOiBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmco KSBvdXRwdXQgZm9yIHRoZSBQbGFubmVkU3RtdAogICoJc291cmNlVGV4dDogdGhlIHNvdXJjZSB0 ZXh0IG9mIHRoZSBxdWVyeQogICoJcGFyYW1zOiBhbnkgcGFyYW1ldGVycyBuZWVkZWQKICAqCWRl c3Q6IHdoZXJlIHRvIHNlbmQgcmVzdWx0cwpAQCAtMTM0LDYgKzEzOCw3IEBAIEZyZWVRdWVyeURl c2MoUXVlcnlEZXNjICpxZGVzYykKICAqLwogc3RhdGljIHZvaWQKIFByb2Nlc3NRdWVyeShQbGFu bmVkU3RtdCAqcGxhbiwKKwkJCSBMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkgY29uc3Qg Y2hhciAqc291cmNlVGV4dCwKIAkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSBRdWVyeUVu dmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTE0NSw3ICsxNTAsNyBAQCBQcm9jZXNzUXVlcnkoUGxh bm5lZFN0bXQgKnBsYW4sCiAJLyoKIAkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYyBvYmplY3QKIAkg Ki8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgc291cmNlVGV4dCwKKwlxdWVy eURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcGFydF9wcnVuZV9yZXN1bHRzLCBzb3VyY2VU ZXh0LAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJ CQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwogCkBAIC00OTEsOCArNDk2LDEzIEBAIFBv cnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCS8qCiAJ CQkJICogQ3JlYXRlIFF1ZXJ5RGVzYyBpbiBwb3J0YWwncyBjb250ZXh0OyBmb3IgdGhlIG1vbWVu dCwgc2V0CiAJCQkJICogdGhlIGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgorCQkJCSAqCisJCQkJ ICogVGhlcmUgaXMgbm8gUGFydGl0aW9uUHJ1bmVSZXN1bHQgdW5sZXNzIHRoZSBQbGFubmVkU3Rt dCBpcworCQkJCSAqIGZyb20gYSBDYWNoZWRQbGFuLgogCQkJCSAqLwogCQkJCXF1ZXJ5RGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhsaW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LCBwb3J0YWwtPnN0bXRz KSwKKwkJCQkJCQkJCQkJcG9ydGFsLT5wYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCA9PSBOSUwgPyBO SUwgOgorCQkJCQkJCQkJCQlsaW5pdGlhbChwb3J0YWwtPnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0 KSwKIAkJCQkJCQkJCQkJcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVT bmFwc2hvdCgpLAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCkBAIC0xMjI1LDYgKzEyMzUs OCBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCiAJCWlmIChwc3RtdC0+dXRpbGl0 eVN0bXQgPT0gTlVMTCkKIAkJeworCQkJTGlzdCAqcGFydF9wcnVuZV9yZXN1bHRzID0gTklMOwor CiAJCQkvKgogCQkJICogcHJvY2VzcyBhIHBsYW5uYWJsZSBxdWVyeS4KIAkJCSAqLwpAQCAtMTI3 MSwxMCArMTI4MywxOCBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJZWxzZQog CQkJCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKKwkJCS8qCisJCQkgKiBEZXRl cm1pbmUgaWYgdGhlcmUncyBhIGNvcnJlc3BvbmRpbmcgTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVJl c3VsdAorCQkJICogZm9yIHRoaXMgUGxhbm5lZFN0bXQuCisJCQkgKi8KKwkJCWlmIChwb3J0YWwt PnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0ICE9IE5JTCkKKwkJCQlwYXJ0X3BydW5lX3Jlc3VsdHMg PSBsaXN0X250aChwb3J0YWwtPnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LAorCQkJCQkJCQkJCQkg IGZvcmVhY2hfY3VycmVudF9pbmRleChzdG10bGlzdF9pdGVtKSk7CisKIAkJCWlmIChwc3RtdC0+ Y2FuU2V0VGFnKQogCQkJewogCQkJCS8qIHN0YXRlbWVudCBjYW4gc2V0IHRhZyBzdHJpbmcgKi8K LQkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCisJCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LCBwYXJ0X3By dW5lX3Jlc3VsdHMsCiAJCQkJCQkJIHBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkgcG9ydGFs LT5wb3J0YWxQYXJhbXMsCiAJCQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYsCkBAIC0xMjgzLDcgKzEz MDMsNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJZWxzZQogCQkJewogCQkJ CS8qIHN0bXQgYWRkZWQgYnkgcmV3cml0ZSBjYW5ub3Qgc2V0IHRhZyAqLwotCQkJCVByb2Nlc3NR dWVyeShwc3RtdCwKKwkJCQlQcm9jZXNzUXVlcnkocHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0cywK IAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFt cywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hl LmMKaW5kZXggMGQ2YTI5NTY3NC4uOTU3MjIxYzQ3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxh bmNhY2hlLmMKQEAgLTk5LDE0ICs5OSwxOSBAQCBzdGF0aWMgZGxpc3RfaGVhZCBjYWNoZWRfZXhw cmVzc2lvbl9saXN0ID0gRExJU1RfU1RBVElDX0lOSVQoY2FjaGVkX2V4cHJlc3Npb25fbAogc3Rh dGljIHZvaWQgUmVsZWFzZUdlbmVyaWNQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Up Owogc3RhdGljIExpc3QgKlJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlLAogCQkJCQkJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7Ci1zdGF0 aWMgYm9vbCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7Citz dGF0aWMgYm9vbCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwg UGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKKwkJCQkJCQlMaXN0ICoqcGFydF9wcnVuZV9yZXN1 bHRzX2xpc3QpOwogc3RhdGljIENhY2hlZFBsYW4gKkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKLQkJCQkJCQkJICAgUGFyYW1MaXN0SW5m byBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworCQkJCQkJCQkgICBQ YXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJ CQkJCQkJICAgTGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKIHN0YXRpYyBib29sIGNo b29zZV9jdXN0b21fcGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCSAg IFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpOwogc3RhdGljIGRvdWJsZSBjYWNoZWRfcGxhbl9j b3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKTsKIHN0YXRpYyBRdWVy eSAqUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpOwotc3RhdGljIHZvaWQgQWNx dWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpOworc3RhdGlj IHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBQYXJhbUxpc3RJbmZv IGJvdW5kUGFyYW1zLAorCQkJCQkJCQkgTGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LAor CQkJCQkJCQkgTGlzdCAqKmxvY2tlZFJlbGlkc19wZXJfc3RtdCk7CitzdGF0aWMgdm9pZCBSZWxl YXNlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIExpc3QgKmxvY2tlZFJlbGlkc19wZXJf c3RtdCk7CiBzdGF0aWMgdm9pZCBBY3F1aXJlUGxhbm5lckxvY2tzKExpc3QgKnN0bXRfbGlzdCwg Ym9vbCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lkIFNjYW5RdWVyeUZvckxvY2tzKFF1ZXJ5ICpwYXJz ZXRyZWUsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgYm9vbCBTY2FuUXVlcnlXYWxrZXIoTm9kZSAq bm9kZSwgYm9vbCAqYWNxdWlyZSk7CkBAIC03ODIsNiArNzg3LDI2IEBAIFJldmFsaWRhdGVDYWNo ZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCXJldHVybiB0bGlzdDsKIH0K IAorLyogCisgKiBGcmVlUGFydGl0aW9uUHJ1bmVSZXN1bHRzCisgKgkJRnJlZXMgdGhlIExpc3Qg b2YgTGlzdHMgb2YgUGFydGl0aW9uUHJ1bmVSZXN1bHRzIGZvciBDaGVja0NhY2hlZFBsYW4oKQor ICovCitzdGF0aWMgdm9pZAorRnJlZVBhcnRpdGlvblBydW5lUmVzdWx0cyhMaXN0ICpwYXJ0X3By dW5lX3Jlc3VsdHNfbGlzdCkKK3sKKwlMaXN0Q2VsbCAqbGM7CisKKwlmb3JlYWNoKGxjLCBwYXJ0 X3BydW5lX3Jlc3VsdHNfbGlzdCkKKwl7CisJCUxpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0cyA9IGxm aXJzdChsYyk7CisKKwkJLyogRnJlZSBib3RoIHRoZSBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgYW5k IHRoZSBjb250YWluaW5nIExpc3QuICovCisJCWxpc3RfZnJlZV9kZWVwKHBhcnRfcHJ1bmVfcmVz dWx0cyk7CisJfQorCisJbGlzdF9mcmVlKHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKK30KKwog LyoKICAqIENoZWNrQ2FjaGVkUGxhbjogc2VlIGlmIHRoZSBDYWNoZWRQbGFuU291cmNlJ3MgZ2Vu ZXJpYyBwbGFuIGlzIHZhbGlkLgogICoKQEAgLTc5MCwxNSArODE1LDIwIEBAIFJldmFsaWRhdGVD YWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogICoKICAqIE9uIGEgInRy dWUiIHJldHVybiwgd2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVkIHRvIHJ1biB0aGUg cGxhbi4KICAqIChXZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJh Y2UtY29uZGl0aW9uLWZyZWUuKQorICoKKyAqIFNlZSBHZXRDYWNoZWRQbGFuKCkncyBjb21tZW50 IGZvciBhIGRlc2NyaXB0aW9uIG9mIHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LgogICovCiBzdGF0 aWMgYm9vbAotQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCitD aGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5m byBib3VuZFBhcmFtcywKKwkJCQlMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpCiB7CiAJ Q2FjaGVkUGxhbiAqcGxhbiA9IHBsYW5zb3VyY2UtPmdwbGFuOwogCiAJLyogQXNzZXJ0IHRoYXQg Y2FsbGVyIGNoZWNrZWQgdGhlIHF1ZXJ5dHJlZSAqLwogCUFzc2VydChwbGFuc291cmNlLT5pc192 YWxpZCk7CiAKKwkqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QgPSBOSUw7CisKIAkvKiBJZiB0aGVy ZSdzIG5vIGdlbmVyaWMgcGxhbiwganVzdCBzYXkgImZhbHNlIiAqLwogCWlmICghcGxhbikKIAkJ cmV0dXJuIGZhbHNlOwpAQCAtODIwLDEzICs4NTAsMjEgQEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAJICovCiAJaWYgKHBsYW4tPmlzX3ZhbGlkKQogCXsK KwkJTGlzdCAgICpsb2NrZWRSZWxpZHNfcGVyX3N0bXQ7CisKIAkJLyoKIAkJICogUGxhbiBtdXN0 IGhhdmUgcG9zaXRpdmUgcmVmY291bnQgYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGJ5CiAJCSAq IHBsYW5zb3VyY2U7IHNvIG5vIG5lZWQgdG8gZmVhciBpdCBkaXNhcHBlYXJzIHVuZGVyIHVzIGhl cmUuCiAJCSAqLwogCQlBc3NlcnQocGxhbi0+cmVmY291bnQgPiAwKTsKIAotCQlBY3F1aXJlRXhl Y3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIHRydWUpOworCQkvKgorCQkgKiBMb2NrIHJlbGF0 aW9ucyBzY2FubmVkIGJ5IHRoZSBwbGFuLiAgVGhpcyBpcyB3aGVyZSB0aGUgcHJ1bmluZworCQkg KiBoYXBwZW5zIGlmIG5lZWRlZC4KKwkJICovCisJCUFjcXVpcmVFeGVjdXRvckxvY2tzKHBsYW4t PnN0bXRfbGlzdCwgYm91bmRQYXJhbXMsCisJCQkJCQkJIHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0 LAorCQkJCQkJCSAmbG9ja2VkUmVsaWRzX3Blcl9zdG10KTsKIAogCQkvKgogCQkgKiBJZiBwbGFu IHdhcyB0cmFuc2llbnQsIGNoZWNrIHRvIHNlZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCkBAIC04 NDgsNyArODg2LDExIEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlKQogCQl9CiAKIAkJLyogT29wcywgdGhlIHJhY2UgY2FzZSBoYXBwZW5lZC4gIFJlbGVhc2Ug dXNlbGVzcyBsb2Nrcy4gKi8KLQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0 LCBmYWxzZSk7CisJCVJlbGVhc2VFeGVjdXRvckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgbG9ja2Vk UmVsaWRzX3Blcl9zdG10KTsKKworCQkvKiBSZWxlYXNlIGFueSBQYXJ0aXRpb25QcnVuZVJlc3Vs dHMgdGhhdCBtYXkgYmVlbiBjcmVhdGVkLiAqLworCQlGcmVlUGFydGl0aW9uUHJ1bmVSZXN1bHRz KCpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCk7CisJCSpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCA9 IE5JTDsKIAl9CiAKIAkvKgpAQCAtODc0LDEwICs5MTYsMTQgQEAgQ2hlY2tDYWNoZWRQbGFuKENh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAgKiBQbGFubmluZyB3b3JrIGlzIGRvbmUgaW4g dGhlIGNhbGxlcidzIG1lbW9yeSBjb250ZXh0LiAgVGhlIGZpbmlzaGVkIHBsYW4KICAqIGlzIGlu IGEgY2hpbGQgbWVtb3J5IGNvbnRleHQsIHdoaWNoIHR5cGljYWxseSBzaG91bGQgZ2V0IHJlcGFy ZW50ZWQKICAqICh1bmxlc3MgdGhpcyBpcyBhIG9uZS1zaG90IHBsYW4sIGluIHdoaWNoIGNhc2Ug d2UgZG9uJ3QgY29weSB0aGUgcGxhbikuCisgKgorICogQSBsaXN0IG9mIE5JTHMgaXMgcmV0dXJu ZWQgaW4gKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LCBtZWFuaW5nIHRoYXQgbm8KKyAqIG5vIHBh cnRpdGlvbiBwcnVuaW5nIGhhcyBiZWVuIGRvbmUgeWV0IGZvciB0aGUgcGxhbnMgaW4gc3RtdF9s aXN0LgogICovCiBzdGF0aWMgQ2FjaGVkUGxhbiAqCiBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCi0JCQkJUGFyYW1MaXN0SW5mbyBib3Vu ZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCisJCQkJUGFyYW1MaXN0SW5mbyBi b3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkJTGlzdCAqKnBhcnRf cHJ1bmVfcmVzdWx0c19saXN0KQogewogCUNhY2hlZFBsYW4gKnBsYW47CiAJTGlzdAkgICAqcGxp c3Q7CkBAIC0xMDA3LDYgKzEwNTMsMTcgQEAgQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGN4dCk7CiAKKwkvKgorCSAqIE5vIGFjdHVhbCBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgeWV0IHRv IGFkZCwgdGhvdWdoIG11c3QgaW5pdGlhbGl6ZQorCSAqIHRoZSBsaXN0IHRvIGhhdmUgdGhlIHNh bWUgbnVtYmVyIG9mIGVsZW1lbnRzIGFzIHRoZSBsaXN0IG9mCisJICogUGxhbm5lZFN0bXRzLgor CSAqLworCSpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCA9IE5JTDsKKwlmb3JlYWNoKGxjLCBwbGlz dCkKKwl7CisJCSpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCA9IGxhcHBlbmQoKnBhcnRfcHJ1bmVf cmVzdWx0c19saXN0LCBOSUwpOworCX0KKwogCXJldHVybiBwbGFuOwogfQogCkBAIC0xMTI2LDYg KzExODMsMTkgQEAgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1 ZGVfcGxhbm5lcikKICAqIHBsYW4gb3IgYSBjdXN0b20gcGxhbiBmb3IgdGhlIGdpdmVuIHBhcmFt ZXRlcnM6IHRoZSBjYWxsZXIgZG9lcyBub3Qga25vdwogICogd2hpY2ggaXQgd2lsbCBnZXQuCiAg KgorICogRm9yIGV2ZXJ5IFBsYW5uZWRTdG10IGZvdW5kIGluIHRoZSByZXR1cm5lZCBDYWNoZWRQ bGFuLCBhbiBlbGVtZW50IHRoYXQKKyAqIGlzIGVpdGhlciBhIExpc3Qgb2YgUGFydGl0aW9uUHJ1 bmVSZXN1bHQgb3IgYSBOSUwgaXMgYWRkZWQgdG8KKyAqICpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlz dC4gIFRoZSBmb3JtZXIgaWYgdGhlIFBsYW5uZWRTdG10IGlzIGZyb20KKyAqIHRoZSBleGlzdGlu ZyBDYWNoZWRQbGFuIHRoYXQgaXMgb3RoZXJ3aXNlIHZhbGlkIGFuZCBoYXMKKyAqIGNvbnRhaW5z SW5pdGlhbFBydW5pbmcgc2V0IHRvIHRydWUuICBCZWZvcmUgcmV0dXJuaW5nIHN1Y2ggYSBDYWNo ZWRQbGFuLAorICogdGhvc2UgImluaXRpYWwiIHN0ZXBzIGFyZSBwZXJmb3JtZWQgYnkgY2FsbGlu ZyBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKQorICogdG8gZGV0ZXJtaW5lIG9ubHkgdGhvc2Ug bGVhZiBwYXJ0aXRpb25zIHRoYXQgbmVlZCB0byBiZSBsb2NrZWQgYnkKKyAqIEFjcXVpcmVFeGVj dXRvckxvY2tzKCkgYnkgcHJ1bmluZyBhd2F5IHN1YnBsYW5zIHRoYXQgZG9uJ3QgbWF0Y2ggdGhl CisgKiAiaW5pdGlhbCIgcHJ1bmluZyBjb25kaXRpb25zLiAgRm9yIGVhY2ggUGFydGl0aW9uUHJ1 bmVJbmZvIGZvdW5kIGluCisgKiBQbGFubmVkU3RtdC5wYXJ0UHJ1bmVJbmZvcywgYSBQYXJ0aXRp b25QcnVuZVJlc3VsdCBjb250YWluaW5nIHRoZSBiaXRtYXBzZXQKKyAqIG9mIHRoZSBpbmRleGVz IG9mIHN1cnZpdmluZyBzdWJwbGFucyBpcyBhZGRlZCB0byB0aGUgTGlzdCBmb3IgdGhlCisgKiBQ bGFubmVkU3RtdC4KKyAqCiAgKiBPbiByZXR1cm4sIHRoZSBwbGFuIGlzIHZhbGlkIGFuZCB3ZSBo YXZlIHN1ZmZpY2llbnQgbG9ja3MgdG8gYmVnaW4KICAqIGV4ZWN1dGlvbi4KICAqCkBAIC0xMTM5 LDExICsxMjA5LDEzIEBAIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBp bmNsdWRlX3BsYW5uZXIpCiAgKi8KIENhY2hlZFBsYW4gKgogR2V0Q2FjaGVkUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAotCQkJICBS ZXNvdXJjZU93bmVyIG93bmVyLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKKwkJCSAgUmVz b3VyY2VPd25lciBvd25lciwgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkgIExpc3Qg KipwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCkKIHsKIAlDYWNoZWRQbGFuICpwbGFuID0gTlVMTDsK IAlMaXN0CSAgICpxbGlzdDsKIAlib29sCQljdXN0b21wbGFuOworCUxpc3QJICAgKm15X3BhcnRf cHJ1bmVfcmVzdWx0c19saXN0OwogCiAJLyogQXNzZXJ0IGNhbGxlciBpcyBkb2luZyB0aGluZ3Mg aW4gYSBzYW5lIG9yZGVyICovCiAJQXNzZXJ0KHBsYW5zb3VyY2UtPm1hZ2ljID09IENBQ0hFRFBM QU5TT1VSQ0VfTUFHSUMpOwpAQCAtMTE2MCw3ICsxMjMyLDggQEAgR2V0Q2FjaGVkUGxhbihDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCiAJ aWYgKCFjdXN0b21wbGFuKQogCXsKLQkJaWYgKENoZWNrQ2FjaGVkUGxhbihwbGFuc291cmNlKSkK KwkJaWYgKENoZWNrQ2FjaGVkUGxhbihwbGFuc291cmNlLCBib3VuZFBhcmFtcywKKwkJCQkJCQkm bXlfcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpKQogCQl7CiAJCQkvKiBXZSB3YW50IGEgZ2VuZXJp YyBwbGFuLCBhbmQgd2UgYWxyZWFkeSBoYXZlIGEgdmFsaWQgb25lICovCiAJCQlwbGFuID0gcGxh bnNvdXJjZS0+Z3BsYW47CkBAIC0xMTY5LDcgKzEyNDIsOCBAQCBHZXRDYWNoZWRQbGFuKENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCWVs c2UKIAkJewogCQkJLyogQnVpbGQgYSBuZXcgZ2VuZXJpYyBwbGFuICovCi0JCQlwbGFuID0gQnVp bGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudik7CisJCQlwbGFu ID0gQnVpbGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudiwKKwkJ CQkJCQkJICAgJm15X3BhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKIAkJCS8qIEp1c3QgbWFrZSBy ZWFsIHN1cmUgcGxhbnNvdXJjZS0+Z3BsYW4gaXMgY2xlYXIgKi8KIAkJCVJlbGVhc2VHZW5lcmlj UGxhbihwbGFuc291cmNlKTsKIAkJCS8qIExpbmsgdGhlIG5ldyBnZW5lcmljIHBsYW4gaW50byB0 aGUgcGxhbnNvdXJjZSAqLwpAQCAtMTIxNCw3ICsxMjg4LDggQEAgR2V0Q2FjaGVkUGxhbihDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCWlm IChjdXN0b21wbGFuKQogCXsKIAkJLyogQnVpbGQgYSBjdXN0b20gcGxhbiAqLwotCQlwbGFuID0g QnVpbGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBib3VuZFBhcmFtcywgcXVlcnlFbnYp OworCQlwbGFuID0gQnVpbGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBib3VuZFBhcmFt cywgcXVlcnlFbnYsCisJCQkJCQkJICAgJm15X3BhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKIAkJ LyogQWNjdW11bGF0ZSB0b3RhbCBjb3N0cyBvZiBjdXN0b20gcGxhbnMgKi8KIAkJcGxhbnNvdXJj ZS0+dG90YWxfY3VzdG9tX2Nvc3QgKz0gY2FjaGVkX3BsYW5fY29zdChwbGFuLCB0cnVlKTsKIApA QCAtMTI0Niw2ICsxMzIxLDkgQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQlwbGFuLT5pc19zYXZlZCA9IHRy dWU7CiAJfQogCisJaWYgKHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KQorCQkqcGFydF9wcnVuZV9y ZXN1bHRzX2xpc3QgPSBteV9wYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdDsKKwogCXJldHVybiBwbGFu OwogfQogCkBAIC0xNzM3LDE3ICsxODE1LDI5IEBAIFF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExp c3QgKnN0bXRzKQogCiAvKgogICogQWNxdWlyZUV4ZWN1dG9yTG9ja3M6IGFjcXVpcmUgbG9ja3Mg bmVlZGVkIGZvciBleGVjdXRpb24gb2YgYSBjYWNoZWQgcGxhbjsKLSAqIG9yIHJlbGVhc2UgdGhl bSBpZiBhY3F1aXJlIGlzIGZhbHNlLgorICoKKyAqIFNlZSBHZXRDYWNoZWRQbGFuKCkncyBjb21t ZW50IGZvciBhIGRlc2NyaXB0aW9uIG9mIHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LgorICoKKyAq IE9uIHJldHVybiwgKmxvY2tlZFJlbGlkc19wZXJfc3RtdCB3aWxsIGNvbnRhaW4gYSBiaXRtYXBz ZXQgZm9yIGV2ZXJ5CisgKiBQbGFubmVkU3RtdCBpbiBzdG10X2xpc3QsIGNvbnRhaW5pbmcgdGhl IFJUIGluZGV4ZXMgb2YgcmVsYXRpb24gZW50cmllcworICogaW4gaXRzIHJhbmdlIHRhYmxlIHRo YXQgd2VyZSBhY3R1YWxseSBsb2NrZWQsIG9yIE5VTEwgaWYgdGhlIFBsYW5uZWRTdG10CisgKiBj b250YWlucyBhIHV0aWxpdHkgc3RhdGVtZW50LgogICovCiBzdGF0aWMgdm9pZAotQWNxdWlyZUV4 ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCitBY3F1aXJlRXhlY3V0 b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCisJCQkJ CSBMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QsCisJCQkJCSBMaXN0ICoqbG9ja2VkUmVs aWRzX3Blcl9zdG10KQogewogCUxpc3RDZWxsICAgKmxjMTsKIAorCSpwYXJ0X3BydW5lX3Jlc3Vs dHNfbGlzdCA9ICpsb2NrZWRSZWxpZHNfcGVyX3N0bXQgPSBOSUw7CiAJZm9yZWFjaChsYzEsIHN0 bXRfbGlzdCkKIAl7CiAJCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IGxmaXJzdF9ub2RlKFBs YW5uZWRTdG10LCBsYzEpOwotCQlMaXN0Q2VsbCAgICpsYzI7CisJCUxpc3QJICAgKnBhcnRfcHJ1 bmVfcmVzdWx0cyA9IE5JTDsKKwkJQml0bWFwc2V0ICAqYWxsTG9ja1JlbGlkczsKKwkJQml0bWFw c2V0ICAqbG9ja2VkUmVsaWRzID0gTlVMTDsKKwkJaW50CQkJcnRpOwogCiAJCWlmIChwbGFubmVk c3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkpCiAJCXsKQEAgLTE3NjEsMTMgKzE4NTEs NDAgQEAgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUp CiAJCQlRdWVyeQkgICAqcXVlcnkgPSBVdGlsaXR5Q29udGFpbnNRdWVyeShwbGFubmVkc3RtdC0+ dXRpbGl0eVN0bXQpOwogCiAJCQlpZiAocXVlcnkpCi0JCQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVl cnksIGFjcXVpcmUpOworCQkJCVNjYW5RdWVyeUZvckxvY2tzKHF1ZXJ5LCB0cnVlKTsKKwkJCSpw YXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCA9IGxhcHBlbmQoKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0 LCBOSUwpOwogCQkJY29udGludWU7CiAJCX0KIAotCQlmb3JlYWNoKGxjMiwgcGxhbm5lZHN0bXQt PnJ0YWJsZSkKKwkJLyoKKwkJICogRmlndXJlIG91dCB0aGUgc2V0IG9mIHJlbGF0aW9ucyB0aGF0 IHdvdWxkIG5lZWQgdG8gYmUgbG9ja2VkCisJCSAqIGJlZm9yZSBleGVjdXRpbmcgdGhlIHBsYW4u CisJCSAqLworCQlpZiAocGxhbm5lZHN0bXQtPmNvbnRhaW5zSW5pdGlhbFBydW5pbmcpCiAJCXsK LQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IChSYW5nZVRibEVudHJ5ICopIGxmaXJzdChsYzIpOwor CQkJQml0bWFwc2V0ICpzY2FuX2xlYWZwYXJ0X3J0aXMgPSBOVUxMOworCisJCQkvKgorCQkJICog T2J0YWluIHRoZSBzZXQgb2YgbGVhZiBwYXJ0aXRpb25zIHRvIGJlIGxvY2tlZC4KKwkJCSAqCisJ CQkgKiBUaGUgZm9sbG93aW5nIGRvZXMgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmluZyB1c2luZyB0 aGUKKwkJCSAqIFBhcnRpdGlvblBydW5lSW5mb3MgZm91bmQgaW4gcGxhbm5lZHN0bXQtPnBhcnRQ cnVuZUluZm9zIGFuZAorCQkJICogZmluZHMgbGVhZiBwYXJ0aXRpb25zIHRoYXQgc3Vydml2ZSB0 aGF0IHBydW5pbmcgYWNyb3NzIGFsbCB0aGUKKwkJCSAqIG5vZGVzIGluIHRoZSBwbGFuIHRyZWUu CisJCQkgKi8KKwkJCXBhcnRfcHJ1bmVfcmVzdWx0cyA9IEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmlu ZyhwbGFubmVkc3RtdCwKKwkJCQkJCQkJCQkJCQkJICBib3VuZFBhcmFtcywKKwkJCQkJCQkJCQkJ CQkJICAmc2Nhbl9sZWFmcGFydF9ydGlzKTsKKwkJCWFsbExvY2tSZWxpZHMgPSBibXNfdW5pb24o cGxhbm5lZHN0bXQtPm1pbkxvY2tSZWxpZHMsCisJCQkJCQkJCQkgIHNjYW5fbGVhZnBhcnRfcnRp cyk7CisJCX0KKwkJZWxzZQorCQkJYWxsTG9ja1JlbGlkcyA9IHBsYW5uZWRzdG10LT5taW5Mb2Nr UmVsaWRzOworCisJCXJ0aSA9IC0xOworCQl3aGlsZSAoKHJ0aSA9IGJtc19uZXh0X21lbWJlcihh bGxMb2NrUmVsaWRzLCBydGkpKSA+IDApCisJCXsKKwkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IHJ0 X2ZldGNoKHJ0aSwgcGxhbm5lZHN0bXQtPnJ0YWJsZSk7CiAKIAkJCWlmIChydGUtPnJ0ZWtpbmQg IT0gUlRFX1JFTEFUSU9OKQogCQkJCWNvbnRpbnVlOwpAQCAtMTc3OCwxMCArMTg5NSw1OSBAQCBB Y3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKIAkJCSAq IGZhaWwgaWYgaXQncyBiZWVuIGRyb3BwZWQgZW50aXJlbHkgLS0tIHdlJ2xsIGp1c3QgdHJhbnNp ZW50bHkKIAkJCSAqIGFjcXVpcmUgYSBub24tY29uZmxpY3RpbmcgbG9jay4KIAkJCSAqLwotCQkJ aWYgKGFjcXVpcmUpCi0JCQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9j a21vZGUpOwotCQkJZWxzZQotCQkJCVVubG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+ cmVsbG9ja21vZGUpOworCQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9j a21vZGUpOworCQkJbG9ja2VkUmVsaWRzID0gYm1zX2FkZF9tZW1iZXIobG9ja2VkUmVsaWRzLCBy dGkpOworCQl9CisKKwkJKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0ID0gbGFwcGVuZCgqcGFydF9w cnVuZV9yZXN1bHRzX2xpc3QsCisJCQkJCQkJCQkJICAgcGFydF9wcnVuZV9yZXN1bHRzKTsKKwkJ KmxvY2tlZFJlbGlkc19wZXJfc3RtdCA9IGxhcHBlbmQoKmxvY2tlZFJlbGlkc19wZXJfc3RtdCwg bG9ja2VkUmVsaWRzKTsKKwl9Cit9CisKKy8qCisgKiBSZWxlYXNlRXhlY3V0b3JMb2NrcworICog CQlSZWxlYXNlIGxvY2tzIHRoYXQgd291bGQndmUgYmVlbiBhY3F1aXJlZCBieSBhbiBlYXJsaWVy IGNhbGwgdG8KKyAqIAkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKQorICovCitzdGF0aWMgdm9pZAor UmVsZWFzZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBMaXN0ICpsb2NrZWRSZWxpZHNf cGVyX3N0bXQpCit7CisJTGlzdENlbGwgICAqbGMxLAorCQkJICAgKmxjMjsKKworCWZvcmJvdGgo bGMxLCBzdG10X2xpc3QsIGxjMiwgbG9ja2VkUmVsaWRzX3Blcl9zdG10KQorCXsKKwkJUGxhbm5l ZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7CisJCUJp dG1hcHNldCAgKmxvY2tlZFJlbGlkcyA9IGxmaXJzdChsYzIpOworCQlpbnQJCQlydGk7CisKKwkJ aWYgKHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKKwkJeworCQkJLyoK KwkJCSAqIElnbm9yZSB1dGlsaXR5IHN0YXRlbWVudHMsIGV4Y2VwdCB0aG9zZSAoc3VjaCBhcyBF WFBMQUlOKSB0aGF0CisJCQkgKiBjb250YWluIGEgcGFyc2VkLWJ1dC1ub3QtcGxhbm5lZCBxdWVy eS4gIE5vdGU6IGl0J3Mgb2theSB0byB1c2UKKwkJCSAqIFNjYW5RdWVyeUZvckxvY2tzLCBldmVu IHRob3VnaCB0aGUgcXVlcnkgaGFzbid0IGJlZW4gdGhyb3VnaAorCQkJICogcnVsZSByZXdyaXRp bmcsIGJlY2F1c2UgcmV3cml0aW5nIGRvZXNuJ3QgY2hhbmdlIHRoZSBxdWVyeQorCQkJICogcmVw cmVzZW50YXRpb24uCisJCQkgKi8KKwkJCVF1ZXJ5CSAgICpxdWVyeSA9IFV0aWxpdHlDb250YWlu c1F1ZXJ5KHBsYW5uZWRzdG10LT51dGlsaXR5U3RtdCk7CisKKwkJCUFzc2VydChsb2NrZWRSZWxp ZHMgPT0gTlVMTCk7CisJCQlpZiAocXVlcnkpCisJCQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnks IGZhbHNlKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJcnRpID0gLTE7CisJCXdoaWxlICgocnRp ID0gYm1zX25leHRfbWVtYmVyKGxvY2tlZFJlbGlkcywgcnRpKSkgPj0gMCkKKwkJeworCQkJUmFu Z2VUYmxFbnRyeSAqcnRlID0gcnRfZmV0Y2gocnRpLCBwbGFubmVkc3RtdC0+cnRhYmxlKTsKKwor CQkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pOworCisJCQkvKiBTZWUgdGhl IGNvbW1lbnQgaW4gQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKS4gKi8KKwkJCVVubG9ja1JlbGF0aW9u T2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOwogCQl9CiAJfQogfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyBiL3NyYy9iYWNrZW5kL3V0aWxz L21tZ3IvcG9ydGFsbWVtLmMKaW5kZXggYzNlOTUzNDZiNi4uNzQ5NTBiZDE2MyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBAIC0zMDMsNiArMzAzLDI1IEBAIFBvcnRhbERlZmluZVF1 ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfREVGSU5FRDsKIH0K IAorLyoKKyAqIFBvcnRhbFN0b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzCisgKgkJQ29weSB0aGUg Z2l2ZW4gTGlzdCBvZiBMaXN0cyBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgaW50byB0aGUKKyAq CQlwb3J0YWwncyBjb250ZXh0CisgKgorICogVGhpcyBhbGxvd3MgdGhlIGNhbGxlciB0byBlbnN1 cmUgdGhhdCB0aGUgbGlzdCBleGlzdHMgYXMgbG9uZyBhcyB0aGUgcG9ydGFsCisgKiBkb2VzLgor ICovCit2b2lkCitQb3J0YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0cyhQb3J0YWwgcG9ydGFs LCBMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCkKK3sKKwlNZW1vcnlDb250ZXh0CW9sZGN4 dDsKKworCUFzc2VydEFyZyhQb3J0YWxJc1ZhbGlkKHBvcnRhbCkpOworCW9sZGN4dCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhwb3J0YWwtPnBvcnRhbENvbnRleHQpOworCXBvcnRhbC0+cGFydF9w cnVuZV9yZXN1bHRzX2xpc3QgPSBjb3B5T2JqZWN0KHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsK KwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKK30KKwogLyoKICAqIFBvcnRhbFJlbGVh c2VDYWNoZWRQbGFuCiAgKgkJUmVsZWFzZSBhIHBvcnRhbCdzIHJlZmVyZW5jZSB0byBpdHMgY2Fj aGVkIHBsYW4sIGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxh aW4uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCA5ZWJkZTA4OWFlLi4y NjljYzRkNTYyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysr IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCkBAIC04Nyw3ICs4Nyw5IEBAIGV4dGVy biB2b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICpp bnRvLAogCQkJCQkJCSAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcs CiAJCQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlF bnYpOwogCi1leHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0 bXQsIEludG9DbGF1c2UgKmludG8sCitleHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVk U3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkgICBMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHMsCisJ CQkJCQkgICBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJICAgRXhwbGFpblN0YXRlICplcywgY29u c3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCiAJCQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpwbGFu ZHVyYXRpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9u LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggYmY5NjJhZjdh Zi4uYmQ4Nzc2NDAyZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaApAQCAtNDUs NiArNDUsNyBAQCBleHRlcm4gdm9pZCBFeGVjQ2xlYW51cFR1cGxlUm91dGluZyhNb2RpZnlUYWJs ZVN0YXRlICptdHN0YXRlLAogICogbnBhcnRzCQkJCQkJTGVuZ3RoIG9mIHN1YnBsYW5fbWFwW10g YW5kIHN1YnBhcnRfbWFwW10uCiAgKiBzdWJwbGFuX21hcAkJCQkJU3VicGxhbiBpbmRleCBieSBw YXJ0aXRpb24gaW5kZXgsIG9yIC0xLgogICogc3VicGFydF9tYXAJCQkJCVN1YnBhcnQgaW5kZXgg YnkgcGFydGl0aW9uIGluZGV4LCBvciAtMS4KKyAqIHJ0aV9tYXAJCQkJCQlSYW5nZSB0YWJsZSBp bmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIDAuCiAgKiBwcmVzZW50X3BhcnRzCQkJCUEgQml0 bWFwc2V0IG9mIHRoZSBwYXJ0aXRpb24gaW5kZXhlcyB0aGF0IHdlCiAgKgkJCQkJCQkJaGF2ZSBz dWJwbGFucyBvciBzdWJwYXJ0cyBmb3IuCiAgKiBpbml0aWFsX3BydW5pbmdfc3RlcHMJCUxpc3Qg b2YgUGFydGl0aW9uUHJ1bmVTdGVwcyB1c2VkIHRvCkBAIC02MSw2ICs2Miw3IEBAIHR5cGVkZWYg c3RydWN0IFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEKIAlpbnQJCQlucGFydHM7CiAJaW50CQkg ICAqc3VicGxhbl9tYXA7CiAJaW50CQkgICAqc3VicGFydF9tYXA7CisJSW5kZXgJICAgKnJ0aV9t YXA7CiAJQml0bWFwc2V0ICAqcHJlc2VudF9wYXJ0czsKIAlMaXN0CSAgICppbml0aWFsX3BydW5p bmdfc3RlcHM7CiAJTGlzdAkgICAqZXhlY19wcnVuaW5nX3N0ZXBzOwpAQCAtMTI2LDUgKzEyOCwx MCBAQCBleHRlcm4gUGFydGl0aW9uUHJ1bmVTdGF0ZSAqRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5n KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkJCQkJCSBpbnQgcGFydF9wcnVuZV9pbmRl eCwKIAkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKTsK IGV4dGVybiBCaXRtYXBzZXQgKkV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVu ZVN0YXRlICpwcnVuZXN0YXRlLAotCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSk7CisJ CQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAorCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAq KnNjYW5fbGVhZnBhcnRfcnRpcyk7CitleHRlcm4gQml0bWFwc2V0ICpFeGVjUGFydGl0aW9uRG9J bml0aWFsUHJ1bmluZyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCVBhcmFtTGlz dEluZm8gcGFyYW1zLAorCQkJCQkJCQlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKKwkJ CQkJCQkJQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKTsKICNlbmRpZgkJCQkJCQkvKiBF WEVDUEFSVElUSU9OX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNk ZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCmluZGV4IGU3OWUyYzAwMWYu LjdkNDM3OWRhN2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgK KysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaApAQCAtMzUsNiArMzUsOCBAQCB0 eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAkvKiBUaGVzZSBmaWVsZHMgYXJlIHByb3ZpZGVkIGJ5 IENyZWF0ZVF1ZXJ5RGVzYyAqLwogCUNtZFR5cGUJCW9wZXJhdGlvbjsJCS8qIENNRF9TRUxFQ1Qs IENNRF9VUERBVEUsIGV0Yy4gKi8KIAlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQ7CS8qIHBsYW5u ZXIncyBvdXRwdXQgKGNvdWxkIGJlIHV0aWxpdHksIHRvbykgKi8KKwlMaXN0CQkqcGFydF9wcnVu ZV9yZXN1bHRzOyAvKiBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSdzCisJCQkJCQkJCQkgICog b3V0cHV0IGZvciBwbGFubmVkc3RtdCAqLwogCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7CQkvKiBz b3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hvdAlzbmFwc2hvdDsJCS8qIHNuYXBz aG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hvdAljcm9zc2NoZWNrX3NuYXBzaG90Owkv KiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRlICovCkBAIC01Nyw2ICs1OSw3IEBAIHR5 cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAvKiBpbiBwcXVlcnkuYyAqLwogZXh0ZXJuIFF1ZXJ5 RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJ ICBMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNl VGV4dCwKIAkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBj cm9zc2NoZWNrX3NuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggZWQ5NWVkMTE3 Ni4uYzlhNWU1ZmI2OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3Iu aAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xODUsNiArMTg1LDkg QEAgRXhlY0dldEp1bmtBdHRyaWJ1dGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEF0dHJOdW1iZXIg YXR0bm8sIGJvb2wgKmlzTnVsbCkKIC8qCiAgKiBwcm90b3R5cGVzIGZyb20gZnVuY3Rpb25zIGlu IGV4ZWNNYWluLmMKICAqLworZXh0ZXJuIExpc3QgKkV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZyhQ bGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1z LAorCQkJCQkJCQkJICBCaXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpOwogZXh0ZXJuIHZv aWQgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRl cm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaAppbmRleCA0YTc0MWIwNTNmLi41MjFhNjBiOTg4IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaApAQCAtNjEyLDYgKzYxMiw3IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJ CQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJUGxhbm5lZFN0bXQg KmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KIAlMaXN0CQkq ZXNfcGFydF9wcnVuZV9pbmZvczsJLyogUGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3MgKi8KKwlM aXN0CQkqZXNfcGFydF9wcnVuZV9yZXN1bHRzOyAvKiBRdWVyeURlc2MucGFydF9wcnVuZV9yZXN1 bHRzICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQgZnJvbSBR dWVyeURlc2MgKi8KIAogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBq dW5rIGZpbHRlciwgaWYgYW55ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCBhODBmNDNlNTQwLi45MzdjYzQ2 MjlkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL25vZGVzLmgKQEAgLTIxMiw2ICsyMTIsNyBAQCBleHRlcm4gc3RydWN0IEJpdG1h cHNldCAqcmVhZEJpdG1hcHNldCh2b2lkKTsKIGV4dGVybiB1aW50cHRyX3QgcmVhZERhdHVtKGJv b2wgdHlwYnl2YWwpOwogZXh0ZXJuIGJvb2wgKnJlYWRCb29sQ29scyhpbnQgbnVtQ29scyk7CiBl eHRlcm4gaW50ICpyZWFkSW50Q29scyhpbnQgbnVtQ29scyk7CitleHRlcm4gSW5kZXggKnJlYWRJ bmRleENvbHMoaW50IG51bUNvbHMpOwogZXh0ZXJuIE9pZCAqcmVhZE9pZENvbHMoaW50IG51bUNv bHMpOwogZXh0ZXJuIGludDE2ICpyZWFkQXR0ck51bWJlckNvbHMoaW50IG51bUNvbHMpOwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oCmluZGV4IGZiZTc1ZGNhMGYuLjM1NGMyZTk2YzMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oCkBAIC0xMjUsNiArMTI1LDE4IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9i YWwKIAkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWluZWQgaW4gdGhlIHBsYW4g Ki8KIAlMaXN0CSAgICpwYXJ0UHJ1bmVJbmZvczsKIAorCS8qCisJICogRG8gYW55IG9mIHRob3Nl IFBhcnRpdGlvblBydW5lSW5mb3MgaGF2ZSBpbml0aWFsIHBydW5pbmcgc3RlcHMgaW4gdGhlbT8K KwkgKi8KKwlib29sCQljb250YWluc0luaXRpYWxQcnVuaW5nOworCisJLyoKKwkgKiBJbmRleGVz IG9mIGFsbCByYW5nZSB0YWJsZSBlbnRyaWVzIG1pbnVzIGluZGV4ZXMgb2YgcmFuZ2UgdGFibGUg ZW50cmllcworCSAqIG9mIHRoZSBsZWFmIHBhcnRpdGlvbnMgc2Nhbm5lZCBieSBwcnVuYWJsZSBz dWJwbGFuczsgc2VlCisJICogQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKQorCSAqLworCUJpdG1hcHNl dCAgKm1pbkxvY2tSZWxpZHM7CisKIAkvKiBPSURzIG9mIHJlbGF0aW9ucyB0aGUgcGxhbiBkZXBl bmRzIG9uICovCiAJTGlzdAkgICAqcmVsYXRpb25PaWRzOwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmlu ZGV4IDJlMTMyYWZjNWEuLmMwNzE3YmY0NWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC03Myw4 ICs3MywxNyBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogCUxpc3QJICAgKnBhcnRQcnVu ZUluZm9zOwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWluZWQgaW4KIAkJCQkJ CQkJICogdGhlIHBsYW4gKi8KIAorCWJvb2wJCWNvbnRhaW5zSW5pdGlhbFBydW5pbmc7CS8qIERv IGFueSBvZiB0aG9zZSBQYXJ0aXRpb25QcnVuZUluZm9zCisJCQkJCQkJCQkJICogaGF2ZSBpbml0 aWFsIHBydW5pbmcgc3RlcHMgaW4gdGhlbT8KKwkJCQkJCQkJCQkgKi8KKwogCUxpc3QJICAgKnJ0 YWJsZTsJCQkvKiBsaXN0IG9mIFJhbmdlVGJsRW50cnkgbm9kZXMgKi8KIAorCUJpdG1hcHNldCAg Km1pbkxvY2tSZWxpZHM7CS8qIEluZGV4ZXMgb2YgYWxsIHJhbmdlIHRhYmxlIGVudHJpZXMgbWlu dXMKKwkJCQkJCQkJICogaW5kZXhlcyBvZiByYW5nZSB0YWJsZSBlbnRyaWVzIG9mIHRoZSBsZWFm CisJCQkJCQkJCSAqIHBhcnRpdGlvbnMgc2Nhbm5lZCBieSBwcnVuYWJsZSBzdWJwbGFuczsKKwkJ CQkJCQkJICogc2VlIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgKi8KKwogCS8qIHJ0YWJsZSBpbmRl eGVzIG9mIHRhcmdldCByZWxhdGlvbnMgZm9yIElOU0VSVC9VUERBVEUvREVMRVRFL01FUkdFICov CiAJTGlzdAkgICAqcmVzdWx0UmVsYXRpb25zOwkvKiBpbnRlZ2VyIGxpc3Qgb2YgUlQgaW5kZXhl cywgb3IgTklMICovCiAKQEAgLTE0MTAsNiArMTQxOSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBQbGFu Um93TWFyawogICogcHJ1bmVfaW5mb3MJCQlMaXN0IG9mIExpc3RzIGNvbnRhaW5pbmcgUGFydGl0 aW9uZWRSZWxQcnVuZUluZm8gbm9kZXMsCiAgKgkJCQkJCW9uZSBzdWJsaXN0IHBlciBydW4tdGlt ZS1wcnVuYWJsZSBwYXJ0aXRpb24gaGllcmFyY2h5CiAgKgkJCQkJCWFwcGVhcmluZyBpbiB0aGUg cGFyZW50IHBsYW4gbm9kZSdzIHN1YnBsYW5zLgorICoKKyAqIG5lZWRzX2luaXRfcHJ1bmluZwlE b2VzIGFueSBvZiB0aGUgUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zIGluCisgKgkJCQkJCXBydW5l X2luZm9zIGhhdmUgaXRzIGluaXRpYWxfcHJ1bmluZ19zdGVwcyBzZXQ/CisgKgorICogbmVlZHNf ZXhlY19wcnVuaW5nCURvZXMgYW55IG9mIHRoZSBQYXJ0aXRpb25lZFJlbFBydW5lSW5mb3MgaW4K KyAqCQkJCQkJcHJ1bmVfaW5mb3MgaGF2ZSBpdHMgZXhlY19wcnVuaW5nX3N0ZXBzIHNldD8KKyAq CiAgKiBvdGhlcl9zdWJwbGFucwkJSW5kZXhlcyBvZiBhbnkgc3VicGxhbnMgdGhhdCBhcmUgbm90 IGFjY291bnRlZCBmb3IKICAqCQkJCQkJYnkgYW55IG9mIHRoZSBQYXJ0aXRpb25lZFJlbFBydW5l SW5mbyBub2RlcyBpbgogICoJCQkJCQkicHJ1bmVfaW5mb3MiLiAgVGhlc2Ugc3VicGxhbnMgbXVz dCBub3QgYmUgcHJ1bmVkLgpAQCAtMTQyMCw2ICsxNDM2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGFy dGl0aW9uUHJ1bmVJbmZvCiAKIAlOb2RlVGFnCQl0eXBlOwogCUxpc3QJICAgKnBydW5lX2luZm9z OworCWJvb2wJCW5lZWRzX2luaXRfcHJ1bmluZzsKKwlib29sCQluZWVkc19leGVjX3BydW5pbmc7 CiAJQml0bWFwc2V0ICAqb3RoZXJfc3VicGxhbnM7CiB9IFBhcnRpdGlvblBydW5lSW5mbzsKIApA QCAtMTQ2NCw2ICsxNDgyLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uZWRSZWxQcnVuZUlu Zm8KIAkvKiByZWxhdGlvbiBPSUQgYnkgcGFydGl0aW9uIGluZGV4LCBvciAwICovCiAJT2lkCQkg ICAqcmVsaWRfbWFwIHBnX25vZGVfYXR0cihhcnJheV9zaXplKG5wYXJ0cykpOwogCisJLyogUmFu Z2UgdGFibGUgaW5kZXggYnkgcGFydGl0aW9uIGluZGV4LCBvciAwLiAqLworCUluZGV4CSAgICpy dGlfbWFwIHBnX25vZGVfYXR0cihhcnJheV9zaXplKG5wYXJ0cykpOworCiAJLyoKIAkgKiBpbml0 aWFsX3BydW5pbmdfc3RlcHMgc2hvd3MgaG93IHRvIHBydW5lIGR1cmluZyBleGVjdXRvciBzdGFy dHVwIChpLmUuLAogCSAqIHdpdGhvdXQgdXNlIG9mIGFueSBQQVJBTV9FWEVDIFBhcmFtcyk7IGl0 IGlzIE5JTCBpZiBubyBzdGFydHVwIHBydW5pbmcKQEAgLTE1NDgsNiArMTU2OSwzMSBAQCB0eXBl ZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0ZXBDb21iaW5lCiAJTGlzdAkgICAqc291cmNlX3N0 ZXBpZHM7CiB9IFBhcnRpdGlvblBydW5lU3RlcENvbWJpbmU7CiAKKy8qLS0tLS0tLS0tLS0tLS0t LQorICogUGFydGl0aW9uUHJ1bmVSZXN1bHQKKyAqCisgKiBUaGUgcmVzdWx0IG9mIHBlcmZvcm1p bmcgRXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmcoKSBvbiBhIGdpdmVuCisgKiBQYXJ0aXRp b25QcnVuZUluZm8uCisgKgorICogdmFsaWRfc3VicGxhbnNfb2ZmcyBjb250YWlucyB0aGUgaW5k ZXhlcyBvZiBzdWJwbGFucyByZW1haW5pbmcgYWZ0ZXIKKyAqIHBlcmZvcm1pbmcgaW5pdGlhbCBw cnVuaW5nIGJ5IGNhbGxpbmcgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKCkgb24gdGhlCisgKiBQ YXJ0aXRpb25QcnVuZUluZm8uCisgKgorICogVGhpcyBpcyB1c2VkIHRvIHN0b3JlIHRoZSByZXN1 bHQgb2YgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmluZyB0aGF0IGlzCisgKiBwZWZvcm1lZCBiZWZv cmUgdGhlIGV4ZWN1dGlvbiBoYXMgc3RhcnRlZC4gIEEgbW9kdWxlIHRoYXQgbmVlZHMgdG8gZG8g c28KKyAqIHNob3VsZCBjYWxsIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIG9uIGEgZ2l2ZW4g UGxhbm5lZFN0bXQsIHdoaWNoCisgKiByZXR1cm5zIGEgTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVJl c3VsdCBjb250YWluaW5nIGFuIGVudHJ5IGZvciBlYWNoCisgKiBQYXJ0aXRpb25QcnVuZUluZm8g cHJlc2VudCBpbiBQbGFubmVkU3RtdC5wYXJ0X3BydW5lX2luZm9zLiAgVGhlIG1vZHVsZQorICog c2hvdWxkIHRoZW4gcGFzcyB0aGF0IGxpc3QsIGFsb25nIHdpdGggdGhlIFBsYW5uZWRTdG10LCB0 byB0aGUgZXhlY3V0b3IsCisgKiBzbyB0aGF0IGl0IGNhbiByZXVzZSB0aGUgcmVzdWx0IG9mIGlu aXRpYWwgcGFydGl0aW9uIHBydW5pbmcgd2hlbgorICogaW5pdGlhbGl6aW5nIHRoZSBzdWJwbGFu cyBmb3IgZXhlY3V0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZVJlc3Vs dAoreworCU5vZGVUYWcJCXR5cGU7CisKKwlCaXRtYXBzZXQJICAgKnZhbGlkX3N1YnBsYW5fb2Zm czsKK30gUGFydGl0aW9uUHJ1bmVSZXN1bHQ7CiAKIC8qCiAgKiBQbGFuIGludmFsaWRhdGlvbiBp bmZvCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3BsYW5jYWNoZS5oCmluZGV4IDA0OTk2MzVmNTkuLjMyNTc5ZDQ3ODggMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL3BsYW5jYWNoZS5oCkBAIC0yMjAsNyArMjIwLDggQEAgZXh0ZXJuIExpc3QgKkNhY2hlZFBs YW5HZXRUYXJnZXRMaXN0KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiBleHRlcm4gQ2Fj aGVkUGxhbiAqR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJ CQkJCQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAkJCQkJCQkJIFJlc291cmNlT3duZXIg b3duZXIsCi0JCQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisJCQkJCQkJCSBR dWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCQkJCQkJIExpc3QgKipwYXJ0X3BydW5lX3Jl c3VsdHNfbGlzdCk7CiBleHRlcm4gdm9pZCBSZWxlYXNlQ2FjaGVkUGxhbihDYWNoZWRQbGFuICpw bGFuLCBSZXNvdXJjZU93bmVyIG93bmVyKTsKIAogZXh0ZXJuIGJvb2wgQ2FjaGVkUGxhbkFsbG93 c1NpbXBsZVZhbGlkaXR5Q2hlY2soQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9y dGFsLmgKaW5kZXggYWVkZGJkYWZlNS4uMTkwMWZjNWYyOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKQEAgLTEz OCw2ICsxMzgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQb3J0YWxEYXRhCiAJUXVlcnlDb21wbGV0aW9u IHFjOwkJCS8qIGNvbW1hbmQgY29tcGxldGlvbiBkYXRhIGZvciBleGVjdXRlZCBxdWVyeSAqLwog CUxpc3QJICAgKnN0bXRzOwkJCS8qIGxpc3Qgb2YgUGxhbm5lZFN0bXRzICovCiAJQ2FjaGVkUGxh biAqY3BsYW47CQkJLyogQ2FjaGVkUGxhbiwgaWYgc3RtdHMgYXJlIGZyb20gb25lICovCisJTGlz dAkgICAqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3Q7CS8qIExpc3Qgb2YgTGlzdHMgb2YgUGFydGl0 aW9uUHJ1bmVSZXN1bHRzICovCiAKIAlQYXJhbUxpc3RJbmZvIHBvcnRhbFBhcmFtczsgLyogcGFy YW1zIHRvIHBhc3MgdG8gcXVlcnkgKi8KIAlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudjsgLyog ZW52aXJvbm1lbnQgZm9yIHF1ZXJ5ICovCkBAIC0yNDIsNiArMjQzLDggQEAgZXh0ZXJuIHZvaWQg UG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAkJCQkJCQkgIENvbW1hbmRUYWcgY29t bWFuZFRhZywKIAkJCQkJCQkgIExpc3QgKnN0bXRzLAogCQkJCQkJCSAgQ2FjaGVkUGxhbiAqY3Bs YW4pOworZXh0ZXJuIHZvaWQgUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMoUG9ydGFs IHBvcnRhbCwKKwkJCQkJCQkJCQkJIExpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKIGV4 dGVybiBQbGFubmVkU3RtdCAqUG9ydGFsR2V0UHJpbWFyeVN0bXQoUG9ydGFsIHBvcnRhbCk7CiBl eHRlcm4gdm9pZCBQb3J0YWxDcmVhdGVIb2xkU3RvcmUoUG9ydGFsIHBvcnRhbCk7CiBleHRlcm4g dm9pZCBQb3J0YWxIYXNoVGFibGVEZWxldGVBbGwodm9pZCk7Ci0tIAoyLjM1LjMKCg== --000000000000a6c2e105ebfb163c--