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 1p24eW-0003ht-NW for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Dec 2022 06:08:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p24eV-0004w2-DM for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Dec 2022 06:08:31 +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 1p24eU-0004vt-Fk for pgsql-hackers@lists.postgresql.org; Mon, 05 Dec 2022 06:08:31 +0000 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1p24eR-0006MX-My for pgsql-hackers@postgresql.org; Mon, 05 Dec 2022 06:08:29 +0000 Received: by mail-pf1-x429.google.com with SMTP id 140so10373473pfz.6 for ; Sun, 04 Dec 2022 22:08:27 -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=64HUe6e2gX9oDIPepijPFmiXdTOATPDDP8yhlpaAh+c=; b=SK6dIKBVsljQvR+Tq3UTNgjuLwFA0GIhOqTXxP82byNvY1ePdB3Ef98HUYpehQy9vJ kv5o2cWkdV7IJ60JJJbMXvr5h0d0CGDflQLCG32m/C80nI+U7IyZPJ2M1WWi6zAqvdQ1 Er21Eqz+DXketC901nD3Gzos5LVnYwc97Qo8W2V8zp5/7an6vCws36mIQZo0CmUTW63a 4dljrn+OizjInBXtISyN7oSd6KOJbKDw9tloe2YVb5Ym4D+WSvLJmxJGy4D3HgpDWW3f bEo60sLfW0XfAjJwnfdufgWBSeBH8yPEz7BOZlObbUu+wTL+lQHCjACwC6JsPvdwEenz fCfQ== 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=64HUe6e2gX9oDIPepijPFmiXdTOATPDDP8yhlpaAh+c=; b=VBlhmFgPkJpg65zAOUe6R5wTREgftEI9Ds+3JHngcLGOCWDuI/aWIf4AzInJYexWeF JyN0ePREM/1vj6ccps7yDJTbNDupTEn86igW7gx79XiQqHWnQxXzBkejl6Pi9XC50299 eWPaCSJA7pHqN2YUTsPyaxgBdxrOrhZxwgCJRa66QreRtxrAH+XQXf+MfcWeoVl+r4L8 lwep7US9MkLNDI59PSf5Y+5oTLFIhuSY5IkhJXr+l0HQfDTZsF3wohLirjFMgPvptlaZ zDviO273LTrB1tBn4B1MY6g2uE02raY2DTL8KHzsgfs1yrV/DD1X/eiHnddMb3kgIq0Y UKFg== X-Gm-Message-State: ANoB5pm5n4dk5MbedV8cRX6HdgwQw8MuEOvbHPYKbWkunGlfXcf9pD23 XrvVShnVQeRepsvFXoB0BgkrStZ2cl3L4B+RfTo= X-Google-Smtp-Source: AA0mqf5ypC0NiZo8tTRKf+Wl+YNafWcUbPCpm2SrYv/Rtrv2LcxPlvMTiApv8cXZVoxG1GygO2VksIBI7VkgHtefCIc= X-Received: by 2002:a65:4948:0:b0:46e:be03:d9b5 with SMTP id q8-20020a654948000000b0046ebe03d9b5mr53911491pgs.495.1670220506568; Sun, 04 Dec 2022 22:08:26 -0800 (PST) MIME-Version: 1.0 References: <20221201112106.gjlcv6nvndjbnoez@alvherre.pgsql> In-Reply-To: From: Amit Langote Date: Mon, 5 Dec 2022 15:08:09 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Alvaro Herrera Cc: Robert Haas , Jacob Champion , David Rowley , Tom Lane , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000fe109305ef0e83da" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000fe109305ef0e83da Content-Type: text/plain; charset="UTF-8" On Mon, Dec 5, 2022 at 12:00 PM Amit Langote wrote: > On Fri, Dec 2, 2022 at 7:40 PM Amit Langote wrote: > > 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. > > Rebased over 92c4dafe1eed and fixed some factual mistakes in the > comment above ExecutorDoInitialPruning(). Sorry, I had forgotten to git-add hunks including some cosmetic changes in that one. Here's another version. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --000000000000fe109305ef0e83da Content-Type: application/octet-stream; name="v28-0002-Add-root_parent_relids-to-PartitionPruneResult.patch" Content-Disposition: attachment; filename="v28-0002-Add-root_parent_relids-to-PartitionPruneResult.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lbae54jy1 RnJvbSAwNGYxNTYzOTYzMDlmOGMzNGE4NTNjZTFhZDRlMjkzZmU0ZTJjNGEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyIERlYyAyMDIyIDE5OjMyOjE0ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MjggMi8y XSBBZGQgcm9vdF9wYXJlbnRfcmVsaWRzIHRvIFBhcnRpdGlvblBydW5lUmVzdWx0CgpJdCdzIHNh bWUgYXMgdGhlIGNvcnJlc3BvbmRpbmcgUGFydGl0aW9uUHJ1bmVJbmZvJ3Mgcm9vdF9wYXJlbnRf cmVsaWRzLgpMaWtlIFBhcnRpdGlvblBydW5lSW5mby5yb290X3BhcmVudF9yZWxpZHMsIGl0J3Mg dGhlcmUgZm9yCmNyb3NzLWNoZWNraW5nIGEgUGFydGl0aW9uUHJ1bmVSZXN1bHQgZm91bmQgYXQg YSBnaXZlbiBwbGFuIG5vZGUncwpwYXJ0X3BydW5lX2luZGV4IGFjdHVhbGx5IG1hdGNoZXMgdGhl IHBsYW4gbm9kZS4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgfCAg MiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIHwgMTAgKysrKysrKysr Kwogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgICAgIHwgIDcgKysrKysrKwogMyBm aWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5k ZXggZjE1MjY1NzE2YS4uNTU0NjIzNzUxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0x NDcsNiArMTQ3LDggQEAgRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKFBsYW5uZWRTdG10ICpwbGFu bmVkc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1 bmVpbmZvID0gbGZpcnN0X25vZGUoUGFydGl0aW9uUHJ1bmVJbmZvLCBsYyk7CiAJCVBhcnRpdGlv blBydW5lUmVzdWx0ICpwcnVuZXJlc3VsdCA9IG1ha2VOb2RlKFBhcnRpdGlvblBydW5lUmVzdWx0 KTsKIAorCQlwcnVuZXJlc3VsdC0+cm9vdF9wYXJlbnRfcmVsaWRzID0KKwkJCWJtc19jb3B5KHBy dW5laW5mby0+cm9vdF9wYXJlbnRfcmVsaWRzKTsKIAkJcHJ1bmVyZXN1bHQtPnZhbGlkX3N1YnBs YW5fb2ZmcyA9CiAJCQlFeGVjUGFydGl0aW9uRG9Jbml0aWFsUHJ1bmluZyhwbGFubmVkc3RtdCwg cGFyYW1zLCBwcnVuZWluZm8sCiAJCQkJCQkJCQkJICBzY2FuX2xlYWZwYXJ0X3J0aXMpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IGJjODMzMWEyMjIuLjJlYWRjMzBlYzgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTE4NDIsOSArMTg0MiwxOSBA QCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJICogaXMg c2V0LgogCSAqLwogCWlmIChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cykKKwl7CiAJCXBy dW5lcmVzdWx0ID0gbGlzdF9udGhfbm9kZShQYXJ0aXRpb25QcnVuZVJlc3VsdCwKIAkJCQkJCQkJ CWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzLAogCQkJCQkJCQkJcGFydF9wcnVuZV9pbmRl eCk7CisJCWlmICghYm1zX2VxdWFsKHJvb3RfcGFyZW50X3JlbGlkcywgcHJ1bmVpbmZvLT5yb290 X3BhcmVudF9yZWxpZHMpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RF X0lOVEVSTkFMX0VSUk9SKSwKKwkJCQkJZXJybXNnX2ludGVybmFsKCJtaXNtYXRjaGluZyBQYXJ0 aXRpb25QcnVuZUluZm8gYW5kIFBhcnRpdGlvblBydW5lUmVzdWx0IGF0IHBhcnRfcHJ1bmVfaW5k ZXggJWQiLAorCQkJCQkJCQkJcGFydF9wcnVuZV9pbmRleCksCisJCQkJCWVycmRldGFpbF9pbnRl cm5hbCgicHJ1bnJlc3VsdCByZWxpZHMgJXMsIHBydW5laW5mbyByZWxpZHMgJXMiLAorCQkJCQkJ CQkJICAgYm1zVG9TdHJpbmcocHJ1bmVyZXN1bHQtPnJvb3RfcGFyZW50X3JlbGlkcyksCisJCQkJ CQkJCQkgICBibXNUb1N0cmluZyhwcnVuZWluZm8tPnJvb3RfcGFyZW50X3JlbGlkcykpKTsKKwl9 CiAKIAlpZiAocHJ1bmVyZXN1bHQgPT0gTlVMTCB8fCBwcnVuZWluZm8tPm5lZWRzX2V4ZWNfcHJ1 bmluZykKIAl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDcxNGUyY2YyYzcuLmVkNjY0YzU0Njkg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0xNTgwLDYgKzE1ODAsMTIgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGFydGl0aW9uUHJ1bmVTdGVwQ29tYmluZQogICogVGhlIHJlc3VsdCBvZiBwZXJmb3JtaW5n IEV4ZWNQYXJ0aXRpb25Eb0luaXRpYWxQcnVuaW5nKCkgb24gYSBnaXZlbgogICogUGFydGl0aW9u UHJ1bmVJbmZvLgogICoKKyAqIHJvb3RfcGFyZW50X3JlbGlkcyBpcyBzYW1lIGFzIFBhcnRpdGlv blBydW5lSW5mby5yb290X3BhcmVudF9yZWxpZHMuICBJdCdzCisgKiB0aGVyZSBmb3IgY3Jvc3Mt Y2hlY2tpbmcgaW4gRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCkgdGhhdCB0aGUKKyAqIFBhcnRp dGlvblBydW5lUmVzdWx0IGFuZCB0aGUgUGFydGl0aW9uUHJ1bmVJbmZvIGF0IGEgZ2l2ZW4gaW5k ZXggaW4KKyAqIEVTdGF0ZS5lc19wYXJ0X3BydW5lX3Jlc3VsdHMgYW5kIEVTdGF0ZS5lc19wYXJ0 X3BydW5lX2luZm9zLCByZXNwZWN0aXZlbHksCisgKiBiZWxvbmcgdG8gdGhlIHNhbWUgcGFyZW50 IHBsYW4gbm9kZS4KKyAqCiAgKiB2YWxpZF9zdWJwbGFuc19vZmZzIGNvbnRhaW5zIHRoZSBpbmRl eGVzIG9mIHN1YnBsYW5zIHJlbWFpbmluZyBhZnRlcgogICogcGVyZm9ybWluZyBpbml0aWFsIHBy dW5pbmcgYnkgY2FsbGluZyBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoKSBvbiB0aGUKICAqIFBh cnRpdGlvblBydW5lSW5mby4KQEAgLTE1OTcsNiArMTYwMyw3IEBAIHR5cGVkZWYgc3RydWN0IFBh cnRpdGlvblBydW5lUmVzdWx0CiB7CiAJTm9kZVRhZwkJdHlwZTsKIAorCUJpdG1hcHNldAkgICAq cm9vdF9wYXJlbnRfcmVsaWRzOwogCUJpdG1hcHNldAkgICAqdmFsaWRfc3VicGxhbl9vZmZzOwog fSBQYXJ0aXRpb25QcnVuZVJlc3VsdDsKIAotLSAKMi4zNS4zCgo= --000000000000fe109305ef0e83da Content-Type: application/octet-stream; name="v28-0001-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Disposition: attachment; filename="v28-0001-Optimize-AcquireExecutorLocks-by-locking-only-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lbae54jl0 RnJvbSAyOGJkZDA3YWUxNTIyOGJjMzE3MzI1N2FiNTk2ODg2NDQ1NWRkYTE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBEZWMgMjAyMSAxNjo1NToxNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjI4IDEv Ml0gT3B0aW1pemUgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBieSBsb2NraW5nIG9ubHkKIHVucHJ1 bmVkIHBhcnRpdGlvbnMKClRoaXMgY29tbWl0IHRlYWNoZXMgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSB0byBwZXJmb3JtIGluaXRpYWwKcGFydGl0aW9uIHBydW5pbmcgdG8gbm90aW9uYWxseSBlbGlt aW5hdGUgdGhlIHN1Ym5vZGVzIGNvbnRhaW5lZCBpbiBhCmdlbmVyaWMgY2FjaGVkIHBsYW4gdGhh dCBuZWVkIG5vdCBiZSBpbml0aWFsaXplZCBkdXJpbmcgdGhlIGFjdHVhbApleGVjdXRpb24gb2Yg dGhlIHBsYW4gYW5kIHNraXAgbG9ja2luZyB0aGUgcGFydGl0aW9uIHNjYW5uZWQgYnkgdGhvc2UK c3Vibm9kZXMuCgpUaGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1 bmluZyB0aGlzIHdheSBiZWZvcmUgdGhlCmFjdHVhbCBleGVjdXRpb24gaGFzIHN0YXJ0ZWQgaXMg bWFkZSBhdmFpbGFibGUgdG8gdGhlIGFjdHVhbCBleGVjdXRpb24gdmlhClBhcnRpdGlvblBydW5l UmVzdWx0LCBtYWRlIGF2YWlsYWJsZSBhbG9uZyB3aXRoIHRoZSBQbGFubmVkU3RtdCBieSB0aGUK Y2FsbGVycyBvZiB0aGUgZXhlY3V0b3IgdGhhdCB1c2VkIHBsYW5jYWNoZS5jIHRvIGdldCB0aGUg cGxhbi4gIEl0IGlzIE5VTEwKaW4gdGhlIGNhc2VzIGluIHdoaWNoIHRoZSBwbGFuIGlzIG9idGFp bmVkIGJ5IGNhbGxpbmcgdGhlIHBsYW5uZXIKZGlyZWN0bHkgb3IgaWYgdGhlIHBsYW4gb2J0YWlu ZWQgYnkgcGxhbmNhY2hlLmMgaXMgbm90IGEgZ2VuZXJpYyBvbmUuCi0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NyZWF0ZWFzLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICB8ICAyNiArKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgICAgICAgIHwgIDM2ICsrKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgIHwgIDUzICsrKysrKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgfCAgMjYgKystCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMgICB8IDIzNyArKysrKysrKysrKysrKysrKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFwcGVuZC5jICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJn ZUFwcGVuZC5jIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAg ICB8ICAyNyArKy0KIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgIHwgICA4 ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICB8ICAgMiArCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICB8ICA0NiArKysrKwogc3JjL2JhY2tl bmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAgfCAgNDEgKysrKy0KIHNyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYyAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC90Y29wL3BxdWVy eS5jICAgICAgICAgICAgICB8ICAyOSArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5j YWNoZS5jICAgIHwgMjA4ICsrKysrKysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL3V0aWxz L21tZ3IvcG9ydGFsbWVtLmMgICAgIHwgIDE5ICsrCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBs YWluLmggICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5oICAgfCAgIDkgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAgICAgIHwg ICAzICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgIHwgICAzICsKIHNy Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRl L25vZGVzL25vZGVzLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oICAgICAgICAgIHwgIDEyICsrCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMu aCAgICAgICAgICB8ICA0NiArKysrKwogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAg ICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgICAgIHwg ICAzICsKIDMzIGZpbGVzIGNoYW5nZWQsIDc4NyBpbnNlcnRpb25zKCspLCA5OCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IGYyNmNjMGQxNjIuLjQwMWEyMjgwYTMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHl0by5jCkBAIC01NTgsNyArNTU4LDcgQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCQkoKERSX2NvcHkgKikgZGVzdCktPmNzdGF0ZSA9IGNzdGF0ZTsKIAogCQkv KiBDcmVhdGUgYSBRdWVyeURlc2MgcmVxdWVzdGluZyBubyBvdXRwdXQgKi8KLQkJY3N0YXRlLT5x dWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJ CWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5JTCwgcHN0YXRlLT5w X3NvdXJjZXRleHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJ CUludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYwppbmRleCAxNTJjMjliNTUxLi45NDI0NDk1NDRjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NyZWF0ZWFzLmMKQEAgLTMyNSw3ICszMjUsNyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVBY3RpdmVT bmFwc2hvdENvbW1hbmRJZCgpOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rp bmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBDcmVhdGVR dWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhwbGFuLCBOSUwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJR2V0 QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJZGVzdCwgcGFyYW1z LCBxdWVyeUVudiwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBmODY5ODNjNjYwLi4y ZjJiNTU4NjA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC00MDcsNyArNDA3LDcgQEAgRXhw bGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCX0KIAogCQkv KiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JCUV4cGxhaW5PbmVQ bGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwkJRXhw bGFpbk9uZVBsYW4ocGxhbiwgTklMLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVl cnlFbnYsCiAJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6 IE5VTEwpKTsKIAl9CiB9CkBAIC01MTUsNyArNTE1LDggQEAgRXhwbGFpbk9uZVV0aWxpdHkoTm9k ZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAgKiB0 byBjYWxsIGl0LgogICovCiB2b2lkCi1FeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5l ZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCitFeHBsYWluT25lUGxh bihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIExpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0cywKKwkJ CSAgIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkgICBjb25zdCBjaGFy ICpxdWVyeVN0cmluZywgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgICBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudiwgY29uc3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9uLAogCQkJICAgY29u c3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlKQpAQCAtNTYzLDcgKzU2NCw3IEBAIEV4cGxhaW5PbmVQ bGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0 YXRlICplcywKIAkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURl c2MgZm9yIHRoZSBxdWVyeSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVk c3RtdCwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRz dG10LCBwYXJ0X3BydW5lX3Jlc3VsdHMsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVT bmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlF bnYsIGluc3RydW1lbnRfb3B0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwppbmRleCBj ZjFiMWNhNTcxLi45MDRjYmNiYTRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9l eHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwpAQCAtNzc5 LDcgKzc3OSw3IEBAIGV4ZWN1dGVfc3FsX3N0cmluZyhjb25zdCBjaGFyICpzcWwpCiAJCQl7CiAJ CQkJUXVlcnlEZXNjICAqcWRlc2M7CiAKLQkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10 LAorCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsIE5JTCwKIAkJCQkJCQkJCQlzcWws CiAJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgTlVMTCwKIAkJCQkJCQkJCQlkZXN0LCBO VUxMLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwppbmRleCA5YWMwMzgzNDU5Li42NWM4 ZDBhYTU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCkBAIC00MDgsNyArNDA4LDcgQEAgcmVmcmVz aF9tYXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5LAogCVVw ZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2Ms IHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRl UXVlcnlEZXNjKHBsYW4sIE5JTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBz aG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCA5ZTI5NTg0ZDkzLi4yOWI0NTUzOWQzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHJlcGFyZS5jCkBAIC0xNTUsNiArMTU1LDcgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAlQcmVwYXJlZFN0YXRlbWVudCAqZW50cnk7CiAJQ2FjaGVkUGxhbiAqY3Bs YW47CiAJTGlzdAkgICAqcGxhbl9saXN0OworCUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0c19s aXN0OwogCVBhcmFtTGlzdEluZm8gcGFyYW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUg PSBOVUxMOwogCVBvcnRhbAkJcG9ydGFsOwpAQCAtMTkzLDcgKzE5NCwxMCBAQCBFeGVjdXRlUXVl cnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJICAgZW50cnktPnBsYW5zb3VyY2UtPnF1 ZXJ5X3N0cmluZyk7CiAKIAkvKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgaW5jcmVtZW50IHBsYW4g cmVmY291bnQgZm9yIHBvcnRhbCAqLwotCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxh bnNvdXJjZSwgcGFyYW1MSSwgTlVMTCwgTlVMTCk7CisJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVu dHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLCBOVUxMLCBOVUxMLAorCQkJCQkJICAmcGFydF9wcnVu ZV9yZXN1bHRzX2xpc3QpOworCUFzc2VydChsaXN0X2xlbmd0aChjcGxhbi0+c3RtdF9saXN0KSA9 PQorCQkgICBsaXN0X2xlbmd0aChwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCkpOwogCXBsYW5fbGlz dCA9IGNwbGFuLT5zdG10X2xpc3Q7CiAKIAkvKgpAQCAtMjA3LDYgKzIxMSw5IEBAIEV4ZWN1dGVR dWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCSAgcGxhbl9saXN0LAogCQkJCQkgIGNwbGFu KTsKIAorCS8qIENvcHkgTGlzdHMgb2YgUGFydGl0aW9uUHJ1bmVSZXN1bHRzIGludG8gdGhlIHBv cnRhbCdzIGNvbnRleHQuICovCisJUG9ydGFsU3RvcmVQYXJ0aXRpb25QcnVuZVJlc3VsdHMocG9y dGFsLCBwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCk7CisKIAkvKgogCSAqIEZvciBDUkVBVEUgVEFC TEUgLi4uIEFTIEVYRUNVVEUsIHdlIG11c3QgdmVyaWZ5IHRoYXQgdGhlIHByZXBhcmVkCiAJICog c3RhdGVtZW50IGlzIG9uZSB0aGF0IHByb2R1Y2VzIHR1cGxlcy4gIEN1cnJlbnRseSB3ZSBpbnNp c3QgdGhhdCBpdCBiZQpAQCAtNTc2LDcgKzU4Myw5IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhl Y3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAog CWNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZzsKIAlDYWNoZWRQbGFuICpjcGxhbjsKIAlMaXN0CSAg ICpwbGFuX2xpc3Q7Ci0JTGlzdENlbGwgICAqcDsKKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3Vs dHNfbGlzdDsKKwlMaXN0Q2VsbCAgICpwLAorCQkJICAgKnBwOwogCVBhcmFtTGlzdEluZm8gcGFy YW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxMOwogCWluc3RyX3RpbWUJcGxh bnN0YXJ0OwpAQCAtNjE5LDcgKzYyOCwxMCBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVT dG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAogCS8q IFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBhY3F1aXJlIGEgdHJhbnNpZW50IHJlZmNvdW50ICovCiAJ Y3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLAotCQkJCQkJ ICBDdXJyZW50UmVzb3VyY2VPd25lciwgcXVlcnlFbnYpOworCQkJCQkJICBDdXJyZW50UmVzb3Vy Y2VPd25lciwgcXVlcnlFbnYsCisJCQkJCQkgICZwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCk7CisJ QXNzZXJ0KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09CisJCSAgIGxpc3RfbGVuZ3Ro KHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KSk7CiAKIAlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBs YW5kdXJhdGlvbik7CiAJSU5TVFJfVElNRV9TVUJUUkFDVChwbGFuZHVyYXRpb24sIHBsYW5zdGFy dCk7CkBAIC02MzQsMTMgKzY0NiwxNSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10 ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlwbGFuX2xp c3QgPSBjcGxhbi0+c3RtdF9saXN0OwogCiAJLyogRXhwbGFpbiBlYWNoIHF1ZXJ5ICovCi0JZm9y ZWFjaChwLCBwbGFuX2xpc3QpCisJZm9yYm90aChwLCBwbGFuX2xpc3QsIHBwLCBwYXJ0X3BydW5l X3Jlc3VsdHNfbGlzdCkKIAl7CiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBs YW5uZWRTdG10LCBwKTsKKwkJTGlzdCAqcGFydF9wcnVuZV9yZXN1bHRzID0gbGZpcnN0X25vZGUo TGlzdCwgcHApOwogCiAJCWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpCi0J CQlFeHBsYWluT25lUGxhbihwc3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwg cXVlcnlFbnYsCi0JCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNh Z2UgOiBOVUxMKSk7CisJCQlFeHBsYWluT25lUGxhbihwc3RtdCwgcGFydF9wcnVuZV9yZXN1bHRz LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLAorCQkJCQkJICAgcGFyYW1MSSwgcXVlcnlFbnYsICZw bGFuZHVyYXRpb24sCisJCQkJCQkgICAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7 CiAJCWVsc2UKIAkJCUV4cGxhaW5PbmVVdGlsaXR5KHBzdG10LT51dGlsaXR5U3RtdCwgaW50bywg ZXMsIHF1ZXJ5X3N0cmluZywKIAkJCQkJCQkgIHBhcmFtTEksIHF1ZXJ5RW52KTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JF QURNRQppbmRleCAxNzc3NWE0OWUyLi43ZjhjZjE0OTRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCkBAIC02 NSw2ICs2NSwzOCBAQCBmb3VuZCB0aGVyZS4gIFRoaXMgY3VycmVudGx5IG9ubHkgb2NjdXJzIGZv ciBBcHBlbmQgYW5kIE1lcmdlQXBwZW5kIG5vZGVzLiAgSW4KIHRoaXMgY2FzZSB0aGUgbm9uLXJl cXVpcmVkIHN1YnBsYW5zIGFyZSBpZ25vcmVkIGFuZCB0aGUgZXhlY3V0b3Igc3RhdGUncwogc3Vi bm9kZSBhcnJheSB3aWxsIGJlY29tZSBvdXQgb2Ygc2VxdWVuY2UgdG8gdGhlIHBsYW4ncyBzdWJw bGFuIGxpc3QuCiAKK1RoZSBzby1jYWxsZWQgZXhlY3V0aW9uIHRpbWUgcHJ1bmluZyBtYXkgYWxz byBvY2N1ciBldmVuIGJlZm9yZSB0aGUgZXhlY3V0aW9uCitoYXMgYWN0dWFsbHkgc3RhcnRlZC4g IE9uZSBjYXNlIHdoZXJlIHRoYXQgb2NjdXJzIGlzIHdoZW4gYSBjYWNoZWQgZ2VuZXJpYworcGxh biBpcyBiZWluZyB2YWxpZGF0ZWQgZm9yIGV4ZWN1dGlvbiBieSBwbGFuY2FjaGUuYzpHZXRDYWNo ZWRQbGFuKCksIHdoaWNoCit3b3JrcyBieSBsb2NraW5nIGFsbCB0aGUgcmVsYXRpb25zIHRoYXQg d2lsbCBiZSBzY2FubmVkIGJ5IHRoYXQgcGxhbi4gIElmIHRoZQorZ2VuZXJpYyBwbGFuIGNvbnRh aW5zIG5vZGVzIHRoYXQgY2FuIHBlcmZvcm0gZXhlY3V0aW9uIHRpbWUgcGFydGl0aW9uIHBydW5p bmcKKyh0aGF0IGlzLCBjb250YWluIGEgUGFydGl0aW9uUHJ1bmVJbmZvKSwgYSBzdWJzZXQgb2Yg cHJ1bmluZyBzdGVwcyBjb250YWluZWQKK2luIGEgZ2l2ZW4gbm9kZSdzIFBhcnRpdGlvblBydW5l SW5mbyB0aGF0IGRvIG5vdCBkZXBlbmQgb24gdGhlIGV4ZWN1dGlvbgorYWN0dWFsbHkgaGF2aW5n IHN0YXJ0ZWQgKGNhbGxlZCAiaW5pdGlhbCIgcHJ1bmluZyBzdGVwcykgYXJlIHBlcmZvcm1lZCBh cyBwYXJ0CitvZiB0aGUgcGxhbiB2YWxpZGF0aW9uIHN0ZXAsIGJ5IGNhbGxpbmcgRXhlY3V0b3JE b0luaXRpYWxQcnVuaW5nKCkuICBUaGF0CityZXR1cm5zIHRoZSBtaW5pbWFsIHNldCBvZiBjaGls ZCBzdWJwbGFucyB0aGF0IHNhdGlzZnkgdGhvZSBpbml0aWFsIHBydW5pbmcKK3N0ZXBzIGNvbnRh aW5lZCBpbiBlYWNoIFBhcnRpdGlvblBydW5lSW5mby4gIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkg d2lsbCB0aGVuCitsb2NrIG9ubHkgdGhlIHJlbGF0aW9ucyBzY2FubmVkIGJ5IHRob3NlIHN1YnBs YW5zLCBpbiBhZGRpdGlvbiB0byB0aG9zZSBwcmVzZW50CitpblBsYW5uZWRTdG10Lm1pbkxvY2tS ZWxpZHMuICBOb3RlIHRoYXQgdGhlIHN1YnBsYW5zIGFyZSBub3QgcmVhbGx5IHBydW5lZCBhcwor aW4gYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBwbGFuIHRyZWUsIHNvIGNhcmUgaXMgbmVlZGVkIGJ5 IHRoZSBkb3duc3RyZWFtcwordXNlcnMgb2Ygc3VjaCBhIHBsYW4gdGhhdCBoYXMgdW5kZXJnb25l IHByZS1leGVjdXRpb24gaW5pdGlhbCBwcnVuaW5nLgorCitUbyBwcmV2ZW50IHRoZSBleGVjdXRv ciBhbmQgYW55IHRoaXJkIHBhcnR5IGV4ZWN1dGlvbiBjb2RlIHRoYXQgY2FuIGxvb2sgYXQKK3Ro ZSBwbGFuIHRyZWUgZnJvbSB0cnlpbmcgdG8gZXhlY3V0ZSB0aGUgc3VicGxhbnMgdGhhdCB3ZXJl IHBydW5lZCBhcworZGVzY3JpYmVkIGFib3ZlLCB0aGUgcmVzdWx0IG9mIHRoYXQgcHJ1bmluZyBp cyBwYXNzZWQgdG8gdGhlIGV4ZWN1dG9yIGFzIGEKK0xpc3Qgb2YgUGFydGl0aW9uUHJ1bmVSZXN1 bHQgbm9kZXMgdmlhIHRoZSBRdWVyeURlc2MsIHdoaWNoIGlzIHN1YnNlcXVlbnRseQorYXNzaWdu ZWQgdG8gRVN0YXRlLmVzX3BhcnRfcHJ1bmVfcmVzdWx0cy4gIEVhY2ggUGFydGl0aW9uUHJ1bmVS ZXN1bHQgdGhlcmVpbgorY29uc2lzdHMgb2YgdGhlIHNldCBvZiBpbmRleGVzIG9mIHN1cnZpdmlu ZyBzdWJwbGFucyBpbiB0aGUgcmVzcGVjdGl2ZSBwYXJlbnQKK3BsYW4gbm9kZSdzICh0aGUgb25l IHRvIHdoaWNoIHRoZSBjb3JyZXNwb25kaW5nIFBhcnRpdGlvblBydW5lSW5mbyBiZWxvbmdzKQor bGlzdCBvZiBjaGlsZCBzdWJwbGFucywgc2F2ZWQgYXMgYSBiaXRtYXBzZXQgdmFsaWRfc3VicGxh bl9vZmZzLiAgVGhlIGV4ZWN1dG9yCitvciBhbnkgdGhpcmQgcGFydHkgZXhlY3V0aW9uIGNvZGUg d29ya2luZyBvbiBhIGdlbmVyaWMgcGxhbiBzaG91bGQgbm90CityZS1ldmFsdWF0ZSB0aGUgc2V0 IG9mIGluaXRpYWxseSB2YWxpZCBzdWJwbGFucyBmb3IgYSBnaXZlbiBwbGFuIG5vZGUgYnkKK3Jl ZG9pbmcgdGhlIGluaXRpYWwgcHJ1bmluZyBpZiBhIFBhcnRpdGlvblBydW5lUmVzdWx0IGJlbG9u Z2luZyB0byB0aGFudCBwbGFuCitub2RlIGlzIHByZXNlbnQgaW4gZXNfcGFydF9wcnVuZV9yZXN1 bHRzLiAgTm90ZSB0aGF0IHRoYXQgaXMgbm90IHNpbXBseSBhCitwZXJmb3JtYW5jZSBvcHRpbWl6 YXRpb24sIGJlY2F1c2Ugc3VjaCByZS1ldmFsdWF0aW9uIG9mIHRoZSBwcnVuaW5nIHN0ZXBzIG1h eQordmVyeSB3ZWxsIGVuZCB1cCByZXN1bHRpbmcgaW4gYSBkaWZmZXJlbnQgc2V0IG9mIGluaXRp YWxseSB2YWxpZCBzdWJwbGFucywKK2NvbnRhaW5pbmcgc29tZSB3aG9zZSByZWxhdGlvbnMgd2Vy ZSBub3QgbG9ja2VkIGJ5IEFjcXVpcmVFeGVjdXRvckxvY2tzKCkuCisKIEVhY2ggUGxhbiBub2Rl IG1heSBoYXZlIGV4cHJlc3Npb24gdHJlZXMgYXNzb2NpYXRlZCB3aXRoIGl0LCB0byByZXByZXNl bnQKIGl0cyB0YXJnZXQgbGlzdCwgcXVhbGlmaWNhdGlvbiBjb25kaXRpb25zLCBldGMuICBUaGVz ZSB0cmVlcyBhcmUgYWxzbwogcmVhZC1vbmx5IHRvIHRoZSBleGVjdXRvciwgYnV0IHRoZSBleGVj dXRvciBzdGF0ZSBmb3IgZXhwcmVzc2lvbiBldmFsdWF0aW9uCkBAIC0yODYsNiArMzE4LDEwIEBA IFF1ZXJ5IFByb2Nlc3NpbmcgQ29udHJvbCBGbG93CiAKIFRoaXMgaXMgYSBza2V0Y2ggb2YgY29u dHJvbCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAKKyAgWyBFeGVjdXRvckRvSW5p dGlhbFBydW5pbmcgXSAtLS0gYW4gb3B0aW9uYWwgc3RlcCB0byBwZXJmb3JtIGluaXRpYWwKKwkJ cGFydGl0aW9uIHBydW5pbmcgb24gdGhlIHBsYW4gdHJlZSB0aGUgcmVzdWx0IG9mIHdoaWNoIGlz IHBhc3NlZAorCQl0byB0aGUgZXhlY3V0b3IgdmlhIFF1ZXJ5RGVzYworCiAJQ3JlYXRlUXVlcnlE ZXNjCiAKIAlFeGVjdXRvclN0YXJ0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAxMmZmNGYz ZGU1Li5mMTUyNjU3MTZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTQ5LDYgKzQ5LDcg QEAKICNpbmNsdWRlICJjb21tYW5kcy9tYXR2aWV3LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJp Z2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZWJ1Zy5oIgorI2luY2x1ZGUgImV4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgog I2luY2x1ZGUgImZvcmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVkZSAiaml0L2ppdC5oIgpAQCAtMTA0 LDYgKzEwNSw1NiBAQCBzdGF0aWMgdm9pZCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBx c3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsKIAogLyogZW5kIG9mIGxvY2FsIGRlY2xzICovCiAKKy8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCQlFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcKKyAqCisgKgkJRm9yIGVhY2gg cGxhbiB0cmVlIG5vZGUgdGhhdCBoYXMgYmVlbiBhc3NpZ25lZCBhIFBhcnRpdGlvblBydW5lSW5m bywKKyAqCQl0aGlzIHBlcmZvcm1zIGluaXRpYWwgcGFydGl0aW9uIHBydW5pbmcgdXNpbmcgdGhl IGluZm9ybWF0aW9uIGNvbnRhaW5lZAorICoJCXRoZXJlaW4gdG8gZGV0ZXJtaW5lIHRoZSBzZXQg b2YgY2hpbGQgc3VicGxhbnMgdGhhdCBzYXRpc2Z5IHRoZSBpbml0aWFsCisgKgkJcHJ1bmluZyBz dGVwcywgdG8gYmUgcmV0dXJuZWQgYXMgYSBiaXRtYXBzZXQgb2YgdGhlaXIgaW5kZXhlcyBpbiB0 aGUKKyAqCQlub2RlJ3MgbGlzdCBvZiBjaGlsZCBzdWJwbGFucyAoZm9yIGV4YW1wbGUsIGFuIEFw cGVuZCdzIGFwcGVuZHBsYW5zKS4KKyAqCisgKiBSZXR1cm4gdmFsdWUgaXMgYSBMaXN0IG9mIFBh cnRpdGlvblBydW5lUmVzdWx0IG5vZGVzLCBvbmUgZm9yIGVhY2gKKyAqIFBhcnRpdGlvblBydW5l SW5mbyBmb3VuZCBpbiBwbGFubmVkc3RtdC0+Y29udGFpbnNJbml0aWFsUHJ1bmluZywgZWFjaAor ICogY29udGFpbmluZyBhIGJpdG1hcHNldCBvZiB0aGUgaW5kZXhlcyBvZiB1bnBydW5lZCBjaGls ZCBzdWJwbGFucy4KKyAqIEEgYml0bWFwc2V0IG9mIHRoZSBSVCBpbmRleGVzIG9mIHRoZSBsZWFm IHBhcnRpdGlvbnMgc2Nhbm5lZCBieSB0aG9zZQorICogc3VicGxhbnMgaXMgcmV0dXJuZWQgaW4g KnNjYW5fbGVhZnBhcnRfcnRpcywgd2hpY2ggaXMgc2hhcmVkIGFjcm9zcyBhbGwKKyAqIG9mIHRo b3NlIFBhcnRpdGlvblBydW5lUmVzdWx0cy4KKyAqCisgKiBUaGUgZXhlY3V0b3IgbXVzdCBzZWUg dGhlIGV4YWN0bHkgc2FtZSBzZXQgb2Ygc3VicGxhbnMgYXMgdmFsaWQgZm9yCisgKiBleGVjdXRp b24gd2hlbiBkb2luZyBFeGVjSW5pdE5vZGUoKSBvbiB0aGUgcGxhbiBub2RlcyB3aG9zZQorICog UGFydGl0aW9uUHJ1bmVJbmZvcyBhcmUgcHJvY2Vzc2VkIGhlcmUuICBTbywgaXQgbXVzdCBnZXQg dGhlIHNldCBmcm9tIHRoZQorICogYWZvcmVtZW50aW9uZWQgUGFydGl0aW9uUHJ1bmVSZXN1bHQs IGluc3RlYWQgb2YgY29tcHV0aW5nIGl0IGFsbCBvdmVyCisgKiBhZ2FpbiBieSByZWRvaW5nIHRo ZSBpbml0aWFsIHBydW5pbmcuICBJdCdzIHRoZSBjYWxsZXIncyBqb2IgdG8gcGFzcyB0aGUKKyAq IFBhcnRpdGlvblBydW5lUmVzdWx0IHRvIHRoZSBleGVjdXRvci4KKyAqCisgKiBOb3RlOiBQYXJ0 aXRpb25lZCB0YWJsZXMgbWVudGlvbmVkIGluIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIG5vZGVz IHRoYXQKKyAqIGRyaXZlIHRoZSBwcnVuaW5nIHdpbGwgYmUgbG9ja2VkIGJlZm9yZSBkb2luZyB0 aGUgcHJ1bmluZy4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworTGlzdCAqCitFeGVjdXRvckRvSW5pdGlhbFBy dW5pbmcoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJ CQkJCSBCaXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpCit7CisJTGlzdAkgKnBhcnRfcHJ1 bmVfcmVzdWx0cyA9IE5JTDsKKwlMaXN0Q2VsbCAqbGM7CisKKwkvKiBPbmx5IGdldCBoZXJlIGlm IHRoZXJlIGlzIGFueSBwcnVuaW5nIHRvIGRvLiAqLworCUFzc2VydChwbGFubmVkc3RtdC0+Y29u dGFpbnNJbml0aWFsUHJ1bmluZyk7CisKKwlmb3JlYWNoKGxjLCBwbGFubmVkc3RtdC0+cGFydFBy dW5lSW5mb3MpCisJeworCQlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdF9u b2RlKFBhcnRpdGlvblBydW5lSW5mbywgbGMpOworCQlQYXJ0aXRpb25QcnVuZVJlc3VsdCAqcHJ1 bmVyZXN1bHQgPSBtYWtlTm9kZShQYXJ0aXRpb25QcnVuZVJlc3VsdCk7CisKKwkJcHJ1bmVyZXN1 bHQtPnZhbGlkX3N1YnBsYW5fb2ZmcyA9CisJCQlFeGVjUGFydGl0aW9uRG9Jbml0aWFsUHJ1bmlu ZyhwbGFubmVkc3RtdCwgcGFyYW1zLCBwcnVuZWluZm8sCisJCQkJCQkJCQkJICBzY2FuX2xlYWZw YXJ0X3J0aXMpOworCQlwYXJ0X3BydW5lX3Jlc3VsdHMgPSBsYXBwZW5kKHBhcnRfcHJ1bmVfcmVz dWx0cywgcHJ1bmVyZXN1bHQpOworCX0KKworCXJldHVybiBwYXJ0X3BydW5lX3Jlc3VsdHM7Cit9 CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjdXRvclN0YXJ0CkBAIC04MDYsNiArODU3LDcgQEAgSW5p dFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CiAJQ21kVHlwZQkJb3Bl cmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247CiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10 ID0gcXVlcnlEZXNjLT5wbGFubmVkc3RtdDsKKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jlc3VsdHMg PSBxdWVyeURlc2MtPnBhcnRfcHJ1bmVfcmVzdWx0czsKIAlQbGFuCSAgICpwbGFuID0gcGxhbm5l ZHN0bXQtPnBsYW5UcmVlOwogCUxpc3QJICAgKnJhbmdlVGFibGUgPSBwbGFubmVkc3RtdC0+cnRh YmxlOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7CkBAIC04MjYsNiAr ODc4LDcgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAKIAll c3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CiAJZXN0YXRlLT5lc19wYXJ0X3By dW5lX2luZm9zID0gcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOworCWVzdGF0ZS0+ZXNfcGFy dF9wcnVuZV9yZXN1bHRzID0gcGFydF9wcnVuZV9yZXN1bHRzOwogCiAJLyoKIAkgKiBOZXh0LCBi dWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyksIGlmIGFu eS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggYWNhMGM2ZjMyMy4uOTE3MDc5 YTAzNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTY2LDYgKzY2LDcgQEAK ICNkZWZpbmUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQJCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAw MDAwMDAwOCkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0pJVF9JTlNUUlVNRU5UQVRJT04gVUlOVDY0 Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA5KQogI2RlZmluZSBQQVJBTExFTF9LRVlfV0FMX1VTQUdF CQkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDBBKQorI2RlZmluZSBQQVJBTExFTF9LRVlf UEFSVElUSU9OX1BSVU5FX1JFU1VMVFMJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDBCKQog CiAjZGVmaW5lIFBBUkFMTEVMX1RVUExFX1FVRVVFX1NJWkUJCTY1NTM2CiAKQEAgLTE4Miw2ICsx ODMsNyBAQCBFeGVjU2VyaWFsaXplUGxhbihQbGFuICpwbGFuLCBFU3RhdGUgKmVzdGF0ZSkKIAlw c3RtdC0+dHJhbnNpZW50UGxhbiA9IGZhbHNlOwogCXBzdG10LT5kZXBlbmRzT25Sb2xlID0gZmFs c2U7CiAJcHN0bXQtPnBhcmFsbGVsTW9kZU5lZWRlZCA9IGZhbHNlOworCXBzdG10LT5jb250YWlu c0luaXRpYWxQcnVuaW5nID0gZmFsc2U7CiAJcHN0bXQtPnBsYW5UcmVlID0gcGxhbjsKIAlwc3Rt dC0+cGFydFBydW5lSW5mb3MgPSBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3M7CiAJcHN0bXQt PnJ0YWJsZSA9IGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGU7CkBAIC01OTcsMTIgKzU5OSwxNSBAQCBF eGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUs CiAJRml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3RhdGUgKmZwZXM7CiAJY2hhcgkgICAqcHN0bXRfZGF0 YTsKIAljaGFyCSAgICpwc3RtdF9zcGFjZTsKKwljaGFyCSAgICpwYXJ0X3BydW5lX3Jlc3VsdHNf ZGF0YTsKKwljaGFyCSAgICpwYXJ0X3BydW5lX3Jlc3VsdHNfc3BhY2U7CiAJY2hhcgkgICAqcGFy YW1saXN0aW5mb19zcGFjZTsKIAlCdWZmZXJVc2FnZSAqYnVmdXNhZ2Vfc3BhY2U7CiAJV2FsVXNh Z2UgICAqd2FsdXNhZ2Vfc3BhY2U7CiAJU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmlu c3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJU2hhcmVkSml0SW5zdHJ1bWVudGF0aW9uICpqaXRfaW5z dHJ1bWVudGF0aW9uID0gTlVMTDsKIAlpbnQJCQlwc3RtdF9sZW47CisJaW50CQkJcGFydF9wcnVu ZV9yZXN1bHRzX2xlbjsKIAlpbnQJCQlwYXJhbWxpc3RpbmZvX2xlbjsKIAlpbnQJCQlpbnN0cnVt ZW50YXRpb25fbGVuID0gMDsKIAlpbnQJCQlqaXRfaW5zdHJ1bWVudGF0aW9uX2xlbiA9IDA7CkBA IC02MzEsNiArNjM2LDcgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3Rh dGUsIEVTdGF0ZSAqZXN0YXRlLAogCiAJLyogRml4IHVwIGFuZCBzZXJpYWxpemUgcGxhbiB0byBi ZSBzZW50IHRvIHdvcmtlcnMuICovCiAJcHN0bXRfZGF0YSA9IEV4ZWNTZXJpYWxpemVQbGFuKHBs YW5zdGF0ZS0+cGxhbiwgZXN0YXRlKTsKKwlwYXJ0X3BydW5lX3Jlc3VsdHNfZGF0YSA9IG5vZGVU b1N0cmluZyhlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyk7CiAKIAkvKiBDcmVhdGUgYSBw YXJhbGxlbCBjb250ZXh0LiAqLwogCXBjeHQgPSBDcmVhdGVQYXJhbGxlbENvbnRleHQoInBvc3Rn cmVzIiwgIlBhcmFsbGVsUXVlcnlNYWluIiwgbndvcmtlcnMpOwpAQCAtNjU3LDYgKzY2MywxMSBA QCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3Rh dGUsCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBwc3RtdF9sZW4p OwogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKIAorCS8qIEVz dGltYXRlIHNwYWNlIGZvciBzZXJpYWxpemVkIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVSZXN1bHQu ICovCisJcGFydF9wcnVuZV9yZXN1bHRzX2xlbiA9IHN0cmxlbihwYXJ0X3BydW5lX3Jlc3VsdHNf ZGF0YSkgKyAxOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgcGFy dF9wcnVuZV9yZXN1bHRzX2xlbik7CisJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3Rp bWF0b3IsIDEpOworCiAJLyogRXN0aW1hdGUgc3BhY2UgZm9yIHNlcmlhbGl6ZWQgUGFyYW1MaXN0 SW5mby4gKi8KIAlwYXJhbWxpc3RpbmZvX2xlbiA9IEVzdGltYXRlUGFyYW1MaXN0U3BhY2UoZXN0 YXRlLT5lc19wYXJhbV9saXN0X2luZm8pOwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQt PmVzdGltYXRvciwgcGFyYW1saXN0aW5mb19sZW4pOwpAQCAtNzUxLDYgKzc2MiwxMiBAQCBFeGVj SW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJ bWVtY3B5KHBzdG10X3NwYWNlLCBwc3RtdF9kYXRhLCBwc3RtdF9sZW4pOwogCXNobV90b2NfaW5z ZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1BMQU5ORURTVE1ULCBwc3RtdF9zcGFjZSk7CiAK KwkvKiBTdG9yZSBzZXJpYWxpemVkIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVSZXN1bHQgKi8KKwlw YXJ0X3BydW5lX3Jlc3VsdHNfc3BhY2UgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgcGFy dF9wcnVuZV9yZXN1bHRzX2xlbik7CisJbWVtY3B5KHBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZSwg cGFydF9wcnVuZV9yZXN1bHRzX2RhdGEsIHBhcnRfcHJ1bmVfcmVzdWx0c19sZW4pOworCXNobV90 b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1BBUlRJVElPTl9QUlVORV9SRVNVTFRT LAorCQkJCSAgIHBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZSk7CisKIAkvKiBTdG9yZSBzZXJpYWxp emVkIFBhcmFtTGlzdEluZm8uICovCiAJcGFyYW1saXN0aW5mb19zcGFjZSA9IHNobV90b2NfYWxs b2NhdGUocGN4dC0+dG9jLCBwYXJhbWxpc3RpbmZvX2xlbik7CiAJc2htX3RvY19pbnNlcnQocGN4 dC0+dG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgcGFyYW1saXN0aW5mb19zcGFjZSk7 CkBAIC0xMjMyLDggKzEyNDksMTAgQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNobV90b2Mg KnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAkJCQkJCSBpbnQgaW5zdHJ1bWVudF9vcHRp b25zKQogewogCWNoYXIJICAgKnBzdG10c3BhY2U7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1 bHRzX3NwYWNlOwogCWNoYXIJICAgKnBhcmFtc3BhY2U7CiAJUGxhbm5lZFN0bXQgKnBzdG10Owor CUxpc3QJICAgKnBhcnRfcHJ1bmVfcmVzdWx0czsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtTEk7CiAJ Y2hhcgkgICAqcXVlcnlTdHJpbmc7CiAKQEAgLTEyNDQsMTIgKzEyNjMsMTcgQEAgRXhlY1BhcmFs bGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAlw c3RtdHNwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUExBTk5FRFNUTVQs IGZhbHNlKTsKIAlwc3RtdCA9IChQbGFubmVkU3RtdCAqKSBzdHJpbmdUb05vZGUocHN0bXRzcGFj ZSk7CiAKKwkvKiBSZWNvbnN0cnVjdCBsZWFkZXItc3VwcGxpZWQgUGFydGl0aW9uUHJ1bmVSZXN1 bHQuICovCisJcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNlID0KKwkJc2htX3RvY19sb29rdXAodG9j LCBQQVJBTExFTF9LRVlfUEFSVElUSU9OX1BSVU5FX1JFU1VMVFMsIGZhbHNlKTsKKwlwYXJ0X3By dW5lX3Jlc3VsdHMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUocGFydF9wcnVuZV9yZXN1bHRzX3Nw YWNlKTsKKwogCS8qIFJlY29uc3RydWN0IFBhcmFtTGlzdEluZm8uICovCiAJcGFyYW1zcGFjZSA9 IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUkFNTElTVElORk8sIGZhbHNlKTsK IAlwYXJhbUxJID0gUmVzdG9yZVBhcmFtTGlzdCgmcGFyYW1zcGFjZSk7CiAKIAkvKiBDcmVhdGUg YSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KLQlyZXR1cm4gQ3JlYXRlUXVlcnlEZXNjKHBz dG10LAorCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0cywK IAkJCQkJCSAgIHF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgR2V0QWN0aXZlU25hcHNob3QoKSwgSW52 YWxpZFNuYXBzaG90LAogCQkJCQkJICAgcmVjZWl2ZXIsIHBhcmFtTEksIE5VTEwsIGluc3RydW1l bnRfb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0 aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggODhkMGVh M2FkYi4uYmM4MzMxYTIyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAt MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCisjaW5jbHVkZSAicGFyc2VyL3Bh cnNldHJlZS5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgiCiAjaW5jbHVk ZSAicGFydGl0aW9uaW5nL3BhcnRkZXNjLmgiCiAjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRw cnVuZS5oIgpAQCAtMTg1LDcgKzE4NiwxMSBAQCBzdGF0aWMgY2hhciAqRXhlY0J1aWxkU2xvdFBh cnRpdGlvbktleURlc2NyaXB0aW9uKFJlbGF0aW9uIHJlbCwKIHN0YXRpYyBMaXN0ICphZGp1c3Rf cGFydGl0aW9uX2NvbG5vcyhMaXN0ICpjb2xub3MsIFJlc3VsdFJlbEluZm8gKmxlYWZfcGFydF9y cmkpOwogc3RhdGljIExpc3QgKmFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0 ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApOwogc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUg KkNyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsCi0JCQkJCQkJ CQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyk7CisJCQkJCQkJCQkJCQkJICBQ YXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbywKKwkJCQkJCQkJCQkJCQkgIGJvb2wgY29uc2lk ZXJfaW5pdGlhbF9zdGVwcywKKwkJCQkJCQkJCQkJCQkgIGJvb2wgY29uc2lkZXJfZXhlY19zdGVw cywKKwkJCQkJCQkJCQkJCQkgIExpc3QgKnJ0YWJsZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAor CQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uRGlyZWN0b3J5IHBhcnRkaXIpOwogc3RhdGljIHZvaWQg SW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQs CiAJCQkJCQkJCQkgIExpc3QgKnBydW5pbmdfc3RlcHMsCiAJCQkJCQkJCQkgIFBhcnRpdGlvbkRl c2MgcGFydGRlc2MsCkBAIC0xOTgsNyArMjAzLDggQEAgc3RhdGljIHZvaWQgUGFydGl0aW9uUHJ1 bmVGaXhTdWJQbGFuTWFwKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiBzdGF0aWMg dm9pZCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEg KnBydW5lZGF0YSwKIAkJCQkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1 bmUsCiAJCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAotCQkJCQkJCQkJCSAgIEJpdG1h cHNldCAqKnZhbGlkc3VicGxhbnMpOworCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3Vi cGxhbnMsCisJCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKTsKIAog CiAvKgpAQCAtMTc0OSw4ICsxNzU1LDEwIEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5n X21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKiBjb25zaWRlcmVkIHRvIGJl IGEgc3RhYmxlIGV4cHJlc3Npb24sIGl0IGNhbiBjaGFuZ2UgdmFsdWUgZnJvbSBvbmUgcGxhbgog ICogbm9kZSBzY2FuIHRvIHRoZSBuZXh0IGR1cmluZyBxdWVyeSBleGVjdXRpb24uICBTdGFibGUg Y29tcGFyaXNvbgogICogZXhwcmVzc2lvbnMgdGhhdCBkb24ndCBpbnZvbHZlIHN1Y2ggUGFyYW1z IGFsbG93IHBhcnRpdGlvbiBwcnVuaW5nIHRvIGJlCi0gKiBkb25lIG9uY2UgZHVyaW5nIGV4ZWN1 dG9yIHN0YXJ0dXAuICBFeHByZXNzaW9ucyB0aGF0IGRvIGludm9sdmUgc3VjaCBQYXJhbXMKLSAq IHJlcXVpcmUgdXMgdG8gcHJ1bmUgc2VwYXJhdGVseSBmb3IgZWFjaCBzY2FuIG9mIHRoZSBwYXJl bnQgcGxhbiBub2RlLgorICogZG9uZSBvbmNlIGR1cmluZyBleGVjdXRvciBzdGFydHVwIG9yIGR1 cmluZyBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSB0aGF0CisgKiBydW5zIGFzIHBhcnQgb2Yg cGVyZm9ybWluZyBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIG9uIGEgZ2l2ZW4gcGxhbiB0cmVlLgor ICogRXhwcmVzc2lvbnMgdGhhdCBkbyBpbnZvbHZlIHN1Y2ggUGFyYW1zIHJlcXVpcmUgdXMgdG8g cHJ1bmUgc2VwYXJhdGVseSBmb3IKKyAqIGVhY2ggc2NhbiBvZiB0aGUgcGFyZW50IHBsYW4gbm9k ZS4KICAqCiAgKiBOb3RlIHRoYXQgcHJ1bmluZyBhd2F5IHVubmVlZGVkIHN1YnBsYW5zIGR1cmlu ZyBleGVjdXRvciBzdGFydHVwIGhhcyB0aGUKICAqIGFkZGVkIGJlbmVmaXQgb2Ygbm90IGhhdmlu ZyB0byBpbml0aWFsaXplIHRoZSB1bm5lZWRlZCBzdWJwbGFucyBhdCBhbGwuCkBAIC0xNzY3LDYg KzE3NzUsMTMgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5v cywgQXR0ck1hcCAqYXR0ck1hcCkKICAqCQlhY2NvdW50IGZvciBpbml0aWFsIHBydW5pbmcgcG9z c2libHkgaGF2aW5nIGVsaW1pbmF0ZWQgc29tZSBvZiB0aGUKICAqCQlzdWJwbGFucy4KICAqCisg KiBFeGVjUGFydGl0aW9uRG9Jbml0aWFsUHJ1bmluZzoKKyAqCQlEbyBpbml0aWFsIHBydW5pbmcg d2l0aCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIGEgZ2l2ZW4KKyAqCQlQYXJ0aXRpb25Q cnVuZUluZm8gdG8gZGV0ZXJtaW5lIHRoZSBtaW5pbWFsIHNldCBvZiBjaGlsZCBzdWJwbGFucwor ICoJCXRvIGJlIGV4ZWN1dGVkIG9mIHRoZSBwYXJlbnQgcGxhbiBub2RlIHRvIHdoaWNoIHRoZSBQ YXJ0aXRpb25QcnVuZUluZm8KKyAqCQliZWxvbmdzIGFuZCBhbHNvIHRoZSBzZXQgb2YgdGhlIFJU IGluZGV4ZXMgb2YgbGVhZiBwYXJ0aXRpb25zIHRoYXQgd2lsbAorICoJCWJlIHNjYW5uZWQgd2l0 aCB0aG9zZSBzdWJwbGFucy4KKyAqCiAgKiBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnM6CiAgKgkJ UmV0dXJucyBpbmRleGVzIG9mIG1hdGNoaW5nIHN1YnBsYW5zIGFmdGVyIGV2YWx1YXRpbmcgdGhl IGV4cHJlc3Npb25zCiAgKgkJdGhhdCBhcmUgc2FmZSB0byBldmFsdWF0ZSBhdCBhIGdpdmVuIHBv aW50LiAgVGhpcyBmdW5jdGlvbiBpcyBmaXJzdApAQCAtMTc4Nyw4ICsxODAyLDkgQEAgYWRqdXN0 X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1h cCkKICAqCiAgKiBPbiByZXR1cm4sICppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgaXMgYXNzaWdu ZWQgdGhlIHNldCBvZiBpbmRleGVzIG9mCiAgKiBjaGlsZCBzdWJwbGFucyB0aGF0IG11c3QgYmUg aW5pdGlhbGl6ZWQgYWxvbmcgd2l0aCB0aGUgcGFyZW50IHBsYW4gbm9kZS4KLSAqIEluaXRpYWwg cHJ1bmluZyBpcyBwZXJmb3JtZWQgaGVyZSBpZiBuZWVkZWQgYW5kIGluIHRoYXQgY2FzZSBvbmx5 IHRoZQotICogc3Vydml2aW5nIHN1YnBsYW5zJyBpbmRleGVzIGFyZSBhZGRlZC4KKyAqIEluaXRp YWwgcHJ1bmluZyBpcyBwZXJmb3JtZWQgaGVyZSBpZiBuZWVkZWQgKHVubGVzcyBpdCBoYXMgYWxy ZWFkeSBiZWVuIGRvbmUKKyAqIGJ5IEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpKSwgYW5kIGlu IHRoYXQgY2FzZSBvbmx5IHRoZSBzdXJ2aXZpbmcKKyAqIHN1YnBsYW5zJyBpbmRleGVzIGFyZSBh ZGRlZC4KICAqCiAgKiBJZiBzdWJwbGFucyBhcmUgaW5kZWVkIHBydW5lZCwgc3VicGxhbl9tYXAg YXJyYXlzIGNvbnRhaW5lZCBpbiB0aGUgcmV0dXJuZWQKICAqIFBhcnRpdGlvblBydW5lU3RhdGUg YXJlIHJlLXNlcXVlbmNlZCB0byBub3QgY291bnQgdGhvc2UsIHRob3VnaCBvbmx5IGlmIHRoZQpA QCAtMTgwMSw5ICsxODE3LDEwIEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUg KnBsYW5zdGF0ZSwKIAkJCQkJCSBCaXRtYXBzZXQgKnJvb3RfcGFyZW50X3JlbGlkcywKIAkJCQkJ CSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpCiB7Ci0JUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKKwlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlID0g TlVMTDsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7CiAJUGFydGl0aW9u UHJ1bmVJbmZvICpwcnVuZWluZm87CisJUGFydGl0aW9uUHJ1bmVSZXN1bHQgKnBydW5lcmVzdWx0 ID0gTlVMTDsKIAogCS8qIE9idGFpbiB0aGUgcHJ1bmVpbmZvIHdlIG5lZWQsIGFuZCBtYWtlIHN1 cmUgaXQncyB0aGUgcmlnaHQgb25lICovCiAJcHJ1bmVpbmZvID0gbGlzdF9udGgoZXN0YXRlLT5l c19wYXJ0X3BydW5lX2luZm9zLCBwYXJ0X3BydW5lX2luZGV4KTsKQEAgLTE4MTksMjAgKzE4MzYs NTYgQEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCS8q IFdlIG1heSBuZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24g ZXhwcnMgKi8KIAlFeGVjQXNzaWduRXhwckNvbnRleHQoZXN0YXRlLCBwbGFuc3RhdGUpOwogCi0J LyogQ3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3RydWN0dXJlIGZvciBwcnVuaW5nICovCi0JcHJ1 bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUocGxhbnN0YXRlLCBwcnVuZWluZm8p OworCS8qCisJICogTm8gbmVlZCB0byBkbyBpbml0aWFsIHBydW5pbmcgaWYgaXQgd2FzIGRvbmUg YWxyZWFkeSBieQorCSAqIEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpLCB3aGljaCBpdCB3b3Vs ZCBiZSBpZiBlc19wYXJ0X3BydW5lX3Jlc3VsdHMKKwkgKiBpcyBzZXQuCisJICovCisJaWYgKGVz dGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzKQorCQlwcnVuZXJlc3VsdCA9IGxpc3RfbnRoX25v ZGUoUGFydGl0aW9uUHJ1bmVSZXN1bHQsCisJCQkJCQkJCQllc3RhdGUtPmVzX3BhcnRfcHJ1bmVf cmVzdWx0cywKKwkJCQkJCQkJCXBhcnRfcHJ1bmVfaW5kZXgpOworCisJaWYgKHBydW5lcmVzdWx0 ID09IE5VTEwgfHwgcHJ1bmVpbmZvLT5uZWVkc19leGVjX3BydW5pbmcpCisJeworCQkvKiBXZSBt YXkgbmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQgdG8gZXZhbHVhdGUgcGFydGl0aW9uIGV4cHJz ICovCisJCUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsIHBsYW5zdGF0ZSk7CisKKwkJLyog Rm9yIGRhdGEgcmVhZGluZywgZXhlY3V0b3IgYWx3YXlzIG9taXRzIGRldGFjaGVkIHBhcnRpdGlv bnMgKi8KKwkJaWYgKGVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSA9PSBOVUxMKQorCQkJ ZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID0KKwkJCQlDcmVhdGVQYXJ0aXRpb25EaXJl Y3RvcnkoZXN0YXRlLT5lc19xdWVyeV9jeHQsIGZhbHNlKTsKKworCQkvKgorCQkgKiBDcmVhdGUg dGhlIHdvcmtpbmcgZGF0YSBzdHJ1Y3R1cmUgZm9yIHBydW5pbmcuICBObyBuZWVkIHRvIGNvbnNp ZGVyCisJCSAqIGluaXRpYWwgcHJ1bmluZyBzdGVwcyBpZiB3ZSBoYXZlIGEgUGFydGl0aW9uUHJ1 bmVSZXN1bHQuCisJCSAqLworCQlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0 ZShwbGFuc3RhdGUsIHBydW5laW5mbywKKwkJCQkJCQkJCQkJICAgcHJ1bmVyZXN1bHQgPT0gTlVM TCwKKwkJCQkJCQkJCQkJICAgcHJ1bmVpbmZvLT5uZWVkc19leGVjX3BydW5pbmcsCisJCQkJCQkJ CQkJCSAgIE5JTCwgcGxhbnN0YXRlLT5wc19FeHByQ29udGV4dCwKKwkJCQkJCQkJCQkJICAgZXN0 YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5KTsKKwl9CiAKIAkvKgogCSAqIFBlcmZvcm0gYW4g aW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmUgcGFzcywgaWYgcmVxdWlyZWQuCiAJICovCi0JaWYgKHBy dW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUpCi0JCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMg PSBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSk7CisJaWYgKHBydW5l cmVzdWx0KQorCXsKKwkJKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyA9IGJtc19jb3B5KHBydW5l cmVzdWx0LT52YWxpZF9zdWJwbGFuX29mZnMpOworCX0KKwllbHNlIGlmIChwcnVuZXN0YXRlICYm IHBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUpCisJeworCQkqaW5pdGlhbGx5X3ZhbGlkX3N1 YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBydW5lc3RhdGUsIHRydWUsCisJCQkJ CQkJCQkJCQkJCQkgTlVMTCk7CisJfQogCWVsc2UKIAl7Ci0JCS8qIE5vIHBydW5pbmcsIHNvIHdl J2xsIG5lZWQgdG8gaW5pdGlhbGl6ZSBhbGwgc3VicGxhbnMgKi8KKwkJLyogTm8gaW5pdGlhbCBw cnVuaW5nLCBzbyB3ZSdsbCBuZWVkIHRvIGluaXRpYWxpemUgYWxsIHN1YnBsYW5zICovCiAJCUFz c2VydChuX3RvdGFsX3N1YnBsYW5zID4gMCk7CiAJCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMg PSBibXNfYWRkX3JhbmdlKE5VTEwsIDAsCiAJCQkJCQkJCQkJCQkgIG5fdG90YWxfc3VicGxhbnMg LSAxKTsKKwkJcmV0dXJuIHBydW5lc3RhdGU7CiAJfQogCiAJLyoKQEAgLTE4NDAsNyArMTg5Myw4 IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkgKiB0 aGF0IHdlcmUgcmVtb3ZlZCBhYm92ZSBkdWUgdG8gaW5pdGlhbCBwcnVuaW5nLiAgTm8gbmVlZCB0 byBkbyB0aGlzIGlmCiAJICogbm8gc3RlcHMgd2VyZSByZW1vdmVkLgogCSAqLwotCWlmIChibXNf bnVtX21lbWJlcnMoKmluaXRpYWxseV92YWxpZF9zdWJwbGFucykgPCBuX3RvdGFsX3N1YnBsYW5z KQorCWlmIChwcnVuZXN0YXRlICYmCisJCWJtc19udW1fbWVtYmVycygqaW5pdGlhbGx5X3ZhbGlk X3N1YnBsYW5zKSA8IG5fdG90YWxfc3VicGxhbnMpCiAJewogCQkvKgogCQkgKiBXZSBjYW4gc2Fm ZWx5IHNraXAgdGhpcyB3aGVuICFkb19leGVjX3BydW5lLCBldmVuIHRob3VnaCB0aGF0CkBAIC0x ODU2LDExICsxOTEwLDc0IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBs YW5zdGF0ZSwKIAlyZXR1cm4gcHJ1bmVzdGF0ZTsKIH0KIAorLyoKKyAqIEV4ZWNQYXJ0aXRpb25E b0luaXRpYWxQcnVuaW5nCisgKgkJUGVyZm9ybSBpbml0aWFsIHBydW5pbmcgdXNpbmcgZ2l2ZW4g UGFydGl0aW9uUHJ1bmVJbmZvIHRvIGRldGVybWluZQorICoJCXRoZSBtaW5pbWFsIHNldCBvZiBj aGlsZCBzdWJwbGFucyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYW5kIGFsc28gdGhlCisgKgkJc2V0 IG9mIFJUIGluZGV4ZXMgb2YgdGhlIGxlYWYgcGFydGl0aW9ucyBzY2FubmVkIGJ5IHRob3NlIHN1 YnBsYW5zLgorICovCitCaXRtYXBzZXQgKgorRXhlY1BhcnRpdGlvbkRvSW5pdGlhbFBydW5pbmco UGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJCQkJCQkg IFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJCSAgQml0bWFwc2V0ICoqc2Nh bl9sZWFmcGFydF9ydGlzKQoreworCUxpc3QJCSAqcnRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJs ZTsKKwlFeHByQ29udGV4dAkgKmVjb250ZXh0OworCVBhcnRpdGlvbkRpcmVjdG9yeSBwZGlyOwor CU1lbW9yeUNvbnRleHQgb2xkY29udGV4dCwKKwkJCQkgIHRtcGNvbnRleHQ7CisJUGFydGl0aW9u UHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKKwlCaXRtYXBzZXQJICp2YWxpZF9zdWJwbGFuX29mZnM7 CisKKwkvKgorCSAqIEEgdGVtcG9yYXJ5IGNvbnRleHQgZm9yIG1lbW9yeSBhbGxvY2F0aW9ucyBy ZXF1aXJlZCB3aGlsZSBleGVjdXRpbmcKKwkgKiBwYXJ0aXRpb24gcHJ1bmluZyBzdGVwcy4KKwkg Ki8KKwl0bXBjb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250 ZXh0LAorCQkJCQkJCQkJICAgImluaXRpYWwgcHJ1bmluZyB3b3JraW5nIGRhdGEiLAorCQkJCQkJ CQkJICAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyh0bXBjb250ZXh0KTsKKworCS8qCisJICogUGFydGl0aW9uRGlyZWN0b3J5IHRv IGxvb2sgdXAgcGFydGl0aW9uIGRlc2NyaXB0b3JzLgorCSAqIE5vdGUgdGhhdCB3ZSBkb24ndCBv bWl0IGRldGFjaGVkIHBhcnRpdGlvbnMsIGp1c3QgbGlrZSBkdXJpbmcKKwkgKiBleGVjdXRpb24g cHJvcGVyLgorCSAqLworCXBkaXIgPSBDcmVhdGVQYXJ0aXRpb25EaXJlY3RvcnkoQ3VycmVudE1l bW9yeUNvbnRleHQsIGZhbHNlKTsKKworCS8qCisJICogV2UgZG9uJ3QgeWV0IGhhdmUgYSBQbGFu U3RhdGUgZm9yIHRoZSBwYXJlbnQgcGxhbiBub2RlLCBzbyB3ZSBtdXN0CisJICogY3JlYXRlIGEg c3RhbmRhbG9uZSBFeHByQ29udGV4dCB0byBldmFsdWF0ZSBwcnVuaW5nIGV4cHJlc3Npb25zLAor CSAqIGVxdWlwcGVkIHdpdGggdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBFWFRFUk4gcGFyYW1l dGVycyB0aGF0IHRoZQorCSAqIGNhbGxlciBwYXNzZWQgdXMuICBOb3RlIHRoYXQgdGhhdCdzIG9r YXkgYmVjYXVzZSB0aGUgaW5pdGlhbCBwcnVuaW5nCisJICogc3RlcHMgZG8gbm90IGNvbnRhaW4g YW55dGhpbmcgdGhhdCByZXF1aXJlcyB0aGUgZXhlY3V0aW9uIHRvIGhhdmUKKwkgKiBzdGFydGVk IGFuZCB0aHVzIG5lZWQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiBhIFBsYW5TdGF0ZS4K KwkgKi8KKwllY29udGV4dCA9IENyZWF0ZVN0YW5kYWxvbmVFeHByQ29udGV4dCgpOworCWVjb250 ZXh0LT5lY3h0X3BhcmFtX2xpc3RfaW5mbyA9IHBhcmFtczsKKwlwcnVuZXN0YXRlID0gQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZShOVUxMLCBwcnVuZWluZm8sIHRydWUsIGZhbHNlLAorCQkJCQkJ CQkJCSAgIHJ0YWJsZSwgZWNvbnRleHQsIHBkaXIpOworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjb250ZXh0KTsKKworCS8qIERvIHRoZSBpbml0aWFsIHBydW5pbmcuICovCisJdmFsaWRfc3Vi cGxhbl9vZmZzID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBydW5lc3RhdGUsIHRydWUsCisJ CQkJCQkJCQkJCQkgIHNjYW5fbGVhZnBhcnRfcnRpcyk7CisKKwlGcmVlRXhwckNvbnRleHQoZWNv bnRleHQsIHRydWUpOworCURlc3Ryb3lQYXJ0aXRpb25EaXJlY3RvcnkocGRpcik7CisJTWVtb3J5 Q29udGV4dERlbGV0ZSh0bXBjb250ZXh0KTsKKworCXJldHVybiB2YWxpZF9zdWJwbGFuX29mZnM7 Cit9CisKIC8qCiAgKiBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlCiAgKgkJQnVpbGQgdGhlIGRh dGEgc3RydWN0dXJlIHJlcXVpcmVkIGZvciBjYWxsaW5nIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFu cwogICoKLSAqICdwbGFuc3RhdGUnIGlzIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3MgZXhlY3V0aW9u IHN0YXRlLgorICogJ3BsYW5zdGF0ZScsIGlmIG5vdCBOVUxMLCBpcyB0aGUgcGFyZW50IHBsYW4g bm9kZSdzIGV4ZWN1dGlvbiBzdGF0ZS4gIEl0CisgKiBjYW4gYmUgTlVMTCBpZiBiZWluZyBjYWxs ZWQgYmVmb3JlIEV4ZWN1dG9yU3RhcnQoKSwgaW4gd2hpY2ggY2FzZSwKKyAqICdydGFibGUnIChy YW5nZSB0YWJsZSksICdlY29udGV4dCcsIGFuZCAncGFydGRpcicgbXVzdCBiZSBleHBsaWNpdGx5 CisgKiBwcm92aWRlZC4KICAqCiAgKiAncHJ1bmVpbmZvJyBpcyBhIFBhcnRpdGlvblBydW5lSW5m byBhcyBnZW5lcmF0ZWQgYnkKICAqIG1ha2VfcGFydGl0aW9uX3BydW5laW5mby4gIEhlcmUgd2Ug YnVpbGQgYSBQYXJ0aXRpb25QcnVuZVN0YXRlIGNvbnRhaW5pbmcgYQpAQCAtMTg3NCwxOSArMTk5 MSwyMSBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAg KiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mby4KICAqLwogc3RhdGljIFBhcnRpdGlvblBydW5lU3Rh dGUgKgotQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFy dGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCitDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBs YW5TdGF0ZSAqcGxhbnN0YXRlLAorCQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bywKKwkJCQkJCSAgYm9vbCBjb25zaWRlcl9pbml0aWFsX3N0ZXBzLAorCQkJCQkJICBib29sIGNv bnNpZGVyX2V4ZWNfc3RlcHMsCisJCQkJCQkgIExpc3QgKnJ0YWJsZSwgRXhwckNvbnRleHQgKmVj b250ZXh0LAorCQkJCQkJICBQYXJ0aXRpb25EaXJlY3RvcnkgcGFydGRpcikKIHsKLQlFU3RhdGUJ ICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7CisJRVN0YXRlCSAgICplc3RhdGUgPSBwbGFu c3RhdGUgPyBwbGFuc3RhdGUtPnN0YXRlIDogTlVMTDsKIAlQYXJ0aXRpb25QcnVuZVN0YXRlICpw cnVuZXN0YXRlOwogCWludAkJCW5fcGFydF9oaWVyYXJjaGllczsKIAlMaXN0Q2VsbCAgICpsYzsK IAlpbnQJCQlpOwotCUV4cHJDb250ZXh0ICplY29udGV4dCA9IHBsYW5zdGF0ZS0+cHNfRXhwckNv bnRleHQ7CiAKLQkvKiBGb3IgZGF0YSByZWFkaW5nLCBleGVjdXRvciBhbHdheXMgb21pdHMgZGV0 YWNoZWQgcGFydGl0aW9ucyAqLwotCWlmIChlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3Rvcnkg PT0gTlVMTCkKLQkJZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID0KLQkJCUNyZWF0ZVBh cnRpdGlvbkRpcmVjdG9yeShlc3RhdGUtPmVzX3F1ZXJ5X2N4dCwgZmFsc2UpOworCUFzc2VydCgo ZXN0YXRlICE9IE5VTEwpIHx8CisJCQkocGFydGRpciAhPSBOVUxMICYmIGVjb250ZXh0ICE9IE5V TEwgJiYgcnRhYmxlICE9IE5JTCkpOwogCiAJbl9wYXJ0X2hpZXJhcmNoaWVzID0gbGlzdF9sZW5n dGgocHJ1bmVpbmZvLT5wcnVuZV9pbmZvcyk7CiAJQXNzZXJ0KG5fcGFydF9oaWVyYXJjaGllcyA+ IDApOwpAQCAtMTk0MSwxNSArMjA2MCw0MiBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBs YW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCVBh cnRpdGlvbktleSBwYXJ0a2V5OwogCiAJCQkvKgotCQkJICogV2UgY2FuIHJlbHkgb24gdGhlIGNv cGllcyBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUncyBwYXJ0aXRpb24KLQkJCSAqIGtleSBhbmQg cGFydGl0aW9uIGRlc2NyaXB0b3IgYXBwZWFyaW5nIGluIGl0cyByZWxjYWNoZSBlbnRyeSwKLQkJ CSAqIGJlY2F1c2UgdGhhdCBlbnRyeSB3aWxsIGJlIGhlbGQgb3BlbiBhbmQgbG9ja2VkIGZvciB0 aGUKLQkJCSAqIGR1cmF0aW9uIG9mIHRoaXMgZXhlY3V0b3IgcnVuLgorCQkJICogTXVzdCBvcGVu IHRoZSByZWxhdGlvbiBieSBvdXJzZWx2ZXMgd2hlbiBjYWxsZWQgYmVmb3JlIHRoZQorCQkJICog ZXhlY3V0aW9uIGhhcyBzdGFydGVkLCBzdWNoIGFzLCB3aGVuIGNhbGxlZCBkdXJpbmcKKwkJCSAq IEV4ZWN1dG9yRG9Jbml0aWFsUHJ1bmluZygpIG9uIGEgY2FjaGVkIHBsYW4uICBJbiB0aGF0IGNh c2UsCisJCQkgKiBzdWItcGFydGl0aW9ucyBtdXN0IGJlIGxvY2tlZCwgYmVjYXVzZSBBY3F1aXJl UGxhbm5lckxvY2tzKCkKKwkJCSAqIHdvdWxkIG5vdCBoYXZlIHNlZW4gdGhlbS4gKDFzdCByZWxh dGlvbiBpbiBhIHBhcnRyZWxwcnVuZWluZm9zCisJCQkgKiBsaXN0IGlzIGFsd2F5cyB0aGUgcm9v dCBwYXJ0aXRpb25lZCB0YWJsZSBhcHBlYXJpbmcgaW4gdGhlCisJCQkgKiBxdWVyeSwgd2hpY2gg QWNxdWlyZVBsYW5uZXJMb2NrcygpIHdvdWxkIGhhdmUgbG9ja2VkOyB0aGUKKwkJCSAqIEFzc2Vy dCBpbiByZWxhdGlvbl9vcGVuKCkgZ3VhcmRzIHRoYXQgYXNzdW1wdGlvbi4pCisJCQkgKi8KKwkJ CWlmIChlc3RhdGUgPT0gTlVMTCkKKwkJCXsKKwkJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBydF9m ZXRjaChwaW5mby0+cnRpbmRleCwgcnRhYmxlKTsKKwkJCQlpbnQJCWxvY2ttb2RlID0gKGogPT0g MCkgPyBOb0xvY2sgOiBydGUtPnJlbGxvY2ttb2RlOworCisJCQkJcGFydHJlbCA9IHRhYmxlX29w ZW4ocnRlLT5yZWxpZCwgbG9ja21vZGUpOworCQkJfQorCQkJZWxzZQorCQkJCXBhcnRyZWwgPSBF eGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcGluZm8tPnJ0aW5kZXgpOworCisJCQkv KgorCQkJICogV2UgY2FuIHJlbHkgb24gdGhlIGNvcHkgb2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxl J3MgcGFydGl0aW9uCisJCQkgKiBrZXkgZnJvbSBpbiBpdHMgcmVsY2FjaGUgZW50cnksIGJlY2F1 c2UgaXQgY2FuJ3QgY2hhbmdlIChvcgorCQkJICogZ2V0IGRlc3Ryb3llZCkgYXMgbG9uZyBhcyB0 aGUgcmVsYXRpb24gaXMgbG9ja2VkLiAgUGFydGl0aW9uCisJCQkgKiBkZXNjcmlwdG9yIGlzIHRh a2VuIGZyb20gdGhlIFBhcnRpdGlvbkRpcmVjdG9yeSBhc3NvY2lhdGVkIHdpdGgKKwkJCSAqIHRo ZSB0YWJsZSB0aGF0IGlzIGhlbGQgb3BlbiBsb25nIGVub3VnaCBmb3IgdGhlIGRlc2NyaXB0b3Ig dG8KKwkJCSAqIHJlbWFpbiB2YWxpZCB3aGlsZSBpdCdzIHVzZWQgdG8gcGVyZm9ybSB0aGUgcHJ1 bmluZyBzdGVwcy4KIAkJCSAqLwotCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRp b24oZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7CiAJCQlwYXJ0a2V5ID0gUmVsYXRpb25HZXRQYXJ0 aXRpb25LZXkocGFydHJlbCk7Ci0JCQlwYXJ0ZGVzYyA9IFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1 cChlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnksCi0JCQkJCQkJCQkJCQlwYXJ0cmVsKTsK KwkJCXBhcnRkZXNjID0gUGFydGl0aW9uRGlyZWN0b3J5TG9va3VwKHBhcnRkaXIsIHBhcnRyZWwp OworCisJCQkvKgorCQkJICogTXVzdCBjbG9zZSBwYXJ0cmVsLCBrZWVwaW5nIHRoZSBsb2NrIHRh a2VuLCBpZiB3ZSdyZSBub3QgdXNpbmcKKwkJCSAqIEVTdGF0ZSdzIGVudHJ5LgorCQkJICovCisJ CQlpZiAoZXN0YXRlID09IE5VTEwpCisJCQkJdGFibGVfY2xvc2UocGFydHJlbCwgTm9Mb2NrKTsK IAogCQkJLyoKIAkJCSAqIEluaXRpYWxpemUgdGhlIHN1YnBsYW5fbWFwIGFuZCBzdWJwYXJ0X21h cC4KQEAgLTE5NjMsNiArMjEwOSw3IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0 YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJQXNzZXJ0 KHBhcnRkZXNjLT5ucGFydHMgPj0gcGluZm8tPm5wYXJ0cyk7CiAJCQlwcHJ1bmUtPm5wYXJ0cyA9 IHBhcnRkZXNjLT5ucGFydHM7CiAJCQlwcHJ1bmUtPnN1YnBsYW5fbWFwID0gcGFsbG9jKHNpemVv ZihpbnQpICogcGFydGRlc2MtPm5wYXJ0cyk7CisJCQlwcHJ1bmUtPnJ0aV9tYXAgPSBwYWxsb2Mo c2l6ZW9mKEluZGV4KSAqIHBhcnRkZXNjLT5ucGFydHMpOwogCQkJaWYgKHBhcnRkZXNjLT5ucGFy dHMgPT0gcGluZm8tPm5wYXJ0cykKIAkJCXsKIAkJCQkvKgpAQCAtMTk3Myw2ICsyMTIwLDggQEAg Q3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9u UHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJcHBydW5lLT5zdWJwYXJ0X21hcCA9IHBpbmZvLT5z dWJwYXJ0X21hcDsKIAkJCQltZW1jcHkocHBydW5lLT5zdWJwbGFuX21hcCwgcGluZm8tPnN1YnBs YW5fbWFwLAogCQkJCQkgICBzaXplb2YoaW50KSAqIHBpbmZvLT5ucGFydHMpOworCQkJCW1lbWNw eShwcHJ1bmUtPnJ0aV9tYXAsIHBpbmZvLT5ydGlfbWFwLAorCQkJCQkgICBzaXplb2YoaW50KSAq IHBpbmZvLT5ucGFydHMpOwogCiAJCQkJLyoKIAkJCQkgKiBEb3VibGUtY2hlY2sgdGhhdCB0aGUg bGlzdCBvZiB1bnBydW5lZCByZWxhdGlvbnMgaGFzIG5vdApAQCAtMjAyMyw2ICsyMTcyLDggQEAg Q3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9u UHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJCQkJcGluZm8tPnN1YnBsYW5fbWFwW3BkX2lkeF07 CiAJCQkJCQlwcHJ1bmUtPnN1YnBhcnRfbWFwW3BwX2lkeF0gPQogCQkJCQkJCXBpbmZvLT5zdWJw YXJ0X21hcFtwZF9pZHhdOworCQkJCQkJcHBydW5lLT5ydGlfbWFwW3BwX2lkeF0gPQorCQkJCQkJ CXBpbmZvLT5ydGlfbWFwW3BkX2lkeF07CiAJCQkJCQlwZF9pZHgrKzsKIAkJCQkJfQogCQkJCQll bHNlCkBAIC0yMDMwLDYgKzIxODEsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQkJCS8q IHRoaXMgcGFydGRlc2MgZW50cnkgaXMgbm90IGluIHRoZSBwbGFuICovCiAJCQkJCQlwcHJ1bmUt PnN1YnBsYW5fbWFwW3BwX2lkeF0gPSAtMTsKIAkJCQkJCXBwcnVuZS0+c3VicGFydF9tYXBbcHBf aWR4XSA9IC0xOworCQkJCQkJcHBydW5lLT5ydGlfbWFwW3BwX2lkeF0gPSAwOwogCQkJCQl9CiAJ CQkJfQogCkBAIC0yMDUxLDcgKzIyMDMsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBs YW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCSAq IEluaXRpYWxpemUgcHJ1bmluZyBjb250ZXh0cyBhcyBuZWVkZWQuCiAJCQkgKi8KIAkJCXBwcnVu ZS0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzID0gcGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwczsK LQkJCWlmIChwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzKQorCQkJaWYgKGNvbnNpZGVyX2lu aXRpYWxfc3RlcHMgJiYgcGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcykKIAkJCXsKIAkJCQlJ bml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1bmUtPmluaXRpYWxfY29udGV4dCwKIAkJCQkJ CQkJCQkgIHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMsCkBAIC0yMDYxLDcgKzIyMTMsNyBA QCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRp b25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCQlwcnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5l ID0gdHJ1ZTsKIAkJCX0KIAkJCXBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzID0gcGluZm8tPmV4 ZWNfcHJ1bmluZ19zdGVwczsKLQkJCWlmIChwaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzKQorCQkJ aWYgKGNvbnNpZGVyX2V4ZWNfc3RlcHMgJiYgcGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwcykKIAkJ CXsKIAkJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1bmUtPmV4ZWNfY29udGV4dCwK IAkJCQkJCQkJCQkgIHBpbmZvLT5leGVjX3BydW5pbmdfc3RlcHMsCkBAIC0yMjg5LDEwICsyNDQx LDE0IEBAIFBhcnRpdGlvblBydW5lRml4U3ViUGxhbk1hcChQYXJ0aXRpb25QcnVuZVN0YXRlICpw cnVuZXN0YXRlLAogICogUGFzcyBpbml0aWFsX3BydW5lIGlmIFBBUkFNX0VYRUMgUGFyYW1zIGNh bm5vdCB5ZXQgYmUgZXZhbHVhdGVkLiAgVGhpcwogICogZGlmZmVyZW50aWF0ZXMgdGhlIGluaXRp YWwgZXhlY3V0b3ItdGltZSBwcnVuaW5nIHN0ZXAgZnJvbSBsYXRlcgogICogcnVudGltZSBwcnVu aW5nLgorICoKKyAqIFJUIGluZGV4ZXMgb2YgbGVhZiBwYXJ0aXRpb25zIHNjYW5uZWQgYnkgdGhl IGNob3NlbiBzdWJwbGFucyBhcmUgYWRkZWQgdG8KKyAqICpzY2FuX2xlYWZwYXJ0X3J0aXMgaWYg dGhlIHBvaW50ZXIgaXMgbm9uLU5VTEwuCiAgKi8KIEJpdG1hcHNldCAqCiBFeGVjRmluZE1hdGNo aW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKLQkJCQkJCSBib29s IGluaXRpYWxfcHJ1bmUpCisJCQkJCQkgYm9vbCBpbml0aWFsX3BydW5lLAorCQkJCQkJIEJpdG1h cHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcykKIHsKIAlCaXRtYXBzZXQgICpyZXN1bHQgPSBOVUxM OwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKQEAgLTIzMjcsNyArMjQ4Myw3IEBAIEV4ZWNG aW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCQkg Ki8KIAkJcHBydW5lID0gJnBydW5lZGF0YS0+cGFydHJlbHBydW5lZGF0YVswXTsKIAkJZmluZF9t YXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5lZGF0YSwgcHBydW5lLCBpbml0aWFsX3BydW5l LAotCQkJCQkJCQkJICAgJnJlc3VsdCk7CisJCQkJCQkJCQkgICAmcmVzdWx0LCBzY2FuX2xlYWZw YXJ0X3J0aXMpOwogCiAJCS8qIEV4cHJlc3Npb24gZXZhbCBtYXkgaGF2ZSB1c2VkIHNwYWNlIGlu IEV4cHJDb250ZXh0IHRvbyAqLwogCQlpZiAocHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMpCkBA IC0yMzQxLDYgKzI0OTcsOCBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAogCS8qIENvcHkgcmVzdWx0IG91dCBvZiB0aGUgdGVtcCBj b250ZXh0IGJlZm9yZSB3ZSByZXNldCBpdCAqLwogCXJlc3VsdCA9IGJtc19jb3B5KHJlc3VsdCk7 CisJaWYgKHNjYW5fbGVhZnBhcnRfcnRpcykKKwkJKnNjYW5fbGVhZnBhcnRfcnRpcyA9IGJtc19j b3B5KCpzY2FuX2xlYWZwYXJ0X3J0aXMpOwogCiAJTWVtb3J5Q29udGV4dFJlc2V0KHBydW5lc3Rh dGUtPnBydW5lX2NvbnRleHQpOwogCkBAIC0yMzUxLDEzICsyNTA5LDE1IEBAIEV4ZWNGaW5kTWF0 Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogICogZmluZF9t YXRjaGluZ19zdWJwbGFuc19yZWN1cnNlCiAgKgkJUmVjdXJzaXZlIHdvcmtlciBmdW5jdGlvbiBm b3IgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zCiAgKgotICogQWRkcyB2YWxpZCAobm9uLXBydW5h YmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRzdWJwbGFucworICogQWRkcyB2YWxpZCAobm9uLXBy dW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRzdWJwbGFucyBhbmQgUlQgaW5kZXhlcyBvZgor ICogb2YgdGhlIGNvcnJlc3BvbmRpbmcgbGVhZiBwYXJ0aXRpb25zIHRvICpzY2FuX2xlYWZwYXJ0 X3J0aXMgKGlmIGFza2VkIGZvcikuCiAgKi8KIHN0YXRpYyB2b2lkCiBmaW5kX21hdGNoaW5nX3N1 YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwKIAkJCQkJCQkg ICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUsCiAJCQkJCQkJICAgYm9vbCBpbml0 aWFsX3BydW5lLAotCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbnMpCisJCQkJCQkJ ICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucywKKwkJCQkJCQkgICBCaXRtYXBzZXQgKipzY2Fu X2xlYWZwYXJ0X3J0aXMpCiB7CiAJQml0bWFwc2V0ICAqcGFydHNldDsKIAlpbnQJCQlpOwpAQCAt MjM4NCw4ICsyNTQ0LDE0IEBAIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRp b25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihw YXJ0c2V0LCBpKSkgPj0gMCkKIAl7CiAJCWlmIChwcHJ1bmUtPnN1YnBsYW5fbWFwW2ldID49IDAp CisJCXsKIAkJCSp2YWxpZHN1YnBsYW5zID0gYm1zX2FkZF9tZW1iZXIoKnZhbGlkc3VicGxhbnMs CiAJCQkJCQkJCQkJCXBwcnVuZS0+c3VicGxhbl9tYXBbaV0pOworCQkJQXNzZXJ0KHBwcnVuZS0+ cnRpX21hcFtpXSA+IDApOworCQkJaWYgKHNjYW5fbGVhZnBhcnRfcnRpcykKKwkJCQkqc2Nhbl9s ZWFmcGFydF9ydGlzID0gYm1zX2FkZF9tZW1iZXIoKnNjYW5fbGVhZnBhcnRfcnRpcywKKwkJCQkJ CQkJCQkJCQkgcHBydW5lLT5ydGlfbWFwW2ldKTsKKwkJfQogCQllbHNlCiAJCXsKIAkJCWludAkJ CXBhcnRpZHggPSBwcHJ1bmUtPnN1YnBhcnRfbWFwW2ldOwpAQCAtMjM5Myw3ICsyNTU5LDggQEAg ZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVu ZWRhdGEsCiAJCQlpZiAocGFydGlkeCA+PSAwKQogCQkJCWZpbmRfbWF0Y2hpbmdfc3VicGxhbnNf cmVjdXJzZShwcnVuZWRhdGEsCiAJCQkJCQkJCQkJCSAgICZwcnVuZWRhdGEtPnBhcnRyZWxwcnVu ZWRhdGFbcGFydGlkeF0sCi0JCQkJCQkJCQkJCSAgIGluaXRpYWxfcHJ1bmUsIHZhbGlkc3VicGxh bnMpOworCQkJCQkJCQkJCQkgICBpbml0aWFsX3BydW5lLCB2YWxpZHN1YnBsYW5zLAorCQkJCQkJ CQkJCQkgICBzY2FuX2xlYWZwYXJ0X3J0aXMpOwogCQkJZWxzZQogCQkJewogCQkJCS8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDU3MmM4N2U0NTMuLjA0NGJmM2Y0OTEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xMzUsNiArMTM1LDcgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0 ZSh2b2lkKQogCWVzdGF0ZS0+ZXNfcGFyYW1fZXhlY192YWxzID0gTlVMTDsKIAogCWVzdGF0ZS0+ ZXNfcXVlcnlFbnYgPSBOVUxMOworCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzID0gTklM OwogCiAJZXN0YXRlLT5lc19xdWVyeV9jeHQgPSBxY29udGV4dDsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5j dGlvbnMuYwppbmRleCBkYzEzNjI1MTcxLi5iZmZiNDJjZTcxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5j dGlvbnMuYwpAQCAtODQyLDcgKzg0Miw3IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0 ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCWVsc2UKIAkJZGVzdCA9IE5vbmVf UmVjZWl2ZXI7CiAKLQllcy0+cWQgPSBDcmVhdGVRdWVyeURlc2MoZXMtPnN0bXQsCisJZXMtPnFk ID0gQ3JlYXRlUXVlcnlEZXNjKGVzLT5zdG10LCBOSUwsCiAJCQkJCQkJIGZjYWNoZS0+c3JjLAog CQkJCQkJCSBHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggOTk4MzAxOThiZC4uM2I5MTc1ODRkZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtMTU2LDcgKzE1Niw4IEBAIEV4ZWNJbml0QXBw ZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCSAqIHN1YnBs YW4sIHdlIGNhbiBmaWxsIGFzX3ZhbGlkX3N1YnBsYW5zIGltbWVkaWF0ZWx5LCBwcmV2ZW50aW5n CiAJCSAqIGxhdGVyIGNhbGxzIHRvIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucy4KIAkJICovCi0J CWlmICghcHJ1bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSAmJiBucGxhbnMgPiAwKQorCQlpZiAoYXBw ZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID09IE5VTEwgfHwKKwkJCSghYXBwZW5kc3RhdGUtPmFz X3BydW5lX3N0YXRlLT5kb19leGVjX3BydW5lICYmIG5wbGFucyA+IDApKQogCQkJYXBwZW5kc3Rh dGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0gYm1zX2FkZF9yYW5nZShOVUxMLCAwLCBucGxhbnMgLSAx KTsKIAl9CiAJZWxzZQpAQCAtNTc4LDcgKzU3OSw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fbG9j YWxseShBcHBlbmRTdGF0ZSAqbm9kZSkKIAkJfQogCQllbHNlIGlmIChub2RlLT5hc192YWxpZF9z dWJwbGFucyA9PSBOVUxMKQogCQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJCUV4ZWNG aW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJCUV4 ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwp OwogCiAJCXdoaWNocGxhbiA9IC0xOwogCX0KQEAgLTY0Myw3ICs2NDQsNyBAQCBjaG9vc2VfbmV4 dF9zdWJwbGFuX2Zvcl9sZWFkZXIoQXBwZW5kU3RhdGUgKm5vZGUpCiAJCWlmIChub2RlLT5hc192 YWxpZF9zdWJwbGFucyA9PSBOVUxMKQogCQl7CiAJCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9 Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxz ZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBm YWxzZSwgTlVMTCk7CiAKIAkJCS8qCiAJCQkgKiBNYXJrIGVhY2ggaW52YWxpZCBwbGFuIGFzIGZp bmlzaGVkIHRvIGFsbG93IHRoZSBsb29wIGJlbG93IHRvCkBAIC03MTgsNyArNzE5LDcgQEAgY2hv b3NlX25leHRfc3VicGxhbl9mb3Jfd29ya2VyKEFwcGVuZFN0YXRlICpub2RlKQogCWVsc2UgaWYg KG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJewogCQlub2RlLT5hc192YWxpZF9z dWJwbGFucyA9Ci0JCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3Rh dGUsIGZhbHNlKTsKKwkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9z dGF0ZSwgZmFsc2UsIE5VTEwpOwogCQltYXJrX2ludmFsaWRfc3VicGxhbnNfYXNfZmluaXNoZWQo bm9kZSk7CiAJfQogCkBAIC04NjksNyArODcwLDcgQEAgRXhlY0FwcGVuZEFzeW5jQmVnaW4oQXBw ZW5kU3RhdGUgKm5vZGUpCiAJaWYgKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJ ewogCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxh bnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQ bGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCiAJCWNsYXNzaWZ5X21h dGNoaW5nX3N1YnBsYW5zKG5vZGUpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBw ZW5kLmMKaW5kZXggZjM3MGY5ZjI4Ny4uY2NmYTA4Mzk0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lcmdlQXBwZW5kLmMKQEAgLTEwNCw3ICsxMDQsOCBAQCBFeGVjSW5pdE1lcmdlQXBwZW5k KE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogc3Vi cGxhbiwgd2UgY2FuIGZpbGwgbXNfdmFsaWRfc3VicGxhbnMgaW1tZWRpYXRlbHksIHByZXZlbnRp bmcKIAkJICogbGF0ZXIgY2FsbHMgdG8gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zLgogCQkgKi8K LQkJaWYgKCFwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lICYmIG5wbGFucyA+IDApCisJCWlmICht ZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZSA9PSBOVUxMIHx8CisJCQkoIW1lcmdlc3RhdGUtPm1z X3BydW5lX3N0YXRlLT5kb19leGVjX3BydW5lICYmIG5wbGFucyA+IDApKQogCQkJbWVyZ2VzdGF0 ZS0+bXNfdmFsaWRfc3VicGxhbnMgPSBibXNfYWRkX3JhbmdlKE5VTEwsIDAsIG5wbGFucyAtIDEp OwogCX0KIAllbHNlCkBAIC0yMTksNyArMjIwLDcgQEAgRXhlY01lcmdlQXBwZW5kKFBsYW5TdGF0 ZSAqcHN0YXRlKQogCQkgKi8KIAkJaWYgKG5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwp CiAJCQlub2RlLT5tc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBs YW5zKG5vZGUtPm1zX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1 YlBsYW5zKG5vZGUtPm1zX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAKIAkJLyoKIAkJICog Rmlyc3QgdGltZSB0aHJvdWdoOiBwdWxsIHRoZSBmaXJzdCB0dXBsZSBmcm9tIGVhY2ggdmFsaWQg c3VicGxhbiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggZmQ1Nzk2ZjFiOS4uOTMwMTJhNWIzYiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivc3BpLmMKQEAgLTE1NzgsNiArMTU3OCw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChj b25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJQ2FjaGVkUGxhblNvdXJjZSAqcGxh bnNvdXJjZTsKIAlDYWNoZWRQbGFuICpjcGxhbjsKIAlMaXN0CSAgICpzdG10X2xpc3Q7CisJTGlz dAkgICAqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3Q7CiAJY2hhcgkgICAqcXVlcnlfc3RyaW5nOwog CVNuYXBzaG90CXNuYXBzaG90OwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKQEAgLTE2NTcs NyArMTY1OCwxMCBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwg U1BJUGxhblB0ciBwbGFuLAogCSAqLwogCiAJLyogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGluY3Jl bWVudCBwbGFuIHJlZmNvdW50IGZvciBwb3J0YWwgKi8KLQljcGxhbiA9IEdldENhY2hlZFBsYW4o cGxhbnNvdXJjZSwgcGFyYW1MSSwgTlVMTCwgX1NQSV9jdXJyZW50LT5xdWVyeUVudik7CisJY3Bs YW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIF9TUElfY3VycmVu dC0+cXVlcnlFbnYsCisJCQkJCQkgICZwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCk7CisJQXNzZXJ0 KGxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3QpID09CisJCSAgIGxpc3RfbGVuZ3RoKHBhcnRf cHJ1bmVfcmVzdWx0c19saXN0KSk7CiAJc3RtdF9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAog CWlmICghcGxhbi0+c2F2ZWQpCkBAIC0xNjg1LDYgKzE2ODksOSBAQCBTUElfY3Vyc29yX29wZW5f aW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCQkJCQkgIHN0bXRf bGlzdCwKIAkJCQkJICBjcGxhbik7CiAKKwkvKiBDb3B5IExpc3RzIG9mIFBhcnRpdGlvblBydW5l UmVzdWx0cyBpbnRvIHRoZSBwb3J0YWwncyBjb250ZXh0LiAqLworCVBvcnRhbFN0b3JlUGFydGl0 aW9uUHJ1bmVSZXN1bHRzKHBvcnRhbCwgcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOworCiAJLyoK IAkgKiBTZXQgdXAgb3B0aW9ucyBmb3IgcG9ydGFsLiAgRGVmYXVsdCBTQ1JPTEwgdHlwZSBpcyBj aG9zZW4gdGhlIHNhbWUgd2F5CiAJICogYXMgUGVyZm9ybUN1cnNvck9wZW4gZG9lcyBpdC4KQEAg LTIwOTIsNyArMjA5OSw4IEBAIFNQSV9wbGFuX2dldF9jYWNoZWRfcGxhbihTUElQbGFuUHRyIHBs YW4pCiAJLyogR2V0IHRoZSBnZW5lcmljIHBsYW4gZm9yIHRoZSBxdWVyeSAqLwogCWNwbGFuID0g R2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBOVUxMLAogCQkJCQkJICBwbGFuLT5zYXZlZCA/IEN1 cnJlbnRSZXNvdXJjZU93bmVyIDogTlVMTCwKLQkJCQkJCSAgX1NQSV9jdXJyZW50LT5xdWVyeUVu dik7CisJCQkJCQkgIF9TUElfY3VycmVudC0+cXVlcnlFbnYsCisJCQkJCQkgIE5VTEwgLyogTm90 IGludGVyZXN0ZWQgaW4gUGFydGl0aW9uUHJ1bmVSZXN1bHRzICovKTsKIAlBc3NlcnQoY3BsYW4g PT0gcGxhbnNvdXJjZS0+Z3BsYW4pOwogCiAJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNr ICovCkBAIC0yNDczLDcgKzI0ODEsOSBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBs YW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCXsKIAkJQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZSA9IChDYWNoZWRQbGFuU291cmNlICopIGxmaXJzdChsYzEpOwogCQlM aXN0CSAgICpzdG10X2xpc3Q7Ci0JCUxpc3RDZWxsICAgKmxjMjsKKwkJTGlzdAkgICAqcGFydF9w cnVuZV9yZXN1bHRzX2xpc3Q7CisJCUxpc3RDZWxsICAgKmxjMiwKKwkJCQkgICAqbGMzOwogCiAJ CXNwaWNhbGxiYWNrYXJnLnF1ZXJ5ID0gcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nOwogCkBAIC0y NTQ5LDggKzI1NTksMTAgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25z dCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJICogcGxhbiwgdGhlIHJlZmNvdW50IG11 c3QgYmUgYmFja2VkIGJ5IHRoZSBwbGFuX293bmVyLgogCQkgKi8KIAkJY3BsYW4gPSBHZXRDYWNo ZWRQbGFuKHBsYW5zb3VyY2UsIG9wdGlvbnMtPnBhcmFtcywKLQkJCQkJCQkgIHBsYW5fb3duZXIs IF9TUElfY3VycmVudC0+cXVlcnlFbnYpOwotCisJCQkJCQkJICBwbGFuX293bmVyLCBfU1BJX2N1 cnJlbnQtPnF1ZXJ5RW52LAorCQkJCQkJCSAmcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOworCQlB c3NlcnQobGlzdF9sZW5ndGgoY3BsYW4tPnN0bXRfbGlzdCkgPT0KKwkJCSAgIGxpc3RfbGVuZ3Ro KHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KSk7CiAJCXN0bXRfbGlzdCA9IGNwbGFuLT5zdG10X2xp c3Q7CiAKIAkJLyoKQEAgLTI1ODksOSArMjYwMSwxMCBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQ bGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJfQogCQl9 CiAKLQkJZm9yZWFjaChsYzIsIHN0bXRfbGlzdCkKKwkJZm9yYm90aChsYzIsIHN0bXRfbGlzdCwg bGMzLCBwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCkKIAkJewogCQkJUGxhbm5lZFN0bXQgKnN0bXQg PSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMyKTsKKwkJCUxpc3QJICAgKnBhcnRfcHJ1bmVf cmVzdWx0cyA9IGxmaXJzdF9ub2RlKExpc3QsIGxjMyk7CiAJCQlib29sCQljYW5TZXRUYWcgPSBz dG10LT5jYW5TZXRUYWc7CiAJCQlEZXN0UmVjZWl2ZXIgKmRlc3Q7CiAKQEAgLTI2NjMsNyArMjY3 Niw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0 ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJZWxzZQogCQkJCQlzbmFwID0gSW52YWxpZFNuYXBzaG90 OwogCi0JCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJCQlxZGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkJCQkJCQkJcGxhbnNvdXJj ZS0+cXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNyb3NzY2hlY2tfc25hcHNob3QsCiAJ CQkJCQkJCQkJZGVzdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5j IGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggMjM3NzYzNjdjNS4uYjAxZjU1 ZmI0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3Jj L2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTE1OCw2ICsxNTgsMTEgQEAKIAl0b2tlbiA9 IHBnX3N0cnRvaygmbGVuZ3RoKTsJCS8qIHNraXAgOmZsZG5hbWUgKi8gXAogCWxvY2FsX25vZGUt PmZsZG5hbWUgPSByZWFkSW50Q29scyhsZW4pCiAKKy8qIFJlYWQgYW4gSW5kZXggYXJyYXkgKi8K KyNkZWZpbmUgUkVBRF9JTkRFWF9BUlJBWShmbGRuYW1lLCBsZW4pIFwKKwl0b2tlbiA9IHBnX3N0 cnRvaygmbGVuZ3RoKTsJCS8qIHNraXAgOmZsZG5hbWUgKi8gXAorCWxvY2FsX25vZGUtPmZsZG5h bWUgPSByZWFkSW5kZXhDb2xzKGxlbikKKwogLyogUmVhZCBhIGJvb2wgYXJyYXkgKi8KICNkZWZp bmUgUkVBRF9CT09MX0FSUkFZKGZsZG5hbWUsIGxlbikgXAogCXRva2VuID0gcGdfc3RydG9rKCZs ZW5ndGgpOwkJLyogc2tpcCA6ZmxkbmFtZSAqLyBcCkBAIC04MDAsNyArODA1LDYgQEAgZm5uYW1l KGludCBudW1Db2xzKSBcCiAgKi8KIFJFQURfU0NBTEFSX0FSUkFZKHJlYWRBdHRyTnVtYmVyQ29s cywgaW50MTYsIGF0b2kpCiBSRUFEX1NDQUxBUl9BUlJBWShyZWFkT2lkQ29scywgT2lkLCBhdG9v aWQpCi0vKiBvdXRmdW5jcy5jIGhhcyB3cml0ZUluZGV4Q29scywgYnV0IHdlIGRvbid0IHlldCBu ZWVkIHRoYXQgaGVyZSAqLwotLyogUkVBRF9TQ0FMQVJfQVJSQVkocmVhZEluZGV4Q29scywgSW5k ZXgsIGF0b3VpKSAqLworUkVBRF9TQ0FMQVJfQVJSQVkocmVhZEluZGV4Q29scywgSW5kZXgsIGF0 b3VpKQogUkVBRF9TQ0FMQVJfQVJSQVkocmVhZEludENvbHMsIGludCwgYXRvaSkKIFJFQURfU0NB TEFSX0FSUkFZKHJlYWRCb29sQ29scywgYm9vbCwgc3RydG9ib29sKQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vcGxhbm5lci5jCmluZGV4IDc5OTYwMmY1ZWEuLmE5NmQzMTZkY2EgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTUyMCw3ICs1MjAsOSBAQCBzdGFuZGFyZF9wbGFu bmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0 aW9ucywKIAlyZXN1bHQtPnBhcmFsbGVsTW9kZU5lZWRlZCA9IGdsb2ItPnBhcmFsbGVsTW9kZU5l ZWRlZDsKIAlyZXN1bHQtPnBsYW5UcmVlID0gdG9wX3BsYW47CiAJcmVzdWx0LT5wYXJ0UHJ1bmVJ bmZvcyA9IGdsb2ItPnBhcnRQcnVuZUluZm9zOworCXJlc3VsdC0+Y29udGFpbnNJbml0aWFsUHJ1 bmluZyA9IGdsb2ItPmNvbnRhaW5zSW5pdGlhbFBydW5pbmc7CiAJcmVzdWx0LT5ydGFibGUgPSBn bG9iLT5maW5hbHJ0YWJsZTsKKwlyZXN1bHQtPm1pbkxvY2tSZWxpZHMgPSBnbG9iLT5taW5Mb2Nr UmVsaWRzOwogCXJlc3VsdC0+cmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cmVzdWx0UmVsYXRpb25z OwogCXJlc3VsdC0+YXBwZW5kUmVsYXRpb25zID0gZ2xvYi0+YXBwZW5kUmVsYXRpb25zOwogCXJl c3VsdC0+c3VicGxhbnMgPSBnbG9iLT5zdWJwbGFuczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Nl dHJlZnMuYwppbmRleCAzOTljMTgxMmQ0Li40NGZmZTcxYzQ5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vc2V0cmVmcy5jCkBAIC0yNzAsNiArMjcwLDE2IEBAIHNldF9wbGFuX3JlZmVyZW5jZXMo UGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4pCiAJICovCiAJYWRkX3J0ZXNfdG9fZmxhdF9y dGFibGUocm9vdCwgZmFsc2UpOwogCisJLyoKKwkgKiBBZGQgdGhlIHF1ZXJ5J3MgYWRqdXN0ZWQg cmFuZ2Ugb2YgUlQgaW5kZXhlcyB0byBnbG9iLT5taW5Mb2NrUmVsaWRzLgorCSAqIFRoZSBhZGp1 c3RlZCBSVCBpbmRleGVzIG9mIHBydW5hYmxlIHJlbGF0aW9ucyB3aWxsIGJlIGRlbGV0ZWQgZnJv bSB0aGUKKwkgKiBzZXQgYmVsb3cgd2hlcmUgUGFydGl0aW9uUHJ1bmVJbmZvcyBhcmUgcHJvY2Vz c2VkLgorCSAqLworCWdsb2ItPm1pbkxvY2tSZWxpZHMgPQorCQlibXNfYWRkX3JhbmdlKGdsb2It Pm1pbkxvY2tSZWxpZHMsCisJCQkJCSAgcnRvZmZzZXQgKyAxLAorCQkJCQkgIHJ0b2Zmc2V0ICsg bGlzdF9sZW5ndGgocm9vdC0+cGFyc2UtPnJ0YWJsZSkpOworCiAJLyoKIAkgKiBBZGp1c3QgUlQg aW5kZXhlcyBvZiBQbGFuUm93TWFya3MgYW5kIGFkZCB0byBmaW5hbCByb3dtYXJrcyBsaXN0CiAJ ICovCkBAIC0zNTMsNiArMzYzLDcgQEAgc2V0X3BsYW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAq cm9vdCwgUGxhbiAqcGxhbikKIAl7CiAJCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvID0g bGZpcnN0KGxjKTsKIAkJTGlzdENlbGwgICAqbDsKKwkJQml0bWFwc2V0ICAqbGVhZnBhcnRfcnRp cyA9IE5VTEw7CiAKIAkJcHJ1bmVpbmZvLT5yb290X3BhcmVudF9yZWxpZHMgPQogCQkJb2Zmc2V0 X3JlbGlkX3NldChwcnVuZWluZm8tPnJvb3RfcGFyZW50X3JlbGlkcywgcnRvZmZzZXQpOwpAQCAt MzY0LDE1ICszNzUsNTAgQEAgc2V0X3BsYW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwg UGxhbiAqcGxhbikKIAkJCWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQogCQkJewogCQkJCVBhcnRp dGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9IGxmaXJzdChsMik7CisJCQkJaW50CQlpOwogCiAJ CQkJLyogUlQgaW5kZXggb2YgdGhlIHRhYmxlIHRvIHdoaWNoIHRoZSBwaW5mbyBiZWxvbmdzLiAq LwogCQkJCXBpbmZvLT5ydGluZGV4ICs9IHJ0b2Zmc2V0OworCisJCQkJLyogQWxzbyBvZiB0aGUg bGVhZiBwYXJ0aXRpb25zIHRoYXQgbWlnaHQgYmUgc2Nhbm5lZC4gKi8KKwkJCQlmb3IgKGkgPSAw OyBpIDwgcGluZm8tPm5wYXJ0czsgaSsrKQorCQkJCXsKKwkJCQkJaWYgKHBpbmZvLT5ydGlfbWFw W2ldID4gMCAmJiBwaW5mby0+c3VicGxhbl9tYXBbaV0gPj0gMCkKKwkJCQkJeworCQkJCQkJcGlu Zm8tPnJ0aV9tYXBbaV0gKz0gcnRvZmZzZXQ7CisJCQkJCQlsZWFmcGFydF9ydGlzID0gYm1zX2Fk ZF9tZW1iZXIobGVhZnBhcnRfcnRpcywKKwkJCQkJCQkJCQkJCQkgICBwaW5mby0+cnRpX21hcFtp XSk7CisJCQkJCX0KKwkJCQl9CiAJCQl9CiAJCX0KIAorCQlpZiAocHJ1bmVpbmZvLT5uZWVkc19p bml0X3BydW5pbmcpCisJCXsKKwkJCWdsb2ItPmNvbnRhaW5zSW5pdGlhbFBydW5pbmcgPSB0cnVl OworCisJCQkvKgorCQkJICogRGVsZXRlIHRoZSBsZWFmIHBhcnRpdGlvbiBSVElzIGZyb20gdGhl IGdsb2JhbCBzZXQgb2YgcmVsYXRpb25zCisJCQkgKiB0byBiZSBsb2NrZWQgYmVmb3JlIGV4ZWN1 dGluZyB0aGUgcGxhbi4gIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkKKwkJCSAqIHdpbGwgZmluZCB0 aGUgb25lcyB0byBhZGQgdG8gdGhlIHNldCBhZnRlciBwZXJmb3JtaW5nIGluaXRpYWwKKwkJCSAq IHBydW5pbmcuCisJCQkgKi8KKwkJCWdsb2ItPm1pbkxvY2tSZWxpZHMgPSBibXNfZGVsX21lbWJl cnMoZ2xvYi0+bWluTG9ja1JlbGlkcywKKwkJCQkJCQkJCQkJCSAgbGVhZnBhcnRfcnRpcyk7CisJ CX0KKwogCQlnbG9iLT5wYXJ0UHJ1bmVJbmZvcyA9IGxhcHBlbmQoZ2xvYi0+cGFydFBydW5lSW5m b3MsIHBydW5laW5mbyk7CiAJfQogCisJLyoKKwkgKiBJdCBzZWVtcyB3b3J0aCBkb2luZyBhIGJt c19jb3B5KCkgb24gZ2xvYi0+bWluTG9ja1JlbGlkcyBpZiB3ZSBkZWxldGVkCisJICogYml0cyBm cm9tIGl0IGFib3ZlIHRvIGdldCByaWQgb2YgYW55IGVtcHR5IHRhaWwgYml0cy4gIEl0IHNlZW1z IGJldHRlcgorCSAqIGZvciB0aGUgbG9vcCBvdmVyIHRoaXMgc2V0IGluIEFjcXVpcmVFeGVjdXRv ckxvY2tzKCkgdG8gbm90IGhhdmUgdG8gZ28KKwkgKiB0aHJvdWdoIHRob3NlIHVzZWxlc3MgYml0 IHdvcmRzLgorCSAqLworCWlmIChnbG9iLT5jb250YWluc0luaXRpYWxQcnVuaW5nKQorCQlnbG9i LT5taW5Mb2NrUmVsaWRzID0gYm1zX2NvcHkoZ2xvYi0+bWluTG9ja1JlbGlkcyk7CisKIAlyZXR1 cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFy dHBydW5lLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKaW5kZXggZDQ4 ZjY3ODRjMS4uZDU1NTYzNTRmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5n L3BhcnRwcnVuZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwpA QCAtMTQ0LDcgKzE0NCw5IEBAIHN0YXRpYyBMaXN0ICptYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5l aW5mbyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkgICBMaXN0ICpwcnVuZXF1YWwsCiAJ CQkJCQkJCQkJICAgQml0bWFwc2V0ICpwYXJ0cmVsaWRzLAogCQkJCQkJCQkJCSAgIGludCAqcmVs aWRfc3VicGxhbl9tYXAsCi0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqbWF0Y2hlZHN1YnBsYW5z KTsKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKiptYXRjaGVkc3VicGxhbnMsCisJCQkJCQkJCQkJ ICAgYm9vbCAqbmVlZHNfaW5pdF9wcnVuaW5nLAorCQkJCQkJCQkJCSAgIGJvb2wgKm5lZWRzX2V4 ZWNfcHJ1bmluZyk7CiBzdGF0aWMgdm9pZCBnZW5fcGFydHBydW5lX3N0ZXBzKFJlbE9wdEluZm8g KnJlbCwgTGlzdCAqY2xhdXNlcywKIAkJCQkJCQkJUGFydENsYXVzZVRhcmdldCB0YXJnZXQsCiAJ CQkJCQkJCUdlbmVyYXRlUHJ1bmluZ1N0ZXBzQ29udGV4dCAqY29udGV4dCk7CkBAIC0yMzQsNiAr MjM2LDggQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxP cHRJbmZvICpwYXJlbnRyZWwsCiAJaW50CQkgICAqcmVsaWRfc3VicGxhbl9tYXA7CiAJTGlzdENl bGwgICAqbGM7CiAJaW50CQkJaTsKKwlib29sCQluZWVkc19pbml0X3BydW5pbmcgPSBmYWxzZTsK Kwlib29sCQluZWVkc19leGVjX3BydW5pbmcgPSBmYWxzZTsKIAogCS8qCiAJICogU2NhbiB0aGUg c3VicGF0aHMgdG8gc2VlIHdoaWNoIG9uZXMgYXJlIHNjYW5zIG9mIHBhcnRpdGlvbiBjaGlsZApA QCAtMzEzLDEyICszMTcsMTYgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCUJpdG1hcHNldCAgKnBhcnRyZWxpZHMg PSAoQml0bWFwc2V0ICopIGxmaXJzdChsYyk7CiAJCUxpc3QJICAgKnBpbmZvbGlzdDsKIAkJQml0 bWFwc2V0ICAqbWF0Y2hlZHN1YnBsYW5zID0gTlVMTDsKKwkJYm9vbAkJcGFydHJlbF9uZWVkc19p bml0X3BydW5pbmc7CisJCWJvb2wJCXBhcnRyZWxfbmVlZHNfZXhlY19wcnVuaW5nOwogCiAJCXBp bmZvbGlzdCA9IG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKHJvb3QsIHBhcmVudHJlbCwK IAkJCQkJCQkJCQkJCSAgcHJ1bmVxdWFsLAogCQkJCQkJCQkJCQkJICBwYXJ0cmVsaWRzLAogCQkJ CQkJCQkJCQkJICByZWxpZF9zdWJwbGFuX21hcCwKLQkJCQkJCQkJCQkJCSAgJm1hdGNoZWRzdWJw bGFucyk7CisJCQkJCQkJCQkJCQkgICZtYXRjaGVkc3VicGxhbnMsCisJCQkJCQkJCQkJCQkgICZw YXJ0cmVsX25lZWRzX2luaXRfcHJ1bmluZywKKwkJCQkJCQkJCQkJCSAgJnBhcnRyZWxfbmVlZHNf ZXhlY19wcnVuaW5nKTsKIAogCQkvKiBXaGVuIHBydW5pbmcgaXMgcG9zc2libGUsIHJlY29yZCB0 aGUgbWF0Y2hlZCBzdWJwbGFucyAqLwogCQlpZiAocGluZm9saXN0ICE9IE5JTCkKQEAgLTMyNyw2 ICszMzUsOSBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCWFsbG1hdGNoZWRzdWJwbGFucyA9IGJtc19qb2luKG1h dGNoZWRzdWJwbGFucywKIAkJCQkJCQkJCQkgIGFsbG1hdGNoZWRzdWJwbGFucyk7CiAJCX0KKwor CQluZWVkc19pbml0X3BydW5pbmcgfD0gcGFydHJlbF9uZWVkc19pbml0X3BydW5pbmc7CisJCW5l ZWRzX2V4ZWNfcHJ1bmluZyB8PSBwYXJ0cmVsX25lZWRzX2V4ZWNfcHJ1bmluZzsKIAl9CiAKIAlw ZnJlZShyZWxpZF9zdWJwbGFuX21hcCk7CkBAIC0zNDIsNiArMzUzLDggQEAgbWFrZV9wYXJ0aXRp b25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJ cHJ1bmVpbmZvID0gbWFrZU5vZGUoUGFydGl0aW9uUHJ1bmVJbmZvKTsKIAlwcnVuZWluZm8tPnJv b3RfcGFyZW50X3JlbGlkcyA9IHBhcmVudHJlbC0+cmVsaWRzOwogCXBydW5laW5mby0+cHJ1bmVf aW5mb3MgPSBwcnVuZXJlbGluZm9zOworCXBydW5laW5mby0+bmVlZHNfaW5pdF9wcnVuaW5nID0g bmVlZHNfaW5pdF9wcnVuaW5nOworCXBydW5laW5mby0+bmVlZHNfZXhlY19wcnVuaW5nID0gbmVl ZHNfZXhlY19wcnVuaW5nOwogCiAJLyoKIAkgKiBTb21lIHN1YnBsYW5zIG1heSBub3QgYmVsb25n IHRvIGFueSBvZiB0aGUgaWRlbnRpZmllZCBwYXJ0aXRpb25lZCByZWxzLgpAQCAtNDQyLDEzICs0 NTUsMTggQEAgYWRkX3BhcnRfcmVsaWRzKExpc3QgKmFsbHBhcnRyZWxpZHMsIEJpdG1hcHNldCAq cGFydHJlbGlkcykKICAqIElmIHdlIGNhbm5vdCBmaW5kIGFueSB1c2VmdWwgcnVuLXRpbWUgcHJ1 bmluZyBzdGVwcywgcmV0dXJuIE5JTC4KICAqIEhvd2V2ZXIsIG9uIHN1Y2Nlc3MsIGVhY2ggcmVs IGlkZW50aWZpZWQgaW4gcGFydHJlbGlkcyB3aWxsIGhhdmUKICAqIGFuIGVsZW1lbnQgaW4gdGhl IHJlc3VsdCBsaXN0LCBldmVuIGlmIHNvbWUgb2YgdGhlbSBhcmUgdXNlbGVzcy4KKyAqICpuZWVk c19pbml0X3BydW5pbmcgYW5kICpuZWVkc19leGVjX3BydW5pbmcgYXJlIHNldCB0byBpbmRpY2F0 ZSB0aGF0IHRoZQorICogcmV0dXJuZWQgUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zIGNvbnRhaW5z IHBydW5pbmcgc3RlcHMgdGhhdCBjYW4gYmUKKyAqIHBlcmZvcm1lZCBiZWZvcmUgYW5kIGFmdGVy IGV4ZWN1dGlvbiBiZWdpbnMsIHJlc3BlY3RpdmVseS4KICAqLwogc3RhdGljIExpc3QgKgogbWFr ZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnBhcmVudHJlbCwKIAkJCQkJCQkgIExpc3QgKnBydW5lcXVhbCwKIAkJCQkJCQkgIEJpdG1hcHNl dCAqcGFydHJlbGlkcywKIAkJCQkJCQkgIGludCAqcmVsaWRfc3VicGxhbl9tYXAsCi0JCQkJCQkJ ICBCaXRtYXBzZXQgKiptYXRjaGVkc3VicGxhbnMpCisJCQkJCQkJICBCaXRtYXBzZXQgKiptYXRj aGVkc3VicGxhbnMsCisJCQkJCQkJICBib29sICpuZWVkc19pbml0X3BydW5pbmcsCisJCQkJCQkJ ICBib29sICpuZWVkc19leGVjX3BydW5pbmcpCiB7CiAJUmVsT3B0SW5mbyAqdGFyZ2V0cGFydCA9 IE5VTEw7CiAJTGlzdAkgICAqcGluZm9saXN0ID0gTklMOwpAQCAtNDU5LDYgKzQ3NywxMCBAQCBt YWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqcGFyZW50cmVsLAogCWludAkJCXJ0aTsKIAlpbnQJCQlpOwogCisJLyogV2lsbCBmaW5kIG91 dCBiZWxvdy4gKi8KKwkqbmVlZHNfaW5pdF9wcnVuaW5nID0gZmFsc2U7CisJKm5lZWRzX2V4ZWNf cHJ1bmluZyA9IGZhbHNlOworCiAJLyoKIAkgKiBFeGFtaW5lIGVhY2ggcGFydGl0aW9uZWQgcmVs LCBjb25zdHJ1Y3RpbmcgYSB0ZW1wb3JhcnkgYXJyYXkgdG8gbWFwCiAJICogZnJvbSBwbGFubmVy IHJlbGlkcyB0byBpbmRleCBvZiB0aGUgcGFydGl0aW9uZWQgcmVsLCBhbmQgYnVpbGRpbmcgYQpA QCAtNTQ2LDYgKzU2OCw5IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCSAqIGV4ZWN1dG9yIHBlci1zY2Fu IHBydW5pbmcgc3RlcHMuICBUaGlzIGZpcnN0IHBhc3MgY3JlYXRlcyBzdGFydHVwCiAJCSAqIHBy dW5pbmcgc3RlcHMgYW5kIGRldGVjdHMgd2hldGhlciB0aGVyZSdzIGFueSBwb3NzaWJseS11c2Vm dWwgcXVhbHMKIAkJICogdGhhdCB3b3VsZCByZXF1aXJlIHBlci1zY2FuIHBydW5pbmcuCisJCSAq CisJCSAqIEluIHRoZSBmaXJzdCBwYXNzLCB3ZSBub3RlIHdoZXRoZXIgdGhlIDJuZCBwYXNzIGlz IG5lY2Vzc2FyeSBieQorCQkgKiBub3RpbmcgdGhlIHByZXNlbmNlIG9mIEVYRUMgcGFyYW1ldGVy cy4KIAkJICovCiAJCWdlbl9wYXJ0cHJ1bmVfc3RlcHMoc3VicGFydCwgcGFydHBydW5lcXVhbCwg UEFSVFRBUkdFVF9JTklUSUFMLAogCQkJCQkJCSZjb250ZXh0KTsKQEAgLTYyMCw2ICs2NDUsMTIg QEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnBhcmVudHJlbCwKIAkJcGluZm8tPmV4ZWNwYXJhbWlkcyA9IGV4ZWNwYXJhbWlkczsK IAkJLyogUmVtYWluaW5nIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCBpbiB0aGUgbmV4dCBsb29wICov CiAKKwkJLyogcmVjb3JkIHdoaWNoIHR5cGVzIG9mIHBydW5pbmcgc3RlcHMgd2UndmUgc2VlbiBz byBmYXIgKi8KKwkJaWYgKGluaXRpYWxfcHJ1bmluZ19zdGVwcyAhPSBOSUwpCisJCQkqbmVlZHNf aW5pdF9wcnVuaW5nID0gdHJ1ZTsKKwkJaWYgKGV4ZWNfcHJ1bmluZ19zdGVwcyAhPSBOSUwpCisJ CQkqbmVlZHNfZXhlY19wcnVuaW5nID0gdHJ1ZTsKKwogCQlwaW5mb2xpc3QgPSBsYXBwZW5kKHBp bmZvbGlzdCwgcGluZm8pOwogCX0KIApAQCAtNjQ3LDYgKzY3OCw3IEBAIG1ha2VfcGFydGl0aW9u ZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWws CiAJCWludAkJICAgKnN1YnBsYW5fbWFwOwogCQlpbnQJCSAgICpzdWJwYXJ0X21hcDsKIAkJT2lk CQkgICAqcmVsaWRfbWFwOworCQlJbmRleAkgICAqcnRpX21hcDsKIAogCQkvKgogCQkgKiBDb25z dHJ1Y3QgdGhlIHN1YnBsYW4gYW5kIHN1YnBhcnQgbWFwcyBmb3IgdGhpcyBwYXJ0aXRpb25pbmcg bGV2ZWwuCkBAIC02NTksNiArNjkxLDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8o UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJc3VicGFydF9tYXAg PSAoaW50ICopIHBhbGxvYyhucGFydHMgKiBzaXplb2YoaW50KSk7CiAJCW1lbXNldChzdWJwYXJ0 X21hcCwgLTEsIG5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAkJcmVsaWRfbWFwID0gKE9pZCAqKSBw YWxsb2MwKG5wYXJ0cyAqIHNpemVvZihPaWQpKTsKKwkJcnRpX21hcCA9IChJbmRleCAqKSBwYWxs b2MwKG5wYXJ0cyAqIHNpemVvZihJbmRleCkpOwogCQlwcmVzZW50X3BhcnRzID0gTlVMTDsKIAog CQlpID0gLTE7CkBAIC02NzMsNiArNzA2LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWlu Zm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCXN1YnBsYW5f bWFwW2ldID0gc3VicGxhbmlkeCA9IHJlbGlkX3N1YnBsYW5fbWFwW3BhcnRyZWwtPnJlbGlkXSAt IDE7CiAJCQlzdWJwYXJ0X21hcFtpXSA9IHN1YnBhcnRpZHggPSByZWxpZF9zdWJwYXJ0X21hcFtw YXJ0cmVsLT5yZWxpZF0gLSAxOwogCQkJcmVsaWRfbWFwW2ldID0gcGxhbm5lcl9ydF9mZXRjaChw YXJ0cmVsLT5yZWxpZCwgcm9vdCktPnJlbGlkOworCQkJcnRpX21hcFtpXSA9IHBhcnRyZWwtPnJl bGlkOwogCQkJaWYgKHN1YnBsYW5pZHggPj0gMCkKIAkJCXsKIAkJCQlwcmVzZW50X3BhcnRzID0g Ym1zX2FkZF9tZW1iZXIocHJlc2VudF9wYXJ0cywgaSk7CkBAIC02OTcsNiArNzMxLDcgQEAgbWFr ZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnBhcmVudHJlbCwKIAkJcGluZm8tPnN1YnBsYW5fbWFwID0gc3VicGxhbl9tYXA7CiAJCXBpbmZv LT5zdWJwYXJ0X21hcCA9IHN1YnBhcnRfbWFwOwogCQlwaW5mby0+cmVsaWRfbWFwID0gcmVsaWRf bWFwOworCQlwaW5mby0+cnRpX21hcCA9IHJ0aV9tYXA7CiAJfQogCiAJcGZyZWUocmVsaWRfc3Vi cGFydF9tYXApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDMwODIwOTNkMWUuLjk1YWIxZDBlZWYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKQEAgLTE1OTgsNiArMTU5OCw3IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0 cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAlpbnQxNgkgICAqcmZvcm1hdHMgPSBOVUxMOwogCUNh Y2hlZFBsYW5Tb3VyY2UgKnBzcmM7CiAJQ2FjaGVkUGxhbiAqY3BsYW47CisJTGlzdAkgICAqcGFy dF9wcnVuZV9yZXN1bHRzX2xpc3Q7CiAJUG9ydGFsCQlwb3J0YWw7CiAJY2hhcgkgICAqcXVlcnlf c3RyaW5nOwogCWNoYXIJICAgKnNhdmVkX3N0bXRfbmFtZTsKQEAgLTE5NzIsNyArMTk3Myw5IEBA IGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkgKiB3aWxsIGJl IGdlbmVyYXRlZCBpbiBNZXNzYWdlQ29udGV4dC4gIFRoZSBwbGFuIHJlZmNvdW50IHdpbGwgYmUK IAkgKiBhc3NpZ25lZCB0byB0aGUgUG9ydGFsLCBzbyBpdCB3aWxsIGJlIHJlbGVhc2VkIGF0IHBv cnRhbCBkZXN0cnVjdGlvbi4KIAkgKi8KLQljcGxhbiA9IEdldENhY2hlZFBsYW4ocHNyYywgcGFy YW1zLCBOVUxMLCBOVUxMKTsKKwljcGxhbiA9IEdldENhY2hlZFBsYW4ocHNyYywgcGFyYW1zLCBO VUxMLCBOVUxMLCAmcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOworCUFzc2VydChsaXN0X2xlbmd0 aChjcGxhbi0+c3RtdF9saXN0KSA9PQorCQkgICBsaXN0X2xlbmd0aChwYXJ0X3BydW5lX3Jlc3Vs dHNfbGlzdCkpOwogCiAJLyoKIAkgKiBOb3cgd2UgY2FuIGRlZmluZSB0aGUgcG9ydGFsLgpAQCAt MTk4Nyw2ICsxOTkwLDkgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNz YWdlKQogCQkJCQkgIGNwbGFuLT5zdG10X2xpc3QsCiAJCQkJCSAgY3BsYW4pOwogCisJLyogQ29w eSBMaXN0cyBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgaW50byB0aGUgcG9ydGFsJ3MgY29udGV4 dC4gKi8KKwlQb3J0YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0cyhwb3J0YWwsIHBhcnRfcHJ1 bmVfcmVzdWx0c19saXN0KTsKKwogCS8qIERvbmUgd2l0aCB0aGUgc25hcHNob3QgdXNlZCBmb3Ig cGFyYW1ldGVyIEkvTyBhbmQgcGFyc2luZy9wbGFubmluZyAqLwogCWlmIChzbmFwc2hvdF9zZXQp CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwppbmRleCA1MmUyZGI2NDUyLi5mNTgy ZmYxNzdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9i YWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTM1LDcgKzM1LDcgQEAKIFBvcnRhbAkJQWN0aXZlUG9y dGFsID0gTlVMTDsKIAogCi1zdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBs YW4sCitzdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sIExpc3QgKnBh cnRfcHJ1bmVfcmVzdWx0cywKIAkJCQkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJ IFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52 LApAQCAtNjUsNiArNjUsNyBAQCBzdGF0aWMgdm9pZCBEb1BvcnRhbFJld2luZChQb3J0YWwgcG9y dGFsKTsKICAqLwogUXVlcnlEZXNjICoKIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxh bm5lZHN0bXQsCisJCQkJTGlzdCAqcGFydF9wcnVuZV9yZXN1bHRzLAogCQkJCWNvbnN0IGNoYXIg KnNvdXJjZVRleHQsCiAJCQkJU25hcHNob3Qgc25hcHNob3QsCiAJCQkJU25hcHNob3QgY3Jvc3Nj aGVja19zbmFwc2hvdCwKQEAgLTc3LDYgKzc4LDggQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRT dG10ICpwbGFubmVkc3RtdCwKIAogCXFkLT5vcGVyYXRpb24gPSBwbGFubmVkc3RtdC0+Y29tbWFu ZFR5cGU7CS8qIG9wZXJhdGlvbiAqLwogCXFkLT5wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10Owkv KiBwbGFuICovCisJcWQtPnBhcnRfcHJ1bmVfcmVzdWx0cyA9IHBhcnRfcHJ1bmVfcmVzdWx0czsg LyogRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkKKwkJCQkJCQkJCQkJCSAgKiBvdXRwdXQgZm9y IHBsYW4gKi8KIAlxZC0+c291cmNlVGV4dCA9IHNvdXJjZVRleHQ7CS8qIHF1ZXJ5IHRleHQgKi8K IAlxZC0+c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsJLyogc25hcHNob3Qg Ki8KIAkvKiBSSSBjaGVjayBzbmFwc2hvdCAqLwpAQCAtMTIyLDYgKzEyNSw3IEBAIEZyZWVRdWVy eURlc2MoUXVlcnlEZXNjICpxZGVzYykKICAqCQlQT1JUQUxfT05FX1JFVFVSTklORywgb3IgUE9S VEFMX09ORV9NT0RfV0lUSCBwb3J0YWwKICAqCiAgKglwbGFuOiB0aGUgcGxhbiB0cmVlIGZvciB0 aGUgcXVlcnkKKyAqCXBhcnRfcHJ1bmVfcmVzdWx0czogRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5n KCkgb3V0cHV0IGZvciB0aGUgUGxhbm5lZFN0bXQKICAqCXNvdXJjZVRleHQ6IHRoZSBzb3VyY2Ug dGV4dCBvZiB0aGUgcXVlcnkKICAqCXBhcmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVkCiAgKglk ZXN0OiB3aGVyZSB0byBzZW5kIHJlc3VsdHMKQEAgLTEzNCw2ICsxMzgsNyBAQCBGcmVlUXVlcnlE ZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKi8KIHN0YXRpYyB2b2lkCiBQcm9jZXNzUXVlcnkoUGxh bm5lZFN0bXQgKnBsYW4sCisJCQkgTGlzdCAqcGFydF9wcnVuZV9yZXN1bHRzLAogCQkJIGNvbnN0 IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnYsCkBAIC0xNDUsNyArMTUwLDcgQEAgUHJvY2Vzc1F1ZXJ5KFBs YW5uZWRTdG10ICpwbGFuLAogCS8qCiAJICogQ3JlYXRlIHRoZSBRdWVyeURlc2Mgb2JqZWN0CiAJ ICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHNvdXJjZVRleHQsCisJcXVl cnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBhcnRfcHJ1bmVfcmVzdWx0cywgc291cmNl VGV4dCwKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJ CQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIApAQCAtNDkxLDggKzQ5NiwxMyBAQCBQ b3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkvKgog CQkJCSAqIENyZWF0ZSBRdWVyeURlc2MgaW4gcG9ydGFsJ3MgY29udGV4dDsgZm9yIHRoZSBtb21l bnQsIHNldAogCQkJCSAqIHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KKwkJCQkgKgorCQkJ CSAqIFRoZXJlIGlzIG5vIFBhcnRpdGlvblBydW5lUmVzdWx0IHVubGVzcyB0aGUgUGxhbm5lZFN0 bXQgaXMKKwkJCQkgKiBmcm9tIGEgQ2FjaGVkUGxhbi4KIAkJCQkgKi8KIAkJCQlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5zdG10 cyksCisJCQkJCQkJCQkJCXBvcnRhbC0+cGFydF9wcnVuZV9yZXN1bHRzX2xpc3QgPT0gTklMID8g TklMIDoKKwkJCQkJCQkJCQkJbGluaXRpYWwocG9ydGFsLT5wYXJ0X3BydW5lX3Jlc3VsdHNfbGlz dCksCiAJCQkJCQkJCQkJCXBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZl U25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LApAQCAtMTIyNSw2ICsxMjM1 LDggQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAogCQlpZiAocHN0bXQtPnV0aWxp dHlTdG10ID09IE5VTEwpCiAJCXsKKwkJCUxpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0cyA9IE5JTDsK KwogCQkJLyoKIAkJCSAqIHByb2Nlc3MgYSBwbGFubmFibGUgcXVlcnkuCiAJCQkgKi8KQEAgLTEy NzEsMTAgKzEyODMsMTkgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCWVsc2UK IAkJCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCisJCQkvKgorCQkJICogRGV0 ZXJtaW5lIGlmIHRoZXJlJ3MgYSBjb3JyZXNwb25kaW5nIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVS ZXN1bHQKKwkJCSAqIGZvciB0aGlzIFBsYW5uZWRTdG10LgorCQkJICovCisJCQlpZiAocG9ydGFs LT5wYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCAhPSBOSUwpCisJCQkJcGFydF9wcnVuZV9yZXN1bHRz ID0gbGlzdF9udGhfbm9kZShMaXN0LAorCQkJCQkJCQkJCQkJICAgcG9ydGFsLT5wYXJ0X3BydW5l X3Jlc3VsdHNfbGlzdCwKKwkJCQkJCQkJCQkJCSAgIGZvcmVhY2hfY3VycmVudF9pbmRleChzdG10 bGlzdF9pdGVtKSk7CisKIAkJCWlmIChwc3RtdC0+Y2FuU2V0VGFnKQogCQkJewogCQkJCS8qIHN0 YXRlbWVudCBjYW4gc2V0IHRhZyBzdHJpbmcgKi8KLQkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCisJ CQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LCBwYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkJCQkJIHBvcnRh bC0+c291cmNlVGV4dCwKIAkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCiAJCQkJCQkJIHBv cnRhbC0+cXVlcnlFbnYsCkBAIC0xMjgzLDcgKzEzMDQsNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0 YWwgcG9ydGFsLAogCQkJZWxzZQogCQkJewogCQkJCS8qIHN0bXQgYWRkZWQgYnkgcmV3cml0ZSBj YW5ub3Qgc2V0IHRhZyAqLwotCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKKwkJCQlQcm9jZXNzUXVl cnkocHN0bXQsIHBhcnRfcHJ1bmVfcmVzdWx0cywKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0 LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVu diwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggY2M5NDMyMDVkMy4uOGZmNDIx NTNhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTk5LDE0ICs5OSwxOSBA QCBzdGF0aWMgZGxpc3RfaGVhZCBjYWNoZWRfZXhwcmVzc2lvbl9saXN0ID0gRExJU1RfU1RBVElD X0lOSVQoY2FjaGVkX2V4cHJlc3Npb25fbAogc3RhdGljIHZvaWQgUmVsZWFzZUdlbmVyaWNQbGFu KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIExpc3QgKlJldmFsaWRhdGVD YWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgICBRdWVy eUVudmlyb25tZW50ICpxdWVyeUVudik7Ci1zdGF0aWMgYm9vbCBDaGVja0NhY2hlZFBsYW4oQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CitzdGF0aWMgYm9vbCBDaGVja0NhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywK KwkJCQkJCQlMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOwogc3RhdGljIENhY2hlZFBs YW4gKkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpx bGlzdCwKLQkJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9u bWVudCAqcXVlcnlFbnYpOworCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBR dWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCQkJCQkJICAgTGlzdCAqKnBhcnRfcHJ1bmVf cmVzdWx0c19saXN0KTsKIHN0YXRpYyBib29sIGNob29zZV9jdXN0b21fcGxhbihDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMp Owogc3RhdGljIGRvdWJsZSBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wg aW5jbHVkZV9wbGFubmVyKTsKIHN0YXRpYyBRdWVyeSAqUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQo TGlzdCAqc3RtdHMpOwotc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3Rt dF9saXN0LCBib29sIGFjcXVpcmUpOworc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo TGlzdCAqc3RtdF9saXN0LCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAorCQkJCQkJCQkgTGlz dCAqKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LAorCQkJCQkJCQkgTGlzdCAqKmxvY2tlZFJlbGlk c19wZXJfc3RtdCk7CitzdGF0aWMgdm9pZCBSZWxlYXNlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10 X2xpc3QsIExpc3QgKmxvY2tlZFJlbGlkc19wZXJfc3RtdCk7CiBzdGF0aWMgdm9pZCBBY3F1aXJl UGxhbm5lckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lk IFNjYW5RdWVyeUZvckxvY2tzKFF1ZXJ5ICpwYXJzZXRyZWUsIGJvb2wgYWNxdWlyZSk7CiBzdGF0 aWMgYm9vbCBTY2FuUXVlcnlXYWxrZXIoTm9kZSAqbm9kZSwgYm9vbCAqYWNxdWlyZSk7CkBAIC03 ODIsNiArNzg3LDI2IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlLAogCXJldHVybiB0bGlzdDsKIH0KIAorLyogCisgKiBGcmVlUGFydGl0aW9uUHJ1 bmVSZXN1bHRzCisgKgkJRnJlZXMgdGhlIExpc3Qgb2YgTGlzdHMgb2YgUGFydGl0aW9uUHJ1bmVS ZXN1bHRzIGZvciBDaGVja0NhY2hlZFBsYW4oKQorICovCitzdGF0aWMgdm9pZAorRnJlZVBhcnRp dGlvblBydW5lUmVzdWx0cyhMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCkKK3sKKwlMaXN0 Q2VsbCAqbGM7CisKKwlmb3JlYWNoKGxjLCBwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCkKKwl7CisJ CUxpc3QgKnBhcnRfcHJ1bmVfcmVzdWx0cyA9IGxmaXJzdF9ub2RlKExpc3QsIGxjKTsKKworCQkv KiBGcmVlIGJvdGggdGhlIFBhcnRpdGlvblBydW5lUmVzdWx0cyBhbmQgdGhlIGNvbnRhaW5pbmcg TGlzdC4gKi8KKwkJbGlzdF9mcmVlX2RlZXAocGFydF9wcnVuZV9yZXN1bHRzKTsKKwl9CisKKwls aXN0X2ZyZWUocGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOworfQorCiAvKgogICogQ2hlY2tDYWNo ZWRQbGFuOiBzZWUgaWYgdGhlIENhY2hlZFBsYW5Tb3VyY2UncyBnZW5lcmljIHBsYW4gaXMgdmFs aWQuCiAgKgpAQCAtNzkwLDE1ICs4MTUsMjAgQEAgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKgogICogT24gYSAidHJ1ZSIgcmV0dXJuLCB3ZSBo YXZlIGFjcXVpcmVkIHRoZSBsb2NrcyBuZWVkZWQgdG8gcnVuIHRoZSBwbGFuLgogICogKFdlIG11 c3QgZG8gdGhpcyBmb3IgdGhlICJ0cnVlIiByZXN1bHQgdG8gYmUgcmFjZS1jb25kaXRpb24tZnJl ZS4pCisgKgorICogU2VlIEdldENhY2hlZFBsYW4oKSdzIGNvbW1lbnQgZm9yIGEgZGVzY3JpcHRp b24gb2YgcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QuCiAgKi8KIHN0YXRpYyBib29sCi1DaGVja0Nh Y2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKK0NoZWNrQ2FjaGVkUGxhbihD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAor CQkJCUxpc3QgKipwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCkKIHsKIAlDYWNoZWRQbGFuICpwbGFu ID0gcGxhbnNvdXJjZS0+Z3BsYW47CiAKIAkvKiBBc3NlcnQgdGhhdCBjYWxsZXIgY2hlY2tlZCB0 aGUgcXVlcnl0cmVlICovCiAJQXNzZXJ0KHBsYW5zb3VyY2UtPmlzX3ZhbGlkKTsKIAorCSpwYXJ0 X3BydW5lX3Jlc3VsdHNfbGlzdCA9IE5JTDsKKwogCS8qIElmIHRoZXJlJ3Mgbm8gZ2VuZXJpYyBw bGFuLCBqdXN0IHNheSAiZmFsc2UiICovCiAJaWYgKCFwbGFuKQogCQlyZXR1cm4gZmFsc2U7CkBA IC04MjAsMTMgKzg1MCwyMSBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxh bnNvdXJjZSkKIAkgKi8KIAlpZiAocGxhbi0+aXNfdmFsaWQpCiAJeworCQlMaXN0ICAgKmxvY2tl ZFJlbGlkc19wZXJfc3RtdDsKKwogCQkvKgogCQkgKiBQbGFuIG11c3QgaGF2ZSBwb3NpdGl2ZSBy ZWZjb3VudCBiZWNhdXNlIGl0IGlzIHJlZmVyZW5jZWQgYnkKIAkJICogcGxhbnNvdXJjZTsgc28g bm8gbmVlZCB0byBmZWFyIGl0IGRpc2FwcGVhcnMgdW5kZXIgdXMgaGVyZS4KIAkJICovCiAJCUFz c2VydChwbGFuLT5yZWZjb3VudCA+IDApOwogCi0JCUFjcXVpcmVFeGVjdXRvckxvY2tzKHBsYW4t PnN0bXRfbGlzdCwgdHJ1ZSk7CisJCS8qCisJCSAqIExvY2sgcmVsYXRpb25zIHNjYW5uZWQgYnkg dGhlIHBsYW4uICBUaGlzIGlzIHdoZXJlIHRoZSBwcnVuaW5nCisJCSAqIGhhcHBlbnMgaWYgbmVl ZGVkLgorCQkgKi8KKwkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBib3Vu ZFBhcmFtcywKKwkJCQkJCQkgcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QsCisJCQkJCQkJICZsb2Nr ZWRSZWxpZHNfcGVyX3N0bXQpOwogCiAJCS8qCiAJCSAqIElmIHBsYW4gd2FzIHRyYW5zaWVudCwg Y2hlY2sgdG8gc2VlIGlmIFRyYW5zYWN0aW9uWG1pbiBoYXMKQEAgLTg0OCw3ICs4ODYsMTEgQEAg Q2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAJCX0KIAogCQkv KiBPb3BzLCB0aGUgcmFjZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFzZSB1c2VsZXNzIGxvY2tzLiAq LwotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGZhbHNlKTsKKwkJUmVs ZWFzZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBsb2NrZWRSZWxpZHNfcGVyX3N0bXQp OworCisJCS8qIFJlbGVhc2UgYW55IFBhcnRpdGlvblBydW5lUmVzdWx0cyB0aGF0IG1heSBiZWVu IGNyZWF0ZWQuICovCisJCUZyZWVQYXJ0aXRpb25QcnVuZVJlc3VsdHMoKnBhcnRfcHJ1bmVfcmVz dWx0c19saXN0KTsKKwkJKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0ID0gTklMOwogCX0KIAogCS8q CkBAIC04NzQsMTAgKzkxNiwxNCBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSkKICAqIFBsYW5uaW5nIHdvcmsgaXMgZG9uZSBpbiB0aGUgY2FsbGVyJ3MgbWVt b3J5IGNvbnRleHQuICBUaGUgZmluaXNoZWQgcGxhbgogICogaXMgaW4gYSBjaGlsZCBtZW1vcnkg Y29udGV4dCwgd2hpY2ggdHlwaWNhbGx5IHNob3VsZCBnZXQgcmVwYXJlbnRlZAogICogKHVubGVz cyB0aGlzIGlzIGEgb25lLXNob3QgcGxhbiwgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCBjb3B5IHRo ZSBwbGFuKS4KKyAqCisgKiBBIGxpc3Qgb2YgTklMcyBpcyByZXR1cm5lZCBpbiAqcGFydF9wcnVu ZV9yZXN1bHRzX2xpc3QsIG1lYW5pbmcgdGhhdCBubworICogbm8gcGFydGl0aW9uIHBydW5pbmcg aGFzIGJlZW4gZG9uZSB5ZXQgZm9yIHRoZSBwbGFucyBpbiBzdG10X2xpc3QuCiAgKi8KIHN0YXRp YyBDYWNoZWRQbGFuICoKIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLCBMaXN0ICpxbGlzdCwKLQkJCQlQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVu dmlyb25tZW50ICpxdWVyeUVudikKKwkJCQlQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVy eUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCQlMaXN0ICoqcGFydF9wcnVuZV9yZXN1bHRzX2xp c3QpCiB7CiAJQ2FjaGVkUGxhbiAqcGxhbjsKIAlMaXN0CSAgICpwbGlzdDsKQEAgLTEwMDcsNiAr MTA1MywxNyBAQCBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwg TGlzdCAqcWxpc3QsCiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAorCS8qCisJ ICogTm8gYWN0dWFsIFBhcnRpdGlvblBydW5lUmVzdWx0cyB5ZXQgdG8gYWRkLCB0aG91Z2ggbXVz dCBpbml0aWFsaXplCisJICogdGhlIGxpc3QgdG8gaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZWxl bWVudHMgYXMgdGhlIGxpc3Qgb2YKKwkgKiBQbGFubmVkU3RtdHMuCisJICovCisJKnBhcnRfcHJ1 bmVfcmVzdWx0c19saXN0ID0gTklMOworCWZvcmVhY2gobGMsIHBsaXN0KQorCXsKKwkJKnBhcnRf cHJ1bmVfcmVzdWx0c19saXN0ID0gbGFwcGVuZCgqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QsIE5J TCk7CisJfQorCiAJcmV0dXJuIHBsYW47CiB9CiAKQEAgLTExMjYsNiArMTE4MywxOSBAQCBjYWNo ZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKQogICog cGxhbiBvciBhIGN1c3RvbSBwbGFuIGZvciB0aGUgZ2l2ZW4gcGFyYW1ldGVyczogdGhlIGNhbGxl ciBkb2VzIG5vdCBrbm93CiAgKiB3aGljaCBpdCB3aWxsIGdldC4KICAqCisgKiBGb3IgZXZlcnkg UGxhbm5lZFN0bXQgZm91bmQgaW4gdGhlIHJldHVybmVkIENhY2hlZFBsYW4sIGFuIGVsZW1lbnQg dGhhdAorICogaXMgZWl0aGVyIGEgTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdCBvciBhIE5J TCBpcyBhZGRlZCB0bworICogKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0LiAgVGhlIGZvcm1lciBp ZiB0aGUgUGxhbm5lZFN0bXQgaXMgZnJvbQorICogdGhlIGV4aXN0aW5nIENhY2hlZFBsYW4gdGhh dCBpcyBvdGhlcndpc2UgdmFsaWQgYW5kIGhhcworICogY29udGFpbnNJbml0aWFsUHJ1bmluZyBz ZXQgdG8gdHJ1ZS4gIEJlZm9yZSByZXR1cm5pbmcgc3VjaCBhIENhY2hlZFBsYW4sCisgKiB0aG9z ZSAiaW5pdGlhbCIgc3RlcHMgYXJlIHBlcmZvcm1lZCBieSBjYWxsaW5nIEV4ZWN1dG9yRG9Jbml0 aWFsUHJ1bmluZygpCisgKiB0byBkZXRlcm1pbmUgb25seSB0aG9zZSBsZWFmIHBhcnRpdGlvbnMg dGhhdCBuZWVkIHRvIGJlIGxvY2tlZCBieQorICogQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBieSBw cnVuaW5nIGF3YXkgc3VicGxhbnMgdGhhdCBkb24ndCBtYXRjaCB0aGUKKyAqICJpbml0aWFsIiBw cnVuaW5nIGNvbmRpdGlvbnMuICBGb3IgZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gZm91bmQgaW4K KyAqIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zLCBhIFBhcnRpdGlvblBydW5lUmVzdWx0IGNv bnRhaW5pbmcgdGhlIGJpdG1hcHNldAorICogb2YgdGhlIGluZGV4ZXMgb2Ygc3Vydml2aW5nIHN1 YnBsYW5zIGlzIGFkZGVkIHRvIHRoZSBMaXN0IGZvciB0aGUKKyAqIFBsYW5uZWRTdG10LgorICoK ICAqIE9uIHJldHVybiwgdGhlIHBsYW4gaXMgdmFsaWQgYW5kIHdlIGhhdmUgc3VmZmljaWVudCBs b2NrcyB0byBiZWdpbgogICogZXhlY3V0aW9uLgogICoKQEAgLTExMzksMTEgKzEyMDksMTMgQEAg Y2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikK ICAqLwogQ2FjaGVkUGxhbiAqCiBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCi0JCQkgIFJlc291cmNlT3duZXIgb3du ZXIsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQorCQkJICBSZXNvdXJjZU93bmVyIG93bmVy LCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCSAgTGlzdCAqKnBhcnRfcHJ1bmVfcmVz dWx0c19saXN0KQogewogCUNhY2hlZFBsYW4gKnBsYW4gPSBOVUxMOwogCUxpc3QJICAgKnFsaXN0 OwogCWJvb2wJCWN1c3RvbXBsYW47CisJTGlzdAkgICAqbXlfcGFydF9wcnVuZV9yZXN1bHRzX2xp c3Q7CiAKIAkvKiBBc3NlcnQgY2FsbGVyIGlzIGRvaW5nIHRoaW5ncyBpbiBhIHNhbmUgb3JkZXIg Ki8KIAlBc3NlcnQocGxhbnNvdXJjZS0+bWFnaWMgPT0gQ0FDSEVEUExBTlNPVVJDRV9NQUdJQyk7 CkBAIC0xMTYwLDcgKzEyMzIsOCBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAKIAlpZiAoIWN1c3RvbXBsYW4p CiAJewotCQlpZiAoQ2hlY2tDYWNoZWRQbGFuKHBsYW5zb3VyY2UpKQorCQlpZiAoQ2hlY2tDYWNo ZWRQbGFuKHBsYW5zb3VyY2UsIGJvdW5kUGFyYW1zLAorCQkJCQkJCSZteV9wYXJ0X3BydW5lX3Jl c3VsdHNfbGlzdCkpCiAJCXsKIAkJCS8qIFdlIHdhbnQgYSBnZW5lcmljIHBsYW4sIGFuZCB3ZSBh bHJlYWR5IGhhdmUgYSB2YWxpZCBvbmUgKi8KIAkJCXBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsK QEAgLTExNjksNyArMTI0Miw4IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxh bnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAkJZWxzZQogCQl7CiAJCQkvKiBC dWlsZCBhIG5ldyBnZW5lcmljIHBsYW4gKi8KLQkJCXBsYW4gPSBCdWlsZENhY2hlZFBsYW4ocGxh bnNvdXJjZSwgcWxpc3QsIE5VTEwsIHF1ZXJ5RW52KTsKKwkJCXBsYW4gPSBCdWlsZENhY2hlZFBs YW4ocGxhbnNvdXJjZSwgcWxpc3QsIE5VTEwsIHF1ZXJ5RW52LAorCQkJCQkJCQkgICAmbXlfcGFy dF9wcnVuZV9yZXN1bHRzX2xpc3QpOwogCQkJLyogSnVzdCBtYWtlIHJlYWwgc3VyZSBwbGFuc291 cmNlLT5ncGxhbiBpcyBjbGVhciAqLwogCQkJUmVsZWFzZUdlbmVyaWNQbGFuKHBsYW5zb3VyY2Up OwogCQkJLyogTGluayB0aGUgbmV3IGdlbmVyaWMgcGxhbiBpbnRvIHRoZSBwbGFuc291cmNlICov CkBAIC0xMjE0LDcgKzEyODgsOCBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJaWYgKGN1c3RvbXBsYW4pCiAJ ewogCQkvKiBCdWlsZCBhIGN1c3RvbSBwbGFuICovCi0JCXBsYW4gPSBCdWlsZENhY2hlZFBsYW4o cGxhbnNvdXJjZSwgcWxpc3QsIGJvdW5kUGFyYW1zLCBxdWVyeUVudik7CisJCXBsYW4gPSBCdWls ZENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgcWxpc3QsIGJvdW5kUGFyYW1zLCBxdWVyeUVudiwKKwkJ CQkJCQkgICAmbXlfcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOwogCQkvKiBBY2N1bXVsYXRlIHRv dGFsIGNvc3RzIG9mIGN1c3RvbSBwbGFucyAqLwogCQlwbGFuc291cmNlLT50b3RhbF9jdXN0b21f Y29zdCArPSBjYWNoZWRfcGxhbl9jb3N0KHBsYW4sIHRydWUpOwogCkBAIC0xMjQ2LDYgKzEzMjEs OSBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlz dEluZm8gYm91bmRQYXJhbXMsCiAJCXBsYW4tPmlzX3NhdmVkID0gdHJ1ZTsKIAl9CiAKKwlpZiAo cGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpCisJCSpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCA9IG15 X3BhcnRfcHJ1bmVfcmVzdWx0c19saXN0OworCiAJcmV0dXJuIHBsYW47CiB9CiAKQEAgLTE3Mzcs MTcgKzE4MTUsMjkgQEAgUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpCiAKIC8q CiAgKiBBY3F1aXJlRXhlY3V0b3JMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIGV4ZWN1 dGlvbiBvZiBhIGNhY2hlZCBwbGFuOwotICogb3IgcmVsZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMg ZmFsc2UuCisgKgorICogU2VlIEdldENhY2hlZFBsYW4oKSdzIGNvbW1lbnQgZm9yIGEgZGVzY3Jp cHRpb24gb2YgcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QuCisgKgorICogT24gcmV0dXJuLCAqbG9j a2VkUmVsaWRzX3Blcl9zdG10IHdpbGwgY29udGFpbiBhIGJpdG1hcHNldCBmb3IgZXZlcnkKKyAq IFBsYW5uZWRTdG10IGluIHN0bXRfbGlzdCwgY29udGFpbmluZyB0aGUgUlQgaW5kZXhlcyBvZiBy ZWxhdGlvbiBlbnRyaWVzCisgKiBpbiBpdHMgcmFuZ2UgdGFibGUgdGhhdCB3ZXJlIGFjdHVhbGx5 IGxvY2tlZCwgb3IgTlVMTCBpZiB0aGUgUGxhbm5lZFN0bXQKKyAqIGNvbnRhaW5zIGEgdXRpbGl0 eSBzdGF0ZW1lbnQuCiAgKi8KIHN0YXRpYyB2b2lkCi1BY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0 ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKK0FjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0 bXRfbGlzdCwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKKwkJCQkJIExpc3QgKipwYXJ0X3By dW5lX3Jlc3VsdHNfbGlzdCwKKwkJCQkJIExpc3QgKipsb2NrZWRSZWxpZHNfcGVyX3N0bXQpCiB7 CiAJTGlzdENlbGwgICAqbGMxOwogCisJKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0ID0gKmxvY2tl ZFJlbGlkc19wZXJfc3RtdCA9IE5JTDsKIAlmb3JlYWNoKGxjMSwgc3RtdF9saXN0KQogCXsKIAkJ UGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7 Ci0JCUxpc3RDZWxsICAgKmxjMjsKKwkJTGlzdAkgICAqcGFydF9wcnVuZV9yZXN1bHRzID0gTklM OworCQlCaXRtYXBzZXQgICphbGxMb2NrUmVsaWRzOworCQlCaXRtYXBzZXQgICpsb2NrZWRSZWxp ZHMgPSBOVUxMOworCQlpbnQJCQlydGk7CiAKIAkJaWYgKHBsYW5uZWRzdG10LT5jb21tYW5kVHlw ZSA9PSBDTURfVVRJTElUWSkKIAkJewpAQCAtMTc2MSwxMyArMTg1MSw0MCBAQCBBY3F1aXJlRXhl Y3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKIAkJCVF1ZXJ5CSAgICpx dWVyeSA9IFV0aWxpdHlDb250YWluc1F1ZXJ5KHBsYW5uZWRzdG10LT51dGlsaXR5U3RtdCk7CiAK IAkJCWlmIChxdWVyeSkKLQkJCQlTY2FuUXVlcnlGb3JMb2NrcyhxdWVyeSwgYWNxdWlyZSk7CisJ CQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnksIHRydWUpOworCQkJKnBhcnRfcHJ1bmVfcmVzdWx0 c19saXN0ID0gbGFwcGVuZCgqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QsIE5JTCk7CiAJCQljb250 aW51ZTsKIAkJfQogCi0JCWZvcmVhY2gobGMyLCBwbGFubmVkc3RtdC0+cnRhYmxlKQorCQkvKgor CQkgKiBGaWd1cmUgb3V0IHRoZSBzZXQgb2YgcmVsYXRpb25zIHRoYXQgd291bGQgbmVlZCB0byBi ZSBsb2NrZWQKKwkJICogYmVmb3JlIGV4ZWN1dGluZyB0aGUgcGxhbi4KKwkJICovCisJCWlmIChw bGFubmVkc3RtdC0+Y29udGFpbnNJbml0aWFsUHJ1bmluZykKIAkJewotCQkJUmFuZ2VUYmxFbnRy eSAqcnRlID0gKFJhbmdlVGJsRW50cnkgKikgbGZpcnN0KGxjMik7CisJCQlCaXRtYXBzZXQgKnNj YW5fbGVhZnBhcnRfcnRpcyA9IE5VTEw7CisKKwkJCS8qCisJCQkgKiBPYnRhaW4gdGhlIHNldCBv ZiBsZWFmIHBhcnRpdGlvbnMgdG8gYmUgbG9ja2VkLgorCQkJICoKKwkJCSAqIFRoZSBmb2xsb3dp bmcgZG9lcyBpbml0aWFsIHBhcnRpdGlvbiBwcnVuaW5nIHVzaW5nIHRoZQorCQkJICogUGFydGl0 aW9uUHJ1bmVJbmZvcyBmb3VuZCBpbiBwbGFubmVkc3RtdC0+cGFydFBydW5lSW5mb3MgYW5kCisJ CQkgKiBmaW5kcyBsZWFmIHBhcnRpdGlvbnMgdGhhdCBzdXJ2aXZlIHRoYXQgcHJ1bmluZyBhY3Jv c3MgYWxsIHRoZQorCQkJICogbm9kZXMgaW4gdGhlIHBsYW4gdHJlZS4KKwkJCSAqLworCQkJcGFy dF9wcnVuZV9yZXN1bHRzID0gRXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKHBsYW5uZWRzdG10LAor CQkJCQkJCQkJCQkJCQkgIGJvdW5kUGFyYW1zLAorCQkJCQkJCQkJCQkJCQkgICZzY2FuX2xlYWZw YXJ0X3J0aXMpOworCQkJYWxsTG9ja1JlbGlkcyA9IGJtc191bmlvbihwbGFubmVkc3RtdC0+bWlu TG9ja1JlbGlkcywKKwkJCQkJCQkJCSAgc2Nhbl9sZWFmcGFydF9ydGlzKTsKKwkJfQorCQllbHNl CisJCQlhbGxMb2NrUmVsaWRzID0gcGxhbm5lZHN0bXQtPm1pbkxvY2tSZWxpZHM7CisKKwkJcnRp ID0gLTE7CisJCXdoaWxlICgocnRpID0gYm1zX25leHRfbWVtYmVyKGFsbExvY2tSZWxpZHMsIHJ0 aSkpID4gMCkKKwkJeworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gcnRfZmV0Y2gocnRpLCBwbGFu bmVkc3RtdC0+cnRhYmxlKTsKIAogCQkJaWYgKHJ0ZS0+cnRla2luZCAhPSBSVEVfUkVMQVRJT04p CiAJCQkJY29udGludWU7CkBAIC0xNzc4LDEwICsxODk1LDU5IEBAIEFjcXVpcmVFeGVjdXRvckxv Y2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQogCQkJICogZmFpbCBpZiBpdCdzIGJl ZW4gZHJvcHBlZCBlbnRpcmVseSAtLS0gd2UnbGwganVzdCB0cmFuc2llbnRseQogCQkJICogYWNx dWlyZSBhIG5vbi1jb25mbGljdGluZyBsb2NrLgogCQkJICovCi0JCQlpZiAoYWNxdWlyZSkKLQkJ CQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7Ci0JCQllbHNl Ci0JCQkJVW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJ CQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCQlsb2Nr ZWRSZWxpZHMgPSBibXNfYWRkX21lbWJlcihsb2NrZWRSZWxpZHMsIHJ0aSk7CisJCX0KKworCQkq cGFydF9wcnVuZV9yZXN1bHRzX2xpc3QgPSBsYXBwZW5kKCpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlz dCwKKwkJCQkJCQkJCQkgICBwYXJ0X3BydW5lX3Jlc3VsdHMpOworCQkqbG9ja2VkUmVsaWRzX3Bl cl9zdG10ID0gbGFwcGVuZCgqbG9ja2VkUmVsaWRzX3Blcl9zdG10LCBsb2NrZWRSZWxpZHMpOwor CX0KK30KKworLyoKKyAqIFJlbGVhc2VFeGVjdXRvckxvY2tzCisgKiAJCVJlbGVhc2UgbG9ja3Mg dGhhdCB3b3VsZCd2ZSBiZWVuIGFjcXVpcmVkIGJ5IGFuIGVhcmxpZXIgY2FsbCB0bworICogCQlB Y3F1aXJlRXhlY3V0b3JMb2NrcygpCisgKi8KK3N0YXRpYyB2b2lkCitSZWxlYXNlRXhlY3V0b3JM b2NrcyhMaXN0ICpzdG10X2xpc3QsIExpc3QgKmxvY2tlZFJlbGlkc19wZXJfc3RtdCkKK3sKKwlM aXN0Q2VsbCAgICpsYzEsCisJCQkgICAqbGMyOworCisJZm9yYm90aChsYzEsIHN0bXRfbGlzdCwg bGMyLCBsb2NrZWRSZWxpZHNfcGVyX3N0bXQpCisJeworCQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0 bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMxKTsKKwkJQml0bWFwc2V0ICAqbG9ja2Vk UmVsaWRzID0gbGZpcnN0X25vZGUoQml0bWFwc2V0LCBsYzIpOworCQlpbnQJCQlydGk7CisKKwkJ aWYgKHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKKwkJeworCQkJLyoK KwkJCSAqIElnbm9yZSB1dGlsaXR5IHN0YXRlbWVudHMsIGV4Y2VwdCB0aG9zZSAoc3VjaCBhcyBF WFBMQUlOKSB0aGF0CisJCQkgKiBjb250YWluIGEgcGFyc2VkLWJ1dC1ub3QtcGxhbm5lZCBxdWVy eS4gIE5vdGU6IGl0J3Mgb2theSB0byB1c2UKKwkJCSAqIFNjYW5RdWVyeUZvckxvY2tzLCBldmVu IHRob3VnaCB0aGUgcXVlcnkgaGFzbid0IGJlZW4gdGhyb3VnaAorCQkJICogcnVsZSByZXdyaXRp bmcsIGJlY2F1c2UgcmV3cml0aW5nIGRvZXNuJ3QgY2hhbmdlIHRoZSBxdWVyeQorCQkJICogcmVw cmVzZW50YXRpb24uCisJCQkgKi8KKwkJCVF1ZXJ5CSAgICpxdWVyeSA9IFV0aWxpdHlDb250YWlu c1F1ZXJ5KHBsYW5uZWRzdG10LT51dGlsaXR5U3RtdCk7CisKKwkJCUFzc2VydChsb2NrZWRSZWxp ZHMgPT0gTlVMTCk7CisJCQlpZiAocXVlcnkpCisJCQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnks IGZhbHNlKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJcnRpID0gLTE7CisJCXdoaWxlICgocnRp ID0gYm1zX25leHRfbWVtYmVyKGxvY2tlZFJlbGlkcywgcnRpKSkgPj0gMCkKKwkJeworCQkJUmFu Z2VUYmxFbnRyeSAqcnRlID0gcnRfZmV0Y2gocnRpLCBwbGFubmVkc3RtdC0+cnRhYmxlKTsKKwor CQkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pOworCisJCQkvKiBTZWUgdGhl IGNvbW1lbnQgaW4gQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKS4gKi8KKwkJCVVubG9ja1JlbGF0aW9u T2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOwogCQl9CiAJfQogfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyBiL3NyYy9iYWNrZW5kL3V0aWxz L21tZ3IvcG9ydGFsbWVtLmMKaW5kZXggN2IxYWU2ZmRjZi4uNWI5MDk4OTcxYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBAIC0zMDMsNiArMzAzLDI1IEBAIFBvcnRhbERlZmluZVF1 ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfREVGSU5FRDsKIH0K IAorLyoKKyAqIFBvcnRhbFN0b3JlUGFydGl0aW9uUHJ1bmVSZXN1bHRzCisgKgkJQ29weSB0aGUg Z2l2ZW4gTGlzdCBvZiBMaXN0cyBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgaW50byB0aGUKKyAq CQlwb3J0YWwncyBjb250ZXh0CisgKgorICogVGhpcyBhbGxvd3MgdGhlIGNhbGxlciB0byBlbnN1 cmUgdGhhdCB0aGUgbGlzdCBleGlzdHMgYXMgbG9uZyBhcyB0aGUgcG9ydGFsCisgKiBkb2VzLgor ICovCit2b2lkCitQb3J0YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0cyhQb3J0YWwgcG9ydGFs LCBMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHNfbGlzdCkKK3sKKwlNZW1vcnlDb250ZXh0CW9sZGN4 dDsKKworCUFzc2VydChQb3J0YWxJc1ZhbGlkKHBvcnRhbCkpOworCW9sZGN4dCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhwb3J0YWwtPnBvcnRhbENvbnRleHQpOworCXBvcnRhbC0+cGFydF9wcnVu ZV9yZXN1bHRzX2xpc3QgPSBjb3B5T2JqZWN0KHBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKKwlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKK30KKwogLyoKICAqIFBvcnRhbFJlbGVhc2VD YWNoZWRQbGFuCiAgKgkJUmVsZWFzZSBhIHBvcnRhbCdzIHJlZmVyZW5jZSB0byBpdHMgY2FjaGVk IHBsYW4sIGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4u aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCA5ZWJkZTA4OWFlLi4yNjlj YzRkNTYyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCkBAIC04Nyw3ICs4Nyw5IEBAIGV4dGVybiB2 b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRv LAogCQkJCQkJCSAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJ CQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYp OwogCi1leHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQs IEludG9DbGF1c2UgKmludG8sCitleHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3Rt dCAqcGxhbm5lZHN0bXQsCisJCQkJCQkgICBMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHMsCisJCQkJ CQkgICBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJICAgRXhwbGFpblN0YXRlICplcywgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnYsCiAJCQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVy YXRpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgg Yi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggMTdmYWJjMThjOS4u NGI5OGQwZDJlZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaApAQCAtNDUsNiAr NDUsNyBAQCBleHRlcm4gdm9pZCBFeGVjQ2xlYW51cFR1cGxlUm91dGluZyhNb2RpZnlUYWJsZVN0 YXRlICptdHN0YXRlLAogICogbnBhcnRzCQkJCQkJTGVuZ3RoIG9mIHN1YnBsYW5fbWFwW10gYW5k IHN1YnBhcnRfbWFwW10uCiAgKiBzdWJwbGFuX21hcAkJCQkJU3VicGxhbiBpbmRleCBieSBwYXJ0 aXRpb24gaW5kZXgsIG9yIC0xLgogICogc3VicGFydF9tYXAJCQkJCVN1YnBhcnQgaW5kZXggYnkg cGFydGl0aW9uIGluZGV4LCBvciAtMS4KKyAqIHJ0aV9tYXAJCQkJCQlSYW5nZSB0YWJsZSBpbmRl eCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIDAuCiAgKiBwcmVzZW50X3BhcnRzCQkJCUEgQml0bWFw c2V0IG9mIHRoZSBwYXJ0aXRpb24gaW5kZXhlcyB0aGF0IHdlCiAgKgkJCQkJCQkJaGF2ZSBzdWJw bGFucyBvciBzdWJwYXJ0cyBmb3IuCiAgKiBpbml0aWFsX3BydW5pbmdfc3RlcHMJCUxpc3Qgb2Yg UGFydGl0aW9uUHJ1bmVTdGVwcyB1c2VkIHRvCkBAIC02MSw2ICs2Miw3IEBAIHR5cGVkZWYgc3Ry dWN0IFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEKIAlpbnQJCQlucGFydHM7CiAJaW50CQkgICAq c3VicGxhbl9tYXA7CiAJaW50CQkgICAqc3VicGFydF9tYXA7CisJSW5kZXgJICAgKnJ0aV9tYXA7 CiAJQml0bWFwc2V0ICAqcHJlc2VudF9wYXJ0czsKIAlMaXN0CSAgICppbml0aWFsX3BydW5pbmdf c3RlcHM7CiAJTGlzdAkgICAqZXhlY19wcnVuaW5nX3N0ZXBzOwpAQCAtMTI3LDUgKzEyOSwxMCBA QCBleHRlcm4gUGFydGl0aW9uUHJ1bmVTdGF0ZSAqRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBs YW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQgKnJvb3RfcGFyZW50 X3JlbGlkcywKIAkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBs YW5zKTsKIGV4dGVybiBCaXRtYXBzZXQgKkV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRp b25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAotCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVu ZSk7CisJCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAorCQkJCQkJCQkJCSAgIEJpdG1h cHNldCAqKnNjYW5fbGVhZnBhcnRfcnRpcyk7CitleHRlcm4gQml0bWFwc2V0ICpFeGVjUGFydGl0 aW9uRG9Jbml0aWFsUHJ1bmluZyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCVBh cmFtTGlzdEluZm8gcGFyYW1zLAorCQkJCQkJCQlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bywKKwkJCQkJCQkJQml0bWFwc2V0ICoqc2Nhbl9sZWFmcGFydF9ydGlzKTsKICNlbmRpZgkJCQkJ CQkvKiBFWEVDUEFSVElUSU9OX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWNkZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCmluZGV4IGU3OWUy YzAwMWYuLjdkNDM3OWRhN2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNk ZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaApAQCAtMzUsNiArMzUs OCBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAkvKiBUaGVzZSBmaWVsZHMgYXJlIHByb3Zp ZGVkIGJ5IENyZWF0ZVF1ZXJ5RGVzYyAqLwogCUNtZFR5cGUJCW9wZXJhdGlvbjsJCS8qIENNRF9T RUxFQ1QsIENNRF9VUERBVEUsIGV0Yy4gKi8KIAlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQ7CS8q IHBsYW5uZXIncyBvdXRwdXQgKGNvdWxkIGJlIHV0aWxpdHksIHRvbykgKi8KKwlMaXN0CQkqcGFy dF9wcnVuZV9yZXN1bHRzOyAvKiBFeGVjdXRvckRvSW5pdGlhbFBydW5pbmcoKSdzCisJCQkJCQkJ CQkgICogb3V0cHV0IGZvciBwbGFubmVkc3RtdCAqLwogCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7 CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hvdAlzbmFwc2hvdDsJCS8q IHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hvdAljcm9zc2NoZWNrX3NuYXBz aG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRlICovCkBAIC01Nyw2ICs1OSw3 IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAvKiBpbiBwcXVlcnkuYyAqLwogZXh0ZXJu IFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJ CQkJCQkJICBMaXN0ICpwYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkJCQkJCSAgY29uc3QgY2hhciAq c291cmNlVGV4dCwKIAkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFw c2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggYWFm MmJjNzhiOS4uMzJiYmJjNTkyNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xODUsNiAr MTg1LDkgQEAgRXhlY0dldEp1bmtBdHRyaWJ1dGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEF0dHJO dW1iZXIgYXR0bm8sIGJvb2wgKmlzTnVsbCkKIC8qCiAgKiBwcm90b3R5cGVzIGZyb20gZnVuY3Rp b25zIGluIGV4ZWNNYWluLmMKICAqLworZXh0ZXJuIExpc3QgKkV4ZWN1dG9yRG9Jbml0aWFsUHJ1 bmluZyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCQkgIFBhcmFtTGlzdEluZm8g cGFyYW1zLAorCQkJCQkJCQkJICBCaXRtYXBzZXQgKipzY2FuX2xlYWZwYXJ0X3J0aXMpOwogZXh0 ZXJuIHZvaWQgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7 CiBleHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA3MTI0OGE5NDY2Li45YzZlOGY1ZTEzIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaApAQCAtNjE5LDYgKzYxOSw3IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0 ZQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJUGxhbm5l ZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KIAlM aXN0CQkqZXNfcGFydF9wcnVuZV9pbmZvczsJLyogUGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3Mg Ki8KKwlMaXN0CQkqZXNfcGFydF9wcnVuZV9yZXN1bHRzOyAvKiBRdWVyeURlc2MucGFydF9wcnVu ZV9yZXN1bHRzICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQg ZnJvbSBRdWVyeURlc2MgKi8KIAogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1s ZXZlbCBqdW5rIGZpbHRlciwgaWYgYW55ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCAxZjMzOTAyOTQ3Li5j MmYyNTQ0ZGY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL25vZGVzLmgKQEAgLTIxOCw2ICsyMTgsNyBAQCBleHRlcm4gc3RydWN0 IEJpdG1hcHNldCAqcmVhZEJpdG1hcHNldCh2b2lkKTsKIGV4dGVybiB1aW50cHRyX3QgcmVhZERh dHVtKGJvb2wgdHlwYnl2YWwpOwogZXh0ZXJuIGJvb2wgKnJlYWRCb29sQ29scyhpbnQgbnVtQ29s cyk7CiBleHRlcm4gaW50ICpyZWFkSW50Q29scyhpbnQgbnVtQ29scyk7CitleHRlcm4gSW5kZXgg KnJlYWRJbmRleENvbHMoaW50IG51bUNvbHMpOwogZXh0ZXJuIE9pZCAqcmVhZE9pZENvbHMoaW50 IG51bUNvbHMpOwogZXh0ZXJuIGludDE2ICpyZWFkQXR0ck51bWJlckNvbHMoaW50IG51bUNvbHMp OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IGRiYWE5YmI1NGQuLmUwZTVjMTViMDkgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oCkBAIC0xMjUsNiArMTI1LDE4IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5u ZXJHbG9iYWwKIAkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWluZWQgaW4gdGhl IHBsYW4gKi8KIAlMaXN0CSAgICpwYXJ0UHJ1bmVJbmZvczsKIAorCS8qCisJICogRG8gYW55IG9m IHRob3NlIFBhcnRpdGlvblBydW5lSW5mb3MgaGF2ZSBpbml0aWFsIHBydW5pbmcgc3RlcHMgaW4g dGhlbT8KKwkgKi8KKwlib29sCQljb250YWluc0luaXRpYWxQcnVuaW5nOworCisJLyoKKwkgKiBJ bmRleGVzIG9mIGFsbCByYW5nZSB0YWJsZSBlbnRyaWVzIG1pbnVzIGluZGV4ZXMgb2YgcmFuZ2Ug dGFibGUgZW50cmllcworCSAqIG9mIHRoZSBsZWFmIHBhcnRpdGlvbnMgc2Nhbm5lZCBieSBwcnVu YWJsZSBzdWJwbGFuczsgc2VlCisJICogQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKQorCSAqLworCUJp dG1hcHNldCAgKm1pbkxvY2tSZWxpZHM7CisKIAkvKiBPSURzIG9mIHJlbGF0aW9ucyB0aGUgcGxh biBkZXBlbmRzIG9uICovCiAJTGlzdAkgICAqcmVsYXRpb25PaWRzOwogCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oCmluZGV4IGMzNmExNWJkMDkuLjcxNGUyY2YyYzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBA IC03Myw4ICs3MywxNyBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogCUxpc3QJICAgKnBh cnRQcnVuZUluZm9zOyAvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyBjb250YWluZWQgaW4g dGhlCiAJCQkJCQkJCSAqIHBsYW4gKi8KIAorCWJvb2wJCWNvbnRhaW5zSW5pdGlhbFBydW5pbmc7 CS8qIERvIGFueSBvZiB0aG9zZSBQYXJ0aXRpb25QcnVuZUluZm9zCisJCQkJCQkJCQkJICogaGF2 ZSBpbml0aWFsIHBydW5pbmcgc3RlcHMgaW4gdGhlbT8KKwkJCQkJCQkJCQkgKi8KKwogCUxpc3QJ ICAgKnJ0YWJsZTsJCQkvKiBsaXN0IG9mIFJhbmdlVGJsRW50cnkgbm9kZXMgKi8KIAorCUJpdG1h cHNldCAgKm1pbkxvY2tSZWxpZHM7CS8qIEluZGV4ZXMgb2YgYWxsIHJhbmdlIHRhYmxlIGVudHJp ZXMgbWludXMKKwkJCQkJCQkJICogaW5kZXhlcyBvZiByYW5nZSB0YWJsZSBlbnRyaWVzIG9mIHRo ZSBsZWFmCisJCQkJCQkJCSAqIHBhcnRpdGlvbnMgc2Nhbm5lZCBieSBwcnVuYWJsZSBzdWJwbGFu czsKKwkJCQkJCQkJICogc2VlIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgKi8KKwogCS8qIHJ0YWJs ZSBpbmRleGVzIG9mIHRhcmdldCByZWxhdGlvbnMgZm9yIElOU0VSVC9VUERBVEUvREVMRVRFL01F UkdFICovCiAJTGlzdAkgICAqcmVzdWx0UmVsYXRpb25zOwkvKiBpbnRlZ2VyIGxpc3Qgb2YgUlQg aW5kZXhlcywgb3IgTklMICovCiAKQEAgLTE0MTQsNiArMTQyMywxMyBAQCB0eXBlZGVmIHN0cnVj dCBQbGFuUm93TWFyawogICogcHJ1bmVfaW5mb3MJCQlMaXN0IG9mIExpc3RzIGNvbnRhaW5pbmcg UGFydGl0aW9uZWRSZWxQcnVuZUluZm8gbm9kZXMsCiAgKgkJCQkJCW9uZSBzdWJsaXN0IHBlciBy dW4tdGltZS1wcnVuYWJsZSBwYXJ0aXRpb24gaGllcmFyY2h5CiAgKgkJCQkJCWFwcGVhcmluZyBp biB0aGUgcGFyZW50IHBsYW4gbm9kZSdzIHN1YnBsYW5zLgorICoKKyAqIG5lZWRzX2luaXRfcHJ1 bmluZwlEb2VzIGFueSBvZiB0aGUgUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zIGluCisgKgkJCQkJ CXBydW5lX2luZm9zIGhhdmUgaXRzIGluaXRpYWxfcHJ1bmluZ19zdGVwcyBzZXQ/CisgKgorICog bmVlZHNfZXhlY19wcnVuaW5nCURvZXMgYW55IG9mIHRoZSBQYXJ0aXRpb25lZFJlbFBydW5lSW5m b3MgaW4KKyAqCQkJCQkJcHJ1bmVfaW5mb3MgaGF2ZSBpdHMgZXhlY19wcnVuaW5nX3N0ZXBzIHNl dD8KKyAqCiAgKiBvdGhlcl9zdWJwbGFucwkJSW5kZXhlcyBvZiBhbnkgc3VicGxhbnMgdGhhdCBh cmUgbm90IGFjY291bnRlZCBmb3IKICAqCQkJCQkJYnkgYW55IG9mIHRoZSBQYXJ0aXRpb25lZFJl bFBydW5lSW5mbyBub2RlcyBpbgogICoJCQkJCQkicHJ1bmVfaW5mb3MiLiAgVGhlc2Ugc3VicGxh bnMgbXVzdCBub3QgYmUgcHJ1bmVkLgpAQCAtMTQyNSw2ICsxNDQxLDggQEAgdHlwZWRlZiBzdHJ1 Y3QgUGFydGl0aW9uUHJ1bmVJbmZvCiAJTm9kZVRhZwkJdHlwZTsKIAlCaXRtYXBzZXQgICpyb290 X3BhcmVudF9yZWxpZHM7CiAJTGlzdAkgICAqcHJ1bmVfaW5mb3M7CisJYm9vbAkJbmVlZHNfaW5p dF9wcnVuaW5nOworCWJvb2wJCW5lZWRzX2V4ZWNfcHJ1bmluZzsKIAlCaXRtYXBzZXQgICpvdGhl cl9zdWJwbGFuczsKIH0gUGFydGl0aW9uUHJ1bmVJbmZvOwogCkBAIC0xNDY5LDYgKzE0ODcsOSBA QCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbwogCS8qIHJlbGF0aW9uIE9J RCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIDAgKi8KIAlPaWQJCSAgICpyZWxpZF9tYXAgcGdfbm9k ZV9hdHRyKGFycmF5X3NpemUobnBhcnRzKSk7CiAKKwkvKiBSYW5nZSB0YWJsZSBpbmRleCBieSBw YXJ0aXRpb24gaW5kZXgsIG9yIDAuICovCisJSW5kZXgJICAgKnJ0aV9tYXAgcGdfbm9kZV9hdHRy KGFycmF5X3NpemUobnBhcnRzKSk7CisKIAkvKgogCSAqIGluaXRpYWxfcHJ1bmluZ19zdGVwcyBz aG93cyBob3cgdG8gcHJ1bmUgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAgKGkuZS4sCiAJICogd2l0 aG91dCB1c2Ugb2YgYW55IFBBUkFNX0VYRUMgUGFyYW1zKTsgaXQgaXMgTklMIGlmIG5vIHN0YXJ0 dXAgcHJ1bmluZwpAQCAtMTU1Myw2ICsxNTc0LDMxIEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlv blBydW5lU3RlcENvbWJpbmUKIAlMaXN0CSAgICpzb3VyY2Vfc3RlcGlkczsKIH0gUGFydGl0aW9u UHJ1bmVTdGVwQ29tYmluZTsKIAorLyotLS0tLS0tLS0tLS0tLS0tCisgKiBQYXJ0aXRpb25QcnVu ZVJlc3VsdAorICoKKyAqIFRoZSByZXN1bHQgb2YgcGVyZm9ybWluZyBFeGVjUGFydGl0aW9uRG9J bml0aWFsUHJ1bmluZygpIG9uIGEgZ2l2ZW4KKyAqIFBhcnRpdGlvblBydW5lSW5mby4KKyAqCisg KiB2YWxpZF9zdWJwbGFuc19vZmZzIGNvbnRhaW5zIHRoZSBpbmRleGVzIG9mIHN1YnBsYW5zIHJl bWFpbmluZyBhZnRlcgorICogcGVyZm9ybWluZyBpbml0aWFsIHBydW5pbmcgYnkgY2FsbGluZyBF eGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoKSBvbiB0aGUKKyAqIFBhcnRpdGlvblBydW5lSW5mby4K KyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gc3RvcmUgdGhlIHJlc3VsdCBvZiBpbml0aWFsIHBhcnRp dGlvbiBwcnVuaW5nIHRoYXQgaXMKKyAqIHBlZm9ybWVkIGJlZm9yZSB0aGUgZXhlY3V0aW9uIGhh cyBzdGFydGVkLiAgQSBtb2R1bGUgdGhhdCBuZWVkcyB0byBkbyBzbworICogc2hvdWxkIGNhbGwg RXhlY3V0b3JEb0luaXRpYWxQcnVuaW5nKCkgb24gYSBnaXZlbiBQbGFubmVkU3RtdCwgd2hpY2gK KyAqIHJldHVybnMgYSBMaXN0IG9mIFBhcnRpdGlvblBydW5lUmVzdWx0IGNvbnRhaW5pbmcgYW4g ZW50cnkgZm9yIGVhY2gKKyAqIFBhcnRpdGlvblBydW5lSW5mbyBwcmVzZW50IGluIFBsYW5uZWRT dG10LnBhcnRfcHJ1bmVfaW5mb3MuICBUaGUgbW9kdWxlCisgKiBzaG91bGQgdGhlbiBwYXNzIHRo YXQgbGlzdCwgYWxvbmcgd2l0aCB0aGUgUGxhbm5lZFN0bXQsIHRvIHRoZSBleGVjdXRvciwKKyAq IHNvIHRoYXQgaXQgY2FuIHJldXNlIHRoZSByZXN1bHQgb2YgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1 bmluZyB3aGVuCisgKiBpbml0aWFsaXppbmcgdGhlIHN1YnBsYW5zIGZvciBleGVjdXRpb24uCisg Ki8KK3R5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lUmVzdWx0Cit7CisJTm9kZVRhZwkJdHlw ZTsKKworCUJpdG1hcHNldAkgICAqdmFsaWRfc3VicGxhbl9vZmZzOworfSBQYXJ0aXRpb25QcnVu ZVJlc3VsdDsKIAogLyoKICAqIFBsYW4gaW52YWxpZGF0aW9uIGluZm8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hl LmgKaW5kZXggMDQ5OTYzNWY1OS4uMzI1NzlkNDc4OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dXRpbHMvcGxhbmNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKQEAg LTIyMCw3ICsyMjAsOCBAQCBleHRlcm4gTGlzdCAqQ2FjaGVkUGxhbkdldFRhcmdldExpc3QoQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIGV4dGVybiBDYWNoZWRQbGFuICpHZXRDYWNoZWRQ bGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZv IGJvdW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25lciBvd25lciwKLQkJCQkJCQkJIFF1 ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKKwkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1 ZXJ5RW52LAorCQkJCQkJCQkgTGlzdCAqKnBhcnRfcHJ1bmVfcmVzdWx0c19saXN0KTsKIGV4dGVy biB2b2lkIFJlbGVhc2VDYWNoZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIg b3duZXIpOwogCiBleHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVj ayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvcG9ydGFsLmggYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAppbmRleCBhZWRkYmRh ZmU1Li4xOTAxZmM1ZjI4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAor KysgYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaApAQCAtMTM4LDYgKzEzOCw3IEBAIHR5cGVk ZWYgc3RydWN0IFBvcnRhbERhdGEKIAlRdWVyeUNvbXBsZXRpb24gcWM7CQkJLyogY29tbWFuZCBj b21wbGV0aW9uIGRhdGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5ICovCiAJTGlzdAkgICAqc3RtdHM7CQkJ LyogbGlzdCBvZiBQbGFubmVkU3RtdHMgKi8KIAlDYWNoZWRQbGFuICpjcGxhbjsJCQkvKiBDYWNo ZWRQbGFuLCBpZiBzdG10cyBhcmUgZnJvbSBvbmUgKi8KKwlMaXN0CSAgICpwYXJ0X3BydW5lX3Jl c3VsdHNfbGlzdDsJLyogTGlzdCBvZiBMaXN0cyBvZiBQYXJ0aXRpb25QcnVuZVJlc3VsdHMgKi8K IAogCVBhcmFtTGlzdEluZm8gcG9ydGFsUGFyYW1zOyAvKiBwYXJhbXMgdG8gcGFzcyB0byBxdWVy eSAqLwogCVF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52OyAvKiBlbnZpcm9ubWVudCBmb3IgcXVl cnkgKi8KQEAgLTI0Miw2ICsyNDMsOCBAQCBleHRlcm4gdm9pZCBQb3J0YWxEZWZpbmVRdWVyeShQ b3J0YWwgcG9ydGFsLAogCQkJCQkJCSAgQ29tbWFuZFRhZyBjb21tYW5kVGFnLAogCQkJCQkJCSAg TGlzdCAqc3RtdHMsCiAJCQkJCQkJICBDYWNoZWRQbGFuICpjcGxhbik7CitleHRlcm4gdm9pZCBQ b3J0YWxTdG9yZVBhcnRpdGlvblBydW5lUmVzdWx0cyhQb3J0YWwgcG9ydGFsLAorCQkJCQkJCQkJ CQkgTGlzdCAqcGFydF9wcnVuZV9yZXN1bHRzX2xpc3QpOwogZXh0ZXJuIFBsYW5uZWRTdG10ICpQ b3J0YWxHZXRQcmltYXJ5U3RtdChQb3J0YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbENy ZWF0ZUhvbGRTdG9yZShQb3J0YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbEhhc2hUYWJs ZURlbGV0ZUFsbCh2b2lkKTsKLS0gCjIuMzUuMwoK --000000000000fe109305ef0e83da--