From: marko.makela Date: March 24 2011 12:25pm Subject: bzr commit into mysql-trunk-innodb branch (marko.makela:3551) List-Archive: http://lists.mysql.com/commits/133767 Message-Id: <201103241225.p2OCPf5d010108@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2116656574==" --===============2116656574== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjYtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDprZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwMzIzMTM0NjM3LTg0N2Z6 a2JiMnQ0OWIxdTIKCiAzNTUxIE1hcmtvIE3DpGtlbMOkCTIwMTEtMDMtMjQgW21lcmdlXQogICAg ICBNZXJnZSBteXNxbC01LjUtaW5ub2RiIHRvIG15c3FsLXRydW5rLWlubm9kYi4KCiAgICByZW1v dmVkOgogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdGhyMGxvYy5oCiAgICAgIHN0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS90aHIwbG9jLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvdGhy LwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Roci90aHIwbG9jLmMKICAgIG1vZGlmaWVkOgogICAg ICBzdG9yYWdlL2lubm9iYXNlL0NNYWtlTGlzdHMudHh0CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv YnRyL2J0cjBjdXIuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwYnVmLmMKICAgICAg c3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMHJlYS5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvZmls L2ZpbDBmaWwuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuYwogICAgICBzdG9yYWdlL2lubm9i YXNlL2luY2x1ZGUvYnVmMHJlYS5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9pYnVm MGlidWYuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvaWJ1ZjBpYnVmLmljCiAgICAg IHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9tdHIwbXRyLmgKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL210cjBtdHIuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3N5bmMw c3luYy5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvbXRyL210cjBtdHIuYwogICAgICBzdG9yYWdl L2lubm9iYXNlL3Nydi9zcnYwc3J2LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHN0 YXJ0LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHRyeC5jCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9iYXNlL0NNYWtlTGlzdHMudHh0JwotLS0gYS9zdG9yYWdlL2lubm9i YXNlL0NNYWtlTGlzdHMudHh0CXJldmlkOmtldmluLmxld2lzQG9yYWNsZS5jb20tMjAxMTAzMjMx MzQ2MzctODQ3ZnprYmIydDQ5YjF1MgorKysgYi9zdG9yYWdlL2lubm9iYXNlL0NNYWtlTGlzdHMu dHh0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMzI0MTIyNDA4LTRwcTR4MWxs NmlhdHF5eW4KQEAgLTI0Nyw3ICsyNDcsNiBAQCBTRVQoSU5OT0JBU0VfU09VUkNFUwlidHIvYnRy MGJ0ci5jIGJ0ci9iCiAJCQlyb3cvcm93MHNlbC5jIHJvdy9yb3cwdWlucy5jIHJvdy9yb3cwdW1v ZC5jIHJvdy9yb3cwdW5kby5jIHJvdy9yb3cwdXBkLmMgcm93L3JvdzB2ZXJzLmMKIAkJCXNydi9z cnYwbW9uLmMgc3J2L3NydjBzcnYuYyBzcnYvc3J2MHN0YXJ0LmMKIAkJCXN5bmMvc3luYzBhcnIu YyBzeW5jL3N5bmMwcncuYyBzeW5jL3N5bmMwc3luYy5jCi0JCQl0aHIvdGhyMGxvYy5jCiAJCQl0 cngvdHJ4MGlfcy5jIHRyeC90cngwcHVyZ2UuYyB0cngvdHJ4MHJlYy5jIHRyeC90cngwcm9sbC5j IHRyeC90cngwcnNlZy5jCiAJCQl0cngvdHJ4MHN5cy5jIHRyeC90cngwdHJ4LmMgdHJ4L3RyeDB1 bmRvLmMKIAkJCXVzci91c3Iwc2Vzcy5jCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9idHIvYnRyMGN1ci5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMJ cmV2aWQ6a2V2aW4ubGV3aXNAb3JhY2xlLmNvbS0yMDExMDMyMzEzNDYzNy04NDdmemtiYjJ0NDli MXUyCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuYwlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMDMyNDEyMjQwOC00cHE0eDFsbDZpYXRxeXluCkBAIC00MDIsNyAr NDAyLDcgQEAgYnRyX2N1cl9zZWFyY2hfdG9fbnRoX2xldmVsKAogCiAJdXRfYWQobGV2ZWwgPT0g MCB8fCBtb2RlID09IFBBR0VfQ1VSX0xFKTsKIAl1dF9hZChkaWN0X2luZGV4X2NoZWNrX3NlYXJj aF90dXBsZShpbmRleCwgdHVwbGUpKTsKLQl1dF9hZCghZGljdF9pbmRleF9pc19pYnVmKGluZGV4 KSB8fCBpYnVmX2luc2lkZSgpKTsKKwl1dF9hZCghZGljdF9pbmRleF9pc19pYnVmKGluZGV4KSB8 fCBpYnVmX2luc2lkZShtdHIpKTsKIAl1dF9hZChkdHVwbGVfY2hlY2tfdHlwZWQodHVwbGUpKTsK IAogI2lmZGVmIFVOSVZfREVCVUcKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L2J1Zi9idWYwYnVmLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuYwlyZXZp ZDprZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwMzIzMTM0NjM3LTg0N2Z6a2JiMnQ0OWIxdTIK KysrIGIvc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1Zi5jCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwMzI0MTIyNDA4LTRwcTR4MWxsNmlhdHF5eW4KQEAgLTI0NjEsOSArMjQ2 MSw2IEBAIGJ1Zl9wYWdlX2dldF96aXAoCiAJdW5zaWduZWQJYWNjZXNzX3RpbWU7CiAJYnVmX3Bv b2xfdCoJYnVmX3Bvb2wgPSBidWZfcG9vbF9nZXQoc3BhY2UsIG9mZnNldCk7CiAKLSNpZm5kZWYg VU5JVl9MT0dfREVCVUcKLQl1dF9hZCghaWJ1Zl9pbnNpZGUoKSk7Ci0jZW5kaWYKIAlidWZfcG9v bC0+c3RhdC5uX3BhZ2VfZ2V0cysrOwogCiAJZm9yICg7OykgewpAQCAtMjkwOCw4ICsyOTA1LDkg QEAgYnVmX3BhZ2VfZ2V0X2dlbigKIAl1dF9hZCh6aXBfc2l6ZSA9PSBmaWxfc3BhY2VfZ2V0X3pp cF9zaXplKHNwYWNlKSk7CiAJdXRfYWQodXRfaXNfMnBvdyh6aXBfc2l6ZSkpOwogI2lmbmRlZiBV TklWX0xPR19ERUJVRwotCXV0X2FkKCFpYnVmX2luc2lkZSgpIHx8IGlidWZfcGFnZV9sb3coc3Bh Y2UsIHppcF9zaXplLCBvZmZzZXQsCi0JCQkJCSAgICAgIEZBTFNFLCBmaWxlLCBsaW5lLCBOVUxM KSk7CisJdXRfYWQoIWlidWZfaW5zaWRlKG10cikKKwkgICAgICB8fCBpYnVmX3BhZ2VfbG93KHNw YWNlLCB6aXBfc2l6ZSwgb2Zmc2V0LAorCQkJICAgICAgIEZBTFNFLCBmaWxlLCBsaW5lLCBOVUxM KSk7CiAjZW5kaWYKIAlidWZfcG9vbC0+c3RhdC5uX3BhZ2VfZ2V0cysrOwogCWZvbGQgPSBidWZf cGFnZV9hZGRyZXNzX2ZvbGQoc3BhY2UsIG9mZnNldCk7CkBAIC0zMzQ3LDcgKzMzNDUsOCBAQCB3 YWl0X3VudGlsX3VuZml4ZWQ6CiAJCS8qIEluIHRoZSBjYXNlIG9mIGEgZmlyc3QgYWNjZXNzLCB0 cnkgdG8gYXBwbHkgbGluZWFyCiAJCXJlYWQtYWhlYWQgKi8KIAotCQlidWZfcmVhZF9haGVhZF9s aW5lYXIoc3BhY2UsIHppcF9zaXplLCBvZmZzZXQpOworCQlidWZfcmVhZF9haGVhZF9saW5lYXIo c3BhY2UsIHppcF9zaXplLCBvZmZzZXQsCisJCQkJICAgICAgaWJ1Zl9pbnNpZGUobXRyKSk7CiAJ fQogCiAjaWZkZWYgVU5JVl9JQlVGX0NPVU5UX0RFQlVHCkBAIC0zNDA4LDcgKzM0MDcsNyBAQCBi dWZfcGFnZV9vcHRpbWlzdGljX2dldCgKIAlhY2Nlc3NfdGltZSA9IGJ1Zl9wYWdlX2lzX2FjY2Vz c2VkKCZibG9jay0+cGFnZSk7CiAJYnVmX3BhZ2Vfc2V0X2FjY2Vzc2VkX21ha2VfeW91bmcoJmJs b2NrLT5wYWdlLCBhY2Nlc3NfdGltZSk7CiAKLQl1dF9hZCghaWJ1Zl9pbnNpZGUoKQorCXV0X2Fk KCFpYnVmX2luc2lkZShtdHIpCiAJICAgICAgfHwgaWJ1Zl9wYWdlKGJ1Zl9ibG9ja19nZXRfc3Bh Y2UoYmxvY2spLAogCQkJICAgYnVmX2Jsb2NrX2dldF96aXBfc2l6ZShibG9jayksCiAJCQkgICBi dWZfYmxvY2tfZ2V0X3BhZ2Vfbm8oYmxvY2spLCBOVUxMKSk7CkBAIC0zNDY0LDcgKzM0NjMsOCBA QCBidWZfcGFnZV9vcHRpbWlzdGljX2dldCgKIAogCQlidWZfcmVhZF9haGVhZF9saW5lYXIoYnVm X2Jsb2NrX2dldF9zcGFjZShibG9jayksCiAJCQkJICAgICAgYnVmX2Jsb2NrX2dldF96aXBfc2l6 ZShibG9jayksCi0JCQkJICAgICAgYnVmX2Jsb2NrX2dldF9wYWdlX25vKGJsb2NrKSk7CisJCQkJ ICAgICAgYnVmX2Jsb2NrX2dldF9wYWdlX25vKGJsb2NrKSwKKwkJCQkgICAgICBpYnVmX2luc2lk ZShtdHIpKTsKIAl9CiAKICNpZmRlZiBVTklWX0lCVUZfQ09VTlRfREVCVUcKQEAgLTM1NDAsNyAr MzU0MCw3IEBAIGJ1Zl9wYWdlX2dldF9rbm93bl9ub3dhaXQoCiAJCWJ1Zl9wb29sX211dGV4X2V4 aXQoYnVmX3Bvb2wpOwogCX0KIAotCXV0X2FkKCFpYnVmX2luc2lkZSgpIHx8IChtb2RlID09IEJV Rl9LRUVQX09MRCkpOworCXV0X2FkKCFpYnVmX2luc2lkZShtdHIpIHx8IG1vZGUgPT0gQlVGX0tF RVBfT0xEKTsKIAogCWlmIChyd19sYXRjaCA9PSBSV19TX0xBVENIKSB7CiAJCXN1Y2Nlc3MgPSBy d19sb2NrX3NfbG9ja19ub3dhaXQoJihibG9jay0+bG9jayksCkBAIC0zODE1LDE0ICszODE1LDEz IEBAIGJ1Zl9wYWdlX2luaXRfZm9yX3JlYWQoCiAJCS8qIEl0IGlzIGEgcmVhZC1haGVhZCB3aXRo aW4gYW4gaWJ1ZiByb3V0aW5lICovCiAKIAkJdXRfYWQoIWlidWZfYml0bWFwX3BhZ2UoemlwX3Np emUsIG9mZnNldCkpOwotCQl1dF9hZChpYnVmX2luc2lkZSgpKTsKIAotCQltdHJfc3RhcnQoJm10 cik7CisJCWlidWZfbXRyX3N0YXJ0KCZtdHIpOwogCiAJCWlmICghcmVjdl9ub19pYnVmX29wZXJh dGlvbnMKIAkJICAgICYmICFpYnVmX3BhZ2Uoc3BhY2UsIHppcF9zaXplLCBvZmZzZXQsICZtdHIp KSB7CiAKLQkJCW10cl9jb21taXQoJm10cik7CisJCQlpYnVmX210cl9jb21taXQoJm10cik7CiAK IAkJCXJldHVybihOVUxMKTsKIAkJfQpAQCAtNDAxOSw3ICs0MDE4LDcgQEAgZnVuY19leGl0Ogog CiAJaWYgKG1vZGUgPT0gQlVGX1JFQURfSUJVRl9QQUdFU19PTkxZKSB7CiAKLQkJbXRyX2NvbW1p dCgmbXRyKTsKKwkJaWJ1Zl9tdHJfY29tbWl0KCZtdHIpOwogCX0KIAogCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMHJlYS5jJwotLS0gYS9zdG9yYWdlL2lubm9i YXNlL2J1Zi9idWYwcmVhLmMJcmV2aWQ6a2V2aW4ubGV3aXNAb3JhY2xlLmNvbS0yMDExMDMyMzEz NDYzNy04NDdmemtiYjJ0NDliMXUyCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjByZWEu YwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyNDEyMjQwOC00cHE0eDFsbDZp YXRxeXluCkBAIC0yMzYsMTAgKzIzNiwxMCBAQCBVTklWX0lOVEVSTgogdWxpbnQKIGJ1Zl9yZWFk X2FoZWFkX2xpbmVhcigKIC8qPT09PT09PT09PT09PT09PT09Ki8KLQl1bGludAlzcGFjZSwJLyoh PCBpbjogc3BhY2UgaWQgKi8KLQl1bGludAl6aXBfc2l6ZSwvKiE8IGluOiBjb21wcmVzc2VkIHBh Z2Ugc2l6ZSBpbiBieXRlcywgb3IgMCAqLwotCXVsaW50CW9mZnNldCkJLyohPCBpbjogcGFnZSBu dW1iZXIgb2YgYSBwYWdlOyBOT1RFOiB0aGUgY3VycmVudCB0aHJlYWQKLQkJCW11c3Qgd2FudCBh Y2Nlc3MgdG8gdGhpcyBwYWdlIChzZWUgTk9URSAzIGFib3ZlKSAqLworCXVsaW50CXNwYWNlLAkJ LyohPCBpbjogc3BhY2UgaWQgKi8KKwl1bGludAl6aXBfc2l6ZSwJLyohPCBpbjogY29tcHJlc3Nl ZCBwYWdlIHNpemUgaW4gYnl0ZXMsIG9yIDAgKi8KKwl1bGludAlvZmZzZXQsCQkvKiE8IGluOiBw YWdlIG51bWJlcjsgc2VlIE5PVEUgMyBhYm92ZSAqLworCWlib29sCWluc2lkZV9pYnVmKQkvKiE8 IGluOiBUUlVFIGlmIHdlIGFyZSBpbnNpZGUgaWJ1ZiByb3V0aW5lICovCiB7CiAJYnVmX3Bvb2xf dCoJYnVmX3Bvb2wgPSBidWZfcG9vbF9nZXQoc3BhY2UsIG9mZnNldCk7CiAJaWJfaW50NjRfdAl0 YWJsZXNwYWNlX3ZlcnNpb247CkBAIC00MzQsMTEgKzQzNCw5IEBAIGJ1Zl9yZWFkX2FoZWFkX2xp bmVhcigKIAogCS8qIElmIHdlIGdvdCB0aGlzIGZhciwgcmVhZC1haGVhZCBjYW4gYmUgc2Vuc2li bGU6IGRvIGl0ICovCiAKLQlpZiAoaWJ1Zl9pbnNpZGUoKSkgewotCQlpYnVmX21vZGUgPSBCVUZf UkVBRF9JQlVGX1BBR0VTX09OTFk7Ci0JfSBlbHNlIHsKLQkJaWJ1Zl9tb2RlID0gQlVGX1JFQURf QU5ZX1BBR0U7Ci0JfQorCWlidWZfbW9kZSA9IGluc2lkZV9pYnVmCisJCT8gQlVGX1JFQURfSUJV Rl9QQUdFU19PTkxZIHwgT1NfQUlPX1NJTVVMQVRFRF9XQUtFX0xBVEVSCisJCTogQlVGX1JFQURf QU5ZX1BBR0UgfCBPU19BSU9fU0lNVUxBVEVEX1dBS0VfTEFURVI7CiAKIAljb3VudCA9IDA7CiAK QEAgLTQ1NSw3ICs0NTMsNyBAQCBidWZfcmVhZF9haGVhZF9saW5lYXIoCiAJCWlmICghaWJ1Zl9i aXRtYXBfcGFnZSh6aXBfc2l6ZSwgaSkpIHsKIAkJCWNvdW50ICs9IGJ1Zl9yZWFkX3BhZ2VfbG93 KAogCQkJCSZlcnIsIEZBTFNFLAotCQkJCWlidWZfbW9kZSB8IE9TX0FJT19TSU1VTEFURURfV0FL RV9MQVRFUiwKKwkJCQlpYnVmX21vZGUsCiAJCQkJc3BhY2UsIHppcF9zaXplLCBGQUxTRSwgdGFi bGVzcGFjZV92ZXJzaW9uLCBpKTsKIAkJCWlmIChlcnIgPT0gREJfVEFCTEVTUEFDRV9ERUxFVEVE KSB7CiAJCQkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7CkBAIC01MjUsNyArNTIzLDYgQEAg YnVmX3JlYWRfaWJ1Zl9tZXJnZV9wYWdlcygKIHsKIAl1bGludAlpOwogCi0JdXRfYWQoIWlidWZf aW5zaWRlKCkpOwogI2lmZGVmIFVOSVZfSUJVRl9ERUJVRwogCXV0X2Eobl9zdG9yZWQgPCBVTklW X1BBR0VfU0laRSk7CiAjZW5kaWYKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L2ZpbC9maWwwZmlsLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvZmlsL2ZpbDBmaWwuYwlyZXZp ZDprZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwMzIzMTM0NjM3LTg0N2Z6a2JiMnQ0OWIxdTIK KysrIGIvc3RvcmFnZS9pbm5vYmFzZS9maWwvZmlsMGZpbC5jCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwMzI0MTIyNDA4LTRwcTR4MWxsNmlhdHF5eW4KQEAgLTQzMzksOCArNDMz OSw2IEBAIGZpbF9pbygKIAl1dF9hZChyZWN2X25vX2lidWZfb3BlcmF0aW9ucyB8fCAodHlwZSA9 PSBPU19GSUxFX1dSSVRFKQogCSAgICAgIHx8ICFpYnVmX2JpdG1hcF9wYWdlKHppcF9zaXplLCBi bG9ja19vZmZzZXQpCiAJICAgICAgfHwgc3luYyB8fCBpc19sb2cpOwotCXV0X2FkKCFpYnVmX2lu c2lkZSgpIHx8IGlzX2xvZyB8fCAodHlwZSA9PSBPU19GSUxFX1dSSVRFKQotCSAgICAgIHx8IGli dWZfcGFnZShzcGFjZV9pZCwgemlwX3NpemUsIGJsb2NrX29mZnNldCwgTlVMTCkpOwogIyBlbmRp ZiAvKiBVTklWX0xPR19ERUJVRyAqLwogCWlmIChzeW5jKSB7CiAJCW1vZGUgPSBPU19BSU9fU1lO QzsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2Ri LmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCXJldmlkOmtl dmluLmxld2lzQG9yYWNsZS5jb20tMjAxMTAzMjMxMzQ2MzctODQ3ZnprYmIydDQ5YjF1MgorKysg Yi9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTEwMzI0MTIyNDA4LTRwcTR4MWxsNmlhdHF5eW4KQEAgLTc0LDcgKzc0 LDYgQEAgZXh0ZXJuICJDIiB7CiAjaW5jbHVkZSAiZmlsMGZpbC5oIgogI2luY2x1ZGUgInRyeDB4 YS5oIgogI2luY2x1ZGUgInJvdzBtZXJnZS5oIgotI2luY2x1ZGUgInRocjBsb2MuaCIKICNpbmNs dWRlICJkaWN0MGJvb3QuaCIKICNpbmNsdWRlICJkaWN0MHN0YXRzLmgiCiAjaW5jbHVkZSAiaGFf cHJvdG90eXBlcy5oIgpAQCAtMjg4LDcgKzI4Nyw2IEBAIHN0YXRpYyBQU0lfbXV0ZXhfaW5mbyBh bGxfaW5ub2RiX211dGV4ZXMKIAl7JnN5bmNfdGhyZWFkX211dGV4X2tleSwgInN5bmNfdGhyZWFk X211dGV4IiwgMH0sCiAjICBlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIAl7JnRyeF9kb3Vi bGV3cml0ZV9tdXRleF9rZXksICJ0cnhfZG91Ymxld3JpdGVfbXV0ZXgiLCAwfSwKLQl7JnRocl9s b2NhbF9tdXRleF9rZXksICJ0aHJfbG9jYWxfbXV0ZXgiLCAwfSwKIAl7JnRyeF91bmRvX211dGV4 X2tleSwgInRyeF91bmRvX211dGV4IiwgMH0sCiAJeyZzcnZfc3lzX211dGV4X2tleSwgInNydl9z eXNfbXV0ZXgiLCAwfSwKIAl7JmxvY2tfc3lzX211dGV4X2tleSwgImxvY2tfbXV0ZXgiLCAwfSwK QEAgLTMyNjgsNyArMzI2Niw2IEBAIGlubm9iYXNlX2Nsb3NlX2Nvbm5lY3Rpb24oCiAKIAlpbm5v YmFzZV9yb2xsYmFja190cngodHJ4KTsKIAotCXRocl9sb2NhbF9mcmVlKHRyeC0+bXlzcWxfdGhy ZWFkX2lkKTsKIAl0cnhfZnJlZV9mb3JfbXlzcWwodHJ4KTsKIAogCURCVUdfUkVUVVJOKDApOwoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuYycKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5jCXJldmlkOmtldmluLmxld2lzQG9y YWNsZS5jb20tMjAxMTAzMjMxMzQ2MzctODQ3ZnprYmIydDQ5YjF1MgorKysgYi9zdG9yYWdlL2lu bm9iYXNlL2lidWYvaWJ1ZjBpYnVmLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MTAzMjQxMjI0MDgtNHBxNHgxbGw2aWF0cXl5bgpAQCAtNDQsNyArNDQsNiBAQCBDcmVhdGVkIDcv MTkvMTk5NyBIZWlra2kgVHV1cmkKICNpbmNsdWRlICJmc3AwZnNwLmgiCiAjaW5jbHVkZSAidHJ4 MHN5cy5oIgogI2luY2x1ZGUgImZpbDBmaWwuaCIKLSNpbmNsdWRlICJ0aHIwbG9jLmgiCiAjaW5j bHVkZSAicmVtMHJlYy5oIgogI2luY2x1ZGUgImJ0cjBjdXIuaCIKICNpbmNsdWRlICJidHIwcGN1 ci5oIgpAQCAtMzIxLDUyICszMjAsNDMgQEAgc3RpbGwgcGh5c2ljYWxseSBsaWtlIHRoZSBpbmRl eCBwYWdlIGV2ZQogZHJvcHBlZCEgU28sIHRoZXJlIHNlZW1zIHRvIGJlIG5vIHByb2JsZW0uICov CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCi1TZXRzIHRoZSBmbGFnIGluIHRoZSBjdXJyZW50IE9TIHRocmVh ZCBsb2NhbCBzdG9yYWdlIGRlbm90aW5nIHRoYXQgaXQgaXMKK1NldHMgdGhlIGZsYWcgaW4gdGhl IGN1cnJlbnQgbWluaS10cmFuc2FjdGlvbiByZWNvcmQgaW5kaWNhdGluZyB3ZSdyZQogaW5zaWRl IGFuIGluc2VydCBidWZmZXIgcm91dGluZS4gKi8KIFVOSVZfSU5MSU5FCiB2b2lkCi1pYnVmX2Vu dGVyKHZvaWQpCi0vKj09PT09PT09PT09PSovCitpYnVmX2VudGVyKAorLyo9PT09PT09Ki8KKwlt dHJfdCoJbXRyKQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLwogewotCWlib29sKglw dHI7Ci0KLQlwdHIgPSB0aHJfbG9jYWxfZ2V0X2luX2lidWZfZmllbGQoKTsKLQotCXV0X2FkKCpw dHIgPT0gRkFMU0UpOwotCi0JKnB0ciA9IFRSVUU7CisJdXRfYWQoIW10ci0+aW5zaWRlX2lidWYp OworCW10ci0+aW5zaWRlX2lidWYgPSBUUlVFOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotU2V0cyB0 aGUgZmxhZyBpbiB0aGUgY3VycmVudCBPUyB0aHJlYWQgbG9jYWwgc3RvcmFnZSBkZW5vdGluZyB0 aGF0IGl0IGlzCitTZXRzIHRoZSBmbGFnIGluIHRoZSBjdXJyZW50IG1pbmktdHJhbnNhY3Rpb24g cmVjb3JkIGluZGljYXRpbmcgd2UncmUKIGV4aXRpbmcgYW4gaW5zZXJ0IGJ1ZmZlciByb3V0aW5l LiAqLwogVU5JVl9JTkxJTkUKIHZvaWQKLWlidWZfZXhpdCh2b2lkKQotLyo9PT09PT09PT09PSov CitpYnVmX2V4aXQoCisvKj09PT09PSovCisJbXRyX3QqCW10cikJLyohPCBpbi9vdXQ6IG1pbmkt dHJhbnNhY3Rpb24gKi8KIHsKLQlpYm9vbCoJcHRyOwotCi0JcHRyID0gdGhyX2xvY2FsX2dldF9p bl9pYnVmX2ZpZWxkKCk7Ci0KLQl1dF9hZCgqcHRyID09IFRSVUUpOwotCi0JKnB0ciA9IEZBTFNF OworCXV0X2FkKG10ci0+aW5zaWRlX2lidWYpOworCW10ci0+aW5zaWRlX2lidWYgPSBGQUxTRTsK IH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKLVJldHVybnMgVFJVRSBpZiB0aGUgY3VycmVudCBPUyB0aHJl YWQgaXMgcGVyZm9ybWluZyBhbiBpbnNlcnQgYnVmZmVyCi1yb3V0aW5lLgotCi1Gb3IgaW5zdGFu Y2UsIGEgcmVhZC1haGVhZCBvZiBub24taWJ1ZiBwYWdlcyBpcyBmb3JiaWRkZW4gYnkgdGhyZWFk cwotdGhhdCBhcmUgZXhlY3V0aW5nIGFuIGluc2VydCBidWZmZXIgcm91dGluZS4KLUByZXR1cm4g VFJVRSBpZiBpbnNpZGUgYW4gaW5zZXJ0IGJ1ZmZlciByb3V0aW5lICovCi1VTklWX0lOVEVSTgot aWJvb2wKLWlidWZfaW5zaWRlKHZvaWQpCi0vKj09PT09PT09PT09PT0qLworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgor Q29tbWl0cyBhbiBpbnNlcnQgYnVmZmVyIG1pbmktdHJhbnNhY3Rpb24gYW5kIHNldHMgdGhlIHBl cnNpc3RlbnQKK2N1cnNvciBsYXRjaCBtb2RlIHRvIEJUUl9OT19MQVRDSEVTLCB0aGF0IGlzLCBk ZXRhY2hlcyB0aGUgY3Vyc29yLiAqLworVU5JVl9JTkxJTkUKK3ZvaWQKK2lidWZfYnRyX3BjdXJf Y29tbWl0X3NwZWNpZnlfbXRyKAorLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisJ YnRyX3BjdXJfdCoJcGN1ciwJLyohPCBpbi9vdXQ6IHBlcnNpc3RlbnQgY3Vyc29yICovCisJbXRy X3QqCQltdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCiB7Ci0JcmV0dXJuKCp0 aHJfbG9jYWxfZ2V0X2luX2lidWZfZmllbGQoKSk7CisJdXRfZChpYnVmX2V4aXQobXRyKSk7CisJ YnRyX3BjdXJfY29tbWl0X3NwZWNpZnlfbXRyKHBjdXIsIG10cik7CiB9CiAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCkBAIC0zNzYsMTEgKzM2NiwxMSBAQCBzdGF0aWMKIHBhZ2VfdCoKIGlidWZfaGVhZGVyX3Bh Z2VfZ2V0KAogLyo9PT09PT09PT09PT09PT09PSovCi0JbXRyX3QqCW10cikJLyohPCBpbjogbXRy ICovCisJbXRyX3QqCW10cikJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KIHsKIAli dWZfYmxvY2tfdCoJYmxvY2s7CiAKLQl1dF9hZCghaWJ1Zl9pbnNpZGUoKSk7CisJdXRfYWQoIWli dWZfaW5zaWRlKG10cikpOwogCiAJYmxvY2sgPSBidWZfcGFnZV9nZXQoCiAJCUlCVUZfU1BBQ0Vf SUQsIDAsIEZTUF9JQlVGX0hFQURFUl9QQUdFX05PLCBSV19YX0xBVENILCBtdHIpOwpAQCAtNDAx LDcgKzM5MSw3IEBAIGlidWZfdHJlZV9yb290X2dldCgKIAlidWZfYmxvY2tfdCoJYmxvY2s7CiAJ cGFnZV90KgkJcm9vdDsKIAotCXV0X2FkKGlidWZfaW5zaWRlKCkpOworCXV0X2FkKGlidWZfaW5z aWRlKG10cikpOwogCXV0X2FkKG11dGV4X293bigmaWJ1Zl9tdXRleCkpOwogCiAJbXRyX3hfbG9j ayhkaWN0X2luZGV4X2dldF9sb2NrKGlidWYtPmluZGV4KSwgbXRyKTsKQEAgLTU0NSw3ICs1MzUs NyBAQCBpYnVmX2luaXRfYXRfZGJfc3RhcnQodm9pZCkKIAogCWZzZWdfbl9yZXNlcnZlZF9wYWdl cyhoZWFkZXJfcGFnZSArIElCVUZfSEVBREVSICsgSUJVRl9UUkVFX1NFR19IRUFERVIsCiAJCQkg ICAgICAmbl91c2VkLCAmbXRyKTsKLQlpYnVmX2VudGVyKCk7CisJaWJ1Zl9lbnRlcigmbXRyKTsK IAogCXV0X2FkKG5fdXNlZCA+PSAyKTsKIApAQCAtNTY2LDkgKzU1Niw3IEBAIGlidWZfaW5pdF9h dF9kYl9zdGFydCh2b2lkKQogCW11dGV4X2V4aXQoJmlidWZfbXV0ZXgpOwogCiAJaWJ1Zi0+ZW1w dHkgPSAocGFnZV9nZXRfbl9yZWNzKHJvb3QpID09IDApOwotCW10cl9jb21taXQoJm10cik7Ci0K LQlpYnVmX2V4aXQoKTsKKwlpYnVmX210cl9jb21taXQoJm10cik7CiAKIAloZWFwID0gbWVtX2hl YXBfY3JlYXRlKDQ1MCk7CiAKQEAgLTYwOCwxMSArNTk2LDkgQEAgaWJ1Zl9tYXhfc2l6ZV91cGRh dGUoCiB7CiAJdWxpbnQJbmV3X3NpemUgPSAoKGJ1Zl9wb29sX2dldF9jdXJyX3NpemUoKSAvIFVO SVZfUEFHRV9TSVpFKQogCQkJICAgICogbmV3X3ZhbCkgLyAxMDA7Ci0JaWJ1Zl9lbnRlcigpOwog CW11dGV4X2VudGVyKCZpYnVmX211dGV4KTsKIAlpYnVmLT5tYXhfc2l6ZSA9IG5ld19zaXplOwog CW11dGV4X2V4aXQoJmlidWZfbXV0ZXgpOwotCWlidWZfZXhpdCgpOwogfQogCiAKQEAgLTEyNDgs MTkgKzEyMzQsMzAgQEAgaWJ1Zl9wYWdlX2xvdygKIAlyZXR1cm4ocmV0KTsKIH0KIAorI2lmZGVm IFVOSVZfREVCVUcKKyMgZGVmaW5lIGlidWZfcmVjX2dldF9wYWdlX25vKG10cixyZWMpIGlidWZf cmVjX2dldF9wYWdlX25vX2Z1bmMobXRyLHJlYykKKyNlbHNlIC8qIFVOSVZfREVCVUcgKi8KKyMg ZGVmaW5lIGlidWZfcmVjX2dldF9wYWdlX25vKG10cixyZWMpIGlidWZfcmVjX2dldF9wYWdlX25v X2Z1bmMocmVjKQorI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KKwogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgog UmV0dXJucyB0aGUgcGFnZSBudW1iZXIgZmllbGQgb2YgYW4gaWJ1ZiByZWNvcmQuCiBAcmV0dXJu CXBhZ2UgbnVtYmVyICovCiBzdGF0aWMKIHVsaW50Ci1pYnVmX3JlY19nZXRfcGFnZV9ubygKLS8q PT09PT09PT09PT09PT09PT0qLworaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm9fZnVuYygKKy8qPT09PT09 PT09PT09PT09PT09PT09PSovCisjaWZkZWYgVU5JVl9ERUJVRworCW10cl90KgkJbXRyLAkvKiE8 IGluOiBtaW5pLXRyYW5zYWN0aW9uIG93bmluZyByZWMgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVH ICovCiAJY29uc3QgcmVjX3QqCXJlYykJLyohPCBpbjogaWJ1ZiByZWNvcmQgKi8KIHsKIAljb25z dCBieXRlKglmaWVsZDsKIAl1bGludAkJbGVuOwogCi0JdXRfYWQoaWJ1Zl9pbnNpZGUoKSk7CisJ dXRfYWQobXRyX21lbW9fY29udGFpbnNfcGFnZShtdHIsIHJlYywgTVRSX01FTU9fUEFHRV9YX0ZJ WCkKKwkgICAgICB8fCBtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgcmVjLCBNVFJfTUVNT19Q QUdFX1NfRklYKSk7CisJdXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7CiAJdXRfYWQocmVjX2dldF9u X2ZpZWxkc19vbGQocmVjKSA+IDIpOwogCiAJZmllbGQgPSByZWNfZ2V0X250aF9maWVsZF9vbGQo cmVjLCAxLCAmbGVuKTsKQEAgLTEyODIsMjAgKzEyNzksMzEgQEAgaWJ1Zl9yZWNfZ2V0X3BhZ2Vf bm8oCiAJcmV0dXJuKG1hY2hfcmVhZF9mcm9tXzQoZmllbGQpKTsKIH0KIAorI2lmZGVmIFVOSVZf REVCVUcKKyMgZGVmaW5lIGlidWZfcmVjX2dldF9zcGFjZShtdHIscmVjKSBpYnVmX3JlY19nZXRf c3BhY2VfZnVuYyhtdHIscmVjKQorI2Vsc2UgLyogVU5JVl9ERUJVRyAqLworIyBkZWZpbmUgaWJ1 Zl9yZWNfZ2V0X3NwYWNlKG10cixyZWMpIGlidWZfcmVjX2dldF9zcGFjZV9mdW5jKHJlYykKKyNl bmRpZiAvKiBVTklWX0RFQlVHICovCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFJldHVybnMgdGhlIHNw YWNlIGlkIGZpZWxkIG9mIGFuIGlidWYgcmVjb3JkLiBGb3IgPCA0LjEueCBmb3JtYXQgcmVjb3Jk cwogcmV0dXJucyAwLgogQHJldHVybglzcGFjZSBpZCAqLwogc3RhdGljCiB1bGludAotaWJ1Zl9y ZWNfZ2V0X3NwYWNlKAotLyo9PT09PT09PT09PT09PT0qLworaWJ1Zl9yZWNfZ2V0X3NwYWNlX2Z1 bmMoCisvKj09PT09PT09PT09PT09PT09PT09Ki8KKyNpZmRlZiBVTklWX0RFQlVHCisJbXRyX3Qq CQltdHIsCS8qITwgaW46IG1pbmktdHJhbnNhY3Rpb24gb3duaW5nIHJlYyAqLworI2VuZGlmIC8q IFVOSVZfREVCVUcgKi8KIAljb25zdCByZWNfdCoJcmVjKQkvKiE8IGluOiBpYnVmIHJlY29yZCAq LwogewogCWNvbnN0IGJ5dGUqCWZpZWxkOwogCXVsaW50CQlsZW47CiAKLQl1dF9hZChpYnVmX2lu c2lkZSgpKTsKKwl1dF9hZChtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgcmVjLCBNVFJfTUVN T19QQUdFX1hfRklYKQorCSAgICAgIHx8IG10cl9tZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCByZWMs IE1UUl9NRU1PX1BBR0VfU19GSVgpKTsKKwl1dF9hZChpYnVmX2luc2lkZShtdHIpKTsKIAl1dF9h ZChyZWNfZ2V0X25fZmllbGRzX29sZChyZWMpID4gMik7CiAKIAlmaWVsZCA9IHJlY19nZXRfbnRo X2ZpZWxkX29sZChyZWMsIDEsICZsZW4pOwpAQCAtMTMxNiwxMiArMTMyNCwyMiBAQCBpYnVmX3Jl Y19nZXRfc3BhY2UoCiAJcmV0dXJuKDApOwogfQogCisjaWZkZWYgVU5JVl9ERUJVRworIyBkZWZp bmUgaWJ1Zl9yZWNfZ2V0X2luZm8obXRyLHJlYyxvcCxjb21wLGluZm9fbGVuLGNvdW50ZXIpCVwK KwlpYnVmX3JlY19nZXRfaW5mb19mdW5jKG10cixyZWMsb3AsY29tcCxpbmZvX2xlbixjb3VudGVy KQorI2Vsc2UgLyogVU5JVl9ERUJVRyAqLworIyBkZWZpbmUgaWJ1Zl9yZWNfZ2V0X2luZm8obXRy LHJlYyxvcCxjb21wLGluZm9fbGVuLGNvdW50ZXIpCVwKKwlpYnVmX3JlY19nZXRfaW5mb19mdW5j KHJlYyxvcCxjb21wLGluZm9fbGVuLGNvdW50ZXIpCisjZW5kaWYKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0 IHZhcmlvdXMgaW5mb3JtYXRpb24gYWJvdXQgYW4gaWJ1ZiByZWNvcmQgaW4gPj0gNC4xLnggZm9y bWF0LiAqLwogc3RhdGljCiB2b2lkCi1pYnVmX3JlY19nZXRfaW5mbygKLS8qPT09PT09PT09PT09 PT0qLworaWJ1Zl9yZWNfZ2V0X2luZm9fZnVuYygKKy8qPT09PT09PT09PT09PT09PT09PSovCisj aWZkZWYgVU5JVl9ERUJVRworCW10cl90KgkJbXRyLAkvKiE8IGluOiBtaW5pLXRyYW5zYWN0aW9u IG93bmluZyByZWMgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAJY29uc3QgcmVjX3QqCXJl YywJCS8qITwgaW46IGlidWYgcmVjb3JkICovCiAJaWJ1Zl9vcF90KglvcCwJCS8qITwgb3V0OiBv cGVyYXRpb24gdHlwZSwgb3IgTlVMTCAqLwogCWlib29sKgkJY29tcCwJCS8qITwgb3V0OiBjb21w YWN0IGZsYWcsIG9yIE5VTEwgKi8KQEAgLTEzNDAsNyArMTM1OCw5IEBAIGlidWZfcmVjX2dldF9p bmZvKAogCXVsaW50CQlpbmZvX2xlbl9sb2NhbDsKIAl1bGludAkJY291bnRlcl9sb2NhbDsKIAot CXV0X2FkKGlidWZfaW5zaWRlKCkpOworCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zX3BhZ2UobXRy LCByZWMsIE1UUl9NRU1PX1BBR0VfWF9GSVgpCisJICAgICAgfHwgbXRyX21lbW9fY29udGFpbnNf cGFnZShtdHIsIHJlYywgTVRSX01FTU9fUEFHRV9TX0ZJWCkpOworCXV0X2FkKGlidWZfaW5zaWRl KG10cikpOwogCWZpZWxkcyA9IHJlY19nZXRfbl9maWVsZHNfb2xkKHJlYyk7CiAJdXRfYShmaWVs ZHMgPiA0KTsKIApAQCAtMTM4OSwxOCArMTQwOSwyOSBAQCBpYnVmX3JlY19nZXRfaW5mbygKIAl9 CiB9CiAKKyNpZmRlZiBVTklWX0RFQlVHCisjIGRlZmluZSBpYnVmX3JlY19nZXRfb3BfdHlwZSht dHIscmVjKSBpYnVmX3JlY19nZXRfb3BfdHlwZV9mdW5jKG10cixyZWMpCisjZWxzZSAvKiBVTklW X0RFQlVHICovCisjIGRlZmluZSBpYnVmX3JlY19nZXRfb3BfdHlwZShtdHIscmVjKSBpYnVmX3Jl Y19nZXRfb3BfdHlwZV9mdW5jKHJlYykKKyNlbmRpZgorCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFJldHVybnMg dGhlIG9wZXJhdGlvbiB0eXBlIGZpZWxkIG9mIGFuIGlidWYgcmVjb3JkLgogQHJldHVybglvcGVy YXRpb24gdHlwZSAqLwogc3RhdGljCiBpYnVmX29wX3QKLWlidWZfcmVjX2dldF9vcF90eXBlKAot Lyo9PT09PT09PT09PT09PT09PSovCitpYnVmX3JlY19nZXRfb3BfdHlwZV9mdW5jKAorLyo9PT09 PT09PT09PT09PT09PT09PT09Ki8KKyNpZmRlZiBVTklWX0RFQlVHCisJbXRyX3QqCQltdHIsCS8q ITwgaW46IG1pbmktdHJhbnNhY3Rpb24gb3duaW5nIHJlYyAqLworI2VuZGlmIC8qIFVOSVZfREVC VUcgKi8KIAljb25zdCByZWNfdCoJcmVjKQkvKiE8IGluOiBpYnVmIHJlY29yZCAqLwogewogCXVs aW50CQlsZW47CiAKLQl1dF9hZChpYnVmX2luc2lkZSgpKTsKKwl1dF9hZChtdHJfbWVtb19jb250 YWluc19wYWdlKG10ciwgcmVjLCBNVFJfTUVNT19QQUdFX1hfRklYKQorCSAgICAgIHx8IG10cl9t ZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCByZWMsIE1UUl9NRU1PX1BBR0VfU19GSVgpKTsKKwl1dF9h ZChpYnVmX2luc2lkZShtdHIpKTsKIAl1dF9hZChyZWNfZ2V0X25fZmllbGRzX29sZChyZWMpID4g Mik7CiAKIAkodm9pZCkgcmVjX2dldF9udGhfZmllbGRfb2xkKHJlYywgMSwgJmxlbik7CkBAIC0x NDEyLDcgKzE0NDMsNyBAQCBpYnVmX3JlY19nZXRfb3BfdHlwZSgKIAl9IGVsc2UgewogCQlpYnVm X29wX3QJb3A7CiAKLQkJaWJ1Zl9yZWNfZ2V0X2luZm8ocmVjLCAmb3AsIE5VTEwsIE5VTEwsIE5V TEwpOworCQlpYnVmX3JlY19nZXRfaW5mbyhtdHIsIHJlYywgJm9wLCBOVUxMLCBOVUxMLCBOVUxM KTsKIAogCQlyZXR1cm4ob3ApOwogCX0KQEAgLTE2MTEsNiArMTY0MiwxNCBAQCBpYnVmX2J1aWxk X2VudHJ5X3ByZV80XzFfeCgKIAlyZXR1cm4odHVwbGUpOwogfQogCisjaWZkZWYgVU5JVl9ERUJV RworIyBkZWZpbmUgaWJ1Zl9idWlsZF9lbnRyeV9mcm9tX2lidWZfcmVjKG10cixpYnVmX3JlYyxo ZWFwLHBpbmRleCkJXAorCWlidWZfYnVpbGRfZW50cnlfZnJvbV9pYnVmX3JlY19mdW5jKG10cixp YnVmX3JlYyxoZWFwLHBpbmRleCkKKyNlbHNlIC8qIFVOSVZfREVCVUcgKi8KKyMgZGVmaW5lIGli dWZfYnVpbGRfZW50cnlfZnJvbV9pYnVmX3JlYyhtdHIsaWJ1Zl9yZWMsaGVhcCxwaW5kZXgpCVwK KwlpYnVmX2J1aWxkX2VudHJ5X2Zyb21faWJ1Zl9yZWNfZnVuYyhpYnVmX3JlYyxoZWFwLHBpbmRl eCkKKyNlbmRpZgorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogQnVpbGRzIHRoZSBlbnRyeSB1c2VkIHRv CiAKQEAgLTE2MjksOCArMTY2OCwxMSBAQCBob2xkIGEgbGF0Y2ggdG8gdGhlIGlidWZfcmVjIHBh Z2UgYXMgbG9uCiBAcmV0dXJuIG93bjogZW50cnkgdG8gaW5zZXJ0IHRvIGEgbm9uLWNsdXN0ZXJl ZCBpbmRleCAqLwogc3RhdGljCiBkdHVwbGVfdCoKLWlidWZfYnVpbGRfZW50cnlfZnJvbV9pYnVm X3JlYygKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KK2lidWZfYnVpbGRfZW50cnlf ZnJvbV9pYnVmX3JlY19mdW5jKAorLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSov CisjaWZkZWYgVU5JVl9ERUJVRworCW10cl90KgkJbXRyLAkvKiE8IGluOiBtaW5pLXRyYW5zYWN0 aW9uIG93bmluZyByZWMgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAJY29uc3QgcmVjX3Qq CWlidWZfcmVjLAkvKiE8IGluOiByZWNvcmQgaW4gYW4gaW5zZXJ0IGJ1ZmZlciAqLwogCW1lbV9o ZWFwX3QqCWhlYXAsCQkvKiE8IGluOiBoZWFwIHdoZXJlIGJ1aWx0ICovCiAJZGljdF9pbmRleF90 KioJcGluZGV4KQkJLyohPCBvdXQsIG93bjogZHVtbXkgaW5kZXggdGhhdApAQCAtMTY0Nyw2ICsx Njg5LDEwIEBAIGlidWZfYnVpbGRfZW50cnlfZnJvbV9pYnVmX3JlYygKIAl1bGludAkJY29tcDsK IAlkaWN0X2luZGV4X3QqCWluZGV4OwogCisJdXRfYWQobXRyX21lbW9fY29udGFpbnNfcGFnZSht dHIsIGlidWZfcmVjLCBNVFJfTUVNT19QQUdFX1hfRklYKQorCSAgICAgIHx8IG10cl9tZW1vX2Nv bnRhaW5zX3BhZ2UobXRyLCBpYnVmX3JlYywgTVRSX01FTU9fUEFHRV9TX0ZJWCkpOworCXV0X2Fk KGlidWZfaW5zaWRlKG10cikpOworCiAJZGF0YSA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChpYnVm X3JlYywgMSwgJmxlbik7CiAKIAlpZiAobGVuID4gMSkgewpAQCAtMTY2Nyw3ICsxNzEzLDcgQEAg aWJ1Zl9idWlsZF9lbnRyeV9mcm9tX2lidWZfcmVjKAogCiAJdHlwZXMgPSByZWNfZ2V0X250aF9m aWVsZF9vbGQoaWJ1Zl9yZWMsIDMsICZsZW4pOwogCi0JaWJ1Zl9yZWNfZ2V0X2luZm8oaWJ1Zl9y ZWMsIE5VTEwsICZjb21wLCAmaW5mb19sZW4sIE5VTEwpOworCWlidWZfcmVjX2dldF9pbmZvKG10 ciwgaWJ1Zl9yZWMsIE5VTEwsICZjb21wLCAmaW5mb19sZW4sIE5VTEwpOwogCiAJaW5kZXggPSBp YnVmX2R1bW15X2luZGV4X2NyZWF0ZShuX2ZpZWxkcywgY29tcCk7CiAKQEAgLTE3NTQsNiArMTgw MCwxMiBAQCBpYnVmX3JlY19nZXRfc2l6ZSgKIAlyZXR1cm4oc2l6ZSk7CiB9CiAKKyNpZmRlZiBV TklWX0RFQlVHCisjIGRlZmluZSBpYnVmX3JlY19nZXRfdm9sdW1lKG10cixyZWMpIGlidWZfcmVj X2dldF92b2x1bWVfZnVuYyhtdHIscmVjKQorI2Vsc2UgLyogVU5JVl9ERUJVRyAqLworIyBkZWZp bmUgaWJ1Zl9yZWNfZ2V0X3ZvbHVtZShtdHIscmVjKSBpYnVmX3JlY19nZXRfdm9sdW1lX2Z1bmMo cmVjKQorI2VuZGlmCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFJldHVybnMgdGhlIHNwYWNlIHRha2Vu IGJ5IGEgc3RvcmVkIG5vbi1jbHVzdGVyZWQgaW5kZXggZW50cnkgaWYgY29udmVydGVkIHRvCiBh biBpbmRleCByZWNvcmQuCkBAIC0xNzYxLDggKzE4MTMsMTEgQEAgYW4gaW5kZXggcmVjb3JkLgog dGFrZW4gaW4gdGhlIHBhZ2UgZGlyZWN0b3J5ICovCiBzdGF0aWMKIHVsaW50Ci1pYnVmX3JlY19n ZXRfdm9sdW1lKAotLyo9PT09PT09PT09PT09PT09Ki8KK2lidWZfcmVjX2dldF92b2x1bWVfZnVu YygKKy8qPT09PT09PT09PT09PT09PT09PT09Ki8KKyNpZmRlZiBVTklWX0RFQlVHCisJbXRyX3Qq CQltdHIsCS8qITwgaW46IG1pbmktdHJhbnNhY3Rpb24gb3duaW5nIHJlYyAqLworI2VuZGlmIC8q IFVOSVZfREVCVUcgKi8KIAljb25zdCByZWNfdCoJaWJ1Zl9yZWMpLyohPCBpbjogaWJ1ZiByZWNv cmQgKi8KIHsKIAl1bGludAkJbGVuOwpAQCAtMTc3Myw3ICsxODI4LDkgQEAgaWJ1Zl9yZWNfZ2V0 X3ZvbHVtZSgKIAlpYm9vbAkJcHJlXzRfMTsKIAl1bGludAkJY29tcDsKIAotCXV0X2FkKGlidWZf aW5zaWRlKCkpOworCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCBpYnVmX3JlYywg TVRSX01FTU9fUEFHRV9YX0ZJWCkKKwkgICAgICB8fCBtdHJfbWVtb19jb250YWluc19wYWdlKG10 ciwgaWJ1Zl9yZWMsIE1UUl9NRU1PX1BBR0VfU19GSVgpKTsKKwl1dF9hZChpYnVmX2luc2lkZSht dHIpKTsKIAl1dF9hZChyZWNfZ2V0X25fZmllbGRzX29sZChpYnVmX3JlYykgPiAyKTsKIAogCWRh dGEgPSByZWNfZ2V0X250aF9maWVsZF9vbGQoaWJ1Zl9yZWMsIDEsICZsZW4pOwpAQCAtMTgwMSw3 ICsxODU4LDcgQEAgaWJ1Zl9yZWNfZ2V0X3ZvbHVtZSgKIAogCQl0eXBlcyA9IHJlY19nZXRfbnRo X2ZpZWxkX29sZChpYnVmX3JlYywgMywgJmxlbik7CiAKLQkJaWJ1Zl9yZWNfZ2V0X2luZm8oaWJ1 Zl9yZWMsICZvcCwgJmNvbXAsICZpbmZvX2xlbiwgTlVMTCk7CisJCWlidWZfcmVjX2dldF9pbmZv KG10ciwgaWJ1Zl9yZWMsICZvcCwgJmNvbXAsICZpbmZvX2xlbiwgTlVMTCk7CiAKIAkJaWYgKG9w ID09IElCVUZfT1BfREVMRVRFX01BUksgfHwgb3AgPT0gSUJVRl9PUF9ERUxFVEUpIHsKIAkJCS8q IERlbGV0ZS1tYXJraW5nIGEgcmVjb3JkIGRvZXNuJ3QgdGFrZSBhbnkKQEAgLTE4MTgsNyArMTg3 NSw3IEBAIGlidWZfcmVjX2dldF92b2x1bWUoCiAJCQltZW1faGVhcF90KgloZWFwID0gbWVtX2hl YXBfY3JlYXRlKDUwMCk7CiAKIAkJCWVudHJ5ID0gaWJ1Zl9idWlsZF9lbnRyeV9mcm9tX2lidWZf cmVjKAotCQkJCWlidWZfcmVjLCBoZWFwLCAmZHVtbXlfaW5kZXgpOworCQkJCW10ciwgaWJ1Zl9y ZWMsIGhlYXAsICZkdW1teV9pbmRleCk7CiAKIAkJCXZvbHVtZSA9IHJlY19nZXRfY29udmVydGVk X3NpemUoZHVtbXlfaW5kZXgsIGVudHJ5LCAwKTsKIApAQCAtMjE3NiwyMSArMjIzMywxNSBAQCBp YnVmX2FkZF9mcmVlX3BhZ2Uodm9pZCkKIAkJbXRyX2NvbW1pdCgmbXRyKTsKIAogCQlyZXR1cm4o RkFMU0UpOwotCX0KLQotCXsKLQkJYnVmX2Jsb2NrX3QqCWJsb2NrOwotCi0JCWJsb2NrID0gYnVm X3BhZ2VfZ2V0KAorCX0gZWxzZSB7CisJCWJ1Zl9ibG9ja190KglibG9jayA9IGJ1Zl9wYWdlX2dl dCgKIAkJCUlCVUZfU1BBQ0VfSUQsIDAsIHBhZ2Vfbm8sIFJXX1hfTEFUQ0gsICZtdHIpOwotCiAJ CWJ1Zl9ibG9ja19kYmdfYWRkX2xldmVsKGJsb2NrLCBTWU5DX1RSRUVfTk9ERV9ORVcpOwogCi0K IAkJcGFnZSA9IGJ1Zl9ibG9ja19nZXRfZnJhbWUoYmxvY2spOwogCX0KIAotCWlidWZfZW50ZXIo KTsKKwlpYnVmX2VudGVyKCZtdHIpOwogCiAJbXV0ZXhfZW50ZXIoJmlidWZfbXV0ZXgpOwogCkBA IC0yMjE4LDkgKzIyNjksNyBAQCBpYnVmX2FkZF9mcmVlX3BhZ2Uodm9pZCkKIAlpYnVmX2JpdG1h cF9wYWdlX3NldF9iaXRzKAogCQliaXRtYXBfcGFnZSwgcGFnZV9ubywgemlwX3NpemUsIElCVUZf QklUTUFQX0lCVUYsIFRSVUUsICZtdHIpOwogCi0JbXRyX2NvbW1pdCgmbXRyKTsKLQotCWlidWZf ZXhpdCgpOworCWlidWZfbXRyX2NvbW1pdCgmbXRyKTsKIAogCXJldHVybihUUlVFKTsKIH0KQEAg LTIyNTIsNyArMjMwMSw3IEBAIGlidWZfcmVtb3ZlX2ZyZWVfcGFnZSh2b2lkKQogCWhlYWRlcl9w YWdlID0gaWJ1Zl9oZWFkZXJfcGFnZV9nZXQoJm10cik7CiAKIAkvKiBQcmV2ZW50IHBlc3NpbWlz dGljIGluc2VydHMgdG8gaW5zZXJ0IGJ1ZmZlciB0cmVlcyBmb3IgYSB3aGlsZSAqLwotCWlidWZf ZW50ZXIoKTsKKwlpYnVmX2VudGVyKCZtdHIpOwogCW11dGV4X2VudGVyKCZpYnVmX3Blc3NpbWlz dGljX2luc2VydF9tdXRleCk7CiAJbXV0ZXhfZW50ZXIoJmlidWZfbXV0ZXgpOwogCkBAIC0yMjYx LDE0ICsyMzEwLDEyIEBAIGlidWZfcmVtb3ZlX2ZyZWVfcGFnZSh2b2lkKQogCQltdXRleF9leGl0 KCZpYnVmX211dGV4KTsKIAkJbXV0ZXhfZXhpdCgmaWJ1Zl9wZXNzaW1pc3RpY19pbnNlcnRfbXV0 ZXgpOwogCi0JCWlidWZfZXhpdCgpOwotCi0JCW10cl9jb21taXQoJm10cik7CisJCWlidWZfbXRy X2NvbW1pdCgmbXRyKTsKIAogCQlyZXR1cm47CiAJfQogCi0JbXRyX3N0YXJ0KCZtdHIyKTsKKwlp YnVmX210cl9zdGFydCgmbXRyMik7CiAKIAlyb290ID0gaWJ1Zl90cmVlX3Jvb3RfZ2V0KCZtdHIy KTsKIApAQCAtMjI4MSw5ICsyMzI4LDggQEAgaWJ1Zl9yZW1vdmVfZnJlZV9wYWdlKHZvaWQpCiAJ YmVjYXVzZSBpbiBmc2VnX2ZyZWVfcGFnZSB3ZSBhY2Nlc3MgbGV2ZWwgMSBwYWdlcywgYW5kIHRo ZSByb290CiAJaXMgYSBsZXZlbCAyIHBhZ2UuICovCiAKLQltdHJfY29tbWl0KCZtdHIyKTsKLQot CWlidWZfZXhpdCgpOworCWlidWZfbXRyX2NvbW1pdCgmbXRyMik7CisJaWJ1Zl9leGl0KCZtdHIp OwogCiAJLyogU2luY2UgcGVzc2ltaXN0aWMgaW5zZXJ0cyB3ZXJlIHByZXZlbnRlZCwgd2Uga25v dyB0aGF0IHRoZQogCXBhZ2UgaXMgc3RpbGwgaW4gdGhlIGZyZWUgbGlzdC4gTk9URSB0aGF0IGFs c28gZGVsZXRlcyBtYXkgdGFrZQpAQCAtMjI5OCw3ICsyMzQ0LDcgQEAgaWJ1Zl9yZW1vdmVfZnJl ZV9wYWdlKHZvaWQpCiAJYnVmX3BhZ2VfcmVzZXRfZmlsZV9wYWdlX3dhc19mcmVlZChJQlVGX1NQ QUNFX0lELCBwYWdlX25vKTsKICNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwg VU5JVl9ERUJVRyAqLwogCi0JaWJ1Zl9lbnRlcigpOworCWlidWZfZW50ZXIoJm10cik7CiAKIAlt dXRleF9lbnRlcigmaWJ1Zl9tdXRleCk7CiAKQEAgLTIzNDMsOSArMjM4OSw3IEBAIGlidWZfcmVt b3ZlX2ZyZWVfcGFnZSh2b2lkKQogI2lmIGRlZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VT IHx8IGRlZmluZWQgVU5JVl9ERUJVRwogCWJ1Zl9wYWdlX3NldF9maWxlX3BhZ2Vfd2FzX2ZyZWVk KElCVUZfU1BBQ0VfSUQsIHBhZ2Vfbm8pOwogI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NF U1NFUyB8fCBVTklWX0RFQlVHICovCi0JbXRyX2NvbW1pdCgmbXRyKTsKLQotCWlidWZfZXhpdCgp OworCWlidWZfbXRyX2NvbW1pdCgmbXRyKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAt MjM2Nyw4ICsyNDExLDYgQEAgaWJ1Zl9mcmVlX2V4Y2Vzc19wYWdlcyh2b2lkKQogCXV0X2FkKHJ3 X2xvY2tfZ2V0X3hfbG9ja19jb3VudCgKIAkJZmlsX3NwYWNlX2dldF9sYXRjaChJQlVGX1NQQUNF X0lELCBOVUxMKSkgPT0gMSk7CiAKLQl1dF9hZCghaWJ1Zl9pbnNpZGUoKSk7Ci0KIAkvKiBOT1RF OiBXZSByZXF1aXJlIHRoYXQgdGhlIHRocmVhZCBkaWQgbm90IG93biB0aGUgbGF0Y2ggYmVmb3Jl LAogCWJlY2F1c2UgdGhlbiB3ZSBrbm93IHRoYXQgd2UgY2FuIG9iZXkgdGhlIGNvcnJlY3QgbGF0 Y2hpbmcgb3JkZXIKIAlmb3IgaWJ1ZiBsYXRjaGVzICovCkBAIC0yMzk5LDIwICsyNDQxLDMwIEBA IGlidWZfZnJlZV9leGNlc3NfcGFnZXModm9pZCkKIAl9CiB9CiAKKyNpZmRlZiBVTklWX0RFQlVH CisjIGRlZmluZSBpYnVmX2dldF9tZXJnZV9wYWdlX25vcyhjb250cmFjdCxyZWMsbXRyLGlkcyx2 ZXJzLHBhZ2VzLG5fc3RvcmVkKSBcCisJaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3NfZnVuYyhjb250 cmFjdCxyZWMsbXRyLGlkcyx2ZXJzLHBhZ2VzLG5fc3RvcmVkKQorI2Vsc2UgLyogVU5JVl9ERUJV RyAqLworIyBkZWZpbmUgaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3MoY29udHJhY3QscmVjLG10cixp ZHMsdmVycyxwYWdlcyxuX3N0b3JlZCkgXAorCWlidWZfZ2V0X21lcmdlX3BhZ2Vfbm9zX2Z1bmMo Y29udHJhY3QscmVjLGlkcyx2ZXJzLHBhZ2VzLG5fc3RvcmVkKQorI2VuZGlmIC8qIFVOSVZfREVC VUcgKi8KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKIFJlYWRzIHBhZ2UgbnVtYmVycyBmcm9tIGEgbGVh ZiBpbiBhbiBpYnVmIHRyZWUuCiBAcmV0dXJuIGEgbG93ZXIgbGltaXQgZm9yIHRoZSBjb21iaW5l ZCB2b2x1bWUgb2YgcmVjb3JkcyB3aGljaCB3aWxsIGJlCiBtZXJnZWQgKi8KIHN0YXRpYwogdWxp bnQKLWlidWZfZ2V0X21lcmdlX3BhZ2Vfbm9zKAotLyo9PT09PT09PT09PT09PT09PT09PSovCitp YnVmX2dldF9tZXJnZV9wYWdlX25vc19mdW5jKAorLyo9PT09PT09PT09PT09PT09PT09PT09PT09 Ki8KIAlpYm9vbAkJY29udHJhY3QsLyohPCBpbjogVFJVRSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGNh bGxlZCB0bwogCQkJCWNvbnRyYWN0IHRoZSB0cmVlLCBGQUxTRSBpZiB0aGlzIGlzIGNhbGxlZAog CQkJCXdoZW4gYSBzaW5nbGUgcGFnZSBiZWNvbWVzIGZ1bGwgYW5kIHdlIGxvb2sKIAkJCQlpZiBp dCBwYXlzIHRvIHJlYWQgYWxzbyBuZWFyYnkgcGFnZXMgKi8KLQlyZWNfdCoJCXJlYywJLyohPCBp bjogcmVjb3JkIGZyb20gd2hpY2ggd2UgcmVhZCB1cCBhbmQgZG93bgotCQkJCWluIHRoZSBjaGFp biBvZiByZWNvcmRzICovCisJY29uc3QgcmVjX3QqCXJlYywJLyohPCBpbjogaW5zZXJ0IGJ1ZmZl ciByZWNvcmQgKi8KKyNpZmRlZiBVTklWX0RFQlVHCisJbXRyX3QqCQltdHIsCS8qITwgaW46IG1p bmktdHJhbnNhY3Rpb24gaG9sZGluZyByZWMgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAJ dWxpbnQqCQlzcGFjZV9pZHMsLyohPCBpbi9vdXQ6IHNwYWNlIGlkJ3Mgb2YgdGhlIHBhZ2VzICov CiAJaWJfaW50NjRfdCoJc3BhY2VfdmVyc2lvbnMsLyohPCBpbi9vdXQ6IHRhYmxlc3BhY2UgdmVy c2lvbgogCQkJCXRpbWVzdGFtcHM7IHVzZWQgdG8gcHJldmVudCByZWFkaW5nIGluIG9sZApAQCAt MjQzNSwxOCArMjQ4NywyMiBAQCBpYnVmX2dldF9tZXJnZV9wYWdlX25vcygKIAl1bGludAlsaW1p dDsKIAl1bGludAluX3BhZ2VzOwogCisJdXRfYWQobXRyX21lbW9fY29udGFpbnNfcGFnZShtdHIs IHJlYywgTVRSX01FTU9fUEFHRV9YX0ZJWCkKKwkgICAgICB8fCBtdHJfbWVtb19jb250YWluc19w YWdlKG10ciwgcmVjLCBNVFJfTUVNT19QQUdFX1NfRklYKSk7CisJdXRfYWQoaWJ1Zl9pbnNpZGUo bXRyKSk7CisKIAkqbl9zdG9yZWQgPSAwOwogCiAJbGltaXQgPSB1dF9taW4oSUJVRl9NQVhfTl9Q QUdFU19NRVJHRUQsIGJ1Zl9wb29sX2dldF9jdXJyX3NpemUoKSAvIDQpOwogCiAJaWYgKHBhZ2Vf cmVjX2lzX3N1cHJlbXVtKHJlYykpIHsKIAotCQlyZWMgPSBwYWdlX3JlY19nZXRfcHJldihyZWMp OworCQlyZWMgPSBwYWdlX3JlY19nZXRfcHJldl9jb25zdChyZWMpOwogCX0KIAogCWlmIChwYWdl X3JlY19pc19pbmZpbXVtKHJlYykpIHsKIAotCQlyZWMgPSBwYWdlX3JlY19nZXRfbmV4dChyZWMp OworCQlyZWMgPSBwYWdlX3JlY19nZXRfbmV4dF9jb25zdChyZWMpOwogCX0KIAogCWlmIChwYWdl X3JlY19pc19zdXByZW11bShyZWMpKSB7CkBAIC0yNDU0LDggKzI1MTAsOCBAQCBpYnVmX2dldF9t ZXJnZV9wYWdlX25vcygKIAkJcmV0dXJuKDApOwogCX0KIAotCWZpcnN0X3BhZ2Vfbm8gPSBpYnVm X3JlY19nZXRfcGFnZV9ubyhyZWMpOwotCWZpcnN0X3NwYWNlX2lkID0gaWJ1Zl9yZWNfZ2V0X3Nw YWNlKHJlYyk7CisJZmlyc3RfcGFnZV9ubyA9IGlidWZfcmVjX2dldF9wYWdlX25vKG10ciwgcmVj KTsKKwlmaXJzdF9zcGFjZV9pZCA9IGlidWZfcmVjX2dldF9zcGFjZShtdHIsIHJlYyk7CiAJbl9w YWdlcyA9IDA7CiAJcHJldl9wYWdlX25vID0gMDsKIAlwcmV2X3NwYWNlX2lkID0gMDsKQEAgLTI0 NjYsOCArMjUyMiw4IEBAIGlidWZfZ2V0X21lcmdlX3BhZ2Vfbm9zKAogCiAJd2hpbGUgKCFwYWdl X3JlY19pc19pbmZpbXVtKHJlYykgJiYgVU5JVl9MSUtFTFkobl9wYWdlcyA8IGxpbWl0KSkgewog Ci0JCXJlY19wYWdlX25vID0gaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8ocmVjKTsKLQkJcmVjX3NwYWNl X2lkID0gaWJ1Zl9yZWNfZ2V0X3NwYWNlKHJlYyk7CisJCXJlY19wYWdlX25vID0gaWJ1Zl9yZWNf Z2V0X3BhZ2Vfbm8obXRyLCByZWMpOworCQlyZWNfc3BhY2VfaWQgPSBpYnVmX3JlY19nZXRfc3Bh Y2UobXRyLCByZWMpOwogCiAJCWlmIChyZWNfc3BhY2VfaWQgIT0gZmlyc3Rfc3BhY2VfaWQKIAkJ ICAgIHx8IChyZWNfcGFnZV9ubyAvIElCVUZfTUVSR0VfQVJFQSkKQEAgLTI0ODQsMTAgKzI1NDAs MTAgQEAgaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3MoCiAJCXByZXZfcGFnZV9ubyA9IHJlY19wYWdl X25vOwogCQlwcmV2X3NwYWNlX2lkID0gcmVjX3NwYWNlX2lkOwogCi0JCXJlYyA9IHBhZ2VfcmVj X2dldF9wcmV2KHJlYyk7CisJCXJlYyA9IHBhZ2VfcmVjX2dldF9wcmV2X2NvbnN0KHJlYyk7CiAJ fQogCi0JcmVjID0gcGFnZV9yZWNfZ2V0X25leHQocmVjKTsKKwlyZWMgPSBwYWdlX3JlY19nZXRf bmV4dF9jb25zdChyZWMpOwogCiAJLyogQXQgdGhlIGxvb3Agc3RhcnQgdGhlcmUgaXMgbm8gcHJl diBwYWdlOyB3ZSBtYXJrIHRoaXMgd2l0aCBhIHBhaXIKIAlvZiBzcGFjZSBpZCwgcGFnZSBubyAo MCwgMCkgZm9yIHdoaWNoIHRoZXJlIGNhbiBuZXZlciBiZSBlbnRyaWVzIGluCkBAIC0yNTA1LDgg KzI1NjEsOCBAQCBpYnVmX2dldF9tZXJnZV9wYWdlX25vcygKIAkJCXJlY19wYWdlX25vID0gMTsK IAkJCXJlY19zcGFjZV9pZCA9IDA7CiAJCX0gZWxzZSB7Ci0JCQlyZWNfcGFnZV9ubyA9IGlidWZf cmVjX2dldF9wYWdlX25vKHJlYyk7Ci0JCQlyZWNfc3BhY2VfaWQgPSBpYnVmX3JlY19nZXRfc3Bh Y2UocmVjKTsKKwkJCXJlY19wYWdlX25vID0gaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8obXRyLCByZWMp OworCQkJcmVjX3NwYWNlX2lkID0gaWJ1Zl9yZWNfZ2V0X3NwYWNlKG10ciwgcmVjKTsKIAkJCXV0 X2FkKHJlY19wYWdlX25vID4gSUJVRl9UUkVFX1JPT1RfUEFHRV9OTyk7CiAJCX0KIApAQCAtMjUx Nyw5ICsyNTczLDkgQEAgaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3MoCiAJCSAgICAgfHwgcmVjX3Bh Z2Vfbm8gIT0gcHJldl9wYWdlX25vKQogCQkgICAgJiYgKHByZXZfc3BhY2VfaWQgIT0gMCB8fCBw cmV2X3BhZ2Vfbm8gIT0gMCkpIHsKIAotCQkJaWYgKChwcmV2X3BhZ2Vfbm8gPT0gZmlyc3RfcGFn ZV9ubwotCQkJICAgICAmJiBwcmV2X3NwYWNlX2lkID09IGZpcnN0X3NwYWNlX2lkKQotCQkJICAg IHx8IGNvbnRyYWN0CisJCQlpZiAoY29udHJhY3QKKwkJCSAgICB8fCAocHJldl9wYWdlX25vID09 IGZpcnN0X3BhZ2Vfbm8KKwkJCQkmJiBwcmV2X3NwYWNlX2lkID09IGZpcnN0X3NwYWNlX2lkKQog CQkJICAgIHx8ICh2b2x1bWVfZm9yX3BhZ2UKIAkJCQk+ICgoSUJVRl9NRVJHRV9USFJFU0hPTEQg LSAxKQogCQkJCSAgICogNCAqIFVOSVZfUEFHRV9TSVpFCkBAIC0yNTUyLDE0ICsyNjA4LDE0IEBA IGlidWZfZ2V0X21lcmdlX3BhZ2Vfbm9zKAogCQkJYnJlYWs7CiAJCX0KIAotCQlyZWNfdm9sdW1l ID0gaWJ1Zl9yZWNfZ2V0X3ZvbHVtZShyZWMpOworCQlyZWNfdm9sdW1lID0gaWJ1Zl9yZWNfZ2V0 X3ZvbHVtZShtdHIsIHJlYyk7CiAKIAkJdm9sdW1lX2Zvcl9wYWdlICs9IHJlY192b2x1bWU7CiAK IAkJcHJldl9wYWdlX25vID0gcmVjX3BhZ2Vfbm87CiAJCXByZXZfc3BhY2VfaWQgPSByZWNfc3Bh Y2VfaWQ7CiAKLQkJcmVjID0gcGFnZV9yZWNfZ2V0X25leHQocmVjKTsKKwkJcmVjID0gcGFnZV9y ZWNfZ2V0X25leHRfY29uc3QocmVjKTsKIAl9CiAKICNpZmRlZiBVTklWX0lCVUZfREVCVUcKQEAg LTI1OTQsNyArMjY1MCw2IEBAIGlidWZfY29udHJhY3RfZXh0KAogCW10cl90CQltdHI7CiAKIAkq bl9wYWdlcyA9IDA7Ci0JdXRfYWQoIWlidWZfaW5zaWRlKCkpOwogCiAJLyogV2UgcGVyZm9ybSBh IGRpcnR5IHJlYWQgb2YgaWJ1Zi0+ZW1wdHksIHdpdGhvdXQgbGF0Y2hpbmcKIAl0aGUgaW5zZXJ0 IGJ1ZmZlciByb290IHBhZ2UuIFdlIHRydXN0IHRoaXMgZGlydHkgcmVhZCBleGNlcHQKQEAgLTI2 MDYsOSArMjY2MSw3IEBAIGlidWZfY29udHJhY3RfZXh0KAogCQlyZXR1cm4oMCk7CiAJfQogCi0J bXRyX3N0YXJ0KCZtdHIpOwotCi0JaWJ1Zl9lbnRlcigpOworCWlidWZfbXRyX3N0YXJ0KCZtdHIp OwogCiAJLyogT3BlbiBhIGN1cnNvciB0byBhIHJhbmRvbWx5IGNob3NlbiBsZWFmIG9mIHRoZSB0 cmVlLCBhdCBhIHJhbmRvbQogCXBvc2l0aW9uIHdpdGhpbiB0aGUgbGVhZiAqLwpAQCAtMjYyNywy NCArMjY4MCwyMSBAQCBpYnVmX2NvbnRyYWN0X2V4dCgKIAkJdXRfYWQocGFnZV9nZXRfcGFnZV9u byhidHJfcGN1cl9nZXRfcGFnZSgmcGN1cikpCiAJCSAgICAgID09IEZTUF9JQlVGX1RSRUVfUk9P VF9QQUdFX05PKTsKIAotCQlpYnVmX2V4aXQoKTsKLQotCQltdHJfY29tbWl0KCZtdHIpOworCQlp YnVmX210cl9jb21taXQoJm10cik7CiAJCWJ0cl9wY3VyX2Nsb3NlKCZwY3VyKTsKIAogCQlyZXR1 cm4oMCk7CiAJfQogCi0Jc3VtX3NpemVzID0gaWJ1Zl9nZXRfbWVyZ2VfcGFnZV9ub3MoVFJVRSwg YnRyX3BjdXJfZ2V0X3JlYygmcGN1ciksCisJc3VtX3NpemVzID0gaWJ1Zl9nZXRfbWVyZ2VfcGFn ZV9ub3MoVFJVRSwKKwkJCQkJICAgIGJ0cl9wY3VyX2dldF9yZWMoJnBjdXIpLCAmbXRyLAogCQkJ CQkgICAgc3BhY2VfaWRzLCBzcGFjZV92ZXJzaW9ucywKIAkJCQkJICAgIHBhZ2Vfbm9zLCBuX3Bh Z2VzKTsKICNpZiAwIC8qIGRlZmluZWQgVU5JVl9JQlVGX0RFQlVHICovCiAJZnByaW50ZihzdGRl cnIsICJJYnVmIGNvbnRyYWN0IHN5bmMgJWx1IHBhZ2VzICVsdSB2b2x1bWUgJWx1XG4iLAogCQlz eW5jLCAqbl9wYWdlcywgc3VtX3NpemVzKTsKICNlbmRpZgotCWlidWZfZXhpdCgpOwotCi0JbXRy X2NvbW1pdCgmbXRyKTsKKwlpYnVmX210cl9jb21taXQoJm10cik7CiAJYnRyX3BjdXJfY2xvc2Uo JnBjdXIpOwogCiAJYnVmX3JlYWRfaWJ1Zl9tZXJnZV9wYWdlcyhzeW5jLCBzcGFjZV9pZHMsIHNw YWNlX3ZlcnNpb25zLCBwYWdlX25vcywKQEAgLTI2OTUsMTMgKzI3NDUsMTEgQEAgaWJ1Zl9jb250 cmFjdF9pbl9iYWNrZ3JvdW5kKAogCQkvKiBDYWxsZXIgaGFzIHJlcXVlc3RlZCBhIGZ1bGwgYmF0 Y2ggKi8KIAkJbl9wYWdlcyA9IFBDVF9JTygxMDApOwogCX0gZWxzZSB7Ci0KLQkJaWJ1Zl9lbnRl cigpOwotCQltdXRleF9lbnRlcigmaWJ1Zl9tdXRleCk7Ci0KIAkJLyogQnkgZGVmYXVsdCB3ZSBk byBhIGJhdGNoIG9mIDUlIG9mIHRoZSBpb19jYXBhY2l0eSAqLwogCQluX3BhZ2VzID0gUENUX0lP KDUpOwogCisJCW11dGV4X2VudGVyKCZpYnVmX211dGV4KTsKKwogCQkvKiBJZiB0aGUgaWJ1Zi0+ c2l6ZSBpcyBtb3JlIHRoYW4gaGFsZiB0aGUgbWF4X3NpemUKIAkJdGhlbiB3ZSBtYWtlIG1vcmUg YWdyZWVzaXZlIGNvbnRyYWN0aW9uLgogCQkrMSBpcyB0byBhdm9pZCBkaXZpc2lvbiBieSB6ZXJv LiAqLwpAQCAtMjcxMiw3ICsyNzYwLDYgQEAgaWJ1Zl9jb250cmFjdF9pbl9iYWNrZ3JvdW5kKAog CQl9CiAKIAkJbXV0ZXhfZXhpdCgmaWJ1Zl9tdXRleCk7Ci0JCWlidWZfZXhpdCgpOwogCX0KIAog CXdoaWxlIChzdW1fcGFnZXMgPCBuX3BhZ2VzKSB7CkBAIC0yODA3LDYgKzI4NTQsMTMgQEAgaWJ1 Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkX2hhc2goCiAJcmV0dXJuKFRSVUUpOwogfQogCisjaWZkZWYg VU5JVl9ERUJVRworIyBkZWZpbmUgaWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkX2NvdW50KG10cixy ZWMsaGFzaCxzaXplLG5fcmVjcykJXAorCWlidWZfZ2V0X3ZvbHVtZV9idWZmZXJlZF9jb3VudF9m dW5jKG10cixyZWMsaGFzaCxzaXplLG5fcmVjcykKKyNlbHNlIC8qIFVOSVZfREVCVUcgKi8KKyMg ZGVmaW5lIGlidWZfZ2V0X3ZvbHVtZV9idWZmZXJlZF9jb3VudChtdHIscmVjLGhhc2gsc2l6ZSxu X3JlY3MpCVwKKwlpYnVmX2dldF92b2x1bWVfYnVmZmVyZWRfY291bnRfZnVuYyhyZWMsaGFzaCxz aXplLG5fcmVjcykKKyNlbmRpZgogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFVwZGF0ZSB0aGUgZXN0aW1h dGUgb2YgdGhlIG51bWJlciBvZiByZWNvcmRzIG9uIGEgcGFnZSwgYW5kCiBnZXQgdGhlIHNwYWNl IHRha2VuIGJ5IG1lcmdpbmcgdGhlIGJ1ZmZlcmVkIHJlY29yZCB0byB0aGUgaW5kZXggcGFnZS4K QEAgLTI4MTQsOCArMjg2OCwxMSBAQCBnZXQgdGhlIHNwYWNlIHRha2VuIGJ5IG1lcmdpbmcgdGhl IGJ1ZmZlCiB0YWtlbiBpbiB0aGUgcGFnZSBkaXJlY3RvcnkgKi8KIHN0YXRpYwogdWxpbnQKLWli dWZfZ2V0X3ZvbHVtZV9idWZmZXJlZF9jb3VudCgKLS8qPT09PT09PT09PT09PT09PT09PT09PT09 PT09Ki8KK2lidWZfZ2V0X3ZvbHVtZV9idWZmZXJlZF9jb3VudF9mdW5jKAorLyo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSovCisjaWZkZWYgVU5JVl9ERUJVRworCW10cl90KgkJbXRy LAkvKiE8IGluOiBtaW5pLXRyYW5zYWN0aW9uIG93bmluZyByZWMgKi8KKyNlbmRpZiAvKiBVTklW X0RFQlVHICovCiAJY29uc3QgcmVjX3QqCXJlYywJLyohPCBpbjogaW5zZXJ0IGJ1ZmZlciByZWNv cmQgKi8KIAl1bGludCoJCWhhc2gsCS8qITwgaW4vb3V0OiBoYXNoIGFycmF5ICovCiAJdWxpbnQJ CXNpemUsCS8qITwgaW46IG51bWJlciBvZiBlbGVtZW50cyBpbiBoYXNoIGFycmF5ICovCkBAIC0y ODI1LDkgKzI4ODIsMTMgQEAgaWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkX2NvdW50KAogCXVsaW50 CQlsZW47CiAJaWJ1Zl9vcF90CWlidWZfb3A7CiAJY29uc3QgYnl0ZSoJdHlwZXM7Ci0JdWxpbnQJ CW5fZmllbGRzCT0gcmVjX2dldF9uX2ZpZWxkc19vbGQocmVjKTsKKwl1bGludAkJbl9maWVsZHM7 CiAKLQl1dF9hZChpYnVmX2luc2lkZSgpKTsKKwl1dF9hZChtdHJfbWVtb19jb250YWluc19wYWdl KG10ciwgcmVjLCBNVFJfTUVNT19QQUdFX1hfRklYKQorCSAgICAgIHx8IG10cl9tZW1vX2NvbnRh aW5zX3BhZ2UobXRyLCByZWMsIE1UUl9NRU1PX1BBR0VfU19GSVgpKTsKKwl1dF9hZChpYnVmX2lu c2lkZShtdHIpKTsKKworCW5fZmllbGRzID0gcmVjX2dldF9uX2ZpZWxkc19vbGQocmVjKTsKIAl1 dF9hZChuX2ZpZWxkcyA+IDQpOwogCW5fZmllbGRzIC09IDQ7CiAKQEAgLTI5MTIsNyArMjk3Myw3 IEBAIGdldF92b2x1bWVfY29tcDoKIAkJbWVtX2hlYXBfdCoJaGVhcCA9IG1lbV9oZWFwX2NyZWF0 ZSg1MDApOwogCiAJCWVudHJ5ID0gaWJ1Zl9idWlsZF9lbnRyeV9mcm9tX2lidWZfcmVjKAotCQkJ cmVjLCBoZWFwLCAmZHVtbXlfaW5kZXgpOworCQkJbXRyLCByZWMsIGhlYXAsICZkdW1teV9pbmRl eCk7CiAKIAkJdm9sdW1lID0gcmVjX2dldF9jb252ZXJ0ZWRfc2l6ZShkdW1teV9pbmRleCwgZW50 cnksIDApOwogCkBAIC0yOTMzLDcgKzI5OTQsNyBAQCBzdGF0aWMKIHVsaW50CiBpYnVmX2dldF92 b2x1bWVfYnVmZmVyZWQoCiAvKj09PT09PT09PT09PT09PT09PT09PSovCi0JYnRyX3BjdXJfdCoJ cGN1ciwJLyohPCBpbjogcGN1ciBwb3NpdGlvbmVkIGF0IGEgcGxhY2UgaW4gYW4KKwljb25zdCBi dHJfcGN1cl90KnBjdXIsCS8qITwgaW46IHBjdXIgcG9zaXRpb25lZCBhdCBhIHBsYWNlIGluIGFu CiAJCQkJaW5zZXJ0IGJ1ZmZlciB0cmVlIHdoZXJlIHdlIHdvdWxkIGluc2VydCBhbgogCQkJCWVu dHJ5IGZvciB0aGUgaW5kZXggcGFnZSB3aG9zZSBudW1iZXIgaXMKIAkJCQlwYWdlX25vLCBsYXRj aCBtb2RlIGhhcyB0byBiZSBCVFJfTU9ESUZZX1BSRVYKQEAgLTI5NDMsMTYgKzMwMDQsMTcgQEAg aWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkKAogCWxpbnQqCQluX3JlY3MsCS8qITwgaW4vb3V0OiBt aW5pbXVtIG51bWJlciBvZiByZWNvcmRzIG9uIHRoZQogCQkJCXBhZ2UgYWZ0ZXIgdGhlIGJ1ZmZl cmVkIGNoYW5nZXMgaGF2ZSBiZWVuCiAJCQkJYXBwbGllZCwgb3IgTlVMTCB0byBkaXNhYmxlIHRo ZSBjb3VudGluZyAqLwotCW10cl90KgkJbXRyKQkvKiE8IGluOiBtdHIgKi8KKwltdHJfdCoJCW10 cikJLyohPCBpbjogbWluaS10cmFuc2FjdGlvbiBvZiBwY3VyICovCiB7Ci0JdWxpbnQJdm9sdW1l OwotCXJlY190KglyZWM7Ci0JcGFnZV90KglwYWdlOwotCXVsaW50CXByZXZfcGFnZV9ubzsKLQlw YWdlX3QqCXByZXZfcGFnZTsKLQl1bGludAluZXh0X3BhZ2Vfbm87Ci0JcGFnZV90KgluZXh0X3Bh Z2U7Ci0JdWxpbnQJaGFzaF9iaXRtYXBbMTI4IC8gc2l6ZW9mKHVsaW50KV07IC8qIGJpdG1hcCBv ZiBidWZmZXJlZCByZWNzICovCisJdWxpbnQJCXZvbHVtZTsKKwljb25zdCByZWNfdCoJcmVjOwor CWNvbnN0IHBhZ2VfdCoJcGFnZTsKKwl1bGludAkJcHJldl9wYWdlX25vOworCWNvbnN0IHBhZ2Vf dCoJcHJldl9wYWdlOworCXVsaW50CQluZXh0X3BhZ2Vfbm87CisJY29uc3QgcGFnZV90KgluZXh0 X3BhZ2U7CisJLyogYml0bWFwIG9mIGJ1ZmZlcmVkIHJlY3MgKi8KKwl1bGludAkJaGFzaF9iaXRt YXBbMTI4IC8gc2l6ZW9mKHVsaW50KV07CiAKIAl1dF9hKHRyeF9zeXNfbXVsdGlwbGVfdGFibGVz cGFjZV9mb3JtYXQpOwogCkBAIC0yOTczLDI2ICszMDM1LDIyIEBAIGlidWZfZ2V0X3ZvbHVtZV9i dWZmZXJlZCgKIAl1dF9hZChwYWdlX3ZhbGlkYXRlKHBhZ2UsIGlidWYtPmluZGV4KSk7CiAKIAlp ZiAocGFnZV9yZWNfaXNfc3VwcmVtdW0ocmVjKSkgewotCQlyZWMgPSBwYWdlX3JlY19nZXRfcHJl dihyZWMpOworCQlyZWMgPSBwYWdlX3JlY19nZXRfcHJldl9jb25zdChyZWMpOwogCX0KIAotCWZv ciAoOzspIHsKLQkJaWYgKHBhZ2VfcmVjX2lzX2luZmltdW0ocmVjKSkgewotCi0JCQlicmVhazsK LQkJfQorCWZvciAoOyAhcGFnZV9yZWNfaXNfaW5maW11bShyZWMpOworCSAgICAgcmVjID0gcGFn ZV9yZWNfZ2V0X3ByZXZfY29uc3QocmVjKSkgeworCQl1dF9hZChwYWdlX2FsaWduKHJlYykgPT0g cGFnZSk7CiAKLQkJaWYgKHBhZ2Vfbm8gIT0gaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8ocmVjKQotCQkg ICAgfHwgc3BhY2UgIT0gaWJ1Zl9yZWNfZ2V0X3NwYWNlKHJlYykpIHsKKwkJaWYgKHBhZ2Vfbm8g IT0gaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8obXRyLCByZWMpCisJCSAgICB8fCBzcGFjZSAhPSBpYnVm X3JlY19nZXRfc3BhY2UobXRyLCByZWMpKSB7CiAKIAkJCWdvdG8gY291bnRfbGF0ZXI7CiAJCX0K IAogCQl2b2x1bWUgKz0gaWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkX2NvdW50KAotCQkJcmVjLCBo YXNoX2JpdG1hcCwgVVRfQVJSX1NJWkUoaGFzaF9iaXRtYXApLCBuX3JlY3MpOwotCi0JCXJlYyA9 IHBhZ2VfcmVjX2dldF9wcmV2KHJlYyk7Ci0JCXV0X2FkKHBhZ2VfYWxpZ24ocmVjKSA9PSBwYWdl KTsKKwkJCW10ciwgcmVjLAorCQkJaGFzaF9iaXRtYXAsIFVUX0FSUl9TSVpFKGhhc2hfYml0bWFw KSwgbl9yZWNzKTsKIAl9CiAKIAkvKiBMb29rIGF0IHRoZSBwcmV2aW91cyBwYWdlICovCkBAIC0z MDA4LDcgKzMwNjYsOCBAQCBpYnVmX2dldF92b2x1bWVfYnVmZmVyZWQoCiAJCWJ1Zl9ibG9ja190 KglibG9jazsKIAogCQlibG9jayA9IGJ1Zl9wYWdlX2dldCgKLQkJCUlCVUZfU1BBQ0VfSUQsIDAs IHByZXZfcGFnZV9ubywgUldfWF9MQVRDSCwgbXRyKTsKKwkJCUlCVUZfU1BBQ0VfSUQsIDAsIHBy ZXZfcGFnZV9ubywgUldfWF9MQVRDSCwKKwkJCW10cik7CiAKIAkJYnVmX2Jsb2NrX2RiZ19hZGRf bGV2ZWwoYmxvY2ssIFNZTkNfVFJFRV9OT0RFKTsKIApAQCAtMzAxOCwxNCArMzA3NywxNSBAQCBp YnVmX2dldF92b2x1bWVfYnVmZmVyZWQoCiAJfQogCiAjaWZkZWYgVU5JVl9CVFJfREVCVUcKLQl1 dF9hKGJ0cl9wYWdlX2dldF9uZXh0KHByZXZfcGFnZSwgbXRyKQotCSAgICAgPT0gcGFnZV9nZXRf cGFnZV9ubyhwYWdlKSk7CisJdXRfYShidHJfcGFnZV9nZXRfbmV4dChwcmV2X3BhZ2UsIG10cikg PT0gcGFnZV9nZXRfcGFnZV9ubyhwYWdlKSk7CiAjZW5kaWYgLyogVU5JVl9CVFJfREVCVUcgKi8K IAogCXJlYyA9IHBhZ2VfZ2V0X3N1cHJlbXVtX3JlYyhwcmV2X3BhZ2UpOwotCXJlYyA9IHBhZ2Vf cmVjX2dldF9wcmV2KHJlYyk7CisJcmVjID0gcGFnZV9yZWNfZ2V0X3ByZXZfY29uc3QocmVjKTsK KworCWZvciAoOzsgcmVjID0gcGFnZV9yZWNfZ2V0X3ByZXZfY29uc3QocmVjKSkgeworCQl1dF9h ZChwYWdlX2FsaWduKHJlYykgPT0gcHJldl9wYWdlKTsKIAotCWZvciAoOzspIHsKIAkJaWYgKHBh Z2VfcmVjX2lzX2luZmltdW0ocmVjKSkgewogCiAJCQkvKiBXZSBjYW5ub3QgZ28gdG8geWV0IGEg cHJldmlvdXMgcGFnZSwgYmVjYXVzZSB3ZQpAQCAtMzAzNSw0MiArMzA5NSwzNSBAQCBpYnVmX2dl dF92b2x1bWVfYnVmZmVyZWQoCiAJCQlyZXR1cm4oVU5JVl9QQUdFX1NJWkUpOwogCQl9CiAKLQkJ aWYgKHBhZ2Vfbm8gIT0gaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8ocmVjKQotCQkgICAgfHwgc3BhY2Ug IT0gaWJ1Zl9yZWNfZ2V0X3NwYWNlKHJlYykpIHsKKwkJaWYgKHBhZ2Vfbm8gIT0gaWJ1Zl9yZWNf Z2V0X3BhZ2Vfbm8obXRyLCByZWMpCisJCSAgICB8fCBzcGFjZSAhPSBpYnVmX3JlY19nZXRfc3Bh Y2UobXRyLCByZWMpKSB7CiAKIAkJCWdvdG8gY291bnRfbGF0ZXI7CiAJCX0KIAogCQl2b2x1bWUg Kz0gaWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkX2NvdW50KAotCQkJcmVjLCBoYXNoX2JpdG1hcCwg VVRfQVJSX1NJWkUoaGFzaF9iaXRtYXApLCBuX3JlY3MpOwotCi0JCXJlYyA9IHBhZ2VfcmVjX2dl dF9wcmV2KHJlYyk7Ci0JCXV0X2FkKHBhZ2VfYWxpZ24ocmVjKSA9PSBwcmV2X3BhZ2UpOworCQkJ bXRyLCByZWMsCisJCQloYXNoX2JpdG1hcCwgVVRfQVJSX1NJWkUoaGFzaF9iaXRtYXApLCBuX3Jl Y3MpOwogCX0KIAogY291bnRfbGF0ZXI6CiAJcmVjID0gYnRyX3BjdXJfZ2V0X3JlYyhwY3VyKTsK IAogCWlmICghcGFnZV9yZWNfaXNfc3VwcmVtdW0ocmVjKSkgewotCQlyZWMgPSBwYWdlX3JlY19n ZXRfbmV4dChyZWMpOworCQlyZWMgPSBwYWdlX3JlY19nZXRfbmV4dF9jb25zdChyZWMpOwogCX0K IAotCWZvciAoOzspIHsKLQkJaWYgKHBhZ2VfcmVjX2lzX3N1cHJlbXVtKHJlYykpIHsKLQotCQkJ YnJlYWs7Ci0JCX0KLQotCQlpZiAocGFnZV9ubyAhPSBpYnVmX3JlY19nZXRfcGFnZV9ubyhyZWMp Ci0JCSAgICB8fCBzcGFjZSAhPSBpYnVmX3JlY19nZXRfc3BhY2UocmVjKSkgeworCWZvciAoOyAh cGFnZV9yZWNfaXNfc3VwcmVtdW0ocmVjKTsKKwkgICAgIHJlYyA9IHBhZ2VfcmVjX2dldF9uZXh0 X2NvbnN0KHJlYykpIHsKKwkJaWYgKHBhZ2Vfbm8gIT0gaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8obXRy LCByZWMpCisJCSAgICB8fCBzcGFjZSAhPSBpYnVmX3JlY19nZXRfc3BhY2UobXRyLCByZWMpKSB7 CiAKIAkJCXJldHVybih2b2x1bWUpOwogCQl9CiAKIAkJdm9sdW1lICs9IGlidWZfZ2V0X3ZvbHVt ZV9idWZmZXJlZF9jb3VudCgKLQkJCXJlYywgaGFzaF9iaXRtYXAsIFVUX0FSUl9TSVpFKGhhc2hf Yml0bWFwKSwgbl9yZWNzKTsKLQotCQlyZWMgPSBwYWdlX3JlY19nZXRfbmV4dChyZWMpOworCQkJ bXRyLCByZWMsCisJCQloYXNoX2JpdG1hcCwgVVRfQVJSX1NJWkUoaGFzaF9iaXRtYXApLCBuX3Jl Y3MpOwogCX0KIAogCS8qIExvb2sgYXQgdGhlIG5leHQgcGFnZSAqLwpAQCAtMzA4Niw3ICszMTM5 LDggQEAgY291bnRfbGF0ZXI6CiAJCWJ1Zl9ibG9ja190KglibG9jazsKIAogCQlibG9jayA9IGJ1 Zl9wYWdlX2dldCgKLQkJCUlCVUZfU1BBQ0VfSUQsIDAsIG5leHRfcGFnZV9ubywgUldfWF9MQVRD SCwgbXRyKTsKKwkJCUlCVUZfU1BBQ0VfSUQsIDAsIG5leHRfcGFnZV9ubywgUldfWF9MQVRDSCwK KwkJCW10cik7CiAKIAkJYnVmX2Jsb2NrX2RiZ19hZGRfbGV2ZWwoYmxvY2ssIFNZTkNfVFJFRV9O T0RFKTsKIApAQCAtMzEwMCw5ICszMTU0LDExIEBAIGNvdW50X2xhdGVyOgogI2VuZGlmIC8qIFVO SVZfQlRSX0RFQlVHICovCiAKIAlyZWMgPSBwYWdlX2dldF9pbmZpbXVtX3JlYyhuZXh0X3BhZ2Up OwotCXJlYyA9IHBhZ2VfcmVjX2dldF9uZXh0KHJlYyk7CisJcmVjID0gcGFnZV9yZWNfZ2V0X25l eHRfY29uc3QocmVjKTsKKworCWZvciAoOzsgcmVjID0gcGFnZV9yZWNfZ2V0X25leHRfY29uc3Qo cmVjKSkgeworCQl1dF9hZChwYWdlX2FsaWduKHJlYykgPT0gbmV4dF9wYWdlKTsKIAotCWZvciAo OzspIHsKIAkJaWYgKHBhZ2VfcmVjX2lzX3N1cHJlbXVtKHJlYykpIHsKIAogCQkJLyogV2UgZ2l2 ZSB1cCAqLwpAQCAtMzExMCwxNyArMzE2NiwxNSBAQCBjb3VudF9sYXRlcjoKIAkJCXJldHVybihV TklWX1BBR0VfU0laRSk7CiAJCX0KIAotCQlpZiAocGFnZV9ubyAhPSBpYnVmX3JlY19nZXRfcGFn ZV9ubyhyZWMpCi0JCSAgICB8fCBzcGFjZSAhPSBpYnVmX3JlY19nZXRfc3BhY2UocmVjKSkgewor CQlpZiAocGFnZV9ubyAhPSBpYnVmX3JlY19nZXRfcGFnZV9ubyhtdHIsIHJlYykKKwkJICAgIHx8 IHNwYWNlICE9IGlidWZfcmVjX2dldF9zcGFjZShtdHIsIHJlYykpIHsKIAogCQkJcmV0dXJuKHZv bHVtZSk7CiAJCX0KIAogCQl2b2x1bWUgKz0gaWJ1Zl9nZXRfdm9sdW1lX2J1ZmZlcmVkX2NvdW50 KAotCQkJcmVjLCBoYXNoX2JpdG1hcCwgVVRfQVJSX1NJWkUoaGFzaF9iaXRtYXApLCBuX3JlY3Mp OwotCi0JCXJlYyA9IHBhZ2VfcmVjX2dldF9uZXh0KHJlYyk7Ci0JCXV0X2FkKHBhZ2VfYWxpZ24o cmVjKSA9PSBuZXh0X3BhZ2UpOworCQkJbXRyLCByZWMsCisJCQloYXNoX2JpdG1hcCwgVVRfQVJS X1NJWkUoaGFzaF9iaXRtYXApLCBuX3JlY3MpOwogCX0KIH0KIApAQCAtMzE0MSw5ICszMTk1LDcg QEAgaWJ1Zl91cGRhdGVfbWF4X3RhYmxlc3BhY2VfaWQodm9pZCkKIAogCXV0X2EoIWRpY3RfdGFi bGVfaXNfY29tcChpYnVmLT5pbmRleC0+dGFibGUpKTsKIAotCWlidWZfZW50ZXIoKTsKLQotCW10 cl9zdGFydCgmbXRyKTsKKwlpYnVmX210cl9zdGFydCgmbXRyKTsKIAogCWJ0cl9wY3VyX29wZW5f YXRfaW5kZXhfc2lkZSgKIAkJRkFMU0UsIGlidWYtPmluZGV4LCBCVFJfU0VBUkNIX0xFQUYsICZw Y3VyLCBUUlVFLCAmbXRyKTsKQEAgLTMxNjYsMTQgKzMyMTgsMjAgQEAgaWJ1Zl91cGRhdGVfbWF4 X3RhYmxlc3BhY2VfaWQodm9pZCkKIAkJbWF4X3NwYWNlX2lkID0gbWFjaF9yZWFkX2Zyb21fNChm aWVsZCk7CiAJfQogCi0JbXRyX2NvbW1pdCgmbXRyKTsKLQlpYnVmX2V4aXQoKTsKKwlpYnVmX210 cl9jb21taXQoJm10cik7CiAKIAkvKiBwcmludGYoIk1heGltdW0gc3BhY2UgaWQgaW4gaW5zZXJ0 IGJ1ZmZlciAlbHVcbiIsIG1heF9zcGFjZV9pZCk7ICovCiAKIAlmaWxfc2V0X21heF9zcGFjZV9p ZF9pZl9iaWdnZXIobWF4X3NwYWNlX2lkKTsKIH0KIAorI2lmZGVmIFVOSVZfREVCVUcKKyMgZGVm aW5lIGlidWZfZ2V0X2VudHJ5X2NvdW50ZXJfbG93KG10cixyZWMsc3BhY2UscGFnZV9ubykJXAor CWlidWZfZ2V0X2VudHJ5X2NvdW50ZXJfbG93X2Z1bmMobXRyLHJlYyxzcGFjZSxwYWdlX25vKQor I2Vsc2UgLyogVU5JVl9ERUJVRyAqLworIyBkZWZpbmUgaWJ1Zl9nZXRfZW50cnlfY291bnRlcl9s b3cobXRyLHJlYyxzcGFjZSxwYWdlX25vKQlcCisJaWJ1Zl9nZXRfZW50cnlfY291bnRlcl9sb3df ZnVuYyhyZWMsc3BhY2UscGFnZV9ubykKKyNlbmRpZgogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBIZWxwZXIgZnVu Y3Rpb24gZm9yIGlidWZfc2V0X2VudHJ5X2NvdW50ZXIuIENoZWNrcyBpZiByZWMgaXMgZm9yIChz cGFjZSwKIHBhZ2Vfbm8pLCBhbmQgaWYgc28sIHJlYWRzIGNvdW50ZXIgdmFsdWUgZnJvbSBpdCBh bmQgcmV0dXJucyB0aGF0ICsgMS4KQEAgLTMxODEsOCArMzIzOSwxMSBAQCBPdGhlcndpc2UsIHJl dHVybnMgMC4KIEByZXR1cm4JbmV3IGNvdW50ZXIgdmFsdWUsIG9yIDAgKi8KIHN0YXRpYwogdWxp bnQKLWlidWZfZ2V0X2VudHJ5X2NvdW50ZXJfbG93KAotLyo9PT09PT09PT09PT09PT09PT09PT09 PSovCitpYnVmX2dldF9lbnRyeV9jb3VudGVyX2xvd19mdW5jKAorLyo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ki8KKyNpZmRlZiBVTklWX0RFQlVHCisJbXRyX3QqCQltdHIsCQkvKiE8IGlu OiBtaW5pLXRyYW5zYWN0aW9uIG9mIHJlYyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIAlj b25zdCByZWNfdCoJcmVjLAkJLyohPCBpbjogaW5zZXJ0IGJ1ZmZlciByZWNvcmQgKi8KIAl1bGlu dAkJc3BhY2UsCQkvKiE8IGluOiBzcGFjZSBpZCAqLwogCXVsaW50CQlwYWdlX25vKQkvKiE8IGlu OiBwYWdlIG51bWJlciAqLwpAQCAtMzE5MSw3ICszMjUyLDkgQEAgaWJ1Zl9nZXRfZW50cnlfY291 bnRlcl9sb3coCiAJY29uc3QgYnl0ZSoJZmllbGQ7CiAJdWxpbnQJCWxlbjsKIAotCXV0X2FkKGli dWZfaW5zaWRlKCkpOworCXV0X2FkKGlidWZfaW5zaWRlKG10cikpOworCXV0X2FkKG10cl9tZW1v X2NvbnRhaW5zX3BhZ2UobXRyLCByZWMsIE1UUl9NRU1PX1BBR0VfWF9GSVgpCisJICAgICAgfHwg bXRyX21lbW9fY29udGFpbnNfcGFnZShtdHIsIHJlYywgTVRSX01FTU9fUEFHRV9TX0ZJWCkpOwog CXV0X2FkKHJlY19nZXRfbl9maWVsZHNfb2xkKHJlYykgPiAyKTsKIAogCWZpZWxkID0gcmVjX2dl dF9udGhfZmllbGRfb2xkKHJlYywgMSwgJmxlbik7CkBAIC0zMjYzLDEyICszMzI2LDE1IEBAIGli dWZfc2V0X2VudHJ5X2NvdW50ZXIoCiAJdWxpbnQJCWNvdW50ZXIgPSAwOwogCiAJLyogcGN1ciBw b2ludHMgdG8gZWl0aGVyIGEgdXNlciByZWMgb3IgdG8gYSBwYWdlJ3MgaW5maW11bSByZWNvcmQu ICovCisJdXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7CisJdXRfYWQobXRyX21lbW9fY29udGFpbnMo bXRyLCBidHJfcGN1cl9nZXRfYmxvY2socGN1ciksCisJCQkJTVRSX01FTU9fUEFHRV9YX0ZJWCkp OwogCXV0X2FkKHBhZ2VfdmFsaWRhdGUoYnRyX3BjdXJfZ2V0X3BhZ2UocGN1ciksIGlidWYtPmlu ZGV4KSk7CiAKIAlpZiAoYnRyX3BjdXJfaXNfb25fdXNlcl9yZWMocGN1cikpIHsKIAogCQljb3Vu dGVyID0gaWJ1Zl9nZXRfZW50cnlfY291bnRlcl9sb3coCi0JCQlidHJfcGN1cl9nZXRfcmVjKHBj dXIpLCBzcGFjZSwgcGFnZV9ubyk7CisJCQltdHIsIGJ0cl9wY3VyX2dldF9yZWMocGN1ciksIHNw YWNlLCBwYWdlX25vKTsKIAogCQlpZiAoVU5JVl9VTkxJS0VMWShjb3VudGVyID09IFVMSU5UX1VO REVGSU5FRCkpIHsKIAkJCS8qIFRoZSByZWNvcmQgbGFja3MgYSBjb3VudGVyIGZpZWxkLgpAQCAt MzMyNCw3ICszMzkwLDcgQEAgaWJ1Zl9zZXRfZW50cnlfY291bnRlcigKIAkJCXV0X2FkKHBhZ2Vf cmVjX2lzX3VzZXJfcmVjKHJlYykpOwogCiAJCQljb3VudGVyID0gaWJ1Zl9nZXRfZW50cnlfY291 bnRlcl9sb3coCi0JCQkJcmVjLCBzcGFjZSwgcGFnZV9ubyk7CisJCQkJbXRyLCByZWMsIHNwYWNl LCBwYWdlX25vKTsKIAogCQkJaWYgKFVOSVZfVU5MSUtFTFkoY291bnRlciA9PSBVTElOVF9VTkRF RklORUQpKSB7CiAJCQkJLyogVGhlIHJlY29yZCBsYWNrcyBhIGNvdW50ZXIgZmllbGQuCkBAIC0z NDc4LDcgKzM1NDQsNiBAQCBpYnVmX2luc2VydF9sb3coCiAKIAlpZiAobW9kZSA9PSBCVFJfTU9E SUZZX1RSRUUpIHsKIAkJZm9yICg7OykgewotCQkJaWJ1Zl9lbnRlcigpOwogCQkJbXV0ZXhfZW50 ZXIoJmlidWZfcGVzc2ltaXN0aWNfaW5zZXJ0X211dGV4KTsKIAkJCW11dGV4X2VudGVyKCZpYnVm X211dGV4KTsKIApAQCAtMzQ4OSw3ICszNTU0LDYgQEAgaWJ1Zl9pbnNlcnRfbG93KAogCiAJCQlt dXRleF9leGl0KCZpYnVmX211dGV4KTsKIAkJCW11dGV4X2V4aXQoJmlidWZfcGVzc2ltaXN0aWNf aW5zZXJ0X211dGV4KTsKLQkJCWlidWZfZXhpdCgpOwogCiAJCQlpZiAoVU5JVl9VTkxJS0VMWSgh aWJ1Zl9hZGRfZnJlZV9wYWdlKCkpKSB7CiAKQEAgLTM0OTcsMTEgKzM1NjEsOSBAQCBpYnVmX2lu c2VydF9sb3coCiAJCQkJcmV0dXJuKERCX1NUUk9OR19GQUlMKTsKIAkJCX0KIAkJfQotCX0gZWxz ZSB7Ci0JCWlidWZfZW50ZXIoKTsKIAl9CiAKLQltdHJfc3RhcnQoJm10cik7CisJaWJ1Zl9tdHJf c3RhcnQoJm10cik7CiAKIAlidHJfcGN1cl9vcGVuKGlidWYtPmluZGV4LCBpYnVmX2VudHJ5LCBQ QUdFX0NVUl9MRSwgbW9kZSwgJnBjdXIsICZtdHIpOwogCXV0X2FkKHBhZ2VfdmFsaWRhdGUoYnRy X3BjdXJfZ2V0X3BhZ2UoJnBjdXIpLCBpYnVmLT5pbmRleCkpOwpAQCAtMzU1Niw3ICszNjE4LDcg QEAgZmFpbF9leGl0OgogI2lmZGVmIFVOSVZfSUJVRl9DT1VOVF9ERUJVRwogCXV0X2EoKGJ1ZmZl cmVkID09IDApIHx8IGlidWZfY291bnRfZ2V0KHNwYWNlLCBwYWdlX25vKSk7CiAjZW5kaWYKLQlt dHJfc3RhcnQoJmJpdG1hcF9tdHIpOworCWlidWZfbXRyX3N0YXJ0KCZiaXRtYXBfbXRyKTsKIAog CWJpdG1hcF9wYWdlID0gaWJ1Zl9iaXRtYXBfZ2V0X21hcF9wYWdlKHNwYWNlLCBwYWdlX25vLAog CQkJCQkgICAgICAgemlwX3NpemUsICZiaXRtYXBfbXRyKTsKQEAgLTM1NzcsMTUgKzM2MzksMTUg QEAgZmFpbF9leGl0OgogCQlpZiAoYnVmZmVyZWQgKyBlbnRyeV9zaXplICsgcGFnZV9kaXJfY2Fs Y19yZXNlcnZlZF9zcGFjZSgxKQogCQkgICAgPiBpYnVmX2luZGV4X3BhZ2VfY2FsY19mcmVlX2Zy b21fYml0cyh6aXBfc2l6ZSwgYml0cykpIHsKIAkJCS8qIFJlbGVhc2UgdGhlIGJpdG1hcCBwYWdl IGxhdGNoIGVhcmx5LiAqLwotCQkJbXRyX2NvbW1pdCgmYml0bWFwX210cik7CisJCQlpYnVmX210 cl9jb21taXQoJmJpdG1hcF9tdHIpOwogCiAJCQkvKiBJdCBtYXkgbm90IGZpdCAqLwogCQkJZG9f bWVyZ2UgPSBUUlVFOwogCi0JCQlpYnVmX2dldF9tZXJnZV9wYWdlX25vcygKLQkJCQlGQUxTRSwg YnRyX3BjdXJfZ2V0X3JlYygmcGN1ciksCi0JCQkJc3BhY2VfaWRzLCBzcGFjZV92ZXJzaW9ucywK LQkJCQlwYWdlX25vcywgJm5fc3RvcmVkKTsKKwkJCWlidWZfZ2V0X21lcmdlX3BhZ2Vfbm9zKEZB TFNFLAorCQkJCQkJYnRyX3BjdXJfZ2V0X3JlYygmcGN1ciksICZtdHIsCisJCQkJCQlzcGFjZV9p ZHMsIHNwYWNlX3ZlcnNpb25zLAorCQkJCQkJcGFnZV9ub3MsICZuX3N0b3JlZCk7CiAKIAkJCWdv dG8gZmFpbF9leGl0OwogCQl9CkBAIC0zNTk4LDcgKzM2NjAsNyBAQCBmYWlsX2V4aXQ6CiAJICAg ICYmICFpYnVmX3NldF9lbnRyeV9jb3VudGVyKGlidWZfZW50cnksIHNwYWNlLCBwYWdlX25vLCAm cGN1ciwKIAkJCQkgICAgICAgbW9kZSA9PSBCVFJfTU9ESUZZX1BSRVYsICZtdHIpKSB7CiBiaXRt YXBfZmFpbDoKLQkJbXRyX2NvbW1pdCgmYml0bWFwX210cik7CisJCWlidWZfbXRyX2NvbW1pdCgm Yml0bWFwX210cik7CiAKIAkJZ290byBmYWlsX2V4aXQ7CiAJfQpAQCAtMzYxNiw3ICszNjc4LDcg QEAgYml0bWFwX2ZhaWw6CiAJCQkJCSAgJmJpdG1hcF9tdHIpOwogCX0KIAotCW10cl9jb21taXQo JmJpdG1hcF9tdHIpOworCWlidWZfbXRyX2NvbW1pdCgmYml0bWFwX210cik7CiAKIAljdXJzb3Ig PSBidHJfcGN1cl9nZXRfYnRyX2N1cigmcGN1cik7CiAKQEAgLTM2ODEsOSArMzc0Myw4IEBAIGZ1 bmNfZXhpdDoKIAl9CiAjZW5kaWYKIAotCW10cl9jb21taXQoJm10cik7CisJaWJ1Zl9tdHJfY29t bWl0KCZtdHIpOwogCWJ0cl9wY3VyX2Nsb3NlKCZwY3VyKTsKLQlpYnVmX2V4aXQoKTsKIAogCW1l bV9oZWFwX2ZyZWUoaGVhcCk7CiAKQEAgLTM5MzcsNyArMzk5OCw3IEBAIGlidWZfaW5zZXJ0X3Rv X2luZGV4X3BhZ2UoCiAJcGFnZV90KgkJcGFnZQkJPSBidWZfYmxvY2tfZ2V0X2ZyYW1lKGJsb2Nr KTsKIAlyZWNfdCoJCXJlYzsKIAotCXV0X2FkKGlidWZfaW5zaWRlKCkpOworCXV0X2FkKGlidWZf aW5zaWRlKG10cikpOwogCXV0X2FkKGR0dXBsZV9jaGVja190eXBlZChlbnRyeSkpOwogCXV0X2Fk KCFidWZfYmxvY2tfYWxpZ24ocGFnZSktPmlzX2hhc2hlZCk7CiAKQEAgLTQwODQsNyArNDE0NSw3 IEBAIGlidWZfc2V0X2RlbF9tYXJrKAogCXBhZ2VfY3VyX3QJcGFnZV9jdXI7CiAJdWxpbnQJCWxv d19tYXRjaDsKIAotCXV0X2FkKGlidWZfaW5zaWRlKCkpOworCXV0X2FkKGlidWZfaW5zaWRlKG10 cikpOwogCXV0X2FkKGR0dXBsZV9jaGVja190eXBlZChlbnRyeSkpOwogCiAJbG93X21hdGNoID0g cGFnZV9jdXJfc2VhcmNoKApAQCAtNDE0MSw3ICs0MjAyLDcgQEAgaWJ1Zl9kZWxldGUoCiAJcGFn ZV9jdXJfdAlwYWdlX2N1cjsKIAl1bGludAkJbG93X21hdGNoOwogCi0JdXRfYWQoaWJ1Zl9pbnNp ZGUoKSk7CisJdXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7CiAJdXRfYWQoZHR1cGxlX2NoZWNrX3R5 cGVkKGVudHJ5KSk7CiAKIAlsb3dfbWF0Y2ggPSBwYWdlX2N1cl9zZWFyY2goCkBAIC00MjI5LDcg KzQyOTAsNyBAQCBpYnVmX3Jlc3RvcmVfcG9zKAogCQkvKiBUaGUgdGFibGVzcGFjZSBoYXMgYmVl biBkcm9wcGVkLiAgSXQgaXMgcG9zc2libGUKIAkJdGhhdCBhbm90aGVyIHRocmVhZCBoYXMgZGVs ZXRlZCB0aGUgaW5zZXJ0IGJ1ZmZlcgogCQllbnRyeS4gIERvIG5vdCBjb21wbGFpbi4gKi8KLQkJ YnRyX3BjdXJfY29tbWl0X3NwZWNpZnlfbXRyKHBjdXIsIG10cik7CisJCWlidWZfYnRyX3BjdXJf Y29tbWl0X3NwZWNpZnlfbXRyKHBjdXIsIG10cik7CiAJfSBlbHNlIHsKIAkJZnByaW50ZihzdGRl cnIsCiAJCQkiSW5ub0RCOiBFUlJPUjogU3VibWl0IHRoZSBvdXRwdXQgdG8iCkBAIC00MjQ3LDcg KzQzMDgsNyBAQCBpYnVmX3Jlc3RvcmVfcG9zKAogCQkJICAgICAgcGFnZV9yZWNfZ2V0X25leHQo YnRyX3BjdXJfZ2V0X3JlYyhwY3VyKSkpOwogCQlmZmx1c2goc3RkZXJyKTsKIAotCQlidHJfcGN1 cl9jb21taXRfc3BlY2lmeV9tdHIocGN1ciwgbXRyKTsKKwkJaWJ1Zl9idHJfcGN1cl9jb21taXRf c3BlY2lmeV9tdHIocGN1ciwgbXRyKTsKIAogCQlmcHV0cygiSW5ub0RCOiBWYWxpZGF0aW5nIGlu c2VydCBidWZmZXIgdHJlZTpcbiIsIHN0ZGVycik7CiAJCWlmICghYnRyX3ZhbGlkYXRlX2luZGV4 KGlidWYtPmluZGV4LCBOVUxMKSkgewpAQCAtNDI3MSw4ICs0MzMyLDggQEAgaWJvb2wKIGlidWZf ZGVsZXRlX3JlYygKIC8qPT09PT09PT09PT09Ki8KIAl1bGludAkJc3BhY2UsCS8qITwgaW46IHNw YWNlIGlkICovCi0JdWxpbnQJCXBhZ2Vfbm8sLyohPCBpbjogaW5kZXggcGFnZSBudW1iZXIgd2hl cmUgdGhlIHJlY29yZAotCQkJCXNob3VsZCBiZWxvbmcgKi8KKwl1bGludAkJcGFnZV9ubywvKiE8 IGluOiBpbmRleCBwYWdlIG51bWJlciB0aGF0IHRoZSByZWNvcmQKKwkJCQlzaG91bGQgYmVsb25n IHRvICovCiAJYnRyX3BjdXJfdCoJcGN1ciwJLyohPCBpbjogcGN1ciBwb3NpdGlvbmVkIG9uIHRo ZSByZWNvcmQgdG8KIAkJCQlkZWxldGUsIGhhdmluZyBsYXRjaCBtb2RlIEJUUl9NT0RJRllfTEVB RiAqLwogCWNvbnN0IGR0dXBsZV90KglzZWFyY2hfdHVwbGUsCkBAIC00MjgzLDEwICs0MzQ0LDEw IEBAIGlidWZfZGVsZXRlX3JlYygKIAlwYWdlX3QqCQlyb290OwogCXVsaW50CQllcnI7CiAKLQl1 dF9hZChpYnVmX2luc2lkZSgpKTsKKwl1dF9hZChpYnVmX2luc2lkZShtdHIpKTsKIAl1dF9hZChw YWdlX3JlY19pc191c2VyX3JlYyhidHJfcGN1cl9nZXRfcmVjKHBjdXIpKSk7Ci0JdXRfYWQoaWJ1 Zl9yZWNfZ2V0X3BhZ2Vfbm8oYnRyX3BjdXJfZ2V0X3JlYyhwY3VyKSkgPT0gcGFnZV9ubyk7Ci0J dXRfYWQoaWJ1Zl9yZWNfZ2V0X3NwYWNlKGJ0cl9wY3VyX2dldF9yZWMocGN1cikpID09IHNwYWNl KTsKKwl1dF9hZChpYnVmX3JlY19nZXRfcGFnZV9ubyhtdHIsIGJ0cl9wY3VyX2dldF9yZWMocGN1 cikpID09IHBhZ2Vfbm8pOworCXV0X2FkKGlidWZfcmVjX2dldF9zcGFjZShtdHIsIGJ0cl9wY3Vy X2dldF9yZWMocGN1cikpID09IHNwYWNlKTsKIAogCXN1Y2Nlc3MgPSBidHJfY3VyX29wdGltaXN0 aWNfZGVsZXRlKGJ0cl9wY3VyX2dldF9idHJfY3VyKHBjdXIpLCBtdHIpOwogCkBAIC00MzE5LDIy ICs0MzgwLDIyIEBAIGlidWZfZGVsZXRlX3JlYygKIAl9CiAKIAl1dF9hZChwYWdlX3JlY19pc191 c2VyX3JlYyhidHJfcGN1cl9nZXRfcmVjKHBjdXIpKSk7Ci0JdXRfYWQoaWJ1Zl9yZWNfZ2V0X3Bh Z2Vfbm8oYnRyX3BjdXJfZ2V0X3JlYyhwY3VyKSkgPT0gcGFnZV9ubyk7Ci0JdXRfYWQoaWJ1Zl9y ZWNfZ2V0X3NwYWNlKGJ0cl9wY3VyX2dldF9yZWMocGN1cikpID09IHNwYWNlKTsKKwl1dF9hZChp YnVmX3JlY19nZXRfcGFnZV9ubyhtdHIsIGJ0cl9wY3VyX2dldF9yZWMocGN1cikpID09IHBhZ2Vf bm8pOworCXV0X2FkKGlidWZfcmVjX2dldF9zcGFjZShtdHIsIGJ0cl9wY3VyX2dldF9yZWMocGN1 cikpID09IHNwYWNlKTsKIAogCS8qIFdlIGhhdmUgdG8gcmVzb3J0IHRvIGEgcGVzc2ltaXN0aWMg ZGVsZXRlIGZyb20gaWJ1ZiAqLwogCWJ0cl9wY3VyX3N0b3JlX3Bvc2l0aW9uKHBjdXIsIG10cik7 CisJaWJ1Zl9idHJfcGN1cl9jb21taXRfc3BlY2lmeV9tdHIocGN1ciwgbXRyKTsKIAotCWJ0cl9w Y3VyX2NvbW1pdF9zcGVjaWZ5X210cihwY3VyLCBtdHIpOwotCisJaWJ1Zl9tdHJfc3RhcnQobXRy KTsKIAltdXRleF9lbnRlcigmaWJ1Zl9tdXRleCk7CiAKLQltdHJfc3RhcnQobXRyKTsKLQogCWlm ICghaWJ1Zl9yZXN0b3JlX3BvcyhzcGFjZSwgcGFnZV9ubywgc2VhcmNoX3R1cGxlLAogCQkJICAg ICAgQlRSX01PRElGWV9UUkVFLCBwY3VyLCBtdHIpKSB7CiAKIAkJbXV0ZXhfZXhpdCgmaWJ1Zl9t dXRleCk7CisJCXV0X2FkKCFpYnVmX2luc2lkZShtdHIpKTsKKwkJdXRfYWQobXRyLT5zdGF0ZSA9 PSBNVFJfQ09NTUlUVEVEKTsKIAkJZ290byBmdW5jX2V4aXQ7CiAJfQogCkBAIC00MzUxLDkgKzQ0 MTIsMTEgQEAgaWJ1Zl9kZWxldGVfcmVjKAogCW11dGV4X2V4aXQoJmlidWZfbXV0ZXgpOwogCiAJ aWJ1Zi0+ZW1wdHkgPSAocGFnZV9nZXRfbl9yZWNzKHJvb3QpID09IDApOwotCWJ0cl9wY3VyX2Nv bW1pdF9zcGVjaWZ5X210cihwY3VyLCBtdHIpOworCWlidWZfYnRyX3BjdXJfY29tbWl0X3NwZWNp ZnlfbXRyKHBjdXIsIG10cik7CiAKIGZ1bmNfZXhpdDoKKwl1dF9hZCghaWJ1Zl9pbnNpZGUobXRy KSk7CisJdXRfYWQobXRyLT5zdGF0ZSA9PSBNVFJfQ09NTUlUVEVEKTsKIAlidHJfcGN1cl9jbG9z ZShwY3VyKTsKIAogCXJldHVybihUUlVFKTsKQEAgLTQ0NDUsMTggKzQ1MDgsMjAgQEAgaWJ1Zl9t ZXJnZV9vcl9kZWxldGVfZm9yX3BhZ2UoCiAJCQl1cGRhdGVfaWJ1Zl9iaXRtYXAgPSBGQUxTRTsK IAkJfSBlbHNlIHsKIAkJCXBhZ2VfdCoJYml0bWFwX3BhZ2U7CisJCQl1bGludAliaXRtYXBfYml0 czsKIAotCQkJbXRyX3N0YXJ0KCZtdHIpOworCQkJaWJ1Zl9tdHJfc3RhcnQoJm10cik7CiAKIAkJ CWJpdG1hcF9wYWdlID0gaWJ1Zl9iaXRtYXBfZ2V0X21hcF9wYWdlKAogCQkJCXNwYWNlLCBwYWdl X25vLCB6aXBfc2l6ZSwgJm10cik7CisJCQliaXRtYXBfYml0cyA9IGlidWZfYml0bWFwX3BhZ2Vf Z2V0X2JpdHMoCisJCQkJYml0bWFwX3BhZ2UsIHBhZ2Vfbm8sIHppcF9zaXplLAorCQkJCUlCVUZf QklUTUFQX0JVRkZFUkVELCAmbXRyKTsKIAotCQkJaWYgKCFpYnVmX2JpdG1hcF9wYWdlX2dldF9i aXRzKGJpdG1hcF9wYWdlLCBwYWdlX25vLAotCQkJCQkJICAgICAgIHppcF9zaXplLAotCQkJCQkJ ICAgICAgIElCVUZfQklUTUFQX0JVRkZFUkVELAotCQkJCQkJICAgICAgICZtdHIpKSB7CisJCQlp YnVmX210cl9jb21taXQoJm10cik7CisKKwkJCWlmICghYml0bWFwX2JpdHMpIHsKIAkJCQkvKiBO byBpbnNlcnRzIGJ1ZmZlcmVkIGZvciB0aGlzIHBhZ2UgKi8KLQkJCQltdHJfY29tbWl0KCZtdHIp OwogCiAJCQkJaWYgKCF0YWJsZXNwYWNlX2JlaW5nX2RlbGV0ZWQpIHsKIAkJCQkJZmlsX2RlY3Jf cGVuZGluZ19pYnVmX21lcmdlcyhzcGFjZSk7CkBAIC00NDY0LDcgKzQ1MjksNiBAQCBpYnVmX21l cmdlX29yX2RlbGV0ZV9mb3JfcGFnZSgKIAogCQkJCXJldHVybjsKIAkJCX0KLQkJCW10cl9jb21t aXQoJm10cik7CiAJCX0KIAl9IGVsc2UgaWYgKGJsb2NrCiAJCSAgICYmIChpYnVmX2ZpeGVkX2Fk ZHJfcGFnZShzcGFjZSwgemlwX3NpemUsIHBhZ2Vfbm8pCkBAIC00NDczLDExICs0NTM3LDkgQEAg aWJ1Zl9tZXJnZV9vcl9kZWxldGVfZm9yX3BhZ2UoCiAJCXJldHVybjsKIAl9CiAKLQlpYnVmX2Vu dGVyKCk7Ci0KIAloZWFwID0gbWVtX2hlYXBfY3JlYXRlKDUxMik7CiAKLQlpZiAoIXRyeF9zeXNf bXVsdGlwbGVfdGFibGVzcGFjZV9mb3JtYXQpIHsKKwlpZiAoVU5JVl9VTkxJS0VMWSghdHJ4X3N5 c19tdWx0aXBsZV90YWJsZXNwYWNlX2Zvcm1hdCkpIHsKIAkJdXRfYSh0cnhfZG91Ymxld3JpdGVf bXVzdF9yZXNldF9zcGFjZV9pZHMpOwogCQlzZWFyY2hfdHVwbGUgPSBpYnVmX3NlYXJjaF90dXBs ZV9idWlsZChzcGFjZSwgcGFnZV9ubywgaGVhcCk7CiAJfSBlbHNlIHsKQEAgLTQ1MDQsNyArNDU2 Niw3IEBAIGlidWZfbWVyZ2Vfb3JfZGVsZXRlX2Zvcl9wYWdlKAogCiAJCQl1dF9wcmludF90aW1l c3RhbXAoc3RkZXJyKTsKIAotCQkJbXRyX3N0YXJ0KCZtdHIpOworCQkJaWJ1Zl9tdHJfc3RhcnQo Jm10cik7CiAKIAkJCWZwdXRzKCIgIElubm9EQjogRHVtcCBvZiB0aGUgaWJ1ZiBiaXRtYXAgcGFn ZTpcbiIsCiAJCQkgICAgICBzdGRlcnIpOwpAQCAtNDUxMiw4ICs0NTc0LDcgQEAgaWJ1Zl9tZXJn ZV9vcl9kZWxldGVfZm9yX3BhZ2UoCiAJCQliaXRtYXBfcGFnZSA9IGlidWZfYml0bWFwX2dldF9t YXBfcGFnZShzcGFjZSwgcGFnZV9ubywKIAkJCQkJCQkgICAgICAgemlwX3NpemUsICZtdHIpOwog CQkJYnVmX3BhZ2VfcHJpbnQoYml0bWFwX3BhZ2UsIDApOwotCi0JCQltdHJfY29tbWl0KCZtdHIp OworCQkJaWJ1Zl9tdHJfY29tbWl0KCZtdHIpOwogCiAJCQlmcHV0cygiXG5Jbm5vREI6IER1bXAg b2YgdGhlIHBhZ2U6XG4iLCBzdGRlcnIpOwogCkBAIC00NTQ0LDcgKzQ2MDUsNyBAQCBpYnVmX21l cmdlX29yX2RlbGV0ZV9mb3JfcGFnZSgKIAltZW1zZXQoZG9wcywgMCwgc2l6ZW9mKGRvcHMpKTsK IAogbG9vcDoKLQltdHJfc3RhcnQoJm10cik7CisJaWJ1Zl9tdHJfc3RhcnQoJm10cik7CiAKIAlp ZiAoYmxvY2spIHsKIAkJaWJvb2wgc3VjY2VzczsKQEAgLTQ1NzgsOCArNDYzOSw4IEBAIGxvb3A6 CiAJCXJlYyA9IGJ0cl9wY3VyX2dldF9yZWMoJnBjdXIpOwogCiAJCS8qIENoZWNrIGlmIHRoZSBl bnRyeSBpcyBmb3IgdGhpcyBpbmRleCBwYWdlICovCi0JCWlmIChpYnVmX3JlY19nZXRfcGFnZV9u byhyZWMpICE9IHBhZ2Vfbm8KLQkJICAgIHx8IGlidWZfcmVjX2dldF9zcGFjZShyZWMpICE9IHNw YWNlKSB7CisJCWlmIChpYnVmX3JlY19nZXRfcGFnZV9ubygmbXRyLCByZWMpICE9IHBhZ2Vfbm8K KwkJICAgIHx8IGlidWZfcmVjX2dldF9zcGFjZSgmbXRyLCByZWMpICE9IHNwYWNlKSB7CiAKIAkJ CWlmIChibG9jaykgewogCQkJCXBhZ2VfaGVhZGVyX3Jlc2V0X2xhc3RfaW5zZXJ0KApAQCAtNDYw Miw3ICs0NjYzLDcgQEAgbG9vcDoKIAkJCWR0dXBsZV90KgllbnRyeTsKIAkJCXRyeF9pZF90CW1h eF90cnhfaWQ7CiAJCQlkaWN0X2luZGV4X3QqCWR1bW15X2luZGV4OwotCQkJaWJ1Zl9vcF90CW9w ID0gaWJ1Zl9yZWNfZ2V0X29wX3R5cGUocmVjKTsKKwkJCWlidWZfb3BfdAlvcCA9IGlidWZfcmVj X2dldF9vcF90eXBlKCZtdHIsIHJlYyk7CiAKIAkJCW1heF90cnhfaWQgPSBwYWdlX2dldF9tYXhf dHJ4X2lkKHBhZ2VfYWxpZ24ocmVjKSk7CiAJCQlwYWdlX3VwZGF0ZV9tYXhfdHJ4X2lkKGJsb2Nr LCBwYWdlX3ppcCwgbWF4X3RyeF9pZCwKQEAgLTQ2MTEsNyArNDY3Miw3IEBAIGxvb3A6CiAJCQl1 dF9hZChwYWdlX3ZhbGlkYXRlKHBhZ2VfYWxpZ24ocmVjKSwgaWJ1Zi0+aW5kZXgpKTsKIAogCQkJ ZW50cnkgPSBpYnVmX2J1aWxkX2VudHJ5X2Zyb21faWJ1Zl9yZWMoCi0JCQkJcmVjLCBoZWFwLCAm ZHVtbXlfaW5kZXgpOworCQkJCSZtdHIsIHJlYywgaGVhcCwgJmR1bW15X2luZGV4KTsKIAogCQkJ dXRfYWQocGFnZV92YWxpZGF0ZShibG9jay0+ZnJhbWUsIGR1bW15X2luZGV4KSk7CiAKQEAgLTQ2 NDQsMTMgKzQ3MDUsMTQgQEAgbG9vcDoKIAkJCQlTdG9yZSBhbmQgcmVzdG9yZSB0aGUgY3Vyc29y IHBvc2l0aW9uLiAqLwogCQkJCXV0X2FkKHJlYyA9PSBidHJfcGN1cl9nZXRfcmVjKCZwY3VyKSk7 CiAJCQkJdXRfYWQocGFnZV9yZWNfaXNfdXNlcl9yZWMocmVjKSk7Ci0JCQkJdXRfYWQoaWJ1Zl9y ZWNfZ2V0X3BhZ2Vfbm8ocmVjKSA9PSBwYWdlX25vKTsKLQkJCQl1dF9hZChpYnVmX3JlY19nZXRf c3BhY2UocmVjKSA9PSBzcGFjZSk7CisJCQkJdXRfYWQoaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm8oJm10 ciwgcmVjKQorCQkJCSAgICAgID09IHBhZ2Vfbm8pOworCQkJCXV0X2FkKGlidWZfcmVjX2dldF9z cGFjZSgmbXRyLCByZWMpID09IHNwYWNlKTsKIAogCQkJCWJ0cl9wY3VyX3N0b3JlX3Bvc2l0aW9u KCZwY3VyLCAmbXRyKTsKLQkJCQlidHJfcGN1cl9jb21taXRfc3BlY2lmeV9tdHIoJnBjdXIsICZt dHIpOworCQkJCWlidWZfYnRyX3BjdXJfY29tbWl0X3NwZWNpZnlfbXRyKCZwY3VyLCAmbXRyKTsK IAotCQkJCW10cl9zdGFydCgmbXRyKTsKKwkJCQlpYnVmX210cl9zdGFydCgmbXRyKTsKIAogCQkJ CXN1Y2Nlc3MgPSBidWZfcGFnZV9nZXRfa25vd25fbm93YWl0KAogCQkJCQlSV19YX0xBVENILCBi bG9jaywKQEAgLTQ2NjUsNyArNDcyNyw4IEBAIGxvb3A6CiAJCQkJCQkgICAgICBCVFJfTU9ESUZZ X0xFQUYsCiAJCQkJCQkgICAgICAmcGN1ciwgJm10cikpIHsKIAotCQkJCQltdHJfY29tbWl0KCZt dHIpOworCQkJCQl1dF9hZCghaWJ1Zl9pbnNpZGUoJm10cikpOworCQkJCQl1dF9hZChtdHIuc3Rh dGUgPT0gTVRSX0NPTU1JVFRFRCk7CiAJCQkJCW1vcHNbb3BdKys7CiAJCQkJCWlidWZfZHVtbXlf aW5kZXhfZnJlZShkdW1teV9pbmRleCk7CiAJCQkJCWdvdG8gbG9vcDsKQEAgLTQ2ODAsNyArNDc0 Myw3IEBAIGxvb3A6CiAKIAkJCWlidWZfZHVtbXlfaW5kZXhfZnJlZShkdW1teV9pbmRleCk7CiAJ CX0gZWxzZSB7Ci0JCQlkb3BzW2lidWZfcmVjX2dldF9vcF90eXBlKHJlYyldKys7CisJCQlkb3Bz W2lidWZfcmVjX2dldF9vcF90eXBlKCZtdHIsIHJlYyldKys7CiAJCX0KIAogCQkvKiBEZWxldGUg dGhlIHJlY29yZCBmcm9tIGlidWYgKi8KQEAgLTQ2OTEsNyArNDc1NCw3IEBAIGxvb3A6CiAKIAkJ CWdvdG8gbG9vcDsKIAkJfSBlbHNlIGlmIChidHJfcGN1cl9pc19hZnRlcl9sYXN0X29uX3BhZ2Uo JnBjdXIpKSB7Ci0JCQltdHJfY29tbWl0KCZtdHIpOworCQkJaWJ1Zl9tdHJfY29tbWl0KCZtdHIp OwogCQkJYnRyX3BjdXJfY2xvc2UoJnBjdXIpOwogCiAJCQlnb3RvIGxvb3A7CkBAIC00NzI1LDcg KzQ3ODgsNyBAQCByZXNldF9iaXQ6CiAJCX0KIAl9CiAKLQltdHJfY29tbWl0KCZtdHIpOworCWli dWZfbXRyX2NvbW1pdCgmbXRyKTsKIAlidHJfcGN1cl9jbG9zZSgmcGN1cik7CiAJbWVtX2hlYXBf ZnJlZShoZWFwKTsKIApAQCAtNDc0OSw4ICs0ODEyLDYgQEAgcmVzZXRfYml0OgogCQlmaWxfZGVj cl9wZW5kaW5nX2lidWZfbWVyZ2VzKHNwYWNlKTsKIAl9CiAKLQlpYnVmX2V4aXQoKTsKLQogI2lm ZGVmIFVOSVZfSUJVRl9DT1VOVF9ERUJVRwogCXV0X2EoaWJ1Zl9jb3VudF9nZXQoc3BhY2UsIHBh Z2Vfbm8pID09IDApOwogI2VuZGlmCkBAIC00NzcwLDkgKzQ4MzEsOCBAQCBpYnVmX2RlbGV0ZV9m b3JfZGlzY2FyZGVkX3NwYWNlKAogCW1lbV9oZWFwX3QqCWhlYXA7CiAJYnRyX3BjdXJfdAlwY3Vy OwogCWR0dXBsZV90KglzZWFyY2hfdHVwbGU7Ci0JcmVjX3QqCQlpYnVmX3JlYzsKKwljb25zdCBy ZWNfdCoJaWJ1Zl9yZWM7CiAJdWxpbnQJCXBhZ2Vfbm87Ci0JaWJvb2wJCWNsb3NlZDsKIAltdHJf dAkJbXRyOwogCiAJLyogQ291bnRzIGZvciBkaXNjYXJkZWQgb3BlcmF0aW9ucy4gKi8KQEAgLTQ3 ODcsOSArNDg0Nyw3IEBAIGlidWZfZGVsZXRlX2Zvcl9kaXNjYXJkZWRfc3BhY2UoCiAKIAltZW1z ZXQoZG9wcywgMCwgc2l6ZW9mKGRvcHMpKTsKIGxvb3A6Ci0JaWJ1Zl9lbnRlcigpOwotCi0JbXRy X3N0YXJ0KCZtdHIpOworCWlidWZfbXRyX3N0YXJ0KCZtdHIpOwogCiAJLyogUG9zaXRpb24gcGN1 ciBpbiB0aGUgaW5zZXJ0IGJ1ZmZlciBhdCB0aGUgZmlyc3QgZW50cnkgZm9yIHRoZQogCXNwYWNl ICovCkBAIC00ODA5LDM5ICs0ODY3LDM0IEBAIGxvb3A6CiAJCWlidWZfcmVjID0gYnRyX3BjdXJf Z2V0X3JlYygmcGN1cik7CiAKIAkJLyogQ2hlY2sgaWYgdGhlIGVudHJ5IGlzIGZvciB0aGlzIHNw YWNlICovCi0JCWlmIChpYnVmX3JlY19nZXRfc3BhY2UoaWJ1Zl9yZWMpICE9IHNwYWNlKSB7CisJ CWlmIChpYnVmX3JlY19nZXRfc3BhY2UoJm10ciwgaWJ1Zl9yZWMpICE9IHNwYWNlKSB7CiAKIAkJ CWdvdG8gbGVhdmVfbG9vcDsKIAkJfQogCi0JCXBhZ2Vfbm8gPSBpYnVmX3JlY19nZXRfcGFnZV9u byhpYnVmX3JlYyk7CisJCXBhZ2Vfbm8gPSBpYnVmX3JlY19nZXRfcGFnZV9ubygmbXRyLCBpYnVm X3JlYyk7CiAKLQkJZG9wc1tpYnVmX3JlY19nZXRfb3BfdHlwZShpYnVmX3JlYyldKys7CisJCWRv cHNbaWJ1Zl9yZWNfZ2V0X29wX3R5cGUoJm10ciwgaWJ1Zl9yZWMpXSsrOwogCiAJCS8qIERlbGV0 ZSB0aGUgcmVjb3JkIGZyb20gaWJ1ZiAqLwotCQljbG9zZWQgPSBpYnVmX2RlbGV0ZV9yZWMoc3Bh Y2UsIHBhZ2Vfbm8sICZwY3VyLCBzZWFyY2hfdHVwbGUsCi0JCQkJCSAmbXRyKTsKLQkJaWYgKGNs b3NlZCkgeworCQlpZiAoaWJ1Zl9kZWxldGVfcmVjKHNwYWNlLCBwYWdlX25vLCAmcGN1ciwgc2Vh cmNoX3R1cGxlLAorCQkJCSAgICAmbXRyKSkgewogCQkJLyogRGVsZXRpb24gd2FzIHBlc3NpbWlz dGljIGFuZCBtdHIgd2FzIGNvbW1pdHRlZDoKIAkJCXdlIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmlu ZyBhZ2FpbiAqLwogCi0JCQlpYnVmX2V4aXQoKTsKLQogCQkJZ290byBsb29wOwogCQl9CiAKIAkJ aWYgKGJ0cl9wY3VyX2lzX2FmdGVyX2xhc3Rfb25fcGFnZSgmcGN1cikpIHsKLQkJCW10cl9jb21t aXQoJm10cik7CisJCQlpYnVmX210cl9jb21taXQoJm10cik7CiAJCQlidHJfcGN1cl9jbG9zZSgm cGN1cik7CiAKLQkJCWlidWZfZXhpdCgpOwotCiAJCQlnb3RvIGxvb3A7CiAJCX0KIAl9CiAKIGxl YXZlX2xvb3A6Ci0JbXRyX2NvbW1pdCgmbXRyKTsKKwlpYnVmX210cl9jb21taXQoJm10cik7CiAJ YnRyX3BjdXJfY2xvc2UoJnBjdXIpOwogCiAjaWZkZWYgSEFWRV9BVE9NSUNfQlVJTFRJTlMKQEAg LTQ4NTMsOCArNDkwNiw2IEBAIGxlYXZlX2xvb3A6CiAJbXV0ZXhfZXhpdCgmaWJ1Zl9tdXRleCk7 CiAjZW5kaWYgLyogSEFWRV9BVE9NSUNfQlVJTFRJTlMgKi8KIAotCWlidWZfZXhpdCgpOwotCiAJ bWVtX2hlYXBfZnJlZShoZWFwKTsKIH0KIApAQCAtNDg3MCwxOCArNDkyMSwxNSBAQCBpYnVmX2lz X2VtcHR5KHZvaWQpCiAJY29uc3QgcGFnZV90Kglyb290OwogCW10cl90CQltdHI7CiAKLQlpYnVm X2VudGVyKCk7Ci0JbXRyX3N0YXJ0KCZtdHIpOworCWlidWZfbXRyX3N0YXJ0KCZtdHIpOwogCiAJ bXV0ZXhfZW50ZXIoJmlidWZfbXV0ZXgpOwogCXJvb3QgPSBpYnVmX3RyZWVfcm9vdF9nZXQoJm10 cik7CiAJbXV0ZXhfZXhpdCgmaWJ1Zl9tdXRleCk7CiAKIAlpc19lbXB0eSA9IChwYWdlX2dldF9u X3JlY3Mocm9vdCkgPT0gMCk7Ci0JbXRyX2NvbW1pdCgmbXRyKTsKLQlpYnVmX2V4aXQoKTsKLQog CXV0X2EoaXNfZW1wdHkgPT0gaWJ1Zi0+ZW1wdHkpOworCWlidWZfbXRyX2NvbW1pdCgmbXRyKTsK IAogCXJldHVybihpc19lbXB0eSk7CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL2J1ZjByZWEuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1 ZjByZWEuaAlyZXZpZDprZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwMzIzMTM0NjM3LTg0N2Z6 a2JiMnQ0OWIxdTIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjByZWEuaAlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyNDEyMjQwOC00cHE0eDFsbDZpYXRxeXlu CkBAIC03MCwxMCArNzAsMTAgQEAgVU5JVl9JTlRFUk4KIHVsaW50CiBidWZfcmVhZF9haGVhZF9s aW5lYXIoCiAvKj09PT09PT09PT09PT09PT09PSovCi0JdWxpbnQJc3BhY2UsCS8qITwgaW46IHNw YWNlIGlkICovCi0JdWxpbnQJemlwX3NpemUsLyohPCBpbjogY29tcHJlc3NlZCBwYWdlIHNpemUg aW4gYnl0ZXMsIG9yIDAgKi8KLQl1bGludAlvZmZzZXQpOy8qITwgaW46IHBhZ2UgbnVtYmVyIG9m IGEgcGFnZTsgTk9URTogdGhlIGN1cnJlbnQgdGhyZWFkCi0JCQltdXN0IHdhbnQgYWNjZXNzIHRv IHRoaXMgcGFnZSAoc2VlIE5PVEUgMyBhYm92ZSkgKi8KKwl1bGludAlzcGFjZSwJCS8qITwgaW46 IHNwYWNlIGlkICovCisJdWxpbnQJemlwX3NpemUsCS8qITwgaW46IGNvbXByZXNzZWQgcGFnZSBz aXplIGluIGJ5dGVzLCBvciAwICovCisJdWxpbnQJb2Zmc2V0LAkJLyohPCBpbjogcGFnZSBudW1i ZXI7IHNlZSBOT1RFIDMgYWJvdmUgKi8KKwlpYm9vbAlpbnNpZGVfaWJ1Zik7CS8qITwgaW46IFRS VUUgaWYgd2UgYXJlIGluc2lkZSBpYnVmIHJvdXRpbmUgKi8KIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIElz c3VlcyByZWFkIHJlcXVlc3RzIGZvciBwYWdlcyB3aGljaCB0aGUgaWJ1ZiBtb2R1bGUgd2FudHMg dG8gcmVhZCBpbiwgaW4KIG9yZGVyIHRvIGNvbnRyYWN0IHRoZSBpbnNlcnQgYnVmZmVyIHRyZWUu IFRlY2huaWNhbGx5LCB0aGlzIGZ1bmN0aW9uIGlzIGxpa2UKCj09PSBtb2RpZmllZCBmaWxlICdz dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvaWJ1ZjBpYnVmLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9pYnVmMGlidWYuaAlyZXZpZDprZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEw MzIzMTM0NjM3LTg0N2Z6a2JiMnQ0OWIxdTIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L2lidWYwaWJ1Zi5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMzI0MTIyNDA4 LTRwcTR4MWxsNmlhdHF5eW4KQEAgLTExNiw2ICsxMTYsMjIgQEAgVU5JVl9JTlRFUk4KIHZvaWQK IGlidWZfdXBkYXRlX21heF90YWJsZXNwYWNlX2lkKHZvaWQpOwogLyo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ki8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitTdGFydHMgYW4gaW5zZXJ0IGJ1ZmZlciBt aW5pLXRyYW5zYWN0aW9uLiAqLworVU5JVl9JTkxJTkUKK3ZvaWQKK2lidWZfbXRyX3N0YXJ0KAor Lyo9PT09PT09PT09PSovCisJbXRyX3QqCW10cikJLyohPCBvdXQ6IG1pbmktdHJhbnNhY3Rpb24g Ki8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ29tbWl0cyBhbiBp bnNlcnQgYnVmZmVyIG1pbmktdHJhbnNhY3Rpb24uICovCitVTklWX0lOTElORQordm9pZAoraWJ1 Zl9tdHJfY29tbWl0KAorLyo9PT09PT09PT09PT0qLworCW10cl90KgltdHIpCS8qITwgaW4vb3V0 OiBtaW5pLXRyYW5zYWN0aW9uICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOwogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIEluaXRpYWxpemVzIGFuIGlidWYgYml0bWFwIHBhZ2UuICovCiBVTklWX0lO VEVSTgpAQCAtMjM2LDEwICsyNTIsMTIgQEAgcm91dGluZS4KIEZvciBpbnN0YW5jZSwgYSByZWFk LWFoZWFkIG9mIG5vbi1pYnVmIHBhZ2VzIGlzIGZvcmJpZGRlbiBieSB0aHJlYWRzCiB0aGF0IGFy ZSBleGVjdXRpbmcgYW4gaW5zZXJ0IGJ1ZmZlciByb3V0aW5lLgogQHJldHVybiBUUlVFIGlmIGlu c2lkZSBhbiBpbnNlcnQgYnVmZmVyIHJvdXRpbmUgKi8KLVVOSVZfSU5URVJOCitVTklWX0lOTElO RQogaWJvb2wKLWlidWZfaW5zaWRlKHZvaWQpOwotLyo9PT09PT09PT09PT09Ki8KK2lidWZfaW5z aWRlKAorLyo9PT09PT09PSovCisJY29uc3QgbXRyX3QqCW10cikJLyohPCBpbjogbWluaS10cmFu c2FjdGlvbiAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHB1cmUpKTsKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIENoZWNrcyBpZiBhIHBhZ2UgYWRkcmVzcyBpcyBhbiBpYnVmIGJpdG1hcCBwYWdl IChsZXZlbCAzIHBhZ2UpIGFkZHJlc3MuCiBAcmV0dXJuCVRSVUUgaWYgYSBiaXRtYXAgcGFnZSAq LwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9pYnVmMGlidWYu aWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9pYnVmMGlidWYuaWMJcmV2aWQ6a2V2 aW4ubGV3aXNAb3JhY2xlLmNvbS0yMDExMDMyMzEzNDYzNy04NDdmemtiYjJ0NDliMXUyCisrKyBi L3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9pYnVmMGlidWYuaWMJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMTAzMjQxMjI0MDgtNHBxNHgxbGw2aWF0cXl5bgpAQCAtMzcsNiArMzcs MzAgQEAgYnVmZmVyIGluc2VydHMgdG8gdGhpcyBwYWdlLiAgSWYgdGhlcmUgaQogY29ycmVzcG9u ZGluZyBiaXRzIGFyZSBzZXQgaW4gdGhlIGlidWYgYml0bWFwLiAqLwogI2RlZmluZSBJQlVGX1BB R0VfU0laRV9QRVJfRlJFRV9TUEFDRQkzMgogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorU3RhcnRzIGFuIGluc2Vy dCBidWZmZXIgbWluaS10cmFuc2FjdGlvbi4gKi8KK1VOSVZfSU5MSU5FCit2b2lkCitpYnVmX210 cl9zdGFydCgKKy8qPT09PT09PT09PT0qLworCW10cl90KgltdHIpCS8qITwgb3V0OiBtaW5pLXRy YW5zYWN0aW9uICovCit7CisJbXRyX3N0YXJ0KG10cik7CisJbXRyLT5pbnNpZGVfaWJ1ZiA9IFRS VUU7Cit9CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgorQ29tbWl0cyBhbiBpbnNlcnQgYnVmZmVyIG1pbmktdHJhbnNh Y3Rpb24uICovCitVTklWX0lOTElORQordm9pZAoraWJ1Zl9tdHJfY29tbWl0KAorLyo9PT09PT09 PT09PT0qLworCW10cl90KgltdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCit7 CisJdXRfYWQobXRyLT5pbnNpZGVfaWJ1Zik7CisJdXRfZChtdHItPmluc2lkZV9pYnVmID0gRkFM U0UpOworCW10cl9jb21taXQobXRyKTsKK30KKwogLyoqIEluc2VydCBidWZmZXIgc3RydWN0ICov CiBzdHJ1Y3QgaWJ1Zl9zdHJ1Y3R7CiAJdWxpbnQJCXNpemU7CQkvKiE8IGN1cnJlbnQgc2l6ZSBv ZiB0aGUgaWJ1ZiBpbmRleApAQCAtMTIxLDYgKzE0NSwyMiBAQCBpYnVmX3Nob3VsZF90cnkoCiAJ cmV0dXJuKEZBTFNFKTsKIH0KIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK1JldHVybnMgVFJVRSBpZiB0aGUg Y3VycmVudCBPUyB0aHJlYWQgaXMgcGVyZm9ybWluZyBhbiBpbnNlcnQgYnVmZmVyCityb3V0aW5l LgorCitGb3IgaW5zdGFuY2UsIGEgcmVhZC1haGVhZCBvZiBub24taWJ1ZiBwYWdlcyBpcyBmb3Ji aWRkZW4gYnkgdGhyZWFkcwordGhhdCBhcmUgZXhlY3V0aW5nIGFuIGluc2VydCBidWZmZXIgcm91 dGluZS4KK0ByZXR1cm4gVFJVRSBpZiBpbnNpZGUgYW4gaW5zZXJ0IGJ1ZmZlciByb3V0aW5lICov CitVTklWX0lOTElORQoraWJvb2wKK2lidWZfaW5zaWRlKAorLyo9PT09PT09PSovCisJY29uc3Qg bXRyX3QqCW10cikJLyohPCBpbjogbWluaS10cmFuc2FjdGlvbiAqLworeworCXJldHVybihtdHIt Pmluc2lkZV9pYnVmKTsKK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogQ2hlY2tzIGlmIGEgcGFn ZSBhZGRyZXNzIGlzIGFuIGlidWYgYml0bWFwIHBhZ2UgYWRkcmVzcy4KIEByZXR1cm4JVFJVRSBp ZiBhIGJpdG1hcCBwYWdlICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL210cjBtdHIuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL210cjBtdHIu aAlyZXZpZDprZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwMzIzMTM0NjM3LTg0N2Z6a2JiMnQ0 OWIxdTIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL210cjBtdHIuaAlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMyNDEyMjQwOC00cHE0eDFsbDZpYXRxeXluCkBAIC0x OTMsMjEgKzE5MywyMSBAQCBmdW5jdGlvbnMpLiAgVGhlIHBhZ2UgbnVtYmVyIHBhcmFtZXRlciB3 CiAjaW5jbHVkZSAibG9nMGxvZy5oIgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotU3RhcnRzIGEgbWluaS10cmFu c2FjdGlvbiBhbmQgY3JlYXRlcyBhIG1pbmktdHJhbnNhY3Rpb24gaGFuZGxlCi1hbmQgYnVmZmVy IGluIHRoZSBtZW1vcnkgYnVmZmVyIGdpdmVuIGJ5IHRoZSBjYWxsZXIuCi1AcmV0dXJuCW10ciBi dWZmZXIgd2hpY2ggYWxzbyBhY3RzIGFzIHRoZSBtdHIgaGFuZGxlICovCitTdGFydHMgYSBtaW5p LXRyYW5zYWN0aW9uLiAqLwogVU5JVl9JTkxJTkUKLW10cl90Kgordm9pZAogbXRyX3N0YXJ0KAog Lyo9PT09PT0qLwotCW10cl90KgltdHIpOwkvKiE8IGluOiBtZW1vcnkgYnVmZmVyIGZvciB0aGUg bXRyIGJ1ZmZlciAqLworCW10cl90KgltdHIpCS8qITwgb3V0OiBtaW5pLXRyYW5zYWN0aW9uICov CisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIENvbW1pdHMgYSBtaW5p LXRyYW5zYWN0aW9uLiAqLwogVU5JVl9JTlRFUk4KIHZvaWQKIG10cl9jb21taXQoCiAvKj09PT09 PT0qLwotCW10cl90KgltdHIpOwkvKiE8IGluOiBtaW5pLXRyYW5zYWN0aW9uICovCisJbXRyX3Qq CW10cikJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KKwlfX2F0dHJpYnV0ZV9fKChu b25udWxsKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKIFNldHMgYW5kIHJldHVybnMgYSBzYXZlcG9pbnQgaW4gbXRyLgog QHJldHVybglzYXZlcG9pbnQgKi8KQEAgLTM4MSw2ICszODEsOCBAQCBzdHJ1Y3QgbXRyX3N0cnVj dHsKICNlbmRpZgogCWR5bl9hcnJheV90CW1lbW87CS8qITwgbWVtbyBzdGFjayBmb3IgbG9ja3Mg ZXRjLiAqLwogCWR5bl9hcnJheV90CWxvZzsJLyohPCBtaW5pLXRyYW5zYWN0aW9uIGxvZyAqLwor CWlib29sCQlpbnNpZGVfaWJ1ZjsKKwkJCQkvKiE8IFRSVUUgaWYgaW5zaWRlIGlidWYgY2hhbmdl cyAqLwogCWlib29sCQltb2RpZmljYXRpb25zOwogCQkJCS8qIFRSVUUgaWYgdGhlIG10ciBtYWRl IG1vZGlmaWNhdGlvbnMgdG8KIAkJCQlidWZmZXIgcG9vbCBwYWdlcyAqLwoKPT09IG1vZGlmaWVk IGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9tdHIwbXRyLmljJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvbXRyMG10ci5pYwlyZXZpZDprZXZpbi5sZXdpc0BvcmFjbGUuY29t LTIwMTEwMzIzMTM0NjM3LTg0N2Z6a2JiMnQ0OWIxdTIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL210cjBtdHIuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAzMjQx MjI0MDgtNHBxNHgxbGw2aWF0cXl5bgpAQCAtMzAsMjYgKzMwLDIzIEBAIENyZWF0ZWQgMTEvMjYv MTk5NSBIZWlra2kgVHV1cmkKICNpbmNsdWRlICJtYWNoMGRhdGEuaCIKIAogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK LVN0YXJ0cyBhIG1pbmktdHJhbnNhY3Rpb24gYW5kIGNyZWF0ZXMgYSBtaW5pLXRyYW5zYWN0aW9u IGhhbmRsZQotYW5kIGEgYnVmZmVyIGluIHRoZSBtZW1vcnkgYnVmZmVyIGdpdmVuIGJ5IHRoZSBj YWxsZXIuCi1AcmV0dXJuCW10ciBidWZmZXIgd2hpY2ggYWxzbyBhY3RzIGFzIHRoZSBtdHIgaGFu ZGxlICovCitTdGFydHMgYSBtaW5pLXRyYW5zYWN0aW9uLiAqLwogVU5JVl9JTkxJTkUKLW10cl90 Kgordm9pZAogbXRyX3N0YXJ0KAogLyo9PT09PT0qLwotCW10cl90KgltdHIpCS8qITwgaW46IG1l bW9yeSBidWZmZXIgZm9yIHRoZSBtdHIgYnVmZmVyICovCisJbXRyX3QqCW10cikJLyohPCBvdXQ6 IG1pbmktdHJhbnNhY3Rpb24gKi8KIHsKIAlkeW5fYXJyYXlfY3JlYXRlKCYobXRyLT5tZW1vKSk7 CiAJZHluX2FycmF5X2NyZWF0ZSgmKG10ci0+bG9nKSk7CiAKIAltdHItPmxvZ19tb2RlID0gTVRS X0xPR19BTEw7CiAJbXRyLT5tb2RpZmljYXRpb25zID0gRkFMU0U7CisJbXRyLT5pbnNpZGVfaWJ1 ZiA9IEZBTFNFOwogCW10ci0+bl9sb2dfcmVjcyA9IDA7CiAKIAl1dF9kKG10ci0+c3RhdGUgPSBN VFJfQUNUSVZFKTsKIAl1dF9kKG10ci0+bWFnaWNfbiA9IE1UUl9NQUdJQ19OKTsKLQotCXJldHVy bihtdHIpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9zeW5jMHN5bmMuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3N5bmMwc3luYy5o CXJldmlkOmtldmluLmxld2lzQG9yYWNsZS5jb20tMjAxMTAzMjMxMzQ2MzctODQ3ZnprYmIydDQ5 YjF1MgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvc3luYzBzeW5jLmgJcmV2aWQ6bWFy a28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAzMjQxMjI0MDgtNHBxNHgxbGw2aWF0cXl5bgpAQCAt MTA4LDcgKzEwOCw2IEBAIGV4dGVybiBteXNxbF9wZnNfa2V5X3QJc3luX2Fycl9tdXRleF9rZXkK IGV4dGVybiBteXNxbF9wZnNfa2V5X3QJc3luY190aHJlYWRfbXV0ZXhfa2V5OwogIyBlbmRpZiAv KiBVTklWX1NZTkNfREVCVUcgKi8KIGV4dGVybiBteXNxbF9wZnNfa2V5X3QJdHJ4X2RvdWJsZXdy aXRlX211dGV4X2tleTsKLWV4dGVybiBteXNxbF9wZnNfa2V5X3QJdGhyX2xvY2FsX211dGV4X2tl eTsKIGV4dGVybiBteXNxbF9wZnNfa2V5X3QJdHJ4X3VuZG9fbXV0ZXhfa2V5OwogZXh0ZXJuIG15 c3FsX3Bmc19rZXlfdAl0cnhfbXV0ZXhfa2V5OwogZXh0ZXJuIG15c3FsX3Bmc19rZXlfdAlsb2Nr X3N5c19tdXRleF9rZXk7Cgo9PT0gcmVtb3ZlZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvdGhyMGxvYy5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdGhyMGxvYy5oCXJl dmlkOmtldmluLmxld2lzQG9yYWNsZS5jb20tMjAxMTAzMjMxMzQ2MzctODQ3ZnprYmIydDQ5YjF1 MgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdGhyMGxvYy5oCTE5NzAtMDEtMDEgMDA6 MDA6MDAgKzAwMDAKQEAgLTEsNzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLUNv cHlyaWdodCAoYykgMTk5NSwgMjAwOSwgSW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu Ci0KLVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi10aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQotRm91bmRhdGlv bjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgotCi1UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKLUFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTCi1GT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcg d2l0aAotdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZQotUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw MjExMS0xMzA3IFVTQQotCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotQGZpbGUgaW5jbHVkZS90 aHIwbG9jLmgKLVRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZQotCi1DcmVhdGVkIDEwLzUvMTk5NSBI ZWlra2kgVHV1cmkKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCi0KLS8qIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgc3RvcmFnZSBwcml2YXRl IHRvIGVhY2ggdGhyZWFkLAotYSBjYXBhYmlsaXR5IHVzZWZ1bCBpbiBzb21lIHNpdHVhdGlvbnMg bGlrZSBzdG9yaW5nIHRoZQotT1MgaGFuZGxlIHRvIHRoZSBjdXJyZW50IHRocmVhZCwgb3IgaXRz IHByaW9yaXR5LiAqLwotCi0jaWZuZGVmIHRocjBsb2NfaAotI2RlZmluZSB0aHIwbG9jX2gKLQot I2luY2x1ZGUgInVuaXYuaSIKLSNpbmNsdWRlICJvczB0aHJlYWQuaCIKLQotLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq Ci1Jbml0aWFsaXplcyB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgbW9kdWxlLiAqLwotVU5JVl9J TlRFUk4KLXZvaWQKLXRocl9sb2NhbF9pbml0KHZvaWQpOwotLyo9PT09PT09PT09PT09PT09Ki8K LSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKLUNsb3NlIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSBtb2R1bGUuICov Ci1VTklWX0lOVEVSTgotdm9pZAotdGhyX2xvY2FsX2Nsb3NlKHZvaWQpOwotLyo9PT09PT09PT09 PT09PT09PSovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKLUNyZWF0ZXMgYSBsb2NhbCBzdG9yYWdlIHN0cnVj dCBmb3IgdGhlIGNhbGxpbmcgbmV3IHRocmVhZC4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi10aHJf bG9jYWxfY3JlYXRlKHZvaWQpOwotLyo9PT09PT09PT09PT09PT09PT0qLwotLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCi1GcmVlcyB0aGUgbG9jYWwgc3RvcmFnZSBzdHJ1Y3QgZm9yIHRoZSBzcGVjaWZpZWQgdGhy ZWFkLiAqLwotVU5JVl9JTlRFUk4KLXZvaWQKLXRocl9sb2NhbF9mcmVlKAotLyo9PT09PT09PT09 PSovCi0Jb3NfdGhyZWFkX2lkX3QJaWQpOwkvKiE8IGluOiB0aHJlYWQgaWQgKi8KLS8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgotUmV0dXJucyBwb2ludGVyIHRvIHRoZSAnaW5faWJ1ZicgZmllbGQgd2l0aGluIHRo ZSBjdXJyZW50IHRocmVhZCBsb2NhbAotc3RvcmFnZS4KLUByZXR1cm4JcG9pbnRlciB0byB0aGUg aW5faWJ1ZiBmaWVsZCAqLwotVU5JVl9JTlRFUk4KLWlib29sKgotdGhyX2xvY2FsX2dldF9pbl9p YnVmX2ZpZWxkKHZvaWQpOwotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0KLSNp Zm5kZWYgVU5JVl9OT05JTkwKLSNpbmNsdWRlICJ0aHIwbG9jLmljIgotI2VuZGlmCi0KLSNlbmRp ZgoKPT09IHJlbW92ZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RocjBsb2MuaWMn Ci0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90aHIwbG9jLmljCXJldmlkOmtldmluLmxl d2lzQG9yYWNsZS5jb20tMjAxMTAzMjMxMzQ2MzctODQ3ZnprYmIydDQ5YjF1MgorKysgYi9zdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvdGhyMGxvYy5pYwkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAw CkBAIC0xLDI0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi1Db3B5cmlnaHQgKGMp IDE5OTUsIDIwMDksIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotCi1UaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdCB1bmRlcgotdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLUZvdW5kYXRpb247IHZlcnNpb24g MiBvZiB0aGUgTGljZW5zZS4KLQotVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCi1BTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUwotRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKLXRoaXMg cHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUKLVBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBV U0EKLQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUBmaWxlIGluY2x1ZGUvdGhyMGxvYy5pYwot VGhyZWFkIGxvY2FsIHN0b3JhZ2UKLQotQ3JlYXRlZCAxMC80LzE5OTUgSGVpa2tpIFR1dXJpCi0q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvbXRyL210cjBtdHIuYycKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9tdHIvbXRyMG10ci5jCXJldmlkOmtldmluLmxld2lzQG9yYWNsZS5j b20tMjAxMTAzMjMxMzQ2MzctODQ3ZnprYmIydDQ5YjF1MgorKysgYi9zdG9yYWdlL2lubm9iYXNl L210ci9tdHIwbXRyLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAzMjQxMjI0 MDgtNHBxNHgxbGw2aWF0cXl5bgpAQCAtMjUzLDYgKzI1Myw3IEBAIG10cl9jb21taXQoCiAJdXRf YWQobXRyKTsKIAl1dF9hZChtdHItPm1hZ2ljX24gPT0gTVRSX01BR0lDX04pOwogCXV0X2FkKG10 ci0+c3RhdGUgPT0gTVRSX0FDVElWRSk7CisJdXRfYWQoIW10ci0+aW5zaWRlX2lidWYpOwogCXV0 X2QobXRyLT5zdGF0ZSA9IE1UUl9DT01NSVRUSU5HKTsKIAogI2lmbmRlZiBVTklWX0hPVEJBQ0tV UAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzcnYuYycKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHNydi5jCXJldmlkOmtldmluLmxld2lzQG9yYWNs ZS5jb20tMjAxMTAzMjMxMzQ2MzctODQ3ZnprYmIydDQ5YjF1MgorKysgYi9zdG9yYWdlL2lubm9i YXNlL3Nydi9zcnYwc3J2LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAzMjQx MjI0MDgtNHBxNHgxbGw2aWF0cXl5bgpAQCAtNDcsNyArNDcsNiBAQCBDcmVhdGVkIDEwLzgvMTk5 NSBIZWlra2kgVHV1cmkKICNpbmNsdWRlICJtZW0wbWVtLmgiCiAjaW5jbHVkZSAibWVtMHBvb2wu aCIKICNpbmNsdWRlICJzeW5jMHN5bmMuaCIKLSNpbmNsdWRlICJ0aHIwbG9jLmgiCiAjaW5jbHVk ZSAicXVlMHF1ZS5oIgogI2luY2x1ZGUgImxvZzByZWN2LmgiCiAjaW5jbHVkZSAicGFyczBwYXJz LmgiCkBAIC0xMDMwLDcgKzEwMjksNiBAQCBzcnZfZ2VuZXJhbF9pbml0KHZvaWQpCiAJb3Nfc3lu Y19pbml0KCk7CiAJc3luY19pbml0KCk7CiAJbWVtX2luaXQoc3J2X21lbV9wb29sX3NpemUpOwot CXRocl9sb2NhbF9pbml0KCk7CiAJcXVlX2luaXQoKTsKIAlyb3dfbXlzcWxfaW5pdCgpOwogfQoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5jJwotLS0g YS9zdG9yYWdlL2lubm9iYXNlL3Nydi9zcnYwc3RhcnQuYwlyZXZpZDprZXZpbi5sZXdpc0BvcmFj bGUuY29tLTIwMTEwMzIzMTM0NjM3LTg0N2Z6a2JiMnQ0OWIxdTIKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS9zcnYvc3J2MHN0YXJ0LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAz MjQxMjI0MDgtNHBxNHgxbGw2aWF0cXl5bgpAQCAtODUsNyArODUsNiBAQCBDcmVhdGVkIDIvMTYv MTk5NiBIZWlra2kgVHV1cmkKICMgaW5jbHVkZSAicm93MHJvdy5oIgogIyBpbmNsdWRlICJyb3cw bXlzcWwuaCIKICMgaW5jbHVkZSAiYnRyMHBjdXIuaCIKLSMgaW5jbHVkZSAidGhyMGxvYy5oIgog IyBpbmNsdWRlICJvczBzeW5jLmgiIC8qIGZvciBJTk5PREJfUldfTE9DS1NfVVNFX0FUT01JQ1Mg Ki8KICMgaW5jbHVkZSAiemxpYi5oIiAvKiBmb3IgWkxJQl9WRVJTSU9OICovCiAKQEAgLTIyNjAs NyArMjI1OSw2IEBAIGlubm9iYXNlX3NodXRkb3duX2Zvcl9teXNxbCh2b2lkKQogCWlidWZfY2xv c2UoKTsKIAlsb2dfc2h1dGRvd24oKTsKIAlsb2NrX3N5c19jbG9zZSgpOwotCXRocl9sb2NhbF9j bG9zZSgpOwogCXRyeF9zeXNfZmlsZV9mb3JtYXRfY2xvc2UoKTsKIAl0cnhfc3lzX2Nsb3NlKCk7 CiAKCj09PSByZW1vdmVkIGRpcmVjdG9yeSAnc3RvcmFnZS9pbm5vYmFzZS90aHInCj09PSByZW1v dmVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvdGhyL3RocjBsb2MuYycKLS0tIGEvc3RvcmFnZS9p bm5vYmFzZS90aHIvdGhyMGxvYy5jCXJldmlkOmtldmluLmxld2lzQG9yYWNsZS5jb20tMjAxMTAz MjMxMzQ2MzctODQ3ZnprYmIydDQ5YjF1MgorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Roci90aHIw bG9jLmMJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMApAQCAtMSwyNTkgKzAsMCBAQAotLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCi0KLUNvcHlyaWdodCAoYykgMTk5NSwgMjAwOSwgSW5ub2Jhc2UgT3ku IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0KLVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi10aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZQotRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgotCi1UaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwgYnV0IFdJVEhPVVQKLUFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCi1GT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLQotWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAotdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZQotUGxhY2UsIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQotCi0qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgotQGZpbGUgdGhyL3RocjBsb2MuYwotVGhlIHRocmVhZCBsb2NhbCBzdG9yYWdlCi0KLUNy ZWF0ZWQgMTAvNS8xOTk1IEhlaWtraSBUdXVyaQotKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2luY2x1ZGUgInRocjBsb2MuaCIKLSNp ZmRlZiBVTklWX05PTklOTAotI2luY2x1ZGUgInRocjBsb2MuaWMiCi0jZW5kaWYKLQotI2luY2x1 ZGUgInN5bmMwc3luYy5oIgotI2luY2x1ZGUgImhhc2gwaGFzaC5oIgotI2luY2x1ZGUgIm1lbTBt ZW0uaCIKLSNpbmNsdWRlICJzcnYwc3J2LmgiCi0KLS8qCi0JSU1QTEVNRU5UQVRJT04gT0YgVEhS RUFEIExPQ0FMIFNUT1JBR0UKLQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotCi1UaGUgdGhyZWFkcyBzb21ldGltZXMgbmVlZCBwcml2YXRlIGRhdGEgd2hpY2ggZGVwZW5k cyBvbiB0aGUgdGhyZWFkIGlkLgotVGhpcyBpcyBpbXBsZW1lbnRlZCBhcyBhIGhhc2ggdGFibGUs IHdoZXJlIHRoZSBoYXNoIHZhbHVlIGlzIGNhbGN1bGF0ZWQKLWZyb20gdGhlIHRocmVhZCBpZCwg dG8gcHJlcGFyZSBmb3IgYSBsYXJnZSBudW1iZXIgb2YgdGhyZWFkcy4gVGhlIGhhc2ggdGFibGUK LWlzIHByb3RlY3RlZCBieSBhIG11dGV4LiBJZiB5b3UgbmVlZCBtb2RpZnkgdGhlIHByb2dyYW0g YW5kIHB1dCBuZXcgZGF0YSB0bwotdGhlIHRocmVhZCBsb2NhbCBzdG9yYWdlLCBqdXN0IGFkZCBp dCB0byBzdHJ1Y3QgdGhyX2xvY2FsX3N0cnVjdCBpbiB0aGUKLWhlYWRlciBmaWxlLiAqLwotCi0v KiogTXV0ZXggcHJvdGVjdGluZyB0aHJfbG9jYWxfaGFzaCAqLwotc3RhdGljIG11dGV4X3QJCXRo cl9sb2NhbF9tdXRleDsKLQotLyoqIFRoZSBoYXNoIHRhYmxlLiBUaGUgbW9kdWxlIGlzIG5vdCB5 ZXQgaW5pdGlhbGl6ZWQgd2hlbiBpdCBpcyBOVUxMLiAqLwotc3RhdGljIGhhc2hfdGFibGVfdCoJ dGhyX2xvY2FsX2hhc2gJPSBOVUxMOwotCi0vKiogVGhyZWFkIGxvY2FsIGRhdGEgKi8KLXR5cGVk ZWYgc3RydWN0IHRocl9sb2NhbF9zdHJ1Y3QgdGhyX2xvY2FsX3Q7Ci0KLSNpZmRlZiBVTklWX1BG U19NVVRFWAotLyogS2V5IHRvIHJlZ2lzdGVyIHRoZSBtdXRleCB3aXRoIHBlcmZvcm1hbmNlIHNj aGVtYSAqLwotVU5JVl9JTlRFUk4gbXlzcWxfcGZzX2tleV90CXRocl9sb2NhbF9tdXRleF9rZXk7 Ci0jZW5kaWYgLyogVU5JVl9QRlNfTVVURVggKi8KLQotLyoqIEBicmllZiBUaHJlYWQgbG9jYWwg ZGF0YS4KLVRoZSBwcml2YXRlIGRhdGEgZm9yIGVhY2ggdGhyZWFkIHNob3VsZCBiZSBwdXQgdG8K LXRoZSBzdHJ1Y3R1cmUgYmVsb3cgYW5kIHRoZSBhY2Nlc3NvciBmdW5jdGlvbnMgd3JpdHRlbgot Zm9yIHRoZSBmaWVsZC4gKi8KLXN0cnVjdCB0aHJfbG9jYWxfc3RydWN0ewotCW9zX3RocmVhZF9p ZF90CWlkOwkvKiE8IGlkIG9mIHRoZSB0aHJlYWQgd2hpY2ggb3ducyB0aGlzIHN0cnVjdCAqLwot CW9zX3RocmVhZF90CWhhbmRsZTsJLyohPCBvcGVyYXRpbmcgc3lzdGVtIGhhbmRsZSB0byB0aGUg dGhyZWFkICovCi0JaWJvb2wJCWluX2lidWY7LyohPCBUUlVFIGlmIHRoZSB0aHJlYWQgaXMgZG9p bmcgYW4gaWJ1ZgotCQkJCW9wZXJhdGlvbiAqLwotCWhhc2hfbm9kZV90CWhhc2g7CS8qITwgaGFz aCBjaGFpbiBub2RlICovCi0JdWxpbnQJCW1hZ2ljX247LyohPCBtYWdpYyBudW1iZXIgKFRIUl9M T0NBTF9NQUdJQ19OKSAqLwotfTsKLQotLyoqIFRoZSB2YWx1ZSBvZiB0aHJfbG9jYWxfc3RydWN0 OjptYWdpY19uICovCi0jZGVmaW5lIFRIUl9MT0NBTF9NQUdJQ19OCTEyMzEyMzQKLQotI2lmZGVm IFVOSVZfREVCVUcKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotVmFsaWRhdGVzIHRocmVhZCBsb2NhbCBkYXRh LgotQHJldHVybglUUlVFIGlmIHZhbGlkICovCi1zdGF0aWMKLWlib29sCi10aHJfbG9jYWxfdmFs aWRhdGUoCi0vKj09PT09PT09PT09PT09PSovCi0JY29uc3QgdGhyX2xvY2FsX3QqCWxvY2FsKQkv KiE8IGluOiBkYXRhIHRvIHZhbGlkYXRlICovCi17Ci0JdXRfYWQobG9jYWwtPm1hZ2ljX24gPT0g VEhSX0xPQ0FMX01BR0lDX04pOwotCXV0X2FkKGxvY2FsLT5pbl9pYnVmID09IEZBTFNFIHx8IGxv Y2FsLT5pbl9pYnVmID09IFRSVUUpOwotCXJldHVybihUUlVFKTsKLX0KLSNlbmRpZiAvKiBVTklW X0RFQlVHICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotUmV0dXJucyB0aGUgbG9jYWwgc3RvcmFnZSBz dHJ1Y3QgZm9yIGEgdGhyZWFkLgotQHJldHVybglsb2NhbCBzdG9yYWdlICovCi1zdGF0aWMKLXRo cl9sb2NhbF90KgotdGhyX2xvY2FsX2dldCgKLS8qPT09PT09PT09PSovCi0Jb3NfdGhyZWFkX2lk X3QJaWQpCS8qITwgaW46IHRocmVhZCBpZCBvZiB0aGUgdGhyZWFkICovCi17Ci0JdGhyX2xvY2Fs X3QqCWxvY2FsOwotCi10cnlfYWdhaW46Ci0JdXRfYWQodGhyX2xvY2FsX2hhc2gpOwotCXV0X2Fk KG11dGV4X293bigmdGhyX2xvY2FsX211dGV4KSk7Ci0KLQkvKiBMb29rIGZvciB0aGUgbG9jYWwg c3RydWN0IGluIHRoZSBoYXNoIHRhYmxlICovCi0KLQlsb2NhbCA9IE5VTEw7Ci0KLQlIQVNIX1NF QVJDSChoYXNoLCB0aHJfbG9jYWxfaGFzaCwgb3NfdGhyZWFkX3BmKGlkKSwKLQkJICAgIHRocl9s b2NhbF90KiwgbG9jYWwsIHV0X2FkKHRocl9sb2NhbF92YWxpZGF0ZShsb2NhbCkpLAotCQkgICAg b3NfdGhyZWFkX2VxKGxvY2FsLT5pZCwgaWQpKTsKLQlpZiAobG9jYWwgPT0gTlVMTCkgewotCQlt dXRleF9leGl0KCZ0aHJfbG9jYWxfbXV0ZXgpOwotCi0JCXRocl9sb2NhbF9jcmVhdGUoKTsKLQot CQltdXRleF9lbnRlcigmdGhyX2xvY2FsX211dGV4KTsKLQotCQlnb3RvIHRyeV9hZ2FpbjsKLQl9 Ci0KLQl1dF9hZCh0aHJfbG9jYWxfdmFsaWRhdGUobG9jYWwpKTsKLQotCXJldHVybihsb2NhbCk7 Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgotUmV0dXJucyBwb2ludGVyIHRvIHRoZSAnaW5faWJ1Zicg ZmllbGQgd2l0aGluIHRoZSBjdXJyZW50IHRocmVhZCBsb2NhbAotc3RvcmFnZS4KLUByZXR1cm4J cG9pbnRlciB0byB0aGUgaW5faWJ1ZiBmaWVsZCAqLwotVU5JVl9JTlRFUk4KLWlib29sKgotdGhy X2xvY2FsX2dldF9pbl9pYnVmX2ZpZWxkKHZvaWQpCi0vKj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ki8KLXsKLQl0aHJfbG9jYWxfdCoJbG9jYWw7Ci0KLQltdXRleF9lbnRlcigmdGhyX2xv Y2FsX211dGV4KTsKLQotCWxvY2FsID0gdGhyX2xvY2FsX2dldChvc190aHJlYWRfZ2V0X2N1cnJf aWQoKSk7Ci0KLQltdXRleF9leGl0KCZ0aHJfbG9jYWxfbXV0ZXgpOwotCi0JcmV0dXJuKCYobG9j YWwtPmluX2lidWYpKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1DcmVhdGVzIGEgbG9jYWwgc3Rv cmFnZSBzdHJ1Y3QgZm9yIHRoZSBjYWxsaW5nIG5ldyB0aHJlYWQuICovCi1VTklWX0lOVEVSTgot dm9pZAotdGhyX2xvY2FsX2NyZWF0ZSh2b2lkKQotLyo9PT09PT09PT09PT09PT09PT0qLwotewot CXRocl9sb2NhbF90Kglsb2NhbDsKLQotCWlmICh0aHJfbG9jYWxfaGFzaCA9PSBOVUxMKSB7Ci0J CXRocl9sb2NhbF9pbml0KCk7Ci0JfQotCi0JbG9jYWwgPSBtZW1fYWxsb2Moc2l6ZW9mKHRocl9s b2NhbF90KSk7Ci0KLQlsb2NhbC0+aWQgPSBvc190aHJlYWRfZ2V0X2N1cnJfaWQoKTsKLQlsb2Nh bC0+aGFuZGxlID0gb3NfdGhyZWFkX2dldF9jdXJyKCk7Ci0JbG9jYWwtPm1hZ2ljX24gPSBUSFJf TE9DQUxfTUFHSUNfTjsKLQlsb2NhbC0+aW5faWJ1ZiA9IEZBTFNFOwotCi0JbXV0ZXhfZW50ZXIo JnRocl9sb2NhbF9tdXRleCk7Ci0KLQlIQVNIX0lOU0VSVCh0aHJfbG9jYWxfdCwgaGFzaCwgdGhy X2xvY2FsX2hhc2gsCi0JCSAgICBvc190aHJlYWRfcGYob3NfdGhyZWFkX2dldF9jdXJyX2lkKCkp LAotCQkgICAgbG9jYWwpOwotCi0JbXV0ZXhfZXhpdCgmdGhyX2xvY2FsX211dGV4KTsKLX0KLQot LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCi1GcmVlcyB0aGUgbG9jYWwgc3RvcmFnZSBzdHJ1Y3QgZm9yIHRoZSBz cGVjaWZpZWQgdGhyZWFkLiAqLwotVU5JVl9JTlRFUk4KLXZvaWQKLXRocl9sb2NhbF9mcmVlKAot Lyo9PT09PT09PT09PSovCi0Jb3NfdGhyZWFkX2lkX3QJaWQpCS8qITwgaW46IHRocmVhZCBpZCAq LwotewotCXRocl9sb2NhbF90Kglsb2NhbDsKLQotCW11dGV4X2VudGVyKCZ0aHJfbG9jYWxfbXV0 ZXgpOwotCi0JLyogTG9vayBmb3IgdGhlIGxvY2FsIHN0cnVjdCBpbiB0aGUgaGFzaCB0YWJsZSAq LwotCi0JSEFTSF9TRUFSQ0goaGFzaCwgdGhyX2xvY2FsX2hhc2gsIG9zX3RocmVhZF9wZihpZCks Ci0JCSAgICB0aHJfbG9jYWxfdCosIGxvY2FsLCB1dF9hZCh0aHJfbG9jYWxfdmFsaWRhdGUobG9j YWwpKSwKLQkJICAgIG9zX3RocmVhZF9lcShsb2NhbC0+aWQsIGlkKSk7Ci0JaWYgKGxvY2FsID09 IE5VTEwpIHsKLQkJbXV0ZXhfZXhpdCgmdGhyX2xvY2FsX211dGV4KTsKLQotCQlyZXR1cm47Ci0J fQotCi0JSEFTSF9ERUxFVEUodGhyX2xvY2FsX3QsIGhhc2gsIHRocl9sb2NhbF9oYXNoLAotCQkg ICAgb3NfdGhyZWFkX3BmKGlkKSwgbG9jYWwpOwotCi0JbXV0ZXhfZXhpdCgmdGhyX2xvY2FsX211 dGV4KTsKLQotCXV0X2EobG9jYWwtPm1hZ2ljX24gPT0gVEhSX0xPQ0FMX01BR0lDX04pOwotCXV0 X2FkKHRocl9sb2NhbF92YWxpZGF0ZShsb2NhbCkpOwotCi0JbWVtX2ZyZWUobG9jYWwpOwotfQot Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKLUluaXRpYWxpemVzIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSBtb2R1 bGUuICovCi1VTklWX0lOVEVSTgotdm9pZAotdGhyX2xvY2FsX2luaXQodm9pZCkKLS8qPT09PT09 PT09PT09PT09PSovCi17Ci0KLQl1dF9hKHRocl9sb2NhbF9oYXNoID09IE5VTEwpOwotCi0JdGhy X2xvY2FsX2hhc2ggPSBoYXNoX2NyZWF0ZShPU19USFJFQURfTUFYX04gKyAxMDApOwotCi0JbXV0 ZXhfY3JlYXRlKHRocl9sb2NhbF9tdXRleF9rZXksCi0JCSAgICAgJnRocl9sb2NhbF9tdXRleCwg U1lOQ19USFJfTE9DQUwpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUNsb3NlIHRoZSB0aHJlYWQgbG9j YWwgc3RvcmFnZSBtb2R1bGUuICovCi1VTklWX0lOVEVSTgotdm9pZAotdGhyX2xvY2FsX2Nsb3Nl KHZvaWQpCi0vKj09PT09PT09PT09PT09PT09Ki8KLXsKLQl1bGludAkJaTsKLQotCXV0X2EodGhy X2xvY2FsX2hhc2ggIT0gTlVMTCk7Ci0KLQkvKiBGcmVlIHRoZSBoYXNoIGVsZW1lbnRzLiBXZSBk b24ndCByZW1vdmUgdGhlbSBmcm9tIHRoZSB0YWJsZQotCWJlY2F1c2Ugd2UgYXJlIGdvaW5nIHRv IGRlc3Ryb3kgdGhlIHRhYmxlIGFueXdheS4gKi8KLQlmb3IgKGkgPSAwOyBpIDwgaGFzaF9nZXRf bl9jZWxscyh0aHJfbG9jYWxfaGFzaCk7IGkrKykgewotCQl0aHJfbG9jYWxfdCoJbG9jYWw7Ci0K LQkJbG9jYWwgPSBIQVNIX0dFVF9GSVJTVCh0aHJfbG9jYWxfaGFzaCwgaSk7Ci0KLQkJd2hpbGUg KGxvY2FsKSB7Ci0JCQl0aHJfbG9jYWxfdCoJcHJldl9sb2NhbCA9IGxvY2FsOwotCi0JCQlsb2Nh bCA9IEhBU0hfR0VUX05FWFQoaGFzaCwgcHJldl9sb2NhbCk7Ci0JCQl1dF9hKHByZXZfbG9jYWwt Pm1hZ2ljX24gPT0gVEhSX0xPQ0FMX01BR0lDX04pOwotCQkJdXRfYWQodGhyX2xvY2FsX3ZhbGlk YXRlKHByZXZfbG9jYWwpKTsKLQkJCW1lbV9mcmVlKHByZXZfbG9jYWwpOwotCQl9Ci0JfQotCi0J aGFzaF90YWJsZV9mcmVlKHRocl9sb2NhbF9oYXNoKTsKLQl0aHJfbG9jYWxfaGFzaCA9IE5VTEw7 Ci19Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHRyeC5jJwot LS0gYS9zdG9yYWdlL2lubm9iYXNlL3RyeC90cngwdHJ4LmMJcmV2aWQ6a2V2aW4ubGV3aXNAb3Jh Y2xlLmNvbS0yMDExMDMyMzEzNDYzNy04NDdmemtiYjJ0NDliMXUyCisrKyBiL3N0b3JhZ2UvaW5u b2Jhc2UvdHJ4L3RyeDB0cnguYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDMy NDEyMjQwOC00cHE0eDFsbDZpYXRxeXluCkBAIC0zOSw3ICszOSw2IEBAIENyZWF0ZWQgMy8yNi8x OTk2IEhlaWtraSBUdXVyaQogI2luY2x1ZGUgInJlYWQwcmVhZC5oIgogI2luY2x1ZGUgInNydjBz cnYuaCIKICNpbmNsdWRlICJzcnYwc3RhcnQuaCIKLSNpbmNsdWRlICJ0aHIwbG9jLmgiCiAjaW5j bHVkZSAiYnRyMHNlYS5oIgogI2luY2x1ZGUgIm9zMHByb2MuaCIKICNpbmNsdWRlICJ0cngweGEu aCIKCg== --===============2116656574== 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.6-innodb/ # testament_sha1: fcf7dce31553aa7d44ebfa5d331b53a86e995a4d # timestamp: 2011-03-24 14:25:32 +0200 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # base_revision_id: kevin.lewis@stripped\ # 847fzkbb2t49b1u2 # # Begin bundle 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 Fv0LbAoc9I/+D0z7p/8XckU4UJB6D37Q --===============2116656574==--