From mboxrd@z Thu Jan 1 00:00:00 1970 From: Cedric Bosdonnat Subject: Re: per-domain logging Date: Tue, 04 Oct 2016 11:14:52 +0200 Message-ID: <1475572492.3315.3.camel@suse.com> References: <1473862944.3643.17.camel@suse.com> <20160915145025.GC13498@citrix.com> <20160915151102.GO15958@citrix.com> <1473954098.6008.8.camel@suse.com> <22496.730.407667.327755@mariner.uk.xensource.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-bBTzWjC3GIgXDS3fGhlX" Return-path: In-Reply-To: <22496.730.407667.327755@mariner.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Ian Jackson Cc: Wei Liu , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org --=-bBTzWjC3GIgXDS3fGhlX Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Hi Ian and Wei, On Mon, 2016-09-19 at 16:23 +0100, Ian Jackson wrote: > Cedric Bosdonnat writes ("Re: [Xen-devel] per-domain logging"): > > On Thu, 2016-09-15 at 16:11 +0100, Wei Liu wrote: > > > IIRC there is already logfile abstraction inside libvirt -- can you just > > > pass in a libvirt logfile fd and try to demux there? > > > > > > The abstraction we have is something similar to the XenToolLogger, > > not something abstracting the log files. Even if we had that, how > > could we demux since there is no domain name in the libxl messages. I came up with a commit on the libvirt side writing a custom xtl_logger that demuxes the log messages. Here it is for the curious ones: https://github.com/cbosdo/libvirt/commit/5e28dd67c52a49b11635167469a8b60dcb4e287c This way, libvirt would put all log messages containing ': Domain %u:' in a separate log file and all non-matching messages would go to the default libxl-driver.log file. > Right. > > It's not trivial to change the xtl API because there is no > negotiation, just a vops structure.  I can think of a way to do it, > but do we want to make all xtl logger users (that is, all generators > of log messages) pass a domid ? > > Do we want to extend this to other information ?  (Not sure _what_ > other information.) > > Alternatively, we could have libxl (and perhaps libxc) put the domid > in a standard format in the message, so it could be extracted ? > > However we do it, we would have to add a domid to every LOG call in > libxl. Attached is a partial attempt at this that I wrote to test my libvirt code. How does that sound to you? Should I continue like this? Obviously I surely missed a few log messages that could get a domid, but it seems that even libxl has log messages that can't have a domid. -- Cedric --=-bBTzWjC3GIgXDS3fGhlX Content-Disposition: attachment; filename="0001-libxl-format-the-domain-id-in-log-messages.patch" Content-Type: text/x-patch; name="0001-libxl-format-the-domain-id-in-log-messages.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBiMWJiZDk3YzAwODkxZTdkYWZmNTVmY2U4MDg1MDUzMWZhZTgwMTAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Qz1DMz1BOWRyaWM9MjBCb3Nkb25uYXQ/PSA8 Y2VkcmljLmJvc2Rvbm5hdEBmcmVlLmZyPgpEYXRlOiBUdWUsIDQgT2N0IDIwMTYgMTA6NTk6MDQg KzAyMDAKU3ViamVjdDogW1BBVENIXSBsaWJ4bDogZm9ybWF0IHRoZSBkb21haW4gaWQgaW4gbG9n IG1lc3NhZ2VzCgpJbiBvcmRlciB0byBhbGxvdyBjb25zdW1pbmcgYXBwbGljYXRpb25zIGRlbXV4 IGxvZyBtZXNzYWdlcyBieSBkb21haW4sCndlIG5lZWQgYSBjb25zdGFudCBhbmQgcGFyc2FibGUg d2F5IHRvIGRpc3BsYXkgdGhlIGRvbWlkIGluIHRoZSBsaWJ4bApsb2dzLgoKVGhpcyBjb21taXQg YWRkcyB0aGUgZG9taWQgd2hlcmUgcG9zc2libGUgaW4gdGhlIGxvZyBhbmQgbWFrZXMgc3VyZQpp dCBpcyBzaG93biBpbiB0aGUgIkRvbWFpbiAlIlBSSXUzMiI6IiBmb3JtYXQuCi0tLQogdG9vbHMv bGlieGwvbGlieGwuYyB8IDQyMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjI1IGluc2VydGlvbnMoKyksIDE5NSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bC5jIGIvdG9vbHMvbGli eGwvbGlieGwuYwppbmRleCA2YTUwZTQ5Li44YWE1NTFiIDEwMDY0NAotLS0gYS90b29scy9saWJ4 bC9saWJ4bC5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmMKQEAgLTM5MywxMyArMzkzLDEzIEBA IGludCBsaWJ4bF9fZG9tYWluX3JlbmFtZShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwK ICAgICBpZiAoIXRyYW5zKSB7CiAgICAgICAgIHRyYW5zID0gb3VyX3RyYW5zID0geHNfdHJhbnNh Y3Rpb25fc3RhcnQoY3R4LT54c2gpOwogICAgICAgICBpZiAoIW91cl90cmFucykgewotICAgICAg ICAgICAgTE9HRVYoRVJST1IsIGVycm5vLCAiY3JlYXRlIHhzIHRyYW5zYWN0aW9uIGZvciBkb21h aW4gKHJlKW5hbWUiKTsKKyAgICAgICAgICAgIExPR0VWKEVSUk9SLCBlcnJubywgIkRvbWFpbiAl IlBSSXUzMiI6IGNyZWF0ZSB4cyB0cmFuc2FjdGlvbiBmb3IgZG9tYWluIChyZSluYW1lIiwgZG9t aWQpOwogICAgICAgICAgICAgZ290byB4X2ZhaWw7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBp ZiAoIW5ld19uYW1lKSB7Ci0gICAgICAgIExPRyhFUlJPUiwgIm5ldyBkb21haW4gbmFtZSBub3Qg c3BlY2lmaWVkIik7CisgICAgICAgIExPRyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IG5ldyBk b21haW4gbmFtZSBub3Qgc3BlY2lmaWVkIiwgZG9taWQpOwogICAgICAgICByYyA9IEVSUk9SX0lO VkFMOwogICAgICAgICBnb3RvIHhfcmM7CiAgICAgfQpAQCAtNDExLDE0ICs0MTEsMTQgQEAgaW50 IGxpYnhsX19kb21haW5fcmVuYW1lKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAg ICAgICBpZiAocmMgPT0gRVJST1JfSU5WQUwpIHsKICAgICAgICAgICAgIC8qIG5vIHN1Y2ggZG9t YWluLCBnb29kICovCiAgICAgICAgIH0gZWxzZSBpZiAocmMgIT0gMCkgewotICAgICAgICAgICAg TE9HKEVSUk9SLCAidW5leHBlY3RlZCBlcnJvciBjaGVja2luZyBmb3IgZXhpc3RpbmcgZG9tYWlu Iik7CisgICAgICAgICAgICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1MzIiOnVuZXhwZWN0ZWQg ZXJyb3IgY2hlY2tpbmcgZm9yIGV4aXN0aW5nIGRvbWFpbiIsIGRvbWlkKTsKICAgICAgICAgICAg IGdvdG8geF9yYzsKICAgICAgICAgfSBlbHNlIGlmIChkb21pZF9lID09IGRvbWlkKSB7CiAgICAg ICAgICAgICAvKiBkb21haW4gYWxyZWFkeSBoYXMgdGhpcyBuYW1lLCBvayAoYnV0IHdlIGRvIHN0 aWxsCiAgICAgICAgICAgICAgKiBuZWVkIHRoZSByZXN0IG9mIHRoZSBjb2RlIGFzIHdlIG1heSBu ZWVkIHRvIGNoZWNrCiAgICAgICAgICAgICAgKiBvbGRfbmFtZSwgZm9yIGV4YW1wbGUpLiAqLwog ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgTE9HKEVSUk9SLCAiZG9tYWluIHdpdGggbmFt ZSBcIiVzXCIgYWxyZWFkeSBleGlzdHMuIiwgbmV3X25hbWUpOworICAgICAgICAgICAgTE9HKEVS Uk9SLCAiRG9tYWluICUiUFJJdTMyIjogZG9tYWluIHdpdGggbmFtZSBcIiVzXCIgYWxyZWFkeSBl eGlzdHMuIiwgZG9taWQsIG5ld19uYW1lKTsKICAgICAgICAgICAgIHJjID0gRVJST1JfSU5WQUw7 CiAgICAgICAgICAgICBnb3RvIHhfcmM7CiAgICAgICAgIH0KQEAgLTQyOCwxNCArNDI4LDE0IEBA IGludCBsaWJ4bF9fZG9tYWluX3JlbmFtZShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwK ICAgICAgICAgZ290X29sZF9uYW1lID0geHNfcmVhZChjdHgtPnhzaCwgdHJhbnMsIG5hbWVfcGF0 aCwgJmdvdF9vbGRfbGVuKTsKICAgICAgICAgaWYgKCFnb3Rfb2xkX25hbWUpIHsKICAgICAgICAg ICAgIExPR0VWKEVSUk9SLCBlcnJubywKLSAgICAgICAgICAgICAgICAgICJjaGVjayBvbGQgbmFt ZSBmb3IgZG9tYWluICUiUFJJdTMyIiBhbGxlZ2VkbHkgbmFtZWQgYCVzJyIsCisgICAgICAgICAg ICAgICAgICAiRG9tYWluICUiUFJJdTMyIjogY2hlY2sgb2xkIG5hbWUgZm9yIGRvbWFpbiBhbGxl Z2VkbHkgbmFtZWQgYCVzJyIsCiAgICAgICAgICAgICAgICAgICBkb21pZCwKICAgICAgICAgICAg ICAgICAgIG9sZF9uYW1lKTsKICAgICAgICAgICAgIGdvdG8geF9mYWlsOwogICAgICAgICB9CiAg ICAgICAgIGlmIChzdHJjbXAob2xkX25hbWUsIGdvdF9vbGRfbmFtZSkpIHsKICAgICAgICAgICAg IExPRyhFUlJPUiwKLSAgICAgICAgICAgICAgICAiZG9tYWluICUiUFJJdTMyIiBhbGxlZ2VkbHkg bmFtZWQgIgorICAgICAgICAgICAgICAgICJEb21haW4gJSJQUkl1MzIiOiBhbGxlZ2VkbHkgbmFt ZWQgIgogICAgICAgICAgICAgICAgICJgJXMnIGlzIGFjdHVhbGx5IG5hbWVkIGAlcycgLSByYWNp bmcgPyIsCiAgICAgICAgICAgICAgICAgZG9taWQsCiAgICAgICAgICAgICAgICAgb2xkX25hbWUs CkBAIC00NDgsMTAgKzQ0OCwxMCBAQCBpbnQgbGlieGxfX2RvbWFpbl9yZW5hbWUobGlieGxfX2dj ICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgaWYgKCF4c193cml0ZShjdHgtPnhzaCwgdHJhbnMs IG5hbWVfcGF0aCwKICAgICAgICAgICAgICAgICAgIG5ld19uYW1lLCBzdHJsZW4obmV3X25hbWUp KSkgewogICAgICAgICBMT0coRVJST1IsCi0gICAgICAgICAgICAiZmFpbGVkIHRvIHdyaXRlIG5l dyBuYW1lIGAlcyciCi0gICAgICAgICAgICAiIGZvciBkb21haW4gJSJQUkl1MzIiIHByZXZpb3Vz bHkgbmFtZWQgYCVzJyIsCi0gICAgICAgICAgICBuZXdfbmFtZSwKKyAgICAgICAgICAgICJEb21h aW4gJSJQUkl1MzIiOiBmYWlsZWQgdG8gd3JpdGUgbmV3IG5hbWUgYCVzJyIKKyAgICAgICAgICAg ICIgZm9yIGRvbWFpbiBwcmV2aW91c2x5IG5hbWVkIGAlcyciLAogICAgICAgICAgICAgZG9taWQs CisgICAgICAgICAgICBuZXdfbmFtZSwKICAgICAgICAgICAgIG9sZF9uYW1lKTsKICAgICAgICAg Z290byB4X2ZhaWw7CiAgICAgfQpAQCAtNDcyLDcgKzQ3Miw3IEBAIGludCBsaWJ4bF9fZG9tYWlu X3JlbmFtZShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHViX2RtX25ld19uYW1lLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRyYW5zKTsKICAgICAgICAgaWYgKHJjKSB7Ci0gICAgICAgICAgICBMT0dF KEVSUk9SLCAidW5hYmxlIHRvIHJlbmFtZSBzdHViLWRvbWFpbiIpOworICAgICAgICAgICAgTE9H RShFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IHVuYWJsZSB0byByZW5hbWUgc3R1Yi1kb21haW4i LCBkb21pZCk7CiAgICAgICAgICAgICBnb3RvIHhfcmM7CiAgICAgICAgIH0KICAgICB9CkBAIC00 ODIsMTYgKzQ4MiwxNiBAQCBpbnQgbGlieGxfX2RvbWFpbl9yZW5hbWUobGlieGxfX2djICpnYywg dWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICB0cmFucyA9IG91cl90cmFucyA9IDA7CiAgICAg ICAgICAgICBpZiAoZXJybm8gIT0gRUFHQUlOKSB7CiAgICAgICAgICAgICAgICAgTE9HKEVSUk9S LAotICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGNvbW1pdCBuZXcgbmFtZSBgJXMnIgot ICAgICAgICAgICAgICAgICAgICAiIGZvciBkb21haW4gJSJQUkl1MzIiIHByZXZpb3VzbHkgbmFt ZWQgYCVzJyIsCi0gICAgICAgICAgICAgICAgICAgIG5ld19uYW1lLAorICAgICAgICAgICAgICAg ICAgICAiRG9tYWluICUiUFJJdTMyIjogZmFpbGVkIHRvIGNvbW1pdCBuZXcgbmFtZSBgJXMnIgor ICAgICAgICAgICAgICAgICAgICAiIGZvciBkb21haW4gcHJldmlvdXNseSBuYW1lZCBgJXMnIiwK ICAgICAgICAgICAgICAgICAgICAgZG9taWQsCisgICAgICAgICAgICAgICAgICAgIG5ld19uYW1l LAogICAgICAgICAgICAgICAgICAgICBvbGRfbmFtZSk7CiAgICAgICAgICAgICAgICAgZ290byB4 X2ZhaWw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBMT0coREVCVUcsCi0gICAgICAgICAg ICAgICAgIm5lZWQgdG8gcmV0cnkgcmVuYW1lIHRyYW5zYWN0aW9uIgotICAgICAgICAgICAgICAg ICIgZm9yIGRvbWFpbiAlIlBSSXUzMiIgKG5hbWVfcGF0aD1cIiVzXCIsIG5ld19uYW1lPVwiJXNc IikiLAorICAgICAgICAgICAgICAgICJEb21haW4gJSJQUkl1MzIiOiBuZWVkIHRvIHJldHJ5IHJl bmFtZSB0cmFuc2FjdGlvbiIKKyAgICAgICAgICAgICAgICAiIGZvciBkb21haW4gKG5hbWVfcGF0 aD1cIiVzXCIsIG5ld19uYW1lPVwiJXNcIikiLAogICAgICAgICAgICAgICAgIGRvbWlkLAogICAg ICAgICAgICAgICAgIG5hbWVfcGF0aCwKICAgICAgICAgICAgICAgICBuZXdfbmFtZSk7CkBAIC02 NzcsNyArNjc3LDcgQEAgaW50IGxpYnhsX2RvbWFpbl9pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4 bF9kb21pbmZvICppbmZvX3IsCiAKICAgICByZXQgPSB4Y19kb21haW5fZ2V0aW5mb2xpc3QoY3R4 LT54Y2gsIGRvbWlkLCAxLCAmeGNpbmZvKTsKICAgICBpZiAocmV0PDApIHsKLSAgICAgICAgTE9H RShFUlJPUiwgImdldHRpbmcgZG9tYWluIGluZm8gbGlzdCIpOworICAgICAgICBMT0dFKEVSUk9S LCAiRG9tYWluICUiUFJJdTMyIjogZ2V0dGluZyBkb21haW4gaW5mbyBsaXN0IiwgZG9taWQpOwog ICAgICAgICBHQ19GUkVFOwogICAgICAgICByZXR1cm4gRVJST1JfRkFJTDsKICAgICB9CkBAIC04 NDEsNyArODQxLDcgQEAgaW50IGxpYnhsX2RvbWFpbl9yZW11c19zdGFydChsaWJ4bF9jdHggKmN0 eCwgbGlieGxfZG9tYWluX3JlbXVzX2luZm8gKmluZm8sCiAKICAgICAvKiBUaGUgY2FsbGVyIG11 c3Qgc2V0IHRoaXMgZGVmYm9vbCAqLwogICAgIGlmIChsaWJ4bF9kZWZib29sX2lzX2RlZmF1bHQo aW5mby0+Y29sbykpIHsKLSAgICAgICAgTE9HKEVSUk9SLCAiY29sbyBtb2RlIG11c3QgYmUgZW5h YmxlZC9kaXNhYmxlZCIpOworICAgICAgICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBj b2xvIG1vZGUgbXVzdCBiZSBlbmFibGVkL2Rpc2FibGVkIiwgZG9taWQpOwogICAgICAgICByYyA9 IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KQEAgLTg1NSw3ICs4NTUsOSBA QCBpbnQgbGlieGxfZG9tYWluX3JlbXVzX3N0YXJ0KGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9kb21h aW5fcmVtdXNfaW5mbyAqaW5mbywKIAogICAgIGlmIChsaWJ4bF9kZWZib29sX3ZhbChpbmZvLT5j b2xvKSAmJgogICAgICAgICBsaWJ4bF9kZWZib29sX3ZhbChpbmZvLT5jb21wcmVzc2lvbikpIHsK LSAgICAgICAgICAgIExPRyhFUlJPUiwgImNhbm5vdCB1c2UgbWVtb3J5IGNoZWNrcG9pbnQgY29t cHJlc3Npb24gaW4gQ09MTyBtb2RlIik7CisgICAgICAgICAgICBMT0coRVJST1IsICJEb21haW4g JSJQUkl1MzIiOiBjYW5ub3QgdXNlIG1lbW9yeSBjaGVja3BvaW50ICIKKyAgICAgICAgICAgICAg ICAgICAgICAgImNvbXByZXNzaW9uIGluIENPTE8gbW9kZSIsCisgICAgICAgICAgICAgICAgICAg ICAgIGRvbWlkKTsKICAgICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgICAgIGdv dG8gb3V0OwogICAgIH0KQEAgLTg2NCw4ICs4NjYsOSBAQCBpbnQgbGlieGxfZG9tYWluX3JlbXVz X3N0YXJ0KGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9kb21haW5fcmVtdXNfaW5mbyAqaW5mbywKICAg ICAgICAgKGxpYnhsX2RlZmJvb2xfdmFsKGluZm8tPmJsYWNraG9sZSkgfHwKICAgICAgICAgICFs aWJ4bF9kZWZib29sX3ZhbChpbmZvLT5uZXRidWYpIHx8CiAgICAgICAgICAhbGlieGxfZGVmYm9v bF92YWwoaW5mby0+ZGlza2J1ZikpKSB7Ci0gICAgICAgIExPRyhFUlJPUiwgIlVuc2FmZSBtb2Rl IG11c3QgYmUgZW5hYmxlZCB0byByZXBsaWNhdGUgdG8gL2Rldi9udWxsLCIKLSAgICAgICAgICAg ICAgICAgICAiZGlzYWJsZSBuZXR3b3JrIGJ1ZmZlcmluZyBhbmQgZGlzayByZXBsaWNhdGlvbiIp OworICAgICAgICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBVbnNhZmUgbW9kZSBtdXN0 IGJlIGVuYWJsZWQgdG8gcmVwbGljYXRlIHRvIC9kZXYvbnVsbCwiCisgICAgICAgICAgICAgICAg ICAgImRpc2FibGUgbmV0d29yayBidWZmZXJpbmcgYW5kIGRpc2sgcmVwbGljYXRpb24iLAorICAg ICAgICAgICAgICAgICAgIGRvbWlkKTsKICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAg ICBnb3RvIG91dDsKICAgICB9CkBAIC05NjgsNyArOTcxLDcgQEAgaW50IGxpYnhsX2RvbWFpbl9w YXVzZShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQpCiAgICAgR0NfSU5JVChjdHgpOwog ICAgIHJldCA9IHhjX2RvbWFpbl9wYXVzZShjdHgtPnhjaCwgZG9taWQpOwogICAgIGlmIChyZXQ8 MCkgewotICAgICAgICBMT0dFKEVSUk9SLCAicGF1c2luZyBkb21haW4gJWQiLCBkb21pZCk7Cisg ICAgICAgIExPR0UoRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBwYXVzaW5nIGRvbWFpbiIsIGRv bWlkKTsKICAgICAgICAgR0NfRlJFRTsKICAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7CiAgICAg fQpAQCAtOTg1LDcgKzk4OCw3IEBAIGludCBsaWJ4bF9kb21haW5fY29yZV9kdW1wKGxpYnhsX2N0 eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKIAogICAgIHJldCA9IHhjX2RvbWFpbl9kdW1wY29yZShj dHgtPnhjaCwgZG9taWQsIGZpbGVuYW1lKTsKICAgICBpZiAocmV0PDApIHsKLSAgICAgICAgTE9H RShFUlJPUiwgImNvcmUgZHVtcGluZyBkb21haW4gJWQgdG8gJXMiLCBkb21pZCwgZmlsZW5hbWUp OworICAgICAgICBMT0dFKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogY29yZSBkdW1waW5nIGRv bWFpbiB0byAlcyIsIGRvbWlkLCBmaWxlbmFtZSk7CiAgICAgICAgIHJjID0gRVJST1JfRkFJTDsK ICAgICAgICAgZ290byBvdXQ7CiAgICAgfQpAQCAtMTAxNCw3ICsxMDE3LDcgQEAgaW50IGxpYnhs X2RvbWFpbl91bnBhdXNlKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCkKICAgICAgICAg ICAgIExJQlhMX0RFVklDRV9NT0RFTF9WRVJTSU9OX05PTkUpIHsKICAgICAgICAgICAgIHJjID0g bGlieGxfX2RvbWFpbl9yZXN1bWVfZGV2aWNlX21vZGVsKGdjLCBkb21pZCk7CiAgICAgICAgICAg ICBpZiAocmMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgTE9HKEVSUk9SLCAiZmFpbGVkIHRvIHVu cGF1c2UgZGV2aWNlIG1vZGVsIGZvciBkb21haW4gJXU6JWQiLAorICAgICAgICAgICAgICAgIExP RyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IGZhaWxlZCB0byB1bnBhdXNlIGRldmljZSBtb2Rl bCBmb3IgZG9tYWluOiVkIiwKICAgICAgICAgICAgICAgICAgICAgZG9taWQsIHJjKTsKICAgICAg ICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgIH0KQEAgLTEwMjIsNyArMTAyNSw3IEBA IGludCBsaWJ4bF9kb21haW5fdW5wYXVzZShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQp CiAgICAgfQogICAgIHJldCA9IHhjX2RvbWFpbl91bnBhdXNlKGN0eC0+eGNoLCBkb21pZCk7CiAg ICAgaWYgKHJldDwwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJ1bnBhdXNpbmcgZG9tYWluICVk IiwgZG9taWQpOworICAgICAgICBMT0dFKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogdW5wYXVz aW5nIGRvbWFpbiIsIGRvbWlkKTsKICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgIH0KICBv dXQ6CkBAIC0xMDQ2LDcgKzEwNDksNyBAQCBpbnQgbGlieGxfX2RvbWFpbl9wdmNvbnRyb2xfYXZh aWxhYmxlKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkKQogCiAgICAgcmV0ID0geGNfaHZt X3BhcmFtX2dldChjdHgtPnhjaCwgZG9taWQsIEhWTV9QQVJBTV9DQUxMQkFDS19JUlEsICZwdmRy aXZlcik7CiAgICAgaWYgKHJldDwwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJnZXR0aW5nIEhW TSBjYWxsYmFjayBJUlEiKTsKKyAgICAgICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6 IGdldHRpbmcgSFZNIGNhbGxiYWNrIElSUSIsIGRvbWlkKTsKICAgICAgICAgcmV0dXJuIEVSUk9S X0ZBSUw7CiAgICAgfQogICAgIHJldHVybiAhIXB2ZHJpdmVyOwpAQCAtMTEyOSw3ICsxMTMyLDcg QEAgc3RhdGljIHZvaWQgZG9tYWluX2RlYXRoX29jY3VycmVkKGxpYnhsX19lZ2MgKmVnYywKICAg ICBFR0NfR0M7CiAgICAgbGlieGxfZXZnZW5fZG9tYWluX2RlYXRoICpjb25zdCBldmcgPSAqZXZn X3VwZDsKIAotICAgIExPRyhERUJVRywgIiVzIiwgd2h5KTsKKyAgICBMT0coREVCVUcsICJEb21h aW4gJSJQUkl1MzIiOiAlcyIsIGV2Zy0+ZG9taWQsIHdoeSk7CiAKICAgICBsaWJ4bF9ldmdlbl9k b21haW5fZGVhdGggKmV2Z19uZXh0ID0gTElCWExfVEFJTFFfTkVYVChldmcsIGVudHJ5KTsKICAg ICAqZXZnX3VwZCA9IGV2Z19uZXh0OwpAQCAtMTE2OSw4ICsxMTcyLDggQEAgc3RhdGljIHZvaWQg ZG9tYWluX2RlYXRoX3hzd2F0Y2hfY2FsbGJhY2sobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZf eHN3YXRjaCAqdywKICAgICAgICAgfQogICAgICAgICBnb3RlbmQgPSAmZG9tYWluaW5mb3NbcmNd OwogCi0gICAgICAgIExPRyhERUJVRywgIltldmc9JXA6JSJQUkl1MzIiXSBuZW50cmllcz0lZCBy Yz0lZCAlbGQuLiVsZCIsCi0gICAgICAgICAgICBldmcsIGV2Zy0+ZG9taWQsIG5lbnRyaWVzLCBy YywKKyAgICAgICAgTE9HKERFQlVHLCAiRG9tYWluICUiUFJJdTMyIjogW2V2Zz0lcF0gbmVudHJp ZXM9JWQgcmM9JWQgJWxkLi4lbGQiLAorICAgICAgICAgICAgZXZnLT5kb21pZCwgZXZnLCBuZW50 cmllcywgcmMsCiAgICAgICAgICAgICByYz4wID8gKGxvbmcpZG9tYWluaW5mb3NbMF0uZG9tYWlu IDogMCwKICAgICAgICAgICAgIHJjPjAgPyAobG9uZylkb21haW5pbmZvc1tyYy0xXS5kb21haW4g OiAwKTsKIApAQCAtMTE4MCw5ICsxMTgzLDkgQEAgc3RhdGljIHZvaWQgZG9tYWluX2RlYXRoX3hz d2F0Y2hfY2FsbGJhY2sobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZfeHN3YXRjaCAqdywKICAg ICAgICAgICAgICAgICBnb3RvIGFsbF9yZXBvcnRlZDsKICAgICAgICAgICAgIH0KIAotICAgICAg ICAgICAgTE9HKERFQlVHLCAiW2V2Zz0lcDolIlBSSXUzMiJdIgorICAgICAgICAgICAgTE9HKERF QlVHLCAiRG9tYWluICUiUFJJdTMyIjogW2V2Zz0lcF0iCiAgICAgICAgICAgICAgICAgIiAgIGdv dD1kb21haW5pbmZvc1slZF0gZ290LT5kb21haW49JWxkIiwKLSAgICAgICAgICAgICAgICBldmcs IGV2Zy0+ZG9taWQsIChpbnQpKGdvdCAtIGRvbWFpbmluZm9zKSwKKyAgICAgICAgICAgICAgICBl dmctPmRvbWlkLCBldmcsIChpbnQpKGdvdCAtIGRvbWFpbmluZm9zKSwKICAgICAgICAgICAgICAg ICBnb3QgPCBnb3RlbmQgPyAobG9uZylnb3QtPmRvbWFpbiA6IC0xTCk7CiAKICAgICAgICAgICAg IGlmICghcmMpIHsKQEAgLTEyMDgsOCArMTIxMSw4IEBAIHN0YXRpYyB2b2lkIGRvbWFpbl9kZWF0 aF94c3dhdGNoX2NhbGxiYWNrKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2V2X3hzd2F0Y2ggKncs CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGFzc2VydChldmctPmRvbWlkID09IGdvdC0+ ZG9tYWluKTsKLSAgICAgICAgICAgIExPRyhERUJVRywgIiBleGlzdHMgc2h1dGRvd25fcmVwb3J0 ZWQ9JWQiIiBkb21pbmYuZmxhZ3M9JXgiLAotICAgICAgICAgICAgICAgIGV2Zy0+c2h1dGRvd25f cmVwb3J0ZWQsIGdvdC0+ZmxhZ3MpOworICAgICAgICAgICAgTE9HKERFQlVHLCAiRG9tYWluICUi UFJJdTMyIjogZXhpc3RzIHNodXRkb3duX3JlcG9ydGVkPSVkIiIgZG9taW5mLmZsYWdzPSV4IiwK KyAgICAgICAgICAgICAgICBldmctPmRvbWlkLCBldmctPnNodXRkb3duX3JlcG9ydGVkLCBnb3Qt PmZsYWdzKTsKIAogICAgICAgICAgICAgaWYgKGdvdC0+ZmxhZ3MgJiBYRU5fRE9NSU5GX2R5aW5n KSB7CiAgICAgICAgICAgICAgICAgZG9tYWluX2RlYXRoX29jY3VycmVkKGVnYywgJmV2ZywgImR5 aW5nIik7CkBAIC0xNDU5LDcgKzE0NjIsNyBAQCBzdGF0aWMgdm9pZCBkb21haW5fZGVzdHJveV9j YihsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19kb21haW5fZGVzdHJveV9zdGF0ZSAqZGRzLAogICAg IFNUQVRFX0FPX0dDKGRkcy0+YW8pOwogCiAgICAgaWYgKHJjKQotICAgICAgICBMT0coRVJST1Is ICJkZXN0cnVjdGlvbiBvZiBkb21haW4gJXUgZmFpbGVkIiwgZGRzLT5kb21pZCk7CisgICAgICAg IExPRyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IGRlc3RydWN0aW9uIG9mIGRvbWFpbiBmYWls ZWQiLCBkZHMtPmRvbWlkKTsKIAogICAgIGxpYnhsX19hb19jb21wbGV0ZShlZ2MsIGFvLCByYyk7 CiB9CkBAIC0xNTA4LDcgKzE1MTEsOSBAQCBzdGF0aWMgdm9pZCBzdHViZG9tX2Rlc3Ryb3lfY2Fs bGJhY2sobGlieGxfX2VnYyAqZWdjLAogICAgIGNvbnN0IGNoYXIgKnNhdmVmaWxlOwogCiAgICAg aWYgKHJjKSB7Ci0gICAgICAgIExPRyhFUlJPUiwgInVuYWJsZSB0byBkZXN0cm95IHN0dWJkb20g d2l0aCBkb21pZCAldSIsIGRpcy0+ZG9taWQpOworICAgICAgICBMT0coRVJST1IsICJEb21haW4g JSJQUkl1MzIiOiB1bmFibGUgdG8gZGVzdHJveSBzdHViZG9tIHdpdGggZG9taWQgJXUiLAorICAg ICAgICAgICAgZGRzLT5kb21haW4uZG9taWQsCisgICAgICAgICAgICBkaXMtPmRvbWlkKTsKICAg ICAgICAgZGRzLT5yYyA9IHJjOwogICAgIH0KIApAQCAtMTUxNiw3ICsxNTIxLDkgQEAgc3RhdGlj IHZvaWQgc3R1YmRvbV9kZXN0cm95X2NhbGxiYWNrKGxpYnhsX19lZ2MgKmVnYywKICAgICBzYXZl ZmlsZSA9IGxpYnhsX19kZXZpY2VfbW9kZWxfc2F2ZWZpbGUoZ2MsIGRpcy0+ZG9taWQpOwogICAg IHJjID0gbGlieGxfX3JlbW92ZV9maWxlKGdjLCBzYXZlZmlsZSk7CiAgICAgaWYgKHJjKSB7Ci0g ICAgICAgIExPRyhFUlJPUiwgImZhaWxlZCB0byByZW1vdmUgZGV2aWNlLW1vZGVsIHNhdmVmaWxl ICVzIiwgc2F2ZWZpbGUpOworICAgICAgICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBm YWlsZWQgdG8gcmVtb3ZlIGRldmljZS1tb2RlbCBzYXZlZmlsZSAlcyIsCisgICAgICAgICAgICBk ZHMtPmRvbWFpbi5kb21pZCwKKyAgICAgICAgICAgIHNhdmVmaWxlKTsKICAgICB9CiAKICAgICBk ZXN0cm95X2ZpbmlzaF9jaGVjayhlZ2MsIGRkcyk7CkBAIC0xNTMwLDcgKzE1MzcsNyBAQCBzdGF0 aWMgdm9pZCBkb21haW5fZGVzdHJveV9jYWxsYmFjayhsaWJ4bF9fZWdjICplZ2MsCiAgICAgbGli eGxfX2RvbWFpbl9kZXN0cm95X3N0YXRlICpkZHMgPSBDT05UQUlORVJfT0YoZGlzLCAqZGRzLCBk b21haW4pOwogCiAgICAgaWYgKHJjKSB7Ci0gICAgICAgIExPRyhFUlJPUiwgInVuYWJsZSB0byBk ZXN0cm95IGd1ZXN0IHdpdGggZG9taWQgJXUiLCBkaXMtPmRvbWlkKTsKKyAgICAgICAgTE9HKEVS Uk9SLCAiRG9tYWluICUiUFJJdTMyIjogdW5hYmxlIHRvIGRlc3Ryb3kgZ3Vlc3QiLCBkaXMtPmRv bWlkKTsKICAgICAgICAgZGRzLT5yYyA9IHJjOwogICAgIH0KIApAQCAtMTU3MSw3ICsxNTc4LDcg QEAgdm9pZCBsaWJ4bF9fZGVzdHJveV9kb21pZChsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19kZXN0 cm95X2RvbWlkX3N0YXRlICpkaXMpCiAgICAgY2FzZSAwOgogICAgICAgICBicmVhazsKICAgICBj YXNlIEVSUk9SX0RPTUFJTl9OT1RGT1VORDoKLSAgICAgICAgTE9HKEVSUk9SLCAibm9uLWV4aXN0 YW50IGRvbWFpbiAlZCIsIGRvbWlkKTsKKyAgICAgICAgTE9HKEVSUk9SLCAiRG9tYWluICUiUFJJ dTMyIjogbm9uLWV4aXN0YW50IGRvbWFpbiIsIGRvbWlkKTsKICAgICBkZWZhdWx0OgogICAgICAg ICBnb3RvIG91dDsKICAgICB9CkBAIC0xNjAwLDE0ICsxNjA3LDE0IEBAIHZvaWQgbGlieGxfX2Rl c3Ryb3lfZG9taWQobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZGVzdHJveV9kb21pZF9zdGF0ZSAq ZGlzKQogICAgIH0KIAogICAgIGlmIChsaWJ4bF9fZGV2aWNlX3BjaV9kZXN0cm95X2FsbChnYywg ZG9taWQpIDwgMCkKLSAgICAgICAgTE9HKEVSUk9SLCAicGNpIHNodXRkb3duIGZhaWxlZCBmb3Ig ZG9taWQgJWQiLCBkb21pZCk7CisgICAgICAgIExPRyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6 IHBjaSBzaHV0ZG93biBmYWlsZWQiLCBkb21pZCk7CiAgICAgcmMgPSB4Y19kb21haW5fcGF1c2Uo Y3R4LT54Y2gsIGRvbWlkKTsKICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgIExPR0VWKEVSUk9S LCByYywgInhjX2RvbWFpbl9wYXVzZSBmYWlsZWQgZm9yICVkIiwgZG9taWQpOworICAgICAgICBM T0dFVihFUlJPUiwgcmMsICJEb21haW4gJSJQUkl1MzIiOiB4Y19kb21haW5fcGF1c2UgZmFpbGVk IiwgZG9taWQpOwogICAgIH0KICAgICBpZiAoZG1fcHJlc2VudCkgewogICAgICAgICBpZiAobGli eGxfX2Rlc3Ryb3lfZGV2aWNlX21vZGVsKGdjLCBkb21pZCkgPCAwKQotICAgICAgICAgICAgTE9H KEVSUk9SLCAibGlieGxfX2Rlc3Ryb3lfZGV2aWNlX21vZGVsIGZhaWxlZCBmb3IgJWQiLCBkb21p ZCk7CisgICAgICAgICAgICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBsaWJ4bF9fZGVz dHJveV9kZXZpY2VfbW9kZWwgZmFpbGVkIiwgZG9taWQpOwogCiAgICAgICAgIGxpYnhsX19xbXBf Y2xlYW51cChnYywgZG9taWQpOwogICAgIH0KQEAgLTE2NDMsMTUgKzE2NTAsMTUgQEAgc3RhdGlj IHZvaWQgZGV2aWNlc19kZXN0cm95X2NiKGxpYnhsX19lZ2MgKmVnYywKICAgICB9CiAKICAgICBp ZiAocmMgPCAwKQotICAgICAgICBMT0coRVJST1IsICJsaWJ4bF9fZGV2aWNlc19kZXN0cm95IGZh aWxlZCBmb3IgJWQiLCBkb21pZCk7CisgICAgICAgIExPRyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUz MiI6IGxpYnhsX19kZXZpY2VzX2Rlc3Ryb3kgZmFpbGVkIiwgZG9taWQpOwogCiAgICAgdm1fcGF0 aCA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwgR0NTUFJJTlRGKCIlcy92bSIsIGRvbV9w YXRoKSk7CiAgICAgaWYgKHZtX3BhdGgpCiAgICAgICAgIGlmICgheHNfcm0oY3R4LT54c2gsIFhC VF9OVUxMLCB2bV9wYXRoKSkKLSAgICAgICAgICAgIExPR0UoRVJST1IsICJ4c19ybSBmYWlsZWQg Zm9yICVzIiwgdm1fcGF0aCk7CisgICAgICAgICAgICBMT0dFKEVSUk9SLCAiRG9tYWluICUiUFJJ dTMyIjogeHNfcm0gZmFpbGVkIGZvciAlcyIsIGRvbWlkLCB2bV9wYXRoKTsKIAogICAgIGlmICgh eHNfcm0oY3R4LT54c2gsIFhCVF9OVUxMLCBkb21fcGF0aCkpCi0gICAgICAgIExPR0UoRVJST1Is ICJ4c19ybSBmYWlsZWQgZm9yICVzIiwgZG9tX3BhdGgpOworICAgICAgICBMT0dFKEVSUk9SLCAi RG9tYWluICUiUFJJdTMyIjogeHNfcm0gZmFpbGVkIGZvciAlcyIsIGRvbWlkLCBkb21fcGF0aCk7 CiAKICAgICB4c19ybShjdHgtPnhzaCwgWEJUX05VTEwsIGxpYnhsX194c19saWJ4bF9wYXRoKGdj LCBkb21pZCkpOwogICAgIHhzX3JtKGN0eC0+eHNoLCBYQlRfTlVMTCwgR0NTUFJJTlRGKCAiL2xv Y2FsL2RvbWFpbi8lZC9odm1sb2FkZXIiLCBkb21pZCkpOwpAQCAtMTcwMywxMiArMTcxMCwxMiBA QCBzdGF0aWMgdm9pZCBkZXZpY2VzX2Rlc3Ryb3lfY2IobGlieGxfX2VnYyAqZWdjLAogICAgICAg ICAgICAgX2V4aXQoZXJybm8pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgTE9HRShF UlJPUiwKLSAieGNfZG9tYWluX2Rlc3Ryb3kgZmFpbGVkIGZvciAlZCAod2l0aCBkaWZmaWN1bHQg ZXJybm8gdmFsdWUgJWQpIiwKKyAiRG9tYWluICUiUFJJdTMyIjogeGNfZG9tYWluX2Rlc3Ryb3kg ZmFpbGVkICh3aXRoIGRpZmZpY3VsdCBlcnJubyB2YWx1ZSAlZCkiLAogICAgICAgICAgICAgICAg ICBkb21pZCwgZXJybm8pOwogICAgICAgICAgICAgX2V4aXQoLTEpOwogICAgICAgICB9CiAgICAg fQotICAgIExPRyhERUJVRywgImZvcmtlZCBwaWQgJWxkIGZvciBkZXN0cm95IG9mIGRvbWFpbiAl ZCIsIChsb25nKXJjLCBkb21pZCk7CisgICAgTE9HKERFQlVHLCAiRG9tYWluICUiUFJJdTMyIjog Zm9ya2VkIHBpZCAlbGQgZm9yIGRlc3Ryb3kgb2YgZG9tYWluIiwgZG9taWQsIChsb25nKXJjKTsK IAogICAgIHJldHVybjsKIApAQCAtMTcyOCw3ICsxNzM1LDcgQEAgc3RhdGljIHZvaWQgZG9tYWlu X2Rlc3Ryb3lfZG9taWRfY2IobGlieGxfX2VnYyAqZWdjLAogICAgIGlmIChzdGF0dXMpIHsKICAg ICAgICAgaWYgKFdJRkVYSVRFRChzdGF0dXMpICYmIFdFWElUU1RBVFVTKHN0YXR1cyk8MTI2KSB7 CiAgICAgICAgICAgICBMT0dFVihFUlJPUiwgV0VYSVRTVEFUVVMoc3RhdHVzKSwKLSAgICAgICAg ICAgICAgICAgICJ4Y19kb21haW5fZGVzdHJveSBmYWlsZWQgZm9yICUiUFJJdTMyIiIsIGRpcy0+ ZG9taWQpOworICAgICAgICAgICAgICAgICAgIkRvbWFpbiAlIlBSSXUzMiI6IHhjX2RvbWFpbl9k ZXN0cm95IGZhaWxlZCIsIGRpcy0+ZG9taWQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg ICAgbGlieGxfcmVwb3J0X2NoaWxkX2V4aXRzdGF0dXMoQ1RYLCBYVExfRVJST1IsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXN5bmMgZG9tYWluIGRlc3Ryb3ki LCBwaWQsIHN0YXR1cyk7CkBAIC0xODIxLDEzICsxODI4LDE0IEBAIGludCBsaWJ4bF9jb25zb2xl X2dldF90dHkobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBpbnQgY29uc19udW0sCiAK ICAgICByYyA9IGxpYnhsX19jb25zb2xlX3R0eV9wYXRoKGdjLCBkb21pZCwgY29uc19udW0sIHR5 cGUsICZ0dHlfcGF0aCk7CiAgICAgaWYgKHJjKSB7Ci0gICAgICAgIExPRyhFUlJPUiwgIkZhaWxl ZCB0byBnZXQgdHR5IHBhdGggZm9yIGRvbWFpbiAlZFxuIiwgZG9taWQpOworICAgICAgICBMT0co RVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBGYWlsZWQgdG8gZ2V0IHR0eSBwYXRoXG4iLCBkb21p ZCk7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAogICAgIHR0eSA9IGxpYnhsX194c19yZWFk KGdjLCBYQlRfTlVMTCwgdHR5X3BhdGgpOwogICAgIGlmICghdHR5IHx8IHR0eVswXSA9PSAnXDAn KSB7Ci0gICAgICAgTE9HRShFUlJPUiwidW5hYmxlIHRvIHJlYWQgY29uc29sZSB0dHkgcGF0aCBg JXMnIix0dHlfcGF0aCk7CisgICAgICAgTE9HRShFUlJPUiwiRG9tYWluICUiUFJJdTMyIjogdW5h YmxlIHRvIHJlYWQgY29uc29sZSB0dHkgcGF0aCBgJXMnIiwKKyAgICAgICAgICAgIGRvbWlkLCB0 dHlfcGF0aCk7CiAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgIGdvdG8gb3V0OwogICAg IH0KQEAgLTE5MTgsNyArMTkyNiw3IEBAIGludCBsaWJ4bF92bmN2aWV3ZXJfZXhlYyhsaWJ4bF9j dHggKmN0eCwgdWludDMyX3QgZG9taWQsIGludCBhdXRvcGFzcykKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHQ1NQUklOVEYoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9sb2Nh bC9kb21haW4vJWQvY29uc29sZS92bmMtcG9ydCIsIGRvbWlkKSk7CiAgICAgaWYgKCF2bmNfcG9y dCkgewotICAgICAgICBMT0coRVJST1IsICJDYW5ub3QgZ2V0IHZuYy1wb3J0IG9mIGRvbWFpbiAl ZCIsIGRvbWlkKTsKKyAgICAgICAgTE9HKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogQ2Fubm90 IGdldCB2bmMtcG9ydCIsIGRvbWlkKTsKICAgICAgICAgZ290byB4X2ZhaWw7CiAgICAgfQogCkBA IC0xOTQ1LDEzICsxOTUzLDEzIEBAIGludCBsaWJ4bF92bmN2aWV3ZXJfZXhlYyhsaWJ4bF9jdHgg KmN0eCwgdWludDMyX3QgZG9taWQsIGludCBhdXRvcGFzcykKICAgICAgICAgY2hhciB0bXBuYW1l W10gPSAiL3RtcC92bmNhdXRvcGFzcy5YWFhYWFgiOwogICAgICAgICBhdXRvcGFzc19mZCA9IG1r c3RlbXAodG1wbmFtZSk7CiAgICAgICAgIGlmICggYXV0b3Bhc3NfZmQgPCAwICkgewotICAgICAg ICAgICAgTE9HRShFUlJPUiwgIm1rc3RlbXAgJXMgZmFpbGVkIiwgdG1wbmFtZSk7CisgICAgICAg ICAgICBMT0dFKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogbWtzdGVtcCAlcyBmYWlsZWQiLCBk b21pZCwgdG1wbmFtZSk7CiAgICAgICAgICAgICBnb3RvIHhfZmFpbDsKICAgICAgICAgfQogCiAg ICAgICAgIGlmICggdW5saW5rKHRtcG5hbWUpICkgewogICAgICAgICAgICAgLyogc2hvdWxkIG5l dmVyIGhhcHBlbiAqLwotICAgICAgICAgICAgTE9HRShFUlJPUiwgInVubGluayAlcyBmYWlsZWQi LCB0bXBuYW1lKTsKKyAgICAgICAgICAgIExPR0UoRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiB1 bmxpbmsgJXMgZmFpbGVkIiwgZG9taWQsIHRtcG5hbWUpOwogICAgICAgICAgICAgZ290byB4X2Zh aWw7CiAgICAgICAgIH0KIApAQCAtMTk2MCw3ICsxOTY4LDcgQEAgaW50IGxpYnhsX3ZuY3ZpZXdl cl9leGVjKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwgaW50IGF1dG9wYXNzKQogICAg ICAgICAgICAgZ290byB4X2ZhaWw7CiAKICAgICAgICAgaWYgKCBsc2VlayhhdXRvcGFzc19mZCwg U0VFS19TRVQsIDApICkgewotICAgICAgICAgICAgTE9HRShFUlJPUiwgInJld2luZCAlcyAoYXV0 b3Bhc3MpIGZhaWxlZCIsIHRtcG5hbWUpOworICAgICAgICAgICAgTE9HRShFUlJPUiwgIkRvbWFp biAlIlBSSXUzMiI6IHJld2luZCAlcyAoYXV0b3Bhc3MpIGZhaWxlZCIsIGRvbWlkLCB0bXBuYW1l KTsKICAgICAgICAgICAgIGdvdG8geF9mYWlsOwogICAgICAgICB9CiAKQEAgLTIwMDIsNyArMjAx MCw4IEBAIHZvaWQgZGV2aWNlX2FkZHJtX2FvY29tcGxldGUobGlieGxfX2VnYyAqZWdjLCBsaWJ4 bF9fYW9fZGV2aWNlICphb2RldikKIAogICAgIGlmIChhb2Rldi0+cmMpIHsKICAgICAgICAgaWYg KGFvZGV2LT5kZXYpIHsKLSAgICAgICAgICAgIExPRyhFUlJPUiwgInVuYWJsZSB0byAlcyAlcyB3 aXRoIGlkICV1IiwKKyAgICAgICAgICAgIExPRyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IHVu YWJsZSB0byAlcyAlcyB3aXRoIGlkICV1IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFvZGV2 LT5kZXYtPmRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2RldmljZV9hY3Rp b25fdG9fc3RyaW5nKGFvZGV2LT5hY3Rpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgbGli eGxfX2RldmljZV9raW5kX3RvX3N0cmluZyhhb2Rldi0+ZGV2LT5raW5kKSwKICAgICAgICAgICAg ICAgICAgICAgICAgIGFvZGV2LT5kZXYtPmRldmlkKTsKQEAgLTIwNjcsNyArMjA3Niw4IEBAIGlu dCBsaWJ4bF9fZGV2aWNlX2Rpc2tfc2V0ZGVmYXVsdChsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9kZXZp Y2VfZGlzayAqZGlzaywKICAgICAgICAgTElCWExfREVWSUNFX01PREVMX1ZFUlNJT05fTk9ORSkg ewogICAgICAgICBpZiAoIShkaXNrLT5iYWNrZW5kID09IExJQlhMX0RJU0tfQkFDS0VORF9RRElT SyB8fAogICAgICAgICAgICAgICBkaXNrLT5iYWNrZW5kID09IExJQlhMX0RJU0tfQkFDS0VORF9V TktOT1dOKSkgewotICAgICAgICAgICAgTE9HKEVSUk9SLCAiQmFja2VuZCBmb3IgQ0QgZGV2aWNl cyBvbiBIVk0gZ3Vlc3RzIG11c3QgYmUgUWRpc2siKTsKKyAgICAgICAgICAgIExPRyhFUlJPUiwg IkRvbWFpbiAlIlBSSXUzMiI6IEJhY2tlbmQgZm9yIENEIGRldmljZXMgb24gSFZNIGd1ZXN0cyBt dXN0IGJlIFFkaXNrIiwKKyAgICAgICAgICAgICAgICBkb21pZCk7CiAgICAgICAgICAgICByZXR1 cm4gRVJST1JfRkFJTDsKICAgICAgICAgfQogICAgICAgICBkaXNrLT5iYWNrZW5kID0gTElCWExf RElTS19CQUNLRU5EX1FESVNLOwpAQCAtMjA4NSw4ICsyMDk1LDggQEAgaW50IGxpYnhsX19kZXZp Y2VfZnJvbV9kaXNrKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogCiAgICAgZGV2aWQg PSBsaWJ4bF9fZGV2aWNlX2Rpc2tfZGV2X251bWJlcihkaXNrLT52ZGV2LCBOVUxMLCBOVUxMKTsK ICAgICBpZiAoZGV2aWQ9PS0xKSB7Ci0gICAgICAgIExPRyhFUlJPUiwgIkludmFsaWQgb3IgdW5z dXBwb3J0ZWQiIiB2aXJ0dWFsIGRpc2sgaWRlbnRpZmllciAlcyIsCi0gICAgICAgICAgICBkaXNr LT52ZGV2KTsKKyAgICAgICAgTE9HKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogSW52YWxpZCBv ciB1bnN1cHBvcnRlZCIiIHZpcnR1YWwgZGlzayBpZGVudGlmaWVyICVzIiwKKyAgICAgICAgICAg IGRvbWlkLCBkaXNrLT52ZGV2KTsKICAgICAgICAgcmV0dXJuIEVSUk9SX0lOVkFMOwogICAgIH0K IApAQCAtMjEwNCw3ICsyMTE0LDggQEAgaW50IGxpYnhsX19kZXZpY2VfZnJvbV9kaXNrKGxpYnhs X19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgZGV2aWNlLT5iYWNrZW5kX2tp bmQgPSBMSUJYTF9fREVWSUNFX0tJTkRfUURJU0s7CiAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIExPRyhFUlJPUiwgInVucmVjb2duaXplZCBkaXNrIGJh Y2tlbmQgdHlwZTogJWQiLCBkaXNrLT5iYWNrZW5kKTsKKyAgICAgICAgICAgIExPRyhFUlJPUiwg IkRvbWFpbiAlIlBSSXUzMiI6IHVucmVjb2duaXplZCBkaXNrIGJhY2tlbmQgdHlwZTogJWQiLAor ICAgICAgICAgICAgICAgIGRvbWlkLCBkaXNrLT5iYWNrZW5kKTsKICAgICAgICAgICAgIHJldHVy biBFUlJPUl9JTlZBTDsKICAgICB9CiAKQEAgLTIyMDAsMTUgKzIyMTEsMTUgQEAgc3RhdGljIHZv aWQgZGV2aWNlX2Rpc2tfYWRkKGxpYnhsX19lZ2MgKmVnYywgdWludDMyX3QgZG9taWQsCiAgICAg ICAgIEdDTkVXKGRldmljZSk7CiAgICAgICAgIHJjID0gbGlieGxfX2RldmljZV9mcm9tX2Rpc2so Z2MsIGRvbWlkLCBkaXNrLCBkZXZpY2UpOwogICAgICAgICBpZiAocmMgIT0gMCkgewotICAgICAg ICAgICAgTE9HKEVSUk9SLCAiSW52YWxpZCBvciB1bnN1cHBvcnRlZCIiIHZpcnR1YWwgZGlzayBp ZGVudGlmaWVyICVzIiwKLSAgICAgICAgICAgICAgICBkaXNrLT52ZGV2KTsKKyAgICAgICAgICAg IExPRyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IEludmFsaWQgb3IgdW5zdXBwb3J0ZWQiIiB2 aXJ0dWFsIGRpc2sgaWRlbnRpZmllciAlcyIsCisgICAgICAgICAgICAgICAgZG9taWQsIGRpc2st PnZkZXYpOwogICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgIH0KIAogICAgICAgICByYyA9 IGxpYnhsX19kZXZpY2VfZXhpc3RzKGdjLCB0LCBkZXZpY2UpOwogICAgICAgICBpZiAocmMgPCAw KSBnb3RvIG91dDsKICAgICAgICAgaWYgKHJjID09IDEpIHsgICAgICAgICAgICAgIC8qIGFscmVh ZHkgZXhpc3RzIGluIHhlbnN0b3JlICovCi0gICAgICAgICAgICBMT0coRVJST1IsICJkZXZpY2Ug YWxyZWFkeSBleGlzdHMgaW4geGVuc3RvcmUiKTsKKyAgICAgICAgICAgIExPRyhFUlJPUiwgIkRv bWFpbiAlIlBSSXUzMiI6IGRldmljZSBhbHJlYWR5IGV4aXN0cyBpbiB4ZW5zdG9yZSIsIGRvbWlk KTsKICAgICAgICAgICAgIGFvZGV2LT5hY3Rpb24gPSBMSUJYTF9fREVWSUNFX0FDVElPTl9BREQ7 IC8qIGZvciBlcnJvciBtZXNzYWdlICovCiAgICAgICAgICAgICByYyA9IEVSUk9SX0RFVklDRV9F WElTVFM7CiAgICAgICAgICAgICBnb3RvIG91dDsKQEAgLTIyMzQsNyArMjI0NSw4IEBAIHN0YXRp YyB2b2lkIGRldmljZV9kaXNrX2FkZChsaWJ4bF9fZWdjICplZ2MsIHVpbnQzMl90IGRvbWlkLAog ICAgICAgICAgICAgICAgICAgICBkZXYgPSBsaWJ4bF9fYmxrdGFwX2RldnBhdGgoZ2MsIGRpc2st PnBkZXZfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRpc2stPmZvcm1hdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZGV2KSB7Ci0gICAg ICAgICAgICAgICAgICAgICAgICBMT0coRVJST1IsICJmYWlsZWQgdG8gZ2V0IGJsa3RhcCBkZXZw YXRoIGZvciAlcCIsCisgICAgICAgICAgICAgICAgICAgICAgICBMT0coRVJST1IsICJEb21haW4g JSJQUkl1MzIiOiBmYWlsZWQgdG8gZ2V0IGJsa3RhcCBkZXZwYXRoIGZvciAlcCIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGlzay0+cGRldl9wYXRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gRVJST1JfRkFJ TDsKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwpAQCAtMjI3MCw4ICsyMjgyLDgg QEAgc3RhdGljIHZvaWQgZGV2aWNlX2Rpc2tfYWRkKGxpYnhsX19lZ2MgKmVnYywgdWludDMyX3Qg ZG9taWQsCiAgICAgICAgICAgICAgICAgYXNzZXJ0KGRldmljZS0+YmFja2VuZF9raW5kID09IExJ QlhMX19ERVZJQ0VfS0lORF9RRElTSyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIExPRyhFUlJPUiwgInVucmVjb2duaXplZCBk aXNrIGJhY2tlbmQgdHlwZTogJWQiLAotICAgICAgICAgICAgICAgICAgICBkaXNrLT5iYWNrZW5k KTsKKyAgICAgICAgICAgICAgICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiB1bnJlY29n bml6ZWQgZGlzayBiYWNrZW5kIHR5cGU6ICVkIiwKKyAgICAgICAgICAgICAgICAgICAgZG9taWQs IGRpc2stPmJhY2tlbmQpOwogICAgICAgICAgICAgICAgIHJjID0gRVJST1JfSU5WQUw7CiAgICAg ICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgIH0KQEAgLTI2NTQsMjYgKzI2NjYsMzAgQEAg aW50IGxpYnhsX2Nkcm9tX2luc2VydChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIGxp YnhsX2RldmljZV9kaXNrICpkaXNrLAogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAgICAgaWYg KHR5cGUgIT0gTElCWExfRE9NQUlOX1RZUEVfSFZNKSB7Ci0gICAgICAgIExPRyhFUlJPUiwgImNk cm9tLWluc2VydCByZXF1aXJlcyBhbiBIVk0gZG9tYWluIik7CisgICAgICAgIExPRyhFUlJPUiwg IkRvbWFpbiAlIlBSSXUzMiI6IGNkcm9tLWluc2VydCByZXF1aXJlcyBhbiBIVk0gZG9tYWluIiwK KyAgICAgICAgICAgIGRvbWlkKTsKICAgICAgICAgcmMgPSBFUlJPUl9JTlZBTDsKICAgICAgICAg Z290byBvdXQ7CiAgICAgfQogCiAgICAgaWYgKGxpYnhsX2dldF9zdHViZG9tX2lkKGN0eCwgZG9t aWQpICE9IDApIHsKLSAgICAgICAgTE9HKEVSUk9SLCAiY2Ryb20taW5zZXJ0IGRvZXNuJ3Qgd29y ayBmb3Igc3R1YiBkb21haW5zIik7CisgICAgICAgIExPRyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUz MiI6IGNkcm9tLWluc2VydCBkb2Vzbid0IHdvcmsgZm9yIHN0dWIgZG9tYWlucyIsCisgICAgICAg ICAgICBkb21pZCk7CiAgICAgICAgIHJjID0gRVJST1JfSU5WQUw7CiAgICAgICAgIGdvdG8gb3V0 OwogICAgIH0KIAogICAgIGRtX3ZlciA9IGxpYnhsX19kZXZpY2VfbW9kZWxfdmVyc2lvbl9ydW5u aW5nKGdjLCBkb21pZCk7CiAgICAgaWYgKGRtX3ZlciA9PSAtMSkgewotICAgICAgICBMT0coRVJS T1IsICJjYW5ub3QgZGV0ZXJtaW5lIGRldmljZSBtb2RlbCB2ZXJzaW9uIik7CisgICAgICAgIExP RyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IGNhbm5vdCBkZXRlcm1pbmUgZGV2aWNlIG1vZGVs IHZlcnNpb24iLAorICAgICAgICAgICAgZG9taWQpOwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7 CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAogICAgIGlmIChkbV92ZXIgPT0gTElCWExfREVW SUNFX01PREVMX1ZFUlNJT05fTk9ORSkgewotICAgICAgICBMT0coRVJST1IsICJHdWVzdHMgd2l0 aG91dCBhIGRldmljZSBtb2RlbCBjYW5ub3QgdXNlIGNkLWluc2VydCIpOworICAgICAgICBMT0co RVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBHdWVzdHMgd2l0aG91dCBhIGRldmljZSBtb2RlbCBj YW5ub3QgdXNlIGNkLWluc2VydCIsCisgICAgICAgICAgICBkb21pZCk7CiAgICAgICAgIHJjID0g RVJST1JfRkFJTDsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQpAQCAtMjY4OCw3ICsyNzA0LDcg QEAgaW50IGxpYnhsX2Nkcm9tX2luc2VydChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQs IGxpYnhsX2RldmljZV9kaXNrICpkaXNrLAogICAgICAgICB9CiAgICAgfQogICAgIGlmIChpID09 IG51bSkgewotICAgICAgICBMT0coRVJST1IsICJWaXJ0dWFsIGRldmljZSBub3QgZm91bmQiKTsK KyAgICAgICAgTE9HKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogVmlydHVhbCBkZXZpY2Ugbm90 IGZvdW5kIiwgZG9taWQpOwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdvdG8g b3V0OwogICAgIH0KQEAgLTI3NDgsOCArMjc2NCw4IEBAIGludCBsaWJ4bF9jZHJvbV9pbnNlcnQo bGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9kZXZpY2VfZGlzayAqZGlzaywK ICAgICAgICAgdG1wID0gbGlieGxfX3hzX3JlYWQoZ2MsIHQsIEdDU1BSSU5URigiJXMvZnJvbnRl bmQiLCBsaWJ4bF9wYXRoKSk7CiAgICAgICAgIGlmICghdG1wKQogICAgICAgICB7Ci0gICAgICAg ICAgICBMT0coRVJST1IsICJJbnRlcm5hbCBlcnJvcjogJXMgZG9lcyBub3QgZXhpc3QiLAotICAg ICAgICAgICAgICAgIEdDU1BSSU5URigiJXMvZnJvbnRlbmQiLCBsaWJ4bF9wYXRoKSk7CisgICAg ICAgICAgICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBJbnRlcm5hbCBlcnJvcjogJXMg ZG9lcyBub3QgZXhpc3QiLAorICAgICAgICAgICAgICAgIGRvbWlkLCBHQ1NQUklOVEYoIiVzL2Zy b250ZW5kIiwgbGlieGxfcGF0aCkpOwogICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAg ICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgIH0KQEAgLTI3ODcsOCArMjgwMyw4IEBAIGludCBs aWJ4bF9jZHJvbV9pbnNlcnQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9k ZXZpY2VfZGlzayAqZGlzaywKICAgICAgICAgdG1wID0gbGlieGxfX3hzX3JlYWQoZ2MsIHQsIEdD U1BSSU5URigiJXMvZnJvbnRlbmQiLCBsaWJ4bF9wYXRoKSk7CiAgICAgICAgIGlmICghdG1wKQog ICAgICAgICB7Ci0gICAgICAgICAgICBMT0coRVJST1IsICJJbnRlcm5hbCBlcnJvcjogJXMgZG9l cyBub3QgZXhpc3QiLAotICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJXMvZnJvbnRlbmQiLCBs aWJ4bF9wYXRoKSk7CisgICAgICAgICAgICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBJ bnRlcm5hbCBlcnJvcjogJXMgZG9lcyBub3QgZXhpc3QiLAorICAgICAgICAgICAgICAgIGRvbWlk LCBHQ1NQUklOVEYoIiVzL2Zyb250ZW5kIiwgbGlieGxfcGF0aCkpOwogICAgICAgICAgICAgcmMg PSBFUlJPUl9GQUlMOwogICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgIH0KQEAgLTI5MDgs OCArMjkyNCw4IEBAIGNoYXIgKmxpYnhsX19kZXZpY2VfZGlza19maW5kX2xvY2FsX3BhdGgobGli eGxfX2djICpnYywKICAgICAgICAgaW50IHJjOwogCiAgICAgICAgIExPRyhERUJVRywKLSAgICAg ICAgICAgICJSdW4gZnJvbSBhIHNjcmlwdDsgY2hlY2tpbmcgZm9yIHBoeXNpY2FsLWRldmljZS1w YXRoICh2ZGV2ICVzKSIsCi0gICAgICAgICAgICBkaXNrLT52ZGV2KTsKKyAgICAgICAgICAgICJE b21haW4gJSJQUkl1MzIiOiBSdW4gZnJvbSBhIHNjcmlwdDsgY2hlY2tpbmcgZm9yIHBoeXNpY2Fs LWRldmljZS1wYXRoICh2ZGV2ICVzKSIsCisgICAgICAgICAgICBndWVzdF9kb21pZCwgZGlzay0+ dmRldik7CiAKICAgICAgICAgcmMgPSBsaWJ4bF9fZGV2aWNlX2Zyb21fZGlzayhnYywgZ3Vlc3Rf ZG9taWQsIGRpc2ssICZkZXZpY2UpOwogICAgICAgICBpZiAocmMgPCAwKQpAQCAtMjkxOSwxMyAr MjkzNSwxMyBAQCBjaGFyICpsaWJ4bF9fZGV2aWNlX2Rpc2tfZmluZF9sb2NhbF9wYXRoKGxpYnhs X19nYyAqZ2MsCiAKICAgICAgICAgcGRwYXRoID0gbGlieGxfX3NwcmludGYoZ2MsICIlcy9waHlz aWNhbC1kZXZpY2UtcGF0aCIsIGJlX3BhdGgpOwogCi0gICAgICAgIExPRyhERUJVRywgIkF0dGVt cHRpbmcgdG8gcmVhZCBub2RlICVzIiwgcGRwYXRoKTsKKyAgICAgICAgTE9HKERFQlVHLCAiRG9t YWluICUiUFJJdTMyIjogQXR0ZW1wdGluZyB0byByZWFkIG5vZGUgJXMiLCBndWVzdF9kb21pZCwg cGRwYXRoKTsKICAgICAgICAgcGF0aCA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwgcGRw YXRoKTsKIAogICAgICAgICBpZiAocGF0aCkKLSAgICAgICAgICAgIExPRyhERUJVRywgIkFjY2Vz c2luZyBjb29rZWQgYmxvY2sgZGV2aWNlICVzIiwgcGF0aCk7CisgICAgICAgICAgICBMT0coREVC VUcsICJEb21haW4gJSJQUkl1MzIiOiBBY2Nlc3NpbmcgY29va2VkIGJsb2NrIGRldmljZSAlcyIs IGd1ZXN0X2RvbWlkLCBwYXRoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgTE9HKERFQlVH LCAiTm8gcGh5c2ljYWwtZGV2aWNlLXBhdGgsIGNhbid0IGFjY2VzcyBsb2NhbGx5LiIpOworICAg ICAgICAgICAgTE9HKERFQlVHLCAiRG9tYWluICUiUFJJdTMyIjogTm8gcGh5c2ljYWwtZGV2aWNl LXBhdGgsIGNhbid0IGFjY2VzcyBsb2NhbGx5LiIsIGd1ZXN0X2RvbWlkKTsKIAogICAgICAgICBn b3RvIG91dDsKICAgICB9CkBAIC0zMDY2LDcgKzMwODIsOCBAQCBzdGF0aWMgdm9pZCBsb2NhbF9k ZXZpY2VfZGV0YWNoX2NiKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2FvX2RldmljZSAqYW9kZXYp CiAgICAgaW50IHJjOwogCiAgICAgaWYgKGFvZGV2LT5yYykgewotICAgICAgICBMT0dFKEVSUk9S LCAidW5hYmxlIHRvICVzICVzIHdpdGggaWQgJXUiLAorICAgICAgICBMT0dFKEVSUk9SLCAiRG9t YWluICUiUFJJdTMyIjogdW5hYmxlIHRvICVzICVzIHdpdGggaWQgJXUiLAorICAgICAgICAgICAg ICAgICAgICBhb2Rldi0+ZGV2LT5kb21pZCwKICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2Rl dmljZV9hY3Rpb25fdG9fc3RyaW5nKGFvZGV2LT5hY3Rpb24pLAogICAgICAgICAgICAgICAgICAg ICBsaWJ4bF9fZGV2aWNlX2tpbmRfdG9fc3RyaW5nKGFvZGV2LT5kZXYtPmtpbmQpLAogICAgICAg ICAgICAgICAgICAgICBhb2Rldi0+ZGV2LT5kZXZpZCk7CkBAIC0zMDk5LDcgKzMxMTYsNyBAQCBp bnQgbGlieGxfX2RldmljZV9jb25zb2xlX2FkZChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21p ZCwKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogICAgIGlmICghY29uc29sZS0+ZGV2aWQgJiYg KGNvbnNvbGUtPm5hbWUgfHwgY29uc29sZS0+cGF0aCkpIHsKLSAgICAgICAgTE9HKEVSUk9SLCAi UHJpbWFyeSBjb25zb2xlIGhhcyBpbnZhbGlkIGNvbmZpZ3VyYXRpb24iKTsKKyAgICAgICAgTE9H KEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogUHJpbWFyeSBjb25zb2xlIGhhcyBpbnZhbGlkIGNv bmZpZ3VyYXRpb24iLCBkb21pZCk7CiAgICAgICAgIHJjID0gRVJST1JfSU5WQUw7CiAgICAgICAg IGdvdG8gb3V0OwogICAgIH0KQEAgLTMzMzcsNyArMzM1NCw3IEBAIGxpYnhsX2RldmljZV9jaGFu bmVsICpsaWJ4bF9kZXZpY2VfY2hhbm5lbF9saXN0KGxpYnhsX2N0eCAqY3R4LAogICAgIHJldHVy biBjaGFubmVsczsKIAogb3V0X2VycjoKLSAgICBMT0coRVJST1IsICJVbmFibGUgdG8gbGlzdCBj aGFubmVscyIpOworICAgIExPRyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IFVuYWJsZSB0byBs aXN0IGNoYW5uZWxzIiwgZG9taWQpOwogICAgIHdoaWxlICgqbnVtKSB7CiAgICAgICAgICgqbnVt KS0tOwogICAgICAgICBsaWJ4bF9kZXZpY2VfY2hhbm5lbF9kaXNwb3NlKCZjaGFubmVsc1sqbnVt XSk7CkBAIC0zNDQ5LDcgKzM0NjYsNyBAQCBpbnQgbGlieGxfZGV2aWNlX3ZrYl9hZGQobGlieGxf Y3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9kZXZpY2VfdmtiICp2a2IsCiAKICAgICBy YyA9IGxpYnhsX19kZXZpY2VfdmtiX2FkZChnYywgZG9taWQsIHZrYik7CiAgICAgaWYgKHJjKSB7 Ci0gICAgICAgIExPRyhFUlJPUiwgInVuYWJsZSB0byBhZGQgdmtiIGRldmljZSIpOworICAgICAg ICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiB1bmFibGUgdG8gYWRkIHZrYiBkZXZpY2Ui LCBkb21pZCk7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIApAQCAtMzU0OSw3ICszNTY2LDcg QEAgaW50IGxpYnhsX2RldmljZV92ZmJfYWRkKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21p ZCwgbGlieGxfZGV2aWNlX3ZmYiAqdmZiLAogCiAgICAgcmMgPSBsaWJ4bF9fZGV2aWNlX3ZmYl9h ZGQoZ2MsIGRvbWlkLCB2ZmIpOwogICAgIGlmIChyYykgewotICAgICAgICBMT0coRVJST1IsICJ1 bmFibGUgdG8gYWRkIHZmYiBkZXZpY2UiKTsKKyAgICAgICAgTE9HKEVSUk9SLCAiRG9tYWluICUi UFJJdTMyIjogdW5hYmxlIHRvIGFkZCB2ZmIgZGV2aWNlIiwgZG9taWQpOwogICAgICAgICBnb3Rv IG91dDsKICAgICB9CiAKQEAgLTM3MzAsNyArMzc0Nyw3IEBAIHN0YXRpYyB2b2lkIHFkaXNrX3Nw YXduX291dGNvbWUobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZG1fc3Bhd25fc3RhdGUgKmRtc3Ms CiB7CiAgICAgU1RBVEVfQU9fR0MoZG1zcy0+c3Bhd24uYW8pOwogCi0gICAgTE9HKERFQlVHLCAi cWRpc2sgYmFja2VuZCBzcGF3biBmb3IgZG9tYWluICV1ICVzIiwgZG1zcy0+Z3Vlc3RfZG9taWQs CisgICAgTE9HKERFQlVHLCAiRG9tYWluICUiUFJJdTMyIjogcWRpc2sgYmFja2VuZCBzcGF3biAl cyIsIGRtc3MtPmd1ZXN0X2RvbWlkLAogICAgICAgICAgICAgICAgcmMgPyAiZmFpbGVkIiA6ICJz dWNjZWVkIik7CiAKICAgICBsaWJ4bF9fbmVzdGVkX2FvX2ZyZWUoZG1zcy0+c3Bhd24uYW8pOwpA QCAtMzg4NCw3ICszOTAxLDcgQEAgc3RhdGljIHZvaWQgYmFja2VuZF93YXRjaF9jYWxsYmFjayhs aWJ4bF9fZWdjICplZ2MsIGxpYnhsX19ldl94c3dhdGNoICp3YXRjaCwKICAgICAgICAgZGd1ZXN0 LT5kb21pZCA9IGRldi0+ZG9taWQ7CiAgICAgICAgIExJQlhMX1NMSVNUX0lOSVQoJmRndWVzdC0+ ZGV2aWNlcyk7CiAgICAgICAgIExJQlhMX1NMSVNUX0lOU0VSVF9IRUFEKCZkZG9tYWluLT5ndWVz dHMsIGRndWVzdCwgbmV4dCk7Ci0gICAgICAgIExPRyhERUJVRywgImFkZGVkIGRvbWFpbiAldSB0 byB0aGUgbGlzdCBvZiBhY3RpdmUgZ3Vlc3RzIiwKKyAgICAgICAgTE9HKERFQlVHLCAiRG9tYWlu ICUiUFJJdTMyIjogYWRkZWQgZG9tYWluIHRvIHRoZSBsaXN0IG9mIGFjdGl2ZSBndWVzdHMiLAog ICAgICAgICAgICAgICAgICAgIGRndWVzdC0+ZG9taWQpOwogICAgIH0KICAgICBkZGV2ID0gc2Vh cmNoX2Zvcl9kZXZpY2UoZGd1ZXN0LCBkZXYpOwpAQCAtMzkwMiw3ICszOTE5LDggQEAgc3RhdGlj IHZvaWQgYmFja2VuZF93YXRjaF9jYWxsYmFjayhsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19ldl94 c3dhdGNoICp3YXRjaCwKICAgICAgICAgZGRldiA9IGxpYnhsX196YWxsb2MoTk9HQywgc2l6ZW9m KCpkZGV2KSk7CiAgICAgICAgIGRkZXYtPmRldiA9IGRldjsKICAgICAgICAgTElCWExfU0xJU1Rf SU5TRVJUX0hFQUQoJmRndWVzdC0+ZGV2aWNlcywgZGRldiwgbmV4dCk7Ci0gICAgICAgIExPRyhE RUJVRywgImFkZGVkIGRldmljZSAlcyB0byB0aGUgbGlzdCBvZiBhY3RpdmUgZGV2aWNlcyIsIHBh dGgpOworICAgICAgICBMT0coREVCVUcsICJEb21haW4gJSJQUkl1MzIiOiBhZGRlZCBkZXZpY2Ug JXMgdG8gdGhlIGxpc3Qgb2YgYWN0aXZlIGRldmljZXMiLAorICAgICAgICAgICAgZGV2LT5kb21p ZCwgcGF0aCk7CiAgICAgICAgIHJjID0gYWRkX2RldmljZShlZ2MsIG5lc3RlZF9hbywgZGd1ZXN0 LCBkZGV2KTsKICAgICAgICAgaWYgKHJjID4gMCkKICAgICAgICAgICAgIGZyZWVfYW8gPSB0cnVl OwpAQCAtMzkxNiw3ICszOTM0LDggQEAgc3RhdGljIHZvaWQgYmFja2VuZF93YXRjaF9jYWxsYmFj ayhsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19ldl94c3dhdGNoICp3YXRjaCwKICAgICAgICAgICov CiAgICAgICAgIExJQlhMX1NMSVNUX1JFTU9WRSgmZGd1ZXN0LT5kZXZpY2VzLCBkZGV2LCBsaWJ4 bF9fZGRvbWFpbl9kZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0KTsKLSAg ICAgICAgTE9HKERFQlVHLCAicmVtb3ZlZCBkZXZpY2UgJXMgZnJvbSB0aGUgbGlzdCBvZiBhY3Rp dmUgZGV2aWNlcyIsIHBhdGgpOworICAgICAgICBMT0coREVCVUcsICJEb21haW4gJSJQUkl1MzIi OiByZW1vdmVkIGRldmljZSAlcyBmcm9tIHRoZSBsaXN0IG9mIGFjdGl2ZSBkZXZpY2VzIiwKKyAg ICAgICAgICAgIGRldi0+ZG9taWQsIHBhdGgpOwogICAgICAgICByYyA9IHJlbW92ZV9kZXZpY2Uo ZWdjLCBuZXN0ZWRfYW8sIGRndWVzdCwgZGRldik7CiAgICAgICAgIGlmIChyYyA+IDApCiAgICAg ICAgICAgICBmcmVlX2FvID0gdHJ1ZTsKQEAgLTM5MjcsNyArMzk0Niw3IEBAIHN0YXRpYyB2b2lk IGJhY2tlbmRfd2F0Y2hfY2FsbGJhY2sobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZfeHN3YXRj aCAqd2F0Y2gsCiAgICAgICAgIGlmIChudW1fZGV2cyA9PSAwKSB7CiAgICAgICAgICAgICBMSUJY TF9TTElTVF9SRU1PVkUoJmRkb21haW4tPmd1ZXN0cywgZGd1ZXN0LCBsaWJ4bF9fZGRvbWFpbl9n dWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0KTsKLSAgICAgICAgICAg IExPRyhERUJVRywgInJlbW92ZWQgZG9tYWluICV1IGZyb20gdGhlIGxpc3Qgb2YgYWN0aXZlIGd1 ZXN0cyIsCisgICAgICAgICAgICBMT0coREVCVUcsICJEb21haW4gJSJQUkl1MzIiOiByZW1vdmVk IGRvbWFpbiBmcm9tIHRoZSBsaXN0IG9mIGFjdGl2ZSBndWVzdHMiLAogICAgICAgICAgICAgICAg ICAgICAgICBkZ3Vlc3QtPmRvbWlkKTsKICAgICAgICAgICAgIC8qIENsZWFyIGFueSBsZWZ0b3Zl cnMgaW4gbGlieGwvPGRvbWlkPiAqLwogICAgICAgICAgICAgbGlieGxfX3hzX3JtX2NoZWNrZWQo Z2MsIFhCVF9OVUxMLApAQCAtNDAzNywyNCArNDA1NiwyNyBAQCBpbnQgbGlieGxfZG9tYWluX3Nl dG1heG1lbShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIHVpbnQ2NF90IG1heF9tZW1r YikKIAogICAgIG1lbSA9IGxpYnhsX194c19yZWFkKGdjLCBYQlRfTlVMTCwgR0NTUFJJTlRGKCIl cy9tZW1vcnkvdGFyZ2V0IiwgZG9tcGF0aCkpOwogICAgIGlmICghbWVtKSB7Ci0gICAgICAgIExP R0UoRVJST1IsICJjYW5ub3QgZ2V0IG1lbW9yeSBpbmZvIGZyb20gJXMvbWVtb3J5L3RhcmdldCIs IGRvbXBhdGgpOworICAgICAgICBMT0dFKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogY2Fubm90 IGdldCBtZW1vcnkgaW5mbyBmcm9tICVzL21lbW9yeS90YXJnZXQiLAorICAgICAgICAgICAgIGRv bWlkLCBkb21wYXRoKTsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogICAgIG1lbW9yeWtiID0g c3RydG91bGwobWVtLCAmZW5kcHRyLCAxMCk7CiAgICAgaWYgKCplbmRwdHIgIT0gJ1wwJykgewot ICAgICAgICBMT0dFKEVSUk9SLCAiaW52YWxpZCBtZW1vcnkgJXMgZnJvbSAlcy9tZW1vcnkvdGFy Z2V0XG4iLCBtZW0sIGRvbXBhdGgpOworICAgICAgICBMT0dFKEVSUk9SLCAiRG9tYWluICUiUFJJ dTMyIjogaW52YWxpZCBtZW1vcnkgJXMgZnJvbSAlcy9tZW1vcnkvdGFyZ2V0XG4iLAorICAgICAg ICAgICAgIGRvbWlkLCBtZW0sIGRvbXBhdGgpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAK ICAgICBpZiAobWF4X21lbWtiIDwgbWVtb3J5a2IpIHsKICAgICAgICAgTE9HRShFUlJPUiwKLSAg ICAgICAgICAgICAibWVtb3J5X3N0YXRpY19tYXggbXVzdCBiZSBncmVhdGVyIHRoYW4gb3Igb3Ig ZXF1YWwgdG8gbWVtb3J5X2R5bmFtaWNfbWF4Iik7CisgICAgICAgICAgICAgIkRvbWFpbiAlIlBS SXUzMiI6IG1lbW9yeV9zdGF0aWNfbWF4IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIG9yIGVxdWFs IHRvIG1lbW9yeV9keW5hbWljX21heCIsCisgICAgICAgICAgICAgZG9taWQpOwogICAgICAgICBn b3RvIG91dDsKICAgICB9CiAgICAgcmMgPSB4Y19kb21haW5fc2V0bWF4bWVtKGN0eC0+eGNoLCBk b21pZCwgbWF4X21lbWtiICsgTElCWExfTUFYTUVNX0NPTlNUQU5UKTsKICAgICBpZiAocmMgIT0g MCkgewogICAgICAgICBMT0dFKEVSUk9SLAotICAgICAgICAgICAgICJ4Y19kb21haW5fc2V0bWF4 bWVtIGRvbWlkPSVkIG1lbWtiPSUiUFJJdTY0IiBmYWlsZWQgIiJyYz0lZFxuIiwKKyAgICAgICAg ICAgICAiRG9tYWluICUiUFJJdTMyIjogeGNfZG9tYWluX3NldG1heG1lbSBtZW1rYj0lIlBSSXU2 NCIgZmFpbGVkICIicmM9JWRcbiIsCiAgICAgICAgICAgICAgZG9taWQsIG1heF9tZW1rYiArIExJ QlhMX01BWE1FTV9DT05TVEFOVCwgcmMpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CkBAIC00 MDk0LDcgKzQxMTYsNyBAQCByZXRyeV90cmFuc2FjdGlvbjoKICAgICBpZiAodGFyZ2V0KSB7CiAg ICAgICAgICp0YXJnZXRfbWVta2IgPSBzdHJ0b3VsbCh0YXJnZXQsICZlbmRwdHIsIDEwKTsKICAg ICAgICAgaWYgKCplbmRwdHIgIT0gJ1wwJykgewotICAgICAgICAgICAgTE9HRShFUlJPUiwgImlu dmFsaWQgbWVtb3J5IHRhcmdldCAlcyBmcm9tICVzXG4iLCB0YXJnZXQsCisgICAgICAgICAgICBM T0dFKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogaW52YWxpZCBtZW1vcnkgdGFyZ2V0ICVzIGZy b20gJXNcbiIsIDAsIHRhcmdldCwKICAgICAgICAgICAgICAgICAgdGFyZ2V0X3BhdGgpOwogICAg ICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICAgICAgZ290byBvdXQ7CkBAIC00MTA0 LDcgKzQxMjYsOCBAQCByZXRyeV90cmFuc2FjdGlvbjoKICAgICBpZiAoc3RhdGljbWF4KSB7CiAg ICAgICAgICptYXhfbWVta2IgPSBzdHJ0b3VsbChzdGF0aWNtYXgsICZlbmRwdHIsIDEwKTsKICAg ICAgICAgaWYgKCplbmRwdHIgIT0gJ1wwJykgewotICAgICAgICAgICAgTE9HRShFUlJPUiwgImlu dmFsaWQgbWVtb3J5IHN0YXRpYy1tYXggJXMgZnJvbSAlc1xuIiwgc3RhdGljbWF4LAorICAgICAg ICAgICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IGludmFsaWQgbWVtb3J5IHN0YXRp Yy1tYXggJXMgZnJvbSAlc1xuIiwgMCwKKyAgICAgICAgICAgICAgICAgc3RhdGljbWF4LAogICAg ICAgICAgICAgICAgICBtYXhfcGF0aCk7CiAgICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAg ICAgICAgICAgICBnb3RvIG91dDsKQEAgLTQxODMsMTYgKzQyMDYsMTYgQEAgcmV0cnlfdHJhbnNh Y3Rpb246CiAgICAgICAgIGlmIChscmMgPCAwKSB7IHJjID0gRVJST1JfRkFJTDsgZ290byBvdXRf bm9fdHJhbnNhY3Rpb247IH0KICAgICAgICAgZ290byByZXRyeV90cmFuc2FjdGlvbjsKICAgICB9 IGVsc2UgaWYgKCF0YXJnZXQpIHsKLSAgICAgICAgTE9HRShFUlJPUiwgImNhbm5vdCBnZXQgdGFy Z2V0IG1lbW9yeSBpbmZvIGZyb20gJXMvbWVtb3J5L3RhcmdldCIsCi0gICAgICAgICAgICAgZG9t cGF0aCk7CisgICAgICAgIExPR0UoRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBjYW5ub3QgZ2V0 IHRhcmdldCBtZW1vcnkgaW5mbyBmcm9tICVzL21lbW9yeS90YXJnZXQiLAorICAgICAgICAgICAg IGRvbWlkLCBkb21wYXRoKTsKICAgICAgICAgYWJvcnRfdHJhbnNhY3Rpb24gPSAxOwogICAgICAg ICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0gZWxzZSB7CiAgICAg ICAgIGN1cnJlbnRfdGFyZ2V0X21lbWtiID0gc3RydG91bGwodGFyZ2V0LCAmZW5kcHRyLCAxMCk7 CiAgICAgICAgIGlmICgqZW5kcHRyICE9ICdcMCcpIHsKLSAgICAgICAgICAgIExPR0UoRVJST1Is ICJpbnZhbGlkIG1lbW9yeSB0YXJnZXQgJXMgZnJvbSAlcy9tZW1vcnkvdGFyZ2V0XG4iLAotICAg ICAgICAgICAgICAgICB0YXJnZXQsIGRvbXBhdGgpOworICAgICAgICAgICAgTE9HRShFUlJPUiwg IkRvbWFpbiAlIlBSSXUzMiI6IGludmFsaWQgbWVtb3J5IHRhcmdldCAlcyBmcm9tICVzL21lbW9y eS90YXJnZXRcbiIsCisgICAgICAgICAgICAgICAgIGRvbWlkLCB0YXJnZXQsIGRvbXBhdGgpOwog ICAgICAgICAgICAgYWJvcnRfdHJhbnNhY3Rpb24gPSAxOwogICAgICAgICAgICAgcmMgPSBFUlJP Ul9GQUlMOwogICAgICAgICAgICAgZ290byBvdXQ7CkBAIC00MjAwLDE2ICs0MjIzLDE2IEBAIHJl dHJ5X3RyYW5zYWN0aW9uOgogICAgIH0KICAgICBtZW1tYXggPSBsaWJ4bF9feHNfcmVhZChnYywg dCwgR0NTUFJJTlRGKCIlcy9tZW1vcnkvc3RhdGljLW1heCIsIGRvbXBhdGgpKTsKICAgICBpZiAo IW1lbW1heCkgewotICAgICAgICBMT0dFKEVSUk9SLCAiY2Fubm90IGdldCBtZW1vcnkgaW5mbyBm cm9tICVzL21lbW9yeS9zdGF0aWMtbWF4IiwKLSAgICAgICAgICAgICBkb21wYXRoKTsKKyAgICAg ICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IGNhbm5vdCBnZXQgbWVtb3J5IGluZm8g ZnJvbSAlcy9tZW1vcnkvc3RhdGljLW1heCIsCisgICAgICAgICAgICAgZG9taWQsIGRvbXBhdGgp OwogICAgICAgICBhYm9ydF90cmFuc2FjdGlvbiA9IDE7CiAgICAgICAgIHJjID0gRVJST1JfRkFJ TDsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogICAgIG1lbW9yeWtiID0gc3RydG91bGwobWVt bWF4LCAmZW5kcHRyLCAxMCk7CiAgICAgaWYgKCplbmRwdHIgIT0gJ1wwJykgewotICAgICAgICBM T0dFKEVSUk9SLCAiaW52YWxpZCBtYXggbWVtb3J5ICVzIGZyb20gJXMvbWVtb3J5L3N0YXRpYy1t YXhcbiIsCi0gICAgICAgICAgICAgbWVtbWF4LCBkb21wYXRoKTsKKyAgICAgICAgTE9HRShFUlJP UiwgIkRvbWFpbiAlIlBSSXUzMiI6IGludmFsaWQgbWF4IG1lbW9yeSAlcyBmcm9tICVzL21lbW9y eS9zdGF0aWMtbWF4XG4iLAorICAgICAgICAgICAgIGRvbWlkLCBtZW1tYXgsIGRvbXBhdGgpOwog ICAgICAgICBhYm9ydF90cmFuc2FjdGlvbiA9IDE7CiAgICAgICAgIHJjID0gRVJST1JfRkFJTDsK ICAgICAgICAgZ290byBvdXQ7CkBAIC00MjI4LDggKzQyNTEsOCBAQCByZXRyeV90cmFuc2FjdGlv bjoKICAgICAgICAgbmV3X3RhcmdldF9tZW1rYiA9IHRhcmdldF9tZW1rYiAtIHZpZGVvcmFtOwog ICAgIGlmIChuZXdfdGFyZ2V0X21lbWtiID4gbWVtb3J5a2IpIHsKICAgICAgICAgTE9HKEVSUk9S LAotICAgICAgICAgICAgIm1lbW9yeV9keW5hbWljX21heCBtdXN0IGJlIGxlc3MgdGhhbiBvciBl cXVhbCB0byIKLSAgICAgICAgICAgICIgbWVtb3J5X3N0YXRpY19tYXhcbiIpOworICAgICAgICAg ICAgIkRvbWFpbiAlIlBSSXUzMiI6IG1lbW9yeV9keW5hbWljX21heCBtdXN0IGJlIGxlc3MgdGhh biBvciBlcXVhbCB0byIKKyAgICAgICAgICAgICIgbWVtb3J5X3N0YXRpY19tYXhcbiIsIGRvbWlk KTsKICAgICAgICAgYWJvcnRfdHJhbnNhY3Rpb24gPSAxOwogICAgICAgICByYyA9IEVSUk9SX0lO VkFMOwogICAgICAgICBnb3RvIG91dDsKQEAgLTQyMzcsOCArNDI2MCw4IEBAIHJldHJ5X3RyYW5z YWN0aW9uOgogCiAgICAgaWYgKCFkb21pZCAmJiBuZXdfdGFyZ2V0X21lbWtiIDwgTElCWExfTUlO X0RPTTBfTUVNKSB7CiAgICAgICAgIExPRyhFUlJPUiwKLSAgICAgICAgICAgICJuZXcgdGFyZ2V0 ICUiUFJJdTY0IiBmb3IgZG9tMCBpcyBiZWxvdyB0aGUgbWluaW11bSB0aHJlc2hvbGQiLAotICAg ICAgICAgICAgbmV3X3RhcmdldF9tZW1rYik7CisgICAgICAgICAgICAiRG9tYWluICUiUFJJdTMy IjogbmV3IHRhcmdldCAlIlBSSXU2NCIgZm9yIGRvbTAgaXMgYmVsb3cgdGhlIG1pbmltdW0gdGhy ZXNob2xkIiwKKyAgICAgICAgICAgIGRvbWlkLCBuZXdfdGFyZ2V0X21lbWtiKTsKICAgICAgICAg YWJvcnRfdHJhbnNhY3Rpb24gPSAxOwogICAgICAgICByYyA9IEVSUk9SX0lOVkFMOwogICAgICAg ICBnb3RvIG91dDsKQEAgLTQyNTAsNyArNDI3Myw3IEBAIHJldHJ5X3RyYW5zYWN0aW9uOgogICAg ICAgICAgICAgICAgIExJQlhMX01BWE1FTV9DT05TVEFOVCk7CiAgICAgICAgIGlmIChyICE9IDAp IHsKICAgICAgICAgICAgIExPR0UoRVJST1IsCi0gICAgICAgICAgICAgICAgICJ4Y19kb21haW5f c2V0bWF4bWVtIGRvbWlkPSV1IG1lbWtiPSUiUFJJdTY0IiBmYWlsZWQgIiJyYz0lZFxuIiwKKyAg ICAgICAgICAgICAgICAgIkRvbWFpbiAlIlBSSXUzMiI6IHhjX2RvbWFpbl9zZXRtYXhtZW0gbWVt a2I9JSJQUkl1NjQiIGZhaWxlZCAiInJjPSVkXG4iLAogICAgICAgICAgICAgICAgICBkb21pZCwK ICAgICAgICAgICAgICAgICAgbWVtb3J5a2IgKyBMSUJYTF9NQVhNRU1fQ09OU1RBTlQsCiAgICAg ICAgICAgICAgICAgIHIpOwpAQCAtNDI2NCw3ICs0Mjg3LDcgQEAgcmV0cnlfdHJhbnNhY3Rpb246 CiAgICAgICAgICAgICAobmV3X3RhcmdldF9tZW1rYiArIExJQlhMX01BWE1FTV9DT05TVEFOVCkg LyA0LCBOVUxMLCBOVUxMLCBOVUxMKTsKICAgICBpZiAociAhPSAwKSB7CiAgICAgICAgIExPR0Uo RVJST1IsCi0gICAgICAgICAgICAgInhjX2RvbWFpbl9zZXRfcG9kX3RhcmdldCBkb21pZD0lZCwg bWVta2I9JSJQUkl1NjQiIGZhaWxlZCByYz0lZFxuIiwKKyAgICAgICAgICAgICAiRG9tYWluICUi UFJJdTMyIjogeGNfZG9tYWluX3NldF9wb2RfdGFyZ2V0LCBtZW1rYj0lIlBSSXU2NCIgZmFpbGVk IHJjPSVkXG4iLAogICAgICAgICAgICAgIGRvbWlkLAogICAgICAgICAgICAgIG5ld190YXJnZXRf bWVta2IgLyA0LAogICAgICAgICAgICAgIHIpOwpAQCAtNDMxOSwyNSArNDM0MiwyNiBAQCBzdGF0 aWMgaW50IGxpYnhsX19nZXRfbWVtb3J5X3RhcmdldChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBk b21pZCwKICAgICAgICAgaWYgKHJjIDwgMCkKICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgIH0g ZWxzZSBpZiAoIXRhcmdldCkgewotICAgICAgICBMT0dFKEVSUk9SLCAiY2Fubm90IGdldCB0YXJn ZXQgbWVtb3J5IGluZm8gZnJvbSAlcy9tZW1vcnkvdGFyZ2V0IiwKLSAgICAgICAgICAgICBkb21w YXRoKTsKKyAgICAgICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IGNhbm5vdCBnZXQg dGFyZ2V0IG1lbW9yeSBpbmZvIGZyb20gJXMvbWVtb3J5L3RhcmdldCIsCisgICAgICAgICAgICAg ZG9taWQsIGRvbXBhdGgpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9IGVsc2UgaWYgKCFzdGF0 aWNfbWF4KSB7CiAgICAgICAgIExPR0UoRVJST1IsCi0gICAgICAgICAgICAgImNhbm5vdCBnZXQg dGFyZ2V0IG1lbW9yeSBpbmZvIGZyb20gJXMvbWVtb3J5L3N0YXRpYy1tYXgiLAotICAgICAgICAg ICAgIGRvbXBhdGgpOworICAgICAgICAgICAgICJEb21haW4gJSJQUkl1MzIiOiBjYW5ub3QgZ2V0 IHRhcmdldCBtZW1vcnkgaW5mbyBmcm9tICVzL21lbW9yeS9zdGF0aWMtbWF4IiwKKyAgICAgICAg ICAgICBkb21pZCwgZG9tcGF0aCk7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0gZWxzZSB7CiAg ICAgICAgIHRhcmdldF9tZW1rYiA9IHN0cnRvdWxsKHRhcmdldCwgJmVuZHB0ciwgMTApOwogICAg ICAgICBpZiAoKmVuZHB0ciAhPSAnXDAnKSB7Ci0gICAgICAgICAgICBMT0dFKEVSUk9SLCAiaW52 YWxpZCBtZW1vcnkgdGFyZ2V0ICVzIGZyb20gJXMvbWVtb3J5L3RhcmdldFxuIiwKLSAgICAgICAg ICAgICAgICAgdGFyZ2V0LCBkb21wYXRoKTsKKyAgICAgICAgICAgIExPR0UoRVJST1IsICJEb21h aW4gJSJQUkl1MzIiOiBpbnZhbGlkIG1lbW9yeSB0YXJnZXQgJXMgZnJvbSAlcy9tZW1vcnkvdGFy Z2V0XG4iLAorICAgICAgICAgICAgICAgICBkb21pZCwgdGFyZ2V0LCBkb21wYXRoKTsKICAgICAg ICAgICAgIGdvdG8gb3V0OwogICAgICAgICB9CiAgICAgICAgIG1heF9tZW1rYiA9IHN0cnRvdWxs KHN0YXRpY19tYXgsICZlbmRwdHIsIDEwKTsKICAgICAgICAgaWYgKCplbmRwdHIgIT0gJ1wwJykg ewogICAgICAgICAgICAgTE9HRShFUlJPUiwKLSAgICAgICAgICAgICAgICAgImludmFsaWQgbWVt b3J5IHRhcmdldCAlcyBmcm9tICVzL21lbW9yeS9zdGF0aWMtbWF4XG4iLAorICAgICAgICAgICAg ICAgICAiRG9tYWluICUiUFJJdTMyIjogaW52YWxpZCBtZW1vcnkgdGFyZ2V0ICVzIGZyb20gJXMv bWVtb3J5L3N0YXRpYy1tYXhcbiIsCisgICAgICAgICAgICAgICAgIGRvbWlkLAogICAgICAgICAg ICAgICAgICBzdGF0aWNfbWF4LAogICAgICAgICAgICAgICAgICBkb21wYXRoKTsKICAgICAgICAg ICAgIGdvdG8gb3V0OwpAQCAtNDgzMSw3ICs0ODU1LDcgQEAgbGlieGxfdmNwdWluZm8gKmxpYnhs X2xpc3RfdmNwdShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgeGNfdmNwdWlu Zm9fdCB2Y3B1aW5mbzsKIAogICAgIGlmICh4Y19kb21haW5fZ2V0aW5mb2xpc3QoY3R4LT54Y2gs IGRvbWlkLCAxLCAmZG9tYWluaW5mbykgIT0gMSkgewotICAgICAgICBMT0dFKEVSUk9SLCAiZ2V0 dGluZyBpbmZvbGlzdCIpOworICAgICAgICBMT0dFKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjog Z2V0dGluZyBpbmZvbGlzdCIsIGRvbWlkKTsKICAgICAgICAgR0NfRlJFRTsKICAgICAgICAgcmV0 dXJuIE5VTEw7CiAgICAgfQpAQCAtNDg1NSwxNCArNDg3OSwxNCBAQCBsaWJ4bF92Y3B1aW5mbyAq bGlieGxfbGlzdF92Y3B1KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAg aWYgKGxpYnhsX2NwdV9iaXRtYXBfYWxsb2MoY3R4LCAmcHRyLT5jcHVtYXBfc29mdCwgMCkpCiAg ICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgaWYgKHhjX3ZjcHVfZ2V0aW5mbyhjdHgtPnhj aCwgZG9taWQsICpucl92Y3B1c19vdXQsICZ2Y3B1aW5mbykgPT0gLTEpIHsKLSAgICAgICAgICAg IExPR0UoRVJST1IsICJnZXR0aW5nIHZjcHUgaW5mbyIpOworICAgICAgICAgICAgTE9HRShFUlJP UiwgIkRvbWFpbiAlIlBSSXUzMiI6IGdldHRpbmcgdmNwdSBpbmZvIiwgZG9taWQpOwogICAgICAg ICAgICAgZ290byBlcnI7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoeGNfdmNwdV9nZXRhZmZp bml0eShjdHgtPnhjaCwgZG9taWQsICpucl92Y3B1c19vdXQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHB0ci0+Y3B1bWFwLm1hcCwgcHRyLT5jcHVtYXBfc29mdC5tYXAsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhFTl9WQ1BVQUZGSU5JVFlfU09GVHxYRU5fVkNQ VUFGRklOSVRZX0hBUkQpID09IC0xKSB7Ci0gICAgICAgICAgICBMT0dFKEVSUk9SLCAiZ2V0dGlu ZyB2Y3B1IGFmZmluaXR5Iik7CisgICAgICAgICAgICBMT0dFKEVSUk9SLCAiRG9tYWluICUiUFJJ dTMyIjogZ2V0dGluZyB2Y3B1IGFmZmluaXR5IiwgZG9taWQpOwogICAgICAgICAgICAgZ290byBl cnI7CiAgICAgICAgIH0KICAgICAgICAgcHRyLT52Y3B1aWQgPSAqbnJfdmNwdXNfb3V0OwpAQCAt NDkyNiw3ICs0OTUwLDcgQEAgc3RhdGljIGludCBsaWJ4bF9fc2V0X3ZjcHVhZmZpbml0eShsaWJ4 bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3B1bWFwX2hhcmQgPyBoYXJkLm1hcCA6IE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY3B1bWFwX3NvZnQgPyBzb2Z0Lm1hcCA6IE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZmxhZ3MpKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJzZXR0aW5nIHZjcHUgYWZmaW5p dHkiKTsKKyAgICAgICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IHNldHRpbmcgdmNw dSBhZmZpbml0eSIsIGRvbWlkKTsKICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICBn b3RvIG91dDsKICAgICB9CkBAIC00OTM4LDIwICs0OTYyLDIwIEBAIHN0YXRpYyBpbnQgbGlieGxf X3NldF92Y3B1YWZmaW5pdHkobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAq LwogICAgIGlmIChjcHVtYXBfaGFyZCAmJgogICAgICAgICAhbGlieGxfYml0bWFwX2VxdWFsKGNw dW1hcF9oYXJkLCAmaGFyZCwgMCkpCi0gICAgICAgIExPRyhERUJVRywgIk5ldyBoYXJkIGFmZmlu aXR5IGZvciB2Y3B1ICVkIGhhcyB1bnJlYWNoYWJsZSBjcHVzIiwKLSAgICAgICAgdmNwdWlkKTsK KyAgICAgICAgTE9HKERFQlVHLCAiRG9tYWluICUiUFJJdTMyIjogTmV3IGhhcmQgYWZmaW5pdHkg Zm9yIHZjcHUgJWQgaGFzIHVucmVhY2hhYmxlIGNwdXMiLAorICAgICAgICAgICAgZG9taWQsIHZj cHVpZCk7CiAgICAgLyoKICAgICAgKiBTb2Z0IGFmZmluaXR5IGNhbiBib3RoIGJlIGRpZmZlcmVu dCBmcm9tIHdoYXQgYXNrZWQgYW5kIGVtcHR5LiBDaGVjawogICAgICAqIGZvciAoYW5kIHJlcG9y dCkgYm90aC4KICAgICAgKi8KICAgICBpZiAoY3B1bWFwX3NvZnQpIHsKICAgICAgICAgaWYgKCFs aWJ4bF9iaXRtYXBfZXF1YWwoY3B1bWFwX3NvZnQsICZzb2Z0LCAwKSkKLSAgICAgICAgICAgIExP RyhERUJVRywgIk5ldyBzb2Z0IGFmZmluaXR5IGZvciB2Y3B1ICVkIGhhcyB1bnJlYWNoYWJsZSBj cHVzIiwKLSAgICAgICAgICAgICAgICB2Y3B1aWQpOworICAgICAgICAgICAgTE9HKERFQlVHLCAi RG9tYWluICUiUFJJdTMyIjogTmV3IHNvZnQgYWZmaW5pdHkgZm9yIHZjcHUgJWQgaGFzIHVucmVh Y2hhYmxlIGNwdXMiLAorICAgICAgICAgICAgICAgIGRvbWlkLCB2Y3B1aWQpOwogICAgICAgICBp ZiAobGlieGxfYml0bWFwX2lzX2VtcHR5KCZzb2Z0KSkKLSAgICAgICAgICAgIExPRyhXQVJOLCAi YWxsIGNwdXMgaW4gc29mdCBhZmZpbml0eSBvZiB2Y3B1ICVkIGFyZSB1bnJlYWNoYWJsZS4iCisg ICAgICAgICAgICBMT0coV0FSTiwgIkRvbWFpbiAlIlBSSXUzMiI6IGFsbCBjcHVzIGluIHNvZnQg YWZmaW5pdHkgb2YgdmNwdSAlZCBhcmUgdW5yZWFjaGFibGUuIgogICAgICAgICAgICAgICAgICIg T25seSBoYXJkIGFmZmluaXR5IHdpbGwgYmUgY29uc2lkZXJlZCBmb3Igc2NoZWR1bGluZyIsCi0g ICAgICAgICAgICAgICAgdmNwdWlkKTsKKyAgICAgICAgICAgICAgICBkb21pZCwgdmNwdWlkKTsK ICAgICB9CiAKICAgICByYyA9IDA7CkBAIC00OTg5LDcgKzUwMTMsNyBAQCBpbnQgbGlieGxfc2V0 X3ZjcHVhZmZpbml0eV9hbGwobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogCiAgICAg Zm9yIChpID0gMDsgaSA8IG1heF92Y3B1czsgaSsrKSB7CiAgICAgICAgIGlmIChsaWJ4bF9zZXRf dmNwdWFmZmluaXR5KGN0eCwgZG9taWQsIGksIGNwdW1hcF9oYXJkLCBjcHVtYXBfc29mdCkpIHsK LSAgICAgICAgICAgIExPRyhXQVJOLCAiZmFpbGVkIHRvIHNldCBhZmZpbml0eSBmb3IgJWQiLCBp KTsKKyAgICAgICAgICAgIExPRyhXQVJOLCAiRG9tYWluICUiUFJJdTMyIjogZmFpbGVkIHRvIHNl dCBhZmZpbml0eSBmb3IgJWQiLCBkb21pZCwgaSk7CiAgICAgICAgICAgICByYyA9IEVSUk9SX0ZB SUw7CiAgICAgICAgIH0KICAgICB9CkBAIC01MDAzLDcgKzUwMjcsNyBAQCBpbnQgbGlieGxfZG9t YWluX3NldF9ub2RlYWZmaW5pdHkobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogewog ICAgIEdDX0lOSVQoY3R4KTsKICAgICBpZiAoeGNfZG9tYWluX25vZGVfc2V0YWZmaW5pdHkoY3R4 LT54Y2gsIGRvbWlkLCBub2RlbWFwLT5tYXApKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJzZXR0 aW5nIG5vZGUgYWZmaW5pdHkiKTsKKyAgICAgICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBSSXUz MiI6IHNldHRpbmcgbm9kZSBhZmZpbml0eSIsIGRvbWlkKTsKICAgICAgICAgR0NfRlJFRTsKICAg ICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7CiAgICAgfQpAQCAtNTAxNiw3ICs1MDQwLDcgQEAgaW50 IGxpYnhsX2RvbWFpbl9nZXRfbm9kZWFmZmluaXR5KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBk b21pZCwKIHsKICAgICBHQ19JTklUKGN0eCk7CiAgICAgaWYgKHhjX2RvbWFpbl9ub2RlX2dldGFm ZmluaXR5KGN0eC0+eGNoLCBkb21pZCwgbm9kZW1hcC0+bWFwKSkgewotICAgICAgICBMT0dFKEVS Uk9SLCAiZ2V0dGluZyBub2RlIGFmZmluaXR5Iik7CisgICAgICAgIExPR0UoRVJST1IsICJEb21h aW4gJSJQUkl1MzIiOiBnZXR0aW5nIG5vZGUgYWZmaW5pdHkiLCBkb21pZCk7CiAgICAgICAgIEdD X0ZSRUU7CiAgICAgICAgIHJldHVybiBFUlJPUl9GQUlMOwogICAgIH0KQEAgLTUwNjQsNyArNTA4 OCw3IEBAIHN0YXRpYyBpbnQgbGlieGxfX3NldF92Y3B1b25saW5lX3FtcChsaWJ4bF9fZ2MgKmdj LCB1aW50MzJfdCBkb21pZCwKICAgICBsaWJ4bF9iaXRtYXBfc2V0X25vbmUoJmN1cnJlbnRfbWFw KTsKICAgICByYyA9IGxpYnhsX19xbXBfcXVlcnlfY3B1cyhnYywgZG9taWQsICZjdXJyZW50X21h cCk7CiAgICAgaWYgKHJjKSB7Ci0gICAgICAgIExPRyhFUlJPUiwgImZhaWxlZCB0byBxdWVyeSBj cHVzIGZvciBkb21haW4gJWQiLCBkb21pZCk7CisgICAgICAgIExPRyhFUlJPUiwgIkRvbWFpbiAl IlBSSXUzMiI6IGZhaWxlZCB0byBxdWVyeSBjcHVzIiwgZG9taWQpOwogICAgICAgICBnb3RvIG91 dDsKICAgICB9CiAKQEAgLTUwNzYsNyArNTEwMCw3IEBAIHN0YXRpYyBpbnQgbGlieGxfX3NldF92 Y3B1b25saW5lX3FtcChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICBsaWJ4bF9m b3JfZWFjaF9zZXRfYml0KGksIGZpbmFsX21hcCkgewogICAgICAgICByYyA9IGxpYnhsX19xbXBf Y3B1X2FkZChnYywgZG9taWQsIGkpOwogICAgICAgICBpZiAocmMpIHsKLSAgICAgICAgICAgIExP RyhFUlJPUiwgImZhaWxlZCB0byBhZGQgY3B1ICVkIHRvIGRvbWFpbiAlZCIsIGksIGRvbWlkKTsK KyAgICAgICAgICAgIExPRyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IGZhaWxlZCB0byBhZGQg Y3B1ICVkIiwgZG9taWQsIGkpOwogICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgIH0KICAg ICB9CkBAIC01MDk4LDE1ICs1MTIyLDE1IEBAIGludCBsaWJ4bF9zZXRfdmNwdW9ubGluZShsaWJ4 bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsIGxpYnhsX2JpdG1hcCAqY3B1bWFwKQogCiAgICAg cmMgPSBsaWJ4bF9kb21haW5faW5mbyhDVFgsICZpbmZvLCBkb21pZCk7CiAgICAgaWYgKHJjIDwg MCkgewotICAgICAgICBMT0dFKEVSUk9SLCAiZ2V0dGluZyBkb21haW4gaW5mbyBsaXN0Iik7Cisg ICAgICAgIExPR0UoRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBnZXR0aW5nIGRvbWFpbiBpbmZv IGxpc3QiLCBkb21pZCk7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAogICAgIG1heGNwdXMg PSBsaWJ4bF9iaXRtYXBfY291bnRfc2V0KGNwdW1hcCk7CiAgICAgaWYgKG1heGNwdXMgPiBpbmZv LnZjcHVfbWF4X2lkICsgMSkKICAgICB7Ci0gICAgICAgIExPR0UoRVJST1IsICJSZXF1ZXN0ZWQg JWQgVkNQVXMsIGhvd2V2ZXIgbWF4Y3B1cyBpcyAlZCEiLAotICAgICAgICAgICAgIG1heGNwdXMs IGluZm8udmNwdV9tYXhfaWQgKyAxKTsKKyAgICAgICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBS SXUzMiI6IFJlcXVlc3RlZCAlZCBWQ1BVcywgaG93ZXZlciBtYXhjcHVzIGlzICVkISIsCisgICAg ICAgICAgICAgZG9taWQsIG1heGNwdXMsIGluZm8udmNwdV9tYXhfaWQgKyAxKTsKICAgICAgICAg cmMgPSBFUlJPUl9GQUlMOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CkBAIC01MTY3LDcgKzUx OTEsNyBAQCBzdGF0aWMgaW50IHNjaGVkX2NyZWRpdF9kb21haW5fZ2V0KGxpYnhsX19nYyAqZ2Ms IHVpbnQzMl90IGRvbWlkLAogCiAgICAgcmMgPSB4Y19zY2hlZF9jcmVkaXRfZG9tYWluX2dldChD VFgtPnhjaCwgZG9taWQsICZzZG9tKTsKICAgICBpZiAocmMgIT0gMCkgewotICAgICAgICBMT0dF KEVSUk9SLCAiZ2V0dGluZyBkb21haW4gc2NoZWQgY3JlZGl0Iik7CisgICAgICAgIExPR0UoRVJS T1IsICJEb21haW4gJSJQUkl1MzIiOiBnZXR0aW5nIGRvbWFpbiBzY2hlZCBjcmVkaXQiLCBkb21p ZCk7CiAgICAgICAgIHJldHVybiBFUlJPUl9GQUlMOwogICAgIH0KIApAQCAtNTE4OCw3ICs1MjEy LDcgQEAgc3RhdGljIGludCBzY2hlZF9jcmVkaXRfZG9tYWluX3NldChsaWJ4bF9fZ2MgKmdjLCB1 aW50MzJfdCBkb21pZCwKIAogICAgIHJjID0geGNfZG9tYWluX2dldGluZm9saXN0KENUWC0+eGNo LCBkb21pZCwgMSwgJmRvbWFpbmluZm8pOwogICAgIGlmIChyYyA8IDApIHsKLSAgICAgICAgTE9H RShFUlJPUiwgImdldHRpbmcgZG9tYWluIGluZm8gbGlzdCIpOworICAgICAgICBMT0dFKEVSUk9S LCAiRG9tYWluICUiUFJJdTMyIjogZ2V0dGluZyBkb21haW4gaW5mbyBsaXN0IiwgZG9taWQpOwog ICAgICAgICByZXR1cm4gRVJST1JfRkFJTDsKICAgICB9CiAgICAgaWYgKHJjICE9IDEgfHwgZG9t YWluaW5mby5kb21haW4gIT0gZG9taWQpCkBAIC01MTk2LDE0ICs1MjIwLDE0IEBAIHN0YXRpYyBp bnQgc2NoZWRfY3JlZGl0X2RvbWFpbl9zZXQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQs CiAKICAgICByYyA9IHhjX3NjaGVkX2NyZWRpdF9kb21haW5fZ2V0KENUWC0+eGNoLCBkb21pZCwg JnNkb20pOwogICAgIGlmIChyYyAhPSAwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJnZXR0aW5n IGRvbWFpbiBzY2hlZCBjcmVkaXQiKTsKKyAgICAgICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBS SXUzMiI6IGdldHRpbmcgZG9tYWluIHNjaGVkIGNyZWRpdCIsIGRvbWlkKTsKICAgICAgICAgcmV0 dXJuIEVSUk9SX0ZBSUw7CiAgICAgfQogCiAgICAgaWYgKHNjaW5mby0+d2VpZ2h0ICE9IExJQlhM X0RPTUFJTl9TQ0hFRF9QQVJBTV9XRUlHSFRfREVGQVVMVCkgewogICAgICAgICBpZiAoc2NpbmZv LT53ZWlnaHQgPCAxIHx8IHNjaW5mby0+d2VpZ2h0ID4gNjU1MzUpIHsKLSAgICAgICAgICAgIExP RyhFUlJPUiwgIkNwdSB3ZWlnaHQgb3V0IG9mIHJhbmdlLCAiCi0gICAgICAgICAgICAgICAgInZh bGlkIHZhbHVlcyBhcmUgd2l0aGluIHJhbmdlIGZyb20gMSB0byA2NTUzNSIpOworICAgICAgICAg ICAgTE9HKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogQ3B1IHdlaWdodCBvdXQgb2YgcmFuZ2Us ICIKKyAgICAgICAgICAgICAgICAidmFsaWQgdmFsdWVzIGFyZSB3aXRoaW4gcmFuZ2UgZnJvbSAx IHRvIDY1NTM1IiwgZG9taWQpOwogICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0lOVkFMOwogICAg ICAgICB9CiAgICAgICAgIHNkb20ud2VpZ2h0ID0gc2NpbmZvLT53ZWlnaHQ7CkBAIC01MjEyLDkg KzUyMzYsOSBAQCBzdGF0aWMgaW50IHNjaGVkX2NyZWRpdF9kb21haW5fc2V0KGxpYnhsX19nYyAq Z2MsIHVpbnQzMl90IGRvbWlkLAogICAgIGlmIChzY2luZm8tPmNhcCAhPSBMSUJYTF9ET01BSU5f U0NIRURfUEFSQU1fQ0FQX0RFRkFVTFQpIHsKICAgICAgICAgaWYgKHNjaW5mby0+Y2FwIDwgMAog ICAgICAgICAgICAgfHwgc2NpbmZvLT5jYXAgPiAoZG9tYWluaW5mby5tYXhfdmNwdV9pZCArIDEp ICogMTAwKSB7Ci0gICAgICAgICAgICBMT0coRVJST1IsICJDcHUgY2FwIG91dCBvZiByYW5nZSwg IgorICAgICAgICAgICAgTE9HKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogQ3B1IGNhcCBvdXQg b2YgcmFuZ2UsICIKICAgICAgICAgICAgICAgICAidmFsaWQgcmFuZ2UgaXMgZnJvbSAwIHRvICVk IGZvciBzcGVjaWZpZWQgbnVtYmVyIG9mIHZjcHVzIiwKLSAgICAgICAgICAgICAgICAoKGRvbWFp bmluZm8ubWF4X3ZjcHVfaWQgKyAxKSAqIDEwMCkpOworICAgICAgICAgICAgICAgIGRvbWlkLCAo KGRvbWFpbmluZm8ubWF4X3ZjcHVfaWQgKyAxKSAqIDEwMCkpOwogICAgICAgICAgICAgcmV0dXJu IEVSUk9SX0lOVkFMOwogICAgICAgICB9CiAgICAgICAgIHNkb20uY2FwID0gc2NpbmZvLT5jYXA7 CkBAIC01MjIyLDcgKzUyNDYsNyBAQCBzdGF0aWMgaW50IHNjaGVkX2NyZWRpdF9kb21haW5fc2V0 KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogCiAgICAgcmMgPSB4Y19zY2hlZF9jcmVk aXRfZG9tYWluX3NldChDVFgtPnhjaCwgZG9taWQsICZzZG9tKTsKICAgICBpZiAoIHJjIDwgMCAp IHsKLSAgICAgICAgTE9HRShFUlJPUiwgInNldHRpbmcgZG9tYWluIHNjaGVkIGNyZWRpdCIpOwor ICAgICAgICBMT0dFKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogc2V0dGluZyBkb21haW4gc2No ZWQgY3JlZGl0IiwgZG9taWQpOwogICAgICAgICByZXR1cm4gRVJST1JfRkFJTDsKICAgICB9CiAK QEAgLTUzMDIsNyArNTMyNiw3IEBAIHN0YXRpYyBpbnQgc2NoZWRfY3JlZGl0Ml9kb21haW5fZ2V0 KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAogCiAgICAgcmMgPSB4Y19zY2hlZF9jcmVk aXQyX2RvbWFpbl9nZXQoQ1RYLT54Y2gsIGRvbWlkLCAmc2RvbSk7CiAgICAgaWYgKHJjICE9IDAp IHsKLSAgICAgICAgTE9HRShFUlJPUiwgImdldHRpbmcgZG9tYWluIHNjaGVkIGNyZWRpdDIiKTsK KyAgICAgICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IGdldHRpbmcgZG9tYWluIHNj aGVkIGNyZWRpdDIiLCBkb21pZCk7CiAgICAgICAgIHJldHVybiBFUlJPUl9GQUlMOwogICAgIH0K IApAQCAtNTMyMSwxNCArNTM0NSwxNCBAQCBzdGF0aWMgaW50IHNjaGVkX2NyZWRpdDJfZG9tYWlu X3NldChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKIAogICAgIHJjID0geGNfc2NoZWRf Y3JlZGl0Ml9kb21haW5fZ2V0KENUWC0+eGNoLCBkb21pZCwgJnNkb20pOwogICAgIGlmIChyYyAh PSAwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJnZXR0aW5nIGRvbWFpbiBzY2hlZCBjcmVkaXQy Iik7CisgICAgICAgIExPR0UoRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBnZXR0aW5nIGRvbWFp biBzY2hlZCBjcmVkaXQyIiwgZG9taWQpOwogICAgICAgICByZXR1cm4gRVJST1JfRkFJTDsKICAg ICB9CiAKICAgICBpZiAoc2NpbmZvLT53ZWlnaHQgIT0gTElCWExfRE9NQUlOX1NDSEVEX1BBUkFN X1dFSUdIVF9ERUZBVUxUKSB7CiAgICAgICAgIGlmIChzY2luZm8tPndlaWdodCA8IDEgfHwgc2Np bmZvLT53ZWlnaHQgPiA2NTUzNSkgewotICAgICAgICAgICAgTE9HKEVSUk9SLCAiQ3B1IHdlaWdo dCBvdXQgb2YgcmFuZ2UsICIKLSAgICAgICAgICAgICAgICAgICAgICAgInZhbGlkIHZhbHVlcyBh cmUgd2l0aGluIHJhbmdlIGZyb20gMSB0byA2NTUzNSIpOworICAgICAgICAgICAgTE9HKEVSUk9S LCAiRG9tYWluICUiUFJJdTMyIjogQ3B1IHdlaWdodCBvdXQgb2YgcmFuZ2UsICIKKyAgICAgICAg ICAgICAgICAgICAgICAgInZhbGlkIHZhbHVlcyBhcmUgd2l0aGluIHJhbmdlIGZyb20gMSB0byA2 NTUzNSIsIGRvbWlkKTsKICAgICAgICAgICAgIHJldHVybiBFUlJPUl9JTlZBTDsKICAgICAgICAg fQogICAgICAgICBzZG9tLndlaWdodCA9IHNjaW5mby0+d2VpZ2h0OwpAQCAtNTMzNiw3ICs1MzYw LDcgQEAgc3RhdGljIGludCBzY2hlZF9jcmVkaXQyX2RvbWFpbl9zZXQobGlieGxfX2djICpnYywg dWludDMyX3QgZG9taWQsCiAKICAgICByYyA9IHhjX3NjaGVkX2NyZWRpdDJfZG9tYWluX3NldChD VFgtPnhjaCwgZG9taWQsICZzZG9tKTsKICAgICBpZiAoIHJjIDwgMCApIHsKLSAgICAgICAgTE9H RShFUlJPUiwgInNldHRpbmcgZG9tYWluIHNjaGVkIGNyZWRpdDIiKTsKKyAgICAgICAgTE9HRShF UlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IHNldHRpbmcgZG9tYWluIHNjaGVkIGNyZWRpdDIiLCBk b21pZCk7CiAgICAgICAgIHJldHVybiBFUlJPUl9GQUlMOwogICAgIH0KIApAQCAtNTM4MSw3ICs1 NDA1LDcgQEAgc3RhdGljIGludCBzY2hlZF9ydGRzX3ZjcHVfZ2V0KGxpYnhsX19nYyAqZ2MsIHVp bnQzMl90IGRvbWlkLAogCiAgICAgciA9IHhjX2RvbWFpbl9nZXRpbmZvKENUWC0+eGNoLCBkb21p ZCwgMSwgJmluZm8pOwogICAgIGlmIChyIDwgMCkgewotICAgICAgICBMT0dFKEVSUk9SLCAiZ2V0 dGluZyBkb21haW4gaW5mbyIpOworICAgICAgICBMT0dFKEVSUk9SLCAiRG9tYWluICUiUFJJdTMy IjogZ2V0dGluZyBkb21haW4gaW5mbyIsIGRvbWlkKTsKICAgICAgICAgcmMgPSBFUlJPUl9GQUlM OwogICAgICAgICBnb3RvIG91dDsKICAgICB9CkBAIC01Mzk1LDkgKzU0MTksOSBAQCBzdGF0aWMg aW50IHNjaGVkX3J0ZHNfdmNwdV9nZXQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAg ICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fdmNwdXM7IGkrKykgewogICAgICAgICAgICAgaWYg KHNjaW5mby0+dmNwdXNbaV0udmNwdWlkIDwgMCB8fAogICAgICAgICAgICAgICAgIHNjaW5mby0+ dmNwdXNbaV0udmNwdWlkID4gaW5mby5tYXhfdmNwdV9pZCkgewotICAgICAgICAgICAgICAgIExP RyhFUlJPUiwgIlZDUFUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCAiCisgICAgICAgICAgICAgICAg TE9HKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogVkNQVSBpbmRleCBpcyBvdXQgb2YgcmFuZ2Us ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWxpZCB2YWx1ZXMgYXJlIHdpdGhpbiBy YW5nZSBmcm9tIDAgdG8gJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5tYXhf dmNwdV9pZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZCwgaW5mby5tYXhfdmNw dV9pZCk7CiAgICAgICAgICAgICAgICAgcmMgPSBFUlJPUl9JTlZBTDsKICAgICAgICAgICAgICAg ICBnb3RvIG91dDsKICAgICAgICAgICAgIH0KQEAgLTU0MDcsNyArNTQzMSw3IEBAIHN0YXRpYyBp bnQgc2NoZWRfcnRkc192Y3B1X2dldChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKIAog ICAgIHIgPSB4Y19zY2hlZF9ydGRzX3ZjcHVfZ2V0KENUWC0+eGNoLCBkb21pZCwgdmNwdXMsIG51 bV92Y3B1cyk7CiAgICAgaWYgKHIgIT0gMCkgewotICAgICAgICBMT0dFKEVSUk9SLCAiZ2V0dGlu ZyB2Y3B1IHNjaGVkIHJ0ZHMiKTsKKyAgICAgICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBSSXUz MiI6IGdldHRpbmcgdmNwdSBzY2hlZCBydGRzIiwgZG9taWQpOwogICAgICAgICByYyA9IEVSUk9S X0ZBSUw7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KQEAgLTU0MzMsNyArNTQ1Nyw3IEBAIHN0 YXRpYyBpbnQgc2NoZWRfcnRkc192Y3B1X2dldF9hbGwobGlieGxfX2djICpnYywgdWludDMyX3Qg ZG9taWQsCiAKICAgICByID0geGNfZG9tYWluX2dldGluZm8oQ1RYLT54Y2gsIGRvbWlkLCAxLCAm aW5mbyk7CiAgICAgaWYgKHIgPCAwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJnZXR0aW5nIGRv bWFpbiBpbmZvIik7CisgICAgICAgIExPR0UoRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBnZXR0 aW5nIGRvbWFpbiBpbmZvIiwgZG9taWQpOwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAg ICAgIGdvdG8gb3V0OwogICAgIH0KQEAgLTU0NTAsNyArNTQ3NCw3IEBAIHN0YXRpYyBpbnQgc2No ZWRfcnRkc192Y3B1X2dldF9hbGwobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAKICAg ICByID0geGNfc2NoZWRfcnRkc192Y3B1X2dldChDVFgtPnhjaCwgZG9taWQsIHZjcHVzLCBudW1f dmNwdXMpOwogICAgIGlmIChyICE9IDApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgImdldHRpbmcg dmNwdSBzY2hlZCBydGRzIik7CisgICAgICAgIExPR0UoRVJST1IsICJEb21haW4gJSJQUkl1MzIi OiBnZXR0aW5nIHZjcHUgc2NoZWQgcnRkcyIsIGRvbWlkKTsKICAgICAgICAgcmMgPSBFUlJPUl9G QUlMOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CkBAIC01NDgxLDcgKzU1MDUsNyBAQCBzdGF0 aWMgaW50IHNjaGVkX3J0ZHNfdmNwdV9zZXQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQs CiAKICAgICByID0geGNfZG9tYWluX2dldGluZm8oQ1RYLT54Y2gsIGRvbWlkLCAxLCAmaW5mbyk7 CiAgICAgaWYgKHIgPCAwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJnZXR0aW5nIGRvbWFpbiBp bmZvIik7CisgICAgICAgIExPR0UoRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBnZXR0aW5nIGRv bWFpbiBpbmZvIiwgZG9taWQpOwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdv dG8gb3V0OwogICAgIH0KQEAgLTU0OTQsOCArNTUxOCw4IEBAIHN0YXRpYyBpbnQgc2NoZWRfcnRk c192Y3B1X3NldChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICBmb3IgKGkgPSAw OyBpIDwgc2NpbmZvLT5udW1fdmNwdXM7IGkrKykgewogICAgICAgICBpZiAoc2NpbmZvLT52Y3B1 c1tpXS52Y3B1aWQgPCAwIHx8CiAgICAgICAgICAgICBzY2luZm8tPnZjcHVzW2ldLnZjcHVpZCA+ IG1heF92Y3B1aWQpIHsKLSAgICAgICAgICAgIExPRyhFUlJPUiwgIkludmFsaWQgVkNQVSAlZDog dmFsaWQgcmFuZ2UgaXMgWzAsICVkXSIsCi0gICAgICAgICAgICAgICAgICAgICAgIHNjaW5mby0+ dmNwdXNbaV0udmNwdWlkLCBtYXhfdmNwdWlkKTsKKyAgICAgICAgICAgIExPRyhFUlJPUiwgIkRv bWFpbiAlIlBSSXUzMiI6IEludmFsaWQgVkNQVSAlZDogdmFsaWQgcmFuZ2UgaXMgWzAsICVkXSIs CisgICAgICAgICAgICAgICAgICAgICAgIGRvbWlkLCBzY2luZm8tPnZjcHVzW2ldLnZjcHVpZCwg bWF4X3ZjcHVpZCk7CiAgICAgICAgICAgICByYyA9IEVSUk9SX0lOVkFMOwogICAgICAgICAgICAg Z290byBvdXQ7CiAgICAgICAgIH0KQEAgLTU1MTYsNyArNTU0MCw3IEBAIHN0YXRpYyBpbnQgc2No ZWRfcnRkc192Y3B1X3NldChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICByID0g eGNfc2NoZWRfcnRkc192Y3B1X3NldChDVFgtPnhjaCwgZG9taWQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmNwdXMsIHNjaW5mby0+bnVtX3ZjcHVzKTsKICAgICBpZiAociAhPSAw KSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJzZXR0aW5nIHZjcHUgc2NoZWQgcnRkcyIpOworICAg ICAgICBMT0dFKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogc2V0dGluZyB2Y3B1IHNjaGVkIHJ0 ZHMiLCBkb21pZCk7CiAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgZ290byBvdXQ7 CiAgICAgfQpAQCAtNTUzOCw3ICs1NTYyLDcgQEAgc3RhdGljIGludCBzY2hlZF9ydGRzX3ZjcHVf c2V0X2FsbChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKIAogICAgIHIgPSB4Y19kb21h aW5fZ2V0aW5mbyhDVFgtPnhjaCwgZG9taWQsIDEsICZpbmZvKTsKICAgICBpZiAociA8IDApIHsK LSAgICAgICAgTE9HRShFUlJPUiwgImdldHRpbmcgZG9tYWluIGluZm8iKTsKKyAgICAgICAgTE9H RShFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IGdldHRpbmcgZG9tYWluIGluZm8iLCBkb21pZCk7 CiAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQpAQCAt NTU2NCw3ICs1NTg4LDcgQEAgc3RhdGljIGludCBzY2hlZF9ydGRzX3ZjcHVfc2V0X2FsbChsaWJ4 bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICByID0geGNfc2NoZWRfcnRkc192Y3B1X3Nl dChDVFgtPnhjaCwgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmNwdXMs IG51bV92Y3B1cyk7CiAgICAgaWYgKHIgIT0gMCkgewotICAgICAgICBMT0dFKEVSUk9SLCAic2V0 dGluZyB2Y3B1IHNjaGVkIHJ0ZHMiKTsKKyAgICAgICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBS SXUzMiI6IHNldHRpbmcgdmNwdSBzY2hlZCBydGRzIiwgZG9taWQpOwogICAgICAgICByYyA9IEVS Uk9SX0ZBSUw7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KQEAgLTU1ODEsNyArNTYwNSw3IEBA IHN0YXRpYyBpbnQgc2NoZWRfcnRkc19kb21haW5fZ2V0KGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90 IGRvbWlkLAogCiAgICAgcmMgPSB4Y19zY2hlZF9ydGRzX2RvbWFpbl9nZXQoQ1RYLT54Y2gsIGRv bWlkLCAmc2RvbSk7CiAgICAgaWYgKHJjICE9IDApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgImdl dHRpbmcgZG9tYWluIHNjaGVkIHJ0ZHMiKTsKKyAgICAgICAgTE9HRShFUlJPUiwgIkRvbWFpbiAl IlBSSXUzMiI6IGdldHRpbmcgZG9tYWluIHNjaGVkIHJ0ZHMiLCBkb21pZCk7CiAgICAgICAgIHJl dHVybiBFUlJPUl9GQUlMOwogICAgIH0KIApAQCAtNTYwMiw3ICs1NjI2LDcgQEAgc3RhdGljIGlu dCBzY2hlZF9ydGRzX2RvbWFpbl9zZXQobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAK ICAgICByYyA9IHhjX3NjaGVkX3J0ZHNfZG9tYWluX2dldChDVFgtPnhjaCwgZG9taWQsICZzZG9t KTsKICAgICBpZiAocmMgIT0gMCkgewotICAgICAgICBMT0dFKEVSUk9SLCAiZ2V0dGluZyBkb21h aW4gc2NoZWQgcnRkcyIpOworICAgICAgICBMT0dFKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjog Z2V0dGluZyBkb21haW4gc2NoZWQgcnRkcyIsIGRvbWlkKTsKICAgICAgICAgcmV0dXJuIEVSUk9S X0ZBSUw7CiAgICAgfQogICAgIGlmIChzY2luZm8tPnBlcmlvZCAhPSBMSUJYTF9ET01BSU5fU0NI RURfUEFSQU1fUEVSSU9EX0RFRkFVTFQpCkBAIC01NjE0LDcgKzU2MzgsNyBAQCBzdGF0aWMgaW50 IHNjaGVkX3J0ZHNfZG9tYWluX3NldChsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKIAog ICAgIHJjID0geGNfc2NoZWRfcnRkc19kb21haW5fc2V0KENUWC0+eGNoLCBkb21pZCwgJnNkb20p OwogICAgIGlmIChyYyA8IDApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgInNldHRpbmcgZG9tYWlu IHNjaGVkIHJ0ZHMiKTsKKyAgICAgICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IHNl dHRpbmcgZG9tYWluIHNjaGVkIHJ0ZHMiLCBkb21pZCk7CiAgICAgICAgIHJldHVybiBFUlJPUl9G QUlMOwogICAgIH0KIApAQCAtNTYzMyw3ICs1NjU3LDcgQEAgaW50IGxpYnhsX2RvbWFpbl9zY2hl ZF9wYXJhbXNfc2V0KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKIAogICAgIHN3aXRj aCAoc2NoZWQpIHsKICAgICBjYXNlIExJQlhMX1NDSEVEVUxFUl9TRURGOgotICAgICAgICBMT0co RVJST1IsICJTRURGIHNjaGVkdWxlciBubyBsb25nZXIgYXZhaWxhYmxlIik7CisgICAgICAgIExP RyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IFNFREYgc2NoZWR1bGVyIG5vIGxvbmdlciBhdmFp bGFibGUiLCBkb21pZCk7CiAgICAgICAgIHJldD1FUlJPUl9GRUFUVVJFX1JFTU9WRUQ7CiAgICAg ICAgIGJyZWFrOwogICAgIGNhc2UgTElCWExfU0NIRURVTEVSX0NSRURJVDoKQEAgLTU2NDksNyAr NTY3Myw3IEBAIGludCBsaWJ4bF9kb21haW5fc2NoZWRfcGFyYW1zX3NldChsaWJ4bF9jdHggKmN0 eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgIHJldD1zY2hlZF9ydGRzX2RvbWFpbl9zZXQoZ2Ms IGRvbWlkLCBzY2luZm8pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBM T0coRVJST1IsICJVbmtub3duIHNjaGVkdWxlciIpOworICAgICAgICBMT0coRVJST1IsICJEb21h aW4gJSJQUkl1MzIiOiBVbmtub3duIHNjaGVkdWxlciIsIGRvbWlkKTsKICAgICAgICAgcmV0PUVS Uk9SX0lOVkFMOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC01NjcwLDIwICs1Njk0LDIxIEBA IGludCBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtc19zZXQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90 IGRvbWlkLAogCiAgICAgc3dpdGNoIChzY2hlZCkgewogICAgIGNhc2UgTElCWExfU0NIRURVTEVS X1NFREY6Ci0gICAgICAgIExPRyhFUlJPUiwgIlNFREYgc2NoZWR1bGVyIG5vIGxvbmdlciBhdmFp bGFibGUiKTsKKyAgICAgICAgTE9HKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogU0VERiBzY2hl ZHVsZXIgbm8gbG9uZ2VyIGF2YWlsYWJsZSIsIGRvbWlkKTsKICAgICAgICAgcmMgPSBFUlJPUl9G RUFUVVJFX1JFTU9WRUQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTElCWExfU0NIRURVTEVS X0NSRURJVDoKICAgICBjYXNlIExJQlhMX1NDSEVEVUxFUl9DUkVESVQyOgogICAgIGNhc2UgTElC WExfU0NIRURVTEVSX0FSSU5DNjUzOgotICAgICAgICBMT0coRVJST1IsICJwZXItVkNQVSBwYXJh bWV0ZXIgc2V0dGluZyBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIHNjaGVkdWxlciIpOworICAgICAg ICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBwZXItVkNQVSBwYXJhbWV0ZXIgc2V0dGlu ZyBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIHNjaGVkdWxlciIsCisgICAgICAgICAgICBkb21pZCk7 CiAgICAgICAgIHJjID0gRVJST1JfSU5WQUw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTElC WExfU0NIRURVTEVSX1JURFM6CiAgICAgICAgIHJjID0gc2NoZWRfcnRkc192Y3B1X3NldChnYywg ZG9taWQsIHNjaW5mbyk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIExP RyhFUlJPUiwgIlVua25vd24gc2NoZWR1bGVyIik7CisgICAgICAgIExPRyhFUlJPUiwgIkRvbWFp biAlIlBSSXUzMiI6IFVua25vd24gc2NoZWR1bGVyIiwgZG9taWQpOwogICAgICAgICByYyA9IEVS Uk9SX0lOVkFMOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC01NzA0LDIwICs1NzI5LDIxIEBA IGludCBsaWJ4bF92Y3B1X3NjaGVkX3BhcmFtc19zZXRfYWxsKGxpYnhsX2N0eCAqY3R4LCB1aW50 MzJfdCBkb21pZCwKIAogICAgIHN3aXRjaCAoc2NoZWQpIHsKICAgICBjYXNlIExJQlhMX1NDSEVE VUxFUl9TRURGOgotICAgICAgICBMT0coRVJST1IsICJTRURGIHNjaGVkdWxlciBubyBsb25nZXIg YXZhaWxhYmxlIik7CisgICAgICAgIExPRyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IFNFREYg c2NoZWR1bGVyIG5vIGxvbmdlciBhdmFpbGFibGUiLCBkb21pZCk7CiAgICAgICAgIHJjID0gRVJS T1JfRkVBVFVSRV9SRU1PVkVEOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExJQlhMX1NDSEVE VUxFUl9DUkVESVQ6CiAgICAgY2FzZSBMSUJYTF9TQ0hFRFVMRVJfQ1JFRElUMjoKICAgICBjYXNl IExJQlhMX1NDSEVEVUxFUl9BUklOQzY1MzoKLSAgICAgICAgTE9HKEVSUk9SLCAicGVyLVZDUFUg cGFyYW1ldGVyIHNldHRpbmcgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBzY2hlZHVsZXIiKTsKKyAg ICAgICAgTE9HKEVSUk9SLCAiRG9tYWluICUiUFJJdTMyIjogcGVyLVZDUFUgcGFyYW1ldGVyIHNl dHRpbmcgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBzY2hlZHVsZXIiLAorICAgICAgICAgICAgZG9t aWQpOwogICAgICAgICByYyA9IEVSUk9SX0lOVkFMOwogICAgICAgICBicmVhazsKICAgICBjYXNl IExJQlhMX1NDSEVEVUxFUl9SVERTOgogICAgICAgICByYyA9IHNjaGVkX3J0ZHNfdmNwdV9zZXRf YWxsKGdjLCBkb21pZCwgc2NpbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAg ICAgICAgTE9HKEVSUk9SLCAiVW5rbm93biBzY2hlZHVsZXIiKTsKKyAgICAgICAgTE9HKEVSUk9S LCAiRG9tYWluICUiUFJJdTMyIjogVW5rbm93biBzY2hlZHVsZXIiLCBkb21pZCk7CiAgICAgICAg IHJjID0gRVJST1JfSU5WQUw7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTU3MzgsNyArNTc2 NCw3IEBAIGludCBsaWJ4bF9kb21haW5fc2NoZWRfcGFyYW1zX2dldChsaWJ4bF9jdHggKmN0eCwg dWludDMyX3QgZG9taWQsCiAKICAgICBzd2l0Y2ggKHNjaW5mby0+c2NoZWQpIHsKICAgICBjYXNl IExJQlhMX1NDSEVEVUxFUl9TRURGOgotICAgICAgICBMT0coRVJST1IsICJTRURGIHNjaGVkdWxl ciBubyBsb25nZXIgYXZhaWxhYmxlIik7CisgICAgICAgIExPRyhFUlJPUiwgIkRvbWFpbiAlIlBS SXUzMiI6IFNFREYgc2NoZWR1bGVyIG5vIGxvbmdlciBhdmFpbGFibGUiLCBkb21pZCk7CiAgICAg ICAgIHJldD1FUlJPUl9GRUFUVVJFX1JFTU9WRUQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug TElCWExfU0NIRURVTEVSX0NSRURJVDoKQEAgLTU3NTEsNyArNTc3Nyw3IEBAIGludCBsaWJ4bF9k b21haW5fc2NoZWRfcGFyYW1zX2dldChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAg ICAgICAgIHJldD1zY2hlZF9ydGRzX2RvbWFpbl9nZXQoZ2MsIGRvbWlkLCBzY2luZm8pOwogICAg ICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBMT0coRVJST1IsICJVbmtub3duIHNj aGVkdWxlciIpOworICAgICAgICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBVbmtub3du IHNjaGVkdWxlciIsIGRvbWlkKTsKICAgICAgICAgcmV0PUVSUk9SX0lOVkFMOwogICAgICAgICBi cmVhazsKICAgICB9CkBAIC01NzcwLDIwICs1Nzk2LDIxIEBAIGludCBsaWJ4bF92Y3B1X3NjaGVk X3BhcmFtc19nZXQobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogCiAgICAgc3dpdGNo IChzY2luZm8tPnNjaGVkKSB7CiAgICAgY2FzZSBMSUJYTF9TQ0hFRFVMRVJfU0VERjoKLSAgICAg ICAgTE9HKEVSUk9SLCAiU0VERiBzY2hlZHVsZXIgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZSIpOwor ICAgICAgICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBTRURGIHNjaGVkdWxlciBpcyBu byBsb25nZXIgYXZhaWxhYmxlIiwgZG9taWQpOwogICAgICAgICByYyA9IEVSUk9SX0ZFQVRVUkVf UkVNT1ZFRDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMSUJYTF9TQ0hFRFVMRVJfQ1JFRElU OgogICAgIGNhc2UgTElCWExfU0NIRURVTEVSX0NSRURJVDI6CiAgICAgY2FzZSBMSUJYTF9TQ0hF RFVMRVJfQVJJTkM2NTM6Ci0gICAgICAgIExPRyhFUlJPUiwgInBlci1WQ1BVIHBhcmFtZXRlciBn ZXR0aW5nIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgc2NoZWR1bGVyIik7CisgICAgICAgIExPRyhF UlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IHBlci1WQ1BVIHBhcmFtZXRlciBnZXR0aW5nIG5vdCBz dXBwb3J0ZWQgZm9yIHRoaXMgc2NoZWR1bGVyIiwKKyAgICAgICAgICAgIGRvbWlkKTsKICAgICAg ICAgcmMgPSBFUlJPUl9JTlZBTDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMSUJYTF9TQ0hF RFVMRVJfUlREUzoKICAgICAgICAgcmMgPSBzY2hlZF9ydGRzX3ZjcHVfZ2V0KGdjLCBkb21pZCwg c2NpbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgTE9HKEVSUk9S LCAiVW5rbm93biBzY2hlZHVsZXIiKTsKKyAgICAgICAgTE9HKEVSUk9SLCAiRG9tYWluICUiUFJJ dTMyIjogVW5rbm93biBzY2hlZHVsZXIiLCBkb21pZCk7CiAgICAgICAgIHJjID0gRVJST1JfSU5W QUw7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTU4MDIsMjAgKzU4MjksMjAgQEAgaW50IGxp YnhsX3ZjcHVfc2NoZWRfcGFyYW1zX2dldF9hbGwobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRv bWlkLAogCiAgICAgc3dpdGNoIChzY2luZm8tPnNjaGVkKSB7CiAgICAgY2FzZSBMSUJYTF9TQ0hF RFVMRVJfU0VERjoKLSAgICAgICAgTE9HKEVSUk9SLCAiU0VERiBzY2hlZHVsZXIgaXMgbm8gbG9u Z2VyIGF2YWlsYWJsZSIpOworICAgICAgICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBT RURGIHNjaGVkdWxlciBpcyBubyBsb25nZXIgYXZhaWxhYmxlIiwgZG9taWQpOwogICAgICAgICBy YyA9IEVSUk9SX0ZFQVRVUkVfUkVNT1ZFRDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMSUJY TF9TQ0hFRFVMRVJfQ1JFRElUOgogICAgIGNhc2UgTElCWExfU0NIRURVTEVSX0NSRURJVDI6CiAg ICAgY2FzZSBMSUJYTF9TQ0hFRFVMRVJfQVJJTkM2NTM6Ci0gICAgICAgIExPRyhFUlJPUiwgInBl ci1WQ1BVIHBhcmFtZXRlciBnZXR0aW5nIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgc2NoZWR1bGVy Iik7CisgICAgICAgIExPRyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IHBlci1WQ1BVIHBhcmFt ZXRlciBnZXR0aW5nIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgc2NoZWR1bGVyIiwgZG9taWQpOwog ICAgICAgICByYyA9IEVSUk9SX0lOVkFMOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExJQlhM X1NDSEVEVUxFUl9SVERTOgogICAgICAgICByYyA9IHNjaGVkX3J0ZHNfdmNwdV9nZXRfYWxsKGdj LCBkb21pZCwgc2NpbmZvKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAg TE9HKEVSUk9SLCAiVW5rbm93biBzY2hlZHVsZXIiKTsKKyAgICAgICAgTE9HKEVSUk9SLCAiRG9t YWluICUiUFJJdTMyIjogVW5rbm93biBzY2hlZHVsZXIiLCBkb21pZCk7CiAgICAgICAgIHJjID0g RVJST1JfSU5WQUw7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTU4ODcsOCArNTkxNCw4IEBA IGludCBsaWJ4bF9zZW5kX3RyaWdnZXIobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAog ICAgIH0KIAogICAgIGlmIChyYyAhPSAwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJTZW5kIHRy aWdnZXIgJyVzJyBmYWlsZWQiLAotICAgICAgICAgICAgIGxpYnhsX3RyaWdnZXJfdG9fc3RyaW5n KHRyaWdnZXIpKTsKKyAgICAgICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IFNlbmQg dHJpZ2dlciAnJXMnIGZhaWxlZCIsCisgICAgICAgICAgICAgZG9taWQsIGxpYnhsX3RyaWdnZXJf dG9fc3RyaW5nKHRyaWdnZXIpKTsKICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgIH0KIApA QCAtNTk5Niw3ICs2MDIzLDcgQEAgdWludDMyX3QgbGlieGxfdm1fZ2V0X3N0YXJ0X3RpbWUobGli eGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkKQogICAgIHN0YXJ0X3RpbWUgPSBsaWJ4bF9feHNf cmVhZCgKICAgICAgICAgZ2MsIFhCVF9OVUxMLCBHQ1NQUklOVEYoIiVzL3N0YXJ0X3RpbWUiLCB2 bV9wYXRoKSk7CiAgICAgaWYgKHN0YXJ0X3RpbWUgPT0gTlVMTCkgewotICAgICAgICBMT0dFVihF UlJPUiwgLTEsICJDYW4ndCBnZXQgc3RhcnQgdGltZSBvZiBkb21haW4gJyVkJyIsIGRvbWlkKTsK KyAgICAgICAgTE9HRVYoRVJST1IsIC0xLCAiRG9tYWluICUiUFJJdTMyIjogQ2FuJ3QgZ2V0IHN0 YXJ0IHRpbWUgb2YgZG9tYWluIiwgZG9taWQpOwogICAgICAgICByZXQgPSAtMTsKICAgICB9ZWxz ZXsKICAgICAgICAgcmV0ID0gc3RydG91bChzdGFydF90aW1lLCBOVUxMLCAxMCk7CkBAIC02MDE0 LDcgKzYwNDEsNyBAQCBjaGFyICpsaWJ4bF90bWVtX2xpc3QobGlieGxfY3R4ICpjdHgsIHVpbnQz Ml90IGRvbWlkLCBpbnQgdXNlX2xvbmcpCiAgICAgciA9IHhjX3RtZW1fY29udHJvbChjdHgtPnhj aCwgLTEsIFhFTl9TWVNDVExfVE1FTV9PUF9MSVNULCBkb21pZCwgMzI3NjgsCiAgICAgICAgICAg ICAgICAgICAgICAgICB1c2VfbG9uZywgX2J1Zik7CiAgICAgaWYgKHIgPCAwKSB7Ci0gICAgICAg IExPR0UoRVJST1IsICJDYW4gbm90IGdldCB0bWVtIGxpc3QiKTsKKyAgICAgICAgTE9HRShFUlJP UiwgIkRvbWFpbiAlIlBSSXUzMiI6IENhbiBub3QgZ2V0IHRtZW0gbGlzdCIsIGRvbWlkKTsKICAg ICAgICAgR0NfRlJFRTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNjAzMSw3ICs2 MDU4LDcgQEAgaW50IGxpYnhsX3RtZW1fZnJlZXplKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBk b21pZCkKICAgICByID0geGNfdG1lbV9jb250cm9sKGN0eC0+eGNoLCAtMSwgWEVOX1NZU0NUTF9U TUVNX09QX0ZSRUVaRSwgZG9taWQsIDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM KTsKICAgICBpZiAociA8IDApIHsKLSAgICAgICAgTE9HRShFUlJPUiwgIkNhbiBub3QgZnJlZXpl IHRtZW0gcG9vbHMiKTsKKyAgICAgICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IENh biBub3QgZnJlZXplIHRtZW0gcG9vbHMiLCBkb21pZCk7CiAgICAgICAgIHJjID0gRVJST1JfRkFJ TDsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQpAQCAtNjA1MCw3ICs2MDc3LDcgQEAgaW50IGxp YnhsX3RtZW1fdGhhdyhsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQpCiAgICAgciA9IHhj X3RtZW1fY29udHJvbChjdHgtPnhjaCwgLTEsIFhFTl9TWVNDVExfVE1FTV9PUF9USEFXLCBkb21p ZCwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgIGlmIChyIDwgMCkg ewotICAgICAgICBMT0dFKEVSUk9SLCAiQ2FuIG5vdCB0aGF3IHRtZW0gcG9vbHMiKTsKKyAgICAg ICAgTE9HRShFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IENhbiBub3QgdGhhdyB0bWVtIHBvb2xz IiwgZG9taWQpOwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdvdG8gb3V0Owog ICAgIH0KQEAgLTYwODAsMTMgKzYxMDcsMTQgQEAgaW50IGxpYnhsX3RtZW1fc2V0KGxpYnhsX2N0 eCAqY3R4LCB1aW50MzJfdCBkb21pZCwgY2hhciogbmFtZSwgdWludDMyX3Qgc2V0KQogICAgIEdD X0lOSVQoY3R4KTsKIAogICAgIGlmIChzdWJvcCA9PSAtMSkgewotICAgICAgICBMT0dFVihFUlJP UiwgLTEsICJJbnZhbGlkIHNldCwgdmFsaWQgc2V0cyBhcmUgPHdlaWdodHxjYXB8Y29tcHJlc3M+ Iik7CisgICAgICAgIExPR0VWKEVSUk9SLCAtMSwgIkRvbWFpbiAlIlBSSXUzMiI6IEludmFsaWQg c2V0LCB2YWxpZCBzZXRzIGFyZSA8d2VpZ2h0fGNhcHxjb21wcmVzcz4iLAorICAgICAgICAgICAg ICBkb21pZCk7CiAgICAgICAgIHJjID0gRVJST1JfSU5WQUw7CiAgICAgICAgIGdvdG8gb3V0Owog ICAgIH0KICAgICByID0geGNfdG1lbV9jb250cm9sKGN0eC0+eGNoLCAtMSwgc3Vib3AsIGRvbWlk LCBzZXQsIDAsIE5VTEwpOwogICAgIGlmIChyIDwgMCkgewotICAgICAgICBMT0dFKEVSUk9SLCAi Q2FuIG5vdCBzZXQgdG1lbSAlcyIsIG5hbWUpOworICAgICAgICBMT0dFKEVSUk9SLCAiRG9tYWlu ICUiUFJJdTMyIjogQ2FuIG5vdCBzZXQgdG1lbSAlcyIsIGRvbWlkLCBuYW1lKTsKICAgICAgICAg cmMgPSBFUlJPUl9GQUlMOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CkBAIC02MTA1LDcgKzYx MzMsNyBAQCBpbnQgbGlieGxfdG1lbV9zaGFyZWRfYXV0aChsaWJ4bF9jdHggKmN0eCwgdWludDMy X3QgZG9taWQsCiAKICAgICByID0geGNfdG1lbV9hdXRoKGN0eC0+eGNoLCBkb21pZCwgdXVpZCwg YXV0aCk7CiAgICAgaWYgKHIgPCAwKSB7Ci0gICAgICAgIExPR0UoRVJST1IsICJDYW4gbm90IHNl dCB0bWVtIHNoYXJlZCBhdXRoIik7CisgICAgICAgIExPR0UoRVJST1IsICJEb21haW4gJSJQUkl1 MzIiOiBDYW4gbm90IHNldCB0bWVtIHNoYXJlZCBhdXRoIiwgZG9taWQpOwogICAgICAgICByYyA9 IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KQEAgLTY0NTAsNyArNjQ3OCw4 IEBAIGludCBsaWJ4bF9jcHVwb29sX21vdmVkb21haW4obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90 IHBvb2xpZCwgdWludDMyX3QgZG9taWQpCiAKICAgICByYyA9IHhjX2NwdXBvb2xfbW92ZWRvbWFp bihjdHgtPnhjaCwgcG9vbGlkLCBkb21pZCk7CiAgICAgaWYgKHJjKSB7Ci0gICAgICAgIExPR0VW KEVSUk9SLCByYywgIkVycm9yIG1vdmluZyBkb21haW4gdG8gY3B1cG9vbCIpOworICAgICAgICBM T0dFVihFUlJPUiwgcmMsICJEb21haW4gJSJQUkl1MzIiOiBFcnJvciBtb3ZpbmcgZG9tYWluIHRv IGNwdXBvb2wiLAorICAgICAgICAgICAgICBkb21pZCk7CiAgICAgICAgIEdDX0ZSRUU7CiAgICAg ICAgIHJldHVybiBFUlJPUl9GQUlMOwogICAgIH0KQEAgLTY1NzgsNyArNjYwNyw3IEBAIHN0YXRp YyBpbnQgbGlieGxfX3VwZGF0ZV9hdmFpbF92Y3B1c19xbXAobGlieGxfX2djICpnYywgdWludDMy X3QgZG9taWQsCiAKICAgICByYyA9IGxpYnhsX19xbXBfcXVlcnlfY3B1cyhnYywgZG9taWQsIG1h cCk7CiAgICAgaWYgKHJjKSB7Ci0gICAgICAgIExPRyhFUlJPUiwgImZhaWwgdG8gZ2V0IG51bWJl ciBvZiBjcHVzIGZvciBkb21haW4gJWQiLCBkb21pZCk7CisgICAgICAgIExPRyhFUlJPUiwgIkRv bWFpbiAlIlBSSXUzMiI6IGZhaWwgdG8gZ2V0IG51bWJlciBvZiBjcHVzIiwgZG9taWQpOwogICAg ICAgICBnb3RvIG91dDsKICAgICB9CiAKQEAgLTY2MzIsNyArNjY2MSw3IEBAIGludCBsaWJ4bF9y ZXRyaWV2ZV9kb21haW5fY29uZmlndXJhdGlvbihsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9t aWQsCiAKICAgICByYyA9IGxpYnhsX19nZXRfZG9tYWluX2NvbmZpZ3VyYXRpb24oZ2MsIGRvbWlk LCBkX2NvbmZpZyk7CiAgICAgaWYgKHJjKSB7Ci0gICAgICAgIExPRyhFUlJPUiwgImZhaWwgdG8g Z2V0IGRvbWFpbiBjb25maWd1cmF0aW9uIGZvciBkb21haW4gJWQiLCBkb21pZCk7CisgICAgICAg IExPRyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IGZhaWwgdG8gZ2V0IGRvbWFpbiBjb25maWd1 cmF0aW9uIiwgZG9taWQpOwogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdvdG8g b3V0OwogICAgIH0KQEAgLTY2NDIsNyArNjY3MSw3IEBAIGludCBsaWJ4bF9yZXRyaWV2ZV9kb21h aW5fY29uZmlndXJhdGlvbihsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAg IGNoYXIgKmRvbW5hbWU7CiAgICAgICAgIGRvbW5hbWUgPSBsaWJ4bF9kb21pZF90b19uYW1lKGN0 eCwgZG9taWQpOwogICAgICAgICBpZiAoIWRvbW5hbWUpIHsKLSAgICAgICAgICAgIExPRyhFUlJP UiwgImZhaWwgdG8gZ2V0IGRvbWFpbiBuYW1lIGZvciBkb21haW4gJWQiLCBkb21pZCk7CisgICAg ICAgICAgICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1MzIiOiBmYWlsIHRvIGdldCBkb21haW4g bmFtZSIsIGRvbWlkKTsKICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICB9CiAgICAgICAg IGZyZWUoZF9jb25maWctPmNfaW5mby5uYW1lKTsKQEAgLTY2NTUsNyArNjY4NCw3IEBAIGludCBs aWJ4bF9yZXRyaWV2ZV9kb21haW5fY29uZmlndXJhdGlvbihsaWJ4bF9jdHggKmN0eCwgdWludDMy X3QgZG9taWQsCiAgICAgICAgIGxpYnhsX2RvbWluZm9faW5pdCgmaW5mbyk7CiAgICAgICAgIHJj ID0gbGlieGxfZG9tYWluX2luZm8oY3R4LCAmaW5mbywgZG9taWQpOwogICAgICAgICBpZiAocmMp IHsKLSAgICAgICAgICAgIExPRyhFUlJPUiwgImZhaWwgdG8gZ2V0IGRvbWFpbiBpbmZvIGZvciBk b21haW4gJWQiLCBkb21pZCk7CisgICAgICAgICAgICBMT0coRVJST1IsICJEb21haW4gJSJQUkl1 MzIiOiBmYWlsIHRvIGdldCBkb21haW4gaW5mbyIsIGRvbWlkKTsKICAgICAgICAgICAgIGxpYnhs X2RvbWluZm9fZGlzcG9zZSgmaW5mbyk7CiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAg fQpAQCAtNjcwMSw3ICs2NzMwLDcgQEAgaW50IGxpYnhsX3JldHJpZXZlX2RvbWFpbl9jb25maWd1 cmF0aW9uKGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgfQogCiAgICAg ICAgIGlmIChyYykgewotICAgICAgICAgICAgTE9HKEVSUk9SLCAiZmFpbCB0byB1cGRhdGUgYXZh aWxhYmxlIGNwdSBtYXAgZm9yIGRvbWFpbiAlZCIsIGRvbWlkKTsKKyAgICAgICAgICAgIExPRyhF UlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IGZhaWwgdG8gdXBkYXRlIGF2YWlsYWJsZSBjcHUgbWFw IiwgZG9taWQpOwogICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC02 NzIzLDcgKzY3NTIsNyBAQCBpbnQgbGlieGxfcmV0cmlldmVfZG9tYWluX2NvbmZpZ3VyYXRpb24o bGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAvKiAidGFyZ2V0IiAqLwog ICAgICAgICByYyA9IGxpYnhsX19nZXRfbWVtb3J5X3RhcmdldChnYywgZG9taWQsICZ0YXJnZXRf bWVta2IsICZtYXhfbWVta2IpOwogICAgICAgICBpZiAocmMpIHsKLSAgICAgICAgICAgIExPRyhF UlJPUiwgImZhaWwgdG8gZ2V0IG1lbW9yeSB0YXJnZXQgZm9yIGRvbWFpbiAlZCIsIGRvbWlkKTsK KyAgICAgICAgICAgIExPRyhFUlJPUiwgIkRvbWFpbiAlIlBSSXUzMiI6IGZhaWwgdG8gZ2V0IG1l bW9yeSB0YXJnZXQiLCBkb21pZCk7CiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgfQog CkBAIC02Nzc0LDggKzY4MDMsOCBAQCBpbnQgbGlieGxfcmV0cmlldmVfZG9tYWluX2NvbmZpZ3Vy YXRpb24obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgbnVtX2Rl diA9IGxpYnhsX19kZXZpY2VfdHlwZV9nZXRfbnVtKGR0LCBkX2NvbmZpZyk7CiAgICAgICAgICAg ICBwID0gZHQtPmxpc3QoQ1RYLCBkb21pZCwgJm51bSk7CiAgICAgICAgICAgICBpZiAocCA9PSBO VUxMKSB7Ci0gICAgICAgICAgICAgICAgTE9HKERFQlVHLCAibm8gJXMgZnJvbSB4ZW5zdG9yZSBm b3IgZG9tYWluICVkIiwKLSAgICAgICAgICAgICAgICAgICAgZHQtPnR5cGUsIGRvbWlkKTsKKyAg ICAgICAgICAgICAgICBMT0coREVCVUcsICJEb21haW4gJSJQUkl1MzIiOiBubyAlcyBmcm9tIHhl bnN0b3JlIiwKKyAgICAgICAgICAgICAgICAgICAgZG9taWQsIGR0LT50eXBlKTsKICAgICAgICAg ICAgIH0KICAgICAgICAgICAgIGRldnMgPSBsaWJ4bF9fZGV2aWNlX3R5cGVfZ2V0X3B0cihkdCwg ZF9jb25maWcpOwogCkBAIC02NzkzLDcgKzY4MjIsOCBAQCBpbnQgbGlieGxfcmV0cmlldmVfZG9t YWluX2NvbmZpZ3VyYXRpb24obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAgICAg ICAgICAgICAgICAgICAgICAgZHQtPm1lcmdlKGN0eCwgcCArIGR0LT5kZXZfZWxlbV9zaXplICog aiwgcSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgLyogbm90IGZv dW5kIGluIHhlbnN0b3JlICovCiAgICAgICAgICAgICAgICAgICAgIExPRyhXQVJOLAotICAgICAg ICAgICAgICAgICAgICAgICAgIkRldmljZSBwcmVzZW50IGluIEpTT04gYnV0IG5vdCBpbiB4ZW5z dG9yZSwgaWdub3JlZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgIkRvbWFpbiAlIlBSSXUz MiI6IERldmljZSBwcmVzZW50IGluIEpTT04gYnV0IG5vdCBpbiB4ZW5zdG9yZSwgaWdub3JlZCIs CisgICAgICAgICAgICAgICAgICAgICAgICBkb21pZCk7CiAKICAgICAgICAgICAgICAgICAgICAg ZHQtPmRpc3Bvc2UocSk7CiAKLS0gCjIuMTAuMAoK --=-bBTzWjC3GIgXDS3fGhlX Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg== --=-bBTzWjC3GIgXDS3fGhlX--