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 1oiWIB-0001TL-T7 for pgsql-hackers@arkaria.postgresql.org; Wed, 12 Oct 2022 07:36:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oiWIA-0002ci-Oe for pgsql-hackers@arkaria.postgresql.org; Wed, 12 Oct 2022 07:36:38 +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 1oiWIA-0002bd-5V for pgsql-hackers@lists.postgresql.org; Wed, 12 Oct 2022 07:36:38 +0000 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1oiWI7-0003SL-0l for pgsql-hackers@postgresql.org; Wed, 12 Oct 2022 07:36:37 +0000 Received: by mail-pj1-x1029.google.com with SMTP id x1-20020a17090ab00100b001fda21bbc90so1246265pjq.3 for ; Wed, 12 Oct 2022 00:36:34 -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=I9LFNx6yhUVCnd8/dxLpPZBhKHBcyuBjhvzVJ4kmcZk=; b=ctOsMjMEvEkNL2prP/5KVcGSheHZAtmfBhSxgDlG3gScPhcZ4NpVdfLNrytfm+Ckcb oYSpZ6jGvr+ohJ4+3YJynqyEm/2UdFU54jXgc7bL8KWhpVxnXcMQ2lA6xbwZnuI4RfvD BQmIAyr0Qa1RAIBArmS2iZ1phI5qrb2d5j370NwFWFug+DUZhXm6JAtgeLfri0NIqdme hTPY9JlIa4tq97cDHb6jKof6qsrwKJeyulrX30NtUudXQIYUPJkUIzRAxg7JWBb5ARM5 eXOTK9uLPCuXp0RyxFe080pZUYI7TlsyGWPR7d2vu9EOFvaBUotgf67UUDZ4BGGwJadC qOvw== 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=I9LFNx6yhUVCnd8/dxLpPZBhKHBcyuBjhvzVJ4kmcZk=; b=yew57X0EJ+I5+tvy8SrYm/emZ/K+7EmlYio6cb7cRyCeJQIVPEisuuBK5lYCnEGMSJ AfGpUOZGw4LOfsrZeiKR5Zkr3kg5rnumfk25ihAO33T4ooAioerfa5VPas1hkrT+QuSC 1iqeTWb+0/7WoCEuE+3beKE2SoIYZ5CesnqFG3n9nZgaDTr99qGrlUXPBz+AiE9I/8P/ eTUXoRgLnmBdIn/o1pq8T5s3xxmZ1ujCyqV1BzisRP2sqpjVQutsqCT6oI/f94fcadmq 2LxnsNktpAvNMKNTWk1T6NPLhNoDaZ39Z3S3TbyhsW1gzLLDJoq8L6ipif7aklhRtZiu v/ag== X-Gm-Message-State: ACrzQf3bcgbidMPlELI4kpHHb9co0XaaSeUK43kCUfnIuX6g5GCQPJ42 5w+JHVlHX1qA09djJ+dxRXTVXmPDr6N1ZIFmFDY= X-Google-Smtp-Source: AMsMyM4XsILJhz1PzdTKIT3tMC+dAWimSAe7DUcSiSXQnR4FxKniHRkXgtpUnXTBwebqi6doenKP2x/26oVid7dq3Vw= X-Received: by 2002:a17:902:7084:b0:181:5304:fef4 with SMTP id z4-20020a170902708400b001815304fef4mr20188422plk.57.1665560192469; Wed, 12 Oct 2022 00:36:32 -0700 (PDT) MIME-Version: 1.0 References: <215356.1647286703@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Wed, 12 Oct 2022 16:36:15 +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="000000000000a120e605ead1738c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a120e605ead1738c Content-Type: text/plain; charset="UTF-8" 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? -- Thanks, Amit Langote EDB: http://www.enterprisedb.com [1] https://www.postgresql.org/message-id/CA%2BHiwqH80qX1ZLx3HyHmBrOzLQeuKuGx6FzGep0F_9zw9L4PAA%40mail.gmail.com --000000000000a120e605ead1738c Content-Type: application/octet-stream; name="v21-0001-Move-PartitioPruneInfo-out-of-plan-nodes-into-Pl.patch" Content-Disposition: attachment; filename="v21-0001-Move-PartitioPruneInfo-out-of-plan-nodes-into-Pl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l95bgn5e0 RnJvbSAwNmNkYTE0MTEzYzM1NzI0NDBhNzE2YTRhYWNiMjUwYjJlZDUyZjUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyNyBNYXkgMjAyMiAxNjowMDoyOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjIxIDEv M10gTW92ZSBQYXJ0aXRpb1BydW5lSW5mbyBvdXQgb2YgcGxhbiBub2RlcyBpbnRvCiBQbGFubmVk 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 YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCBhYjRkOGUy MDFkLi4yYmZiODE3ZDc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9j 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 L3BsYW4vcGxhbm5lci5jCmluZGV4IDVkMGZkNmUwNzIuLjMxZmZmNTk3YTcgMTAwNjQ0Ci0tLSBh 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 bm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggNmJkYTM4M2JlYS4uZTM5MmZiNmZjMCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmgKQEAgLTEyMiw2ICsxMjIsOSBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVyR2xv YmFsCiAJLyogImZsYXQiIGxpc3Qgb2YgQXBwZW5kUmVsSW5mb3MgKi8KIAlMaXN0CSAgICphcHBl bmRSZWxhdGlvbnM7CiAKKwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWluZWQg aW4gdGhlIHBsYW4gKi8KKwlMaXN0CSAgICpwYXJ0UHJ1bmVJbmZvczsKKwogCS8qIE9JRHMgb2Yg cmVsYXRpb25zIHRoZSBwbGFuIGRlcGVuZHMgb24gKi8KIAlMaXN0CSAgICpyZWxhdGlvbk9pZHM7 CiAKQEAgLTUwMyw2ICs1MDYsOSBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAogCS8qIERvZXMgdGhp cyBxdWVyeSBtb2RpZnkgYW55IHBhcnRpdGlvbiBrZXkgY29sdW1ucz8gKi8KIAlib29sCQlwYXJ0 Q29sc1VwZGF0ZWQ7CisKKwkvKiBQYXJ0aXRpb25QcnVuZUluZm9zIGFkZGVkIGluIHRoaXMgcXVl cnkncyBwbGFuLiAqLworCUxpc3QJICAgKnBhcnRQcnVuZUluZm9zOwogfTsKIAogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oCmluZGV4IDIxZTY0MmE2NGMuLjNlYjNlNmU1MjcgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oCkBAIC03MCw2ICs3MCw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZWRTdG10CiAKIAlzdHJ1 Y3QgUGxhbiAqcGxhblRyZWU7CQkvKiB0cmVlIG9mIFBsYW4gbm9kZXMgKi8KIAorCUxpc3QJICAg KnBhcnRQcnVuZUluZm9zOwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWluZWQg aW4KKwkJCQkJCQkJICogdGhlIHBsYW4gKi8KKwogCUxpc3QJICAgKnJ0YWJsZTsJCQkvKiBsaXN0 IG9mIFJhbmdlVGJsRW50cnkgbm9kZXMgKi8KIAogCS8qIHJ0YWJsZSBpbmRleGVzIG9mIHRhcmdl dCByZWxhdGlvbnMgZm9yIElOU0VSVC9VUERBVEUvREVMRVRFICovCkBAIC0yNzAsOCArMjczLDgg QEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kCiAJICovCiAJaW50CQkJZmlyc3RfcGFydGlhbF9wbGFu OwogCi0JLyogSW5mbyBmb3IgcnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3Jl IG5vdCBkb2luZyB0aGF0ICovCi0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVu ZV9pbmZvOworCS8qIEluZGV4IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlm IG5vIHJ1bi10aW1lIHBydW5pbmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBBcHBl bmQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTMwNSw4ICszMDgsOCBAQCB0eXBlZGVmIHN0 cnVjdCBNZXJnZUFwcGVuZAogCS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0aW9ucyAqLwogCWJv b2wJICAgKm51bGxzRmlyc3QgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOwogCi0J LyogSW5mbyBmb3IgcnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBk b2luZyB0aGF0ICovCi0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZv OworCS8qIEluZGV4IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1 bi10aW1lIHBydW5pbmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBNZXJnZUFwcGVu ZDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0 aW9uaW5nL3BhcnRwcnVuZS5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5o CmluZGV4IDkwNjg0ZWZhMjUuLmViZjBkY2ZmOGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bh cnRpdGlvbmluZy9wYXJ0cHJ1bmUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFy dHBydW5lLmgKQEAgLTcwLDEwICs3MCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVu ZUNvbnRleHQKICNkZWZpbmUgUHJ1bmVDeHRTdGF0ZUlkeChwYXJ0bmF0dHMsIHN0ZXBfaWQsIGtl eW5vKSBcCiAJKChwYXJ0bmF0dHMpICogKHN0ZXBfaWQpICsgKGtleW5vKSkKIAotZXh0ZXJuIFBh cnRpdGlvblBydW5lSW5mbyAqbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHN0cnVjdCBQbGFubmVy SW5mbyAqcm9vdCwKLQkJCQkJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAot CQkJCQkJCQkJCQkJCUxpc3QgKnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCUxpc3QgKnBydW5lcXVh bCk7CitleHRlcm4gaW50IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lcklu Zm8gKnJvb3QsCisJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAorCQkJCQkJ CQkJTGlzdCAqc3VicGF0aHMsCisJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOwogZXh0ZXJuIEJp dG1hcHNldCAqcHJ1bmVfYXBwZW5kX3JlbF9wYXJ0aXRpb25zKHN0cnVjdCBSZWxPcHRJbmZvICpy ZWwpOwogZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X21hdGNoaW5nX3BhcnRpdGlvbnMoUGFydGl0aW9u UHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgTGlzdCAqcHJ1bmluZ19zdGVwcyk7 Ci0tIAoyLjM1LjMKCg== --000000000000a120e605ead1738c Content-Type: application/octet-stream; name="v21-0003-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Disposition: attachment; filename="v21-0003-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l95bgn5l2 RnJvbSBjZTI4YzRjZmU4YmM2OWUzMTNiYTdmNTliMDQ4ZmU5NmY3MzEzOWE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBEZWMgMjAyMSAxNjo1NToxNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjIxIDMv M10gT3B0aW1pemUgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBieSBsb2NraW5nIG9ubHkKIHVucHJ1 bmVkIHBhcnRpdGlvbnMKClRoaXMgY29tbWl0IHRlYWNoZXMgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSB0byBwZXJmb3JtIGluaXRpYWwKcGFydGl0aW9uIHBydW5pbmcgdG8gbm90aW9uYWxseSBlbGlt aW5hdGUgdGhlIHN1Ym5vZGVzIGNvbnRhaW5lZCBpbiBhCmdlbmVyaWMgY2FjaGVkIHBsYW4gdGhh dCBuZWVkIG5vdCBiZSBpbml0aWFsaXplZCBkdXJpbmcgdGhlIGFjdHVhbApleGVjdXRpb24gb2Yg dGhlIHBsYW4gYW5kIHNraXAgbG9ja2luZyB0aGUgcGFydGl0aW9uIHNjYW5uZWQgYnkgdGhvc2UK c3Vibm9kZXMuCgpUaGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1 bmluZyB0aGlzIHdheSBiZWZvcmUgdGhlCmFjdHVhbCBleGVjdXRpb24gaGFzIHN0YXJ0ZWQgaXMg bWFkZSBhdmFpbGFibGUgdG8gdGhlIGFjdHVhbCBleGVjdXRpb24gdmlhClBhcnRpdGlvblBydW5l UmVzdWx0LCBtYWRlIGF2YWlsYWJsZSBhbG9uZyB3aXRoIHRoZSBQbGFubmVkU3RtdCBieSB0aGUK Y2FsbGVycyBvZiB0aGUgZXhlY3V0b3IgdGhhdCB1c2VkIHBsYW5jYWNoZS5jIHRvIGdldCB0aGUg cGxhbi4gIEl0IGlzIE5VTEwKaW4gdGhlIGNhc2VzIGluIHdoaWNoIHRoZSBwbGFuIGlzIG9idGFp bmVkIGJ5IGNhbGxpbmcgdGhlIHBsYW5uZXIKZGlyZWN0bHkgb3IgaWYgdGhlIHBsYW4gb2J0YWlu ZWQgYnkgcGxhbmNhY2hlLmMgaXMgbm90IGEgZ2VuZXJpYyBvbmUuCi0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NyZWF0ZWFzLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICB8ICAyNiArKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgICAgICAgIHwgIDMyICsrKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgIHwgIDU1ICsrKysrKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgfCAgMjcgKystCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMgICB8IDIzOCArKysrKysrKysrKysrKysrKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFwcGVuZC5jICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJn ZUFwcGVuZC5jIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAg ICB8ICAyNyArKy0KIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgIHwgICA4 ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICB8ICAgMiArCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICB8ICA0NiArKysrKwogc3JjL2JhY2tl bmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAgfCAgNDEgKysrKy0KIHNyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYyAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC90Y29wL3BxdWVy eS5jICAgICAgICAgICAgICB8ICAyOCArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5j YWNoZS5jICAgIHwgMTg3ICsrKysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21t Z3IvcG9ydGFsbWVtLmMgICAgIHwgIDE5ICsrCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWlu LmggICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5o ICAgfCAgIDkgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAgICAgIHwgICAz ICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgIHwgICAyICsKIHNyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25v ZGVzL25vZGVzLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oICAgICAgICAgIHwgIDEyICsrCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAg ICAgICAgICB8ICA0NyArKysrKwogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAg ICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgICAgIHwgICAz ICsKIDMzIGZpbGVzIGNoYW5nZWQsIDc2MyBpbnNlcnRpb25zKCspLCAxMDAgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCAyNTI3ZTY2MDU5Li5kZjRiMGRjZjBlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5dG8uYwpAQCAtNTU4LDcgKzU1OCw3IEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAkJKChEUl9jb3B5ICopIGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7CiAKIAkJLyog Q3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNzdGF0ZS0+cXVl cnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQlj c3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBf c291cmNldGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJ SW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jcmVhdGVhcy5jCmluZGV4IDE1MmMyOWI1NTEuLjQ2MjY1MTkxMGEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY3JlYXRlYXMuYwpAQCAtMzI1LDcgKzMyNSw3IEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCVVwZGF0ZUFjdGl2ZVNu YXBzaG90Q29tbWFuZElkKCk7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGlu ZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCi0JCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJcXVlcnlEZXNjID0gQ3JlYXRl UXVlcnlEZXNjKHBsYW4sIE5VTEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJR2V0 QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJZGVzdCwgcGFyYW1z LCBxdWVyeUVudiwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBmODY5ODNjNjYwLi4y MTljNjNmYTgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC00MDcsNyArNDA3LDcgQEAgRXhw bGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCX0KIAogCQkv KiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JCUV4cGxhaW5PbmVQ bGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwkJRXhw bGFpbk9uZVBsYW4ocGxhbiwgTlVMTCwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1 ZXJ5RW52LAogCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2Ug OiBOVUxMKSk7CiAJfQogfQpAQCAtNTE1LDcgKzUxNSw4IEBAIEV4cGxhaW5PbmVVdGlsaXR5KE5v ZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogICog dG8gY2FsbCBpdC4KICAqLwogdm9pZAotRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5u ZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorRXhwbGFpbk9uZVBs YW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9w cnVuZV9yZXN1bHQsCisJCQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAog CQkJICAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJ ICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJh dGlvbiwKIAkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSkKQEAgLTU2Myw3ICs1NjQs NyBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2Ug KmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCiAJLyog Q3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVR dWVyeURlc2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhwbGFubmVkc3RtdCwgcGFydF9wcnVuZV9yZXN1bHQsIHF1ZXJ5U3RyaW5nLAogCQkJ CQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3Qs IHBhcmFtcywgcXVlcnlFbnYsIGluc3RydW1lbnRfb3B0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRl bnNpb24uYwppbmRleCA2YjY3MjBjNjkwLi4zNzRjMGZmODA3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRl bnNpb24uYwpAQCAtNzc2LDcgKzc3Niw3IEBAIGV4ZWN1dGVfc3FsX3N0cmluZyhjb25zdCBjaGFy ICpzcWwpCiAJCQl7CiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAKLQkJCQlxZGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsIE5VTEws CiAJCQkJCQkJCQkJc3FsLAogCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIE5VTEwsCiAJ CQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXgg OWFjMDM4MzQ1OS4uYjBlZDk2ZTU2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWF0dmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDA4LDcg KzQwOCw3IEBAIHJlZnJlc2hfbWF0dmlld19kYXRhZmlsbChEZXN0UmVjZWl2ZXIgKmRlc3QsIFF1 ZXJ5ICpxdWVyeSwKIAlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCiAJLyogQ3Jl YXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVy ICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHF1ZXJ5U3RyaW5nLAorCXF1 ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBxdWVyeVN0cmluZywKIAkJCQkJ CQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBO VUxMLCBOVUxMLCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFy ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IGM0YjU0ZDA1NDcuLjY5 ZTAyZTAzNDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTE1NSw2ICsxNTUsNyBAQCBFeGVj dXRlUXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCVByZXBhcmVkU3RhdGVtZW50ICplbnRyeTsK IAlDYWNoZWRQbGFuICpjcGxhbjsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7CisJTGlzdAkgICAqcGFy dF9wcnVuZV9yZXN1bHRfbGlzdDsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtTEkgPSBOVUxMOwogCUVT dGF0ZQkgICAqZXN0YXRlID0gTlVMTDsKIAlQb3J0YWwJCXBvcnRhbDsKQEAgLTE5Myw3ICsxOTQs MTAgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCSAgIGVudHJ5 LT5wbGFuc291cmNlLT5xdWVyeV9zdHJpbmcpOwogCiAJLyogUmVwbGFuIGlmIG5lZWRlZCwgYW5k IGluY3JlbWVudCBwbGFuIHJlZmNvdW50IGZvciBwb3J0YWwgKi8KLQljcGxhbiA9IEdldENhY2hl ZFBsYW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIE5VTEwpOworCWNwbGFuID0g R2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwgTlVMTCwgTlVMTCwKKwkJ CQkJCSAgJnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOworCUFzc2VydChsaXN0X2xlbmd0aChjcGxh bi0+c3RtdF9saXN0KSA9PQorCQkgICBsaXN0X2xlbmd0aChwYXJ0X3BydW5lX3Jlc3VsdF9saXN0 KSk7CiAJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCS8qCkBAIC0yMDcsNiArMjEx LDkgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBwbGFuX2xpc3Qs CiAJCQkJCSAgY3BsYW4pOwogCisJLyogQ29weSBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgaW50byB0 aGUgcG9ydGFsJ3MgY29udGV4dC4gKi8KKwlQb3J0YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0 cyhwb3J0YWwsIHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOworCiAJLyoKIAkgKiBGb3IgQ1JFQVRF IFRBQkxFIC4uLiBBUyBFWEVDVVRFLCB3ZSBtdXN0IHZlcmlmeSB0aGF0IHRoZSBwcmVwYXJlZAog CSAqIHN0YXRlbWVudCBpcyBvbmUgdGhhdCBwcm9kdWNlcyB0dXBsZXMuICBDdXJyZW50bHkgd2Ug aW5zaXN0IHRoYXQgaXQgYmUKQEAgLTU3Niw3ICs1ODMsOSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5 KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICpl cywKIAljb25zdCBjaGFyICpxdWVyeV9zdHJpbmc7CiAJQ2FjaGVkUGxhbiAqY3BsYW47CiAJTGlz dAkgICAqcGxhbl9saXN0OwotCUxpc3RDZWxsICAgKnA7CisJTGlzdAkgICAqcGFydF9wcnVuZV9y ZXN1bHRfbGlzdDsKKwlMaXN0Q2VsbCAgICpwLAorCQkJICAgKnBwOwogCVBhcmFtTGlzdEluZm8g cGFyYW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxMOwogCWluc3RyX3RpbWUJ cGxhbnN0YXJ0OwpAQCAtNjE5LDcgKzYyOCwxMCBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1 dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAog CS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBhY3F1aXJlIGEgdHJhbnNpZW50IHJlZmNvdW50ICov CiAJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLAotCQkJ CQkJICBDdXJyZW50UmVzb3VyY2VPd25lciwgcXVlcnlFbnYpOworCQkJCQkJICBDdXJyZW50UmVz b3VyY2VPd25lciwgcXVlcnlFbnYsCisJCQkJCQkgICZwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsK KwlBc3NlcnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0bXRfbGlzdCkgPT0KKwkJICAgbGlzdF9sZW5n dGgocGFydF9wcnVuZV9yZXN1bHRfbGlzdCkpOwogCiAJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChw bGFuZHVyYXRpb24pOwogCUlOU1RSX1RJTUVfU1VCVFJBQ1QocGxhbmR1cmF0aW9uLCBwbGFuc3Rh cnQpOwpAQCAtNjM0LDEzICs2NDYsMTUgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3Rt dCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJcGxhbl9s aXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCS8qIEV4cGxhaW4gZWFjaCBxdWVyeSAqLwotCWZv cmVhY2gocCwgcGxhbl9saXN0KQorCWZvcmJvdGgocCwgcGxhbl9saXN0LCBwcCwgcGFydF9wcnVu ZV9yZXN1bHRfbGlzdCkKIAl7CiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBs YW5uZWRTdG10LCBwKTsKKwkJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0 ID0gbGZpcnN0X25vZGUoUGFydGl0aW9uUHJ1bmVSZXN1bHQsIHBwKTsKIAogCQlpZiAocHN0bXQt PmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGlu dG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHF1ZXJ5RW52LAotCQkJCQkJICAgJnBsYW5k dXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOworCQkJRXhwbGFpbk9u ZVBsYW4ocHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLAor CQkJCQkJICAgcGFyYW1MSSwgcXVlcnlFbnYsICZwbGFuZHVyYXRpb24sCisJCQkJCQkgICAoZXMt PmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7CiAJCWVsc2UKIAkJCUV4cGxhaW5PbmVVdGls aXR5KHBzdG10LT51dGlsaXR5U3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywKIAkJCQkJCQkg IHBhcmFtTEksIHF1ZXJ5RW52KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JF QURNRSBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQppbmRleCAwYjUxODNmYzRhLi45NTNh NDc2ZWE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCkBAIC02NSw2ICs2NSwzNCBAQCBmb3VuZCB0aGVyZS4g IFRoaXMgY3VycmVudGx5IG9ubHkgb2NjdXJzIGZvciBBcHBlbmQgYW5kIE1lcmdlQXBwZW5kIG5v ZGVzLiAgSW4KIHRoaXMgY2FzZSB0aGUgbm9uLXJlcXVpcmVkIHN1YnBsYW5zIGFyZSBpZ25vcmVk IGFuZCB0aGUgZXhlY3V0b3Igc3RhdGUncwogc3Vibm9kZSBhcnJheSB3aWxsIGJlY29tZSBvdXQg b2Ygc2VxdWVuY2UgdG8gdGhlIHBsYW4ncyBzdWJwbGFuIGxpc3QuCiAKK0FjdHVhbGx5LCB0aGUg c28tY2FsbGVkIGV4ZWN1dGlvbiB0aW1lIHBydW5pbmcgbWF5IGFsc28gb2NjdXIgZXZlbiBiZWZv cmUgdGhlCitleGVjdXRpb24gaGFzIHN0YXJ0ZWQuICBPbmUgY2FzZSB3aGVyZSB0aGF0IG9jY3Vy cyBpcyB3aGVuIGEgY2FjaGVkIGdlbmVyaWMKK3BsYW4gaXMgYmVpbmcgdmFsaWRhdGVkIGZvciBl eGVjdXRpb24gYnkgcGxhbmNhY2hlLmM6IEdldENhY2hlZFBsYW4oKSwgd2hpY2gKK3dvcmtzIGJ5 IGxvY2tpbmcgYWxsIHRoZSByZWxhdGlvbnMgdGhhdCB3aWxsIGJlIHNjYW5uZWQgYnkgdGhhdCBw bGFuLiAgSWYgdGhlCitnZW5lcmljIHBsYW4gY29udGFpbnMgbm9kZXMgdGhhdCBjYW4gcGVyZm9y bSBleGVjdXRpb24gdGltZSBwYXJ0aXRpb24gcHJ1bmluZworKHRoYXQgaXMsIGNvbnRhaW4gYSBQ YXJ0aXRpb25QcnVuZUluZm8pLCBhIHN1YnNldCBvZiBwcnVuaW5nIHN0ZXBzIGNvbnRhaW5lZAor aW4gYSBnaXZlbiBub2RlJ3MgUGFydGl0aW9uUHJ1bmVJbmZvIHRoYXQgZG8gbm90IGRlcGVuZCBv biB0aGUgZXhlY3V0aW9uCithY3R1YWxseSBoYXZpbmcgc3RhcnRlZCAoY2FsbGVkICJpbml0aWFs IiBwcnVuaW5nIHN0ZXBzKSBhcmUgcGVyZm9ybWVkIGF0IHRoaXMKK3BvaW50IHRvIGZpZ3VyZSBv dXQgdGhlIG1pbmltYWwgc2V0IG9mIGNoaWxkIHN1YnBsYW5zIHRoYXQgc2F0aXNmeSB0aG9zZQor cHJ1bmluZyBzdGVwcy4gIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgbG9va2luZyBhdCBhIGdpdmVu IHBsYW4gdHJlZSB3aWxsIHRoZW4KK2xvY2sgb25seSB0aGUgcmVsYXRpb25zIHNjYW5uZWQgYnkg dGhlIGNoaWxkIHN1YnBsYW5zIHRoYXQgc3Vydml2ZWQgc3VjaAorcHJ1bmluZywgYWxvbmcgd2l0 aCB0aG9zZSBwcmVzZW50IGluIFBsYW5uZWRTdG10Lm1pbkxvY2tSZWxpZHMuICBOb3RlIHRoYXQg dGhlCitzdWJwbGFucyBhcmUgb25seSBub3Rpb25hbGx5IHBydW5lZCBpbiB0aGF0IHRoZXkgYXJl IG5vdCByZW1vdmVkIGZyb20gdGhlIHBsYW4KK3RyZWUgYXMgc3VjaC4KKworVG8gcHJldmVudCB0 aGUgZXhlY3V0b3IgYW5kIGFueSB0aGlyZCBwYXJ0eSBleGVjdXRpb24gY29kZSB0aGF0IGNhbiBs b29rIGF0Cit0aGUgcGxhbiB0cmVlIGZyb20gdHJ5aW5nIHRvIGV4ZWN1dGUgdGhlIHN1YnBsYW5z IHRoYXQgd2VyZSBwcnVuZWQgYXMKK2Rlc2NyaWJlZCBhYm92ZSwgdGhlIHJlc3VsdCBvZiBwcnVu aW5nIGlzIHBhc3NlZCB0byB0aGUgZXhlY3V0b3IgYXMgYQorUGFydGl0aW9uUHJ1bmVSZXN1bHQg bm9kZSB2aWEgdGhlIFF1ZXJ5RGVzYy4gIEl0IGNvbnNpc3RzIG9mIHRoZSBzZXQgb2YKK2luZGV4 ZXMgb2Ygc3Vydml2aW5nIHN1YnBsYW5zIGluIHRoZWlyIHJlc3BlY3RpdmUgcGFyZW50IHBsYW4g bm9kZSdzIGxpc3Qgb2YKK2NoaWxkIHN1YnBsYW5zLCBzYXZlZCBhcyBhIGxpc3Qgb2YgYml0bWFw c2V0cywgd2l0aCBvbmUgZWxlbWVudCBmb3IgZXZlcnkKK3BhcmVudCBwbGFuIG5vZGUgd2hvc2Ug UGFydGl0aW9uUHJ1bmVJbmZvIGlzIHByZXNlbnQgaW4KK1BsYW5uZWRTdG10LnBhcnRQcnVuZUlu Zm9zLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBleGVjdXRvciBzaG91bGQgbm90CityZS1ldmFsdWF0 ZSB0aGUgc2V0IG9mIGluaXRpYWxseSB2YWxpZCBzdWJwbGFucyBieSByZWRvaW5nIHRoZSBpbml0 aWFsIHBydW5pbmcKK2lmIGl0IHdhcyBhbHJlYWR5IGRvbmUgYnkgQWNxdWlyZUV4ZWN1dG9yTG9j a3MoKSwgYmVjYXVzZSB0aGUgcmUtZXZhbHVhdGlvbiBtYXkKK3Zlcnkgd2VsbCBlbmQgdXAgcmVz dWx0aW5nIGluIGEgZGlmZmVyZW50IHNldCBvZiBzdWJwbGFucywgY29udGFpbmluZyBzb21lCit3 aG9zZSByZWxhdGlvbnMgd2VyZSBub3QgbG9ja2VkIGJ5IEFjcXVpcmVFeGVjdXRvckxvY2tzKCku CisKIEVhY2ggUGxhbiBub2RlIG1heSBoYXZlIGV4cHJlc3Npb24gdHJlZXMgYXNzb2NpYXRlZCB3 aXRoIGl0LCB0byByZXByZXNlbnQKIGl0cyB0YXJnZXQgbGlzdCwgcXVhbGlmaWNhdGlvbiBjb25k aXRpb25zLCBldGMuICBUaGVzZSB0cmVlcyBhcmUgYWxzbwogcmVhZC1vbmx5IHRvIHRoZSBleGVj dXRvciwgYnV0IHRoZSBleGVjdXRvciBzdGF0ZSBmb3IgZXhwcmVzc2lvbiBldmFsdWF0aW9uCkBA IC0yODYsNiArMzE0LDEwIEBAIFF1ZXJ5IFByb2Nlc3NpbmcgQ29udHJvbCBGbG93CiAKIFRoaXMg aXMgYSBza2V0Y2ggb2YgY29udHJvbCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAK KyAgWyBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcgXSAtLS0gYW4gb3B0aW9uYWwgc3RlcCB0byBw ZXJmb3JtIGluaXRpYWwKKwkJcGFydGl0aW9uIHBydW5pbmcgb24gdGhlIHBsYW4gdHJlZSB0aGUg cmVzdWx0IG9mIHdoaWNoIGlzIHBhc3NlZAorCQl0byB0aGUgZXhlY3V0b3IgdmlhIFF1ZXJ5RGVz YworCiAJQ3JlYXRlUXVlcnlEZXNjCiAKIAlFeGVjdXRvclN0YXJ0CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYwppbmRleCAzMjQ3NWUzM2ZmLi42ZTJjZDE1OTZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9tYXR2aWV3LmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZWJ1Zy5o IgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRv ci9ub2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZvcmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVkZSAi aml0L2ppdC5oIgpAQCAtMTA0LDYgKzEwNSw1OCBAQCBzdGF0aWMgdm9pZCBFdmFsUGxhblF1YWxT dGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsKIAogLyogZW5kIG9mIGxv Y2FsIGRlY2xzICovCiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcK KyAqCisgKgkJRm9yIGVhY2ggcGxhbiB0cmVlIG5vZGUgdGhhdCBoYXMgYmVlbiBhc3NpZ25lZCBh IFBhcnRpdGlvblBydW5lSW5mbywKKyAqCQl0aGlzIHBlcmZvcm1zIGluaXRpYWwgcGFydGl0aW9u IHBydW5pbmcgdXNpbmcgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZAorICoJCXRoZXJlaW4gdG8g ZGV0ZXJtaW5lIHRoZSBzZXQgb2YgY2hpbGQgc3VicGxhbnMgdGhhdCBzYXRpc2Z5IHRoZSBpbml0 aWFsCisgKgkJcHJ1bmluZyBzdGVwcywgdG8gYmUgcmV0dXJuZWQgYXMgYSBiaXRtYXBzZXQgb2Yg dGhlaXIgaW5kZXhlcyBpbiB0aGUKKyAqCQlub2RlJ3MgbGlzdCBvZiBjaGlsZCBzdWJwbGFucyAo Zm9yIGV4YW1wbGUsIGFuIEFwcGVuZCdzIGFwcGVuZHBsYW5zKS4KKyAqCisgKiBSZXR1cm4gdmFs dWUgaXMgYSBQYXJ0aXRpb25QcnVuZVJlc3VsdCBub2RlIHRoYXQgY29udGFpbnMgYSBsaXN0IG9m IHRob3NlCisgKiBiaXRtYXBzZXRzLCB3aXRoIG9uZSBlbGVtZW50IGZvciBldmVyeSBQYXJ0aXRp b25QcnVuZUluZm8sIGFuZCBhIGJpdG1hcHNldAorICogb2YgdGhlIFJUIGluZGV4ZXMgb2YgYWxs IHRoZSBsZWFmIHBhcnRpdGlvbnMgc2Nhbm5lZCBieSB0aG9zZSBjaG9zZW4KKyAqIHN1YnBsYW5z LiAgTm90ZSB0aGF0IHRoZSBsYXR0ZXIgaXMgc2hhcmVkIGFjcm9zcyBhbGwgUGFydGl0aW9uUHJ1 bmVJbmZvcy4KKyAqCisgKiBUaGUgZXhlY3V0b3IgbXVzdCBzZWUgdGhlIGV4YWN0bHkgc2FtZSBz ZXQgb2Ygc3VicGxhbnMgYXMgdmFsaWQgZm9yCisgKiBleGVjdXRpb24gd2hlbiBkb2luZyBFeGVj SW5pdE5vZGUoKSBvbiB0aGUgcGxhbiBub2RlcyB3aG9zZQorICogUGFydGl0aW9uUHJ1bmVJbmZv cyBhcmUgcHJvY2Vzc2VkIGhlcmUuICBTbywgaXQgbXVzdCBnZXQgdGhlIHNldCBmcm9tIHRoZQor ICogYWZvcmVtZW50aW9uZWQgUGFydGl0aW9uUHJ1bmVSZXN1bHQsIGluc3RlYWQgb2YgY29tcHV0 aW5nIGl0IGFsbCBvdmVyCisgKiBhZ2FpbiBieSByZWRvaW5nIHRoZSBpbml0aWFsIHBydW5pbmcu ICBJdCdzIHRoZSBjYWxsZXIncyBqb2IgdG8gcGFzcyB0aGUKKyAqIFBhcnRpdGlvblBydW5lUmVz dWx0IHRvIHRoZSBleGVjdXRvci4KKyAqCisgKiBOb3RlOiBQYXJ0aXRpb25lZCB0YWJsZXMgbWVu dGlvbmVkIGluIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIG5vZGVzIHRoYXQKKyAqIGRyaXZlIHRo ZSBwcnVuaW5nIHdpbGwgYmUgbG9ja2VkIGJlZm9yZSBkb2luZyB0aGUgcHJ1bmluZy4KKyAqIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqLworUGFydGl0aW9uUHJ1bmVSZXN1bHQgKgorRXhlY3V0b3JEb0luaXRpYWxQcnVu aW5nKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMpCit7CisJ UGFydGl0aW9uUHJ1bmVSZXN1bHQgKnJlc3VsdDsKKwlMaXN0Q2VsbCAqbGM7CisKKwkvKiBPbmx5 IGdldCBoZXJlIGlmIHRoZXJlIGlzIGFueSBwcnVuaW5nIHRvIGRvLiAqLworCUFzc2VydChwbGFu bmVkc3RtdC0+Y29udGFpbnNJbml0aWFsUHJ1bmluZyk7CisKKwlyZXN1bHQgPSBtYWtlTm9kZShQ YXJ0aXRpb25QcnVuZVJlc3VsdCk7CisJZm9yZWFjaChsYywgcGxhbm5lZHN0bXQtPnBhcnRQcnVu ZUluZm9zKQorCXsKKwkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8gPSBsZmlyc3QobGMp OworCQlCaXRtYXBzZXQgKnZhbGlkX3N1YnBsYW5fb2ZmczsKKworCQl2YWxpZF9zdWJwbGFuX29m ZnMgPQorCQkJRXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmcocGxhbm5lZHN0bXQsIHBhcmFt cywgcHJ1bmVpbmZvLAorCQkJCQkJCQkJCSAgJnJlc3VsdC0+c2Nhbl9sZWFmcGFydF9ydGlzKTsK KwkJaWYgKHZhbGlkX3N1YnBsYW5fb2ZmcykKKwkJCXZhbGlkX3N1YnBsYW5fb2Zmcy0+dHlwZSA9 IFRfQml0bWFwc2V0OworCQlyZXN1bHQtPnZhbGlkX3N1YnBsYW5fb2Zmc19saXN0ID0KKwkJCWxh cHBlbmQocmVzdWx0LT52YWxpZF9zdWJwbGFuX29mZnNfbGlzdCwKKwkJCQkJdmFsaWRfc3VicGxh bl9vZmZzKTsKKwl9CisKKwlyZXR1cm4gcmVzdWx0OworfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhl Y3V0b3JTdGFydApAQCAtODA2LDYgKzg1OSw3IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBpbnQgZWZsYWdzKQogewogCUNtZFR5cGUJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3Bl cmF0aW9uOwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0 bXQ7CisJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0ID0gcXVlcnlEZXNj LT5wYXJ0X3BydW5lX3Jlc3VsdDsKIAlQbGFuCSAgICpwbGFuID0gcGxhbm5lZHN0bXQtPnBsYW5U cmVlOwogCUxpc3QJICAgKnJhbmdlVGFibGUgPSBwbGFubmVkc3RtdC0+cnRhYmxlOwogCUVTdGF0 ZQkgICAqZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7CkBAIC04MjYsNiArODgwLDcgQEAgSW5p dFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAKIAllc3RhdGUtPmVzX3Bs YW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CiAJZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zID0g cGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOworCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1 bHQgPSBwYXJ0X3BydW5lX3Jlc3VsdDsKIAogCS8qCiAJICogTmV4dCwgYnVpbGQgdGhlIEV4ZWNS b3dNYXJrIGFycmF5IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMpLCBpZiBhbnkuCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGFjYTBjNmYzMjMuLmFiYWU1Yjg2MjMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC02Niw2ICs2Niw3IEBACiAjZGVmaW5lIFBBUkFM TEVMX0tFWV9RVUVSWV9URVhUCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDgpCiAjZGVm aW5lIFBBUkFMTEVMX0tFWV9KSVRfSU5TVFJVTUVOVEFUSU9OIFVJTlQ2NENPTlNUKDB4RTAwMDAw MDAwMDAwMDAwOSkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQkJCVVJTlQ2NENPTlNU KDB4RTAwMDAwMDAwMDAwMDAwQSkKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1BBUlRJVElPTlBSVU5F UkVTVUxUCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwQikKIAogI2RlZmluZSBQQVJBTExF TF9UVVBMRV9RVUVVRV9TSVpFCQk2NTUzNgogCkBAIC0xODIsNiArMTgzLDcgQEAgRXhlY1Nlcmlh bGl6ZVBsYW4oUGxhbiAqcGxhbiwgRVN0YXRlICplc3RhdGUpCiAJcHN0bXQtPnRyYW5zaWVudFBs YW4gPSBmYWxzZTsKIAlwc3RtdC0+ZGVwZW5kc09uUm9sZSA9IGZhbHNlOwogCXBzdG10LT5wYXJh bGxlbE1vZGVOZWVkZWQgPSBmYWxzZTsKKwlwc3RtdC0+Y29udGFpbnNJbml0aWFsUHJ1bmluZyA9 IGZhbHNlOwogCXBzdG10LT5wbGFuVHJlZSA9IHBsYW47CiAJcHN0bXQtPnBhcnRQcnVuZUluZm9z ID0gZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zOwogCXBzdG10LT5ydGFibGUgPSBlc3RhdGUt PmVzX3JhbmdlX3RhYmxlOwpAQCAtNTk3LDEyICs1OTksMTUgQEAgRXhlY0luaXRQYXJhbGxlbFBs YW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCUZpeGVkUGFyYWxsZWxF eGVjdXRvclN0YXRlICpmcGVzOwogCWNoYXIJICAgKnBzdG10X2RhdGE7CiAJY2hhcgkgICAqcHN0 bXRfc3BhY2U7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRfZGF0YTsKKwljaGFyCSAgICpw YXJ0X3BydW5lX3Jlc3VsdF9zcGFjZTsKIAljaGFyCSAgICpwYXJhbWxpc3RpbmZvX3NwYWNlOwog CUJ1ZmZlclVzYWdlICpidWZ1c2FnZV9zcGFjZTsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZV9zcGFj ZTsKIAlTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uID0gTlVM TDsKIAlTaGFyZWRKaXRJbnN0cnVtZW50YXRpb24gKmppdF9pbnN0cnVtZW50YXRpb24gPSBOVUxM OwogCWludAkJCXBzdG10X2xlbjsKKwlpbnQJCQlwYXJ0X3BydW5lX3Jlc3VsdF9sZW47CiAJaW50 CQkJcGFyYW1saXN0aW5mb19sZW47CiAJaW50CQkJaW5zdHJ1bWVudGF0aW9uX2xlbiA9IDA7CiAJ aW50CQkJaml0X2luc3RydW1lbnRhdGlvbl9sZW4gPSAwOwpAQCAtNjMxLDYgKzYzNiw3IEBAIEV4 ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwK IAogCS8qIEZpeCB1cCBhbmQgc2VyaWFsaXplIHBsYW4gdG8gYmUgc2VudCB0byB3b3JrZXJzLiAq LwogCXBzdG10X2RhdGEgPSBFeGVjU2VyaWFsaXplUGxhbihwbGFuc3RhdGUtPnBsYW4sIGVzdGF0 ZSk7CisJcGFydF9wcnVuZV9yZXN1bHRfZGF0YSA9IG5vZGVUb1N0cmluZyhlc3RhdGUtPmVzX3Bh cnRfcHJ1bmVfcmVzdWx0KTsKIAogCS8qIENyZWF0ZSBhIHBhcmFsbGVsIGNvbnRleHQuICovCiAJ cGN4dCA9IENyZWF0ZVBhcmFsbGVsQ29udGV4dCgicG9zdGdyZXMiLCAiUGFyYWxsZWxRdWVyeU1h aW4iLCBud29ya2Vycyk7CkBAIC02NTcsNiArNjYzLDExIEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFu KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAlzaG1fdG9jX2VzdGltYXRl X2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBzdG10X2xlbik7CiAJc2htX3RvY19lc3RpbWF0ZV9r ZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCisJLyogRXN0aW1hdGUgc3BhY2UgZm9yIHNlcmlh bGl6ZWQgUGFydGl0aW9uUHJ1bmVSZXN1bHQuICovCisJcGFydF9wcnVuZV9yZXN1bHRfbGVuID0g c3RybGVuKHBhcnRfcHJ1bmVfcmVzdWx0X2RhdGEpICsgMTsKKwlzaG1fdG9jX2VzdGltYXRlX2No dW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBhcnRfcHJ1bmVfcmVzdWx0X2xlbik7CisJc2htX3RvY19l c3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOworCiAJLyogRXN0aW1hdGUgc3BhY2Ug Zm9yIHNlcmlhbGl6ZWQgUGFyYW1MaXN0SW5mby4gKi8KIAlwYXJhbWxpc3RpbmZvX2xlbiA9IEVz dGltYXRlUGFyYW1MaXN0U3BhY2UoZXN0YXRlLT5lc19wYXJhbV9saXN0X2luZm8pOwogCXNobV90 b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgcGFyYW1saXN0aW5mb19sZW4pOwpA QCAtNzUxLDYgKzc2MiwxMiBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5z dGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJbWVtY3B5KHBzdG10X3NwYWNlLCBwc3RtdF9kYXRhLCBw c3RtdF9sZW4pOwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1BMQU5O RURTVE1ULCBwc3RtdF9zcGFjZSk7CiAKKwkvKiBTdG9yZSBzZXJpYWxpemVkIFBhcnRpdGlvblBy dW5lUmVzdWx0ICovCisJcGFydF9wcnVuZV9yZXN1bHRfc3BhY2UgPSBzaG1fdG9jX2FsbG9jYXRl KHBjeHQtPnRvYywgcGFydF9wcnVuZV9yZXN1bHRfbGVuKTsKKwltZW1jcHkocGFydF9wcnVuZV9y ZXN1bHRfc3BhY2UsIHBhcnRfcHJ1bmVfcmVzdWx0X2RhdGEsIHBhcnRfcHJ1bmVfcmVzdWx0X2xl bik7CisJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfUEFSVElUSU9OUFJV TkVSRVNVTFQsCisJCQkJICAgcGFydF9wcnVuZV9yZXN1bHRfc3BhY2UpOworCiAJLyogU3RvcmUg c2VyaWFsaXplZCBQYXJhbUxpc3RJbmZvLiAqLwogCXBhcmFtbGlzdGluZm9fc3BhY2UgPSBzaG1f dG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgcGFyYW1saXN0aW5mb19sZW4pOwogCXNobV90b2NfaW5z ZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1BBUkFNTElTVElORk8sIHBhcmFtbGlzdGluZm9f c3BhY2UpOwpAQCAtMTIzMiw4ICsxMjQ5LDEwIEBAIEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhz aG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJCQkJCQkgaW50IGluc3RydW1l bnRfb3B0aW9ucykKIHsKIAljaGFyCSAgICpwc3RtdHNwYWNlOworCWNoYXIJICAgKnBhcnRfcHJ1 bmVfcmVzdWx0X3NwYWNlOwogCWNoYXIJICAgKnBhcmFtc3BhY2U7CiAJUGxhbm5lZFN0bXQgKnBz dG10OworCVBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdDsKIAlQYXJhbUxp c3RJbmZvIHBhcmFtTEk7CiAJY2hhcgkgICAqcXVlcnlTdHJpbmc7CiAKQEAgLTEyNDQsMTIgKzEy NjMsMTggQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2Vp dmVyICpyZWNlaXZlciwKIAlwc3RtdHNwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExF TF9LRVlfUExBTk5FRFNUTVQsIGZhbHNlKTsKIAlwc3RtdCA9IChQbGFubmVkU3RtdCAqKSBzdHJp bmdUb05vZGUocHN0bXRzcGFjZSk7CiAKKwkvKiBSZWNvbnN0cnVjdCBsZWFkZXItc3VwcGxpZWQg UGFydGl0aW9uUHJ1bmVSZXN1bHQuICovCisJcGFydF9wcnVuZV9yZXN1bHRfc3BhY2UgPQorCQlz aG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9QQVJUSVRJT05QUlVORVJFU1VMVCwgZmFs c2UpOworCXBhcnRfcHJ1bmVfcmVzdWx0ID0gKFBhcnRpdGlvblBydW5lUmVzdWx0ICopCisJCXN0 cmluZ1RvTm9kZShwYXJ0X3BydW5lX3Jlc3VsdF9zcGFjZSk7CisKIAkvKiBSZWNvbnN0cnVjdCBQ YXJhbUxpc3RJbmZvLiAqLwogCXBhcmFtc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFM TEVMX0tFWV9QQVJBTUxJU1RJTkZPLCBmYWxzZSk7CiAJcGFyYW1MSSA9IFJlc3RvcmVQYXJhbUxp c3QoJnBhcmFtc3BhY2UpOwogCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnku ICovCi0JcmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3RtdCwKKwlyZXR1cm4gQ3JlYXRlUXVlcnlE ZXNjKHBzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdCwKIAkJCQkJCSAgIHF1ZXJ5U3RyaW5nLAogCQkJ CQkJICAgR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJICAgcmVj ZWl2ZXIsIHBhcmFtTEksIE5VTEwsIGluc3RydW1lbnRfb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMKaW5kZXggODAxOTdkNTE0MS4uYjYxMmMyNGQ2MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIm1i L3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFr ZWZ1bmNzLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInBhcnRp dGlvbmluZy9wYXJ0Ym91bmRzLmgiCiAjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRkZXNjLmgi CiAjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oIgpAQCAtMTg1LDcgKzE4NiwxMSBA QCBzdGF0aWMgY2hhciAqRXhlY0J1aWxkU2xvdFBhcnRpdGlvbktleURlc2NyaXB0aW9uKFJlbGF0 aW9uIHJlbCwKIHN0YXRpYyBMaXN0ICphZGp1c3RfcGFydGl0aW9uX2NvbG5vcyhMaXN0ICpjb2xu b3MsIFJlc3VsdFJlbEluZm8gKmxlYWZfcGFydF9ycmkpOwogc3RhdGljIExpc3QgKmFkanVzdF9w YXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXAp Owogc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKkNyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUo UGxhblN0YXRlICpwbGFuc3RhdGUsCi0JCQkJCQkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8g KnBydW5laW5mbyk7CisJCQkJCQkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bywKKwkJCQkJCQkJCQkJCQkgIGJvb2wgY29uc2lkZXJfaW5pdGlhbF9zdGVwcywKKwkJCQkJCQkJ CQkJCQkgIGJvb2wgY29uc2lkZXJfZXhlY19zdGVwcywKKwkJCQkJCQkJCQkJCQkgIExpc3QgKnJ0 YWJsZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAorCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uRGly ZWN0b3J5IHBhcnRkaXIpOwogc3RhdGljIHZvaWQgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQ YXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCQkgIExpc3QgKnBydW5pbmdf c3RlcHMsCiAJCQkJCQkJCQkgIFBhcnRpdGlvbkRlc2MgcGFydGRlc2MsCkBAIC0xOTgsNyArMjAz LDggQEAgc3RhdGljIHZvaWQgUGFydGl0aW9uUHJ1bmVGaXhTdWJQbGFuTWFwKFBhcnRpdGlvblBy dW5lU3RhdGUgKnBydW5lc3RhdGUsCiBzdGF0aWMgdm9pZCBmaW5kX21hdGNoaW5nX3N1YnBsYW5z X3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwKIAkJCQkJCQkJCQkgICBQ YXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUsCiAJCQkJCQkJCQkJICAgYm9vbCBpbml0 aWFsX3BydW5lLAotCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbnMpOworCQkJ CQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbnMsCisJCQkJCQkJCQkJICAgQml0bWFw c2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKTsKIAogCiAvKgpAQCAtMTc0Niw4ICsxNzUyLDEwIEBA IGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAg KmF0dHJNYXApCiAgKiBjb25zaWRlcmVkIHRvIGJlIGEgc3RhYmxlIGV4cHJlc3Npb24sIGl0IGNh biBjaGFuZ2UgdmFsdWUgZnJvbSBvbmUgcGxhbgogICogbm9kZSBzY2FuIHRvIHRoZSBuZXh0IGR1 cmluZyBxdWVyeSBleGVjdXRpb24uICBTdGFibGUgY29tcGFyaXNvbgogICogZXhwcmVzc2lvbnMg dGhhdCBkb24ndCBpbnZvbHZlIHN1Y2ggUGFyYW1zIGFsbG93IHBhcnRpdGlvbiBwcnVuaW5nIHRv IGJlCi0gKiBkb25lIG9uY2UgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAuICBFeHByZXNzaW9ucyB0 aGF0IGRvIGludm9sdmUgc3VjaCBQYXJhbXMKLSAqIHJlcXVpcmUgdXMgdG8gcHJ1bmUgc2VwYXJh dGVseSBmb3IgZWFjaCBzY2FuIG9mIHRoZSBwYXJlbnQgcGxhbiBub2RlLgorICogZG9uZSBvbmNl IGR1cmluZyBleGVjdXRvciBzdGFydHVwIG9yIGR1cmluZyBFeGVjdXRvckRvSW5pdGlhbFBydW5p bmcoKSB0aGF0CisgKiBydW5zIGFzIHBhcnQgb2YgcGVyZm9ybWluZyBBY3F1aXJlRXhlY3V0b3JM b2NrcygpIG9uIGEgZ2l2ZW4gcGxhbiB0cmVlLgorICogRXhwcmVzc2lvbnMgdGhhdCBkbyBpbnZv bHZlIHN1Y2ggUGFyYW1zIHJlcXVpcmUgdXMgdG8gcHJ1bmUgc2VwYXJhdGVseSBmb3IKKyAqIGVh Y2ggc2NhbiBvZiB0aGUgcGFyZW50IHBsYW4gbm9kZS4KICAqCiAgKiBOb3RlIHRoYXQgcHJ1bmlu ZyBhd2F5IHVubmVlZGVkIHN1YnBsYW5zIGR1cmluZyBleGVjdXRvciBzdGFydHVwIGhhcyB0aGUK ICAqIGFkZGVkIGJlbmVmaXQgb2Ygbm90IGhhdmluZyB0byBpbml0aWFsaXplIHRoZSB1bm5lZWRl ZCBzdWJwbGFucyBhdCBhbGwuCkBAIC0xNzY0LDYgKzE3NzIsMTMgQEAgYWRqdXN0X3BhcnRpdGlv bl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCkKICAqCQlh Y2NvdW50IGZvciBpbml0aWFsIHBydW5pbmcgcG9zc2libHkgaGF2aW5nIGVsaW1pbmF0ZWQgc29t ZSBvZiB0aGUKICAqCQlzdWJwbGFucy4KICAqCisgKiBFeGVjUGFydGl0aW9uRG9Jbml0aWFsUHJ1 bmluZzoKKyAqCQlEbyBpbml0aWFsIHBydW5pbmcgd2l0aCB0aGUgaW5mb3JtYXRpb24gY29udGFp bmVkIGluIGEgZ2l2ZW4KKyAqCQlQYXJ0aXRpb25QcnVuZUluZm8gdG8gZGV0ZXJtaW5lIHRoZSBt aW5pbWFsIHNldCBvZiBjaGlsZCBzdWJwbGFucworICoJCXRvIGJlIGV4ZWN1dGVkIG9mIHRoZSBw YXJlbnQgcGxhbiBub2RlIHRvIHdoaWNoIHRoZSBQYXJ0aXRpb25QcnVuZUluZm8KKyAqCQliZWxv bmdzIGFuZCBhbHNvIHRoZSBzZXQgb2YgdGhlIFJUIGluZGV4ZXMgb2YgbGVhZiBwYXJ0aXRpb25z IHRoYXQgd2lsbAorICoJCWJlIHNjYW5uZWQgd2l0aCB0aG9zZSBzdWJwbGFucy4KKyAqCiAgKiBF eGVjRmluZE1hdGNoaW5nU3ViUGxhbnM6CiAgKgkJUmV0dXJucyBpbmRleGVzIG9mIG1hdGNoaW5n IHN1YnBsYW5zIGFmdGVyIGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zCiAgKgkJdGhhdCBhcmUg c2FmZSB0byBldmFsdWF0ZSBhdCBhIGdpdmVuIHBvaW50LiAgVGhpcyBmdW5jdGlvbiBpcyBmaXJz dApAQCAtMTc4MSw4ICsxNzk2LDkgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFw KExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCkKICAqCiAgKiBPbiByZXR1cm4sICppbml0 aWFsbHlfdmFsaWRfc3VicGxhbnMgaXMgYXNzaWduZWQgdGhlIHNldCBvZiBpbmRleGVzIG9mCiAg KiBjaGlsZCBzdWJwbGFucyB0aGF0IG11c3QgYmUgaW5pdGlhbGl6ZWQgYWxvbmcgd2l0aCB0aGUg cGFyZW50IHBsYW4gbm9kZS4KLSAqIEluaXRpYWwgcHJ1bmluZyBpcyBwZXJmb3JtZWQgaGVyZSBp ZiBuZWVkZWQgYW5kIGluIHRoYXQgY2FzZSBvbmx5IHRoZQotICogc3Vydml2aW5nIHN1YnBsYW5z JyBpbmRleGVzIGFyZSBhZGRlZC4KKyAqIEluaXRpYWwgcHJ1bmluZyBpcyBwZXJmb3JtZWQgaGVy ZSBpZiBuZWVkZWQgKHVubGVzcyBpdCBoYXMgYWxyZWFkeSBiZWVuIGRvbmUKKyAqIGJ5IEV4ZWN1 dG9yRG9Jbml0aWFsUHJ1bmluZygpKSwgYW5kIGluIHRoYXQgY2FzZSBvbmx5IHRoZSBzdXJ2aXZp bmcKKyAqIHN1YnBsYW5zJyBpbmRleGVzIGFyZSBhZGRlZC4KICAqCiAgKiBJZiBzdWJwbGFucyBh cmUgaW5kZWVkIHBydW5lZCwgc3VicGxhbl9tYXAgYXJyYXlzIGNvbnRhaW5lZCBpbiB0aGUgcmV0 dXJuZWQKICAqIFBhcnRpdGlvblBydW5lU3RhdGUgYXJlIHJlLXNlcXVlbmNlZCB0byBub3QgY291 bnQgdGhvc2UsIHRob3VnaCBvbmx5IGlmIHRoZQpAQCAtMTc5NCwyOCArMTgxMCw2MiBAQCBFeGVj SW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkgaW50IHBh cnRfcHJ1bmVfaW5kZXgsCiAJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBs YW5zKQogewotCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CisJUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqcHJ1bmVzdGF0ZSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBwbGFuc3Rh dGUtPnN0YXRlOwogCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0gbGlzdF9udGgoZXN0 YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zLAogCQkJCQkJCQkJCQkgcGFydF9wcnVuZV9pbmRleCk7 CisJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBydW5lcmVzdWx0ID0gZXN0YXRlLT5lc19wYXJ0X3By dW5lX3Jlc3VsdDsKKwlib29sCWRvX3BydW5pbmcgPSAocHJ1bmVpbmZvLT5uZWVkc19pbml0X3By dW5pbmcgfHwKKwkJCQkJCSAgcHJ1bmVpbmZvLT5uZWVkc19leGVjX3BydW5pbmcpOwogCi0JLyog V2UgbWF5IG5lZWQgYW4gZXhwcmVzc2lvbiBjb250ZXh0IHRvIGV2YWx1YXRlIHBhcnRpdGlvbiBl eHBycyAqLwotCUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsIHBsYW5zdGF0ZSk7CisJLyoK KwkgKiBObyBuZWVkIHRvIGRvIGluaXRpYWwgcHJ1bmluZyBpZiBpdCB3YXMgZG9uZSBhbHJlYWR5 IGJ5CisJICogRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCksIHdoaWNoIGl0IHdvdWxkIGJlIGlm IGVzX3BhcnRfcHJ1bmVfcmVzdWx0CisJICogaGFzIGJlZW4gc2V0LgorCSAqLworCWlmIChwcnVu ZXJlc3VsdCkKKwkJZG9fcHJ1bmluZyA9IHBydW5laW5mby0+bmVlZHNfZXhlY19wcnVuaW5nOwog Ci0JLyogQ3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3RydWN0dXJlIGZvciBwcnVuaW5nICovCi0J cHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUocGxhbnN0YXRlLCBwcnVuZWlu Zm8pOworCWlmIChkb19wcnVuaW5nKQorCXsKKwkJLyogV2UgbWF5IG5lZWQgYW4gZXhwcmVzc2lv biBjb250ZXh0IHRvIGV2YWx1YXRlIHBhcnRpdGlvbiBleHBycyAqLworCQlFeGVjQXNzaWduRXhw ckNvbnRleHQoZXN0YXRlLCBwbGFuc3RhdGUpOworCisJCS8qIEZvciBkYXRhIHJlYWRpbmcsIGV4 ZWN1dG9yIGFsd2F5cyBvbWl0cyBkZXRhY2hlZCBwYXJ0aXRpb25zICovCisJCWlmIChlc3RhdGUt PmVzX3BhcnRpdGlvbl9kaXJlY3RvcnkgPT0gTlVMTCkKKwkJCWVzdGF0ZS0+ZXNfcGFydGl0aW9u X2RpcmVjdG9yeSA9CisJCQkJQ3JlYXRlUGFydGl0aW9uRGlyZWN0b3J5KGVzdGF0ZS0+ZXNfcXVl cnlfY3h0LCBmYWxzZSk7CisKKwkJLyoKKwkJICogQ3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3Ry dWN0dXJlIGZvciBwcnVuaW5nLiAgTm8gbmVlZCB0byBjb25zaWRlcgorCQkgKiBpbml0aWFsIHBy dW5pbmcgc3RlcHMgaWYgd2UgaGF2ZSBhIFBhcnRpdGlvblBydW5lUmVzdWx0LgorCQkgKi8KKwkJ cHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUocGxhbnN0YXRlLCBwcnVuZWlu Zm8sCisJCQkJCQkJCQkJCSAgIHBydW5lcmVzdWx0ID09IE5VTEwsIHRydWUsCisJCQkJCQkJCQkJ CSAgIE5JTCwgcGxhbnN0YXRlLT5wc19FeHByQ29udGV4dCwKKwkJCQkJCQkJCQkJICAgZXN0YXRl LT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5KTsKKwl9CiAKIAkvKgogCSAqIFBlcmZvcm0gYW4gaW5p dGlhbCBwYXJ0aXRpb24gcHJ1bmUgcGFzcywgaWYgcmVxdWlyZWQuCiAJICovCi0JaWYgKHBydW5l c3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUpCi0JCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgPSBF eGVjRmluZE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSk7CisJaWYgKHBydW5lcmVz dWx0KQorCXsKKwkJKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyA9CisJCQlsaXN0X250aChwcnVu ZXJlc3VsdC0+dmFsaWRfc3VicGxhbl9vZmZzX2xpc3QsIHBhcnRfcHJ1bmVfaW5kZXgpOworCX0K KwllbHNlIGlmIChwcnVuZXN0YXRlICYmIHBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUpCisJ eworCQkqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5z KHBydW5lc3RhdGUsIHRydWUsCisJCQkJCQkJCQkJCQkJCQkgTlVMTCk7CisJfQogCWVsc2UKIAl7 Ci0JCS8qIE5vIHBydW5pbmcsIHNvIHdlJ2xsIG5lZWQgdG8gaW5pdGlhbGl6ZSBhbGwgc3VicGxh bnMgKi8KKwkJLyogTm8gaW5pdGlhbCBwcnVuaW5nLCBzbyB3ZSdsbCBuZWVkIHRvIGluaXRpYWxp emUgYWxsIHN1YnBsYW5zICovCiAJCUFzc2VydChuX3RvdGFsX3N1YnBsYW5zID4gMCk7CiAJCSpp bml0aWFsbHlfdmFsaWRfc3VicGxhbnMgPSBibXNfYWRkX3JhbmdlKE5VTEwsIDAsCiAJCQkJCQkJ CQkJCQkgIG5fdG90YWxfc3VicGxhbnMgLSAxKTsKKwkJcmV0dXJuIHBydW5lc3RhdGU7CiAJfQog CiAJLyoKQEAgLTE4MjMsNyArMTg3Myw4IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFu U3RhdGUgKnBsYW5zdGF0ZSwKIAkgKiB0aGF0IHdlcmUgcmVtb3ZlZCBhYm92ZSBkdWUgdG8gaW5p dGlhbCBwcnVuaW5nLiAgTm8gbmVlZCB0byBkbyB0aGlzIGlmCiAJICogbm8gc3RlcHMgd2VyZSBy ZW1vdmVkLgogCSAqLwotCWlmIChibXNfbnVtX21lbWJlcnMoKmluaXRpYWxseV92YWxpZF9zdWJw bGFucykgPCBuX3RvdGFsX3N1YnBsYW5zKQorCWlmIChwcnVuZXN0YXRlICYmCisJCWJtc19udW1f bWVtYmVycygqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKSA8IG5fdG90YWxfc3VicGxhbnMpCiAJ ewogCQkvKgogCQkgKiBXZSBjYW4gc2FmZWx5IHNraXAgdGhpcyB3aGVuICFkb19leGVjX3BydW5l LCBldmVuIHRob3VnaCB0aGF0CkBAIC0xODM5LDExICsxODkwLDc0IEBAIEV4ZWNJbml0UGFydGl0 aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAlyZXR1cm4gcHJ1bmVzdGF0ZTsKIH0K IAorLyoKKyAqIEV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nCisgKgkJUGVyZm9ybSBpbml0 aWFsIHBydW5pbmcgdXNpbmcgZ2l2ZW4gUGFydGl0aW9uUHJ1bmVJbmZvIHRvIGRldGVybWluZQor ICoJCXRoZSBtaW5pbWFsIHNldCBvZiBjaGlsZCBzdWJwbGFucyB0aGF0IHdpbGwgYmUgZXhlY3V0 ZWQgYW5kIGFsc28gdGhlCisgKgkJc2V0IG9mIFJUIGluZGV4ZXMgb2YgdGhlIGxlYWYgcGFydGl0 aW9ucyBzY2FubmVkIGJ5IHRob3NlIHN1YnBsYW5zLgorICovCitCaXRtYXBzZXQgKgorRXhlY1Bh cnRpdGlvbkRvSW5pdGlhbFBydW5pbmcoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBQYXJhbUxp c3RJbmZvIHBhcmFtcywKKwkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAor CQkJCQkJCSAgQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKQoreworCUxpc3QJCSAqcnRh YmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJsZTsKKwlFeHByQ29udGV4dAkgKmVjb250ZXh0OworCVBh cnRpdGlvbkRpcmVjdG9yeSBwZGlyOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dCwKKwkJCQkg IHRtcGNvbnRleHQ7CisJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKKwlCaXRtYXBz ZXQJICp2YWxpZF9zdWJwbGFuX29mZnM7CisKKwkvKgorCSAqIEEgdGVtcG9yYXJ5IGNvbnRleHQg Zm9yIG1lbW9yeSBhbGxvY2F0aW9ucyByZXF1aXJlZCB3aGlsZSBleGVjdXRpbmcKKwkgKiBwYXJ0 aXRpb24gcHJ1bmluZyBzdGVwcy4KKwkgKi8KKwl0bXBjb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0 Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJICAgImluaXRpYWwgcHJ1bmlu ZyB3b3JraW5nIGRhdGEiLAorCQkJCQkJCQkJICAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisJ b2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyh0bXBjb250ZXh0KTsKKworCS8qCisJ ICogUGFydGl0aW9uRGlyZWN0b3J5IHRvIGxvb2sgdXAgcGFydGl0aW9uIGRlc2NyaXB0b3JzLgor CSAqIE5vdGUgdGhhdCB3ZSBkb24ndCBvbWl0IGRldGFjaGVkIHBhcnRpdGlvbnMsIGp1c3QgbGlr ZSBkdXJpbmcKKwkgKiBleGVjdXRpb24gcHJvcGVyLgorCSAqLworCXBkaXIgPSBDcmVhdGVQYXJ0 aXRpb25EaXJlY3RvcnkoQ3VycmVudE1lbW9yeUNvbnRleHQsIGZhbHNlKTsKKworCS8qCisJICog V2UgZG9uJ3QgeWV0IGhhdmUgYSBQbGFuU3RhdGUgZm9yIHRoZSBwYXJlbnQgcGxhbiBub2RlLCBz byB3ZSBtdXN0CisJICogY3JlYXRlIGEgc3RhbmRhbG9uZSBFeHByQ29udGV4dCB0byBldmFsdWF0 ZSBwcnVuaW5nIGV4cHJlc3Npb25zLAorCSAqIGVxdWlwcGVkIHdpdGggdGhlIGluZm9ybWF0aW9u IGFib3V0IHRoZSBFWFRFUk4gcGFyYW1ldGVycyB0aGF0IHRoZQorCSAqIGNhbGxlciBwYXNzZWQg dXMuICBOb3RlIHRoYXQgdGhhdCdzIG9rYXkgYmVjYXVzZSB0aGUgaW5pdGlhbCBwcnVuaW5nCisJ ICogc3RlcHMgZG8gbm90IGNvbnRhaW4gYW55dGhpbmcgdGhhdCByZXF1aXJlcyB0aGUgZXhlY3V0 aW9uIHRvIGhhdmUKKwkgKiBzdGFydGVkIGFuZCB0aHVzIG5lZWQgdGhlIGluZm9ybWF0aW9uIGNv bnRhaW5lZCBpbiBhIFBsYW5TdGF0ZS4KKwkgKi8KKwllY29udGV4dCA9IENyZWF0ZVN0YW5kYWxv bmVFeHByQ29udGV4dCgpOworCWVjb250ZXh0LT5lY3h0X3BhcmFtX2xpc3RfaW5mbyA9IHBhcmFt czsKKwlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShOVUxMLCBwcnVuZWlu Zm8sIHRydWUsIGZhbHNlLAorCQkJCQkJCQkJCSAgIHJ0YWJsZSwgZWNvbnRleHQsIHBkaXIpOwor CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCS8qIERvIHRoZSBpbml0aWFs IHBydW5pbmcuICovCisJdmFsaWRfc3VicGxhbl9vZmZzID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBs YW5zKHBydW5lc3RhdGUsIHRydWUsCisJCQkJCQkJCQkJCQkgIHNjYW5fbGVhZnBhcnRfcnRpcyk7 CisKKwlGcmVlRXhwckNvbnRleHQoZWNvbnRleHQsIHRydWUpOworCURlc3Ryb3lQYXJ0aXRpb25E aXJlY3RvcnkocGRpcik7CisJTWVtb3J5Q29udGV4dERlbGV0ZSh0bXBjb250ZXh0KTsKKworCXJl dHVybiB2YWxpZF9zdWJwbGFuX29mZnM7Cit9CisKIC8qCiAgKiBDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlCiAgKgkJQnVpbGQgdGhlIGRhdGEgc3RydWN0dXJlIHJlcXVpcmVkIGZvciBjYWxsaW5n IEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucwogICoKLSAqICdwbGFuc3RhdGUnIGlzIHRoZSBwYXJl bnQgcGxhbiBub2RlJ3MgZXhlY3V0aW9uIHN0YXRlLgorICogJ3BsYW5zdGF0ZScsIGlmIG5vdCBO VUxMLCBpcyB0aGUgcGFyZW50IHBsYW4gbm9kZSdzIGV4ZWN1dGlvbiBzdGF0ZS4gIEl0CisgKiBj YW4gYmUgTlVMTCBpZiBiZWluZyBjYWxsZWQgYmVmb3JlIEV4ZWN1dG9yU3RhcnQoKSwgaW4gd2hp Y2ggY2FzZSwKKyAqICdydGFibGUnIChyYW5nZSB0YWJsZSksICdlY29udGV4dCcsIGFuZCAncGFy dGRpcicgbXVzdCBiZSBleHBsaWNpdGx5CisgKiBwcm92aWRlZC4KICAqCiAgKiAncHJ1bmVpbmZv JyBpcyBhIFBhcnRpdGlvblBydW5lSW5mbyBhcyBnZW5lcmF0ZWQgYnkKICAqIG1ha2VfcGFydGl0 aW9uX3BydW5laW5mby4gIEhlcmUgd2UgYnVpbGQgYSBQYXJ0aXRpb25QcnVuZVN0YXRlIGNvbnRh aW5pbmcgYQpAQCAtMTg1NywxOSArMTk3MSwyMSBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmco UGxhblN0YXRlICpwbGFuc3RhdGUsCiAgKiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mby4KICAqLwog c3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKgotQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQ bGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCitDcmVh dGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAorCQkJCQkJICBQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKKwkJCQkJCSAgYm9vbCBjb25zaWRlcl9pbml0aWFs X3N0ZXBzLAorCQkJCQkJICBib29sIGNvbnNpZGVyX2V4ZWNfc3RlcHMsCisJCQkJCQkgIExpc3Qg KnJ0YWJsZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAorCQkJCQkJICBQYXJ0aXRpb25EaXJlY3Rv cnkgcGFydGRpcikKIHsKLQlFU3RhdGUJICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7CisJ RVN0YXRlCSAgICplc3RhdGUgPSBwbGFuc3RhdGUgPyBwbGFuc3RhdGUtPnN0YXRlIDogTlVMTDsK IAlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCWludAkJCW5fcGFydF9oaWVyYXJj aGllczsKIAlMaXN0Q2VsbCAgICpsYzsKIAlpbnQJCQlpOwotCUV4cHJDb250ZXh0ICplY29udGV4 dCA9IHBsYW5zdGF0ZS0+cHNfRXhwckNvbnRleHQ7CiAKLQkvKiBGb3IgZGF0YSByZWFkaW5nLCBl eGVjdXRvciBhbHdheXMgb21pdHMgZGV0YWNoZWQgcGFydGl0aW9ucyAqLwotCWlmIChlc3RhdGUt PmVzX3BhcnRpdGlvbl9kaXJlY3RvcnkgPT0gTlVMTCkKLQkJZXN0YXRlLT5lc19wYXJ0aXRpb25f ZGlyZWN0b3J5ID0KLQkJCUNyZWF0ZVBhcnRpdGlvbkRpcmVjdG9yeShlc3RhdGUtPmVzX3F1ZXJ5 X2N4dCwgZmFsc2UpOworCUFzc2VydCgoZXN0YXRlICE9IE5VTEwpIHx8CisJCQkocGFydGRpciAh PSBOVUxMICYmIGVjb250ZXh0ICE9IE5VTEwgJiYgcnRhYmxlICE9IE5JTCkpOwogCiAJbl9wYXJ0 X2hpZXJhcmNoaWVzID0gbGlzdF9sZW5ndGgocHJ1bmVpbmZvLT5wcnVuZV9pbmZvcyk7CiAJQXNz ZXJ0KG5fcGFydF9oaWVyYXJjaGllcyA+IDApOwpAQCAtMTkyNCwxNSArMjA0MCw0MiBAQCBDcmVh dGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVu ZUluZm8gKnBydW5laW5mbykKIAkJCVBhcnRpdGlvbktleSBwYXJ0a2V5OwogCiAJCQkvKgotCQkJ ICogV2UgY2FuIHJlbHkgb24gdGhlIGNvcGllcyBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUncyBw YXJ0aXRpb24KLQkJCSAqIGtleSBhbmQgcGFydGl0aW9uIGRlc2NyaXB0b3IgYXBwZWFyaW5nIGlu IGl0cyByZWxjYWNoZSBlbnRyeSwKLQkJCSAqIGJlY2F1c2UgdGhhdCBlbnRyeSB3aWxsIGJlIGhl bGQgb3BlbiBhbmQgbG9ja2VkIGZvciB0aGUKLQkJCSAqIGR1cmF0aW9uIG9mIHRoaXMgZXhlY3V0 b3IgcnVuLgorCQkJICogTXVzdCBvcGVuIHRoZSByZWxhdGlvbiBieSBvdXJzZWx2ZXMgd2hlbiBj YWxsZWQgYmVmb3JlIHRoZQorCQkJICogZXhlY3V0aW9uIGhhcyBzdGFydGVkLCBzdWNoIGFzLCB3 aGVuIGNhbGxlZCBkdXJpbmcKKwkJCSAqIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIG9uIGEg Y2FjaGVkIHBsYW4uICBJbiB0aGF0IGNhc2UsCisJCQkgKiBzdWItcGFydGl0aW9ucyBtdXN0IGJl IGxvY2tlZCwgYmVjYXVzZSBBY3F1aXJlUGxhbm5lckxvY2tzKCkKKwkJCSAqIHdvdWxkIG5vdCBo YXZlIHNlZW4gdGhlbS4gKDFzdCByZWxhdGlvbiBpbiBhIHBhcnRyZWxwcnVuZWluZm9zCisJCQkg KiBsaXN0IGlzIGFsd2F5cyB0aGUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBhcHBlYXJpbmcgaW4g dGhlCisJCQkgKiBxdWVyeSwgd2hpY2ggQWNxdWlyZVBsYW5uZXJMb2NrcygpIHdvdWxkIGhhdmUg bG9ja2VkOyB0aGUKKwkJCSAqIEFzc2VydCBpbiByZWxhdGlvbl9vcGVuKCkgZ3VhcmRzIHRoYXQg YXNzdW1wdGlvbi4pCisJCQkgKi8KKwkJCWlmIChlc3RhdGUgPT0gTlVMTCkKKwkJCXsKKwkJCQlS YW5nZVRibEVudHJ5ICpydGUgPSBydF9mZXRjaChwaW5mby0+cnRpbmRleCwgcnRhYmxlKTsKKwkJ CQlpbnQJCWxvY2ttb2RlID0gKGogPT0gMCkgPyBOb0xvY2sgOiBydGUtPnJlbGxvY2ttb2RlOwor CisJCQkJcGFydHJlbCA9IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgbG9ja21vZGUpOworCQkJfQor CQkJZWxzZQorCQkJCXBhcnRyZWwgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwg cGluZm8tPnJ0aW5kZXgpOworCisJCQkvKgorCQkJICogV2UgY2FuIHJlbHkgb24gdGhlIGNvcHkg b2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxlJ3MgcGFydGl0aW9uCisJCQkgKiBrZXkgZnJvbSBpbiBp dHMgcmVsY2FjaGUgZW50cnksIGJlY2F1c2UgaXQgY2FuJ3QgY2hhbmdlIChvcgorCQkJICogZ2V0 IGRlc3Ryb3llZCkgYXMgbG9uZyBhcyB0aGUgcmVsYXRpb24gaXMgbG9ja2VkLiAgUGFydGl0aW9u CisJCQkgKiBkZXNjcmlwdG9yIGlzIHRha2VuIGZyb20gdGhlIFBhcnRpdGlvbkRpcmVjdG9yeSBh c3NvY2lhdGVkIHdpdGgKKwkJCSAqIHRoZSB0YWJsZSB0aGF0IGlzIGhlbGQgb3BlbiBsb25nIGVu b3VnaCBmb3IgdGhlIGRlc2NyaXB0b3IgdG8KKwkJCSAqIHJlbWFpbiB2YWxpZCB3aGlsZSBpdCdz IHVzZWQgdG8gcGVyZm9ybSB0aGUgcHJ1bmluZyBzdGVwcy4KIAkJCSAqLwotCQkJcGFydHJlbCA9 IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7CiAJCQlw YXJ0a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFydHJlbCk7Ci0JCQlwYXJ0ZGVzYyA9 IFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1cChlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3Rvcnks Ci0JCQkJCQkJCQkJCQlwYXJ0cmVsKTsKKwkJCXBhcnRkZXNjID0gUGFydGl0aW9uRGlyZWN0b3J5 TG9va3VwKHBhcnRkaXIsIHBhcnRyZWwpOworCisJCQkvKgorCQkJICogTXVzdCBjbG9zZSBwYXJ0 cmVsLCBrZWVwaW5nIHRoZSBsb2NrIHRha2VuLCBpZiB3ZSdyZSBub3QgdXNpbmcKKwkJCSAqIEVT dGF0ZSdzIGVudHJ5LgorCQkJICovCisJCQlpZiAoZXN0YXRlID09IE5VTEwpCisJCQkJdGFibGVf Y2xvc2UocGFydHJlbCwgTm9Mb2NrKTsKIAogCQkJLyoKIAkJCSAqIEluaXRpYWxpemUgdGhlIHN1 YnBsYW5fbWFwIGFuZCBzdWJwYXJ0X21hcC4KQEAgLTE5NDYsNiArMjA4OSw3IEBAIENyZWF0ZVBh cnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5m byAqcHJ1bmVpbmZvKQogCQkJQXNzZXJ0KHBhcnRkZXNjLT5ucGFydHMgPj0gcGluZm8tPm5wYXJ0 cyk7CiAJCQlwcHJ1bmUtPm5wYXJ0cyA9IHBhcnRkZXNjLT5ucGFydHM7CiAJCQlwcHJ1bmUtPnN1 YnBsYW5fbWFwID0gcGFsbG9jKHNpemVvZihpbnQpICogcGFydGRlc2MtPm5wYXJ0cyk7CisJCQlw cHJ1bmUtPnJ0aV9tYXAgPSBwYWxsb2Moc2l6ZW9mKEluZGV4KSAqIHBhcnRkZXNjLT5ucGFydHMp OwogCQkJaWYgKHBhcnRkZXNjLT5ucGFydHMgPT0gcGluZm8tPm5wYXJ0cykKIAkJCXsKIAkJCQkv KgpAQCAtMTk1Niw2ICsyMTAwLDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3Rh dGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJcHBydW5l LT5zdWJwYXJ0X21hcCA9IHBpbmZvLT5zdWJwYXJ0X21hcDsKIAkJCQltZW1jcHkocHBydW5lLT5z dWJwbGFuX21hcCwgcGluZm8tPnN1YnBsYW5fbWFwLAogCQkJCQkgICBzaXplb2YoaW50KSAqIHBp bmZvLT5ucGFydHMpOworCQkJCW1lbWNweShwcHJ1bmUtPnJ0aV9tYXAsIHBpbmZvLT5ydGlfbWFw LAorCQkJCQkgICBzaXplb2YoaW50KSAqIHBpbmZvLT5ucGFydHMpOwogCiAJCQkJLyoKIAkJCQkg KiBEb3VibGUtY2hlY2sgdGhhdCB0aGUgbGlzdCBvZiB1bnBydW5lZCByZWxhdGlvbnMgaGFzIG5v dApAQCAtMjAwNiw2ICsyMTUyLDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3Rh dGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJCQkJcGlu Zm8tPnN1YnBsYW5fbWFwW3BkX2lkeF07CiAJCQkJCQlwcHJ1bmUtPnN1YnBhcnRfbWFwW3BwX2lk eF0gPQogCQkJCQkJCXBpbmZvLT5zdWJwYXJ0X21hcFtwZF9pZHhdOworCQkJCQkJcHBydW5lLT5y dGlfbWFwW3BwX2lkeF0gPQorCQkJCQkJCXBpbmZvLT5ydGlfbWFwW3BkX2lkeF07CiAJCQkJCQlw ZF9pZHgrKzsKIAkJCQkJfQogCQkJCQllbHNlCkBAIC0yMDEzLDYgKzIxNjEsNyBAQCBDcmVhdGVQ YXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUlu Zm8gKnBydW5laW5mbykKIAkJCQkJCS8qIHRoaXMgcGFydGRlc2MgZW50cnkgaXMgbm90IGluIHRo ZSBwbGFuICovCiAJCQkJCQlwcHJ1bmUtPnN1YnBsYW5fbWFwW3BwX2lkeF0gPSAtMTsKIAkJCQkJ CXBwcnVuZS0+c3VicGFydF9tYXBbcHBfaWR4XSA9IC0xOworCQkJCQkJcHBydW5lLT5ydGlfbWFw W3BwX2lkeF0gPSAwOwogCQkJCQl9CiAJCQkJfQogCkBAIC0yMDM0LDcgKzIxODMsNyBAQCBDcmVh dGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVu ZUluZm8gKnBydW5laW5mbykKIAkJCSAqIEluaXRpYWxpemUgcHJ1bmluZyBjb250ZXh0cyBhcyBu ZWVkZWQuCiAJCQkgKi8KIAkJCXBwcnVuZS0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzID0gcGluZm8t PmluaXRpYWxfcHJ1bmluZ19zdGVwczsKLQkJCWlmIChwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0 ZXBzKQorCQkJaWYgKGNvbnNpZGVyX2luaXRpYWxfc3RlcHMgJiYgcGluZm8tPmluaXRpYWxfcHJ1 bmluZ19zdGVwcykKIAkJCXsKIAkJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1bmUt PmluaXRpYWxfY29udGV4dCwKIAkJCQkJCQkJCQkgIHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3Rl cHMsCkBAIC0yMDQ0LDcgKzIxOTMsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQlwcnVu ZXN0YXRlLT5kb19pbml0aWFsX3BydW5lID0gdHJ1ZTsKIAkJCX0KIAkJCXBwcnVuZS0+ZXhlY19w cnVuaW5nX3N0ZXBzID0gcGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwczsKLQkJCWlmIChwaW5mby0+ ZXhlY19wcnVuaW5nX3N0ZXBzKQorCQkJaWYgKGNvbnNpZGVyX2V4ZWNfc3RlcHMgJiYgcGluZm8t PmV4ZWNfcHJ1bmluZ19zdGVwcykKIAkJCXsKIAkJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0 KCZwcHJ1bmUtPmV4ZWNfY29udGV4dCwKIAkJCQkJCQkJCQkgIHBpbmZvLT5leGVjX3BydW5pbmdf c3RlcHMsCkBAIC0yMjcyLDEwICsyNDIxLDE0IEBAIFBhcnRpdGlvblBydW5lRml4U3ViUGxhbk1h cChQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogICogUGFzcyBpbml0aWFsX3BydW5l IGlmIFBBUkFNX0VYRUMgUGFyYW1zIGNhbm5vdCB5ZXQgYmUgZXZhbHVhdGVkLiAgVGhpcwogICog ZGlmZmVyZW50aWF0ZXMgdGhlIGluaXRpYWwgZXhlY3V0b3ItdGltZSBwcnVuaW5nIHN0ZXAgZnJv bSBsYXRlcgogICogcnVudGltZSBwcnVuaW5nLgorICoKKyAqIFJUIGluZGV4ZXMgb2YgbGVhZiBw YXJ0aXRpb25zIHNjYW5uZWQgYnkgdGhlIGNob3NlbiBzdWJwbGFucyBhcmUgYWRkZWQgdG8KKyAq ICpzY2FuX2xlYWZwYXJ0X3J0aXMgaWYgdGhlIHBvaW50ZXIgaXMgbm9uLU5VTEwuCiAgKi8KIEJp dG1hcHNldCAqCiBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAq cHJ1bmVzdGF0ZSwKLQkJCQkJCSBib29sIGluaXRpYWxfcHJ1bmUpCisJCQkJCQkgYm9vbCBpbml0 aWFsX3BydW5lLAorCQkJCQkJIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcykKIHsKIAlC aXRtYXBzZXQgICpyZXN1bHQgPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKQEAg LTIzMTAsNyArMjQ2Myw3IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVu ZVN0YXRlICpwcnVuZXN0YXRlLAogCQkgKi8KIAkJcHBydW5lID0gJnBydW5lZGF0YS0+cGFydHJl bHBydW5lZGF0YVswXTsKIAkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5lZGF0 YSwgcHBydW5lLCBpbml0aWFsX3BydW5lLAotCQkJCQkJCQkJICAgJnJlc3VsdCk7CisJCQkJCQkJ CQkgICAmcmVzdWx0LCBzY2FuX2xlYWZwYXJ0X3J0aXMpOwogCiAJCS8qIEV4cHJlc3Npb24gZXZh bCBtYXkgaGF2ZSB1c2VkIHNwYWNlIGluIEV4cHJDb250ZXh0IHRvbyAqLwogCQlpZiAocHBydW5l LT5leGVjX3BydW5pbmdfc3RlcHMpCkBAIC0yMzI0LDYgKzI0NzcsOCBAQCBFeGVjRmluZE1hdGNo aW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAogCS8qIENvcHkg cmVzdWx0IG91dCBvZiB0aGUgdGVtcCBjb250ZXh0IGJlZm9yZSB3ZSByZXNldCBpdCAqLwogCXJl c3VsdCA9IGJtc19jb3B5KHJlc3VsdCk7CisJaWYgKHNjYW5fbGVhZnBhcnRfcnRpcykKKwkJKnNj YW5fbGVhZnBhcnRfcnRpcyA9IGJtc19jb3B5KCpzY2FuX2xlYWZwYXJ0X3J0aXMpOwogCiAJTWVt b3J5Q29udGV4dFJlc2V0KHBydW5lc3RhdGUtPnBydW5lX2NvbnRleHQpOwogCkBAIC0yMzM0LDEz ICsyNDg5LDE1IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRl ICpwcnVuZXN0YXRlLAogICogZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlCiAgKgkJUmVj dXJzaXZlIHdvcmtlciBmdW5jdGlvbiBmb3IgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zCiAgKgot ICogQWRkcyB2YWxpZCAobm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRzdWJwbGFu cworICogQWRkcyB2YWxpZCAobm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRzdWJw bGFucyBhbmQgUlQgaW5kZXhlcyBvZgorICogb2YgdGhlIGNvcnJlc3BvbmRpbmcgbGVhZiBwYXJ0 aXRpb25zIHRvICpzY2FuX2xlYWZwYXJ0X3J0aXMgKGlmIGFza2VkIGZvcikuCiAgKi8KIHN0YXRp YyB2b2lkCiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0Rh dGEgKnBydW5lZGF0YSwKIAkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1 bmUsCiAJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAotCQkJCQkJCSAgIEJpdG1hcHNldCAq KnZhbGlkc3VicGxhbnMpCisJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucywKKwkJ CQkJCQkgICBCaXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpCiB7CiAJQml0bWFwc2V0ICAq cGFydHNldDsKIAlpbnQJCQlpOwpAQCAtMjM2Nyw4ICsyNTI0LDE0IEBAIGZpbmRfbWF0Y2hpbmdf c3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCXdoaWxl ICgoaSA9IGJtc19uZXh0X21lbWJlcihwYXJ0c2V0LCBpKSkgPj0gMCkKIAl7CiAJCWlmIChwcHJ1 bmUtPnN1YnBsYW5fbWFwW2ldID49IDApCisJCXsKIAkJCSp2YWxpZHN1YnBsYW5zID0gYm1zX2Fk ZF9tZW1iZXIoKnZhbGlkc3VicGxhbnMsCiAJCQkJCQkJCQkJCXBwcnVuZS0+c3VicGxhbl9tYXBb aV0pOworCQkJQXNzZXJ0KHBwcnVuZS0+cnRpX21hcFtpXSA+IDApOworCQkJaWYgKHNjYW5fbGVh ZnBhcnRfcnRpcykKKwkJCQkqc2Nhbl9sZWFmcGFydF9ydGlzID0gYm1zX2FkZF9tZW1iZXIoKnNj YW5fbGVhZnBhcnRfcnRpcywKKwkJCQkJCQkJCQkJCQkgcHBydW5lLT5ydGlfbWFwW2ldKTsKKwkJ fQogCQllbHNlCiAJCXsKIAkJCWludAkJCXBhcnRpZHggPSBwcHJ1bmUtPnN1YnBhcnRfbWFwW2ld OwpAQCAtMjM3Niw3ICsyNTM5LDggQEAgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBh cnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQlpZiAocGFydGlkeCA+PSAwKQogCQkJ CWZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShwcnVuZWRhdGEsCiAJCQkJCQkJCQkJCSAg ICZwcnVuZWRhdGEtPnBhcnRyZWxwcnVuZWRhdGFbcGFydGlkeF0sCi0JCQkJCQkJCQkJCSAgIGlu aXRpYWxfcHJ1bmUsIHZhbGlkc3VicGxhbnMpOworCQkJCQkJCQkJCQkgICBpbml0aWFsX3BydW5l LCB2YWxpZHN1YnBsYW5zLAorCQkJCQkJCQkJCQkgICBzY2FuX2xlYWZwYXJ0X3J0aXMpOwogCQkJ ZWxzZQogCQkJewogCQkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj VXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDIxZjRjMTA5 MzcuLmJiN2QwMjg0NjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xMzQsNiArMTM0 LDcgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lkKQogCWVzdGF0ZS0+ZXNfcGFyYW1fZXhlY192 YWxzID0gTlVMTDsKIAogCWVzdGF0ZS0+ZXNfcXVlcnlFbnYgPSBOVUxMOworCWVzdGF0ZS0+ZXNf cGFydF9wcnVuZV9yZXN1bHQgPSBOVUxMOwogCiAJZXN0YXRlLT5lc19xdWVyeV9jeHQgPSBxY29u dGV4dDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCBlMTM0YTgyZmY3Li45MDE3Njhj YzM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtODQyLDcgKzg0Miw3IEBAIHBvc3Rx dWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hl KQogCWVsc2UKIAkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKLQllcy0+cWQgPSBDcmVhdGVRdWVy eURlc2MoZXMtPnN0bXQsCisJZXMtPnFkID0gQ3JlYXRlUXVlcnlEZXNjKGVzLT5zdG10LCBOVUxM LAogCQkJCQkJCSBmY2FjaGUtPnNyYywKIAkJCQkJCQkgR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJ CQkJCQkgSW52YWxpZFNuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IGM2 Zjg2YTY1MTAuLjk2ODgwZTEyMmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTE1 NSw3ICsxNTUsOCBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCQkgKiBzdWJwbGFuLCB3ZSBjYW4gZmlsbCBhc192YWxpZF9zdWJwbGFu cyBpbW1lZGlhdGVseSwgcHJldmVudGluZwogCQkgKiBsYXRlciBjYWxscyB0byBFeGVjRmluZE1h dGNoaW5nU3ViUGxhbnMuCiAJCSAqLwotCQlpZiAoIXBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUg JiYgbnBsYW5zID4gMCkKKwkJaWYgKGFwcGVuZHN0YXRlLT5hc19wcnVuZV9zdGF0ZSA9PSBOVUxM IHx8CisJCQkoIWFwcGVuZHN0YXRlLT5hc19wcnVuZV9zdGF0ZS0+ZG9fZXhlY19wcnVuZSAmJiBu cGxhbnMgPiAwKSkKIAkJCWFwcGVuZHN0YXRlLT5hc192YWxpZF9zdWJwbGFucyA9IGJtc19hZGRf cmFuZ2UoTlVMTCwgMCwgbnBsYW5zIC0gMSk7CiAJfQogCWVsc2UKQEAgLTU3Nyw3ICs1NzgsNyBA QCBjaG9vc2VfbmV4dF9zdWJwbGFuX2xvY2FsbHkoQXBwZW5kU3RhdGUgKm5vZGUpCiAJCX0KIAkJ ZWxzZSBpZiAobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPT0gTlVMTCkKIAkJCW5vZGUtPmFzX3Zh bGlkX3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1 bmVfc3RhdGUsIGZhbHNlKTsKKwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNf cHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAogCQl3aGljaHBsYW4gPSAtMTsKIAl9CkBAIC02 NDIsNyArNjQzLDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9mb3JfbGVhZGVyKEFwcGVuZFN0YXRl ICpub2RlKQogCQlpZiAobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPT0gTlVMTCkKIAkJewogCQkJ bm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhu b2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFu cyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCiAJCQkvKgogCQkJICogTWFy ayBlYWNoIGludmFsaWQgcGxhbiBhcyBmaW5pc2hlZCB0byBhbGxvdyB0aGUgbG9vcCBiZWxvdyB0 bwpAQCAtNzE3LDcgKzcxOCw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX3dvcmtlcihBcHBl bmRTdGF0ZSAqbm9kZSkKIAllbHNlIGlmIChub2RlLT5hc192YWxpZF9zdWJwbGFucyA9PSBOVUxM KQogCXsKIAkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJRXhlY0ZpbmRNYXRjaGluZ1N1 YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQlFeGVjRmluZE1hdGNoaW5n U3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAkJbWFya19pbnZh bGlkX3N1YnBsYW5zX2FzX2ZpbmlzaGVkKG5vZGUpOwogCX0KIApAQCAtODY4LDcgKzg2OSw3IEBA IEV4ZWNBcHBlbmRBc3luY0JlZ2luKEFwcGVuZFN0YXRlICpub2RlKQogCWlmIChub2RlLT5hc192 YWxpZF9zdWJwbGFucyA9PSBOVUxMKQogCXsKIAkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQot CQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7 CisJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNl LCBOVUxMKTsKIAogCQljbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFucyhub2RlKTsKIAl9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IDhkMzU4NjBjMzAuLjIzMTJlNWE2 MzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC0xMDMsNyArMTAz LDggQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJCSAqIHN1YnBsYW4sIHdlIGNhbiBmaWxsIG1zX3ZhbGlkX3N1YnBs YW5zIGltbWVkaWF0ZWx5LCBwcmV2ZW50aW5nCiAJCSAqIGxhdGVyIGNhbGxzIHRvIEV4ZWNGaW5k TWF0Y2hpbmdTdWJQbGFucy4KIAkJICovCi0JCWlmICghcHJ1bmVzdGF0ZS0+ZG9fZXhlY19wcnVu ZSAmJiBucGxhbnMgPiAwKQorCQlpZiAobWVyZ2VzdGF0ZS0+bXNfcHJ1bmVfc3RhdGUgPT0gTlVM TCB8fAorCQkJKCFtZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZS0+ZG9fZXhlY19wcnVuZSAmJiBu cGxhbnMgPiAwKSkKIAkJCW1lcmdlc3RhdGUtPm1zX3ZhbGlkX3N1YnBsYW5zID0gYm1zX2FkZF9y YW5nZShOVUxMLCAwLCBucGxhbnMgLSAxKTsKIAl9CiAJZWxzZQpAQCAtMjE4LDcgKzIxOSw3IEBA IEV4ZWNNZXJnZUFwcGVuZChQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJICovCiAJCWlmIChub2RlLT5t c192YWxpZF9zdWJwbGFucyA9PSBOVUxMKQogCQkJbm9kZS0+bXNfdmFsaWRfc3VicGxhbnMgPQot CQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5tc19wcnVuZV9zdGF0ZSwgZmFsc2Up OworCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5tc19wcnVuZV9zdGF0ZSwgZmFs c2UsIE5VTEwpOwogCiAJCS8qCiAJCSAqIEZpcnN0IHRpbWUgdGhyb3VnaDogcHVsbCB0aGUgZmly c3QgdHVwbGUgZnJvbSBlYWNoIHZhbGlkIHN1YnBsYW4sCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmluZGV4IGZkNTc5 NmYxYjkuLmIzZmFlYWUyYWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC0xNTc4LDYgKzE1NzgsNyBAQCBT UElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFu LAogCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2U7CiAJQ2FjaGVkUGxhbiAqY3BsYW47CiAJ TGlzdAkgICAqc3RtdF9saXN0OworCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3Q7CiAJ Y2hhcgkgICAqcXVlcnlfc3RyaW5nOwogCVNuYXBzaG90CXNuYXBzaG90OwogCU1lbW9yeUNvbnRl eHQgb2xkY29udGV4dDsKQEAgLTE2NTcsNyArMTY1OCwxMCBAQCBTUElfY3Vyc29yX29wZW5faW50 ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCSAqLwogCiAJLyogUmVw bGFuIGlmIG5lZWRlZCwgYW5kIGluY3JlbWVudCBwbGFuIHJlZmNvdW50IGZvciBwb3J0YWwgKi8K LQljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcGFyYW1MSSwgTlVMTCwgX1NQSV9j dXJyZW50LT5xdWVyeUVudik7CisJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHBh cmFtTEksIE5VTEwsIF9TUElfY3VycmVudC0+cXVlcnlFbnYsCisJCQkJCQkgICZwYXJ0X3BydW5l X3Jlc3VsdF9saXN0KTsKKwlBc3NlcnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0bXRfbGlzdCkgPT0K KwkJICAgbGlzdF9sZW5ndGgocGFydF9wcnVuZV9yZXN1bHRfbGlzdCkpOwogCXN0bXRfbGlzdCA9 IGNwbGFuLT5zdG10X2xpc3Q7CiAKIAlpZiAoIXBsYW4tPnNhdmVkKQpAQCAtMTY4NSw2ICsxNjg5 LDkgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5Q dHIgcGxhbiwKIAkJCQkJICBzdG10X2xpc3QsCiAJCQkJCSAgY3BsYW4pOwogCisJLyogQ29weSBQ YXJ0aXRpb25QcnVuZVJlc3VsdHMgaW50byB0aGUgcG9ydGFsJ3MgY29udGV4dC4gKi8KKwlQb3J0 YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0cyhwb3J0YWwsIHBhcnRfcHJ1bmVfcmVzdWx0X2xp c3QpOworCiAJLyoKIAkgKiBTZXQgdXAgb3B0aW9ucyBmb3IgcG9ydGFsLiAgRGVmYXVsdCBTQ1JP TEwgdHlwZSBpcyBjaG9zZW4gdGhlIHNhbWUgd2F5CiAJICogYXMgUGVyZm9ybUN1cnNvck9wZW4g ZG9lcyBpdC4KQEAgLTIwOTIsNyArMjA5OSw4IEBAIFNQSV9wbGFuX2dldF9jYWNoZWRfcGxhbihT UElQbGFuUHRyIHBsYW4pCiAJLyogR2V0IHRoZSBnZW5lcmljIHBsYW4gZm9yIHRoZSBxdWVyeSAq LwogCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBOVUxMLAogCQkJCQkJICBwbGFu LT5zYXZlZCA/IEN1cnJlbnRSZXNvdXJjZU93bmVyIDogTlVMTCwKLQkJCQkJCSAgX1NQSV9jdXJy ZW50LT5xdWVyeUVudik7CisJCQkJCQkgIF9TUElfY3VycmVudC0+cXVlcnlFbnYsCisJCQkJCQkg IE5VTEwgLyogTm90IGludGVyZXN0ZWQgaW4gUGFydGl0aW9uUHJ1bmVSZXN1bHRzICovKTsKIAlB c3NlcnQoY3BsYW4gPT0gcGxhbnNvdXJjZS0+Z3BsYW4pOwogCiAJLyogUG9wIHRoZSBlcnJvciBj b250ZXh0IHN0YWNrICovCkBAIC0yNDczLDcgKzI0ODEsOSBAQCBfU1BJX2V4ZWN1dGVfcGxhbihT UElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCXsKIAkJ Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSA9IChDYWNoZWRQbGFuU291cmNlICopIGxmaXJz dChsYzEpOwogCQlMaXN0CSAgICpzdG10X2xpc3Q7Ci0JCUxpc3RDZWxsICAgKmxjMjsKKwkJTGlz dAkgICAqcGFydF9wcnVuZV9yZXN1bHRfbGlzdDsKKwkJTGlzdENlbGwgICAqbGMyLAorCQkJCSAg ICpsYzM7CiAKIAkJc3BpY2FsbGJhY2thcmcucXVlcnkgPSBwbGFuc291cmNlLT5xdWVyeV9zdHJp bmc7CiAKQEAgLTI1NDksOCArMjU1OSwxMCBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRy IHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkgKiBwbGFuLCB0aGUg cmVmY291bnQgbXVzdCBiZSBiYWNrZWQgYnkgdGhlIHBsYW5fb3duZXIuCiAJCSAqLwogCQljcGxh biA9IEdldENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgb3B0aW9ucy0+cGFyYW1zLAotCQkJCQkJCSAg cGxhbl9vd25lciwgX1NQSV9jdXJyZW50LT5xdWVyeUVudik7Ci0KKwkJCQkJCQkgIHBsYW5fb3du ZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYsCisJCQkJCQkJICZwYXJ0X3BydW5lX3Jlc3VsdF9s aXN0KTsKKwkJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09CisJCQkgICBs aXN0X2xlbmd0aChwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KSk7CiAJCXN0bXRfbGlzdCA9IGNwbGFu LT5zdG10X2xpc3Q7CiAKIAkJLyoKQEAgLTI1ODksOSArMjYwMSwxMCBAQCBfU1BJX2V4ZWN1dGVf cGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAog CQkJfQogCQl9CiAKLQkJZm9yZWFjaChsYzIsIHN0bXRfbGlzdCkKKwkJZm9yYm90aChsYzIsIHN0 bXRfbGlzdCwgbGMzLCBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KQogCQl7CiAJCQlQbGFubmVkU3Rt dCAqc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYzIpOworCQkJUGFydGl0aW9uUHJ1 bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0ID0gbGZpcnN0X25vZGUoUGFydGl0aW9uUHJ1bmVS ZXN1bHQsIGxjMyk7CiAJCQlib29sCQljYW5TZXRUYWcgPSBzdG10LT5jYW5TZXRUYWc7CiAJCQlE ZXN0UmVjZWl2ZXIgKmRlc3Q7CiAKQEAgLTI2NjMsNyArMjY3Niw3IEBAIF9TUElfZXhlY3V0ZV9w bGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJ CQkJZWxzZQogCQkJCQlzbmFwID0gSW52YWxpZFNuYXBzaG90OwogCi0JCQkJcWRlc2MgPSBDcmVh dGVRdWVyeURlc2Moc3RtdCwKKwkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LCBwYXJ0 X3BydW5lX3Jlc3VsdCwKIAkJCQkJCQkJCQlwbGFuc291cmNlLT5xdWVyeV9zdHJpbmcsCiAJCQkJ CQkJCQkJc25hcCwgY3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJCQkJCQkJCQlkZXN0LApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9y ZWFkZnVuY3MuYwppbmRleCA0ZDY5MDJkM2FjLi5jMzQyMjZhODNiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVu Y3MuYwpAQCAtMTU4LDYgKzE1OCwxMSBAQAogCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOwkJ Lyogc2tpcCA6ZmxkbmFtZSAqLyBcCiAJbG9jYWxfbm9kZS0+ZmxkbmFtZSA9IHJlYWRJbnRDb2xz KGxlbikKIAorLyogUmVhZCBhbiBJbmRleCBhcnJheSAqLworI2RlZmluZSBSRUFEX0lOREVYX0FS UkFZKGZsZG5hbWUsIGxlbikgXAorCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOwkJLyogc2tp cCA6ZmxkbmFtZSAqLyBcCisJbG9jYWxfbm9kZS0+ZmxkbmFtZSA9IHJlYWRJbmRleENvbHMobGVu KQorCiAvKiBSZWFkIGEgYm9vbCBhcnJheSAqLwogI2RlZmluZSBSRUFEX0JPT0xfQVJSQVkoZmxk bmFtZSwgbGVuKSBcCiAJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7CQkvKiBza2lwIDpmbGRu YW1lICovIFwKQEAgLTc5OSw3ICs4MDQsNiBAQCBmbm5hbWUoaW50IG51bUNvbHMpIFwKICAqLwog UkVBRF9TQ0FMQVJfQVJSQVkocmVhZEF0dHJOdW1iZXJDb2xzLCBpbnQxNiwgYXRvaSkKIFJFQURf U0NBTEFSX0FSUkFZKHJlYWRPaWRDb2xzLCBPaWQsIGF0b29pZCkKLS8qIG91dGZ1bmNzLmMgaGFz IHdyaXRlSW5kZXhDb2xzLCBidXQgd2UgZG9uJ3QgeWV0IG5lZWQgdGhhdCBoZXJlICovCi0vKiBS RUFEX1NDQUxBUl9BUlJBWShyZWFkSW5kZXhDb2xzLCBJbmRleCwgYXRvdWkpICovCitSRUFEX1ND QUxBUl9BUlJBWShyZWFkSW5kZXhDb2xzLCBJbmRleCwgYXRvdWkpCiBSRUFEX1NDQUxBUl9BUlJB WShyZWFkSW50Q29scywgaW50LCBhdG9pKQogUkVBRF9TQ0FMQVJfQVJSQVkocmVhZEJvb2xDb2xz LCBib29sLCBzdHJ0b2Jvb2wpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXgg MzFmZmY1OTdhNy4uNDA5N2NmNzE2NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIu YwpAQCAtNTIwLDcgKzUyMCw5IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25z dCBjaGFyICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+cGFyYWxs ZWxNb2RlTmVlZGVkID0gZ2xvYi0+cGFyYWxsZWxNb2RlTmVlZGVkOwogCXJlc3VsdC0+cGxhblRy ZWUgPSB0b3BfcGxhbjsKIAlyZXN1bHQtPnBhcnRQcnVuZUluZm9zID0gZ2xvYi0+cGFydFBydW5l SW5mb3M7CisJcmVzdWx0LT5jb250YWluc0luaXRpYWxQcnVuaW5nID0gZ2xvYi0+Y29udGFpbnNJ bml0aWFsUHJ1bmluZzsKIAlyZXN1bHQtPnJ0YWJsZSA9IGdsb2ItPmZpbmFscnRhYmxlOworCXJl c3VsdC0+bWluTG9ja1JlbGlkcyA9IGdsb2ItPm1pbkxvY2tSZWxpZHM7CiAJcmVzdWx0LT5yZXN1 bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRSZWxhdGlvbnM7CiAJcmVzdWx0LT5hcHBlbmRSZWxh dGlvbnMgPSBnbG9iLT5hcHBlbmRSZWxhdGlvbnM7CiAJcmVzdWx0LT5zdWJwbGFucyA9IGdsb2It PnN1YnBsYW5zOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVm cy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDcyMGYyMGY1 NjMuLjYxZDY5MzQ5NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Nl dHJlZnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTI3 MCw2ICsyNzAsMTYgQEAgc2V0X3BsYW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxh biAqcGxhbikKIAkgKi8KIAlhZGRfcnRlc190b19mbGF0X3J0YWJsZShyb290LCBmYWxzZSk7CiAK KwkvKgorCSAqIEFkZCB0aGUgcXVlcnkncyBhZGp1c3RlZCByYW5nZSBvZiBSVCBpbmRleGVzIHRv IGdsb2ItPm1pbkxvY2tSZWxpZHMuCisJICogVGhlIGFkanVzdGVkIFJUIGluZGV4ZXMgb2YgcHJ1 bmFibGUgcmVsYXRpb25zIHdpbGwgYmUgZGVsZXRlZCBmcm9tIHRoZQorCSAqIHNldCBiZWxvdyB3 aGVyZSBQYXJ0aXRpb25QcnVuZUluZm9zIGFyZSBwcm9jZXNzZWQuCisJICovCisJZ2xvYi0+bWlu TG9ja1JlbGlkcyA9CisJCWJtc19hZGRfcmFuZ2UoZ2xvYi0+bWluTG9ja1JlbGlkcywKKwkJCQkJ ICBydG9mZnNldCArIDEsCisJCQkJCSAgcnRvZmZzZXQgKyBsaXN0X2xlbmd0aChyb290LT5wYXJz ZS0+cnRhYmxlKSk7CisKIAkvKgogCSAqIEFkanVzdCBSVCBpbmRleGVzIG9mIFBsYW5Sb3dNYXJr cyBhbmQgYWRkIHRvIGZpbmFsIHJvd21hcmtzIGxpc3QKIAkgKi8KQEAgLTM1Miw2ICszNjIsNyBA QCBzZXRfcGxhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuKQogCWZv cmVhY2ggKGxjLCByb290LT5wYXJ0UHJ1bmVJbmZvcykKIAl7CiAJCVBhcnRpdGlvblBydW5lSW5m byAqcHJ1bmVpbmZvID0gbGZpcnN0KGxjKTsKKwkJQml0bWFwc2V0ICpsZWFmcGFydF9ydGlzID0g TlVMTDsKIAkJTGlzdENlbGwgICpsOwogCiAJCWZvcmVhY2gobCwgcHJ1bmVpbmZvLT5wcnVuZV9p bmZvcykKQEAgLTM2MiwxNSArMzczLDUwIEBAIHNldF9wbGFuX3JlZmVyZW5jZXMoUGxhbm5lcklu Zm8gKnJvb3QsIFBsYW4gKnBsYW4pCiAJCQlmb3JlYWNoKGwyLCBwcnVuZV9pbmZvcykKIAkJCXsK IAkJCQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGluZm8gPSBsZmlyc3QobDIpOworCQkJCWlu dAkJaTsKIAogCQkJCS8qIFJUIGluZGV4IG9mIHRoZSB0YWJsZSB0byB3aGljaCB0aGUgcGluZm8g YmVsb25ncy4gKi8KIAkJCQlwaW5mby0+cnRpbmRleCArPSBydG9mZnNldDsKKworCQkJCS8qIEFs c28gb2YgdGhlIGxlYWYgcGFydGl0aW9ucyB0aGF0IG1pZ2h0IGJlIHNjYW5uZWQuICovCisJCQkJ Zm9yIChpID0gMDsgaSA8IHBpbmZvLT5ucGFydHM7IGkrKykKKwkJCQl7CisJCQkJCWlmIChwaW5m by0+cnRpX21hcFtpXSA+IDAgJiYgcGluZm8tPnN1YnBsYW5fbWFwW2ldID49IDApCisJCQkJCXsK KwkJCQkJCXBpbmZvLT5ydGlfbWFwW2ldICs9IHJ0b2Zmc2V0OworCQkJCQkJbGVhZnBhcnRfcnRp cyA9IGJtc19hZGRfbWVtYmVyKGxlYWZwYXJ0X3J0aXMsCisJCQkJCQkJCQkJCQkJICAgcGluZm8t PnJ0aV9tYXBbaV0pOworCQkJCQl9CisJCQkJfQogCQkJfQogCQl9CiAKKwkJaWYgKHBydW5laW5m by0+bmVlZHNfaW5pdF9wcnVuaW5nKQorCQl7CisJCQlnbG9iLT5jb250YWluc0luaXRpYWxQcnVu aW5nID0gdHJ1ZTsKKworCQkJLyoKKwkJCSAqIERlbGV0ZSB0aGUgbGVhZiBwYXJ0aXRpb24gUlRJ cyBmcm9tIHRoZSBnbG9iYWwgc2V0IG9mIHJlbGF0aW9ucworCQkJICogdG8gYmUgbG9ja2VkIGJl Zm9yZSBleGVjdXRpbmcgdGhlIHBsYW4uICBBY3F1aXJlRXhlY3V0b3JMb2NrcygpCisJCQkgKiB3 aWxsIGZpbmQgdGhlIG9uZXMgdG8gYWRkIHRvIHRoZSBzZXQgYWZ0ZXIgcGVyZm9ybWluZyBpbml0 aWFsCisJCQkgKiBwcnVuaW5nLgorCQkJICovCisJCQlnbG9iLT5taW5Mb2NrUmVsaWRzID0gYm1z X2RlbF9tZW1iZXJzKGdsb2ItPm1pbkxvY2tSZWxpZHMsCisJCQkJCQkJCQkJCQkgIGxlYWZwYXJ0 X3J0aXMpOworCQl9CisKIAkJZ2xvYi0+cGFydFBydW5lSW5mb3MgPSBsYXBwZW5kKGdsb2ItPnBh cnRQcnVuZUluZm9zLCBwcnVuZWluZm8pOwogCX0KIAorCS8qCisJICogSXQgc2VlbXMgd29ydGgg ZG9pbmcgYSBibXNfY29weSgpIG9uIGdsb2ItPm1pbkxvY2tSZWxpZHMgaWYgd2UgZGVsZXRlZAor CSAqIGJpdHMgZnJvbSBpdCBhYm92ZSB0byBnZXQgcmlkIG9mIGFueSBlbXB0eSB0YWlsIGJpdHMu ICBJdCBzZWVtcyBiZXR0ZXIKKwkgKiBmb3IgdGhlIGxvb3Agb3ZlciB0aGlzIHNldCBpbiBBY3F1 aXJlRXhlY3V0b3JMb2NrcygpIHRvIG5vdCBoYXZlIHRvIGdvCisJICogdGhyb3VnaCB0aG9zZSB1 c2VsZXNzIGJpdCB3b3Jkcy4KKwkgKi8KKwlpZiAoZ2xvYi0+Y29udGFpbnNJbml0aWFsUHJ1bmlu ZykKKwkJZ2xvYi0+bWluTG9ja1JlbGlkcyA9IGJtc19jb3B5KGdsb2ItPm1pbkxvY2tSZWxpZHMp OworCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0 aW9uaW5nL3BhcnRwcnVuZS5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5j CmluZGV4IDY1NjViNmVkMDEuLjM3ZjNlNmFmNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnRpdGlvbmluZy9wYXJ0cHJ1bmUuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFy dHBydW5lLmMKQEAgLTE0NCw3ICsxNDQsOSBAQCBzdGF0aWMgTGlzdCAqbWFrZV9wYXJ0aXRpb25l ZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJICAgTGlzdCAqcHJ1 bmVxdWFsLAogCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqcGFydHJlbGlkcywKIAkJCQkJCQkJCQkg ICBpbnQgKnJlbGlkX3N1YnBsYW5fbWFwLAotCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKm1hdGNo ZWRzdWJwbGFucyk7CisJCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5zLAor CQkJCQkJCQkJCSAgIGJvb2wgKm5lZWRzX2luaXRfcHJ1bmluZywKKwkJCQkJCQkJCQkgICBib29s ICpuZWVkc19leGVjX3BydW5pbmcpOwogc3RhdGljIHZvaWQgZ2VuX3BhcnRwcnVuZV9zdGVwcyhS ZWxPcHRJbmZvICpyZWwsIExpc3QgKmNsYXVzZXMsCiAJCQkJCQkJCVBhcnRDbGF1c2VUYXJnZXQg dGFyZ2V0LAogCQkJCQkJCQlHZW5lcmF0ZVBydW5pbmdTdGVwc0NvbnRleHQgKmNvbnRleHQpOwpA QCAtMjM0LDYgKzIzNiw4IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCWludAkJICAgKnJlbGlkX3N1YnBsYW5fbWFw OwogCUxpc3RDZWxsICAgKmxjOwogCWludAkJCWk7CisJYm9vbAkJbmVlZHNfaW5pdF9wcnVuaW5n ID0gZmFsc2U7CisJYm9vbAkJbmVlZHNfZXhlY19wcnVuaW5nID0gZmFsc2U7CiAKIAkvKgogCSAq IFNjYW4gdGhlIHN1YnBhdGhzIHRvIHNlZSB3aGljaCBvbmVzIGFyZSBzY2FucyBvZiBwYXJ0aXRp b24gY2hpbGQKQEAgLTMxMywxMiArMzE3LDE2IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlCaXRtYXBzZXQgICpw YXJ0cmVsaWRzID0gKEJpdG1hcHNldCAqKSBsZmlyc3QobGMpOwogCQlMaXN0CSAgICpwaW5mb2xp c3Q7CiAJCUJpdG1hcHNldCAgKm1hdGNoZWRzdWJwbGFucyA9IE5VTEw7CisJCWJvb2wJCXBhcnRy ZWxfbmVlZHNfaW5pdF9wcnVuaW5nOworCQlib29sCQlwYXJ0cmVsX25lZWRzX2V4ZWNfcHJ1bmlu ZzsKIAogCQlwaW5mb2xpc3QgPSBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhyb290LCBw YXJlbnRyZWwsCiAJCQkJCQkJCQkJCQkgIHBydW5lcXVhbCwKIAkJCQkJCQkJCQkJCSAgcGFydHJl bGlkcywKIAkJCQkJCQkJCQkJCSAgcmVsaWRfc3VicGxhbl9tYXAsCi0JCQkJCQkJCQkJCQkgICZt YXRjaGVkc3VicGxhbnMpOworCQkJCQkJCQkJCQkJICAmbWF0Y2hlZHN1YnBsYW5zLAorCQkJCQkJ CQkJCQkJICAmcGFydHJlbF9uZWVkc19pbml0X3BydW5pbmcsCisJCQkJCQkJCQkJCQkgICZwYXJ0 cmVsX25lZWRzX2V4ZWNfcHJ1bmluZyk7CiAKIAkJLyogV2hlbiBwcnVuaW5nIGlzIHBvc3NpYmxl LCByZWNvcmQgdGhlIG1hdGNoZWQgc3VicGxhbnMgKi8KIAkJaWYgKHBpbmZvbGlzdCAhPSBOSUwp CkBAIC0zMjcsNiArMzM1LDkgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQlhbGxtYXRjaGVkc3VicGxhbnMgPSBi bXNfam9pbihtYXRjaGVkc3VicGxhbnMsCiAJCQkJCQkJCQkJICBhbGxtYXRjaGVkc3VicGxhbnMp OwogCQl9CisKKwkJbmVlZHNfaW5pdF9wcnVuaW5nIHw9IHBhcnRyZWxfbmVlZHNfaW5pdF9wcnVu aW5nOworCQluZWVkc19leGVjX3BydW5pbmcgfD0gcGFydHJlbF9uZWVkc19leGVjX3BydW5pbmc7 CiAJfQogCiAJcGZyZWUocmVsaWRfc3VicGxhbl9tYXApOwpAQCAtMzQxLDYgKzM1Miw4IEBAIG1h a2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFy ZW50cmVsLAogCS8qIEVsc2UgYnVpbGQgdGhlIHJlc3VsdCBkYXRhIHN0cnVjdHVyZSAqLwogCXBy dW5laW5mbyA9IG1ha2VOb2RlKFBhcnRpdGlvblBydW5lSW5mbyk7CiAJcHJ1bmVpbmZvLT5wcnVu ZV9pbmZvcyA9IHBydW5lcmVsaW5mb3M7CisJcHJ1bmVpbmZvLT5uZWVkc19pbml0X3BydW5pbmcg PSBuZWVkc19pbml0X3BydW5pbmc7CisJcHJ1bmVpbmZvLT5uZWVkc19leGVjX3BydW5pbmcgPSBu ZWVkc19leGVjX3BydW5pbmc7CiAKIAkvKgogCSAqIFNvbWUgc3VicGxhbnMgbWF5IG5vdCBiZWxv bmcgdG8gYW55IG9mIHRoZSBpZGVudGlmaWVkIHBhcnRpdGlvbmVkIHJlbHMuCkBAIC00NDEsMTMg KzQ1NCwxOCBAQCBhZGRfcGFydF9yZWxpZHMoTGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0 ICpwYXJ0cmVsaWRzKQogICogSWYgd2UgY2Fubm90IGZpbmQgYW55IHVzZWZ1bCBydW4tdGltZSBw cnVuaW5nIHN0ZXBzLCByZXR1cm4gTklMLgogICogSG93ZXZlciwgb24gc3VjY2VzcywgZWFjaCBy ZWwgaWRlbnRpZmllZCBpbiBwYXJ0cmVsaWRzIHdpbGwgaGF2ZQogICogYW4gZWxlbWVudCBpbiB0 aGUgcmVzdWx0IGxpc3QsIGV2ZW4gaWYgc29tZSBvZiB0aGVtIGFyZSB1c2VsZXNzLgorICogKm5l ZWRzX2luaXRfcHJ1bmluZyBhbmQgKm5lZWRzX2V4ZWNfcHJ1bmluZyBhcmUgc2V0IHRvIGluZGlj YXRlIHRoYXQgdGhlCisgKiByZXR1cm5lZCBQYXJ0aXRpb25lZFJlbFBydW5lSW5mb3MgY29udGFp bnMgcHJ1bmluZyBzdGVwcyB0aGF0IGNhbiBiZQorICogcGVyZm9ybWVkIGJlZm9yZSBhbmQgYWZ0 ZXIgZXhlY3V0aW9uIGJlZ2lucywgcmVzcGVjdGl2ZWx5LgogICovCiBzdGF0aWMgTGlzdCAqCiBt YWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqcGFyZW50cmVsLAogCQkJCQkJCSAgTGlzdCAqcHJ1bmVxdWFsLAogCQkJCQkJCSAgQml0bWFw c2V0ICpwYXJ0cmVsaWRzLAogCQkJCQkJCSAgaW50ICpyZWxpZF9zdWJwbGFuX21hcCwKLQkJCQkJ CQkgIEJpdG1hcHNldCAqKm1hdGNoZWRzdWJwbGFucykKKwkJCQkJCQkgIEJpdG1hcHNldCAqKm1h dGNoZWRzdWJwbGFucywKKwkJCQkJCQkgIGJvb2wgKm5lZWRzX2luaXRfcHJ1bmluZywKKwkJCQkJ CQkgIGJvb2wgKm5lZWRzX2V4ZWNfcHJ1bmluZykKIHsKIAlSZWxPcHRJbmZvICp0YXJnZXRwYXJ0 ID0gTlVMTDsKIAlMaXN0CSAgICpwaW5mb2xpc3QgPSBOSUw7CkBAIC00NTgsNiArNDc2LDEwIEBA IG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpwYXJlbnRyZWwsCiAJaW50CQkJcnRpOwogCWludAkJCWk7CiAKKwkvKiBXaWxsIGZpbmQg b3V0IGJlbG93LiAqLworCSpuZWVkc19pbml0X3BydW5pbmcgPSBmYWxzZTsKKwkqbmVlZHNfZXhl Y19wcnVuaW5nID0gZmFsc2U7CisKIAkvKgogCSAqIEV4YW1pbmUgZWFjaCBwYXJ0aXRpb25lZCBy ZWwsIGNvbnN0cnVjdGluZyBhIHRlbXBvcmFyeSBhcnJheSB0byBtYXAKIAkgKiBmcm9tIHBsYW5u ZXIgcmVsaWRzIHRvIGluZGV4IG9mIHRoZSBwYXJ0aXRpb25lZCByZWwsIGFuZCBidWlsZGluZyBh CkBAIC01NDUsNiArNTY3LDkgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJICogZXhlY3V0b3IgcGVyLXNj YW4gcHJ1bmluZyBzdGVwcy4gIFRoaXMgZmlyc3QgcGFzcyBjcmVhdGVzIHN0YXJ0dXAKIAkJICog cHJ1bmluZyBzdGVwcyBhbmQgZGV0ZWN0cyB3aGV0aGVyIHRoZXJlJ3MgYW55IHBvc3NpYmx5LXVz ZWZ1bCBxdWFscwogCQkgKiB0aGF0IHdvdWxkIHJlcXVpcmUgcGVyLXNjYW4gcHJ1bmluZy4KKwkJ ICoKKwkJICogSW4gdGhlIGZpcnN0IHBhc3MsIHdlIG5vdGUgd2hldGhlciB0aGUgMm5kIHBhc3Mg aXMgbmVjZXNzYXJ5IGJ5CisJCSAqIG5vdGluZyB0aGUgcHJlc2VuY2Ugb2YgRVhFQyBwYXJhbWV0 ZXJzLgogCQkgKi8KIAkJZ2VuX3BhcnRwcnVuZV9zdGVwcyhzdWJwYXJ0LCBwYXJ0cHJ1bmVxdWFs LCBQQVJUVEFSR0VUX0lOSVRJQUwsCiAJCQkJCQkJJmNvbnRleHQpOwpAQCAtNjE5LDYgKzY0NCwx MiBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcGFyZW50cmVsLAogCQlwaW5mby0+ZXhlY3BhcmFtaWRzID0gZXhlY3BhcmFtaWRz OwogCQkvKiBSZW1haW5pbmcgZmllbGRzIHdpbGwgYmUgZmlsbGVkIGluIHRoZSBuZXh0IGxvb3Ag Ki8KIAorCQkvKiByZWNvcmQgd2hpY2ggdHlwZXMgb2YgcHJ1bmluZyBzdGVwcyB3ZSd2ZSBzZWVu IHNvIGZhciAqLworCQlpZiAoaW5pdGlhbF9wcnVuaW5nX3N0ZXBzICE9IE5JTCkKKwkJCSpuZWVk c19pbml0X3BydW5pbmcgPSB0cnVlOworCQlpZiAoZXhlY19wcnVuaW5nX3N0ZXBzICE9IE5JTCkK KwkJCSpuZWVkc19leGVjX3BydW5pbmcgPSB0cnVlOworCiAJCXBpbmZvbGlzdCA9IGxhcHBlbmQo cGluZm9saXN0LCBwaW5mbyk7CiAJfQogCkBAIC02NDYsNiArNjc3LDcgQEAgbWFrZV9wYXJ0aXRp b25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJl bCwKIAkJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJCWludAkJICAgKnN1YnBhcnRfbWFwOwogCQlP aWQJCSAgICpyZWxpZF9tYXA7CisJCUluZGV4CSAgICpydGlfbWFwOwogCiAJCS8qCiAJCSAqIENv bnN0cnVjdCB0aGUgc3VicGxhbiBhbmQgc3VicGFydCBtYXBzIGZvciB0aGlzIHBhcnRpdGlvbmlu ZyBsZXZlbC4KQEAgLTY1OCw2ICs2OTAsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5m byhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlzdWJwYXJ0X21h cCA9IChpbnQgKikgcGFsbG9jKG5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAkJbWVtc2V0KHN1YnBh cnRfbWFwLCAtMSwgbnBhcnRzICogc2l6ZW9mKGludCkpOwogCQlyZWxpZF9tYXAgPSAoT2lkICop IHBhbGxvYzAobnBhcnRzICogc2l6ZW9mKE9pZCkpOworCQlydGlfbWFwID0gKEluZGV4ICopIHBh bGxvYzAobnBhcnRzICogc2l6ZW9mKEluZGV4KSk7CiAJCXByZXNlbnRfcGFydHMgPSBOVUxMOwog CiAJCWkgPSAtMTsKQEAgLTY3Miw2ICs3MDUsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5l aW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJc3VicGxh bl9tYXBbaV0gPSBzdWJwbGFuaWR4ID0gcmVsaWRfc3VicGxhbl9tYXBbcGFydHJlbC0+cmVsaWRd IC0gMTsKIAkJCXN1YnBhcnRfbWFwW2ldID0gc3VicGFydGlkeCA9IHJlbGlkX3N1YnBhcnRfbWFw W3BhcnRyZWwtPnJlbGlkXSAtIDE7CiAJCQlyZWxpZF9tYXBbaV0gPSBwbGFubmVyX3J0X2ZldGNo KHBhcnRyZWwtPnJlbGlkLCByb290KS0+cmVsaWQ7CisJCQlydGlfbWFwW2ldID0gcGFydHJlbC0+ cmVsaWQ7CiAJCQlpZiAoc3VicGxhbmlkeCA+PSAwKQogCQkJewogCQkJCXByZXNlbnRfcGFydHMg PSBibXNfYWRkX21lbWJlcihwcmVzZW50X3BhcnRzLCBpKTsKQEAgLTY5Niw2ICs3MzAsNyBAQCBt YWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqcGFyZW50cmVsLAogCQlwaW5mby0+c3VicGxhbl9tYXAgPSBzdWJwbGFuX21hcDsKIAkJcGlu Zm8tPnN1YnBhcnRfbWFwID0gc3VicGFydF9tYXA7CiAJCXBpbmZvLT5yZWxpZF9tYXAgPSByZWxp ZF9tYXA7CisJCXBpbmZvLT5ydGlfbWFwID0gcnRpX21hcDsKIAl9CiAKIAlwZnJlZShyZWxpZF9z dWJwYXJ0X21hcCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggMjdkZWUyOWY0Mi4uNWEzN2M0MTYwYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYwpAQCAtMTU5OCw2ICsxNTk4LDcgQEAgZXhlY19iaW5kX21lc3NhZ2Uo U3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCWludDE2CSAgICpyZm9ybWF0cyA9IE5VTEw7CiAJ Q2FjaGVkUGxhblNvdXJjZSAqcHNyYzsKIAlDYWNoZWRQbGFuICpjcGxhbjsKKwlMaXN0CSAgICpw YXJ0X3BydW5lX3Jlc3VsdF9saXN0OwogCVBvcnRhbAkJcG9ydGFsOwogCWNoYXIJICAgKnF1ZXJ5 X3N0cmluZzsKIAljaGFyCSAgICpzYXZlZF9zdG10X25hbWU7CkBAIC0xOTcyLDcgKzE5NzMsOSBA QCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJICogd2lsbCBi ZSBnZW5lcmF0ZWQgaW4gTWVzc2FnZUNvbnRleHQuICBUaGUgcGxhbiByZWZjb3VudCB3aWxsIGJl CiAJICogYXNzaWduZWQgdG8gdGhlIFBvcnRhbCwgc28gaXQgd2lsbCBiZSByZWxlYXNlZCBhdCBw b3J0YWwgZGVzdHJ1Y3Rpb24uCiAJICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBzcmMsIHBh cmFtcywgTlVMTCwgTlVMTCk7CisJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBzcmMsIHBhcmFtcywg TlVMTCwgTlVMTCwgJnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOworCUFzc2VydChsaXN0X2xlbmd0 aChjcGxhbi0+c3RtdF9saXN0KSA9PQorCQkgICBsaXN0X2xlbmd0aChwYXJ0X3BydW5lX3Jlc3Vs dF9saXN0KSk7CiAKIAkvKgogCSAqIE5vdyB3ZSBjYW4gZGVmaW5lIHRoZSBwb3J0YWwuCkBAIC0x OTg3LDYgKzE5OTAsOSBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3Nh Z2UpCiAJCQkJCSAgY3BsYW4tPnN0bXRfbGlzdCwKIAkJCQkJICBjcGxhbik7CiAKKwkvKiBDb3B5 IFBhcnRpdGlvblBydW5lUmVzdWx0cyBpbnRvIHRoZSBwb3J0YWwncyBjb250ZXh0LiAqLworCVBv cnRhbFN0b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKHBvcnRhbCwgcGFydF9wcnVuZV9yZXN1bHRf bGlzdCk7CisKIAkvKiBEb25lIHdpdGggdGhlIHNuYXBzaG90IHVzZWQgZm9yIHBhcmFtZXRlciBJ L08gYW5kIHBhcnNpbmcvcGxhbm5pbmcgKi8KIAlpZiAoc25hcHNob3Rfc2V0KQogCQlQb3BBY3Rp dmVTbmFwc2hvdCgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3Ny Yy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggNWFhNWEzNTBmMy4uOGNjMmUyMTYyZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29w L3BxdWVyeS5jCkBAIC0zNSw3ICszNSw3IEBACiBQb3J0YWwJCUFjdGl2ZVBvcnRhbCA9IE5VTEw7 CiAKIAotc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAorc3RhdGlj IHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLCBQYXJ0aXRpb25QcnVuZVJlc3Vs dCAqcGFydF9wcnVuZV9yZXN1bHQsCiAJCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJ CQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVy eUVudiwKQEAgLTY1LDYgKzY1LDcgQEAgc3RhdGljIHZvaWQgRG9Qb3J0YWxSZXdpbmQoUG9ydGFs IHBvcnRhbCk7CiAgKi8KIFF1ZXJ5RGVzYyAqCiBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQg KnBsYW5uZWRzdG10LAorCQkJCVBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3Vs dCwKIAkJCQljb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCVNuYXBzaG90IHNuYXBzaG90LAog CQkJCVNuYXBzaG90IGNyb3NzY2hlY2tfc25hcHNob3QsCkBAIC03Nyw2ICs3OCw4IEBAIENyZWF0 ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCiAKIAlxZC0+b3BlcmF0aW9uID0g cGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlOwkvKiBvcGVyYXRpb24gKi8KIAlxZC0+cGxhbm5lZHN0 bXQgPSBwbGFubmVkc3RtdDsJLyogcGxhbiAqLworCXFkLT5wYXJ0X3BydW5lX3Jlc3VsdCA9IHBh cnRfcHJ1bmVfcmVzdWx0OwkvKiBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKQorCQkJCQkJCQkJ CQkJICogb3V0cHV0IGZvciBwbGFuICovCiAJcWQtPnNvdXJjZVRleHQgPSBzb3VyY2VUZXh0Owkv KiBxdWVyeSB0ZXh0ICovCiAJcWQtPnNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hv dCk7CS8qIHNuYXBzaG90ICovCiAJLyogUkkgY2hlY2sgc25hcHNob3QgKi8KQEAgLTEyMiw2ICsx MjUsNyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKgkJUE9SVEFMX09ORV9S RVRVUk5JTkcsIG9yIFBPUlRBTF9PTkVfTU9EX1dJVEggcG9ydGFsCiAgKgogICoJcGxhbjogdGhl IHBsYW4gdHJlZSBmb3IgdGhlIHF1ZXJ5CisgKglwYXJ0X3BydW5lX3Jlc3VsdDogRXhlY3V0b3JE b0luaXRpYWxQcnVuaW5nKCkgb3V0cHV0IGZvciB0aGUgcGxhbiB0cmVlCiAgKglzb3VyY2VUZXh0 OiB0aGUgc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5CiAgKglwYXJhbXM6IGFueSBwYXJhbWV0ZXJz IG5lZWRlZAogICoJZGVzdDogd2hlcmUgdG8gc2VuZCByZXN1bHRzCkBAIC0xMzQsNiArMTM4LDcg QEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQogICovCiBzdGF0aWMgdm9pZAogUHJv Y2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAorCQkJIFBhcnRpdGlvblBydW5lUmVzdWx0ICpw YXJ0X3BydW5lX3Jlc3VsdCwKIAkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJIFBhcmFt TGlzdEluZm8gcGFyYW1zLAogCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApAQCAtMTQ1 LDcgKzE1MCw3IEBAIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKIAkvKgogCSAqIENy ZWF0ZSB0aGUgUXVlcnlEZXNjIG9iamVjdAogCSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhwbGFuLCBzb3VyY2VUZXh0LAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFu LCBwYXJ0X3BydW5lX3Jlc3VsdCwgc291cmNlVGV4dCwKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNo b3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAw KTsKIApAQCAtNDkxLDggKzQ5NiwxMyBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJh bUxpc3RJbmZvIHBhcmFtcywKIAkJCQkvKgogCQkJCSAqIENyZWF0ZSBRdWVyeURlc2MgaW4gcG9y dGFsJ3MgY29udGV4dDsgZm9yIHRoZSBtb21lbnQsIHNldAogCQkJCSAqIHRoZSBkZXN0aW5hdGlv biB0byBEZXN0Tm9uZS4KKwkJCQkgKgorCQkJCSAqIFRoZXJlIGlzIG5vIFBhcnRpdGlvblBydW5l UmVzdWx0IHVubGVzcyB0aGUgUGxhbm5lZFN0bXQgaXMKKwkJCQkgKiBmcm9tIGEgQ2FjaGVkUGxh bi4KIAkJCQkgKi8KIAkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9k ZShQbGFubmVkU3RtdCwgcG9ydGFsLT5zdG10cyksCisJCQkJCQkJCQkJCXBvcnRhbC0+cGFydF9w cnVuZV9yZXN1bHRzID09IE5JTCA/IE5VTEwgOgorCQkJCQkJCQkJCQlsaW5pdGlhbChwb3J0YWwt PnBhcnRfcHJ1bmVfcmVzdWx0cyksCiAJCQkJCQkJCQkJCXBvcnRhbC0+c291cmNlVGV4dCwKIAkJ CQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90 LApAQCAtMTIyNSw2ICsxMjM1LDggQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAog CQlpZiAocHN0bXQtPnV0aWxpdHlTdG10ID09IE5VTEwpCiAJCXsKKwkJCVBhcnRpdGlvblBydW5l UmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCA9IE5VTEw7CisKIAkJCS8qCiAJCQkgKiBwcm9jZXNz IGEgcGxhbm5hYmxlIHF1ZXJ5LgogCQkJICovCkBAIC0xMjcxLDEwICsxMjgzLDE4IEBAIFBvcnRh bFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQllbHNlCiAJCQkJVXBkYXRlQWN0aXZlU25hcHNo b3RDb21tYW5kSWQoKTsKIAorCQkJLyoKKwkJCSAqIERldGVybWluZSBpZiB0aGVyZSdzIGEgY29y cmVzcG9uZGluZyBQYXJ0aXRpb25QcnVuZVJlc3VsdCBmb3IKKwkJCSAqIHRoaXMgUGxhbm5lZFN0 bXQuCisJCQkgKi8KKwkJCWlmIChwb3J0YWwtPnBhcnRfcHJ1bmVfcmVzdWx0cyAhPSBOSUwpCisJ CQkJcGFydF9wcnVuZV9yZXN1bHQgPSBsaXN0X250aChwb3J0YWwtPnBhcnRfcHJ1bmVfcmVzdWx0 cywKKwkJCQkJCQkJCQkJIGZvcmVhY2hfY3VycmVudF9pbmRleChzdG10bGlzdF9pdGVtKSk7CisK IAkJCWlmIChwc3RtdC0+Y2FuU2V0VGFnKQogCQkJewogCQkJCS8qIHN0YXRlbWVudCBjYW4gc2V0 IHRhZyBzdHJpbmcgKi8KLQkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCisJCQkJUHJvY2Vzc1F1ZXJ5 KHBzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdCwKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAog CQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwK QEAgLTEyODMsNyArMTMwMyw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQll bHNlCiAJCQl7CiAJCQkJLyogc3RtdCBhZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICov Ci0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAorCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwgcGFydF9w cnVuZV9yZXN1bHQsCiAJCQkJCQkJIHBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkgcG9ydGFs LT5wb3J0YWxQYXJhbXMsCiAJCQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3BsYW5jYWNoZS5jCmluZGV4IDBkNmEyOTU2NzQuLmM4MjgxZTcyMDEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC05OSwxNCArOTksMTkgQEAgc3RhdGljIGRsaXN0X2hl YWQgY2FjaGVkX2V4cHJlc3Npb25fbGlzdCA9IERMSVNUX1NUQVRJQ19JTklUKGNhY2hlZF9leHBy ZXNzaW9uX2wKIHN0YXRpYyB2b2lkIFJlbGVhc2VHZW5lcmljUGxhbihDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlKTsKIHN0YXRpYyBMaXN0ICpSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYpOwotc3RhdGljIGJvb2wgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UpOworc3RhdGljIGJvb2wgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCisJCQkJCQkJTGlzdCAqKnBh cnRfcHJ1bmVfcmVzdWx0X2xpc3QpOwogc3RhdGljIENhY2hlZFBsYW4gKkJ1aWxkQ2FjaGVkUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKLQkJCQkJCQkJICAg UGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwor CQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudiwKKwkJCQkJCQkJICAgTGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOwogc3Rh dGljIGJvb2wgY2hvb3NlX2N1c3RvbV9wbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Us CiAJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcyk7CiBzdGF0aWMgZG91YmxlIGNh Y2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpOwog c3RhdGljIFF1ZXJ5ICpRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cyk7Ci1zdGF0 aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWly ZSk7CitzdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIFBh cmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCisJCQkJCQkJCSBMaXN0ICoqcGFydF9wcnVuZV9yZXN1 bHRfbGlzdCwKKwkJCQkJCQkJIExpc3QgKipsb2NrZWRSZWxpZHNfcGVyX3N0bXQpOworc3RhdGlj IHZvaWQgUmVsZWFzZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBMaXN0ICpsb2NrZWRS ZWxpZHNfcGVyX3N0bXQpOwogc3RhdGljIHZvaWQgQWNxdWlyZVBsYW5uZXJMb2NrcyhMaXN0ICpz dG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgdm9pZCBTY2FuUXVlcnlGb3JMb2NrcyhR dWVyeSAqcGFyc2V0cmVlLCBib29sIGFjcXVpcmUpOwogc3RhdGljIGJvb2wgU2NhblF1ZXJ5V2Fs a2VyKE5vZGUgKm5vZGUsIGJvb2wgKmFjcXVpcmUpOwpAQCAtNzkwLDE1ICs3OTUsMjAgQEAgUmV2 YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKgogICog T24gYSAidHJ1ZSIgcmV0dXJuLCB3ZSBoYXZlIGFjcXVpcmVkIHRoZSBsb2NrcyBuZWVkZWQgdG8g cnVuIHRoZSBwbGFuLgogICogKFdlIG11c3QgZG8gdGhpcyBmb3IgdGhlICJ0cnVlIiByZXN1bHQg dG8gYmUgcmFjZS1jb25kaXRpb24tZnJlZS4pCisgKgorICogU2VlIEdldENhY2hlZFBsYW4oKSdz IGNvbW1lbnQgZm9yIGEgZGVzY3JpcHRpb24gb2YgcGFydF9wcnVuZV9yZXN1bHRfbGlzdC4KICAq Lwogc3RhdGljIGJvb2wKLUNoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlKQorQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFt TGlzdEluZm8gYm91bmRQYXJhbXMsCisJCQkJTGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3Qp CiB7CiAJQ2FjaGVkUGxhbiAqcGxhbiA9IHBsYW5zb3VyY2UtPmdwbGFuOwogCiAJLyogQXNzZXJ0 IHRoYXQgY2FsbGVyIGNoZWNrZWQgdGhlIHF1ZXJ5dHJlZSAqLwogCUFzc2VydChwbGFuc291cmNl LT5pc192YWxpZCk7CiAKKwkqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCA9IE5JTDsKKwogCS8qIElm IHRoZXJlJ3Mgbm8gZ2VuZXJpYyBwbGFuLCBqdXN0IHNheSAiZmFsc2UiICovCiAJaWYgKCFwbGFu KQogCQlyZXR1cm4gZmFsc2U7CkBAIC04MjAsMTMgKzgzMCwyMSBAQCBDaGVja0NhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKIAkgKi8KIAlpZiAocGxhbi0+aXNfdmFsaWQp CiAJeworCQlMaXN0ICAgKmxvY2tlZFJlbGlkc19wZXJfc3RtdDsKKwogCQkvKgogCQkgKiBQbGFu IG11c3QgaGF2ZSBwb3NpdGl2ZSByZWZjb3VudCBiZWNhdXNlIGl0IGlzIHJlZmVyZW5jZWQgYnkK IAkJICogcGxhbnNvdXJjZTsgc28gbm8gbmVlZCB0byBmZWFyIGl0IGRpc2FwcGVhcnMgdW5kZXIg dXMgaGVyZS4KIAkJICovCiAJCUFzc2VydChwbGFuLT5yZWZjb3VudCA+IDApOwogCi0JCUFjcXVp cmVFeGVjdXRvckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgdHJ1ZSk7CisJCS8qCisJCSAqIExvY2sg cmVsYXRpb25zIHNjYW5uZWQgYnkgdGhlIHBsYW4uICBUaGlzIGlzIHdoZXJlIHRoZSBwcnVuaW5n CisJCSAqIGhhcHBlbnMgaWYgbmVlZGVkLgorCQkgKi8KKwkJQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo cGxhbi0+c3RtdF9saXN0LCBib3VuZFBhcmFtcywKKwkJCQkJCQkgcGFydF9wcnVuZV9yZXN1bHRf bGlzdCwKKwkJCQkJCQkgJmxvY2tlZFJlbGlkc19wZXJfc3RtdCk7CiAKIAkJLyoKIAkJICogSWYg cGxhbiB3YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUgaWYgVHJhbnNhY3Rpb25YbWluIGhhcwpA QCAtODQ4LDcgKzg2NiwxNCBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxh bnNvdXJjZSkKIAkJfQogCiAJCS8qIE9vcHMsIHRoZSByYWNlIGNhc2UgaGFwcGVuZWQuICBSZWxl YXNlIHVzZWxlc3MgbG9ja3MuICovCi0JCUFjcXVpcmVFeGVjdXRvckxvY2tzKHBsYW4tPnN0bXRf bGlzdCwgZmFsc2UpOworCQlSZWxlYXNlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGxv Y2tlZFJlbGlkc19wZXJfc3RtdCk7CisKKwkJLyoKKwkJICogVGhlIG91dHB1dCBsaXN0IGFuZCBh bnkgb2JqZWN0cyB0aGVyZWluIGhhdmUgYmVlbiBhbGxvY2F0ZWQgaW4gdGhlCisJCSAqIGNhbGxl cidzIGhvcGVmdWxseSBzaG9ydC1saXZlZCBjb250ZXh0LCBzbyB3aWxsIG5vdCByZW1haW4gbGVh a2VkCisJCSAqIGZvciBsb25nLCB0aG91Z2ggcmVzZXQgdG8gYXZvaWQgaXRzIGFjY2lkZW50YWxs eSBiZWluZyBsb29rZWQgYXQuCisJCSAqLworCQkqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCA9IE5J TDsKIAl9CiAKIAkvKgpAQCAtODc0LDEwICs4OTksMTUgQEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAgKiBQbGFubmluZyB3b3JrIGlzIGRvbmUgaW4gdGhl IGNhbGxlcidzIG1lbW9yeSBjb250ZXh0LiAgVGhlIGZpbmlzaGVkIHBsYW4KICAqIGlzIGluIGEg Y2hpbGQgbWVtb3J5IGNvbnRleHQsIHdoaWNoIHR5cGljYWxseSBzaG91bGQgZ2V0IHJlcGFyZW50 ZWQKICAqICh1bmxlc3MgdGhpcyBpcyBhIG9uZS1zaG90IHBsYW4sIGluIHdoaWNoIGNhc2Ugd2Ug ZG9uJ3QgY29weSB0aGUgcGxhbikuCisgKgorICogQSBsaXN0IG9mIE5VTExzIGlzIHJldHVybmVk IGluICpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LCBtZWFuaW5nIHRoYXQgbm8KKyAqIFBhcnRpdGlv blBydW5lUmVzdWx0IG5vZGVzIGhhdmUgeWV0IGJlZW4gY3JlYXRlZCBmb3IgdGhlIHBsYW5zIGlu CisgKiBzdG10X2xpc3QuCiAgKi8KIHN0YXRpYyBDYWNoZWRQbGFuICoKIEJ1aWxkQ2FjaGVkUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKLQkJCQlQYXJhbUxp c3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKKwkJCQlQYXJh bUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCQlM aXN0ICoqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCkKIHsKIAlDYWNoZWRQbGFuICpwbGFuOwogCUxp c3QJICAgKnBsaXN0OwpAQCAtMTAwNyw2ICsxMDM3LDE3IEBAIEJ1aWxkQ2FjaGVkUGxhbihDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAogCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjeHQpOwogCisJLyoKKwkgKiBObyBhY3R1YWwgUGFydGl0aW9uUHJ1bmVSZXN1 bHRzIHlldCB0byBhZGQsIHRob3VnaCBtdXN0IGluaXRpYWxpemUKKwkgKiB0aGUgbGlzdCB0byBo YXZlIHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cyBhcyB0aGUgbGlzdCBvZgorCSAqIFBsYW5u ZWRTdG10cy4KKwkgKi8KKwkqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCA9IE5JTDsKKwlmb3JlYWNo KGxjLCBwbGlzdCkKKwl7CisJCSpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0ID0gbGFwcGVuZCgqcGFy dF9wcnVuZV9yZXN1bHRfbGlzdCwgTlVMTCk7CisJfQorCiAJcmV0dXJuIHBsYW47CiB9CiAKQEAg LTExMjYsNiArMTE2NywxNyBAQCBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJv b2wgaW5jbHVkZV9wbGFubmVyKQogICogcGxhbiBvciBhIGN1c3RvbSBwbGFuIGZvciB0aGUgZ2l2 ZW4gcGFyYW1ldGVyczogdGhlIGNhbGxlciBkb2VzIG5vdCBrbm93CiAgKiB3aGljaCBpdCB3aWxs IGdldC4KICAqCisgKiBGb3IgZXZlcnkgUGxhbm5lZFN0bXQgZm91bmQgaW4gdGhlIHJldHVybmVk IENhY2hlZFBsYW4sIGFuIGVsZW1lbnQgdGhhdAorICogaXMgZWl0aGVyIGEgUGFydGl0aW9uUHJ1 bmVSZXN1bHQgb3IgYSBOVUxMIGlzIGFkZGVkIHRvCisgKiAqcGFydF9wcnVuZV9yZXN1bHRfbGlz dCBpZiBuZWVkZWQuICBUaGUgZm9ybWVyIGlmIHRoZSBQbGFubmVkU3RtdCBpcyBmcm9tCisgKiB0 aGUgZXhpc3RpbmcgQ2FjaGVkUGxhbiB0aGF0IGlzIG90aGVyd2lzZSB2YWxpZCBhbmQgY29udGFp bnMgYXQgbGVhc3Qgb25lCisgKiBQYXJ0aXRpb25QcnVuZUluZm8gdGhhdCBoYXMgImluaXRpYWwi IHBydW5pbmcgc3RlcHMuICBUaG9zZSBzdGVwcyBhcmUKKyAqIHBlcmZvcm1lZCBieSBjYWxsaW5n IEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIHRvIGRldGVybWluZSBvbmx5IHRob3NlCisgKiBs ZWFmIHBhcnRpdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGxvY2tlZCBieSBBY3F1aXJlRXhlY3V0b3JM b2NrcygpIGJ5IHBydW5pbmcKKyAqIGF3YXkgc3VicGxhbnMgdGhhdCBkb24ndCBtYXRjaCB0aGUg cHJ1bmluZyBjb25kaXRpb25zLiAgVGhlCisgKiBQYXJ0aXRpb25QcnVuZVJlc3VsdCBjb250YWlu cyBhIGxpc3Qgb2YgYml0bWFwc2V0cyBvZiB0aGUgaW5kZXhlcyBvZgorICogbWF0Y2hpbmcgc3Vi cGxhbnMsIG9uZSBmb3IgZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8uCisgKgogICogT24gcmV0dXJu LCB0aGUgcGxhbiBpcyB2YWxpZCBhbmQgd2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRvIGJlZ2lu CiAgKiBleGVjdXRpb24uCiAgKgpAQCAtMTEzOSwxMSArMTE5MSwxMyBAQCBjYWNoZWRfcGxhbl9j b3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKQogICovCiBDYWNoZWRQ bGFuICoKIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1M aXN0SW5mbyBib3VuZFBhcmFtcywKLQkJCSAgUmVzb3VyY2VPd25lciBvd25lciwgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYpCisJCQkgIFJlc291cmNlT3duZXIgb3duZXIsIFF1ZXJ5RW52aXJv bm1lbnQgKnF1ZXJ5RW52LAorCQkJICBMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCkKIHsK IAlDYWNoZWRQbGFuICpwbGFuID0gTlVMTDsKIAlMaXN0CSAgICpxbGlzdDsKIAlib29sCQljdXN0 b21wbGFuOworCUxpc3QJICAgKm15X3BhcnRfcHJ1bmVfcmVzdWx0X2xpc3Q7CiAKIAkvKiBBc3Nl cnQgY2FsbGVyIGlzIGRvaW5nIHRoaW5ncyBpbiBhIHNhbmUgb3JkZXIgKi8KIAlBc3NlcnQocGxh bnNvdXJjZS0+bWFnaWMgPT0gQ0FDSEVEUExBTlNPVVJDRV9NQUdJQyk7CkBAIC0xMTYwLDcgKzEy MTQsOCBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFt TGlzdEluZm8gYm91bmRQYXJhbXMsCiAKIAlpZiAoIWN1c3RvbXBsYW4pCiAJewotCQlpZiAoQ2hl Y2tDYWNoZWRQbGFuKHBsYW5zb3VyY2UpKQorCQlpZiAoQ2hlY2tDYWNoZWRQbGFuKHBsYW5zb3Vy Y2UsIGJvdW5kUGFyYW1zLAorCQkJCQkJCSZteV9wYXJ0X3BydW5lX3Jlc3VsdF9saXN0KSkKIAkJ ewogCQkJLyogV2Ugd2FudCBhIGdlbmVyaWMgcGxhbiwgYW5kIHdlIGFscmVhZHkgaGF2ZSBhIHZh bGlkIG9uZSAqLwogCQkJcGxhbiA9IHBsYW5zb3VyY2UtPmdwbGFuOwpAQCAtMTE2OSw3ICsxMjI0 LDggQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxp c3RJbmZvIGJvdW5kUGFyYW1zLAogCQllbHNlCiAJCXsKIAkJCS8qIEJ1aWxkIGEgbmV3IGdlbmVy aWMgcGxhbiAqLwotCQkJcGxhbiA9IEJ1aWxkQ2FjaGVkUGxhbihwbGFuc291cmNlLCBxbGlzdCwg TlVMTCwgcXVlcnlFbnYpOworCQkJcGxhbiA9IEJ1aWxkQ2FjaGVkUGxhbihwbGFuc291cmNlLCBx bGlzdCwgTlVMTCwgcXVlcnlFbnYsCisJCQkJCQkJCSAgICZteV9wYXJ0X3BydW5lX3Jlc3VsdF9s aXN0KTsKIAkJCS8qIEp1c3QgbWFrZSByZWFsIHN1cmUgcGxhbnNvdXJjZS0+Z3BsYW4gaXMgY2xl YXIgKi8KIAkJCVJlbGVhc2VHZW5lcmljUGxhbihwbGFuc291cmNlKTsKIAkJCS8qIExpbmsgdGhl IG5ldyBnZW5lcmljIHBsYW4gaW50byB0aGUgcGxhbnNvdXJjZSAqLwpAQCAtMTIxNCw3ICsxMjcw LDggQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxp c3RJbmZvIGJvdW5kUGFyYW1zLAogCWlmIChjdXN0b21wbGFuKQogCXsKIAkJLyogQnVpbGQgYSBj dXN0b20gcGxhbiAqLwotCQlwbGFuID0gQnVpbGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0 LCBib3VuZFBhcmFtcywgcXVlcnlFbnYpOworCQlwbGFuID0gQnVpbGRDYWNoZWRQbGFuKHBsYW5z b3VyY2UsIHFsaXN0LCBib3VuZFBhcmFtcywgcXVlcnlFbnYsCisJCQkJCQkJICAgJm15X3BhcnRf cHJ1bmVfcmVzdWx0X2xpc3QpOwogCQkvKiBBY2N1bXVsYXRlIHRvdGFsIGNvc3RzIG9mIGN1c3Rv bSBwbGFucyAqLwogCQlwbGFuc291cmNlLT50b3RhbF9jdXN0b21fY29zdCArPSBjYWNoZWRfcGxh bl9jb3N0KHBsYW4sIHRydWUpOwogCkBAIC0xMjQ2LDYgKzEzMDMsOSBAQCBHZXRDYWNoZWRQbGFu KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMs CiAJCXBsYW4tPmlzX3NhdmVkID0gdHJ1ZTsKIAl9CiAKKwlpZiAocGFydF9wcnVuZV9yZXN1bHRf bGlzdCkKKwkJKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QgPSBteV9wYXJ0X3BydW5lX3Jlc3VsdF9s aXN0OworCiAJcmV0dXJuIHBsYW47CiB9CiAKQEAgLTE3MzcsMTcgKzE3OTcsMjkgQEAgUXVlcnlM aXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpCiAKIC8qCiAgKiBBY3F1aXJlRXhlY3V0b3JM b2NrczogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIGV4ZWN1dGlvbiBvZiBhIGNhY2hlZCBwbGFu OwotICogb3IgcmVsZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMgZmFsc2UuCisgKgorICogU2VlIEdl dENhY2hlZFBsYW4oKSdzIGNvbW1lbnQgZm9yIGEgZGVzY3JpcHRpb24gb2YgcGFydF9wcnVuZV9y ZXN1bHRfbGlzdC4KKyAqCisgKiBPbiByZXR1cm4sICpsb2NrZWRSZWxpZHNfcGVyX3N0bXQgd2ls bCBjb250YWluIGEgYml0bWFwc2V0IGZvciBldmVyeQorICogUGxhbm5lZFN0bXQgaW4gc3RtdF9s aXN0LCBjb250YWluaW5nIHRoZSBSVCBpbmRleGVzIG9mIHJlbGF0aW9uIGVudHJpZXMKKyAqIGlu IGl0cyByYW5nZSB0YWJsZSB0aGF0IHdlcmUgYWN0dWFsbHkgbG9ja2VkLCBvciBOVUxMIGlmIHRo ZSBQbGFubmVkU3RtdAorICogY29udGFpbnMgYSB1dGlsaXR5IHN0YXRlbWVudC4KICAqLwogc3Rh dGljIHZvaWQKLUFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1 aXJlKQorQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBQYXJhbUxpc3RJbmZv IGJvdW5kUGFyYW1zLAorCQkJCQkgTGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QsCisJCQkJ CSBMaXN0ICoqbG9ja2VkUmVsaWRzX3Blcl9zdG10KQogewogCUxpc3RDZWxsICAgKmxjMTsKIAor CSpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0ID0gKmxvY2tlZFJlbGlkc19wZXJfc3RtdCA9IE5JTDsK IAlmb3JlYWNoKGxjMSwgc3RtdF9saXN0KQogCXsKIAkJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10 ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7Ci0JCUxpc3RDZWxsICAgKmxjMjsKKwkJ UGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0ID0gTlVMTDsKKwkJQml0bWFw c2V0ICAqYWxsTG9ja1JlbGlkczsKKwkJQml0bWFwc2V0ICAqbG9ja2VkUmVsaWRzID0gTlVMTDsK KwkJaW50CQkJcnRpOwogCiAJCWlmIChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VU SUxJVFkpCiAJCXsKQEAgLTE3NjEsMTMgKzE4MzMsMzcgQEAgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo TGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAJCQlRdWVyeQkgICAqcXVlcnkgPSBVdGls aXR5Q29udGFpbnNRdWVyeShwbGFubmVkc3RtdC0+dXRpbGl0eVN0bXQpOwogCiAJCQlpZiAocXVl cnkpCi0JCQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnksIGFjcXVpcmUpOworCQkJCVNjYW5RdWVy eUZvckxvY2tzKHF1ZXJ5LCB0cnVlKTsKKwkJCSpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0ID0gbGFw cGVuZCgqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCwgTlVMTCk7CiAJCQljb250aW51ZTsKIAkJfQog Ci0JCWZvcmVhY2gobGMyLCBwbGFubmVkc3RtdC0+cnRhYmxlKQorCQkvKgorCQkgKiBGaWd1cmUg b3V0IHRoZSBzZXQgb2YgcmVsYXRpb25zIHRoYXQgd291bGQgbmVlZCB0byBiZSBsb2NrZWQKKwkJ ICogYmVmb3JlIGV4ZWN1dGluZyB0aGUgcGxhbi4KKwkJICovCisJCWlmIChwbGFubmVkc3RtdC0+ Y29udGFpbnNJbml0aWFsUHJ1bmluZykKIAkJewotCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gKFJh bmdlVGJsRW50cnkgKikgbGZpcnN0KGxjMik7CisJCQkvKgorCQkJICogT2J0YWluIHRoZSBzZXQg b2YgbGVhZiBwYXJ0aXRpb25zIHRvIGJlIGxvY2tlZC4KKwkJCSAqCisJCQkgKiBUaGUgZm9sbG93 aW5nIGRvZXMgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmluZyB1c2luZyB0aGUKKwkJCSAqIFBhcnRp dGlvblBydW5lSW5mb3MgZm91bmQgaW4gcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zIGFuZAor CQkJICogZmluZHMgbGVhZiBwYXJ0aXRpb25zIHRoYXQgc3Vydml2ZSB0aGF0IHBydW5pbmcgYWNy b3NzIGFsbCB0aGUKKwkJCSAqIG5vZGVzIGluIHRoZSBwbGFuIHRyZWUuCisJCQkgKi8KKwkJCXBh cnRfcHJ1bmVfcmVzdWx0ID0gRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKHBsYW5uZWRzdG10LAor CQkJCQkJCQkJCQkJCQkgYm91bmRQYXJhbXMpOworCQkJYWxsTG9ja1JlbGlkcyA9IGJtc191bmlv bihwbGFubmVkc3RtdC0+bWluTG9ja1JlbGlkcywKKwkJCQkJCQkJCSAgcGFydF9wcnVuZV9yZXN1 bHQtPnNjYW5fbGVhZnBhcnRfcnRpcyk7CisJCX0KKwkJZWxzZQorCQkJYWxsTG9ja1JlbGlkcyA9 IHBsYW5uZWRzdG10LT5taW5Mb2NrUmVsaWRzOworCisJCXJ0aSA9IC0xOworCQl3aGlsZSAoKHJ0 aSA9IGJtc19uZXh0X21lbWJlcihhbGxMb2NrUmVsaWRzLCBydGkpKSA+IDApCisJCXsKKwkJCVJh bmdlVGJsRW50cnkgKnJ0ZSA9IHJ0X2ZldGNoKHJ0aSwgcGxhbm5lZHN0bXQtPnJ0YWJsZSk7CiAK IAkJCWlmIChydGUtPnJ0ZWtpbmQgIT0gUlRFX1JFTEFUSU9OKQogCQkJCWNvbnRpbnVlOwpAQCAt MTc3OCwxMCArMTg3NCw1OSBAQCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3Qs IGJvb2wgYWNxdWlyZSkKIAkJCSAqIGZhaWwgaWYgaXQncyBiZWVuIGRyb3BwZWQgZW50aXJlbHkg LS0tIHdlJ2xsIGp1c3QgdHJhbnNpZW50bHkKIAkJCSAqIGFjcXVpcmUgYSBub24tY29uZmxpY3Rp bmcgbG9jay4KIAkJCSAqLwotCQkJaWYgKGFjcXVpcmUpCi0JCQkJTG9ja1JlbGF0aW9uT2lkKHJ0 ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOwotCQkJZWxzZQotCQkJCVVubG9ja1JlbGF0aW9u T2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJTG9ja1JlbGF0aW9uT2lkKHJ0 ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJbG9ja2VkUmVsaWRzID0gYm1zX2FkZF9t ZW1iZXIobG9ja2VkUmVsaWRzLCBydGkpOworCQl9CisKKwkJKnBhcnRfcHJ1bmVfcmVzdWx0X2xp c3QgPSBsYXBwZW5kKCpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LAorCQkJCQkJCQkJCSAgcGFydF9w cnVuZV9yZXN1bHQpOworCQkqbG9ja2VkUmVsaWRzX3Blcl9zdG10ID0gbGFwcGVuZCgqbG9ja2Vk UmVsaWRzX3Blcl9zdG10LCBsb2NrZWRSZWxpZHMpOworCX0KK30KKworLyoKKyAqIFJlbGVhc2VF eGVjdXRvckxvY2tzCisgKiAJCVJlbGVhc2UgbG9ja3MgdGhhdCB3b3VsZCd2ZSBiZWVuIGFjcXVp cmVkIGJ5IGFuIGVhcmxpZXIgY2FsbCB0bworICogCQlBY3F1aXJlRXhlY3V0b3JMb2NrcygpCisg Ki8KK3N0YXRpYyB2b2lkCitSZWxlYXNlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIExp c3QgKmxvY2tlZFJlbGlkc19wZXJfc3RtdCkKK3sKKwlMaXN0Q2VsbCAgICpsYzEsCisJCQkgICAq bGMyOworCisJZm9yYm90aChsYzEsIHN0bXRfbGlzdCwgbGMyLCBsb2NrZWRSZWxpZHNfcGVyX3N0 bXQpCisJeworCQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVk U3RtdCwgbGMxKTsKKwkJQml0bWFwc2V0ICAqbG9ja2VkUmVsaWRzID0gbGZpcnN0KGxjMik7CisJ CWludAkJCXJ0aTsKKworCQlpZiAocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElM SVRZKQorCQl7CisJCQkvKgorCQkJICogSWdub3JlIHV0aWxpdHkgc3RhdGVtZW50cywgZXhjZXB0 IHRob3NlIChzdWNoIGFzIEVYUExBSU4pIHRoYXQKKwkJCSAqIGNvbnRhaW4gYSBwYXJzZWQtYnV0 LW5vdC1wbGFubmVkIHF1ZXJ5LiAgTm90ZTogaXQncyBva2F5IHRvIHVzZQorCQkJICogU2NhblF1 ZXJ5Rm9yTG9ja3MsIGV2ZW4gdGhvdWdoIHRoZSBxdWVyeSBoYXNuJ3QgYmVlbiB0aHJvdWdoCisJ CQkgKiBydWxlIHJld3JpdGluZywgYmVjYXVzZSByZXdyaXRpbmcgZG9lc24ndCBjaGFuZ2UgdGhl IHF1ZXJ5CisJCQkgKiByZXByZXNlbnRhdGlvbi4KKwkJCSAqLworCQkJUXVlcnkJICAgKnF1ZXJ5 ID0gVXRpbGl0eUNvbnRhaW5zUXVlcnkocGxhbm5lZHN0bXQtPnV0aWxpdHlTdG10KTsKKworCQkJ QXNzZXJ0KGxvY2tlZFJlbGlkcyA9PSBOVUxMKTsKKwkJCWlmIChxdWVyeSkKKwkJCQlTY2FuUXVl cnlGb3JMb2NrcyhxdWVyeSwgZmFsc2UpOworCQkJY29udGludWU7CisJCX0KKworCQlydGkgPSAt MTsKKwkJd2hpbGUgKChydGkgPSBibXNfbmV4dF9tZW1iZXIobG9ja2VkUmVsaWRzLCBydGkpKSA+ PSAwKQorCQl7CisJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBydF9mZXRjaChydGksIHBsYW5uZWRz dG10LT5ydGFibGUpOworCisJCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7 CisKKwkJCS8qIFNlZSB0aGUgY29tbWVudCBpbiBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLiAqLwor CQkJVW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CiAJCX0K IAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCAzYTE2MWJkYjg4Li4yNzQw N2E3ZjBmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKQEAgLTMwMyw2ICszMDMsMjUg QEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAlwb3J0YWwtPnN0YXR1cyA9IFBP UlRBTF9ERUZJTkVEOwogfQogCisvKgorICogUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3Vs dHMKKyAqCQlDb3B5IHRoZSBnaXZlbiBsaXN0IG9mIFBhcnRpdGlvblBydW5lUmVzdWx0cyBpbnRv IHRoZSBwb3J0YWwncworICoJCWNvbnRleHQKKyAqCisgKiBUaGlzIGFsbG93cyB0aGUgY2FsbGVy IHRvIGVuc3VyZSB0aGF0IHRoZSBsaXN0IGV4aXN0cyBhcyBsb25nIGFzIHRoZSBwb3J0YWwKKyAq IGRvZXMuCisgKi8KK3ZvaWQKK1BvcnRhbFN0b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKFBvcnRh bCBwb3J0YWwsIExpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0cykKK3sKKwlNZW1vcnlDb250ZXh0CW9s ZGN4dDsKKworCUFzc2VydEFyZyhQb3J0YWxJc1ZhbGlkKHBvcnRhbCkpOworCW9sZGN4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhwb3J0YWwtPnBvcnRhbENvbnRleHQpOworCXBvcnRhbC0+cGFy dF9wcnVuZV9yZXN1bHRzID0gY29weU9iamVjdChwYXJ0X3BydW5lX3Jlc3VsdHMpOworCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworfQorCiAvKgogICogUG9ydGFsUmVsZWFzZUNhY2hl ZFBsYW4KICAqCQlSZWxlYXNlIGEgcG9ydGFsJ3MgcmVmZXJlbmNlIHRvIGl0cyBjYWNoZWQgcGxh biwgaWYgYW55LgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IDllYmRlMDg5YWUuLmU1N2UxMzNm MGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTg3LDcgKzg3LDkgQEAgZXh0ZXJuIHZvaWQg RXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJ CQkJCQkJICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJ CQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiAK LWV4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50 b0NsYXVzZSAqaW50bywKK2V4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwKKwkJCQkJCSAgIFBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jl c3VsdCwKKwkJCQkJCSAgIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkgICBFeHBsYWluU3RhdGUg KmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCSAgIFBhcmFtTGlzdEluZm8gcGFy YW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKIAkJCQkJCSAgIGNvbnN0IGluc3RyX3Rp bWUgKnBsYW5kdXJhdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAppbmRleCBi Zjk2MmFmN2FmLi5iZDg3NzY0MDJlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjUGFydGl0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5o CkBAIC00NSw2ICs0NSw3IEBAIGV4dGVybiB2b2lkIEV4ZWNDbGVhbnVwVHVwbGVSb3V0aW5nKE1v ZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsCiAgKiBucGFydHMJCQkJCQlMZW5ndGggb2Ygc3VicGxh bl9tYXBbXSBhbmQgc3VicGFydF9tYXBbXS4KICAqIHN1YnBsYW5fbWFwCQkJCQlTdWJwbGFuIGlu ZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgLTEuCiAgKiBzdWJwYXJ0X21hcAkJCQkJU3VicGFy dCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xLgorICogcnRpX21hcAkJCQkJCVJhbmdl IHRhYmxlIGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgMC4KICAqIHByZXNlbnRfcGFydHMJ CQkJQSBCaXRtYXBzZXQgb2YgdGhlIHBhcnRpdGlvbiBpbmRleGVzIHRoYXQgd2UKICAqCQkJCQkJ CQloYXZlIHN1YnBsYW5zIG9yIHN1YnBhcnRzIGZvci4KICAqIGluaXRpYWxfcHJ1bmluZ19zdGVw cwkJTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVN0ZXBzIHVzZWQgdG8KQEAgLTYxLDYgKzYyLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YQogCWludAkJCW5wYXJ0czsK IAlpbnQJCSAgICpzdWJwbGFuX21hcDsKIAlpbnQJCSAgICpzdWJwYXJ0X21hcDsKKwlJbmRleAkg ICAqcnRpX21hcDsKIAlCaXRtYXBzZXQgICpwcmVzZW50X3BhcnRzOwogCUxpc3QJICAgKmluaXRp YWxfcHJ1bmluZ19zdGVwczsKIAlMaXN0CSAgICpleGVjX3BydW5pbmdfc3RlcHM7CkBAIC0xMjYs NSArMTI4LDEwIEBAIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlv blBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJCQkJCQkJIGludCBwYXJ0X3By dW5lX2luZGV4LAogCQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3Vi cGxhbnMpOwogZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRp dGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCi0JCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3By dW5lKTsKKwkJCQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUsCisJCQkJCQkJCQkJICAgQml0 bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKTsKK2V4dGVybiBCaXRtYXBzZXQgKkV4ZWNQYXJ0 aXRpb25Eb0luaXRpYWxQcnVuaW5nKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJ UGFyYW1MaXN0SW5mbyBwYXJhbXMsCisJCQkJCQkJCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVp bmZvLAorCQkJCQkJCQlCaXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpOwogI2VuZGlmCQkJ CQkJCS8qIEVYRUNQQVJUSVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5kZXggZTc5 ZTJjMDAxZi4uNjBkNTY0NDkwOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCkBAIC0zNSw2ICsz NSw4IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCS8qIFRoZXNlIGZpZWxkcyBhcmUgcHJv dmlkZWQgYnkgQ3JlYXRlUXVlcnlEZXNjICovCiAJQ21kVHlwZQkJb3BlcmF0aW9uOwkJLyogQ01E X1NFTEVDVCwgQ01EX1VQREFURSwgZXRjLiAqLwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdDsJ LyogcGxhbm5lcidzIG91dHB1dCAoY291bGQgYmUgdXRpbGl0eSwgdG9vKSAqLworCVBhcnRpdGlv blBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdDsgLyogRXhlY3V0b3JEb0luaXRpYWxQcnVu aW5nKCkncworCQkJCQkJCQkJCQkgICogb3V0cHV0IGZvciBwbGFubmVkc3RtdCAqLwogCWNvbnN0 IGNoYXIgKnNvdXJjZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFw c2hvdAlzbmFwc2hvdDsJCS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hv dAljcm9zc2NoZWNrX3NuYXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRl ICovCkBAIC01Nyw2ICs1OSw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAvKiBpbiBw cXVlcnkuYyAqLwogZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10 ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVu ZV9yZXN1bHQsCiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJICBT bmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90 LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggZWQ5NWVkMTE3Ni4uNmFlODk3ZDVkMSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xODUsNiArMTg1LDggQEAgRXhlY0dldEp1bmtBdHRy aWJ1dGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEF0dHJOdW1iZXIgYXR0bm8sIGJvb2wgKmlzTnVs bCkKIC8qCiAgKiBwcm90b3R5cGVzIGZyb20gZnVuY3Rpb25zIGluIGV4ZWNNYWluLmMKICAqLwor ZXh0ZXJuIFBhcnRpdGlvblBydW5lUmVzdWx0ICpFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoUGxh bm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJCQkJCQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJh bXMpOwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50 IGVmbGFncyk7CiBleHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWN1dG9yUnVuKFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA0YTc0MWIwNTNmLi42M2E4OTQ3 NGRiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjEyLDYgKzYxMiw3IEBAIHR5cGVkZWYgc3Ry dWN0IEVTdGF0ZQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICov CiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRy ZWUgKi8KIAlMaXN0CQkqZXNfcGFydF9wcnVuZV9pbmZvczsJLyogUGxhbm5lZFN0bXQucGFydFBy dW5lSW5mb3MgKi8KKwlzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKmVzX3BhcnRfcHJ1bmVf cmVzdWx0OyAvKiBRdWVyeURlc2MucGFydF9wcnVuZV9yZXN1bHQgKi8KIAljb25zdCBjaGFyICpl c19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAqLwogCiAJSnVua0Zp bHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9ub2Rlcy5oCmluZGV4IGE4MGY0M2U1NDAuLjkzN2NjNDYyOWQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAt MjEyLDYgKzIxMiw3IEBAIGV4dGVybiBzdHJ1Y3QgQml0bWFwc2V0ICpyZWFkQml0bWFwc2V0KHZv aWQpOwogZXh0ZXJuIHVpbnRwdHJfdCByZWFkRGF0dW0oYm9vbCB0eXBieXZhbCk7CiBleHRlcm4g Ym9vbCAqcmVhZEJvb2xDb2xzKGludCBudW1Db2xzKTsKIGV4dGVybiBpbnQgKnJlYWRJbnRDb2xz KGludCBudW1Db2xzKTsKK2V4dGVybiBJbmRleCAqcmVhZEluZGV4Q29scyhpbnQgbnVtQ29scyk7 CiBleHRlcm4gT2lkICpyZWFkT2lkQ29scyhpbnQgbnVtQ29scyk7CiBleHRlcm4gaW50MTYgKnJl YWRBdHRyTnVtYmVyQ29scyhpbnQgbnVtQ29scyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXgg ZTM5MmZiNmZjMC4uNDk0YWU0NjFiZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTEyNSw2ICsx MjUsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCS8qIExpc3Qgb2YgUGFydGl0 aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbiB0aGUgcGxhbiAqLwogCUxpc3QJICAgKnBhcnRQcnVu ZUluZm9zOwogCisJLyoKKwkgKiBEbyBhbnkgb2YgdGhvc2UgUGFydGl0aW9uUHJ1bmVJbmZvcyBo YXZlIGluaXRpYWwgcHJ1bmluZyBzdGVwcyBpbiB0aGVtPworCSAqLworCWJvb2wJCWNvbnRhaW5z SW5pdGlhbFBydW5pbmc7CisKKwkvKgorCSAqIEluZGV4ZXMgb2YgYWxsIHJhbmdlIHRhYmxlIGVu dHJpZXMgbWludXMgaW5kZXhlcyBvZiByYW5nZSB0YWJsZSBlbnRyaWVzCisJICogb2YgdGhlIGxl YWYgcGFydGl0aW9ucyBzY2FubmVkIGJ5IHBydW5hYmxlIHN1YnBsYW5zOyBzZWUKKwkgKiBBY3F1 aXJlRXhlY3V0b3JMb2NrcygpCisJICovCisJQml0bWFwc2V0ICAqbWluTG9ja1JlbGlkczsKKwog CS8qIE9JRHMgb2YgcmVsYXRpb25zIHRoZSBwbGFuIGRlcGVuZHMgb24gKi8KIAlMaXN0CSAgICpy ZWxhdGlvbk9pZHM7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5o IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggM2ViM2U2ZTUyNy4uYTFlMDY3 MTllNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTczLDggKzczLDE3IEBAIHR5cGVkZWYgc3Ry dWN0IFBsYW5uZWRTdG10CiAJTGlzdAkgICAqcGFydFBydW5lSW5mb3M7CS8qIExpc3Qgb2YgUGFy dGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbgogCQkJCQkJCQkgKiB0aGUgcGxhbiAqLwogCisJ Ym9vbAkJY29udGFpbnNJbml0aWFsUHJ1bmluZzsJLyogRG8gYW55IG9mIHRob3NlIFBhcnRpdGlv blBydW5lSW5mb3MKKwkJCQkJCQkJCQkgKiBoYXZlIGluaXRpYWwgcHJ1bmluZyBzdGVwcyBpbiB0 aGVtPworCQkJCQkJCQkJCSAqLworCiAJTGlzdAkgICAqcnRhYmxlOwkJCS8qIGxpc3Qgb2YgUmFu Z2VUYmxFbnRyeSBub2RlcyAqLwogCisJQml0bWFwc2V0ICAqbWluTG9ja1JlbGlkczsJLyogSW5k ZXhlcyBvZiBhbGwgcmFuZ2UgdGFibGUgZW50cmllcyBtaW51cworCQkJCQkJCQkgKiBpbmRleGVz IG9mIHJhbmdlIHRhYmxlIGVudHJpZXMgb2YgdGhlIGxlYWYKKwkJCQkJCQkJICogcGFydGl0aW9u cyBzY2FubmVkIGJ5IHBydW5hYmxlIHN1YnBsYW5zOworCQkJCQkJCQkgKiBzZWUgQWNxdWlyZUV4 ZWN1dG9yTG9ja3MoKSAqLworCiAJLyogcnRhYmxlIGluZGV4ZXMgb2YgdGFyZ2V0IHJlbGF0aW9u cyBmb3IgSU5TRVJUL1VQREFURS9ERUxFVEUgKi8KIAlMaXN0CSAgICpyZXN1bHRSZWxhdGlvbnM7 CS8qIGludGVnZXIgbGlzdCBvZiBSVCBpbmRleGVzLCBvciBOSUwgKi8KIApAQCAtMTQxMCw2ICsx NDE5LDEzIEBAIHR5cGVkZWYgc3RydWN0IFBsYW5Sb3dNYXJrCiAgKiBwcnVuZV9pbmZvcwkJCUxp c3Qgb2YgTGlzdHMgY29udGFpbmluZyBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyBub2RlcywKICAq CQkJCQkJb25lIHN1Ymxpc3QgcGVyIHJ1bi10aW1lLXBydW5hYmxlIHBhcnRpdGlvbiBoaWVyYXJj aHkKICAqCQkJCQkJYXBwZWFyaW5nIGluIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3Mgc3VicGxhbnMu CisgKgorICogbmVlZHNfaW5pdF9wcnVuaW5nCURvZXMgYW55IG9mIHRoZSBQYXJ0aXRpb25lZFJl bFBydW5lSW5mb3MgaW4KKyAqCQkJCQkJcHJ1bmVfaW5mb3MgaGF2ZSBpdHMgaW5pdGlhbF9wcnVu aW5nX3N0ZXBzIHNldD8KKyAqCisgKiBuZWVkc19leGVjX3BydW5pbmcJRG9lcyBhbnkgb2YgdGhl IFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvcyBpbgorICoJCQkJCQlwcnVuZV9pbmZvcyBoYXZlIGl0 cyBleGVjX3BydW5pbmdfc3RlcHMgc2V0PworICoKICAqIG90aGVyX3N1YnBsYW5zCQlJbmRleGVz IG9mIGFueSBzdWJwbGFucyB0aGF0IGFyZSBub3QgYWNjb3VudGVkIGZvcgogICoJCQkJCQlieSBh bnkgb2YgdGhlIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIG5vZGVzIGluCiAgKgkJCQkJCSJwcnVu ZV9pbmZvcyIuICBUaGVzZSBzdWJwbGFucyBtdXN0IG5vdCBiZSBwcnVuZWQuCkBAIC0xNDIwLDYg KzE0MzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUluZm8KIAogCU5vZGVUYWcJ CXR5cGU7CiAJTGlzdAkgICAqcHJ1bmVfaW5mb3M7CisJYm9vbAkJbmVlZHNfaW5pdF9wcnVuaW5n OworCWJvb2wJCW5lZWRzX2V4ZWNfcHJ1bmluZzsKIAlCaXRtYXBzZXQgICpvdGhlcl9zdWJwbGFu czsKIH0gUGFydGl0aW9uUHJ1bmVJbmZvOwogCkBAIC0xNDY0LDYgKzE0ODIsOSBAQCB0eXBlZGVm IHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbwogCS8qIHJlbGF0aW9uIE9JRCBieSBwYXJ0 aXRpb24gaW5kZXgsIG9yIDAgKi8KIAlPaWQJCSAgICpyZWxpZF9tYXAgcGdfbm9kZV9hdHRyKGFy cmF5X3NpemUobnBhcnRzKSk7CiAKKwkvKiBSYW5nZSB0YWJsZSBpbmRleCBieSBwYXJ0aXRpb24g aW5kZXgsIG9yIDAuICovCisJSW5kZXgJICAgKnJ0aV9tYXAgcGdfbm9kZV9hdHRyKGFycmF5X3Np emUobnBhcnRzKSk7CisKIAkvKgogCSAqIGluaXRpYWxfcHJ1bmluZ19zdGVwcyBzaG93cyBob3cg dG8gcHJ1bmUgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAgKGkuZS4sCiAJICogd2l0aG91dCB1c2Ug b2YgYW55IFBBUkFNX0VYRUMgUGFyYW1zKTsgaXQgaXMgTklMIGlmIG5vIHN0YXJ0dXAgcHJ1bmlu ZwpAQCAtMTU0OCw2ICsxNTY5LDMyIEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lU3Rl cENvbWJpbmUKIAlMaXN0CSAgICpzb3VyY2Vfc3RlcGlkczsKIH0gUGFydGl0aW9uUHJ1bmVTdGVw Q29tYmluZTsKIAorLyotLS0tLS0tLS0tLS0tLS0tCisgKiBQYXJ0aXRpb25QcnVuZVJlc3VsdAor ICoKKyAqIFRoZSByZXN1bHQgb2YgcGVyZm9ybWluZyBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmco KSBpbnZvY2F0aW9uIG9uIGEgZ2l2ZW4KKyAqIFBsYW5uZWRTdG10LgorICoKKyAqIENvbnRhaW5z IGEgbGlzdCBvZiBCaXRtYXBzZXQgb2YgdGhlIGluZGV4ZXMgb2YgdGhlIHN1YnBsYW5zIHJlbWFp bmluZyBhZnRlcgorICogcGVyZm9ybWluZyBpbml0aWFsIHBydW5pbmcgYnkgY2FsbGluZyBFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMoKSBmb3IgZXZlcnkKKyAqIFBhcnRpdGlvblBydW5lSW5mbyBm b3VuZCBpbiBQbGFubmVkU3RtdC5wYXJ0UHJ1bmVJbmZvcy4gIFJUIGluZGV4ZXMgb2YgdGhlCisg KiBsZWFmIHBhcnRpdGlvbnMgc2Nhbm5lZCBieSB0aG9zZSBzdWJwbGFucyBhY3Jvc3MgYWxsIFBh cnRpdGlvblBydW5lSW5mb3MKKyAqIGFyZSBhZGRlZCBpbnRvIHNjYW5fbGVhZnBhcnRfcnRpcy4K KyAqCisgKiBUaGlzIGlzIHVzZWQgYnkgR2V0Q2FjaGVkUGxhbigpIHRvIGluZm9ybSBpdHMgY2Fs bGVycyBvZiB0aGUgcHJ1bmluZworICogZGVjaXNpb25zIG1hZGUgd2hlbiBwZXJmb3JtaW5nIEFj cXVpcmVFeGVjdXRvckxvY2tzKCkgb24gYSBnaXZlbiBjYWNoZWQKKyAqIFBsYW5uZWRTdG10LCB3 aGljaCB0aGUgY2FsbGVycyB0aGVuIHBhc3Mgb24gdG8gdGhlIGV4ZWN1dG9yLiAgVGhlIGV4ZWN1 dG9yCisgKiByZWZlcnMgdG8gdGhpcyBub2RlIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBwbGFuIG5v ZGVzIHdoaWNoIGNvbnRhaW4gc3VicGxhbnMKKyAqIHRoYXQgbWF5IGhhdmUgYmVlbiBwcnVuZWQg YnkgRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCksIHJhdGhlciB0aGFuCisgKiByZWRvaW5nIGlu aXRpYWwgcHJ1bmluZy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVSZXN1bHQK K3sKKwlOb2RlVGFnCQl0eXBlOworCisJTGlzdAkJICAgKnZhbGlkX3N1YnBsYW5fb2Zmc19saXN0 OworCUJpdG1hcHNldAkgICAqc2Nhbl9sZWFmcGFydF9ydGlzOworfSBQYXJ0aXRpb25QcnVuZVJl c3VsdDsKIAogLyoKICAqIFBsYW4gaW52YWxpZGF0aW9uIGluZm8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgK aW5kZXggMDQ5OTYzNWY1OS4uMWM1YmI1ZWNlMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRp bHMvcGxhbmNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKQEAgLTIy MCw3ICsyMjAsOCBAQCBleHRlcm4gTGlzdCAqQ2FjaGVkUGxhbkdldFRhcmdldExpc3QoQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIGV4dGVybiBDYWNoZWRQbGFuICpHZXRDYWNoZWRQbGFu KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJv dW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25lciBvd25lciwKLQkJCQkJCQkJIFF1ZXJ5 RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKKwkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5 RW52LAorCQkJCQkJCQkgTGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOwogZXh0ZXJuIHZv aWQgUmVsZWFzZUNhY2hlZFBsYW4oQ2FjaGVkUGxhbiAqcGxhbiwgUmVzb3VyY2VPd25lciBvd25l cik7CiAKIGV4dGVybiBib29sIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0eUNoZWNrKENh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9wb3J0YWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCmluZGV4IGFlZGRiZGFmZTUu LjlmNzcyN2E4MzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCkBAIC0xMzgsNiArMTM4LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUG9ydGFsRGF0YQogCVF1ZXJ5Q29tcGxldGlvbiBxYzsJCQkvKiBjb21tYW5kIGNvbXBs ZXRpb24gZGF0YSBmb3IgZXhlY3V0ZWQgcXVlcnkgKi8KIAlMaXN0CSAgICpzdG10czsJCQkvKiBs aXN0IG9mIFBsYW5uZWRTdG10cyAqLwogCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8qIENhY2hlZFBs YW4sIGlmIHN0bXRzIGFyZSBmcm9tIG9uZSAqLworCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0 czsJLyogbGlzdCBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgKi8KIAogCVBhcmFtTGlzdEluZm8g cG9ydGFsUGFyYW1zOyAvKiBwYXJhbXMgdG8gcGFzcyB0byBxdWVyeSAqLwogCVF1ZXJ5RW52aXJv bm1lbnQgKnF1ZXJ5RW52OyAvKiBlbnZpcm9ubWVudCBmb3IgcXVlcnkgKi8KQEAgLTI0Miw2ICsy NDMsOCBAQCBleHRlcm4gdm9pZCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwgcG9ydGFsLAogCQkJ CQkJCSAgQ29tbWFuZFRhZyBjb21tYW5kVGFnLAogCQkJCQkJCSAgTGlzdCAqc3RtdHMsCiAJCQkJ CQkJICBDYWNoZWRQbGFuICpjcGxhbik7CitleHRlcm4gdm9pZCBQb3J0YWxTdG9yZVBhcnRpdGlv blBydW5lUmVzdWx0cyhQb3J0YWwgcG9ydGFsLAorCQkJCQkJCQkJCQkgTGlzdCAqcGFydF9wcnVu ZV9yZXN1bHRfbGlzdCk7CiBleHRlcm4gUGxhbm5lZFN0bXQgKlBvcnRhbEdldFByaW1hcnlTdG10 KFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFsQ3JlYXRlSG9sZFN0b3JlKFBvcnRh bCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFsSGFzaFRhYmxlRGVsZXRlQWxsKHZvaWQpOwot LSAKMi4zNS4zCgo= --000000000000a120e605ead1738c Content-Type: application/octet-stream; name="v21-0002-Allow-adding-Bitmapsets-as-Nodes-into-plan-trees.patch" Content-Disposition: attachment; filename="v21-0002-Allow-adding-Bitmapsets-as-Nodes-into-plan-trees.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l95bgn5k1 RnJvbSA0MTQ2NWY5NGU0MjZhMGIyMmIwNzBhYjgwMzRkZTE5Y2ZkYjZkYWE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogVGh1LCA2IE9jdCAyMDIyIDE3OjMxOjM3ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MjEgMi8z XSBBbGxvdyBhZGRpbmcgQml0bWFwc2V0cyBhcyBOb2RlcyBpbnRvIHBsYW4gdHJlZXMKCk5vdGUg dGhhdCB0aGlzIG9ubHkgYWRkcyBzb21lIGluZnJhc3RydWN0dXJlIGJpdHMgYW5kIG5vbmUgb2Yg dGhlCmV4aXN0aW5nIGJpdG1hcHNldHMgdGhhdCBhcmUgYWRkZWQgdG8gcGxhbiB0cmVlcyBoYXZl IGJlZW4gY2hhbmdlZAp0byBpbnN0ZWFkIGFkZCB0aGUgTm9kZSB2ZXJzaW9uLiAgU28sIHRoZSBw bGFuIHRyZWVzLCBvciByZWFsbHkgdGhlCmJpdG1hcHNldHMgY29udGFpbmVkIGluIHRoZW0sIGxv b2sgdGhlIHNhbWUgYXMgYmVmb3JlIGFzIGZhciBhcwpOb2RlIHdyaXRlL3JlYWQgZnVuY3Rpb25h bGl0eSBpcyBjb25jZXJuZWQuCgpUaGlzIGlzIG5lZWRlZCwgYmVjYXVzZSBpdCBpcyBub3QgY3Vy cmVudGx5IHBvc3NpYmxlIHRvIHdyaXRlIGFuZAp0aGVuIHJlYWQgYmFjayBCaXRtYXBzZXRzIHRo YXQgYXJlIG5vdCBkaXJlY3QgbWVtYmVycyBvZiB3cml0ZS9yZWFkCmNhcGFibGUgTm9kZXM7IGZv ciBleGFtcGxlLCBpZiBvbmUgbmVlZHMgdG8gYWRkIGEgTGlzdCBvZiBCaXRtYXBzZXRzCnRvIGEg cGxhbiB0cmVlLiAgVGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBkbyB0aGF0IGlzIHRv IG1ha2UKQml0bWFwc2V0cyBiZSB3cml0dGVuIHdpdGggb3V0Tm9kZSgpIGFuZCByZWFkIHdpdGgg bm9kZVJlYWQoKS4KLS0tCiBzcmMvYmFja2VuZC9ub2Rlcy9NYWtlZmlsZSAgICAgICAgICAgICB8 ICAzICsrLQogc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgICAgICAgICAgfCAxMSArKysr KysrKysrKwogc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jICAgICAgICAgfCAgNiArKysr KysKIHNyYy9iYWNrZW5kL25vZGVzL2dlbl9ub2RlX3N1cHBvcnQucGwgIHwgIDEgKwogc3JjL2Jh Y2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAgfCAxMSArKysrKysrKysrKwogc3JjL2Jh Y2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgICAgICAgICAgfCAgNCArKysrCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvcHJlcC9wcmVwdGxpc3QuYyB8ICAxIC0KIHNyYy9pbmNsdWRlL25vZGVzL2JpdG1h cHNldC5oICAgICAgICAgIHwgIDUgKysrKysKIHNyYy9pbmNsdWRlL25vZGVzL21lc29uLmJ1aWxk ICAgICAgICAgIHwgIDEgKwogOSBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL01ha2VmaWxlIGIvc3Jj L2JhY2tlbmQvbm9kZXMvTWFrZWZpbGUKaW5kZXggNzQ1MGUxOTFlZS4uZGE1MzA3NzcxYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvbm9k ZXMvTWFrZWZpbGUKQEAgLTU3LDcgKzU3LDggQEAgbm9kZV9oZWFkZXJzID0gXAogCW5vZGVzL3Jl cGxub2Rlcy5oIFwKIAlub2Rlcy9zdXBwb3J0bm9kZXMuaCBcCiAJbm9kZXMvdmFsdWUuaCBcCi0J dXRpbHMvcmVsLmgKKwl1dGlscy9yZWwuaCBcCisJbm9kZXMvYml0bWFwc2V0LmgKIAogIyBzZWUg YWxzbyBjYXRhbG9nL01ha2VmaWxlIGZvciBhbiBleHBsYW5hdGlvbiBvZiB0aGVzZSBtYWtlIHJ1 bGVzCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggZTc2ZmRhOGViYS4uMTQ4MjAxOTMyNyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvY29weWZ1bmNzLmMKQEAgLTE2MCw2ICsxNjAsMTcgQEAgX2NvcHlFeHRlbnNpYmxlTm9k ZShjb25zdCBFeHRlbnNpYmxlTm9kZSAqZnJvbSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0KIAorLyog Q3VzdG9tIGNvcHkgcm91dGluZSBmb3IgTm9kZSBiaXRtYXBzZXRzICovCitzdGF0aWMgQml0bWFw c2V0ICoKK19jb3B5Qml0bWFwc2V0KGNvbnN0IEJpdG1hcHNldCAqZnJvbSkKK3sKKwlCaXRtYXBz ZXQgKm5ld25vZGUgPSBibXNfY29weShmcm9tKTsKKworCW5ld25vZGUtPnR5cGUgPSBUX0JpdG1h cHNldDsKKworCXJldHVybiBuZXdub2RlOworfQorCiAKIC8qCiAgKiBjb3B5T2JqZWN0SW1wbCAt LSBpbXBsZW1lbnRhdGlvbiBvZiBjb3B5T2JqZWN0KCk7IHNlZSBub2Rlcy9ub2Rlcy5oCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rl cy9lcXVhbGZ1bmNzLmMKaW5kZXggMDM3M2FhMzBmZS4uZTg3MDZjNDYxYSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2Vx dWFsZnVuY3MuYwpAQCAtMjEwLDYgKzIxMCwxMiBAQCBfZXF1YWxMaXN0KGNvbnN0IExpc3QgKmEs IGNvbnN0IExpc3QgKmIpCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qIEN1c3RvbSBlcXVhbCByb3V0 aW5lIGZvciBOb2RlIGJpdG1hcHNldHMgKi8KK3N0YXRpYyBib29sCitfZXF1YWxCaXRtYXBzZXQo Y29uc3QgQml0bWFwc2V0ICphLCBjb25zdCBCaXRtYXBzZXQgKmIpCit7CisJcmV0dXJuIGJtc19l cXVhbChhLCBiKTsKK30KIAogLyoKICAqIGVxdWFsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9nZW5fbm9kZV9zdXBwb3J0LnBsIGIvc3JjL2JhY2tlbmQvbm9kZXMvZ2VuX25vZGVfc3Vw cG9ydC5wbAppbmRleCA4MWI4YzE4NGE5Li5jY2I1YWZmODc0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9nZW5fbm9kZV9zdXBwb3J0LnBsCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2dl bl9ub2RlX3N1cHBvcnQucGwKQEAgLTcxLDYgKzcxLDcgQEAgbXkgQGFsbF9pbnB1dF9maWxlcyA9 IHF3KAogICBub2Rlcy9zdXBwb3J0bm9kZXMuaAogICBub2Rlcy92YWx1ZS5oCiAgIHV0aWxzL3Jl bC5oCisgIG5vZGVzL2JpdG1hcHNldC5oCiApOwogCiAjIE5vZGVzIGZyb20gdGhlc2UgaW5wdXQg ZmlsZXMgYXJlIGF1dG9tYXRpY2FsbHkgdHJlYXRlZCBhcyBub2RldGFnX29ubHkuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0 ZnVuY3MuYwppbmRleCA2NGM2NWYwNjBiLi5iM2ZmZDhjZWMyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMK QEAgLTMyOCw2ICszMjgsMTcgQEAgb3V0Qml0bWFwc2V0KFN0cmluZ0luZm8gc3RyLCBjb25zdCBC aXRtYXBzZXQgKmJtcykKIAlhcHBlbmRTdHJpbmdJbmZvQ2hhcihzdHIsICcpJyk7CiB9CiAKKy8q IEN1c3RvbSB3cml0ZSByb3V0aW5lIGZvciBOb2RlIGJpdG1hcHNldHMgKi8KK3N0YXRpYyB2b2lk Citfb3V0Qml0bWFwc2V0KFN0cmluZ0luZm8gc3RyLCBjb25zdCBCaXRtYXBzZXQgKmJtcykKK3sK KwlBc3NlcnQoSXNBKGJtcywgQml0bWFwc2V0KSk7CisJV1JJVEVfTk9ERV9UWVBFKCJCSVRNQVBT RVQiKTsKKworCW91dEJpdG1hcHNldChzdHIsIGJtcyk7Cit9CisKKwogLyoKICAqIFByaW50IHRo ZSB2YWx1ZSBvZiBhIERhdHVtIGdpdmVuIGl0cyB0eXBlLgogICovCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5j CmluZGV4IGI0ZmY4NTVmN2MuLjRkNjkwMmQzYWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25v ZGVzL3JlYWRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCkBAIC0y MzAsNiArMjMwLDEwIEBAIF9yZWFkQml0bWFwc2V0KHZvaWQpCiAJCXJlc3VsdCA9IGJtc19hZGRf bWVtYmVyKHJlc3VsdCwgdmFsKTsKIAl9CiAKKwkvKiBYWFggbWF5YmUgZG8gYHJlc3VsdCA9IG1h a2VOb2RlKEJpdG1hcHNldCk7YCBhdCB0aGUgdG9wPyAqLworCWlmIChyZXN1bHQpCisJCXJlc3Vs dC0+dHlwZSA9IFRfQml0bWFwc2V0OworCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHRsaXN0LmMgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcHJlcC9wcmVwdGxpc3QuYwppbmRleCAxMzdiMjgzMjNkLi5lNWMxMTAzMzE2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdGxpc3QuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdGxpc3QuYwpAQCAtMzM3LDcgKzMzNyw2IEBA IGV4dHJhY3RfdXBkYXRlX3RhcmdldGxpc3RfY29sbm9zKExpc3QgKnRsaXN0KQogCXJldHVybiB1 cGRhdGVfY29sbm9zOwogfQogCi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCQlUQVJH RVRMSVNUIEVYUEFOU0lPTgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvYml0bWFwc2V0 LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9iaXRtYXBzZXQuaAppbmRleCA3NWI1Y2UxYThlLi45MDQ2 Y2ExNzdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9iaXRtYXBzZXQuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9iaXRtYXBzZXQuaApAQCAtMjAsNiArMjAsOCBAQAogI2lmbmRlZiBC SVRNQVBTRVRfSAogI2RlZmluZSBCSVRNQVBTRVRfSAogCisjaW5jbHVkZSAibm9kZXMvbm9kZXMu aCIKKwogLyoKICAqIEZvcndhcmQgZGVjbCB0byBzYXZlIGluY2x1ZGluZyBwZ19saXN0LmgKICAq LwpAQCAtNDgsNiArNTAsOSBAQCB0eXBlZGVmIGludDMyIHNpZ25lZGJpdG1hcHdvcmQ7IC8qIG11 c3QgYmUgdGhlIG1hdGNoaW5nIHNpZ25lZCB0eXBlICovCiAKIHR5cGVkZWYgc3RydWN0IEJpdG1h cHNldAogeworCXBnX25vZGVfYXR0cihjdXN0b21fY29weV9lcXVhbCwgY3VzdG9tX3JlYWRfd3Jp dGUpCisKKwlOb2RlVGFnCQl0eXBlOwogCWludAkJCW53b3JkczsJCQkvKiBudW1iZXIgb2Ygd29y ZHMgaW4gYXJyYXkgKi8KIAliaXRtYXB3b3JkCXdvcmRzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07 CS8qIHJlYWxseSBbbndvcmRzXSAqLwogfSBCaXRtYXBzZXQ7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9tZXNvbi5idWlsZCBiL3NyYy9pbmNsdWRlL25vZGVzL21lc29uLmJ1aWxkCmlu ZGV4IGI3ZGYyMzIwODEuLjk0NzAxYWY4ZTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L21lc29uLmJ1aWxkCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL21lc29uLmJ1aWxkCkBAIC0xOSw2 ICsxOSw3IEBAIG5vZGVfc3VwcG9ydF9pbnB1dF9pID0gWwogICAnbm9kZXMvc3VwcG9ydG5vZGVz LmgnLAogICAnbm9kZXMvdmFsdWUuaCcsCiAgICd1dGlscy9yZWwuaCcsCisgICdub2Rlcy9iaXRt YXBzZXQuaCcsCiBdCiAKIG5vZGVfc3VwcG9ydF9pbnB1dCA9IFtdCi0tIAoyLjM1LjMKCg== --000000000000a120e605ead1738c--