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 1p13Ti-0004LM-6j for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Dec 2022 10:41:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p13Th-0001K7-6O for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Dec 2022 10:41:09 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p13Tg-0001HZ-8C for pgsql-hackers@lists.postgresql.org; Fri, 02 Dec 2022 10:41:08 +0000 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1p13Td-0006PG-Ju for pgsql-hackers@postgresql.org; Fri, 02 Dec 2022 10:41:07 +0000 Received: by mail-pl1-x62f.google.com with SMTP id y17so4287533plp.3 for ; Fri, 02 Dec 2022 02:41:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=tnFHNSAVVAa0t+3gjcfppc1IIisc8EXikxLiu43QTNM=; b=SHG52/VWlw1w3TiH5zdNHBgdmAjeW3RuofMCxhzuVlzx/wywpWmwnrEjdwrKwVDlfg kjOv9xFVUUTlJgpoXUGuSFAozG+lp6rrRybEEpM2ddwtQ5s21T60EkkyPHbCRWZzIzqw RtYX3OwibCoR+fngNyo6KzoKHmDyyVU8m9wfaXattGVSfL4HDB1RmJFI9mvp7V71/K4E AMsiVckgYcVkeXKXg7fNJGiYWlGtnliqS+idQOgLsicnODlQqZfpB0sUya8REn88jb+D m5kUgCcvDH9bal67ky6UVL+CsAqIBCcXDgiqgaINaUm9rWT3S79sjiqlUszDGu0NnKAA j7qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=tnFHNSAVVAa0t+3gjcfppc1IIisc8EXikxLiu43QTNM=; b=likM1J/U5yXlhoQfFX4Lgypeh8owrRWdqS2iMEMOVxievg3l/Y0MRKfZxrRvpPHoVi mFPrcN5kyOU1vLN/ak04755KZJYA+h6GP0mrtwNNoW1DG5CqiVVkWIBdXvL71Vpt1LZa i3gEPMjqPGSTNo1A+ISONiCPKSi2M7qcjbWtLvIKQ3JTm3KjWdbluwqn3rfZ4fWPY2+j JcSozvc6O6GxUjpNJGSgoagJbMaGQjOz3xHhO+O1Ms7xhf/tL8Zyxk187ICdVzX7PiIi KP2J7Xr09mj5ceZr2mjtWtBMO48xP+Q5XxSh3u0q/iVFrM2TdxqTVi4b8Licam1hhr3w H5Gg== X-Gm-Message-State: ANoB5plxKdFUV20GEBBfZxBFUcJ6sJyjHg+oBINV8EmebwAsy2QeNAHp SCwkiakDFJmNpa+HbCE/emBJZDdnrIhjyMdtfQE= X-Google-Smtp-Source: AA0mqf4qHAHp42Z2gUlfD/wd6AcZFQ5ON9FH87Q+vcj3jvaAE9GXSCmv6vNcPNQlAnWaVePS+3M2hc3pnONEgpjHmR4= X-Received: by 2002:a17:902:d510:b0:186:b137:4b42 with SMTP id b16-20020a170902d51000b00186b1374b42mr8106735plg.98.1669977664292; Fri, 02 Dec 2022 02:41:04 -0800 (PST) MIME-Version: 1.0 References: <20221201112106.gjlcv6nvndjbnoez@alvherre.pgsql> In-Reply-To: From: Amit Langote Date: Fri, 2 Dec 2022 19:40:42 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Alvaro Herrera Cc: Robert Haas , Jacob Champion , Zhihong Yu , David Rowley , Tom Lane , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000771a5f05eed5f9f3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000771a5f05eed5f9f3 Content-Type: text/plain; charset="UTF-8" On Thu, Dec 1, 2022 at 9:43 PM Amit Langote wrote: > On Thu, Dec 1, 2022 at 8:21 PM Alvaro Herrera wrote: > > On 2022-Dec-01, Amit Langote wrote: > > > Hmm, how about keeping the [Merge]Append's parent relation's RT index > > > in the PartitionPruneInfo and passing it down to > > > ExecInitPartitionPruning() from ExecInit[Merge]Append() for > > > cross-checking? Both Append and MergeAppend already have a > > > 'apprelids' field that we can save a copy of in the > > > PartitionPruneInfo. Tried that in the attached delta patch. > > > > Ah yeah, that sounds about what I was thinking. I've merged that in and > > pushed to github, which had a strange pg_upgrade failure on Windows > > mentioning log files that were not captured by the CI tooling. So I > > pushed another one trying to grab those files, in case it wasn't an > > one-off failure. It's running now: > > https://cirrus-ci.com/task/5857239638999040 > > > > If all goes well with this run, I'll get this 0001 pushed. > > Thanks for pushing 0001. > > Rebased 0002 attached. Thought it might be good for PartitionPruneResult to also have root_parent_relids that matches with the corresponding PartitionPruneInfo. ExecInitPartitionPruning() does a sanity check that the root_parent_relids of a given pair of PartitionPrune{Info | Result} match. Posting the patch separately as the attached 0002, just in case you might think that the extra cross-checking would be an overkill. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --000000000000771a5f05eed5f9f3 Content-Type: application/octet-stream; name="v26-0002-Add-root_parent_relids-to-PartitionPruneResult.patch" Content-Disposition: attachment; filename="v26-0002-Add-root_parent_relids-to-PartitionPruneResult.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lb6dhxwa1 RnJvbSBmMWFmMzI4MTY2MzUyNTQ3NzMzODY2MzBiNjM0ODM1YmQyNmQxMjI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyIERlYyAyMDIyIDE5OjMyOjE0ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MjYgMi8y XSBBZGQgcm9vdF9wYXJlbnRfcmVsaWRzIHRvIFBhcnRpdGlvblBydW5lUmVzdWx0CgpJdCdzIHNh bWUgYXMgdGhlIGNvcnJlc3BvbmRpbmcgUGFydGl0aW9uUHJ1bmVJbmZvJ3Mgcm9vdF9wYXJlbnRf cmVsaWRzLgpMaWtlIFBhcnRpdGlvblBydW5lSW5mby5yb290X3BhcmVudF9yZWxpZHMsIGl0J3Mg dGhlcmUgZm9yCmNyb3NzLWNoZWNraW5nIGEgUGFydGl0aW9uUHJ1bmVSZXN1bHQgZm91bmQgYXQg YSBnaXZlbiBwbGFuIG5vZGUncwpwYXJ0X3BydW5lX2luZGV4IGFjdHVhbGx5IG1hdGNoZXMgdGhl IHBsYW4gbm9kZS4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgfCAg MiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIHwgMTMgKysrKysrKysr KystLQogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgICAgIHwgIDcgKysrKysrKwog MyBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jCmluZGV4IDdhNGRiODAxMDQuLjFlODRlNDdkNDYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwpAQCAtMTQ1LDYgKzE0NSw4IEBAIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmlu ZyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQlQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdChsYyk7CiAJCVBhcnRpdGlvblBydW5l UmVzdWx0ICpwcnVuZXJlc3VsdCA9IG1ha2VOb2RlKFBhcnRpdGlvblBydW5lUmVzdWx0KTsKIAor CQlwcnVuZXJlc3VsdC0+cm9vdF9wYXJlbnRfcmVsaWRzID0KKwkJCWJtc19jb3B5KHBydW5laW5m by0+cm9vdF9wYXJlbnRfcmVsaWRzKTsKIAkJcHJ1bmVyZXN1bHQtPnZhbGlkX3N1YnBsYW5fb2Zm cyA9CiAJCQlFeGVjUGFydGl0aW9uRG9Jbml0aWFsUHJ1bmluZyhwbGFubmVkc3RtdCwgcGFyYW1z LCBwcnVuZWluZm8sCiAJCQkJCQkJCQkJICBzY2FuX2xlYWZwYXJ0X3J0aXMpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDEzZTQ1MGMwZmEuLmVkYTE0ZDYyNDEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTE4NTIsOCArMTg1MiwxNyBAQCBFeGVj SW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJICovCiAJaWYgKGVz dGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzKQogCXsKLQkJcHJ1bmVyZXN1bHQgPSBsaXN0X250 aChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cywgcGFydF9wcnVuZV9pbmRleCk7Ci0JCUFz c2VydChJc0EocHJ1bmVyZXN1bHQsIFBhcnRpdGlvblBydW5lUmVzdWx0KSk7CisJCXBydW5lcmVz dWx0ID0gbGlzdF9udGhfbm9kZShQYXJ0aXRpb25QcnVuZVJlc3VsdCwKKwkJCQkJCQkJCWVzdGF0 ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzLAorCQkJCQkJCQkJcGFydF9wcnVuZV9pbmRleCk7CisJ CWlmICghYm1zX2VxdWFsKHJvb3RfcGFyZW50X3JlbGlkcywgcHJ1bmVpbmZvLT5yb290X3BhcmVu dF9yZWxpZHMpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVEVS TkFMX0VSUk9SKSwKKwkJCQkJZXJybXNnX2ludGVybmFsKCJtaXNtYXRjaGluZyBQYXJ0aXRpb25Q cnVuZUluZm8gYW5kIFBhcnRpdGlvblBydW5lUmVzdWx0IGF0IHBhcnRfcHJ1bmVfaW5kZXggJWQi LAorCQkJCQkJCQkJcGFydF9wcnVuZV9pbmRleCksCisJCQkJCWVycmRldGFpbF9pbnRlcm5hbCgi cHJ1bnJlc3VsdCByZWxpZHMgJXMsIHBydW5laW5mbyByZWxpZHMgJXMiLAorCQkJCQkJCQkJICAg Ym1zVG9TdHJpbmcocHJ1bmVyZXN1bHQtPnJvb3RfcGFyZW50X3JlbGlkcyksCisJCQkJCQkJCQkg ICBibXNUb1N0cmluZyhwcnVuZWluZm8tPnJvb3RfcGFyZW50X3JlbGlkcykpKTsKIAl9CiAKIAlp ZiAocHJ1bmVyZXN1bHQgPT0gTlVMTCB8fCBwcnVuZWluZm8tPm5lZWRzX2V4ZWNfcHJ1bmluZykK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMGNhYjY5NThkNy4uMzBmNTE0MTRlOSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGxhbm5vZGVzLmgKQEAgLTE1ODAsNiArMTU4MCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25QcnVuZVN0ZXBDb21iaW5lCiAgKiBUaGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgRXhlY1BhcnRp dGlvbkRvSW5pdGlhbFBydW5pbmcoKSBvbiBhIGdpdmVuCiAgKiBQYXJ0aXRpb25QcnVuZUluZm8u CiAgKgorICogcm9vdF9wYXJlbnRfcmVsaWRzIGlzIHNhbWUgYXMgUGFydGl0aW9uUHJ1bmVJbmZv LnJvb3RfcGFyZW50X3JlbGlkcy4gIEl0J3MKKyAqIHRoZXJlIGZvciBjcm9zcy1jaGVja2luZyBp biBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKSB0aGF0IHRoZQorICogUGFydGl0aW9uUHJ1bmVS ZXN1bHQgYW5kIHRoZSBQYXJ0aXRpb25QcnVuZUluZm8gYXQgYSBnaXZlbiBpbmRleCBpbgorICog RVN0YXRlLmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyBhbmQgRVN0YXRlLmVzX3BhcnRfcHJ1bmVfaW5m b3MsIHJlc3BlY3RpdmVseSwKKyAqIGJlbG9uZyB0byB0aGUgc2FtZSBwYXJlbnQgcGxhbiBub2Rl LgorICoKICAqIHZhbGlkX3N1YnBsYW5zX29mZnMgY29udGFpbnMgdGhlIGluZGV4ZXMgb2Ygc3Vi cGxhbnMgcmVtYWluaW5nIGFmdGVyCiAgKiBwZXJmb3JtaW5nIGluaXRpYWwgcHJ1bmluZyBieSBj YWxsaW5nIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucygpIG9uIHRoZQogICogUGFydGl0aW9uUHJ1 bmVJbmZvLgpAQCAtMTU5Nyw2ICsxNjAzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1 bmVSZXN1bHQKIHsKIAlOb2RlVGFnCQl0eXBlOwogCisJQml0bWFwc2V0CSAgICpyb290X3BhcmVu dF9yZWxpZHM7CiAJQml0bWFwc2V0CSAgICp2YWxpZF9zdWJwbGFuX29mZnM7CiB9IFBhcnRpdGlv blBydW5lUmVzdWx0OwogCi0tIAoyLjM1LjMKCg== --000000000000771a5f05eed5f9f3 Content-Type: application/octet-stream; name="v26-0001-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Disposition: attachment; filename="v26-0001-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lb6dhxvz0 RnJvbSBkOGI4MTg1YjZjZWIyYTJhMzNhNmFmMTQyZjIzYTU5ZmQ5M2Q1Y2RjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBEZWMgMjAyMSAxNjo1NToxNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjI2IDEv Ml0gT3B0aW1pemUgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBieSBsb2NraW5nIG9ubHkKIHVucHJ1 bmVkIHBhcnRpdGlvbnMKClRoaXMgY29tbWl0IHRlYWNoZXMgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSB0byBwZXJmb3JtIGluaXRpYWwKcGFydGl0aW9uIHBydW5pbmcgdG8gbm90aW9uYWxseSBlbGlt aW5hdGUgdGhlIHN1Ym5vZGVzIGNvbnRhaW5lZCBpbiBhCmdlbmVyaWMgY2FjaGVkIHBsYW4gdGhh dCBuZWVkIG5vdCBiZSBpbml0aWFsaXplZCBkdXJpbmcgdGhlIGFjdHVhbApleGVjdXRpb24gb2Yg dGhlIHBsYW4gYW5kIHNraXAgbG9ja2luZyB0aGUgcGFydGl0aW9uIHNjYW5uZWQgYnkgdGhvc2UK c3Vibm9kZXMuCgpUaGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1 bmluZyB0aGlzIHdheSBiZWZvcmUgdGhlCmFjdHVhbCBleGVjdXRpb24gaGFzIHN0YXJ0ZWQgaXMg bWFkZSBhdmFpbGFibGUgdG8gdGhlIGFjdHVhbCBleGVjdXRpb24gdmlhClBhcnRpdGlvblBydW5l UmVzdWx0LCBtYWRlIGF2YWlsYWJsZSBhbG9uZyB3aXRoIHRoZSBQbGFubmVkU3RtdCBieSB0aGUK Y2FsbGVycyBvZiB0aGUgZXhlY3V0b3IgdGhhdCB1c2VkIHBsYW5jYWNoZS5jIHRvIGdldCB0aGUg cGxhbi4gIEl0IGlzIE5VTEwKaW4gdGhlIGNhc2VzIGluIHdoaWNoIHRoZSBwbGFuIGlzIG9idGFp bmVkIGJ5IGNhbGxpbmcgdGhlIHBsYW5uZXIKZGlyZWN0bHkgb3IgaWYgdGhlIHBsYW4gb2J0YWlu ZWQgYnkgcGxhbmNhY2hlLmMgaXMgbm90IGEgZ2VuZXJpYyBvbmUuCi0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NyZWF0ZWFzLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICB8ICAyNiArKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgICAgICAgIHwgIDMyICsrKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgIHwgIDUxICsrKysrKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgfCAgMjYgKystCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMgICB8IDIzOCArKysrKysrKysrKysrKysrKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFwcGVuZC5jICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJn ZUFwcGVuZC5jIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAg ICB8ICAyNyArKy0KIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgIHwgICA4 ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICB8ICAgMiArCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICB8ICA0NiArKysrKwogc3JjL2JhY2tl bmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAgfCAgNDEgKysrKy0KIHNyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYyAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC90Y29wL3BxdWVy eS5jICAgICAgICAgICAgICB8ICAyOCArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5j YWNoZS5jICAgIHwgMjA4ICsrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMv bW1nci9wb3J0YWxtZW0uYyAgICAgfCAgMTkgKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxh aW4uaCAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9u LmggICB8ICAgOSArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAgICAgICAgfCAg IDMgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgfCAgIDMgKwogc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv bm9kZXMvbm9kZXMuaCAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmggICAgICAgICAgfCAgMTIgKysKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5o ICAgICAgICAgIHwgIDQ2ICsrKysrCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAg ICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgfCAg IDMgKwogMzMgZmlsZXMgY2hhbmdlZCwgNzgxIGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggZjI2Y2MwZDE2Mi4uNDAxYTIyODBhMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weXRvLmMKQEAgLTU1OCw3ICs1NTgsNyBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCSgoRFJfY29weSAqKSBkZXN0KS0+Y3N0YXRlID0gY3N0YXRlOwogCiAJCS8q IENyZWF0ZSBhIFF1ZXJ5RGVzYyByZXF1ZXN0aW5nIG5vIG91dHB1dCAqLwotCQljc3RhdGUtPnF1 ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJ Y3N0YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTklMLCBwc3RhdGUtPnBf c291cmNldGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJ SW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jcmVhdGVhcy5jCmluZGV4IDE1MmMyOWI1NTEuLjk0MjQ0OTU0NGMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY3JlYXRlYXMuYwpAQCAtMzI1LDcgKzMyNSw3IEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCVVwZGF0ZUFjdGl2ZVNu YXBzaG90Q29tbWFuZElkKCk7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGlu ZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCi0JCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJcXVlcnlEZXNjID0gQ3JlYXRl UXVlcnlEZXNjKHBsYW4sIE5JTCwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCiAJCQkJCQkJCQlHZXRB Y3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCQlkZXN0LCBwYXJhbXMs IHF1ZXJ5RW52LCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGY4Njk4M2M2NjAuLjJm MmI1NTg2MDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTQwNyw3ICs0MDcsNyBAQCBFeHBs YWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJfQogCiAJCS8q IHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBvdXRwdXQgKi8KLQkJRXhwbGFpbk9uZVBs YW4ocGxhbiwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAorCQlFeHBs YWluT25lUGxhbihwbGFuLCBOSUwsIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVy eUVudiwKIAkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDog TlVMTCkpOwogCX0KIH0KQEAgLTUxNSw3ICs1MTUsOCBAQCBFeHBsYWluT25lVXRpbGl0eShOb2Rl ICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRv IGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVk c3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFu KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgTGlzdCAqcGFydF9wcnVuZV9yZXN1bHRzLAorCQkJ ICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIg KnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCiAJCQkgICBjb25z dCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UpCkBAIC01NjMsNyArNTY0LDcgQEAgRXhwbGFpbk9uZVBs YW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3Rh dGUgKmVzLAogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVz YyBmb3IgdGhlIHF1ZXJ5ICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRz dG10LCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbm5lZHN0 bXQsIHBhcnRfcHJ1bmVfcmVzdWx0cywgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNu YXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVu diwgaW5zdHJ1bWVudF9vcHRpb24pOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IGNm MWIxY2E1NzEuLjkwNGNiY2JhNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC03Nzks NyArNzc5LDcgQEAgZXhlY3V0ZV9zcWxfc3RyaW5nKGNvbnN0IGNoYXIgKnNxbCkKIAkJCXsKIAkJ CQlRdWVyeURlc2MgICpxZGVzYzsKIAotCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQs CisJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwgTklMLAogCQkJCQkJCQkJCXNxbCwK IAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRlc3QsIE5V TEwsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IDlhYzAzODM0NTkuLjY1Yzhk MGFhNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTQwOCw3ICs0MDgsNyBAQCByZWZyZXNo X21hdHZpZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnksCiAJVXBk YXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywg cmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCXF1ZXJ5RGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVR dWVyeURlc2MocGxhbiwgTklMLCBxdWVyeVN0cmluZywKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNo b3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDllMjk1ODRkOTMuLjI5YjQ1NTM5ZDMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9wcmVwYXJlLmMKQEAgLTE1NSw2ICsxNTUsNyBAQCBFeGVjdXRlUXVlcnkoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCVByZXBhcmVkU3RhdGVtZW50ICplbnRyeTsKIAlDYWNoZWRQbGFuICpjcGxh bjsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7CisJTGlzdAkgICAqcGFydF9wcnVuZV9yZXN1bHRzX2xp c3Q7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9 IE5VTEw7CiAJUG9ydGFsCQlwb3J0YWw7CkBAIC0xOTMsNyArMTk0LDEwIEBAIEV4ZWN1dGVRdWVy eShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkgICBlbnRyeS0+cGxhbnNvdXJjZS0+cXVl cnlfc3RyaW5nKTsKIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiBy ZWZjb3VudCBmb3IgcG9ydGFsICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFu c291cmNlLCBwYXJhbUxJLCBOVUxMLCBOVUxMKTsKKwljcGxhbiA9IEdldENhY2hlZFBsYW4oZW50 cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIE5VTEwsCisJCQkJCQkgICZwYXJ0X3BydW5l X3Jlc3VsdHNfbGlzdCk7CisJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09 CisJCSAgIGxpc3RfbGVuZ3RoKHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KSk7CiAJcGxhbl9saXN0 ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCS8qCkBAIC0yMDcsNiArMjExLDkgQEAgRXhlY3V0ZVF1 ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBwbGFuX2xpc3QsCiAJCQkJCSAgY3BsYW4p OwogCisJLyogQ29weSBMaXN0cyBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgaW50byB0aGUgcG9y dGFsJ3MgY29udGV4dC4gKi8KKwlQb3J0YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0cyhwb3J0 YWwsIHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKKwogCS8qCiAJICogRm9yIENSRUFURSBUQUJM RSAuLi4gQVMgRVhFQ1VURSwgd2UgbXVzdCB2ZXJpZnkgdGhhdCB0aGUgcHJlcGFyZWQKIAkgKiBz dGF0ZW1lbnQgaXMgb25lIHRoYXQgcHJvZHVjZXMgdHVwbGVzLiAgQ3VycmVudGx5IHdlIGluc2lz dCB0aGF0IGl0IGJlCkBAIC01NzYsNyArNTgzLDkgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVj dXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJ Y29uc3QgY2hhciAqcXVlcnlfc3RyaW5nOwogCUNhY2hlZFBsYW4gKmNwbGFuOwogCUxpc3QJICAg KnBsYW5fbGlzdDsKLQlMaXN0Q2VsbCAgICpwOworCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0 c19saXN0OworCUxpc3RDZWxsICAgKnAsCisJCQkgICAqcHA7CiAJUGFyYW1MaXN0SW5mbyBwYXJh bUxJID0gTlVMTDsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IE5VTEw7CiAJaW5zdHJfdGltZQlwbGFu c3RhcnQ7CkBAIC02MTksNyArNjI4LDEwIEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0 bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCiAJLyog UmVwbGFuIGlmIG5lZWRlZCwgYW5kIGFjcXVpcmUgYSB0cmFuc2llbnQgcmVmY291bnQgKi8KIAlj cGxhbiA9IEdldENhY2hlZFBsYW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksCi0JCQkJCQkg IEN1cnJlbnRSZXNvdXJjZU93bmVyLCBxdWVyeUVudik7CisJCQkJCQkgIEN1cnJlbnRSZXNvdXJj ZU93bmVyLCBxdWVyeUVudiwKKwkJCQkJCSAgJnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKKwlB c3NlcnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0bXRfbGlzdCkgPT0KKwkJICAgbGlzdF9sZW5ndGgo cGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpKTsKIAogCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQocGxh bmR1cmF0aW9uKTsKIAlJTlNUUl9USU1FX1NVQlRSQUNUKHBsYW5kdXJhdGlvbiwgcGxhbnN0YXJ0 KTsKQEAgLTYzNCwxMyArNjQ2LDE1IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQg KmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCXBsYW5fbGlz dCA9IGNwbGFuLT5zdG10X2xpc3Q7CiAKIAkvKiBFeHBsYWluIGVhY2ggcXVlcnkgKi8KLQlmb3Jl YWNoKHAsIHBsYW5fbGlzdCkKKwlmb3Jib3RoKHAsIHBsYW5fbGlzdCwgcHAsIHBhcnRfcHJ1bmVf cmVzdWx0c19saXN0KQogCXsKIAkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0X25vZGUoUGxh bm5lZFN0bXQsIHApOworCQlMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHMgPSBsZmlyc3Rfbm9kZShM aXN0LCBwcCk7CiAKIAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkKLQkJ CUV4cGxhaW5PbmVQbGFuKHBzdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBx dWVyeUVudiwKLQkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2Fn ZSA6IE5VTEwpKTsKKwkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdHMs IGludG8sIGVzLCBxdWVyeV9zdHJpbmcsCisJCQkJCQkgICBwYXJhbUxJLCBxdWVyeUVudiwgJnBs YW5kdXJhdGlvbiwKKwkJCQkJCSAgIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsK IAkJZWxzZQogCQkJRXhwbGFpbk9uZVV0aWxpdHkocHN0bXQtPnV0aWxpdHlTdG10LCBpbnRvLCBl cywgcXVlcnlfc3RyaW5nLAogCQkJCQkJCSAgcGFyYW1MSSwgcXVlcnlFbnYpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVB RE1FCmluZGV4IDE3Nzc1YTQ5ZTIuLjVjNTlhYzVkYTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKQEAgLTY1 LDYgKzY1LDM0IEBAIGZvdW5kIHRoZXJlLiAgVGhpcyBjdXJyZW50bHkgb25seSBvY2N1cnMgZm9y IEFwcGVuZCBhbmQgTWVyZ2VBcHBlbmQgbm9kZXMuICBJbgogdGhpcyBjYXNlIHRoZSBub24tcmVx dWlyZWQgc3VicGxhbnMgYXJlIGlnbm9yZWQgYW5kIHRoZSBleGVjdXRvciBzdGF0ZSdzCiBzdWJu b2RlIGFycmF5IHdpbGwgYmVjb21lIG91dCBvZiBzZXF1ZW5jZSB0byB0aGUgcGxhbidzIHN1YnBs YW4gbGlzdC4KIAorQWN0dWFsbHksIHRoZSBzby1jYWxsZWQgZXhlY3V0aW9uIHRpbWUgcHJ1bmlu ZyBtYXkgYWxzbyBvY2N1ciBldmVuIGJlZm9yZSB0aGUKK2V4ZWN1dGlvbiBoYXMgc3RhcnRlZC4g IE9uZSBjYXNlIHdoZXJlIHRoYXQgb2NjdXJzIGlzIHdoZW4gYSBjYWNoZWQgZ2VuZXJpYworcGxh biBpcyBiZWluZyB2YWxpZGF0ZWQgZm9yIGV4ZWN1dGlvbiBieSBwbGFuY2FjaGUuYzogR2V0Q2Fj aGVkUGxhbigpLCB3aGljaAord29ya3MgYnkgbG9ja2luZyBhbGwgdGhlIHJlbGF0aW9ucyB0aGF0 IHdpbGwgYmUgc2Nhbm5lZCBieSB0aGF0IHBsYW4uICBJZiB0aGUKK2dlbmVyaWMgcGxhbiBjb250 YWlucyBub2RlcyB0aGF0IGNhbiBwZXJmb3JtIGV4ZWN1dGlvbiB0aW1lIHBhcnRpdGlvbiBwcnVu aW5nCisodGhhdCBpcywgY29udGFpbiBhIFBhcnRpdGlvblBydW5lSW5mbyksIGEgc3Vic2V0IG9m IHBydW5pbmcgc3RlcHMgY29udGFpbmVkCitpbiBhIGdpdmVuIG5vZGUncyBQYXJ0aXRpb25QcnVu ZUluZm8gdGhhdCBkbyBub3QgZGVwZW5kIG9uIHRoZSBleGVjdXRpb24KK2FjdHVhbGx5IGhhdmlu ZyBzdGFydGVkIChjYWxsZWQgImluaXRpYWwiIHBydW5pbmcgc3RlcHMpIGFyZSBwZXJmb3JtZWQg dG8KK2ZpZ3VyZSBvdXQgdGhlIG1pbmltYWwgc2V0IG9mIGNoaWxkIHN1YnBsYW5zIHRoYXQgc2F0 aXNmeSB0aG9zZSBwcnVuaW5nIHN0ZXBzLgorQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBsb29raW5n IGF0IGEgZ2l2ZW4gZ2VuZXJpYyBwbGFuIHdpbGwgdGhlbiBsb2NrIG9ubHkgdGhlCityZWxhdGlv bnMgc2Nhbm5lZCBieSB0aGUgY2hpbGQgc3VicGxhbnMgdGhhdCBzdXJ2aXZlZCBzdWNoIHBydW5p bmcsIGFsb25nIHdpdGgKK3Rob3NlIHByZXNlbnQgaW4gUGxhbm5lZFN0bXQubWluTG9ja1JlbGlk cy4gIE5vdGUgdGhhdCB0aGUgc3VicGxhbnMgYXJlIG9ubHkKK25vdGlvbmFsbHkgcHJ1bmVkLCB0 aGF0IGlzLCB0aGV5IGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSBwbGFuIHRyZWUgYXMgc3VjaC4K KworVG8gcHJldmVudCB0aGUgZXhlY3V0b3IgYW5kIGFueSB0aGlyZCBwYXJ0eSBleGVjdXRpb24g Y29kZSB0aGF0IGNhbiBsb29rIGF0Cit0aGUgcGxhbiB0cmVlIGZyb20gdHJ5aW5nIHRvIGV4ZWN1 dGUgdGhlIHN1YnBsYW5zIHRoYXQgd2VyZSBwcnVuZWQgYXMKK2Rlc2NyaWJlZCBhYm92ZSwgdGhl IHJlc3VsdCBvZiBwcnVuaW5nIGlzIHBhc3NlZCB0byB0aGUgZXhlY3V0b3IgYXMgYSBMaXN0Citv ZiBQYXJ0aXRpb25QcnVuZVJlc3VsdCBub2RlcyB2aWEgdGhlIFF1ZXJ5RGVzYy4gIEVhY2ggUGFy dGl0aW9uUHJ1bmVSZXN1bHQKK2NvbnNpc3RzIG9mIHRoZSBzZXQgb2YgaW5kZXhlcyBvZiBzdXJ2 aXZpbmcgc3VicGxhbnMgaW4gdGhlIHJlc3BlY3RpdmUgcGFyZW50CitwbGFuIG5vZGUncyAodGhl IG9uZSB0byB3aGljaCB0aGUgY29ycmVzcG9uZGluZyBQYXJ0aXRpb25QcnVuZUluZm8gYmVsb25n cykKK2xpc3Qgb2YgY2hpbGQgc3VicGxhbnMsIHNhdmVkIGFzIGEgYml0bWFwc2V0ICh2YWxpZF9z dWJwbGFuX29mZnMpLiAgSW4gb3RoZXIKK3dvcmRzLCB0aGUgZXhlY3V0b3IgZXhlY3V0aW5nIGEg Z2VuZXJpYyBwbGFuIHNob3VsZCBub3QgcmUtZXZhbHVhdGUgdGhlIHNldCBvZgoraW5pdGlhbGx5 IHZhbGlkIHN1YnBsYW5zIGZvciBhIGdpdmVuIHBsYW4gbm9kZSBieSByZWRvaW5nIHRoZSBpbml0 aWFsIHBydW5pbmcKK2lmIGl0IHdhcyBhbHJlYWR5IGRvbmUgYnkgQWNxdWlyZUV4ZWN1dG9yTG9j a3MoKSB3aGVuIHZhbGlkYXRpbmcgdGhlIHBsYW4uCitTdWNoIHJlLWV2YWx1YXRpb24gb2YgdGhl IHBydW5pbmcgc3RlcHMgbWF5IHZlcnkgd2VsbCBlbmQgdXAgcmVzdWx0aW5nIGluIGEKK2RpZmZl cmVudCBzZXQgb2Ygc3VicGxhbnMsIGNvbnRhaW5pbmcgc29tZSB3aG9zZSByZWxhdGlvbnMgd2Vy ZSBub3QgbG9ja2VkIGJ5CitBY3F1aXJlRXhlY3V0b3JMb2NrcygpLgorCiBFYWNoIFBsYW4gbm9k ZSBtYXkgaGF2ZSBleHByZXNzaW9uIHRyZWVzIGFzc29jaWF0ZWQgd2l0aCBpdCwgdG8gcmVwcmVz ZW50CiBpdHMgdGFyZ2V0IGxpc3QsIHF1YWxpZmljYXRpb24gY29uZGl0aW9ucywgZXRjLiAgVGhl c2UgdHJlZXMgYXJlIGFsc28KIHJlYWQtb25seSB0byB0aGUgZXhlY3V0b3IsIGJ1dCB0aGUgZXhl Y3V0b3Igc3RhdGUgZm9yIGV4cHJlc3Npb24gZXZhbHVhdGlvbgpAQCAtMjg2LDYgKzMxNCwxMCBA QCBRdWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxvdwogCiBUaGlzIGlzIGEgc2tldGNoIG9mIGNv bnRyb2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNzaW5nOgogCisgIFsgRXhlY3V0b3JEb0lu aXRpYWxQcnVuaW5nIF0gLS0tIGFuIG9wdGlvbmFsIHN0ZXAgdG8gcGVyZm9ybSBpbml0aWFsCisJ CXBhcnRpdGlvbiBwcnVuaW5nIG9uIHRoZSBwbGFuIHRyZWUgdGhlIHJlc3VsdCBvZiB3aGljaCBp cyBwYXNzZWQKKwkJdG8gdGhlIGV4ZWN1dG9yIHZpYSBRdWVyeURlc2MKKwogCUNyZWF0ZVF1ZXJ5 RGVzYwogCiAJRXhlY3V0b3JTdGFydApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYjY3NTFk YTU3NC4uN2E0ZGI4MDEwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC00OSw2ICs0OSw3 IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvbWF0dmlldy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Ry aWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVidWcuaCIKKyNpbmNsdWRlICJleGVj dXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVN1YnBsYW4uaCIK ICNpbmNsdWRlICJmb3JlaWduL2Zkd2FwaS5oIgogI2luY2x1ZGUgImppdC9qaXQuaCIKQEAgLTEw NCw2ICsxMDUsNTQgQEAgc3RhdGljIHZvaWQgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVw cXN0YXRlLCBQbGFuICpwbGFuVHJlZSk7CiAKIC8qIGVuZCBvZiBsb2NhbCBkZWNscyAqLwogCisv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgkJRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nCisgKgorICoJCUZvciBlYWNo IHBsYW4gdHJlZSBub2RlIHRoYXQgaGFzIGJlZW4gYXNzaWduZWQgYSBQYXJ0aXRpb25QcnVuZUlu Zm8sCisgKgkJdGhpcyBwZXJmb3JtcyBpbml0aWFsIHBhcnRpdGlvbiBwcnVuaW5nIHVzaW5nIHRo ZSBpbmZvcm1hdGlvbiBjb250YWluZWQKKyAqCQl0aGVyZWluIHRvIGRldGVybWluZSB0aGUgc2V0 IG9mIGNoaWxkIHN1YnBsYW5zIHRoYXQgc2F0aXNmeSB0aGUgaW5pdGlhbAorICoJCXBydW5pbmcg c3RlcHMsIHRvIGJlIHJldHVybmVkIGFzIGEgYml0bWFwc2V0IG9mIHRoZWlyIGluZGV4ZXMgaW4g dGhlCisgKgkJbm9kZSdzIGxpc3Qgb2YgY2hpbGQgc3VicGxhbnMgKGZvciBleGFtcGxlLCBhbiBB cHBlbmQncyBhcHBlbmRwbGFucykuCisgKgorICogUmV0dXJuIHZhbHVlIGlzIGEgUGFydGl0aW9u UHJ1bmVSZXN1bHQgbm9kZSB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZiB0aG9zZQorICogYml0bWFw c2V0cywgd2l0aCBvbmUgZWxlbWVudCBmb3IgZXZlcnkgUGFydGl0aW9uUHJ1bmVJbmZvLCBhbmQg YSBiaXRtYXBzZXQKKyAqIG9mIHRoZSBSVCBpbmRleGVzIG9mIGFsbCB0aGUgbGVhZiBwYXJ0aXRp b25zIHNjYW5uZWQgYnkgdGhvc2UgY2hvc2VuCisgKiBzdWJwbGFucy4gIE5vdGUgdGhhdCB0aGUg bGF0dGVyIGlzIHNoYXJlZCBhY3Jvc3MgYWxsIFBhcnRpdGlvblBydW5lSW5mb3MuCisgKgorICog VGhlIGV4ZWN1dG9yIG11c3Qgc2VlIHRoZSBleGFjdGx5IHNhbWUgc2V0IG9mIHN1YnBsYW5zIGFz IHZhbGlkIGZvcgorICogZXhlY3V0aW9uIHdoZW4gZG9pbmcgRXhlY0luaXROb2RlKCkgb24gdGhl IHBsYW4gbm9kZXMgd2hvc2UKKyAqIFBhcnRpdGlvblBydW5lSW5mb3MgYXJlIHByb2Nlc3NlZCBo ZXJlLiAgU28sIGl0IG11c3QgZ2V0IHRoZSBzZXQgZnJvbSB0aGUKKyAqIGFmb3JlbWVudGlvbmVk IFBhcnRpdGlvblBydW5lUmVzdWx0LCBpbnN0ZWFkIG9mIGNvbXB1dGluZyBpdCBhbGwgb3Zlcgor ICogYWdhaW4gYnkgcmVkb2luZyB0aGUgaW5pdGlhbCBwcnVuaW5nLiAgSXQncyB0aGUgY2FsbGVy J3Mgam9iIHRvIHBhc3MgdGhlCisgKiBQYXJ0aXRpb25QcnVuZVJlc3VsdCB0byB0aGUgZXhlY3V0 b3IuCisgKgorICogTm90ZTogUGFydGl0aW9uZWQgdGFibGVzIG1lbnRpb25lZCBpbiBQYXJ0aXRp b25lZFJlbFBydW5lSW5mbyBub2RlcyB0aGF0CisgKiBkcml2ZSB0aGUgcHJ1bmluZyB3aWxsIGJl IGxvY2tlZCBiZWZvcmUgZG9pbmcgdGhlIHBydW5pbmcuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK0xpc3Qg KgorRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgUGFy YW1MaXN0SW5mbyBwYXJhbXMsCisJCQkJCQkgQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlz KQoreworCUxpc3QJICpwYXJ0X3BydW5lX3Jlc3VsdHMgPSBOSUw7CisJTGlzdENlbGwgKmxjOwor CisJLyogT25seSBnZXQgaGVyZSBpZiB0aGVyZSBpcyBhbnkgcHJ1bmluZyB0byBkby4gKi8KKwlB c3NlcnQocGxhbm5lZHN0bXQtPmNvbnRhaW5zSW5pdGlhbFBydW5pbmcpOworCisJZm9yZWFjaChs YywgcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zKQorCXsKKwkJUGFydGl0aW9uUHJ1bmVJbmZv ICpwcnVuZWluZm8gPSBsZmlyc3QobGMpOworCQlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcHJ1bmVy ZXN1bHQgPSBtYWtlTm9kZShQYXJ0aXRpb25QcnVuZVJlc3VsdCk7CisKKwkJcHJ1bmVyZXN1bHQt PnZhbGlkX3N1YnBsYW5fb2ZmcyA9CisJCQlFeGVjUGFydGl0aW9uRG9Jbml0aWFsUHJ1bmluZyhw bGFubmVkc3RtdCwgcGFyYW1zLCBwcnVuZWluZm8sCisJCQkJCQkJCQkJICBzY2FuX2xlYWZwYXJ0 X3J0aXMpOworCQlwYXJ0X3BydW5lX3Jlc3VsdHMgPSBsYXBwZW5kKHBhcnRfcHJ1bmVfcmVzdWx0 cywgcHJ1bmVyZXN1bHQpOworCX0KKworCXJldHVybiBwYXJ0X3BydW5lX3Jlc3VsdHM7Cit9CiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqCQlFeGVjdXRvclN0YXJ0CkBAIC04MDYsNiArODU1LDcgQEAgSW5pdFBs YW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CiAJQ21kVHlwZQkJb3BlcmF0 aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247CiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0g cXVlcnlEZXNjLT5wbGFubmVkc3RtdDsKKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdHMgPSBx dWVyeURlc2MtPnBhcnRfcHJ1bmVfcmVzdWx0czsKIAlQbGFuCSAgICpwbGFuID0gcGxhbm5lZHN0 bXQtPnBsYW5UcmVlOwogCUxpc3QJICAgKnJhbmdlVGFibGUgPSBwbGFubmVkc3RtdC0+cnRhYmxl OwogCUVTdGF0ZQkgICAqZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7CkBAIC04MjYsNiArODc2 LDcgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAKIAllc3Rh dGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CiAJZXN0YXRlLT5lc19wYXJ0X3BydW5l X2luZm9zID0gcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOworCWVzdGF0ZS0+ZXNfcGFydF9w cnVuZV9yZXN1bHRzID0gcGFydF9wcnVuZV9yZXN1bHRzOwogCiAJLyoKIAkgKiBOZXh0LCBidWls ZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggYWNhMGM2ZjMyMy4uOTE3MDc5YTAz NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTY2LDYgKzY2LDcgQEAKICNk ZWZpbmUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQJCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAw MDAwOCkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0pJVF9JTlNUUlVNRU5UQVRJT04gVUlOVDY0Q09O U1QoMHhFMDAwMDAwMDAwMDAwMDA5KQogI2RlZmluZSBQQVJBTExFTF9LRVlfV0FMX1VTQUdFCQkJ VUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDBBKQorI2RlZmluZSBQQVJBTExFTF9LRVlfUEFS VElUSU9OX1BSVU5FX1JFU1VMVFMJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDBCKQogCiAj ZGVmaW5lIFBBUkFMTEVMX1RVUExFX1FVRVVFX1NJWkUJCTY1NTM2CiAKQEAgLTE4Miw2ICsxODMs NyBAQCBFeGVjU2VyaWFsaXplUGxhbihQbGFuICpwbGFuLCBFU3RhdGUgKmVzdGF0ZSkKIAlwc3Rt dC0+dHJhbnNpZW50UGxhbiA9IGZhbHNlOwogCXBzdG10LT5kZXBlbmRzT25Sb2xlID0gZmFsc2U7 CiAJcHN0bXQtPnBhcmFsbGVsTW9kZU5lZWRlZCA9IGZhbHNlOworCXBzdG10LT5jb250YWluc0lu aXRpYWxQcnVuaW5nID0gZmFsc2U7CiAJcHN0bXQtPnBsYW5UcmVlID0gcGxhbjsKIAlwc3RtdC0+ cGFydFBydW5lSW5mb3MgPSBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3M7CiAJcHN0bXQtPnJ0 YWJsZSA9IGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGU7CkBAIC01OTcsMTIgKzU5OSwxNSBAQCBFeGVj SW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJ Rml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3RhdGUgKmZwZXM7CiAJY2hhcgkgICAqcHN0bXRfZGF0YTsK IAljaGFyCSAgICpwc3RtdF9zcGFjZTsKKwljaGFyCSAgICpwYXJ0X3BydW5lX3Jlc3VsdHNfZGF0 YTsKKwljaGFyCSAgICpwYXJ0X3BydW5lX3Jlc3VsdHNfc3BhY2U7CiAJY2hhcgkgICAqcGFyYW1s aXN0aW5mb19zcGFjZTsKIAlCdWZmZXJVc2FnZSAqYnVmdXNhZ2Vfc3BhY2U7CiAJV2FsVXNhZ2Ug ICAqd2FsdXNhZ2Vfc3BhY2U7CiAJU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmluc3Ry dW1lbnRhdGlvbiA9IE5VTEw7CiAJU2hhcmVkSml0SW5zdHJ1bWVudGF0aW9uICpqaXRfaW5zdHJ1 bWVudGF0aW9uID0gTlVMTDsKIAlpbnQJCQlwc3RtdF9sZW47CisJaW50CQkJcGFydF9wcnVuZV9y ZXN1bHRzX2xlbjsKIAlpbnQJCQlwYXJhbWxpc3RpbmZvX2xlbjsKIAlpbnQJCQlpbnN0cnVtZW50 YXRpb25fbGVuID0gMDsKIAlpbnQJCQlqaXRfaW5zdHJ1bWVudGF0aW9uX2xlbiA9IDA7CkBAIC02 MzEsNiArNjM2LDcgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUs IEVTdGF0ZSAqZXN0YXRlLAogCiAJLyogRml4IHVwIGFuZCBzZXJpYWxpemUgcGxhbiB0byBiZSBz ZW50IHRvIHdvcmtlcnMuICovCiAJcHN0bXRfZGF0YSA9IEV4ZWNTZXJpYWxpemVQbGFuKHBsYW5z dGF0ZS0+cGxhbiwgZXN0YXRlKTsKKwlwYXJ0X3BydW5lX3Jlc3VsdHNfZGF0YSA9IG5vZGVUb1N0 cmluZyhlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyk7CiAKIAkvKiBDcmVhdGUgYSBwYXJh bGxlbCBjb250ZXh0LiAqLwogCXBjeHQgPSBDcmVhdGVQYXJhbGxlbENvbnRleHQoInBvc3RncmVz IiwgIlBhcmFsbGVsUXVlcnlNYWluIiwgbndvcmtlcnMpOwpAQCAtNjU3LDYgKzY2MywxMSBAQCBF eGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUs CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBwc3RtdF9sZW4pOwog CXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKIAorCS8qIEVzdGlt YXRlIHNwYWNlIGZvciBzZXJpYWxpemVkIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVSZXN1bHQuICov CisJcGFydF9wcnVuZV9yZXN1bHRzX2xlbiA9IHN0cmxlbihwYXJ0X3BydW5lX3Jlc3VsdHNfZGF0 YSkgKyAxOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgcGFydF9w cnVuZV9yZXN1bHRzX2xlbik7CisJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0 b3IsIDEpOworCiAJLyogRXN0aW1hdGUgc3BhY2UgZm9yIHNlcmlhbGl6ZWQgUGFyYW1MaXN0SW5m by4gKi8KIAlwYXJhbWxpc3RpbmZvX2xlbiA9IEVzdGltYXRlUGFyYW1MaXN0U3BhY2UoZXN0YXRl LT5lc19wYXJhbV9saXN0X2luZm8pOwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVz dGltYXRvciwgcGFyYW1saXN0aW5mb19sZW4pOwpAQCAtNzUxLDYgKzc2MiwxMiBAQCBFeGVjSW5p dFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJbWVt Y3B5KHBzdG10X3NwYWNlLCBwc3RtdF9kYXRhLCBwc3RtdF9sZW4pOwogCXNobV90b2NfaW5zZXJ0 KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1BMQU5ORURTVE1ULCBwc3RtdF9zcGFjZSk7CiAKKwkv KiBTdG9yZSBzZXJpYWxpemVkIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKi8KKwlwYXJ0 X3BydW5lX3Jlc3VsdHNfc3BhY2UgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgcGFydF9w cnVuZV9yZXN1bHRzX2xlbik7CisJbWVtY3B5KHBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZSwgcGFy dF9wcnVuZV9yZXN1bHRzX2RhdGEsIHBhcnRfcHJ1bmVfcmVzdWx0c19sZW4pOworCXNobV90b2Nf aW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1BBUlRJVElPTl9QUlVORV9SRVNVTFRTLAor CQkJCSAgIHBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZSk7CisKIAkvKiBTdG9yZSBzZXJpYWxpemVk IFBhcmFtTGlzdEluZm8uICovCiAJcGFyYW1saXN0aW5mb19zcGFjZSA9IHNobV90b2NfYWxsb2Nh dGUocGN4dC0+dG9jLCBwYXJhbWxpc3RpbmZvX2xlbik7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+ dG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgcGFyYW1saXN0aW5mb19zcGFjZSk7CkBA IC0xMjMyLDggKzEyNDksMTAgQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRv YywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAkJCQkJCSBpbnQgaW5zdHJ1bWVudF9vcHRpb25z KQogewogCWNoYXIJICAgKnBzdG10c3BhY2U7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRz X3NwYWNlOwogCWNoYXIJICAgKnBhcmFtc3BhY2U7CiAJUGxhbm5lZFN0bXQgKnBzdG10OworCUxp c3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0czsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtTEk7CiAJY2hh cgkgICAqcXVlcnlTdHJpbmc7CiAKQEAgLTEyNDQsMTIgKzEyNjMsMTcgQEAgRXhlY1BhcmFsbGVs R2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAlwc3Rt dHNwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUExBTk5FRFNUTVQsIGZh bHNlKTsKIAlwc3RtdCA9IChQbGFubmVkU3RtdCAqKSBzdHJpbmdUb05vZGUocHN0bXRzcGFjZSk7 CiAKKwkvKiBSZWNvbnN0cnVjdCBsZWFkZXItc3VwcGxpZWQgUGFydGl0aW9uUHJ1bmVSZXN1bHQu ICovCisJcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNlID0KKwkJc2htX3RvY19sb29rdXAodG9jLCBQ QVJBTExFTF9LRVlfUEFSVElUSU9OX1BSVU5FX1JFU1VMVFMsIGZhbHNlKTsKKwlwYXJ0X3BydW5l X3Jlc3VsdHMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUocGFydF9wcnVuZV9yZXN1bHRzX3NwYWNl KTsKKwogCS8qIFJlY29uc3RydWN0IFBhcmFtTGlzdEluZm8uICovCiAJcGFyYW1zcGFjZSA9IHNo bV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUkFNTElTVElORk8sIGZhbHNlKTsKIAlw YXJhbUxJID0gUmVzdG9yZVBhcmFtTGlzdCgmcGFyYW1zcGFjZSk7CiAKIAkvKiBDcmVhdGUgYSBR dWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KLQlyZXR1cm4gQ3JlYXRlUXVlcnlEZXNjKHBzdG10 LAorCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0cywKIAkJ CQkJCSAgIHF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxp ZFNuYXBzaG90LAogCQkJCQkJICAgcmVjZWl2ZXIsIHBhcmFtTEksIE5VTEwsIGluc3RydW1lbnRf b3B0aW9ucyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9u LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggOGU2NDUzYWVj Mi4uMTNlNDUwYzBmYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMjUs NiArMjUsNyBAQAogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNl dHJlZS5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgiCiAjaW5jbHVkZSAi cGFydGl0aW9uaW5nL3BhcnRkZXNjLmgiCiAjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRwcnVu ZS5oIgpAQCAtMTg1LDcgKzE4NiwxMSBAQCBzdGF0aWMgY2hhciAqRXhlY0J1aWxkU2xvdFBhcnRp dGlvbktleURlc2NyaXB0aW9uKFJlbGF0aW9uIHJlbCwKIHN0YXRpYyBMaXN0ICphZGp1c3RfcGFy dGl0aW9uX2NvbG5vcyhMaXN0ICpjb2xub3MsIFJlc3VsdFJlbEluZm8gKmxlYWZfcGFydF9ycmkp Owogc3RhdGljIExpc3QgKmFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpj b2xub3MsIEF0dHJNYXAgKmF0dHJNYXApOwogc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKkNy ZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsCi0JCQkJCQkJCQkJ CQkJICBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyk7CisJCQkJCQkJCQkJCQkJICBQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKKwkJCQkJCQkJCQkJCQkgIGJvb2wgY29uc2lkZXJf aW5pdGlhbF9zdGVwcywKKwkJCQkJCQkJCQkJCQkgIGJvb2wgY29uc2lkZXJfZXhlY19zdGVwcywK KwkJCQkJCQkJCQkJCQkgIExpc3QgKnJ0YWJsZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAorCQkJ CQkJCQkJCQkJCSAgUGFydGl0aW9uRGlyZWN0b3J5IHBhcnRkaXIpOwogc3RhdGljIHZvaWQgSW5p dFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAJ CQkJCQkJCQkgIExpc3QgKnBydW5pbmdfc3RlcHMsCiAJCQkJCQkJCQkgIFBhcnRpdGlvbkRlc2Mg cGFydGRlc2MsCkBAIC0xOTgsNyArMjAzLDggQEAgc3RhdGljIHZvaWQgUGFydGl0aW9uUHJ1bmVG aXhTdWJQbGFuTWFwKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiBzdGF0aWMgdm9p ZCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBy dW5lZGF0YSwKIAkJCQkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUs CiAJCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAotCQkJCQkJCQkJCSAgIEJpdG1hcHNl dCAqKnZhbGlkc3VicGxhbnMpOworCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxh bnMsCisJCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKTsKIAogCiAv KgpAQCAtMTc1OCw4ICsxNzY0LDEwIEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21h cChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKiBjb25zaWRlcmVkIHRvIGJlIGEg c3RhYmxlIGV4cHJlc3Npb24sIGl0IGNhbiBjaGFuZ2UgdmFsdWUgZnJvbSBvbmUgcGxhbgogICog bm9kZSBzY2FuIHRvIHRoZSBuZXh0IGR1cmluZyBxdWVyeSBleGVjdXRpb24uICBTdGFibGUgY29t cGFyaXNvbgogICogZXhwcmVzc2lvbnMgdGhhdCBkb24ndCBpbnZvbHZlIHN1Y2ggUGFyYW1zIGFs bG93IHBhcnRpdGlvbiBwcnVuaW5nIHRvIGJlCi0gKiBkb25lIG9uY2UgZHVyaW5nIGV4ZWN1dG9y IHN0YXJ0dXAuICBFeHByZXNzaW9ucyB0aGF0IGRvIGludm9sdmUgc3VjaCBQYXJhbXMKLSAqIHJl cXVpcmUgdXMgdG8gcHJ1bmUgc2VwYXJhdGVseSBmb3IgZWFjaCBzY2FuIG9mIHRoZSBwYXJlbnQg cGxhbiBub2RlLgorICogZG9uZSBvbmNlIGR1cmluZyBleGVjdXRvciBzdGFydHVwIG9yIGR1cmlu ZyBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSB0aGF0CisgKiBydW5zIGFzIHBhcnQgb2YgcGVy Zm9ybWluZyBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIG9uIGEgZ2l2ZW4gcGxhbiB0cmVlLgorICog RXhwcmVzc2lvbnMgdGhhdCBkbyBpbnZvbHZlIHN1Y2ggUGFyYW1zIHJlcXVpcmUgdXMgdG8gcHJ1 bmUgc2VwYXJhdGVseSBmb3IKKyAqIGVhY2ggc2NhbiBvZiB0aGUgcGFyZW50IHBsYW4gbm9kZS4K ICAqCiAgKiBOb3RlIHRoYXQgcHJ1bmluZyBhd2F5IHVubmVlZGVkIHN1YnBsYW5zIGR1cmluZyBl eGVjdXRvciBzdGFydHVwIGhhcyB0aGUKICAqIGFkZGVkIGJlbmVmaXQgb2Ygbm90IGhhdmluZyB0 byBpbml0aWFsaXplIHRoZSB1bm5lZWRlZCBzdWJwbGFucyBhdCBhbGwuCkBAIC0xNzc2LDYgKzE3 ODQsMTMgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywg QXR0ck1hcCAqYXR0ck1hcCkKICAqCQlhY2NvdW50IGZvciBpbml0aWFsIHBydW5pbmcgcG9zc2li bHkgaGF2aW5nIGVsaW1pbmF0ZWQgc29tZSBvZiB0aGUKICAqCQlzdWJwbGFucy4KICAqCisgKiBF eGVjUGFydGl0aW9uRG9Jbml0aWFsUHJ1bmluZzoKKyAqCQlEbyBpbml0aWFsIHBydW5pbmcgd2l0 aCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIGEgZ2l2ZW4KKyAqCQlQYXJ0aXRpb25QcnVu ZUluZm8gdG8gZGV0ZXJtaW5lIHRoZSBtaW5pbWFsIHNldCBvZiBjaGlsZCBzdWJwbGFucworICoJ CXRvIGJlIGV4ZWN1dGVkIG9mIHRoZSBwYXJlbnQgcGxhbiBub2RlIHRvIHdoaWNoIHRoZSBQYXJ0 aXRpb25QcnVuZUluZm8KKyAqCQliZWxvbmdzIGFuZCBhbHNvIHRoZSBzZXQgb2YgdGhlIFJUIGlu ZGV4ZXMgb2YgbGVhZiBwYXJ0aXRpb25zIHRoYXQgd2lsbAorICoJCWJlIHNjYW5uZWQgd2l0aCB0 aG9zZSBzdWJwbGFucy4KKyAqCiAgKiBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnM6CiAgKgkJUmV0 dXJucyBpbmRleGVzIG9mIG1hdGNoaW5nIHN1YnBsYW5zIGFmdGVyIGV2YWx1YXRpbmcgdGhlIGV4 cHJlc3Npb25zCiAgKgkJdGhhdCBhcmUgc2FmZSB0byBldmFsdWF0ZSBhdCBhIGdpdmVuIHBvaW50 LiAgVGhpcyBmdW5jdGlvbiBpcyBmaXJzdApAQCAtMTc5Niw4ICsxODExLDkgQEAgYWRqdXN0X3Bh cnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCkK ICAqCiAgKiBPbiByZXR1cm4sICppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgaXMgYXNzaWduZWQg dGhlIHNldCBvZiBpbmRleGVzIG9mCiAgKiBjaGlsZCBzdWJwbGFucyB0aGF0IG11c3QgYmUgaW5p dGlhbGl6ZWQgYWxvbmcgd2l0aCB0aGUgcGFyZW50IHBsYW4gbm9kZS4KLSAqIEluaXRpYWwgcHJ1 bmluZyBpcyBwZXJmb3JtZWQgaGVyZSBpZiBuZWVkZWQgYW5kIGluIHRoYXQgY2FzZSBvbmx5IHRo ZQotICogc3Vydml2aW5nIHN1YnBsYW5zJyBpbmRleGVzIGFyZSBhZGRlZC4KKyAqIEluaXRpYWwg cHJ1bmluZyBpcyBwZXJmb3JtZWQgaGVyZSBpZiBuZWVkZWQgKHVubGVzcyBpdCBoYXMgYWxyZWFk eSBiZWVuIGRvbmUKKyAqIGJ5IEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpKSwgYW5kIGluIHRo YXQgY2FzZSBvbmx5IHRoZSBzdXJ2aXZpbmcKKyAqIHN1YnBsYW5zJyBpbmRleGVzIGFyZSBhZGRl ZC4KICAqCiAgKiBJZiBzdWJwbGFucyBhcmUgaW5kZWVkIHBydW5lZCwgc3VicGxhbl9tYXAgYXJy YXlzIGNvbnRhaW5lZCBpbiB0aGUgcmV0dXJuZWQKICAqIFBhcnRpdGlvblBydW5lU3RhdGUgYXJl IHJlLXNlcXVlbmNlZCB0byBub3QgY291bnQgdGhvc2UsIHRob3VnaCBvbmx5IGlmIHRoZQpAQCAt MTgxMCw5ICsxODI2LDEwIEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBs YW5zdGF0ZSwKIAkJCQkJCSBCaXRtYXBzZXQgKnJvb3RfcGFyZW50X3JlbGlkcywKIAkJCQkJCSBC aXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpCiB7Ci0JUGFydGl0aW9uUHJ1bmVT dGF0ZSAqcHJ1bmVzdGF0ZTsKKwlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlID0gTlVM TDsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7CiAJUGFydGl0aW9uUHJ1 bmVJbmZvICpwcnVuZWluZm87CisJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBydW5lcmVzdWx0ID0g TlVMTDsKIAogCS8qIE9idGFpbiB0aGUgcHJ1bmVpbmZvIHdlIG5lZWQsIGFuZCBtYWtlIHN1cmUg aXQncyB0aGUgcmlnaHQgb25lICovCiAJcHJ1bmVpbmZvID0gbGlzdF9udGgoZXN0YXRlLT5lc19w YXJ0X3BydW5lX2luZm9zLCBwYXJ0X3BydW5lX2luZGV4KTsKQEAgLTE4MjgsMjAgKzE4NDUsNTcg QEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCS8qIFdl IG1heSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24gZXhw cnMgKi8KIAlFeGVjQXNzaWduRXhwckNvbnRleHQoZXN0YXRlLCBwbGFuc3RhdGUpOwogCi0JLyog Q3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3RydWN0dXJlIGZvciBwcnVuaW5nICovCi0JcHJ1bmVz dGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUocGxhbnN0YXRlLCBwcnVuZWluZm8pOwor CS8qCisJICogTm8gbmVlZCB0byBkbyBpbml0aWFsIHBydW5pbmcgaWYgaXQgd2FzIGRvbmUgYWxy ZWFkeSBieQorCSAqIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpLCB3aGljaCBpdCB3b3VsZCBi ZSBpZiBlc19wYXJ0X3BydW5lX3Jlc3VsdHMKKwkgKiBpcyBzZXQuCisJICovCisJaWYgKGVzdGF0 ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzKQorCXsKKwkJcHJ1bmVyZXN1bHQgPSBsaXN0X250aChl c3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cywgcGFydF9wcnVuZV9pbmRleCk7CisJCUFzc2Vy dChJc0EocHJ1bmVyZXN1bHQsIFBhcnRpdGlvblBydW5lUmVzdWx0KSk7CisJfQorCisJaWYgKHBy dW5lcmVzdWx0ID09IE5VTEwgfHwgcHJ1bmVpbmZvLT5uZWVkc19leGVjX3BydW5pbmcpCisJewor CQkvKiBXZSBtYXkgbmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQgdG8gZXZhbHVhdGUgcGFydGl0 aW9uIGV4cHJzICovCisJCUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsIHBsYW5zdGF0ZSk7 CisKKwkJLyogRm9yIGRhdGEgcmVhZGluZywgZXhlY3V0b3IgYWx3YXlzIG9taXRzIGRldGFjaGVk IHBhcnRpdGlvbnMgKi8KKwkJaWYgKGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSA9PSBO VUxMKQorCQkJZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID0KKwkJCQlDcmVhdGVQYXJ0 aXRpb25EaXJlY3RvcnkoZXN0YXRlLT5lc19xdWVyeV9jeHQsIGZhbHNlKTsKKworCQkvKgorCQkg KiBDcmVhdGUgdGhlIHdvcmtpbmcgZGF0YSBzdHJ1Y3R1cmUgZm9yIHBydW5pbmcuICBObyBuZWVk IHRvIGNvbnNpZGVyCisJCSAqIGluaXRpYWwgcHJ1bmluZyBzdGVwcyBpZiB3ZSBoYXZlIGEgUGFy dGl0aW9uUHJ1bmVSZXN1bHQuCisJCSAqLworCQlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9u UHJ1bmVTdGF0ZShwbGFuc3RhdGUsIHBydW5laW5mbywKKwkJCQkJCQkJCQkJICAgcHJ1bmVyZXN1 bHQgPT0gTlVMTCwKKwkJCQkJCQkJCQkJICAgcHJ1bmVpbmZvLT5uZWVkc19leGVjX3BydW5pbmcs CisJCQkJCQkJCQkJCSAgIE5JTCwgcGxhbnN0YXRlLT5wc19FeHByQ29udGV4dCwKKwkJCQkJCQkJ CQkJICAgZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5KTsKKwl9CiAKIAkvKgogCSAqIFBl cmZvcm0gYW4gaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmUgcGFzcywgaWYgcmVxdWlyZWQuCiAJICov Ci0JaWYgKHBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUpCi0JCSppbml0aWFsbHlfdmFsaWRf c3VicGxhbnMgPSBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSk7CisJ aWYgKHBydW5lcmVzdWx0KQorCXsKKwkJKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyA9IGJtc19j b3B5KHBydW5lcmVzdWx0LT52YWxpZF9zdWJwbGFuX29mZnMpOworCX0KKwllbHNlIGlmIChwcnVu ZXN0YXRlICYmIHBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUpCisJeworCQkqaW5pdGlhbGx5 X3ZhbGlkX3N1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBydW5lc3RhdGUsIHRy dWUsCisJCQkJCQkJCQkJCQkJCQkgTlVMTCk7CisJfQogCWVsc2UKIAl7Ci0JCS8qIE5vIHBydW5p bmcsIHNvIHdlJ2xsIG5lZWQgdG8gaW5pdGlhbGl6ZSBhbGwgc3VicGxhbnMgKi8KKwkJLyogTm8g aW5pdGlhbCBwcnVuaW5nLCBzbyB3ZSdsbCBuZWVkIHRvIGluaXRpYWxpemUgYWxsIHN1YnBsYW5z ICovCiAJCUFzc2VydChuX3RvdGFsX3N1YnBsYW5zID4gMCk7CiAJCSppbml0aWFsbHlfdmFsaWRf c3VicGxhbnMgPSBibXNfYWRkX3JhbmdlKE5VTEwsIDAsCiAJCQkJCQkJCQkJCQkgIG5fdG90YWxf c3VicGxhbnMgLSAxKTsKKwkJcmV0dXJuIHBydW5lc3RhdGU7CiAJfQogCiAJLyoKQEAgLTE4NDks NyArMTkwMyw4IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwKIAkgKiB0aGF0IHdlcmUgcmVtb3ZlZCBhYm92ZSBkdWUgdG8gaW5pdGlhbCBwcnVuaW5nLiAg Tm8gbmVlZCB0byBkbyB0aGlzIGlmCiAJICogbm8gc3RlcHMgd2VyZSByZW1vdmVkLgogCSAqLwot CWlmIChibXNfbnVtX21lbWJlcnMoKmluaXRpYWxseV92YWxpZF9zdWJwbGFucykgPCBuX3RvdGFs X3N1YnBsYW5zKQorCWlmIChwcnVuZXN0YXRlICYmCisJCWJtc19udW1fbWVtYmVycygqaW5pdGlh bGx5X3ZhbGlkX3N1YnBsYW5zKSA8IG5fdG90YWxfc3VicGxhbnMpCiAJewogCQkvKgogCQkgKiBX ZSBjYW4gc2FmZWx5IHNraXAgdGhpcyB3aGVuICFkb19leGVjX3BydW5lLCBldmVuIHRob3VnaCB0 aGF0CkBAIC0xODY1LDExICsxOTIwLDc0IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFu U3RhdGUgKnBsYW5zdGF0ZSwKIAlyZXR1cm4gcHJ1bmVzdGF0ZTsKIH0KIAorLyoKKyAqIEV4ZWNQ YXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nCisgKgkJUGVyZm9ybSBpbml0aWFsIHBydW5pbmcgdXNp bmcgZ2l2ZW4gUGFydGl0aW9uUHJ1bmVJbmZvIHRvIGRldGVybWluZQorICoJCXRoZSBtaW5pbWFs IHNldCBvZiBjaGlsZCBzdWJwbGFucyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYW5kIGFsc28gdGhl CisgKgkJc2V0IG9mIFJUIGluZGV4ZXMgb2YgdGhlIGxlYWYgcGFydGl0aW9ucyBzY2FubmVkIGJ5 IHRob3NlIHN1YnBsYW5zLgorICovCitCaXRtYXBzZXQgKgorRXhlY1BhcnRpdGlvbkRvSW5pdGlh bFBydW5pbmcoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywK KwkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJCSAgQml0bWFw c2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKQoreworCUxpc3QJCSAqcnRhYmxlID0gcGxhbm5lZHN0 bXQtPnJ0YWJsZTsKKwlFeHByQ29udGV4dAkgKmVjb250ZXh0OworCVBhcnRpdGlvbkRpcmVjdG9y eSBwZGlyOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dCwKKwkJCQkgIHRtcGNvbnRleHQ7CisJ UGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKKwlCaXRtYXBzZXQJICp2YWxpZF9zdWJw bGFuX29mZnM7CisKKwkvKgorCSAqIEEgdGVtcG9yYXJ5IGNvbnRleHQgZm9yIG1lbW9yeSBhbGxv Y2F0aW9ucyByZXF1aXJlZCB3aGlsZSBleGVjdXRpbmcKKwkgKiBwYXJ0aXRpb24gcHJ1bmluZyBz dGVwcy4KKwkgKi8KKwl0bXBjb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRN ZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJICAgImluaXRpYWwgcHJ1bmluZyB3b3JraW5nIGRhdGEi LAorCQkJCQkJCQkJICAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisJb2xkY29udGV4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyh0bXBjb250ZXh0KTsKKworCS8qCisJICogUGFydGl0aW9uRGly ZWN0b3J5IHRvIGxvb2sgdXAgcGFydGl0aW9uIGRlc2NyaXB0b3JzLgorCSAqIE5vdGUgdGhhdCB3 ZSBkb24ndCBvbWl0IGRldGFjaGVkIHBhcnRpdGlvbnMsIGp1c3QgbGlrZSBkdXJpbmcKKwkgKiBl eGVjdXRpb24gcHJvcGVyLgorCSAqLworCXBkaXIgPSBDcmVhdGVQYXJ0aXRpb25EaXJlY3Rvcnko Q3VycmVudE1lbW9yeUNvbnRleHQsIGZhbHNlKTsKKworCS8qCisJICogV2UgZG9uJ3QgeWV0IGhh dmUgYSBQbGFuU3RhdGUgZm9yIHRoZSBwYXJlbnQgcGxhbiBub2RlLCBzbyB3ZSBtdXN0CisJICog Y3JlYXRlIGEgc3RhbmRhbG9uZSBFeHByQ29udGV4dCB0byBldmFsdWF0ZSBwcnVuaW5nIGV4cHJl c3Npb25zLAorCSAqIGVxdWlwcGVkIHdpdGggdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBFWFRF Uk4gcGFyYW1ldGVycyB0aGF0IHRoZQorCSAqIGNhbGxlciBwYXNzZWQgdXMuICBOb3RlIHRoYXQg dGhhdCdzIG9rYXkgYmVjYXVzZSB0aGUgaW5pdGlhbCBwcnVuaW5nCisJICogc3RlcHMgZG8gbm90 IGNvbnRhaW4gYW55dGhpbmcgdGhhdCByZXF1aXJlcyB0aGUgZXhlY3V0aW9uIHRvIGhhdmUKKwkg KiBzdGFydGVkIGFuZCB0aHVzIG5lZWQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiBhIFBs YW5TdGF0ZS4KKwkgKi8KKwllY29udGV4dCA9IENyZWF0ZVN0YW5kYWxvbmVFeHByQ29udGV4dCgp OworCWVjb250ZXh0LT5lY3h0X3BhcmFtX2xpc3RfaW5mbyA9IHBhcmFtczsKKwlwcnVuZXN0YXRl ID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShOVUxMLCBwcnVuZWluZm8sIHRydWUsIGZhbHNl LAorCQkJCQkJCQkJCSAgIHJ0YWJsZSwgZWNvbnRleHQsIHBkaXIpOworCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCS8qIERvIHRoZSBpbml0aWFsIHBydW5pbmcuICovCisJ dmFsaWRfc3VicGxhbl9vZmZzID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBydW5lc3RhdGUs IHRydWUsCisJCQkJCQkJCQkJCQkgIHNjYW5fbGVhZnBhcnRfcnRpcyk7CisKKwlGcmVlRXhwckNv bnRleHQoZWNvbnRleHQsIHRydWUpOworCURlc3Ryb3lQYXJ0aXRpb25EaXJlY3RvcnkocGRpcik7 CisJTWVtb3J5Q29udGV4dERlbGV0ZSh0bXBjb250ZXh0KTsKKworCXJldHVybiB2YWxpZF9zdWJw bGFuX29mZnM7Cit9CisKIC8qCiAgKiBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlCiAgKgkJQnVp bGQgdGhlIGRhdGEgc3RydWN0dXJlIHJlcXVpcmVkIGZvciBjYWxsaW5nIEV4ZWNGaW5kTWF0Y2hp bmdTdWJQbGFucwogICoKLSAqICdwbGFuc3RhdGUnIGlzIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3Mg ZXhlY3V0aW9uIHN0YXRlLgorICogJ3BsYW5zdGF0ZScsIGlmIG5vdCBOVUxMLCBpcyB0aGUgcGFy ZW50IHBsYW4gbm9kZSdzIGV4ZWN1dGlvbiBzdGF0ZS4gIEl0CisgKiBjYW4gYmUgTlVMTCBpZiBi ZWluZyBjYWxsZWQgYmVmb3JlIEV4ZWN1dG9yU3RhcnQoKSwgaW4gd2hpY2ggY2FzZSwKKyAqICdy dGFibGUnIChyYW5nZSB0YWJsZSksICdlY29udGV4dCcsIGFuZCAncGFydGRpcicgbXVzdCBiZSBl eHBsaWNpdGx5CisgKiBwcm92aWRlZC4KICAqCiAgKiAncHJ1bmVpbmZvJyBpcyBhIFBhcnRpdGlv blBydW5lSW5mbyBhcyBnZW5lcmF0ZWQgYnkKICAqIG1ha2VfcGFydGl0aW9uX3BydW5laW5mby4g IEhlcmUgd2UgYnVpbGQgYSBQYXJ0aXRpb25QcnVuZVN0YXRlIGNvbnRhaW5pbmcgYQpAQCAtMTg4 MywxOSArMjAwMSwyMSBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFu c3RhdGUsCiAgKiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mby4KICAqLwogc3RhdGljIFBhcnRpdGlv blBydW5lU3RhdGUgKgotQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5z dGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCitDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAorCQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8g KnBydW5laW5mbywKKwkJCQkJCSAgYm9vbCBjb25zaWRlcl9pbml0aWFsX3N0ZXBzLAorCQkJCQkJ ICBib29sIGNvbnNpZGVyX2V4ZWNfc3RlcHMsCisJCQkJCQkgIExpc3QgKnJ0YWJsZSwgRXhwckNv bnRleHQgKmVjb250ZXh0LAorCQkJCQkJICBQYXJ0aXRpb25EaXJlY3RvcnkgcGFydGRpcikKIHsK LQlFU3RhdGUJICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7CisJRVN0YXRlCSAgICplc3Rh dGUgPSBwbGFuc3RhdGUgPyBwbGFuc3RhdGUtPnN0YXRlIDogTlVMTDsKIAlQYXJ0aXRpb25QcnVu ZVN0YXRlICpwcnVuZXN0YXRlOwogCWludAkJCW5fcGFydF9oaWVyYXJjaGllczsKIAlMaXN0Q2Vs bCAgICpsYzsKIAlpbnQJCQlpOwotCUV4cHJDb250ZXh0ICplY29udGV4dCA9IHBsYW5zdGF0ZS0+ cHNfRXhwckNvbnRleHQ7CiAKLQkvKiBGb3IgZGF0YSByZWFkaW5nLCBleGVjdXRvciBhbHdheXMg b21pdHMgZGV0YWNoZWQgcGFydGl0aW9ucyAqLwotCWlmIChlc3RhdGUtPmVzX3BhcnRpdGlvbl9k aXJlY3RvcnkgPT0gTlVMTCkKLQkJZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID0KLQkJ CUNyZWF0ZVBhcnRpdGlvbkRpcmVjdG9yeShlc3RhdGUtPmVzX3F1ZXJ5X2N4dCwgZmFsc2UpOwor CUFzc2VydCgoZXN0YXRlICE9IE5VTEwpIHx8CisJCQkocGFydGRpciAhPSBOVUxMICYmIGVjb250 ZXh0ICE9IE5VTEwgJiYgcnRhYmxlICE9IE5JTCkpOwogCiAJbl9wYXJ0X2hpZXJhcmNoaWVzID0g bGlzdF9sZW5ndGgocHJ1bmVpbmZvLT5wcnVuZV9pbmZvcyk7CiAJQXNzZXJ0KG5fcGFydF9oaWVy YXJjaGllcyA+IDApOwpAQCAtMTk1MCwxNSArMjA3MCw0MiBAQCBDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bykKIAkJCVBhcnRpdGlvbktleSBwYXJ0a2V5OwogCiAJCQkvKgotCQkJICogV2UgY2FuIHJlbHkg b24gdGhlIGNvcGllcyBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUncyBwYXJ0aXRpb24KLQkJCSAq IGtleSBhbmQgcGFydGl0aW9uIGRlc2NyaXB0b3IgYXBwZWFyaW5nIGluIGl0cyByZWxjYWNoZSBl bnRyeSwKLQkJCSAqIGJlY2F1c2UgdGhhdCBlbnRyeSB3aWxsIGJlIGhlbGQgb3BlbiBhbmQgbG9j a2VkIGZvciB0aGUKLQkJCSAqIGR1cmF0aW9uIG9mIHRoaXMgZXhlY3V0b3IgcnVuLgorCQkJICog TXVzdCBvcGVuIHRoZSByZWxhdGlvbiBieSBvdXJzZWx2ZXMgd2hlbiBjYWxsZWQgYmVmb3JlIHRo ZQorCQkJICogZXhlY3V0aW9uIGhhcyBzdGFydGVkLCBzdWNoIGFzLCB3aGVuIGNhbGxlZCBkdXJp bmcKKwkJCSAqIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIG9uIGEgY2FjaGVkIHBsYW4uICBJ biB0aGF0IGNhc2UsCisJCQkgKiBzdWItcGFydGl0aW9ucyBtdXN0IGJlIGxvY2tlZCwgYmVjYXVz ZSBBY3F1aXJlUGxhbm5lckxvY2tzKCkKKwkJCSAqIHdvdWxkIG5vdCBoYXZlIHNlZW4gdGhlbS4g KDFzdCByZWxhdGlvbiBpbiBhIHBhcnRyZWxwcnVuZWluZm9zCisJCQkgKiBsaXN0IGlzIGFsd2F5 cyB0aGUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSBhcHBlYXJpbmcgaW4gdGhlCisJCQkgKiBxdWVy eSwgd2hpY2ggQWNxdWlyZVBsYW5uZXJMb2NrcygpIHdvdWxkIGhhdmUgbG9ja2VkOyB0aGUKKwkJ CSAqIEFzc2VydCBpbiByZWxhdGlvbl9vcGVuKCkgZ3VhcmRzIHRoYXQgYXNzdW1wdGlvbi4pCisJ CQkgKi8KKwkJCWlmIChlc3RhdGUgPT0gTlVMTCkKKwkJCXsKKwkJCQlSYW5nZVRibEVudHJ5ICpy dGUgPSBydF9mZXRjaChwaW5mby0+cnRpbmRleCwgcnRhYmxlKTsKKwkJCQlpbnQJCWxvY2ttb2Rl ID0gKGogPT0gMCkgPyBOb0xvY2sgOiBydGUtPnJlbGxvY2ttb2RlOworCisJCQkJcGFydHJlbCA9 IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgbG9ja21vZGUpOworCQkJfQorCQkJZWxzZQorCQkJCXBh cnRyZWwgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcGluZm8tPnJ0aW5kZXgp OworCisJCQkvKgorCQkJICogV2UgY2FuIHJlbHkgb24gdGhlIGNvcHkgb2YgdGhlIHBhcnRpdGlv bmVkIHRhYmxlJ3MgcGFydGl0aW9uCisJCQkgKiBrZXkgZnJvbSBpbiBpdHMgcmVsY2FjaGUgZW50 cnksIGJlY2F1c2UgaXQgY2FuJ3QgY2hhbmdlIChvcgorCQkJICogZ2V0IGRlc3Ryb3llZCkgYXMg bG9uZyBhcyB0aGUgcmVsYXRpb24gaXMgbG9ja2VkLiAgUGFydGl0aW9uCisJCQkgKiBkZXNjcmlw dG9yIGlzIHRha2VuIGZyb20gdGhlIFBhcnRpdGlvbkRpcmVjdG9yeSBhc3NvY2lhdGVkIHdpdGgK KwkJCSAqIHRoZSB0YWJsZSB0aGF0IGlzIGhlbGQgb3BlbiBsb25nIGVub3VnaCBmb3IgdGhlIGRl c2NyaXB0b3IgdG8KKwkJCSAqIHJlbWFpbiB2YWxpZCB3aGlsZSBpdCdzIHVzZWQgdG8gcGVyZm9y bSB0aGUgcHJ1bmluZyBzdGVwcy4KIAkJCSAqLwotCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5nZVRh YmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7CiAJCQlwYXJ0a2V5ID0gUmVsYXRp b25HZXRQYXJ0aXRpb25LZXkocGFydHJlbCk7Ci0JCQlwYXJ0ZGVzYyA9IFBhcnRpdGlvbkRpcmVj dG9yeUxvb2t1cChlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnksCi0JCQkJCQkJCQkJCQlw YXJ0cmVsKTsKKwkJCXBhcnRkZXNjID0gUGFydGl0aW9uRGlyZWN0b3J5TG9va3VwKHBhcnRkaXIs IHBhcnRyZWwpOworCisJCQkvKgorCQkJICogTXVzdCBjbG9zZSBwYXJ0cmVsLCBrZWVwaW5nIHRo ZSBsb2NrIHRha2VuLCBpZiB3ZSdyZSBub3QgdXNpbmcKKwkJCSAqIEVTdGF0ZSdzIGVudHJ5Lgor CQkJICovCisJCQlpZiAoZXN0YXRlID09IE5VTEwpCisJCQkJdGFibGVfY2xvc2UocGFydHJlbCwg Tm9Mb2NrKTsKIAogCQkJLyoKIAkJCSAqIEluaXRpYWxpemUgdGhlIHN1YnBsYW5fbWFwIGFuZCBz dWJwYXJ0X21hcC4KQEAgLTE5NzIsNiArMjExOSw3IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3Rh dGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQog CQkJQXNzZXJ0KHBhcnRkZXNjLT5ucGFydHMgPj0gcGluZm8tPm5wYXJ0cyk7CiAJCQlwcHJ1bmUt Pm5wYXJ0cyA9IHBhcnRkZXNjLT5ucGFydHM7CiAJCQlwcHJ1bmUtPnN1YnBsYW5fbWFwID0gcGFs bG9jKHNpemVvZihpbnQpICogcGFydGRlc2MtPm5wYXJ0cyk7CisJCQlwcHJ1bmUtPnJ0aV9tYXAg PSBwYWxsb2Moc2l6ZW9mKEluZGV4KSAqIHBhcnRkZXNjLT5ucGFydHMpOwogCQkJaWYgKHBhcnRk ZXNjLT5ucGFydHMgPT0gcGluZm8tPm5wYXJ0cykKIAkJCXsKIAkJCQkvKgpAQCAtMTk4Miw2ICsy MTMwLDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwg UGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJcHBydW5lLT5zdWJwYXJ0X21hcCA9 IHBpbmZvLT5zdWJwYXJ0X21hcDsKIAkJCQltZW1jcHkocHBydW5lLT5zdWJwbGFuX21hcCwgcGlu Zm8tPnN1YnBsYW5fbWFwLAogCQkJCQkgICBzaXplb2YoaW50KSAqIHBpbmZvLT5ucGFydHMpOwor CQkJCW1lbWNweShwcHJ1bmUtPnJ0aV9tYXAsIHBpbmZvLT5ydGlfbWFwLAorCQkJCQkgICBzaXpl b2YoaW50KSAqIHBpbmZvLT5ucGFydHMpOwogCiAJCQkJLyoKIAkJCQkgKiBEb3VibGUtY2hlY2sg dGhhdCB0aGUgbGlzdCBvZiB1bnBydW5lZCByZWxhdGlvbnMgaGFzIG5vdApAQCAtMjAzMiw2ICsy MTgyLDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwg UGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJCQkJcGluZm8tPnN1YnBsYW5fbWFw W3BkX2lkeF07CiAJCQkJCQlwcHJ1bmUtPnN1YnBhcnRfbWFwW3BwX2lkeF0gPQogCQkJCQkJCXBp bmZvLT5zdWJwYXJ0X21hcFtwZF9pZHhdOworCQkJCQkJcHBydW5lLT5ydGlfbWFwW3BwX2lkeF0g PQorCQkJCQkJCXBpbmZvLT5ydGlfbWFwW3BkX2lkeF07CiAJCQkJCQlwZF9pZHgrKzsKIAkJCQkJ fQogCQkJCQllbHNlCkBAIC0yMDM5LDYgKzIxOTEsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0 YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykK IAkJCQkJCS8qIHRoaXMgcGFydGRlc2MgZW50cnkgaXMgbm90IGluIHRoZSBwbGFuICovCiAJCQkJ CQlwcHJ1bmUtPnN1YnBsYW5fbWFwW3BwX2lkeF0gPSAtMTsKIAkJCQkJCXBwcnVuZS0+c3VicGFy dF9tYXBbcHBfaWR4XSA9IC0xOworCQkJCQkJcHBydW5lLT5ydGlfbWFwW3BwX2lkeF0gPSAwOwog CQkJCQl9CiAJCQkJfQogCkBAIC0yMDYwLDcgKzIyMTMsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bykKIAkJCSAqIEluaXRpYWxpemUgcHJ1bmluZyBjb250ZXh0cyBhcyBuZWVkZWQuCiAJCQkgKi8K IAkJCXBwcnVuZS0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzID0gcGluZm8tPmluaXRpYWxfcHJ1bmlu Z19zdGVwczsKLQkJCWlmIChwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzKQorCQkJaWYgKGNv bnNpZGVyX2luaXRpYWxfc3RlcHMgJiYgcGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcykKIAkJ CXsKIAkJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1bmUtPmluaXRpYWxfY29udGV4 dCwKIAkJCQkJCQkJCQkgIHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMsCkBAIC0yMDcwLDcg KzIyMjMsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRl LCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQlwcnVuZXN0YXRlLT5kb19pbml0 aWFsX3BydW5lID0gdHJ1ZTsKIAkJCX0KIAkJCXBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzID0g cGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwczsKLQkJCWlmIChwaW5mby0+ZXhlY19wcnVuaW5nX3N0 ZXBzKQorCQkJaWYgKGNvbnNpZGVyX2V4ZWNfc3RlcHMgJiYgcGluZm8tPmV4ZWNfcHJ1bmluZ19z dGVwcykKIAkJCXsKIAkJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1bmUtPmV4ZWNf Y29udGV4dCwKIAkJCQkJCQkJCQkgIHBpbmZvLT5leGVjX3BydW5pbmdfc3RlcHMsCkBAIC0yMjk4 LDEwICsyNDUxLDE0IEBAIFBhcnRpdGlvblBydW5lRml4U3ViUGxhbk1hcChQYXJ0aXRpb25QcnVu ZVN0YXRlICpwcnVuZXN0YXRlLAogICogUGFzcyBpbml0aWFsX3BydW5lIGlmIFBBUkFNX0VYRUMg UGFyYW1zIGNhbm5vdCB5ZXQgYmUgZXZhbHVhdGVkLiAgVGhpcwogICogZGlmZmVyZW50aWF0ZXMg dGhlIGluaXRpYWwgZXhlY3V0b3ItdGltZSBwcnVuaW5nIHN0ZXAgZnJvbSBsYXRlcgogICogcnVu dGltZSBwcnVuaW5nLgorICoKKyAqIFJUIGluZGV4ZXMgb2YgbGVhZiBwYXJ0aXRpb25zIHNjYW5u ZWQgYnkgdGhlIGNob3NlbiBzdWJwbGFucyBhcmUgYWRkZWQgdG8KKyAqICpzY2FuX2xlYWZwYXJ0 X3J0aXMgaWYgdGhlIHBvaW50ZXIgaXMgbm9uLU5VTEwuCiAgKi8KIEJpdG1hcHNldCAqCiBFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKLQkJ CQkJCSBib29sIGluaXRpYWxfcHJ1bmUpCisJCQkJCQkgYm9vbCBpbml0aWFsX3BydW5lLAorCQkJ CQkJIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcykKIHsKIAlCaXRtYXBzZXQgICpyZXN1 bHQgPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKQEAgLTIzMzYsNyArMjQ5Myw3 IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0 YXRlLAogCQkgKi8KIAkJcHBydW5lID0gJnBydW5lZGF0YS0+cGFydHJlbHBydW5lZGF0YVswXTsK IAkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5lZGF0YSwgcHBydW5lLCBpbml0 aWFsX3BydW5lLAotCQkJCQkJCQkJICAgJnJlc3VsdCk7CisJCQkJCQkJCQkgICAmcmVzdWx0LCBz Y2FuX2xlYWZwYXJ0X3J0aXMpOwogCiAJCS8qIEV4cHJlc3Npb24gZXZhbCBtYXkgaGF2ZSB1c2Vk IHNwYWNlIGluIEV4cHJDb250ZXh0IHRvbyAqLwogCQlpZiAocHBydW5lLT5leGVjX3BydW5pbmdf c3RlcHMpCkBAIC0yMzUwLDYgKzI1MDcsOCBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFy dGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAogCS8qIENvcHkgcmVzdWx0IG91dCBvZiB0 aGUgdGVtcCBjb250ZXh0IGJlZm9yZSB3ZSByZXNldCBpdCAqLwogCXJlc3VsdCA9IGJtc19jb3B5 KHJlc3VsdCk7CisJaWYgKHNjYW5fbGVhZnBhcnRfcnRpcykKKwkJKnNjYW5fbGVhZnBhcnRfcnRp cyA9IGJtc19jb3B5KCpzY2FuX2xlYWZwYXJ0X3J0aXMpOwogCiAJTWVtb3J5Q29udGV4dFJlc2V0 KHBydW5lc3RhdGUtPnBydW5lX2NvbnRleHQpOwogCkBAIC0yMzYwLDEzICsyNTE5LDE1IEBAIEV4 ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAog ICogZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlCiAgKgkJUmVjdXJzaXZlIHdvcmtlciBm dW5jdGlvbiBmb3IgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zCiAgKgotICogQWRkcyB2YWxpZCAo bm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRzdWJwbGFucworICogQWRkcyB2YWxp ZCAobm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRzdWJwbGFucyBhbmQgUlQgaW5k ZXhlcyBvZgorICogb2YgdGhlIGNvcnJlc3BvbmRpbmcgbGVhZiBwYXJ0aXRpb25zIHRvICpzY2Fu X2xlYWZwYXJ0X3J0aXMgKGlmIGFza2VkIGZvcikuCiAgKi8KIHN0YXRpYyB2b2lkCiBmaW5kX21h dGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwK IAkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUsCiAJCQkJCQkJICAg Ym9vbCBpbml0aWFsX3BydW5lLAotCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbnMp CisJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucywKKwkJCQkJCQkgICBCaXRtYXBz ZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpCiB7CiAJQml0bWFwc2V0ICAqcGFydHNldDsKIAlpbnQJ CQlpOwpAQCAtMjM5Myw4ICsyNTU0LDE0IEBAIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJz ZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCXdoaWxlICgoaSA9IGJtc19uZXh0 X21lbWJlcihwYXJ0c2V0LCBpKSkgPj0gMCkKIAl7CiAJCWlmIChwcHJ1bmUtPnN1YnBsYW5fbWFw W2ldID49IDApCisJCXsKIAkJCSp2YWxpZHN1YnBsYW5zID0gYm1zX2FkZF9tZW1iZXIoKnZhbGlk c3VicGxhbnMsCiAJCQkJCQkJCQkJCXBwcnVuZS0+c3VicGxhbl9tYXBbaV0pOworCQkJQXNzZXJ0 KHBwcnVuZS0+cnRpX21hcFtpXSA+IDApOworCQkJaWYgKHNjYW5fbGVhZnBhcnRfcnRpcykKKwkJ CQkqc2Nhbl9sZWFmcGFydF9ydGlzID0gYm1zX2FkZF9tZW1iZXIoKnNjYW5fbGVhZnBhcnRfcnRp cywKKwkJCQkJCQkJCQkJCQkgcHBydW5lLT5ydGlfbWFwW2ldKTsKKwkJfQogCQllbHNlCiAJCXsK IAkJCWludAkJCXBhcnRpZHggPSBwcHJ1bmUtPnN1YnBhcnRfbWFwW2ldOwpAQCAtMjQwMiw3ICsy NTY5LDggQEAgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBhcnRpdGlvblBydW5pbmdE YXRhICpwcnVuZWRhdGEsCiAJCQlpZiAocGFydGlkeCA+PSAwKQogCQkJCWZpbmRfbWF0Y2hpbmdf c3VicGxhbnNfcmVjdXJzZShwcnVuZWRhdGEsCiAJCQkJCQkJCQkJCSAgICZwcnVuZWRhdGEtPnBh cnRyZWxwcnVuZWRhdGFbcGFydGlkeF0sCi0JCQkJCQkJCQkJCSAgIGluaXRpYWxfcHJ1bmUsIHZh bGlkc3VicGxhbnMpOworCQkJCQkJCQkJCQkgICBpbml0aWFsX3BydW5lLCB2YWxpZHN1YnBsYW5z LAorCQkJCQkJCQkJCQkgICBzY2FuX2xlYWZwYXJ0X3J0aXMpOwogCQkJZWxzZQogCQkJewogCQkJ CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDk2OTVkZTg1YjkuLmRjZTkzYThjOWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xMzUsNiArMTM1LDcgQEAgQ3JlYXRlRXhl Y3V0b3JTdGF0ZSh2b2lkKQogCWVzdGF0ZS0+ZXNfcGFyYW1fZXhlY192YWxzID0gTlVMTDsKIAog CWVzdGF0ZS0+ZXNfcXVlcnlFbnYgPSBOVUxMOworCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1 bHRzID0gTklMOwogCiAJZXN0YXRlLT5lc19xdWVyeV9jeHQgPSBxY29udGV4dDsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9mdW5jdGlvbnMuYwppbmRleCBkYzEzNjI1MTcxLi5iZmZiNDJjZTcxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9mdW5jdGlvbnMuYwpAQCAtODQyLDcgKzg0Miw3IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1 dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCWVsc2UKIAkJZGVz dCA9IE5vbmVfUmVjZWl2ZXI7CiAKLQllcy0+cWQgPSBDcmVhdGVRdWVyeURlc2MoZXMtPnN0bXQs CisJZXMtPnFkID0gQ3JlYXRlUXVlcnlEZXNjKGVzLT5zdG10LCBOSUwsCiAJCQkJCQkJIGZjYWNo ZS0+c3JjLAogCQkJCQkJCSBHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCSBJbnZhbGlkU25h cHNob3QsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggOTk4MzAxOThiZC4uM2I5MTc1 ODRkZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtMTU2LDcgKzE1Niw4IEBAIEV4 ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ CSAqIHN1YnBsYW4sIHdlIGNhbiBmaWxsIGFzX3ZhbGlkX3N1YnBsYW5zIGltbWVkaWF0ZWx5LCBw cmV2ZW50aW5nCiAJCSAqIGxhdGVyIGNhbGxzIHRvIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucy4K IAkJICovCi0JCWlmICghcHJ1bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSAmJiBucGxhbnMgPiAwKQor CQlpZiAoYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID09IE5VTEwgfHwKKwkJCSghYXBwZW5k c3RhdGUtPmFzX3BydW5lX3N0YXRlLT5kb19leGVjX3BydW5lICYmIG5wbGFucyA+IDApKQogCQkJ YXBwZW5kc3RhdGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0gYm1zX2FkZF9yYW5nZShOVUxMLCAwLCBu cGxhbnMgLSAxKTsKIAl9CiAJZWxzZQpAQCAtNTc4LDcgKzU3OSw3IEBAIGNob29zZV9uZXh0X3N1 YnBsYW5fbG9jYWxseShBcHBlbmRTdGF0ZSAqbm9kZSkKIAkJfQogCQllbHNlIGlmIChub2RlLT5h c192YWxpZF9zdWJwbGFucyA9PSBOVUxMKQogCQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQot CQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2Up OworCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFs c2UsIE5VTEwpOwogCiAJCXdoaWNocGxhbiA9IC0xOwogCX0KQEAgLTY0Myw3ICs2NDQsNyBAQCBj aG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl9sZWFkZXIoQXBwZW5kU3RhdGUgKm5vZGUpCiAJCWlmIChu b2RlLT5hc192YWxpZF9zdWJwbGFucyA9PSBOVUxMKQogCQl7CiAJCQlub2RlLT5hc192YWxpZF9z dWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0 YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5l X3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAKIAkJCS8qCiAJCQkgKiBNYXJrIGVhY2ggaW52YWxpZCBw bGFuIGFzIGZpbmlzaGVkIHRvIGFsbG93IHRoZSBsb29wIGJlbG93IHRvCkBAIC03MTgsNyArNzE5 LDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9mb3Jfd29ya2VyKEFwcGVuZFN0YXRlICpub2RlKQog CWVsc2UgaWYgKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJewogCQlub2RlLT5h c192YWxpZF9zdWJwbGFucyA9Ci0JCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNf cHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5h c19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCQltYXJrX2ludmFsaWRfc3VicGxhbnNfYXNf ZmluaXNoZWQobm9kZSk7CiAJfQogCkBAIC04NjksNyArODcwLDcgQEAgRXhlY0FwcGVuZEFzeW5j QmVnaW4oQXBwZW5kU3RhdGUgKm5vZGUpCiAJaWYgKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09 IE5VTEwpCiAJewogCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQlFeGVjRmluZE1hdGNo aW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCUV4ZWNGaW5kTWF0 Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCiAJCWNs YXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKG5vZGUpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1lcmdlQXBwZW5kLmMKaW5kZXggZjM3MGY5ZjI4Ny4uY2NmYTA4Mzk0NSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKQEAgLTEwNCw3ICsxMDQsOCBAQCBFeGVjSW5pdE1l cmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkJICogc3VicGxhbiwgd2UgY2FuIGZpbGwgbXNfdmFsaWRfc3VicGxhbnMgaW1tZWRpYXRlbHks IHByZXZlbnRpbmcKIAkJICogbGF0ZXIgY2FsbHMgdG8gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5z LgogCQkgKi8KLQkJaWYgKCFwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lICYmIG5wbGFucyA+IDAp CisJCWlmIChtZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZSA9PSBOVUxMIHx8CisJCQkoIW1lcmdl c3RhdGUtPm1zX3BydW5lX3N0YXRlLT5kb19leGVjX3BydW5lICYmIG5wbGFucyA+IDApKQogCQkJ bWVyZ2VzdGF0ZS0+bXNfdmFsaWRfc3VicGxhbnMgPSBibXNfYWRkX3JhbmdlKE5VTEwsIDAsIG5w bGFucyAtIDEpOwogCX0KIAllbHNlCkBAIC0yMTksNyArMjIwLDcgQEAgRXhlY01lcmdlQXBwZW5k KFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkgKi8KIAkJaWYgKG5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5z ID09IE5VTEwpCiAJCQlub2RlLT5tc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRj aGluZ1N1YlBsYW5zKG5vZGUtPm1zX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRN YXRjaGluZ1N1YlBsYW5zKG5vZGUtPm1zX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAKIAkJ LyoKIAkJICogRmlyc3QgdGltZSB0aHJvdWdoOiBwdWxsIHRoZSBmaXJzdCB0dXBsZSBmcm9tIGVh Y2ggdmFsaWQgc3VicGxhbiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggZmQ1Nzk2ZjFiOS4uOTMwMTJhNWIz YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTE1NzgsNiArMTU3OCw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9p bnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZTsKIAlDYWNoZWRQbGFuICpjcGxhbjsKIAlMaXN0CSAgICpzdG10X2xp c3Q7CisJTGlzdAkgICAqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3Q7CiAJY2hhcgkgICAqcXVlcnlf c3RyaW5nOwogCVNuYXBzaG90CXNuYXBzaG90OwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsK QEAgLTE2NTcsNyArMTY1OCwxMCBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hh ciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCSAqLwogCiAJLyogUmVwbGFuIGlmIG5lZWRlZCwg YW5kIGluY3JlbWVudCBwbGFuIHJlZmNvdW50IGZvciBwb3J0YWwgKi8KLQljcGxhbiA9IEdldENh Y2hlZFBsYW4ocGxhbnNvdXJjZSwgcGFyYW1MSSwgTlVMTCwgX1NQSV9jdXJyZW50LT5xdWVyeUVu dik7CisJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIF9T UElfY3VycmVudC0+cXVlcnlFbnYsCisJCQkJCQkgICZwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCk7 CisJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09CisJCSAgIGxpc3RfbGVu Z3RoKHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KSk7CiAJc3RtdF9saXN0ID0gY3BsYW4tPnN0bXRf bGlzdDsKIAogCWlmICghcGxhbi0+c2F2ZWQpCkBAIC0xNjg1LDYgKzE2ODksOSBAQCBTUElfY3Vy c29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCQkJ CQkgIHN0bXRfbGlzdCwKIAkJCQkJICBjcGxhbik7CiAKKwkvKiBDb3B5IExpc3RzIG9mIFBhcnRp dGlvblBydW5lUmVzdWx0cyBpbnRvIHRoZSBwb3J0YWwncyBjb250ZXh0LiAqLworCVBvcnRhbFN0 b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKHBvcnRhbCwgcGFydF9wcnVuZV9yZXN1bHRzX2xpc3Qp OworCiAJLyoKIAkgKiBTZXQgdXAgb3B0aW9ucyBmb3IgcG9ydGFsLiAgRGVmYXVsdCBTQ1JPTEwg dHlwZSBpcyBjaG9zZW4gdGhlIHNhbWUgd2F5CiAJICogYXMgUGVyZm9ybUN1cnNvck9wZW4gZG9l cyBpdC4KQEAgLTIwOTIsNyArMjA5OSw4IEBAIFNQSV9wbGFuX2dldF9jYWNoZWRfcGxhbihTUElQ bGFuUHRyIHBsYW4pCiAJLyogR2V0IHRoZSBnZW5lcmljIHBsYW4gZm9yIHRoZSBxdWVyeSAqLwog CWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBOVUxMLAogCQkJCQkJICBwbGFuLT5z YXZlZCA/IEN1cnJlbnRSZXNvdXJjZU93bmVyIDogTlVMTCwKLQkJCQkJCSAgX1NQSV9jdXJyZW50 LT5xdWVyeUVudik7CisJCQkJCQkgIF9TUElfY3VycmVudC0+cXVlcnlFbnYsCisJCQkJCQkgIE5V TEwgLyogTm90IGludGVyZXN0ZWQgaW4gUGFydGl0aW9uUHJ1bmVSZXN1bHRzICovKTsKIAlBc3Nl cnQoY3BsYW4gPT0gcGxhbnNvdXJjZS0+Z3BsYW4pOwogCiAJLyogUG9wIHRoZSBlcnJvciBjb250 ZXh0IHN0YWNrICovCkBAIC0yNDczLDcgKzI0ODEsOSBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQ bGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCXsKIAkJQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSA9IChDYWNoZWRQbGFuU291cmNlICopIGxmaXJzdChs YzEpOwogCQlMaXN0CSAgICpzdG10X2xpc3Q7Ci0JCUxpc3RDZWxsICAgKmxjMjsKKwkJTGlzdAkg ICAqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3Q7CisJCUxpc3RDZWxsICAgKmxjMiwKKwkJCQkgICAq bGMzOwogCiAJCXNwaWNhbGxiYWNrYXJnLnF1ZXJ5ID0gcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5n OwogCkBAIC0yNTQ5LDggKzI1NTksMTAgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBw bGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJICogcGxhbiwgdGhlIHJl ZmNvdW50IG11c3QgYmUgYmFja2VkIGJ5IHRoZSBwbGFuX293bmVyLgogCQkgKi8KIAkJY3BsYW4g PSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIG9wdGlvbnMtPnBhcmFtcywKLQkJCQkJCQkgIHBs YW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOwotCisJCQkJCQkJICBwbGFuX293bmVy LCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAorCQkJCQkJCSAmcGFydF9wcnVuZV9yZXN1bHRzX2xp c3QpOworCQlBc3NlcnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0bXRfbGlzdCkgPT0KKwkJCSAgIGxp c3RfbGVuZ3RoKHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KSk7CiAJCXN0bXRfbGlzdCA9IGNwbGFu LT5zdG10X2xpc3Q7CiAKIAkJLyoKQEAgLTI1ODksOSArMjYwMSwxMCBAQCBfU1BJX2V4ZWN1dGVf cGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAog CQkJfQogCQl9CiAKLQkJZm9yZWFjaChsYzIsIHN0bXRfbGlzdCkKKwkJZm9yYm90aChsYzIsIHN0 bXRfbGlzdCwgbGMzLCBwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCkKIAkJewogCQkJUGxhbm5lZFN0 bXQgKnN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMyKTsKKwkJCUxpc3QJICAgKnBh cnRfcHJ1bmVfcmVzdWx0cyA9IGxmaXJzdF9ub2RlKExpc3QsIGxjMyk7CiAJCQlib29sCQljYW5T ZXRUYWcgPSBzdG10LT5jYW5TZXRUYWc7CiAJCQlEZXN0UmVjZWl2ZXIgKmRlc3Q7CiAKQEAgLTI2 NjMsNyArMjY3Niw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3Qg U1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJZWxzZQogCQkJCQlzbmFwID0gSW52YWxp ZFNuYXBzaG90OwogCi0JCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJCQlxZGVz YyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkJCQkJCQkJ cGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNyb3NzY2hlY2tfc25h cHNob3QsCiAJCQkJCQkJCQkJZGVzdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3Jl YWRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggMjM3NzYzNjdj NS4uYjAxZjU1ZmI0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTE1OCw2ICsxNTgsMTEgQEAK IAl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsJCS8qIHNraXAgOmZsZG5hbWUgKi8gXAogCWxv Y2FsX25vZGUtPmZsZG5hbWUgPSByZWFkSW50Q29scyhsZW4pCiAKKy8qIFJlYWQgYW4gSW5kZXgg YXJyYXkgKi8KKyNkZWZpbmUgUkVBRF9JTkRFWF9BUlJBWShmbGRuYW1lLCBsZW4pIFwKKwl0b2tl biA9IHBnX3N0cnRvaygmbGVuZ3RoKTsJCS8qIHNraXAgOmZsZG5hbWUgKi8gXAorCWxvY2FsX25v ZGUtPmZsZG5hbWUgPSByZWFkSW5kZXhDb2xzKGxlbikKKwogLyogUmVhZCBhIGJvb2wgYXJyYXkg Ki8KICNkZWZpbmUgUkVBRF9CT09MX0FSUkFZKGZsZG5hbWUsIGxlbikgXAogCXRva2VuID0gcGdf c3RydG9rKCZsZW5ndGgpOwkJLyogc2tpcCA6ZmxkbmFtZSAqLyBcCkBAIC04MDAsNyArODA1LDYg QEAgZm5uYW1lKGludCBudW1Db2xzKSBcCiAgKi8KIFJFQURfU0NBTEFSX0FSUkFZKHJlYWRBdHRy TnVtYmVyQ29scywgaW50MTYsIGF0b2kpCiBSRUFEX1NDQUxBUl9BUlJBWShyZWFkT2lkQ29scywg T2lkLCBhdG9vaWQpCi0vKiBvdXRmdW5jcy5jIGhhcyB3cml0ZUluZGV4Q29scywgYnV0IHdlIGRv bid0IHlldCBuZWVkIHRoYXQgaGVyZSAqLwotLyogUkVBRF9TQ0FMQVJfQVJSQVkocmVhZEluZGV4 Q29scywgSW5kZXgsIGF0b3VpKSAqLworUkVBRF9TQ0FMQVJfQVJSQVkocmVhZEluZGV4Q29scywg SW5kZXgsIGF0b3VpKQogUkVBRF9TQ0FMQVJfQVJSQVkocmVhZEludENvbHMsIGludCwgYXRvaSkK IFJFQURfU0NBTEFSX0FSUkFZKHJlYWRCb29sQ29scywgYm9vbCwgc3RydG9ib29sKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDc5OTYwMmY1ZWEuLmE5NmQzMTZkY2EgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTUyMCw3ICs1MjAsOSBAQCBzdGFu ZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQg Y3Vyc29yT3B0aW9ucywKIAlyZXN1bHQtPnBhcmFsbGVsTW9kZU5lZWRlZCA9IGdsb2ItPnBhcmFs bGVsTW9kZU5lZWRlZDsKIAlyZXN1bHQtPnBsYW5UcmVlID0gdG9wX3BsYW47CiAJcmVzdWx0LT5w YXJ0UHJ1bmVJbmZvcyA9IGdsb2ItPnBhcnRQcnVuZUluZm9zOworCXJlc3VsdC0+Y29udGFpbnNJ bml0aWFsUHJ1bmluZyA9IGdsb2ItPmNvbnRhaW5zSW5pdGlhbFBydW5pbmc7CiAJcmVzdWx0LT5y dGFibGUgPSBnbG9iLT5maW5hbHJ0YWJsZTsKKwlyZXN1bHQtPm1pbkxvY2tSZWxpZHMgPSBnbG9i LT5taW5Mb2NrUmVsaWRzOwogCXJlc3VsdC0+cmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cmVzdWx0 UmVsYXRpb25zOwogCXJlc3VsdC0+YXBwZW5kUmVsYXRpb25zID0gZ2xvYi0+YXBwZW5kUmVsYXRp b25zOwogCXJlc3VsdC0+c3VicGxhbnMgPSBnbG9iLT5zdWJwbGFuczsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3NldHJlZnMuYwppbmRleCBlNjdmMGUzNTA5Li41ODIwZjI2ZmRiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0yNzAsNiArMjcwLDE2IEBAIHNldF9wbGFuX3Jl ZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4pCiAJICovCiAJYWRkX3J0ZXNf dG9fZmxhdF9ydGFibGUocm9vdCwgZmFsc2UpOwogCisJLyoKKwkgKiBBZGQgdGhlIHF1ZXJ5J3Mg YWRqdXN0ZWQgcmFuZ2Ugb2YgUlQgaW5kZXhlcyB0byBnbG9iLT5taW5Mb2NrUmVsaWRzLgorCSAq IFRoZSBhZGp1c3RlZCBSVCBpbmRleGVzIG9mIHBydW5hYmxlIHJlbGF0aW9ucyB3aWxsIGJlIGRl bGV0ZWQgZnJvbSB0aGUKKwkgKiBzZXQgYmVsb3cgd2hlcmUgUGFydGl0aW9uUHJ1bmVJbmZvcyBh cmUgcHJvY2Vzc2VkLgorCSAqLworCWdsb2ItPm1pbkxvY2tSZWxpZHMgPQorCQlibXNfYWRkX3Jh bmdlKGdsb2ItPm1pbkxvY2tSZWxpZHMsCisJCQkJCSAgcnRvZmZzZXQgKyAxLAorCQkJCQkgIHJ0 b2Zmc2V0ICsgbGlzdF9sZW5ndGgocm9vdC0+cGFyc2UtPnJ0YWJsZSkpOworCiAJLyoKIAkgKiBB ZGp1c3QgUlQgaW5kZXhlcyBvZiBQbGFuUm93TWFya3MgYW5kIGFkZCB0byBmaW5hbCByb3dtYXJr cyBsaXN0CiAJICovCkBAIC0zNTIsNiArMzYyLDcgQEAgc2V0X3BsYW5fcmVmZXJlbmNlcyhQbGFu bmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbikKIAlmb3JlYWNoIChsYywgcm9vdC0+cGFydFBydW5l SW5mb3MpCiAJewogCQlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdChsYyk7 CisJCUJpdG1hcHNldCAqbGVhZnBhcnRfcnRpcyA9IE5VTEw7CiAJCUxpc3RDZWxsICAqbDsKIAog CQlwcnVuZWluZm8tPnJvb3RfcGFyZW50X3JlbGlkcyA9CkBAIC0zNjQsMTUgKzM3NSw1MCBAQCBz ZXRfcGxhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuKQogCQkJZm9y ZWFjaChsMiwgcHJ1bmVfaW5mb3MpCiAJCQl7CiAJCQkJUGFydGl0aW9uZWRSZWxQcnVuZUluZm8g KnBpbmZvID0gbGZpcnN0KGwyKTsKKwkJCQlpbnQJCWk7CiAKIAkJCQkvKiBSVCBpbmRleCBvZiB0 aGUgdGFibGUgdG8gd2hpY2ggdGhlIHBpbmZvIGJlbG9uZ3MuICovCiAJCQkJcGluZm8tPnJ0aW5k ZXggKz0gcnRvZmZzZXQ7CisKKwkJCQkvKiBBbHNvIG9mIHRoZSBsZWFmIHBhcnRpdGlvbnMgdGhh dCBtaWdodCBiZSBzY2FubmVkLiAqLworCQkJCWZvciAoaSA9IDA7IGkgPCBwaW5mby0+bnBhcnRz OyBpKyspCisJCQkJeworCQkJCQlpZiAocGluZm8tPnJ0aV9tYXBbaV0gPiAwICYmIHBpbmZvLT5z dWJwbGFuX21hcFtpXSA+PSAwKQorCQkJCQl7CisJCQkJCQlwaW5mby0+cnRpX21hcFtpXSArPSBy dG9mZnNldDsKKwkJCQkJCWxlYWZwYXJ0X3J0aXMgPSBibXNfYWRkX21lbWJlcihsZWFmcGFydF9y dGlzLAorCQkJCQkJCQkJCQkJCSAgIHBpbmZvLT5ydGlfbWFwW2ldKTsKKwkJCQkJfQorCQkJCX0K IAkJCX0KIAkJfQogCisJCWlmIChwcnVuZWluZm8tPm5lZWRzX2luaXRfcHJ1bmluZykKKwkJewor CQkJZ2xvYi0+Y29udGFpbnNJbml0aWFsUHJ1bmluZyA9IHRydWU7CisKKwkJCS8qCisJCQkgKiBE ZWxldGUgdGhlIGxlYWYgcGFydGl0aW9uIFJUSXMgZnJvbSB0aGUgZ2xvYmFsIHNldCBvZiByZWxh dGlvbnMKKwkJCSAqIHRvIGJlIGxvY2tlZCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBwbGFuLiAgQWNx dWlyZUV4ZWN1dG9yTG9ja3MoKQorCQkJICogd2lsbCBmaW5kIHRoZSBvbmVzIHRvIGFkZCB0byB0 aGUgc2V0IGFmdGVyIHBlcmZvcm1pbmcgaW5pdGlhbAorCQkJICogcHJ1bmluZy4KKwkJCSAqLwor CQkJZ2xvYi0+bWluTG9ja1JlbGlkcyA9IGJtc19kZWxfbWVtYmVycyhnbG9iLT5taW5Mb2NrUmVs aWRzLAorCQkJCQkJCQkJCQkJICBsZWFmcGFydF9ydGlzKTsKKwkJfQorCiAJCWdsb2ItPnBhcnRQ cnVuZUluZm9zID0gbGFwcGVuZChnbG9iLT5wYXJ0UHJ1bmVJbmZvcywgcHJ1bmVpbmZvKTsKIAl9 CiAKKwkvKgorCSAqIEl0IHNlZW1zIHdvcnRoIGRvaW5nIGEgYm1zX2NvcHkoKSBvbiBnbG9iLT5t aW5Mb2NrUmVsaWRzIGlmIHdlIGRlbGV0ZWQKKwkgKiBiaXRzIGZyb20gaXQgYWJvdmUgdG8gZ2V0 IHJpZCBvZiBhbnkgZW1wdHkgdGFpbCBiaXRzLiAgSXQgc2VlbXMgYmV0dGVyCisJICogZm9yIHRo ZSBsb29wIG92ZXIgdGhpcyBzZXQgaW4gQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSB0byBub3QgaGF2 ZSB0byBnbworCSAqIHRocm91Z2ggdGhvc2UgdXNlbGVzcyBiaXQgd29yZHMuCisJICovCisJaWYg KGdsb2ItPmNvbnRhaW5zSW5pdGlhbFBydW5pbmcpCisJCWdsb2ItPm1pbkxvY2tSZWxpZHMgPSBi bXNfY29weShnbG9iLT5taW5Mb2NrUmVsaWRzKTsKKwogCXJldHVybiByZXN1bHQ7CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNr ZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRleCBkNDhmNjc4NGMxLi5kNTU1NjM1NGY3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKKysrIGIv c3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBAIC0xNDQsNyArMTQ0LDkgQEAg c3RhdGljIExpc3QgKm1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpy b290LAogCQkJCQkJCQkJCSAgIExpc3QgKnBydW5lcXVhbCwKIAkJCQkJCQkJCQkgICBCaXRtYXBz ZXQgKnBhcnRyZWxpZHMsCiAJCQkJCQkJCQkJICAgaW50ICpyZWxpZF9zdWJwbGFuX21hcCwKLQkJ CQkJCQkJCQkgICBCaXRtYXBzZXQgKiptYXRjaGVkc3VicGxhbnMpOworCQkJCQkJCQkJCSAgIEJp dG1hcHNldCAqKm1hdGNoZWRzdWJwbGFucywKKwkJCQkJCQkJCQkgICBib29sICpuZWVkc19pbml0 X3BydW5pbmcsCisJCQkJCQkJCQkJICAgYm9vbCAqbmVlZHNfZXhlY19wcnVuaW5nKTsKIHN0YXRp YyB2b2lkIGdlbl9wYXJ0cHJ1bmVfc3RlcHMoUmVsT3B0SW5mbyAqcmVsLCBMaXN0ICpjbGF1c2Vz LAogCQkJCQkJCQlQYXJ0Q2xhdXNlVGFyZ2V0IHRhcmdldCwKIAkJCQkJCQkJR2VuZXJhdGVQcnVu aW5nU3RlcHNDb250ZXh0ICpjb250ZXh0KTsKQEAgLTIzNCw2ICsyMzYsOCBAQCBtYWtlX3BhcnRp dGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwK IAlpbnQJCSAgICpyZWxpZF9zdWJwbGFuX21hcDsKIAlMaXN0Q2VsbCAgICpsYzsKIAlpbnQJCQlp OworCWJvb2wJCW5lZWRzX2luaXRfcHJ1bmluZyA9IGZhbHNlOworCWJvb2wJCW5lZWRzX2V4ZWNf cHJ1bmluZyA9IGZhbHNlOwogCiAJLyoKIAkgKiBTY2FuIHRoZSBzdWJwYXRocyB0byBzZWUgd2hp Y2ggb25lcyBhcmUgc2NhbnMgb2YgcGFydGl0aW9uIGNoaWxkCkBAIC0zMTMsMTIgKzMxNywxNiBA QCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnBhcmVudHJlbCwKIAkJQml0bWFwc2V0ICAqcGFydHJlbGlkcyA9IChCaXRtYXBzZXQgKikgbGZp cnN0KGxjKTsKIAkJTGlzdAkgICAqcGluZm9saXN0OwogCQlCaXRtYXBzZXQgICptYXRjaGVkc3Vi cGxhbnMgPSBOVUxMOworCQlib29sCQlwYXJ0cmVsX25lZWRzX2luaXRfcHJ1bmluZzsKKwkJYm9v bAkJcGFydHJlbF9uZWVkc19leGVjX3BydW5pbmc7CiAKIAkJcGluZm9saXN0ID0gbWFrZV9wYXJ0 aXRpb25lZHJlbF9wcnVuZWluZm8ocm9vdCwgcGFyZW50cmVsLAogCQkJCQkJCQkJCQkJICBwcnVu ZXF1YWwsCiAJCQkJCQkJCQkJCQkgIHBhcnRyZWxpZHMsCiAJCQkJCQkJCQkJCQkgIHJlbGlkX3N1 YnBsYW5fbWFwLAotCQkJCQkJCQkJCQkJICAmbWF0Y2hlZHN1YnBsYW5zKTsKKwkJCQkJCQkJCQkJ CSAgJm1hdGNoZWRzdWJwbGFucywKKwkJCQkJCQkJCQkJCSAgJnBhcnRyZWxfbmVlZHNfaW5pdF9w cnVuaW5nLAorCQkJCQkJCQkJCQkJICAmcGFydHJlbF9uZWVkc19leGVjX3BydW5pbmcpOwogCiAJ CS8qIFdoZW4gcHJ1bmluZyBpcyBwb3NzaWJsZSwgcmVjb3JkIHRoZSBtYXRjaGVkIHN1YnBsYW5z ICovCiAJCWlmIChwaW5mb2xpc3QgIT0gTklMKQpAQCAtMzI3LDYgKzMzNSw5IEBAIG1ha2VfcGFy dGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVs LAogCQkJYWxsbWF0Y2hlZHN1YnBsYW5zID0gYm1zX2pvaW4obWF0Y2hlZHN1YnBsYW5zLAogCQkJ CQkJCQkJCSAgYWxsbWF0Y2hlZHN1YnBsYW5zKTsKIAkJfQorCisJCW5lZWRzX2luaXRfcHJ1bmlu ZyB8PSBwYXJ0cmVsX25lZWRzX2luaXRfcHJ1bmluZzsKKwkJbmVlZHNfZXhlY19wcnVuaW5nIHw9 IHBhcnRyZWxfbmVlZHNfZXhlY19wcnVuaW5nOwogCX0KIAogCXBmcmVlKHJlbGlkX3N1YnBsYW5f bWFwKTsKQEAgLTM0Miw2ICszNTMsOCBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAlwcnVuZWluZm8gPSBtYWtlTm9k ZShQYXJ0aXRpb25QcnVuZUluZm8pOwogCXBydW5laW5mby0+cm9vdF9wYXJlbnRfcmVsaWRzID0g cGFyZW50cmVsLT5yZWxpZHM7CiAJcHJ1bmVpbmZvLT5wcnVuZV9pbmZvcyA9IHBydW5lcmVsaW5m b3M7CisJcHJ1bmVpbmZvLT5uZWVkc19pbml0X3BydW5pbmcgPSBuZWVkc19pbml0X3BydW5pbmc7 CisJcHJ1bmVpbmZvLT5uZWVkc19leGVjX3BydW5pbmcgPSBuZWVkc19leGVjX3BydW5pbmc7CiAK IAkvKgogCSAqIFNvbWUgc3VicGxhbnMgbWF5IG5vdCBiZWxvbmcgdG8gYW55IG9mIHRoZSBpZGVu dGlmaWVkIHBhcnRpdGlvbmVkIHJlbHMuCkBAIC00NDIsMTMgKzQ1NSwxOCBAQCBhZGRfcGFydF9y ZWxpZHMoTGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpwYXJ0cmVsaWRzKQogICogSWYg d2UgY2Fubm90IGZpbmQgYW55IHVzZWZ1bCBydW4tdGltZSBwcnVuaW5nIHN0ZXBzLCByZXR1cm4g TklMLgogICogSG93ZXZlciwgb24gc3VjY2VzcywgZWFjaCByZWwgaWRlbnRpZmllZCBpbiBwYXJ0 cmVsaWRzIHdpbGwgaGF2ZQogICogYW4gZWxlbWVudCBpbiB0aGUgcmVzdWx0IGxpc3QsIGV2ZW4g aWYgc29tZSBvZiB0aGVtIGFyZSB1c2VsZXNzLgorICogKm5lZWRzX2luaXRfcHJ1bmluZyBhbmQg Km5lZWRzX2V4ZWNfcHJ1bmluZyBhcmUgc2V0IHRvIGluZGljYXRlIHRoYXQgdGhlCisgKiByZXR1 cm5lZCBQYXJ0aXRpb25lZFJlbFBydW5lSW5mb3MgY29udGFpbnMgcHJ1bmluZyBzdGVwcyB0aGF0 IGNhbiBiZQorICogcGVyZm9ybWVkIGJlZm9yZSBhbmQgYWZ0ZXIgZXhlY3V0aW9uIGJlZ2lucywg cmVzcGVjdGl2ZWx5LgogICovCiBzdGF0aWMgTGlzdCAqCiBtYWtlX3BhcnRpdGlvbmVkcmVsX3By dW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJ CSAgTGlzdCAqcHJ1bmVxdWFsLAogCQkJCQkJCSAgQml0bWFwc2V0ICpwYXJ0cmVsaWRzLAogCQkJ CQkJCSAgaW50ICpyZWxpZF9zdWJwbGFuX21hcCwKLQkJCQkJCQkgIEJpdG1hcHNldCAqKm1hdGNo ZWRzdWJwbGFucykKKwkJCQkJCQkgIEJpdG1hcHNldCAqKm1hdGNoZWRzdWJwbGFucywKKwkJCQkJ CQkgIGJvb2wgKm5lZWRzX2luaXRfcHJ1bmluZywKKwkJCQkJCQkgIGJvb2wgKm5lZWRzX2V4ZWNf cHJ1bmluZykKIHsKIAlSZWxPcHRJbmZvICp0YXJnZXRwYXJ0ID0gTlVMTDsKIAlMaXN0CSAgICpw aW5mb2xpc3QgPSBOSUw7CkBAIC00NTksNiArNDc3LDEwIEBAIG1ha2VfcGFydGl0aW9uZWRyZWxf cHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJaW50 CQkJcnRpOwogCWludAkJCWk7CiAKKwkvKiBXaWxsIGZpbmQgb3V0IGJlbG93LiAqLworCSpuZWVk c19pbml0X3BydW5pbmcgPSBmYWxzZTsKKwkqbmVlZHNfZXhlY19wcnVuaW5nID0gZmFsc2U7CisK IAkvKgogCSAqIEV4YW1pbmUgZWFjaCBwYXJ0aXRpb25lZCByZWwsIGNvbnN0cnVjdGluZyBhIHRl bXBvcmFyeSBhcnJheSB0byBtYXAKIAkgKiBmcm9tIHBsYW5uZXIgcmVsaWRzIHRvIGluZGV4IG9m IHRoZSBwYXJ0aXRpb25lZCByZWwsIGFuZCBidWlsZGluZyBhCkBAIC01NDYsNiArNTY4LDkgQEAg bWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdElu Zm8gKnBhcmVudHJlbCwKIAkJICogZXhlY3V0b3IgcGVyLXNjYW4gcHJ1bmluZyBzdGVwcy4gIFRo aXMgZmlyc3QgcGFzcyBjcmVhdGVzIHN0YXJ0dXAKIAkJICogcHJ1bmluZyBzdGVwcyBhbmQgZGV0 ZWN0cyB3aGV0aGVyIHRoZXJlJ3MgYW55IHBvc3NpYmx5LXVzZWZ1bCBxdWFscwogCQkgKiB0aGF0 IHdvdWxkIHJlcXVpcmUgcGVyLXNjYW4gcHJ1bmluZy4KKwkJICoKKwkJICogSW4gdGhlIGZpcnN0 IHBhc3MsIHdlIG5vdGUgd2hldGhlciB0aGUgMm5kIHBhc3MgaXMgbmVjZXNzYXJ5IGJ5CisJCSAq IG5vdGluZyB0aGUgcHJlc2VuY2Ugb2YgRVhFQyBwYXJhbWV0ZXJzLgogCQkgKi8KIAkJZ2VuX3Bh cnRwcnVuZV9zdGVwcyhzdWJwYXJ0LCBwYXJ0cHJ1bmVxdWFsLCBQQVJUVEFSR0VUX0lOSVRJQUws CiAJCQkJCQkJJmNvbnRleHQpOwpAQCAtNjIwLDYgKzY0NSwxMiBAQCBtYWtlX3BhcnRpdGlvbmVk cmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAog CQlwaW5mby0+ZXhlY3BhcmFtaWRzID0gZXhlY3BhcmFtaWRzOwogCQkvKiBSZW1haW5pbmcgZmll bGRzIHdpbGwgYmUgZmlsbGVkIGluIHRoZSBuZXh0IGxvb3AgKi8KIAorCQkvKiByZWNvcmQgd2hp Y2ggdHlwZXMgb2YgcHJ1bmluZyBzdGVwcyB3ZSd2ZSBzZWVuIHNvIGZhciAqLworCQlpZiAoaW5p dGlhbF9wcnVuaW5nX3N0ZXBzICE9IE5JTCkKKwkJCSpuZWVkc19pbml0X3BydW5pbmcgPSB0cnVl OworCQlpZiAoZXhlY19wcnVuaW5nX3N0ZXBzICE9IE5JTCkKKwkJCSpuZWVkc19leGVjX3BydW5p bmcgPSB0cnVlOworCiAJCXBpbmZvbGlzdCA9IGxhcHBlbmQocGluZm9saXN0LCBwaW5mbyk7CiAJ fQogCkBAIC02NDcsNiArNjc4LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJaW50CQkgICAqc3VicGxh bl9tYXA7CiAJCWludAkJICAgKnN1YnBhcnRfbWFwOwogCQlPaWQJCSAgICpyZWxpZF9tYXA7CisJ CUluZGV4CSAgICpydGlfbWFwOwogCiAJCS8qCiAJCSAqIENvbnN0cnVjdCB0aGUgc3VicGxhbiBh bmQgc3VicGFydCBtYXBzIGZvciB0aGlzIHBhcnRpdGlvbmluZyBsZXZlbC4KQEAgLTY1OSw2ICs2 OTEsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlzdWJwYXJ0X21hcCA9IChpbnQgKikgcGFsbG9jKG5w YXJ0cyAqIHNpemVvZihpbnQpKTsKIAkJbWVtc2V0KHN1YnBhcnRfbWFwLCAtMSwgbnBhcnRzICog c2l6ZW9mKGludCkpOwogCQlyZWxpZF9tYXAgPSAoT2lkICopIHBhbGxvYzAobnBhcnRzICogc2l6 ZW9mKE9pZCkpOworCQlydGlfbWFwID0gKEluZGV4ICopIHBhbGxvYzAobnBhcnRzICogc2l6ZW9m KEluZGV4KSk7CiAJCXByZXNlbnRfcGFydHMgPSBOVUxMOwogCiAJCWkgPSAtMTsKQEAgLTY3Myw2 ICs3MDYsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJc3VicGxhbl9tYXBbaV0gPSBzdWJwbGFuaWR4 ID0gcmVsaWRfc3VicGxhbl9tYXBbcGFydHJlbC0+cmVsaWRdIC0gMTsKIAkJCXN1YnBhcnRfbWFw W2ldID0gc3VicGFydGlkeCA9IHJlbGlkX3N1YnBhcnRfbWFwW3BhcnRyZWwtPnJlbGlkXSAtIDE7 CiAJCQlyZWxpZF9tYXBbaV0gPSBwbGFubmVyX3J0X2ZldGNoKHBhcnRyZWwtPnJlbGlkLCByb290 KS0+cmVsaWQ7CisJCQlydGlfbWFwW2ldID0gcGFydHJlbC0+cmVsaWQ7CiAJCQlpZiAoc3VicGxh bmlkeCA+PSAwKQogCQkJewogCQkJCXByZXNlbnRfcGFydHMgPSBibXNfYWRkX21lbWJlcihwcmVz ZW50X3BhcnRzLCBpKTsKQEAgLTY5Nyw2ICs3MzEsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3By dW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlwaW5m by0+c3VicGxhbl9tYXAgPSBzdWJwbGFuX21hcDsKIAkJcGluZm8tPnN1YnBhcnRfbWFwID0gc3Vi cGFydF9tYXA7CiAJCXBpbmZvLT5yZWxpZF9tYXAgPSByZWxpZF9tYXA7CisJCXBpbmZvLT5ydGlf bWFwID0gcnRpX21hcDsKIAl9CiAKIAlwZnJlZShyZWxpZF9zdWJwYXJ0X21hcCk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMKaW5kZXggMzA4MjA5M2QxZS4uOTVhYjFkMGVlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAt MTU5OCw2ICsxNTk4LDcgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNz YWdlKQogCWludDE2CSAgICpyZm9ybWF0cyA9IE5VTEw7CiAJQ2FjaGVkUGxhblNvdXJjZSAqcHNy YzsKIAlDYWNoZWRQbGFuICpjcGxhbjsKKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlz dDsKIAlQb3J0YWwJCXBvcnRhbDsKIAljaGFyCSAgICpxdWVyeV9zdHJpbmc7CiAJY2hhcgkgICAq c2F2ZWRfc3RtdF9uYW1lOwpAQCAtMTk3Miw3ICsxOTczLDkgQEAgZXhlY19iaW5kX21lc3NhZ2Uo U3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCSAqIHdpbGwgYmUgZ2VuZXJhdGVkIGluIE1lc3Nh Z2VDb250ZXh0LiAgVGhlIHBsYW4gcmVmY291bnQgd2lsbCBiZQogCSAqIGFzc2lnbmVkIHRvIHRo ZSBQb3J0YWwsIHNvIGl0IHdpbGwgYmUgcmVsZWFzZWQgYXQgcG9ydGFsIGRlc3RydWN0aW9uLgog CSAqLwotCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwc3JjLCBwYXJhbXMsIE5VTEwsIE5VTEwpOwor CWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwc3JjLCBwYXJhbXMsIE5VTEwsIE5VTEwsICZwYXJ0X3By dW5lX3Jlc3VsdHNfbGlzdCk7CisJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3Qp ID09CisJCSAgIGxpc3RfbGVuZ3RoKHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KSk7CiAKIAkvKgog CSAqIE5vdyB3ZSBjYW4gZGVmaW5lIHRoZSBwb3J0YWwuCkBAIC0xOTg3LDYgKzE5OTAsOSBAQCBl eGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCQkJCSAgY3BsYW4t PnN0bXRfbGlzdCwKIAkJCQkJICBjcGxhbik7CiAKKwkvKiBDb3B5IExpc3RzIG9mIFBhcnRpdGlv blBydW5lUmVzdWx0cyBpbnRvIHRoZSBwb3J0YWwncyBjb250ZXh0LiAqLworCVBvcnRhbFN0b3Jl UGFydGl0aW9uUHJ1bmVSZXN1bHRzKHBvcnRhbCwgcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOwor CiAJLyogRG9uZSB3aXRoIHRoZSBzbmFwc2hvdCB1c2VkIGZvciBwYXJhbWV0ZXIgSS9PIGFuZCBw YXJzaW5nL3BsYW5uaW5nICovCiAJaWYgKHNuYXBzaG90X3NldCkKIAkJUG9wQWN0aXZlU25hcHNo b3QoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2Vu ZC90Y29wL3BxdWVyeS5jCmluZGV4IDUyZTJkYjY0NTIuLjI4MGVkN2QyMzkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnku YwpAQCAtMzUsNyArMzUsNyBAQAogUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxMOwogCiAKLXN0 YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKK3N0YXRpYyB2b2lkIFBy b2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwgTGlzdCAqcGFydF9wcnVuZV9yZXN1bHRzLAog CQkJCQkJIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkgUGFyYW1MaXN0SW5mbyBwYXJh bXMsCiAJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCkBAIC02NSw2ICs2NSw3IEBA IHN0YXRpYyB2b2lkIERvUG9ydGFsUmV3aW5kKFBvcnRhbCBwb3J0YWwpOwogICovCiBRdWVyeURl c2MgKgogQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQlMaXN0 ICpwYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkJY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQlT bmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApAQCAt NzcsNiArNzgsOCBAQCBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAog CiAJcWQtPm9wZXJhdGlvbiA9IHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZTsJLyogb3BlcmF0aW9u ICovCiAJcWQtPnBsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CS8qIHBsYW4gKi8KKwlxZC0+cGFy dF9wcnVuZV9yZXN1bHRzID0gcGFydF9wcnVuZV9yZXN1bHRzOyAvKiBFeGVjdXRvckRvSW5pdGlh bFBydW5pbmcoKQorCQkJCQkJCQkJCQkJICAqIG91dHB1dCBmb3IgcGxhbiAqLwogCXFkLT5zb3Vy Y2VUZXh0ID0gc291cmNlVGV4dDsJLyogcXVlcnkgdGV4dCAqLwogCXFkLT5zbmFwc2hvdCA9IFJl Z2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwkvKiBzbmFwc2hvdCAqLwogCS8qIFJJIGNoZWNrIHNu YXBzaG90ICovCkBAIC0xMjIsNiArMTI1LDcgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFk ZXNjKQogICoJCVBPUlRBTF9PTkVfUkVUVVJOSU5HLCBvciBQT1JUQUxfT05FX01PRF9XSVRIIHBv cnRhbAogICoKICAqCXBsYW46IHRoZSBwbGFuIHRyZWUgZm9yIHRoZSBxdWVyeQorICoJcGFydF9w cnVuZV9yZXN1bHRzOiBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSBvdXRwdXQgZm9yIHRoZSBQ bGFubmVkU3RtdAogICoJc291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeQog ICoJcGFyYW1zOiBhbnkgcGFyYW1ldGVycyBuZWVkZWQKICAqCWRlc3Q6IHdoZXJlIHRvIHNlbmQg cmVzdWx0cwpAQCAtMTM0LDYgKzEzOCw3IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVz YykKICAqLwogc3RhdGljIHZvaWQKIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKKwkJ CSBMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwK IAkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu diwKQEAgLTE0NSw3ICsxNTAsNyBAQCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJ LyoKIAkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYyBvYmplY3QKIAkgKi8KLQlxdWVyeURlc2MgPSBD cmVhdGVRdWVyeURlc2MocGxhbiwgc291cmNlVGV4dCwKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVy eURlc2MocGxhbiwgcGFydF9wcnVuZV9yZXN1bHRzLCBzb3VyY2VUZXh0LAogCQkJCQkJCQlHZXRB Y3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIHBhcmFtcywg cXVlcnlFbnYsIDApOwogCkBAIC00OTEsOCArNDk2LDEzIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBw b3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCS8qCiAJCQkJICogQ3JlYXRlIFF1ZXJ5 RGVzYyBpbiBwb3J0YWwncyBjb250ZXh0OyBmb3IgdGhlIG1vbWVudCwgc2V0CiAJCQkJICogdGhl IGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgorCQkJCSAqCisJCQkJICogVGhlcmUgaXMgbm8gUGFy dGl0aW9uUHJ1bmVSZXN1bHQgdW5sZXNzIHRoZSBQbGFubmVkU3RtdCBpcworCQkJCSAqIGZyb20g YSBDYWNoZWRQbGFuLgogCQkJCSAqLwogCQkJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhs aW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LCBwb3J0YWwtPnN0bXRzKSwKKwkJCQkJCQkJCQkJcG9y dGFsLT5wYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCA9PSBOSUwgPyBOSUwgOgorCQkJCQkJCQkJCQls aW5pdGlhbChwb3J0YWwtPnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KSwKIAkJCQkJCQkJCQkJcG9y dGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJ CQkJCQlJbnZhbGlkU25hcHNob3QsCkBAIC0xMjI1LDYgKzEyMzUsOCBAQCBQb3J0YWxSdW5NdWx0 aShQb3J0YWwgcG9ydGFsLAogCiAJCWlmIChwc3RtdC0+dXRpbGl0eVN0bXQgPT0gTlVMTCkKIAkJ eworCQkJTGlzdCAqcGFydF9wcnVuZV9yZXN1bHRzID0gTklMOworCiAJCQkvKgogCQkJICogcHJv Y2VzcyBhIHBsYW5uYWJsZSBxdWVyeS4KIAkJCSAqLwpAQCAtMTI3MSwxMCArMTI4MywxOCBAQCBQ b3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJZWxzZQogCQkJCVVwZGF0ZUFjdGl2ZVNu YXBzaG90Q29tbWFuZElkKCk7CiAKKwkJCS8qCisJCQkgKiBEZXRlcm1pbmUgaWYgdGhlcmUncyBh IGNvcnJlc3BvbmRpbmcgTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdAorCQkJICogZm9yIHRo aXMgUGxhbm5lZFN0bXQuCisJCQkgKi8KKwkJCWlmIChwb3J0YWwtPnBhcnRfcHJ1bmVfcmVzdWx0 c19saXN0ICE9IE5JTCkKKwkJCQlwYXJ0X3BydW5lX3Jlc3VsdHMgPSBsaXN0X250aChwb3J0YWwt PnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LAorCQkJCQkJCQkJCQkgIGZvcmVhY2hfY3VycmVudF9p bmRleChzdG10bGlzdF9pdGVtKSk7CisKIAkJCWlmIChwc3RtdC0+Y2FuU2V0VGFnKQogCQkJewog CQkJCS8qIHN0YXRlbWVudCBjYW4gc2V0IHRhZyBzdHJpbmcgKi8KLQkJCQlQcm9jZXNzUXVlcnko cHN0bXQsCisJCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkJ CQkJIHBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCiAJ CQkJCQkJIHBvcnRhbC0+cXVlcnlFbnYsCkBAIC0xMjgzLDcgKzEzMDMsNyBAQCBQb3J0YWxSdW5N dWx0aShQb3J0YWwgcG9ydGFsLAogCQkJZWxzZQogCQkJewogCQkJCS8qIHN0bXQgYWRkZWQgYnkg cmV3cml0ZSBjYW5ub3Qgc2V0IHRhZyAqLwotCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKKwkJCQlQ cm9jZXNzUXVlcnkocHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0cywKIAkJCQkJCQkgcG9ydGFsLT5z b3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFs LT5xdWVyeUVudiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNo ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggY2M5NDMyMDVk My4uYWY2ZmFlNmUzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNh Y2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTk5LDE0 ICs5OSwxOSBAQCBzdGF0aWMgZGxpc3RfaGVhZCBjYWNoZWRfZXhwcmVzc2lvbl9saXN0ID0gRExJ U1RfU1RBVElDX0lOSVQoY2FjaGVkX2V4cHJlc3Npb25fbAogc3RhdGljIHZvaWQgUmVsZWFzZUdl bmVyaWNQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIExpc3QgKlJl dmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJ CQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7Ci1zdGF0aWMgYm9vbCBDaGVja0NhY2hl ZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CitzdGF0aWMgYm9vbCBDaGVja0Nh Y2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3Vu ZFBhcmFtcywKKwkJCQkJCQlMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOwogc3RhdGlj IENhY2hlZFBsYW4gKkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl LCBMaXN0ICpxbGlzdCwKLQkJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5k UGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCQkJCQkJICAgTGlzdCAqKnBh cnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKIHN0YXRpYyBib29sIGNob29zZV9jdXN0b21fcGxhbihD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91 bmRQYXJhbXMpOwogc3RhdGljIGRvdWJsZSBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBs YW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKTsKIHN0YXRpYyBRdWVyeSAqUXVlcnlMaXN0R2V0UHJp bWFyeVN0bXQoTGlzdCAqc3RtdHMpOwotc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo TGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpOworc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1 dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAorCQkJ CQkJCQkgTGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LAorCQkJCQkJCQkgTGlzdCAqKmxv Y2tlZFJlbGlkc19wZXJfc3RtdCk7CitzdGF0aWMgdm9pZCBSZWxlYXNlRXhlY3V0b3JMb2NrcyhM aXN0ICpzdG10X2xpc3QsIExpc3QgKmxvY2tlZFJlbGlkc19wZXJfc3RtdCk7CiBzdGF0aWMgdm9p ZCBBY3F1aXJlUGxhbm5lckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKIHN0 YXRpYyB2b2lkIFNjYW5RdWVyeUZvckxvY2tzKFF1ZXJ5ICpwYXJzZXRyZWUsIGJvb2wgYWNxdWly ZSk7CiBzdGF0aWMgYm9vbCBTY2FuUXVlcnlXYWxrZXIoTm9kZSAqbm9kZSwgYm9vbCAqYWNxdWly ZSk7CkBAIC03ODIsNiArNzg3LDI2IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLAogCXJldHVybiB0bGlzdDsKIH0KIAorLyogCisgKiBGcmVlUGFy dGl0aW9uUHJ1bmVSZXN1bHRzCisgKgkJRnJlZXMgdGhlIExpc3Qgb2YgTGlzdHMgb2YgUGFydGl0 aW9uUHJ1bmVSZXN1bHRzIGZvciBDaGVja0NhY2hlZFBsYW4oKQorICovCitzdGF0aWMgdm9pZAor RnJlZVBhcnRpdGlvblBydW5lUmVzdWx0cyhMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCkK K3sKKwlMaXN0Q2VsbCAqbGM7CisKKwlmb3JlYWNoKGxjLCBwYXJ0X3BydW5lX3Jlc3VsdHNfbGlz dCkKKwl7CisJCUxpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0cyA9IGxmaXJzdChsYyk7CisKKwkJLyog RnJlZSBib3RoIHRoZSBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgYW5kIHRoZSBjb250YWluaW5nIExp c3QuICovCisJCWxpc3RfZnJlZV9kZWVwKHBhcnRfcHJ1bmVfcmVzdWx0cyk7CisJfQorCisJbGlz dF9mcmVlKHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKK30KKwogLyoKICAqIENoZWNrQ2FjaGVk UGxhbjogc2VlIGlmIHRoZSBDYWNoZWRQbGFuU291cmNlJ3MgZ2VuZXJpYyBwbGFuIGlzIHZhbGlk LgogICoKQEAgLTc5MCwxNSArODE1LDIwIEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLAogICoKICAqIE9uIGEgInRydWUiIHJldHVybiwgd2UgaGF2 ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVkIHRvIHJ1biB0aGUgcGxhbi4KICAqIChXZSBtdXN0 IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJhY2UtY29uZGl0aW9uLWZyZWUu KQorICoKKyAqIFNlZSBHZXRDYWNoZWRQbGFuKCkncyBjb21tZW50IGZvciBhIGRlc2NyaXB0aW9u IG9mIHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LgogICovCiBzdGF0aWMgYm9vbAotQ2hlY2tDYWNo ZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCitDaGVja0NhY2hlZFBsYW4oQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKKwkJ CQlMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpCiB7CiAJQ2FjaGVkUGxhbiAqcGxhbiA9 IHBsYW5zb3VyY2UtPmdwbGFuOwogCiAJLyogQXNzZXJ0IHRoYXQgY2FsbGVyIGNoZWNrZWQgdGhl IHF1ZXJ5dHJlZSAqLwogCUFzc2VydChwbGFuc291cmNlLT5pc192YWxpZCk7CiAKKwkqcGFydF9w cnVuZV9yZXN1bHRzX2xpc3QgPSBOSUw7CisKIAkvKiBJZiB0aGVyZSdzIG5vIGdlbmVyaWMgcGxh biwganVzdCBzYXkgImZhbHNlIiAqLwogCWlmICghcGxhbikKIAkJcmV0dXJuIGZhbHNlOwpAQCAt ODIwLDEzICs4NTAsMjEgQEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UpCiAJICovCiAJaWYgKHBsYW4tPmlzX3ZhbGlkKQogCXsKKwkJTGlzdCAgICpsb2NrZWRS ZWxpZHNfcGVyX3N0bXQ7CisKIAkJLyoKIAkJICogUGxhbiBtdXN0IGhhdmUgcG9zaXRpdmUgcmVm Y291bnQgYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGJ5CiAJCSAqIHBsYW5zb3VyY2U7IHNvIG5v IG5lZWQgdG8gZmVhciBpdCBkaXNhcHBlYXJzIHVuZGVyIHVzIGhlcmUuCiAJCSAqLwogCQlBc3Nl cnQocGxhbi0+cmVmY291bnQgPiAwKTsKIAotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5z dG10X2xpc3QsIHRydWUpOworCQkvKgorCQkgKiBMb2NrIHJlbGF0aW9ucyBzY2FubmVkIGJ5IHRo ZSBwbGFuLiAgVGhpcyBpcyB3aGVyZSB0aGUgcHJ1bmluZworCQkgKiBoYXBwZW5zIGlmIG5lZWRl ZC4KKwkJICovCisJCUFjcXVpcmVFeGVjdXRvckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgYm91bmRQ YXJhbXMsCisJCQkJCQkJIHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LAorCQkJCQkJCSAmbG9ja2Vk UmVsaWRzX3Blcl9zdG10KTsKIAogCQkvKgogCQkgKiBJZiBwbGFuIHdhcyB0cmFuc2llbnQsIGNo ZWNrIHRvIHNlZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCkBAIC04NDgsNyArODg2LDExIEBAIENo ZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCQl9CiAKIAkJLyog T29wcywgdGhlIHJhY2UgY2FzZSBoYXBwZW5lZC4gIFJlbGVhc2UgdXNlbGVzcyBsb2Nrcy4gKi8K LQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBmYWxzZSk7CisJCVJlbGVh c2VFeGVjdXRvckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgbG9ja2VkUmVsaWRzX3Blcl9zdG10KTsK KworCQkvKiBSZWxlYXNlIGFueSBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgdGhhdCBtYXkgYmVlbiBj cmVhdGVkLiAqLworCQlGcmVlUGFydGl0aW9uUHJ1bmVSZXN1bHRzKCpwYXJ0X3BydW5lX3Jlc3Vs dHNfbGlzdCk7CisJCSpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCA9IE5JTDsKIAl9CiAKIAkvKgpA QCAtODc0LDEwICs5MTYsMTQgQEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UpCiAgKiBQbGFubmluZyB3b3JrIGlzIGRvbmUgaW4gdGhlIGNhbGxlcidzIG1lbW9y eSBjb250ZXh0LiAgVGhlIGZpbmlzaGVkIHBsYW4KICAqIGlzIGluIGEgY2hpbGQgbWVtb3J5IGNv bnRleHQsIHdoaWNoIHR5cGljYWxseSBzaG91bGQgZ2V0IHJlcGFyZW50ZWQKICAqICh1bmxlc3Mg dGhpcyBpcyBhIG9uZS1zaG90IHBsYW4sIGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3QgY29weSB0aGUg cGxhbikuCisgKgorICogQSBsaXN0IG9mIE5JTHMgaXMgcmV0dXJuZWQgaW4gKnBhcnRfcHJ1bmVf cmVzdWx0c19saXN0LCBtZWFuaW5nIHRoYXQgbm8KKyAqIG5vIHBhcnRpdGlvbiBwcnVuaW5nIGhh cyBiZWVuIGRvbmUgeWV0IGZvciB0aGUgcGxhbnMgaW4gc3RtdF9saXN0LgogICovCiBzdGF0aWMg Q2FjaGVkUGxhbiAqCiBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZSwgTGlzdCAqcWxpc3QsCi0JCQkJUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYpCisJCQkJUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkJTGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0 KQogewogCUNhY2hlZFBsYW4gKnBsYW47CiAJTGlzdAkgICAqcGxpc3Q7CkBAIC0xMDA3LDYgKzEw NTMsMTcgQEAgQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExp c3QgKnFsaXN0LAogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiAKKwkvKgorCSAq IE5vIGFjdHVhbCBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgeWV0IHRvIGFkZCwgdGhvdWdoIG11c3Qg aW5pdGlhbGl6ZQorCSAqIHRoZSBsaXN0IHRvIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1l bnRzIGFzIHRoZSBsaXN0IG9mCisJICogUGxhbm5lZFN0bXRzLgorCSAqLworCSpwYXJ0X3BydW5l X3Jlc3VsdHNfbGlzdCA9IE5JTDsKKwlmb3JlYWNoKGxjLCBwbGlzdCkKKwl7CisJCSpwYXJ0X3By dW5lX3Jlc3VsdHNfbGlzdCA9IGxhcHBlbmQoKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LCBOSUwp OworCX0KKwogCXJldHVybiBwbGFuOwogfQogCkBAIC0xMTI2LDYgKzExODMsMTkgQEAgY2FjaGVk X3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIHBs YW4gb3IgYSBjdXN0b20gcGxhbiBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIg ZG9lcyBub3Qga25vdwogICogd2hpY2ggaXQgd2lsbCBnZXQuCiAgKgorICogRm9yIGV2ZXJ5IFBs YW5uZWRTdG10IGZvdW5kIGluIHRoZSByZXR1cm5lZCBDYWNoZWRQbGFuLCBhbiBlbGVtZW50IHRo YXQKKyAqIGlzIGVpdGhlciBhIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVSZXN1bHQgb3IgYSBOSUwg aXMgYWRkZWQgdG8KKyAqICpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdC4gIFRoZSBmb3JtZXIgaWYg dGhlIFBsYW5uZWRTdG10IGlzIGZyb20KKyAqIHRoZSBleGlzdGluZyBDYWNoZWRQbGFuIHRoYXQg aXMgb3RoZXJ3aXNlIHZhbGlkIGFuZCBoYXMKKyAqIGNvbnRhaW5zSW5pdGlhbFBydW5pbmcgc2V0 IHRvIHRydWUuICBCZWZvcmUgcmV0dXJuaW5nIHN1Y2ggYSBDYWNoZWRQbGFuLAorICogdGhvc2Ug ImluaXRpYWwiIHN0ZXBzIGFyZSBwZXJmb3JtZWQgYnkgY2FsbGluZyBFeGVjdXRvckRvSW5pdGlh bFBydW5pbmcoKQorICogdG8gZGV0ZXJtaW5lIG9ubHkgdGhvc2UgbGVhZiBwYXJ0aXRpb25zIHRo YXQgbmVlZCB0byBiZSBsb2NrZWQgYnkKKyAqIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgYnkgcHJ1 bmluZyBhd2F5IHN1YnBsYW5zIHRoYXQgZG9uJ3QgbWF0Y2ggdGhlCisgKiAiaW5pdGlhbCIgcHJ1 bmluZyBjb25kaXRpb25zLiAgRm9yIGVhY2ggUGFydGl0aW9uUHJ1bmVJbmZvIGZvdW5kIGluCisg KiBQbGFubmVkU3RtdC5wYXJ0UHJ1bmVJbmZvcywgYSBQYXJ0aXRpb25QcnVuZVJlc3VsdCBjb250 YWluaW5nIHRoZSBiaXRtYXBzZXQKKyAqIG9mIHRoZSBpbmRleGVzIG9mIHN1cnZpdmluZyBzdWJw bGFucyBpcyBhZGRlZCB0byB0aGUgTGlzdCBmb3IgdGhlCisgKiBQbGFubmVkU3RtdC4KKyAqCiAg KiBPbiByZXR1cm4sIHRoZSBwbGFuIGlzIHZhbGlkIGFuZCB3ZSBoYXZlIHN1ZmZpY2llbnQgbG9j a3MgdG8gYmVnaW4KICAqIGV4ZWN1dGlvbi4KICAqCkBAIC0xMTM5LDExICsxMjA5LDEzIEBAIGNh Y2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpCiAg Ki8KIENhY2hlZFBsYW4gKgogR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAotCQkJICBSZXNvdXJjZU93bmVyIG93bmVy LCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKKwkJCSAgUmVzb3VyY2VPd25lciBvd25lciwg UXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkgIExpc3QgKipwYXJ0X3BydW5lX3Jlc3Vs dHNfbGlzdCkKIHsKIAlDYWNoZWRQbGFuICpwbGFuID0gTlVMTDsKIAlMaXN0CSAgICpxbGlzdDsK IAlib29sCQljdXN0b21wbGFuOworCUxpc3QJICAgKm15X3BhcnRfcHJ1bmVfcmVzdWx0c19saXN0 OwogCiAJLyogQXNzZXJ0IGNhbGxlciBpcyBkb2luZyB0aGluZ3MgaW4gYSBzYW5lIG9yZGVyICov CiAJQXNzZXJ0KHBsYW5zb3VyY2UtPm1hZ2ljID09IENBQ0hFRFBMQU5TT1VSQ0VfTUFHSUMpOwpA QCAtMTE2MCw3ICsxMjMyLDggQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCiAJaWYgKCFjdXN0b21wbGFuKQog CXsKLQkJaWYgKENoZWNrQ2FjaGVkUGxhbihwbGFuc291cmNlKSkKKwkJaWYgKENoZWNrQ2FjaGVk UGxhbihwbGFuc291cmNlLCBib3VuZFBhcmFtcywKKwkJCQkJCQkmbXlfcGFydF9wcnVuZV9yZXN1 bHRzX2xpc3QpKQogCQl7CiAJCQkvKiBXZSB3YW50IGEgZ2VuZXJpYyBwbGFuLCBhbmQgd2UgYWxy ZWFkeSBoYXZlIGEgdmFsaWQgb25lICovCiAJCQlwbGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47CkBA IC0xMTY5LDcgKzEyNDIsOCBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCWVsc2UKIAkJewogCQkJLyogQnVp bGQgYSBuZXcgZ2VuZXJpYyBwbGFuICovCi0JCQlwbGFuID0gQnVpbGRDYWNoZWRQbGFuKHBsYW5z b3VyY2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudik7CisJCQlwbGFuID0gQnVpbGRDYWNoZWRQbGFu KHBsYW5zb3VyY2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudiwKKwkJCQkJCQkJICAgJm15X3BhcnRf cHJ1bmVfcmVzdWx0c19saXN0KTsKIAkJCS8qIEp1c3QgbWFrZSByZWFsIHN1cmUgcGxhbnNvdXJj ZS0+Z3BsYW4gaXMgY2xlYXIgKi8KIAkJCVJlbGVhc2VHZW5lcmljUGxhbihwbGFuc291cmNlKTsK IAkJCS8qIExpbmsgdGhlIG5ldyBnZW5lcmljIHBsYW4gaW50byB0aGUgcGxhbnNvdXJjZSAqLwpA QCAtMTIxNCw3ICsxMjg4LDggQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCWlmIChjdXN0b21wbGFuKQogCXsK IAkJLyogQnVpbGQgYSBjdXN0b20gcGxhbiAqLwotCQlwbGFuID0gQnVpbGRDYWNoZWRQbGFuKHBs YW5zb3VyY2UsIHFsaXN0LCBib3VuZFBhcmFtcywgcXVlcnlFbnYpOworCQlwbGFuID0gQnVpbGRD YWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBib3VuZFBhcmFtcywgcXVlcnlFbnYsCisJCQkJ CQkJICAgJm15X3BhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKIAkJLyogQWNjdW11bGF0ZSB0b3Rh bCBjb3N0cyBvZiBjdXN0b20gcGxhbnMgKi8KIAkJcGxhbnNvdXJjZS0+dG90YWxfY3VzdG9tX2Nv c3QgKz0gY2FjaGVkX3BsYW5fY29zdChwbGFuLCB0cnVlKTsKIApAQCAtMTI0Niw2ICsxMzIxLDkg QEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJ bmZvIGJvdW5kUGFyYW1zLAogCQlwbGFuLT5pc19zYXZlZCA9IHRydWU7CiAJfQogCisJaWYgKHBh cnRfcHJ1bmVfcmVzdWx0c19saXN0KQorCQkqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QgPSBteV9w YXJ0X3BydW5lX3Jlc3VsdHNfbGlzdDsKKwogCXJldHVybiBwbGFuOwogfQogCkBAIC0xNzM3LDE3 ICsxODE1LDI5IEBAIFF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRzKQogCiAvKgog ICogQWNxdWlyZUV4ZWN1dG9yTG9ja3M6IGFjcXVpcmUgbG9ja3MgbmVlZGVkIGZvciBleGVjdXRp b24gb2YgYSBjYWNoZWQgcGxhbjsKLSAqIG9yIHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZh bHNlLgorICoKKyAqIFNlZSBHZXRDYWNoZWRQbGFuKCkncyBjb21tZW50IGZvciBhIGRlc2NyaXB0 aW9uIG9mIHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LgorICoKKyAqIE9uIHJldHVybiwgKmxvY2tl ZFJlbGlkc19wZXJfc3RtdCB3aWxsIGNvbnRhaW4gYSBiaXRtYXBzZXQgZm9yIGV2ZXJ5CisgKiBQ bGFubmVkU3RtdCBpbiBzdG10X2xpc3QsIGNvbnRhaW5pbmcgdGhlIFJUIGluZGV4ZXMgb2YgcmVs YXRpb24gZW50cmllcworICogaW4gaXRzIHJhbmdlIHRhYmxlIHRoYXQgd2VyZSBhY3R1YWxseSBs b2NrZWQsIG9yIE5VTEwgaWYgdGhlIFBsYW5uZWRTdG10CisgKiBjb250YWlucyBhIHV0aWxpdHkg c3RhdGVtZW50LgogICovCiBzdGF0aWMgdm9pZAotQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAq c3RtdF9saXN0LCBib29sIGFjcXVpcmUpCitBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10 X2xpc3QsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCisJCQkJCSBMaXN0ICoqcGFydF9wcnVu ZV9yZXN1bHRzX2xpc3QsCisJCQkJCSBMaXN0ICoqbG9ja2VkUmVsaWRzX3Blcl9zdG10KQogewog CUxpc3RDZWxsICAgKmxjMTsKIAorCSpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCA9ICpsb2NrZWRS ZWxpZHNfcGVyX3N0bXQgPSBOSUw7CiAJZm9yZWFjaChsYzEsIHN0bXRfbGlzdCkKIAl7CiAJCVBs YW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYzEpOwot CQlMaXN0Q2VsbCAgICpsYzI7CisJCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0cyA9IE5JTDsK KwkJQml0bWFwc2V0ICAqYWxsTG9ja1JlbGlkczsKKwkJQml0bWFwc2V0ICAqbG9ja2VkUmVsaWRz ID0gTlVMTDsKKwkJaW50CQkJcnRpOwogCiAJCWlmIChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUg PT0gQ01EX1VUSUxJVFkpCiAJCXsKQEAgLTE3NjEsMTMgKzE4NTEsNDAgQEAgQWNxdWlyZUV4ZWN1 dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAJCQlRdWVyeQkgICAqcXVl cnkgPSBVdGlsaXR5Q29udGFpbnNRdWVyeShwbGFubmVkc3RtdC0+dXRpbGl0eVN0bXQpOwogCiAJ CQlpZiAocXVlcnkpCi0JCQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnksIGFjcXVpcmUpOworCQkJ CVNjYW5RdWVyeUZvckxvY2tzKHF1ZXJ5LCB0cnVlKTsKKwkJCSpwYXJ0X3BydW5lX3Jlc3VsdHNf bGlzdCA9IGxhcHBlbmQoKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LCBOSUwpOwogCQkJY29udGlu dWU7CiAJCX0KIAotCQlmb3JlYWNoKGxjMiwgcGxhbm5lZHN0bXQtPnJ0YWJsZSkKKwkJLyoKKwkJ ICogRmlndXJlIG91dCB0aGUgc2V0IG9mIHJlbGF0aW9ucyB0aGF0IHdvdWxkIG5lZWQgdG8gYmUg bG9ja2VkCisJCSAqIGJlZm9yZSBleGVjdXRpbmcgdGhlIHBsYW4uCisJCSAqLworCQlpZiAocGxh bm5lZHN0bXQtPmNvbnRhaW5zSW5pdGlhbFBydW5pbmcpCiAJCXsKLQkJCVJhbmdlVGJsRW50cnkg KnJ0ZSA9IChSYW5nZVRibEVudHJ5ICopIGxmaXJzdChsYzIpOworCQkJQml0bWFwc2V0ICpzY2Fu X2xlYWZwYXJ0X3J0aXMgPSBOVUxMOworCisJCQkvKgorCQkJICogT2J0YWluIHRoZSBzZXQgb2Yg bGVhZiBwYXJ0aXRpb25zIHRvIGJlIGxvY2tlZC4KKwkJCSAqCisJCQkgKiBUaGUgZm9sbG93aW5n IGRvZXMgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmluZyB1c2luZyB0aGUKKwkJCSAqIFBhcnRpdGlv blBydW5lSW5mb3MgZm91bmQgaW4gcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zIGFuZAorCQkJ ICogZmluZHMgbGVhZiBwYXJ0aXRpb25zIHRoYXQgc3Vydml2ZSB0aGF0IHBydW5pbmcgYWNyb3Nz IGFsbCB0aGUKKwkJCSAqIG5vZGVzIGluIHRoZSBwbGFuIHRyZWUuCisJCQkgKi8KKwkJCXBhcnRf cHJ1bmVfcmVzdWx0cyA9IEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZyhwbGFubmVkc3RtdCwKKwkJ CQkJCQkJCQkJCQkJICBib3VuZFBhcmFtcywKKwkJCQkJCQkJCQkJCQkJICAmc2Nhbl9sZWFmcGFy dF9ydGlzKTsKKwkJCWFsbExvY2tSZWxpZHMgPSBibXNfdW5pb24ocGxhbm5lZHN0bXQtPm1pbkxv Y2tSZWxpZHMsCisJCQkJCQkJCQkgIHNjYW5fbGVhZnBhcnRfcnRpcyk7CisJCX0KKwkJZWxzZQor CQkJYWxsTG9ja1JlbGlkcyA9IHBsYW5uZWRzdG10LT5taW5Mb2NrUmVsaWRzOworCisJCXJ0aSA9 IC0xOworCQl3aGlsZSAoKHJ0aSA9IGJtc19uZXh0X21lbWJlcihhbGxMb2NrUmVsaWRzLCBydGkp KSA+IDApCisJCXsKKwkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IHJ0X2ZldGNoKHJ0aSwgcGxhbm5l ZHN0bXQtPnJ0YWJsZSk7CiAKIAkJCWlmIChydGUtPnJ0ZWtpbmQgIT0gUlRFX1JFTEFUSU9OKQog CQkJCWNvbnRpbnVlOwpAQCAtMTc3OCwxMCArMTg5NSw1OSBAQCBBY3F1aXJlRXhlY3V0b3JMb2Nr cyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKIAkJCSAqIGZhaWwgaWYgaXQncyBiZWVu IGRyb3BwZWQgZW50aXJlbHkgLS0tIHdlJ2xsIGp1c3QgdHJhbnNpZW50bHkKIAkJCSAqIGFjcXVp cmUgYSBub24tY29uZmxpY3RpbmcgbG9jay4KIAkJCSAqLwotCQkJaWYgKGFjcXVpcmUpCi0JCQkJ TG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOwotCQkJZWxzZQot CQkJCVVubG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJ TG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJbG9ja2Vk UmVsaWRzID0gYm1zX2FkZF9tZW1iZXIobG9ja2VkUmVsaWRzLCBydGkpOworCQl9CisKKwkJKnBh cnRfcHJ1bmVfcmVzdWx0c19saXN0ID0gbGFwcGVuZCgqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3Qs CisJCQkJCQkJCQkJICAgcGFydF9wcnVuZV9yZXN1bHRzKTsKKwkJKmxvY2tlZFJlbGlkc19wZXJf c3RtdCA9IGxhcHBlbmQoKmxvY2tlZFJlbGlkc19wZXJfc3RtdCwgbG9ja2VkUmVsaWRzKTsKKwl9 Cit9CisKKy8qCisgKiBSZWxlYXNlRXhlY3V0b3JMb2NrcworICogCQlSZWxlYXNlIGxvY2tzIHRo YXQgd291bGQndmUgYmVlbiBhY3F1aXJlZCBieSBhbiBlYXJsaWVyIGNhbGwgdG8KKyAqIAkJQWNx dWlyZUV4ZWN1dG9yTG9ja3MoKQorICovCitzdGF0aWMgdm9pZAorUmVsZWFzZUV4ZWN1dG9yTG9j a3MoTGlzdCAqc3RtdF9saXN0LCBMaXN0ICpsb2NrZWRSZWxpZHNfcGVyX3N0bXQpCit7CisJTGlz dENlbGwgICAqbGMxLAorCQkJICAgKmxjMjsKKworCWZvcmJvdGgobGMxLCBzdG10X2xpc3QsIGxj MiwgbG9ja2VkUmVsaWRzX3Blcl9zdG10KQorCXsKKwkJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10 ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7CisJCUJpdG1hcHNldCAgKmxvY2tlZFJl bGlkcyA9IGxmaXJzdChsYzIpOworCQlpbnQJCQlydGk7CisKKwkJaWYgKHBsYW5uZWRzdG10LT5j b21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKKwkJeworCQkJLyoKKwkJCSAqIElnbm9yZSB1dGls aXR5IHN0YXRlbWVudHMsIGV4Y2VwdCB0aG9zZSAoc3VjaCBhcyBFWFBMQUlOKSB0aGF0CisJCQkg KiBjb250YWluIGEgcGFyc2VkLWJ1dC1ub3QtcGxhbm5lZCBxdWVyeS4gIE5vdGU6IGl0J3Mgb2th eSB0byB1c2UKKwkJCSAqIFNjYW5RdWVyeUZvckxvY2tzLCBldmVuIHRob3VnaCB0aGUgcXVlcnkg aGFzbid0IGJlZW4gdGhyb3VnaAorCQkJICogcnVsZSByZXdyaXRpbmcsIGJlY2F1c2UgcmV3cml0 aW5nIGRvZXNuJ3QgY2hhbmdlIHRoZSBxdWVyeQorCQkJICogcmVwcmVzZW50YXRpb24uCisJCQkg Ki8KKwkJCVF1ZXJ5CSAgICpxdWVyeSA9IFV0aWxpdHlDb250YWluc1F1ZXJ5KHBsYW5uZWRzdG10 LT51dGlsaXR5U3RtdCk7CisKKwkJCUFzc2VydChsb2NrZWRSZWxpZHMgPT0gTlVMTCk7CisJCQlp ZiAocXVlcnkpCisJCQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnksIGZhbHNlKTsKKwkJCWNvbnRp bnVlOworCQl9CisKKwkJcnRpID0gLTE7CisJCXdoaWxlICgocnRpID0gYm1zX25leHRfbWVtYmVy KGxvY2tlZFJlbGlkcywgcnRpKSkgPj0gMCkKKwkJeworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0g cnRfZmV0Y2gocnRpLCBwbGFubmVkc3RtdC0+cnRhYmxlKTsKKworCQkJQXNzZXJ0KHJ0ZS0+cnRl a2luZCA9PSBSVEVfUkVMQVRJT04pOworCisJCQkvKiBTZWUgdGhlIGNvbW1lbnQgaW4gQWNxdWly ZUV4ZWN1dG9yTG9ja3MoKS4gKi8KKwkJCVVubG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0 ZS0+cmVsbG9ja21vZGUpOwogCQl9CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvbW1nci9wb3J0YWxtZW0uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMK aW5kZXggN2IxYWU2ZmRjZi4uNWI5MDk4OTcxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvbW1nci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1l bS5jCkBAIC0zMDMsNiArMzAzLDI1IEBAIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWws CiAJcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfREVGSU5FRDsKIH0KIAorLyoKKyAqIFBvcnRhbFN0 b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzCisgKgkJQ29weSB0aGUgZ2l2ZW4gTGlzdCBvZiBMaXN0 cyBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgaW50byB0aGUKKyAqCQlwb3J0YWwncyBjb250ZXh0 CisgKgorICogVGhpcyBhbGxvd3MgdGhlIGNhbGxlciB0byBlbnN1cmUgdGhhdCB0aGUgbGlzdCBl eGlzdHMgYXMgbG9uZyBhcyB0aGUgcG9ydGFsCisgKiBkb2VzLgorICovCit2b2lkCitQb3J0YWxT dG9yZVBhcnRpdGlvblBydW5lUmVzdWx0cyhQb3J0YWwgcG9ydGFsLCBMaXN0ICpwYXJ0X3BydW5l X3Jlc3VsdHNfbGlzdCkKK3sKKwlNZW1vcnlDb250ZXh0CW9sZGN4dDsKKworCUFzc2VydChQb3J0 YWxJc1ZhbGlkKHBvcnRhbCkpOworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwb3J0 YWwtPnBvcnRhbENvbnRleHQpOworCXBvcnRhbC0+cGFydF9wcnVuZV9yZXN1bHRzX2xpc3QgPSBj b3B5T2JqZWN0KHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKKwlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY3h0KTsKK30KKwogLyoKICAqIFBvcnRhbFJlbGVhc2VDYWNoZWRQbGFuCiAgKgkJUmVs ZWFzZSBhIHBvcnRhbCdzIHJlZmVyZW5jZSB0byBpdHMgY2FjaGVkIHBsYW4sIGlmIGFueS4KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2V4cGxhaW4uaAppbmRleCA5ZWJkZTA4OWFlLi4yNjljYzRkNTYyIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvZXhwbGFpbi5oCkBAIC04Nyw3ICs4Nyw5IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVVdGls aXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJCSAgRXhwbGFp blN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJICBQYXJhbUxpc3RJ bmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogCi1leHRlcm4gdm9pZCBF eHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8s CitleHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJ CQkJCQkgICBMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHMsCisJCQkJCQkgICBJbnRvQ2xhdXNlICpp bnRvLAogCQkJCQkJICAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcs CiAJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlF bnYsCiAJCQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggYi9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggMTdmYWJjMThjOS4uNGI5OGQwZDJlZiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCisrKyBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaApAQCAtNDUsNiArNDUsNyBAQCBleHRlcm4gdm9p ZCBFeGVjQ2xlYW51cFR1cGxlUm91dGluZyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogICog bnBhcnRzCQkJCQkJTGVuZ3RoIG9mIHN1YnBsYW5fbWFwW10gYW5kIHN1YnBhcnRfbWFwW10uCiAg KiBzdWJwbGFuX21hcAkJCQkJU3VicGxhbiBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0x LgogICogc3VicGFydF9tYXAJCQkJCVN1YnBhcnQgaW5kZXggYnkgcGFydGl0aW9uIGluZGV4LCBv ciAtMS4KKyAqIHJ0aV9tYXAJCQkJCQlSYW5nZSB0YWJsZSBpbmRleCBieSBwYXJ0aXRpb24gaW5k ZXgsIG9yIDAuCiAgKiBwcmVzZW50X3BhcnRzCQkJCUEgQml0bWFwc2V0IG9mIHRoZSBwYXJ0aXRp b24gaW5kZXhlcyB0aGF0IHdlCiAgKgkJCQkJCQkJaGF2ZSBzdWJwbGFucyBvciBzdWJwYXJ0cyBm b3IuCiAgKiBpbml0aWFsX3BydW5pbmdfc3RlcHMJCUxpc3Qgb2YgUGFydGl0aW9uUHJ1bmVTdGVw cyB1c2VkIHRvCkBAIC02MSw2ICs2Miw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbmVkUmVs UHJ1bmluZ0RhdGEKIAlpbnQJCQlucGFydHM7CiAJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJaW50 CQkgICAqc3VicGFydF9tYXA7CisJSW5kZXgJICAgKnJ0aV9tYXA7CiAJQml0bWFwc2V0ICAqcHJl c2VudF9wYXJ0czsKIAlMaXN0CSAgICppbml0aWFsX3BydW5pbmdfc3RlcHM7CiAJTGlzdAkgICAq ZXhlY19wcnVuaW5nX3N0ZXBzOwpAQCAtMTI3LDUgKzEyOSwxMCBAQCBleHRlcm4gUGFydGl0aW9u UHJ1bmVTdGF0ZSAqRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRl LAogCQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQgKnJvb3RfcGFyZW50X3JlbGlkcywKIAkJCQkJCQkJ CQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKTsKIGV4dGVybiBCaXRt YXBzZXQgKkV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVu ZXN0YXRlLAotCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSk7CisJCQkJCQkJCQkJICAg Ym9vbCBpbml0aWFsX3BydW5lLAorCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnNjYW5fbGVhZnBh cnRfcnRpcyk7CitleHRlcm4gQml0bWFwc2V0ICpFeGVjUGFydGl0aW9uRG9Jbml0aWFsUHJ1bmlu ZyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCVBhcmFtTGlzdEluZm8gcGFyYW1z LAorCQkJCQkJCQlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKKwkJCQkJCQkJQml0bWFw c2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKTsKICNlbmRpZgkJCQkJCQkvKiBFWEVDUEFSVElUSU9O X0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCmluZGV4IGU3OWUyYzAwMWYuLjdkNDM3OWRhN2Ig MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaApAQCAtMzUsNiArMzUsOCBAQCB0eXBlZGVmIHN0cnVj dCBRdWVyeURlc2MKIAkvKiBUaGVzZSBmaWVsZHMgYXJlIHByb3ZpZGVkIGJ5IENyZWF0ZVF1ZXJ5 RGVzYyAqLwogCUNtZFR5cGUJCW9wZXJhdGlvbjsJCS8qIENNRF9TRUxFQ1QsIENNRF9VUERBVEUs IGV0Yy4gKi8KIAlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQ7CS8qIHBsYW5uZXIncyBvdXRwdXQg KGNvdWxkIGJlIHV0aWxpdHksIHRvbykgKi8KKwlMaXN0CQkqcGFydF9wcnVuZV9yZXN1bHRzOyAv KiBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSdzCisJCQkJCQkJCQkgICogb3V0cHV0IGZvciBw bGFubmVkc3RtdCAqLwogCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBv ZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hvdAlzbmFwc2hvdDsJCS8qIHNuYXBzaG90IHRvIHVzZSBm b3IgcXVlcnkgKi8KIAlTbmFwc2hvdAljcm9zc2NoZWNrX3NuYXBzaG90OwkvKiBjcm9zc2NoZWNr IGZvciBSSSB1cGRhdGUvZGVsZXRlICovCkBAIC01Nyw2ICs1OSw3IEBAIHR5cGVkZWYgc3RydWN0 IFF1ZXJ5RGVzYwogCiAvKiBpbiBwcXVlcnkuYyAqLwogZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRl UXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJICBMaXN0ICpwYXJ0 X3BydW5lX3Jlc3VsdHMsCiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJ CQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3Nu YXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggZWQ5NWVkMTE3Ni4uYzlhNWU1ZmI2 OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xODUsNiArMTg1LDkgQEAgRXhlY0dldEp1 bmtBdHRyaWJ1dGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEF0dHJOdW1iZXIgYXR0bm8sIGJvb2wg KmlzTnVsbCkKIC8qCiAgKiBwcm90b3R5cGVzIGZyb20gZnVuY3Rpb25zIGluIGV4ZWNNYWluLmMK ICAqLworZXh0ZXJuIExpc3QgKkV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZyhQbGFubmVkU3RtdCAq cGxhbm5lZHN0bXQsCisJCQkJCQkJCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zLAorCQkJCQkJCQkJ ICBCaXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpOwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JT dGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBzdGFu ZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4 dGVybiB2b2lkIEV4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaAppbmRleCBhMjAwODg0NmM2Li4zNjlkZTQyY2FmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApA QCAtNjE1LDYgKzYxNSw3IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJCSAqIEV4 ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRz dG10OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KIAlMaXN0CQkqZXNfcGFydF9wcnVu ZV9pbmZvczsJLyogUGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3MgKi8KKwlMaXN0CQkqZXNfcGFy dF9wcnVuZV9yZXN1bHRzOyAvKiBRdWVyeURlc2MucGFydF9wcnVuZV9yZXN1bHRzICovCiAJY29u c3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQgZnJvbSBRdWVyeURlc2MgKi8K IAogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZpbHRlciwg aWYgYW55ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCBhODBmNDNlNTQwLi45MzdjYzQ2MjlkIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL25v ZGVzLmgKQEAgLTIxMiw2ICsyMTIsNyBAQCBleHRlcm4gc3RydWN0IEJpdG1hcHNldCAqcmVhZEJp dG1hcHNldCh2b2lkKTsKIGV4dGVybiB1aW50cHRyX3QgcmVhZERhdHVtKGJvb2wgdHlwYnl2YWwp OwogZXh0ZXJuIGJvb2wgKnJlYWRCb29sQ29scyhpbnQgbnVtQ29scyk7CiBleHRlcm4gaW50ICpy ZWFkSW50Q29scyhpbnQgbnVtQ29scyk7CitleHRlcm4gSW5kZXggKnJlYWRJbmRleENvbHMoaW50 IG51bUNvbHMpOwogZXh0ZXJuIE9pZCAqcmVhZE9pZENvbHMoaW50IG51bUNvbHMpOwogZXh0ZXJu IGludDE2ICpyZWFkQXR0ck51bWJlckNvbHMoaW50IG51bUNvbHMpOwogCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rl cy5oCmluZGV4IGRkNGViODY3OWQuLjM2YWJlNGNmOWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBA IC0xMjUsNiArMTI1LDE4IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwKIAkvKiBMaXN0 IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWluZWQgaW4gdGhlIHBsYW4gKi8KIAlMaXN0CSAg ICpwYXJ0UHJ1bmVJbmZvczsKIAorCS8qCisJICogRG8gYW55IG9mIHRob3NlIFBhcnRpdGlvblBy dW5lSW5mb3MgaGF2ZSBpbml0aWFsIHBydW5pbmcgc3RlcHMgaW4gdGhlbT8KKwkgKi8KKwlib29s CQljb250YWluc0luaXRpYWxQcnVuaW5nOworCisJLyoKKwkgKiBJbmRleGVzIG9mIGFsbCByYW5n ZSB0YWJsZSBlbnRyaWVzIG1pbnVzIGluZGV4ZXMgb2YgcmFuZ2UgdGFibGUgZW50cmllcworCSAq IG9mIHRoZSBsZWFmIHBhcnRpdGlvbnMgc2Nhbm5lZCBieSBwcnVuYWJsZSBzdWJwbGFuczsgc2Vl CisJICogQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKQorCSAqLworCUJpdG1hcHNldCAgKm1pbkxvY2tS ZWxpZHM7CisKIAkvKiBPSURzIG9mIHJlbGF0aW9ucyB0aGUgcGxhbiBkZXBlbmRzIG9uICovCiAJ TGlzdAkgICAqcmVsYXRpb25PaWRzOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDJlMjAyODky YTcuLjBjYWI2OTU4ZDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC03Myw4ICs3MywxNyBAQCB0 eXBlZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogCUxpc3QJICAgKnBhcnRQcnVuZUluZm9zOwkvKiBM aXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWluZWQgaW4KIAkJCQkJCQkJICogdGhlIHBs YW4gKi8KIAorCWJvb2wJCWNvbnRhaW5zSW5pdGlhbFBydW5pbmc7CS8qIERvIGFueSBvZiB0aG9z ZSBQYXJ0aXRpb25QcnVuZUluZm9zCisJCQkJCQkJCQkJICogaGF2ZSBpbml0aWFsIHBydW5pbmcg c3RlcHMgaW4gdGhlbT8KKwkJCQkJCQkJCQkgKi8KKwogCUxpc3QJICAgKnJ0YWJsZTsJCQkvKiBs aXN0IG9mIFJhbmdlVGJsRW50cnkgbm9kZXMgKi8KIAorCUJpdG1hcHNldCAgKm1pbkxvY2tSZWxp ZHM7CS8qIEluZGV4ZXMgb2YgYWxsIHJhbmdlIHRhYmxlIGVudHJpZXMgbWludXMKKwkJCQkJCQkJ ICogaW5kZXhlcyBvZiByYW5nZSB0YWJsZSBlbnRyaWVzIG9mIHRoZSBsZWFmCisJCQkJCQkJCSAq IHBhcnRpdGlvbnMgc2Nhbm5lZCBieSBwcnVuYWJsZSBzdWJwbGFuczsKKwkJCQkJCQkJICogc2Vl IEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgKi8KKwogCS8qIHJ0YWJsZSBpbmRleGVzIG9mIHRhcmdl dCByZWxhdGlvbnMgZm9yIElOU0VSVC9VUERBVEUvREVMRVRFL01FUkdFICovCiAJTGlzdAkgICAq cmVzdWx0UmVsYXRpb25zOwkvKiBpbnRlZ2VyIGxpc3Qgb2YgUlQgaW5kZXhlcywgb3IgTklMICov CiAKQEAgLTE0MTQsNiArMTQyMywxMyBAQCB0eXBlZGVmIHN0cnVjdCBQbGFuUm93TWFyawogICog cHJ1bmVfaW5mb3MJCQlMaXN0IG9mIExpc3RzIGNvbnRhaW5pbmcgUGFydGl0aW9uZWRSZWxQcnVu ZUluZm8gbm9kZXMsCiAgKgkJCQkJCW9uZSBzdWJsaXN0IHBlciBydW4tdGltZS1wcnVuYWJsZSBw YXJ0aXRpb24gaGllcmFyY2h5CiAgKgkJCQkJCWFwcGVhcmluZyBpbiB0aGUgcGFyZW50IHBsYW4g bm9kZSdzIHN1YnBsYW5zLgorICoKKyAqIG5lZWRzX2luaXRfcHJ1bmluZwlEb2VzIGFueSBvZiB0 aGUgUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zIGluCisgKgkJCQkJCXBydW5lX2luZm9zIGhhdmUg aXRzIGluaXRpYWxfcHJ1bmluZ19zdGVwcyBzZXQ/CisgKgorICogbmVlZHNfZXhlY19wcnVuaW5n CURvZXMgYW55IG9mIHRoZSBQYXJ0aXRpb25lZFJlbFBydW5lSW5mb3MgaW4KKyAqCQkJCQkJcHJ1 bmVfaW5mb3MgaGF2ZSBpdHMgZXhlY19wcnVuaW5nX3N0ZXBzIHNldD8KKyAqCiAgKiBvdGhlcl9z dWJwbGFucwkJSW5kZXhlcyBvZiBhbnkgc3VicGxhbnMgdGhhdCBhcmUgbm90IGFjY291bnRlZCBm b3IKICAqCQkJCQkJYnkgYW55IG9mIHRoZSBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyBub2RlcyBp bgogICoJCQkJCQkicHJ1bmVfaW5mb3MiLiAgVGhlc2Ugc3VicGxhbnMgbXVzdCBub3QgYmUgcHJ1 bmVkLgpAQCAtMTQyNSw2ICsxNDQxLDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVJ bmZvCiAJTm9kZVRhZwkJdHlwZTsKIAlCaXRtYXBzZXQgICpyb290X3BhcmVudF9yZWxpZHM7CiAJ TGlzdAkgICAqcHJ1bmVfaW5mb3M7CisJYm9vbAkJbmVlZHNfaW5pdF9wcnVuaW5nOworCWJvb2wJ CW5lZWRzX2V4ZWNfcHJ1bmluZzsKIAlCaXRtYXBzZXQgICpvdGhlcl9zdWJwbGFuczsKIH0gUGFy dGl0aW9uUHJ1bmVJbmZvOwogCkBAIC0xNDY5LDYgKzE0ODcsOSBAQCB0eXBlZGVmIHN0cnVjdCBQ YXJ0aXRpb25lZFJlbFBydW5lSW5mbwogCS8qIHJlbGF0aW9uIE9JRCBieSBwYXJ0aXRpb24gaW5k ZXgsIG9yIDAgKi8KIAlPaWQJCSAgICpyZWxpZF9tYXAgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUo bnBhcnRzKSk7CiAKKwkvKiBSYW5nZSB0YWJsZSBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9y IDAuICovCisJSW5kZXgJICAgKnJ0aV9tYXAgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnBhcnRz KSk7CisKIAkvKgogCSAqIGluaXRpYWxfcHJ1bmluZ19zdGVwcyBzaG93cyBob3cgdG8gcHJ1bmUg ZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAgKGkuZS4sCiAJICogd2l0aG91dCB1c2Ugb2YgYW55IFBB UkFNX0VYRUMgUGFyYW1zKTsgaXQgaXMgTklMIGlmIG5vIHN0YXJ0dXAgcHJ1bmluZwpAQCAtMTU1 Myw2ICsxNTc0LDMxIEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lU3RlcENvbWJpbmUK IAlMaXN0CSAgICpzb3VyY2Vfc3RlcGlkczsKIH0gUGFydGl0aW9uUHJ1bmVTdGVwQ29tYmluZTsK IAorLyotLS0tLS0tLS0tLS0tLS0tCisgKiBQYXJ0aXRpb25QcnVuZVJlc3VsdAorICoKKyAqIFRo ZSByZXN1bHQgb2YgcGVyZm9ybWluZyBFeGVjUGFydGl0aW9uRG9Jbml0aWFsUHJ1bmluZygpIG9u IGEgZ2l2ZW4KKyAqIFBhcnRpdGlvblBydW5lSW5mby4KKyAqCisgKiB2YWxpZF9zdWJwbGFuc19v ZmZzIGNvbnRhaW5zIHRoZSBpbmRleGVzIG9mIHN1YnBsYW5zIHJlbWFpbmluZyBhZnRlcgorICog cGVyZm9ybWluZyBpbml0aWFsIHBydW5pbmcgYnkgY2FsbGluZyBFeGVjRmluZE1hdGNoaW5nU3Vi UGxhbnMoKSBvbiB0aGUKKyAqIFBhcnRpdGlvblBydW5lSW5mby4KKyAqCisgKiBUaGlzIGlzIHVz ZWQgdG8gc3RvcmUgdGhlIHJlc3VsdCBvZiBpbml0aWFsIHBhcnRpdGlvbiBwcnVuaW5nIHRoYXQg aXMKKyAqIHBlZm9ybWVkIGJlZm9yZSB0aGUgZXhlY3V0aW9uIGhhcyBzdGFydGVkLiAgQSBtb2R1 bGUgdGhhdCBuZWVkcyB0byBkbyBzbworICogc2hvdWxkIGNhbGwgRXhlY3V0b3JEb0luaXRpYWxQ cnVuaW5nKCkgb24gYSBnaXZlbiBQbGFubmVkU3RtdCwgd2hpY2gKKyAqIHJldHVybnMgYSBMaXN0 IG9mIFBhcnRpdGlvblBydW5lUmVzdWx0IGNvbnRhaW5pbmcgYW4gZW50cnkgZm9yIGVhY2gKKyAq IFBhcnRpdGlvblBydW5lSW5mbyBwcmVzZW50IGluIFBsYW5uZWRTdG10LnBhcnRfcHJ1bmVfaW5m b3MuICBUaGUgbW9kdWxlCisgKiBzaG91bGQgdGhlbiBwYXNzIHRoYXQgbGlzdCwgYWxvbmcgd2l0 aCB0aGUgUGxhbm5lZFN0bXQsIHRvIHRoZSBleGVjdXRvciwKKyAqIHNvIHRoYXQgaXQgY2FuIHJl dXNlIHRoZSByZXN1bHQgb2YgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmluZyB3aGVuCisgKiBpbml0 aWFsaXppbmcgdGhlIHN1YnBsYW5zIGZvciBleGVjdXRpb24uCisgKi8KK3R5cGVkZWYgc3RydWN0 IFBhcnRpdGlvblBydW5lUmVzdWx0Cit7CisJTm9kZVRhZwkJdHlwZTsKKworCUJpdG1hcHNldAkg ICAqdmFsaWRfc3VicGxhbl9vZmZzOworfSBQYXJ0aXRpb25QcnVuZVJlc3VsdDsKIAogLyoKICAq IFBsYW4gaW52YWxpZGF0aW9uIGluZm8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3Bs YW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKaW5kZXggMDQ5OTYzNWY1 OS4uMzI1NzlkNDc4OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKQEAgLTIyMCw3ICsyMjAsOCBAQCBl eHRlcm4gTGlzdCAqQ2FjaGVkUGxhbkdldFRhcmdldExpc3QoQ2FjaGVkUGxhblNvdXJjZSAqcGxh bnNvdXJjZSwKIGV4dGVybiBDYWNoZWRQbGFuICpHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQkJ CQkJCQkgUmVzb3VyY2VPd25lciBvd25lciwKLQkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1 ZXJ5RW52KTsKKwkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCQkJCQkg TGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKIGV4dGVybiB2b2lkIFJlbGVhc2VDYWNo ZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpOwogCiBleHRlcm4g Ym9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggYi9z cmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAppbmRleCBhZWRkYmRhZmU1Li4xOTAxZmM1ZjI4IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9wb3J0YWwuaApAQCAtMTM4LDYgKzEzOCw3IEBAIHR5cGVkZWYgc3RydWN0IFBvcnRhbERh dGEKIAlRdWVyeUNvbXBsZXRpb24gcWM7CQkJLyogY29tbWFuZCBjb21wbGV0aW9uIGRhdGEgZm9y IGV4ZWN1dGVkIHF1ZXJ5ICovCiAJTGlzdAkgICAqc3RtdHM7CQkJLyogbGlzdCBvZiBQbGFubmVk U3RtdHMgKi8KIAlDYWNoZWRQbGFuICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBzdG10cyBh cmUgZnJvbSBvbmUgKi8KKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdDsJLyogTGlz dCBvZiBMaXN0cyBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgKi8KIAogCVBhcmFtTGlzdEluZm8g cG9ydGFsUGFyYW1zOyAvKiBwYXJhbXMgdG8gcGFzcyB0byBxdWVyeSAqLwogCVF1ZXJ5RW52aXJv bm1lbnQgKnF1ZXJ5RW52OyAvKiBlbnZpcm9ubWVudCBmb3IgcXVlcnkgKi8KQEAgLTI0Miw2ICsy NDMsOCBAQCBleHRlcm4gdm9pZCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwgcG9ydGFsLAogCQkJ CQkJCSAgQ29tbWFuZFRhZyBjb21tYW5kVGFnLAogCQkJCQkJCSAgTGlzdCAqc3RtdHMsCiAJCQkJ CQkJICBDYWNoZWRQbGFuICpjcGxhbik7CitleHRlcm4gdm9pZCBQb3J0YWxTdG9yZVBhcnRpdGlv blBydW5lUmVzdWx0cyhQb3J0YWwgcG9ydGFsLAorCQkJCQkJCQkJCQkgTGlzdCAqcGFydF9wcnVu ZV9yZXN1bHRzX2xpc3QpOwogZXh0ZXJuIFBsYW5uZWRTdG10ICpQb3J0YWxHZXRQcmltYXJ5U3Rt dChQb3J0YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbENyZWF0ZUhvbGRTdG9yZShQb3J0 YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbEhhc2hUYWJsZURlbGV0ZUFsbCh2b2lkKTsK LS0gCjIuMzUuMwoK --000000000000771a5f05eed5f9f3--