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 1oBWQt-0002nZ-Kj for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Jul 2022 07:05:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oBWPu-0006mU-9C for pgsql-hackers@arkaria.postgresql.org; Wed, 13 Jul 2022 07:04:14 +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 1oBWPt-0006mK-NI for pgsql-hackers@lists.postgresql.org; Wed, 13 Jul 2022 07:04:13 +0000 Received: from mail-vk1-xa34.google.com ([2607:f8b0:4864:20::a34]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1oBWPq-0001fz-MZ for pgsql-hackers@postgresql.org; Wed, 13 Jul 2022 07:04:13 +0000 Received: by mail-vk1-xa34.google.com with SMTP id y129so4788379vkg.5 for ; Wed, 13 Jul 2022 00:04:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=mKcyvaChrOtqdyt45jJ4VSH47UbMfJ5ApIWRqbVkiD4=; b=TF0gqAaBwSuUtvjjX+e16V+ibhuCES7nYK92vv+7z3+jPBtrjhFLppr31j73MhU8XG qnUwLJPcnR3TioSvhhczKQowyZrQCHSyEfbDAcwznn44pLCwNRX6fL1Y/DDT6/+qLR5u aSEMSpvhhr8Ria08KwK86QG6zdUSxV1SUrMGBrM57/PHJJxRSDrpy/KkzvNXlXVwVjGT msyyOBkWLtzXX8giVu2oty9k8wXVud5bvtKwzdydsPOgCFNVkySLSXYwc9+HQBgmNb0P MMRMczMAZTYByRKBIo8KOkVc1LzHLwKFLmrIRvh17U2IHLzo+At+poggv3EEyDmr/Si5 6Mpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=mKcyvaChrOtqdyt45jJ4VSH47UbMfJ5ApIWRqbVkiD4=; b=hY+yLg93UohVABJAyry05V4ACzMz45NJdlMu4GBZJI+RQP+U1JSXMjjnwZz9LmMRnQ HH8/9zt1wNiAKI+KiiLAkwzbMtXI1/RKzCmtlcrD7oU19eHFqC5pjvODvVjRGZtpvH91 9gFCBeCZ9vIo2u5ZVYW5l2EYOJRuDc3+aKAHrPzc2FxEvB6lMElUVEdWdj9SLgcRpXR5 ID7WEaxn3SFca8khsJrvWfPvrWGt148U1VrfSzpekcB5W5COR/oI6PqOc+fGeKPBqZph IPpsIoLFpriVk9vCsvFpXg+bkK9cThLTw2AT8h/FmqTO2p0knZ3Hru+Wlnmdvt8n6IhF xuQQ== X-Gm-Message-State: AJIora/bDz5mXU1Hz3oupX8UrQHgkVHbsvlI0Tco/6y/6aYd3qBfBTcU nUsIEan/ljBdod+yMZgI141bwf/3uZI0zXrDnHc= X-Google-Smtp-Source: AGRyM1vDt3vZ9DSTU6GpJwdkY/WA01uWVYxSbXjE3mDrbsFaucU8+6Rbw66RpcVVT1Nke4i1vDlgPzytxyuVNQzsN5E= X-Received: by 2002:ac5:c391:0:b0:36b:f530:4c1a with SMTP id s17-20020ac5c391000000b0036bf5304c1amr655437vkk.8.1657695848436; Wed, 13 Jul 2022 00:04:08 -0700 (PDT) MIME-Version: 1.0 References: <215356.1647286703@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Wed, 13 Jul 2022 16:03:51 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Jacob Champion Cc: Zhihong Yu , David Rowley , Robert Haas , Tom Lane , PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000031405c05e3aa647f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000031405c05e3aa647f Content-Type: text/plain; charset="UTF-8" On Wed, Jul 13, 2022 at 3:40 PM Amit Langote wrote: > Rebased over 964d01ae90c. Sorry, left some pointless hunks in there while rebasing. Fixed in the attached. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --00000000000031405c05e3aa647f Content-Type: application/octet-stream; name="v19-0001-Move-PartitioPruneInfo-out-of-plan-nodes-into-Pl.patch" Content-Disposition: attachment; filename="v19-0001-Move-PartitioPruneInfo-out-of-plan-nodes-into-Pl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l5j9alrg0 RnJvbSA5ZmE1Y2Q1ZjQyNTZiNzI0OWFiNmY1NjBlZGNhOWQzNjA5YTEyNmVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyNyBNYXkgMjAyMiAxNjowMDoyOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjE5IDEv Ml0gTW92ZSBQYXJ0aXRpb1BydW5lSW5mbyBvdXQgb2YgcGxhbiBub2RlcyBpbnRvCiBQbGFubmVk U3RtdAoKVGhlIHBsYW5uZXIgd2lsbCBub3cgYWRkIGEgZ2l2ZW4gUGFydGl0aW9QcnVuZUluZm8g dG8KUGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3MgaW5zdGVhZCBvZiBkaXJlY3RseSB0byB0aGUK QXBwZW5kL01lcmdlQXBwZW5kIHBsYW4gbm9kZS4gIFdoYXQgZ2V0cyBzZXQgaW5zdGVhZCBpbiB0 aGUKbGF0dGVyIGlzIGFuIGluZGV4IGZpZWxkIHdoaWNoIHBvaW50cyB0byB0aGUgbGlzdCBlbGVt ZW50Cm9mIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zIGNvbnRhaW5pbmcgdGhlIFBhcnRpdGlv UHJ1bmVJbmZvCmJlbG9uZ2luZyB0byB0aGUgcGxhbiBub2RlLgoKQSBsYXRlciBjb21taXQgd2ls bCBtYWtlIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgZG8gdGhlIGluaXRpYWwKcGFydGl0aW9uIHBy dW5pbmcgdG8gZGV0ZXJtaW5lIGEgbWluaW1hbCBzZXQgb2YgcGFydGl0aW9ucyB0byBiZQpsb2Nr ZWQgd2hlbiB2YWxpZGF0aW5nIGEgcGxhbiB0cmVlIGFuZCBpdCB3aWxsIG5lZWQgdG8gY29uc3Vs dCB0aGUKUGFydGl0aW9QcnVuZUluZm9zIHJlZmVyZW5jZWQgdGhlcmVpbiB0byBkbyBzby4gIEl0 IHdvdWxkIGJlIGJldHRlcgpmb3IgdGhlIFBhcnRpdGlvUHJ1bmVJbmZvcyB0byBiZSBhY2Nlc3Np YmxlIGRpcmVjdGx5IHRoYW4gcmVxdWlyaW5nCmEgd2FsayBvZiB0aGUgcGxhbiB0cmVlIHRvIGZp bmQgdGhlbSwgd2hpY2ggaXMgZWFzaWVyIHdoZW4gaXQgY2FuIGJlCmRvbmUgYnkgc2ltcGx5IGl0 ZXJhdGluZyBvdmVyIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zLgotLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJhbGxlbC5jICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYyAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAg ICAgfCAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgfCAgNCAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgIHwgIDQgKy0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8IDI0ICsrKystLS0tLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgIHwgNjUgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQog c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAgIHwgMTggKysrKy0tLQogc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oICAgICAgICAgICB8ICA2ICsrKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVz LmggICAgICAgICAgIHwgMTEgKysrLS0KIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1 bmUuaCAgICB8ICA4ICstLQogMTUgZmlsZXMgY2hhbmdlZCwgOTIgaW5zZXJ0aW9ucygrKSwgNjIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggZWYyZmQ0NjA5Mi4uNzJm YzI3MzUyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC04MjUsNiArODI1LDcgQEAgSW5p dFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJRXhlY0luaXRSYW5nZVRh YmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSk7CiAKIAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxh bm5lZHN0bXQ7CisJZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zID0gcGxhbm5lZHN0bXQtPnBh cnRQcnVuZUluZm9zOwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJy YXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cmFsbGVsLmMKaW5kZXggZjFmZDdmN2U4Yi4uZjczYjhjMjYwNyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMKQEAgLTE4Myw2ICsxODMsNyBAQCBFeGVjU2VyaWFsaXplUGxhbihQbGFu ICpwbGFuLCBFU3RhdGUgKmVzdGF0ZSkKIAlwc3RtdC0+ZGVwZW5kc09uUm9sZSA9IGZhbHNlOwog CXBzdG10LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBmYWxzZTsKIAlwc3RtdC0+cGxhblRyZWUgPSBw bGFuOworCXBzdG10LT5wYXJ0UHJ1bmVJbmZvcyA9IGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZv czsKIAlwc3RtdC0+cnRhYmxlID0gZXN0YXRlLT5lc19yYW5nZV90YWJsZTsKIAlwc3RtdC0+cmVz dWx0UmVsYXRpb25zID0gTklMOwogCXBzdG10LT5hcHBlbmRSZWxhdGlvbnMgPSBOSUw7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggZTAzZWEyNzI5OS4uYjU1Y2RkMjU4MCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTYzOCwxMSArMTYzOCwxMyBA QCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFw ICphdHRyTWFwKQogUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCiBFeGVjSW5pdFBhcnRpdGlvblBydW5p bmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCi0J CQkJCQkgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkgaW50IHBhcnRfcHJ1 bmVfaW5kZXgsCiAJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKQog ewogCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJRVN0YXRlCSAgICplc3RhdGUg PSBwbGFuc3RhdGUtPnN0YXRlOworCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0gbGlz dF9udGgoZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zLAorCQkJCQkJCQkJCQkgcGFydF9wcnVu ZV9pbmRleCk7CiAKIAkvKiBXZSBtYXkgbmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQgdG8gZXZh bHVhdGUgcGFydGl0aW9uIGV4cHJzICovCiAJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwg cGxhbnN0YXRlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggOWRmMWY4MWVhOC4uZjlj Nzk3NmZmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTExOSw2ICsxMTksOCBAQCBD cmVhdGVFeGVjdXRvclN0YXRlKHZvaWQpCiAJZXN0YXRlLT5lc19yZWxhdGlvbnMgPSBOVUxMOwog CWVzdGF0ZS0+ZXNfcm93bWFya3MgPSBOVUxMOwogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBO VUxMOworCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IE5JTDsKKwllc3RhdGUtPmVzX3Bh cnRfcHJ1bmVfcmVzdWx0ID0gTlVMTDsKIAogCWVzdGF0ZS0+ZXNfanVua0ZpbHRlciA9IE5VTEw7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCAzNTdlMTBhMWQ3Li5jNmY4NmE2NTEw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xMzQsNyArMTM0LDcgQEAgRXhlY0lu aXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhcHBl bmRzdGF0ZS0+YXNfYmVndW4gPSBmYWxzZTsKIAogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBw cnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0JaWYgKG5vZGUtPnBh cnRfcHJ1bmVfaW5mbyAhPSBOVUxMKQorCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDAp CiAJewogCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCkBAIC0xNDUsNyArMTQ1 LDcgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkJICovCiAJCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJmFw cGVuZHN0YXRlLT5wcywKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFu cyksCi0JCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAorCQkJCQkJCQkJCQkgIG5v ZGUtPnBhcnRfcHJ1bmVfaW5kZXgsCiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOwogCQlh cHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNf bnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFw cGVuZC5jCmluZGV4IGM1YzYyZmE1YzcuLjhkMzU4NjBjMzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNZXJnZUFwcGVuZC5jCkBAIC04Miw3ICs4Miw3IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQo TWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCW1lcmdlc3Rh dGUtPnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNNZXJnZUFwcGVuZDsKIAogCS8qIElmIHJ1bi10aW1l IHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0J aWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5mbyAhPSBOVUxMKQorCWlmIChub2RlLT5wYXJ0X3BydW5l X2luZGV4ID49IDApCiAJewogCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCkBA IC05Myw3ICs5Myw3IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKi8KIAkJcHJ1bmVzdGF0ZSA9IEV4ZWNJbml0 UGFydGl0aW9uUHJ1bmluZygmbWVyZ2VzdGF0ZS0+cHMsCiAJCQkJCQkJCQkJCSAgbGlzdF9sZW5n dGgobm9kZS0+bWVyZ2VwbGFucyksCi0JCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZv LAorCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXgsCiAJCQkJCQkJCQkJCSAgJnZh bGlkc3VicGxhbnMpOwogCQltZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7 CiAJCW5wbGFucyA9IGJtc19udW1fbWVtYmVycyh2YWxpZHN1YnBsYW5zKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCBlMzdmMjkzM2ViLi5mZDhhYjRhMTY3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0xMjAzLDcgKzEyMDMs NiBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJl c3RfcGF0aCwgaW50IGZsYWdzKQogCUxpc3RDZWxsICAgKnN1YnBhdGhzOwogCWludAkJCW5hc3lu Y3BsYW5zID0gMDsKIAlSZWxPcHRJbmZvICpyZWwgPSBiZXN0X3BhdGgtPnBhdGgucGFyZW50Owot CVBhcnRpdGlvblBydW5lSW5mbyAqcGFydHBydW5laW5mbyA9IE5VTEw7CiAJaW50CQkJbm9kZW51 bXNvcnRrZXlzID0gMDsKIAlBdHRyTnVtYmVyICpub2RlU29ydENvbElkeCA9IE5VTEw7CiAJT2lk CQkgICAqbm9kZVNvcnRPcGVyYXRvcnMgPSBOVUxMOwpAQCAtMTM1NCw2ICsxMzUzLDkgQEAgY3Jl YXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgs IGludCBmbGFncykKIAkJc3VicGxhbnMgPSBsYXBwZW5kKHN1YnBsYW5zLCBzdWJwbGFuKTsKIAl9 CiAKKwkvKiBTZXQgYmVsb3cgaWYgd2UgZmluZCBxdWFscyB0aGF0IHdlIGNhbiB1c2UgdG8gcnVu LXRpbWUgcHJ1bmUgKi8KKwlwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID0gLTE7CisKIAkvKgogCSAq IElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUgdXNlZnVsIHRvIHBlcmZvcm0gZnVydGhl ciBwYXJ0aXRpb24KIAkgKiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBHYXRoZXIgaW5mb3Jt YXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0bwpAQCAtMTM3NywxNiArMTM3OSwxNCBAQCBj cmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0 aCwgaW50IGZsYWdzKQogCQl9CiAKIAkJaWYgKHBydW5lcXVhbCAhPSBOSUwpCi0JCQlwYXJ0cHJ1 bmVpbmZvID0KLQkJCQltYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwgcmVsLAotCQkJCQkJ CQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJCQkJCQkJCSBwcnVuZXF1YWwpOworCQkJcGxh bi0+cGFydF9wcnVuZV9pbmRleCA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWws CisJCQkJCQkJCQkJCQkJCQkgIGJlc3RfcGF0aC0+c3VicGF0aHMsCisJCQkJCQkJCQkJCQkJCQkg IHBydW5lcXVhbCk7CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKIAlwbGFu LT5uYXN5bmNwbGFucyA9IG5hc3luY3BsYW5zOwogCXBsYW4tPmZpcnN0X3BhcnRpYWxfcGxhbiA9 IGJlc3RfcGF0aC0+Zmlyc3RfcGFydGlhbF9wYXRoOwotCXBsYW4tPnBhcnRfcHJ1bmVfaW5mbyA9 IHBhcnRwcnVuZWluZm87CiAKIAljb3B5X2dlbmVyaWNfcGF0aF9pbmZvKCZwbGFuLT5wbGFuLCAo UGF0aCAqKSBiZXN0X3BhdGgpOwogCkBAIC0xNDI1LDcgKzE0MjUsNiBAQCBjcmVhdGVfbWVyZ2Vf YXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRo LAogCUxpc3QJICAgKnN1YnBsYW5zID0gTklMOwogCUxpc3RDZWxsICAgKnN1YnBhdGhzOwogCVJl bE9wdEluZm8gKnJlbCA9IGJlc3RfcGF0aC0+cGF0aC5wYXJlbnQ7Ci0JUGFydGl0aW9uUHJ1bmVJ bmZvICpwYXJ0cHJ1bmVpbmZvID0gTlVMTDsKIAogCS8qCiAJICogV2UgZG9uJ3QgaGF2ZSB0aGUg YWN0dWFsIGNyZWF0aW9uIG9mIHRoZSBNZXJnZUFwcGVuZCBub2RlIHNwbGl0IG91dApAQCAtMTUx OCw2ICsxNTE3LDkgQEAgY3JlYXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290 LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJc3VicGxhbnMgPSBsYXBwZW5kKHN1YnBs YW5zLCBzdWJwbGFuKTsKIAl9CiAKKwkvKiBTZXQgYmVsb3cgaWYgd2UgZmluZCBxdWFscyB0aGF0 IHdlIGNhbiB1c2UgdG8gcnVuLXRpbWUgcHJ1bmUgKi8KKwlub2RlLT5wYXJ0X3BydW5lX2luZGV4 ID0gLTE7CisKIAkvKgogCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUgdXNlZnVs IHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KIAkgKiBwcnVuaW5nIGR1cmluZyBleGVjdXRp b24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0bwpAQCAtMTU0 MSwxMyArMTU0MywxMyBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJv b3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQl9CiAKIAkJaWYgKHBydW5lcXVhbCAh PSBOSUwpCi0JCQlwYXJ0cHJ1bmVpbmZvID0gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3Qs IHJlbCwKLQkJCQkJCQkJCQkJCQkgYmVzdF9wYXRoLT5zdWJwYXRocywKLQkJCQkJCQkJCQkJCQkg cHJ1bmVxdWFsKTsKKwkJCW5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPSBtYWtlX3BhcnRpdGlvbl9w cnVuZWluZm8ocm9vdCwgcmVsLAorCQkJCQkJCQkJCQkJCQkJICBiZXN0X3BhdGgtPnN1YnBhdGhz LAorCQkJCQkJCQkJCQkJCQkJICBwcnVuZXF1YWwpOwogCX0KIAogCW5vZGUtPm1lcmdlcGxhbnMg PSBzdWJwbGFuczsKLQlub2RlLT5wYXJ0X3BydW5lX2luZm8gPSBwYXJ0cHJ1bmVpbmZvOworCiAK IAkvKgogCSAqIElmIHByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlzIGFkZGVkIHNvcnQgY29sdW1u cywgYnV0IHdlIHdlcmUgdG9sZCB0bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmlu ZGV4IDA2YWQ4NTZlYWMuLmIxMTI0OWVkOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMKQEAgLTUxOCw2ICs1MTgsNyBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwg Y29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAlyZXN1bHQtPmRl cGVuZHNPblJvbGUgPSBnbG9iLT5kZXBlbmRzT25Sb2xlOwogCXJlc3VsdC0+cGFyYWxsZWxNb2Rl TmVlZGVkID0gZ2xvYi0+cGFyYWxsZWxNb2RlTmVlZGVkOwogCXJlc3VsdC0+cGxhblRyZWUgPSB0 b3BfcGxhbjsKKwlyZXN1bHQtPnBhcnRQcnVuZUluZm9zID0gZ2xvYi0+cGFydFBydW5lSW5mb3M7 CiAJcmVzdWx0LT5ydGFibGUgPSBnbG9iLT5maW5hbHJ0YWJsZTsKIAlyZXN1bHQtPnJlc3VsdFJl bGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPmFwcGVuZFJlbGF0aW9u cyA9IGdsb2ItPmFwcGVuZFJlbGF0aW9uczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMu YwppbmRleCA5Y2VmOTJjYWIyLi5iOGQ1NjEwNTkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v c2V0cmVmcy5jCkBAIC0zNDgsNiArMzQ4LDI5IEBAIHNldF9wbGFuX3JlZmVyZW5jZXMoUGxhbm5l ckluZm8gKnJvb3QsIFBsYW4gKnBsYW4pCiAJCX0KIAl9CiAKKwkvKiBBbHNvIGZpeCB1cCB0aGUg aW5mb3JtYXRpb24gaW4gUGFydGl0aW9uUHJ1bmVJbmZvcy4gKi8KKwlmb3JlYWNoIChsYywgcm9v dC0+cGFydFBydW5lSW5mb3MpCisJeworCQlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9 IGxmaXJzdChsYyk7CisJCUxpc3RDZWxsICAqbDsKKworCQlmb3JlYWNoKGwsIHBydW5laW5mby0+ cHJ1bmVfaW5mb3MpCisJCXsKKwkJCUxpc3QJICAgKnBydW5lX2luZm9zID0gbGZpcnN0KGwpOwor CQkJTGlzdENlbGwgICAqbDI7CisKKwkJCWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQorCQkJewor CQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxmaXJzdChsMik7CisKKwkJCQkv KiBSVCBpbmRleCBvZiB0aGUgdGFibGUgdG8gd2hpY2ggdGhlIHBpbmZvIGJlbG9uZ3MuICovCisJ CQkJcGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7CisJCQl9CisJCX0KKworCQlnbG9iLT5wYXJ0 UHJ1bmVJbmZvcyA9IGxhcHBlbmQoZ2xvYi0+cGFydFBydW5lSW5mb3MsIHBydW5laW5mbyk7CisJ fQorCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTY1NSwyMSArMTY3OCwxMiBAQCBzZXRfYXBw ZW5kX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAlhcGxhbi0+YXBwcmVsaWRzID0g b2Zmc2V0X3JlbGlkX3NldChhcGxhbi0+YXBwcmVsaWRzLCBydG9mZnNldCk7CiAKLQlpZiAoYXBs YW4tPnBhcnRfcHJ1bmVfaW5mbykKLQl7Ci0JCWZvcmVhY2gobCwgYXBsYW4tPnBhcnRfcHJ1bmVf aW5mby0+cHJ1bmVfaW5mb3MpCi0JCXsKLQkJCUxpc3QJICAgKnBydW5lX2luZm9zID0gbGZpcnN0 KGwpOwotCQkJTGlzdENlbGwgICAqbDI7Ci0KLQkJCWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQot CQkJewotCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxmaXJzdChsMik7Ci0K LQkJCQlwaW5mby0+cnRpbmRleCArPSBydG9mZnNldDsKLQkJCX0KLQkJfQotCX0KKwkvKgorCSAq IFBhcnRpdGlvblBydW5lSW5mb3Mgd2lsbCBiZSBhZGRlZCB0byBhIGxpc3QgaW4gUGxhbm5lckds b2JhbCwgc28gdXBkYXRlCisJICogdGhlIGluZGV4LgorCSAqLworCWlmIChhcGxhbi0+cGFydF9w cnVuZV9pbmRleCA+PSAwKQorCQlhcGxhbi0+cGFydF9wcnVuZV9pbmRleCArPSBsaXN0X2xlbmd0 aChyb290LT5nbG9iLT5wYXJ0UHJ1bmVJbmZvcyk7CiAKIAkvKiBXZSBkb24ndCBuZWVkIHRvIHJl Y3Vyc2UgdG8gbGVmdHRyZWUgb3IgcmlnaHR0cmVlIC4uLiAqLwogCUFzc2VydChhcGxhbi0+cGxh bi5sZWZ0dHJlZSA9PSBOVUxMKTsKQEAgLTE3MjcsMjEgKzE3NDEsMTIgQEAgc2V0X21lcmdlYXBw ZW5kX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAKIAltcGxhbi0+YXBwcmVsaWRzID0g b2Zmc2V0X3JlbGlkX3NldChtcGxhbi0+YXBwcmVsaWRzLCBydG9mZnNldCk7CiAKLQlpZiAobXBs YW4tPnBhcnRfcHJ1bmVfaW5mbykKLQl7Ci0JCWZvcmVhY2gobCwgbXBsYW4tPnBhcnRfcHJ1bmVf aW5mby0+cHJ1bmVfaW5mb3MpCi0JCXsKLQkJCUxpc3QJICAgKnBydW5lX2luZm9zID0gbGZpcnN0 KGwpOwotCQkJTGlzdENlbGwgICAqbDI7Ci0KLQkJCWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQot CQkJewotCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxmaXJzdChsMik7Ci0K LQkJCQlwaW5mby0+cnRpbmRleCArPSBydG9mZnNldDsKLQkJCX0KLQkJfQotCX0KKwkvKgorCSAq IFBhcnRpdGlvblBydW5lSW5mb3Mgd2lsbCBiZSBhZGRlZCB0byBhIGxpc3QgaW4gUGxhbm5lckds b2JhbCwgc28gdXBkYXRlCisJICogdGhlIGluZGV4LgorCSAqLworCWlmIChtcGxhbi0+cGFydF9w cnVuZV9pbmRleCA+PSAwKQorCQltcGxhbi0+cGFydF9wcnVuZV9pbmRleCArPSBsaXN0X2xlbmd0 aChyb290LT5nbG9iLT5wYXJ0UHJ1bmVJbmZvcyk7CiAKIAkvKiBXZSBkb24ndCBuZWVkIHRvIHJl Y3Vyc2UgdG8gbGVmdHRyZWUgb3IgcmlnaHR0cmVlIC4uLiAqLwogCUFzc2VydChtcGxhbi0+cGxh bi5sZWZ0dHJlZSA9PSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRl eCA5ZDNjMDVhZWQzLi5kNzdmN2QzYWVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRp b25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVu ZS5jCkBAIC0yMDksMTYgKzIwOSwyMCBAQCBzdGF0aWMgdm9pZCBwYXJ0a2V5X2RhdHVtX2Zyb21f ZXhwcihQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAKIC8qCiAgKiBtYWtlX3BhcnRp dGlvbl9wcnVuZWluZm8KLSAqCQlCdWlsZHMgYSBQYXJ0aXRpb25QcnVuZUluZm8gd2hpY2ggY2Fu IGJlIHVzZWQgaW4gdGhlIGV4ZWN1dG9yIHRvIGFsbG93Ci0gKgkJYWRkaXRpb25hbCBwYXJ0aXRp b24gcHJ1bmluZyB0byB0YWtlIHBsYWNlLiAgUmV0dXJucyBOVUxMIHdoZW4KLSAqCQlwYXJ0aXRp b24gcHJ1bmluZyB3b3VsZCBiZSB1c2VsZXNzLgorICoJCUNoZWNrcyBpZiB0aGUgZ2l2ZW4gc2V0 IG9mIHF1YWxzIGNhbiBiZSB1c2VkIHRvIGJ1aWxkIHBydW5pbmcgc3RlcHMKKyAqCQl0aGF0IHRo ZSBleGVjdXRvciBjYW4gdXNlIHRvIHBydW5lIGF3YXkgdW5uZWVkZWQgcGFydGl0aW9ucy4gIElm CisgKgkJc3VpdGFibGUgcXVhbHMgYXJlIGZvdW5kIHRoZW4gYSBQYXJ0aXRpb25QcnVuZUluZm8g aXMgYnVpbHQgYW5kIHRhZ2dlZAorICoJCW9udG8gdGhlIFBsYW5uZXJJbmZvJ3MgcGFydFBydW5l SW5mb3MgbGlzdC4KKyAqCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSAwLWJhc2VkIGluZGV4 IG9mIHRoZSBpdGVtIGFkZGVkIHRvIHRoZQorICogcGFydFBydW5lSW5mb3MgbGlzdCBvciAtMSBp ZiBub3RoaW5nIHdhcyBhZGRlZC4KICAqCiAgKiAncGFyZW50cmVsJyBpcyB0aGUgUmVsT3B0SW5m byBmb3IgYW4gYXBwZW5kcmVsLCBhbmQgJ3N1YnBhdGhzJyBpcyB0aGUgbGlzdAogICogb2Ygc2Nh biBwYXRocyBmb3IgaXRzIGNoaWxkIHJlbHMuCiAgKiAncHJ1bmVxdWFsJyBpcyBhIGxpc3Qgb2Yg cG90ZW50aWFsIHBydW5pbmcgcXVhbHMgKGkuZS4sIHJlc3RyaWN0aW9uCiAgKiBjbGF1c2VzIHRo YXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGFwcGVuZHJlbCkuCiAgKi8KLVBhcnRpdGlvblBydW5l SW5mbyAqCitpbnQKIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJIExpc3QgKnN1YnBhdGhzLAogCQkJCQkJIExp c3QgKnBydW5lcXVhbCkKQEAgLTMzMiw3ICszMzYsNyBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWlu Zm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkgKiBxdWFscywg dGhlbiB3ZSBjYW4ganVzdCBub3QgYm90aGVyIHdpdGggcnVuLXRpbWUgcHJ1bmluZy4KIAkgKi8K IAlpZiAocHJ1bmVyZWxpbmZvcyA9PSBOSUwpCi0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gLTE7 CiAKIAkvKiBFbHNlIGJ1aWxkIHRoZSByZXN1bHQgZGF0YSBzdHJ1Y3R1cmUgKi8KIAlwcnVuZWlu Zm8gPSBtYWtlTm9kZShQYXJ0aXRpb25QcnVuZUluZm8pOwpAQCAtMzU4LDcgKzM2Miw5IEBAIG1h a2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFy ZW50cmVsLAogCWVsc2UKIAkJcHJ1bmVpbmZvLT5vdGhlcl9zdWJwbGFucyA9IE5VTEw7CiAKLQly ZXR1cm4gcHJ1bmVpbmZvOworCXJvb3QtPnBhcnRQcnVuZUluZm9zID0gbGFwcGVuZChyb290LT5w YXJ0UHJ1bmVJbmZvcywgcHJ1bmVpbmZvKTsKKworCXJldHVybiBsaXN0X2xlbmd0aChyb290LT5w YXJ0UHJ1bmVJbmZvcykgLSAxOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5oCmluZGV4IDcwODQzNWU5NTIuLmJmOTYyYWY3YWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj UGFydGl0aW9uLmgKQEAgLTEyMyw5ICsxMjMsOCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25Q cnVuZVN0YXRlCiAKIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlv blBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJCQkJCQkJIGludCBuX3RvdGFs X3N1YnBsYW5zLAotCQkJCQkJCQkJCQkJCSBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywK KwkJCQkJCQkJCQkJCQkgaW50IHBhcnRfcHJ1bmVfaW5kZXgsCiAJCQkJCQkJCQkJCQkJIEJpdG1h cHNldCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyk7CiBleHRlcm4gQml0bWFwc2V0ICpFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJ CQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUpOwotCiAjZW5kaWYJCQkJCQkJLyogRVhFQ1BB UlRJVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDAxYjE3MjdmYzAuLjYzYTg5NDc0 ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MTEsNiArNjExLDggQEAgdHlwZWRlZiBzdHJ1 Y3QgRVN0YXRlCiAJc3RydWN0IEV4ZWNSb3dNYXJrICoqZXNfcm93bWFya3M7CS8qIEFycmF5IG9m IHBlci1yYW5nZS10YWJsZS1lbnRyeQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVM TCBpZiBub25lICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRv cCBvZiBwbGFuIHRyZWUgKi8KKwlMaXN0CQkqZXNfcGFydF9wcnVuZV9pbmZvczsJLyogUGxhbm5l ZFN0bXQucGFydFBydW5lSW5mb3MgKi8KKwlzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKmVz X3BhcnRfcHJ1bmVfcmVzdWx0OyAvKiBRdWVyeURlc2MucGFydF9wcnVuZV9yZXN1bHQgKi8KIAlj b25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAq LwogCiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVy LCBpZiBhbnkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggNDRmZmM3M2YxNS4uZDg3OTU3ZmY2 YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTEyMiw2ICsxMjIsOSBAQCB0eXBlZGVmIHN0cnVj dCBQbGFubmVyR2xvYmFsCiAJLyogImZsYXQiIGxpc3Qgb2YgQXBwZW5kUmVsSW5mb3MgKi8KIAlM aXN0CSAgICphcHBlbmRSZWxhdGlvbnM7CiAKKwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5m byBjb250YWluZWQgaW4gdGhlIHBsYW4gKi8KKwlMaXN0CSAgICpwYXJ0UHJ1bmVJbmZvczsKKwog CS8qIE9JRHMgb2YgcmVsYXRpb25zIHRoZSBwbGFuIGRlcGVuZHMgb24gKi8KIAlMaXN0CSAgICpy ZWxhdGlvbk9pZHM7CiAKQEAgLTQ4MCw2ICs0ODMsOSBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAog CS8qIERvZXMgdGhpcyBxdWVyeSBtb2RpZnkgYW55IHBhcnRpdGlvbiBrZXkgY29sdW1ucz8gKi8K IAlib29sCQlwYXJ0Q29sc1VwZGF0ZWQ7CisKKwkvKiBQYXJ0aXRpb25QcnVuZUluZm9zIGFkZGVk IGluIHRoaXMgcXVlcnkncyBwbGFuLiAqLworCUxpc3QJICAgKnBhcnRQcnVuZUluZm9zOwogfTsK IAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IGRjYTJhMjFlN2EuLmYyZGFhYmIzYjcgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oCkBAIC02OSw2ICs2OSw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZWRT dG10CiAKIAlzdHJ1Y3QgUGxhbiAqcGxhblRyZWU7CQkvKiB0cmVlIG9mIFBsYW4gbm9kZXMgKi8K IAorCUxpc3QJICAgKnBhcnRQcnVuZUluZm9zOwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5m byBjb250YWluZWQgaW4KKwkJCQkJCQkJICogdGhlIHBsYW4gKi8KKwogCUxpc3QJICAgKnJ0YWJs ZTsJCQkvKiBsaXN0IG9mIFJhbmdlVGJsRW50cnkgbm9kZXMgKi8KIAogCS8qIHJ0YWJsZSBpbmRl eGVzIG9mIHRhcmdldCByZWxhdGlvbnMgZm9yIElOU0VSVC9VUERBVEUvREVMRVRFICovCkBAIC0y NjksOCArMjcyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kCiAJICovCiAJaW50CQkJZmlyc3Rf cGFydGlhbF9wbGFuOwogCi0JLyogSW5mbyBmb3IgcnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBO VUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICovCi0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5m byAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUlu Zm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5pbmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2lu ZGV4OwogfSBBcHBlbmQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTMwNCw4ICszMDcsOCBA QCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZAogCS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0 aW9ucyAqLwogCWJvb2wJICAgKm51bGxzRmlyc3QgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVt Q29scykpOwogCi0JLyogSW5mbyBmb3IgcnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlm IHdlJ3JlIG5vdCBkb2luZyB0aGF0ICovCi0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFy dF9wcnVuZV9pbmZvOworCS8qIEluZGV4IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9y IC0xIGlmIG5vIHJ1bi10aW1lIHBydW5pbmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4Owog fSBNZXJnZUFwcGVuZDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5n L3BhcnRwcnVuZS5oCmluZGV4IDkwNjg0ZWZhMjUuLmViZjBkY2ZmOGMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmgKQEAgLTcwLDEwICs3MCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBQ YXJ0aXRpb25QcnVuZUNvbnRleHQKICNkZWZpbmUgUHJ1bmVDeHRTdGF0ZUlkeChwYXJ0bmF0dHMs IHN0ZXBfaWQsIGtleW5vKSBcCiAJKChwYXJ0bmF0dHMpICogKHN0ZXBfaWQpICsgKGtleW5vKSkK IAotZXh0ZXJuIFBhcnRpdGlvblBydW5lSW5mbyAqbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHN0 cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKLQkJCQkJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAq cGFyZW50cmVsLAotCQkJCQkJCQkJCQkJCUxpc3QgKnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCUxp c3QgKnBydW5lcXVhbCk7CitleHRlcm4gaW50IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1 Y3QgUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50 cmVsLAorCQkJCQkJCQkJTGlzdCAqc3VicGF0aHMsCisJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwp OwogZXh0ZXJuIEJpdG1hcHNldCAqcHJ1bmVfYXBwZW5kX3JlbF9wYXJ0aXRpb25zKHN0cnVjdCBS ZWxPcHRJbmZvICpyZWwpOwogZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X21hdGNoaW5nX3BhcnRpdGlv bnMoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgTGlzdCAqcHJ1 bmluZ19zdGVwcyk7Ci0tIAoyLjM1LjMKCg== --00000000000031405c05e3aa647f Content-Type: application/octet-stream; name="v19-0002-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Disposition: attachment; filename="v19-0002-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l5j9alrm1 RnJvbSBiNjc5MTFmMmFlMTgyZjcxNTg1MDFlN2NlNGIxNzk5ZmYyZTFlZmI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBEZWMgMjAyMSAxNjo1NToxNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjE5IDIv Ml0gT3B0aW1pemUgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBieSBsb2NraW5nIG9ubHkKIHVucHJ1 bmVkIHBhcnRpdGlvbnMKClRoaXMgY29tbWl0IHRlYWNoZXMgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSB0byBwZXJmb3JtIGluaXRpYWwKcGFydGl0aW9uIHBydW5pbmcgdG8gbm90aW9uYWxseSBlbGlt aW5hdGUgdGhlIHN1Ym5vZGVzIGNvbnRhaW5lZCBpbiBhCmdlbmVyaWMgY2FjaGVkIHBsYW4gdGhh dCBuZWVkIG5vdCBiZSBpbml0aWFsaXplZCBkdXJpbmcgdGhlIGFjdHVhbApleGVjdXRpb24gb2Yg dGhlIHBsYW4gYW5kIHNraXAgbG9ja2luZyB0aGUgcGFydGl0aW9uIHNjYW5uZWQgYnkgdGhvc2UK c3Vibm9kZXMuCgpUaGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1 bmluZyB0aGlzIHdheSBiZWZvcmUgdGhlCmFjdHVhbCBleGVjdXRpb24gaGFzIHN0YXJ0ZWQgaXMg bWFkZSBhdmFpbGFibGUgdG8gdGhlIGFjdHVhbCBleGVjdXRpb24gdmlhClBhcnRpdGlvblBydW5l UmVzdWx0LCBtYWRlIGF2YWlsYWJsZSBhbG9uZyB3aXRoIHRoZSBQbGFubmVkU3RtdCBieSB0aGUK Y2FsbGVycyBvZiB0aGUgZXhlY3V0b3IgdGhhdCB1c2VkIHBsYW5jYWNoZS5jIHRvIGdldCB0aGUg cGxhbi4gIEl0IGlzIE5VTEwKaW4gdGhlIGNhc2VzIGluIHdoaWNoIHRoZSBwbGFuIGlzIG9idGFp bmVkIGJ5IGNhbGxpbmcgdGhlIHBsYW5uZXIKZGlyZWN0bHkgb3IgaWYgdGhlIHBsYW4gb2J0YWlu ZWQgYnkgcGxhbmNhY2hlLmMgaXMgbm90IGEgZ2VuZXJpYyBvbmUuCi0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NyZWF0ZWFzLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICB8ICAyNiArKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgICAgICAgIHwgIDMyICsrKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgIHwgIDUzICsrKysrKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgfCAgMjcgKystCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMgICB8IDIzNCArKysrKysrKysrKysrKysrKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNZXJnZUFwcGVuZC5jIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAg ICAgICAgICAgICB8ICAyNyArKy0KIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAg ICAgIHwgIDI5ICsrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgfCAg IDIgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgfCAgNDYgKysrKysK IHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyAgIHwgIDQxICsrKystCiBzcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQv dGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgfCAgMjggKystCiBzcmMvYmFja2VuZC91dGlscy9j YWNoZS9wbGFuY2FjaGUuYyAgICB8IDE4NyArKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgICAgfCAgMTkgKysKIHNyYy9pbmNsdWRlL2NvbW1h bmRzL2V4cGxhaW4uaCAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVj UGFydGl0aW9uLmggICB8ICAgOSArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAg ICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgfCAg IDIgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgfCAgMjcgKysrCiBz cmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICB8ICAxMyArKwogc3JjL2luY2x1ZGUvbm9kZXMv cGxhbm5vZGVzLmggICAgICAgICAgfCAgMjEgKysrCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2Fj aGUuaCAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAg ICAgICAgfCAgIDMgKwogMzIgZmlsZXMgY2hhbmdlZCwgNzgyIGluc2VydGlvbnMoKyksIDk2IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggZmNhMjlhOWExMC4uZDgzOTUxNzY5 MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTU0MSw3ICs1NDEsNyBAQCBCZWdpbkNvcHlUbyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCSgoRFJfY29weSAqKSBkZXN0KS0+Y3N0YXRlID0gY3N0YXRl OwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyByZXF1ZXN0aW5nIG5vIG91dHB1dCAqLwotCQlj c3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNl dGV4dCwKKwkJY3N0YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwg cHN0YXRlLT5wX3NvdXJjZXRleHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJ CQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwg MCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwppbmRleCA5YWJiYjZiNTU1Li5mNjYwN2YyNDU0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKQEAgLTMyNSw3ICszMjUsNyBAQCBFeGVjQ3JlYXRlVGFi bGVBcyhQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRh dGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywg cmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVz YyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJ CQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRl c3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggZTI5 YzJhZTIwNi4uZTQxYjEzYTNlYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtNDA3LDcgKzQw Nyw3IEBAIEV4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAog CQl9CiAKIAkJLyogcnVuIGl0IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwotCQlF eHBsYWluT25lUGxhbihwbGFuLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlF bnYsCisJCUV4cGxhaW5PbmVQbGFuKHBsYW4sIE5VTEwsIGludG8sIGVzLCBxdWVyeVN0cmluZywg cGFyYW1zLCBxdWVyeUVudiwKIAkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8g JmJ1ZnVzYWdlIDogTlVMTCkpOwogCX0KIH0KQEAgLTUxNSw3ICs1MTUsOCBAQCBFeHBsYWluT25l VXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRl ICplcywKICAqIHRvIGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5uZWRT dG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKK0V4 cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgUGFydGl0aW9uUHJ1bmVSZXN1 bHQgKnBhcnRfcHJ1bmVfcmVzdWx0LAorCQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0 YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBh cmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1l ICpwbGFuZHVyYXRpb24sCiAJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UpCkBAIC01 NjMsNyArNTY0LDcgQEAgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJ bnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQlkZXN0ID0gTm9uZV9SZWNlaXZl cjsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5ICovCi0JcXVlcnlEZXNj ID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRzdG10LCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MocGxhbm5lZHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0LCBxdWVyeVN0 cmluZywKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJ CQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbik7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXh0ZW5zaW9uLmMKaW5kZXggM2RiODU5YzNlYS4uNjMxY2MwNzIxNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTc3Niw3ICs3NzYsNyBAQCBleGVjdXRlX3NxbF9zdHJpbmco Y29uc3QgY2hhciAqc3FsKQogCQkJewogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCi0JCQkJcWRl c2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhz dG10LCBOVUxMLAogCQkJCQkJCQkJCXNxbCwKIAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgp LCBOVUxMLAogCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmll dy5jCmluZGV4IDlhYzAzODM0NTkuLmIwZWQ5NmU1NmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMK QEAgLTQwOCw3ICs0MDgsNyBAQCByZWZyZXNoX21hdHZpZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVy ICpkZXN0LCBRdWVyeSAqcXVlcnksCiAJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsK IAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBs ZSByZWNlaXZlciAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0 cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcXVlcnlTdHJp bmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJ CQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAyMzMz YWFlNDY3Li44MzQ2NWU0MGY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVw YXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC0xNTUsNiArMTU1 LDcgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlQcmVwYXJlZFN0YXRlbWVu dCAqZW50cnk7CiAJQ2FjaGVkUGxhbiAqY3BsYW47CiAJTGlzdAkgICAqcGxhbl9saXN0OworCUxp c3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3Q7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJID0g TlVMTDsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IE5VTEw7CiAJUG9ydGFsCQlwb3J0YWw7CkBAIC0x OTMsNyArMTk0LDEwIEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJ CQkgICBlbnRyeS0+cGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nKTsKIAogCS8qIFJlcGxhbiBpZiBu ZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudCBmb3IgcG9ydGFsICovCi0JY3BsYW4g PSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBOVUxMKTsK KwljcGxhbiA9IEdldENhY2hlZFBsYW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEws IE5VTEwsCisJCQkJCQkgICZwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKKwlBc3NlcnQobGlzdF9s ZW5ndGgoY3BsYW4tPnN0bXRfbGlzdCkgPT0KKwkJICAgbGlzdF9sZW5ndGgocGFydF9wcnVuZV9y ZXN1bHRfbGlzdCkpOwogCXBsYW5fbGlzdCA9IGNwbGFuLT5zdG10X2xpc3Q7CiAKIAkvKgpAQCAt MjA3LDYgKzIxMSw5IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCSAg cGxhbl9saXN0LAogCQkJCQkgIGNwbGFuKTsKIAorCS8qIENvcHkgUGFydGl0aW9uUHJ1bmVSZXN1 bHRzIGludG8gdGhlIHBvcnRhbCdzIGNvbnRleHQuICovCisJUG9ydGFsU3RvcmVQYXJ0aXRpb25Q cnVuZVJlc3VsdHMocG9ydGFsLCBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKKwogCS8qCiAJICog Rm9yIENSRUFURSBUQUJMRSAuLi4gQVMgRVhFQ1VURSwgd2UgbXVzdCB2ZXJpZnkgdGhhdCB0aGUg cHJlcGFyZWQKIAkgKiBzdGF0ZW1lbnQgaXMgb25lIHRoYXQgcHJvZHVjZXMgdHVwbGVzLiAgQ3Vy cmVudGx5IHdlIGluc2lzdCB0aGF0IGl0IGJlCkBAIC01NzYsNyArNTgzLDkgQEAgRXhwbGFpbkV4 ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxh aW5TdGF0ZSAqZXMsCiAJY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nOwogCUNhY2hlZFBsYW4gKmNw bGFuOwogCUxpc3QJICAgKnBsYW5fbGlzdDsKLQlMaXN0Q2VsbCAgICpwOworCUxpc3QJICAgKnBh cnRfcHJ1bmVfcmVzdWx0X2xpc3Q7CisJTGlzdENlbGwgICAqcCwKKwkJCSAgICpwcDsKIAlQYXJh bUxpc3RJbmZvIHBhcmFtTEkgPSBOVUxMOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gTlVMTDsKIAlp bnN0cl90aW1lCXBsYW5zdGFydDsKQEAgLTYxOSw3ICs2MjgsMTAgQEAgRXhwbGFpbkV4ZWN1dGVR dWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0 ZSAqZXMsCiAKIAkvKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgYWNxdWlyZSBhIHRyYW5zaWVudCBy ZWZjb3VudCAqLwogCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwgcGFy YW1MSSwKLQkJCQkJCSAgQ3VycmVudFJlc291cmNlT3duZXIsIHF1ZXJ5RW52KTsKKwkJCQkJCSAg Q3VycmVudFJlc291cmNlT3duZXIsIHF1ZXJ5RW52LAorCQkJCQkJICAmcGFydF9wcnVuZV9yZXN1 bHRfbGlzdCk7CisJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09CisJCSAg IGxpc3RfbGVuZ3RoKHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpKTsKIAogCUlOU1RSX1RJTUVfU0VU X0NVUlJFTlQocGxhbmR1cmF0aW9uKTsKIAlJTlNUUl9USU1FX1NVQlRSQUNUKHBsYW5kdXJhdGlv biwgcGxhbnN0YXJ0KTsKQEAgLTYzNCwxMyArNjQ2LDE1IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnko RXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVz LAogCXBsYW5fbGlzdCA9IGNwbGFuLT5zdG10X2xpc3Q7CiAKIAkvKiBFeHBsYWluIGVhY2ggcXVl cnkgKi8KLQlmb3JlYWNoKHAsIHBsYW5fbGlzdCkKKwlmb3Jib3RoKHAsIHBsYW5fbGlzdCwgcHAs IHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpCiAJewogCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmly c3Rfbm9kZShQbGFubmVkU3RtdCwgcCk7CisJCVBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3By dW5lX3Jlc3VsdCA9IGxmaXJzdF9ub2RlKFBhcnRpdGlvblBydW5lUmVzdWx0LCBwcCk7CiAKIAkJ aWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkKLQkJCUV4cGxhaW5PbmVQbGFu KHBzdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBxdWVyeUVudiwKLQkJCQkJ CSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsKKwkJ CUV4cGxhaW5PbmVQbGFuKHBzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdCwgaW50bywgZXMsIHF1ZXJ5 X3N0cmluZywKKwkJCQkJCSAgIHBhcmFtTEksIHF1ZXJ5RW52LCAmcGxhbmR1cmF0aW9uLAorCQkJ CQkJICAgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOwogCQllbHNlCiAJCQlFeHBs YWluT25lVXRpbGl0eShwc3RtdC0+dXRpbGl0eVN0bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcs CiAJCQkJCQkJICBwYXJhbUxJLCBxdWVyeUVudik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9SRUFETUUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKaW5kZXggMGI1MTgz ZmM0YS4uOTUzYTQ3NmVhNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1F CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQpAQCAtNjUsNiArNjUsMzQgQEAgZm91 bmQgdGhlcmUuICBUaGlzIGN1cnJlbnRseSBvbmx5IG9jY3VycyBmb3IgQXBwZW5kIGFuZCBNZXJn ZUFwcGVuZCBub2Rlcy4gIEluCiB0aGlzIGNhc2UgdGhlIG5vbi1yZXF1aXJlZCBzdWJwbGFucyBh cmUgaWdub3JlZCBhbmQgdGhlIGV4ZWN1dG9yIHN0YXRlJ3MKIHN1Ym5vZGUgYXJyYXkgd2lsbCBi ZWNvbWUgb3V0IG9mIHNlcXVlbmNlIHRvIHRoZSBwbGFuJ3Mgc3VicGxhbiBsaXN0LgogCitBY3R1 YWxseSwgdGhlIHNvLWNhbGxlZCBleGVjdXRpb24gdGltZSBwcnVuaW5nIG1heSBhbHNvIG9jY3Vy IGV2ZW4gYmVmb3JlIHRoZQorZXhlY3V0aW9uIGhhcyBzdGFydGVkLiAgT25lIGNhc2Ugd2hlcmUg dGhhdCBvY2N1cnMgaXMgd2hlbiBhIGNhY2hlZCBnZW5lcmljCitwbGFuIGlzIGJlaW5nIHZhbGlk YXRlZCBmb3IgZXhlY3V0aW9uIGJ5IHBsYW5jYWNoZS5jOiBHZXRDYWNoZWRQbGFuKCksIHdoaWNo Cit3b3JrcyBieSBsb2NraW5nIGFsbCB0aGUgcmVsYXRpb25zIHRoYXQgd2lsbCBiZSBzY2FubmVk IGJ5IHRoYXQgcGxhbi4gIElmIHRoZQorZ2VuZXJpYyBwbGFuIGNvbnRhaW5zIG5vZGVzIHRoYXQg Y2FuIHBlcmZvcm0gZXhlY3V0aW9uIHRpbWUgcGFydGl0aW9uIHBydW5pbmcKKyh0aGF0IGlzLCBj b250YWluIGEgUGFydGl0aW9uUHJ1bmVJbmZvKSwgYSBzdWJzZXQgb2YgcHJ1bmluZyBzdGVwcyBj b250YWluZWQKK2luIGEgZ2l2ZW4gbm9kZSdzIFBhcnRpdGlvblBydW5lSW5mbyB0aGF0IGRvIG5v dCBkZXBlbmQgb24gdGhlIGV4ZWN1dGlvbgorYWN0dWFsbHkgaGF2aW5nIHN0YXJ0ZWQgKGNhbGxl ZCAiaW5pdGlhbCIgcHJ1bmluZyBzdGVwcykgYXJlIHBlcmZvcm1lZCBhdCB0aGlzCitwb2ludCB0 byBmaWd1cmUgb3V0IHRoZSBtaW5pbWFsIHNldCBvZiBjaGlsZCBzdWJwbGFucyB0aGF0IHNhdGlz ZnkgdGhvc2UKK3BydW5pbmcgc3RlcHMuICBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIGxvb2tpbmcg YXQgYSBnaXZlbiBwbGFuIHRyZWUgd2lsbCB0aGVuCitsb2NrIG9ubHkgdGhlIHJlbGF0aW9ucyBz Y2FubmVkIGJ5IHRoZSBjaGlsZCBzdWJwbGFucyB0aGF0IHN1cnZpdmVkIHN1Y2gKK3BydW5pbmcs IGFsb25nIHdpdGggdGhvc2UgcHJlc2VudCBpbiBQbGFubmVkU3RtdC5taW5Mb2NrUmVsaWRzLiAg Tm90ZSB0aGF0IHRoZQorc3VicGxhbnMgYXJlIG9ubHkgbm90aW9uYWxseSBwcnVuZWQgaW4gdGhh dCB0aGV5IGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSBwbGFuCit0cmVlIGFzIHN1Y2guCisKK1Rv IHByZXZlbnQgdGhlIGV4ZWN1dG9yIGFuZCBhbnkgdGhpcmQgcGFydHkgZXhlY3V0aW9uIGNvZGUg dGhhdCBjYW4gbG9vayBhdAordGhlIHBsYW4gdHJlZSBmcm9tIHRyeWluZyB0byBleGVjdXRlIHRo ZSBzdWJwbGFucyB0aGF0IHdlcmUgcHJ1bmVkIGFzCitkZXNjcmliZWQgYWJvdmUsIHRoZSByZXN1 bHQgb2YgcHJ1bmluZyBpcyBwYXNzZWQgdG8gdGhlIGV4ZWN1dG9yIGFzIGEKK1BhcnRpdGlvblBy dW5lUmVzdWx0IG5vZGUgdmlhIHRoZSBRdWVyeURlc2MuICBJdCBjb25zaXN0cyBvZiB0aGUgc2V0 IG9mCitpbmRleGVzIG9mIHN1cnZpdmluZyBzdWJwbGFucyBpbiB0aGVpciByZXNwZWN0aXZlIHBh cmVudCBwbGFuIG5vZGUncyBsaXN0IG9mCitjaGlsZCBzdWJwbGFucywgc2F2ZWQgYXMgYSBsaXN0 IG9mIGJpdG1hcHNldHMsIHdpdGggb25lIGVsZW1lbnQgZm9yIGV2ZXJ5CitwYXJlbnQgcGxhbiBu b2RlIHdob3NlIFBhcnRpdGlvblBydW5lSW5mbyBpcyBwcmVzZW50IGluCitQbGFubmVkU3RtdC5w YXJ0UHJ1bmVJbmZvcy4gIEluIG90aGVyIHdvcmRzLCB0aGUgZXhlY3V0b3Igc2hvdWxkIG5vdAor cmUtZXZhbHVhdGUgdGhlIHNldCBvZiBpbml0aWFsbHkgdmFsaWQgc3VicGxhbnMgYnkgcmVkb2lu ZyB0aGUgaW5pdGlhbCBwcnVuaW5nCitpZiBpdCB3YXMgYWxyZWFkeSBkb25lIGJ5IEFjcXVpcmVF eGVjdXRvckxvY2tzKCksIGJlY2F1c2UgdGhlIHJlLWV2YWx1YXRpb24gbWF5Cit2ZXJ5IHdlbGwg ZW5kIHVwIHJlc3VsdGluZyBpbiBhIGRpZmZlcmVudCBzZXQgb2Ygc3VicGxhbnMsIGNvbnRhaW5p bmcgc29tZQord2hvc2UgcmVsYXRpb25zIHdlcmUgbm90IGxvY2tlZCBieSBBY3F1aXJlRXhlY3V0 b3JMb2NrcygpLgorCiBFYWNoIFBsYW4gbm9kZSBtYXkgaGF2ZSBleHByZXNzaW9uIHRyZWVzIGFz c29jaWF0ZWQgd2l0aCBpdCwgdG8gcmVwcmVzZW50CiBpdHMgdGFyZ2V0IGxpc3QsIHF1YWxpZmlj YXRpb24gY29uZGl0aW9ucywgZXRjLiAgVGhlc2UgdHJlZXMgYXJlIGFsc28KIHJlYWQtb25seSB0 byB0aGUgZXhlY3V0b3IsIGJ1dCB0aGUgZXhlY3V0b3Igc3RhdGUgZm9yIGV4cHJlc3Npb24gZXZh bHVhdGlvbgpAQCAtMjg2LDYgKzMxNCwxMCBAQCBRdWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxv dwogCiBUaGlzIGlzIGEgc2tldGNoIG9mIGNvbnRyb2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9j ZXNzaW5nOgogCisgIFsgRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nIF0gLS0tIGFuIG9wdGlvbmFs IHN0ZXAgdG8gcGVyZm9ybSBpbml0aWFsCisJCXBhcnRpdGlvbiBwcnVuaW5nIG9uIHRoZSBwbGFu IHRyZWUgdGhlIHJlc3VsdCBvZiB3aGljaCBpcyBwYXNzZWQKKwkJdG8gdGhlIGV4ZWN1dG9yIHZp YSBRdWVyeURlc2MKKwogCUNyZWF0ZVF1ZXJ5RGVzYwogCiAJRXhlY3V0b3JTdGFydApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKaW5kZXggNzJmYzI3MzUyNC4uNDU4MjQ2MjRmOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvbWF0dmll dy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9l eGVjZGVidWcuaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3Ivbm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmb3JlaWduL2Zkd2FwaS5oIgog I2luY2x1ZGUgImppdC9qaXQuaCIKQEAgLTEwNCw2ICsxMDUsNTYgQEAgc3RhdGljIHZvaWQgRXZh bFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSk7CiAKIC8q IGVuZCBvZiBsb2NhbCBkZWNscyAqLwogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY3V0b3JEb0luaXRp YWxQcnVuaW5nCisgKgorICoJCUZvciBlYWNoIHBsYW4gdHJlZSBub2RlIHRoYXQgaGFzIGJlZW4g YXNzaWduZWQgYSBQYXJ0aXRpb25QcnVuZUluZm8sCisgKgkJdGhpcyBwZXJmb3JtcyBpbml0aWFs IHBhcnRpdGlvbiBwcnVuaW5nIHVzaW5nIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyAqCQl0 aGVyZWluIHRvIGRldGVybWluZSB0aGUgc2V0IG9mIGNoaWxkIHN1YnBsYW5zIHRoYXQgc2F0aXNm eSB0aGUgaW5pdGlhbAorICoJCXBydW5pbmcgc3RlcHMsIHRvIGJlIHJldHVybmVkIGFzIGEgYml0 bWFwc2V0IG9mIHRoZWlyIGluZGV4ZXMgaW4gdGhlCisgKgkJbm9kZSdzIGxpc3Qgb2YgY2hpbGQg c3VicGxhbnMgKGZvciBleGFtcGxlLCBhbiBBcHBlbmQncyBhcHBlbmRwbGFucykuCisgKgorICog UmV0dXJuIHZhbHVlIGlzIGEgUGFydGl0aW9uUHJ1bmVSZXN1bHQgbm9kZSB0aGF0IGNvbnRhaW5z IGEgbGlzdCBvZiB0aG9zZQorICogYml0bWFwc2V0cywgd2l0aCBvbmUgZWxlbWVudCBmb3IgZXZl cnkgUGFydGl0aW9uUHJ1bmVJbmZvLCBhbmQgYSBiaXRtYXBzZXQKKyAqIG9mIHRoZSBSVCBpbmRl eGVzIG9mIGFsbCB0aGUgbGVhZiBwYXJ0aXRpb25zIHNjYW5uZWQgYnkgdGhvc2UgY2hvc2VuCisg KiBzdWJwbGFucy4gIE5vdGUgdGhhdCB0aGUgbGF0dGVyIGlzIHNoYXJlZCBhY3Jvc3MgYWxsIFBh cnRpdGlvblBydW5lSW5mb3MuCisgKgorICogVGhlIGV4ZWN1dG9yIG11c3Qgc2VlIHRoZSBleGFj dGx5IHNhbWUgc2V0IG9mIHN1YnBsYW5zIGFzIHZhbGlkIGZvcgorICogZXhlY3V0aW9uIHdoZW4g ZG9pbmcgRXhlY0luaXROb2RlKCkgb24gdGhlIHBsYW4gbm9kZXMgd2hvc2UKKyAqIFBhcnRpdGlv blBydW5lSW5mb3MgYXJlIHByb2Nlc3NlZCBoZXJlLiAgU28sIGl0IG11c3QgZ2V0IHRoZSBzZXQg ZnJvbSB0aGUKKyAqIGFmb3JlbWVudGlvbmVkIFBhcnRpdGlvblBydW5lUmVzdWx0LCBpbnN0ZWFk IG9mIGNvbXB1dGluZyBpdCBhbGwgb3ZlcgorICogYWdhaW4gYnkgcmVkb2luZyB0aGUgaW5pdGlh bCBwcnVuaW5nLiAgSXQncyB0aGUgY2FsbGVyJ3Mgam9iIHRvIHBhc3MgdGhlCisgKiBQYXJ0aXRp b25QcnVuZVJlc3VsdCB0byB0aGUgZXhlY3V0b3IuCisgKgorICogTm90ZTogUGFydGl0aW9uZWQg dGFibGVzIG1lbnRpb25lZCBpbiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyBub2RlcyB0aGF0Cisg KiBkcml2ZSB0aGUgcHJ1bmluZyB3aWxsIGJlIGxvY2tlZCBiZWZvcmUgZG9pbmcgdGhlIHBydW5p bmcuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KK1BhcnRpdGlvblBydW5lUmVzdWx0ICoKK0V4ZWN1dG9yRG9J bml0aWFsUHJ1bmluZyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIFBhcmFtTGlzdEluZm8gcGFy YW1zKQoreworCVBhcnRpdGlvblBydW5lUmVzdWx0ICpyZXN1bHQ7CisJTGlzdENlbGwgKmxjOwor CisJLyogT25seSBnZXQgaGVyZSBpZiB0aGVyZSBpcyBhbnkgcHJ1bmluZyB0byBkby4gKi8KKwlB c3NlcnQocGxhbm5lZHN0bXQtPmNvbnRhaW5zSW5pdGlhbFBydW5pbmcpOworCisJcmVzdWx0ID0g bWFrZU5vZGUoUGFydGl0aW9uUHJ1bmVSZXN1bHQpOworCWZvcmVhY2gobGMsIHBsYW5uZWRzdG10 LT5wYXJ0UHJ1bmVJbmZvcykKKwl7CisJCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0g bGZpcnN0KGxjKTsKKwkJQml0bWFwc2V0ICp2YWxpZF9zdWJwbGFuX29mZnM7CisKKwkJdmFsaWRf c3VicGxhbl9vZmZzID0KKwkJCUV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nKHBsYW5uZWRz dG10LCBwYXJhbXMsIHBydW5laW5mbywKKwkJCQkJCQkJCQkgICZyZXN1bHQtPnNjYW5fbGVhZnBh cnRfcnRpcyk7CisJCXJlc3VsdC0+dmFsaWRfc3VicGxhbl9vZmZzX2xpc3QgPQorCQkJbGFwcGVu ZChyZXN1bHQtPnZhbGlkX3N1YnBsYW5fb2Zmc19saXN0LAorCQkJCQl2YWxpZF9zdWJwbGFuX29m ZnMpOworCX0KKworCXJldHVybiByZXN1bHQ7Cit9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjdXRv clN0YXJ0CkBAIC04MDYsNiArODU3LDcgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2Ms IGludCBlZmxhZ3MpCiB7CiAJQ21kVHlwZQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRp b247CiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gcXVlcnlEZXNjLT5wbGFubmVkc3RtdDsK KwlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1bHQgPSBxdWVyeURlc2MtPnBh cnRfcHJ1bmVfcmVzdWx0OwogCVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxhblRyZWU7 CiAJTGlzdAkgICAqcmFuZ2VUYWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0YXRlCSAg ICplc3RhdGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsKQEAgLTgyNiw2ICs4NzgsNyBAQCBJbml0UGxh bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAogCWVzdGF0ZS0+ZXNfcGxhbm5l ZHN0bXQgPSBwbGFubmVkc3RtdDsKIAllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBwbGFu bmVkc3RtdC0+cGFydFBydW5lSW5mb3M7CisJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdCA9 IHBhcnRfcHJ1bmVfcmVzdWx0OwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01h cmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMKaW5kZXggZjczYjhjMjYwNy4uN2U2ZGFiNTYyMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTY2LDYgKzY2LDcgQEAKICNkZWZpbmUgUEFSQUxMRUxf S0VZX1FVRVJZX1RFWFQJCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwOCkKICNkZWZpbmUg UEFSQUxMRUxfS0VZX0pJVF9JTlNUUlVNRU5UQVRJT04gVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAw MDAwMDA5KQogI2RlZmluZSBQQVJBTExFTF9LRVlfV0FMX1VTQUdFCQkJVUlOVDY0Q09OU1QoMHhF MDAwMDAwMDAwMDAwMDBBKQorI2RlZmluZSBQQVJBTExFTF9LRVlfUEFSVElUSU9OUFJVTkVSRVNV TFQJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDBCKQogCiAjZGVmaW5lIFBBUkFMTEVMX1RV UExFX1FVRVVFX1NJWkUJCTY1NTM2CiAKQEAgLTE4Miw2ICsxODMsNyBAQCBFeGVjU2VyaWFsaXpl UGxhbihQbGFuICpwbGFuLCBFU3RhdGUgKmVzdGF0ZSkKIAlwc3RtdC0+dHJhbnNpZW50UGxhbiA9 IGZhbHNlOwogCXBzdG10LT5kZXBlbmRzT25Sb2xlID0gZmFsc2U7CiAJcHN0bXQtPnBhcmFsbGVs TW9kZU5lZWRlZCA9IGZhbHNlOworCXBzdG10LT5jb250YWluc0luaXRpYWxQcnVuaW5nID0gZmFs c2U7CiAJcHN0bXQtPnBsYW5UcmVlID0gcGxhbjsKIAlwc3RtdC0+cGFydFBydW5lSW5mb3MgPSBl c3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3M7CiAJcHN0bXQtPnJ0YWJsZSA9IGVzdGF0ZS0+ZXNf cmFuZ2VfdGFibGU7CkBAIC01OTcsMTIgKzU5OSwxNSBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQ bGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJRml4ZWRQYXJhbGxlbEV4ZWN1 dG9yU3RhdGUgKmZwZXM7CiAJY2hhcgkgICAqcHN0bXRfZGF0YTsKIAljaGFyCSAgICpwc3RtdF9z cGFjZTsKKwljaGFyCSAgICpwYXJ0X3BydW5lX3Jlc3VsdF9kYXRhOworCWNoYXIJICAgKnBhcnRf cHJ1bmVfcmVzdWx0X3NwYWNlOwogCWNoYXIJICAgKnBhcmFtbGlzdGluZm9fc3BhY2U7CiAJQnVm ZmVyVXNhZ2UgKmJ1ZnVzYWdlX3NwYWNlOwogCVdhbFVzYWdlICAgKndhbHVzYWdlX3NwYWNlOwog CVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50YXRpb24gPSBOVUxMOwog CVNoYXJlZEppdEluc3RydW1lbnRhdGlvbiAqaml0X2luc3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJ aW50CQkJcHN0bXRfbGVuOworCWludAkJCXBhcnRfcHJ1bmVfcmVzdWx0X2xlbjsKIAlpbnQJCQlw YXJhbWxpc3RpbmZvX2xlbjsKIAlpbnQJCQlpbnN0cnVtZW50YXRpb25fbGVuID0gMDsKIAlpbnQJ CQlqaXRfaW5zdHJ1bWVudGF0aW9uX2xlbiA9IDA7CkBAIC02MzEsNiArNjM2LDcgQEAgRXhlY0lu aXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCiAJ LyogRml4IHVwIGFuZCBzZXJpYWxpemUgcGxhbiB0byBiZSBzZW50IHRvIHdvcmtlcnMuICovCiAJ cHN0bXRfZGF0YSA9IEV4ZWNTZXJpYWxpemVQbGFuKHBsYW5zdGF0ZS0+cGxhbiwgZXN0YXRlKTsK KwlwYXJ0X3BydW5lX3Jlc3VsdF9kYXRhID0gbm9kZVRvU3RyaW5nKGVzdGF0ZS0+ZXNfcGFydF9w cnVuZV9yZXN1bHQpOwogCiAJLyogQ3JlYXRlIGEgcGFyYWxsZWwgY29udGV4dC4gKi8KIAlwY3h0 ID0gQ3JlYXRlUGFyYWxsZWxDb250ZXh0KCJwb3N0Z3JlcyIsICJQYXJhbGxlbFF1ZXJ5TWFpbiIs IG53b3JrZXJzKTsKQEAgLTY1Nyw2ICs2NjMsMTEgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxh blN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCXNobV90b2NfZXN0aW1hdGVfY2h1 bmsoJnBjeHQtPmVzdGltYXRvciwgcHN0bXRfbGVuKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMo JnBjeHQtPmVzdGltYXRvciwgMSk7CiAKKwkvKiBFc3RpbWF0ZSBzcGFjZSBmb3Igc2VyaWFsaXpl ZCBQYXJ0aXRpb25QcnVuZVJlc3VsdC4gKi8KKwlwYXJ0X3BydW5lX3Jlc3VsdF9sZW4gPSBzdHJs ZW4ocGFydF9wcnVuZV9yZXN1bHRfZGF0YSkgKyAxOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmso JnBjeHQtPmVzdGltYXRvciwgcGFydF9wcnVuZV9yZXN1bHRfbGVuKTsKKwlzaG1fdG9jX2VzdGlt YXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CisKIAkvKiBFc3RpbWF0ZSBzcGFjZSBmb3Ig c2VyaWFsaXplZCBQYXJhbUxpc3RJbmZvLiAqLwogCXBhcmFtbGlzdGluZm9fbGVuID0gRXN0aW1h dGVQYXJhbUxpc3RTcGFjZShlc3RhdGUtPmVzX3BhcmFtX2xpc3RfaW5mbyk7CiAJc2htX3RvY19l c3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBwYXJhbWxpc3RpbmZvX2xlbik7CkBAIC03 NTEsNiArNzYyLDEyIEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRl LCBFU3RhdGUgKmVzdGF0ZSwKIAltZW1jcHkocHN0bXRfc3BhY2UsIHBzdG10X2RhdGEsIHBzdG10 X2xlbik7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfUExBTk5FRFNU TVQsIHBzdG10X3NwYWNlKTsKIAorCS8qIFN0b3JlIHNlcmlhbGl6ZWQgUGFydGl0aW9uUHJ1bmVS ZXN1bHQgKi8KKwlwYXJ0X3BydW5lX3Jlc3VsdF9zcGFjZSA9IHNobV90b2NfYWxsb2NhdGUocGN4 dC0+dG9jLCBwYXJ0X3BydW5lX3Jlc3VsdF9sZW4pOworCW1lbWNweShwYXJ0X3BydW5lX3Jlc3Vs dF9zcGFjZSwgcGFydF9wcnVuZV9yZXN1bHRfZGF0YSwgcGFydF9wcnVuZV9yZXN1bHRfbGVuKTsK KwlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9QQVJUSVRJT05QUlVORVJF U1VMVCwKKwkJCQkgICBwYXJ0X3BydW5lX3Jlc3VsdF9zcGFjZSk7CisKIAkvKiBTdG9yZSBzZXJp YWxpemVkIFBhcmFtTGlzdEluZm8uICovCiAJcGFyYW1saXN0aW5mb19zcGFjZSA9IHNobV90b2Nf YWxsb2NhdGUocGN4dC0+dG9jLCBwYXJhbWxpc3RpbmZvX2xlbik7CiAJc2htX3RvY19pbnNlcnQo cGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgcGFyYW1saXN0aW5mb19zcGFj ZSk7CkBAIC0xMjMyLDggKzEyNDksMTAgQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNobV90 b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAkJCQkJCSBpbnQgaW5zdHJ1bWVudF9v cHRpb25zKQogewogCWNoYXIJICAgKnBzdG10c3BhY2U7CisJY2hhcgkgICAqcGFydF9wcnVuZV9y ZXN1bHRfc3BhY2U7CiAJY2hhcgkgICAqcGFyYW1zcGFjZTsKIAlQbGFubmVkU3RtdCAqcHN0bXQ7 CisJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0OwogCVBhcmFtTGlzdElu Zm8gcGFyYW1MSTsKIAljaGFyCSAgICpxdWVyeVN0cmluZzsKIApAQCAtMTI0NCwxMiArMTI2Mywx OCBAQCBFeGVjUGFyYWxsZWxHZXRRdWVyeURlc2Moc2htX3RvYyAqdG9jLCBEZXN0UmVjZWl2ZXIg KnJlY2VpdmVyLAogCXBzdG10c3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tF WV9QTEFOTkVEU1RNVCwgZmFsc2UpOwogCXBzdG10ID0gKFBsYW5uZWRTdG10ICopIHN0cmluZ1Rv Tm9kZShwc3RtdHNwYWNlKTsKIAorCS8qIFJlY29uc3RydWN0IGxlYWRlci1zdXBwbGllZCBQYXJ0 aXRpb25QcnVuZVJlc3VsdC4gKi8KKwlwYXJ0X3BydW5lX3Jlc3VsdF9zcGFjZSA9CisJCXNobV90 b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUlRJVElPTlBSVU5FUkVTVUxULCBmYWxzZSk7 CisJcGFydF9wcnVuZV9yZXN1bHQgPSAoUGFydGl0aW9uUHJ1bmVSZXN1bHQgKikKKwkJc3RyaW5n VG9Ob2RlKHBhcnRfcHJ1bmVfcmVzdWx0X3NwYWNlKTsKKwogCS8qIFJlY29uc3RydWN0IFBhcmFt TGlzdEluZm8uICovCiAJcGFyYW1zcGFjZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxf S0VZX1BBUkFNTElTVElORk8sIGZhbHNlKTsKIAlwYXJhbUxJID0gUmVzdG9yZVBhcmFtTGlzdCgm cGFyYW1zcGFjZSk7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8K LQlyZXR1cm4gQ3JlYXRlUXVlcnlEZXNjKHBzdG10LAorCXJldHVybiBDcmVhdGVRdWVyeURlc2Mo cHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0LAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkg ICBHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZl ciwgcGFyYW1MSSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYwppbmRleCBiNTVjZGQyNTgwLi4yNGU2ZjZlOTg4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAibWIvcGdf d2NoYXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVu Y3MuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicGFydGl0aW9u aW5nL3BhcnRib3VuZHMuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRlc2MuaCIKICNp bmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydHBydW5lLmgiCkBAIC0xODUsNyArMTg2LDExIEBAIHN0 YXRpYyBjaGFyICpFeGVjQnVpbGRTbG90UGFydGl0aW9uS2V5RGVzY3JpcHRpb24oUmVsYXRpb24g cmVsLAogc3RhdGljIExpc3QgKmFkanVzdF9wYXJ0aXRpb25fY29sbm9zKExpc3QgKmNvbG5vcywg UmVzdWx0UmVsSW5mbyAqbGVhZl9wYXJ0X3JyaSk7CiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRp dGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCk7CiBz dGF0aWMgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFu U3RhdGUgKnBsYW5zdGF0ZSwKLQkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1 bmVpbmZvKTsKKwkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAor CQkJCQkJCQkJCQkJCSAgYm9vbCBjb25zaWRlcl9pbml0aWFsX3N0ZXBzLAorCQkJCQkJCQkJCQkJ CSAgYm9vbCBjb25zaWRlcl9leGVjX3N0ZXBzLAorCQkJCQkJCQkJCQkJCSAgTGlzdCAqcnRhYmxl LCBFeHByQ29udGV4dCAqZWNvbnRleHQsCisJCQkJCQkJCQkJCQkJICBQYXJ0aXRpb25EaXJlY3Rv cnkgcGFydGRpcik7CiBzdGF0aWMgdm9pZCBJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KFBhcnRp dGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCSAgTGlzdCAqcHJ1bmluZ19zdGVw cywKIAkJCQkJCQkJCSAgUGFydGl0aW9uRGVzYyBwYXJ0ZGVzYywKQEAgLTE5OCw3ICsyMDMsOCBA QCBzdGF0aWMgdm9pZCBQYXJ0aXRpb25QcnVuZUZpeFN1YlBsYW5NYXAoUGFydGl0aW9uUHJ1bmVT dGF0ZSAqcHJ1bmVzdGF0ZSwKIHN0YXRpYyB2b2lkIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVj dXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJCQkJCQkJCSAgIFBhcnRp dGlvbmVkUmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwKIAkJCQkJCQkJCQkgICBib29sIGluaXRpYWxf cHJ1bmUsCi0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucyk7CisJCQkJCQkJ CQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucywKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQg KipzY2FuX2xlYWZwYXJ0X3J0aXMpOwogCiAKIC8qCkBAIC0xNTkzLDggKzE1OTksMTAgQEAgYWRq dXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0 ck1hcCkKICAqIGNvbnNpZGVyZWQgdG8gYmUgYSBzdGFibGUgZXhwcmVzc2lvbiwgaXQgY2FuIGNo YW5nZSB2YWx1ZSBmcm9tIG9uZSBwbGFuCiAgKiBub2RlIHNjYW4gdG8gdGhlIG5leHQgZHVyaW5n IHF1ZXJ5IGV4ZWN1dGlvbi4gIFN0YWJsZSBjb21wYXJpc29uCiAgKiBleHByZXNzaW9ucyB0aGF0 IGRvbid0IGludm9sdmUgc3VjaCBQYXJhbXMgYWxsb3cgcGFydGl0aW9uIHBydW5pbmcgdG8gYmUK LSAqIGRvbmUgb25jZSBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1cC4gIEV4cHJlc3Npb25zIHRoYXQg ZG8gaW52b2x2ZSBzdWNoIFBhcmFtcwotICogcmVxdWlyZSB1cyB0byBwcnVuZSBzZXBhcmF0ZWx5 IGZvciBlYWNoIHNjYW4gb2YgdGhlIHBhcmVudCBwbGFuIG5vZGUuCisgKiBkb25lIG9uY2UgZHVy aW5nIGV4ZWN1dG9yIHN0YXJ0dXAgb3IgZHVyaW5nIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygp IHRoYXQKKyAqIHJ1bnMgYXMgcGFydCBvZiBwZXJmb3JtaW5nIEFjcXVpcmVFeGVjdXRvckxvY2tz KCkgb24gYSBnaXZlbiBwbGFuIHRyZWUuCisgKiBFeHByZXNzaW9ucyB0aGF0IGRvIGludm9sdmUg c3VjaCBQYXJhbXMgcmVxdWlyZSB1cyB0byBwcnVuZSBzZXBhcmF0ZWx5IGZvcgorICogZWFjaCBz Y2FuIG9mIHRoZSBwYXJlbnQgcGxhbiBub2RlLgogICoKICAqIE5vdGUgdGhhdCBwcnVuaW5nIGF3 YXkgdW5uZWVkZWQgc3VicGxhbnMgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAgaGFzIHRoZQogICog YWRkZWQgYmVuZWZpdCBvZiBub3QgaGF2aW5nIHRvIGluaXRpYWxpemUgdGhlIHVubmVlZGVkIHN1 YnBsYW5zIGF0IGFsbC4KQEAgLTE2MTEsNiArMTYxOSwxMyBAQCBhZGp1c3RfcGFydGl0aW9uX2Nv bG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICoJCWFjY291 bnQgZm9yIGluaXRpYWwgcHJ1bmluZyBwb3NzaWJseSBoYXZpbmcgZWxpbWluYXRlZCBzb21lIG9m IHRoZQogICoJCXN1YnBsYW5zLgogICoKKyAqIEV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5n OgorICoJCURvIGluaXRpYWwgcHJ1bmluZyB3aXRoIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQg aW4gYSBnaXZlbgorICoJCVBhcnRpdGlvblBydW5lSW5mbyB0byBkZXRlcm1pbmUgdGhlIG1pbmlt YWwgc2V0IG9mIGNoaWxkIHN1YnBsYW5zCisgKgkJdG8gYmUgZXhlY3V0ZWQgb2YgdGhlIHBhcmVu dCBwbGFuIG5vZGUgdG8gd2hpY2ggdGhlIFBhcnRpdGlvblBydW5lSW5mbworICoJCWJlbG9uZ3Mg YW5kIGFsc28gdGhlIHNldCBvZiB0aGUgUlQgaW5kZXhlcyBvZiBsZWFmIHBhcnRpdGlvbnMgdGhh dCB3aWxsCisgKgkJYmUgc2Nhbm5lZCB3aXRoIHRob3NlIHN1YnBsYW5zLgorICoKICAqIEV4ZWNG aW5kTWF0Y2hpbmdTdWJQbGFuczoKICAqCQlSZXR1cm5zIGluZGV4ZXMgb2YgbWF0Y2hpbmcgc3Vi cGxhbnMgYWZ0ZXIgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMKICAqCQl0aGF0IGFyZSBzYWZl IHRvIGV2YWx1YXRlIGF0IGEgZ2l2ZW4gcG9pbnQuICBUaGlzIGZ1bmN0aW9uIGlzIGZpcnN0CkBA IC0xNjI4LDggKzE2NDMsOSBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlz dCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICoKICAqIE9uIHJldHVybiwgKmluaXRpYWxs eV92YWxpZF9zdWJwbGFucyBpcyBhc3NpZ25lZCB0aGUgc2V0IG9mIGluZGV4ZXMgb2YKICAqIGNo aWxkIHN1YnBsYW5zIHRoYXQgbXVzdCBiZSBpbml0aWFsaXplZCBhbG9uZyB3aXRoIHRoZSBwYXJl bnQgcGxhbiBub2RlLgotICogSW5pdGlhbCBwcnVuaW5nIGlzIHBlcmZvcm1lZCBoZXJlIGlmIG5l ZWRlZCBhbmQgaW4gdGhhdCBjYXNlIG9ubHkgdGhlCi0gKiBzdXJ2aXZpbmcgc3VicGxhbnMnIGlu ZGV4ZXMgYXJlIGFkZGVkLgorICogSW5pdGlhbCBwcnVuaW5nIGlzIHBlcmZvcm1lZCBoZXJlIGlm IG5lZWRlZCAodW5sZXNzIGl0IGhhcyBhbHJlYWR5IGJlZW4gZG9uZQorICogYnkgRXhlY3V0b3JE b0luaXRpYWxQcnVuaW5nKCkpLCBhbmQgaW4gdGhhdCBjYXNlIG9ubHkgdGhlIHN1cnZpdmluZwor ICogc3VicGxhbnMnIGluZGV4ZXMgYXJlIGFkZGVkLgogICoKICAqIElmIHN1YnBsYW5zIGFyZSBp bmRlZWQgcHJ1bmVkLCBzdWJwbGFuX21hcCBhcnJheXMgY29udGFpbmVkIGluIHRoZSByZXR1cm5l ZAogICogUGFydGl0aW9uUHJ1bmVTdGF0ZSBhcmUgcmUtc2VxdWVuY2VkIHRvIG5vdCBjb3VudCB0 aG9zZSwgdGhvdWdoIG9ubHkgaWYgdGhlCkBAIC0xNjQ1LDI0ICsxNjYxLDU5IEBAIEV4ZWNJbml0 UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAlFU3RhdGUJICAgKmVzdGF0 ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7CiAJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8gPSBs aXN0X250aChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MsCiAJCQkJCQkJCQkJCSBwYXJ0X3By dW5lX2luZGV4KTsKKwlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcHJ1bmVyZXN1bHQgPSBlc3RhdGUt PmVzX3BhcnRfcHJ1bmVfcmVzdWx0OworCWJvb2wJZG9fcHJ1bmluZyA9IChwcnVuZWluZm8tPm5l ZWRzX2luaXRfcHJ1bmluZyB8fAorCQkJCQkJICBwcnVuZWluZm8tPm5lZWRzX2V4ZWNfcHJ1bmlu Zyk7CiAKLQkvKiBXZSBtYXkgbmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQgdG8gZXZhbHVhdGUg cGFydGl0aW9uIGV4cHJzICovCi0JRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0 YXRlKTsKKwkvKgorCSAqIE5vIG5lZWQgdG8gZG8gaW5pdGlhbCBwcnVuaW5nIGlmIGl0IHdhcyBk b25lIGFscmVhZHkgYnkKKwkgKiBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSwgd2hpY2ggaXQg d291bGQgYmUgaWYgZXNfcGFydF9wcnVuZV9yZXN1bHQKKwkgKiBoYXMgYmVlbiBzZXQuCisJICov CisJaWYgKHBydW5lcmVzdWx0KQorCQlkb19wcnVuaW5nID0gcHJ1bmVpbmZvLT5uZWVkc19leGVj X3BydW5pbmc7CiAKLQkvKiBDcmVhdGUgdGhlIHdvcmtpbmcgZGF0YSBzdHJ1Y3R1cmUgZm9yIHBy dW5pbmcgKi8KLQlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShwbGFuc3Rh dGUsIHBydW5laW5mbyk7CisJcHJ1bmVzdGF0ZSA9IE5VTEw7CisJaWYgKGRvX3BydW5pbmcpCisJ eworCQkvKiBXZSBtYXkgbmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQgdG8gZXZhbHVhdGUgcGFy dGl0aW9uIGV4cHJzICovCisJCUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsIHBsYW5zdGF0 ZSk7CisKKwkJLyogRm9yIGRhdGEgcmVhZGluZywgZXhlY3V0b3IgYWx3YXlzIG9taXRzIGRldGFj aGVkIHBhcnRpdGlvbnMgKi8KKwkJaWYgKGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSA9 PSBOVUxMKQorCQkJZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID0KKwkJCQlDcmVhdGVQ YXJ0aXRpb25EaXJlY3RvcnkoZXN0YXRlLT5lc19xdWVyeV9jeHQsIGZhbHNlKTsKKworCQkvKgor CQkgKiBDcmVhdGUgdGhlIHdvcmtpbmcgZGF0YSBzdHJ1Y3R1cmUgZm9yIHBydW5pbmcuICBObyBu ZWVkIHRvIGNvbnNpZGVyCisJCSAqIGluaXRpYWwgcHJ1bmluZyBzdGVwcyBpZiB3ZSBoYXZlIGEg UGFydGl0aW9uUHJ1bmVSZXN1bHQuCisJCSAqLworCQlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0 aW9uUHJ1bmVTdGF0ZShwbGFuc3RhdGUsIHBydW5laW5mbywKKwkJCQkJCQkJCQkJICAgcHJ1bmVy ZXN1bHQgPT0gTlVMTCwgdHJ1ZSwKKwkJCQkJCQkJCQkJICAgTklMLCBwbGFuc3RhdGUtPnBzX0V4 cHJDb250ZXh0LAorCQkJCQkJCQkJCQkgICBlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3Rvcnkp OworCX0KIAogCS8qCiAJICogUGVyZm9ybSBhbiBpbml0aWFsIHBhcnRpdGlvbiBwcnVuZSBwYXNz LCBpZiByZXF1aXJlZC4KIAkgKi8KLQlpZiAocHJ1bmVzdGF0ZS0+ZG9faW5pdGlhbF9wcnVuZSkK LQkJKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyA9IEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhw cnVuZXN0YXRlLCB0cnVlKTsKKwlpZiAocHJ1bmVyZXN1bHQpCisJeworCQkqaW5pdGlhbGx5X3Zh bGlkX3N1YnBsYW5zID0KKwkJCWxpc3RfbnRoKHBydW5lcmVzdWx0LT52YWxpZF9zdWJwbGFuX29m ZnNfbGlzdCwgcGFydF9wcnVuZV9pbmRleCk7CisJfQorCWVsc2UgaWYgKHBydW5lc3RhdGUgJiYg cHJ1bmVzdGF0ZS0+ZG9faW5pdGlhbF9wcnVuZSkKKwl7CisJCSppbml0aWFsbHlfdmFsaWRfc3Vi cGxhbnMgPSBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSwKKwkJCQkJ CQkJCQkJCQkJCSBOVUxMKTsKKwl9CiAJZWxzZQogCXsKIAkJLyogTm8gcHJ1bmluZywgc28gd2Un bGwgbmVlZCB0byBpbml0aWFsaXplIGFsbCBzdWJwbGFucyAqLwogCQlBc3NlcnQobl90b3RhbF9z dWJwbGFucyA+IDApOwogCQkqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zID0gYm1zX2FkZF9yYW5n ZShOVUxMLCAwLAogCQkJCQkJCQkJCQkJICBuX3RvdGFsX3N1YnBsYW5zIC0gMSk7CisJCXJldHVy biBwcnVuZXN0YXRlOwogCX0KIAogCS8qCkBAIC0xNjcwLDcgKzE3MjEsOCBAQCBFeGVjSW5pdFBh cnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJICogdGhhdCB3ZXJlIHJlbW92 ZWQgYWJvdmUgZHVlIHRvIGluaXRpYWwgcHJ1bmluZy4gIE5vIG5lZWQgdG8gZG8gdGhpcyBpZgog CSAqIG5vIHN0ZXBzIHdlcmUgcmVtb3ZlZC4KIAkgKi8KLQlpZiAoYm1zX251bV9tZW1iZXJzKCpp bml0aWFsbHlfdmFsaWRfc3VicGxhbnMpIDwgbl90b3RhbF9zdWJwbGFucykKKwlpZiAocHJ1bmVz dGF0ZSAmJgorCQlibXNfbnVtX21lbWJlcnMoKmluaXRpYWxseV92YWxpZF9zdWJwbGFucykgPCBu X3RvdGFsX3N1YnBsYW5zKQogCXsKIAkJLyoKIAkJICogV2UgY2FuIHNhZmVseSBza2lwIHRoaXMg d2hlbiAhZG9fZXhlY19wcnVuZSwgZXZlbiB0aG91Z2ggdGhhdApAQCAtMTY4NiwxMSArMTczOCw3 MyBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJcmV0 dXJuIHBydW5lc3RhdGU7CiB9CiAKKy8qCisgKiBFeGVjUGFydGl0aW9uRG9Jbml0aWFsUHJ1bmlu ZworICoJCVBlcmZvcm0gaW5pdGlhbCBwcnVuaW5nIHVzaW5nIGdpdmVuIFBhcnRpdGlvblBydW5l SW5mbyB0byBkZXRlcm1pbmUKKyAqCQl0aGUgbWluaW1hbCBzZXQgb2YgY2hpbGQgc3VicGxhbnMg dGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFuZCBhbHNvIHRoZQorICoJCXNldCBvZiBSVCBpbmRleGVz IG9mIHRoZSBsZWFmIHBhcnRpdGlvbnMgc2Nhbm5lZCBieSB0aG9zZSBzdWJwbGFucy4KKyAqLwor Qml0bWFwc2V0ICoKK0V4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCisJCQkJCQkJICBQYXJ0aXRpb25QcnVu ZUluZm8gKnBydW5laW5mbywKKwkJCQkJCQkgIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRp cykKK3sKKwlMaXN0CQkgKnJ0YWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CisJRXhwckNvbnRl eHQJICplY29udGV4dDsKKwlQYXJ0aXRpb25EaXJlY3RvcnkgcGRpcjsKKwlNZW1vcnlDb250ZXh0 IG9sZGNvbnRleHQsCisJCQkJICB0bXBjb250ZXh0OworCVBhcnRpdGlvblBydW5lU3RhdGUgKnBy dW5lc3RhdGU7CisJQml0bWFwc2V0CSAqdmFsaWRfc3VicGxhbl9vZmZzOworCisJLyoKKwkgKiBB IHRlbXBvcmFyeSBjb250ZXh0IGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgcmVxdWlyZWQgd2hpbGUg ZXhlY3V0aW5nCisJICogcGFydGl0aW9uIHBydW5pbmcgc3RlcHMuCisJICovCisJdG1wY29udGV4 dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJ CSAgICJpbml0aWFsIHBydW5pbmcgd29ya2luZyBkYXRhIiwKKwkJCQkJCQkJCSAgIEFMTE9DU0VU X0RFRkFVTFRfU0laRVMpOworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8odG1w Y29udGV4dCk7CisKKwkvKgorCSAqIFBhcnRpdGlvbkRpcmVjdG9yeSB0byBsb29rIHVwIHBhcnRp dGlvbiBkZXNjcmlwdG9ycywgd2hpY2ggb21pdHMKKwkgKiBkZXRhY2hlZCBwYXJ0aXRpb25zLCBq dXN0IGxpa2UgaW4gdGhlIGV4ZWN1dG9yIHByb3Blci4KKwkgKi8KKwlwZGlyID0gQ3JlYXRlUGFy dGl0aW9uRGlyZWN0b3J5KEN1cnJlbnRNZW1vcnlDb250ZXh0LCBmYWxzZSk7CisKKwkvKgorCSAq IFdlIGRvbid0IHlldCBoYXZlIGEgUGxhblN0YXRlIGZvciB0aGUgcGFyZW50IHBsYW4gbm9kZSwg c28gd2UgbXVzdAorCSAqIGNyZWF0ZSBhIHN0YW5kYWxvbmUgRXhwckNvbnRleHQgdG8gZXZhbHVh dGUgcHJ1bmluZyBleHByZXNzaW9ucywKKwkgKiBlcXVpcHBlZCB3aXRoIHRoZSBpbmZvcm1hdGlv biBhYm91dCB0aGUgRVhURVJOIHBhcmFtZXRlcnMgdGhhdCB0aGUKKwkgKiBjYWxsZXIgcGFzc2Vk IHVzLiAgTm90ZSB0aGF0IHRoYXQncyBva2F5IGJlY2F1c2UgdGhlIGluaXRpYWwgcHJ1bmluZwor CSAqIHN0ZXBzIGRvIG5vdCBjb250YWluIGFueXRoaW5nIHRoYXQgcmVxdWlyZXMgdGhlIGV4ZWN1 dGlvbiB0byBoYXZlCisJICogc3RhcnRlZC4KKwkgKi8KKwllY29udGV4dCA9IENyZWF0ZVN0YW5k YWxvbmVFeHByQ29udGV4dCgpOworCWVjb250ZXh0LT5lY3h0X3BhcmFtX2xpc3RfaW5mbyA9IHBh cmFtczsKKwlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShOVUxMLCBwcnVu ZWluZm8sIHRydWUsIGZhbHNlLAorCQkJCQkJCQkJCSAgIHJ0YWJsZSwgZWNvbnRleHQsIHBkaXIp OworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCS8qIERvIHRoZSBpbml0 aWFsIHBydW5pbmcuICovCisJdmFsaWRfc3VicGxhbl9vZmZzID0gRXhlY0ZpbmRNYXRjaGluZ1N1 YlBsYW5zKHBydW5lc3RhdGUsIHRydWUsCisJCQkJCQkJCQkJCQkgIHNjYW5fbGVhZnBhcnRfcnRp cyk7CisKKwlGcmVlRXhwckNvbnRleHQoZWNvbnRleHQsIHRydWUpOworCURlc3Ryb3lQYXJ0aXRp b25EaXJlY3RvcnkocGRpcik7CisJTWVtb3J5Q29udGV4dERlbGV0ZSh0bXBjb250ZXh0KTsKKwor CXJldHVybiB2YWxpZF9zdWJwbGFuX29mZnM7Cit9CisKIC8qCiAgKiBDcmVhdGVQYXJ0aXRpb25Q cnVuZVN0YXRlCiAgKgkJQnVpbGQgdGhlIGRhdGEgc3RydWN0dXJlIHJlcXVpcmVkIGZvciBjYWxs aW5nIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucwogICoKLSAqICdwbGFuc3RhdGUnIGlzIHRoZSBw YXJlbnQgcGxhbiBub2RlJ3MgZXhlY3V0aW9uIHN0YXRlLgorICogJ3BsYW5zdGF0ZScsIGlmIG5v dCBOVUxMLCBpcyB0aGUgcGFyZW50IHBsYW4gbm9kZSdzIGV4ZWN1dGlvbiBzdGF0ZS4gIEl0Cisg KiBjYW4gYmUgTlVMTCBpZiBiZWluZyBjYWxsZWQgYmVmb3JlIEV4ZWN1dG9yU3RhcnQoKSwgaW4g d2hpY2ggY2FzZSwKKyAqICdydGFibGUnIChyYW5nZSB0YWJsZSksICdlY29udGV4dCcsIGFuZCAn cGFydGRpcicgbXVzdCBiZSBleHBsaWNpdGx5CisgKiBwcm92aWRlZC4KICAqCiAgKiAncHJ1bmVp bmZvJyBpcyBhIFBhcnRpdGlvblBydW5lSW5mbyBhcyBnZW5lcmF0ZWQgYnkKICAqIG1ha2VfcGFy dGl0aW9uX3BydW5laW5mby4gIEhlcmUgd2UgYnVpbGQgYSBQYXJ0aXRpb25QcnVuZVN0YXRlIGNv bnRhaW5pbmcgYQpAQCAtMTcwNCwxOSArMTgxOCwyMSBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5p bmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAgKiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mby4KICAq Lwogc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKgotQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0 ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCitD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAorCQkJCQkJICBQ YXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKKwkJCQkJCSAgYm9vbCBjb25zaWRlcl9pbml0 aWFsX3N0ZXBzLAorCQkJCQkJICBib29sIGNvbnNpZGVyX2V4ZWNfc3RlcHMsCisJCQkJCQkgIExp c3QgKnJ0YWJsZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAorCQkJCQkJICBQYXJ0aXRpb25EaXJl Y3RvcnkgcGFydGRpcikKIHsKLQlFU3RhdGUJICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7 CisJRVN0YXRlCSAgICplc3RhdGUgPSBwbGFuc3RhdGUgPyBwbGFuc3RhdGUtPnN0YXRlIDogTlVM TDsKIAlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCWludAkJCW5fcGFydF9oaWVy YXJjaGllczsKIAlMaXN0Q2VsbCAgICpsYzsKIAlpbnQJCQlpOwotCUV4cHJDb250ZXh0ICplY29u dGV4dCA9IHBsYW5zdGF0ZS0+cHNfRXhwckNvbnRleHQ7CiAKLQkvKiBGb3IgZGF0YSByZWFkaW5n LCBleGVjdXRvciBhbHdheXMgb21pdHMgZGV0YWNoZWQgcGFydGl0aW9ucyAqLwotCWlmIChlc3Rh dGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnkgPT0gTlVMTCkKLQkJZXN0YXRlLT5lc19wYXJ0aXRp b25fZGlyZWN0b3J5ID0KLQkJCUNyZWF0ZVBhcnRpdGlvbkRpcmVjdG9yeShlc3RhdGUtPmVzX3F1 ZXJ5X2N4dCwgZmFsc2UpOworCUFzc2VydCgoZXN0YXRlICE9IE5VTEwpIHx8CisJCQkocGFydGRp ciAhPSBOVUxMICYmIGVjb250ZXh0ICE9IE5VTEwgJiYgcnRhYmxlICE9IE5JTCkpOwogCiAJbl9w YXJ0X2hpZXJhcmNoaWVzID0gbGlzdF9sZW5ndGgocHJ1bmVpbmZvLT5wcnVuZV9pbmZvcyk7CiAJ QXNzZXJ0KG5fcGFydF9oaWVyYXJjaGllcyA+IDApOwpAQCAtMTc3MSwxNSArMTg4Nyw0MiBAQCBD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25Q cnVuZUluZm8gKnBydW5laW5mbykKIAkJCVBhcnRpdGlvbktleSBwYXJ0a2V5OwogCiAJCQkvKgot CQkJICogV2UgY2FuIHJlbHkgb24gdGhlIGNvcGllcyBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUn cyBwYXJ0aXRpb24KLQkJCSAqIGtleSBhbmQgcGFydGl0aW9uIGRlc2NyaXB0b3IgYXBwZWFyaW5n IGluIGl0cyByZWxjYWNoZSBlbnRyeSwKLQkJCSAqIGJlY2F1c2UgdGhhdCBlbnRyeSB3aWxsIGJl IGhlbGQgb3BlbiBhbmQgbG9ja2VkIGZvciB0aGUKLQkJCSAqIGR1cmF0aW9uIG9mIHRoaXMgZXhl Y3V0b3IgcnVuLgorCQkJICogTXVzdCBvcGVuIHRoZSByZWxhdGlvbiBieSBvdXJzZWx2ZXMgd2hl biBjYWxsZWQgYmVmb3JlIHRoZQorCQkJICogZXhlY3V0aW9uIGhhcyBzdGFydGVkLCBzdWNoIGFz LCB3aGVuIGNhbGxlZCBkdXJpbmcKKwkJCSAqIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIG9u IGEgY2FjaGVkIHBsYW4uICBJbiB0aGF0IGNhc2UsCisJCQkgKiBzdWItcGFydGl0aW9ucyBtdXN0 IGJlIGxvY2tlZCwgYmVjYXVzZSBBY3F1aXJlUGxhbm5lckxvY2tzKCkKKwkJCSAqIHdvdWxkIG5v dCBoYXZlIHNlZW4gdGhlbS4gKDFzdCByZWxhdGlvbiBpbiBhIHBhcnRyZWxwcnVuZWluZm9zCisJ CQkgKiBsaXN0IGlzIGFsd2F5cyB0aGUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBhcHBlYXJpbmcg aW4gdGhlCisJCQkgKiBxdWVyeSwgd2hpY2ggQWNxdWlyZVBsYW5uZXJMb2NrcygpIHdvdWxkIGhh dmUgbG9ja2VkOyB0aGUKKwkJCSAqIEFzc2VydCBpbiByZWxhdGlvbl9vcGVuKCkgZ3VhcmRzIHRo YXQgYXNzdW1wdGlvbi4pCisJCQkgKi8KKwkJCWlmIChlc3RhdGUgPT0gTlVMTCkKKwkJCXsKKwkJ CQlSYW5nZVRibEVudHJ5ICpydGUgPSBydF9mZXRjaChwaW5mby0+cnRpbmRleCwgcnRhYmxlKTsK KwkJCQlpbnQJCWxvY2ttb2RlID0gKGogPT0gMCkgPyBOb0xvY2sgOiBydGUtPnJlbGxvY2ttb2Rl OworCisJCQkJcGFydHJlbCA9IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgbG9ja21vZGUpOworCQkJ fQorCQkJZWxzZQorCQkJCXBhcnRyZWwgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0 ZSwgcGluZm8tPnJ0aW5kZXgpOworCisJCQkvKgorCQkJICogV2UgY2FuIHJlbHkgb24gdGhlIGNv cHkgb2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxlJ3MgcGFydGl0aW9uCisJCQkgKiBrZXkgZnJvbSBp biBpdHMgcmVsY2FjaGUgZW50cnksIGJlY2F1c2UgaXQgY2FuJ3QgY2hhbmdlIChvcgorCQkJICog Z2V0IGRlc3Ryb3llZCkgYXMgbG9uZyBhcyB0aGUgcmVsYXRpb24gaXMgbG9ja2VkLiAgUGFydGl0 aW9uCisJCQkgKiBkZXNjcmlwdG9yIGlzIHRha2VuIGZyb20gdGhlIFBhcnRpdGlvbkRpcmVjdG9y eSBhc3NvY2lhdGVkIHdpdGgKKwkJCSAqIHRoZSB0YWJsZSB0aGF0IGlzIGhlbGQgb3BlbiBsb25n IGVub3VnaCBmb3IgdGhlIGRlc2NyaXB0b3IgdG8KKwkJCSAqIHJlbWFpbiB2YWxpZCB3aGlsZSBp dCdzIHVzZWQgdG8gcGVyZm9ybSB0aGUgcHJ1bmluZyBzdGVwcy4KIAkJCSAqLwotCQkJcGFydHJl bCA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7CiAJ CQlwYXJ0a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFydHJlbCk7Ci0JCQlwYXJ0ZGVz YyA9IFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1cChlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3Rv cnksCi0JCQkJCQkJCQkJCQlwYXJ0cmVsKTsKKwkJCXBhcnRkZXNjID0gUGFydGl0aW9uRGlyZWN0 b3J5TG9va3VwKHBhcnRkaXIsIHBhcnRyZWwpOworCisJCQkvKgorCQkJICogTXVzdCBjbG9zZSBw YXJ0cmVsLCBrZWVwaW5nIHRoZSBsb2NrIHRha2VuLCBpZiB3ZSdyZSBub3QgdXNpbmcKKwkJCSAq IEVTdGF0ZSdzIGVudHJ5LgorCQkJICovCisJCQlpZiAoZXN0YXRlID09IE5VTEwpCisJCQkJdGFi bGVfY2xvc2UocGFydHJlbCwgTm9Mb2NrKTsKIAogCQkJLyoKIAkJCSAqIEluaXRpYWxpemUgdGhl IHN1YnBsYW5fbWFwIGFuZCBzdWJwYXJ0X21hcC4KQEAgLTE3OTMsNiArMTkzNiw3IEBAIENyZWF0 ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5l SW5mbyAqcHJ1bmVpbmZvKQogCQkJQXNzZXJ0KHBhcnRkZXNjLT5ucGFydHMgPj0gcGluZm8tPm5w YXJ0cyk7CiAJCQlwcHJ1bmUtPm5wYXJ0cyA9IHBhcnRkZXNjLT5ucGFydHM7CiAJCQlwcHJ1bmUt PnN1YnBsYW5fbWFwID0gcGFsbG9jKHNpemVvZihpbnQpICogcGFydGRlc2MtPm5wYXJ0cyk7CisJ CQlwcHJ1bmUtPnJ0aV9tYXAgPSBwYWxsb2Moc2l6ZW9mKEluZGV4KSAqIHBhcnRkZXNjLT5ucGFy dHMpOwogCQkJaWYgKHBhcnRkZXNjLT5ucGFydHMgPT0gcGluZm8tPm5wYXJ0cykKIAkJCXsKIAkJ CQkvKgpAQCAtMTgwMyw2ICsxOTQ3LDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFu U3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJcHBy dW5lLT5zdWJwYXJ0X21hcCA9IHBpbmZvLT5zdWJwYXJ0X21hcDsKIAkJCQltZW1jcHkocHBydW5l LT5zdWJwbGFuX21hcCwgcGluZm8tPnN1YnBsYW5fbWFwLAogCQkJCQkgICBzaXplb2YoaW50KSAq IHBpbmZvLT5ucGFydHMpOworCQkJCW1lbWNweShwcHJ1bmUtPnJ0aV9tYXAsIHBpbmZvLT5ydGlf bWFwLAorCQkJCQkgICBzaXplb2YoaW50KSAqIHBpbmZvLT5ucGFydHMpOwogCiAJCQkJLyoKIAkJ CQkgKiBEb3VibGUtY2hlY2sgdGhhdCB0aGUgbGlzdCBvZiB1bnBydW5lZCByZWxhdGlvbnMgaGFz IG5vdApAQCAtMTg1Myw2ICsxOTk5LDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFu U3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJCQkJ cGluZm8tPnN1YnBsYW5fbWFwW3BkX2lkeF07CiAJCQkJCQlwcHJ1bmUtPnN1YnBhcnRfbWFwW3Bw X2lkeF0gPQogCQkJCQkJCXBpbmZvLT5zdWJwYXJ0X21hcFtwZF9pZHhdOworCQkJCQkJcHBydW5l LT5ydGlfbWFwW3BwX2lkeF0gPQorCQkJCQkJCXBpbmZvLT5ydGlfbWFwW3BkX2lkeF07CiAJCQkJ CQlwZF9pZHgrKzsKIAkJCQkJfQogCQkJCQllbHNlCkBAIC0xODYwLDYgKzIwMDgsNyBAQCBDcmVh dGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVu ZUluZm8gKnBydW5laW5mbykKIAkJCQkJCS8qIHRoaXMgcGFydGRlc2MgZW50cnkgaXMgbm90IGlu IHRoZSBwbGFuICovCiAJCQkJCQlwcHJ1bmUtPnN1YnBsYW5fbWFwW3BwX2lkeF0gPSAtMTsKIAkJ CQkJCXBwcnVuZS0+c3VicGFydF9tYXBbcHBfaWR4XSA9IC0xOworCQkJCQkJcHBydW5lLT5ydGlf bWFwW3BwX2lkeF0gPSAwOwogCQkJCQl9CiAJCQkJfQogCkBAIC0xODgxLDcgKzIwMzAsNyBAQCBD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25Q cnVuZUluZm8gKnBydW5laW5mbykKIAkJCSAqIEluaXRpYWxpemUgcHJ1bmluZyBjb250ZXh0cyBh cyBuZWVkZWQuCiAJCQkgKi8KIAkJCXBwcnVuZS0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzID0gcGlu Zm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwczsKLQkJCWlmIChwaW5mby0+aW5pdGlhbF9wcnVuaW5n X3N0ZXBzKQorCQkJaWYgKGNvbnNpZGVyX2luaXRpYWxfc3RlcHMgJiYgcGluZm8tPmluaXRpYWxf cHJ1bmluZ19zdGVwcykKIAkJCXsKIAkJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1 bmUtPmluaXRpYWxfY29udGV4dCwKIAkJCQkJCQkJCQkgIHBpbmZvLT5pbml0aWFsX3BydW5pbmdf c3RlcHMsCkBAIC0xODkxLDcgKzIwNDAsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBs YW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQlw cnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lID0gdHJ1ZTsKIAkJCX0KIAkJCXBwcnVuZS0+ZXhl Y19wcnVuaW5nX3N0ZXBzID0gcGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwczsKLQkJCWlmIChwaW5m by0+ZXhlY19wcnVuaW5nX3N0ZXBzKQorCQkJaWYgKGNvbnNpZGVyX2V4ZWNfc3RlcHMgJiYgcGlu Zm8tPmV4ZWNfcHJ1bmluZ19zdGVwcykKIAkJCXsKIAkJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250 ZXh0KCZwcHJ1bmUtPmV4ZWNfY29udGV4dCwKIAkJCQkJCQkJCQkgIHBpbmZvLT5leGVjX3BydW5p bmdfc3RlcHMsCkBAIC0yMTE5LDEwICsyMjY4LDE0IEBAIFBhcnRpdGlvblBydW5lRml4U3ViUGxh bk1hcChQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogICogUGFzcyBpbml0aWFsX3By dW5lIGlmIFBBUkFNX0VYRUMgUGFyYW1zIGNhbm5vdCB5ZXQgYmUgZXZhbHVhdGVkLiAgVGhpcwog ICogZGlmZmVyZW50aWF0ZXMgdGhlIGluaXRpYWwgZXhlY3V0b3ItdGltZSBwcnVuaW5nIHN0ZXAg ZnJvbSBsYXRlcgogICogcnVudGltZSBwcnVuaW5nLgorICoKKyAqIFJUIGluZGV4ZXMgb2YgbGVh ZiBwYXJ0aXRpb25zIHNjYW5uZWQgYnkgdGhlIGNob3NlbiBzdWJwbGFucyBhcmUgYWRkZWQgdG8K KyAqICpzY2FuX2xlYWZwYXJ0X3J0aXMgaWYgdGhlIHBvaW50ZXIgaXMgbm9uLU5VTEwuCiAgKi8K IEJpdG1hcHNldCAqCiBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0 ZSAqcHJ1bmVzdGF0ZSwKLQkJCQkJCSBib29sIGluaXRpYWxfcHJ1bmUpCisJCQkJCQkgYm9vbCBp bml0aWFsX3BydW5lLAorCQkJCQkJIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcykKIHsK IAlCaXRtYXBzZXQgICpyZXN1bHQgPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsK QEAgLTIxNTcsNyArMjMxMCw3IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25Q cnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCQkgKi8KIAkJcHBydW5lID0gJnBydW5lZGF0YS0+cGFy dHJlbHBydW5lZGF0YVswXTsKIAkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5l ZGF0YSwgcHBydW5lLCBpbml0aWFsX3BydW5lLAotCQkJCQkJCQkJICAgJnJlc3VsdCk7CisJCQkJ CQkJCQkgICAmcmVzdWx0LCBzY2FuX2xlYWZwYXJ0X3J0aXMpOwogCiAJCS8qIEV4cHJlc3Npb24g ZXZhbCBtYXkgaGF2ZSB1c2VkIHNwYWNlIGluIEV4cHJDb250ZXh0IHRvbyAqLwogCQlpZiAocHBy dW5lLT5leGVjX3BydW5pbmdfc3RlcHMpCkBAIC0yMTcxLDYgKzIzMjQsOCBAQCBFeGVjRmluZE1h dGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAogCS8qIENv cHkgcmVzdWx0IG91dCBvZiB0aGUgdGVtcCBjb250ZXh0IGJlZm9yZSB3ZSByZXNldCBpdCAqLwog CXJlc3VsdCA9IGJtc19jb3B5KHJlc3VsdCk7CisJaWYgKHNjYW5fbGVhZnBhcnRfcnRpcykKKwkJ KnNjYW5fbGVhZnBhcnRfcnRpcyA9IGJtc19jb3B5KCpzY2FuX2xlYWZwYXJ0X3J0aXMpOwogCiAJ TWVtb3J5Q29udGV4dFJlc2V0KHBydW5lc3RhdGUtPnBydW5lX2NvbnRleHQpOwogCkBAIC0yMTgx LDEzICsyMzM2LDE1IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0 YXRlICpwcnVuZXN0YXRlLAogICogZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlCiAgKgkJ UmVjdXJzaXZlIHdvcmtlciBmdW5jdGlvbiBmb3IgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zCiAg KgotICogQWRkcyB2YWxpZCAobm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRzdWJw bGFucworICogQWRkcyB2YWxpZCAobm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRz dWJwbGFucyBhbmQgUlQgaW5kZXhlcyBvZgorICogb2YgdGhlIGNvcnJlc3BvbmRpbmcgbGVhZiBw YXJ0aXRpb25zIHRvICpzY2FuX2xlYWZwYXJ0X3J0aXMgKGlmIGFza2VkIGZvcikuCiAgKi8KIHN0 YXRpYyB2b2lkCiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmlu Z0RhdGEgKnBydW5lZGF0YSwKIAkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpw cHJ1bmUsCiAJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAotCQkJCQkJCSAgIEJpdG1hcHNl dCAqKnZhbGlkc3VicGxhbnMpCisJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucywK KwkJCQkJCQkgICBCaXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpCiB7CiAJQml0bWFwc2V0 ICAqcGFydHNldDsKIAlpbnQJCQlpOwpAQCAtMjIxNCw4ICsyMzcxLDE0IEBAIGZpbmRfbWF0Y2hp bmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCXdo aWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihwYXJ0c2V0LCBpKSkgPj0gMCkKIAl7CiAJCWlmIChw cHJ1bmUtPnN1YnBsYW5fbWFwW2ldID49IDApCisJCXsKIAkJCSp2YWxpZHN1YnBsYW5zID0gYm1z X2FkZF9tZW1iZXIoKnZhbGlkc3VicGxhbnMsCiAJCQkJCQkJCQkJCXBwcnVuZS0+c3VicGxhbl9t YXBbaV0pOworCQkJQXNzZXJ0KHBwcnVuZS0+cnRpX21hcFtpXSA+IDApOworCQkJaWYgKHNjYW5f bGVhZnBhcnRfcnRpcykKKwkJCQkqc2Nhbl9sZWFmcGFydF9ydGlzID0gYm1zX2FkZF9tZW1iZXIo KnNjYW5fbGVhZnBhcnRfcnRpcywKKwkJCQkJCQkJCQkJCQkgcHBydW5lLT5ydGlfbWFwW2ldKTsK KwkJfQogCQllbHNlCiAJCXsKIAkJCWludAkJCXBhcnRpZHggPSBwcHJ1bmUtPnN1YnBhcnRfbWFw W2ldOwpAQCAtMjIyMyw3ICsyMzg2LDggQEAgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNl KFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQlpZiAocGFydGlkeCA+PSAwKQog CQkJCWZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShwcnVuZWRhdGEsCiAJCQkJCQkJCQkJ CSAgICZwcnVuZWRhdGEtPnBhcnRyZWxwcnVuZWRhdGFbcGFydGlkeF0sCi0JCQkJCQkJCQkJCSAg IGluaXRpYWxfcHJ1bmUsIHZhbGlkc3VicGxhbnMpOworCQkJCQkJCQkJCQkgICBpbml0aWFsX3By dW5lLCB2YWxpZHN1YnBsYW5zLAorCQkJCQkJCQkJCQkgICBzY2FuX2xlYWZwYXJ0X3J0aXMpOwog CQkJZWxzZQogCQkJewogCQkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9m dW5jdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IGY5NDYw YWU1MDYuLmEyMTgyYTZiMWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0 aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC04NDQsNyAr ODQ0LDcgQEAgcG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25D YWNoZVB0ciBmY2FjaGUpCiAJZWxzZQogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAotCWVzLT5x ZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwKKwllcy0+cWQgPSBDcmVhdGVRdWVyeURlc2Mo ZXMtPnN0bXQsIE5VTEwsCiAJCQkJCQkJIGZjYWNoZS0+c3JjLAogCQkJCQkJCSBHZXRBY3RpdmVT bmFwc2hvdCgpLAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBw ZW5kLmMKaW5kZXggYzZmODZhNjUxMC4uOTY4ODBlMTIyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVB cHBlbmQuYwpAQCAtMTU1LDcgKzE1NSw4IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCSAqIHN1YnBsYW4sIHdlIGNhbiBmaWxsIGFz X3ZhbGlkX3N1YnBsYW5zIGltbWVkaWF0ZWx5LCBwcmV2ZW50aW5nCiAJCSAqIGxhdGVyIGNhbGxz IHRvIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucy4KIAkJICovCi0JCWlmICghcHJ1bmVzdGF0ZS0+ ZG9fZXhlY19wcnVuZSAmJiBucGxhbnMgPiAwKQorCQlpZiAoYXBwZW5kc3RhdGUtPmFzX3BydW5l X3N0YXRlID09IE5VTEwgfHwKKwkJCSghYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlLT5kb19l eGVjX3BydW5lICYmIG5wbGFucyA+IDApKQogCQkJYXBwZW5kc3RhdGUtPmFzX3ZhbGlkX3N1YnBs YW5zID0gYm1zX2FkZF9yYW5nZShOVUxMLCAwLCBucGxhbnMgLSAxKTsKIAl9CiAJZWxzZQpAQCAt NTc3LDcgKzU3OCw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fbG9jYWxseShBcHBlbmRTdGF0ZSAq bm9kZSkKIAkJfQogCQllbHNlIGlmIChub2RlLT5hc192YWxpZF9zdWJwbGFucyA9PSBOVUxMKQog CQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFu cyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQ bGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCiAJCXdoaWNocGxhbiA9 IC0xOwogCX0KQEAgLTY0Miw3ICs2NDMsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl9sZWFk ZXIoQXBwZW5kU3RhdGUgKm5vZGUpCiAJCWlmIChub2RlLT5hc192YWxpZF9zdWJwbGFucyA9PSBO VUxMKQogCQl7CiAJCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRj aGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRN YXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAKIAkJ CS8qCiAJCQkgKiBNYXJrIGVhY2ggaW52YWxpZCBwbGFuIGFzIGZpbmlzaGVkIHRvIGFsbG93IHRo ZSBsb29wIGJlbG93IHRvCkBAIC03MTcsNyArNzE4LDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9m b3Jfd29ya2VyKEFwcGVuZFN0YXRlICpub2RlKQogCWVsc2UgaWYgKG5vZGUtPmFzX3ZhbGlkX3N1 YnBsYW5zID09IE5VTEwpCiAJewogCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQlFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCUV4 ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwp OwogCQltYXJrX2ludmFsaWRfc3VicGxhbnNfYXNfZmluaXNoZWQobm9kZSk7CiAJfQogCkBAIC04 NjgsNyArODY5LDcgQEAgRXhlY0FwcGVuZEFzeW5jQmVnaW4oQXBwZW5kU3RhdGUgKm5vZGUpCiAJ aWYgKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJewogCQlub2RlLT5hc192YWxp ZF9zdWJwbGFucyA9Ci0JCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVf c3RhdGUsIGZhbHNlKTsKKwkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVu ZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCiAJCWNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKG5v ZGUpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVu ZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggOGQzNTg2 MGMzMC4uMjMxMmU1YTYzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMK QEAgLTEwMyw3ICsxMDMsOCBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogc3VicGxhbiwgd2UgY2FuIGZpbGwg bXNfdmFsaWRfc3VicGxhbnMgaW1tZWRpYXRlbHksIHByZXZlbnRpbmcKIAkJICogbGF0ZXIgY2Fs bHMgdG8gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zLgogCQkgKi8KLQkJaWYgKCFwcnVuZXN0YXRl LT5kb19leGVjX3BydW5lICYmIG5wbGFucyA+IDApCisJCWlmIChtZXJnZXN0YXRlLT5tc19wcnVu ZV9zdGF0ZSA9PSBOVUxMIHx8CisJCQkoIW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlLT5kb19l eGVjX3BydW5lICYmIG5wbGFucyA+IDApKQogCQkJbWVyZ2VzdGF0ZS0+bXNfdmFsaWRfc3VicGxh bnMgPSBibXNfYWRkX3JhbmdlKE5VTEwsIDAsIG5wbGFucyAtIDEpOwogCX0KIAllbHNlCkBAIC0y MTgsNyArMjE5LDcgQEAgRXhlY01lcmdlQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkgKi8K IAkJaWYgKG5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJCQlub2RlLT5tc192YWxp ZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPm1zX3BydW5l X3N0YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPm1zX3By dW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAKIAkJLyoKIAkJICogRmlyc3QgdGltZSB0aHJvdWdo OiBwdWxsIHRoZSBmaXJzdCB0dXBsZSBmcm9tIGVhY2ggdmFsaWQgc3VicGxhbiwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3Bp LmMKaW5kZXggMjliYzI2NjY5Yi4uMzAzYTU3MmMwMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTE1Nzgs NiArMTU3OCw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBT UElQbGFuUHRyIHBsYW4sCiAJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZTsKIAlDYWNoZWRQ bGFuICpjcGxhbjsKIAlMaXN0CSAgICpzdG10X2xpc3Q7CisJTGlzdAkgICAqcGFydF9wcnVuZV9y ZXN1bHRfbGlzdDsKIAljaGFyCSAgICpxdWVyeV9zdHJpbmc7CiAJU25hcHNob3QJc25hcHNob3Q7 CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwpAQCAtMTY1Nyw3ICsxNjU4LDEwIEBAIFNQSV9j dXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJ ICovCiAKIAkvKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgaW5jcmVtZW50IHBsYW4gcmVmY291bnQg Zm9yIHBvcnRhbCAqLwotCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBwYXJhbUxJ LCBOVUxMLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKKwljcGxhbiA9IEdldENhY2hlZFBsYW4o cGxhbnNvdXJjZSwgcGFyYW1MSSwgTlVMTCwgX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKKwkJCQkJ CSAgJnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOworCUFzc2VydChsaXN0X2xlbmd0aChjcGxhbi0+ c3RtdF9saXN0KSA9PQorCQkgICBsaXN0X2xlbmd0aChwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KSk7 CiAJc3RtdF9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCWlmICghcGxhbi0+c2F2ZWQpCkBA IC0xNjg1LDYgKzE2ODksOSBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAq bmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCQkJCQkgIHN0bXRfbGlzdCwKIAkJCQkJICBjcGxhbik7 CiAKKwkvKiBDb3B5IFBhcnRpdGlvblBydW5lUmVzdWx0cyBpbnRvIHRoZSBwb3J0YWwncyBjb250 ZXh0LiAqLworCVBvcnRhbFN0b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKHBvcnRhbCwgcGFydF9w cnVuZV9yZXN1bHRfbGlzdCk7CisKIAkvKgogCSAqIFNldCB1cCBvcHRpb25zIGZvciBwb3J0YWwu ICBEZWZhdWx0IFNDUk9MTCB0eXBlIGlzIGNob3NlbiB0aGUgc2FtZSB3YXkKIAkgKiBhcyBQZXJm b3JtQ3Vyc29yT3BlbiBkb2VzIGl0LgpAQCAtMjA5Miw3ICsyMDk5LDggQEAgU1BJX3BsYW5fZ2V0 X2NhY2hlZF9wbGFuKFNQSVBsYW5QdHIgcGxhbikKIAkvKiBHZXQgdGhlIGdlbmVyaWMgcGxhbiBm b3IgdGhlIHF1ZXJ5ICovCiAJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIE5VTEws CiAJCQkJCQkgIHBsYW4tPnNhdmVkID8gQ3VycmVudFJlc291cmNlT3duZXIgOiBOVUxMLAotCQkJ CQkJICBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKKwkJCQkJCSAgX1NQSV9jdXJyZW50LT5xdWVy eUVudiwKKwkJCQkJCSAgTlVMTCAvKiBOb3QgaW50ZXJlc3RlZCBpbiBQYXJ0aXRpb25QcnVuZVJl c3VsdHMgKi8pOwogCUFzc2VydChjcGxhbiA9PSBwbGFuc291cmNlLT5ncGxhbik7CiAKIAkvKiBQ b3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KQEAgLTI0NzMsNyArMjQ4MSw5IEBAIF9TUElf ZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9w dGlvbnMsCiAJewogCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlID0gKENhY2hlZFBsYW5T b3VyY2UgKikgbGZpcnN0KGxjMSk7CiAJCUxpc3QJICAgKnN0bXRfbGlzdDsKLQkJTGlzdENlbGwg ICAqbGMyOworCQlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0OworCQlMaXN0Q2VsbCAg ICpsYzIsCisJCQkJICAgKmxjMzsKIAogCQlzcGljYWxsYmFja2FyZy5xdWVyeSA9IHBsYW5zb3Vy Y2UtPnF1ZXJ5X3N0cmluZzsKIApAQCAtMjU0OSw4ICsyNTU5LDEwIEBAIF9TUElfZXhlY3V0ZV9w bGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJ CSAqIHBsYW4sIHRoZSByZWZjb3VudCBtdXN0IGJlIGJhY2tlZCBieSB0aGUgcGxhbl9vd25lci4K IAkJICovCiAJCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBvcHRpb25zLT5wYXJh bXMsCi0JCQkJCQkJICBwbGFuX293bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKLQorCQkJ CQkJCSAgcGxhbl9vd25lciwgX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKKwkJCQkJCQkgJnBhcnRf cHJ1bmVfcmVzdWx0X2xpc3QpOworCQlBc3NlcnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0bXRfbGlz dCkgPT0KKwkJCSAgIGxpc3RfbGVuZ3RoKHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpKTsKIAkJc3Rt dF9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCQkvKgpAQCAtMjU4OSw5ICsyNjAxLDEwIEBA IF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlv bnMgKm9wdGlvbnMsCiAJCQl9CiAJCX0KIAotCQlmb3JlYWNoKGxjMiwgc3RtdF9saXN0KQorCQlm b3Jib3RoKGxjMiwgc3RtdF9saXN0LCBsYzMsIHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpCiAJCXsK IAkJCVBsYW5uZWRTdG10ICpzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMik7CisJ CQlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1bHQgPSBsZmlyc3Rfbm9kZShQ YXJ0aXRpb25QcnVuZVJlc3VsdCwgbGMzKTsKIAkJCWJvb2wJCWNhblNldFRhZyA9IHN0bXQtPmNh blNldFRhZzsKIAkJCURlc3RSZWNlaXZlciAqZGVzdDsKIApAQCAtMjY2Myw3ICsyNjc2LDcgQEAg X1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9u cyAqb3B0aW9ucywKIAkJCQllbHNlCiAJCQkJCXNuYXAgPSBJbnZhbGlkU25hcHNob3Q7CiAKLQkJ CQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlE ZXNjKHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0LAogCQkJCQkJCQkJCXBsYW5zb3VyY2UtPnF1ZXJ5 X3N0cmluZywKIAkJCQkJCQkJCQlzbmFwLCBjcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJCQkJ CWRlc3QsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyBiL3NyYy9i YWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCmluZGV4IDE0MjE2ODY5MzguLmQ1NzQ3OGJkZTkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L25vZGVzL3JlYWRmdW5jcy5jCkBAIC0xNTgsNiArMTU4LDExIEBACiAJdG9rZW4gPSBwZ19zdHJ0 b2soJmxlbmd0aCk7CQkvKiBza2lwIDpmbGRuYW1lICovIFwKIAlsb2NhbF9ub2RlLT5mbGRuYW1l ID0gcmVhZEludENvbHMobGVuKQogCisvKiBSZWFkIGFuIEluZGV4IGFycmF5ICovCisjZGVmaW5l IFJFQURfSU5ERVhfQVJSQVkoZmxkbmFtZSwgbGVuKSBcCisJdG9rZW4gPSBwZ19zdHJ0b2soJmxl bmd0aCk7CQkvKiBza2lwIDpmbGRuYW1lICovIFwKKwlsb2NhbF9ub2RlLT5mbGRuYW1lID0gcmVh ZEluZGV4Q29scyhsZW4pCisKIC8qIFJlYWQgYSBib29sIGFycmF5ICovCiAjZGVmaW5lIFJFQURf Qk9PTF9BUlJBWShmbGRuYW1lLCBsZW4pIFwKIAl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsJ CS8qIHNraXAgOmZsZG5hbWUgKi8gXApAQCAtNjIzLDYgKzYyOCwzMCBAQCByZWFkSW50Q29scyhp bnQgbnVtQ29scykKIAlyZXR1cm4gaW50X3ZhbHM7CiB9CiAKKy8qCisgKiByZWFkSW5kZXhDb2xz CisgKi8KK0luZGV4ICoKK3JlYWRJbmRleENvbHMoaW50IG51bUNvbHMpCit7CisJaW50CQkJdG9r ZW5MZW5ndGgsCisJCQkJaTsKKwljb25zdCBjaGFyICp0b2tlbjsKKwlJbmRleAkgICAqaW5kZXhf dmFsczsKKworCWlmIChudW1Db2xzIDw9IDApCisJCXJldHVybiBOVUxMOworCisJaW5kZXhfdmFs cyA9IChJbmRleCAqKSBwYWxsb2MobnVtQ29scyAqIHNpemVvZihJbmRleCkpOworCWZvciAoaSA9 IDA7IGkgPCBudW1Db2xzOyBpKyspCisJeworCQl0b2tlbiA9IHBnX3N0cnRvaygmdG9rZW5MZW5n dGgpOworCQlpbmRleF92YWxzW2ldID0gYXRvdWkodG9rZW4pOworCX0KKworCXJldHVybiBpbmRl eF92YWxzOworfQorCiAvKgogICogcmVhZEJvb2xDb2xzCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3BsYW5uZXIuYwppbmRleCBiMTEyNDllZDhmLi43MTQxMDM1Y2M0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC01MTksNyArNTE5LDkgQEAgc3RhbmRhcmRfcGxhbm5l cihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywgaW50IGN1cnNvck9wdGlv bnMsCiAJcmVzdWx0LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBnbG9iLT5wYXJhbGxlbE1vZGVOZWVk ZWQ7CiAJcmVzdWx0LT5wbGFuVHJlZSA9IHRvcF9wbGFuOwogCXJlc3VsdC0+cGFydFBydW5lSW5m b3MgPSBnbG9iLT5wYXJ0UHJ1bmVJbmZvczsKKwlyZXN1bHQtPmNvbnRhaW5zSW5pdGlhbFBydW5p bmcgPSBnbG9iLT5jb250YWluc0luaXRpYWxQcnVuaW5nOwogCXJlc3VsdC0+cnRhYmxlID0gZ2xv Yi0+ZmluYWxydGFibGU7CisJcmVzdWx0LT5taW5Mb2NrUmVsaWRzID0gZ2xvYi0+bWluTG9ja1Jl bGlkczsKIAlyZXN1bHQtPnJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsK IAlyZXN1bHQtPmFwcGVuZFJlbGF0aW9ucyA9IGdsb2ItPmFwcGVuZFJlbGF0aW9uczsKIAlyZXN1 bHQtPnN1YnBsYW5zID0gZ2xvYi0+c3VicGxhbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRy ZWZzLmMKaW5kZXggYjhkNTYxMDU5My4uZGE3NDllMzMxZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3NldHJlZnMuYwpAQCAtMjcwLDYgKzI3MCwxNiBAQCBzZXRfcGxhbl9yZWZlcmVuY2VzKFBs YW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuKQogCSAqLwogCWFkZF9ydGVzX3RvX2ZsYXRfcnRh YmxlKHJvb3QsIGZhbHNlKTsKIAorCS8qCisJICogQWRkIHRoZSBxdWVyeSdzIGFkanVzdGVkIHJh bmdlIG9mIFJUIGluZGV4ZXMgdG8gZ2xvYi0+bWluTG9ja1JlbGlkcy4KKwkgKiBUaGUgYWRqdXN0 ZWQgUlQgaW5kZXhlcyBvZiBwcnVuYWJsZSByZWxhdGlvbnMgd2lsbCBiZSBkZWxldGVkIGZyb20g dGhlCisJICogc2V0IGJlbG93IHdoZXJlIFBhcnRpdGlvblBydW5lSW5mb3MgYXJlIHByb2Nlc3Nl ZC4KKwkgKi8KKwlnbG9iLT5taW5Mb2NrUmVsaWRzID0KKwkJYm1zX2FkZF9yYW5nZShnbG9iLT5t aW5Mb2NrUmVsaWRzLAorCQkJCQkgIHJ0b2Zmc2V0ICsgMSwKKwkJCQkJICBydG9mZnNldCArIGxp c3RfbGVuZ3RoKHJvb3QtPnBhcnNlLT5ydGFibGUpKTsKKwogCS8qCiAJICogQWRqdXN0IFJUIGlu ZGV4ZXMgb2YgUGxhblJvd01hcmtzIGFuZCBhZGQgdG8gZmluYWwgcm93bWFya3MgbGlzdAogCSAq LwpAQCAtMzUyLDYgKzM2Miw3IEBAIHNldF9wbGFuX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJv b3QsIFBsYW4gKnBsYW4pCiAJZm9yZWFjaCAobGMsIHJvb3QtPnBhcnRQcnVuZUluZm9zKQogCXsK IAkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8gPSBsZmlyc3QobGMpOworCQlCaXRtYXBz ZXQgKmxlYWZwYXJ0X3J0aXMgPSBOVUxMOwogCQlMaXN0Q2VsbCAgKmw7CiAKIAkJZm9yZWFjaChs LCBwcnVuZWluZm8tPnBydW5lX2luZm9zKQpAQCAtMzYyLDE1ICszNzMsNTAgQEAgc2V0X3BsYW5f cmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbikKIAkJCWZvcmVhY2gobDIs IHBydW5lX2luZm9zKQogCQkJewogCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9 IGxmaXJzdChsMik7CisJCQkJaW50CQlpOwogCiAJCQkJLyogUlQgaW5kZXggb2YgdGhlIHRhYmxl IHRvIHdoaWNoIHRoZSBwaW5mbyBiZWxvbmdzLiAqLwogCQkJCXBpbmZvLT5ydGluZGV4ICs9IHJ0 b2Zmc2V0OworCisJCQkJLyogQWxzbyBvZiB0aGUgbGVhZiBwYXJ0aXRpb25zIHRoYXQgbWlnaHQg YmUgc2Nhbm5lZC4gKi8KKwkJCQlmb3IgKGkgPSAwOyBpIDwgcGluZm8tPm5wYXJ0czsgaSsrKQor CQkJCXsKKwkJCQkJaWYgKHBpbmZvLT5ydGlfbWFwW2ldID4gMCAmJiBwaW5mby0+c3VicGxhbl9t YXBbaV0gPj0gMCkKKwkJCQkJeworCQkJCQkJcGluZm8tPnJ0aV9tYXBbaV0gKz0gcnRvZmZzZXQ7 CisJCQkJCQlsZWFmcGFydF9ydGlzID0gYm1zX2FkZF9tZW1iZXIobGVhZnBhcnRfcnRpcywKKwkJ CQkJCQkJCQkJCQkgICBwaW5mby0+cnRpX21hcFtpXSk7CisJCQkJCX0KKwkJCQl9CiAJCQl9CiAJ CX0KIAorCQlpZiAocHJ1bmVpbmZvLT5uZWVkc19pbml0X3BydW5pbmcpCisJCXsKKwkJCWdsb2It PmNvbnRhaW5zSW5pdGlhbFBydW5pbmcgPSB0cnVlOworCisJCQkvKgorCQkJICogRGVsZXRlIHRo ZSBsZWFmIHBhcnRpdGlvbiBSVElzIGZyb20gdGhlIGdsb2JhbCBzZXQgb2YgcmVsYXRpb25zCisJ CQkgKiB0byBiZSBsb2NrZWQgYmVmb3JlIGV4ZWN1dGluZyB0aGUgcGxhbi4gIEFjcXVpcmVFeGVj dXRvckxvY2tzKCkKKwkJCSAqIHdpbGwgZmluZCB0aGUgb25lcyB0byBhZGQgdG8gdGhlIHNldCBh ZnRlciBwZXJmb3JtaW5nIGluaXRpYWwKKwkJCSAqIHBydW5pbmcuCisJCQkgKi8KKwkJCWdsb2It Pm1pbkxvY2tSZWxpZHMgPSBibXNfZGVsX21lbWJlcnMoZ2xvYi0+bWluTG9ja1JlbGlkcywKKwkJ CQkJCQkJCQkJCSAgbGVhZnBhcnRfcnRpcyk7CisJCX0KKwogCQlnbG9iLT5wYXJ0UHJ1bmVJbmZv cyA9IGxhcHBlbmQoZ2xvYi0+cGFydFBydW5lSW5mb3MsIHBydW5laW5mbyk7CiAJfQogCisJLyoK KwkgKiBJdCBzZWVtcyB3b3J0aCBkb2luZyBhIGJtc19jb3B5KCkgb24gZ2xvYi0+bWluTG9ja1Jl bGlkcyBpZiB3ZSBkZWxldGVkCisJICogYml0cyBmcm9tIGl0IGFib3ZlIHRvIGdldCByaWQgb2Yg YW55IGVtcHR5IHRhaWwgYml0cy4gIEl0IHNlZW1zIGJldHRlcgorCSAqIGZvciB0aGUgbG9vcCBv dmVyIHRoaXMgc2V0IGluIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgdG8gbm90IGhhdmUgdG8gZ28K KwkgKiB0aHJvdWdoIHRob3NlIHVzZWxlc3MgYml0IHdvcmRzLgorCSAqLworCWlmIChnbG9iLT5j b250YWluc0luaXRpYWxQcnVuaW5nKQorCQlnbG9iLT5taW5Mb2NrUmVsaWRzID0gYm1zX2NvcHko Z2xvYi0+bWluTG9ja1JlbGlkcyk7CisKIAlyZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmMKaW5kZXggZDc3ZjdkM2FlZi4uOTUyYzViODMyNyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwpAQCAtMTQ0LDcgKzE0NCw5IEBAIHN0YXRpYyBM aXN0ICptYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwKIAkJ CQkJCQkJCQkgICBMaXN0ICpwcnVuZXF1YWwsCiAJCQkJCQkJCQkJICAgQml0bWFwc2V0ICpwYXJ0 cmVsaWRzLAogCQkJCQkJCQkJCSAgIGludCAqcmVsaWRfc3VicGxhbl9tYXAsCi0JCQkJCQkJCQkJ ICAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5zKTsKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQg KiptYXRjaGVkc3VicGxhbnMsCisJCQkJCQkJCQkJICAgYm9vbCAqbmVlZHNfaW5pdF9wcnVuaW5n LAorCQkJCQkJCQkJCSAgIGJvb2wgKm5lZWRzX2V4ZWNfcHJ1bmluZyk7CiBzdGF0aWMgdm9pZCBn ZW5fcGFydHBydW5lX3N0ZXBzKFJlbE9wdEluZm8gKnJlbCwgTGlzdCAqY2xhdXNlcywKIAkJCQkJ CQkJUGFydENsYXVzZVRhcmdldCB0YXJnZXQsCiAJCQkJCQkJCUdlbmVyYXRlUHJ1bmluZ1N0ZXBz Q29udGV4dCAqY29udGV4dCk7CkBAIC0yMzQsNiArMjM2LDggQEAgbWFrZV9wYXJ0aXRpb25fcHJ1 bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJaW50CQkg ICAqcmVsaWRfc3VicGxhbl9tYXA7CiAJTGlzdENlbGwgICAqbGM7CiAJaW50CQkJaTsKKwlib29s CQluZWVkc19pbml0X3BydW5pbmcgPSBmYWxzZTsKKwlib29sCQluZWVkc19leGVjX3BydW5pbmcg PSBmYWxzZTsKIAogCS8qCiAJICogU2NhbiB0aGUgc3VicGF0aHMgdG8gc2VlIHdoaWNoIG9uZXMg YXJlIHNjYW5zIG9mIHBhcnRpdGlvbiBjaGlsZApAQCAtMzEzLDEyICszMTcsMTYgQEAgbWFrZV9w YXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRy ZWwsCiAJCUJpdG1hcHNldCAgKnBhcnRyZWxpZHMgPSAoQml0bWFwc2V0ICopIGxmaXJzdChsYyk7 CiAJCUxpc3QJICAgKnBpbmZvbGlzdDsKIAkJQml0bWFwc2V0ICAqbWF0Y2hlZHN1YnBsYW5zID0g TlVMTDsKKwkJYm9vbAkJcGFydHJlbF9uZWVkc19pbml0X3BydW5pbmc7CisJCWJvb2wJCXBhcnRy ZWxfbmVlZHNfZXhlY19wcnVuaW5nOwogCiAJCXBpbmZvbGlzdCA9IG1ha2VfcGFydGl0aW9uZWRy ZWxfcHJ1bmVpbmZvKHJvb3QsIHBhcmVudHJlbCwKIAkJCQkJCQkJCQkJCSAgcHJ1bmVxdWFsLAog CQkJCQkJCQkJCQkJICBwYXJ0cmVsaWRzLAogCQkJCQkJCQkJCQkJICByZWxpZF9zdWJwbGFuX21h cCwKLQkJCQkJCQkJCQkJCSAgJm1hdGNoZWRzdWJwbGFucyk7CisJCQkJCQkJCQkJCQkgICZtYXRj aGVkc3VicGxhbnMsCisJCQkJCQkJCQkJCQkgICZwYXJ0cmVsX25lZWRzX2luaXRfcHJ1bmluZywK KwkJCQkJCQkJCQkJCSAgJnBhcnRyZWxfbmVlZHNfZXhlY19wcnVuaW5nKTsKIAogCQkvKiBXaGVu IHBydW5pbmcgaXMgcG9zc2libGUsIHJlY29yZCB0aGUgbWF0Y2hlZCBzdWJwbGFucyAqLwogCQlp ZiAocGluZm9saXN0ICE9IE5JTCkKQEAgLTMyNyw2ICszMzUsOSBAQCBtYWtlX3BhcnRpdGlvbl9w cnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCWFs bG1hdGNoZWRzdWJwbGFucyA9IGJtc19qb2luKG1hdGNoZWRzdWJwbGFucywKIAkJCQkJCQkJCQkg IGFsbG1hdGNoZWRzdWJwbGFucyk7CiAJCX0KKworCQluZWVkc19pbml0X3BydW5pbmcgfD0gcGFy dHJlbF9uZWVkc19pbml0X3BydW5pbmc7CisJCW5lZWRzX2V4ZWNfcHJ1bmluZyB8PSBwYXJ0cmVs X25lZWRzX2V4ZWNfcHJ1bmluZzsKIAl9CiAKIAlwZnJlZShyZWxpZF9zdWJwbGFuX21hcCk7CkBA IC0zNDEsNiArMzUyLDggQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpy b290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJLyogRWxzZSBidWlsZCB0aGUgcmVzdWx0IGRh dGEgc3RydWN0dXJlICovCiAJcHJ1bmVpbmZvID0gbWFrZU5vZGUoUGFydGl0aW9uUHJ1bmVJbmZv KTsKIAlwcnVuZWluZm8tPnBydW5lX2luZm9zID0gcHJ1bmVyZWxpbmZvczsKKwlwcnVuZWluZm8t Pm5lZWRzX2luaXRfcHJ1bmluZyA9IG5lZWRzX2luaXRfcHJ1bmluZzsKKwlwcnVuZWluZm8tPm5l ZWRzX2V4ZWNfcHJ1bmluZyA9IG5lZWRzX2V4ZWNfcHJ1bmluZzsKIAogCS8qCiAJICogU29tZSBz dWJwbGFucyBtYXkgbm90IGJlbG9uZyB0byBhbnkgb2YgdGhlIGlkZW50aWZpZWQgcGFydGl0aW9u ZWQgcmVscy4KQEAgLTQ0MSwxMyArNDU0LDE4IEBAIGFkZF9wYXJ0X3JlbGlkcyhMaXN0ICphbGxw YXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpCiAgKiBJZiB3ZSBjYW5ub3QgZmluZCBh bnkgdXNlZnVsIHJ1bi10aW1lIHBydW5pbmcgc3RlcHMsIHJldHVybiBOSUwuCiAgKiBIb3dldmVy LCBvbiBzdWNjZXNzLCBlYWNoIHJlbCBpZGVudGlmaWVkIGluIHBhcnRyZWxpZHMgd2lsbCBoYXZl CiAgKiBhbiBlbGVtZW50IGluIHRoZSByZXN1bHQgbGlzdCwgZXZlbiBpZiBzb21lIG9mIHRoZW0g YXJlIHVzZWxlc3MuCisgKiAqbmVlZHNfaW5pdF9wcnVuaW5nIGFuZCAqbmVlZHNfZXhlY19wcnVu aW5nIGFyZSBzZXQgdG8gaW5kaWNhdGUgdGhhdCB0aGUKKyAqIHJldHVybmVkIFBhcnRpdGlvbmVk UmVsUHJ1bmVJbmZvcyBjb250YWlucyBwcnVuaW5nIHN0ZXBzIHRoYXQgY2FuIGJlCisgKiBwZXJm b3JtZWQgYmVmb3JlIGFuZCBhZnRlciBleGVjdXRpb24gYmVnaW5zLCByZXNwZWN0aXZlbHkuCiAg Ki8KIHN0YXRpYyBMaXN0ICoKIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQkJCQkJICBMaXN0ICpwcnVuZXF1 YWwsCiAJCQkJCQkJICBCaXRtYXBzZXQgKnBhcnRyZWxpZHMsCiAJCQkJCQkJICBpbnQgKnJlbGlk X3N1YnBsYW5fbWFwLAotCQkJCQkJCSAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5zKQorCQkJ CQkJCSAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5zLAorCQkJCQkJCSAgYm9vbCAqbmVlZHNf aW5pdF9wcnVuaW5nLAorCQkJCQkJCSAgYm9vbCAqbmVlZHNfZXhlY19wcnVuaW5nKQogewogCVJl bE9wdEluZm8gKnRhcmdldHBhcnQgPSBOVUxMOwogCUxpc3QJICAgKnBpbmZvbGlzdCA9IE5JTDsK QEAgLTQ1OCw2ICs0NzYsMTAgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAlpbnQJCQlydGk7CiAJaW50CQkJ aTsKIAorCS8qIFdpbGwgZmluZCBvdXQgYmVsb3cuICovCisJKm5lZWRzX2luaXRfcHJ1bmluZyA9 IGZhbHNlOworCSpuZWVkc19leGVjX3BydW5pbmcgPSBmYWxzZTsKKwogCS8qCiAJICogRXhhbWlu ZSBlYWNoIHBhcnRpdGlvbmVkIHJlbCwgY29uc3RydWN0aW5nIGEgdGVtcG9yYXJ5IGFycmF5IHRv IG1hcAogCSAqIGZyb20gcGxhbm5lciByZWxpZHMgdG8gaW5kZXggb2YgdGhlIHBhcnRpdGlvbmVk IHJlbCwgYW5kIGJ1aWxkaW5nIGEKQEAgLTU0NSw2ICs1NjcsOSBAQCBtYWtlX3BhcnRpdGlvbmVk cmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAog CQkgKiBleGVjdXRvciBwZXItc2NhbiBwcnVuaW5nIHN0ZXBzLiAgVGhpcyBmaXJzdCBwYXNzIGNy ZWF0ZXMgc3RhcnR1cAogCQkgKiBwcnVuaW5nIHN0ZXBzIGFuZCBkZXRlY3RzIHdoZXRoZXIgdGhl cmUncyBhbnkgcG9zc2libHktdXNlZnVsIHF1YWxzCiAJCSAqIHRoYXQgd291bGQgcmVxdWlyZSBw ZXItc2NhbiBwcnVuaW5nLgorCQkgKgorCQkgKiBJbiB0aGUgZmlyc3QgcGFzcywgd2Ugbm90ZSB3 aGV0aGVyIHRoZSAybmQgcGFzcyBpcyBuZWNlc3NhcnkgYnkKKwkJICogbm90aW5nIHRoZSBwcmVz ZW5jZSBvZiBFWEVDIHBhcmFtZXRlcnMuCiAJCSAqLwogCQlnZW5fcGFydHBydW5lX3N0ZXBzKHN1 YnBhcnQsIHBhcnRwcnVuZXF1YWwsIFBBUlRUQVJHRVRfSU5JVElBTCwKIAkJCQkJCQkmY29udGV4 dCk7CkBAIC02MTksNiArNjQ0LDEyIEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCXBpbmZvLT5leGVjcGFy YW1pZHMgPSBleGVjcGFyYW1pZHM7CiAJCS8qIFJlbWFpbmluZyBmaWVsZHMgd2lsbCBiZSBmaWxs ZWQgaW4gdGhlIG5leHQgbG9vcCAqLwogCisJCS8qIHJlY29yZCB3aGljaCB0eXBlcyBvZiBwcnVu aW5nIHN0ZXBzIHdlJ3ZlIHNlZW4gc28gZmFyICovCisJCWlmIChpbml0aWFsX3BydW5pbmdfc3Rl cHMgIT0gTklMKQorCQkJKm5lZWRzX2luaXRfcHJ1bmluZyA9IHRydWU7CisJCWlmIChleGVjX3By dW5pbmdfc3RlcHMgIT0gTklMKQorCQkJKm5lZWRzX2V4ZWNfcHJ1bmluZyA9IHRydWU7CisKIAkJ cGluZm9saXN0ID0gbGFwcGVuZChwaW5mb2xpc3QsIHBpbmZvKTsKIAl9CiAKQEAgLTY0Niw2ICs2 NzcsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlpbnQJCSAgICpzdWJwbGFuX21hcDsKIAkJaW50CQkg ICAqc3VicGFydF9tYXA7CiAJCU9pZAkJICAgKnJlbGlkX21hcDsKKwkJSW5kZXgJICAgKnJ0aV9t YXA7CiAKIAkJLyoKIAkJICogQ29uc3RydWN0IHRoZSBzdWJwbGFuIGFuZCBzdWJwYXJ0IG1hcHMg Zm9yIHRoaXMgcGFydGl0aW9uaW5nIGxldmVsLgpAQCAtNjU4LDYgKzY5MCw3IEBAIG1ha2VfcGFy dGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJl bnRyZWwsCiAJCXN1YnBhcnRfbWFwID0gKGludCAqKSBwYWxsb2MobnBhcnRzICogc2l6ZW9mKGlu dCkpOwogCQltZW1zZXQoc3VicGFydF9tYXAsIC0xLCBucGFydHMgKiBzaXplb2YoaW50KSk7CiAJ CXJlbGlkX21hcCA9IChPaWQgKikgcGFsbG9jMChucGFydHMgKiBzaXplb2YoT2lkKSk7CisJCXJ0 aV9tYXAgPSAoSW5kZXggKikgcGFsbG9jMChucGFydHMgKiBzaXplb2YoSW5kZXgpKTsKIAkJcHJl c2VudF9wYXJ0cyA9IE5VTEw7CiAKIAkJaSA9IC0xOwpAQCAtNjcyLDYgKzcwNSw3IEBAIG1ha2Vf cGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpw YXJlbnRyZWwsCiAJCQlzdWJwbGFuX21hcFtpXSA9IHN1YnBsYW5pZHggPSByZWxpZF9zdWJwbGFu X21hcFtwYXJ0cmVsLT5yZWxpZF0gLSAxOwogCQkJc3VicGFydF9tYXBbaV0gPSBzdWJwYXJ0aWR4 ID0gcmVsaWRfc3VicGFydF9tYXBbcGFydHJlbC0+cmVsaWRdIC0gMTsKIAkJCXJlbGlkX21hcFtp XSA9IHBsYW5uZXJfcnRfZmV0Y2gocGFydHJlbC0+cmVsaWQsIHJvb3QpLT5yZWxpZDsKKwkJCXJ0 aV9tYXBbaV0gPSBwYXJ0cmVsLT5yZWxpZDsKIAkJCWlmIChzdWJwbGFuaWR4ID49IDApCiAJCQl7 CiAJCQkJcHJlc2VudF9wYXJ0cyA9IGJtc19hZGRfbWVtYmVyKHByZXNlbnRfcGFydHMsIGkpOwpA QCAtNjk2LDYgKzczMCw3IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCXBpbmZvLT5zdWJwbGFuX21hcCA9 IHN1YnBsYW5fbWFwOwogCQlwaW5mby0+c3VicGFydF9tYXAgPSBzdWJwYXJ0X21hcDsKIAkJcGlu Zm8tPnJlbGlkX21hcCA9IHJlbGlkX21hcDsKKwkJcGluZm8tPnJ0aV9tYXAgPSBydGlfbWFwOwog CX0KIAogCXBmcmVlKHJlbGlkX3N1YnBhcnRfbWFwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCA2ZjE4 YjY4ODU2Li4xNmJkYTQyZjExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0xNTk2LDYgKzE1OTYsNyBA QCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJaW50MTYJICAg KnJmb3JtYXRzID0gTlVMTDsKIAlDYWNoZWRQbGFuU291cmNlICpwc3JjOwogCUNhY2hlZFBsYW4g KmNwbGFuOworCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3Q7CiAJUG9ydGFsCQlwb3J0 YWw7CiAJY2hhcgkgICAqcXVlcnlfc3RyaW5nOwogCWNoYXIJICAgKnNhdmVkX3N0bXRfbmFtZTsK QEAgLTE5NzEsNyArMTk3Miw5IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRf bWVzc2FnZSkKIAkgKiB3aWxsIGJlIGdlbmVyYXRlZCBpbiBNZXNzYWdlQ29udGV4dC4gIFRoZSBw bGFuIHJlZmNvdW50IHdpbGwgYmUKIAkgKiBhc3NpZ25lZCB0byB0aGUgUG9ydGFsLCBzbyBpdCB3 aWxsIGJlIHJlbGVhc2VkIGF0IHBvcnRhbCBkZXN0cnVjdGlvbi4KIAkgKi8KLQljcGxhbiA9IEdl dENhY2hlZFBsYW4ocHNyYywgcGFyYW1zLCBOVUxMLCBOVUxMKTsKKwljcGxhbiA9IEdldENhY2hl ZFBsYW4ocHNyYywgcGFyYW1zLCBOVUxMLCBOVUxMLCAmcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7 CisJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09CisJCSAgIGxpc3RfbGVu Z3RoKHBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpKTsKIAogCS8qCiAJICogTm93IHdlIGNhbiBkZWZp bmUgdGhlIHBvcnRhbC4KQEAgLTE5ODYsNiArMTk4OSw5IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0 cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkJCQkJICBjcGxhbi0+c3RtdF9saXN0LAogCQkJCQkg IGNwbGFuKTsKIAorCS8qIENvcHkgUGFydGl0aW9uUHJ1bmVSZXN1bHRzIGludG8gdGhlIHBvcnRh bCdzIGNvbnRleHQuICovCisJUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMocG9ydGFs LCBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KTsKKwogCS8qIERvbmUgd2l0aCB0aGUgc25hcHNob3Qg dXNlZCBmb3IgcGFyYW1ldGVyIEkvTyBhbmQgcGFyc2luZy9wbGFubmluZyAqLwogCWlmIChzbmFw c2hvdF9zZXQpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwppbmRleCA1YWE1YTM1 MGYzLi44Y2MyZTIxNjJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCisr KyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTM1LDcgKzM1LDcgQEAKIFBvcnRhbAkJ QWN0aXZlUG9ydGFsID0gTlVMTDsKIAogCi1zdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5l ZFN0bXQgKnBsYW4sCitzdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4s IFBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5lX3Jlc3VsdCwKIAkJCQkJCSBjb25zdCBj aGFyICpzb3VyY2VUZXh0LAogCQkJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQkJIFF1 ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApAQCAtNjUsNiArNjUsNyBAQCBzdGF0aWMgdm9pZCBE b1BvcnRhbFJld2luZChQb3J0YWwgcG9ydGFsKTsKICAqLwogUXVlcnlEZXNjICoKIENyZWF0ZVF1 ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJUGFydGl0aW9uUHJ1bmVSZXN1 bHQgKnBhcnRfcHJ1bmVfcmVzdWx0LAogCQkJCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJ U25hcHNob3Qgc25hcHNob3QsCiAJCQkJU25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hvdCwKQEAg LTc3LDYgKzc4LDggQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwK IAogCXFkLT5vcGVyYXRpb24gPSBwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGU7CS8qIG9wZXJhdGlv biAqLwogCXFkLT5wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwkvKiBwbGFuICovCisJcWQtPnBh cnRfcHJ1bmVfcmVzdWx0ID0gcGFydF9wcnVuZV9yZXN1bHQ7CS8qIEV4ZWN1dG9yRG9Jbml0aWFs UHJ1bmluZygpCisJCQkJCQkJCQkJCQkgKiBvdXRwdXQgZm9yIHBsYW4gKi8KIAlxZC0+c291cmNl VGV4dCA9IHNvdXJjZVRleHQ7CS8qIHF1ZXJ5IHRleHQgKi8KIAlxZC0+c25hcHNob3QgPSBSZWdp c3RlclNuYXBzaG90KHNuYXBzaG90KTsJLyogc25hcHNob3QgKi8KIAkvKiBSSSBjaGVjayBzbmFw c2hvdCAqLwpAQCAtMTIyLDYgKzEyNSw3IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVz YykKICAqCQlQT1JUQUxfT05FX1JFVFVSTklORywgb3IgUE9SVEFMX09ORV9NT0RfV0lUSCBwb3J0 YWwKICAqCiAgKglwbGFuOiB0aGUgcGxhbiB0cmVlIGZvciB0aGUgcXVlcnkKKyAqCXBhcnRfcHJ1 bmVfcmVzdWx0OiBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSBvdXRwdXQgZm9yIHRoZSBwbGFu IHRyZWUKICAqCXNvdXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkKICAqCXBh cmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVkCiAgKglkZXN0OiB3aGVyZSB0byBzZW5kIHJlc3Vs dHMKQEAgLTEzNCw2ICsxMzgsNyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAg Ki8KIHN0YXRpYyB2b2lkCiBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJCQkgUGFy dGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0LAogCQkJIGNvbnN0IGNoYXIgKnNv dXJjZVRleHQsCiAJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgUXVlcnlFbnZpcm9ubWVu dCAqcXVlcnlFbnYsCkBAIC0xNDUsNyArMTUwLDcgQEAgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10 ICpwbGFuLAogCS8qCiAJICogQ3JlYXRlIHRoZSBRdWVyeURlc2Mgb2JqZWN0CiAJICovCi0JcXVl cnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHNvdXJjZVRleHQsCisJcXVlcnlEZXNjID0g Q3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBhcnRfcHJ1bmVfcmVzdWx0LCBzb3VyY2VUZXh0LAogCQkJ CQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3Qs IHBhcmFtcywgcXVlcnlFbnYsIDApOwogCkBAIC00OTEsOCArNDk2LDEzIEBAIFBvcnRhbFN0YXJ0 KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCS8qCiAJCQkJICogQ3Jl YXRlIFF1ZXJ5RGVzYyBpbiBwb3J0YWwncyBjb250ZXh0OyBmb3IgdGhlIG1vbWVudCwgc2V0CiAJ CQkJICogdGhlIGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgorCQkJCSAqCisJCQkJICogVGhlcmUg aXMgbm8gUGFydGl0aW9uUHJ1bmVSZXN1bHQgdW5sZXNzIHRoZSBQbGFubmVkU3RtdCBpcworCQkJ CSAqIGZyb20gYSBDYWNoZWRQbGFuLgogCQkJCSAqLwogCQkJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhsaW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LCBwb3J0YWwtPnN0bXRzKSwKKwkJCQkJ CQkJCQkJcG9ydGFsLT5wYXJ0X3BydW5lX3Jlc3VsdHMgPT0gTklMID8gTlVMTCA6CisJCQkJCQkJ CQkJCWxpbml0aWFsKHBvcnRhbC0+cGFydF9wcnVuZV9yZXN1bHRzKSwKIAkJCQkJCQkJCQkJcG9y dGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJ CQkJCQlJbnZhbGlkU25hcHNob3QsCkBAIC0xMjI1LDYgKzEyMzUsOCBAQCBQb3J0YWxSdW5NdWx0 aShQb3J0YWwgcG9ydGFsLAogCiAJCWlmIChwc3RtdC0+dXRpbGl0eVN0bXQgPT0gTlVMTCkKIAkJ eworCQkJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0ID0gTlVMTDsKKwog CQkJLyoKIAkJCSAqIHByb2Nlc3MgYSBwbGFubmFibGUgcXVlcnkuCiAJCQkgKi8KQEAgLTEyNzEs MTAgKzEyODMsMTggQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCWVsc2UKIAkJ CQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCisJCQkvKgorCQkJICogRGV0ZXJt aW5lIGlmIHRoZXJlJ3MgYSBjb3JyZXNwb25kaW5nIFBhcnRpdGlvblBydW5lUmVzdWx0IGZvcgor CQkJICogdGhpcyBQbGFubmVkU3RtdC4KKwkJCSAqLworCQkJaWYgKHBvcnRhbC0+cGFydF9wcnVu ZV9yZXN1bHRzICE9IE5JTCkKKwkJCQlwYXJ0X3BydW5lX3Jlc3VsdCA9IGxpc3RfbnRoKHBvcnRh bC0+cGFydF9wcnVuZV9yZXN1bHRzLAorCQkJCQkJCQkJCQkgZm9yZWFjaF9jdXJyZW50X2luZGV4 KHN0bXRsaXN0X2l0ZW0pKTsKKwogCQkJaWYgKHBzdG10LT5jYW5TZXRUYWcpCiAJCQl7CiAJCQkJ Lyogc3RhdGVtZW50IGNhbiBzZXQgdGFnIHN0cmluZyAqLwotCQkJCVByb2Nlc3NRdWVyeShwc3Rt dCwKKwkJCQlQcm9jZXNzUXVlcnkocHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0LAogCQkJCQkJCSBw b3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJ CSBwb3J0YWwtPnF1ZXJ5RW52LApAQCAtMTI4Myw3ICsxMzAzLDcgQEAgUG9ydGFsUnVuTXVsdGko UG9ydGFsIHBvcnRhbCwKIAkJCWVsc2UKIAkJCXsKIAkJCQkvKiBzdG10IGFkZGVkIGJ5IHJld3Jp dGUgY2Fubm90IHNldCB0YWcgKi8KLQkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCisJCQkJUHJvY2Vz c1F1ZXJ5KHBzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdCwKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VU ZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVy eUVudiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggMGQ2YTI5NTY3NC4uZDFj OTYwNTk3OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTk5LDE0ICs5OSwx OSBAQCBzdGF0aWMgZGxpc3RfaGVhZCBjYWNoZWRfZXhwcmVzc2lvbl9saXN0ID0gRExJU1RfU1RB VElDX0lOSVQoY2FjaGVkX2V4cHJlc3Npb25fbAogc3RhdGljIHZvaWQgUmVsZWFzZUdlbmVyaWNQ bGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIExpc3QgKlJldmFsaWRh dGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgICBR dWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7Ci1zdGF0aWMgYm9vbCBDaGVja0NhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CitzdGF0aWMgYm9vbCBDaGVja0NhY2hlZFBs YW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFt cywKKwkJCQkJCQlMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CiBzdGF0aWMgQ2FjaGVk UGxhbiAqQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3Qg KnFsaXN0LAotCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmly b25tZW50ICpxdWVyeUVudik7CisJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMs IFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCQkJCQkgICBMaXN0ICoqcGFydF9wcnVu ZV9yZXN1bHRfbGlzdCk7CiBzdGF0aWMgYm9vbCBjaG9vc2VfY3VzdG9tX3BsYW4oQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1z KTsKIHN0YXRpYyBkb3VibGUgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29s IGluY2x1ZGVfcGxhbm5lcik7CiBzdGF0aWMgUXVlcnkgKlF1ZXJ5TGlzdEdldFByaW1hcnlTdG10 KExpc3QgKnN0bXRzKTsKLXN0YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0 bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKK3N0YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRvckxvY2tz KExpc3QgKnN0bXRfbGlzdCwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKKwkJCQkJCQkJIExp c3QgKipwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LAorCQkJCQkJCQkgTGlzdCAqKmxvY2tlZFJlbGlk c19wZXJfc3RtdCk7CitzdGF0aWMgdm9pZCBSZWxlYXNlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10 X2xpc3QsIExpc3QgKmxvY2tlZFJlbGlkc19wZXJfc3RtdCk7CiBzdGF0aWMgdm9pZCBBY3F1aXJl UGxhbm5lckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lk IFNjYW5RdWVyeUZvckxvY2tzKFF1ZXJ5ICpwYXJzZXRyZWUsIGJvb2wgYWNxdWlyZSk7CiBzdGF0 aWMgYm9vbCBTY2FuUXVlcnlXYWxrZXIoTm9kZSAqbm9kZSwgYm9vbCAqYWNxdWlyZSk7CkBAIC03 OTAsMTUgKzc5NSwyMCBAQCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSwKICAqCiAgKiBPbiBhICJ0cnVlIiByZXR1cm4sIHdlIGhhdmUgYWNxdWlyZWQg dGhlIGxvY2tzIG5lZWRlZCB0byBydW4gdGhlIHBsYW4uCiAgKiAoV2UgbXVzdCBkbyB0aGlzIGZv ciB0aGUgInRydWUiIHJlc3VsdCB0byBiZSByYWNlLWNvbmRpdGlvbi1mcmVlLikKKyAqCisgKiBT ZWUgR2V0Q2FjaGVkUGxhbigpJ3MgY29tbWVudCBmb3IgYSBkZXNjcmlwdGlvbiBvZiBwYXJ0X3By dW5lX3Jlc3VsdF9saXN0LgogICovCiBzdGF0aWMgYm9vbAotQ2hlY2tDYWNoZWRQbGFuKENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCitDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKKwkJCQlMaXN0ICoqcGFy dF9wcnVuZV9yZXN1bHRfbGlzdCkKIHsKIAlDYWNoZWRQbGFuICpwbGFuID0gcGxhbnNvdXJjZS0+ Z3BsYW47CiAKIAkvKiBBc3NlcnQgdGhhdCBjYWxsZXIgY2hlY2tlZCB0aGUgcXVlcnl0cmVlICov CiAJQXNzZXJ0KHBsYW5zb3VyY2UtPmlzX3ZhbGlkKTsKIAorCSpwYXJ0X3BydW5lX3Jlc3VsdF9s aXN0ID0gTklMOworCiAJLyogSWYgdGhlcmUncyBubyBnZW5lcmljIHBsYW4sIGp1c3Qgc2F5ICJm YWxzZSIgKi8KIAlpZiAoIXBsYW4pCiAJCXJldHVybiBmYWxzZTsKQEAgLTgyMCwxMyArODMwLDIx IEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCSAqLwog CWlmIChwbGFuLT5pc192YWxpZCkKIAl7CisJCUxpc3QgICAqbG9ja2VkUmVsaWRzX3Blcl9zdG10 OworCiAJCS8qCiAJCSAqIFBsYW4gbXVzdCBoYXZlIHBvc2l0aXZlIHJlZmNvdW50IGJlY2F1c2Ug aXQgaXMgcmVmZXJlbmNlZCBieQogCQkgKiBwbGFuc291cmNlOyBzbyBubyBuZWVkIHRvIGZlYXIg aXQgZGlzYXBwZWFycyB1bmRlciB1cyBoZXJlLgogCQkgKi8KIAkJQXNzZXJ0KHBsYW4tPnJlZmNv dW50ID4gMCk7CiAKLQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCB0cnVl KTsKKwkJLyoKKwkJICogTG9jayByZWxhdGlvbnMgc2Nhbm5lZCBieSB0aGUgcGxhbi4gIFRoaXMg aXMgd2hlcmUgdGhlIHBydW5pbmcKKwkJICogaGFwcGVucyBpZiBuZWVkZWQuCisJCSAqLworCQlB Y3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGJvdW5kUGFyYW1zLAorCQkJCQkJ CSBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LAorCQkJCQkJCSAmbG9ja2VkUmVsaWRzX3Blcl9zdG10 KTsKIAogCQkvKgogCQkgKiBJZiBwbGFuIHdhcyB0cmFuc2llbnQsIGNoZWNrIHRvIHNlZSBpZiBU cmFuc2FjdGlvblhtaW4gaGFzCkBAIC04NDgsNyArODY2LDE0IEBAIENoZWNrQ2FjaGVkUGxhbihD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCQl9CiAKIAkJLyogT29wcywgdGhlIHJhY2Ug Y2FzZSBoYXBwZW5lZC4gIFJlbGVhc2UgdXNlbGVzcyBsb2Nrcy4gKi8KLQkJQWNxdWlyZUV4ZWN1 dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBmYWxzZSk7CisJCVJlbGVhc2VFeGVjdXRvckxvY2tz KHBsYW4tPnN0bXRfbGlzdCwgbG9ja2VkUmVsaWRzX3Blcl9zdG10KTsKKworCQkvKgorCQkgKiBU aGUgb3V0cHV0IGxpc3QgYW5kIGFueSBvYmplY3RzIHRoZXJlaW4gaGF2ZSBiZWVuIGFsbG9jYXRl ZCBpbiB0aGUKKwkJICogY2FsbGVyJ3MgaG9wZWZ1bGx5IHNob3J0LWxpdmVkIGNvbnRleHQsIHNv IHdpbGwgbm90IHJlbWFpbiBsZWFrZWQKKwkJICogZm9yIGxvbmcsIHRob3VnaCByZXNldCB0byBh dm9pZCBpdHMgYWNjaWRlbnRhbGx5IGJlaW5nIGxvb2tlZCBhdC4KKwkJICovCisJCSpwYXJ0X3By dW5lX3Jlc3VsdF9saXN0ID0gTklMOwogCX0KIAogCS8qCkBAIC04NzQsMTAgKzg5OSwxNSBAQCBD aGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKICAqIFBsYW5uaW5n IHdvcmsgaXMgZG9uZSBpbiB0aGUgY2FsbGVyJ3MgbWVtb3J5IGNvbnRleHQuICBUaGUgZmluaXNo ZWQgcGxhbgogICogaXMgaW4gYSBjaGlsZCBtZW1vcnkgY29udGV4dCwgd2hpY2ggdHlwaWNhbGx5 IHNob3VsZCBnZXQgcmVwYXJlbnRlZAogICogKHVubGVzcyB0aGlzIGlzIGEgb25lLXNob3QgcGxh biwgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCBjb3B5IHRoZSBwbGFuKS4KKyAqCisgKiBBIGxpc3Qg b2YgTlVMTHMgaXMgcmV0dXJuZWQgaW4gKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QsIG1lYW5pbmcg dGhhdCBubworICogUGFydGl0aW9uUHJ1bmVSZXN1bHQgbm9kZXMgaGF2ZSB5ZXQgYmVlbiBjcmVh dGVkIGZvciB0aGUgcGxhbnMgaW4KKyAqIHN0bXRfbGlzdC4KICAqLwogc3RhdGljIENhY2hlZFBs YW4gKgogQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3Qg KnFsaXN0LAotCQkJCVBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52KQorCQkJCVBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52LAorCQkJCUxpc3QgKipwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KQogewogCUNh Y2hlZFBsYW4gKnBsYW47CiAJTGlzdAkgICAqcGxpc3Q7CkBAIC0xMDA3LDYgKzEwMzcsMTcgQEAg QnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0 LAogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiAKKwkvKgorCSAqIE5vIGFjdHVh bCBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgeWV0IHRvIGFkZCwgdGhvdWdoIG11c3QgaW5pdGlhbGl6 ZQorCSAqIHRoZSBsaXN0IHRvIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1lbnRzIGFzIHRo ZSBsaXN0IG9mCisJICogUGxhbm5lZFN0bXRzLgorCSAqLworCSpwYXJ0X3BydW5lX3Jlc3VsdF9s aXN0ID0gTklMOworCWZvcmVhY2gobGMsIHBsaXN0KQorCXsKKwkJKnBhcnRfcHJ1bmVfcmVzdWx0 X2xpc3QgPSBsYXBwZW5kKCpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LCBOVUxMKTsKKwl9CisKIAly ZXR1cm4gcGxhbjsKIH0KIApAQCAtMTEyNiw2ICsxMTY3LDE3IEBAIGNhY2hlZF9wbGFuX2Nvc3Qo Q2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpCiAgKiBwbGFuIG9yIGEgY3Vz dG9tIHBsYW4gZm9yIHRoZSBnaXZlbiBwYXJhbWV0ZXJzOiB0aGUgY2FsbGVyIGRvZXMgbm90IGtu b3cKICAqIHdoaWNoIGl0IHdpbGwgZ2V0LgogICoKKyAqIEZvciBldmVyeSBQbGFubmVkU3RtdCBm b3VuZCBpbiB0aGUgcmV0dXJuZWQgQ2FjaGVkUGxhbiwgYW4gZWxlbWVudCB0aGF0CisgKiBpcyBl aXRoZXIgYSBQYXJ0aXRpb25QcnVuZVJlc3VsdCBvciBhIE5VTEwgaXMgYWRkZWQgdG8KKyAqICpw YXJ0X3BydW5lX3Jlc3VsdF9saXN0IGlmIG5lZWRlZC4gIFRoZSBmb3JtZXIgaWYgdGhlIFBsYW5u ZWRTdG10IGlzIGZyb20KKyAqIHRoZSBleGlzdGluZyBDYWNoZWRQbGFuIHRoYXQgaXMgb3RoZXJ3 aXNlIHZhbGlkIGFuZCBjb250YWlucyBhdCBsZWFzdCBvbmUKKyAqIFBhcnRpdGlvblBydW5lSW5m byB0aGF0IGhhcyAiaW5pdGlhbCIgcHJ1bmluZyBzdGVwcy4gIFRob3NlIHN0ZXBzIGFyZQorICog cGVyZm9ybWVkIGJ5IGNhbGxpbmcgRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkgdG8gZGV0ZXJt aW5lIG9ubHkgdGhvc2UKKyAqIGxlYWYgcGFydGl0aW9ucyB0aGF0IG5lZWQgdG8gYmUgbG9ja2Vk IGJ5IEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgYnkgcHJ1bmluZworICogYXdheSBzdWJwbGFucyB0 aGF0IGRvbid0IG1hdGNoIHRoZSBwcnVuaW5nIGNvbmRpdGlvbnMuICBUaGUKKyAqIFBhcnRpdGlv blBydW5lUmVzdWx0IGNvbnRhaW5zIGEgbGlzdCBvZiBiaXRtYXBzZXRzIG9mIHRoZSBpbmRleGVz IG9mCisgKiBtYXRjaGluZyBzdWJwbGFucywgb25lIGZvciBlYWNoIFBhcnRpdGlvblBydW5lSW5m by4KKyAqCiAgKiBPbiByZXR1cm4sIHRoZSBwbGFuIGlzIHZhbGlkIGFuZCB3ZSBoYXZlIHN1ZmZp Y2llbnQgbG9ja3MgdG8gYmVnaW4KICAqIGV4ZWN1dGlvbi4KICAqCkBAIC0xMTM5LDExICsxMTkx LDEzIEBAIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3Bs YW5uZXIpCiAgKi8KIENhY2hlZFBsYW4gKgogR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAotCQkJICBSZXNvdXJjZU93 bmVyIG93bmVyLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKKwkJCSAgUmVzb3VyY2VPd25l ciBvd25lciwgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkgIExpc3QgKipwYXJ0X3By dW5lX3Jlc3VsdF9saXN0KQogewogCUNhY2hlZFBsYW4gKnBsYW4gPSBOVUxMOwogCUxpc3QJICAg KnFsaXN0OwogCWJvb2wJCWN1c3RvbXBsYW47CisJTGlzdAkgICAqbXlfcGFydF9wcnVuZV9yZXN1 bHRfbGlzdDsKIAogCS8qIEFzc2VydCBjYWxsZXIgaXMgZG9pbmcgdGhpbmdzIGluIGEgc2FuZSBv cmRlciAqLwogCUFzc2VydChwbGFuc291cmNlLT5tYWdpYyA9PSBDQUNIRURQTEFOU09VUkNFX01B R0lDKTsKQEAgLTExNjAsNyArMTIxNCw4IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAogCWlmICghY3VzdG9t cGxhbikKIAl7Ci0JCWlmIChDaGVja0NhY2hlZFBsYW4ocGxhbnNvdXJjZSkpCisJCWlmIChDaGVj a0NhY2hlZFBsYW4ocGxhbnNvdXJjZSwgYm91bmRQYXJhbXMsCisJCQkJCQkJJm15X3BhcnRfcHJ1 bmVfcmVzdWx0X2xpc3QpKQogCQl7CiAJCQkvKiBXZSB3YW50IGEgZ2VuZXJpYyBwbGFuLCBhbmQg d2UgYWxyZWFkeSBoYXZlIGEgdmFsaWQgb25lICovCiAJCQlwbGFuID0gcGxhbnNvdXJjZS0+Z3Bs YW47CkBAIC0xMTY5LDcgKzEyMjQsOCBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCWVsc2UKIAkJewogCQkJ LyogQnVpbGQgYSBuZXcgZ2VuZXJpYyBwbGFuICovCi0JCQlwbGFuID0gQnVpbGRDYWNoZWRQbGFu KHBsYW5zb3VyY2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudik7CisJCQlwbGFuID0gQnVpbGRDYWNo ZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudiwKKwkJCQkJCQkJICAgJm15 X3BhcnRfcHJ1bmVfcmVzdWx0X2xpc3QpOwogCQkJLyogSnVzdCBtYWtlIHJlYWwgc3VyZSBwbGFu c291cmNlLT5ncGxhbiBpcyBjbGVhciAqLwogCQkJUmVsZWFzZUdlbmVyaWNQbGFuKHBsYW5zb3Vy Y2UpOwogCQkJLyogTGluayB0aGUgbmV3IGdlbmVyaWMgcGxhbiBpbnRvIHRoZSBwbGFuc291cmNl ICovCkBAIC0xMjE0LDcgKzEyNzAsOCBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJaWYgKGN1c3RvbXBsYW4p CiAJewogCQkvKiBCdWlsZCBhIGN1c3RvbSBwbGFuICovCi0JCXBsYW4gPSBCdWlsZENhY2hlZFBs YW4ocGxhbnNvdXJjZSwgcWxpc3QsIGJvdW5kUGFyYW1zLCBxdWVyeUVudik7CisJCXBsYW4gPSBC dWlsZENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcWxpc3QsIGJvdW5kUGFyYW1zLCBxdWVyeUVudiwK KwkJCQkJCQkgICAmbXlfcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CiAJCS8qIEFjY3VtdWxhdGUg dG90YWwgY29zdHMgb2YgY3VzdG9tIHBsYW5zICovCiAJCXBsYW5zb3VyY2UtPnRvdGFsX2N1c3Rv bV9jb3N0ICs9IGNhY2hlZF9wbGFuX2Nvc3QocGxhbiwgdHJ1ZSk7CiAKQEAgLTEyNDYsNiArMTMw Myw5IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1M aXN0SW5mbyBib3VuZFBhcmFtcywKIAkJcGxhbi0+aXNfc2F2ZWQgPSB0cnVlOwogCX0KIAorCWlm IChwYXJ0X3BydW5lX3Jlc3VsdF9saXN0KQorCQkqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCA9IG15 X3BhcnRfcHJ1bmVfcmVzdWx0X2xpc3Q7CisKIAlyZXR1cm4gcGxhbjsKIH0KIApAQCAtMTczNywx NyArMTc5NywyOSBAQCBRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cykKIAogLyoK ICAqIEFjcXVpcmVFeGVjdXRvckxvY2tzOiBhY3F1aXJlIGxvY2tzIG5lZWRlZCBmb3IgZXhlY3V0 aW9uIG9mIGEgY2FjaGVkIHBsYW47Ci0gKiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBpcyBm YWxzZS4KKyAqCisgKiBTZWUgR2V0Q2FjaGVkUGxhbigpJ3MgY29tbWVudCBmb3IgYSBkZXNjcmlw dGlvbiBvZiBwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LgorICoKKyAqIE9uIHJldHVybiwgKmxvY2tl ZFJlbGlkc19wZXJfc3RtdCB3aWxsIGNvbnRhaW4gYSBiaXRtYXBzZXQgZm9yIGV2ZXJ5CisgKiBQ bGFubmVkU3RtdCBpbiBzdG10X2xpc3QsIGNvbnRhaW5pbmcgdGhlIFJUIGluZGV4ZXMgb2YgcmVs YXRpb24gZW50cmllcworICogaW4gaXRzIHJhbmdlIHRhYmxlIHRoYXQgd2VyZSBhY3R1YWxseSBs b2NrZWQsIG9yIE5VTEwgaWYgdGhlIFBsYW5uZWRTdG10CisgKiBjb250YWlucyBhIHV0aWxpdHkg c3RhdGVtZW50LgogICovCiBzdGF0aWMgdm9pZAotQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAq c3RtdF9saXN0LCBib29sIGFjcXVpcmUpCitBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10 X2xpc3QsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCisJCQkJCSBMaXN0ICoqcGFydF9wcnVu ZV9yZXN1bHRfbGlzdCwKKwkJCQkJIExpc3QgKipsb2NrZWRSZWxpZHNfcGVyX3N0bXQpCiB7CiAJ TGlzdENlbGwgICAqbGMxOwogCisJKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QgPSAqbG9ja2VkUmVs aWRzX3Blcl9zdG10ID0gTklMOwogCWZvcmVhY2gobGMxLCBzdG10X2xpc3QpCiAJewogCQlQbGFu bmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMxKTsKLQkJ TGlzdENlbGwgICAqbGMyOworCQlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcGFydF9wcnVuZV9yZXN1 bHQgPSBOVUxMOworCQlCaXRtYXBzZXQgICphbGxMb2NrUmVsaWRzOworCQlCaXRtYXBzZXQgICps b2NrZWRSZWxpZHMgPSBOVUxMOworCQlpbnQJCQlydGk7CiAKIAkJaWYgKHBsYW5uZWRzdG10LT5j b21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKIAkJewpAQCAtMTc2MSwxMyArMTgzMywzOCBAQCBB Y3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKIAkJCVF1 ZXJ5CSAgICpxdWVyeSA9IFV0aWxpdHlDb250YWluc1F1ZXJ5KHBsYW5uZWRzdG10LT51dGlsaXR5 U3RtdCk7CiAKIAkJCWlmIChxdWVyeSkKLQkJCQlTY2FuUXVlcnlGb3JMb2NrcyhxdWVyeSwgYWNx dWlyZSk7CisJCQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnksIHRydWUpOworCQkJKnBhcnRfcHJ1 bmVfcmVzdWx0X2xpc3QgPSBsYXBwZW5kKCpwYXJ0X3BydW5lX3Jlc3VsdF9saXN0LCBOVUxMKTsK IAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJZm9yZWFjaChsYzIsIHBsYW5uZWRzdG10LT5ydGFibGUp CisJCS8qCisJCSAqIEZpZ3VyZSBvdXQgdGhlIHNldCBvZiByZWxhdGlvbnMgdGhhdCB3b3VsZCBu ZWVkIHRvIGJlIGxvY2tlZAorCQkgKiBiZWZvcmUgZXhlY3V0aW5nIHRoZSBwbGFuLgorCQkgKi8K KwkJaWYgKHBsYW5uZWRzdG10LT5jb250YWluc0luaXRpYWxQcnVuaW5nKQogCQl7Ci0JCQlSYW5n ZVRibEVudHJ5ICpydGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBsZmlyc3QobGMyKTsKKwkJCS8qCisJ CQkgKiBPYnRhaW4gdGhlIHNldCBvZiBsZWFmIHBhcnRpdGlvbnMgdG8gYmUgbG9ja2VkLgorCQkJ ICoKKwkJCSAqIFRoZSBmb2xsb3dpbmcgZG9lcyBpbml0aWFsIHBhcnRpdGlvbiBwcnVuaW5nIHVz aW5nIHRoZQorCQkJICogUGFydGl0aW9uUHJ1bmVJbmZvcyBmb3VuZCBpbiBwbGFubmVkc3RtdC0+ cGFydFBydW5lSW5mb3MgYW5kCisJCQkgKiBmaW5kcyBsZWFmIHBhcnRpdGlvbnMgdGhhdCBzdXJ2 aXZlIHRoYXQgcHJ1bmluZyBhY3Jvc3MgYWxsIHRoZQorCQkJICogbm9kZXMgaW4gdGhlIHBsYW4g dHJlZS4KKwkJCSAqLworCQkJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0 ID0KKwkJCQlFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcocGxhbm5lZHN0bXQsIGJvdW5kUGFyYW1z KTsKKworCQkJYWxsTG9ja1JlbGlkcyA9IGJtc191bmlvbihwbGFubmVkc3RtdC0+bWluTG9ja1Jl bGlkcywKKwkJCQkJCQkJCSAgcGFydF9wcnVuZV9yZXN1bHQtPnNjYW5fbGVhZnBhcnRfcnRpcyk7 CisJCX0KKwkJZWxzZQorCQkJYWxsTG9ja1JlbGlkcyA9IHBsYW5uZWRzdG10LT5taW5Mb2NrUmVs aWRzOworCisJCXJ0aSA9IC0xOworCQl3aGlsZSAoKHJ0aSA9IGJtc19uZXh0X21lbWJlcihhbGxM b2NrUmVsaWRzLCBydGkpKSA+IDApCisJCXsKKwkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IHJ0X2Zl dGNoKHJ0aSwgcGxhbm5lZHN0bXQtPnJ0YWJsZSk7CiAKIAkJCWlmIChydGUtPnJ0ZWtpbmQgIT0g UlRFX1JFTEFUSU9OKQogCQkJCWNvbnRpbnVlOwpAQCAtMTc3OCwxMCArMTg3NSw1OCBAQCBBY3F1 aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKIAkJCSAqIGZh aWwgaWYgaXQncyBiZWVuIGRyb3BwZWQgZW50aXJlbHkgLS0tIHdlJ2xsIGp1c3QgdHJhbnNpZW50 bHkKIAkJCSAqIGFjcXVpcmUgYSBub24tY29uZmxpY3RpbmcgbG9jay4KIAkJCSAqLwotCQkJaWYg KGFjcXVpcmUpCi0JCQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21v ZGUpOwotCQkJZWxzZQotCQkJCVVubG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVs bG9ja21vZGUpOworCQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21v ZGUpOworCQkJbG9ja2VkUmVsaWRzID0gYm1zX2FkZF9tZW1iZXIobG9ja2VkUmVsaWRzLCBydGkp OworCQl9CisKKwkJKnBhcnRfcHJ1bmVfcmVzdWx0X2xpc3QgPSBsYXBwZW5kKCpwYXJ0X3BydW5l X3Jlc3VsdF9saXN0LAorCQkJCQkJCQkJCSAgcGFydF9wcnVuZV9yZXN1bHQpOworCQkqbG9ja2Vk UmVsaWRzX3Blcl9zdG10ID0gbGFwcGVuZCgqbG9ja2VkUmVsaWRzX3Blcl9zdG10LCBsb2NrZWRS ZWxpZHMpOworCX0KK30KKworLyoKKyAqIFJlbGVhc2VFeGVjdXRvckxvY2tzCisgKiAJCVJlbGVh c2UgbG9ja3MgdGhhdCB3b3VsZCd2ZSBiZWVuIGFjcXVpcmVkIGJ5IGFuIGVhcmxpZXIgY2FsbCB0 bworICogCQlBY3F1aXJlRXhlY3V0b3JMb2NrcygpCisgKi8KK3N0YXRpYyB2b2lkCitSZWxlYXNl RXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIExpc3QgKmxvY2tlZFJlbGlkc19wZXJfc3Rt dCkKK3sKKwlMaXN0Q2VsbCAgICpsYzEsCisJCQkgICAqbGMyOworCisJZm9yYm90aChsYzEsIHN0 bXRfbGlzdCwgbGMyLCBsb2NrZWRSZWxpZHNfcGVyX3N0bXQpCisJeworCQlQbGFubmVkU3RtdCAq cGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMxKTsKKwkJQml0bWFwc2V0 ICAqbG9ja2VkUmVsaWRzID0gbGZpcnN0KGxjMik7CisJCWludAkJCXJ0aTsKKworCQlpZiAocGxh bm5lZHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQorCQl7CisJCQkvKgorCQkJICog SWdub3JlIHV0aWxpdHkgc3RhdGVtZW50cywgZXhjZXB0IHRob3NlIChzdWNoIGFzIEVYUExBSU4p IHRoYXQKKwkJCSAqIGNvbnRhaW4gYSBwYXJzZWQtYnV0LW5vdC1wbGFubmVkIHF1ZXJ5LiAgTm90 ZTogaXQncyBva2F5IHRvIHVzZQorCQkJICogU2NhblF1ZXJ5Rm9yTG9ja3MsIGV2ZW4gdGhvdWdo IHRoZSBxdWVyeSBoYXNuJ3QgYmVlbiB0aHJvdWdoCisJCQkgKiBydWxlIHJld3JpdGluZywgYmVj YXVzZSByZXdyaXRpbmcgZG9lc24ndCBjaGFuZ2UgdGhlIHF1ZXJ5CisJCQkgKiByZXByZXNlbnRh dGlvbi4KKwkJCSAqLworCQkJUXVlcnkJICAgKnF1ZXJ5ID0gVXRpbGl0eUNvbnRhaW5zUXVlcnko cGxhbm5lZHN0bXQtPnV0aWxpdHlTdG10KTsKKworCQkJaWYgKHF1ZXJ5KQorCQkJCVNjYW5RdWVy eUZvckxvY2tzKHF1ZXJ5LCBmYWxzZSk7CisJCQljb250aW51ZTsKKwkJfQorCisJCXJ0aSA9IC0x OworCQl3aGlsZSAoKHJ0aSA9IGJtc19uZXh0X21lbWJlcihsb2NrZWRSZWxpZHMsIHJ0aSkpID49 IDApCisJCXsKKwkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IHJ0X2ZldGNoKHJ0aSwgcGxhbm5lZHN0 bXQtPnJ0YWJsZSk7CisKKwkJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKTsK KworCQkJLyogU2VlIHRoZSBjb21tZW50IGluIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkuICovCisJ CQlVbmxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKIAkJfQog CX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9z cmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IGQ1NDlmNjZkNGEuLjFiYmU2 YjcwNGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAtMzAzLDYgKzMwMywyNSBA QCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwgcG9ydGFsLAogCXBvcnRhbC0+c3RhdHVzID0gUE9S VEFMX0RFRklORUQ7CiB9CiAKKy8qCisgKiBQb3J0YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0 cworICoJCUNvcHkgdGhlIGdpdmVuIGxpc3Qgb2YgUGFydGl0aW9uUHJ1bmVSZXN1bHRzIGludG8g dGhlIHBvcnRhbCdzCisgKgkJY29udGV4dAorICoKKyAqIFRoaXMgYWxsb3dzIHRoZSBjYWxsZXIg dG8gZW5zdXJlIHRoYXQgdGhlIGxpc3QgZXhpc3RzIGFzIGxvbmcgYXMgdGhlIHBvcnRhbAorICog ZG9lcy4KKyAqLwordm9pZAorUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMoUG9ydGFs IHBvcnRhbCwgTGlzdCAqcGFydF9wcnVuZV9yZXN1bHRzKQoreworCU1lbW9yeUNvbnRleHQJb2xk Y3h0OworCisJQXNzZXJ0QXJnKFBvcnRhbElzVmFsaWQocG9ydGFsKSk7CisJb2xkY3h0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKHBvcnRhbC0+cG9ydGFsQ29udGV4dCk7CisJcG9ydGFsLT5wYXJ0 X3BydW5lX3Jlc3VsdHMgPSBjb3B5T2JqZWN0KHBhcnRfcHJ1bmVfcmVzdWx0cyk7CisJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKIC8qCiAgKiBQb3J0YWxSZWxlYXNlQ2FjaGVk UGxhbgogICoJCVJlbGVhc2UgYSBwb3J0YWwncyByZWZlcmVuY2UgdG8gaXRzIGNhY2hlZCBwbGFu LCBpZiBhbnkuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggYi9z cmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKaW5kZXggOWViZGUwODlhZS4uZTU3ZTEzM2Yw ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCisrKyBiL3NyYy9p bmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaApAQCAtODcsNyArODcsOSBAQCBleHRlcm4gdm9pZCBF eHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywKIAkJ CQkJCQkgIEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJ CSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIAot ZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRv Q2xhdXNlICppbnRvLAorZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBs YW5uZWRzdG10LAorCQkJCQkJICAgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVz dWx0LAorCQkJCQkJICAgSW50b0NsYXVzZSAqaW50bywKIAkJCQkJCSAgIEV4cGxhaW5TdGF0ZSAq ZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBwYXJh bXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAogCQkJCQkJICAgY29uc3QgaW5zdHJfdGlt ZSAqcGxhbmR1cmF0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCmluZGV4IGJm OTYyYWY3YWYuLmJkODc3NjQwMmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgK QEAgLTQ1LDYgKzQ1LDcgQEAgZXh0ZXJuIHZvaWQgRXhlY0NsZWFudXBUdXBsZVJvdXRpbmcoTW9k aWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKICAqIG5wYXJ0cwkJCQkJCUxlbmd0aCBvZiBzdWJwbGFu X21hcFtdIGFuZCBzdWJwYXJ0X21hcFtdLgogICogc3VicGxhbl9tYXAJCQkJCVN1YnBsYW4gaW5k ZXggYnkgcGFydGl0aW9uIGluZGV4LCBvciAtMS4KICAqIHN1YnBhcnRfbWFwCQkJCQlTdWJwYXJ0 IGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgLTEuCisgKiBydGlfbWFwCQkJCQkJUmFuZ2Ug dGFibGUgaW5kZXggYnkgcGFydGl0aW9uIGluZGV4LCBvciAwLgogICogcHJlc2VudF9wYXJ0cwkJ CQlBIEJpdG1hcHNldCBvZiB0aGUgcGFydGl0aW9uIGluZGV4ZXMgdGhhdCB3ZQogICoJCQkJCQkJ CWhhdmUgc3VicGxhbnMgb3Igc3VicGFydHMgZm9yLgogICogaW5pdGlhbF9wcnVuaW5nX3N0ZXBz CQlMaXN0IG9mIFBhcnRpdGlvblBydW5lU3RlcHMgdXNlZCB0bwpAQCAtNjEsNiArNjIsNyBAQCB0 eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhCiAJaW50CQkJbnBhcnRzOwog CWludAkJICAgKnN1YnBsYW5fbWFwOwogCWludAkJICAgKnN1YnBhcnRfbWFwOworCUluZGV4CSAg ICpydGlfbWFwOwogCUJpdG1hcHNldCAgKnByZXNlbnRfcGFydHM7CiAJTGlzdAkgICAqaW5pdGlh bF9wcnVuaW5nX3N0ZXBzOwogCUxpc3QJICAgKmV4ZWNfcHJ1bmluZ19zdGVwczsKQEAgLTEyNiw1 ICsxMjgsMTAgQEAgZXh0ZXJuIFBhcnRpdGlvblBydW5lU3RhdGUgKkV4ZWNJbml0UGFydGl0aW9u UHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJCQkJCQkJCQkJCQkgaW50IHBhcnRfcHJ1 bmVfaW5kZXgsCiAJCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqKmluaXRpYWxseV92YWxpZF9zdWJw bGFucyk7CiBleHRlcm4gQml0bWFwc2V0ICpFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0 aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKLQkJCQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1 bmUpOworCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKKwkJCQkJCQkJCQkgICBCaXRt YXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpOworZXh0ZXJuIEJpdG1hcHNldCAqRXhlY1BhcnRp dGlvbkRvSW5pdGlhbFBydW5pbmcoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJCQkJCQlQ YXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJCQkJCQkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWlu Zm8sCisJCQkJCQkJCUJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcyk7CiAjZW5kaWYJCQkJ CQkJLyogRVhFQ1BBUlRJVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjZGVzYy5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAppbmRleCBlNzll MmMwMDFmLi42MGQ1NjQ0OTA4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj ZGVzYy5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKQEAgLTM1LDYgKzM1 LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiAJLyogVGhlc2UgZmllbGRzIGFyZSBwcm92 aWRlZCBieSBDcmVhdGVRdWVyeURlc2MgKi8KIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURf U0VMRUNULCBDTURfVVBEQVRFLCBldGMuICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10Owkv KiBwbGFubmVyJ3Mgb3V0cHV0IChjb3VsZCBiZSB1dGlsaXR5LCB0b28pICovCisJUGFydGl0aW9u UHJ1bmVSZXN1bHQgKnBhcnRfcHJ1bmVfcmVzdWx0OyAvKiBFeGVjdXRvckRvSW5pdGlhbFBydW5p bmcoKSdzCisJCQkJCQkJCQkJCSAgKiBvdXRwdXQgZm9yIHBsYW5uZWRzdG10ICovCiAJY29uc3Qg Y2hhciAqc291cmNlVGV4dDsJCS8qIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeSAqLwogCVNuYXBz aG90CXNuYXBzaG90OwkJLyogc25hcHNob3QgdG8gdXNlIGZvciBxdWVyeSAqLwogCVNuYXBzaG90 CWNyb3NzY2hlY2tfc25hcHNob3Q7CS8qIGNyb3NzY2hlY2sgZm9yIFJJIHVwZGF0ZS9kZWxldGUg Ki8KQEAgLTU3LDYgKzU5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiAKIC8qIGluIHBx dWVyeS5jICovCiBleHRlcm4gUXVlcnlEZXNjICpDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQg KnBsYW5uZWRzdG10LAorCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lUmVzdWx0ICpwYXJ0X3BydW5l X3Jlc3VsdCwKIAkJCQkJCQkJICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJCQkgIFNu YXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkgIFNuYXBzaG90IGNyb3NzY2hlY2tfc25hcHNob3Qs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCBkNjhhNmI5ZDI4Li41YzRhMjgyYmUwIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE4NSw2ICsxODUsOCBAQCBFeGVjR2V0SnVua0F0dHJp YnV0ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgQXR0ck51bWJlciBhdHRubywgYm9vbCAqaXNOdWxs KQogLyoKICAqIHByb3RvdHlwZXMgZnJvbSBmdW5jdGlvbnMgaW4gZXhlY01haW4uYwogICovCitl eHRlcm4gUGFydGl0aW9uUHJ1bmVSZXN1bHQgKkV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZyhQbGFu bmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFt cyk7CiBleHRlcm4gdm9pZCBFeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKTsKIGV4dGVybiB2b2lkIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpx dWVyeURlc2MsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JSdW4oUXVlcnlEZXNj ICpxdWVyeURlc2MsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDYzYTg5NDc0ZGIuLjEyZWEwNmMy ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0xMDAxLDYgKzEwMDEsMzMgQEAgdHlwZWRlZiBz dHJ1Y3QgRG9tYWluQ29uc3RyYWludFN0YXRlCiAgKi8KIHR5cGVkZWYgVHVwbGVUYWJsZVNsb3Qg KigqRXhlY1Byb2NOb2RlTXRkKSAoc3RydWN0IFBsYW5TdGF0ZSAqcHN0YXRlKTsKIAorLyotLS0t LS0tLS0tLS0tLS0tCisgKiBQYXJ0aXRpb25QcnVuZVJlc3VsdAorICoKKyAqIFRoZSByZXN1bHQg b2YgcGVyZm9ybWluZyBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSBpbnZvY2F0aW9uIG9uIGEg Z2l2ZW4KKyAqIFBsYW5uZWRTdG10LgorICoKKyAqIENvbnRhaW5zIGEgbGlzdCBvZiBCaXRtYXBz ZXQgb2YgdGhlIGluZGV4ZXMgb2YgdGhlIHN1YnBsYW5zIHJlbWFpbmluZyBhZnRlcgorICogcGVy Zm9ybWluZyBpbml0aWFsIHBydW5pbmcgYnkgY2FsbGluZyBFeGVjRmluZE1hdGNoaW5nU3ViUGxh bnMoKSBmb3IgZXZlcnkKKyAqIFBhcnRpdGlvblBydW5lSW5mbyBmb3VuZCBpbiBQbGFubmVkU3Rt dC5wYXJ0UHJ1bmVJbmZvcy4gIFJUIGluZGV4ZXMgb2YgdGhlCisgKiBsZWFmIHBhcnRpdGlvbnMg c2Nhbm5lZCBieSB0aG9zZSBzdWJwbGFucyBhY3Jvc3MgYWxsIFBhcnRpdGlvblBydW5lSW5mb3MK KyAqIGFyZSBhZGRlZCBpbnRvIHNjYW5fbGVhZnBhcnRfcnRpcy4KKyAqCisgKiBUaGlzIGlzIHVz ZWQgYnkgR2V0Q2FjaGVkUGxhbigpIHRvIGluZm9ybSBpdHMgY2FsbGVycyBvZiB0aGUgcHJ1bmlu ZworICogZGVjaXNpb25zIG1hZGUgd2hlbiBwZXJmb3JtaW5nIEFjcXVpcmVFeGVjdXRvckxvY2tz KCkgb24gYSBnaXZlbiBjYWNoZWQKKyAqIFBsYW5uZWRTdG10LCB3aGljaCB0aGUgY2FsbGVycyB0 aGVuIHBhc3Mgb24gdG8gdGhlIGV4ZWN1dG9yLiAgVGhlIGV4ZWN1dG9yCisgKiByZWZlcnMgdG8g dGhpcyBub2RlIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBwbGFuIG5vZGVzIHdoaWNoIGNvbnRhaW4g c3VicGxhbnMKKyAqIHRoYXQgbWF5IGhhdmUgYmVlbiBwcnVuZWQgYnkgRXhlY3V0b3JEb0luaXRp YWxQcnVuaW5nKCksIHJhdGhlciB0aGFuCisgKiByZWRvaW5nIGluaXRpYWwgcHJ1bmluZy4KKyAq LwordHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVSZXN1bHQKK3sKKwlOb2RlVGFnCQl0eXBl OworCisJTGlzdAkJICAgKnZhbGlkX3N1YnBsYW5fb2Zmc19saXN0OworCUJpdG1hcHNldAkgICAq c2Nhbl9sZWFmcGFydF9ydGlzOworfSBQYXJ0aXRpb25QcnVuZVJlc3VsdDsKKwogLyogLS0tLS0t LS0tLS0tLS0tLQogICoJCVBsYW5TdGF0ZSBub2RlCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKaW5kZXggY2RkNmRl YmZhMC4uYjMzZDllNDI2ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCkBAIC0yMTIsNiArMjEyLDcgQEAgZXh0ZXJu IHN0cnVjdCBCaXRtYXBzZXQgKnJlYWRCaXRtYXBzZXQodm9pZCk7CiBleHRlcm4gdWludHB0cl90 IHJlYWREYXR1bShib29sIHR5cGJ5dmFsKTsKIGV4dGVybiBib29sICpyZWFkQm9vbENvbHMoaW50 IG51bUNvbHMpOwogZXh0ZXJuIGludCAqcmVhZEludENvbHMoaW50IG51bUNvbHMpOworZXh0ZXJu IEluZGV4ICpyZWFkSW5kZXhDb2xzKGludCBudW1Db2xzKTsKIGV4dGVybiBPaWQgKnJlYWRPaWRD b2xzKGludCBudW1Db2xzKTsKIGV4dGVybiBpbnQxNiAqcmVhZEF0dHJOdW1iZXJDb2xzKGludCBu dW1Db2xzKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCBkODc5NTdmZjZjLi43OTU3YWViNmQ3 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTI1LDYgKzEyNSwxOSBAQCB0eXBlZGVmIHN0cnVj dCBQbGFubmVyR2xvYmFsCiAJLyogTGlzdCBvZiBQYXJ0aXRpb25QcnVuZUluZm8gY29udGFpbmVk IGluIHRoZSBwbGFuICovCiAJTGlzdAkgICAqcGFydFBydW5lSW5mb3M7CiAKKwkvKgorCSAqIERv IGFueSBvZiB0aG9zZSBQYXJ0aXRpb25QcnVuZUluZm9zIGhhdmUgaW5pdGlhbCAocHJlLWV4ZWMp IHBydW5pbmcKKwkgKiBzdGVwcyBpbiB0aGVtPworCSAqLworCWJvb2wJCWNvbnRhaW5zSW5pdGlh bFBydW5pbmc7CisKKwkvKgorCSAqIEluZGV4ZXMgb2YgYWxsIHJhbmdlIHRhYmxlIGVudHJpZXMg bWludXMgaW5kZXhlcyBvZiByYW5nZSB0YWJsZSBlbnRyaWVzCisJICogb2YgdGhlIGxlYWYgcGFy dGl0aW9ucyBzY2FubmVkIGJ5IHBydW5hYmxlIHN1YnBsYW5zOyBzZWUKKwkgKiBBY3F1aXJlRXhl Y3V0b3JMb2NrcygpCisJICovCisJQml0bWFwc2V0ICAqbWluTG9ja1JlbGlkczsKKwogCS8qIE9J RHMgb2YgcmVsYXRpb25zIHRoZSBwbGFuIGRlcGVuZHMgb24gKi8KIAlMaXN0CSAgICpyZWxhdGlv bk9pZHM7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggZjJkYWFiYjNiNy4uMWQyYzBkOWJkZiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTcyLDggKzcyLDE3IEBAIHR5cGVkZWYgc3RydWN0IFBs YW5uZWRTdG10CiAJTGlzdAkgICAqcGFydFBydW5lSW5mb3M7CS8qIExpc3Qgb2YgUGFydGl0aW9u UHJ1bmVJbmZvIGNvbnRhaW5lZCBpbgogCQkJCQkJCQkgKiB0aGUgcGxhbiAqLwogCisJYm9vbAkJ Y29udGFpbnNJbml0aWFsUHJ1bmluZzsJLyogRG8gYW55IG9mIHRob3NlIFBhcnRpdGlvblBydW5l SW5mb3MKKwkJCQkJCQkJCQkgKiBoYXZlIGluaXRpYWwgKHByZS1leGVjKSBwcnVuaW5nCisJCQkJ CQkJCQkJICogc3RlcHMgaW4gdGhlbT8gKi8KKwogCUxpc3QJICAgKnJ0YWJsZTsJCQkvKiBsaXN0 IG9mIFJhbmdlVGJsRW50cnkgbm9kZXMgKi8KIAorCUJpdG1hcHNldCAgKm1pbkxvY2tSZWxpZHM7 CS8qIEluZGV4ZXMgb2YgYWxsIHJhbmdlIHRhYmxlIGVudHJpZXMgbWludXMKKwkJCQkJCQkJICog aW5kZXhlcyBvZiByYW5nZSB0YWJsZSBlbnRyaWVzIG9mIHRoZSBsZWFmCisJCQkJCQkJCSAqIHBh cnRpdGlvbnMgc2Nhbm5lZCBieSBwcnVuYWJsZSBzdWJwbGFuczsKKwkJCQkJCQkJICogc2VlIEFj cXVpcmVFeGVjdXRvckxvY2tzKCkgKi8KKwogCS8qIHJ0YWJsZSBpbmRleGVzIG9mIHRhcmdldCBy ZWxhdGlvbnMgZm9yIElOU0VSVC9VUERBVEUvREVMRVRFICovCiAJTGlzdAkgICAqcmVzdWx0UmVs YXRpb25zOwkvKiBpbnRlZ2VyIGxpc3Qgb2YgUlQgaW5kZXhlcywgb3IgTklMICovCiAKQEAgLTE0 MDksNiArMTQxOCwxMyBAQCB0eXBlZGVmIHN0cnVjdCBQbGFuUm93TWFyawogICogcHJ1bmVfaW5m b3MJCQlMaXN0IG9mIExpc3RzIGNvbnRhaW5pbmcgUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gbm9k ZXMsCiAgKgkJCQkJCW9uZSBzdWJsaXN0IHBlciBydW4tdGltZS1wcnVuYWJsZSBwYXJ0aXRpb24g aGllcmFyY2h5CiAgKgkJCQkJCWFwcGVhcmluZyBpbiB0aGUgcGFyZW50IHBsYW4gbm9kZSdzIHN1 YnBsYW5zLgorICoKKyAqIG5lZWRzX2luaXRfcHJ1bmluZwlEb2VzIGFueSBvZiB0aGUgUGFydGl0 aW9uZWRSZWxQcnVuZUluZm9zIGluCisgKgkJCQkJCXBydW5lX2luZm9zIGhhdmUgaXRzIGluaXRp YWxfcHJ1bmluZ19zdGVwcyBzZXQ/CisgKgorICogbmVlZHNfZXhlY19wcnVuaW5nCURvZXMgYW55 IG9mIHRoZSBQYXJ0aXRpb25lZFJlbFBydW5lSW5mb3MgaW4KKyAqCQkJCQkJcHJ1bmVfaW5mb3Mg aGF2ZSBpdHMgZXhlY19wcnVuaW5nX3N0ZXBzIHNldD8KKyAqCiAgKiBvdGhlcl9zdWJwbGFucwkJ SW5kZXhlcyBvZiBhbnkgc3VicGxhbnMgdGhhdCBhcmUgbm90IGFjY291bnRlZCBmb3IKICAqCQkJ CQkJYnkgYW55IG9mIHRoZSBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyBub2RlcyBpbgogICoJCQkJ CQkicHJ1bmVfaW5mb3MiLiAgVGhlc2Ugc3VicGxhbnMgbXVzdCBub3QgYmUgcHJ1bmVkLgpAQCAt MTQxOSw2ICsxNDM1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVJbmZvCiAKIAlO b2RlVGFnCQl0eXBlOwogCUxpc3QJICAgKnBydW5lX2luZm9zOworCWJvb2wJCW5lZWRzX2luaXRf cHJ1bmluZzsKKwlib29sCQluZWVkc19leGVjX3BydW5pbmc7CiAJQml0bWFwc2V0ICAqb3RoZXJf c3VicGxhbnM7CiB9IFBhcnRpdGlvblBydW5lSW5mbzsKIApAQCAtMTQ2Myw2ICsxNDgxLDkgQEAg dHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uZWRSZWxQcnVuZUluZm8KIAkvKiByZWxhdGlvbiBPSUQg YnkgcGFydGl0aW9uIGluZGV4LCBvciAwICovCiAJT2lkCQkgICAqcmVsaWRfbWFwIHBnX25vZGVf YXR0cihhcnJheV9zaXplKG5wYXJ0cykpOwogCisJLyogUmFuZ2UgdGFibGUgaW5kZXggYnkgcGFy dGl0aW9uIGluZGV4LCBvciAwLiAqLworCUluZGV4CSAgICpydGlfbWFwIHBnX25vZGVfYXR0cihh cnJheV9zaXplKG5wYXJ0cykpOworCiAJLyoKIAkgKiBpbml0aWFsX3BydW5pbmdfc3RlcHMgc2hv d3MgaG93IHRvIHBydW5lIGR1cmluZyBleGVjdXRvciBzdGFydHVwIChpLmUuLAogCSAqIHdpdGhv dXQgdXNlIG9mIGFueSBQQVJBTV9FWEVDIFBhcmFtcyk7IGl0IGlzIE5JTCBpZiBubyBzdGFydHVw IHBydW5pbmcKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3Jj L2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKaW5kZXggMDQ5OTYzNWY1OS4uMWM1YmI1ZWNlMSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcGxhbmNhY2hlLmgKQEAgLTIyMCw3ICsyMjAsOCBAQCBleHRlcm4gTGlzdCAqQ2Fj aGVkUGxhbkdldFRhcmdldExpc3QoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIGV4dGVy biBDYWNoZWRQbGFuICpHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Us CiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VP d25lciBvd25lciwKLQkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKKwkJCQkJ CQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCQkJCQkgTGlzdCAqKnBhcnRfcHJ1 bmVfcmVzdWx0X2xpc3QpOwogZXh0ZXJuIHZvaWQgUmVsZWFzZUNhY2hlZFBsYW4oQ2FjaGVkUGxh biAqcGxhbiwgUmVzb3VyY2VPd25lciBvd25lcik7CiAKIGV4dGVybiBib29sIENhY2hlZFBsYW5B bGxvd3NTaW1wbGVWYWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L3BvcnRhbC5oCmluZGV4IGFlZGRiZGFmZTUuLjlmNzcyN2E4MzcgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3V0aWxzL3BvcnRhbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCkBA IC0xMzgsNiArMTM4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUG9ydGFsRGF0YQogCVF1ZXJ5Q29tcGxl dGlvbiBxYzsJCQkvKiBjb21tYW5kIGNvbXBsZXRpb24gZGF0YSBmb3IgZXhlY3V0ZWQgcXVlcnkg Ki8KIAlMaXN0CSAgICpzdG10czsJCQkvKiBsaXN0IG9mIFBsYW5uZWRTdG10cyAqLwogCUNhY2hl ZFBsYW4gKmNwbGFuOwkJCS8qIENhY2hlZFBsYW4sIGlmIHN0bXRzIGFyZSBmcm9tIG9uZSAqLwor CUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0czsJLyogbGlzdCBvZiBQYXJ0aXRpb25QcnVuZVJl c3VsdHMgKi8KIAogCVBhcmFtTGlzdEluZm8gcG9ydGFsUGFyYW1zOyAvKiBwYXJhbXMgdG8gcGFz cyB0byBxdWVyeSAqLwogCVF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52OyAvKiBlbnZpcm9ubWVu dCBmb3IgcXVlcnkgKi8KQEAgLTI0Miw2ICsyNDMsOCBAQCBleHRlcm4gdm9pZCBQb3J0YWxEZWZp bmVRdWVyeShQb3J0YWwgcG9ydGFsLAogCQkJCQkJCSAgQ29tbWFuZFRhZyBjb21tYW5kVGFnLAog CQkJCQkJCSAgTGlzdCAqc3RtdHMsCiAJCQkJCQkJICBDYWNoZWRQbGFuICpjcGxhbik7CitleHRl cm4gdm9pZCBQb3J0YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0cyhQb3J0YWwgcG9ydGFsLAor CQkJCQkJCQkJCQkgTGlzdCAqcGFydF9wcnVuZV9yZXN1bHRfbGlzdCk7CiBleHRlcm4gUGxhbm5l ZFN0bXQgKlBvcnRhbEdldFByaW1hcnlTdG10KFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQg UG9ydGFsQ3JlYXRlSG9sZFN0b3JlKFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFs SGFzaFRhYmxlRGVsZXRlQWxsKHZvaWQpOwotLSAKMi4zNS4zCgo= --00000000000031405c05e3aa647f--