From: marko.makela Date: April 5 2011 11:33am Subject: bzr push into mysql-5.5-innodb branch (marko.makela:3359) List-Archive: http://lists.mysql.com/commits/134709 Message-Id: <201104051133.p35BXcu8019888@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1964802616==" --===============1964802616== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDMzNTkgTWFya28gTcOka2Vsw6QJMjAxMS0wNC0wNSBbbWVyZ2VdCiAgICAgIE1lcmdlIGZyb20g bXlzcWwtNS41LWlubm9kYiB0byBsb2NhbCB0cmVlLgoKICAgIGFkZGVkOgogICAgICBteXNxbC10 ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9idWc1OTQxMC5yZXN1bHQKICAgICAgbXlzcWwtdGVz dC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTk0MTAudGVzdAo9PT0gbW9kaWZpZWQgZmlsZSAn c3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGZsdS5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J1 Zi9idWYwZmx1LmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNTA4MzAzOC1o Z2E5ZXE4anIzazloNnk0CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBmbHUuYwlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTExMTg1NC0yeDdjbXNsM2R6cjUzMHVl CkBAIC0xNzE2LDcgKzE3MTYsNyBAQCBidWZfZmx1c2hfYmF0Y2goCiAJdXRfYWQoZmx1c2hfdHlw ZSA9PSBCVUZfRkxVU0hfTFJVIHx8IGZsdXNoX3R5cGUgPT0gQlVGX0ZMVVNIX0xJU1QpOwogI2lm ZGVmIFVOSVZfU1lOQ19ERUJVRwogCXV0X2FkKChmbHVzaF90eXBlICE9IEJVRl9GTFVTSF9MSVNU KQotCSAgICAgIHx8IHN5bmNfdGhyZWFkX2xldmVsc19lbXB0eV9nZW4oVFJVRSkpOworCSAgICAg IHx8IHN5bmNfdGhyZWFkX2xldmVsc19lbXB0eV9leGNlcHRfZGljdCgpKTsKICNlbmRpZiAvKiBV TklWX1NZTkNfREVCVUcgKi8KIAogCWJ1Zl9wb29sX211dGV4X2VudGVyKGJ1Zl9wb29sKTsKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2ZpbC9maWwwZmlsLmMnCi0tLSBhL3N0 b3JhZ2UvaW5ub2Jhc2UvZmlsL2ZpbDBmaWwuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29t LTIwMTEwNDA1MDgzMDM4LWhnYTllcThqcjNrOWg2eTQKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9m aWwvZmlsMGZpbC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1MTExODU0 LTJ4N2Ntc2wzZHpyNTMwdWUKQEAgLTQ1MjcsOCArNDUyNyw4IEBAIGZpbF9haW9fd2FpdCgKIAkJ cmV0ID0gb3NfYWlvX2xpbnV4X2hhbmRsZShzZWdtZW50LCAmZmlsX25vZGUsCiAJCQkJCSAgJm1l c3NhZ2UsICZ0eXBlKTsKICNlbHNlCi0JCXJldCA9IDA7IC8qIEVsaW1pbmF0ZSBjb21waWxlciB3 YXJuaW5nICovCiAJCXV0X2Vycm9yOworCQlyZXQgPSAwOyAvKiBFbGltaW5hdGUgY29tcGlsZXIg d2FybmluZyAqLwogI2VuZGlmCiAJfSBlbHNlIHsKIAkJc3J2X3NldF9pb190aHJlYWRfb3BfaW5m byhzZWdtZW50LCAic2ltdWxhdGVkIGFpbyBoYW5kbGUiKTsKQEAgLTQ1MzgsNiArNDUzOCwxMCBA QCBmaWxfYWlvX3dhaXQoCiAJfQogCiAJdXRfYShyZXQpOworCWlmIChVTklWX1VOTElLRUxZKGZp bF9ub2RlID09IE5VTEwpKSB7CisJCXV0X2FkKHNydl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hV VERPV05fRVhJVF9USFJFQURTKTsKKwkJcmV0dXJuOworCX0KIAogCXNydl9zZXRfaW9fdGhyZWFk X29wX2luZm8oc2VnbWVudCwgImNvbXBsZXRlIGlvIGZvciBmaWwgbm9kZSIpOwogCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2xvZzBsb2cuaWMnCi0tLSBhL3N0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9sb2cwbG9nLmljCXJldmlkOnZhc2lsLmRpbW92QG9yYWNs ZS5jb20tMjAxMTA0MDUwODMwMzgtaGdhOWVxOGpyM2s5aDZ5NAorKysgYi9zdG9yYWdlL2lubm9i YXNlL2luY2x1ZGUvbG9nMGxvZy5pYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEx MDQwNTExMTg1NC0yeDdjbXNsM2R6cjUzMHVlCkBAIC00MzUsNyArNDM1LDcgQEAgbG9nX2ZyZWVf Y2hlY2sodm9pZCkKIHsKIAogI2lmZGVmIFVOSVZfU1lOQ19ERUJVRwotCXV0X2FkKHN5bmNfdGhy ZWFkX2xldmVsc19lbXB0eV9nZW4oVFJVRSkpOworCXV0X2FkKHN5bmNfdGhyZWFkX2xldmVsc19l bXB0eV9leGNlcHRfZGljdCgpKTsKICNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIAogCWlm IChsb2dfc3lzLT5jaGVja19mbHVzaF9vcl9jaGVja3BvaW50KSB7Cgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL29zMHN5bmMuaCcKLS0tIGEvc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL29zMHN5bmMuaAlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEw NDA1MDgzMDM4LWhnYTllcThqcjNrOWg2eTQKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L29zMHN5bmMuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTExMTg1NC0y eDdjbXNsM2R6cjUzMHVlCkBAIC0xNTAsMTAgKzE1MCw3IEBAIG9zX2V2ZW50X2ZyZWUoCiAJb3Nf ZXZlbnRfdAlldmVudCk7CS8qITwgaW46IGV2ZW50IHRvIGZyZWUgKi8KIAogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1XYWl0 cyBmb3IgYW4gZXZlbnQgb2JqZWN0IHVudGlsIGl0IGlzIGluIHRoZSBzaWduYWxlZCBzdGF0ZS4g SWYKLXNydl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJVF9USFJFQURTIHRoaXMg YWxzbyBleGl0cyB0aGUKLXdhaXRpbmcgdGhyZWFkIHdoZW4gdGhlIGV2ZW50IGJlY29tZXMgc2ln bmFsZWQgKG9yIGltbWVkaWF0ZWx5IGlmIHRoZQotZXZlbnQgaXMgYWxyZWFkeSBpbiB0aGUgc2ln bmFsZWQgc3RhdGUpLgorV2FpdHMgZm9yIGFuIGV2ZW50IG9iamVjdCB1bnRpbCBpdCBpcyBpbiB0 aGUgc2lnbmFsZWQgc3RhdGUuCiAKIFR5cGljYWxseSwgaWYgdGhlIGV2ZW50IGhhcyBiZWVuIHNp Z25hbGxlZCBhZnRlciB0aGUgb3NfZXZlbnRfcmVzZXQoKQogd2UnbGwgcmV0dXJuIGltbWVkaWF0 ZWx5IGJlY2F1c2UgZXZlbnQtPmlzX3NldCA9PSBUUlVFLgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9vczB0aHJlYWQuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL29zMHRocmVhZC5oCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0 MDUwODMwMzgtaGdhOWVxOGpyM2s5aDZ5NAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv b3MwdGhyZWFkLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUxMTE4NTQt Mng3Y21zbDNkenI1MzB1ZQpAQCAtMTA3LDggKzEwNyw5IEBAIFVOSVZfSU5URVJOCiB2b2lkCiBv c190aHJlYWRfZXhpdCgKIC8qPT09PT09PT09PT0qLwotCXZvaWQqCWV4aXRfdmFsdWUpOwkvKiE8 IGluOiBleGl0IHZhbHVlOyBpbiBXaW5kb3dzIHRoaXMgdm9pZCoKKwl2b2lkKglleGl0X3ZhbHVl KQkvKiE8IGluOiBleGl0IHZhbHVlOyBpbiBXaW5kb3dzIHRoaXMgdm9pZCoKIAkJCQlpcyBjYXN0 IGFzIGEgRFdPUkQgKi8KKwlfX2F0dHJpYnV0ZV9fKChjb2xkLCBub3JldHVybikpOwogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgogUmV0dXJucyB0aGUgdGhyZWFkIGlkZW50aWZpZXIgb2YgY3VycmVudCB0aHJlYWQu CiBAcmV0dXJuCWN1cnJlbnQgdGhyZWFkIGlkZW50aWZpZXIgKi8KQEAgLTExNywxMyArMTE4LDYg QEAgb3NfdGhyZWFkX2lkX3QKIG9zX3RocmVhZF9nZXRfY3Vycl9pZCh2b2lkKTsKIC8qPT09PT09 PT09PT09PT09PT09PT09PT09Ki8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVJldHVybnMgaGFuZGxlIHRvIHRo ZSBjdXJyZW50IHRocmVhZC4KLUByZXR1cm4JY3VycmVudCB0aHJlYWQgaGFuZGxlICovCi1VTklW X0lOVEVSTgotb3NfdGhyZWFkX3QKLW9zX3RocmVhZF9nZXRfY3Vycih2b2lkKTsKLS8qPT09PT09 PT09PT09PT09PT09PT0qLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogQWR2aXNlcyB0aGUgb3MgdG8gZ2l2ZSB1 cCByZW1haW5kZXIgb2YgdGhlIHRocmVhZCdzIHRpbWUgc2xpY2UuICovCiBVTklWX0lOVEVSTgog dm9pZApAQCAtMTM2LDI5ICsxMzAsNiBAQCB2b2lkCiBvc190aHJlYWRfc2xlZXAoCiAvKj09PT09 PT09PT09PSovCiAJdWxpbnQJdG0pOwkvKiE8IGluOiB0aW1lIGluIG1pY3Jvc2Vjb25kcyAqLwot LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKLUdldHMgYSB0aHJlYWQgcHJpb3JpdHkuCi1AcmV0dXJuCXByaW9yaXR5 ICovCi1VTklWX0lOVEVSTgotdWxpbnQKLW9zX3RocmVhZF9nZXRfcHJpb3JpdHkoCi0vKj09PT09 PT09PT09PT09PT09PT0qLwotCW9zX3RocmVhZF90CWhhbmRsZSk7LyohPCBpbjogT1MgaGFuZGxl IHRvIHRoZSB0aHJlYWQgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1TZXRzIGEgdGhyZWFkIHByaW9yaXR5 LiAqLwotVU5JVl9JTlRFUk4KLXZvaWQKLW9zX3RocmVhZF9zZXRfcHJpb3JpdHkoCi0vKj09PT09 PT09PT09PT09PT09PT0qLwotCW9zX3RocmVhZF90CWhhbmRsZSwJLyohPCBpbjogT1MgaGFuZGxl IHRvIHRoZSB0aHJlYWQgKi8KLQl1bGludAkJcHJpKTsJLyohPCBpbjogcHJpb3JpdHk6IG9uZSBv ZiBPU19QUklPUklUWV8uLi4gKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1HZXRzIHRoZSBsYXN0IG9wZXJh dGluZyBzeXN0ZW0gZXJyb3IgY29kZSBmb3IgdGhlIGNhbGxpbmcgdGhyZWFkLgotQHJldHVybgls YXN0IGVycm9yIG9uIFdpbmRvd3MsIDAgb3RoZXJ3aXNlICovCi1VTklWX0lOVEVSTgotdWxpbnQK LW9zX3RocmVhZF9nZXRfbGFzdF9lcnJvcih2b2lkKTsKLS8qPT09PT09PT09PT09PT09PT09PT09 PT09PT0qLwogCiAjaWZuZGVmIFVOSVZfTk9OSU5MCiAjaW5jbHVkZSAib3MwdGhyZWFkLmljIgoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHN5bmMuaCcK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3N5bmMwc3luYy5oCXJldmlkOnZhc2lsLmRp bW92QG9yYWNsZS5jb20tMjAxMTA0MDUwODMwMzgtaGdhOWVxOGpyM2s5aDZ5NAorKysgYi9zdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvc3luYzBzeW5jLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTA0MDUxMTE4NTQtMng3Y21zbDNkenI1MzB1ZQpAQCAtNDEzLDEzICs0MTMsNiBA QCBzeW5jX3RocmVhZF9yZXNldF9sZXZlbCgKIC8qPT09PT09PT09PT09PT09PT09PT0qLwogCXZv aWQqCWxhdGNoKTsJLyohPCBpbjogcG9pbnRlciB0byBhIG11dGV4IG9yIGFuIHJ3LWxvY2sgKi8K IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCi1DaGVja3MgdGhhdCB0aGUgbGV2ZWwgYXJyYXkgZm9yIHRoZSBjdXJy ZW50IHRocmVhZCBpcyBlbXB0eS4KLUByZXR1cm4JVFJVRSBpZiBlbXB0eSAqLwotVU5JVl9JTlRF Uk4KLWlib29sCi1zeW5jX3RocmVhZF9sZXZlbHNfZW1wdHkodm9pZCk7Ci0vKj09PT09PT09PT09 PT09PT09PT09PT09PT09Ki8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBDaGVja3MgaWYgdGhlIGxldmVsIGFy cmF5IGZvciB0aGUgY3VycmVudCB0aHJlYWQgY29udGFpbnMgYQogbXV0ZXggb3IgcnctbGF0Y2gg YXQgdGhlIHNwZWNpZmllZCBsZXZlbC4KIEByZXR1cm4JYSBtYXRjaGluZyBsYXRjaCwgb3IgTlVM TCBpZiBub3QgZm91bmQgKi8KQEAgLTQzMCwxNyArNDIzLDMzIEBAIHN5bmNfdGhyZWFkX2xldmVs c19jb250YWlucygKIAl1bGludAlsZXZlbCk7CQkJLyohPCBpbjogbGF0Y2hpbmcgb3JkZXIgbGV2 ZWwKIAkJCQkJKFNZTkNfRElDVCwgLi4uKSovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotQ2hlY2tzIGlmIHRo ZSBsZXZlbCBhcnJheSBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIGVtcHR5LgorQ2hlY2tzIHRo YXQgdGhlIGxldmVsIGFycmF5IGZvciB0aGUgY3VycmVudCB0aHJlYWQgaXMgZW1wdHkuCiBAcmV0 dXJuCWEgbGF0Y2gsIG9yIE5VTEwgaWYgZW1wdHkgZXhjZXB0IHRoZSBleGNlcHRpb25zIHNwZWNp ZmllZCBiZWxvdyAqLwogVU5JVl9JTlRFUk4KIHZvaWQqCiBzeW5jX3RocmVhZF9sZXZlbHNfbm9u ZW1wdHlfZ2VuKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlpYm9vbAlkaWN0 X211dGV4X2FsbG93ZWQpOwkvKiE8IGluOiBUUlVFIGlmIGRpY3Rpb25hcnkgbXV0ZXggaXMKLQkJ CQkJYWxsb3dlZCB0byBiZSBvd25lZCBieSB0aGUgdGhyZWFkLAotCQkJCQlhbHNvIHB1cmdlX2lz X3J1bm5pbmcgbXV0ZXggaXMKLQkJCQkJYWxsb3dlZCAqLwotI2RlZmluZSBzeW5jX3RocmVhZF9s ZXZlbHNfZW1wdHlfZ2VuKGQpICghc3luY190aHJlYWRfbGV2ZWxzX25vbmVtcHR5X2dlbihkKSkK KwlpYm9vbAlkaWN0X211dGV4X2FsbG93ZWQpCS8qITwgaW46IFRSVUUgaWYgZGljdGlvbmFyeSBt dXRleCBpcworCQkJCQlhbGxvd2VkIHRvIGJlIG93bmVkIGJ5IHRoZSB0aHJlYWQgKi8KKwlfX2F0 dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitDaGVja3Mg aWYgdGhlIGxldmVsIGFycmF5IGZvciB0aGUgY3VycmVudCB0aHJlYWQgaXMgZW1wdHksCitleGNl cHQgZm9yIGRhdGEgZGljdGlvbmFyeSBsYXRjaGVzLiAqLworI2RlZmluZSBzeW5jX3RocmVhZF9s ZXZlbHNfZW1wdHlfZXhjZXB0X2RpY3QoKQkJXAorCSghc3luY190aHJlYWRfbGV2ZWxzX25vbmVt cHR5X2dlbihUUlVFKSkKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitDaGVja3MgaWYgdGhlIGxldmVsIGFycmF5 IGZvciB0aGUgY3VycmVudCB0aHJlYWQgaXMgZW1wdHksCitleGNlcHQgZm9yIHRoZSBidHJfc2Vh cmNoX2xhdGNoLgorQHJldHVybglhIGxhdGNoLCBvciBOVUxMIGlmIGVtcHR5IGV4Y2VwdCB0aGUg ZXhjZXB0aW9ucyBzcGVjaWZpZWQgYmVsb3cgKi8KK1VOSVZfSU5URVJOCit2b2lkKgorc3luY190 aHJlYWRfbGV2ZWxzX25vbmVtcHR5X3RyeCgKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09 PSovCisJaWJvb2wJaGFzX3NlYXJjaF9sYXRjaCkKKwkJCQkvKiE8IGluOiBUUlVFIGlmIGFuZCBv bmx5IGlmIHRoZSB0aHJlYWQKKwkJCQlpcyBzdXBwb3NlZCB0byBob2xkIGJ0cl9zZWFyY2hfbGF0 Y2ggKi8KKwlfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKKwogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKIEdldHMgdGhlIGRlYnVnIGluZm9ybWF0aW9uIGZvciBhIHJlc2VydmVkIG11dGV4LiAq LwogVU5JVl9JTlRFUk4KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvdHJ4MHRyeC5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHRyeC5oCXJl dmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDUwODMwMzgtaGdhOWVxOGpyM2s5aDZ5 NAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHRyeC5oCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1MTExODU0LTJ4N2Ntc2wzZHpyNTMwdWUKQEAgLTU2OSwx MSArNTY5LDYgQEAgc3RydWN0IHRyeF9zdHJ1Y3R7CiAJaWJfaW50NjRfdAlteXNxbF9sb2dfb2Zm c2V0Oy8qIGlmIE15U1FMIGJpbmxvZyBpcyB1c2VkLCB0aGlzIGZpZWxkCiAJCQkJCWNvbnRhaW5z IHRoZSBlbmQgb2Zmc2V0IG9mIHRoZSBiaW5sb2cKIAkJCQkJZW50cnkgKi8KLQlvc190aHJlYWRf aWRfdAlteXNxbF90aHJlYWRfaWQ7LyogaWQgb2YgdGhlIE15U1FMIHRocmVhZCBhc3NvY2lhdGVk Ci0JCQkJCXdpdGggdGhpcyB0cmFuc2FjdGlvbiBvYmplY3QgKi8KLQl1bGludAkJbXlzcWxfcHJv Y2Vzc19ubzsvKiBzaW5jZSBpbiBMaW51eCwgJ3RvcCcgcmVwb3J0cwotCQkJCQlwcm9jZXNzIGlk J3MgYW5kIG5vdCB0aHJlYWQgaWQncywgd2UKLQkJCQkJc3RvcmUgdGhlIHByb2Nlc3MgbnVtYmVy IHRvbyAqLwogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAl1bGludAkJbl9t eXNxbF90YWJsZXNfaW5fdXNlOyAvKiBudW1iZXIgb2YgSW5ub2Jhc2UgdGFibGVzCiAJCQkJCXVz ZWQgaW4gdGhlIHByb2Nlc3Npbmcgb2YgdGhlIGN1cnJlbnQKCj09PSBtb2RpZmllZCBmaWxlICdz dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdXQwZGJnLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS91dDBkYmcuaAlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA1MDgz MDM4LWhnYTllcThqcjNrOWg2eTQKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3V0MGRi Zy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1MTExODU0LTJ4N2Ntc2wz ZHpyNTMwdWUKQEAgLTUwLDkgKzUwLDEwIEBAIFVOSVZfSU5URVJOCiB2b2lkCiB1dF9kYmdfYXNz ZXJ0aW9uX2ZhaWxlZCgKIC8qPT09PT09PT09PT09PT09PT09PT0qLwotCWNvbnN0IGNoYXIqIGV4 cHIsCS8qITwgaW46IHRoZSBmYWlsZWQgYXNzZXJ0aW9uICovCi0JY29uc3QgY2hhciogZmlsZSwJ LyohPCBpbjogc291cmNlIGZpbGUgY29udGFpbmluZyB0aGUgYXNzZXJ0aW9uICovCi0JdWxpbnQg bGluZSk7CQkvKiE8IGluOiBsaW5lIG51bWJlciBvZiB0aGUgYXNzZXJ0aW9uICovCisJY29uc3Qg Y2hhcioJZXhwciwJLyohPCBpbjogdGhlIGZhaWxlZCBhc3NlcnRpb24gKi8KKwljb25zdCBjaGFy KglmaWxlLAkvKiE8IGluOiBzb3VyY2UgZmlsZSBjb250YWluaW5nIHRoZSBhc3NlcnRpb24gKi8K Kwl1bGludAkJbGluZSkJLyohPCBpbjogbGluZSBudW1iZXIgb2YgdGhlIGFzc2VydGlvbiAqLwor CV9fYXR0cmlidXRlX18oKG5vbm51bGwoMiksIGNvbGQpKTsKIAogI2lmIGRlZmluZWQoX19XSU5f XykgfHwgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQogIyB1bmRlZiBVVF9EQkdfVVNFX0FCT1JU Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3V0MHV0LmgnCi0t LSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91dDB1dC5oCXJldmlkOnZhc2lsLmRpbW92QG9y YWNsZS5jb20tMjAxMTA0MDUwODMwMzgtaGdhOWVxOGpyM2s5aDZ5NAorKysgYi9zdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvdXQwdXQuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEx MDQwNTExMTg1NC0yeDdjbXNsM2R6cjUzMHVlCkBAIC0yNzUsNyArMjc1LDggQEAgVU5JVl9JTlRF Uk4KIHZvaWQKIHV0X3ByaW50X3RpbWVzdGFtcCgKIC8qPT09PT09PT09PT09PT09Ki8KLQlGSUxF KiAgZmlsZSk7IC8qITwgaW46IGZpbGUgd2hlcmUgdG8gcHJpbnQgKi8KKwlGSUxFKglmaWxlKQkv KiE8IGluOiBmaWxlIHdoZXJlIHRvIHByaW50ICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwg Y29sZCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCiBTcHJpbnRmcyBhIHRpbWVzdGFtcCB0byBhIGJ1ZmZlciwgMTMuLjE0 IGNoYXJzIHBsdXMgdGVybWluYXRpbmcgTlVMLiAqLwogVU5JVl9JTlRFUk4KCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2xvZy9sb2cwbG9nLmMnCi0tLSBhL3N0b3JhZ2UvaW5u b2Jhc2UvbG9nL2xvZzBsb2cuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA1 MDgzMDM4LWhnYTllcThqcjNrOWg2eTQKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9sb2cvbG9nMGxv Zy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1MTExODU0LTJ4N2Ntc2wz ZHpyNTMwdWUKQEAgLTMwNzgsNiArMzA3OCw3IEBAIGxvZ3NfZW1wdHlfYW5kX21hcmtfZmlsZXNf YXRfc2h1dGRvd24odm8KIHsKIAlpYl91aW50NjRfdAlsc247CiAJdWxpbnQJCWFyY2hfbG9nX25v OworCWlib29sCQlzZXJ2ZXJfYnVzeTsKIAogCWlmIChzcnZfcHJpbnRfdmVyYm9zZV9sb2cpIHsK IAkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7CkBAIC0zMDkyLDE0ICszMDkzLDEyIEBAIGxv b3A6CiAKIAltdXRleF9lbnRlcigma2VybmVsX211dGV4KTsKIAotCS8qIFdlIG5lZWQgdGhlIG1v bml0b3IgdGhyZWFkcyB0byBzdG9wIGJlZm9yZSB3ZSBwcm9jZWVkIHdpdGggYQotCW5vcm1hbCBz aHV0ZG93bi4gSW4gY2FzZSBvZiB2ZXJ5IGZhc3Qgc2h1dGRvd24sIGhvd2V2ZXIsIHdlIGNhbgot CXByb2NlZWQgd2l0aG91dCB3YWl0aW5nIGZvciBtb25pdG9yIHRocmVhZHMuICovCi0KLQlpZiAo c3J2X2Zhc3Rfc2h1dGRvd24gPCAyCi0JICAgJiYgKHNydl9lcnJvcl9tb25pdG9yX2FjdGl2ZQot CSAgICAgIHx8IHNydl9sb2NrX3RpbWVvdXRfYWN0aXZlCi0JICAgICAgfHwgc3J2X21vbml0b3Jf YWN0aXZlKSkgeworCS8qIFdlIG5lZWQgdGhlIG1vbml0b3IgdGhyZWFkcyB0byBzdG9wIGJlZm9y ZSB3ZSBwcm9jZWVkIHdpdGgKKwlhIHNodXRkb3duLiAqLworCisJaWYgKHNydl9lcnJvcl9tb25p dG9yX2FjdGl2ZQorCSAgICB8fCBzcnZfbG9ja190aW1lb3V0X2FjdGl2ZQorCSAgICB8fCBzcnZf bW9uaXRvcl9hY3RpdmUpIHsKIAogCQltdXRleF9leGl0KCZrZXJuZWxfbXV0ZXgpOwogCkBAIC0z MTE0LDY1ICszMTEzLDU3IEBAIGxvb3A6CiAJZm9yIHRoZSAndmVyeSBmYXN0JyBzaHV0ZG93biwg YmVjYXVzZSB0aGUgSW5ub0RCIGxheWVyIG1heSBoYXZlCiAJY29tbWl0dGVkIG9yIHByZXBhcmVk IHRyYW5zYWN0aW9ucyBhbmQgd2UgZG9uJ3Qgd2FudCB0byBsb3NlIHRoZW0uICovCiAKLQlpZiAo dHJ4X25fbXlzcWxfdHJhbnNhY3Rpb25zID4gMAotCSAgICB8fCBVVF9MSVNUX0dFVF9MRU4odHJ4 X3N5cy0+dHJ4X2xpc3QpID4gMCkgewotCi0JCW11dGV4X2V4aXQoJmtlcm5lbF9tdXRleCk7Ci0K LQkJZ290byBsb29wOwotCX0KLQotCWlmIChzcnZfZmFzdF9zaHV0ZG93biA9PSAyKSB7Ci0JCS8q IEluIHRoaXMgZmFzdGVzdCBzaHV0ZG93biB3ZSBkbyBub3QgZmx1c2ggdGhlIGJ1ZmZlciBwb29s OgotCQlpdCBpcyBlc3NlbnRpYWxseSBhICdjcmFzaCcgb2YgdGhlIElubm9EQiBzZXJ2ZXIuIE1h a2Ugc3VyZQotCQl0aGF0IHRoZSBsb2cgaXMgYWxsIGZsdXNoZWQgdG8gZGlzaywgc28gdGhhdCB3 ZSBjYW4gcmVjb3ZlcgotCQlhbGwgY29tbWl0dGVkIHRyYW5zYWN0aW9ucyBpbiBhIGNyYXNoIHJl Y292ZXJ5LiBXZSBtdXN0IG5vdAotCQl3cml0ZSB0aGUgbHNuIHN0YW1wcyB0byB0aGUgZGF0YSBm aWxlcywgc2luY2UgYXQgYSBzdGFydHVwCi0JCUlubm9EQiBkZWR1Y2VzIGZyb20gdGhlIHN0YW1w cyBpZiB0aGUgcHJldmlvdXMgc2h1dGRvd24gd2FzCi0JCWNsZWFuLiAqLwotCi0JCWxvZ19idWZm ZXJfZmx1c2hfdG9fZGlzaygpOwotCi0JCW11dGV4X2V4aXQoJmtlcm5lbF9tdXRleCk7Ci0KLQkJ cmV0dXJuOyAvKiBXZSBTS0lQIEFMTCBUSEUgUkVTVCAhISAqLwotCX0KLQorCXNlcnZlcl9idXN5 ID0gdHJ4X25fbXlzcWxfdHJhbnNhY3Rpb25zID4gMAorCQl8fCBVVF9MSVNUX0dFVF9MRU4odHJ4 X3N5cy0+dHJ4X2xpc3QpID4gMDsKIAltdXRleF9leGl0KCZrZXJuZWxfbXV0ZXgpOwogCi0JLyog Q2hlY2sgdGhhdCB0aGUgYmFja2dyb3VuZCB0aHJlYWRzIGFyZSBzdXNwZW5kZWQgKi8KLQotCWlm IChzcnZfaXNfYW55X2JhY2tncm91bmRfdGhyZWFkX2FjdGl2ZSgpKSB7CisJaWYgKHNlcnZlcl9i dXN5IHx8IHNydl9pc19hbnlfYmFja2dyb3VuZF90aHJlYWRfYWN0aXZlKCkpIHsKIAkJZ290byBs b29wOwogCX0KIAotCW11dGV4X2VudGVyKCYobG9nX3N5cy0+bXV0ZXgpKTsKLQotCWlmIChsb2df c3lzLT5uX3BlbmRpbmdfY2hlY2twb2ludF93cml0ZXMKKwltdXRleF9lbnRlcigmbG9nX3N5cy0+ bXV0ZXgpOworCXNlcnZlcl9idXN5ID0gbG9nX3N5cy0+bl9wZW5kaW5nX2NoZWNrcG9pbnRfd3Jp dGVzCiAjaWZkZWYgVU5JVl9MT0dfQVJDSElWRQotCSAgICB8fCBsb2dfc3lzLT5uX3BlbmRpbmdf YXJjaGl2ZV9pb3MKKwkJfHwgbG9nX3N5cy0+bl9wZW5kaW5nX2FyY2hpdmVfaW9zCiAjZW5kaWYg LyogVU5JVl9MT0dfQVJDSElWRSAqLwotCSAgICB8fCBsb2dfc3lzLT5uX3BlbmRpbmdfd3JpdGVz KSB7Ci0KLQkJbXV0ZXhfZXhpdCgmKGxvZ19zeXMtPm11dGV4KSk7Ci0KLQkJZ290byBsb29wOwot CX0KLQotCW11dGV4X2V4aXQoJihsb2dfc3lzLT5tdXRleCkpOwotCi0JaWYgKCFidWZfcG9vbF9j aGVja19ub19wZW5kaW5nX2lvKCkpIHsKKwkJfHwgbG9nX3N5cy0+bl9wZW5kaW5nX3dyaXRlczsK KwltdXRleF9leGl0KCZsb2dfc3lzLT5tdXRleCk7CiAKKwlpZiAoc2VydmVyX2J1c3kgfHwgIWJ1 Zl9wb29sX2NoZWNrX25vX3BlbmRpbmdfaW8oKSkgewogCQlnb3RvIGxvb3A7CiAJfQogCiAjaWZk ZWYgVU5JVl9MT0dfQVJDSElWRQogCWxvZ19hcmNoaXZlX2FsbCgpOwogI2VuZGlmIC8qIFVOSVZf TE9HX0FSQ0hJVkUgKi8KKwlpZiAoc3J2X2Zhc3Rfc2h1dGRvd24gPT0gMikgeworCQkvKiBJbiB0 aGlzIGZhc3Rlc3Qgc2h1dGRvd24gd2UgZG8gbm90IGZsdXNoIHRoZSBidWZmZXIKKwkJcG9vbDog aXQgaXMgZXNzZW50aWFsbHkgYSAnY3Jhc2gnIG9mIHRoZSBJbm5vREIKKwkJc2VydmVyLiBNYWtl IHN1cmUgdGhhdCB0aGUgbG9nIGlzIGFsbCBmbHVzaGVkIHRvIGRpc2ssCisJCXNvIHRoYXQgd2Ug Y2FuIHJlY292ZXIgYWxsIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMgaW4gYQorCQljcmFzaCByZWNv dmVyeS4gV2UgbXVzdCBub3Qgd3JpdGUgdGhlIGxzbiBzdGFtcHMgdG8KKwkJdGhlIGRhdGEgZmls ZXMsIHNpbmNlIGF0IGEgc3RhcnR1cCBJbm5vREIgZGVkdWNlcyBmcm9tCisJCXRoZSBzdGFtcHMg aWYgdGhlIHByZXZpb3VzIHNodXRkb3duIHdhcyBjbGVhbi4gKi8KKworCQlsb2dfYnVmZmVyX2Zs dXNoX3RvX2Rpc2soKTsKKworCQkvKiBDaGVjayB0aGF0IHRoZSBiYWNrZ3JvdW5kIHRocmVhZHMg c3RheSBzdXNwZW5kZWQgKi8KKwkJaWYgKHNydl9pc19hbnlfYmFja2dyb3VuZF90aHJlYWRfYWN0 aXZlKCkpIHsKKwkJCWZwcmludGYoc3RkZXJyLAorCQkJCSJJbm5vREI6IFdhcm5pbmc6IHNvbWUg YmFja2dyb3VuZCB0aHJlYWQiCisJCQkJIiB3b2tlIHVwIGR1cmluZyBzaHV0ZG93blxuIik7CisJ CQlnb3RvIGxvb3A7CisJCX0KKworCQlzcnZfc2h1dGRvd25fc3RhdGUgPSBTUlZfU0hVVERPV05f TEFTVF9QSEFTRTsKKwkJZmlsX2Nsb3NlX2FsbF9maWxlcygpOworCQl1dF9hKCFzcnZfaXNfYW55 X2JhY2tncm91bmRfdGhyZWFkX2FjdGl2ZSgpKTsKKwkJcmV0dXJuOworCX0KIAogCWxvZ19tYWtl X2NoZWNrcG9pbnRfYXQoSUJfVUxPTkdMT05HX01BWCwgVFJVRSk7CiAKLQltdXRleF9lbnRlcigm KGxvZ19zeXMtPm11dGV4KSk7CisJbXV0ZXhfZW50ZXIoJmxvZ19zeXMtPm11dGV4KTsKIAogCWxz biA9IGxvZ19zeXMtPmxzbjsKIApAQCAtMzE4Myw3ICszMTc0LDcgQEAgbG9vcDoKICNlbmRpZiAv KiBVTklWX0xPR19BUkNISVZFICovCiAJICAgICkgewogCi0JCW11dGV4X2V4aXQoJihsb2dfc3lz LT5tdXRleCkpOworCQltdXRleF9leGl0KCZsb2dfc3lzLT5tdXRleCk7CiAKIAkJZ290byBsb29w OwogCX0KQEAgLTMyMDEsNyArMzE5Miw3IEBAIGxvb3A6CiAJbG9nX2FyY2hpdmVfY2xvc2VfZ3Jv dXBzKFRSVUUpOwogI2VuZGlmIC8qIFVOSVZfTE9HX0FSQ0hJVkUgKi8KIAotCW11dGV4X2V4aXQo Jihsb2dfc3lzLT5tdXRleCkpOworCW11dGV4X2V4aXQoJmxvZ19zeXMtPm11dGV4KTsKIAogCS8q IENoZWNrIHRoYXQgdGhlIGJhY2tncm91bmQgdGhyZWFkcyBzdGF5IHN1c3BlbmRlZCAqLwogCWlm IChzcnZfaXNfYW55X2JhY2tncm91bmRfdGhyZWFkX2FjdGl2ZSgpKSB7Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9vcy9vczBmaWxlLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2Uvb3Mvb3MwZmlsZS5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDUwODMw MzgtaGdhOWVxOGpyM2s5aDZ5NAorKysgYi9zdG9yYWdlL2lubm9iYXNlL29zL29zMGZpbGUuYwly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTExMTg1NC0yeDdjbXNsM2R6cjUz MHVlCkBAIC00MDY0LDEzICs0MDY0LDEzIEBAIG9zX2Fpb19mdW5jKAogCX0KIAogdHJ5X2FnYWlu OgotCWlmIChtb2RlID09IE9TX0FJT19OT1JNQUwpIHsKLQkJaWYgKHR5cGUgPT0gT1NfRklMRV9S RUFEKSB7Ci0JCQlhcnJheSA9IG9zX2Fpb19yZWFkX2FycmF5OwotCQl9IGVsc2UgewotCQkJYXJy YXkgPSBvc19haW9fd3JpdGVfYXJyYXk7Ci0JCX0KLQl9IGVsc2UgaWYgKG1vZGUgPT0gT1NfQUlP X0lCVUYpIHsKKwlzd2l0Y2ggKG1vZGUpIHsKKwljYXNlIE9TX0FJT19OT1JNQUw6CisJCWFycmF5 ID0gKHR5cGUgPT0gT1NfRklMRV9SRUFEKQorCQkJPyBvc19haW9fcmVhZF9hcnJheQorCQkJOiBv c19haW9fd3JpdGVfYXJyYXk7CisJCWJyZWFrOworCWNhc2UgT1NfQUlPX0lCVUY6CiAJCXV0X2Fk KHR5cGUgPT0gT1NfRklMRV9SRUFEKTsKIAkJLyogUmVkdWNlIHByb2JhYmlsaXR5IG9mIGRlYWRs b2NrIGJ1Z3MgaW4gY29ubmVjdGlvbiB3aXRoIGlidWY6CiAJCWRvIG5vdCBsZXQgdGhlIGlidWYg aS9vIGhhbmRsZXIgc2xlZXAgKi8KQEAgLTQwNzgsMTkgKzQwNzgsMjEgQEAgdHJ5X2FnYWluOgog CQl3YWtlX2xhdGVyID0gRkFMU0U7CiAKIAkJYXJyYXkgPSBvc19haW9faWJ1Zl9hcnJheTsKLQl9 IGVsc2UgaWYgKG1vZGUgPT0gT1NfQUlPX0xPRykgewotCisJCWJyZWFrOworCWNhc2UgT1NfQUlP X0xPRzoKIAkJYXJyYXkgPSBvc19haW9fbG9nX2FycmF5OwotCX0gZWxzZSBpZiAobW9kZSA9PSBP U19BSU9fU1lOQykgeworCQlicmVhazsKKwljYXNlIE9TX0FJT19TWU5DOgogCQlhcnJheSA9IG9z X2Fpb19zeW5jX2FycmF5OwogCiAjaWYgZGVmaW5lZChMSU5VWF9OQVRJVkVfQUlPKQogCQkvKiBJ biBMaW51eCBuYXRpdmUgQUlPIHdlIGRvbid0IHVzZSBzeW5jIElPIGFycmF5LiAqLwogCQl1dF9h KCFzcnZfdXNlX25hdGl2ZV9haW8pOwogI2VuZGlmIC8qIExJTlVYX05BVElWRV9BSU8gKi8KLQl9 IGVsc2UgewotCQlhcnJheSA9IE5VTEw7IC8qIEVsaW1pbmF0ZSBjb21waWxlciB3YXJuaW5nICov CisJCWJyZWFrOworCWRlZmF1bHQ6CiAJCXV0X2Vycm9yOworCQlhcnJheSA9IE5VTEw7IC8qIEVs aW1pbmF0ZSBjb21waWxlciB3YXJuaW5nICovCiAJfQogCiAJc2xvdCA9IG9zX2Fpb19hcnJheV9y ZXNlcnZlX3Nsb3QodHlwZSwgYXJyYXksIG1lc3NhZ2UxLCBtZXNzYWdlMiwgZmlsZSwKQEAgLTQy NTMsMTEgKzQyNTUsMTcgQEAgb3NfYWlvX3dpbmRvd3NfaGFuZGxlKAogCQkJCQkgICBJTkZJTklU RSk7CiAJfQogCi0JaWYgKHNydl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJVF9U SFJFQURTKSB7Ci0JCW9zX3RocmVhZF9leGl0KE5VTEwpOworCW9zX211dGV4X2VudGVyKGFycmF5 LT5tdXRleCk7CisKKwlpZiAoc3J2X3NodXRkb3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9FWElU X1RIUkVBRFMKKwkgICAgJiYgYXJyYXktPm5fcmVzZXJ2ZWQgPT0gMCkgeworCQkqbWVzc2FnZTEg PSBOVUxMOworCQkqbWVzc2FnZTIgPSBOVUxMOworCQlvc19tdXRleF9leGl0KGFycmF5LT5tdXRl eCk7CisJCXJldHVybihUUlVFKTsKIAl9CiAKLQlvc19tdXRleF9lbnRlcihhcnJheS0+bXV0ZXgp OworCXV0X2EoaSA+PSBXQUlUX09CSkVDVF8wICYmIGkgPD0gV0FJVF9PQkpFQ1RfMCArIG4pOwog CiAJc2xvdCA9IG9zX2Fpb19hcnJheV9nZXRfbnRoX3Nsb3QoYXJyYXksIGkgKyBzZWdtZW50ICog bik7CiAKQEAgLTQ0MDMsMTQgKzQ0MTEsNiBAQCBvc19haW9fbGludXhfY29sbGVjdCgKIAogcmV0 cnk6CiAKLQkvKiBHbyBkb3duIGlmIHdlIGFyZSBpbiBzaHV0ZG93biBtb2RlLgotCUluIGNhc2Ug b2Ygc3J2X2Zhc3Rfc2h1dGRvd24gPT0gMiwgdGhlcmUgbWF5IGJlIHBlbmRpbmcKLQlJTyByZXF1 ZXN0cyBidXQgdGhhdCBzaG91bGQgYmUgT0sgYXMgd2UgZXNzZW50aWFsbHkgdHJlYXQKLQl0aGF0 IGFzIGEgY3Jhc2ggb2YgSW5ub0RCLiAqLwotCWlmIChzcnZfc2h1dGRvd25fc3RhdGUgPT0gU1JW X1NIVVRET1dOX0VYSVRfVEhSRUFEUykgewotCQlvc190aHJlYWRfZXhpdChOVUxMKTsKLQl9Ci0K IAkvKiBJbml0aWFsaXplIHRoZSBldmVudHMuIFRoZSB0aW1lb3V0IHZhbHVlIGlzIGFyYml0cmFy eS4KIAlXZSBwcm9iYWJseSBuZWVkIHRvIGV4cGVyaW1lbnQgd2l0aCBpdCBhIGxpdHRsZS4gKi8K IAltZW1zZXQoZXZlbnRzLCAwLCBzaXplb2YoKmV2ZW50cykgKiBzZWdfc2l6ZSk7CkBAIC00NDE5 LDc2ICs0NDE5LDcyIEBAIHJldHJ5OgogCiAJcmV0ID0gaW9fZ2V0ZXZlbnRzKGlvX2N0eCwgMSwg c2VnX3NpemUsIGV2ZW50cywgJnRpbWVvdXQpOwogCi0JLyogVGhpcyBlcnJvciBoYW5kbGluZyBp cyBmb3IgYW55IGVycm9yIGluIGNvbGxlY3RpbmcgdGhlCi0JSU8gcmVxdWVzdHMuIFRoZSBlcnJv cnMsIGlmIGFueSwgZm9yIGFueSBwYXJ0aWN1bGFyIElPCi0JcmVxdWVzdCBhcmUgc2ltcGx5IHBh c3NlZCBvbiB0byB0aGUgY2FsbGluZyByb3V0aW5lLiAqLworCWlmIChyZXQgPiAwKSB7CisJCWZv ciAoaSA9IDA7IGkgPCByZXQ7IGkrKykgeworCQkJb3NfYWlvX3Nsb3RfdCoJc2xvdDsKKwkJCXN0 cnVjdCBpb2NiKgljb250cm9sOworCisJCQljb250cm9sID0gKHN0cnVjdCBpb2NiICopZXZlbnRz W2ldLm9iajsKKwkJCXV0X2EoY29udHJvbCAhPSBOVUxMKTsKKworCQkJc2xvdCA9IChvc19haW9f c2xvdF90ICopIGNvbnRyb2wtPmRhdGE7CisKKwkJCS8qIFNvbWUgc2FuaXR5IGNoZWNrcy4gKi8K KwkJCXV0X2Eoc2xvdCAhPSBOVUxMKTsKKwkJCXV0X2Eoc2xvdC0+cmVzZXJ2ZWQpOwogCi0JLyog Tm90IGVub3VnaCByZXNvdXJjZXMhIFRyeSBhZ2Fpbi4gKi8KLQlpZiAocmV0ID09IC1FQUdBSU4p IHsKLQkJZ290byByZXRyeTsKLQl9CisjaWYgZGVmaW5lZChVTklWX0FJT19ERUJVRykKKwkJCWZw cmludGYoc3RkZXJyLAorCQkJCSJpb19nZXRldmVudHNbJWNdOiBzbG90WyVwXSBjdHhbJXBdIgor CQkJCSIgc2VnWyVsdV1cbiIsCisJCQkJKHNsb3QtPnR5cGUgPT0gT1NfRklMRV9XUklURSkgPyAn dycgOiAncicsCisJCQkJc2xvdCwgaW9fY3R4LCBzZWdtZW50KTsKKyNlbmRpZgogCi0JLyogSW50 ZXJydXB0ZWQhIEkgaGF2ZSB0ZXN0ZWQgdGhlIGJlaGF2aW91ciBpbiBjYXNlIG9mIGFuCi0JaW50 ZXJydXB0LiBJZiB3ZSBoYXZlIHNvbWUgY29tcGxldGVkIElPcyBhdmFpbGFibGUgdGhlbgotCXRo ZSByZXR1cm4gY29kZSB3aWxsIGJlIHRoZSBudW1iZXIgb2YgSU9zLiBXZSBnZXQgRUlOVFIgb25s eQotCWlmIHRoZXJlIGFyZSBubyBjb21wbGV0ZWQgSU9zIGFuZCB3ZSBoYXZlIGJlZW4gaW50ZXJy dXB0ZWQuICovCi0JaWYgKHJldCA9PSAtRUlOVFIpIHsKLQkJZ290byByZXRyeTsKLQl9CisJCQkv KiBXZSBhcmUgbm90IHNjcmliYmxpbmcgcHJldmlvdXMgc2VnbWVudC4gKi8KKwkJCXV0X2Eoc2xv dC0+cG9zID49IHN0YXJ0X3Bvcyk7CiAKLQkvKiBObyBwZW5kaW5nIHJlcXVlc3QhIEdvIGJhY2sg YW5kIGNoZWNrIGFnYWluLiAqLwotCWlmIChyZXQgPT0gMCkgewotCQlnb3RvIHJldHJ5OwotCX0K KwkJCS8qIFdlIGhhdmUgbm90IG92ZXJzdGVwcGVkIHRvIG5leHQgc2VnbWVudC4gKi8KKwkJCXV0 X2Eoc2xvdC0+cG9zIDwgZW5kX3Bvcyk7CiAKLQkvKiBBbGwgb3RoZXIgZXJyb3JzISBzaG91bGQg Y2F1c2UgYSB0cmFwIGZvciBub3cuICovCi0JaWYgKFVOSVZfVU5MSUtFTFkocmV0IDwgMCkpIHsK LQkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJIiAg SW5ub0RCOiB1bmV4cGVjdGVkIHJldF9jb2RlWyVkXSBmcm9tIgotCQkJIiBpb19nZXRldmVudHMo KSFcbiIsIHJldCk7Ci0JCXV0X2Vycm9yOworCQkJLyogTWFyayB0aGlzIHJlcXVlc3QgYXMgY29t cGxldGVkLiBUaGUgZXJyb3IgaGFuZGxpbmcKKwkJCXdpbGwgYmUgZG9uZSBpbiB0aGUgY2FsbGlu ZyBmdW5jdGlvbi4gKi8KKwkJCW9zX211dGV4X2VudGVyKGFycmF5LT5tdXRleCk7CisJCQlzbG90 LT5uX2J5dGVzID0gZXZlbnRzW2ldLnJlczsKKwkJCXNsb3QtPnJldCA9IGV2ZW50c1tpXS5yZXMy OworCQkJc2xvdC0+aW9fYWxyZWFkeV9kb25lID0gVFJVRTsKKwkJCW9zX211dGV4X2V4aXQoYXJy YXktPm11dGV4KTsKKwkJfQorCQlyZXR1cm47CiAJfQogCi0JdXRfYShyZXQgPiAwKTsKLQotCWZv ciAoaSA9IDA7IGkgPCByZXQ7IGkrKykgewotCQlvc19haW9fc2xvdF90KglzbG90OwotCQlzdHJ1 Y3QgaW9jYioJY29udHJvbDsKLQotCQljb250cm9sID0gKHN0cnVjdCBpb2NiICopZXZlbnRzW2ld Lm9iajsKLQkJdXRfYShjb250cm9sICE9IE5VTEwpOwotCi0JCXNsb3QgPSAob3NfYWlvX3Nsb3Rf dCAqKSBjb250cm9sLT5kYXRhOwotCi0JCS8qIFNvbWUgc2FuaXR5IGNoZWNrcy4gKi8KLQkJdXRf YShzbG90ICE9IE5VTEwpOwotCQl1dF9hKHNsb3QtPnJlc2VydmVkKTsKLQotI2lmIGRlZmluZWQo VU5JVl9BSU9fREVCVUcpCi0JCWZwcmludGYoc3RkZXJyLAotCQkJImlvX2dldGV2ZW50c1slY106 IHNsb3RbJXBdIGN0eFslcF0iCi0JCQkiIHNlZ1slbHVdXG4iLAotCQkJKHNsb3QtPnR5cGUgPT0g T1NfRklMRV9XUklURSkgPyAndycgOiAncicsCi0JCQlzbG90LCBpb19jdHgsIHNlZ21lbnQpOwot I2VuZGlmCi0KLQkJLyogV2UgYXJlIG5vdCBzY3JpYmJsaW5nIHByZXZpb3VzIHNlZ21lbnQuICov Ci0JCXV0X2Eoc2xvdC0+cG9zID49IHN0YXJ0X3Bvcyk7CisJaWYgKFVOSVZfVU5MSUtFTFkoc3J2 X3NodXRkb3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMpKSB7CisJCXJldHVy bjsKKwl9CiAKLQkJLyogV2UgaGF2ZSBub3Qgb3ZlcnN0ZXBwZWQgdG8gbmV4dCBzZWdtZW50LiAq LwotCQl1dF9hKHNsb3QtPnBvcyA8IGVuZF9wb3MpOworCS8qIFRoaXMgZXJyb3IgaGFuZGxpbmcg aXMgZm9yIGFueSBlcnJvciBpbiBjb2xsZWN0aW5nIHRoZQorCUlPIHJlcXVlc3RzLiBUaGUgZXJy b3JzLCBpZiBhbnksIGZvciBhbnkgcGFydGljdWxhciBJTworCXJlcXVlc3QgYXJlIHNpbXBseSBw YXNzZWQgb24gdG8gdGhlIGNhbGxpbmcgcm91dGluZS4gKi8KIAotCQkvKiBNYXJrIHRoaXMgcmVx dWVzdCBhcyBjb21wbGV0ZWQuIFRoZSBlcnJvciBoYW5kbGluZwotCQl3aWxsIGJlIGRvbmUgaW4g dGhlIGNhbGxpbmcgZnVuY3Rpb24uICovCi0JCW9zX211dGV4X2VudGVyKGFycmF5LT5tdXRleCk7 Ci0JCXNsb3QtPm5fYnl0ZXMgPSBldmVudHNbaV0ucmVzOwotCQlzbG90LT5yZXQgPSBldmVudHNb aV0ucmVzMjsKLQkJc2xvdC0+aW9fYWxyZWFkeV9kb25lID0gVFJVRTsKLQkJb3NfbXV0ZXhfZXhp dChhcnJheS0+bXV0ZXgpOworCXN3aXRjaCAocmV0KSB7CisJY2FzZSAtRUFHQUlOOgorCQkvKiBO b3QgZW5vdWdoIHJlc291cmNlcyEgVHJ5IGFnYWluLiAqLworCWNhc2UgLUVJTlRSOgorCQkvKiBJ bnRlcnJ1cHRlZCEgSSBoYXZlIHRlc3RlZCB0aGUgYmVoYXZpb3VyIGluIGNhc2Ugb2YgYW4KKwkJ aW50ZXJydXB0LiBJZiB3ZSBoYXZlIHNvbWUgY29tcGxldGVkIElPcyBhdmFpbGFibGUgdGhlbgor CQl0aGUgcmV0dXJuIGNvZGUgd2lsbCBiZSB0aGUgbnVtYmVyIG9mIElPcy4gV2UgZ2V0IEVJTlRS IG9ubHkKKwkJaWYgdGhlcmUgYXJlIG5vIGNvbXBsZXRlZCBJT3MgYW5kIHdlIGhhdmUgYmVlbiBp bnRlcnJ1cHRlZC4gKi8KKwljYXNlIDA6CisJCS8qIE5vIHBlbmRpbmcgcmVxdWVzdCEgR28gYmFj ayBhbmQgY2hlY2sgYWdhaW4uICovCisJCWdvdG8gcmV0cnk7CiAJfQogCi0JcmV0dXJuOworCS8q IEFsbCBvdGhlciBlcnJvcnMgc2hvdWxkIGNhdXNlIGEgdHJhcCBmb3Igbm93LiAqLworCXV0X3By aW50X3RpbWVzdGFtcChzdGRlcnIpOworCWZwcmludGYoc3RkZXJyLAorCQkiICBJbm5vREI6IHVu ZXhwZWN0ZWQgcmV0X2NvZGVbJWRdIGZyb20gaW9fZ2V0ZXZlbnRzKCkhXG4iLAorCQlyZXQpOwor CXV0X2Vycm9yOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKQEAgLTQ1MzIsMjAgKzQ1MjgsMzUg QEAgb3NfYWlvX2xpbnV4X2hhbmRsZSgKIAogCS8qIExvb3AgdW50aWwgd2UgaGF2ZSBmb3VuZCBh IGNvbXBsZXRlZCByZXF1ZXN0LiAqLwogCWZvciAoOzspIHsKKwkJaWJvb2wJYW55X3Jlc2VydmVk ID0gRkFMU0U7CiAJCW9zX211dGV4X2VudGVyKGFycmF5LT5tdXRleCk7CiAJCWZvciAoaSA9IDA7 IGkgPCBuOyArK2kpIHsKIAkJCXNsb3QgPSBvc19haW9fYXJyYXlfZ2V0X250aF9zbG90KAotCQkJ CQlhcnJheSwgaSArIHNlZ21lbnQgKiBuKTsKLQkJCWlmIChzbG90LT5yZXNlcnZlZCAmJiBzbG90 LT5pb19hbHJlYWR5X2RvbmUpIHsKKwkJCQlhcnJheSwgaSArIHNlZ21lbnQgKiBuKTsKKwkJCWlm ICghc2xvdC0+cmVzZXJ2ZWQpIHsKKwkJCQljb250aW51ZTsKKwkJCX0gZWxzZSBpZiAoc2xvdC0+ aW9fYWxyZWFkeV9kb25lKSB7CiAJCQkJLyogU29tZXRoaW5nIGZvciB1cyB0byB3b3JrIG9uLiAq LwogCQkJCWdvdG8gZm91bmQ7CisJCQl9IGVsc2UgeworCQkJCWFueV9yZXNlcnZlZCA9IFRSVUU7 CiAJCQl9CiAJCX0KIAogCQlvc19tdXRleF9leGl0KGFycmF5LT5tdXRleCk7CiAKLQkJLyogV2Ug ZG9uJ3QgaGF2ZSBhbnkgY29tcGxldGVkIHJlcXVlc3QuCi0JCVdhaXQgZm9yIHNvbWUgcmVxdWVz dC4gTm90ZSB0aGF0IHdlIHJldHVybgorCQkvKiBUaGVyZSBpcyBubyBjb21wbGV0ZWQgcmVxdWVz dC4KKwkJSWYgdGhlcmUgaXMgbm8gcGVuZGluZyByZXF1ZXN0IGF0IGFsbCwKKwkJYW5kIHRoZSBz eXN0ZW0gaXMgYmVpbmcgc2h1dCBkb3duLCBleGl0LiAqLworCQlpZiAoVU5JVl9VTkxJS0VMWQor CQkgICAgKCFhbnlfcmVzZXJ2ZWQKKwkJICAgICAmJiBzcnZfc2h1dGRvd25fc3RhdGUgPT0gU1JW X1NIVVRET1dOX0VYSVRfVEhSRUFEUykpIHsKKwkJCSptZXNzYWdlMSA9IE5VTEw7CisJCQkqbWVz c2FnZTIgPSBOVUxMOworCQkJcmV0dXJuKFRSVUUpOworCQl9CisKKwkJLyogV2FpdCBmb3Igc29t ZSByZXF1ZXN0LiBOb3RlIHRoYXQgd2UgcmV0dXJuCiAJCWZyb20gd2FpdCBpZmYgd2UgaGF2ZSBm b3VuZCBhIHJlcXVlc3QuICovCiAKIAkJc3J2X3NldF9pb190aHJlYWRfb3BfaW5mbyhnbG9iYWxf c2VnLApAQCAtNDY0MSw2ICs0NjUyLDcgQEAgb3NfYWlvX3NpbXVsYXRlZF9oYW5kbGUoCiAJYnl0 ZSoJCWNvbWJpbmVkX2J1ZjsKIAlieXRlKgkJY29tYmluZWRfYnVmMjsKIAlpYm9vbAkJcmV0Owor CWlib29sCQlhbnlfcmVzZXJ2ZWQ7CiAJdWxpbnQJCW47CiAJdWxpbnQJCWk7CiAKQEAgLTQ2NzEs MTggKzQ2ODMsMjEgQEAgcmVzdGFydDoKIAkJZ290byByZWNvbW1lbmRlZF9zbGVlcDsKIAl9CiAK LQlvc19tdXRleF9lbnRlcihhcnJheS0+bXV0ZXgpOwotCiAJc3J2X3NldF9pb190aHJlYWRfb3Bf aW5mbyhnbG9iYWxfc2VnbWVudCwKIAkJCQkgICJsb29raW5nIGZvciBpL28gcmVxdWVzdHMgKGIp Iik7CiAKIAkvKiBDaGVjayBpZiB0aGVyZSBpcyBhIHNsb3QgZm9yIHdoaWNoIHRoZSBpL28gaGFz IGFscmVhZHkgYmVlbgogCWRvbmUgKi8KKwlhbnlfcmVzZXJ2ZWQgPSBGQUxTRTsKKworCW9zX211 dGV4X2VudGVyKGFycmF5LT5tdXRleCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAJ CXNsb3QgPSBvc19haW9fYXJyYXlfZ2V0X250aF9zbG90KGFycmF5LCBpICsgc2VnbWVudCAqIG4p OwogCi0JCWlmIChzbG90LT5yZXNlcnZlZCAmJiBzbG90LT5pb19hbHJlYWR5X2RvbmUpIHsKKwkJ aWYgKCFzbG90LT5yZXNlcnZlZCkgeworCQkJY29udGludWU7CisJCX0gZWxzZSBpZiAoc2xvdC0+ aW9fYWxyZWFkeV9kb25lKSB7CiAKIAkJCWlmIChvc19haW9fcHJpbnRfZGVidWcpIHsKIAkJCQlm cHJpbnRmKHN0ZGVyciwKQEAgLTQ2OTQsOSArNDcwOSwyMyBAQCByZXN0YXJ0OgogCQkJcmV0ID0g VFJVRTsKIAogCQkJZ290byBzbG90X2lvX2RvbmU7CisJCX0gZWxzZSB7CisJCQlhbnlfcmVzZXJ2 ZWQgPSBUUlVFOwogCQl9CiAJfQogCisJLyogVGhlcmUgaXMgbm8gY29tcGxldGVkIHJlcXVlc3Qu CisJSWYgdGhlcmUgaXMgbm8gcGVuZGluZyByZXF1ZXN0IGF0IGFsbCwKKwlhbmQgdGhlIHN5c3Rl bSBpcyBiZWluZyBzaHV0IGRvd24sIGV4aXQuICovCisJaWYgKFVOSVZfVU5MSUtFTFkKKwkgICAg KCFhbnlfcmVzZXJ2ZWQKKwkgICAgICYmIHNydl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERP V05fRVhJVF9USFJFQURTKSkgeworCQlvc19tdXRleF9leGl0KGFycmF5LT5tdXRleCk7CisJCSpt ZXNzYWdlMSA9IE5VTEw7CisJCSptZXNzYWdlMiA9IE5VTEw7CisJCXJldHVybihUUlVFKTsKKwl9 CisKIAluX2NvbnNlY3V0aXZlID0gMDsKIAogCS8qIElmIHRoZXJlIGFyZSBhdCBsZWFzdCAyIHNl Y29uZHMgb2xkIHJlcXVlc3RzLCB0aGVuIHBpY2sgdGhlIG9sZGVzdAoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvb3Mvb3Mwc3luYy5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNl L29zL29zMHN5bmMuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA1MDgzMDM4 LWhnYTllcThqcjNrOWg2eTQKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9vcy9vczBzeW5jLmMJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUxMTE4NTQtMng3Y21zbDNkenI1MzB1 ZQpAQCAtNTU4LDEwICs1NTgsNyBAQCBvc19ldmVudF9mcmVlKAogfQogCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVdhaXRz IGZvciBhbiBldmVudCBvYmplY3QgdW50aWwgaXQgaXMgaW4gdGhlIHNpZ25hbGVkIHN0YXRlLiBJ Zgotc3J2X3NodXRkb3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMgdGhpcyBh bHNvIGV4aXRzIHRoZQotd2FpdGluZyB0aHJlYWQgd2hlbiB0aGUgZXZlbnQgYmVjb21lcyBzaWdu YWxlZCAob3IgaW1tZWRpYXRlbHkgaWYgdGhlCi1ldmVudCBpcyBhbHJlYWR5IGluIHRoZSBzaWdu YWxlZCBzdGF0ZSkuCitXYWl0cyBmb3IgYW4gZXZlbnQgb2JqZWN0IHVudGlsIGl0IGlzIGluIHRo ZSBzaWduYWxlZCBzdGF0ZS4KIAogVHlwaWNhbGx5LCBpZiB0aGUgZXZlbnQgaGFzIGJlZW4gc2ln bmFsbGVkIGFmdGVyIHRoZSBvc19ldmVudF9yZXNldCgpCiB3ZSdsbCByZXR1cm4gaW1tZWRpYXRl bHkgYmVjYXVzZSBldmVudC0+aXNfc2V0ID09IFRSVUUuCkBAIC01ODYsOCArNTgzLDYgQEAgb3Nf ZXZlbnRfd2FpdF9sb3coCiAJCQkJCXJldHVybmVkIGJ5IHByZXZpb3VzIGNhbGwgb2YKIAkJCQkJ b3NfZXZlbnRfcmVzZXQoKS4gKi8KIHsKLQlpYl9pbnQ2NF90CW9sZF9zaWduYWxfY291bnQ7Ci0K ICNpZmRlZiBfX1dJTl9fCiAJaWYoIXNydl91c2VfbmF0aXZlX2NvbmRpdGlvbnMpIHsKIAkJRFdP UkQJZXJyOwpAQCAtNjAwLDQzICs1OTUsMjUgQEAgb3NfZXZlbnRfd2FpdF9sb3coCiAJCWVyciA9 IFdhaXRGb3JTaW5nbGVPYmplY3QoZXZlbnQtPmhhbmRsZSwgSU5GSU5JVEUpOwogCiAJCXV0X2Eo ZXJyID09IFdBSVRfT0JKRUNUXzApOwotCi0JCWlmIChzcnZfc2h1dGRvd25fc3RhdGUgPT0gU1JW X1NIVVRET1dOX0VYSVRfVEhSRUFEUykgewotCQkJb3NfdGhyZWFkX2V4aXQoTlVMTCk7Ci0JCX0K IAkJcmV0dXJuOwogCX0KICNlbmRpZgogCi0Jb3NfZmFzdF9tdXRleF9sb2NrKCYoZXZlbnQtPm9z X211dGV4KSk7CisJb3NfZmFzdF9tdXRleF9sb2NrKCZldmVudC0+b3NfbXV0ZXgpOwogCi0JaWYg KHJlc2V0X3NpZ19jb3VudCkgewotCQlvbGRfc2lnbmFsX2NvdW50ID0gcmVzZXRfc2lnX2NvdW50 OwotCX0gZWxzZSB7Ci0JCW9sZF9zaWduYWxfY291bnQgPSBldmVudC0+c2lnbmFsX2NvdW50Owor CWlmICghcmVzZXRfc2lnX2NvdW50KSB7CisJCXJlc2V0X3NpZ19jb3VudCA9IGV2ZW50LT5zaWdu YWxfY291bnQ7CiAJfQogCi0JZm9yICg7OykgewotCQlpZiAoZXZlbnQtPmlzX3NldCA9PSBUUlVF Ci0JCSAgICB8fCBldmVudC0+c2lnbmFsX2NvdW50ICE9IG9sZF9zaWduYWxfY291bnQpIHsKLQot CQkJb3NfZmFzdF9tdXRleF91bmxvY2soJihldmVudC0+b3NfbXV0ZXgpKTsKLQotCQkJaWYgKHNy dl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJVF9USFJFQURTKSB7Ci0KLQkJCQlv c190aHJlYWRfZXhpdChOVUxMKTsKLQkJCX0KLQkJCS8qIE9rLCB3ZSBtYXkgcmV0dXJuICovCi0K LQkJCXJldHVybjsKLQkJfQotCisJd2hpbGUgKCFldmVudC0+aXNfc2V0ICYmIGV2ZW50LT5zaWdu YWxfY291bnQgPT0gcmVzZXRfc2lnX2NvdW50KSB7CiAJCW9zX2NvbmRfd2FpdCgmKGV2ZW50LT5j b25kX3ZhciksICYoZXZlbnQtPm9zX211dGV4KSk7CiAKIAkJLyogU29sYXJpcyBtYW51YWwgc2Fp ZCB0aGF0IHNwdXJpb3VzIHdha2V1cHMgbWF5IG9jY3VyOiB3ZQogCQloYXZlIHRvIGNoZWNrIGlm IHRoZSBldmVudCByZWFsbHkgaGFzIGJlZW4gc2lnbmFsZWQgYWZ0ZXIKIAkJd2UgY2FtZSBoZXJl IHRvIHdhaXQgKi8KIAl9CisKKwlvc19mYXN0X211dGV4X3VubG9jaygmZXZlbnQtPm9zX211dGV4 KTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCkBAIC02NTcsNyArNjM0LDYgQEAgb3NfZXZlbnRfd2FpdF90aW1lX2xv dygKIAogewogCWlib29sCQl0aW1lZF9vdXQgPSBGQUxTRTsKLQlpYl9pbnQ2NF90CW9sZF9zaWdu YWxfY291bnQ7CiAKICNpZmRlZiBfX1dJTl9fCiAJRFdPUkQJCXRpbWVfaW5fbXM7CkBAIC03Mjcs MTUgKzcwMywxMiBAQCBvc19ldmVudF93YWl0X3RpbWVfbG93KAogCiAJb3NfZmFzdF9tdXRleF9s b2NrKCZldmVudC0+b3NfbXV0ZXgpOwogCi0JaWYgKHJlc2V0X3NpZ19jb3VudCkgewotCQlvbGRf c2lnbmFsX2NvdW50ID0gcmVzZXRfc2lnX2NvdW50OwotCX0gZWxzZSB7Ci0JCW9sZF9zaWduYWxf Y291bnQgPSBldmVudC0+c2lnbmFsX2NvdW50OworCWlmICghcmVzZXRfc2lnX2NvdW50KSB7CisJ CXJlc2V0X3NpZ19jb3VudCA9IGV2ZW50LT5zaWduYWxfY291bnQ7CiAJfQogCiAJZG8gewotCQlp ZiAoZXZlbnQtPmlzX3NldCA9PSBUUlVFCi0JCSAgICB8fCBldmVudC0+c2lnbmFsX2NvdW50ICE9 IG9sZF9zaWduYWxfY291bnQpIHsKKwkJaWYgKGV2ZW50LT5pc19zZXQgfHwgZXZlbnQtPnNpZ25h bF9jb3VudCAhPSByZXNldF9zaWdfY291bnQpIHsKIAogCQkJYnJlYWs7CiAJCX0KQEAgLTc1Mywx MSArNzI2LDYgQEAgb3NfZXZlbnRfd2FpdF90aW1lX2xvdygKIAogCW9zX2Zhc3RfbXV0ZXhfdW5s b2NrKCZldmVudC0+b3NfbXV0ZXgpOwogCi0JaWYgKHNydl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZf U0hVVERPV05fRVhJVF9USFJFQURTKSB7Ci0KLQkJb3NfdGhyZWFkX2V4aXQoTlVMTCk7Ci0JfQot CiAJcmV0dXJuKHRpbWVkX291dCA/IE9TX1NZTkNfVElNRV9FWENFRURFRCA6IDApOwogfQogCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9vcy9vczB0aHJlYWQuYycKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9vcy9vczB0aHJlYWQuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUu Y29tLTIwMTEwNDA1MDgzMDM4LWhnYTllcThqcjNrOWg2eTQKKysrIGIvc3RvcmFnZS9pbm5vYmFz ZS9vcy9vczB0aHJlYWQuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTEx MTg1NC0yeDdjbXNsM2R6cjUzMHVlCkBAIC0yMjAsMjEgKzIyMCw2IEBAIG9zX3RocmVhZF9leGl0 KAogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCi1SZXR1cm5zIGhhbmRsZSB0byB0aGUgY3VycmVudCB0aHJl YWQuCi1AcmV0dXJuCWN1cnJlbnQgdGhyZWFkIGhhbmRsZSAqLwotVU5JVl9JTlRFUk4KLW9zX3Ro cmVhZF90Ci1vc190aHJlYWRfZ2V0X2N1cnIodm9pZCkKLS8qPT09PT09PT09PT09PT09PT09PT0q LwotewotI2lmZGVmIF9fV0lOX18KLQlyZXR1cm4oR2V0Q3VycmVudFRocmVhZCgpKTsKLSNlbHNl Ci0JcmV0dXJuKHB0aHJlYWRfc2VsZigpKTsKLSNlbmRpZgotfQotCi0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBB ZHZpc2VzIHRoZSBvcyB0byBnaXZlIHVwIHJlbWFpbmRlciBvZiB0aGUgdGhyZWFkJ3MgdGltZSBz bGljZS4gKi8KIFVOSVZfSU5URVJOCiB2b2lkCkBAIC0yNzQsODEgKzI1OSwzIEBAIG9zX3RocmVh ZF9zbGVlcCgKIAlzZWxlY3QoMCwgTlVMTCwgTlVMTCwgTlVMTCwgJnQpOwogI2VuZGlmCiB9Ci0K LSNpZm5kZWYgVU5JVl9IT1RCQUNLVVAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1TZXRzIGEgdGhyZWFkIHBy aW9yaXR5LiAqLwotVU5JVl9JTlRFUk4KLXZvaWQKLW9zX3RocmVhZF9zZXRfcHJpb3JpdHkoCi0v Kj09PT09PT09PT09PT09PT09PT0qLwotCW9zX3RocmVhZF90CWhhbmRsZSwJLyohPCBpbjogT1Mg aGFuZGxlIHRvIHRoZSB0aHJlYWQgKi8KLQl1bGludAkJcHJpKQkvKiE8IGluOiBwcmlvcml0eSAq LwotewotI2lmZGVmIF9fV0lOX18KLQlpbnQJb3NfcHJpOwotCi0JaWYgKHByaSA9PSBPU19USFJF QURfUFJJT1JJVFlfQkFDS0dST1VORCkgewotCQlvc19wcmkgPSBUSFJFQURfUFJJT1JJVFlfQkVM T1dfTk9STUFMOwotCX0gZWxzZSBpZiAocHJpID09IE9TX1RIUkVBRF9QUklPUklUWV9OT1JNQUwp IHsKLQkJb3NfcHJpID0gVEhSRUFEX1BSSU9SSVRZX05PUk1BTDsKLQl9IGVsc2UgaWYgKHByaSA9 PSBPU19USFJFQURfUFJJT1JJVFlfQUJPVkVfTk9STUFMKSB7Ci0JCW9zX3ByaSA9IFRIUkVBRF9Q UklPUklUWV9ISUdIRVNUOwotCX0gZWxzZSB7Ci0JCXV0X2Vycm9yOwotCX0KLQotCXV0X2EoU2V0 VGhyZWFkUHJpb3JpdHkoaGFuZGxlLCBvc19wcmkpKTsKLSNlbHNlCi0JVVRfTk9UX1VTRUQoaGFu ZGxlKTsKLQlVVF9OT1RfVVNFRChwcmkpOwotI2VuZGlmCi19Ci0KLS8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1H ZXRzIGEgdGhyZWFkIHByaW9yaXR5LgotQHJldHVybglwcmlvcml0eSAqLwotVU5JVl9JTlRFUk4K LXVsaW50Ci1vc190aHJlYWRfZ2V0X3ByaW9yaXR5KAotLyo9PT09PT09PT09PT09PT09PT09Ki8K LQlvc190aHJlYWRfdAloYW5kbGUgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCi0JCQkJLyohPCBp bjogT1MgaGFuZGxlIHRvIHRoZSB0aHJlYWQgKi8KLXsKLSNpZmRlZiBfX1dJTl9fCi0JaW50CW9z X3ByaTsKLQl1bGludAlwcmk7Ci0KLQlvc19wcmkgPSBHZXRUaHJlYWRQcmlvcml0eShoYW5kbGUp OwotCi0JaWYgKG9zX3ByaSA9PSBUSFJFQURfUFJJT1JJVFlfQkVMT1dfTk9STUFMKSB7Ci0JCXBy aSA9IE9TX1RIUkVBRF9QUklPUklUWV9CQUNLR1JPVU5EOwotCX0gZWxzZSBpZiAob3NfcHJpID09 IFRIUkVBRF9QUklPUklUWV9OT1JNQUwpIHsKLQkJcHJpID0gT1NfVEhSRUFEX1BSSU9SSVRZX05P Uk1BTDsKLQl9IGVsc2UgaWYgKG9zX3ByaSA9PSBUSFJFQURfUFJJT1JJVFlfSElHSEVTVCkgewot CQlwcmkgPSBPU19USFJFQURfUFJJT1JJVFlfQUJPVkVfTk9STUFMOwotCX0gZWxzZSB7Ci0JCXV0 X2Vycm9yOwotCX0KLQotCXJldHVybihwcmkpOwotI2Vsc2UKLQlyZXR1cm4oMCk7Ci0jZW5kaWYK LX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKLUdldHMgdGhlIGxhc3Qgb3BlcmF0aW5nIHN5c3RlbSBlcnJv ciBjb2RlIGZvciB0aGUgY2FsbGluZyB0aHJlYWQuCi1AcmV0dXJuCWxhc3QgZXJyb3Igb24gV2lu ZG93cywgMCBvdGhlcndpc2UgKi8KLVVOSVZfSU5URVJOCi11bGludAotb3NfdGhyZWFkX2dldF9s YXN0X2Vycm9yKHZvaWQpCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLXsKLSNpZmRl ZiBfX1dJTl9fCi0JcmV0dXJuKEdldExhc3RFcnJvcigpKTsKLSNlbHNlCi0JcmV0dXJuKDApOwot I2VuZGlmCi19Ci0jZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MG1lcmdlLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2Uvcm93L3JvdzBtZXJnZS5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDUw ODMwMzgtaGdhOWVxOGpyM2s5aDZ5NAorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVy Z2UuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTExMTg1NC0yeDdjbXNs M2R6cjUzMHVlCkBAIC0xOTI5LDcgKzE5MjksNiBAQCByb3dfbWVyZ2VfbG9ja190YWJsZSgKIAlz ZWxfbm9kZV90Kglub2RlOwogCiAJdXRfYWQodHJ4KTsKLQl1dF9hZCh0cngtPm15c3FsX3RocmVh ZF9pZCA9PSBvc190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAJdXRfYWQobW9kZSA9PSBMT0NLX1gg fHwgbW9kZSA9PSBMT0NLX1MpOwogCiAJaGVhcCA9IG1lbV9oZWFwX2NyZWF0ZSg1MTIpOwpAQCAt MjM5MCw3ICsyMzg5LDYgQEAgcm93X21lcmdlX3JlbmFtZV90YWJsZXMoCiAJcGFyc19pbmZvX3Qq CWluZm87CiAJY2hhcgkJb2xkX25hbWVbTUFYX0ZVTExfTkFNRV9MRU4gKyAxXTsKIAotCXV0X2Fk KHRyeC0+bXlzcWxfdGhyZWFkX2lkID09IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgpKTsKIAl1dF9h ZChvbGRfdGFibGUgIT0gbmV3X3RhYmxlKTsKIAl1dF9hZChtdXRleF9vd24oJmRpY3Rfc3lzLT5t dXRleCkpOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MG15 c3FsLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5jCXJldmlkOnZhc2ls LmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDUwODMwMzgtaGdhOWVxOGpyM2s5aDZ5NAorKysgYi9z dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbXlzcWwuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMDQwNTExMTg1NC0yeDdjbXNsM2R6cjUzMHVlCkBAIC05NzYsNyArOTc2LDYgQEAg cm93X2xvY2tfdGFibGVfYXV0b2luY19mb3JfbXlzcWwoCiAJaWJvb2wJCQl3YXNfbG9ja193YWl0 OwogCiAJdXRfYWQodHJ4KTsKLQl1dF9hZCh0cngtPm15c3FsX3RocmVhZF9pZCA9PSBvc190aHJl YWRfZ2V0X2N1cnJfaWQoKSk7CiAKIAkvKiBJZiB3ZSBhbHJlYWR5IGhvbGQgYW4gQVVUT0lOQyBs b2NrIG9uIHRoZSB0YWJsZSB0aGVuIGRvIG5vdGhpbmcuCiAgICAgICAgIE5vdGU6IFdlIHBlZWsg YXQgdGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IG93bmVyIHdpdGhvdXQgYWNxdWlyaW5nCkBAIC0x MDU2LDcgKzEwNTUsNiBAQCByb3dfbG9ja190YWJsZV9mb3JfbXlzcWwoCiAJaWJvb2wJCXdhc19s b2NrX3dhaXQ7CiAKIAl1dF9hZCh0cngpOwotCXV0X2FkKHRyeC0+bXlzcWxfdGhyZWFkX2lkID09 IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgpKTsKIAogCXRyeC0+b3BfaW5mbyA9ICJzZXR0aW5nIHRh YmxlIGxvY2siOwogCkBAIC0xMTMwLDcgKzExMjgsNiBAQCByb3dfaW5zZXJ0X2Zvcl9teXNxbCgK IAlpbnNfbm9kZV90Kglub2RlCQk9IHByZWJ1aWx0LT5pbnNfbm9kZTsKIAogCXV0X2FkKHRyeCk7 Ci0JdXRfYWQodHJ4LT5teXNxbF90aHJlYWRfaWQgPT0gb3NfdGhyZWFkX2dldF9jdXJyX2lkKCkp OwogCiAJaWYgKHByZWJ1aWx0LT50YWJsZS0+aWJkX2ZpbGVfbWlzc2luZykgewogCQl1dF9wcmlu dF90aW1lc3RhbXAoc3RkZXJyKTsKQEAgLTEzNjQsNyArMTM2MSw2IEBAIHJvd191cGRhdGVfZm9y X215c3FsKAogCXRyeF90KgkJdHJ4CQk9IHByZWJ1aWx0LT50cng7CiAKIAl1dF9hZChwcmVidWls dCAmJiB0cngpOwotCXV0X2FkKHRyeC0+bXlzcWxfdGhyZWFkX2lkID09IG9zX3RocmVhZF9nZXRf Y3Vycl9pZCgpKTsKIAlVVF9OT1RfVVNFRChteXNxbF9yZWMpOwogCiAJaWYgKHByZWJ1aWx0LT50 YWJsZS0+aWJkX2ZpbGVfbWlzc2luZykgewpAQCAtMTUzMiw3ICsxNTI4LDYgQEAgcm93X3VubG9j a19mb3JfbXlzcWwoCiAJdHJ4X3QqCQl0cngJCT0gcHJlYnVpbHQtPnRyeDsKIAogCXV0X2FkKHBy ZWJ1aWx0ICYmIHRyeCk7Ci0JdXRfYWQodHJ4LT5teXNxbF90aHJlYWRfaWQgPT0gb3NfdGhyZWFk X2dldF9jdXJyX2lkKCkpOwogCiAJaWYgKFVOSVZfVU5MSUtFTFkKIAkgICAgKCFzcnZfbG9ja3Nf dW5zYWZlX2Zvcl9iaW5sb2cKQEAgLTE4MzQsNyArMTgyOSw2IEBAIHJvd19jcmVhdGVfdGFibGVf Zm9yX215c3FsKAogCXVsaW50CQl0YWJsZV9uYW1lX2xlbjsKIAl1bGludAkJZXJyOwogCi0JdXRf YWQodHJ4LT5teXNxbF90aHJlYWRfaWQgPT0gb3NfdGhyZWFkX2dldF9jdXJyX2lkKCkpOwogI2lm ZGVmIFVOSVZfU1lOQ19ERUJVRwogCXV0X2FkKHJ3X2xvY2tfb3duKCZkaWN0X29wZXJhdGlvbl9s b2NrLCBSV19MT0NLX0VYKSk7CiAjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCkBAIC0yMDA4 LDcgKzIwMDIsNiBAQCByb3dfY3JlYXRlX2luZGV4X2Zvcl9teXNxbCgKIAl1dF9hZChyd19sb2Nr X293bigmZGljdF9vcGVyYXRpb25fbG9jaywgUldfTE9DS19FWCkpOwogI2VuZGlmIC8qIFVOSVZf U1lOQ19ERUJVRyAqLwogCXV0X2FkKG11dGV4X293bigmKGRpY3Rfc3lzLT5tdXRleCkpKTsKLQl1 dF9hZCh0cngtPm15c3FsX3RocmVhZF9pZCA9PSBvc190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAK IAl0cngtPm9wX2luZm8gPSAiY3JlYXRpbmcgaW5kZXgiOwogCkBAIC0yNDExLDggKzI0MDQsNiBA QCByb3dfZGlzY2FyZF90YWJsZXNwYWNlX2Zvcl9teXNxbCgKIAl0YWJsZS0+bl9mb3JlaWduX2tl eV9jaGVja3NfcnVubmluZyA+IDAsIHdlIGRvIG5vdCBhbGxvdyB0aGUKIAlkaXNjYXJkLiBXZSBh bHNvIHJlc2VydmUgdGhlIGRhdGEgZGljdGlvbmFyeSBsYXRjaC4gKi8KIAotCXV0X2FkKHRyeC0+ bXlzcWxfdGhyZWFkX2lkID09IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgpKTsKLQogCXRyeC0+b3Bf aW5mbyA9ICJkaXNjYXJkaW5nIHRhYmxlc3BhY2UiOwogCXRyeF9zdGFydF9pZl9ub3Rfc3RhcnRl ZCh0cngpOwogCkBAIC0yNTcxLDggKzI1NjIsNiBAQCByb3dfaW1wb3J0X3RhYmxlc3BhY2VfZm9y X215c3FsKAogCWliX3VpbnQ2NF90CWN1cnJlbnRfbHNuOwogCXVsaW50CQllcnIJCT0gREJfU1VD Q0VTUzsKIAotCXV0X2FkKHRyeC0+bXlzcWxfdGhyZWFkX2lkID09IG9zX3RocmVhZF9nZXRfY3Vy cl9pZCgpKTsKLQogCXRyeF9zdGFydF9pZl9ub3Rfc3RhcnRlZCh0cngpOwogCiAJdHJ4LT5vcF9p bmZvID0gImltcG9ydGluZyB0YWJsZXNwYWNlIjsKQEAgLTI3NTYsNyArMjc0NSw2IEBAIHJvd190 cnVuY2F0ZV90YWJsZV9mb3JfbXlzcWwoCiAJcmVkbyBsb2cgcmVjb3JkcyBvbiB0aGUgdHJ1bmNh dGVkIHRhYmxlc3BhY2UsIHdlIHdpbGwgYXNzaWduCiAJYSBuZXcgdGFibGVzcGFjZSBpZGVudGlm aWVyIHRvIHRoZSB0cnVuY2F0ZWQgdGFibGVzcGFjZS4gKi8KIAotCXV0X2FkKHRyeC0+bXlzcWxf dGhyZWFkX2lkID09IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgpKTsKIAl1dF9hZCh0YWJsZSk7CiAK IAlpZiAoc3J2X2NyZWF0ZWRfbmV3X3JhdykgewpAQCAtMzYwNyw3ICszNTk1LDYgQEAgcm93X2Ry b3BfZGF0YWJhc2VfZm9yX215c3FsKAogCWludAllcnIJPSBEQl9TVUNDRVNTOwogCXVsaW50CW5h bWVsZW4JPSBzdHJsZW4obmFtZSk7CiAKLQl1dF9hZCh0cngtPm15c3FsX3RocmVhZF9pZCA9PSBv c190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAJdXRfYShuYW1lICE9IE5VTEwpOwogCXV0X2EobmFt ZVtuYW1lbGVuIC0gMV0gPT0gJy8nKTsKIApAQCAtMzc3Nyw3ICszNzY0LDYgQEAgcm93X3JlbmFt ZV90YWJsZV9mb3JfbXlzcWwoCiAJaWJvb2wJCW9sZF9pc190bXAsIG5ld19pc190bXA7CiAJcGFy c19pbmZvX3QqCWluZm8JCQk9IE5VTEw7CiAKLQl1dF9hZCh0cngtPm15c3FsX3RocmVhZF9pZCA9 PSBvc190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAJdXRfYShvbGRfbmFtZSAhPSBOVUxMKTsKIAl1 dF9hKG5ld19uYW1lICE9IE5VTEwpOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9yb3cvcm93MHNlbC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2VsLmMJ cmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNTA4MzAzOC1oZ2E5ZXE4anIzazlo Nnk0CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBzZWwuYwlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMDQwNTExMTg1NC0yeDdjbXNsM2R6cjUzMHVlCkBAIC0xOTUxLDcg KzE5NTEsNyBAQCBzdG9wX2Zvcl9hX3doaWxlOgogCW10cl9jb21taXQoJm10cik7CiAKICNpZmRl ZiBVTklWX1NZTkNfREVCVUcKLQl1dF9hZChzeW5jX3RocmVhZF9sZXZlbHNfZW1wdHlfZ2VuKFRS VUUpKTsKKwl1dF9hZChzeW5jX3RocmVhZF9sZXZlbHNfZW1wdHlfZXhjZXB0X2RpY3QoKSk7CiAj ZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCiAJZXJyID0gREJfU1VDQ0VTUzsKIAlnb3RvIGZ1 bmNfZXhpdDsKQEAgLTE5NzEsNyArMTk3MSw3IEBAIGNvbW1pdF9tdHJfZm9yX2Ffd2hpbGU6CiAJ bXRyX2hhc19leHRyYV9jbHVzdF9sYXRjaCA9IEZBTFNFOwogCiAjaWZkZWYgVU5JVl9TWU5DX0RF QlVHCi0JdXRfYWQoc3luY190aHJlYWRfbGV2ZWxzX2VtcHR5X2dlbihUUlVFKSk7CisJdXRfYWQo c3luY190aHJlYWRfbGV2ZWxzX2VtcHR5X2V4Y2VwdF9kaWN0KCkpOwogI2VuZGlmIC8qIFVOSVZf U1lOQ19ERUJVRyAqLwogCiAJZ290byB0YWJsZV9sb29wOwpAQCAtMTk4OCw3ICsxOTg4LDcgQEAg bG9ja193YWl0X29yX2Vycm9yOgogCW10cl9jb21taXQoJm10cik7CiAKICNpZmRlZiBVTklWX1NZ TkNfREVCVUcKLQl1dF9hZChzeW5jX3RocmVhZF9sZXZlbHNfZW1wdHlfZ2VuKFRSVUUpKTsKKwl1 dF9hZChzeW5jX3RocmVhZF9sZXZlbHNfZW1wdHlfZXhjZXB0X2RpY3QoKSk7CiAjZW5kaWYgLyog VU5JVl9TWU5DX0RFQlVHICovCiAKIGZ1bmNfZXhpdDoKQEAgLTMzNzAsNyArMzM3MCw2IEBAIHJv d19zZWFyY2hfZm9yX215c3FsKAogCXJlY19vZmZzX2luaXQob2Zmc2V0c18pOwogCiAJdXRfYWQo aW5kZXggJiYgcGN1ciAmJiBzZWFyY2hfdHVwbGUpOwotCXV0X2FkKHRyeC0+bXlzcWxfdGhyZWFk X2lkID09IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgpKTsKIAogCWlmIChVTklWX1VOTElLRUxZKHBy ZWJ1aWx0LT50YWJsZS0+aWJkX2ZpbGVfbWlzc2luZykpIHsKIAkJdXRfcHJpbnRfdGltZXN0YW1w KHN0ZGVycik7CkBAIC0zMzg3LDExICszMzg2LDE3IEBAIHJvd19zZWFyY2hfZm9yX215c3FsKAog CQkJIklubm9EQjogaG93IHlvdSBjYW4gcmVzb2x2ZSB0aGUgcHJvYmxlbS5cbiIsCiAJCQlwcmVi dWlsdC0+dGFibGUtPm5hbWUpOwogCisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisJCXV0X2FkKCFz eW5jX3RocmVhZF9sZXZlbHNfbm9uZW1wdHlfdHJ4KHRyeC0+aGFzX3NlYXJjaF9sYXRjaCkpOwor I2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogCQlyZXR1cm4oREJfRVJST1IpOwogCX0KIAog CWlmIChVTklWX1VOTElLRUxZKCFwcmVidWlsdC0+aW5kZXhfdXNhYmxlKSkgewogCisjaWZkZWYg VU5JVl9TWU5DX0RFQlVHCisJCXV0X2FkKCFzeW5jX3RocmVhZF9sZXZlbHNfbm9uZW1wdHlfdHJ4 KHRyeC0+aGFzX3NlYXJjaF9sYXRjaCkpOworI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLwog CQlyZXR1cm4oREJfTUlTU0lOR19ISVNUT1JZKTsKIAl9CiAKQEAgLTQ2ODAsNiArNDY4NSwxMCBA QCBmdW5jX2V4aXQ6CiAJCQlwcmVidWlsdC0+cm93X3JlYWRfdHlwZSA9IFJPV19SRUFEX1RSWV9T RU1JX0NPTlNJU1RFTlQ7CiAJCX0KIAl9CisKKyNpZmRlZiBVTklWX1NZTkNfREVCVUcKKwl1dF9h ZCghc3luY190aHJlYWRfbGV2ZWxzX25vbmVtcHR5X3RyeCh0cngtPmhhc19zZWFyY2hfbGF0Y2gp KTsKKyNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIAlyZXR1cm4oZXJyKTsKIH0KIAoKPT09 IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzcnYuYycKLS0tIGEvc3Rv cmFnZS9pbm5vYmFzZS9zcnYvc3J2MHNydi5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20t MjAxMTA0MDUwODMwMzgtaGdhOWVxOGpyM2s5aDZ5NAorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Ny di9zcnYwc3J2LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUxMTE4NTQt Mng3Y21zbDNkenI1MzB1ZQpAQCAtNjg3LDggKzY4Nyw2IEBAIFVuaXguKi8KIAogLyogVGhyZWFk IHNsb3QgaW4gdGhlIHRocmVhZCB0YWJsZSAqLwogc3RydWN0IHNydl9zbG90X3N0cnVjdHsKLQlv c190aHJlYWRfaWRfdAlpZDsJCS8qITwgdGhyZWFkIGlkICovCi0Jb3NfdGhyZWFkX3QJaGFuZGxl OwkJLyohPCB0aHJlYWQgaGFuZGxlICovCiAJdW5zaWduZWQJdHlwZToxOwkJLyohPCB0aHJlYWQg dHlwZTogdXNlciwgdXRpbGl0eSBldGMuICovCiAJdW5zaWduZWQJaW5fdXNlOjE7CS8qITwgVFJV RSBpZiB0aGlzIHNsb3QgaXMgaW4gdXNlICovCiAJdW5zaWduZWQJc3VzcGVuZGVkOjE7CS8qITwg VFJVRSBpZiB0aGUgdGhyZWFkIGlzIHdhaXRpbmcKQEAgLTg4Nyw4ICs4ODUsNiBAQCBzcnZfdGFi bGVfcmVzZXJ2ZV9zbG90KAogCXNsb3QtPnN1c3BlbmRlZCA9IEZBTFNFOwogCXNsb3QtPnR5cGUg PSB0eXBlOwogCXV0X2FkKHNydl9zbG90X2dldF90eXBlKHNsb3QpID09IHR5cGUpOwotCXNsb3Qt PmlkID0gb3NfdGhyZWFkX2dldF9jdXJyX2lkKCk7Ci0Jc2xvdC0+aGFuZGxlID0gb3NfdGhyZWFk X2dldF9jdXJyKCk7CiAKIAlyZXR1cm4oc2xvdCk7CiB9CkBAIC05MDcsNyArOTAzLDYgQEAgc3J2 X3N1c3BlbmRfdGhyZWFkKAogCXV0X2FkKG11dGV4X293bigma2VybmVsX211dGV4KSk7CiAJdXRf YWQoc2xvdC0+aW5fdXNlKTsKIAl1dF9hZCghc2xvdC0+c3VzcGVuZGVkKTsKLQl1dF9hZChzbG90 LT5pZCA9PSBvc190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAKIAlpZiAoc3J2X3ByaW50X3RocmVh ZF9yZWxlYXNlcykgewogCQlmcHJpbnRmKHN0ZGVyciwKQEAgLTk2MiwxMCArOTU3LDkgQEAgc3J2 X3JlbGVhc2VfdGhyZWFkcygKIAogCQkJaWYgKHNydl9wcmludF90aHJlYWRfcmVsZWFzZXMpIHsK IAkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJIlJlbGVhc2luZyB0aHJlYWQgJWx1IHR5cGUgJWx1 IgorCQkJCQkiUmVsZWFzaW5nIHRocmVhZCB0eXBlICVsdSIKIAkJCQkJIiBmcm9tIHNsb3QgJWx1 XG4iLAotCQkJCQkodWxvbmcpIHNsb3QtPmlkLCAodWxvbmcpIHR5cGUsCi0JCQkJCSh1bG9uZykg aSk7CisJCQkJCSh1bG9uZykgdHlwZSwgKHVsb25nKSBpKTsKIAkJCX0KIAogCQkJY291bnQrKzsK QEAgLTExNDksNiArMTE0MywxMCBAQCBzcnZfY29uY19lbnRlcl9pbm5vZGIoCiAJc3J2X2NvbmNf c2xvdF90KglzbG90CSAgPSBOVUxMOwogCXVsaW50CQkJaTsKIAorI2lmZGVmIFVOSVZfU1lOQ19E RUJVRworCXV0X2FkKCFzeW5jX3RocmVhZF9sZXZlbHNfbm9uZW1wdHlfdHJ4KHRyeC0+aGFzX3Nl YXJjaF9sYXRjaCkpOworI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLworCiAJaWYgKHRyeC0+ bXlzcWxfdGhkICE9IE5VTEwKIAkgICAgJiYgdGhkX2lzX3JlcGxpY2F0aW9uX3NsYXZlX3RocmVh ZCh0cngtPm15c3FsX3RoZCkpIHsKIApAQCAtMTI3Miw2ICsxMjcwLDEwIEBAIHJldHJ5OgogCS8q IEdvIHRvIHdhaXQgZm9yIHRoZSBldmVudDsgd2hlbiBhIHRocmVhZCBsZWF2ZXMgSW5ub0RCIGl0 IHdpbGwKIAlyZWxlYXNlIHRoaXMgdGhyZWFkICovCiAKKwl1dF9hZCghdHJ4LT5oYXNfc2VhcmNo X2xhdGNoKTsKKyNpZmRlZiBVTklWX1NZTkNfREVCVUcKKwl1dF9hZCghc3luY190aHJlYWRfbGV2 ZWxzX25vbmVtcHR5X3RyeCh0cngtPmhhc19zZWFyY2hfbGF0Y2gpKTsKKyNlbmRpZiAvKiBVTklW X1NZTkNfREVCVUcgKi8KIAl0cngtPm9wX2luZm8gPSAid2FpdGluZyBpbiBJbm5vREIgcXVldWUi OwogCiAJdGhkX3dhaXRfYmVnaW4odHJ4LT5teXNxbF90aGQsIFRIRF9XQUlUX1JPV19UQUJMRV9M T0NLKTsKQEAgLTEzMDcsNiArMTMwOSwxMCBAQCBzcnZfY29uY19mb3JjZV9lbnRlcl9pbm5vZGIo CiAJdHJ4X3QqCXRyeCkJLyohPCBpbjogdHJhbnNhY3Rpb24gb2JqZWN0IGFzc29jaWF0ZWQgd2l0 aCB0aGUKIAkJCXRocmVhZCAqLwogeworI2lmZGVmIFVOSVZfU1lOQ19ERUJVRworCXV0X2FkKCFz eW5jX3RocmVhZF9sZXZlbHNfbm9uZW1wdHlfdHJ4KHRyeC0+aGFzX3NlYXJjaF9sYXRjaCkpOwor I2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLworCiAJaWYgKFVOSVZfTElLRUxZKCFzcnZfdGhy ZWFkX2NvbmN1cnJlbmN5KSkgewogCiAJCXJldHVybjsKQEAgLTEzNzgsNiArMTM4NCwxMCBAQCBz cnZfY29uY19mb3JjZV9leGl0X2lubm9kYigKIAlpZiAoc2xvdCAhPSBOVUxMKSB7CiAJCW9zX2V2 ZW50X3NldChzbG90LT5ldmVudCk7CiAJfQorCisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisJdXRf YWQoIXN5bmNfdGhyZWFkX2xldmVsc19ub25lbXB0eV90cngodHJ4LT5oYXNfc2VhcmNoX2xhdGNo KSk7CisjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCiB9CiAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CkBAIC0xMzg5LDYgKzEzOTksMTAgQEAgc3J2X2NvbmNfZXhpdF9pbm5vZGIoCiAJdHJ4X3QqCXRy eCkJLyohPCBpbjogdHJhbnNhY3Rpb24gb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUKIAkJCXRo cmVhZCAqLwogeworI2lmZGVmIFVOSVZfU1lOQ19ERUJVRworCXV0X2FkKCFzeW5jX3RocmVhZF9s ZXZlbHNfbm9uZW1wdHlfdHJ4KHRyeC0+aGFzX3NlYXJjaF9sYXRjaCkpOworI2VuZGlmIC8qIFVO SVZfU1lOQ19ERUJVRyAqLworCiAJaWYgKHRyeC0+bl90aWNrZXRzX3RvX2VudGVyX2lubm9kYiA+ IDApIHsKIAkJLyogV2Ugd2lsbCBwcmV0ZW5kIHRoZSB0aHJlYWQgaXMgc3RpbGwgaW5zaWRlIElu bm9EQiB0aG91Z2ggaXQKIAkJbm93IGxlYXZlcyB0aGUgSW5ub0RCIGVuZ2luZS4gSW4gdGhpcyB3 YXkgd2Ugc2F2ZQpAQCAtMTUwNSwxMCArMTUxOSw5IEBAIHNydl90YWJsZV9yZXNlcnZlX3Nsb3Rf Zm9yX215c3FsKHZvaWQpCiAJCQkJc2xvdCA9IHNydl9teXNxbF90YWJsZSArIGk7CiAKIAkJCQlm cHJpbnRmKHN0ZGVyciwKLQkJCQkJIlNsb3QgJWx1OiB0aHJlYWQgaWQgJWx1LCB0eXBlICVsdSwi CisJCQkJCSJTbG90ICVsdTogdGhyZWFkIHR5cGUgJWx1LCIKIAkJCQkJIiBpbiB1c2UgJWx1LCBz dXNwICVsdSwgdGltZSAlbHVcbiIsCiAJCQkJCSh1bG9uZykgaSwKLQkJCQkJKHVsb25nKSBvc190 aHJlYWRfcGYoc2xvdC0+aWQpLAogCQkJCQkodWxvbmcpIHNsb3QtPnR5cGUsCiAJCQkJCSh1bG9u Zykgc2xvdC0+aW5fdXNlLAogCQkJCQkodWxvbmcpIHNsb3QtPnN1c3BlbmRlZCwKQEAgLTE1MjUs OCArMTUzOCw2IEBAIHNydl90YWJsZV9yZXNlcnZlX3Nsb3RfZm9yX215c3FsKHZvaWQpCiAJdXRf YShzbG90LT5pbl91c2UgPT0gRkFMU0UpOwogCiAJc2xvdC0+aW5fdXNlID0gVFJVRTsKLQlzbG90 LT5pZCA9IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgpOwotCXNsb3QtPmhhbmRsZSA9IG9zX3RocmVh ZF9nZXRfY3VycigpOwogCiAJcmV0dXJuKHNsb3QpOwogfQpAQCAtMTczMyw2ICsxNzQ0LDEwIEBA IHNydl9zdXNwZW5kX215c3FsX3RocmVhZCgKIAogCQl0cngtPmVycm9yX3N0YXRlID0gREJfSU5U RVJSVVBURUQ7CiAJfQorCisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisJdXRfYWQoIXN5bmNfdGhy ZWFkX2xldmVsc19ub25lbXB0eV90cngodHJ4LT5oYXNfc2VhcmNoX2xhdGNoKSk7CisjZW5kaWYg LyogVU5JVl9TWU5DX0RFQlVHICovCiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKQEAgLTMwNjcsMTEg KzMwODIsNyBAQCBzdXNwZW5kX3RocmVhZDoKIAlvc19ldmVudF93YWl0KHNsb3QtPmV2ZW50KTsK IAogCWlmIChzcnZfc2h1dGRvd25fc3RhdGUgPT0gU1JWX1NIVVRET1dOX0VYSVRfVEhSRUFEUykg ewotCQkvKiBUaGlzIGlzIG9ubHkgZXh0cmEgc2FmZXR5LCB0aGUgdGhyZWFkIHNob3VsZCBleGl0 Ci0JCWFscmVhZHkgd2hlbiB0aGUgZXZlbnQgd2FpdCBlbmRzICovCi0KIAkJb3NfdGhyZWFkX2V4 aXQoTlVMTCk7Ci0KIAl9CiAKIAkvKiBXaGVuIHRoZXJlIGlzIHVzZXIgYWN0aXZpdHksIElubm9E QiB3aWxsIHNldCB0aGUgZXZlbnQgYW5kIHRoZQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2Uv aW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Nydi9zcnYw c3RhcnQuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA1MDgzMDM4LWhnYTll cThqcjNrOWg2eTQKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHN0YXJ0LmMJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUxMTE4NTQtMng3Y21zbDNkenI1MzB1ZQpA QCAtMjEyMiwxNyArMjEyMiw5IEBAIGlubm9iYXNlX3NodXRkb3duX2Zvcl9teXNxbCh2b2lkKQog CiAJc3J2X3NodXRkb3duX3N0YXRlID0gU1JWX1NIVVRET1dOX0VYSVRfVEhSRUFEUzsKIAotCS8q IEluIGEgJ3ZlcnkgZmFzdCcgc2h1dGRvd24sIHdlIGRvIG5vdCBuZWVkIHRvIHdhaXQgZm9yIHRo ZXNlIHRocmVhZHMKLQl0byBkaWU7IGFsbCB3aGljaCBjb3VudHMgaXMgdGhhdCB3ZSBmbHVzaGVk IHRoZSBsb2c7IGEgJ3ZlcnkgZmFzdCcKLQlzaHV0ZG93biBpcyBlc3NlbnRpYWxseSBhIGNyYXNo LiAqLwotCi0JaWYgKHNydl9mYXN0X3NodXRkb3duID09IDIpIHsKLQkJcmV0dXJuKERCX1NVQ0NF U1MpOwotCX0KLQogCS8qIEFsbCB0aHJlYWRzIGVuZCB1cCB3YWl0aW5nIGZvciBjZXJ0YWluIGV2 ZW50cy4gUHV0IHRob3NlIGV2ZW50cwotCXRvIHRoZSBzaWduYWxlZCBzdGF0ZS4gVGhlbiB0aGUg dGhyZWFkcyB3aWxsIGV4aXQgdGhlbXNlbHZlcyBpbgotCW9zX3RocmVhZF9ldmVudF93YWl0KCku ICovCisJdG8gdGhlIHNpZ25hbGVkIHN0YXRlLiBUaGVuIHRoZSB0aHJlYWRzIHdpbGwgZXhpdCB0 aGVtc2VsdmVzIGFmdGVyCisJb3NfZXZlbnRfd2FpdCgpLiAqLwogCiAJZm9yIChpID0gMDsgaSA8 IDEwMDA7IGkrKykgewogCQkvKiBOT1RFOiBJRiBZT1UgQ1JFQVRFIFRIUkVBRFMgSU4gSU5OT0RC LCBZT1UgTVVTVCBFWElUIFRIRU0KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L3N5bmMvc3luYzBzeW5jLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvc3luYy9zeW5jMHN5bmMu YwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA1MDgzMDM4LWhnYTllcThqcjNr OWg2eTQKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9zeW5jL3N5bmMwc3luYy5jCXJldmlkOm1hcmtv Lm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1MTExODU0LTJ4N2Ntc2wzZHpyNTMwdWUKQEAgLTE4 OSwxMiArMTg5LDEyIEBAIFVOSVZfSU5URVJOIHN5bmNfYXJyYXlfdCoJc3luY19wcmltYXJ5X3cK IC8qKiBUaGlzIHZhcmlhYmxlIGlzIHNldCB0byBUUlVFIHdoZW4gc3luY19pbml0IGlzIGNhbGxl ZCAqLwogVU5JVl9JTlRFUk4gaWJvb2wJc3luY19pbml0aWFsaXplZAk9IEZBTFNFOwogCisjaWZk ZWYgVU5JVl9TWU5DX0RFQlVHCiAvKiogQW4gYWNxdWlyZWQgbXV0ZXggb3IgcnctbG9jayBhbmQg aXRzIGxldmVsIGluIHRoZSBsYXRjaGluZyBvcmRlciAqLwogdHlwZWRlZiBzdHJ1Y3Qgc3luY19s ZXZlbF9zdHJ1Y3QJc3luY19sZXZlbF90OwogLyoqIE11dGV4ZXMgb3IgcnctbG9ja3MgaGVsZCBi eSBhIHRocmVhZCAqLwogdHlwZWRlZiBzdHJ1Y3Qgc3luY190aHJlYWRfc3RydWN0CXN5bmNfdGhy ZWFkX3Q7CiAKLSNpZmRlZiBVTklWX1NZTkNfREVCVUcKIC8qKiBUaGUgbGF0Y2ggbGV2ZWxzIGN1 cnJlbnRseSBvd25lZCBieSB0aHJlYWRzIGFyZSBzdG9yZWQgaW4gdGhpcyBkYXRhCiBzdHJ1Y3R1 cmU7IHRoZSBzaXplIG9mIHRoaXMgYXJyYXkgaXMgT1NfVEhSRUFEX01BWF9OICovCiAKQEAgLTIy MSw3ICsyMjEsNiBAQCBVTklWX0lOVEVSTiBteXNxbF9wZnNfa2V5X3QJbXV0ZXhfbGlzdF9tCiAj aWZkZWYgVU5JVl9TWU5DX0RFQlVHCiAvKiogTGF0Y2hpbmcgb3JkZXIgY2hlY2tzIHN0YXJ0IHdo ZW4gdGhpcyBpcyBzZXQgVFJVRSAqLwogVU5JVl9JTlRFUk4gaWJvb2wJc3luY19vcmRlcl9jaGVj a3Nfb24JPSBGQUxTRTsKLSNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIAogLyoqIE51bWJl ciBvZiBzbG90cyByZXNlcnZlZCBmb3IgZWFjaCBPUyB0aHJlYWQgaW4gdGhlIHN5bmMgbGV2ZWwg YXJyYXkgKi8KIHN0YXRpYyBjb25zdCB1bGludCBTWU5DX1RIUkVBRF9OX0xFVkVMUyA9IDEwMDAw OwpAQCAtMjU4LDYgKzI1Nyw3IEBAIHN0cnVjdCBzeW5jX2xldmVsX3N0cnVjdHsKIAkJCQkJdGhl IG9yZGluYWwgdmFsdWUgb2YgdGhlIG5leHQgZnJlZQogCQkJCQllbGVtZW50ICovCiB9OworI2Vu ZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogQ3JlYXRlcywgb3Ig cmF0aGVyLCBpbml0aWFsaXplcyBhIG11dGV4IG9iamVjdCBpbiBhIHNwZWNpZmllZCBtZW1vcnkK QEAgLTEwMjAsOSArMTAyMCw3IEBAIHZvaWQqCiBzeW5jX3RocmVhZF9sZXZlbHNfbm9uZW1wdHlf Z2VuKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAlpYm9vbAlkaWN0X211dGV4 X2FsbG93ZWQpCS8qITwgaW46IFRSVUUgaWYgZGljdGlvbmFyeSBtdXRleCBpcwotCQkJCQlhbGxv d2VkIHRvIGJlIG93bmVkIGJ5IHRoZSB0aHJlYWQsCi0JCQkJCWFsc28gcHVyZ2VfaXNfcnVubmlu ZyBtdXRleCBpcwotCQkJCQlhbGxvd2VkICovCisJCQkJCWFsbG93ZWQgdG8gYmUgb3duZWQgYnkg dGhlIHRocmVhZCAqLwogewogCXVsaW50CQlpOwogCXN5bmNfYXJyX3QqCWFycjsKQEAgLTEwNjks MTQgKzEwNjcsNjEgQEAgc3luY190aHJlYWRfbGV2ZWxzX25vbmVtcHR5X2dlbigKIH0KIAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKLUNoZWNrcyB0aGF0IHRoZSBsZXZlbCBhcnJheSBmb3IgdGhlIGN1cnJlbnQg dGhyZWFkIGlzIGVtcHR5LgotQHJldHVybglUUlVFIGlmIGVtcHR5ICovCitDaGVja3MgaWYgdGhl IGxldmVsIGFycmF5IGZvciB0aGUgY3VycmVudCB0aHJlYWQgaXMgZW1wdHksCitleGNlcHQgZm9y IHRoZSBidHJfc2VhcmNoX2xhdGNoLgorQHJldHVybglhIGxhdGNoLCBvciBOVUxMIGlmIGVtcHR5 IGV4Y2VwdCB0aGUgZXhjZXB0aW9ucyBzcGVjaWZpZWQgYmVsb3cgKi8KIFVOSVZfSU5URVJOCi1p Ym9vbAotc3luY190aHJlYWRfbGV2ZWxzX2VtcHR5KHZvaWQpCi0vKj09PT09PT09PT09PT09PT09 PT09PT09PT09Ki8KK3ZvaWQqCitzeW5jX3RocmVhZF9sZXZlbHNfbm9uZW1wdHlfdHJ4KAorLyo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKwlpYm9vbAloYXNfc2VhcmNoX2xhdGNoKQor CQkJCS8qITwgaW46IFRSVUUgaWYgYW5kIG9ubHkgaWYgdGhlIHRocmVhZAorCQkJCWlzIHN1cHBv c2VkIHRvIGhvbGQgYnRyX3NlYXJjaF9sYXRjaCAqLwogewotCXJldHVybihzeW5jX3RocmVhZF9s ZXZlbHNfZW1wdHlfZ2VuKEZBTFNFKSk7CisJdWxpbnQJCWk7CisJc3luY19hcnJfdCoJYXJyOwor CXN5bmNfdGhyZWFkX3QqCXRocmVhZF9zbG90OworCisJaWYgKCFzeW5jX29yZGVyX2NoZWNrc19v bikgeworCisJCXJldHVybihOVUxMKTsKKwl9CisKKwl1dF9hKCFoYXNfc2VhcmNoX2xhdGNoCisJ ICAgICB8fCBzeW5jX3RocmVhZF9sZXZlbHNfY29udGFpbnMoU1lOQ19TRUFSQ0hfU1lTKSk7CisK KwltdXRleF9lbnRlcigmc3luY190aHJlYWRfbXV0ZXgpOworCisJdGhyZWFkX3Nsb3QgPSBzeW5j X3RocmVhZF9sZXZlbF9hcnJheXNfZmluZF9zbG90KCk7CisKKwlpZiAodGhyZWFkX3Nsb3QgPT0g TlVMTCkgeworCisJCW11dGV4X2V4aXQoJnN5bmNfdGhyZWFkX211dGV4KTsKKworCQlyZXR1cm4o TlVMTCk7CisJfQorCisJYXJyID0gdGhyZWFkX3Nsb3QtPmxldmVsczsKKworCWZvciAoaSA9IDA7 IGkgPCBhcnItPm5fZWxlbXM7ICsraSkgeworCQljb25zdCBzeW5jX2xldmVsX3QqCXNsb3Q7CisK KwkJc2xvdCA9ICZhcnItPmVsZW1zW2ldOworCisJCWlmIChzbG90LT5sYXRjaCAhPSBOVUxMCisJ CSAgICAmJiAoIWhhc19zZWFyY2hfbGF0Y2gKKwkJCXx8IHNsb3QtPmxldmVsICE9IFNZTkNfU0VB UkNIX1NZUykpIHsKKworCQkJbXV0ZXhfZXhpdCgmc3luY190aHJlYWRfbXV0ZXgpOworCQkJdXRf ZXJyb3I7CisKKwkJCXJldHVybihzbG90LT5sYXRjaCk7CisJCX0KKwl9CisKKwltdXRleF9leGl0 KCZzeW5jX3RocmVhZF9tdXRleCk7CisKKwlyZXR1cm4oTlVMTCk7CiB9CiAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHJvbGwuYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHJvbGwuYwlyZXZpZDp2YXNpbC5kaW1vdkBv cmFjbGUuY29tLTIwMTEwNDA1MDgzMDM4LWhnYTllcThqcjNrOWg2eTQKKysrIGIvc3RvcmFnZS9p bm5vYmFzZS90cngvdHJ4MHJvbGwuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEx MDQwNTExMTg1NC0yeDdjbXNsM2R6cjUzMHVlCkBAIC00NjAsMTAgKzQ2MCw2IEBAIHRyeF9yb2xs YmFja19hY3RpdmUoCiAJCSh1bG9uZykgcm93c190b191bmRvLCB1bml0KTsKIAltdXRleF9leGl0 KCZrZXJuZWxfbXV0ZXgpOwogCi0JdHJ4LT5teXNxbF90aHJlYWRfaWQgPSBvc190aHJlYWRfZ2V0 X2N1cnJfaWQoKTsKLQotCXRyeC0+bXlzcWxfcHJvY2Vzc19ubyA9IG9zX3Byb2NfZ2V0X251bWJl cigpOwotCiAJaWYgKHRyeF9nZXRfZGljdF9vcGVyYXRpb24odHJ4KSAhPSBUUlhfRElDVF9PUF9O T05FKSB7CiAJCXJvd19teXNxbF9sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOwogCQlkaWN0aW9u YXJ5X2xvY2tlZCA9IFRSVUU7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS90 cngvdHJ4MHRyeC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3RyeC90cngwdHJ4LmMJcmV2aWQ6 dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNTA4MzAzOC1oZ2E5ZXE4anIzazloNnk0Cisr KyBiL3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDB0cnguYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDExMDQwNTExMTg1NC0yeDdjbXNsM2R6cjUzMHVlCkBAIC0yMTQsMTAgKzIxNCw2 IEBAIHRyeF9hbGxvY2F0ZV9mb3JfbXlzcWwodm9pZCkKIAogCW11dGV4X2V4aXQoJmtlcm5lbF9t dXRleCk7CiAKLQl0cngtPm15c3FsX3RocmVhZF9pZCA9IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgp OwotCi0JdHJ4LT5teXNxbF9wcm9jZXNzX25vID0gb3NfcHJvY19nZXRfbnVtYmVyKCk7Ci0KIAly ZXR1cm4odHJ4KTsKIH0KIApAQCAtMTcyOSwxMiArMTcyNSw2IEBAIHRyeF9wcmludCgKIAkJZnBy aW50ZihmLCAiIHN0YXRlICVsdSIsICh1bG9uZykgdHJ4LT5jb25jX3N0YXRlKTsKIAl9CiAKLSNp ZmRlZiBVTklWX0xJTlVYCi0JZnByaW50ZihmLCAiLCBwcm9jZXNzIG5vICVsdSIsIHRyeC0+bXlz cWxfcHJvY2Vzc19ubyk7Ci0jZW5kaWYKLQlmcHJpbnRmKGYsICIsIE9TIHRocmVhZCBpZCAlbHUi LAotCQkodWxvbmcpIG9zX3RocmVhZF9wZih0cngtPm15c3FsX3RocmVhZF9pZCkpOwotCiAJaWYg KCp0cngtPm9wX2luZm8pIHsKIAkJcHV0YygnICcsIGYpOwogCQlmcHV0cyh0cngtPm9wX2luZm8s IGYpOwoK --===============1964802616== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marko.makela@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marko.makela@stripped # target_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # testament_sha1: 910f3c563c995d6c4b0f6bdd4465eec3a9f5b325 # timestamp: 2011-04-05 14:33:32 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: vasil.dimov@stripped\ # hga9eq8jr3k9h6y4 # # Begin bundle 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 7/twJ/4DnDeH/xdyRThQkPqpYm4= --===============1964802616==--