From: marko.makela Date: October 12 2011 1:49pm Subject: bzr push into mysql-5.1 branch (marko.makela:3624 to 3625) Bug#13006367 List-Archive: http://lists.mysql.com/commits/141404 X-Bug: 13006367 Message-Id: <201110121349.p9CDnQ6G027395@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM2MjUgTWFya28gTcOka2Vsw6QJMjAxMS0xMC0xMgogICAgICBCdWcjMTMwMDYzNjcgNjI0ODc6 IGlubm9kYiB0YWtlcyAzIG1pbnV0ZXMgdG8gY2xlYW4gdXAgdGhlIGFkYXB0aXZlCiAgICAgIGhh c2ggaW5kZXggYXQgc2h1dGRvd24KICAgICAgCiAgICAgIGJ0cl9zZWFyY2hfZGlzYWJsZSgpOiBK dXN0IGRyb3AgdGhlIGVudGlyZSBhZGFwdGl2ZSBoYXNoIGluZGV4LAogICAgICB3aXRob3V0IGRy b3BwaW5nIGV2ZXJ5IHJlY29yZCBzZXBhcmF0ZWx5LgogICAgICAKICAgICAgYnVmX3Bvb2xfY2xl YXJfaGFzaF9pbmRleCgpOiBSZW5hbWVkIGFuZCBzaW1wbGlmaWVkIGZyb20KICAgICAgYnVmX3Bv b2xfZHJvcF9oYXNoX2luZGV4KCkuIFNldCBibG9jay0+aW5kZXggPSBOVUxMIGZvciBldmVyeSBi bG9jayBpbgogICAgICB0aGUgYnVmZmVyIHBvb2wuIERvIG5vdCByZWxlYXNlIHRoZSBidHJfc2Vh cmNoX2xhdGNoLiBUaGUgY2FsbGVyIHdpbGwKICAgICAgaGF2ZSB0byBhZGp1c3Qgb3RoZXIgZGF0 YSBzdHJ1Y3R1cmVzLgogICAgICAKICAgICAgUmVtb3ZlIGJsb2NrLT5pc19oYXNoZWQuIEl0IGlz IHJlZHVuZGFudCwgc2hvdWxkIGJlIGFsd2F5cyBlcXVhbCB0bwogICAgICBibG9jay0+aW5kZXgg IT0gTlVMTC4KICAgICAgCiAgICAgIFJlbW92ZSBidHJfc2VhcmNoX2Z1bGx5X2Rpc2FibGVkLCBi dHJfc2VhcmNoX2VuYWJsZWRfbXV0ZXgsIGFuZAogICAgICBTWU5DX1NFQVJDSF9TWVNfQ09ORi4g V2UgZHJvcCB0aGUgQUhJIGluIG9uZSBwYXNzLCB3aXRob3V0IHJlbGVhc2luZwogICAgICB0aGUg YnRyX3NlYXJjaF9sYXRjaCBpbiBiZXR3ZWVuLgogICAgICAKICAgICAgUmVwbGFjZSB2b2lkKiB3 aXRoIGNvbnN0IHJlY190KiBhbmQgYWRkIGFzc2VydGlvbnMgb24gYnRyX3NlYXJjaF9sYXRjaAog ICAgICBhbmQgYnRyX3NlYXJjaF9lbmFibGVkIHRvIGhhMGhhLmgsIGhhMGhhLmljLCBoYTBoYS5j LgogICAgICAKICAgICAgcGFnZV9zZXRfbWF4X3RyeF9pZCgpOiBJZ25vcmUgdGhlIGFkYXB0aXZl IGhhc2ggaW5kZXguIEkgZm9yZ290IHRvCiAgICAgIHB1c2ggdGhpcyBpbiByYjo3NTAuCiAgICAg IAogICAgICBidHIwc2VhLmM6IEFsd2F5cyBhZnRlciBhY3F1aXJpbmcgYnRyX3NlYXJjaF9sYXRj aCwgY2hlY2sgZm9yCiAgICAgIGJsb2NrLT5pbmRleD09TlVMTCBvciAhYnRyX3NlYXJjaF9lbmFi bGVkLiBXZSBjYW4gbm93IHNldAogICAgICBibG9jay0+aW5kZXg9TlVMTCB3aGlsZSBvbmx5IGhv bGRpbmcgYnRyX3NlYXJjaF9sYXRjaCBpbiBleGNsdXNpdmUKICAgICAgbW9kZS4gQWx3YXlzIGFj cXVpcmUgYnRyX3NlYXJjaF9sYXRjaCBiZWZvcmUgcmVhZGluZyBibG9jay0+aW5kZXgsCiAgICAg IGV4Y2VwdCBpbiBzaG9ydGN1dHMgd2hlbiB0ZXN0aW5nIGZvciBibG9jay0+aW5kZXggPT0gTlVM TC4KICAgICAgCiAgICAgIGhhX2NsZWFyKCksIGhhX3NlYXJjaCgpOiBVbnVzZWQgZnVuY3Rpb24s IHJlbW92ZS4KICAgICAgCiAgICAgIGJ1Zl9wYWdlX3BlZWtfaWZfc2VhcmNoX2hhc2hlZCgpOiBS ZW1vdmUuIFRoaXMgZnVuY3Rpb24gbWF5IGF2b2lkCiAgICAgIGxhdGNoaW5nIGEgcGFnZSBhdCB0 aGUgY29zdCBvZiBkb2luZyBhIGR1cGxpY2F0ZSBidWZfcG9vbC0+cGFnZV9oYXNoCiAgICAgIGxv b2t1cC4KICAgICAgCiAgICAgIHJiOjc3NSBhcHByb3ZlZCBieSBJbmFhbSBSYW5hCgogICAgbW9k aWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9DaGFuZ2VMb2cKICAgICAgc3RvcmFn ZS9pbm5vZGJfcGx1Z2luL2J0ci9idHIwY3VyLmMKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2lu L2J0ci9idHIwc2VhLmMKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J1Zi9idWYwYnVmLmMK ICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J1Zi9idWYwbHJ1LmMKICAgICAgc3RvcmFnZS9p bm5vZGJfcGx1Z2luL2hhL2hhMGhhLmMKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2hhbmRs ZXIvaGFfaW5ub2RiLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pYnVmL2lidWYwaWJ1 Zi5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjBzZWEuaAogICAgICBz dG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9idHIwdHlwZXMuaAogICAgICBzdG9yYWdlL2lu bm9kYl9wbHVnaW4vaW5jbHVkZS9idWYwYnVmLmgKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2lu L2luY2x1ZGUvaGEwaGEuaAogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9oYTBo YS5pYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9yb3cwdXBkLmljCiAgICAg IHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3N5bmMwc3luYy5oCiAgICAgIHN0b3JhZ2Uv aW5ub2RiX3BsdWdpbi9wYWdlL3BhZ2UwcGFnZS5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdp bi9zeW5jL3N5bmMwc3luYy5jCiAzNjI0IFZpbmF5IEZpc3Jla2FyCTIwMTEtMTAtMTIKICAgICAg YnVnIzExNzY2NDU3IC0gYWRqdXN0aW5nL21vZGlmeWluZyB0aGUgdGhlIHRlc3RzIGFzIHRlc3Rz IHdlcmUgZmFpbGluZyBpZiBzeXN0ZW0gdGltZSB6b25lIGlzIHNldCBkaWZmZXJlbnRseS4KCiAg ICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3IvZGVfY2Fs ZW5kYXJfcmFuZ2UucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9y L2luX2NhbGVuZGFyXzJfdW5pcXVlX2NvbnN0cmFpbnRzX2R1cGxpY2F0ZV91cGRhdGUucmVzdWx0 CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2luX2NhbGVuZGFyX3BrX2Nv bnN0cmFpbnRfZHVwbGljYXRlX3VwZGF0ZS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9l bmdpbmVzL2Z1bmNzL3IvaW5fY2FsZW5kYXJfcGtfY29uc3RyYWludF9lcnJvci5yZXN1bHQKICAg ICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3IvaW5fY2FsZW5kYXJfcGtfY29uc3Ry YWludF9pZ25vcmUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9y L2luX2NhbGVuZGFyX3VuaXF1ZV9jb25zdHJhaW50X2R1cGxpY2F0ZV91cGRhdGUucmVzdWx0CiAg ICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2luX2NhbGVuZGFyX3VuaXF1ZV9j b25zdHJhaW50X2Vycm9yLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVu Y3Mvci9pbl9jYWxlbmRhcl91bmlxdWVfY29uc3RyYWludF9pZ25vcmUucmVzdWx0CiAgICAgIG15 c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2luX211bHRpY29sdW1uX2NhbGVuZGFyX3Br X2NvbnN0cmFpbnRfZHVwbGljYXRlX3VwZGF0ZS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0 ZS9lbmdpbmVzL2Z1bmNzL3IvaW5fbXVsdGljb2x1bW5fY2FsZW5kYXJfcGtfY29uc3RyYWludF9l cnJvci5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3IvaW5fbXVs dGljb2x1bW5fY2FsZW5kYXJfcGtfY29uc3RyYWludF9pZ25vcmUucmVzdWx0CiAgICAgIG15c3Fs LXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2luX211bHRpY29sdW1uX2NhbGVuZGFyX3VuaXF1 ZV9jb25zdHJhaW50X2R1cGxpY2F0ZV91cGRhdGUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3Vp dGUvZW5naW5lcy9mdW5jcy9yL2luX211bHRpY29sdW1uX2NhbGVuZGFyX3VuaXF1ZV9jb25zdHJh aW50X2Vycm9yLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3Mvci9p bl9tdWx0aWNvbHVtbl9jYWxlbmRhcl91bmlxdWVfY29uc3RyYWludF9pZ25vcmUucmVzdWx0CiAg ICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2luX211bHRpY29sdW1uX251bWJl cl9wa19jb25zdHJhaW50X2R1cGxpY2F0ZV91cGRhdGUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qv c3VpdGUvZW5naW5lcy9mdW5jcy9yL3VwX2NhbGVuZGFyX3JhbmdlLnJlc3VsdAogICAgICBteXNx bC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9kZV9jYWxlbmRhcl9yYW5nZS50ZXN0CiAgICAg IG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy90L2luX2NhbGVuZGFyXzJfdW5pcXVlX2Nv bnN0cmFpbnRzX2R1cGxpY2F0ZV91cGRhdGUudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2Vu Z2luZXMvZnVuY3MvdC9pbl9jYWxlbmRhcl9wa19jb25zdHJhaW50X2R1cGxpY2F0ZV91cGRhdGUu dGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9jYWxlbmRhcl9w a19jb25zdHJhaW50X2Vycm9yLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1 bmNzL3QvaW5fY2FsZW5kYXJfcGtfY29uc3RyYWludF9pZ25vcmUudGVzdAogICAgICBteXNxbC10 ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9jYWxlbmRhcl91bmlxdWVfY29uc3RyYWludF9k dXBsaWNhdGVfdXBkYXRlLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNz L3QvaW5fY2FsZW5kYXJfdW5pcXVlX2NvbnN0cmFpbnRfZXJyb3IudGVzdAogICAgICBteXNxbC10 ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9jYWxlbmRhcl91bmlxdWVfY29uc3RyYWludF9p Z25vcmUudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9tdWx0 aWNvbHVtbl9jYWxlbmRhcl9wa19jb25zdHJhaW50X2R1cGxpY2F0ZV91cGRhdGUudGVzdAogICAg ICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9tdWx0aWNvbHVtbl9jYWxlbmRh cl9wa19jb25zdHJhaW50X2Vycm9yLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVz L2Z1bmNzL3QvaW5fbXVsdGljb2x1bW5fY2FsZW5kYXJfcGtfY29uc3RyYWludF9pZ25vcmUudGVz dAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9tdWx0aWNvbHVtbl9j YWxlbmRhcl91bmlxdWVfY29uc3RyYWludF9kdXBsaWNhdGVfdXBkYXRlLnRlc3QKICAgICAgbXlz cWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3QvaW5fbXVsdGljb2x1bW5fY2FsZW5kYXJfdW5p cXVlX2NvbnN0cmFpbnRfZXJyb3IudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMv ZnVuY3MvdC9pbl9tdWx0aWNvbHVtbl9jYWxlbmRhcl91bmlxdWVfY29uc3RyYWludF9pZ25vcmUu dGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9tdWx0aWNvbHVt bl9udW1iZXJfcGtfY29uc3RyYWludF9kdXBsaWNhdGVfdXBkYXRlLnRlc3QKICAgICAgbXlzcWwt dGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3QvdXBfY2FsZW5kYXJfcmFuZ2UudGVzdAo9PT0gbW9k aWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL0NoYW5nZUxvZycKLS0tIGEvc3RvcmFn ZS9pbm5vZGJfcGx1Z2luL0NoYW5nZUxvZwlyZXZpZDp2aW5heS5maXNyZWthckBvcmFjbGUuY29t LTIwMTExMDEyMDQ0MDUyLWRlN2RnM3BvZjBsMDJjMW8KKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1 Z2luL0NoYW5nZUxvZwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMTAxMjA2MDA0 OS1vNHVvcTd4Zmw0YnFnemVtCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTAtMTIJVGhlIElubm9E QiBUZWFtCisKKwkqIGJ0ci9idHIwY3VyLmMsIGJ0ci9idHIwc2VhLmMsIGJ1Zi9idWYwYnVmLmMs IGJ1Zi9idWYwbHJ1LmMsCisJaGEvaGEwaGEuYywgaGFuZGxlci9oYV9pbm5vZGIuY2MsIGlidWYv aWJ1ZjBpYnVmLmMsIGluY2x1ZGUvYnRyMHNlYS5oLAorCWluY2x1ZGUvYnRyMHR5cGVzLmgsIGlu Y2x1ZGUvYnVmMGJ1Zi5oLCBpbmNsdWRlL2hhMGhhLmgsCisJaW5jbHVkZS9oYTBoYS5pYywgaW5j bHVkZS9yb3cwdXBkLmljLCBpbmNsdWRlL3N5bmMwc3luYy5oLAorCXBhZ2UvcGFnZTBwYWdlLmMs IHN5bmMvc3luYzBzeW5jLmM6CisJRml4IEJ1ZyMxMzAwNjM2NyA2MjQ4NzogaW5ub2RiIHRha2Vz IDMgbWludXRlcyB0byBjbGVhbiB1cAorCXRoZSBhZGFwdGl2ZSBoYXNoIGluZGV4IGF0IHNodXRk b3duCisKIDIwMTEtMTAtMDQJVGhlIElubm9EQiBUZWFtCiAKIAkqIGluY2x1ZGUvc3luYzBydy5o LCBzeW5jL3N5bmMwcncuYzoKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVn aW4vYnRyL2J0cjBjdXIuYycKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J0ci9idHIwY3Vy LmMJcmV2aWQ6dmluYXkuZmlzcmVrYXJAb3JhY2xlLmNvbS0yMDExMTAxMjA0NDA1Mi1kZTdkZzNw b2YwbDAyYzFvCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9idHIvYnRyMGN1ci5jCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMDEyMDYwMDQ5LW80dW9xN3hmbDRicWd6ZW0K QEAgLTE3NzcsNyArMTc3Nyw3IEBAIGJ0cl9jdXJfdXBkYXRlX2luX3BsYWNlKAogCXdhc19kZWxl dGVfbWFya2VkID0gcmVjX2dldF9kZWxldGVkX2ZsYWcoCiAJCXJlYywgcGFnZV9pc19jb21wKGJ1 Zl9ibG9ja19nZXRfZnJhbWUoYmxvY2spKSk7CiAKLQlpc19oYXNoZWQgPSBibG9jay0+aXNfaGFz aGVkOworCWlzX2hhc2hlZCA9IChibG9jay0+aW5kZXggIT0gTlVMTCk7CiAKIAlpZiAoaXNfaGFz aGVkKSB7CiAJCS8qIFRPIERPOiBDYW4gd2Ugc2tpcCB0aGlzIGlmIG5vbmUgb2YgdGhlIGZpZWxk cwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9idHIvYnRyMHNlYS5j JwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vYnRyL2J0cjBzZWEuYwlyZXZpZDp2aW5heS5m aXNyZWthckBvcmFjbGUuY29tLTIwMTExMDEyMDQ0MDUyLWRlN2RnM3BvZjBsMDJjMW8KKysrIGIv c3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J0ci9idHIwc2VhLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMTEwMTIwNjAwNDktbzR1b3E3eGZsNGJxZ3plbQpAQCAtNDQsMTIgKzQ0LDgg QEAgQ3JlYXRlZCAyLzE3LzE5OTYgSGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAiaGEwaGEuaCIKIAog LyoqIEZsYWc6IGhhcyB0aGUgc2VhcmNoIHN5c3RlbSBiZWVuIGVuYWJsZWQ/Ci1Qcm90ZWN0ZWQg YnkgYnRyX3NlYXJjaF9sYXRjaCBhbmQgYnRyX3NlYXJjaF9lbmFibGVkX211dGV4LiAqLworUHJv dGVjdGVkIGJ5IGJ0cl9zZWFyY2hfbGF0Y2guICovCiBVTklWX0lOVEVSTiBjaGFyCQlidHJfc2Vh cmNoX2VuYWJsZWQJPSBUUlVFOwotVU5JVl9JTlRFUk4gaWJvb2wJCWJ0cl9zZWFyY2hfZnVsbHlf ZGlzYWJsZWQgPSBGQUxTRTsKLQotLyoqIE11dGV4IHByb3RlY3RpbmcgYnRyX3NlYXJjaF9lbmFi bGVkICovCi1zdGF0aWMgbXV0ZXhfdAkJCWJ0cl9zZWFyY2hfZW5hYmxlZF9tdXRleDsKIAogLyoq IEEgZHVtbXkgdmFyaWFibGUgdG8gZm9vbCB0aGUgY29tcGlsZXIgKi8KIFVOSVZfSU5URVJOIHVs aW50CQlidHJfc2VhcmNoX3RoaXNfaXNfemVybyA9IDA7CkBAIC0xNjksNyArMTY1LDYgQEAgYnRy X3NlYXJjaF9zeXNfY3JlYXRlKAogCWJ0cl9zZWFyY2hfbGF0Y2hfdGVtcCA9IG1lbV9hbGxvYyhz aXplb2YocndfbG9ja190KSk7CiAKIAlyd19sb2NrX2NyZWF0ZSgmYnRyX3NlYXJjaF9sYXRjaCwg U1lOQ19TRUFSQ0hfU1lTKTsKLQltdXRleF9jcmVhdGUoJmJ0cl9zZWFyY2hfZW5hYmxlZF9tdXRl eCwgU1lOQ19TRUFSQ0hfU1lTX0NPTkYpOwogCiAJYnRyX3NlYXJjaF9zeXMgPSBtZW1fYWxsb2Mo c2l6ZW9mKGJ0cl9zZWFyY2hfc3lzX3QpKTsKIApAQCAtMTk5LDI3ICsxOTQsMzcgQEAgdm9pZAog YnRyX3NlYXJjaF9kaXNhYmxlKHZvaWQpCiAvKj09PT09PT09PT09PT09PT09PT09Ki8KIHsKLQlt dXRleF9lbnRlcigmYnRyX3NlYXJjaF9lbmFibGVkX211dGV4KTsKKwlkaWN0X3RhYmxlX3QqCXRh YmxlOworCisJbXV0ZXhfZW50ZXIoJmRpY3Rfc3lzLT5tdXRleCk7CiAJcndfbG9ja194X2xvY2so JmJ0cl9zZWFyY2hfbGF0Y2gpOwogCi0JLyogRGlzYWJsZSBhY2Nlc3MgdG8gaGFzaCBpbmRleCwg YWxzbyB0ZWxsIGhhX2luc2VydF9mb3JfZm9sZCgpCi0Jc3RvcCBhZGRpbmcgbmV3IG5vZGVzIHRv IGhhc2ggaW5kZXgsIGJ1dCBzdGlsbCBhbGxvdyB1cGRhdGluZwotCWV4aXN0aW5nIG5vZGVzICov CiAJYnRyX3NlYXJjaF9lbmFibGVkID0gRkFMU0U7CiAKLQkvKiBDbGVhciBhbGwgYmxvY2stPmlz X2hhc2hlZCBmbGFncyBhbmQgcmVtb3ZlIGFsbCBlbnRyaWVzCi0JZnJvbSBidHJfc2VhcmNoX3N5 cy0+aGFzaF9pbmRleC4gKi8KLQlidWZfcG9vbF9kcm9wX2hhc2hfaW5kZXgoKTsKLQotCS8qIGhh c2ggaW5kZXggaGFzIGJlZW4gY2xlYW5lZCB1cCwgZGlzYWxsb3cgYW55IG9wZXJhdGlvbiB0bwot CXRoZSBoYXNoIGluZGV4ICovCi0JYnRyX3NlYXJjaF9mdWxseV9kaXNhYmxlZCA9IFRSVUU7CisJ LyogQ2xlYXIgdGhlIGluZGV4LT5zZWFyY2hfaW5mby0+cmVmX2NvdW50IG9mIGV2ZXJ5IGluZGV4 IGluCisJdGhlIGRhdGEgZGljdGlvbmFyeSBjYWNoZS4gKi8KKwlmb3IgKHRhYmxlID0gVVRfTElT VF9HRVRfRklSU1QoZGljdF9zeXMtPnRhYmxlX0xSVSk7IHRhYmxlOworCSAgICAgdGFibGUgPSBV VF9MSVNUX0dFVF9ORVhUKHRhYmxlX0xSVSwgdGFibGUpKSB7CisKKwkJZGljdF9pbmRleF90Kglp bmRleDsKKworCQlmb3IgKGluZGV4ID0gZGljdF90YWJsZV9nZXRfZmlyc3RfaW5kZXgodGFibGUp OyBpbmRleDsKKwkJICAgICBpbmRleCA9IGRpY3RfdGFibGVfZ2V0X25leHRfaW5kZXgoaW5kZXgp KSB7CisKKwkJCWluZGV4LT5zZWFyY2hfaW5mby0+cmVmX2NvdW50ID0gMDsKKwkJfQorCX0KKwor CW11dGV4X2V4aXQoJmRpY3Rfc3lzLT5tdXRleCk7CiAKLQkvKiBidHJfc2VhcmNoX2VuYWJsZWRf bXV0ZXggc2hvdWxkIGd1YXJhbnRlZSB0aGlzLiAqLwotCXV0X2FkKCFidHJfc2VhcmNoX2VuYWJs ZWQpOworCS8qIFNldCBhbGwgYmxvY2stPmluZGV4ID0gTlVMTC4gKi8KKwlidWZfcG9vbF9jbGVh cl9oYXNoX2luZGV4KCk7CisKKwkvKiBDbGVhciB0aGUgYWRhcHRpdmUgaGFzaCBpbmRleC4gKi8K KwloYXNoX3RhYmxlX2NsZWFyKGJ0cl9zZWFyY2hfc3lzLT5oYXNoX2luZGV4KTsKKwltZW1faGVh cF9lbXB0eShidHJfc2VhcmNoX3N5cy0+aGFzaF9pbmRleC0+aGVhcCk7CiAKIAlyd19sb2NrX3hf dW5sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKLQltdXRleF9leGl0KCZidHJfc2VhcmNoX2VuYWJs ZWRfbXV0ZXgpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC0yMjksMTQgKzIzNCwxMSBAQCB2 b2lkCiBidHJfc2VhcmNoX2VuYWJsZSh2b2lkKQogLyo9PT09PT09PT09PT09PT09PT09PSovCiB7 Ci0JbXV0ZXhfZW50ZXIoJmJ0cl9zZWFyY2hfZW5hYmxlZF9tdXRleCk7CiAJcndfbG9ja194X2xv Y2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwogCiAJYnRyX3NlYXJjaF9lbmFibGVkID0gVFJVRTsKLQli dHJfc2VhcmNoX2Z1bGx5X2Rpc2FibGVkID0gRkFMU0U7CiAKIAlyd19sb2NrX3hfdW5sb2NrKCZi dHJfc2VhcmNoX2xhdGNoKTsKLQltdXRleF9leGl0KCZidHJfc2VhcmNoX2VuYWJsZWRfbXV0ZXgp OwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCkBAIC00NTksNyArNDYxLDcgQEAgYnRyX3NlYXJjaF91cGRh dGVfYmxvY2tfaGFzaF9pbmZvKAogCSAgICAmJiAoYmxvY2stPm5fYnl0ZXMgPT0gaW5mby0+bl9i eXRlcykKIAkgICAgJiYgKGJsb2NrLT5sZWZ0X3NpZGUgPT0gaW5mby0+bGVmdF9zaWRlKSkgewog Ci0JCWlmICgoYmxvY2stPmlzX2hhc2hlZCkKKwkJaWYgKChibG9jay0+aW5kZXgpCiAJCSAgICAm JiAoYmxvY2stPmN1cnJfbl9maWVsZHMgPT0gaW5mby0+bl9maWVsZHMpCiAJCSAgICAmJiAoYmxv Y2stPmN1cnJfbl9ieXRlcyA9PSBpbmZvLT5uX2J5dGVzKQogCQkgICAgJiYgKGJsb2NrLT5jdXJy X2xlZnRfc2lkZSA9PSBpbmZvLT5sZWZ0X3NpZGUpKSB7CkBAIC00ODgsNyArNDkwLDcgQEAgYnRy X3NlYXJjaF91cGRhdGVfYmxvY2tfaGFzaF9pbmZvKAogCSAgICAgLyBCVFJfU0VBUkNIX1BBR0Vf QlVJTERfTElNSVQpCiAJICAgICYmIChpbmZvLT5uX2hhc2hfcG90ZW50aWFsID49IEJUUl9TRUFS Q0hfQlVJTERfTElNSVQpKSB7CiAKLQkJaWYgKCghYmxvY2stPmlzX2hhc2hlZCkKKwkJaWYgKCgh YmxvY2stPmluZGV4KQogCQkgICAgfHwgKGJsb2NrLT5uX2hhc2hfaGVscHMKIAkJCT4gMiAqIHBh Z2VfZ2V0X25fcmVjcyhibG9jay0+ZnJhbWUpKQogCQkgICAgfHwgKGJsb2NrLT5uX2ZpZWxkcyAh PSBibG9jay0+Y3Vycl9uX2ZpZWxkcykKQEAgLTUyMCw5ICs1MjIsOSBAQCBidHJfc2VhcmNoX3Vw ZGF0ZV9oYXNoX3JlZigKIAlidWZfYmxvY2tfdCoJYmxvY2ssCS8qITwgaW46IGJ1ZmZlciBibG9j ayB3aGVyZSBjdXJzb3IgcG9zaXRpb25lZCAqLwogCWJ0cl9jdXJfdCoJY3Vyc29yKQkvKiE8IGlu OiBjdXJzb3IgKi8KIHsKLQl1bGludAlmb2xkOwotCXJlY190KglyZWM7Ci0JZHVsaW50CWluZGV4 X2lkOworCWRpY3RfaW5kZXhfdCoJaW5kZXg7CisJdWxpbnQJCWZvbGQ7CisJY29uc3QgcmVjX3Qq CXJlYzsKIAogCXV0X2FkKGN1cnNvci0+ZmxhZyA9PSBCVFJfQ1VSX0hBU0hfRkFJTCk7CiAjaWZk ZWYgVU5JVl9TWU5DX0RFQlVHCkBAIC01MzMsMTMgKzUzNSwxNSBAQCBidHJfc2VhcmNoX3VwZGF0 ZV9oYXNoX3JlZigKIAl1dF9hZChwYWdlX2FsaWduKGJ0cl9jdXJfZ2V0X3JlYyhjdXJzb3IpKQog CSAgICAgID09IGJ1Zl9ibG9ja19nZXRfZnJhbWUoYmxvY2spKTsKIAotCWlmICghYmxvY2stPmlz X2hhc2hlZCkgeworCWluZGV4ID0gYmxvY2stPmluZGV4OworCisJaWYgKCFpbmRleCkgewogCiAJ CXJldHVybjsKIAl9CiAKLQl1dF9hKGJsb2NrLT5pbmRleCA9PSBjdXJzb3ItPmluZGV4KTsKLQl1 dF9hKCFkaWN0X2luZGV4X2lzX2lidWYoY3Vyc29yLT5pbmRleCkpOworCXV0X2EoaW5kZXggPT0g Y3Vyc29yLT5pbmRleCk7CisJdXRfYSghZGljdF9pbmRleF9pc19pYnVmKGluZGV4KSk7CiAKIAlp ZiAoKGluZm8tPm5faGFzaF9wb3RlbnRpYWwgPiAwKQogCSAgICAmJiAoYmxvY2stPmN1cnJfbl9m aWVsZHMgPT0gaW5mby0+bl9maWVsZHMpCkBAIC01NTYsMTIgKzU2MCwxMSBAQCBidHJfc2VhcmNo X3VwZGF0ZV9oYXNoX3JlZigKIAkJCXJldHVybjsKIAkJfQogCi0JCWluZGV4X2lkID0gY3Vyc29y LT5pbmRleC0+aWQ7CiAJCWZvbGQgPSByZWNfZm9sZChyZWMsCi0JCQkJcmVjX2dldF9vZmZzZXRz KHJlYywgY3Vyc29yLT5pbmRleCwgb2Zmc2V0c18sCisJCQkJcmVjX2dldF9vZmZzZXRzKHJlYywg aW5kZXgsIG9mZnNldHNfLAogCQkJCQkJVUxJTlRfVU5ERUZJTkVELCAmaGVhcCksCiAJCQkJYmxv Y2stPmN1cnJfbl9maWVsZHMsCi0JCQkJYmxvY2stPmN1cnJfbl9ieXRlcywgaW5kZXhfaWQpOwor CQkJCWJsb2NrLT5jdXJyX25fYnl0ZXMsIGluZGV4LT5pZCk7CiAJCWlmIChVTklWX0xJS0VMWV9O VUxMKGhlYXApKSB7CiAJCQltZW1faGVhcF9mcmVlKGhlYXApOwogCQl9CkBAIC04MjQsNyArODI3 LDcgQEAgYnRyX3NlYXJjaF9ndWVzc19vbl9oYXNoKAogCW10cl90KgkJbXRyKQkJLyohPCBpbjog bXRyICovCiB7CiAJYnVmX2Jsb2NrX3QqCWJsb2NrOwotCXJlY190KgkJcmVjOworCWNvbnN0IHJl Y190KglyZWM7CiAJdWxpbnQJCWZvbGQ7CiAJZHVsaW50CQlpbmRleF9pZDsKICNpZmRlZiBub3Rk ZWZpbmVkCkBAIC05MTAsNyArOTEzLDcgQEAgYnRyX3NlYXJjaF9ndWVzc19vbl9oYXNoKAogCiAJ dXRfYWQocGFnZV9yZWNfaXNfdXNlcl9yZWMocmVjKSk7CiAKLQlidHJfY3VyX3Bvc2l0aW9uKGlu ZGV4LCByZWMsIGJsb2NrLCBjdXJzb3IpOworCWJ0cl9jdXJfcG9zaXRpb24oaW5kZXgsIChyZWNf dCopIHJlYywgYmxvY2ssIGN1cnNvcik7CiAKIAkvKiBDaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhl IGd1ZXNzIHdpdGhpbiB0aGUgcGFnZSAqLwogCkBAIC0xMDQxLDE1ICsxMDQ0LDE2IEBAIGJ0cl9z ZWFyY2hfZHJvcF9wYWdlX2hhc2hfaW5kZXgoCiAKIHJldHJ5OgogCXJ3X2xvY2tfc19sb2NrKCZi dHJfc2VhcmNoX2xhdGNoKTsKLQlwYWdlID0gYmxvY2stPmZyYW1lOworCWluZGV4ID0gYmxvY2st PmluZGV4OwogCi0JaWYgKFVOSVZfTElLRUxZKCFibG9jay0+aXNfaGFzaGVkKSkgeworCWlmIChV TklWX0xJS0VMWSghaW5kZXgpKSB7CiAKIAkJcndfbG9ja19zX3VubG9jaygmYnRyX3NlYXJjaF9s YXRjaCk7CiAKIAkJcmV0dXJuOwogCX0KIAorCXV0X2EoIWRpY3RfaW5kZXhfaXNfaWJ1ZihpbmRl eCkpOwogCXRhYmxlID0gYnRyX3NlYXJjaF9zeXMtPmhhc2hfaW5kZXg7CiAKICNpZmRlZiBVTklW X1NZTkNfREVCVUcKQEAgLTEwNjAsOCArMTA2NCw2IEBAIHJldHJ5OgogCiAJbl9maWVsZHMgPSBi bG9jay0+Y3Vycl9uX2ZpZWxkczsKIAluX2J5dGVzID0gYmxvY2stPmN1cnJfbl9ieXRlczsKLQlp bmRleCA9IGJsb2NrLT5pbmRleDsKLQl1dF9hKCFkaWN0X2luZGV4X2lzX2lidWYoaW5kZXgpKTsK IAogCS8qIE5PVEU6IFRoZSBmaWVsZHMgb2YgYmxvY2sgbXVzdCBub3QgYmUgYWNjZXNzZWQgYWZ0 ZXIKIAlyZWxlYXNpbmcgYnRyX3NlYXJjaF9sYXRjaCwgYXMgdGhlIGluZGV4IHBhZ2UgbWlnaHQg b25seQpAQCAtMTA3MSw2ICsxMDczLDcgQEAgcmV0cnk6CiAKIAl1dF9hKG5fZmllbGRzICsgbl9i eXRlcyA+IDApOwogCisJcGFnZSA9IGJsb2NrLT5mcmFtZTsKIAluX3JlY3MgPSBwYWdlX2dldF9u X3JlY3MocGFnZSk7CiAKIAkvKiBDYWxjdWxhdGUgYW5kIGNhY2hlIGZvbGQgdmFsdWVzIGludG8g YW4gYXJyYXkgZm9yIGZhc3QgZGVsZXRpb24KQEAgLTExMTksNyArMTEyMiw3IEBAIG5leHRfcmVj OgogCiAJcndfbG9ja194X2xvY2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwogCi0JaWYgKFVOSVZfVU5M SUtFTFkoIWJsb2NrLT5pc19oYXNoZWQpKSB7CisJaWYgKFVOSVZfVU5MSUtFTFkoIWJsb2NrLT5p bmRleCkpIHsKIAkJLyogU29tZW9uZSBlbHNlIGhhcyBtZWFud2hpbGUgZHJvcHBlZCB0aGUgaGFz aCBpbmRleCAqLwogCiAJCWdvdG8gY2xlYW51cDsKQEAgLTExNDcsOSArMTE1MCw4IEBAIG5leHRf cmVjOgogCXV0X2EoaW5kZXgtPnNlYXJjaF9pbmZvLT5yZWZfY291bnQgPiAwKTsKIAlpbmRleC0+ c2VhcmNoX2luZm8tPnJlZl9jb3VudC0tOwogCi0JYmxvY2stPmlzX2hhc2hlZCA9IEZBTFNFOwog CWJsb2NrLT5pbmRleCA9IE5VTEw7Ci0JCisKIGNsZWFudXA6CiAjaWYgZGVmaW5lZCBVTklWX0FI SV9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlpZiAoVU5JVl9VTkxJS0VMWShibG9jay0+ bl9wb2ludGVycykpIHsKQEAgLTExNzUsOCArMTE3Nyw4IEBAIGNsZWFudXA6CiB9CiAKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKLURyb3BzIGEgcGFnZSBoYXNoIGluZGV4IHdoZW4gYSBwYWdlIGlzIGZyZWVk IGZyb20gYSBmc2VnIHRvIHRoZSBmaWxlIHN5c3RlbS4KLURyb3BzIHBvc3NpYmxlIGhhc2ggaW5k ZXggaWYgdGhlIHBhZ2UgaGFwcGVucyB0byBiZSBpbiB0aGUgYnVmZmVyIHBvb2wuICovCitEcm9w cyBhIHBvc3NpYmxlIHBhZ2UgaGFzaCBpbmRleCB3aGVuIGEgcGFnZSBpcyBldmljdGVkIGZyb20g dGhlIGJ1ZmZlciBwb29sCitvciBmcmVlZCBpbiBhIGZpbGUgc2VnbWVudC4gKi8KIFVOSVZfSU5U RVJOCiB2b2lkCiBidHJfc2VhcmNoX2Ryb3BfcGFnZV9oYXNoX3doZW5fZnJlZWQoCkBAIC0xMTg5 LDI4ICsxMTkxLDE5IEBAIGJ0cl9zZWFyY2hfZHJvcF9wYWdlX2hhc2hfd2hlbl9mcmVlZCgKIAli dWZfYmxvY2tfdCoJYmxvY2s7CiAJbXRyX3QJCW10cjsKIAotCWlmICghYnVmX3BhZ2VfcGVla19p Zl9zZWFyY2hfaGFzaGVkKHNwYWNlLCBwYWdlX25vKSkgewotCi0JCXJldHVybjsKLQl9Ci0KIAlt dHJfc3RhcnQoJm10cik7CiAKLQkvKiBXZSBhc3N1bWUgdGhhdCBpZiB0aGUgY2FsbGVyIGhhcyBh IGxhdGNoIG9uIHRoZSBwYWdlLCB0aGVuIHRoZQotCWNhbGxlciBoYXMgYWxyZWFkeSBkcm9wcGVk IHRoZSBoYXNoIGluZGV4IGZvciB0aGUgcGFnZSwgYW5kIHdlIG5ldmVyCi0JZ2V0IGhlcmUuIFRo ZXJlZm9yZSB3ZSBjYW4gYWNxdWlyZSB0aGUgcy1sYXRjaCB0byB0aGUgcGFnZSB3aXRob3V0Ci0J aGF2aW5nIHRvIGZlYXIgYSBkZWFkbG9jay4gKi8KKwkvKiBJZiB0aGUgY2FsbGVyIGhhcyBhIGxh dGNoIG9uIHRoZSBwYWdlLCB0aGVuIHRoZSBjYWxsZXIgbXVzdAorCWhhdmUgYSB4LWxhdGNoIG9u IHRoZSBwYWdlIGFuZCBpdCBtdXN0IGhhdmUgYWxyZWFkeSBkcm9wcGVkCisJdGhlIGhhc2ggaW5k ZXggZm9yIHRoZSBwYWdlLiBCZWNhdXNlIG9mIHRoZSB4LWxhdGNoIHRoYXQgd2UKKwlhcmUgcG9z c2libHkgaG9sZGluZywgd2UgY2Fubm90IHMtbGF0Y2ggdGhlIHBhZ2UsIGJ1dCBtdXN0CisJKHJl Y3Vyc2l2ZWx5KSB4LWxhdGNoIGl0LCBldmVuIHRob3VnaCB3ZSBhcmUgb25seSByZWFkaW5nLiAq LwogCi0JYmxvY2sgPSBidWZfcGFnZV9nZXRfZ2VuKHNwYWNlLCB6aXBfc2l6ZSwgcGFnZV9ubywg UldfU19MQVRDSCwgTlVMTCwKKwlibG9jayA9IGJ1Zl9wYWdlX2dldF9nZW4oc3BhY2UsIHppcF9z aXplLCBwYWdlX25vLCBSV19YX0xBVENILCBOVUxMLAogCQkJCSBCVUZfUEVFS19JRl9JTl9QT09M LCBfX0ZJTEVfXywgX19MSU5FX18sCiAJCQkJICZtdHIpOwotCS8qIEJlY2F1c2UgdGhlIGJ1ZmZl ciBwb29sIG11dGV4IHdhcyByZWxlYXNlZCBieQotCWJ1Zl9wYWdlX3BlZWtfaWZfc2VhcmNoX2hh c2hlZCgpLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZQotCWJsb2NrIHdhcyByZW1vdmVkIGZyb20g dGhlIGJ1ZmZlciBwb29sIGJ5IGFub3RoZXIgdGhyZWFkCi0JYmVmb3JlIGJ1Zl9wYWdlX2dldF9n ZW4oKSBnb3QgYSBjaGFuY2UgdG8gYWNxdWlyZSB0aGUgYnVmZmVyCi0JcG9vbCBtdXRleCBhZ2Fp bi4gIFRodXMsIHdlIG11c3QgY2hlY2sgZm9yIGEgTlVMTCByZXR1cm4uICovCiAKLQlpZiAoVU5J Vl9MSUtFTFkoYmxvY2sgIT0gTlVMTCkpIHsKKwlpZiAoYmxvY2sgJiYgYmxvY2stPmluZGV4KSB7 CiAKIAkJYnVmX2Jsb2NrX2RiZ19hZGRfbGV2ZWwoYmxvY2ssIFNZTkNfVFJFRV9OT0RFX0ZST01f SEFTSCk7CiAKQEAgLTEyNDIsNyArMTIzNSw2IEBAIGJ0cl9zZWFyY2hfYnVpbGRfcGFnZV9oYXNo X2luZGV4KAogCXJlY190KgkJbmV4dF9yZWM7CiAJdWxpbnQJCWZvbGQ7CiAJdWxpbnQJCW5leHRf Zm9sZDsKLQlkdWxpbnQJCWluZGV4X2lkOwogCXVsaW50CQluX2NhY2hlZDsKIAl1bGludAkJbl9y ZWNzOwogCXVsaW50KgkJZm9sZHM7CkBAIC0xMjU2LDkgKzEyNDgsNiBAQCBidHJfc2VhcmNoX2J1 aWxkX3BhZ2VfaGFzaF9pbmRleCgKIAl1dF9hZChpbmRleCk7CiAJdXRfYSghZGljdF9pbmRleF9p c19pYnVmKGluZGV4KSk7CiAKLQl0YWJsZSA9IGJ0cl9zZWFyY2hfc3lzLT5oYXNoX2luZGV4Owot CXBhZ2UgPSBidWZfYmxvY2tfZ2V0X2ZyYW1lKGJsb2NrKTsKLQogI2lmZGVmIFVOSVZfU1lOQ19E RUJVRwogCXV0X2FkKCFyd19sb2NrX293bigmYnRyX3NlYXJjaF9sYXRjaCwgUldfTE9DS19FWCkp OwogCXV0X2FkKHJ3X2xvY2tfb3duKCYoYmxvY2stPmxvY2spLCBSV19MT0NLX1NIQVJFRCkKQEAg LTEyNjcsOSArMTI1NiwxNyBAQCBidHJfc2VhcmNoX2J1aWxkX3BhZ2VfaGFzaF9pbmRleCgKIAog CXJ3X2xvY2tfc19sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKIAotCWlmIChibG9jay0+aXNfaGFz aGVkICYmICgoYmxvY2stPmN1cnJfbl9maWVsZHMgIT0gbl9maWVsZHMpCi0JCQkJIHx8IChibG9j ay0+Y3Vycl9uX2J5dGVzICE9IG5fYnl0ZXMpCi0JCQkJIHx8IChibG9jay0+Y3Vycl9sZWZ0X3Np ZGUgIT0gbGVmdF9zaWRlKSkpIHsKKwlpZiAoIWJ0cl9zZWFyY2hfZW5hYmxlZCkgeworCQlyd19s b2NrX3NfdW5sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKKwkJcmV0dXJuOworCX0KKworCXRhYmxl ID0gYnRyX3NlYXJjaF9zeXMtPmhhc2hfaW5kZXg7CisJcGFnZSA9IGJ1Zl9ibG9ja19nZXRfZnJh bWUoYmxvY2spOworCisJaWYgKGJsb2NrLT5pbmRleCAmJiAoKGJsb2NrLT5jdXJyX25fZmllbGRz ICE9IG5fZmllbGRzKQorCQkJICAgICB8fCAoYmxvY2stPmN1cnJfbl9ieXRlcyAhPSBuX2J5dGVz KQorCQkJICAgICB8fCAoYmxvY2stPmN1cnJfbGVmdF9zaWRlICE9IGxlZnRfc2lkZSkpKSB7CiAK IAkJcndfbG9ja19zX3VubG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7CiAKQEAgLTEzMDYsNyArMTMw Myw3IEBAIGJ0cl9zZWFyY2hfYnVpbGRfcGFnZV9oYXNoX2luZGV4KAogCiAJbl9jYWNoZWQgPSAw OwogCi0JaW5kZXhfaWQgPSBidHJfcGFnZV9nZXRfaW5kZXhfaWQocGFnZSk7CisJdXRfYShVVF9E VUxJTlRfRVEoaW5kZXgtPmlkLCBidHJfcGFnZV9nZXRfaW5kZXhfaWQocGFnZSkpKTsKIAogCXJl YyA9IHBhZ2VfcmVjX2dldF9uZXh0KHBhZ2VfZ2V0X2luZmltdW1fcmVjKHBhZ2UpKTsKIApAQCAt MTMyMSw3ICsxMzE4LDcgQEAgYnRyX3NlYXJjaF9idWlsZF9wYWdlX2hhc2hfaW5kZXgoCiAJCX0K IAl9CiAKLQlmb2xkID0gcmVjX2ZvbGQocmVjLCBvZmZzZXRzLCBuX2ZpZWxkcywgbl9ieXRlcywg aW5kZXhfaWQpOworCWZvbGQgPSByZWNfZm9sZChyZWMsIG9mZnNldHMsIG5fZmllbGRzLCBuX2J5 dGVzLCBpbmRleC0+aWQpOwogCiAJaWYgKGxlZnRfc2lkZSkgewogCkBAIC0xMzQ4LDcgKzEzNDUs NyBAQCBidHJfc2VhcmNoX2J1aWxkX3BhZ2VfaGFzaF9pbmRleCgKIAkJb2Zmc2V0cyA9IHJlY19n ZXRfb2Zmc2V0cyhuZXh0X3JlYywgaW5kZXgsIG9mZnNldHMsCiAJCQkJCSAgbl9maWVsZHMgKyAo bl9ieXRlcyA+IDApLCAmaGVhcCk7CiAJCW5leHRfZm9sZCA9IHJlY19mb2xkKG5leHRfcmVjLCBv ZmZzZXRzLCBuX2ZpZWxkcywKLQkJCQkgICAgIG5fYnl0ZXMsIGluZGV4X2lkKTsKKwkJCQkgICAg IG5fYnl0ZXMsIGluZGV4LT5pZCk7CiAKIAkJaWYgKGZvbGQgIT0gbmV4dF9mb2xkKSB7CiAJCQkv KiBJbnNlcnQgYW4gZW50cnkgaW50byB0aGUgaGFzaCBpbmRleCAqLwpAQCAtMTM3MywxMyArMTM3 MCwxMyBAQCBidHJfc2VhcmNoX2J1aWxkX3BhZ2VfaGFzaF9pbmRleCgKIAogCXJ3X2xvY2tfeF9s b2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKIAotCWlmIChVTklWX1VOTElLRUxZKGJ0cl9zZWFyY2hf ZnVsbHlfZGlzYWJsZWQpKSB7CisJaWYgKFVOSVZfVU5MSUtFTFkoIWJ0cl9zZWFyY2hfZW5hYmxl ZCkpIHsKIAkJZ290byBleGl0X2Z1bmM7CiAJfQogCi0JaWYgKGJsb2NrLT5pc19oYXNoZWQgJiYg KChibG9jay0+Y3Vycl9uX2ZpZWxkcyAhPSBuX2ZpZWxkcykKLQkJCQkgfHwgKGJsb2NrLT5jdXJy X25fYnl0ZXMgIT0gbl9ieXRlcykKLQkJCQkgfHwgKGJsb2NrLT5jdXJyX2xlZnRfc2lkZSAhPSBs ZWZ0X3NpZGUpKSkgeworCWlmIChibG9jay0+aW5kZXggJiYgKChibG9jay0+Y3Vycl9uX2ZpZWxk cyAhPSBuX2ZpZWxkcykKKwkJCSAgICAgfHwgKGJsb2NrLT5jdXJyX25fYnl0ZXMgIT0gbl9ieXRl cykKKwkJCSAgICAgfHwgKGJsb2NrLT5jdXJyX2xlZnRfc2lkZSAhPSBsZWZ0X3NpZGUpKSkgewog CQlnb3RvIGV4aXRfZnVuYzsKIAl9CiAKQEAgLTEzODgsMTEgKzEzODUsMTAgQEAgYnRyX3NlYXJj aF9idWlsZF9wYWdlX2hhc2hfaW5kZXgoCiAJcmVidWlsZCBoYXNoIGluZGV4IGZvciBhIHBhZ2Ug dGhhdCBpcyBhbHJlYWR5IGhhc2hlZCwgd2UKIAloYXZlIHRvIHRha2UgY2FyZSBub3QgdG8gaW5j cmVtZW50IHRoZSBjb3VudGVyIGluIHRoYXQKIAljYXNlLiAqLwotCWlmICghYmxvY2stPmlzX2hh c2hlZCkgeworCWlmICghYmxvY2stPmluZGV4KSB7CiAJCWluZGV4LT5zZWFyY2hfaW5mby0+cmVm X2NvdW50Kys7CiAJfQogCi0JYmxvY2stPmlzX2hhc2hlZCA9IFRSVUU7CiAJYmxvY2stPm5faGFz aF9oZWxwcyA9IDA7CiAKIAlibG9jay0+Y3Vycl9uX2ZpZWxkcyA9IG5fZmllbGRzOwpAQCAtMTQ0 MCwxNCArMTQzNiwxNSBAQCBidHJfc2VhcmNoX21vdmVfb3JfZGVsZXRlX2hhc2hfZW50cmllcygK IAl1dF9hZChyd19sb2NrX293bigmKGJsb2NrLT5sb2NrKSwgUldfTE9DS19FWCkpOwogCXV0X2Fk KHJ3X2xvY2tfb3duKCYobmV3X2Jsb2NrLT5sb2NrKSwgUldfTE9DS19FWCkpOwogI2VuZGlmIC8q IFVOSVZfU1lOQ19ERUJVRyAqLwotCXV0X2EoIW5ld19ibG9jay0+aXNfaGFzaGVkIHx8IG5ld19i bG9jay0+aW5kZXggPT0gaW5kZXgpOwotCXV0X2EoIWJsb2NrLT5pc19oYXNoZWQgfHwgYmxvY2st PmluZGV4ID09IGluZGV4KTsKLQl1dF9hKCEobmV3X2Jsb2NrLT5pc19oYXNoZWQgfHwgYmxvY2st PmlzX2hhc2hlZCkKLQkgICAgIHx8ICFkaWN0X2luZGV4X2lzX2lidWYoaW5kZXgpKTsKIAogCXJ3 X2xvY2tfc19sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKIAotCWlmIChuZXdfYmxvY2stPmlzX2hh c2hlZCkgeworCXV0X2EoIW5ld19ibG9jay0+aW5kZXggfHwgbmV3X2Jsb2NrLT5pbmRleCA9PSBp bmRleCk7CisJdXRfYSghYmxvY2stPmluZGV4IHx8IGJsb2NrLT5pbmRleCA9PSBpbmRleCk7CisJ dXRfYSghKG5ld19ibG9jay0+aW5kZXggfHwgYmxvY2stPmluZGV4KQorCSAgICAgfHwgIWRpY3Rf aW5kZXhfaXNfaWJ1ZihpbmRleCkpOworCisJaWYgKG5ld19ibG9jay0+aW5kZXgpIHsKIAogCQly d19sb2NrX3NfdW5sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKIApAQCAtMTQ1Niw3ICsxNDUzLDcg QEAgYnRyX3NlYXJjaF9tb3ZlX29yX2RlbGV0ZV9oYXNoX2VudHJpZXMoCiAJCXJldHVybjsKIAl9 CiAKLQlpZiAoYmxvY2stPmlzX2hhc2hlZCkgeworCWlmIChibG9jay0+aW5kZXgpIHsKIAogCQlu X2ZpZWxkcyA9IGJsb2NrLT5jdXJyX25fZmllbGRzOwogCQluX2J5dGVzID0gYmxvY2stPmN1cnJf bl9ieXRlczsKQEAgLTE0OTMsNDIgKzE0OTAsNDggQEAgYnRyX3NlYXJjaF91cGRhdGVfaGFzaF9v bl9kZWxldGUoCiB7CiAJaGFzaF90YWJsZV90Kgl0YWJsZTsKIAlidWZfYmxvY2tfdCoJYmxvY2s7 Ci0JcmVjX3QqCQlyZWM7CisJY29uc3QgcmVjX3QqCXJlYzsKIAl1bGludAkJZm9sZDsKLQlkdWxp bnQJCWluZGV4X2lkOworCWRpY3RfaW5kZXhfdCoJaW5kZXg7CiAJdWxpbnQJCW9mZnNldHNfW1JF Q19PRkZTX05PUk1BTF9TSVpFXTsKIAltZW1faGVhcF90KgloZWFwCQk9IE5VTEw7CiAJcmVjX29m ZnNfaW5pdChvZmZzZXRzXyk7CiAKLQlyZWMgPSBidHJfY3VyX2dldF9yZWMoY3Vyc29yKTsKLQog CWJsb2NrID0gYnRyX2N1cl9nZXRfYmxvY2soY3Vyc29yKTsKIAogI2lmZGVmIFVOSVZfU1lOQ19E RUJVRwogCXV0X2FkKHJ3X2xvY2tfb3duKCYoYmxvY2stPmxvY2spLCBSV19MT0NLX0VYKSk7CiAj ZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCiAKLQlpZiAoIWJsb2NrLT5pc19oYXNoZWQpIHsK KwlpbmRleCA9IGJsb2NrLT5pbmRleDsKKworCWlmICghaW5kZXgpIHsKIAogCQlyZXR1cm47CiAJ fQogCi0JdXRfYShibG9jay0+aW5kZXggPT0gY3Vyc29yLT5pbmRleCk7CisJdXRfYShpbmRleCA9 PSBjdXJzb3ItPmluZGV4KTsKIAl1dF9hKGJsb2NrLT5jdXJyX25fZmllbGRzICsgYmxvY2stPmN1 cnJfbl9ieXRlcyA+IDApOwotCXV0X2EoIWRpY3RfaW5kZXhfaXNfaWJ1ZihjdXJzb3ItPmluZGV4 KSk7CisJdXRfYSghZGljdF9pbmRleF9pc19pYnVmKGluZGV4KSk7CiAKIAl0YWJsZSA9IGJ0cl9z ZWFyY2hfc3lzLT5oYXNoX2luZGV4OwogCi0JaW5kZXhfaWQgPSBjdXJzb3ItPmluZGV4LT5pZDsK LQlmb2xkID0gcmVjX2ZvbGQocmVjLCByZWNfZ2V0X29mZnNldHMocmVjLCBjdXJzb3ItPmluZGV4 LCBvZmZzZXRzXywKKwlyZWMgPSBidHJfY3VyX2dldF9yZWMoY3Vyc29yKTsKKworCWZvbGQgPSBy ZWNfZm9sZChyZWMsIHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBvZmZzZXRzXywKIAkJCQkJ ICAgICBVTElOVF9VTkRFRklORUQsICZoZWFwKSwKLQkJCWJsb2NrLT5jdXJyX25fZmllbGRzLCBi bG9jay0+Y3Vycl9uX2J5dGVzLCBpbmRleF9pZCk7CisJCQlibG9jay0+Y3Vycl9uX2ZpZWxkcywg YmxvY2stPmN1cnJfbl9ieXRlcywgaW5kZXgtPmlkKTsKIAlpZiAoVU5JVl9MSUtFTFlfTlVMTCho ZWFwKSkgewogCQltZW1faGVhcF9mcmVlKGhlYXApOwogCX0KKwogCXJ3X2xvY2tfeF9sb2NrKCZi dHJfc2VhcmNoX2xhdGNoKTsKIAotCWhhX3NlYXJjaF9hbmRfZGVsZXRlX2lmX2ZvdW5kKHRhYmxl LCBmb2xkLCByZWMpOworCWlmIChibG9jay0+aW5kZXgpIHsKKwkJdXRfYShibG9jay0+aW5kZXgg PT0gaW5kZXgpOworCisJCWhhX3NlYXJjaF9hbmRfZGVsZXRlX2lmX2ZvdW5kKHRhYmxlLCBmb2xk LCByZWMpOworCX0KIAogCXJ3X2xvY2tfeF91bmxvY2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwogfQpA QCAtMTU0Niw2ICsxNTQ5LDcgQEAgYnRyX3NlYXJjaF91cGRhdGVfaGFzaF9ub2RlX29uX2luc2Vy dCgKIHsKIAloYXNoX3RhYmxlX3QqCXRhYmxlOwogCWJ1Zl9ibG9ja190KglibG9jazsKKwlkaWN0 X2luZGV4X3QqCWluZGV4OwogCXJlY190KgkJcmVjOwogCiAJcmVjID0gYnRyX2N1cl9nZXRfcmVj KGN1cnNvcik7CkBAIC0xNTU2LDE2ICsxNTYwLDI1IEBAIGJ0cl9zZWFyY2hfdXBkYXRlX2hhc2hf bm9kZV9vbl9pbnNlcnQoCiAJdXRfYWQocndfbG9ja19vd24oJihibG9jay0+bG9jayksIFJXX0xP Q0tfRVgpKTsKICNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIAotCWlmICghYmxvY2stPmlz X2hhc2hlZCkgeworCWluZGV4ID0gYmxvY2stPmluZGV4OworCisJaWYgKCFpbmRleCkgewogCiAJ CXJldHVybjsKIAl9CiAKLQl1dF9hKGJsb2NrLT5pbmRleCA9PSBjdXJzb3ItPmluZGV4KTsKLQl1 dF9hKCFkaWN0X2luZGV4X2lzX2lidWYoY3Vyc29yLT5pbmRleCkpOworCXV0X2EoY3Vyc29yLT5p bmRleCA9PSBpbmRleCk7CisJdXRfYSghZGljdF9pbmRleF9pc19pYnVmKGluZGV4KSk7CiAKIAly d19sb2NrX3hfbG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7CiAKKwlpZiAoIWJsb2NrLT5pbmRleCkg eworCisJCWdvdG8gZnVuY19leGl0OworCX0KKworCXV0X2EoYmxvY2stPmluZGV4ID09IGluZGV4 KTsKKwogCWlmICgoY3Vyc29yLT5mbGFnID09IEJUUl9DVVJfSEFTSCkKIAkgICAgJiYgKGN1cnNv ci0+bl9maWVsZHMgPT0gYmxvY2stPmN1cnJfbl9maWVsZHMpCiAJICAgICYmIChjdXJzb3ItPm5f Ynl0ZXMgPT0gYmxvY2stPmN1cnJfbl9ieXRlcykKQEAgLTE1NzYsNiArMTU4OSw3IEBAIGJ0cl9z ZWFyY2hfdXBkYXRlX2hhc2hfbm9kZV9vbl9pbnNlcnQoCiAJCWhhX3NlYXJjaF9hbmRfdXBkYXRl X2lmX2ZvdW5kKHRhYmxlLCBjdXJzb3ItPmZvbGQsIHJlYywKIAkJCQkJICAgICAgYmxvY2ssIHBh Z2VfcmVjX2dldF9uZXh0KHJlYykpOwogCitmdW5jX2V4aXQ6CiAJCXJ3X2xvY2tfeF91bmxvY2so JmJ0cl9zZWFyY2hfbGF0Y2gpOwogCX0gZWxzZSB7CiAJCXJ3X2xvY2tfeF91bmxvY2soJmJ0cl9z ZWFyY2hfbGF0Y2gpOwpAQCAtMTU5NywxMCArMTYxMSwxMCBAQCBidHJfc2VhcmNoX3VwZGF0ZV9o YXNoX29uX2luc2VydCgKIHsKIAloYXNoX3RhYmxlX3QqCXRhYmxlOwogCWJ1Zl9ibG9ja190Kgli bG9jazsKKwlkaWN0X2luZGV4X3QqCWluZGV4OwogCXJlY190KgkJcmVjOwogCXJlY190KgkJaW5z X3JlYzsKIAlyZWNfdCoJCW5leHRfcmVjOwotCWR1bGludAkJaW5kZXhfaWQ7CiAJdWxpbnQJCWZv bGQ7CiAJdWxpbnQJCWluc19mb2xkOwogCXVsaW50CQluZXh0X2ZvbGQgPSAwOyAvKiByZW1vdmUg d2FybmluZyAoPz8/IGJ1ZyA/Pz8pICovCkBAIC0xNjI1LDE1ICsxNjM5LDE1IEBAIGJ0cl9zZWFy Y2hfdXBkYXRlX2hhc2hfb25faW5zZXJ0KAogCXV0X2FkKHJ3X2xvY2tfb3duKCYoYmxvY2stPmxv Y2spLCBSV19MT0NLX0VYKSk7CiAjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCiAKLQlpZiAo IWJsb2NrLT5pc19oYXNoZWQpIHsKKwlpbmRleCA9IGJsb2NrLT5pbmRleDsKKworCWlmICghaW5k ZXgpIHsKIAogCQlyZXR1cm47CiAJfQogCi0JdXRfYShibG9jay0+aW5kZXggPT0gY3Vyc29yLT5p bmRleCk7Ci0JdXRfYSghZGljdF9pbmRleF9pc19pYnVmKGN1cnNvci0+aW5kZXgpKTsKLQotCWlu ZGV4X2lkID0gY3Vyc29yLT5pbmRleC0+aWQ7CisJdXRfYShpbmRleCA9PSBjdXJzb3ItPmluZGV4 KTsKKwl1dF9hKCFkaWN0X2luZGV4X2lzX2lidWYoaW5kZXgpKTsKIAogCW5fZmllbGRzID0gYmxv Y2stPmN1cnJfbl9maWVsZHM7CiAJbl9ieXRlcyA9IGJsb2NrLT5jdXJyX25fYnl0ZXM7CkBAIC0x NjQyLDIxICsxNjU2LDIxIEBAIGJ0cl9zZWFyY2hfdXBkYXRlX2hhc2hfb25faW5zZXJ0KAogCWlu c19yZWMgPSBwYWdlX3JlY19nZXRfbmV4dChyZWMpOwogCW5leHRfcmVjID0gcGFnZV9yZWNfZ2V0 X25leHQoaW5zX3JlYyk7CiAKLQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKGluc19yZWMsIGN1 cnNvci0+aW5kZXgsIG9mZnNldHMsCisJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhpbnNfcmVj LCBpbmRleCwgb2Zmc2V0cywKIAkJCQkgIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApOwotCWluc19m b2xkID0gcmVjX2ZvbGQoaW5zX3JlYywgb2Zmc2V0cywgbl9maWVsZHMsIG5fYnl0ZXMsIGluZGV4 X2lkKTsKKwlpbnNfZm9sZCA9IHJlY19mb2xkKGluc19yZWMsIG9mZnNldHMsIG5fZmllbGRzLCBu X2J5dGVzLCBpbmRleC0+aWQpOwogCiAJaWYgKCFwYWdlX3JlY19pc19zdXByZW11bShuZXh0X3Jl YykpIHsKLQkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhuZXh0X3JlYywgY3Vyc29yLT5pbmRl eCwgb2Zmc2V0cywKKwkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhuZXh0X3JlYywgaW5kZXgs IG9mZnNldHMsCiAJCQkJCSAgbl9maWVsZHMgKyAobl9ieXRlcyA+IDApLCAmaGVhcCk7CiAJCW5l eHRfZm9sZCA9IHJlY19mb2xkKG5leHRfcmVjLCBvZmZzZXRzLCBuX2ZpZWxkcywKLQkJCQkgICAg IG5fYnl0ZXMsIGluZGV4X2lkKTsKKwkJCQkgICAgIG5fYnl0ZXMsIGluZGV4LT5pZCk7CiAJfQog CiAJaWYgKCFwYWdlX3JlY19pc19pbmZpbXVtKHJlYykpIHsKLQkJb2Zmc2V0cyA9IHJlY19nZXRf b2Zmc2V0cyhyZWMsIGN1cnNvci0+aW5kZXgsIG9mZnNldHMsCisJCW9mZnNldHMgPSByZWNfZ2V0 X29mZnNldHMocmVjLCBpbmRleCwgb2Zmc2V0cywKIAkJCQkJICBuX2ZpZWxkcyArIChuX2J5dGVz ID4gMCksICZoZWFwKTsKLQkJZm9sZCA9IHJlY19mb2xkKHJlYywgb2Zmc2V0cywgbl9maWVsZHMs IG5fYnl0ZXMsIGluZGV4X2lkKTsKKwkJZm9sZCA9IHJlY19mb2xkKHJlYywgb2Zmc2V0cywgbl9m aWVsZHMsIG5fYnl0ZXMsIGluZGV4LT5pZCk7CiAJfSBlbHNlIHsKIAkJaWYgKGxlZnRfc2lkZSkg ewogCkBAIC0xNjY0LDYgKzE2NzgsMTAgQEAgYnRyX3NlYXJjaF91cGRhdGVfaGFzaF9vbl9pbnNl cnQoCiAKIAkJCWxvY2tlZCA9IFRSVUU7CiAKKwkJCWlmICghYnRyX3NlYXJjaF9lbmFibGVkKSB7 CisJCQkJZ290byBmdW5jdGlvbl9leGl0OworCQkJfQorCiAJCQloYV9pbnNlcnRfZm9yX2ZvbGQo dGFibGUsIGluc19mb2xkLCBibG9jaywgaW5zX3JlYyk7CiAJCX0KIApAQCAtMTY3Nyw2ICsxNjk1 LDEwIEBAIGJ0cl9zZWFyY2hfdXBkYXRlX2hhc2hfb25faW5zZXJ0KAogCQkJcndfbG9ja194X2xv Y2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwogCiAJCQlsb2NrZWQgPSBUUlVFOworCisJCQlpZiAoIWJ0 cl9zZWFyY2hfZW5hYmxlZCkgeworCQkJCWdvdG8gZnVuY3Rpb25fZXhpdDsKKwkJCX0KIAkJfQog CiAJCWlmICghbGVmdF9zaWRlKSB7CkBAIC0xNjk1LDYgKzE3MTcsMTAgQEAgY2hlY2tfbmV4dF9y ZWM6CiAJCQkJcndfbG9ja194X2xvY2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwogCiAJCQkJbG9ja2Vk ID0gVFJVRTsKKworCQkJCWlmICghYnRyX3NlYXJjaF9lbmFibGVkKSB7CisJCQkJCWdvdG8gZnVu Y3Rpb25fZXhpdDsKKwkJCQl9CiAJCQl9CiAKIAkJCWhhX2luc2VydF9mb3JfZm9sZCh0YWJsZSwg aW5zX2ZvbGQsIGJsb2NrLCBpbnNfcmVjKTsKQEAgLTE3MTAsNiArMTczNiwxMCBAQCBjaGVja19u ZXh0X3JlYzoKIAkJCXJ3X2xvY2tfeF9sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKIAogCQkJbG9j a2VkID0gVFJVRTsKKworCQkJaWYgKCFidHJfc2VhcmNoX2VuYWJsZWQpIHsKKwkJCQlnb3RvIGZ1 bmN0aW9uX2V4aXQ7CisJCQl9CiAJCX0KIAogCQlpZiAoIWxlZnRfc2lkZSkgewpAQCAtMTcxNyw3 ICsxNzQ3LDcgQEAgY2hlY2tfbmV4dF9yZWM6CiAJCQloYV9pbnNlcnRfZm9yX2ZvbGQodGFibGUs IGluc19mb2xkLCBibG9jaywgaW5zX3JlYyk7CiAJCQkvKgogCQkJZnB1dHMoIkhhc2ggaW5zZXJ0 IGZvciAiLCBzdGRlcnIpOwotCQkJZGljdF9pbmRleF9uYW1lX3ByaW50KHN0ZGVyciwgY3Vyc29y LT5pbmRleCk7CisJCQlkaWN0X2luZGV4X25hbWVfcHJpbnQoc3RkZXJyLCBpbmRleCk7CiAJCQlm cHJpbnRmKHN0ZGVyciwgIiBmb2xkICVsdVxuIiwgaW5zX2ZvbGQpOwogCQkJKi8KIAkJfSBlbHNl IHsKQEAgLTE4MjEsNyArMTg1MSw3IEBAIGJ0cl9zZWFyY2hfdmFsaWRhdGUodm9pZCkKIAkJCQkJ CSAgKyAoYmxvY2stPmN1cnJfbl9ieXRlcyA+IDApLAogCQkJCQkJICAmaGVhcCk7CiAKLQkJCWlm ICghYmxvY2stPmlzX2hhc2hlZCB8fCBub2RlLT5mb2xkCisJCQlpZiAoIWJsb2NrLT5pbmRleCB8 fCBub2RlLT5mb2xkCiAJCQkgICAgIT0gcmVjX2ZvbGQoKHJlY190Kikobm9kZS0+ZGF0YSksCiAJ CQkJCW9mZnNldHMsCiAJCQkJCWJsb2NrLT5jdXJyX25fZmllbGRzLApAQCAtMTg1NiwxMCArMTg4 NiwxMCBAQCBidHJfc2VhcmNoX3ZhbGlkYXRlKHZvaWQpCiAJCQkJcmVjX3ByaW50X25ldyhzdGRl cnIsIChyZWNfdCopbm9kZS0+ZGF0YSwKIAkJCQkJICAgICAgb2Zmc2V0cyk7CiAJCQkJZnByaW50 ZihzdGRlcnIsICJcbklubm9EQjogb24gdGhhdCBwYWdlLiIKLQkJCQkJIiBQYWdlIG1lbSBhZGRy ZXNzICVwLCBpcyBoYXNoZWQgJWx1LCIKKwkJCQkJIiBQYWdlIG1lbSBhZGRyZXNzICVwLCBpcyBo YXNoZWQgJXAsIgogCQkJCQkiIG4gZmllbGRzICVsdSwgbiBieXRlcyAlbHVcbiIKIAkJCQkJIklu bm9EQjogc2lkZSAlbHVcbiIsCi0JCQkJCSh2b2lkKikgcGFnZSwgKHVsb25nKSBibG9jay0+aXNf aGFzaGVkLAorCQkJCQkodm9pZCopIHBhZ2UsICh2b2lkKikgYmxvY2stPmluZGV4LAogCQkJCQko dWxvbmcpIGJsb2NrLT5jdXJyX25fZmllbGRzLAogCQkJCQkodWxvbmcpIGJsb2NrLT5jdXJyX25f Ynl0ZXMsCiAJCQkJCSh1bG9uZykgYmxvY2stPmN1cnJfbGVmdF9zaWRlKTsKCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vYnVmL2J1ZjBidWYuYycKLS0tIGEvc3RvcmFn ZS9pbm5vZGJfcGx1Z2luL2J1Zi9idWYwYnVmLmMJcmV2aWQ6dmluYXkuZmlzcmVrYXJAb3JhY2xl LmNvbS0yMDExMTAxMjA0NDA1Mi1kZTdkZzNwb2YwbDAyYzFvCisrKyBiL3N0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9idWYvYnVmMGJ1Zi5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEx MDEyMDYwMDQ5LW80dW9xN3hmbDRicWd6ZW0KQEAgLTk2Miw4NiArOTYyLDQyIEBAIGJ1Zl9wb29s X2ZyZWUodm9pZCkKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotRHJvcHMgdGhlIGFkYXB0aXZlIGhh c2ggaW5kZXguICBUbyBwcmV2ZW50IGEgbGl2ZWxvY2ssIHRoaXMgZnVuY3Rpb24KLWlzIG9ubHkg dG8gYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYnRyX3NlYXJjaF9sYXRjaCBhbmQgd2hpbGUKLWJ0 cl9zZWFyY2hfZW5hYmxlZCA9PSBGQUxTRS4gKi8KK0NsZWFycyB0aGUgYWRhcHRpdmUgaGFzaCBp bmRleCBvbiBhbGwgcGFnZXMgaW4gdGhlIGJ1ZmZlciBwb29sLiAqLwogVU5JVl9JTlRFUk4KIHZv aWQKLWJ1Zl9wb29sX2Ryb3BfaGFzaF9pbmRleCh2b2lkKQotLyo9PT09PT09PT09PT09PT09PT09 PT09PT09PSovCitidWZfcG9vbF9jbGVhcl9oYXNoX2luZGV4KHZvaWQpCisvKj09PT09PT09PT09 PT09PT09PT09PT09PT09PSovCiB7Ci0JaWJvb2wJCXJlbGVhc2VkX3NlYXJjaF9sYXRjaDsKKwli dWZfY2h1bmtfdCoJY2h1bmtzCT0gYnVmX3Bvb2wtPmNodW5rczsKKwlidWZfY2h1bmtfdCoJY2h1 bmsJPSBjaHVua3MgKyBidWZfcG9vbC0+bl9jaHVua3M7CiAKICNpZmRlZiBVTklWX1NZTkNfREVC VUcKIAl1dF9hZChyd19sb2NrX293bigmYnRyX3NlYXJjaF9sYXRjaCwgUldfTE9DS19FWCkpOwog I2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogCXV0X2FkKCFidHJfc2VhcmNoX2VuYWJsZWQp OwogCi0JZG8gewotCQlidWZfY2h1bmtfdCoJY2h1bmtzCT0gYnVmX3Bvb2wtPmNodW5rczsKLQkJ YnVmX2NodW5rX3QqCWNodW5rCT0gY2h1bmtzICsgYnVmX3Bvb2wtPm5fY2h1bmtzOwotCi0JCXJl bGVhc2VkX3NlYXJjaF9sYXRjaCA9IEZBTFNFOwotCi0JCXdoaWxlICgtLWNodW5rID49IGNodW5r cykgewotCQkJYnVmX2Jsb2NrX3QqCWJsb2NrCT0gY2h1bmstPmJsb2NrczsKLQkJCXVsaW50CQlp CT0gY2h1bmstPnNpemU7Ci0KLQkJCWZvciAoOyBpLS07IGJsb2NrKyspIHsKLQkJCQkvKiBibG9j ay0+aXNfaGFzaGVkIGNhbm5vdCBiZSBtb2RpZmllZAotCQkJCXdoZW4gd2UgaGF2ZSBhbiB4LWxh dGNoIG9uIGJ0cl9zZWFyY2hfbGF0Y2g7Ci0JCQkJc2VlIHRoZSBjb21tZW50IGluIGJ1ZjBidWYu aCAqLwotCi0JCQkJaWYgKGJ1Zl9ibG9ja19nZXRfc3RhdGUoYmxvY2spCi0JCQkJICAgICE9IEJV Rl9CTE9DS19GSUxFX1BBR0UKLQkJCQkgICAgfHwgIWJsb2NrLT5pc19oYXNoZWQpIHsKLQkJCQkJ Y29udGludWU7Ci0JCQkJfQotCi0JCQkJLyogVG8gZm9sbG93IHRoZSBsYXRjaGluZyBvcmRlciwg d2UKLQkJCQloYXZlIHRvIHJlbGVhc2UgYnRyX3NlYXJjaF9sYXRjaAotCQkJCWJlZm9yZSBhY3F1 aXJpbmcgYmxvY2stPmxhdGNoLiAqLwotCQkJCXJ3X2xvY2tfeF91bmxvY2soJmJ0cl9zZWFyY2hf bGF0Y2gpOwotCQkJCS8qIFdoZW4gd2UgcmVsZWFzZSB0aGUgc2VhcmNoIGxhdGNoLAotCQkJCXdl IG11c3QgcmVzY2FuIGFsbCBibG9ja3MsIGJlY2F1c2UKLQkJCQlzb21lIG1heSBiZWNvbWUgaGFz aGVkIGFnYWluLiAqLwotCQkJCXJlbGVhc2VkX3NlYXJjaF9sYXRjaCA9IFRSVUU7Ci0KLQkJCQly d19sb2NrX3hfbG9jaygmYmxvY2stPmxvY2spOwotCi0JCQkJLyogVGhpcyBzaG91bGQgYmUgZ3Vh cmFudGVlZCBieSB0aGUKLQkJCQljYWxsZXJzLCB3aGljaCB3aWxsIGJlIGhvbGRpbmcKLQkJCQli dHJfc2VhcmNoX2VuYWJsZWRfbXV0ZXguICovCi0JCQkJdXRfYWQoIWJ0cl9zZWFyY2hfZW5hYmxl ZCk7Ci0KLQkJCQkvKiBCZWNhdXNlIHdlIGRpZCBub3QgYnVmZmVyLWZpeCB0aGUKLQkJCQlibG9j ayBieSBjYWxsaW5nIGJ1Zl9ibG9ja19nZXRfZ2VuKCksCi0JCQkJaXQgaXMgcG9zc2libGUgdGhh dCB0aGUgYmxvY2sgaGFzIGJlZW4KLQkJCQlhbGxvY2F0ZWQgZm9yIHNvbWUgb3RoZXIgdXNlIGFm dGVyCi0JCQkJYnRyX3NlYXJjaF9sYXRjaCB3YXMgcmVsZWFzZWQgYWJvdmUuCi0JCQkJV2UgZG8g bm90IGNhcmUgd2hpY2ggZmlsZSBwYWdlIHRoZQotCQkJCWJsb2NrIGlzIG1hcHBlZCB0by4gIEFs bCB3ZSB3YW50IHRvIGRvCi0JCQkJaXMgdG8gZHJvcCBhbnkgaGFzaCBlbnRyaWVzIHJlZmVycmlu ZwotCQkJCXRvIHRoZSBwYWdlLiAqLwotCi0JCQkJLyogSXQgaXMgcG9zc2libGUgdGhhdAotCQkJ CWJsb2NrLT5wYWdlLnN0YXRlICE9IEJVRl9GSUxFX1BBR0UuCi0JCQkJRXZlbiB0aGF0IGRvZXMg bm90IG1hdHRlciwgYmVjYXVzZQotCQkJCWJ0cl9zZWFyY2hfZHJvcF9wYWdlX2hhc2hfaW5kZXgo KSB3aWxsCi0JCQkJY2hlY2sgYmxvY2stPmlzX2hhc2hlZCBiZWZvcmUgZG9pbmcKLQkJCQlhbnl0 aGluZy4gIGJsb2NrLT5pc19oYXNoZWQgY2FuIG9ubHkKLQkJCQliZSBzZXQgb24gdW5jb21wcmVz c2VkIGZpbGUgcGFnZXMuICovCi0KLQkJCQlidHJfc2VhcmNoX2Ryb3BfcGFnZV9oYXNoX2luZGV4 KGJsb2NrKTsKLQotCQkJCXJ3X2xvY2tfeF91bmxvY2soJmJsb2NrLT5sb2NrKTsKLQotCQkJCXJ3 X2xvY2tfeF9sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKLQotCQkJCXV0X2FkKCFidHJfc2VhcmNo X2VuYWJsZWQpOworCXdoaWxlICgtLWNodW5rID49IGNodW5rcykgeworCQlidWZfYmxvY2tfdCoJ YmxvY2sJPSBjaHVuay0+YmxvY2tzOworCQl1bGludAkJaQk9IGNodW5rLT5zaXplOworCisJCWZv ciAoOyBpLS07IGJsb2NrKyspIHsKKwkJCWRpY3RfaW5kZXhfdCoJaW5kZXgJPSBibG9jay0+aW5k ZXg7CisKKwkJCS8qIFdlIGNhbiBzZXQgYmxvY2stPmluZGV4ID0gTlVMTAorCQkJd2hlbiB3ZSBo YXZlIGFuIHgtbGF0Y2ggb24gYnRyX3NlYXJjaF9sYXRjaDsKKwkJCXNlZSB0aGUgY29tbWVudCBp biBidWYwYnVmLmggKi8KKworCQkJaWYgKCFpbmRleCkgeworCQkJCS8qIE5vdCBoYXNoZWQgKi8K KwkJCQljb250aW51ZTsKIAkJCX0KKworCQkJYmxvY2stPmluZGV4ID0gTlVMTDsKKyMgaWYgZGVm aW5lZCBVTklWX0FISV9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKKwkJCWJsb2NrLT5uX3Bv aW50ZXJzID0gMDsKKyMgZW5kaWYgLyogVU5JVl9BSElfREVCVUcgfHwgVU5JVl9ERUJVRyAqLwog CQl9Ci0JfSB3aGlsZSAocmVsZWFzZWRfc2VhcmNoX2xhdGNoKTsKKwl9CiB9CiAKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKQEAgLTExNzQsMzYgKzExMzAsNiBAQCBidWZfcGFnZV9zZXRfYWNjZXNzZWRfbWFr ZV95b3VuZygKIAl9CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVJldHVybnMgdGhlIGN1cnJlbnQg c3RhdGUgb2YgaXNfaGFzaGVkIG9mIGEgcGFnZS4gRkFMU0UgaWYgdGhlIHBhZ2UgaXMKLW5vdCBp biB0aGUgcG9vbC4gTk9URSB0aGF0IHRoaXMgb3BlcmF0aW9uIGRvZXMgbm90IGZpeCB0aGUgcGFn ZSBpbiB0aGUKLXBvb2wgaWYgaXQgaXMgZm91bmQgdGhlcmUuCi1AcmV0dXJuCVRSVUUgaWYgcGFn ZSBoYXNoIGluZGV4IGlzIGJ1aWx0IGluIHNlYXJjaCBzeXN0ZW0gKi8KLVVOSVZfSU5URVJOCi1p Ym9vbAotYnVmX3BhZ2VfcGVla19pZl9zZWFyY2hfaGFzaGVkKAotLyo9PT09PT09PT09PT09PT09 PT09PT09PT09PT0qLwotCXVsaW50CXNwYWNlLAkvKiE8IGluOiBzcGFjZSBpZCAqLwotCXVsaW50 CW9mZnNldCkJLyohPCBpbjogcGFnZSBudW1iZXIgKi8KLXsKLQlidWZfYmxvY2tfdCoJYmxvY2s7 Ci0JaWJvb2wJCWlzX2hhc2hlZDsKLQotCWJ1Zl9wb29sX211dGV4X2VudGVyKCk7Ci0KLQlibG9j ayA9IChidWZfYmxvY2tfdCopIGJ1Zl9wYWdlX2hhc2hfZ2V0KHNwYWNlLCBvZmZzZXQpOwotCi0J aWYgKCFibG9jayB8fCBidWZfYmxvY2tfZ2V0X3N0YXRlKGJsb2NrKSAhPSBCVUZfQkxPQ0tfRklM RV9QQUdFKSB7Ci0JCWlzX2hhc2hlZCA9IEZBTFNFOwotCX0gZWxzZSB7Ci0JCWlzX2hhc2hlZCA9 IGJsb2NrLT5pc19oYXNoZWQ7Ci0JfQotCi0JYnVmX3Bvb2xfbXV0ZXhfZXhpdCgpOwotCi0JcmV0 dXJuKGlzX2hhc2hlZCk7Ci19Ci0KICNpZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NF UyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFNldHMgZmlsZV9wYWdl X3dhc19mcmVlZCBUUlVFIGlmIHRoZSBwYWdlIGlzIGZvdW5kIGluIHRoZSBidWZmZXIgcG9vbC4K QEAgLTE0MDgsNyArMTMzNCw2IEBAIGJ1Zl9ibG9ja19pbml0X2xvdygKIAlibG9jay0+aW5kZXgJ CT0gTlVMTDsKIAogCWJsb2NrLT5uX2hhc2hfaGVscHMJPSAwOwotCWJsb2NrLT5pc19oYXNoZWQJ PSBGQUxTRTsKIAlibG9jay0+bl9maWVsZHMJCT0gMTsKIAlibG9jay0+bl9ieXRlcwkJPSAwOwog CWJsb2NrLT5sZWZ0X3NpZGUJPSBUUlVFOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5u b2RiX3BsdWdpbi9idWYvYnVmMGxydS5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vYnVm L2J1ZjBscnUuYwlyZXZpZDp2aW5heS5maXNyZWthckBvcmFjbGUuY29tLTIwMTExMDEyMDQ0MDUy LWRlN2RnM3BvZjBsMDJjMW8KKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J1Zi9idWYwbHJ1 LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTEwMTIwNjAwNDktbzR1b3E3eGZs NGJxZ3plbQpAQCAtMjcyLDcgKzI3Miw3IEBAIG5leHRfcGFnZToKIAogCQltdXRleF9lbnRlcigm KChidWZfYmxvY2tfdCopIGJwYWdlKS0+bXV0ZXgpOwogCQlpc19maXhlZCA9IGJwYWdlLT5idWZf Zml4X2NvdW50ID4gMAotCQkJfHwgISgoYnVmX2Jsb2NrX3QqKSBicGFnZSktPmlzX2hhc2hlZDsK KwkJCXx8ICEoKGJ1Zl9ibG9ja190KikgYnBhZ2UpLT5pbmRleDsKIAkJbXV0ZXhfZXhpdCgmKChi dWZfYmxvY2tfdCopIGJwYWdlKS0+bXV0ZXgpOwogCiAJCWlmIChpc19maXhlZCkgewpAQCAtNDA3 LDcgKzQwNyw3IEBAIHNjYW5fYWdhaW46CiAJCWlmIChidWZfcGFnZV9nZXRfc3RhdGUoYnBhZ2Up ICE9IEJVRl9CTE9DS19GSUxFX1BBR0UpIHsKIAkJCS8qIFRoaXMgaXMgYSBjb21wcmVzc2VkLW9u bHkgYmxvY2sKIAkJCWRlc2NyaXB0b3IuIERvIG5vdGhpbmcuICovCi0JCX0gZWxzZSBpZiAoKChi dWZfYmxvY2tfdCopIGJwYWdlKS0+aXNfaGFzaGVkKSB7CisJCX0gZWxzZSBpZiAoKChidWZfYmxv Y2tfdCopIGJwYWdlKS0+aW5kZXgpIHsKIAkJCXVsaW50CXBhZ2Vfbm87CiAJCQl1bGludAl6aXBf c2l6ZTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIHNjYW5fYWdhaW46CiAJCQltdXRleF9leGl0KGJs b2NrX211dGV4KTsKIAogCQkJLyogTm90ZSB0aGF0IHRoZSBmb2xsb3dpbmcgY2FsbCB3aWxsIGFj cXVpcmUKLQkJCWFuIFMtbGF0Y2ggb24gdGhlIHBhZ2UgKi8KKwkJCWFuZCByZWxlYXNlIGFuIFgt bGF0Y2ggb24gdGhlIHBhZ2UuICovCiAKIAkJCWJ0cl9zZWFyY2hfZHJvcF9wYWdlX2hhc2hfd2hl bl9mcmVlZCgKIAkJCQlpZCwgemlwX3NpemUsIHBhZ2Vfbm8pOwoKPT09IG1vZGlmaWVkIGZpbGUg J3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9oYS9oYTBoYS5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9w bHVnaW4vaGEvaGEwaGEuYwlyZXZpZDp2aW5heS5maXNyZWthckBvcmFjbGUuY29tLTIwMTExMDEy MDQ0MDUyLWRlN2RnM3BvZjBsMDJjMW8KKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2hhL2hh MGhhLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTEwMTIwNjAwNDktbzR1b3E3 eGZsNGJxZ3plbQpAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5 cmlnaHQgKGMpIDE5OTQsIDIwMDksIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgor Q29weXJpZ2h0IChjKSAxOTk0LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBB bGwgUmlnaHRzIFJlc2VydmVkLgogCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUKQEAgLTg5LDQwICs4OSw2IEBAIGhhX2NyZWF0ZV9mdW5jKAogfQogCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKLUVtcHRpZXMgYSBoYXNoIHRhYmxlIGFuZCBmcmVlcyB0aGUgbWVtb3J5IGhlYXBzLiAqLwot VU5JVl9JTlRFUk4KLXZvaWQKLWhhX2NsZWFyKAotLyo9PT09PSovCi0JaGFzaF90YWJsZV90Kgl0 YWJsZSkJLyohPCBpbiwgb3duOiBoYXNoIHRhYmxlICovCi17Ci0JdWxpbnQJaTsKLQl1bGludAlu OwotCi0JdXRfYWQodGFibGUpOwotCXV0X2FkKHRhYmxlLT5tYWdpY19uID09IEhBU0hfVEFCTEVf TUFHSUNfTik7Ci0jaWZkZWYgVU5JVl9TWU5DX0RFQlVHCi0JdXRfYWQocndfbG9ja19vd24oJmJ0 cl9zZWFyY2hfbGF0Y2gsIFJXX0xPQ0tfRVhDTFVTSVZFKSk7Ci0jZW5kaWYgLyogVU5JVl9TWU5D X0RFQlVHICovCi0KLSNpZm5kZWYgVU5JVl9IT1RCQUNLVVAKLQkvKiBGcmVlIHRoZSBtZW1vcnkg aGVhcHMuICovCi0JbiA9IHRhYmxlLT5uX211dGV4ZXM7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbjsg aSsrKSB7Ci0JCW1lbV9oZWFwX2ZyZWUodGFibGUtPmhlYXBzW2ldKTsKLQl9Ci0jZW5kaWYgLyog IVVOSVZfSE9UQkFDS1VQICovCi0KLQkvKiBDbGVhciB0aGUgaGFzaCB0YWJsZS4gKi8KLQluID0g aGFzaF9nZXRfbl9jZWxscyh0YWJsZSk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0J CWhhc2hfZ2V0X250aF9jZWxsKHRhYmxlLCBpKS0+bm9kZSA9IE5VTEw7Ci0JfQotfQotCi0vKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKIEluc2VydHMgYW4gZW50cnkgaW50byBhIGhhc2ggdGFibGUuIElmIGFuIGVudHJ5IHdp dGggdGhlIHNhbWUgZm9sZCBudW1iZXIKIGlzIGZvdW5kLCBpdHMgbm9kZSBpcyB1cGRhdGVkIHRv IHBvaW50IHRvIHRoZSBuZXcgZGF0YSwgYW5kIG5vIG5ldyBub2RlCiBpcyBpbnNlcnRlZC4gSWYg YnRyX3NlYXJjaF9lbmFibGVkIGlzIHNldCB0byBGQUxTRSwgd2Ugd2lsbCBvbmx5IGFsbG93CkBA IC0xNDAsNyArMTA2LDcgQEAgaGFfaW5zZXJ0X2Zvcl9mb2xkX2Z1bmMoCiAjaWYgZGVmaW5lZCBV TklWX0FISV9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlidWZfYmxvY2tfdCoJYmxvY2ss CS8qITwgaW46IGJ1ZmZlciBibG9jayBjb250YWluaW5nIHRoZSBkYXRhICovCiAjZW5kaWYgLyog VU5JVl9BSElfREVCVUcgfHwgVU5JVl9ERUJVRyAqLwotCXZvaWQqCQlkYXRhKQkvKiE8IGluOiBk YXRhLCBtdXN0IG5vdCBiZSBOVUxMICovCisJY29uc3QgcmVjX3QqCWRhdGEpCS8qITwgaW46IGRh dGEsIG11c3Qgbm90IGJlIE5VTEwgKi8KIHsKIAloYXNoX2NlbGxfdCoJY2VsbDsKIAloYV9ub2Rl X3QqCW5vZGU7CkBAIC0xNTMsNyArMTE5LDExIEBAIGhhX2luc2VydF9mb3JfZm9sZF9mdW5jKAog I2lmIGRlZmluZWQgVU5JVl9BSElfREVCVUcgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJdXRfYShi bG9jay0+ZnJhbWUgPT0gcGFnZV9hbGlnbihkYXRhKSk7CiAjZW5kaWYgLyogVU5JVl9BSElfREVC VUcgfHwgVU5JVl9ERUJVRyAqLworI2lmZGVmIFVOSVZfU1lOQ19ERUJVRworCXV0X2FkKHJ3X2xv Y2tfb3duKCZidHJfc2VhcmNoX2xhdGNoLCBSV19MT0NLX0VYKSk7CisjZW5kaWYgLyogVU5JVl9T WU5DX0RFQlVHICovCiAJQVNTRVJUX0hBU0hfTVVURVhfT1dOKHRhYmxlLCBmb2xkKTsKKwl1dF9h ZChidHJfc2VhcmNoX2VuYWJsZWQpOwogCiAJaGFzaCA9IGhhc2hfY2FsY19oYXNoKGZvbGQsIHRh YmxlKTsKIApAQCAtMTczLDcgKzE0Myw2IEBAIGhhX2luc2VydF9mb3JfZm9sZF9mdW5jKAogCQkJ CXByZXZfYmxvY2stPm5fcG9pbnRlcnMtLTsKIAkJCQlibG9jay0+bl9wb2ludGVycysrOwogCQkJ fQotCQkJdXRfYWQoIWJ0cl9zZWFyY2hfZnVsbHlfZGlzYWJsZWQpOwogIyBlbmRpZiAvKiAhVU5J Vl9IT1RCQUNLVVAgKi8KIAogCQkJcHJldl9ub2RlLT5ibG9jayA9IGJsb2NrOwpAQCAtMTg2LDEz ICsxNTUsNiBAQCBoYV9pbnNlcnRfZm9yX2ZvbGRfZnVuYygKIAkJcHJldl9ub2RlID0gcHJldl9u b2RlLT5uZXh0OwogCX0KIAotCS8qIFdlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBkaXNhYmxpbmcg aGFzaCBpbmRleCwgZG8gbm90IGFkZAotCW5ldyBjaGFpbiBub2RlICovCi0JaWYgKCFidHJfc2Vh cmNoX2VuYWJsZWQpIHsKLQkJdXRfYWQoIWJ0cl9zZWFyY2hfZnVsbHlfZGlzYWJsZWQpOwotCQly ZXR1cm4oVFJVRSk7Ci0JfQotCiAJLyogV2UgaGF2ZSB0byBhbGxvY2F0ZSBhIG5ldyBjaGFpbiBu b2RlICovCiAKIAlub2RlID0gbWVtX2hlYXBfYWxsb2MoaGFzaF9nZXRfaGVhcCh0YWJsZSwgZm9s ZCksIHNpemVvZihoYV9ub2RlX3QpKTsKQEAgLTI1MCw2ICsyMTIsMTAgQEAgaGFfZGVsZXRlX2hh c2hfbm9kZSgKIHsKIAl1dF9hZCh0YWJsZSk7CiAJdXRfYWQodGFibGUtPm1hZ2ljX24gPT0gSEFT SF9UQUJMRV9NQUdJQ19OKTsKKyNpZmRlZiBVTklWX1NZTkNfREVCVUcKKwl1dF9hZChyd19sb2Nr X293bigmYnRyX3NlYXJjaF9sYXRjaCwgUldfTE9DS19FWCkpOworI2VuZGlmIC8qIFVOSVZfU1lO Q19ERUJVRyAqLworCXV0X2FkKGJ0cl9zZWFyY2hfZW5hYmxlZCk7CiAjaWYgZGVmaW5lZCBVTklW X0FISV9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKICMgaWZuZGVmIFVOSVZfSE9UQkFDS1VQ CiAJaWYgKHRhYmxlLT5hZGFwdGl2ZSkgewpAQCAtMjcyLDExICsyMzgsMTEgQEAgaGFfc2VhcmNo X2FuZF91cGRhdGVfaWZfZm91bmRfZnVuYygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSovCiAJaGFzaF90YWJsZV90Kgl0YWJsZSwJLyohPCBpbi9vdXQ6IGhhc2ggdGFibGUgKi8K IAl1bGludAkJZm9sZCwJLyohPCBpbjogZm9sZGVkIHZhbHVlIG9mIHRoZSBzZWFyY2hlZCBkYXRh ICovCi0Jdm9pZCoJCWRhdGEsCS8qITwgaW46IHBvaW50ZXIgdG8gdGhlIGRhdGEgKi8KKwljb25z dCByZWNfdCoJZGF0YSwJLyohPCBpbjogcG9pbnRlciB0byB0aGUgZGF0YSAqLwogI2lmIGRlZmlu ZWQgVU5JVl9BSElfREVCVUcgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJYnVmX2Jsb2NrX3QqCW5l d19ibG9jaywvKiE8IGluOiBibG9jayBjb250YWluaW5nIG5ld19kYXRhICovCiAjZW5kaWYgLyog VU5JVl9BSElfREVCVUcgfHwgVU5JVl9ERUJVRyAqLwotCXZvaWQqCQluZXdfZGF0YSkvKiE8IGlu OiBuZXcgcG9pbnRlciB0byB0aGUgZGF0YSAqLworCWNvbnN0IHJlY190KgluZXdfZGF0YSkvKiE8 IGluOiBuZXcgcG9pbnRlciB0byB0aGUgZGF0YSAqLwogewogCWhhX25vZGVfdCoJbm9kZTsKIApA QCAtMjg2LDYgKzI1MiwxMyBAQCBoYV9zZWFyY2hfYW5kX3VwZGF0ZV9pZl9mb3VuZF9mdW5jKAog I2lmIGRlZmluZWQgVU5JVl9BSElfREVCVUcgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJdXRfYShu ZXdfYmxvY2stPmZyYW1lID09IHBhZ2VfYWxpZ24obmV3X2RhdGEpKTsKICNlbmRpZiAvKiBVTklW X0FISV9ERUJVRyB8fCBVTklWX0RFQlVHICovCisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisJdXRf YWQocndfbG9ja19vd24oJmJ0cl9zZWFyY2hfbGF0Y2gsIFJXX0xPQ0tfRVgpKTsKKyNlbmRpZiAv KiBVTklWX1NZTkNfREVCVUcgKi8KKworCWlmICghYnRyX3NlYXJjaF9lbmFibGVkKSB7CisJCXJl dHVybjsKKwl9CiAKIAlub2RlID0gaGFfc2VhcmNoX3dpdGhfZGF0YSh0YWJsZSwgZm9sZCwgZGF0 YSk7CiAKQEAgLTMyMiw2ICsyOTUsMTAgQEAgaGFfcmVtb3ZlX2FsbF9ub2Rlc190b19wYWdlKAog CXV0X2FkKHRhYmxlKTsKIAl1dF9hZCh0YWJsZS0+bWFnaWNfbiA9PSBIQVNIX1RBQkxFX01BR0lD X04pOwogCUFTU0VSVF9IQVNIX01VVEVYX09XTih0YWJsZSwgZm9sZCk7CisjaWZkZWYgVU5JVl9T WU5DX0RFQlVHCisJdXRfYWQocndfbG9ja19vd24oJmJ0cl9zZWFyY2hfbGF0Y2gsIFJXX0xPQ0tf RVgpKTsKKyNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KKwl1dF9hZChidHJfc2VhcmNoX2Vu YWJsZWQpOwogCiAJbm9kZSA9IGhhX2NoYWluX2dldF9maXJzdCh0YWJsZSwgZm9sZCk7CiAKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaGFuZGxlci9oYV9pbm5vZGIu Y2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9oYW5kbGVyL2hhX2lubm9kYi5jYwlyZXZp ZDp2aW5heS5maXNyZWthckBvcmFjbGUuY29tLTIwMTExMDEyMDQ0MDUyLWRlN2RnM3BvZjBsMDJj MW8KKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2hhbmRsZXIvaGFfaW5ub2RiLmNjCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMDEyMDYwMDQ5LW80dW9xN3hmbDRicWd6ZW0K QEAgLTIzMDQsNyArMjMwNCw2IEBAIGlubm9iYXNlX2NoYW5nZV9idWZmZXJpbmdfaW5pdGVkX29r OgogCS8qIEdldCB0aGUgY3VycmVudCBoaWdoIHdhdGVyIG1hcmsgZm9ybWF0LiAqLwogCWlubm9i YXNlX2ZpbGVfZm9ybWF0X2NoZWNrID0gKGNoYXIqKSB0cnhfc3lzX2ZpbGVfZm9ybWF0X21heF9n ZXQoKTsKIAotCWJ0cl9zZWFyY2hfZnVsbHlfZGlzYWJsZWQgPSAoIWJ0cl9zZWFyY2hfZW5hYmxl ZCk7CiAJREJVR19SRVRVUk4oRkFMU0UpOwogZXJyb3I6CiAJREJVR19SRVRVUk4oVFJVRSk7Cgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2lidWYvaWJ1ZjBpYnVmLmMn Ci0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pYnVmL2lidWYwaWJ1Zi5jCXJldmlkOnZpbmF5 LmZpc3Jla2FyQG9yYWNsZS5jb20tMjAxMTEwMTIwNDQwNTItZGU3ZGczcG9mMGwwMmMxbworKysg Yi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaWJ1Zi9pYnVmMGlidWYuYwlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMTAxMjA2MDA0OS1vNHVvcTd4Zmw0YnFnemVtCkBAIC0yOTcxLDcg KzI5NzEsNyBAQCBpYnVmX2luc2VydF90b19pbmRleF9wYWdlKAogCiAJdXRfYWQoaWJ1Zl9pbnNp ZGUoKSk7CiAJdXRfYWQoZHR1cGxlX2NoZWNrX3R5cGVkKGVudHJ5KSk7Ci0JdXRfYWQoIWJ1Zl9i bG9ja19hbGlnbihwYWdlKS0+aXNfaGFzaGVkKTsKKwl1dF9hZCghYnVmX2Jsb2NrX2FsaWduKHBh Z2UpLT5pbmRleCk7CiAKIAlpZiAoVU5JVl9VTkxJS0VMWShkaWN0X3RhYmxlX2lzX2NvbXAoaW5k ZXgtPnRhYmxlKQogCQkJICAhPSAoaWJvb2wpISFwYWdlX2lzX2NvbXAocGFnZSkpKSB7Cgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvYnRyMHNlYS5oJwot LS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9idHIwc2VhLmgJcmV2aWQ6dmluYXku ZmlzcmVrYXJAb3JhY2xlLmNvbS0yMDExMTAxMjA0NDA1Mi1kZTdkZzNwb2YwbDAyYzFvCisrKyBi L3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjBzZWEuaAlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMTAxMjA2MDA0OS1vNHVvcTd4Zmw0YnFnemVtCkBAIC0xLDYgKzEs NiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NiwgMjAwOSwg SW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTYsIDIw MTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAK IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMTQxLDggKzE0 MSw4IEBAIGJ0cl9zZWFyY2hfZHJvcF9wYWdlX2hhc2hfaW5kZXgoCiAJCQkJZm9yIHdoaWNoIHdl IGtub3cgdGhhdAogCQkJCWJsb2NrLT5idWZfZml4X2NvdW50ID09IDAgKi8KIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKLURyb3BzIGEgcGFnZSBoYXNoIGluZGV4IHdoZW4gYSBwYWdlIGlzIGZyZWVkIGZyb20g YSBmc2VnIHRvIHRoZSBmaWxlIHN5c3RlbS4KLURyb3BzIHBvc3NpYmxlIGhhc2ggaW5kZXggaWYg dGhlIHBhZ2UgaGFwcGVucyB0byBiZSBpbiB0aGUgYnVmZmVyIHBvb2wuICovCitEcm9wcyBhIHBv c3NpYmxlIHBhZ2UgaGFzaCBpbmRleCB3aGVuIGEgcGFnZSBpcyBldmljdGVkIGZyb20gdGhlIGJ1 ZmZlciBwb29sCitvciBmcmVlZCBpbiBhIGZpbGUgc2VnbWVudC4gKi8KIFVOSVZfSU5URVJOCiB2 b2lkCiBidHJfc2VhcmNoX2Ryb3BfcGFnZV9oYXNoX3doZW5fZnJlZWQoCkBAIC0xOTIsMTYgKzE5 Miw2IEBAIGJ0cl9zZWFyY2hfdmFsaWRhdGUodm9pZCk7CiAjIGRlZmluZSBidHJfc2VhcmNoX3Zh bGlkYXRlKCkJVFJVRQogI2VuZGlmIC8qIGRlZmluZWQgVU5JVl9BSElfREVCVUcgfHwgZGVmaW5l ZCBVTklWX0RFQlVHICovCiAKLS8qKiBGbGFnOiBoYXMgdGhlIHNlYXJjaCBzeXN0ZW0gYmVlbiBl bmFibGVkPwotUHJvdGVjdGVkIGJ5IGJ0cl9zZWFyY2hfbGF0Y2ggYW5kIGJ0cl9zZWFyY2hfZW5h YmxlZF9tdXRleC4gKi8KLWV4dGVybiBjaGFyCWJ0cl9zZWFyY2hfZW5hYmxlZDsKLQotLyoqIEZs YWc6IHdoZXRoZXIgdGhlIHNlYXJjaCBzeXN0ZW0gaGFzIGNvbXBsZXRlZCBpdHMgZGlzYWJsaW5n IHByb2Nlc3MsCi1JdCBpcyBzZXQgdG8gVFJVRSByaWdodCBhZnRlciBidWZfcG9vbF9kcm9wX2hh c2hfaW5kZXgoKSBpbgotYnRyX3NlYXJjaF9kaXNhYmxlKCksIGluZGljYXRpbmcgaGFzaCBpbmRl eCBlbnRyaWVzIGFyZSBjbGVhbmVkIHVwLgotUHJvdGVjdGVkIGJ5IGJ0cl9zZWFyY2hfbGF0Y2gg YW5kIGJ0cl9zZWFyY2hfZW5hYmxlZF9tdXRleC4gKi8KLWV4dGVybiBpYm9vbAlidHJfc2VhcmNo X2Z1bGx5X2Rpc2FibGVkOwotCiAvKiogVGhlIHNlYXJjaCBpbmZvIHN0cnVjdCBpbiBhbiBpbmRl eCAqLwogc3RydWN0IGJ0cl9zZWFyY2hfc3RydWN0ewogCXVsaW50CXJlZl9jb3VudDsJLyohPCBO dW1iZXIgb2YgYmxvY2tzIGluIHRoaXMgaW5kZXggdHJlZQpAQCAtMjcwLDI0ICsyNjAsNiBAQCBz dHJ1Y3QgYnRyX3NlYXJjaF9zeXNfc3RydWN0ewogLyoqIFRoZSBhZGFwdGl2ZSBoYXNoIGluZGV4 ICovCiBleHRlcm4gYnRyX3NlYXJjaF9zeXNfdCoJYnRyX3NlYXJjaF9zeXM7CiAKLS8qKiBAYnJp ZWYgVGhlIGxhdGNoIHByb3RlY3RpbmcgdGhlIGFkYXB0aXZlIHNlYXJjaCBzeXN0ZW0KLQotVGhp cyBsYXRjaCBwcm90ZWN0cyB0aGUKLSgxKSBoYXNoIGluZGV4OwotKDIpIGNvbHVtbnMgb2YgYSBy ZWNvcmQgdG8gd2hpY2ggd2UgaGF2ZSBhIHBvaW50ZXIgaW4gdGhlIGhhc2ggaW5kZXg7Ci0KLWJ1 dCBkb2VzIE5PVCBwcm90ZWN0OgotCi0oMykgbmV4dCByZWNvcmQgb2Zmc2V0IGZpZWxkIGluIGEg cmVjb3JkOwotKDQpIG5leHQgb3IgcHJldmlvdXMgcmVjb3JkcyBvbiB0aGUgc2FtZSBwYWdlLgot Ci1CZWFyIGluIG1pbmQgKDMpIGFuZCAoNCkgd2hlbiB1c2luZyB0aGUgaGFzaCBpbmRleC4KLSov Ci1leHRlcm4gcndfbG9ja190KglidHJfc2VhcmNoX2xhdGNoX3RlbXA7Ci0KLS8qKiBUaGUgbGF0 Y2ggcHJvdGVjdGluZyB0aGUgYWRhcHRpdmUgc2VhcmNoIHN5c3RlbSAqLwotI2RlZmluZSBidHJf c2VhcmNoX2xhdGNoCSgqYnRyX3NlYXJjaF9sYXRjaF90ZW1wKQotCiAjaWZkZWYgVU5JVl9TRUFS Q0hfUEVSRl9TVEFUCiAvKiogTnVtYmVyIG9mIHN1Y2Nlc3NmdWwgYWRhcHRpdmUgaGFzaCBpbmRl eCBsb29rdXBzICovCiBleHRlcm4gdWxpbnQJYnRyX3NlYXJjaF9uX3N1Y2M7Cgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvYnRyMHR5cGVzLmgnCi0tLSBh L3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjB0eXBlcy5oCXJldmlkOnZpbmF5LmZp c3Jla2FyQG9yYWNsZS5jb20tMjAxMTEwMTIwNDQwNTItZGU3ZGczcG9mMGwwMmMxbworKysgYi9z dG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9idHIwdHlwZXMuaAlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMTAxMjA2MDA0OS1vNHVvcTd4Zmw0YnFnemVtCkBAIC0xLDYgKzEs NiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NiwgMjAwOSwg SW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTYsIDIw MTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAK IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMzAsNiArMzAs NyBAQCBDcmVhdGVkIDIvMTcvMTk5NiBIZWlra2kgVHV1cmkKIAogI2luY2x1ZGUgInJlbTB0eXBl cy5oIgogI2luY2x1ZGUgInBhZ2UwdHlwZXMuaCIKKyNpbmNsdWRlICJzeW5jMHJ3LmgiCiAKIC8q KiBQZXJzaXN0ZW50IGN1cnNvciAqLwogdHlwZWRlZiBzdHJ1Y3QgYnRyX3BjdXJfc3RydWN0CQli dHJfcGN1cl90OwpAQCAtMzgsNiArMzksMjggQEAgdHlwZWRlZiBzdHJ1Y3QgYnRyX2N1cl9zdHJ1 Y3QJCWJ0cl9jdXJfdAogLyoqIEItdHJlZSBzZWFyY2ggaW5mb3JtYXRpb24gZm9yIHRoZSBhZGFw dGl2ZSBoYXNoIGluZGV4ICovCiB0eXBlZGVmIHN0cnVjdCBidHJfc2VhcmNoX3N0cnVjdAlidHJf c2VhcmNoX3Q7CiAKKy8qKiBAYnJpZWYgVGhlIGxhdGNoIHByb3RlY3RpbmcgdGhlIGFkYXB0aXZl IHNlYXJjaCBzeXN0ZW0KKworVGhpcyBsYXRjaCBwcm90ZWN0cyB0aGUKKygxKSBoYXNoIGluZGV4 OworKDIpIGNvbHVtbnMgb2YgYSByZWNvcmQgdG8gd2hpY2ggd2UgaGF2ZSBhIHBvaW50ZXIgaW4g dGhlIGhhc2ggaW5kZXg7CisKK2J1dCBkb2VzIE5PVCBwcm90ZWN0OgorCisoMykgbmV4dCByZWNv cmQgb2Zmc2V0IGZpZWxkIGluIGEgcmVjb3JkOworKDQpIG5leHQgb3IgcHJldmlvdXMgcmVjb3Jk cyBvbiB0aGUgc2FtZSBwYWdlLgorCitCZWFyIGluIG1pbmQgKDMpIGFuZCAoNCkgd2hlbiB1c2lu ZyB0aGUgaGFzaCBpbmRleC4KKyovCitleHRlcm4gcndfbG9ja190KglidHJfc2VhcmNoX2xhdGNo X3RlbXA7CisKKy8qKiBUaGUgbGF0Y2ggcHJvdGVjdGluZyB0aGUgYWRhcHRpdmUgc2VhcmNoIHN5 c3RlbSAqLworI2RlZmluZSBidHJfc2VhcmNoX2xhdGNoCSgqYnRyX3NlYXJjaF9sYXRjaF90ZW1w KQorCisvKiogRmxhZzogaGFzIHRoZSBzZWFyY2ggc3lzdGVtIGJlZW4gZW5hYmxlZD8KK1Byb3Rl Y3RlZCBieSBidHJfc2VhcmNoX2xhdGNoLiAqLworZXh0ZXJuIGNoYXIJYnRyX3NlYXJjaF9lbmFi bGVkOworCiAjaWZkZWYgVU5JVl9CTE9CX0RFQlVHCiAjIGluY2x1ZGUgImJ1ZjB0eXBlcy5oIgog LyoqIEFuIGluZGV4LT5ibG9icyBlbnRyeSBmb3Iga2VlcGluZyB0cmFjayBvZiBvZmYtcGFnZSBj b2x1bW4gcmVmZXJlbmNlcyAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3Bs dWdpbi9pbmNsdWRlL2J1ZjBidWYuaCcKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1 ZGUvYnVmMGJ1Zi5oCXJldmlkOnZpbmF5LmZpc3Jla2FyQG9yYWNsZS5jb20tMjAxMTEwMTIwNDQw NTItZGU3ZGczcG9mMGwwMmMxbworKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9i dWYwYnVmLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTEwMTIwNjAwNDktbzR1 b3E3eGZsNGJxZ3plbQpAQCAtMTIwLDEzICsxMjAsMTEgQEAgYnVmX3Bvb2xfZnJlZSh2b2lkKTsK IC8qPT09PT09PT09PT09PT09Ki8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotRHJvcHMgdGhlIGFkYXB0 aXZlIGhhc2ggaW5kZXguICBUbyBwcmV2ZW50IGEgbGl2ZWxvY2ssIHRoaXMgZnVuY3Rpb24KLWlz IG9ubHkgdG8gYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYnRyX3NlYXJjaF9sYXRjaCBhbmQgd2hp bGUKLWJ0cl9zZWFyY2hfZW5hYmxlZCA9PSBGQUxTRS4gKi8KK0NsZWFycyB0aGUgYWRhcHRpdmUg aGFzaCBpbmRleCBvbiBhbGwgcGFnZXMgaW4gdGhlIGJ1ZmZlciBwb29sLiAqLwogVU5JVl9JTlRF Uk4KIHZvaWQKLWJ1Zl9wb29sX2Ryb3BfaGFzaF9pbmRleCh2b2lkKTsKLS8qPT09PT09PT09PT09 PT09PT09PT09PT09PT0qLworYnVmX3Bvb2xfY2xlYXJfaGFzaF9pbmRleCh2b2lkKTsKKy8qPT09 PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUmVsb2NhdGUg YSBidWZmZXIgY29udHJvbCBibG9jay4gIFJlbG9jYXRlcyB0aGUgYmxvY2sgb24gdGhlIExSVSBs aXN0CkBAIC00NDAsMTcgKzQzOCw2IEBAIGJ1Zl9wYWdlX3BlZWtfaWZfdG9vX29sZCgKIC8qPT09 PT09PT09PT09PT09PT09PT09Ki8KIAljb25zdCBidWZfcGFnZV90KglicGFnZSk7CS8qITwgaW46 IGJsb2NrIHRvIG1ha2UgeW91bmdlciAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotUmV0dXJucyB0aGUg Y3VycmVudCBzdGF0ZSBvZiBpc19oYXNoZWQgb2YgYSBwYWdlLiBGQUxTRSBpZiB0aGUgcGFnZSBp cwotbm90IGluIHRoZSBwb29sLiBOT1RFIHRoYXQgdGhpcyBvcGVyYXRpb24gZG9lcyBub3QgZml4 IHRoZSBwYWdlIGluIHRoZQotcG9vbCBpZiBpdCBpcyBmb3VuZCB0aGVyZS4KLUByZXR1cm4JVFJV RSBpZiBwYWdlIGhhc2ggaW5kZXggaXMgYnVpbHQgaW4gc2VhcmNoIHN5c3RlbSAqLwotVU5JVl9J TlRFUk4KLWlib29sCi1idWZfcGFnZV9wZWVrX2lmX3NlYXJjaF9oYXNoZWQoCi0vKj09PT09PT09 PT09PT09PT09PT09PT09PT09PSovCi0JdWxpbnQJc3BhY2UsCS8qITwgaW46IHNwYWNlIGlkICov Ci0JdWxpbnQJb2Zmc2V0KTsvKiE8IGluOiBwYWdlIG51bWJlciAqLwotLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgogR2V0cyB0aGUgeW91bmdlc3QgbW9kaWZpY2F0aW9uIGxvZyBzZXF1ZW5jZSBudW1iZXIgZm9y IGEgZnJhbWUuCiBSZXR1cm5zIHplcm8gaWYgbm90IGZpbGUgcGFnZSBvciBubyBtb2RpZmljYXRp b24gb2NjdXJyZWQgeWV0LgogQHJldHVybgluZXdlc3QgbW9kaWZpY2F0aW9uIHRvIHBhZ2UgKi8K QEAgLTEyNjcsMTMgKzEyNTQsMTYgQEAgc3RydWN0IGJ1Zl9ibG9ja19zdHJ1Y3R7CiAJLyogQH0g Ki8KIAogCS8qKiBAbmFtZSBIYXNoIHNlYXJjaCBmaWVsZHMKLQlUaGVzZSA2IGZpZWxkcyBtYXkg b25seSBiZSBtb2RpZmllZCB3aGVuIHdlIGhhdmUKKwlUaGVzZSA1IGZpZWxkcyBtYXkgb25seSBi ZSBtb2RpZmllZCB3aGVuIHdlIGhhdmUKIAlhbiB4LWxhdGNoIG9uIGJ0cl9zZWFyY2hfbGF0Y2gg QU5ECiAJLSB3ZSBhcmUgaG9sZGluZyBhbiBzLWxhdGNoIG9yIHgtbGF0Y2ggb24gYnVmX2Jsb2Nr X3N0cnVjdDo6bG9jayBvcgogCS0gd2Uga25vdyB0aGF0IGJ1Zl9ibG9ja19zdHJ1Y3Q6OmJ1Zl9m aXhfY291bnQgPT0gMC4KIAogCUFuIGV4Y2VwdGlvbiB0byB0aGlzIGlzIHdoZW4gd2UgaW5pdCBv ciBjcmVhdGUgYSBwYWdlCi0JaW4gdGhlIGJ1ZmZlciBwb29sIGluIGJ1ZjBidWYuYy4gKi8KKwlp biB0aGUgYnVmZmVyIHBvb2wgaW4gYnVmMGJ1Zi5jLgorCisJQW5vdGhlciBleGNlcHRpb24gaXMg dGhhdCBhc3NpZ25pbmcgYmxvY2stPmluZGV4ID0gTlVMTAorCWlzIGFsbG93ZWQgd2hlbmV2ZXIg aG9sZGluZyBhbiB4LWxhdGNoIG9uIGJ0cl9zZWFyY2hfbGF0Y2guICovCiAKIAkvKiBAeyAqLwog CkBAIC0xMjgyLDIwICsxMjcyLDIwIEBAIHN0cnVjdCBidWZfYmxvY2tfc3RydWN0ewogCQkJCQlw b2ludGVycyBpbiB0aGUgYWRhcHRpdmUgaGFzaCBpbmRleAogCQkJCQlwb2ludGluZyB0byB0aGlz IGZyYW1lICovCiAjZW5kaWYgLyogVU5JVl9BSElfREVCVUcgfHwgVU5JVl9ERUJVRyAqLwotCXVu c2lnbmVkCWlzX2hhc2hlZDoxOwkvKiE8IFRSVUUgaWYgaGFzaCBpbmRleCBoYXMKLQkJCQkJYWxy ZWFkeSBiZWVuIGJ1aWx0IG9uIHRoaXMKLQkJCQkJcGFnZTsgbm90ZSB0aGF0IGl0IGRvZXMgbm90 Ci0JCQkJCWd1YXJhbnRlZSB0aGF0IHRoZSBpbmRleCBpcwotCQkJCQljb21wbGV0ZSwgdGhvdWdo OiB0aGVyZSBtYXkKLQkJCQkJaGF2ZSBiZWVuIGhhc2ggY29sbGlzaW9ucywKLQkJCQkJcmVjb3Jk IGRlbGV0aW9ucywgZXRjLiAqLwogCXVuc2lnbmVkCWN1cnJfbl9maWVsZHM6MTA7LyohPCBwcmVm aXggbGVuZ3RoIGZvciBoYXNoIGluZGV4aW5nOgogCQkJCQludW1iZXIgb2YgZnVsbCBmaWVsZHMg Ki8KIAl1bnNpZ25lZAljdXJyX25fYnl0ZXM6MTU7LyohPCBudW1iZXIgb2YgYnl0ZXMgaW4gaGFz aAogCQkJCQlpbmRleGluZyAqLwogCXVuc2lnbmVkCWN1cnJfbGVmdF9zaWRlOjE7LyohPCBUUlVF IG9yIEZBTFNFIGluIGhhc2ggaW5kZXhpbmcgKi8KLQlkaWN0X2luZGV4X3QqCWluZGV4OwkJLyoh PCBJbmRleCBmb3Igd2hpY2ggdGhlIGFkYXB0aXZlCi0JCQkJCWhhc2ggaW5kZXggaGFzIGJlZW4g Y3JlYXRlZC4gKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4OwkJLyohPCBJbmRleCBmb3Igd2hpY2gg dGhlCisJCQkJCWFkYXB0aXZlIGhhc2ggaW5kZXggaGFzIGJlZW4KKwkJCQkJY3JlYXRlZCwgb3Ig TlVMTCBpZiB0aGUgcGFnZQorCQkJCQlkb2VzIG5vdCBleGlzdCBpbiB0aGUKKwkJCQkJaW5kZXgu IE5vdGUgdGhhdCBpdCBkb2VzIG5vdAorCQkJCQlndWFyYW50ZWUgdGhhdCB0aGUgaW5kZXggaXMK KwkJCQkJY29tcGxldGUsIHRob3VnaDogdGhlcmUgbWF5CisJCQkJCWhhdmUgYmVlbiBoYXNoIGNv bGxpc2lvbnMsCisJCQkJCXJlY29yZCBkZWxldGlvbnMsIGV0Yy4gKi8KIAkvKiBAfSAqLwogIyBp ZmRlZiBVTklWX1NZTkNfREVCVUcKIAkvKiogQG5hbWUgRGVidWcgZmllbGRzICovCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvaGEwaGEuaCcKLS0tIGEv c3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvaGEwaGEuaAlyZXZpZDp2aW5heS5maXNyZWth ckBvcmFjbGUuY29tLTIwMTExMDEyMDQ0MDUyLWRlN2RnM3BvZjBsMDJjMW8KKysrIGIvc3RvcmFn ZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvaGEwaGEuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMTAxMjA2MDA0OS1vNHVvcTd4Zmw0YnFnemVtCkBAIC0xLDYgKzEsNiBAQAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NCwgMjAwOSwgSW5ub2Jhc2Ug T3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTQsIDIwMTEsIE9yYWNs ZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMzEsMTMgKzMxLDE0IEBAIENy ZWF0ZWQgOC8xOC8xOTk0IEhlaWtraSBUdXVyaQogI2luY2x1ZGUgImhhc2gwaGFzaC5oIgogI2lu Y2x1ZGUgInBhZ2UwdHlwZXMuaCIKICNpbmNsdWRlICJidWYwdHlwZXMuaCIKKyNpbmNsdWRlICJy ZW0wdHlwZXMuaCIKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCiBMb29rcyBmb3IgYW4gZWxlbWVudCBpbiBhIGhhc2gg dGFibGUuCiBAcmV0dXJuIHBvaW50ZXIgdG8gdGhlIGRhdGEgb2YgdGhlIGZpcnN0IGhhc2ggdGFi bGUgbm9kZSBpbiBjaGFpbgogaGF2aW5nIHRoZSBmb2xkIG51bWJlciwgTlVMTCBpZiBub3QgZm91 bmQgKi8KIFVOSVZfSU5MSU5FCi12b2lkKgorY29uc3QgcmVjX3QqCiBoYV9zZWFyY2hfYW5kX2dl dF9kYXRhKAogLyo9PT09PT09PT09PT09PT09PT09Ki8KIAloYXNoX3RhYmxlX3QqCXRhYmxlLAkv KiE8IGluOiBoYXNoIHRhYmxlICovCkBAIC01MSwxMSArNTIsMTEgQEAgaGFfc2VhcmNoX2FuZF91 cGRhdGVfaWZfZm91bmRfZnVuYygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSov CiAJaGFzaF90YWJsZV90Kgl0YWJsZSwJLyohPCBpbi9vdXQ6IGhhc2ggdGFibGUgKi8KIAl1bGlu dAkJZm9sZCwJLyohPCBpbjogZm9sZGVkIHZhbHVlIG9mIHRoZSBzZWFyY2hlZCBkYXRhICovCi0J dm9pZCoJCWRhdGEsCS8qITwgaW46IHBvaW50ZXIgdG8gdGhlIGRhdGEgKi8KKwljb25zdCByZWNf dCoJZGF0YSwJLyohPCBpbjogcG9pbnRlciB0byB0aGUgZGF0YSAqLwogI2lmIGRlZmluZWQgVU5J Vl9BSElfREVCVUcgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJYnVmX2Jsb2NrX3QqCW5ld19ibG9j aywvKiE8IGluOiBibG9jayBjb250YWluaW5nIG5ld19kYXRhICovCiAjZW5kaWYgLyogVU5JVl9B SElfREVCVUcgfHwgVU5JVl9ERUJVRyAqLwotCXZvaWQqCQluZXdfZGF0YSk7LyohPCBpbjogbmV3 IHBvaW50ZXIgdG8gdGhlIGRhdGEgKi8KKwljb25zdCByZWNfdCoJbmV3X2RhdGEpOy8qITwgaW46 IG5ldyBwb2ludGVyIHRvIHRoZSBkYXRhICovCiAKICNpZiBkZWZpbmVkIFVOSVZfQUhJX0RFQlVH IHx8IGRlZmluZWQgVU5JVl9ERUJVRwogLyoqIExvb2tzIGZvciBhbiBlbGVtZW50IHdoZW4gd2Ug a25vdyB0aGUgcG9pbnRlciB0byB0aGUgZGF0YSBhbmQKQEAgLTExNCwxNCArMTE1LDYgQEAgY2hv c2VuIHRvIGJlIGEgc2xpZ2h0bHkgYmlnZ2VyIHByaW1lIG51bQogI2VuZGlmIC8qIFVOSVZfU1lO Q19ERUJVRyAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKLUVtcHRpZXMgYSBoYXNoIHRhYmxlIGFuZCBmcmVlcyB0 aGUgbWVtb3J5IGhlYXBzLiAqLwotVU5JVl9JTlRFUk4KLXZvaWQKLWhhX2NsZWFyKAotLyo9PT09 PSovCi0JaGFzaF90YWJsZV90Kgl0YWJsZSk7CS8qITwgaW4sIG93bjogaGFzaCB0YWJsZSAqLwot Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIEluc2VydHMgYW4gZW50cnkgaW50byBhIGhhc2ggdGFibGUuIElmIGFuIGVu dHJ5IHdpdGggdGhlIHNhbWUgZm9sZCBudW1iZXIKIGlzIGZvdW5kLCBpdHMgbm9kZSBpcyB1cGRh dGVkIHRvIHBvaW50IHRvIHRoZSBuZXcgZGF0YSwgYW5kIG5vIG5ldyBub2RlCiBpcyBpbnNlcnRl ZC4KQEAgLTEzOCw3ICsxMzEsNyBAQCBoYV9pbnNlcnRfZm9yX2ZvbGRfZnVuYygKICNpZiBkZWZp bmVkIFVOSVZfQUhJX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9ERUJVRwogCWJ1Zl9ibG9ja190Kgli bG9jaywJLyohPCBpbjogYnVmZmVyIGJsb2NrIGNvbnRhaW5pbmcgdGhlIGRhdGEgKi8KICNlbmRp ZiAvKiBVTklWX0FISV9ERUJVRyB8fCBVTklWX0RFQlVHICovCi0Jdm9pZCoJCWRhdGEpOwkvKiE8 IGluOiBkYXRhLCBtdXN0IG5vdCBiZSBOVUxMICovCisJY29uc3QgcmVjX3QqCWRhdGEpOwkvKiE8 IGluOiBkYXRhLCBtdXN0IG5vdCBiZSBOVUxMICovCiAKICNpZiBkZWZpbmVkIFVOSVZfQUhJX0RF QlVHIHx8IGRlZmluZWQgVU5JVl9ERUJVRwogLyoqCkBAIC0xNzQsNyArMTY3LDcgQEAgaGFfc2Vh cmNoX2FuZF9kZWxldGVfaWZfZm91bmQoCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K IAloYXNoX3RhYmxlX3QqCXRhYmxlLAkvKiE8IGluOiBoYXNoIHRhYmxlICovCiAJdWxpbnQJCWZv bGQsCS8qITwgaW46IGZvbGRlZCB2YWx1ZSBvZiB0aGUgc2VhcmNoZWQgZGF0YSAqLwotCXZvaWQq CQlkYXRhKTsJLyohPCBpbjogcG9pbnRlciB0byB0aGUgZGF0YSAqLworCWNvbnN0IHJlY190Kglk YXRhKTsJLyohPCBpbjogcG9pbnRlciB0byB0aGUgZGF0YSAqLwogI2lmbmRlZiBVTklWX0hPVEJB Q0tVUAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgogUmVtb3ZlcyBmcm9tIHRoZSBjaGFpbiBkZXRlcm1pbmVkIGJ5 IGZvbGQgYWxsIG5vZGVzIHdob3NlIGRhdGEgcG9pbnRlcgpAQCAtMjE3LDcgKzIxMCw3IEBAIHN0 cnVjdCBoYV9ub2RlX3N0cnVjdCB7CiAjaWYgZGVmaW5lZCBVTklWX0FISV9ERUJVRyB8fCBkZWZp bmVkIFVOSVZfREVCVUcKIAlidWZfYmxvY2tfdCoJYmxvY2s7CS8qITwgYnVmZmVyIGJsb2NrIGNv bnRhaW5pbmcgdGhlIGRhdGEsIG9yIE5VTEwgKi8KICNlbmRpZiAvKiBVTklWX0FISV9ERUJVRyB8 fCBVTklWX0RFQlVHICovCi0Jdm9pZCoJCWRhdGE7CS8qITwgcG9pbnRlciB0byB0aGUgZGF0YSAq LworCWNvbnN0IHJlY190KglkYXRhOwkvKiE8IHBvaW50ZXIgdG8gdGhlIGRhdGEgKi8KIAl1bGlu dAkJZm9sZDsJLyohPCBmb2xkIHZhbHVlIGZvciB0aGUgZGF0YSAqLwogfTsKIAoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2hhMGhhLmljJwotLS0gYS9z dG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9oYTBoYS5pYwlyZXZpZDp2aW5heS5maXNyZWth ckBvcmFjbGUuY29tLTIwMTExMDEyMDQ0MDUyLWRlN2RnM3BvZjBsMDJjMW8KKysrIGIvc3RvcmFn ZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvaGEwaGEuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTEwMTIwNjAwNDktbzR1b3E3eGZsNGJxZ3plbQpAQCAtMSw2ICsxLDYgQEAKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTQsIDIwMDksIElubm9iYXNl IE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk0LCAyMDExLCBPcmFj bGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogCiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKQEAgLTI1LDYgKzI1LDcgQEAgQ3Jl YXRlZCA4LzE4LzE5OTQgSGVpa2tpIFR1dXJpCiAKICNpbmNsdWRlICJ1dDBybmQuaCIKICNpbmNs dWRlICJtZW0wbWVtLmgiCisjaW5jbHVkZSAiYnRyMHR5cGVzLmgiCiAKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIERlbGV0 ZXMgYSBoYXNoIG5vZGUuICovCkBAIC0zOSwxMCArNDAsMTAgQEAgaGFfZGVsZXRlX2hhc2hfbm9k ZSgKIEdldHMgYSBoYXNoIG5vZGUgZGF0YS4KIEByZXR1cm4JcG9pbnRlciB0byB0aGUgZGF0YSAq LwogVU5JVl9JTkxJTkUKLXZvaWQqCitjb25zdCByZWNfdCoKIGhhX25vZGVfZ2V0X2RhdGEoCiAv Kj09PT09PT09PT09PT0qLwotCWhhX25vZGVfdCoJbm9kZSkJLyohPCBpbjogaGFzaCBjaGFpbiBu b2RlICovCisJY29uc3QgaGFfbm9kZV90Kglub2RlKQkvKiE8IGluOiBoYXNoIGNoYWluIG5vZGUg Ki8KIHsKIAlyZXR1cm4obm9kZS0+ZGF0YSk7CiB9CkBAIC01Nyw3ICs1OCw3IEBAIGhhX25vZGVf c2V0X2RhdGFfZnVuYygKICNpZiBkZWZpbmVkIFVOSVZfQUhJX0RFQlVHIHx8IGRlZmluZWQgVU5J Vl9ERUJVRwogCWJ1Zl9ibG9ja190KglibG9jaywJLyohPCBpbjogYnVmZmVyIGJsb2NrIGNvbnRh aW5pbmcgdGhlIGRhdGEgKi8KICNlbmRpZiAvKiBVTklWX0FISV9ERUJVRyB8fCBVTklWX0RFQlVH ICovCi0Jdm9pZCoJCWRhdGEpCS8qITwgaW46IHBvaW50ZXIgdG8gdGhlIGRhdGEgKi8KKwljb25z dCByZWNfdCoJZGF0YSkJLyohPCBpbjogcG9pbnRlciB0byB0aGUgZGF0YSAqLwogewogI2lmIGRl ZmluZWQgVU5JVl9BSElfREVCVUcgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJbm9kZS0+YmxvY2sg PSBibG9jazsKQEAgLTEwNywzOSArMTA4LDEwIEBAIGhhX2NoYWluX2dldF9maXJzdCgKIAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovLyoqCiBMb29rcyBmb3IgYW4gZWxlbWVudCBpbiBhIGhhc2ggdGFibGUuCi1AcmV0dXJuIHBv aW50ZXIgdG8gdGhlIGZpcnN0IGhhc2ggdGFibGUgbm9kZSBpbiBjaGFpbiBoYXZpbmcgdGhlIGZv bGQKLW51bWJlciwgTlVMTCBpZiBub3QgZm91bmQgKi8KLVVOSVZfSU5MSU5FCi1oYV9ub2RlX3Qq Ci1oYV9zZWFyY2goCi0vKj09PT09PSovCi0JaGFzaF90YWJsZV90Kgl0YWJsZSwJLyohPCBpbjog aGFzaCB0YWJsZSAqLwotCXVsaW50CQlmb2xkKQkvKiE8IGluOiBmb2xkZWQgdmFsdWUgb2YgdGhl IHNlYXJjaGVkIGRhdGEgKi8KLXsKLQloYV9ub2RlX3QqCW5vZGU7Ci0KLQlBU1NFUlRfSEFTSF9N VVRFWF9PV04odGFibGUsIGZvbGQpOwotCi0Jbm9kZSA9IGhhX2NoYWluX2dldF9maXJzdCh0YWJs ZSwgZm9sZCk7Ci0KLQl3aGlsZSAobm9kZSkgewotCQlpZiAobm9kZS0+Zm9sZCA9PSBmb2xkKSB7 Ci0KLQkJCXJldHVybihub2RlKTsKLQkJfQotCi0JCW5vZGUgPSBoYV9jaGFpbl9nZXRfbmV4dChu b2RlKTsKLQl9Ci0KLQlyZXR1cm4oTlVMTCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotTG9va3MgZm9yIGFu IGVsZW1lbnQgaW4gYSBoYXNoIHRhYmxlLgogQHJldHVybiBwb2ludGVyIHRvIHRoZSBkYXRhIG9m IHRoZSBmaXJzdCBoYXNoIHRhYmxlIG5vZGUgaW4gY2hhaW4KIGhhdmluZyB0aGUgZm9sZCBudW1i ZXIsIE5VTEwgaWYgbm90IGZvdW5kICovCiBVTklWX0lOTElORQotdm9pZCoKK2NvbnN0IHJlY190 KgogaGFfc2VhcmNoX2FuZF9nZXRfZGF0YSgKIC8qPT09PT09PT09PT09PT09PT09PSovCiAJaGFz aF90YWJsZV90Kgl0YWJsZSwJLyohPCBpbjogaGFzaCB0YWJsZSAqLwpAQCAtMTQ4LDYgKzEyMCwx MCBAQCBoYV9zZWFyY2hfYW5kX2dldF9kYXRhKAogCWhhX25vZGVfdCoJbm9kZTsKIAogCUFTU0VS VF9IQVNIX01VVEVYX09XTih0YWJsZSwgZm9sZCk7CisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisJ dXRfYWQocndfbG9ja19vd24oJmJ0cl9zZWFyY2hfbGF0Y2gsIFJXX0xPQ0tfU0hBUkVEKSk7Cisj ZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCisJdXRfYWQoYnRyX3NlYXJjaF9lbmFibGVkKTsK IAogCW5vZGUgPSBoYV9jaGFpbl9nZXRfZmlyc3QodGFibGUsIGZvbGQpOwogCkBAIC0xNzIsMTIg KzE0OCwxNCBAQCBoYV9zZWFyY2hfd2l0aF9kYXRhKAogLyo9PT09PT09PT09PT09PT09Ki8KIAlo YXNoX3RhYmxlX3QqCXRhYmxlLAkvKiE8IGluOiBoYXNoIHRhYmxlICovCiAJdWxpbnQJCWZvbGQs CS8qITwgaW46IGZvbGRlZCB2YWx1ZSBvZiB0aGUgc2VhcmNoZWQgZGF0YSAqLwotCXZvaWQqCQlk YXRhKQkvKiE8IGluOiBwb2ludGVyIHRvIHRoZSBkYXRhICovCisJY29uc3QgcmVjX3QqCWRhdGEp CS8qITwgaW46IHBvaW50ZXIgdG8gdGhlIGRhdGEgKi8KIHsKIAloYV9ub2RlX3QqCW5vZGU7CiAK IAlBU1NFUlRfSEFTSF9NVVRFWF9PV04odGFibGUsIGZvbGQpOwogCisJdXRfYWQoYnRyX3NlYXJj aF9lbmFibGVkKTsKKwogCW5vZGUgPSBoYV9jaGFpbl9nZXRfZmlyc3QodGFibGUsIGZvbGQpOwog CiAJd2hpbGUgKG5vZGUpIHsKQEAgLTIwMiwxMSArMTgwLDE1IEBAIGhhX3NlYXJjaF9hbmRfZGVs ZXRlX2lmX2ZvdW5kKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJaGFzaF90YWJs ZV90Kgl0YWJsZSwJLyohPCBpbjogaGFzaCB0YWJsZSAqLwogCXVsaW50CQlmb2xkLAkvKiE8IGlu OiBmb2xkZWQgdmFsdWUgb2YgdGhlIHNlYXJjaGVkIGRhdGEgKi8KLQl2b2lkKgkJZGF0YSkJLyoh PCBpbjogcG9pbnRlciB0byB0aGUgZGF0YSAqLworCWNvbnN0IHJlY190KglkYXRhKQkvKiE8IGlu OiBwb2ludGVyIHRvIHRoZSBkYXRhICovCiB7CiAJaGFfbm9kZV90Kglub2RlOwogCiAJQVNTRVJU X0hBU0hfTVVURVhfT1dOKHRhYmxlLCBmb2xkKTsKKyNpZmRlZiBVTklWX1NZTkNfREVCVUcKKwl1 dF9hZChyd19sb2NrX293bigmYnRyX3NlYXJjaF9sYXRjaCwgUldfTE9DS19FWCkpOworI2VuZGlm IC8qIFVOSVZfU1lOQ19ERUJVRyAqLworCXV0X2FkKGJ0cl9zZWFyY2hfZW5hYmxlZCk7CiAKIAlu b2RlID0gaGFfc2VhcmNoX3dpdGhfZGF0YSh0YWJsZSwgZm9sZCwgZGF0YSk7CiAKCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9yb3cwdXBkLmljJwotLS0g YS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9yb3cwdXBkLmljCXJldmlkOnZpbmF5LmZp c3Jla2FyQG9yYWNsZS5jb20tMjAxMTEwMTIwNDQwNTItZGU3ZGczcG9mMGwwMmMxbworKysgYi9z dG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9yb3cwdXBkLmljCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTExMDEyMDYwMDQ5LW80dW9xN3hmbDRicWd6ZW0KQEAgLTI4LDcgKzI4 LDYgQEAgQ3JlYXRlZCAxMi8yNy8xOTk2IEhlaWtraSBUdXVyaQogIyBpbmNsdWRlICJ0cngwdHJ4 LmgiCiAjIGluY2x1ZGUgInRyeDB1bmRvLmgiCiAjIGluY2x1ZGUgInJvdzByb3cuaCIKLSMgaW5j bHVkZSAiYnRyMHNlYS5oIgogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwogI2luY2x1ZGUg InBhZ2UwemlwLmgiCiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4v aW5jbHVkZS9zeW5jMHN5bmMuaCcKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUv c3luYzBzeW5jLmgJcmV2aWQ6dmluYXkuZmlzcmVrYXJAb3JhY2xlLmNvbS0yMDExMTAxMjA0NDA1 Mi1kZTdkZzNwb2YwbDAyYzFvCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3N5 bmMwc3luYy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMDEyMDYwMDQ5LW80 dW9xN3hmbDRicWd6ZW0KQEAgLTQ4MSw3ICs0ODEsNiBAQCBvciByb3cgbG9jayEgKi8KICNkZWZp bmUgU1lOQ19MT0cJCTE3MAogI2RlZmluZSBTWU5DX1JFQ1YJCTE2OAogI2RlZmluZQlTWU5DX1dP UktfUVVFVUUJCTE2MgotI2RlZmluZQlTWU5DX1NFQVJDSF9TWVNfQ09ORgkxNjEJLyogZm9yIGFz c2lnbmluZyBidHJfc2VhcmNoX2VuYWJsZWQgKi8KICNkZWZpbmUJU1lOQ19TRUFSQ0hfU1lTCQkx NjAJLyogTk9URSB0aGF0IGlmIHdlIGhhdmUgYSBtZW1vcnkKIAkJCQkJaGVhcCB0aGF0IGNhbiBi ZSBleHRlbmRlZCB0byB0aGUKIAkJCQkJYnVmZmVyIHBvb2wsIGl0cyBsb2dpY2FsIGxldmVsIGlz Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3BhZ2UvcGFnZTBwYWdl LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9wYWdlL3BhZ2UwcGFnZS5jCXJldmlkOnZp bmF5LmZpc3Jla2FyQG9yYWNsZS5jb20tMjAxMTEwMTIwNDQwNTItZGU3ZGczcG9mMGwwMmMxbwor KysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vcGFnZS9wYWdlMHBhZ2UuYwlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDExMTAxMjA2MDA0OS1vNHVvcTd4Zmw0YnFnemVtCkBAIC0yMTUs MTIgKzIxNSw2IEBAIHBhZ2Vfc2V0X21heF90cnhfaWQoCiB7CiAJcGFnZV90KgkJcGFnZQkJPSBi dWZfYmxvY2tfZ2V0X2ZyYW1lKGJsb2NrKTsKICNpZm5kZWYgVU5JVl9IT1RCQUNLVVAKLQljb25z dCBpYm9vbAlpc19oYXNoZWQJPSBibG9jay0+aXNfaGFzaGVkOwotCi0JaWYgKGlzX2hhc2hlZCkg ewotCQlyd19sb2NrX3hfbG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7Ci0JfQotCiAJdXRfYWQoIW10 ciB8fCBtdHJfbWVtb19jb250YWlucyhtdHIsIGJsb2NrLCBNVFJfTUVNT19QQUdFX1hfRklYKSk7 CiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCiAKQEAgLTI0MSwxMiArMjM1LDYgQEAgcGFn ZV9zZXRfbWF4X3RyeF9pZCgKIAl9IGVsc2UgewogCQltYWNoX3dyaXRlX3RvXzgocGFnZSArIChQ QUdFX0hFQURFUiArIFBBR0VfTUFYX1RSWF9JRCksIHRyeF9pZCk7CiAJfQotCi0jaWZuZGVmIFVO SVZfSE9UQkFDS1VQCi0JaWYgKGlzX2hhc2hlZCkgewotCQlyd19sb2NrX3hfdW5sb2NrKCZidHJf c2VhcmNoX2xhdGNoKTsKLQl9Ci0jZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCiB9CiAKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovLyoqCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3N5bmMvc3lu YzBzeW5jLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9zeW5jL3N5bmMwc3luYy5jCXJl dmlkOnZpbmF5LmZpc3Jla2FyQG9yYWNsZS5jb20tMjAxMTEwMTIwNDQwNTItZGU3ZGczcG9mMGww MmMxbworKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vc3luYy9zeW5jMHN5bmMuYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMTAxMjA2MDA0OS1vNHVvcTd4Zmw0YnFnemVtCkBA IC0xMTYwLDcgKzExNjAsNiBAQCBzeW5jX3RocmVhZF9hZGRfbGV2ZWwoCiAJY2FzZSBTWU5DX0RP VUJMRVdSSVRFOgogCWNhc2UgU1lOQ19CVUZfUE9PTDoKIAljYXNlIFNZTkNfU0VBUkNIX1NZUzoK LQljYXNlIFNZTkNfU0VBUkNIX1NZU19DT05GOgogCWNhc2UgU1lOQ19UUlhfTE9DS19IRUFQOgog CWNhc2UgU1lOQ19LRVJORUw6CiAJY2FzZSBTWU5DX0lCVUZfQklUTUFQX01VVEVYOgoKTm8gYnVu ZGxlIChyZWFzb246IHVzZWxlc3MgZm9yIHB1c2ggZW1haWxzKS4=