From: marko.makela Date: April 5 2011 7:38am Subject: bzr commit into mysql-5.5-innodb branch (marko.makela:3357) WL#5136 List-Archive: http://lists.mysql.com/commits/134675 Message-Id: <201104050738.p357cDng030079@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0878072375==" --===============0878072375== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjUtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTA3MTg0My1kcjZt YnEwd29rcWR4bDltCgogMzM1NyBNYXJrbyBNw6RrZWzDpAkyMDExLTA0LTA1CiAgICAgIEJ1ZyAx MjMyMzY0MyAtIENMRUFOIFVQIFRIRSBJTk5PREIgVEhSRUFEIFNIVVRET1dOIEFORCBBU1NFUlRJ T05TIChXTCM1MTM2KQogICAgICAKICAgICAgT24gc2h1dGRvd24sIGRvIG5vdCBleGl0IHRocmVh ZHMgaW4gb3NfZXZlbnRfd2FpdCgpLiBUaGlzIG1ldGhvZCBvZgogICAgICBleGl0aW5nIHdhcyBv bmx5IHVzZWQgYnkgdGhlIEkvTyBoYW5kbGVyIHRocmVhZHMuIEV4aXQgdGhlbSBvbiBhCiAgICAg IGhpZ2hlciBsZXZlbC4KICAgICAgCiAgICAgIG9zX2V2ZW50X3dhaXRfbG93KCksIG9zX2V2ZW50 X3dhaXRfdGltZV9sb3coKTogRG8gbm90IGV4aXQgb24gc2h1dGRvd24uCiAgICAgIAogICAgICBv c190aHJlYWRfZXhpdCgpLCB1dF9kYmdfYXNzZXJ0aW9uX2ZhaWxlZCgpLCB1dF9wcmludF90aW1l c3RhbXAoKTogQWRkCiAgICAgIGF0dHJpYnV0ZSBjb2xkLCBzbyB0aGF0IEdDQyBrbm93cyB0aGF0 IHRoZXNlIGZ1bmN0aW9ucyBhcmUgcmFyZWx5CiAgICAgIGludm9rZWQgYW5kIGNhbiBiZSBvcHRp bWl6ZWQgZm9yIHNpemUuCiAgICAgIAogICAgICBvc19haW9fbGludXhfY29sbGVjdCgpOiBSZXR1 cm4gb24gc2h1dGRvd24uCiAgICAgIAogICAgICBvc19haW9fbGludXhfaGFuZGxlKCksIG9zX2Fp b19zaW11bGF0ZWRfaGFuZGxlKCksIG9zX2Fpb193aW5kb3dzX2hhbmRsZSgpOgogICAgICBTZXQg Km1lc3NhZ2UxID0gKm1lc3NhZ2UyID0gTlVMTCBhbmQgcmV0dXJuIFRSVUUgb24gc2h1dGRvd24u CiAgICAgIAogICAgICBmaWxfYWlvX3dhaXQoKTogUmV0dXJuIG9uIHNodXRkb3duLgogICAgICAK ICAgICAgbG9nc19lbXB0eV9hbmRfbWFya19maWxlc19hdF9zaHV0ZG93bigpOiBFdmVuIGluIHZl cnkgZmFzdCBzaHV0ZG93bgogICAgICAoaW5ub2RiX2Zhc3Rfc2h1dGRvd249MiksIGFsbG93IHRo ZSBiYWNrZ3JvdW5kIHRocmVhZHMgdG8gZXhpdCwgYnV0CiAgICAgIHNraXAgdGhlIGZsdXNoaW5n IGFuZCBsb2cgY2hlY2twb2ludGluZy4KICAgICAgCiAgICAgIGlubm9iYXNlX3NodXRkb3duX2Zv cl9teXNxbCgpOiBBbHdheXMgd2FpdCBmb3IgYWxsIHRoZSB0aHJlYWRzIHRvIGV4aXQuCiAgICAg IAogICAgICByYjo2MzMgYXBwcm92ZWQgYnkgU3VubnkgQmFpbnMKCiAgICBtb2RpZmllZDoKICAg ICAgc3RvcmFnZS9pbm5vYmFzZS9maWwvZmlsMGZpbC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9vczBzeW5jLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL29zMHRocmVh ZC5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91dDBkYmcuaAogICAgICBzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvdXQwdXQuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2xvZy9sb2cw bG9nLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9vcy9vczBmaWxlLmMKICAgICAgc3RvcmFnZS9p bm5vYmFzZS9vcy9vczBzeW5jLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHNydi5j CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5jCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9iYXNlL2ZpbC9maWwwZmlsLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv ZmlsL2ZpbDBmaWwuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTA3MTg0 My1kcjZtYnEwd29rcWR4bDltCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvZmlsL2ZpbDBmaWwuYwly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTA3Mzc1OC1iOHk3MzN5dmtxdW05 NDBpCkBAIC00NTI3LDggKzQ1MjcsOCBAQCBmaWxfYWlvX3dhaXQoCiAJCXJldCA9IG9zX2Fpb19s aW51eF9oYW5kbGUoc2VnbWVudCwgJmZpbF9ub2RlLAogCQkJCQkgICZtZXNzYWdlLCAmdHlwZSk7 CiAjZWxzZQotCQlyZXQgPSAwOyAvKiBFbGltaW5hdGUgY29tcGlsZXIgd2FybmluZyAqLwogCQl1 dF9lcnJvcjsKKwkJcmV0ID0gMDsgLyogRWxpbWluYXRlIGNvbXBpbGVyIHdhcm5pbmcgKi8KICNl bmRpZgogCX0gZWxzZSB7CiAJCXNydl9zZXRfaW9fdGhyZWFkX29wX2luZm8oc2VnbWVudCwgInNp bXVsYXRlZCBhaW8gaGFuZGxlIik7CkBAIC00NTM4LDYgKzQ1MzgsMTAgQEAgZmlsX2Fpb193YWl0 KAogCX0KIAogCXV0X2EocmV0KTsKKwlpZiAoVU5JVl9VTkxJS0VMWShmaWxfbm9kZSA9PSBOVUxM KSkgeworCQl1dF9hZChzcnZfc2h1dGRvd25fc3RhdGUgPT0gU1JWX1NIVVRET1dOX0VYSVRfVEhS RUFEUyk7CisJCXJldHVybjsKKwl9CiAKIAlzcnZfc2V0X2lvX3RocmVhZF9vcF9pbmZvKHNlZ21l bnQsICJjb21wbGV0ZSBpbyBmb3IgZmlsIG5vZGUiKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9vczBzeW5jLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9vczBzeW5jLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUw NzE4NDMtZHI2bWJxMHdva3FkeGw5bQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvb3Mw c3luYy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1MDczNzU4LWI4eTcz M3l2a3F1bTk0MGkKQEAgLTE1MCwxMCArMTUwLDcgQEAgb3NfZXZlbnRfZnJlZSgKIAlvc19ldmVu dF90CWV2ZW50KTsJLyohPCBpbjogZXZlbnQgdG8gZnJlZSAqLwogCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVdhaXRzIGZv ciBhbiBldmVudCBvYmplY3QgdW50aWwgaXQgaXMgaW4gdGhlIHNpZ25hbGVkIHN0YXRlLiBJZgot c3J2X3NodXRkb3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMgdGhpcyBhbHNv IGV4aXRzIHRoZQotd2FpdGluZyB0aHJlYWQgd2hlbiB0aGUgZXZlbnQgYmVjb21lcyBzaWduYWxl ZCAob3IgaW1tZWRpYXRlbHkgaWYgdGhlCi1ldmVudCBpcyBhbHJlYWR5IGluIHRoZSBzaWduYWxl ZCBzdGF0ZSkuCitXYWl0cyBmb3IgYW4gZXZlbnQgb2JqZWN0IHVudGlsIGl0IGlzIGluIHRoZSBz aWduYWxlZCBzdGF0ZS4KIAogVHlwaWNhbGx5LCBpZiB0aGUgZXZlbnQgaGFzIGJlZW4gc2lnbmFs bGVkIGFmdGVyIHRoZSBvc19ldmVudF9yZXNldCgpCiB3ZSdsbCByZXR1cm4gaW1tZWRpYXRlbHkg YmVjYXVzZSBldmVudC0+aXNfc2V0ID09IFRSVUUuCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL29zMHRocmVhZC5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvb3MwdGhyZWFkLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUw NzE4NDMtZHI2bWJxMHdva3FkeGw5bQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvb3Mw dGhyZWFkLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUwNzM3NTgtYjh5 NzMzeXZrcXVtOTQwaQpAQCAtMTA3LDggKzEwNyw5IEBAIFVOSVZfSU5URVJOCiB2b2lkCiBvc190 aHJlYWRfZXhpdCgKIC8qPT09PT09PT09PT0qLwotCXZvaWQqCWV4aXRfdmFsdWUpOwkvKiE8IGlu OiBleGl0IHZhbHVlOyBpbiBXaW5kb3dzIHRoaXMgdm9pZCoKKwl2b2lkKglleGl0X3ZhbHVlKQkv KiE8IGluOiBleGl0IHZhbHVlOyBpbiBXaW5kb3dzIHRoaXMgdm9pZCoKIAkJCQlpcyBjYXN0IGFz IGEgRFdPUkQgKi8KKwlfX2F0dHJpYnV0ZV9fKChjb2xkLCBub3JldHVybikpOwogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgogUmV0dXJucyB0aGUgdGhyZWFkIGlkZW50aWZpZXIgb2YgY3VycmVudCB0aHJlYWQuCiBA cmV0dXJuCWN1cnJlbnQgdGhyZWFkIGlkZW50aWZpZXIgKi8KCj09PSBtb2RpZmllZCBmaWxlICdz dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdXQwZGJnLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS91dDBkYmcuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTA3 MTg0My1kcjZtYnEwd29rcWR4bDltCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91dDBk YmcuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTA3Mzc1OC1iOHk3MzN5 dmtxdW05NDBpCkBAIC01MCw5ICs1MCwxMCBAQCBVTklWX0lOVEVSTgogdm9pZAogdXRfZGJnX2Fz c2VydGlvbl9mYWlsZWQoCiAvKj09PT09PT09PT09PT09PT09PT09Ki8KLQljb25zdCBjaGFyKiBl eHByLAkvKiE8IGluOiB0aGUgZmFpbGVkIGFzc2VydGlvbiAqLwotCWNvbnN0IGNoYXIqIGZpbGUs CS8qITwgaW46IHNvdXJjZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGFzc2VydGlvbiAqLwotCXVsaW50 IGxpbmUpOwkJLyohPCBpbjogbGluZSBudW1iZXIgb2YgdGhlIGFzc2VydGlvbiAqLworCWNvbnN0 IGNoYXIqCWV4cHIsCS8qITwgaW46IHRoZSBmYWlsZWQgYXNzZXJ0aW9uICovCisJY29uc3QgY2hh cioJZmlsZSwJLyohPCBpbjogc291cmNlIGZpbGUgY29udGFpbmluZyB0aGUgYXNzZXJ0aW9uICov CisJdWxpbnQJCWxpbmUpCS8qITwgaW46IGxpbmUgbnVtYmVyIG9mIHRoZSBhc3NlcnRpb24gKi8K KwlfX2F0dHJpYnV0ZV9fKChub25udWxsKDIpLCBjb2xkKSk7CiAKICNpZiBkZWZpbmVkKF9fV0lO X18pIHx8IGRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKICMgdW5kZWYgVVRfREJHX1VTRV9BQk9S VAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91dDB1dC5oJwot LS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdXQwdXQuaAlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDExMDQwNTA3MTg0My1kcjZtYnEwd29rcWR4bDltCisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS91dDB1dC5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTEwNDA1MDczNzU4LWI4eTczM3l2a3F1bTk0MGkKQEAgLTI3NSw3ICsyNzUsOCBAQCBVTklWX0lO VEVSTgogdm9pZAogdXRfcHJpbnRfdGltZXN0YW1wKAogLyo9PT09PT09PT09PT09PT0qLwotCUZJ TEUqICBmaWxlKTsgLyohPCBpbjogZmlsZSB3aGVyZSB0byBwcmludCAqLworCUZJTEUqCWZpbGUp CS8qITwgaW46IGZpbGUgd2hlcmUgdG8gcHJpbnQgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxs LCBjb2xkKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKIFNwcmludGZzIGEgdGltZXN0YW1wIHRvIGEgYnVmZmVyLCAxMy4u MTQgY2hhcnMgcGx1cyB0ZXJtaW5hdGluZyBOVUwuICovCiBVTklWX0lOVEVSTgoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvbG9nL2xvZzBsb2cuYycKLS0tIGEvc3RvcmFnZS9p bm5vYmFzZS9sb2cvbG9nMGxvZy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEw NDA1MDcxODQzLWRyNm1icTB3b2txZHhsOW0KKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9sb2cvbG9n MGxvZy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1MDczNzU4LWI4eTcz M3l2a3F1bTk0MGkKQEAgLTMwNzgsNiArMzA3OCw3IEBAIGxvZ3NfZW1wdHlfYW5kX21hcmtfZmls ZXNfYXRfc2h1dGRvd24odm8KIHsKIAlpYl91aW50NjRfdAlsc247CiAJdWxpbnQJCWFyY2hfbG9n X25vOworCWlib29sCQlzZXJ2ZXJfYnVzeTsKIAogCWlmIChzcnZfcHJpbnRfdmVyYm9zZV9sb2cp IHsKIAkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7CkBAIC0zMDkyLDE0ICszMDkzLDEyIEBA IGxvb3A6CiAKIAltdXRleF9lbnRlcigma2VybmVsX211dGV4KTsKIAotCS8qIFdlIG5lZWQgdGhl IG1vbml0b3IgdGhyZWFkcyB0byBzdG9wIGJlZm9yZSB3ZSBwcm9jZWVkIHdpdGggYQotCW5vcm1h bCBzaHV0ZG93bi4gSW4gY2FzZSBvZiB2ZXJ5IGZhc3Qgc2h1dGRvd24sIGhvd2V2ZXIsIHdlIGNh bgotCXByb2NlZWQgd2l0aG91dCB3YWl0aW5nIGZvciBtb25pdG9yIHRocmVhZHMuICovCi0KLQlp ZiAoc3J2X2Zhc3Rfc2h1dGRvd24gPCAyCi0JICAgJiYgKHNydl9lcnJvcl9tb25pdG9yX2FjdGl2 ZQotCSAgICAgIHx8IHNydl9sb2NrX3RpbWVvdXRfYWN0aXZlCi0JICAgICAgfHwgc3J2X21vbml0 b3JfYWN0aXZlKSkgeworCS8qIFdlIG5lZWQgdGhlIG1vbml0b3IgdGhyZWFkcyB0byBzdG9wIGJl Zm9yZSB3ZSBwcm9jZWVkIHdpdGgKKwlhIHNodXRkb3duLiAqLworCisJaWYgKHNydl9lcnJvcl9t b25pdG9yX2FjdGl2ZQorCSAgICB8fCBzcnZfbG9ja190aW1lb3V0X2FjdGl2ZQorCSAgICB8fCBz cnZfbW9uaXRvcl9hY3RpdmUpIHsKIAogCQltdXRleF9leGl0KCZrZXJuZWxfbXV0ZXgpOwogCkBA IC0zMTE0LDY1ICszMTEzLDU3IEBAIGxvb3A6CiAJZm9yIHRoZSAndmVyeSBmYXN0JyBzaHV0ZG93 biwgYmVjYXVzZSB0aGUgSW5ub0RCIGxheWVyIG1heSBoYXZlCiAJY29tbWl0dGVkIG9yIHByZXBh cmVkIHRyYW5zYWN0aW9ucyBhbmQgd2UgZG9uJ3Qgd2FudCB0byBsb3NlIHRoZW0uICovCiAKLQlp ZiAodHJ4X25fbXlzcWxfdHJhbnNhY3Rpb25zID4gMAotCSAgICB8fCBVVF9MSVNUX0dFVF9MRU4o dHJ4X3N5cy0+dHJ4X2xpc3QpID4gMCkgewotCi0JCW11dGV4X2V4aXQoJmtlcm5lbF9tdXRleCk7 Ci0KLQkJZ290byBsb29wOwotCX0KLQotCWlmIChzcnZfZmFzdF9zaHV0ZG93biA9PSAyKSB7Ci0J CS8qIEluIHRoaXMgZmFzdGVzdCBzaHV0ZG93biB3ZSBkbyBub3QgZmx1c2ggdGhlIGJ1ZmZlciBw b29sOgotCQlpdCBpcyBlc3NlbnRpYWxseSBhICdjcmFzaCcgb2YgdGhlIElubm9EQiBzZXJ2ZXIu IE1ha2Ugc3VyZQotCQl0aGF0IHRoZSBsb2cgaXMgYWxsIGZsdXNoZWQgdG8gZGlzaywgc28gdGhh dCB3ZSBjYW4gcmVjb3ZlcgotCQlhbGwgY29tbWl0dGVkIHRyYW5zYWN0aW9ucyBpbiBhIGNyYXNo IHJlY292ZXJ5LiBXZSBtdXN0IG5vdAotCQl3cml0ZSB0aGUgbHNuIHN0YW1wcyB0byB0aGUgZGF0 YSBmaWxlcywgc2luY2UgYXQgYSBzdGFydHVwCi0JCUlubm9EQiBkZWR1Y2VzIGZyb20gdGhlIHN0 YW1wcyBpZiB0aGUgcHJldmlvdXMgc2h1dGRvd24gd2FzCi0JCWNsZWFuLiAqLwotCi0JCWxvZ19i dWZmZXJfZmx1c2hfdG9fZGlzaygpOwotCi0JCW11dGV4X2V4aXQoJmtlcm5lbF9tdXRleCk7Ci0K LQkJcmV0dXJuOyAvKiBXZSBTS0lQIEFMTCBUSEUgUkVTVCAhISAqLwotCX0KLQorCXNlcnZlcl9i dXN5ID0gdHJ4X25fbXlzcWxfdHJhbnNhY3Rpb25zID4gMAorCQl8fCBVVF9MSVNUX0dFVF9MRU4o dHJ4X3N5cy0+dHJ4X2xpc3QpID4gMDsKIAltdXRleF9leGl0KCZrZXJuZWxfbXV0ZXgpOwogCi0J LyogQ2hlY2sgdGhhdCB0aGUgYmFja2dyb3VuZCB0aHJlYWRzIGFyZSBzdXNwZW5kZWQgKi8KLQot CWlmIChzcnZfaXNfYW55X2JhY2tncm91bmRfdGhyZWFkX2FjdGl2ZSgpKSB7CisJaWYgKHNlcnZl cl9idXN5IHx8IHNydl9pc19hbnlfYmFja2dyb3VuZF90aHJlYWRfYWN0aXZlKCkpIHsKIAkJZ290 byBsb29wOwogCX0KIAotCW11dGV4X2VudGVyKCYobG9nX3N5cy0+bXV0ZXgpKTsKLQotCWlmIChs b2dfc3lzLT5uX3BlbmRpbmdfY2hlY2twb2ludF93cml0ZXMKKwltdXRleF9lbnRlcigmbG9nX3N5 cy0+bXV0ZXgpOworCXNlcnZlcl9idXN5ID0gbG9nX3N5cy0+bl9wZW5kaW5nX2NoZWNrcG9pbnRf d3JpdGVzCiAjaWZkZWYgVU5JVl9MT0dfQVJDSElWRQotCSAgICB8fCBsb2dfc3lzLT5uX3BlbmRp bmdfYXJjaGl2ZV9pb3MKKwkJfHwgbG9nX3N5cy0+bl9wZW5kaW5nX2FyY2hpdmVfaW9zCiAjZW5k aWYgLyogVU5JVl9MT0dfQVJDSElWRSAqLwotCSAgICB8fCBsb2dfc3lzLT5uX3BlbmRpbmdfd3Jp dGVzKSB7Ci0KLQkJbXV0ZXhfZXhpdCgmKGxvZ19zeXMtPm11dGV4KSk7Ci0KLQkJZ290byBsb29w OwotCX0KLQotCW11dGV4X2V4aXQoJihsb2dfc3lzLT5tdXRleCkpOwotCi0JaWYgKCFidWZfcG9v bF9jaGVja19ub19wZW5kaW5nX2lvKCkpIHsKKwkJfHwgbG9nX3N5cy0+bl9wZW5kaW5nX3dyaXRl czsKKwltdXRleF9leGl0KCZsb2dfc3lzLT5tdXRleCk7CiAKKwlpZiAoc2VydmVyX2J1c3kgfHwg IWJ1Zl9wb29sX2NoZWNrX25vX3BlbmRpbmdfaW8oKSkgewogCQlnb3RvIGxvb3A7CiAJfQogCiAj aWZkZWYgVU5JVl9MT0dfQVJDSElWRQogCWxvZ19hcmNoaXZlX2FsbCgpOwogI2VuZGlmIC8qIFVO SVZfTE9HX0FSQ0hJVkUgKi8KKwlpZiAoc3J2X2Zhc3Rfc2h1dGRvd24gPT0gMikgeworCQkvKiBJ biB0aGlzIGZhc3Rlc3Qgc2h1dGRvd24gd2UgZG8gbm90IGZsdXNoIHRoZSBidWZmZXIKKwkJcG9v bDogaXQgaXMgZXNzZW50aWFsbHkgYSAnY3Jhc2gnIG9mIHRoZSBJbm5vREIKKwkJc2VydmVyLiBN YWtlIHN1cmUgdGhhdCB0aGUgbG9nIGlzIGFsbCBmbHVzaGVkIHRvIGRpc2ssCisJCXNvIHRoYXQg d2UgY2FuIHJlY292ZXIgYWxsIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMgaW4gYQorCQljcmFzaCBy ZWNvdmVyeS4gV2UgbXVzdCBub3Qgd3JpdGUgdGhlIGxzbiBzdGFtcHMgdG8KKwkJdGhlIGRhdGEg ZmlsZXMsIHNpbmNlIGF0IGEgc3RhcnR1cCBJbm5vREIgZGVkdWNlcyBmcm9tCisJCXRoZSBzdGFt cHMgaWYgdGhlIHByZXZpb3VzIHNodXRkb3duIHdhcyBjbGVhbi4gKi8KKworCQlsb2dfYnVmZmVy X2ZsdXNoX3RvX2Rpc2soKTsKKworCQkvKiBDaGVjayB0aGF0IHRoZSBiYWNrZ3JvdW5kIHRocmVh ZHMgc3RheSBzdXNwZW5kZWQgKi8KKwkJaWYgKHNydl9pc19hbnlfYmFja2dyb3VuZF90aHJlYWRf YWN0aXZlKCkpIHsKKwkJCWZwcmludGYoc3RkZXJyLAorCQkJCSJJbm5vREI6IFdhcm5pbmc6IHNv bWUgYmFja2dyb3VuZCB0aHJlYWQiCisJCQkJIiB3b2tlIHVwIGR1cmluZyBzaHV0ZG93blxuIik7 CisJCQlnb3RvIGxvb3A7CisJCX0KKworCQlzcnZfc2h1dGRvd25fc3RhdGUgPSBTUlZfU0hVVERP V05fTEFTVF9QSEFTRTsKKwkJZmlsX2Nsb3NlX2FsbF9maWxlcygpOworCQl1dF9hKCFzcnZfaXNf YW55X2JhY2tncm91bmRfdGhyZWFkX2FjdGl2ZSgpKTsKKwkJcmV0dXJuOworCX0KIAogCWxvZ19t YWtlX2NoZWNrcG9pbnRfYXQoSUJfVUxPTkdMT05HX01BWCwgVFJVRSk7CiAKLQltdXRleF9lbnRl cigmKGxvZ19zeXMtPm11dGV4KSk7CisJbXV0ZXhfZW50ZXIoJmxvZ19zeXMtPm11dGV4KTsKIAog CWxzbiA9IGxvZ19zeXMtPmxzbjsKIApAQCAtMzE4Myw3ICszMTc0LDcgQEAgbG9vcDoKICNlbmRp ZiAvKiBVTklWX0xPR19BUkNISVZFICovCiAJICAgICkgewogCi0JCW11dGV4X2V4aXQoJihsb2df c3lzLT5tdXRleCkpOworCQltdXRleF9leGl0KCZsb2dfc3lzLT5tdXRleCk7CiAKIAkJZ290byBs b29wOwogCX0KQEAgLTMyMDEsNyArMzE5Miw3IEBAIGxvb3A6CiAJbG9nX2FyY2hpdmVfY2xvc2Vf Z3JvdXBzKFRSVUUpOwogI2VuZGlmIC8qIFVOSVZfTE9HX0FSQ0hJVkUgKi8KIAotCW11dGV4X2V4 aXQoJihsb2dfc3lzLT5tdXRleCkpOworCW11dGV4X2V4aXQoJmxvZ19zeXMtPm11dGV4KTsKIAog CS8qIENoZWNrIHRoYXQgdGhlIGJhY2tncm91bmQgdGhyZWFkcyBzdGF5IHN1c3BlbmRlZCAqLwog CWlmIChzcnZfaXNfYW55X2JhY2tncm91bmRfdGhyZWFkX2FjdGl2ZSgpKSB7Cgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9vcy9vczBmaWxlLmMnCi0tLSBhL3N0b3JhZ2UvaW5u b2Jhc2Uvb3Mvb3MwZmlsZS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1 MDcxODQzLWRyNm1icTB3b2txZHhsOW0KKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9vcy9vczBmaWxl LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUwNzM3NTgtYjh5NzMzeXZr cXVtOTQwaQpAQCAtNDA2NCwxMyArNDA2NCwxMyBAQCBvc19haW9fZnVuYygKIAl9CiAKIHRyeV9h Z2FpbjoKLQlpZiAobW9kZSA9PSBPU19BSU9fTk9STUFMKSB7Ci0JCWlmICh0eXBlID09IE9TX0ZJ TEVfUkVBRCkgewotCQkJYXJyYXkgPSBvc19haW9fcmVhZF9hcnJheTsKLQkJfSBlbHNlIHsKLQkJ CWFycmF5ID0gb3NfYWlvX3dyaXRlX2FycmF5OwotCQl9Ci0JfSBlbHNlIGlmIChtb2RlID09IE9T X0FJT19JQlVGKSB7CisJc3dpdGNoIChtb2RlKSB7CisJY2FzZSBPU19BSU9fTk9STUFMOgorCQlh cnJheSA9ICh0eXBlID09IE9TX0ZJTEVfUkVBRCkKKwkJCT8gb3NfYWlvX3JlYWRfYXJyYXkKKwkJ CTogb3NfYWlvX3dyaXRlX2FycmF5OworCQlicmVhazsKKwljYXNlIE9TX0FJT19JQlVGOgogCQl1 dF9hZCh0eXBlID09IE9TX0ZJTEVfUkVBRCk7CiAJCS8qIFJlZHVjZSBwcm9iYWJpbGl0eSBvZiBk ZWFkbG9jayBidWdzIGluIGNvbm5lY3Rpb24gd2l0aCBpYnVmOgogCQlkbyBub3QgbGV0IHRoZSBp YnVmIGkvbyBoYW5kbGVyIHNsZWVwICovCkBAIC00MDc4LDE5ICs0MDc4LDIxIEBAIHRyeV9hZ2Fp bjoKIAkJd2FrZV9sYXRlciA9IEZBTFNFOwogCiAJCWFycmF5ID0gb3NfYWlvX2lidWZfYXJyYXk7 Ci0JfSBlbHNlIGlmIChtb2RlID09IE9TX0FJT19MT0cpIHsKLQorCQlicmVhazsKKwljYXNlIE9T X0FJT19MT0c6CiAJCWFycmF5ID0gb3NfYWlvX2xvZ19hcnJheTsKLQl9IGVsc2UgaWYgKG1vZGUg PT0gT1NfQUlPX1NZTkMpIHsKKwkJYnJlYWs7CisJY2FzZSBPU19BSU9fU1lOQzoKIAkJYXJyYXkg PSBvc19haW9fc3luY19hcnJheTsKIAogI2lmIGRlZmluZWQoTElOVVhfTkFUSVZFX0FJTykKIAkJ LyogSW4gTGludXggbmF0aXZlIEFJTyB3ZSBkb24ndCB1c2Ugc3luYyBJTyBhcnJheS4gKi8KIAkJ dXRfYSghc3J2X3VzZV9uYXRpdmVfYWlvKTsKICNlbmRpZiAvKiBMSU5VWF9OQVRJVkVfQUlPICov Ci0JfSBlbHNlIHsKLQkJYXJyYXkgPSBOVUxMOyAvKiBFbGltaW5hdGUgY29tcGlsZXIgd2Fybmlu ZyAqLworCQlicmVhazsKKwlkZWZhdWx0OgogCQl1dF9lcnJvcjsKKwkJYXJyYXkgPSBOVUxMOyAv KiBFbGltaW5hdGUgY29tcGlsZXIgd2FybmluZyAqLwogCX0KIAogCXNsb3QgPSBvc19haW9fYXJy YXlfcmVzZXJ2ZV9zbG90KHR5cGUsIGFycmF5LCBtZXNzYWdlMSwgbWVzc2FnZTIsIGZpbGUsCkBA IC00MjUzLDExICs0MjU1LDE3IEBAIG9zX2Fpb193aW5kb3dzX2hhbmRsZSgKIAkJCQkJICAgSU5G SU5JVEUpOwogCX0KIAotCWlmIChzcnZfc2h1dGRvd25fc3RhdGUgPT0gU1JWX1NIVVRET1dOX0VY SVRfVEhSRUFEUykgewotCQlvc190aHJlYWRfZXhpdChOVUxMKTsKKwlvc19tdXRleF9lbnRlcihh cnJheS0+bXV0ZXgpOworCisJaWYgKHNydl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05f RVhJVF9USFJFQURTCisJICAgICYmIGFycmF5LT5uX3Jlc2VydmVkID09IDApIHsKKwkJKm1lc3Nh Z2UxID0gTlVMTDsKKwkJKm1lc3NhZ2UyID0gTlVMTDsKKwkJb3NfbXV0ZXhfZXhpdChhcnJheS0+ bXV0ZXgpOworCQlyZXR1cm4oVFJVRSk7CiAJfQogCi0Jb3NfbXV0ZXhfZW50ZXIoYXJyYXktPm11 dGV4KTsKKwl1dF9hKGkgPj0gV0FJVF9PQkpFQ1RfMCAmJiBpIDw9IFdBSVRfT0JKRUNUXzAgKyBu KTsKIAogCXNsb3QgPSBvc19haW9fYXJyYXlfZ2V0X250aF9zbG90KGFycmF5LCBpICsgc2VnbWVu dCAqIG4pOwogCkBAIC00NDAzLDE0ICs0NDExLDYgQEAgb3NfYWlvX2xpbnV4X2NvbGxlY3QoCiAK IHJldHJ5OgogCi0JLyogR28gZG93biBpZiB3ZSBhcmUgaW4gc2h1dGRvd24gbW9kZS4KLQlJbiBj YXNlIG9mIHNydl9mYXN0X3NodXRkb3duID09IDIsIHRoZXJlIG1heSBiZSBwZW5kaW5nCi0JSU8g cmVxdWVzdHMgYnV0IHRoYXQgc2hvdWxkIGJlIE9LIGFzIHdlIGVzc2VudGlhbGx5IHRyZWF0Ci0J dGhhdCBhcyBhIGNyYXNoIG9mIElubm9EQi4gKi8KLQlpZiAoc3J2X3NodXRkb3duX3N0YXRlID09 IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMpIHsKLQkJb3NfdGhyZWFkX2V4aXQoTlVMTCk7Ci0J fQotCiAJLyogSW5pdGlhbGl6ZSB0aGUgZXZlbnRzLiBUaGUgdGltZW91dCB2YWx1ZSBpcyBhcmJp dHJhcnkuCiAJV2UgcHJvYmFibHkgbmVlZCB0byBleHBlcmltZW50IHdpdGggaXQgYSBsaXR0bGUu ICovCiAJbWVtc2V0KGV2ZW50cywgMCwgc2l6ZW9mKCpldmVudHMpICogc2VnX3NpemUpOwpAQCAt NDQxOSw3NiArNDQxOSw3MiBAQCByZXRyeToKIAogCXJldCA9IGlvX2dldGV2ZW50cyhpb19jdHgs IDEsIHNlZ19zaXplLCBldmVudHMsICZ0aW1lb3V0KTsKIAotCS8qIFRoaXMgZXJyb3IgaGFuZGxp bmcgaXMgZm9yIGFueSBlcnJvciBpbiBjb2xsZWN0aW5nIHRoZQotCUlPIHJlcXVlc3RzLiBUaGUg ZXJyb3JzLCBpZiBhbnksIGZvciBhbnkgcGFydGljdWxhciBJTwotCXJlcXVlc3QgYXJlIHNpbXBs eSBwYXNzZWQgb24gdG8gdGhlIGNhbGxpbmcgcm91dGluZS4gKi8KKwlpZiAocmV0ID4gMCkgewor CQlmb3IgKGkgPSAwOyBpIDwgcmV0OyBpKyspIHsKKwkJCW9zX2Fpb19zbG90X3QqCXNsb3Q7CisJ CQlzdHJ1Y3QgaW9jYioJY29udHJvbDsKKworCQkJY29udHJvbCA9IChzdHJ1Y3QgaW9jYiAqKWV2 ZW50c1tpXS5vYmo7CisJCQl1dF9hKGNvbnRyb2wgIT0gTlVMTCk7CisKKwkJCXNsb3QgPSAob3Nf YWlvX3Nsb3RfdCAqKSBjb250cm9sLT5kYXRhOworCisJCQkvKiBTb21lIHNhbml0eSBjaGVja3Mu ICovCisJCQl1dF9hKHNsb3QgIT0gTlVMTCk7CisJCQl1dF9hKHNsb3QtPnJlc2VydmVkKTsKIAot CS8qIE5vdCBlbm91Z2ggcmVzb3VyY2VzISBUcnkgYWdhaW4uICovCi0JaWYgKHJldCA9PSAtRUFH QUlOKSB7Ci0JCWdvdG8gcmV0cnk7Ci0JfQorI2lmIGRlZmluZWQoVU5JVl9BSU9fREVCVUcpCisJ CQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkiaW9fZ2V0ZXZlbnRzWyVjXTogc2xvdFslcF0gY3R4WyVw XSIKKwkJCQkiIHNlZ1slbHVdXG4iLAorCQkJCShzbG90LT50eXBlID09IE9TX0ZJTEVfV1JJVEUp ID8gJ3cnIDogJ3InLAorCQkJCXNsb3QsIGlvX2N0eCwgc2VnbWVudCk7CisjZW5kaWYKIAotCS8q IEludGVycnVwdGVkISBJIGhhdmUgdGVzdGVkIHRoZSBiZWhhdmlvdXIgaW4gY2FzZSBvZiBhbgot CWludGVycnVwdC4gSWYgd2UgaGF2ZSBzb21lIGNvbXBsZXRlZCBJT3MgYXZhaWxhYmxlIHRoZW4K LQl0aGUgcmV0dXJuIGNvZGUgd2lsbCBiZSB0aGUgbnVtYmVyIG9mIElPcy4gV2UgZ2V0IEVJTlRS IG9ubHkKLQlpZiB0aGVyZSBhcmUgbm8gY29tcGxldGVkIElPcyBhbmQgd2UgaGF2ZSBiZWVuIGlu dGVycnVwdGVkLiAqLwotCWlmIChyZXQgPT0gLUVJTlRSKSB7Ci0JCWdvdG8gcmV0cnk7Ci0JfQor CQkJLyogV2UgYXJlIG5vdCBzY3JpYmJsaW5nIHByZXZpb3VzIHNlZ21lbnQuICovCisJCQl1dF9h KHNsb3QtPnBvcyA+PSBzdGFydF9wb3MpOwogCi0JLyogTm8gcGVuZGluZyByZXF1ZXN0ISBHbyBi YWNrIGFuZCBjaGVjayBhZ2Fpbi4gKi8KLQlpZiAocmV0ID09IDApIHsKLQkJZ290byByZXRyeTsK LQl9CisJCQkvKiBXZSBoYXZlIG5vdCBvdmVyc3RlcHBlZCB0byBuZXh0IHNlZ21lbnQuICovCisJ CQl1dF9hKHNsb3QtPnBvcyA8IGVuZF9wb3MpOwogCi0JLyogQWxsIG90aGVyIGVycm9ycyEgc2hv dWxkIGNhdXNlIGEgdHJhcCBmb3Igbm93LiAqLwotCWlmIChVTklWX1VOTElLRUxZKHJldCA8IDAp KSB7Ci0JCXV0X3ByaW50X3RpbWVzdGFtcChzdGRlcnIpOwotCQlmcHJpbnRmKHN0ZGVyciwKLQkJ CSIgIElubm9EQjogdW5leHBlY3RlZCByZXRfY29kZVslZF0gZnJvbSIKLQkJCSIgaW9fZ2V0ZXZl bnRzKCkhXG4iLCByZXQpOwotCQl1dF9lcnJvcjsKKwkJCS8qIE1hcmsgdGhpcyByZXF1ZXN0IGFz IGNvbXBsZXRlZC4gVGhlIGVycm9yIGhhbmRsaW5nCisJCQl3aWxsIGJlIGRvbmUgaW4gdGhlIGNh bGxpbmcgZnVuY3Rpb24uICovCisJCQlvc19tdXRleF9lbnRlcihhcnJheS0+bXV0ZXgpOworCQkJ c2xvdC0+bl9ieXRlcyA9IGV2ZW50c1tpXS5yZXM7CisJCQlzbG90LT5yZXQgPSBldmVudHNbaV0u cmVzMjsKKwkJCXNsb3QtPmlvX2FscmVhZHlfZG9uZSA9IFRSVUU7CisJCQlvc19tdXRleF9leGl0 KGFycmF5LT5tdXRleCk7CisJCX0KKwkJcmV0dXJuOwogCX0KIAotCXV0X2EocmV0ID4gMCk7Ci0K LQlmb3IgKGkgPSAwOyBpIDwgcmV0OyBpKyspIHsKLQkJb3NfYWlvX3Nsb3RfdCoJc2xvdDsKLQkJ c3RydWN0IGlvY2IqCWNvbnRyb2w7Ci0KLQkJY29udHJvbCA9IChzdHJ1Y3QgaW9jYiAqKWV2ZW50 c1tpXS5vYmo7Ci0JCXV0X2EoY29udHJvbCAhPSBOVUxMKTsKLQotCQlzbG90ID0gKG9zX2Fpb19z bG90X3QgKikgY29udHJvbC0+ZGF0YTsKLQotCQkvKiBTb21lIHNhbml0eSBjaGVja3MuICovCi0J CXV0X2Eoc2xvdCAhPSBOVUxMKTsKLQkJdXRfYShzbG90LT5yZXNlcnZlZCk7Ci0KLSNpZiBkZWZp bmVkKFVOSVZfQUlPX0RFQlVHKQotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCSJpb19nZXRldmVudHNb JWNdOiBzbG90WyVwXSBjdHhbJXBdIgotCQkJIiBzZWdbJWx1XVxuIiwKLQkJCShzbG90LT50eXBl ID09IE9TX0ZJTEVfV1JJVEUpID8gJ3cnIDogJ3InLAotCQkJc2xvdCwgaW9fY3R4LCBzZWdtZW50 KTsKLSNlbmRpZgotCi0JCS8qIFdlIGFyZSBub3Qgc2NyaWJibGluZyBwcmV2aW91cyBzZWdtZW50 LiAqLwotCQl1dF9hKHNsb3QtPnBvcyA+PSBzdGFydF9wb3MpOworCWlmIChVTklWX1VOTElLRUxZ KHNydl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJVF9USFJFQURTKSkgeworCQly ZXR1cm47CisJfQogCi0JCS8qIFdlIGhhdmUgbm90IG92ZXJzdGVwcGVkIHRvIG5leHQgc2VnbWVu dC4gKi8KLQkJdXRfYShzbG90LT5wb3MgPCBlbmRfcG9zKTsKKwkvKiBUaGlzIGVycm9yIGhhbmRs aW5nIGlzIGZvciBhbnkgZXJyb3IgaW4gY29sbGVjdGluZyB0aGUKKwlJTyByZXF1ZXN0cy4gVGhl IGVycm9ycywgaWYgYW55LCBmb3IgYW55IHBhcnRpY3VsYXIgSU8KKwlyZXF1ZXN0IGFyZSBzaW1w bHkgcGFzc2VkIG9uIHRvIHRoZSBjYWxsaW5nIHJvdXRpbmUuICovCiAKLQkJLyogTWFyayB0aGlz IHJlcXVlc3QgYXMgY29tcGxldGVkLiBUaGUgZXJyb3IgaGFuZGxpbmcKLQkJd2lsbCBiZSBkb25l IGluIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAqLwotCQlvc19tdXRleF9lbnRlcihhcnJheS0+bXV0 ZXgpOwotCQlzbG90LT5uX2J5dGVzID0gZXZlbnRzW2ldLnJlczsKLQkJc2xvdC0+cmV0ID0gZXZl bnRzW2ldLnJlczI7Ci0JCXNsb3QtPmlvX2FscmVhZHlfZG9uZSA9IFRSVUU7Ci0JCW9zX211dGV4 X2V4aXQoYXJyYXktPm11dGV4KTsKKwlzd2l0Y2ggKHJldCkgeworCWNhc2UgLUVBR0FJTjoKKwkJ LyogTm90IGVub3VnaCByZXNvdXJjZXMhIFRyeSBhZ2Fpbi4gKi8KKwljYXNlIC1FSU5UUjoKKwkJ LyogSW50ZXJydXB0ZWQhIEkgaGF2ZSB0ZXN0ZWQgdGhlIGJlaGF2aW91ciBpbiBjYXNlIG9mIGFu CisJCWludGVycnVwdC4gSWYgd2UgaGF2ZSBzb21lIGNvbXBsZXRlZCBJT3MgYXZhaWxhYmxlIHRo ZW4KKwkJdGhlIHJldHVybiBjb2RlIHdpbGwgYmUgdGhlIG51bWJlciBvZiBJT3MuIFdlIGdldCBF SU5UUiBvbmx5CisJCWlmIHRoZXJlIGFyZSBubyBjb21wbGV0ZWQgSU9zIGFuZCB3ZSBoYXZlIGJl ZW4gaW50ZXJydXB0ZWQuICovCisJY2FzZSAwOgorCQkvKiBObyBwZW5kaW5nIHJlcXVlc3QhIEdv IGJhY2sgYW5kIGNoZWNrIGFnYWluLiAqLworCQlnb3RvIHJldHJ5OwogCX0KIAotCXJldHVybjsK KwkvKiBBbGwgb3RoZXIgZXJyb3JzIHNob3VsZCBjYXVzZSBhIHRyYXAgZm9yIG5vdy4gKi8KKwl1 dF9wcmludF90aW1lc3RhbXAoc3RkZXJyKTsKKwlmcHJpbnRmKHN0ZGVyciwKKwkJIiAgSW5ub0RC OiB1bmV4cGVjdGVkIHJldF9jb2RlWyVkXSBmcm9tIGlvX2dldGV2ZW50cygpIVxuIiwKKwkJcmV0 KTsKKwl1dF9lcnJvcjsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC00NTMyLDIwICs0NTI4 LDM1IEBAIG9zX2Fpb19saW51eF9oYW5kbGUoCiAKIAkvKiBMb29wIHVudGlsIHdlIGhhdmUgZm91 bmQgYSBjb21wbGV0ZWQgcmVxdWVzdC4gKi8KIAlmb3IgKDs7KSB7CisJCWlib29sCWFueV9yZXNl cnZlZCA9IEZBTFNFOwogCQlvc19tdXRleF9lbnRlcihhcnJheS0+bXV0ZXgpOwogCQlmb3IgKGkg PSAwOyBpIDwgbjsgKytpKSB7CiAJCQlzbG90ID0gb3NfYWlvX2FycmF5X2dldF9udGhfc2xvdCgK LQkJCQkJYXJyYXksIGkgKyBzZWdtZW50ICogbik7Ci0JCQlpZiAoc2xvdC0+cmVzZXJ2ZWQgJiYg c2xvdC0+aW9fYWxyZWFkeV9kb25lKSB7CisJCQkJYXJyYXksIGkgKyBzZWdtZW50ICogbik7CisJ CQlpZiAoIXNsb3QtPnJlc2VydmVkKSB7CisJCQkJY29udGludWU7CisJCQl9IGVsc2UgaWYgKHNs b3QtPmlvX2FscmVhZHlfZG9uZSkgewogCQkJCS8qIFNvbWV0aGluZyBmb3IgdXMgdG8gd29yayBv bi4gKi8KIAkJCQlnb3RvIGZvdW5kOworCQkJfSBlbHNlIHsKKwkJCQlhbnlfcmVzZXJ2ZWQgPSBU UlVFOwogCQkJfQogCQl9CiAKIAkJb3NfbXV0ZXhfZXhpdChhcnJheS0+bXV0ZXgpOwogCi0JCS8q IFdlIGRvbid0IGhhdmUgYW55IGNvbXBsZXRlZCByZXF1ZXN0LgotCQlXYWl0IGZvciBzb21lIHJl cXVlc3QuIE5vdGUgdGhhdCB3ZSByZXR1cm4KKwkJLyogVGhlcmUgaXMgbm8gY29tcGxldGVkIHJl cXVlc3QuCisJCUlmIHRoZXJlIGlzIG5vIHBlbmRpbmcgcmVxdWVzdCBhdCBhbGwsCisJCWFuZCB0 aGUgc3lzdGVtIGlzIGJlaW5nIHNodXQgZG93biwgZXhpdC4gKi8KKwkJaWYgKFVOSVZfVU5MSUtF TFkKKwkJICAgICghYW55X3Jlc2VydmVkCisJCSAgICAgJiYgc3J2X3NodXRkb3duX3N0YXRlID09 IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMpKSB7CisJCQkqbWVzc2FnZTEgPSBOVUxMOworCQkJ Km1lc3NhZ2UyID0gTlVMTDsKKwkJCXJldHVybihUUlVFKTsKKwkJfQorCisJCS8qIFdhaXQgZm9y IHNvbWUgcmVxdWVzdC4gTm90ZSB0aGF0IHdlIHJldHVybgogCQlmcm9tIHdhaXQgaWZmIHdlIGhh dmUgZm91bmQgYSByZXF1ZXN0LiAqLwogCiAJCXNydl9zZXRfaW9fdGhyZWFkX29wX2luZm8oZ2xv YmFsX3NlZywKQEAgLTQ2NDEsNiArNDY1Miw3IEBAIG9zX2Fpb19zaW11bGF0ZWRfaGFuZGxlKAog CWJ5dGUqCQljb21iaW5lZF9idWY7CiAJYnl0ZSoJCWNvbWJpbmVkX2J1ZjI7CiAJaWJvb2wJCXJl dDsKKwlpYm9vbAkJYW55X3Jlc2VydmVkOwogCXVsaW50CQluOwogCXVsaW50CQlpOwogCkBAIC00 NjcxLDE4ICs0NjgzLDIxIEBAIHJlc3RhcnQ6CiAJCWdvdG8gcmVjb21tZW5kZWRfc2xlZXA7CiAJ fQogCi0Jb3NfbXV0ZXhfZW50ZXIoYXJyYXktPm11dGV4KTsKLQogCXNydl9zZXRfaW9fdGhyZWFk X29wX2luZm8oZ2xvYmFsX3NlZ21lbnQsCiAJCQkJICAibG9va2luZyBmb3IgaS9vIHJlcXVlc3Rz IChiKSIpOwogCiAJLyogQ2hlY2sgaWYgdGhlcmUgaXMgYSBzbG90IGZvciB3aGljaCB0aGUgaS9v IGhhcyBhbHJlYWR5IGJlZW4KIAlkb25lICovCisJYW55X3Jlc2VydmVkID0gRkFMU0U7CisKKwlv c19tdXRleF9lbnRlcihhcnJheS0+bXV0ZXgpOwogCiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykg ewogCQlzbG90ID0gb3NfYWlvX2FycmF5X2dldF9udGhfc2xvdChhcnJheSwgaSArIHNlZ21lbnQg KiBuKTsKIAotCQlpZiAoc2xvdC0+cmVzZXJ2ZWQgJiYgc2xvdC0+aW9fYWxyZWFkeV9kb25lKSB7 CisJCWlmICghc2xvdC0+cmVzZXJ2ZWQpIHsKKwkJCWNvbnRpbnVlOworCQl9IGVsc2UgaWYgKHNs b3QtPmlvX2FscmVhZHlfZG9uZSkgewogCiAJCQlpZiAob3NfYWlvX3ByaW50X2RlYnVnKSB7CiAJ CQkJZnByaW50ZihzdGRlcnIsCkBAIC00Njk0LDkgKzQ3MDksMjMgQEAgcmVzdGFydDoKIAkJCXJl dCA9IFRSVUU7CiAKIAkJCWdvdG8gc2xvdF9pb19kb25lOworCQl9IGVsc2UgeworCQkJYW55X3Jl c2VydmVkID0gVFJVRTsKIAkJfQogCX0KIAorCS8qIFRoZXJlIGlzIG5vIGNvbXBsZXRlZCByZXF1 ZXN0LgorCUlmIHRoZXJlIGlzIG5vIHBlbmRpbmcgcmVxdWVzdCBhdCBhbGwsCisJYW5kIHRoZSBz eXN0ZW0gaXMgYmVpbmcgc2h1dCBkb3duLCBleGl0LiAqLworCWlmIChVTklWX1VOTElLRUxZCisJ ICAgICghYW55X3Jlc2VydmVkCisJICAgICAmJiBzcnZfc2h1dGRvd25fc3RhdGUgPT0gU1JWX1NI VVRET1dOX0VYSVRfVEhSRUFEUykpIHsKKwkJb3NfbXV0ZXhfZXhpdChhcnJheS0+bXV0ZXgpOwor CQkqbWVzc2FnZTEgPSBOVUxMOworCQkqbWVzc2FnZTIgPSBOVUxMOworCQlyZXR1cm4oVFJVRSk7 CisJfQorCiAJbl9jb25zZWN1dGl2ZSA9IDA7CiAKIAkvKiBJZiB0aGVyZSBhcmUgYXQgbGVhc3Qg MiBzZWNvbmRzIG9sZCByZXF1ZXN0cywgdGhlbiBwaWNrIHRoZSBvbGRlc3QKCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL29zL29zMHN5bmMuYycKLS0tIGEvc3RvcmFnZS9pbm5v YmFzZS9vcy9vczBzeW5jLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUw NzE4NDMtZHI2bWJxMHdva3FkeGw5bQorKysgYi9zdG9yYWdlL2lubm9iYXNlL29zL29zMHN5bmMu YwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTA3Mzc1OC1iOHk3MzN5dmtx dW05NDBpCkBAIC01NTgsMTAgKzU1OCw3IEBAIG9zX2V2ZW50X2ZyZWUoCiB9CiAKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgot V2FpdHMgZm9yIGFuIGV2ZW50IG9iamVjdCB1bnRpbCBpdCBpcyBpbiB0aGUgc2lnbmFsZWQgc3Rh dGUuIElmCi1zcnZfc2h1dGRvd25fc3RhdGUgPT0gU1JWX1NIVVRET1dOX0VYSVRfVEhSRUFEUyB0 aGlzIGFsc28gZXhpdHMgdGhlCi13YWl0aW5nIHRocmVhZCB3aGVuIHRoZSBldmVudCBiZWNvbWVz IHNpZ25hbGVkIChvciBpbW1lZGlhdGVseSBpZiB0aGUKLWV2ZW50IGlzIGFscmVhZHkgaW4gdGhl IHNpZ25hbGVkIHN0YXRlKS4KK1dhaXRzIGZvciBhbiBldmVudCBvYmplY3QgdW50aWwgaXQgaXMg aW4gdGhlIHNpZ25hbGVkIHN0YXRlLgogCiBUeXBpY2FsbHksIGlmIHRoZSBldmVudCBoYXMgYmVl biBzaWduYWxsZWQgYWZ0ZXIgdGhlIG9zX2V2ZW50X3Jlc2V0KCkKIHdlJ2xsIHJldHVybiBpbW1l ZGlhdGVseSBiZWNhdXNlIGV2ZW50LT5pc19zZXQgPT0gVFJVRS4KQEAgLTU4Niw4ICs1ODMsNiBA QCBvc19ldmVudF93YWl0X2xvdygKIAkJCQkJcmV0dXJuZWQgYnkgcHJldmlvdXMgY2FsbCBvZgog CQkJCQlvc19ldmVudF9yZXNldCgpLiAqLwogewotCWliX2ludDY0X3QJb2xkX3NpZ25hbF9jb3Vu dDsKLQogI2lmZGVmIF9fV0lOX18KIAlpZighc3J2X3VzZV9uYXRpdmVfY29uZGl0aW9ucykgewog CQlEV09SRAllcnI7CkBAIC02MDAsNDMgKzU5NSwyNSBAQCBvc19ldmVudF93YWl0X2xvdygKIAkJ ZXJyID0gV2FpdEZvclNpbmdsZU9iamVjdChldmVudC0+aGFuZGxlLCBJTkZJTklURSk7CiAKIAkJ dXRfYShlcnIgPT0gV0FJVF9PQkpFQ1RfMCk7Ci0KLQkJaWYgKHNydl9zaHV0ZG93bl9zdGF0ZSA9 PSBTUlZfU0hVVERPV05fRVhJVF9USFJFQURTKSB7Ci0JCQlvc190aHJlYWRfZXhpdChOVUxMKTsK LQkJfQogCQlyZXR1cm47CiAJfQogI2VuZGlmCiAKLQlvc19mYXN0X211dGV4X2xvY2soJihldmVu dC0+b3NfbXV0ZXgpKTsKKwlvc19mYXN0X211dGV4X2xvY2soJmV2ZW50LT5vc19tdXRleCk7CiAK LQlpZiAocmVzZXRfc2lnX2NvdW50KSB7Ci0JCW9sZF9zaWduYWxfY291bnQgPSByZXNldF9zaWdf Y291bnQ7Ci0JfSBlbHNlIHsKLQkJb2xkX3NpZ25hbF9jb3VudCA9IGV2ZW50LT5zaWduYWxfY291 bnQ7CisJaWYgKCFyZXNldF9zaWdfY291bnQpIHsKKwkJcmVzZXRfc2lnX2NvdW50ID0gZXZlbnQt PnNpZ25hbF9jb3VudDsKIAl9CiAKLQlmb3IgKDs7KSB7Ci0JCWlmIChldmVudC0+aXNfc2V0ID09 IFRSVUUKLQkJICAgIHx8IGV2ZW50LT5zaWduYWxfY291bnQgIT0gb2xkX3NpZ25hbF9jb3VudCkg ewotCi0JCQlvc19mYXN0X211dGV4X3VubG9jaygmKGV2ZW50LT5vc19tdXRleCkpOwotCi0JCQlp ZiAoc3J2X3NodXRkb3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMpIHsKLQot CQkJCW9zX3RocmVhZF9leGl0KE5VTEwpOwotCQkJfQotCQkJLyogT2ssIHdlIG1heSByZXR1cm4g Ki8KLQotCQkJcmV0dXJuOwotCQl9Ci0KKwl3aGlsZSAoIWV2ZW50LT5pc19zZXQgJiYgZXZlbnQt PnNpZ25hbF9jb3VudCA9PSByZXNldF9zaWdfY291bnQpIHsKIAkJb3NfY29uZF93YWl0KCYoZXZl bnQtPmNvbmRfdmFyKSwgJihldmVudC0+b3NfbXV0ZXgpKTsKIAogCQkvKiBTb2xhcmlzIG1hbnVh bCBzYWlkIHRoYXQgc3B1cmlvdXMgd2FrZXVwcyBtYXkgb2NjdXI6IHdlCiAJCWhhdmUgdG8gY2hl Y2sgaWYgdGhlIGV2ZW50IHJlYWxseSBoYXMgYmVlbiBzaWduYWxlZCBhZnRlcgogCQl3ZSBjYW1l IGhlcmUgdG8gd2FpdCAqLwogCX0KKworCW9zX2Zhc3RfbXV0ZXhfdW5sb2NrKCZldmVudC0+b3Nf bXV0ZXgpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKQEAgLTY1Nyw3ICs2MzQsNiBAQCBvc19ldmVudF93YWl0X3Rp bWVfbG93KAogCiB7CiAJaWJvb2wJCXRpbWVkX291dCA9IEZBTFNFOwotCWliX2ludDY0X3QJb2xk X3NpZ25hbF9jb3VudDsKIAogI2lmZGVmIF9fV0lOX18KIAlEV09SRAkJdGltZV9pbl9tczsKQEAg LTcyNywxNSArNzAzLDEyIEBAIG9zX2V2ZW50X3dhaXRfdGltZV9sb3coCiAKIAlvc19mYXN0X211 dGV4X2xvY2soJmV2ZW50LT5vc19tdXRleCk7CiAKLQlpZiAocmVzZXRfc2lnX2NvdW50KSB7Ci0J CW9sZF9zaWduYWxfY291bnQgPSByZXNldF9zaWdfY291bnQ7Ci0JfSBlbHNlIHsKLQkJb2xkX3Np Z25hbF9jb3VudCA9IGV2ZW50LT5zaWduYWxfY291bnQ7CisJaWYgKCFyZXNldF9zaWdfY291bnQp IHsKKwkJcmVzZXRfc2lnX2NvdW50ID0gZXZlbnQtPnNpZ25hbF9jb3VudDsKIAl9CiAKIAlkbyB7 Ci0JCWlmIChldmVudC0+aXNfc2V0ID09IFRSVUUKLQkJICAgIHx8IGV2ZW50LT5zaWduYWxfY291 bnQgIT0gb2xkX3NpZ25hbF9jb3VudCkgeworCQlpZiAoZXZlbnQtPmlzX3NldCB8fCBldmVudC0+ c2lnbmFsX2NvdW50ICE9IHJlc2V0X3NpZ19jb3VudCkgewogCiAJCQlicmVhazsKIAkJfQpAQCAt NzUzLDExICs3MjYsNiBAQCBvc19ldmVudF93YWl0X3RpbWVfbG93KAogCiAJb3NfZmFzdF9tdXRl eF91bmxvY2soJmV2ZW50LT5vc19tdXRleCk7CiAKLQlpZiAoc3J2X3NodXRkb3duX3N0YXRlID09 IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMpIHsKLQotCQlvc190aHJlYWRfZXhpdChOVUxMKTsK LQl9Ci0KIAlyZXR1cm4odGltZWRfb3V0ID8gT1NfU1lOQ19USU1FX0VYQ0VFREVEIDogMCk7CiB9 CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Nydi9zcnYwc3J2LmMnCi0t LSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzcnYuYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDExMDQwNTA3MTg0My1kcjZtYnEwd29rcWR4bDltCisrKyBiL3N0b3JhZ2UvaW5u b2Jhc2Uvc3J2L3NydjBzcnYuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQw NTA3Mzc1OC1iOHk3MzN5dmtxdW05NDBpCkBAIC0zMDgyLDExICszMDgyLDcgQEAgc3VzcGVuZF90 aHJlYWQ6CiAJb3NfZXZlbnRfd2FpdChzbG90LT5ldmVudCk7CiAKIAlpZiAoc3J2X3NodXRkb3du X3N0YXRlID09IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMpIHsKLQkJLyogVGhpcyBpcyBvbmx5 IGV4dHJhIHNhZmV0eSwgdGhlIHRocmVhZCBzaG91bGQgZXhpdAotCQlhbHJlYWR5IHdoZW4gdGhl IGV2ZW50IHdhaXQgZW5kcyAqLwotCiAJCW9zX3RocmVhZF9leGl0KE5VTEwpOwotCiAJfQogCiAJ LyogV2hlbiB0aGVyZSBpcyB1c2VyIGFjdGl2aXR5LCBJbm5vREIgd2lsbCBzZXQgdGhlIGV2ZW50 IGFuZCB0aGUKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Nydi9zcnYwc3Rh cnQuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHN0YXJ0LmMJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUwNzE4NDMtZHI2bWJxMHdva3FkeGw5bQorKysgYi9z dG9yYWdlL2lubm9iYXNlL3Nydi9zcnYwc3RhcnQuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMDQwNTA3Mzc1OC1iOHk3MzN5dmtxdW05NDBpCkBAIC0yMTIyLDE3ICsyMTIyLDkg QEAgaW5ub2Jhc2Vfc2h1dGRvd25fZm9yX215c3FsKHZvaWQpCiAKIAlzcnZfc2h1dGRvd25fc3Rh dGUgPSBTUlZfU0hVVERPV05fRVhJVF9USFJFQURTOwogCi0JLyogSW4gYSAndmVyeSBmYXN0JyBz aHV0ZG93biwgd2UgZG8gbm90IG5lZWQgdG8gd2FpdCBmb3IgdGhlc2UgdGhyZWFkcwotCXRvIGRp ZTsgYWxsIHdoaWNoIGNvdW50cyBpcyB0aGF0IHdlIGZsdXNoZWQgdGhlIGxvZzsgYSAndmVyeSBm YXN0JwotCXNodXRkb3duIGlzIGVzc2VudGlhbGx5IGEgY3Jhc2guICovCi0KLQlpZiAoc3J2X2Zh c3Rfc2h1dGRvd24gPT0gMikgewotCQlyZXR1cm4oREJfU1VDQ0VTUyk7Ci0JfQotCiAJLyogQWxs IHRocmVhZHMgZW5kIHVwIHdhaXRpbmcgZm9yIGNlcnRhaW4gZXZlbnRzLiBQdXQgdGhvc2UgZXZl bnRzCi0JdG8gdGhlIHNpZ25hbGVkIHN0YXRlLiBUaGVuIHRoZSB0aHJlYWRzIHdpbGwgZXhpdCB0 aGVtc2VsdmVzIGluCi0Jb3NfdGhyZWFkX2V2ZW50X3dhaXQoKS4gKi8KKwl0byB0aGUgc2lnbmFs ZWQgc3RhdGUuIFRoZW4gdGhlIHRocmVhZHMgd2lsbCBleGl0IHRoZW1zZWx2ZXMgYWZ0ZXIKKwlv c19ldmVudF93YWl0KCkuICovCiAKIAlmb3IgKGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CiAJCS8q IE5PVEU6IElGIFlPVSBDUkVBVEUgVEhSRUFEUyBJTiBJTk5PREIsIFlPVSBNVVNUIEVYSVQgVEhF TQoK --===============0878072375== 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: bc0da7575abe9b28098684e6212297d5e270f159 # timestamp: 2011-04-05 10:38:08 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: marko.makela@stripped\ # dr6mbq0wokqdxl9m # # Begin bundle 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 0BGqII7ZIB/xh7//F3JFOFCQXy/s3w== --===============0878072375==--