From: marko.makela Date: December 28 2011 10:46am Subject: bzr push into mysql-5.5 branch (marko.makela:3667 to 3668) List-Archive: http://lists.mysql.com/commits/142270 Message-Id: <201112281046.pBSAk8SM004142@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM2NjggTWFya28gTcOka2Vsw6QJMjAxMS0xMi0yOCBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuMSB0byBteXNxbC01LjUuCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv YnVmL2J1ZjBidWYuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbWVtMG1lbS5pYwog ICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdW5pdi5pCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS91dDBtZW0uaAogICAgICBzdG9yYWdlL2lubm9iYXNlL21lbS9tZW0wcG9vbC5j CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvb3Mvb3MwcHJvYy5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvdXQvdXQwbWVtLmMKIDM2NjcgUm9oaXQgS2FsaGFucwkyMDExLTEyLTI2CiAgICAgIHJwbC5y cGxfa25vd25fYnVnc19kZXRlY3Rpb24gZmFpbHMgb24gUEIyIGRhaWx5IG15c3FsLTUuNS4KICAg ICAgCiAgICAgIFRoZSBycGwucnBsX2tub3duX2J1Z3NfZGV0ZWN0aW9uIGZhaWxzIG9uIHBiMiBh cyB3YXJuaW5ncyB3ZXJlIGZvdW5kIGluIHRoZQogICAgICBteXNxbGQgbG9nIGZpbGUuIFdlIGZp eCB0aGlzIHByb2JsZW0gYnkgc3VwcHJlc3NpbmcgdGhlIHdhcm5pbmcuCgogICAgbW9kaWZpZWQ6 CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcnBsL3IvcnBsX2tub3duX2J1Z3NfZGV0ZWN0aW9uLnJl c3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3JwbC90L3JwbF9rbm93bl9idWdzX2RldGVjdGlv bi50ZXN0Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwYnVmLmMn Ci0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuYwlyZXZpZDpyb2hpdC5rYWxoYW5z QG9yYWNsZS5jb20tMjAxMTEyMjYxNzEwNTYtdTQ0cDU0MXhjdjE2MHh3MQorKysgYi9zdG9yYWdl L2lubm9iYXNlL2J1Zi9idWYwYnVmLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MTEyMjgxMDMxMTgtdTRoOXgxMjJudjJqN3p0OApAQCAtOTg5LDExICs5ODksOCBAQCBidWZfY2h1 bmtfaW5pdCgKIAlmb3IgKGkgPSBjaHVuay0+c2l6ZTsgaS0tOyApIHsKIAogCQlidWZfYmxvY2tf aW5pdChidWZfcG9vbCwgYmxvY2ssIGZyYW1lKTsKKwkJVU5JVl9NRU1fSU5WQUxJRChibG9jay0+ ZnJhbWUsIFVOSVZfUEFHRV9TSVpFKTsKIAotI2lmZGVmIEhBVkVfcHVyaWZ5Ci0JCS8qIFdpcGUg Y29udGVudHMgb2YgZnJhbWUgdG8gZWxpbWluYXRlIGEgUHVyaWZ5IHdhcm5pbmcgKi8KLQkJbWVt c2V0KGJsb2NrLT5mcmFtZSwgJ1wwJywgVU5JVl9QQUdFX1NJWkUpOwotI2VuZGlmCiAJCS8qIEFk ZCB0aGUgYmxvY2sgdG8gdGhlIGZyZWUgbGlzdCAqLwogCQlVVF9MSVNUX0FERF9MQVNUKGxpc3Qs IGJ1Zl9wb29sLT5mcmVlLCAoJmJsb2NrLT5wYWdlKSk7CiAKCj09PSBtb2RpZmllZCBmaWxlICdz dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbWVtMG1lbS5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL21lbTBtZW0uaWMJcmV2aWQ6cm9oaXQua2FsaGFuc0BvcmFjbGUuY29tLTIwMTEx MjI2MTcxMDU2LXU0NHA1NDF4Y3YxNjB4dzEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L21lbTBtZW0uaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTEyMjgxMDMxMTgt dTRoOXgxMjJudjJqN3p0OApAQCAtMjA5LDEwICsyMDksNiBAQCBtZW1faGVhcF9hbGxvYygKIAli dWYgPSAoYnl0ZSopYnVmICsgTUVNX0ZJRUxEX0hFQURFUl9TSVpFOwogCiAjZW5kaWYKLSNpZmRl ZiBVTklWX1NFVF9NRU1fVE9fWkVSTwotCVVOSVZfTUVNX0FMTE9DKGJ1Ziwgbik7Ci0JbWVtc2V0 KGJ1ZiwgJ1wwJywgbik7Ci0jZW5kaWYKIAlVTklWX01FTV9BTExPQyhidWYsIG4pOwogCXJldHVy bihidWYpOwogfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91 bml2LmknCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91bml2LmkJcmV2aWQ6cm9oaXQu a2FsaGFuc0BvcmFjbGUuY29tLTIwMTExMjI2MTcxMDU2LXU0NHA1NDF4Y3YxNjB4dzEKKysrIGIv c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3VuaXYuaQlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMTIyODEwMzExOC11NGg5eDEyMm52Mmo3enQ4CkBAIC0xNTQsMTQgKzE1NCw2IEBA IHJlc29sdmVkICovCiAvKgkJCURFQlVHIFZFUlNJT04gQ09OVFJPTAogCQkJPT09PT09PT09PT09 PT09PT09PT09ICovCiAKLS8qIFRoZSBmb2xsb3dpbmcgZmxhZyB3aWxsIG1ha2UgSW5ub0RCIHRv IGluaXRpYWxpemUKLWFsbCBtZW1vcnkgaXQgYWxsb2NhdGVzIHRvIHplcm8uIEl0IGhpZGVzIFB1 cmlmeQotd2FybmluZ3MgYWJvdXQgcmVhZGluZyB1bmFsbG9jYXRlZCBtZW1vcnkgdW5sZXNzCi1t ZW1vcnkgaXMgcmVhZCBvdXRzaWRlIHRoZSBhbGxvY2F0ZWQgYmxvY2tzLiAqLwotLyoKLSNkZWZp bmUgVU5JVl9JTklUX01FTV9UT19aRVJPCi0qLwotCiAvKiBXaGVuIHRoaXMgbWFjcm8gaXMgZGVm aW5lZCB0aGVuIGFkZGl0aW9uYWwgdGVzdCBmdW5jdGlvbnMgd2lsbCBiZQogY29tcGlsZWQuIFRo ZXNlIGZ1bmN0aW9ucyBsaXZlIGF0IHRoZSBlbmQgb2YgZWFjaCByZWxldmFudCBzb3VyY2UgZmls ZQogYW5kIGhhdmUgInRlc3RfIiBwcmVmaXguIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IGNhbGxl ZCBmcm9tIGFueXdoZXJlIGluCkBAIC0yMzEsMTUgKzIyMyw2IEBAIG9wZXJhdGlvbnMgKHZlcnkg c2xvdyk7IGFsc28gVU5JVl9ERUJVRwogI2RlZmluZSBVTklWX0JUUl9ERUJVRwkJCQkvKiBjaGVj ayBCLXRyZWUgbGlua3MgKi8KICNkZWZpbmUgVU5JVl9MSUdIVF9NRU1fREVCVUcJCQkvKiBsaWdo dCBtZW1vcnkgZGVidWdnaW5nICovCiAKLSNpZmRlZiBIQVZFX3B1cmlmeQotLyogVGhlIGZvbGxv d2luZyBzZXRzIGFsbCBuZXcgYWxsb2NhdGVkIG1lbW9yeSB0byB6ZXJvIGJlZm9yZSB1c2U6Ci10 aGlzIGNhbiBiZSB1c2VkIHRvIGVsaW1pbmF0ZSB1bm5lY2Vzc2FyeSBQdXJpZnkgd2FybmluZ3Ms IGJ1dCBub3RlIHRoYXQKLWl0IGFsc28gbWFza3MgbWFueSBidWdzIFB1cmlmeSBjb3VsZCBkZXRl Y3QuIEZvciBkZXRhaWxlZCBQdXJpZnkgYW5hbHlzaXMgaXQKLWlzIGJlc3QgdG8gcmVtb3ZlIHRo ZSBkZWZpbmUgYmVsb3cgYW5kIGxvb2sgdGhyb3VnaCB0aGUgd2FybmluZ3Mgb25lCi1ieSBvbmUu ICovCi0jZGVmaW5lIFVOSVZfU0VUX01FTV9UT19aRVJPCi0jZW5kaWYKLQogLyoKICNkZWZpbmUg VU5JVl9TUUxfREVCVUcKICNkZWZpbmUgVU5JVl9MT0dfREVCVUcKCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdXQwbWVtLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS91dDBtZW0uaAlyZXZpZDpyb2hpdC5rYWxoYW5zQG9yYWNsZS5jb20tMjAxMTEy MjYxNzEwNTYtdTQ0cDU0MXhjdjE2MHh3MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv dXQwbWVtLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTEyMjgxMDMxMTgtdTRo OXgxMjJudjJqN3p0OApAQCAtNzgsNDAgKzc4LDE5IEBAIHV0X21lbV9pbml0KHZvaWQpOwogLyo9 PT09PT09PT09PT09Ki8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1BbGxvY2F0ZXMgbWVtb3J5LiBT ZXRzIGl0IGFsc28gdG8gemVybyBpZiBVTklWX1NFVF9NRU1fVE9fWkVSTyBpcwotZGVmaW5lZCBh bmQgc2V0X3RvX3plcm8gaXMgVFJVRS4KK0FsbG9jYXRlcyBtZW1vcnkuCiBAcmV0dXJuCW93bjog YWxsb2NhdGVkIG1lbW9yeSAqLwogVU5JVl9JTlRFUk4KIHZvaWQqCiB1dF9tYWxsb2NfbG93KAog Lyo9PT09PT09PT09Ki8KIAl1bGludAluLAkJCS8qITwgaW46IG51bWJlciBvZiBieXRlcyB0byBh bGxvY2F0ZSAqLwotCWlib29sCXNldF90b196ZXJvLAkJLyohPCBpbjogVFJVRSBpZiBhbGxvY2F0 ZWQgbWVtb3J5Ci0JCQkJCXNob3VsZCBiZSBzZXQgdG8gemVybyBpZgotCQkJCQlVTklWX1NFVF9N RU1fVE9fWkVSTyBpcyBkZWZpbmVkICovCi0JaWJvb2wJYXNzZXJ0X29uX2Vycm9yKTsJLyohPCBp bjogaWYgVFJVRSwgd2UgY3Jhc2ggbXlzcWxkIGlmCisJaWJvb2wJYXNzZXJ0X29uX2Vycm9yKQkv KiE8IGluOiBpZiBUUlVFLCB3ZSBjcmFzaCBteXNxbGQgaWYKIAkJCQkJdGhlIG1lbW9yeSBjYW5u b3QgYmUgYWxsb2NhdGVkICovCisJX19hdHRyaWJ1dGVfXygobWFsbG9jKSk7CiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKLUFsbG9jYXRlcyBtZW1vcnkuIFNldHMgaXQgYWxzbyB0byB6ZXJvIGlmIFVOSVZf U0VUX01FTV9UT19aRVJPIGlzCi1kZWZpbmVkLgotQHJldHVybglvd246IGFsbG9jYXRlZCBtZW1v cnkgKi8KLVVOSVZfSU5URVJOCi12b2lkKgotdXRfbWFsbG9jKAotLyo9PT09PT0qLwotCXVsaW50 CW4pOwkvKiE8IGluOiBudW1iZXIgb2YgYnl0ZXMgdG8gYWxsb2NhdGUgKi8KLSNpZm5kZWYgVU5J Vl9IT1RCQUNLVVAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotVGVzdHMgaWYgbWFsbG9jIG9mIG4gYnl0 ZXMgd291bGQgc3VjY2VlZC4gdXRfbWFsbG9jKCkgYXNzZXJ0cyBpZiBtZW1vcnkgcnVucwotb3V0 LiBJdCBjYW5ub3QgYmUgdXNlZCBpZiB3ZSB3YW50IHRvIHJldHVybiBhbiBlcnJvciBtZXNzYWdl LiBQcmludHMgdG8KLXN0ZGVyciBhIG1lc3NhZ2UgaWYgZmFpbHMuCi1AcmV0dXJuCVRSVUUgaWYg c3VjY2VlZGVkICovCi1VTklWX0lOVEVSTgotaWJvb2wKLXV0X3Rlc3RfbWFsbG9jKAotLyo9PT09 PT09PT09PSovCi0JdWxpbnQJbik7CS8qITwgaW46IHRyeSB0byBhbGxvY2F0ZSB0aGlzIG1hbnkg Ynl0ZXMgKi8KLSNlbmRpZiAvKiAhVU5JVl9IT1RCQUNLVVAgKi8KK0FsbG9jYXRlcyBtZW1vcnku ICovCisjZGVmaW5lIHV0X21hbGxvYyhuKSB1dF9tYWxsb2NfbG93KG4sIFRSVUUpCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIEZyZWVzIGEgbWVtb3J5IGJsb2NrIGFsbG9jYXRlZCB3aXRoIHV0X21hbGxv Yy4gRnJlZWluZyBhIE5VTEwgcG9pbnRlciBpcwogYSBub3AuICovCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vYmFzZS9tZW0vbWVtMHBvb2wuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9tZW0vbWVtMHBvb2wuYwlyZXZpZDpyb2hpdC5rYWxoYW5zQG9yYWNsZS5jb20tMjAxMTEyMjYx NzEwNTYtdTQ0cDU0MXhjdjE2MHh3MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL21lbS9tZW0wcG9v bC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMjI4MTAzMTE4LXU0aDl4MTIy bnYyajd6dDgKQEAgLTIyOCwxMSArMjI4LDcgQEAgbWVtX3Bvb2xfY3JlYXRlKAogCiAJcG9vbCA9 IHV0X21hbGxvYyhzaXplb2YobWVtX3Bvb2xfdCkpOwogCi0JLyogV2UgZG8gbm90IHNldCB0aGUg bWVtb3J5IHRvIHplcm8gKEZBTFNFKSBpbiB0aGUgcG9vbCwKLQlidXQgb25seSB3aGVuIGFsbG9j YXRlZCBhdCBhIGhpZ2hlciBsZXZlbCBpbiBtZW0wbWVtLmMuCi0JVGhpcyBpcyB0byBhdm9pZCBt YXNraW5nIHVzZWZ1bCBQdXJpZnkgd2FybmluZ3MuICovCi0KLQlwb29sLT5idWYgPSB1dF9tYWxs b2NfbG93KHNpemUsIEZBTFNFLCBUUlVFKTsKKwlwb29sLT5idWYgPSB1dF9tYWxsb2NfbG93KHNp emUsIFRSVUUpOwogCXBvb2wtPnNpemUgPSBzaXplOwogCiAJbXV0ZXhfY3JlYXRlKG1lbV9wb29s X211dGV4X2tleSwgJnBvb2wtPm11dGV4LCBTWU5DX01FTV9QT09MKTsKCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9iYXNlL29zL29zMHByb2MuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9vcy9vczBwcm9jLmMJcmV2aWQ6cm9oaXQua2FsaGFuc0BvcmFjbGUuY29tLTIwMTExMjI2MTcx MDU2LXU0NHA1NDF4Y3YxNjB4dzEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9vcy9vczBwcm9jLmMJ cmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTEyMjgxMDMxMTgtdTRoOXgxMjJudjJq N3p0OApAQCAtMTExLDkgKzExMSw2IEBAIG9zX21lbV9hbGxvY19sYXJnZSgKIAkJb3NfZmFzdF9t dXRleF9sb2NrKCZ1dF9saXN0X211dGV4KTsKIAkJdXRfdG90YWxfYWxsb2NhdGVkX21lbW9yeSAr PSBzaXplOwogCQlvc19mYXN0X211dGV4X3VubG9jaygmdXRfbGlzdF9tdXRleCk7Ci0jIGlmZGVm IFVOSVZfU0VUX01FTV9UT19aRVJPCi0JCW1lbXNldChwdHIsICdcMCcsIHNpemUpOwotIyBlbmRp ZgogCQlVTklWX01FTV9BTExPQyhwdHIsIHNpemUpOwogCQlyZXR1cm4ocHRyKTsKIAl9Cgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS91dC91dDBtZW0uYycKLS0tIGEvc3RvcmFn ZS9pbm5vYmFzZS91dC91dDBtZW0uYwlyZXZpZDpyb2hpdC5rYWxoYW5zQG9yYWNsZS5jb20tMjAx MTEyMjYxNzEwNTYtdTQ0cDU0MXhjdjE2MHh3MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL3V0L3V0 MG1lbS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMjI4MTAzMTE4LXU0aDl4 MTIybnYyajd6dDgKQEAgLTg0LDE3ICs4NCwxMyBAQCB1dF9tZW1faW5pdCh2b2lkKQogI2VuZGlm IC8qICFVTklWX0hPVEJBQ0tVUCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUFsbG9jYXRlcyBt ZW1vcnkuIFNldHMgaXQgYWxzbyB0byB6ZXJvIGlmIFVOSVZfU0VUX01FTV9UT19aRVJPIGlzCi1k ZWZpbmVkIGFuZCBzZXRfdG9femVybyBpcyBUUlVFLgorQWxsb2NhdGVzIG1lbW9yeS4KIEByZXR1 cm4Jb3duOiBhbGxvY2F0ZWQgbWVtb3J5ICovCiBVTklWX0lOVEVSTgogdm9pZCoKIHV0X21hbGxv Y19sb3coCiAvKj09PT09PT09PT0qLwogCXVsaW50CW4sCQkvKiE8IGluOiBudW1iZXIgb2YgYnl0 ZXMgdG8gYWxsb2NhdGUgKi8KLQlpYm9vbAlzZXRfdG9femVybywJLyohPCBpbjogVFJVRSBpZiBh bGxvY2F0ZWQgbWVtb3J5IHNob3VsZCBiZQotCQkJCXNldCB0byB6ZXJvIGlmIFVOSVZfU0VUX01F TV9UT19aRVJPIGlzCi0JCQkJZGVmaW5lZCAqLwogCWlib29sCWFzc2VydF9vbl9lcnJvcikvKiE8 IGluOiBpZiBUUlVFLCB3ZSBjcmFzaCBteXNxbGQgaWYgdGhlCiAJCQkJbWVtb3J5IGNhbm5vdCBi ZSBhbGxvY2F0ZWQgKi8KIHsKQEAgLTEwNiwxMiArMTAyLDYgQEAgdXRfbWFsbG9jX2xvdygKIAkJ cmV0ID0gbWFsbG9jKG4pOwogCQl1dF9hKHJldCB8fCAhYXNzZXJ0X29uX2Vycm9yKTsKIAotI2lm ZGVmIFVOSVZfU0VUX01FTV9UT19aRVJPCi0JCWlmIChzZXRfdG9femVybykgewotCQkJbWVtc2V0 KHJldCwgJ1wwJywgbik7Ci0JCQlVTklWX01FTV9BTExPQyhyZXQsIG4pOwotCQl9Ci0jZW5kaWYK IAkJcmV0dXJuKHJldCk7CiAJfQogCkBAIC0xOTMsMTIgKzE4Myw2IEBAIHJldHJ5OgogCQl9CiAJ fQogCi0JaWYgKHNldF90b196ZXJvKSB7Ci0jaWZkZWYgVU5JVl9TRVRfTUVNX1RPX1pFUk8KLQkJ bWVtc2V0KHJldCwgJ1wwJywgbiArIHNpemVvZih1dF9tZW1fYmxvY2tfdCkpOwotI2VuZGlmCi0J fQotCiAJVU5JVl9NRU1fQUxMT0MocmV0LCBuICsgc2l6ZW9mKHV0X21lbV9ibG9ja190KSk7CiAK IAkoKHV0X21lbV9ibG9ja190KilyZXQpLT5zaXplID0gbiArIHNpemVvZih1dF9tZW1fYmxvY2tf dCk7CkBAIC0yMTUsNzUgKzE5OSwxMSBAQCByZXRyeToKIAl2b2lkKglyZXQgPSBtYWxsb2Mobik7 CiAJdXRfYShyZXQgfHwgIWFzc2VydF9vbl9lcnJvcik7CiAKLSMgaWZkZWYgVU5JVl9TRVRfTUVN X1RPX1pFUk8KLQlpZiAoc2V0X3RvX3plcm8pIHsKLQkJbWVtc2V0KHJldCwgJ1wwJywgbik7Ci0J fQotIyBlbmRpZgogCXJldHVybihyZXQpOwogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwog fQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKLUFsbG9jYXRlcyBtZW1vcnkuIFNldHMgaXQgYWxzbyB0 byB6ZXJvIGlmIFVOSVZfU0VUX01FTV9UT19aRVJPIGlzCi1kZWZpbmVkLgotQHJldHVybglvd246 IGFsbG9jYXRlZCBtZW1vcnkgKi8KLVVOSVZfSU5URVJOCi12b2lkKgotdXRfbWFsbG9jKAotLyo9 PT09PT0qLwotCXVsaW50CW4pCS8qITwgaW46IG51bWJlciBvZiBieXRlcyB0byBhbGxvY2F0ZSAq LwotewotI2lmbmRlZiBVTklWX0hPVEJBQ0tVUAotCXJldHVybih1dF9tYWxsb2NfbG93KG4sIFRS VUUsIFRSVUUpKTsKLSNlbHNlIC8qICFVTklWX0hPVEJBQ0tVUCAqLwotCXJldHVybihtYWxsb2Mo bikpOwotI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwotfQotCi0jaWZuZGVmIFVOSVZfSE9U QkFDS1VQCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKLVRlc3RzIGlmIG1hbGxvYyBvZiBuIGJ5dGVzIHdv dWxkIHN1Y2NlZWQuIHV0X21hbGxvYygpIGFzc2VydHMgaWYgbWVtb3J5IHJ1bnMKLW91dC4gSXQg Y2Fubm90IGJlIHVzZWQgaWYgd2Ugd2FudCB0byByZXR1cm4gYW4gZXJyb3IgbWVzc2FnZS4gUHJp bnRzIHRvCi1zdGRlcnIgYSBtZXNzYWdlIGlmIGZhaWxzLgotQHJldHVybglUUlVFIGlmIHN1Y2Nl ZWRlZCAqLwotVU5JVl9JTlRFUk4KLWlib29sCi11dF90ZXN0X21hbGxvYygKLS8qPT09PT09PT09 PT0qLwotCXVsaW50CW4pCS8qITwgaW46IHRyeSB0byBhbGxvY2F0ZSB0aGlzIG1hbnkgYnl0ZXMg Ki8KLXsKLQl2b2lkKglyZXQ7Ci0KLQlyZXQgPSBtYWxsb2Mobik7Ci0KLQlpZiAocmV0ID09IE5V TEwpIHsKLQkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7Ci0JCWZwcmludGYoc3RkZXJyLAot CQkJIiAgSW5ub0RCOiBFcnJvcjogY2Fubm90IGFsbG9jYXRlIgotCQkJIiAlbHUgYnl0ZXMgb2Yg bWVtb3J5IGZvclxuIgotCQkJIklubm9EQjogYSBCTE9CIHdpdGggbWFsbG9jISBUb3RhbCBhbGxv Y2F0ZWQgbWVtb3J5XG4iCi0JCQkiSW5ub0RCOiBieSBJbm5vREIgJWx1IGJ5dGVzLiIKLQkJCSIg T3BlcmF0aW5nIHN5c3RlbSBlcnJubzogJWRcbiIKLQkJCSJJbm5vREI6IENoZWNrIGlmIHlvdSBz aG91bGQgaW5jcmVhc2UiCi0JCQkiIHRoZSBzd2FwIGZpbGUgb3JcbiIKLQkJCSJJbm5vREI6IHVs aW1pdHMgb2YgeW91ciBvcGVyYXRpbmcgc3lzdGVtLlxuIgotCQkJIklubm9EQjogT24gRnJlZUJT RCBjaGVjayB5b3UgaGF2ZSIKLQkJCSIgY29tcGlsZWQgdGhlIE9TIHdpdGhcbiIKLQkJCSJJbm5v REI6IGEgYmlnIGVub3VnaCBtYXhpbXVtIHByb2Nlc3Mgc2l6ZS5cbiIsCi0JCQkodWxvbmcpIG4s Ci0JCQkodWxvbmcpIHV0X3RvdGFsX2FsbG9jYXRlZF9tZW1vcnksCi0JCQkoaW50KSBlcnJubyk7 Ci0JCXJldHVybihGQUxTRSk7Ci0JfQotCi0JZnJlZShyZXQpOwotCi0JcmV0dXJuKFRSVUUpOwot fQotI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEZy ZWVzIGEgbWVtb3J5IGJsb2NrIGFsbG9jYXRlZCB3aXRoIHV0X21hbGxvYy4gRnJlZWluZyBhIE5V TEwgcG9pbnRlciBpcwogYSBub3AuICovCiBVTklWX0lOVEVSTgoKTm8gYnVuZGxlIChyZWFzb246 IHVzZWxlc3MgZm9yIHB1c2ggZW1haWxzKS4=