From: marko.makela Date: November 7 2011 8:03am Subject: bzr push into mysql-trunk branch (marko.makela:3564 to 3565) List-Archive: http://lists.mysql.com/commits/141757 Message-Id: <201111070803.pA783You013963@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM1NjUgTWFya28gTcOka2Vsw6QJMjAxMS0xMS0wNyBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuNSB0byBteXNxbC10cnVuay4KCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9pYnVmL2lidWYwaWJ1Zi5jCiAzNTY0IEpvcmdlbiBMb2xhbmQJMjAxMS0xMS0wNAogICAgICBC VUcjMTI5OTc5MDUgRm9sbG93dXAgcGF0Y2gKICAgICAgCiAgICAgIEhvcGVmdWxseSBQQiBzdG9w cyBiYXJraW5nIGFib3V0IHR3byBWQUxHUklORCBlcnJvcnMgYWZ0ZXIgcHVzaAogICAgICBvZiB0 aGlzIGJ1Zy4KICAgICBAIG15c3FsLXRlc3QvdmFsZ3JpbmQuc3VwcAogICAgICAgIFJlbW92ZWQg dHdvIHZhbGdyaW5kIHN1cHJlc3Npb24gcGF0dGVybnMuCgogICAgbW9kaWZpZWQ6CiAgICAgIG15 c3FsLXRlc3QvdmFsZ3JpbmQuc3VwcAo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFz ZS9pYnVmL2lidWYwaWJ1Zi5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2lidWYvaWJ1ZjBpYnVm LmMJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTExMTA0MTUyMjUwLW52YTE1M21j cmY0YnJ5NHIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5jCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMTA3MDgwMDEzLXR3MjdzMHg3aWxjdG5xNDQKQEAg LTI0OCwxMSArMjQ4LDIwIEBAIGlidWZfY291bnRfY2hlY2soCiAJCQkJCWxpc3Qgb2YgdGhlIGli dWYgKi8KIC8qIEB9ICovCiAKKyNkZWZpbmUgSUJVRl9SRUNfRklFTERfU1BBQ0UJMAkvKiE8IGlu IHRoZSBwcmUtNC4xIGZvcm1hdCwKKwkJCQkJdGhlIHBhZ2UgbnVtYmVyLiBsYXRlciwgdGhlIHNw YWNlX2lkICovCisjZGVmaW5lIElCVUZfUkVDX0ZJRUxEX01BUktFUgkxCS8qITwgc3RhcnRpbmcg d2l0aCA0LjEsIGEgbWFya2VyCisJCQkJCWNvbnNpc3Rpbmcgb2YgMSBieXRlIHRoYXQgaXMgMCAq LworI2RlZmluZSBJQlVGX1JFQ19GSUVMRF9QQUdFCTIJLyohPCBzdGFydGluZyB3aXRoIDQuMSwg dGhlCisJCQkJCXBhZ2UgbnVtYmVyICovCisjZGVmaW5lIElCVUZfUkVDX0ZJRUxEX01FVEFEQVRB CTMJLyogdGhlIG1ldGFkYXRhIGZpZWxkICovCisjZGVmaW5lIElCVUZfUkVDX0ZJRUxEX1VTRVIJ NAkvKiBmaXJzdCB1c2VyIGZpZWxkICovCisKIC8qIFZhcmlvdXMgY29uc3RhbnRzIGZvciBjaGVj a2luZyB0aGUgdHlwZSBvZiBhbiBpYnVmIHJlY29yZCBhbmQgZXh0cmFjdGluZwogZGF0YSBmcm9t IGl0LiBGb3IgZGV0YWlscywgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcmVjb3JkIGZvcm1h dCBhdCB0aGUKIHRvcCBvZiB0aGlzIGZpbGUuICovCiAKLS8qKiBAbmFtZSBGb3JtYXQgb2YgdGhl IGZvdXJ0aCBjb2x1bW4gb2YgYW4gaW5zZXJ0IGJ1ZmZlciByZWNvcmQKKy8qKiBAbmFtZSBGb3Jt YXQgb2YgdGhlIElCVUZfUkVDX0ZJRUxEX01FVEFEQVRBIG9mIGFuIGluc2VydCBidWZmZXIgcmVj b3JkCiBUaGUgZm91cnRoIGNvbHVtbiBpbiB0aGUgTXlTUUwgNS41IGZvcm1hdCBjb250YWlucyBh biBvcGVyYXRpb24KIHR5cGUsIGNvdW50ZXIsIGFuZCBzb21lIGZsYWdzLiAqLwogLyogQHsgKi8K QEAgLTEyNDYsMTMgKzEyNTUsMTMgQEAgaWJ1Zl9yZWNfZ2V0X3BhZ2Vfbm9fZnVuYygKIAl1dF9h ZChpYnVmX2luc2lkZShtdHIpKTsKIAl1dF9hZChyZWNfZ2V0X25fZmllbGRzX29sZChyZWMpID4g Mik7CiAKLQlmaWVsZCA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChyZWMsIDEsICZsZW4pOworCWZp ZWxkID0gcmVjX2dldF9udGhfZmllbGRfb2xkKHJlYywgSUJVRl9SRUNfRklFTERfTUFSS0VSLCAm bGVuKTsKIAogCWlmIChsZW4gPT0gMSkgewogCQkvKiBUaGlzIGlzIG9mIHRoZSA+PSA0LjEueCBy ZWNvcmQgZm9ybWF0ICovCiAJCXV0X2EodHJ4X3N5c19tdWx0aXBsZV90YWJsZXNwYWNlX2Zvcm1h dCk7CiAKLQkJZmllbGQgPSByZWNfZ2V0X250aF9maWVsZF9vbGQocmVjLCAyLCAmbGVuKTsKKwkJ ZmllbGQgPSByZWNfZ2V0X250aF9maWVsZF9vbGQocmVjLCBJQlVGX1JFQ19GSUVMRF9QQUdFLCAm bGVuKTsKIAl9IGVsc2UgewogCQl1dF9hKHRyeF9kb3VibGV3cml0ZV9tdXN0X3Jlc2V0X3NwYWNl X2lkcyk7CiAJCXV0X2EoIXRyeF9zeXNfbXVsdGlwbGVfdGFibGVzcGFjZV9mb3JtYXQpOwpAQCAt MTI5MiwxMyArMTMwMSwxMyBAQCBpYnVmX3JlY19nZXRfc3BhY2VfZnVuYygKIAl1dF9hZChpYnVm X2luc2lkZShtdHIpKTsKIAl1dF9hZChyZWNfZ2V0X25fZmllbGRzX29sZChyZWMpID4gMik7CiAK LQlmaWVsZCA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChyZWMsIDEsICZsZW4pOworCWZpZWxkID0g cmVjX2dldF9udGhfZmllbGRfb2xkKHJlYywgSUJVRl9SRUNfRklFTERfTUFSS0VSLCAmbGVuKTsK IAogCWlmIChsZW4gPT0gMSkgewogCQkvKiBUaGlzIGlzIG9mIHRoZSA+PSA0LjEueCByZWNvcmQg Zm9ybWF0ICovCiAKIAkJdXRfYSh0cnhfc3lzX211bHRpcGxlX3RhYmxlc3BhY2VfZm9ybWF0KTsK LQkJZmllbGQgPSByZWNfZ2V0X250aF9maWVsZF9vbGQocmVjLCAwLCAmbGVuKTsKKwkJZmllbGQg PSByZWNfZ2V0X250aF9maWVsZF9vbGQocmVjLCBJQlVGX1JFQ19GSUVMRF9TUEFDRSwgJmxlbik7 CiAJCXV0X2EobGVuID09IDQpOwogCiAJCXJldHVybihtYWNoX3JlYWRfZnJvbV80KGZpZWxkKSk7 CkBAIC0xMzQ4LDkgKzEzNTcsOSBAQCBpYnVmX3JlY19nZXRfaW5mb19mdW5jKAogCSAgICAgIHx8 IG10cl9tZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCByZWMsIE1UUl9NRU1PX1BBR0VfU19GSVgpKTsK IAl1dF9hZChpYnVmX2luc2lkZShtdHIpKTsKIAlmaWVsZHMgPSByZWNfZ2V0X25fZmllbGRzX29s ZChyZWMpOwotCXV0X2EoZmllbGRzID4gNCk7CisJdXRfYShmaWVsZHMgPiBJQlVGX1JFQ19GSUVM RF9VU0VSKTsKIAotCXR5cGVzID0gcmVjX2dldF9udGhfZmllbGRfb2xkKHJlYywgMywgJmxlbik7 CisJdHlwZXMgPSByZWNfZ2V0X250aF9maWVsZF9vbGQocmVjLCBJQlVGX1JFQ19GSUVMRF9NRVRB REFUQSwgJmxlbik7CiAKIAlpbmZvX2xlbl9sb2NhbCA9IGxlbiAlIERBVEFfTkVXX09SREVSX05V TExfVFlQRV9CVUZfU0laRTsKIApAQCAtMTM3Niw3ICsxMzg1LDggQEAgaWJ1Zl9yZWNfZ2V0X2lu Zm9fZnVuYygKIAogCXV0X2Eob3BfbG9jYWwgPCBJQlVGX09QX0NPVU5UKTsKIAl1dF9hKChsZW4g LSBpbmZvX2xlbl9sb2NhbCkgPT0KLQkgICAgIChmaWVsZHMgLSA0KSAqIERBVEFfTkVXX09SREVS X05VTExfVFlQRV9CVUZfU0laRSk7CisJICAgICAoZmllbGRzIC0gSUJVRl9SRUNfRklFTERfVVNF UikKKwkgICAgICogREFUQV9ORVdfT1JERVJfTlVMTF9UWVBFX0JVRl9TSVpFKTsKIAogCWlmIChv cCkgewogCQkqb3AgPSBvcF9sb2NhbDsKQEAgLTE0MjAsNyArMTQzMCw3IEBAIGlidWZfcmVjX2dl dF9vcF90eXBlX2Z1bmMoCiAJdXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7CiAJdXRfYWQocmVjX2dl dF9uX2ZpZWxkc19vbGQocmVjKSA+IDIpOwogCi0JKHZvaWQpIHJlY19nZXRfbnRoX2ZpZWxkX29s ZChyZWMsIDEsICZsZW4pOworCSh2b2lkKSByZWNfZ2V0X250aF9maWVsZF9vbGQocmVjLCBJQlVG X1JFQ19GSUVMRF9NQVJLRVIsICZsZW4pOwogCiAJaWYgKGxlbiA+IDEpIHsKIAkJLyogVGhpcyBp cyBhIDwgNC4xLnggZm9ybWF0IHJlY29yZCAqLwpAQCAtMTQ0OSwxMiArMTQ1OSwxMiBAQCBpYnVm X3JlY19nZXRfY291bnRlcigKIAljb25zdCBieXRlKglwdHI7CiAJdWxpbnQJCWxlbjsKIAotCWlm IChyZWNfZ2V0X25fZmllbGRzX29sZChyZWMpIDwgNCkgeworCWlmIChyZWNfZ2V0X25fZmllbGRz X29sZChyZWMpIDw9IElCVUZfUkVDX0ZJRUxEX01FVEFEQVRBKSB7CiAKIAkJcmV0dXJuKFVMSU5U X1VOREVGSU5FRCk7CiAJfQogCi0JcHRyID0gcmVjX2dldF9udGhfZmllbGRfb2xkKHJlYywgMywg Jmxlbik7CisJcHRyID0gcmVjX2dldF9udGhfZmllbGRfb2xkKHJlYywgSUJVRl9SRUNfRklFTERf TUVUQURBVEEsICZsZW4pOwogCiAJaWYgKGxlbiA+PSAyKSB7CiAKQEAgLTE2NzksNyArMTY4OSw3 IEBAIGlidWZfYnVpbGRfZW50cnlfZnJvbV9pYnVmX3JlY19mdW5jKAogCSAgICAgIHx8IG10cl9t ZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCBpYnVmX3JlYywgTVRSX01FTU9fUEFHRV9TX0ZJWCkpOwog CXV0X2FkKGlidWZfaW5zaWRlKG10cikpOwogCi0JZGF0YSA9IHJlY19nZXRfbnRoX2ZpZWxkX29s ZChpYnVmX3JlYywgMSwgJmxlbik7CisJZGF0YSA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChpYnVm X3JlYywgSUJVRl9SRUNfRklFTERfTUFSS0VSLCAmbGVuKTsKIAogCWlmIChsZW4gPiAxKSB7CiAJ CS8qIFRoaXMgYSA8IDQuMS54IGZvcm1hdCByZWNvcmQgKi8KQEAgLTE2OTEsMTMgKzE3MDEsMTMg QEAgaWJ1Zl9idWlsZF9lbnRyeV9mcm9tX2lidWZfcmVjX2Z1bmMoCiAKIAl1dF9hKHRyeF9zeXNf bXVsdGlwbGVfdGFibGVzcGFjZV9mb3JtYXQpOwogCXV0X2EoKmRhdGEgPT0gMCk7Ci0JdXRfYShy ZWNfZ2V0X25fZmllbGRzX29sZChpYnVmX3JlYykgPiA0KTsKKwl1dF9hKHJlY19nZXRfbl9maWVs ZHNfb2xkKGlidWZfcmVjKSA+IElCVUZfUkVDX0ZJRUxEX1VTRVIpOwogCi0Jbl9maWVsZHMgPSBy ZWNfZ2V0X25fZmllbGRzX29sZChpYnVmX3JlYykgLSA0OworCW5fZmllbGRzID0gcmVjX2dldF9u X2ZpZWxkc19vbGQoaWJ1Zl9yZWMpIC0gSUJVRl9SRUNfRklFTERfVVNFUjsKIAogCXR1cGxlID0g ZHR1cGxlX2NyZWF0ZShoZWFwLCBuX2ZpZWxkcyk7CiAKLQl0eXBlcyA9IHJlY19nZXRfbnRoX2Zp ZWxkX29sZChpYnVmX3JlYywgMywgJmxlbik7CisJdHlwZXMgPSByZWNfZ2V0X250aF9maWVsZF9v bGQoaWJ1Zl9yZWMsIElCVUZfUkVDX0ZJRUxEX01FVEFEQVRBLCAmbGVuKTsKIAogCWlidWZfcmVj X2dldF9pbmZvKG10ciwgaWJ1Zl9yZWMsIE5VTEwsICZjb21wLCAmaW5mb19sZW4sIE5VTEwpOwog CkBAIC0xNzExLDcgKzE3MjEsOCBAQCBpYnVmX2J1aWxkX2VudHJ5X2Zyb21faWJ1Zl9yZWNfZnVu YygKIAlmb3IgKGkgPSAwOyBpIDwgbl9maWVsZHM7IGkrKykgewogCQlmaWVsZCA9IGR0dXBsZV9n ZXRfbnRoX2ZpZWxkKHR1cGxlLCBpKTsKIAotCQlkYXRhID0gcmVjX2dldF9udGhfZmllbGRfb2xk KGlidWZfcmVjLCBpICsgNCwgJmxlbik7CisJCWRhdGEgPSByZWNfZ2V0X250aF9maWVsZF9vbGQo CisJCQlpYnVmX3JlYywgaSArIElCVUZfUkVDX0ZJRUxEX1VTRVIsICZsZW4pOwogCiAJCWRmaWVs ZF9zZXRfZGF0YShmaWVsZCwgZGF0YSwgbGVuKTsKIApAQCAtMTc1OCw3ICsxNzY5LDcgQEAgaWJ1 Zl9yZWNfZ2V0X3NpemUoCiAJCWZpZWxkX29mZnNldCA9IDI7CiAJCXR5cGVzX29mZnNldCA9IERB VEFfT1JERVJfTlVMTF9UWVBFX0JVRl9TSVpFOwogCX0gZWxzZSB7Ci0JCWZpZWxkX29mZnNldCA9 IDQ7CisJCWZpZWxkX29mZnNldCA9IElCVUZfUkVDX0ZJRUxEX1VTRVI7CiAJCXR5cGVzX29mZnNl dCA9IERBVEFfTkVXX09SREVSX05VTExfVFlQRV9CVUZfU0laRTsKIAl9CiAKQEAgLTE4MTksNyAr MTgzMCw3IEBAIGlidWZfcmVjX2dldF92b2x1bWVfZnVuYygKIAl1dF9hZChpYnVmX2luc2lkZSht dHIpKTsKIAl1dF9hZChyZWNfZ2V0X25fZmllbGRzX29sZChpYnVmX3JlYykgPiAyKTsKIAotCWRh dGEgPSByZWNfZ2V0X250aF9maWVsZF9vbGQoaWJ1Zl9yZWMsIDEsICZsZW4pOworCWRhdGEgPSBy ZWNfZ2V0X250aF9maWVsZF9vbGQoaWJ1Zl9yZWMsIElCVUZfUkVDX0ZJRUxEX01BUktFUiwgJmxl bik7CiAJcHJlXzRfMSA9IChsZW4gPiAxKTsKIAogCWlmIChwcmVfNF8xKSB7CkBAIC0xODQyLDcg KzE4NTMsOCBAQCBpYnVmX3JlY19nZXRfdm9sdW1lX2Z1bmMoCiAJCXV0X2EodHJ4X3N5c19tdWx0 aXBsZV90YWJsZXNwYWNlX2Zvcm1hdCk7CiAJCXV0X2EoKmRhdGEgPT0gMCk7CiAKLQkJdHlwZXMg PSByZWNfZ2V0X250aF9maWVsZF9vbGQoaWJ1Zl9yZWMsIDMsICZsZW4pOworCQl0eXBlcyA9IHJl Y19nZXRfbnRoX2ZpZWxkX29sZCgKKwkJCWlidWZfcmVjLCBJQlVGX1JFQ19GSUVMRF9NRVRBREFU QSwgJmxlbik7CiAKIAkJaWJ1Zl9yZWNfZ2V0X2luZm8obXRyLCBpYnVmX3JlYywgJm9wLCAmY29t cCwgJmluZm9fbGVuLCBOVUxMKTsKIApAQCAtMTg3Miw3ICsxODg0LDggQEAgaWJ1Zl9yZWNfZ2V0 X3ZvbHVtZV9mdW5jKAogCQl9CiAKIAkJdHlwZXMgKz0gaW5mb19sZW47Ci0JCW5fZmllbGRzID0g cmVjX2dldF9uX2ZpZWxkc19vbGQoaWJ1Zl9yZWMpIC0gNDsKKwkJbl9maWVsZHMgPSByZWNfZ2V0 X25fZmllbGRzX29sZChpYnVmX3JlYykKKwkJCS0gSUJVRl9SRUNfRklFTERfVVNFUjsKIAl9CiAK IAlkYXRhX3NpemUgPSBpYnVmX3JlY19nZXRfc2l6ZShpYnVmX3JlYywgdHlwZXMsIG5fZmllbGRz LCBwcmVfNF8xLCBjb21wKTsKQEAgLTE5MjcsMTEgKzE5NDAsMTEgQEAgaWJ1Zl9lbnRyeV9idWls ZCgKIAogCW5fZmllbGRzID0gZHR1cGxlX2dldF9uX2ZpZWxkcyhlbnRyeSk7CiAKLQl0dXBsZSA9 IGR0dXBsZV9jcmVhdGUoaGVhcCwgbl9maWVsZHMgKyA0KTsKKwl0dXBsZSA9IGR0dXBsZV9jcmVh dGUoaGVhcCwgbl9maWVsZHMgKyBJQlVGX1JFQ19GSUVMRF9VU0VSKTsKIAogCS8qIDEpIFNwYWNl IElkICovCiAKLQlmaWVsZCA9IGR0dXBsZV9nZXRfbnRoX2ZpZWxkKHR1cGxlLCAwKTsKKwlmaWVs ZCA9IGR0dXBsZV9nZXRfbnRoX2ZpZWxkKHR1cGxlLCBJQlVGX1JFQ19GSUVMRF9TUEFDRSk7CiAK IAlidWYgPSBtZW1faGVhcF9hbGxvYyhoZWFwLCA0KTsKIApAQCAtMTk0MSw3ICsxOTU0LDcgQEAg aWJ1Zl9lbnRyeV9idWlsZCgKIAogCS8qIDIpIE1hcmtlciBieXRlICovCiAKLQlmaWVsZCA9IGR0 dXBsZV9nZXRfbnRoX2ZpZWxkKHR1cGxlLCAxKTsKKwlmaWVsZCA9IGR0dXBsZV9nZXRfbnRoX2Zp ZWxkKHR1cGxlLCBJQlVGX1JFQ19GSUVMRF9NQVJLRVIpOwogCiAJYnVmID0gbWVtX2hlYXBfYWxs b2MoaGVhcCwgMSk7CiAKQEAgLTE5NTMsNyArMTk2Niw3IEBAIGlidWZfZW50cnlfYnVpbGQoCiAK IAkvKiAzKSBQYWdlIG51bWJlciAqLwogCi0JZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZCh0 dXBsZSwgMik7CisJZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZCh0dXBsZSwgSUJVRl9SRUNf RklFTERfUEFHRSk7CiAKIAlidWYgPSBtZW1faGVhcF9hbGxvYyhoZWFwLCA0KTsKIApAQCAtMjAw MSwxMCArMjAxNCw3IEBAIGlidWZfZW50cnlfYnVpbGQoCiAJCXVsaW50CQkJZml4ZWRfbGVuOwog CQljb25zdCBkaWN0X2ZpZWxkX3QqCWlmaWVsZDsKIAotCQkvKiBXZSBhZGQgNCBiZWxvdyBiZWNh dXNlIHdlIGhhdmUgdGhlIDQgZXh0cmEgZmllbGRzIGF0IHRoZQotCQlzdGFydCBvZiBhbiBpYnVm IHJlY29yZCAqLwotCi0JCWZpZWxkID0gZHR1cGxlX2dldF9udGhfZmllbGQodHVwbGUsIGkgKyA0 KTsKKwkJZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZCh0dXBsZSwgaSArIElCVUZfUkVDX0ZJ RUxEX1VTRVIpOwogCQllbnRyeV9maWVsZCA9IGR0dXBsZV9nZXRfbnRoX2ZpZWxkKGVudHJ5LCBp KTsKIAkJZGZpZWxkX2NvcHkoZmllbGQsIGVudHJ5X2ZpZWxkKTsKIApAQCAtMjAzNywxMyArMjA0 NywxMyBAQCBpYnVmX2VudHJ5X2J1aWxkKAogCiAJLyogNCkgVHlwZSBpbmZvLCBwYXJ0ICMyICov CiAKLQlmaWVsZCA9IGR0dXBsZV9nZXRfbnRoX2ZpZWxkKHR1cGxlLCAzKTsKKwlmaWVsZCA9IGR0 dXBsZV9nZXRfbnRoX2ZpZWxkKHR1cGxlLCBJQlVGX1JFQ19GSUVMRF9NRVRBREFUQSk7CiAKIAlk ZmllbGRfc2V0X2RhdGEoZmllbGQsIHR5cGVfaW5mbywgdGkgLSB0eXBlX2luZm8pOwogCiAJLyog U2V0IGFsbCB0aGUgdHlwZXMgaW4gdGhlIG5ldyB0dXBsZSBiaW5hcnkgKi8KIAotCWR0dXBsZV9z ZXRfdHlwZXNfYmluYXJ5KHR1cGxlLCBuX2ZpZWxkcyArIDQpOworCWR0dXBsZV9zZXRfdHlwZXNf YmluYXJ5KHR1cGxlLCBuX2ZpZWxkcyArIElCVUZfUkVDX0ZJRUxEX1VTRVIpOwogCiAJcmV0dXJu KHR1cGxlKTsKIH0KQEAgLTIxMDMsMTEgKzIxMTMsMTEgQEAgaWJ1Zl9uZXdfc2VhcmNoX3R1cGxl X2J1aWxkKAogCiAJdXRfYSh0cnhfc3lzX211bHRpcGxlX3RhYmxlc3BhY2VfZm9ybWF0KTsKIAot CXR1cGxlID0gZHR1cGxlX2NyZWF0ZShoZWFwLCAzKTsKKwl0dXBsZSA9IGR0dXBsZV9jcmVhdGUo aGVhcCwgSUJVRl9SRUNfRklFTERfTUVUQURBVEEpOwogCiAJLyogU3RvcmUgdGhlIHNwYWNlIGlk IGluIHR1cGxlICovCiAKLQlmaWVsZCA9IGR0dXBsZV9nZXRfbnRoX2ZpZWxkKHR1cGxlLCAwKTsK KwlmaWVsZCA9IGR0dXBsZV9nZXRfbnRoX2ZpZWxkKHR1cGxlLCBJQlVGX1JFQ19GSUVMRF9TUEFD RSk7CiAKIAlidWYgPSBtZW1faGVhcF9hbGxvYyhoZWFwLCA0KTsKIApAQCAtMjExNyw3ICsyMTI3 LDcgQEAgaWJ1Zl9uZXdfc2VhcmNoX3R1cGxlX2J1aWxkKAogCiAJLyogU3RvcmUgdGhlIG5ldyBm b3JtYXQgcmVjb3JkIG1hcmtlciBieXRlICovCiAKLQlmaWVsZCA9IGR0dXBsZV9nZXRfbnRoX2Zp ZWxkKHR1cGxlLCAxKTsKKwlmaWVsZCA9IGR0dXBsZV9nZXRfbnRoX2ZpZWxkKHR1cGxlLCBJQlVG X1JFQ19GSUVMRF9NQVJLRVIpOwogCiAJYnVmID0gbWVtX2hlYXBfYWxsb2MoaGVhcCwgMSk7CiAK QEAgLTIxMjcsNyArMjEzNyw3IEBAIGlidWZfbmV3X3NlYXJjaF90dXBsZV9idWlsZCgKIAogCS8q IFN0b3JlIHRoZSBwYWdlIG51bWJlciBpbiB0dXBsZSAqLwogCi0JZmllbGQgPSBkdHVwbGVfZ2V0 X250aF9maWVsZCh0dXBsZSwgMik7CisJZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZCh0dXBs ZSwgSUJVRl9SRUNfRklFTERfUEFHRSk7CiAKIAlidWYgPSBtZW1faGVhcF9hbGxvYyhoZWFwLCA0 KTsKIApAQCAtMjEzNSw3ICsyMTQ1LDcgQEAgaWJ1Zl9uZXdfc2VhcmNoX3R1cGxlX2J1aWxkKAog CiAJZGZpZWxkX3NldF9kYXRhKGZpZWxkLCBidWYsIDQpOwogCi0JZHR1cGxlX3NldF90eXBlc19i aW5hcnkodHVwbGUsIDMpOworCWR0dXBsZV9zZXRfdHlwZXNfYmluYXJ5KHR1cGxlLCBJQlVGX1JF Q19GSUVMRF9NRVRBREFUQSk7CiAKIAlyZXR1cm4odHVwbGUpOwogfQpAQCAtMjgyMiw4ICsyODMy LDEwIEBAIGlidWZfZ2V0X3ZvbHVtZV9idWZmZXJlZF9oYXNoKAogCXVsaW50CQlmb2xkOwogCXVs aW50CQliaXRtYXNrOwogCi0JbGVuID0gaWJ1Zl9yZWNfZ2V0X3NpemUocmVjLCB0eXBlcywgcmVj X2dldF9uX2ZpZWxkc19vbGQocmVjKSAtIDQsCi0JCQkJRkFMU0UsIGNvbXApOworCWxlbiA9IGli dWZfcmVjX2dldF9zaXplKAorCQlyZWMsIHR5cGVzLAorCQlyZWNfZ2V0X25fZmllbGRzX29sZChy ZWMpIC0gSUJVRl9SRUNfRklFTERfVVNFUiwKKwkJRkFMU0UsIGNvbXApOwogCWZvbGQgPSB1dF9m b2xkX2JpbmFyeShkYXRhLCBsZW4pOwogCiAJaGFzaCArPSAoZm9sZCAvIChDSEFSX0JJVCAqIHNp emVvZiAqaGFzaCkpICUgc2l6ZTsKQEAgLTI4NzUsOCArMjg4Nyw4IEBAIGlidWZfZ2V0X3ZvbHVt ZV9idWZmZXJlZF9jb3VudF9mdW5jKAogCXV0X2FkKGlidWZfaW5zaWRlKG10cikpOwogCiAJbl9m aWVsZHMgPSByZWNfZ2V0X25fZmllbGRzX29sZChyZWMpOwotCXV0X2FkKG5fZmllbGRzID4gNCk7 Ci0Jbl9maWVsZHMgLT0gNDsKKwl1dF9hZChuX2ZpZWxkcyA+IElCVUZfUkVDX0ZJRUxEX1VTRVIp OworCW5fZmllbGRzIC09IElCVUZfUkVDX0ZJRUxEX1VTRVI7CiAKIAlyZWNfZ2V0X250aF9maWVs ZF9vZmZzX29sZChyZWMsIDEsICZsZW4pOwogCS8qIFRoaXMgZnVuY3Rpb24gaXMgb25seSBpbnZv a2VkIHdoZW4gYnVmZmVyaW5nIG5ldwpAQCAtMjg4NSw3ICsyODk3LDcgQEAgaWJ1Zl9nZXRfdm9s dW1lX2J1ZmZlcmVkX2NvdW50X2Z1bmMoCiAJdXRfYShsZW4gPT0gMSk7CiAJdXRfYWQodHJ4X3N5 c19tdWx0aXBsZV90YWJsZXNwYWNlX2Zvcm1hdCk7CiAKLQl0eXBlcyA9IHJlY19nZXRfbnRoX2Zp ZWxkX29sZChyZWMsIDMsICZsZW4pOworCXR5cGVzID0gcmVjX2dldF9udGhfZmllbGRfb2xkKHJl YywgSUJVRl9SRUNfRklFTERfTUVUQURBVEEsICZsZW4pOwogCiAJc3dpdGNoIChVTklWX0VYUEVD VChsZW4gJSBEQVRBX05FV19PUkRFUl9OVUxMX1RZUEVfQlVGX1NJWkUsCiAJCQkgICAgSUJVRl9S RUNfSU5GT19TSVpFKSkgewpAQCAtMzE5Nyw3ICszMjA5LDcgQEAgaWJ1Zl91cGRhdGVfbWF4X3Rh Ymxlc3BhY2VfaWQodm9pZCkKIAl9IGVsc2UgewogCQlyZWMgPSBidHJfcGN1cl9nZXRfcmVjKCZw Y3VyKTsKIAotCQlmaWVsZCA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChyZWMsIDAsICZsZW4pOwor CQlmaWVsZCA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChyZWMsIElCVUZfUkVDX0ZJRUxEX1NQQUNF LCAmbGVuKTsKIAogCQl1dF9hKGxlbiA9PSA0KTsKIApAQCAtMzIxOSwxMCArMzIzMSwxMiBAQCBp YnVmX3VwZGF0ZV9tYXhfdGFibGVzcGFjZV9pZCh2b2lkKQogCWlidWZfZ2V0X2VudHJ5X2NvdW50 ZXJfbG93X2Z1bmMocmVjLHNwYWNlLHBhZ2Vfbm8pCiAjZW5kaWYKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotSGVs cGVyIGZ1bmN0aW9uIGZvciBpYnVmX3NldF9lbnRyeV9jb3VudGVyLiBDaGVja3MgaWYgcmVjIGlz IGZvciAoc3BhY2UsCi1wYWdlX25vKSwgYW5kIGlmIHNvLCByZWFkcyBjb3VudGVyIHZhbHVlIGZy b20gaXQgYW5kIHJldHVybnMgdGhhdCArIDEuCi1PdGhlcndpc2UsIHJldHVybnMgMC4KLUByZXR1 cm4JbmV3IGNvdW50ZXIgdmFsdWUsIG9yIDAgKi8KK0hlbHBlciBmdW5jdGlvbiBmb3IgaWJ1Zl9n ZXRfZW50cnlfY291bnRlcl9mdW5jLiBDaGVja3MgaWYgcmVjIGlzIGZvcgorKHNwYWNlLCBwYWdl X25vKSwgYW5kIGlmIHNvLCByZWFkcyBjb3VudGVyIHZhbHVlIGZyb20gaXQgYW5kIHJldHVybnMK K3RoYXQgKyAxLgorQHJldHZhbCBVTElOVF9VTkRFRklORUQgaWYgdGhlIHJlY29yZCBkb2VzIG5v dCBjb250YWluIGFueSBjb3VudGVyCitAcmV0dmFsIDAgaWYgdGhlIHJlY29yZCBpcyBub3QgZm9y IChzcGFjZSwgcGFnZV9ubykKK0ByZXR2YWwgMSArIHByZXZpb3VzIGNvdW50ZXIgdmFsdWUsIG90 aGVyd2lzZSAqLwogc3RhdGljCiB1bGludAogaWJ1Zl9nZXRfZW50cnlfY291bnRlcl9sb3dfZnVu YygKQEAgLTMyNDMsNyArMzI1Nyw3IEBAIGlidWZfZ2V0X2VudHJ5X2NvdW50ZXJfbG93X2Z1bmMo CiAJICAgICAgfHwgbXRyX21lbW9fY29udGFpbnNfcGFnZShtdHIsIHJlYywgTVRSX01FTU9fUEFH RV9TX0ZJWCkpOwogCXV0X2FkKHJlY19nZXRfbl9maWVsZHNfb2xkKHJlYykgPiAyKTsKIAotCWZp ZWxkID0gcmVjX2dldF9udGhfZmllbGRfb2xkKHJlYywgMSwgJmxlbik7CisJZmllbGQgPSByZWNf Z2V0X250aF9maWVsZF9vbGQocmVjLCBJQlVGX1JFQ19GSUVMRF9NQVJLRVIsICZsZW4pOwogCiAJ aWYgKFVOSVZfVU5MSUtFTFkobGVuICE9IDEpKSB7CiAJCS8qIHByZS00LjEgZm9ybWF0ICovCkBA IC0zMjU2LDcgKzMyNzAsNyBAQCBpYnVmX2dldF9lbnRyeV9jb3VudGVyX2xvd19mdW5jKAogCXV0 X2EodHJ4X3N5c19tdWx0aXBsZV90YWJsZXNwYWNlX2Zvcm1hdCk7CiAKIAkvKiBDaGVjayB0aGUg dGFibGVzcGFjZSBpZGVudGlmaWVyLiAqLwotCWZpZWxkID0gcmVjX2dldF9udGhfZmllbGRfb2xk KHJlYywgMCwgJmxlbik7CisJZmllbGQgPSByZWNfZ2V0X250aF9maWVsZF9vbGQocmVjLCBJQlVG X1JFQ19GSUVMRF9TUEFDRSwgJmxlbik7CiAJdXRfYShsZW4gPT0gNCk7CiAKIAlpZiAobWFjaF9y ZWFkX2Zyb21fNChmaWVsZCkgIT0gc3BhY2UpIHsKQEAgLTMyNjUsNyArMzI3OSw3IEBAIGlidWZf Z2V0X2VudHJ5X2NvdW50ZXJfbG93X2Z1bmMoCiAJfQogCiAJLyogQ2hlY2sgdGhlIHBhZ2Ugb2Zm c2V0LiAqLwotCWZpZWxkID0gcmVjX2dldF9udGhfZmllbGRfb2xkKHJlYywgMiwgJmxlbik7CisJ ZmllbGQgPSByZWNfZ2V0X250aF9maWVsZF9vbGQocmVjLCBJQlVGX1JFQ19GSUVMRF9QQUdFLCAm bGVuKTsKIAl1dF9hKGxlbiA9PSA0KTsKIAogCWlmIChtYWNoX3JlYWRfZnJvbV80KGZpZWxkKSAh PSBwYWdlX25vKSB7CkBAIC0zMjc0LDcgKzMyODgsNyBAQCBpYnVmX2dldF9lbnRyeV9jb3VudGVy X2xvd19mdW5jKAogCX0KIAogCS8qIENoZWNrIGlmIHRoZSByZWNvcmQgY29udGFpbnMgYSBjb3Vu dGVyIGZpZWxkLiAqLwotCWZpZWxkID0gcmVjX2dldF9udGhfZmllbGRfb2xkKHJlYywgMywgJmxl bik7CisJZmllbGQgPSByZWNfZ2V0X250aF9maWVsZF9vbGQocmVjLCBJQlVGX1JFQ19GSUVMRF9N RVRBREFUQSwgJmxlbik7CiAKIAlzd2l0Y2ggKGxlbiAlIERBVEFfTkVXX09SREVSX05VTExfVFlQ RV9CVUZfU0laRSkgewogCWRlZmF1bHQ6CkBAIC0zMjkwLDE0NyArMzMwNCw2MSBAQCBpYnVmX2dl dF9lbnRyeV9jb3VudGVyX2xvd19mdW5jKAogCX0KIH0KIAorI2lmZGVmIFVOSVZfREVCVUcKKyMg ZGVmaW5lIGlidWZfZ2V0X2VudHJ5X2NvdW50ZXIoc3BhY2UscGFnZV9ubyxyZWMsbXRyLGV4YWN0 X2xlYWYpIFwKKwlpYnVmX2dldF9lbnRyeV9jb3VudGVyX2Z1bmMoc3BhY2UscGFnZV9ubyxyZWMs bXRyLGV4YWN0X2xlYWYpCisjZWxzZSAvKiBVTklWX0RFQlVHICovCisjIGRlZmluZSBpYnVmX2dl dF9lbnRyeV9jb3VudGVyKHNwYWNlLHBhZ2Vfbm8scmVjLG10cixleGFjdF9sZWFmKSBcCisJaWJ1 Zl9nZXRfZW50cnlfY291bnRlcl9mdW5jKHNwYWNlLHBhZ2Vfbm8scmVjLGV4YWN0X2xlYWYpCisj ZW5kaWYKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCi1TZXQgdGhlIGNvdW50ZXIgZmllbGQgaW4gZW50cnkgdG8g dGhlIGNvcnJlY3QgdmFsdWUgYmFzZWQgb24gdGhlIGN1cnJlbnQKK0NhbGN1bGF0ZSB0aGUgY291 bnRlciBmaWVsZCBmb3IgYW4gZW50cnkgYmFzZWQgb24gdGhlIGN1cnJlbnQKIGxhc3QgcmVjb3Jk IGluIGlidWYgZm9yIChzcGFjZSwgcGFnZV9ubykuCi1AcmV0dXJuCUZBTFNFIGlmIHdlIHNob3Vs ZCBhYm9ydCB0aGlzIGluc2VydGlvbiB0byBpYnVmICovCitAcmV0dXJuCXRoZSBjb3VudGVyIGZp ZWxkLCBvciBVTElOVF9VTkRFRklORUQKK2lmIHdlIHNob3VsZCBhYm9ydCB0aGlzIGluc2VydGlv biB0byBpYnVmICovCiBzdGF0aWMKLWlib29sCi1pYnVmX3NldF9lbnRyeV9jb3VudGVyKAotLyo9 PT09PT09PT09PT09PT09PT09Ki8KLQlkdHVwbGVfdCoJZW50cnksCQkvKiE8IGluL291dDogZW50 cnkgdG8gcGF0Y2ggKi8KK3VsaW50CitpYnVmX2dldF9lbnRyeV9jb3VudGVyX2Z1bmMoCisvKj09 PT09PT09PT09PT09PT09PT09PT09PSovCiAJdWxpbnQJCXNwYWNlLAkJLyohPCBpbjogc3BhY2Ug aWQgb2YgZW50cnkgKi8KIAl1bGludAkJcGFnZV9ubywJLyohPCBpbjogcGFnZSBudW1iZXIgb2Yg ZW50cnkgKi8KLQlidHJfcGN1cl90KglwY3VyLAkJLyohPCBpbjogcGN1ciBwb3NpdGlvbmVkIG9u IHRoZSByZWNvcmQKLQkJCQkJZm91bmQgYnkgYnRyX3BjdXJfb3BlbiguLiwgZW50cnksCi0JCQkJ CVBBR0VfQ1VSX0xFLCAuLi4sIHBjdXIsIC4uLikgKi8KLQlpYm9vbAkJaXNfb3B0aW1pc3RpYywJ LyohPCBpbjogaXMgdGhpcyBhbiBvcHRpbWlzdGljIGluc2VydCAqLwotCW10cl90KgkJbXRyKQkJ LyohPCBpbjogbXRyICovCisJY29uc3QgcmVjX3QqCXJlYywJCS8qITwgaW46IHRoZSByZWNvcmQg cHJlY2VkaW5nIHRoZQorCQkJCQlpbnNlcnRpb24gcG9pbnQgKi8KKyNpZmRlZiBVTklWX0RFQlVH CisJbXRyX3QqCQltdHIsCQkvKiE8IGluOiBtaW5pLXRyYW5zYWN0aW9uICovCisjZW5kaWYgLyog VU5JVl9ERUJVRyAqLworCWlib29sCQlvbmx5X2xlYWYpCS8qITwgaW46IFRSVUUgaWYgdGhpcyBp cyB0aGUgb25seQorCQkJCQlsZWFmIHBhZ2UgdGhhdCBjYW4gY29udGFpbiBlbnRyaWVzCisJCQkJ CWZvciAoc3BhY2UscGFnZV9ubyksIHRoYXQgaXMsIHRoZXJlCisJCQkJCXdhcyBubyBleGFjdCBt YXRjaCBmb3IgKHNwYWNlLHBhZ2Vfbm8pCisJCQkJCWluIHRoZSBub2RlIHBvaW50ZXIgKi8KIHsK LQlkZmllbGRfdCoJZmllbGQ7Ci0JYnl0ZSoJCWRhdGE7Ci0JdWxpbnQJCWNvdW50ZXIgPSAwOwot Ci0JLyogcGN1ciBwb2ludHMgdG8gZWl0aGVyIGEgdXNlciByZWMgb3IgdG8gYSBwYWdlJ3MgaW5m aW11bSByZWNvcmQuICovCiAJdXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7Ci0JdXRfYWQobXRyX21l bW9fY29udGFpbnMobXRyLCBidHJfcGN1cl9nZXRfYmxvY2socGN1ciksCi0JCQkJTVRSX01FTU9f UEFHRV9YX0ZJWCkpOwotCXV0X2FkKHBhZ2VfdmFsaWRhdGUoYnRyX3BjdXJfZ2V0X3BhZ2UocGN1 ciksIGlidWYtPmluZGV4KSk7Ci0KLQlpZiAoYnRyX3BjdXJfaXNfb25fdXNlcl9yZWMocGN1cikp IHsKLQotCQljb3VudGVyID0gaWJ1Zl9nZXRfZW50cnlfY291bnRlcl9sb3coCi0JCQltdHIsIGJ0 cl9wY3VyX2dldF9yZWMocGN1ciksIHNwYWNlLCBwYWdlX25vKTsKLQotCQlpZiAoVU5JVl9VTkxJ S0VMWShjb3VudGVyID09IFVMSU5UX1VOREVGSU5FRCkpIHsKLQkJCS8qIFRoZSByZWNvcmQgbGFj a3MgYSBjb3VudGVyIGZpZWxkLgotCQkJU3VjaCBvbGQgcmVjb3JkcyBtdXN0IGJlIG1lcmdlZCBi ZWZvcmUKLQkJCW5ldyByZWNvcmRzIGNhbiBiZSBidWZmZXJlZC4gKi8KLQotCQkJcmV0dXJuKEZB TFNFKTsKLQkJfQotCX0gZWxzZSBpZiAoYnRyX3BjdXJfaXNfYmVmb3JlX2ZpcnN0X2luX3RyZWUo cGN1ciwgbXRyKSkgewotCQkvKiBJYnVmIHRyZWUgaXMgZWl0aGVyIGNvbXBsZXRlbHkgZW1wdHks IG9yIHRoZSBpbnNlcnQKLQkJcG9zaXRpb24gaXMgYXQgdGhlIHZlcnkgZmlyc3QgcmVjb3JkIG9m IGEgbm9uLWVtcHR5IHRyZWUuIEluCi0JCWVpdGhlciBjYXNlIHdlIGhhdmUgbm8gcHJldmlvdXMg cmVjb3JkcyBmb3IgKHNwYWNlLAotCQlwYWdlX25vKS4gKi8KLQotCQljb3VudGVyID0gMDsKLQl9 IGVsc2UgaWYgKGJ0cl9wY3VyX2lzX2JlZm9yZV9maXJzdF9vbl9wYWdlKHBjdXIpKSB7Ci0JCWJ0 cl9jdXJfdCoJY3Vyc29yID0gYnRyX3BjdXJfZ2V0X2J0cl9jdXIocGN1cik7Ci0KLQkJaWYgKGN1 cnNvci0+bG93X21hdGNoIDwgMykgewotCQkJLyogSWYgbG93X21hdGNoIDwgMywgd2Uga25vdyB0 aGF0IHRoZSBmYXRoZXIgbm9kZQotCQkJcG9pbnRlciBkaWQgbm90IGNvbnRhaW4gdGhlIHNlYXJj aGVkIGZvciAoc3BhY2UsCi0JCQlwYWdlX25vKSwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgc2VhcmNo IGVuZGVkIG9uIHRoZQotCQkJcmlnaHQgcGFnZSByZWdhcmRsZXNzIG9mIHRoZSBjb3VudGVyIHZh bHVlLCBhbmQKLQkJCXNpbmNlIHdlJ3JlIGF0IHRoZSBpbmZpbXVtIHJlY29yZCwgdGhlcmUgYXJl IG5vCi0JCQlleGlzdGluZyByZWNvcmRzLiAqLwotCi0JCQljb3VudGVyID0gMDsKLQkJfSBlbHNl IHsKLQkJCXJlY190KgkJcmVjOwotCQkJY29uc3QgcGFnZV90KglwYWdlOwotCQkJYnVmX2Jsb2Nr X3QqCWJsb2NrOwotCQkJcGFnZV90KgkJcHJldl9wYWdlOwotCQkJdWxpbnQJCXByZXZfcGFnZV9u bzsKLQotCQkJdXRfYShjdXJzb3ItPmlidWZfY250ICE9IFVMSU5UX1VOREVGSU5FRCk7Ci0KLQkJ CXBhZ2UgPSBidHJfcGN1cl9nZXRfcGFnZShwY3VyKTsKLQkJCXByZXZfcGFnZV9ubyA9IGJ0cl9w YWdlX2dldF9wcmV2KHBhZ2UsIG10cik7Ci0KLQkJCXV0X2EocHJldl9wYWdlX25vICE9IEZJTF9O VUxMKTsKLQotCQkJYmxvY2sgPSBidWZfcGFnZV9nZXQoCi0JCQkJSUJVRl9TUEFDRV9JRCwgMCwg cHJldl9wYWdlX25vLAotCQkJCVJXX1hfTEFUQ0gsIG10cik7Ci0KLQkJCWJ1Zl9ibG9ja19kYmdf YWRkX2xldmVsKGJsb2NrLCBTWU5DX0lCVUZfVFJFRV9OT0RFKTsKLQotCQkJcHJldl9wYWdlID0g YnVmX2Jsb2NrX2dldF9mcmFtZShibG9jayk7CisJdXRfYWQobXRyX21lbW9fY29udGFpbnNfcGFn ZShtdHIsIHJlYywgTVRSX01FTU9fUEFHRV9YX0ZJWCkpOworCXV0X2FkKHBhZ2VfdmFsaWRhdGUo cGFnZV9hbGlnbihyZWMpLCBpYnVmLT5pbmRleCkpOwogCi0JCQlyZWMgPSBwYWdlX3JlY19nZXRf cHJldigKLQkJCQlwYWdlX2dldF9zdXByZW11bV9yZWMocHJldl9wYWdlKSk7Ci0KLQkJCXV0X2Fk KHBhZ2VfcmVjX2lzX3VzZXJfcmVjKHJlYykpOwotCi0JCQljb3VudGVyID0gaWJ1Zl9nZXRfZW50 cnlfY291bnRlcl9sb3coCi0JCQkJbXRyLCByZWMsIHNwYWNlLCBwYWdlX25vKTsKLQotCQkJaWYg KFVOSVZfVU5MSUtFTFkoY291bnRlciA9PSBVTElOVF9VTkRFRklORUQpKSB7Ci0JCQkJLyogVGhl IHJlY29yZCBsYWNrcyBhIGNvdW50ZXIgZmllbGQuCi0JCQkJU3VjaCBvbGQgcmVjb3JkcyBtdXN0 IGJlIG1lcmdlZCBiZWZvcmUKLQkJCQluZXcgcmVjb3JkcyBjYW4gYmUgYnVmZmVyZWQuICovCi0K LQkJCQlyZXR1cm4oRkFMU0UpOwotCQkJfQotCi0JCQlpZiAoY291bnRlciA8IGN1cnNvci0+aWJ1 Zl9jbnQpIHsKLQkJCQkvKiBTZWFyY2ggZW5kZWQgb24gdGhlIHdyb25nIHBhZ2UuICovCi0KLQkJ CQlpZiAoaXNfb3B0aW1pc3RpYykgewotCQkJCQkvKiBJbiBhbiBvcHRpbWlzdGljIGluc2VydCwg d2UgY2FuCi0JCQkJCXNoaWZ0IHRoZSBpbnNlcnQgcG9zaXRpb24gdG8gdGhlIGxlZnQKLQkJCQkJ cGFnZSwgc2luY2UgaXQgb25seSBuZWVkcyBhbiBYLWxhdGNoCi0JCQkJCW9uIHRoZSBwYWdlIGl0 c2VsZiwgd2hpY2ggdGhlCi0JCQkJCW9yaWdpbmFsIHNlYXJjaCBhY3F1aXJlZCBmb3IgdXMuICov Ci0KLQkJCQkJYnRyX2N1cl9wb3NpdGlvbigKLQkJCQkJCWlidWYtPmluZGV4LCByZWMsIGJsb2Nr LAotCQkJCQkJYnRyX3BjdXJfZ2V0X2J0cl9jdXIocGN1cikpOwotCQkJCX0gZWxzZSB7Ci0JCQkJ CS8qIFdlIGNhbid0IHNoaWZ0IHRoZSBpbnNlcnQKLQkJCQkJcG9zaXRpb24gdG8gdGhlIGxlZnQg cGFnZSBpbiBhCi0JCQkJCXBlc3NpbWlzdGljIGluc2VydCBzaW5jZSBpdCB3b3VsZAotCQkJCQly ZXF1aXJlIGFuIFgtbGF0Y2ggb24gdGhlIGxlZnQKLQkJCQkJcGFnZSdzIGxlZnQgcGFnZSwgc28g d2UgaGF2ZSB0bwotCQkJCQlhYm9ydC4gKi8KLQotCQkJCQlyZXR1cm4oRkFMU0UpOwotCQkJCX0K LQkJCX0gZWxzZSB7Ci0JCQkJLyogVGhlIGNvdW50ZXIgZmllbGQgaW4gdGhlIGZhdGhlciBub2Rl IGlzCi0JCQkJdGhlIHNhbWUgYXMgd2Ugd291bGQgaW5zZXJ0OyB3ZSBkb24ndCBrbm93Ci0JCQkJ d2hldGhlciB0aGUgaW5zZXJ0IHNob3VsZCBnbyB0byB0aGlzIHBhZ2Ugb3IKLQkJCQl0aGUgbGVm dCBwYWdlICh0aGUgbGF0ZXIgZmllbGRzIGNhbiBkaWZmZXIpLAotCQkJCXNvIHJlZnVzZSB0aGUg aW5zZXJ0LiAqLwotCi0JCQkJcmV0dXJuKEZBTFNFKTsKLQkJCX0KLQkJfQorCWlmIChwYWdlX3Jl Y19pc19zdXByZW11bShyZWMpKSB7CisJCS8qIFRoaXMgaXMganVzdCBmb3Igc2FmZXR5LiBUaGUg cmVjb3JkIHNob3VsZCBiZSBhCisJCXBhZ2UgaW5maW11bSBvciBhIHVzZXIgcmVjb3JkLiAqLwor CQl1dF9hZCgwKTsKKwkJcmV0dXJuKFVMSU5UX1VOREVGSU5FRCk7CisJfSBlbHNlIGlmICghcGFn ZV9yZWNfaXNfaW5maW11bShyZWMpKSB7CisJCXJldHVybihpYnVmX2dldF9lbnRyeV9jb3VudGVy X2xvdyhtdHIsIHJlYywgc3BhY2UsIHBhZ2Vfbm8pKTsKKwl9IGVsc2UgaWYgKG9ubHlfbGVhZgor CQkgICB8fCBmaWxfcGFnZV9nZXRfcHJldihwYWdlX2FsaWduKHJlYykpID09IEZJTF9OVUxMKSB7 CisJCS8qIFRoZSBwYXJlbnQgbm9kZSBwb2ludGVyIGRpZCBub3QgY29udGFpbiB0aGUKKwkJc2Vh cmNoZWQgZm9yIChzcGFjZSwgcGFnZV9ubyksIHdoaWNoIG1lYW5zIHRoYXQgdGhlCisJCXNlYXJj aCBlbmRlZCBvbiB0aGUgY29ycmVjdCBwYWdlIHJlZ2FyZGxlc3Mgb2YgdGhlCisJCWNvdW50ZXIg dmFsdWUsIGFuZCBzaW5jZSB3ZSdyZSBhdCB0aGUgaW5maW11bSByZWNvcmQsCisJCXRoZXJlIGFy ZSBubyBleGlzdGluZyByZWNvcmRzLiAqLworCQlyZXR1cm4oMCk7CiAJfSBlbHNlIHsKLQkJLyog VGhlIGN1cnNvciBpcyBub3QgcG9zaXRpb25lZCBhdCBvciBiZWZvcmUgYSB1c2VyIHJlY29yZC4g Ki8KLQkJcmV0dXJuKEZBTFNFKTsKKwkJLyogV2UgdXNlZCB0byByZWFkIHRoZSBwcmV2aW91cyBw YWdlIGhlcmUuIEl0IHdvdWxkCisJCWJyZWFrIHRoZSBsYXRjaGluZyBvcmRlciwgYmVjYXVzZSB0 aGUgY2FsbGVyIGhhcworCQlidWZmZXItZml4ZWQgYW4gaW5zZXJ0IGJ1ZmZlciBiaXRtYXAgcGFn ZS4gKi8KKwkJcmV0dXJuKFVMSU5UX1VOREVGSU5FRCk7CiAJfQotCi0JLyogUGF0Y2ggY291bnRl ciB2YWx1ZSBpbiBhbHJlYWR5IGJ1aWx0IGVudHJ5LiAqLwotCWZpZWxkID0gZHR1cGxlX2dldF9u dGhfZmllbGQoZW50cnksIDMpOwotCWRhdGEgPSBkZmllbGRfZ2V0X2RhdGEoZmllbGQpOwotCi0J bWFjaF93cml0ZV90b18yKGRhdGEgKyBJQlVGX1JFQ19PRkZTRVRfQ09VTlRFUiwgY291bnRlcik7 Ci0KLQlyZXR1cm4oVFJVRSk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC0zNjM5LDE2ICsz NTY3LDI3IEBAIGZhaWxfZXhpdDoKIAkJfQogCX0KIAotCS8qIFBhdGNoIGNvcnJlY3QgY291bnRl ciB2YWx1ZSB0byB0aGUgZW50cnkgdG8gaW5zZXJ0LiBUaGlzIGNhbgotCWNoYW5nZSB0aGUgaW5z ZXJ0IHBvc2l0aW9uLCB3aGljaCBjYW4gcmVzdWx0IGluIHRoZSBuZWVkIHRvIGFib3J0IGluCi0J c29tZSBjYXNlcy4gKi8KLQlpZiAoIW5vX2NvdW50ZXIKLQkgICAgJiYgIWlidWZfc2V0X2VudHJ5 X2NvdW50ZXIoaWJ1Zl9lbnRyeSwgc3BhY2UsIHBhZ2Vfbm8sICZwY3VyLAotCQkJCSAgICAgICBt b2RlID09IEJUUl9NT0RJRllfUFJFViwgJm10cikpIHsKKwlpZiAoIW5vX2NvdW50ZXIpIHsKKwkJ LyogUGF0Y2ggY29ycmVjdCBjb3VudGVyIHZhbHVlIHRvIHRoZSBlbnRyeSB0bworCQlpbnNlcnQu IFRoaXMgY2FuIGNoYW5nZSB0aGUgaW5zZXJ0IHBvc2l0aW9uLCB3aGljaCBjYW4KKwkJcmVzdWx0 IGluIHRoZSBuZWVkIHRvIGFib3J0IGluIHNvbWUgY2FzZXMuICovCisJCXVsaW50CQljb3VudGVy ID0gaWJ1Zl9nZXRfZW50cnlfY291bnRlcigKKwkJCXNwYWNlLCBwYWdlX25vLCBidHJfcGN1cl9n ZXRfcmVjKCZwY3VyKSwgJm10ciwKKwkJCWJ0cl9wY3VyX2dldF9idHJfY3VyKCZwY3VyKS0+bG93 X21hdGNoCisJCQk8IElCVUZfUkVDX0ZJRUxEX01FVEFEQVRBKTsKKwkJZGZpZWxkX3QqCWZpZWxk OworCisJCWlmIChjb3VudGVyID09IFVMSU5UX1VOREVGSU5FRCkgewogYml0bWFwX2ZhaWw6Ci0J CWlidWZfbXRyX2NvbW1pdCgmYml0bWFwX210cik7CisJCQlpYnVmX210cl9jb21taXQoJmJpdG1h cF9tdHIpOworCQkJZ290byBmYWlsX2V4aXQ7CisJCX0KIAotCQlnb3RvIGZhaWxfZXhpdDsKKwkJ ZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZCgKKwkJCWlidWZfZW50cnksIElCVUZfUkVDX0ZJ RUxEX01FVEFEQVRBKTsKKwkJbWFjaF93cml0ZV90b18yKAorCQkJZGZpZWxkX2dldF9kYXRhKGZp ZWxkKSArIElCVUZfUkVDX09GRlNFVF9DT1VOVEVSLAorCQkJY291bnRlcik7CiAJfQogCiAJLyog U2V0IHRoZSBiaXRtYXAgYml0IGRlbm90aW5nIHRoYXQgdGhlIGluc2VydCBidWZmZXIgY29udGFp bnMKCk5vIGJ1bmRsZSAocmVhc29uOiB1c2VsZXNzIGZvciBwdXNoIGVtYWlscyku