From: marko.makela Date: February 8 2011 12:17pm Subject: bzr commit into mysql-trunk-innodb branch (marko.makela:3488) List-Archive: http://lists.mysql.com/commits/130709 Message-Id: <201102081217.p18BWikL006949@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2002262643==" --===============2002262643== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjYtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwMjA4MDU1NjQ4LWFtaTlk NW93ZTV2cmI0dGEKCiAzNDg4IE1hcmtvIE3DpGtlbMOkCTIwMTEtMDItMDggW21lcmdlXQogICAg ICBNZXJnZSBteXNxbC01LjUtaW5ub2RiIHRvIG15c3FsLXRydW5rLWlubm9kYi4KCiAgICBtb2Rp ZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGJ0ci5jCiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2UvYnRyL2J0cjBjdXIuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2RpY3QvZGljdDBt ZW0uYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5oCiAgICAgIHN0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwdHlwZXMuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvZGljdDBtZW0uaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFnZTB6aXAu aAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdW5pdi5pCiAgICAgIHN0b3JhZ2UvaW5u b2Jhc2UvcGFnZS9wYWdlMGN1ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHBh Z2UuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTB6aXAuYwogICAgICBzdG9yYWdl L2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHN0 YXJ0LmMKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBidHIuYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGJ0ci5jCXJldmlkOnZhc2lsLmRpbW92QG9y YWNsZS5jb20tMjAxMTAyMDgwNTU2NDgtYW1pOWQ1b3dlNXZyYjR0YQorKysgYi9zdG9yYWdlL2lu bm9iYXNlL2J0ci9idHIwYnRyLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAy MDgxMjE2MTQtams1M2o3MDUyZWI3dDlyZgpAQCAtNDMsNiArNDMsNTYwIEBAIENyZWF0ZWQgNi8y LzE5OTQgSGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAidHJ4MHRyeC5oIgogI2luY2x1ZGUgInNydjBt b24uaCIKIAorI2lmZGVmIFVOSVZfQkxPQl9ERUJVRworIyBpbmNsdWRlICJzcnYwc3J2LmgiCisj IGluY2x1ZGUgInV0MHJidC5oIgorCisvKiogVFJVRSB3aGVuIG1lc3NhZ2VzIGFib3V0IGluZGV4 LT5ibG9icyBtb2RpZmljYXRpb24gYXJlIGVuYWJsZWQuICovCitzdGF0aWMgaWJvb2wgYnRyX2Js b2JfZGJnX21zZzsKKworLyoqIElzc3VlIGEgbWVzc2FnZSBhYm91dCBhbiBvcGVyYXRpb24gb24g aW5kZXgtPmJsb2JzLgorQHBhcmFtIG9wCW9wZXJhdGlvbgorQHBhcmFtIGIJdGhlIGVudHJ5IGJl aW5nIHN1YmplY3RlZCB0byB0aGUgb3BlcmF0aW9uCitAcGFyYW0gY3R4CXRoZSBjb250ZXh0IG9m IHRoZSBvcGVyYXRpb24gKi8KKyNkZWZpbmUgYnRyX2Jsb2JfZGJnX21zZ19pc3N1ZShvcCwgYiwg Y3R4KQkJCVwKKwlmcHJpbnRmKHN0ZGVyciwgb3AgIiAldToldToldS0+JXUgJXMoJXUsJXUsJXUp XG4iLAlcCisJCShiKS0+cmVmX3BhZ2Vfbm8sIChiKS0+cmVmX2hlYXBfbm8sCQlcCisJCShiKS0+ cmVmX2ZpZWxkX25vLCAoYiktPmJsb2JfcGFnZV9ubywgY3R4LAlcCisJCShiKS0+b3duZXIsIChi KS0+YWx3YXlzX293bmVyLCAoYiktPmRlbCkKKworLyoqIEluc2VydCB0byBpbmRleC0+YmxvYnMg YSByZWZlcmVuY2UgdG8gYW4gb2ZmLXBhZ2UgY29sdW1uLgorQHBhcmFtIGluZGV4CXRoZSBpbmRl eCB0cmVlCitAcGFyYW0gYgl0aGUgcmVmZXJlbmNlCitAcGFyYW0gY3R4CWNvbnRleHQgKGZvciBs b2dnaW5nKSAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19yYnRfaW5zZXJ0KAor Lyo9PT09PT09PT09PT09PT09PT09PSovCisJZGljdF9pbmRleF90KgkJaW5kZXgsCS8qITwgaW4v b3V0OiBpbmRleCB0cmVlICovCisJY29uc3QgYnRyX2Jsb2JfZGJnX3QqCWIsCS8qITwgaW46IHRo ZSByZWZlcmVuY2UgKi8KKwljb25zdCBjaGFyKgkJY3R4KQkvKiE8IGluOiBjb250ZXh0IChmb3Ig bG9nZ2luZykgKi8KK3sKKwlpZiAoYnRyX2Jsb2JfZGJnX21zZykgeworCQlidHJfYmxvYl9kYmdf bXNnX2lzc3VlKCJpbnNlcnQiLCBiLCBjdHgpOworCX0KKwltdXRleF9lbnRlcigmaW5kZXgtPmJs b2JzX211dGV4KTsKKwlyYnRfaW5zZXJ0KGluZGV4LT5ibG9icywgYiwgYik7CisJbXV0ZXhfZXhp dCgmaW5kZXgtPmJsb2JzX211dGV4KTsKK30KKworLyoqIFJlbW92ZSBmcm9tIGluZGV4LT5ibG9i cyBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4uCitAcGFyYW0gaW5kZXgJdGhlIGlu ZGV4IHRyZWUKK0BwYXJhbSBiCXRoZSByZWZlcmVuY2UKK0BwYXJhbSBjdHgJY29udGV4dCAoZm9y IGxvZ2dpbmcpICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX3JidF9kZWxldGUo CisvKj09PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X2luZGV4X3QqCQlpbmRleCwJLyohPCBp bi9vdXQ6IGluZGV4IHRyZWUgKi8KKwljb25zdCBidHJfYmxvYl9kYmdfdCoJYiwJLyohPCBpbjog dGhlIHJlZmVyZW5jZSAqLworCWNvbnN0IGNoYXIqCQljdHgpCS8qITwgaW46IGNvbnRleHQgKGZv ciBsb2dnaW5nKSAqLworeworCWlmIChidHJfYmxvYl9kYmdfbXNnKSB7CisJCWJ0cl9ibG9iX2Ri Z19tc2dfaXNzdWUoImRlbGV0ZSIsIGIsIGN0eCk7CisJfQorCW11dGV4X2VudGVyKCZpbmRleC0+ YmxvYnNfbXV0ZXgpOworCXV0X2EocmJ0X2RlbGV0ZShpbmRleC0+YmxvYnMsIGIpKTsKKwltdXRl eF9leGl0KCZpbmRleC0+YmxvYnNfbXV0ZXgpOworfQorCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitDb21wYXJhdG9y IGZvciBpdGVtcyAoYnRyX2Jsb2JfZGJnX3QpIGluIGluZGV4LT5ibG9icy4KK1RoZSBrZXkgaW4g aW5kZXgtPmJsb2JzIGlzIChyZWZfcGFnZV9ubywgcmVmX2hlYXBfbm8sIHJlZl9maWVsZF9ubyku CitAcmV0dXJuIG5lZ2F0aXZlLCAwIG9yIHBvc2l0aXZlIGlmICphPCpiLCAqYT0qYiwgKmE+KmIg Ki8KK3N0YXRpYworaW50CitidHJfYmxvYl9kYmdfY21wKAorLyo9PT09PT09PT09PT09Ki8KKwlj b25zdCB2b2lkKglhLAkvKiE8IGluOiBmaXJzdCBidHJfYmxvYl9kYmdfdCB0byBjb21wYXJlICov CisJY29uc3Qgdm9pZCoJYikJLyohPCBpbjogc2Vjb25kIGJ0cl9ibG9iX2RiZ190IHRvIGNvbXBh cmUgKi8KK3sKKwljb25zdCBidHJfYmxvYl9kYmdfdCoJYWEJPSBhOworCWNvbnN0IGJ0cl9ibG9i X2RiZ190KgliYgk9IGI7CisKKwl1dF9hZChhYSAhPSBOVUxMKTsKKwl1dF9hZChiYiAhPSBOVUxM KTsKKworCWlmIChhYS0+cmVmX3BhZ2Vfbm8gIT0gYmItPnJlZl9wYWdlX25vKSB7CisJCXJldHVy bihhYS0+cmVmX3BhZ2Vfbm8gPCBiYi0+cmVmX3BhZ2Vfbm8gPyAtMSA6IDEpOworCX0KKwlpZiAo YWEtPnJlZl9oZWFwX25vICE9IGJiLT5yZWZfaGVhcF9ubykgeworCQlyZXR1cm4oYWEtPnJlZl9o ZWFwX25vIDwgYmItPnJlZl9oZWFwX25vID8gLTEgOiAxKTsKKwl9CisJaWYgKGFhLT5yZWZfZmll bGRfbm8gIT0gYmItPnJlZl9maWVsZF9ubykgeworCQlyZXR1cm4oYWEtPnJlZl9maWVsZF9ubyA8 IGJiLT5yZWZfZmllbGRfbm8gPyAtMSA6IDEpOworCX0KKwlyZXR1cm4oMCk7Cit9CisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKK0FkZCBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4gdG8gdGhlIGluZGV4 LT5ibG9icyBtYXAuICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX2FkZF9ibG9i KAorLyo9PT09PT09PT09PT09PT09PT0qLworCWNvbnN0IHJlY190KglyZWMsCQkvKiE8IGluOiBj bHVzdGVyZWQgaW5kZXggcmVjb3JkICovCisJdWxpbnQJCWZpZWxkX25vLAkvKiE8IGluOiBvZmYt cGFnZSBjb2x1bW4gbnVtYmVyICovCisJdWxpbnQJCXBhZ2Vfbm8sCS8qITwgaW46IHN0YXJ0IHBh Z2Ugb2YgdGhlIGNvbHVtbiAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluL291dDog aW5kZXggdHJlZSAqLworCWNvbnN0IGNoYXIqCWN0eCkJCS8qITwgaW46IGNvbnRleHQgKGZvciBs b2dnaW5nKSAqLworeworCWJ0cl9ibG9iX2RiZ190CWI7CisJY29uc3QgcGFnZV90KglwYWdlCT0g cGFnZV9hbGlnbihyZWMpOworCisJdXRfYShpbmRleC0+YmxvYnMpOworCisJYi5ibG9iX3BhZ2Vf bm8gPSBwYWdlX25vOworCWIucmVmX3BhZ2Vfbm8gPSBwYWdlX2dldF9wYWdlX25vKHBhZ2UpOwor CWIucmVmX2hlYXBfbm8gPSBwYWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOworCWIucmVmX2ZpZWxk X25vID0gZmllbGRfbm87CisJdXRfYShiLnJlZl9maWVsZF9ubyA+PSBpbmRleC0+bl91bmlxKTsK KwliLmFsd2F5c19vd25lciA9IGIub3duZXIgPSBUUlVFOworCWIuZGVsID0gRkFMU0U7CisJdXRf YSghcmVjX2dldF9kZWxldGVkX2ZsYWcocmVjLCBwYWdlX2lzX2NvbXAocGFnZSkpKTsKKwlidHJf YmxvYl9kYmdfcmJ0X2luc2VydChpbmRleCwgJmIsIGN0eCk7Cit9CisKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0Fk ZCB0byBpbmRleC0+YmxvYnMgYW55IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucyBmcm9t IGEgcmVjb3JkLgorQHJldHVybiBudW1iZXIgb2YgcmVmZXJlbmNlcyBhZGRlZCAqLworVU5JVl9J TlRFUk4KK3VsaW50CitidHJfYmxvYl9kYmdfYWRkX3JlYygKKy8qPT09PT09PT09PT09PT09PT0q LworCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46IHJlY29yZCAqLworCWRpY3RfaW5kZXhfdCoJ aW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwg aW46IG9mZnNldHMgKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBs b2dnaW5nKSAqLworeworCXVsaW50CQljb3VudAk9IDA7CisJdWxpbnQJCWk7CisJYnRyX2Jsb2Jf ZGJnX3QJYjsKKwlpYm9vbAkJZGVsOworCisJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBp bmRleCwgb2Zmc2V0cykpOworCisJaWYgKCFyZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKSB7 CisJCXJldHVybigwKTsKKwl9CisKKwliLnJlZl9wYWdlX25vID0gcGFnZV9nZXRfcGFnZV9ubyhw YWdlX2FsaWduKHJlYykpOworCWIucmVmX2hlYXBfbm8gPSBwYWdlX3JlY19nZXRfaGVhcF9ubyhy ZWMpOworCWRlbCA9IChyZWNfZ2V0X2RlbGV0ZWRfZmxhZyhyZWMsIHJlY19vZmZzX2NvbXAob2Zm c2V0cykpICE9IDApOworCisJZm9yIChpID0gMDsgaSA8IHJlY19vZmZzX25fZmllbGRzKG9mZnNl dHMpOyBpKyspIHsKKwkJaWYgKHJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0cywgaSkpIHsKKwkJ CXVsaW50CQlsZW47CisJCQljb25zdCBieXRlKglmaWVsZF9yZWYgPSByZWNfZ2V0X250aF9maWVs ZCgKKwkJCQlyZWMsIG9mZnNldHMsIGksICZsZW4pOworCisJCQl1dF9hKGxlbiAhPSBVTklWX1NR TF9OVUxMKTsKKwkJCXV0X2EobGVuID49IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpOworCQkJ ZmllbGRfcmVmICs9IGxlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisKKwkJCWlmICgh bWVtY21wKGZpZWxkX3JlZiwgZmllbGRfcmVmX3plcm8sCisJCQkJICAgIEJUUl9FWFRFUk5fRklF TERfUkVGX1NJWkUpKSB7CisJCQkJLyogdGhlIGNvbHVtbiBoYXMgbm90IGJlZW4gc3RvcmVkIHll dCAqLworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQliLnJlZl9maWVsZF9ubyA9IGk7CisJCQli LmJsb2JfcGFnZV9ubyA9IG1hY2hfcmVhZF9mcm9tXzQoCisJCQkJZmllbGRfcmVmICsgQlRSX0VY VEVSTl9QQUdFX05PKTsKKwkJCXV0X2EoYi5yZWZfZmllbGRfbm8gPj0gaW5kZXgtPm5fdW5pcSk7 CisJCQliLmFsd2F5c19vd25lciA9IGIub3duZXIKKwkJCQk9ICEoZmllbGRfcmVmW0JUUl9FWFRF Uk5fTEVOXQorCQkJCSAgICAmIEJUUl9FWFRFUk5fT1dORVJfRkxBRyk7CisJCQliLmRlbCA9IGRl bDsKKworCQkJYnRyX2Jsb2JfZGJnX3JidF9pbnNlcnQoaW5kZXgsICZiLCBjdHgpOworCQkJY291 bnQrKzsKKwkJfQorCX0KKworCXJldHVybihjb3VudCk7Cit9CisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0Rpc3Bs YXkgdGhlIHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucy4KK1RoaXMgZnVuY3Rpb24gaXMg dG8gYmUgY2FsbGVkIGZyb20gYSBkZWJ1Z2dlciwKK2ZvciBleGFtcGxlIHdoZW4gYSBicmVha3Bv aW50IG9uIHV0X2RiZ19hc3NlcnRpb25fZmFpbGVkIGlzIGhpdC4gKi8KK1VOSVZfSU5URVJOCit2 b2lkCitidHJfYmxvYl9kYmdfcHJpbnQoCisvKj09PT09PT09PT09PT09PSovCisJY29uc3QgZGlj dF9pbmRleF90KglpbmRleCkJLyohPCBpbjogaW5kZXggdHJlZSAqLworeworCWNvbnN0IGliX3Ji dF9ub2RlX3QqCW5vZGU7CisKKwlpZiAoIWluZGV4LT5ibG9icykgeworCQlyZXR1cm47CisJfQor CisJLyogV2UgaW50ZW50aW9uYWxseSBkbyBub3QgYWNxdWlyZSBpbmRleC0+YmxvYnNfbXV0ZXgg aGVyZS4KKwlUaGlzIGZ1bmN0aW9uIGlzIHRvIGJlIGNhbGxlZCBmcm9tIGEgZGVidWdnZXIsIGFu ZCB0aGUgY2FsbGVyCisJc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleC0+YmxvYnNfbXV0 ZXggaXMgaGVsZC4gKi8KKworCWZvciAobm9kZSA9IHJidF9maXJzdChpbmRleC0+YmxvYnMpOwor CSAgICAgbm9kZSAhPSBOVUxMOyBub2RlID0gcmJ0X25leHQoaW5kZXgtPmJsb2JzLCBub2RlKSkg eworCQljb25zdCBidHJfYmxvYl9kYmdfdCoJYgorCQkJPSByYnRfdmFsdWUoYnRyX2Jsb2JfZGJn X3QsIG5vZGUpOworCQlmcHJpbnRmKHN0ZGVyciwgIiV1OiV1OiV1LT4ldSVzJXMlc1xuIiwKKwkJ CWItPnJlZl9wYWdlX25vLCBiLT5yZWZfaGVhcF9ubywgYi0+cmVmX2ZpZWxkX25vLAorCQkJYi0+ YmxvYl9wYWdlX25vLAorCQkJYi0+b3duZXIgPyAiIiA6ICIoZGlzb3duZWQpIiwKKwkJCWItPmFs d2F5c19vd25lciA/ICIiIDogIihoYXMgZGlzb3duZWQpIiwKKwkJCWItPmRlbCA/ICIoZGVsZXRl ZCkiIDogIiIpOworCX0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorUmVtb3ZlIGZyb20gaW5kZXgtPmJsb2Jz IGFueSByZWZlcmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMgZnJvbSBhIHJlY29yZC4KK0ByZXR1 cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgcmVtb3ZlZCAqLworVU5JVl9JTlRFUk4KK3VsaW50Citi dHJfYmxvYl9kYmdfcmVtb3ZlX3JlYygKKy8qPT09PT09PT09PT09PT09PT09PT0qLworCWNvbnN0 IHJlY190KglyZWMsCS8qITwgaW46IHJlY29yZCAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8q ITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IG9mZnNl dHMgKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAq LworeworCXVsaW50CQlpOworCXVsaW50CQljb3VudAk9IDA7CisJYnRyX2Jsb2JfZGJnX3QJYjsK KworCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNldHMpKTsKKworCWlm ICghcmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSkgeworCQlyZXR1cm4oMCk7CisJfQorCisJ Yi5yZWZfcGFnZV9ubyA9IHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZV9hbGlnbihyZWMpKTsKKwliLnJl Zl9oZWFwX25vID0gcGFnZV9yZWNfZ2V0X2hlYXBfbm8ocmVjKTsKKworCWZvciAoaSA9IDA7IGkg PCByZWNfb2Zmc19uX2ZpZWxkcyhvZmZzZXRzKTsgaSsrKSB7CisJCWlmIChyZWNfb2Zmc19udGhf ZXh0ZXJuKG9mZnNldHMsIGkpKSB7CisJCQl1bGludAkJbGVuOworCQkJY29uc3QgYnl0ZSoJZmll bGRfcmVmID0gcmVjX2dldF9udGhfZmllbGQoCisJCQkJcmVjLCBvZmZzZXRzLCBpLCAmbGVuKTsK KworCQkJdXRfYShsZW4gIT0gVU5JVl9TUUxfTlVMTCk7CisJCQl1dF9hKGxlbiA+PSBCVFJfRVhU RVJOX0ZJRUxEX1JFRl9TSVpFKTsKKwkJCWZpZWxkX3JlZiArPSBsZW4gLSBCVFJfRVhURVJOX0ZJ RUxEX1JFRl9TSVpFOworCisJCQliLnJlZl9maWVsZF9ubyA9IGk7CisJCQliLmJsb2JfcGFnZV9u byA9IG1hY2hfcmVhZF9mcm9tXzQoCisJCQkJZmllbGRfcmVmICsgQlRSX0VYVEVSTl9QQUdFX05P KTsKKworCQkJc3dpdGNoIChiLmJsb2JfcGFnZV9ubykgeworCQkJY2FzZSAwOgorCQkJCS8qIFRo ZSBjb2x1bW4gaGFzIG5vdCBiZWVuIHN0b3JlZCB5ZXQuCisJCQkJVGhlIEJMT0IgcG9pbnRlciBt dXN0IGJlIGFsbCB6ZXJvLgorCQkJCVRoZXJlIGNhbm5vdCBiZSBhIEJMT0Igc3RhcnRpbmcgYXQK KwkJCQlwYWdlIDAsIGJlY2F1c2UgcGFnZSAwIGlzIHJlc2VydmVkIGZvcgorCQkJCXRoZSB0YWJs ZXNwYWNlIGhlYWRlci4gKi8KKwkJCQl1dF9hKCFtZW1jbXAoZmllbGRfcmVmLCBmaWVsZF9yZWZf emVybywKKwkJCQkJICAgICBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKSk7CisJCQkJLyogZmFs bCB0aHJvdWdoICovCisJCQljYXNlIEZJTF9OVUxMOgorCQkJCS8qIHRoZSBjb2x1bW4gaGFzIGJl ZW4gZnJlZWQgYWxyZWFkeSAqLworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQlidHJfYmxvYl9k YmdfcmJ0X2RlbGV0ZShpbmRleCwgJmIsIGN0eCk7CisJCQljb3VudCsrOworCQl9CisJfQorCisJ cmV0dXJuKGNvdW50KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8g cmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zIGZyb20gb3IgdG8KK3RoZSBnaXZlbiBwYWdl LiBJbnZva2VkIHdoZW4gZnJlZWluZyBvciBjbGVhcmluZyBhIHBhZ2UuCitAcmV0dXJuIFRSVUUg d2hlbiBubyBvcnBoYW4gcmVmZXJlbmNlcyBleGlzdCAqLworVU5JVl9JTlRFUk4KK2lib29sCiti dHJfYmxvYl9kYmdfaXNfZW1wdHkoCisvKj09PT09PT09PT09PT09PT09PSovCisJZGljdF9pbmRl eF90KglpbmRleCwJCS8qITwgaW46IGluZGV4ICovCisJdWxpbnQJCXBhZ2Vfbm8pCS8qITwgaW46 IHBhZ2UgbnVtYmVyICovCit7CisJY29uc3QgaWJfcmJ0X25vZGVfdCoJbm9kZTsKKwlpYm9vbAkJ CXN1Y2Nlc3MJPSBUUlVFOworCisJaWYgKCFpbmRleC0+YmxvYnMpIHsKKwkJcmV0dXJuKHN1Y2Nl c3MpOworCX0KKworCW11dGV4X2VudGVyKCZpbmRleC0+YmxvYnNfbXV0ZXgpOworCisJZm9yIChu b2RlID0gcmJ0X2ZpcnN0KGluZGV4LT5ibG9icyk7CisJICAgICBub2RlICE9IE5VTEw7IG5vZGUg PSByYnRfbmV4dChpbmRleC0+YmxvYnMsIG5vZGUpKSB7CisJCWNvbnN0IGJ0cl9ibG9iX2RiZ190 KgliCisJCQk9IHJidF92YWx1ZShidHJfYmxvYl9kYmdfdCwgbm9kZSk7CisKKwkJaWYgKGItPnJl Zl9wYWdlX25vICE9IHBhZ2Vfbm8gJiYgYi0+YmxvYl9wYWdlX25vICE9IHBhZ2Vfbm8pIHsKKwkJ CWNvbnRpbnVlOworCQl9CisKKwkJZnByaW50ZihzdGRlcnIsCisJCQkiSW5ub0RCOiBvcnBoYW4g QkxPQiByZWYlcyVzJXMgJXU6JXU6JXUtPiV1XG4iLAorCQkJYi0+b3duZXIgPyAiIiA6ICIoZGlz b3duZWQpIiwKKwkJCWItPmFsd2F5c19vd25lciA/ICIiIDogIihoYXMgZGlzb3duZWQpIiwKKwkJ CWItPmRlbCA/ICIoZGVsZXRlZCkiIDogIiIsCisJCQliLT5yZWZfcGFnZV9ubywgYi0+cmVmX2hl YXBfbm8sIGItPnJlZl9maWVsZF9ubywKKwkJCWItPmJsb2JfcGFnZV9ubyk7CisKKwkJaWYgKGIt PmJsb2JfcGFnZV9ubyAhPSBwYWdlX25vIHx8IGItPm93bmVyIHx8ICFiLT5kZWwpIHsKKwkJCXN1 Y2Nlc3MgPSBGQUxTRTsKKwkJfQorCX0KKworCW11dGV4X2V4aXQoJmluZGV4LT5ibG9ic19tdXRl eCk7CisJcmV0dXJuKHN1Y2Nlc3MpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitDb3VudCBhbmQgcHJvY2Vz cyBhbGwgcmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zIG9uIGEgcGFnZS4KK0ByZXR1cm4g bnVtYmVyIG9mIHJlZmVyZW5jZXMgcHJvY2Vzc2VkICovCitVTklWX0lOVEVSTgordWxpbnQKK2J0 cl9ibG9iX2RiZ19vcCgKKy8qPT09PT09PT09PT09Ki8KKwljb25zdCBwYWdlX3QqCQlwYWdlLAkv KiE8IGluOiBCLXRyZWUgbGVhZiBwYWdlICovCisJY29uc3QgcmVjX3QqCQlyZWMsCS8qITwgaW46 IHJlY29yZCB0byBzdGFydCBmcm9tCisJCQkJCShOVUxMIHRvIHByb2Nlc3MgdGhlIHdob2xlIHBh Z2UpICovCisJZGljdF9pbmRleF90KgkJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNv bnN0IGNoYXIqCQljdHgsCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCWNvbnN0 IGJ0cl9ibG9iX2RiZ19vcF9mCW9wKQkvKiE8IGluOiBvcGVyYXRpb24gb24gcmVjb3JkcyAqLwor eworCXVsaW50CQljb3VudAk9IDA7CisJbWVtX2hlYXBfdCoJaGVhcAk9IE5VTEw7CisJdWxpbnQJ CW9mZnNldHNfW1JFQ19PRkZTX05PUk1BTF9TSVpFXTsKKwl1bGludCoJCW9mZnNldHMJPSBvZmZz ZXRzXzsKKwlyZWNfb2Zmc19pbml0KG9mZnNldHNfKTsKKworCXV0X2EoZmlsX3BhZ2VfZ2V0X3R5 cGUocGFnZSkgPT0gRklMX1BBR0VfSU5ERVgpOworCXV0X2EoIXJlYyB8fCBwYWdlX2FsaWduKHJl YykgPT0gcGFnZSk7CisKKwlpZiAoIWluZGV4LT5ibG9icyB8fCAhcGFnZV9pc19sZWFmKHBhZ2Up CisJICAgIHx8ICFkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSkgeworCQlyZXR1cm4oMCk7CisJ fQorCisJaWYgKHJlYyA9PSBOVUxMKSB7CisJCXJlYyA9IHBhZ2VfZ2V0X2luZmltdW1fcmVjKHBh Z2UpOworCX0KKworCWRvIHsKKwkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4 LCBvZmZzZXRzLAorCQkJCQkgIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApOworCQljb3VudCArPSBv cChyZWMsIGluZGV4LCBvZmZzZXRzLCBjdHgpOworCQlyZWMgPSBwYWdlX3JlY19nZXRfbmV4dF9j b25zdChyZWMpOworCX0gd2hpbGUgKCFwYWdlX3JlY19pc19zdXByZW11bShyZWMpKTsKKworCWlm IChVTklWX0xJS0VMWV9OVUxMKGhlYXApKSB7CisJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CisJfQor CisJcmV0dXJuKGNvdW50KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ291bnQgYW5kIGFkZCB0byBpbmRl eC0+YmxvYnMgYW55IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucworZnJvbSByZWNvcmRz IG9uIGEgcGFnZS4KK0ByZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgYWRkZWQgKi8KK1VOSVZf SU5URVJOCit1bGludAorYnRyX2Jsb2JfZGJnX2FkZCgKKy8qPT09PT09PT09PT09PSovCisJY29u c3QgcGFnZV90KglwYWdlLAkvKiE8IGluOiByZXdyaXR0ZW4gcGFnZSAqLworCWRpY3RfaW5kZXhf dCoJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IGNoYXIqCWN0eCkJLyohPCBp bjogY29udGV4dCAoZm9yIGxvZ2dpbmcpICovCit7CisJYnRyX2Jsb2JfZGJnX2Fzc2VydF9lbXB0 eShpbmRleCwgcGFnZV9nZXRfcGFnZV9ubyhwYWdlKSk7CisKKwlyZXR1cm4oYnRyX2Jsb2JfZGJn X29wKHBhZ2UsIE5VTEwsIGluZGV4LCBjdHgsIGJ0cl9ibG9iX2RiZ19hZGRfcmVjKSk7Cit9CisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKK0NvdW50IGFuZCByZW1vdmUgZnJvbSBpbmRleC0+YmxvYnMgYW55IHJlZmVy ZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucworZnJvbSByZWNvcmRzIG9uIGEgcGFnZS4KK1VzZWQg d2hlbiByZW9yZ2FuaXppbmcgYSBwYWdlLCBiZWZvcmUgY29weWluZyB0aGUgcmVjb3Jkcy4KK0By ZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgcmVtb3ZlZCAqLworVU5JVl9JTlRFUk4KK3VsaW50 CitidHJfYmxvYl9kYmdfcmVtb3ZlKAorLyo9PT09PT09PT09PT09PT09Ki8KKwljb25zdCBwYWdl X3QqCXBhZ2UsCS8qITwgaW46IGItdHJlZSBwYWdlICovCisJZGljdF9pbmRleF90KglpbmRleCwJ LyohPCBpbi9vdXQ6IGluZGV4ICovCisJY29uc3QgY2hhcioJY3R4KQkvKiE8IGluOiBjb250ZXh0 IChmb3IgbG9nZ2luZykgKi8KK3sKKwl1bGludAljb3VudDsKKworCWNvdW50ID0gYnRyX2Jsb2Jf ZGJnX29wKHBhZ2UsIE5VTEwsIGluZGV4LCBjdHgsCisJCQkJYnRyX2Jsb2JfZGJnX3JlbW92ZV9y ZWMpOworCisJLyogQ2hlY2sgdGhhdCBubyByZWZlcmVuY2VzIGV4aXN0LiAqLworCWJ0cl9ibG9i X2RiZ19hc3NlcnRfZW1wdHkoaW5kZXgsIHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZSkpOworCisJcmV0 dXJuKGNvdW50KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorUmVzdG9yZSBpbiBpbmRleC0+YmxvYnMgYW55 IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucworVXNlZCB3aGVuIHBhZ2UgcmVvcmdhbml6 ZSBmYWlscyBkdWUgdG8gY29tcHJlc3NlZCBwYWdlIG92ZXJmbG93LiAqLworVU5JVl9JTlRFUk4K K3ZvaWQKK2J0cl9ibG9iX2RiZ19yZXN0b3JlKAorLyo9PT09PT09PT09PT09PT09PSovCisJY29u c3QgcGFnZV90KglucGFnZSwJLyohPCBpbjogcGFnZSB0aGF0IGZhaWxlZCB0byBjb21wcmVzcyAg Ki8KKwljb25zdCBwYWdlX3QqCXBhZ2UsCS8qITwgaW46IGNvcHkgb2Ygb3JpZ2luYWwgcGFnZSAq LworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IGNo YXIqCWN0eCkJLyohPCBpbjogY29udGV4dCAoZm9yIGxvZ2dpbmcpICovCit7CisJdWxpbnQJcmVt b3ZlZDsKKwl1bGludAlhZGRlZDsKKworCXV0X2EocGFnZV9nZXRfcGFnZV9ubyhucGFnZSkgPT0g cGFnZV9nZXRfcGFnZV9ubyhwYWdlKSk7CisJdXRfYShwYWdlX2dldF9zcGFjZV9pZChucGFnZSkg PT0gcGFnZV9nZXRfc3BhY2VfaWQocGFnZSkpOworCisJcmVtb3ZlZCA9IGJ0cl9ibG9iX2RiZ19y ZW1vdmUobnBhZ2UsIGluZGV4LCBjdHgpOworCWFkZGVkID0gYnRyX2Jsb2JfZGJnX2FkZChwYWdl LCBpbmRleCwgY3R4KTsKKwl1dF9hKGFkZGVkID09IHJlbW92ZWQpOworfQorCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CitNb2RpZnkgdGhlICdkZWxldGVkJyBmbGFnIG9mIGEgcmVjb3JkLiAqLworVU5JVl9JTlRFUk4K K3ZvaWQKK2J0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKAorLyo9PT09PT09PT09PT09PT09 PT09PT09PT09PSovCisJY29uc3QgcmVjX3QqCQlyZWMsCS8qITwgaW46IHJlY29yZCAqLworCWRp Y3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25zdCB1bGludCoJ CW9mZnNldHMsLyohPCBpbjogcmVjX2dldF9vZmZzKHJlYywgaW5kZXgpICovCisJaWJvb2wJCQlk ZWwpCS8qITwgaW46IFRSVUU9ZGVsZXRlZCwgRkFMU0U9ZXhpc3RzICovCit7CisJY29uc3QgaWJf cmJ0X25vZGVfdCoJbm9kZTsKKwlidHJfYmxvYl9kYmdfdAkJYjsKKwlidHJfYmxvYl9kYmdfdCoJ CWM7CisJdWxpbnQJCQlpOworCisJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwg b2Zmc2V0cykpOworCXV0X2EoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpOworCXV0X2EoZGVs ID09ICEhZGVsKTsvKiBtdXN0IGJlIEZBTFNFPT0wIG9yIFRSVUU9PTEgKi8KKworCWlmICghcmVj X29mZnNfYW55X2V4dGVybihvZmZzZXRzKSB8fCAhaW5kZXgtPmJsb2JzKSB7CisKKwkJcmV0dXJu OworCX0KKworCWIucmVmX3BhZ2Vfbm8gPSBwYWdlX2dldF9wYWdlX25vKHBhZ2VfYWxpZ24ocmVj KSk7CisJYi5yZWZfaGVhcF9ubyA9IHBhZ2VfcmVjX2dldF9oZWFwX25vKHJlYyk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgcmVjX29mZnNfbl9maWVsZHMob2Zmc2V0cyk7IGkrKykgeworCQlpZiAocmVj X29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKSkgeworCQkJdWxpbnQJCWxlbjsKKwkJCWNvbnN0 IGJ5dGUqCWZpZWxkX3JlZiA9IHJlY19nZXRfbnRoX2ZpZWxkKAorCQkJCXJlYywgb2Zmc2V0cywg aSwgJmxlbik7CisKKwkJCXV0X2EobGVuICE9IFVOSVZfU1FMX05VTEwpOworCQkJdXRfYShsZW4g Pj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJCQlmaWVsZF9yZWYgKz0gbGVuIC0gQlRS X0VYVEVSTl9GSUVMRF9SRUZfU0laRTsKKworCQkJYi5yZWZfZmllbGRfbm8gPSBpOworCQkJYi5i bG9iX3BhZ2Vfbm8gPSBtYWNoX3JlYWRfZnJvbV80KAorCQkJCWZpZWxkX3JlZiArIEJUUl9FWFRF Uk5fUEFHRV9OTyk7CisKKwkJCXN3aXRjaCAoYi5ibG9iX3BhZ2Vfbm8pIHsKKwkJCWNhc2UgMDoK KwkJCQl1dF9hKG1lbWNtcChmaWVsZF9yZWYsIGZpZWxkX3JlZl96ZXJvLAorCQkJCQkgICAgQlRS X0VYVEVSTl9GSUVMRF9SRUZfU0laRSkpOworCQkJCS8qIHBhZ2UgbnVtYmVyIDAgaXMgZm9yIHRo ZQorCQkJCXBhZ2UgYWxsb2NhdGlvbiBiaXRtYXAgKi8KKwkJCWNhc2UgRklMX05VTEw6CisJCQkJ LyogdGhlIGNvbHVtbiBoYXMgYmVlbiBmcmVlZCBhbHJlYWR5ICovCisJCQkJdXRfZXJyb3I7CisJ CQl9CisKKwkJCW11dGV4X2VudGVyKCZpbmRleC0+YmxvYnNfbXV0ZXgpOworCQkJbm9kZSA9IHJi dF9sb29rdXAoaW5kZXgtPmJsb2JzLCAmYik7CisJCQl1dF9hKG5vZGUpOworCisJCQljID0gcmJ0 X3ZhbHVlKGJ0cl9ibG9iX2RiZ190LCBub2RlKTsKKwkJCS8qIFRoZSBmbGFnIHNob3VsZCBiZSBt b2RpZmllZC4gKi8KKwkJCWMtPmRlbCA9IGRlbDsKKwkJCWlmIChidHJfYmxvYl9kYmdfbXNnKSB7 CisJCQkJYiA9ICpjOworCQkJCW11dGV4X2V4aXQoJmluZGV4LT5ibG9ic19tdXRleCk7CisJCQkJ YnRyX2Jsb2JfZGJnX21zZ19pc3N1ZSgiZGVsX21rIiwgJmIsICIiKTsKKwkJCX0gZWxzZSB7CisJ CQkJbXV0ZXhfZXhpdCgmaW5kZXgtPmJsb2JzX211dGV4KTsKKwkJCX0KKwkJfQorCX0KK30KKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLy8qKgorQ2hhbmdlIHRoZSBvd25lcnNoaXAgb2YgYW4gb2ZmLXBhZ2UgY29sdW1uLiAq LworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19vd25lcigKKy8qPT09PT09PT09PT09 PT09Ki8KKwljb25zdCByZWNfdCoJCXJlYywJLyohPCBpbjogcmVjb3JkICovCisJZGljdF9pbmRl eF90KgkJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50KgkJb2Zmc2V0 cywvKiE8IGluOiByZWNfZ2V0X29mZnMocmVjLCBpbmRleCkgKi8KKwl1bGludAkJCWksCS8qITwg aW46IGl0aCBmaWVsZCBpbiByZWMgKi8KKwlpYm9vbAkJCW93bikJLyohPCBpbjogVFJVRT1vd25l ZCwgRkFMU0U9ZGlzb3duZWQgKi8KK3sKKwljb25zdCBpYl9yYnRfbm9kZV90Kglub2RlOworCWJ0 cl9ibG9iX2RiZ190CQliOworCWNvbnN0IGJ5dGUqCQlmaWVsZF9yZWY7CisJdWxpbnQJCQlsZW47 CisKKwl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRzKSk7CisJdXRf YShyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIGkpKTsKKworCWZpZWxkX3JlZiA9IHJlY19n ZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxlbik7CisJdXRfYShsZW4gIT0gVU5JVl9T UUxfTlVMTCk7CisJdXRfYShsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJZmll bGRfcmVmICs9IGxlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisKKwliLnJlZl9wYWdl X25vID0gcGFnZV9nZXRfcGFnZV9ubyhwYWdlX2FsaWduKHJlYykpOworCWIucmVmX2hlYXBfbm8g PSBwYWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOworCWIucmVmX2ZpZWxkX25vID0gaTsKKwliLm93 bmVyID0gIShmaWVsZF9yZWZbQlRSX0VYVEVSTl9MRU5dICYgQlRSX0VYVEVSTl9PV05FUl9GTEFH KTsKKwliLmJsb2JfcGFnZV9ubyA9IG1hY2hfcmVhZF9mcm9tXzQoZmllbGRfcmVmICsgQlRSX0VY VEVSTl9QQUdFX05PKTsKKworCXV0X2EoYi5vd25lciA9PSBvd24pOworCisJbXV0ZXhfZW50ZXIo JmluZGV4LT5ibG9ic19tdXRleCk7CisJbm9kZSA9IHJidF9sb29rdXAoaW5kZXgtPmJsb2JzLCAm Yik7CisJLyogcm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9ieV9tb2RpZnkoKSBpbnZva2VzCisJ YnRyX2N1cl91bm1hcmtfZXh0ZXJuX2ZpZWxkcygpIGFsc28gZm9yIHRoZSBuZXdseSBpbnNlcnRl ZAorCXJlZmVyZW5jZXMsIHdoaWNoIGFyZSBhbGwgemVybyBieXRlcyB1bnRpbCB0aGUgY29sdW1u cyBhcmUgc3RvcmVkLgorCVRoZSBub2RlIGxvb2t1cCBtdXN0IGZhaWwgaWYgYW5kIG9ubHkgaWYg dGhhdCBpcyB0aGUgY2FzZS4gKi8KKwl1dF9hKCFtZW1jbXAoZmllbGRfcmVmLCBmaWVsZF9yZWZf emVybywgQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkKKwkgICAgID09ICFub2RlKTsKKworCWlm IChub2RlKSB7CisJCWJ0cl9ibG9iX2RiZ190KgljID0gcmJ0X3ZhbHVlKGJ0cl9ibG9iX2RiZ190 LCBub2RlKTsKKwkJLyogU29tZSBjb2RlIHNldHMgb3duZXJzaGlwIGZyb20gVFJVRSB0byBUUlVF LgorCQlXZSBkbyBub3QgYWxsb3cgY2hhbmdpbmcgb3duZXJzaGlwIGZyb20gRkFMU0UgdG8gRkFM U0UuICovCisJCXV0X2Eob3duIHx8IGMtPm93bmVyKTsKKworCQljLT5vd25lciA9IG93bjsKKwkJ aWYgKCFvd24pIHsKKwkJCWMtPmFsd2F5c19vd25lciA9IEZBTFNFOworCQl9CisJfQorCisJbXV0 ZXhfZXhpdCgmaW5kZXgtPmJsb2JzX211dGV4KTsKK30KKyNlbmRpZiAvKiBVTklWX0JMT0JfREVC VUcgKi8KKwogLyoKIExhdGNoaW5nIHN0cmF0ZWd5IG9mIHRoZSBJbm5vREIgQi10cmVlCiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjk3LDYgKzg1MSw3IEBAIGJ0 cl9wYWdlX2NyZWF0ZSgKIAlwYWdlX3QqCQlwYWdlID0gYnVmX2Jsb2NrX2dldF9mcmFtZShibG9j ayk7CiAKIAl1dF9hZChtdHJfbWVtb19jb250YWlucyhtdHIsIGJsb2NrLCBNVFJfTUVNT19QQUdF X1hfRklYKSk7CisJYnRyX2Jsb2JfZGJnX2Fzc2VydF9lbXB0eShpbmRleCwgYnVmX2Jsb2NrX2dl dF9wYWdlX25vKGJsb2NrKSk7CiAKIAlpZiAoVU5JVl9MSUtFTFlfTlVMTChwYWdlX3ppcCkpIHsK IAkJcGFnZV9jcmVhdGVfemlwKGJsb2NrLCBpbmRleCwgbGV2ZWwsIG10cik7CkBAIC00OTAsNiAr MTA0NSw3IEBAIGJ0cl9wYWdlX2ZyZWVfbG93KAogCW1vZGlmeSBjbG9jayAqLwogCiAJYnVmX2Js b2NrX21vZGlmeV9jbG9ja19pbmMoYmxvY2spOworCWJ0cl9ibG9iX2RiZ19hc3NlcnRfZW1wdHko aW5kZXgsIGJ1Zl9ibG9ja19nZXRfcGFnZV9ubyhibG9jaykpOwogCiAJaWYgKGRpY3RfaW5kZXhf aXNfaWJ1ZihpbmRleCkpIHsKIApAQCAtNzc1LDYgKzEzMzEsMTQgQEAgYnRyX2NyZWF0ZSgKIAkJ YmxvY2sgPSBidWZfcGFnZV9nZXQoc3BhY2UsIHppcF9zaXplLCBwYWdlX25vLAogCQkJCSAgICAg UldfWF9MQVRDSCwgbXRyKTsKIAl9IGVsc2UgeworI2lmZGVmIFVOSVZfQkxPQl9ERUJVRworCQlp ZiAoKHR5cGUgJiBESUNUX0NMVVNURVJFRCkgJiYgIWluZGV4LT5ibG9icykgeworCQkJbXV0ZXhf Y3JlYXRlKFBGU19OT1RfSU5TVFJVTUVOVEVELAorCQkJCSAgICAgJmluZGV4LT5ibG9ic19tdXRl eCwgU1lOQ19BTllfTEFUQ0gpOworCQkJaW5kZXgtPmJsb2JzID0gcmJ0X2NyZWF0ZShzaXplb2Yo YnRyX2Jsb2JfZGJnX3QpLAorCQkJCQkJICBidHJfYmxvYl9kYmdfY21wKTsKKwkJfQorI2VuZGlm IC8qIFVOSVZfQkxPQl9ERUJVRyAqLwogCQlibG9jayA9IGZzZWdfY3JlYXRlKHNwYWNlLCAwLAog CQkJCSAgICBQQUdFX0hFQURFUiArIFBBR0VfQlRSX1NFR19UT1AsIG10cik7CiAJfQpAQCAtOTk5 LDYgKzE1NjMsNyBAQCBidHJfcGFnZV9yZW9yZ2FuaXplX2xvdygKIAogCWJsb2NrLT5jaGVja19p bmRleF9wYWdlX2F0X2ZsdXNoID0gVFJVRTsKICNlbmRpZiAvKiAhVU5JVl9IT1RCQUNLVVAgKi8K KwlidHJfYmxvYl9kYmdfcmVtb3ZlKHBhZ2UsIGluZGV4LCAiYnRyX3BhZ2VfcmVvcmdhbml6ZSIp OwogCiAJLyogUmVjcmVhdGUgdGhlIHBhZ2U6IG5vdGUgdGhhdCBnbG9iYWwgZGF0YSBvbiBwYWdl IChwb3NzaWJsZQogCXNlZ21lbnQgaGVhZGVycywgbmV4dCBwYWdlLWZpZWxkLCBldGMuKSBpcyBw cmVzZXJ2ZWQgaW50YWN0ICovCkBAIC0xMDI3LDYgKzE1OTIsOCBAQCBidHJfcGFnZV9yZW9yZ2Fu aXplX2xvdygKIAkgICAgKCFwYWdlX3ppcF9jb21wcmVzcyhwYWdlX3ppcCwgcGFnZSwgaW5kZXgs IE5VTEwpKSkgewogCiAJCS8qIFJlc3RvcmUgdGhlIG9sZCBwYWdlIGFuZCBleGl0LiAqLworCQli dHJfYmxvYl9kYmdfcmVzdG9yZShwYWdlLCB0ZW1wX3BhZ2UsIGluZGV4LAorCQkJCSAgICAgImJ0 cl9wYWdlX3Jlb3JnYW5pemVfY29tcHJlc3NfZmFpbCIpOwogCiAjaWYgZGVmaW5lZCBVTklWX0RF QlVHIHx8IGRlZmluZWQgVU5JVl9aSVBfREVCVUcKIAkJLyogQ2hlY2sgdGhhdCB0aGUgYnl0ZXMg dGhhdCB3ZSBza2lwIGFyZSBpZGVudGljYWwuICovCkBAIC0xMTYwLDYgKzE3MjcsNyBAQCBidHJf cGFnZV9lbXB0eSgKICNlbmRpZiAvKiBVTklWX1pJUF9ERUJVRyAqLwogCiAJYnRyX3NlYXJjaF9k cm9wX3BhZ2VfaGFzaF9pbmRleChibG9jayk7CisJYnRyX2Jsb2JfZGJnX3JlbW92ZShwYWdlLCBp bmRleCwgImJ0cl9wYWdlX2VtcHR5Iik7CiAKIAkvKiBSZWNyZWF0ZSB0aGUgcGFnZTogbm90ZSB0 aGF0IGdsb2JhbCBkYXRhIG9uIHBhZ2UgKHBvc3NpYmxlCiAJc2VnbWVudCBoZWFkZXJzLCBuZXh0 IHBhZ2UtZmllbGQsIGV0Yy4pIGlzIHByZXNlcnZlZCBpbnRhY3QgKi8KQEAgLTI1MDEsNiArMzA2 OSw3IEBAIGJ0cl9saWZ0X3BhZ2VfdXAoCiAJCQkJCQkgICAgICAgaW5kZXgpOwogCX0KIAorCWJ0 cl9ibG9iX2RiZ19yZW1vdmUocGFnZSwgaW5kZXgsICJidHJfbGlmdF9wYWdlX3VwIik7CiAJbG9j a191cGRhdGVfY29weV9hbmRfZGlzY2FyZChmYXRoZXJfYmxvY2ssIGJsb2NrKTsKIAogCS8qIEdv IHVwd2FyZCB0byByb290IHBhZ2UsIGRlY3JlbWVudGluZyBsZXZlbHMgYnkgb25lLiAqLwpAQCAt Mjc2Miw2ICszMzMxLDcgQEAgZXJyX2V4aXQ6CiAJCWxvY2tfdXBkYXRlX21lcmdlX3JpZ2h0KG1l cmdlX2Jsb2NrLCBvcmlnX3N1Y2MsIGJsb2NrKTsKIAl9CiAKKwlidHJfYmxvYl9kYmdfcmVtb3Zl KHBhZ2UsIGluZGV4LCAiYnRyX2NvbXByZXNzIik7CiAJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAog CWlmICghZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkgJiYgcGFnZV9pc19sZWFmKG1lcmdlX3Bh Z2UpKSB7CkBAIC0yOTkyLDYgKzM1NjIsOCBAQCBidHJfZGlzY2FyZF9wYWdlKAogCQkJCSAgICBi bG9jayk7CiAJfQogCisJYnRyX2Jsb2JfZGJnX3JlbW92ZShwYWdlLCBpbmRleCwgImJ0cl9kaXNj YXJkX3BhZ2UiKTsKKwogCS8qIEZyZWUgdGhlIGZpbGUgcGFnZSAqLwogCWJ0cl9wYWdlX2ZyZWUo aW5kZXgsIGJsb2NrLCBtdHIpOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFz ZS9idHIvYnRyMGN1ci5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMJcmV2 aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwODA1NTY0OC1hbWk5ZDVvd2U1dnJiNHRh CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDExMDIwODEyMTYxNC1qazUzajcwNTJlYjd0OXJmCkBAIC0yNjkwLDYgKzI2 OTAsNyBAQCBidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWMoCiAKIAlwYWdlX3ppcCA9IGJ1 Zl9ibG9ja19nZXRfcGFnZV96aXAoYmxvY2spOwogCisJYnRyX2Jsb2JfZGJnX3NldF9kZWxldGVk X2ZsYWcocmVjLCBpbmRleCwgb2Zmc2V0cywgdmFsKTsKIAlidHJfcmVjX3NldF9kZWxldGVkX2Zs YWcocmVjLCBwYWdlX3ppcCwgdmFsKTsKIAogCXRyeCA9IHRocl9nZXRfdHJ4KHRocik7CkBAIC0z ODc2LDYgKzM4NzcsOCBAQCBidHJfY3VyX3NldF9vd25lcnNoaXBfb2ZfZXh0ZXJuX2ZpZWxkKAog CX0gZWxzZSB7CiAJCW1hY2hfd3JpdGVfdG9fMShkYXRhICsgbG9jYWxfbGVuICsgQlRSX0VYVEVS Tl9MRU4sIGJ5dGVfdmFsKTsKIAl9CisKKwlidHJfYmxvYl9kYmdfb3duZXIocmVjLCBpbmRleCwg b2Zmc2V0cywgaSwgdmFsKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC00Mzc0LDYgKzQzNzcs MTEgQEAgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5jKAogCQkJCX0KIAogCQkJ CWlmIChwcmV2X3BhZ2Vfbm8gPT0gRklMX05VTEwpIHsKKwkJCQkJYnRyX2Jsb2JfZGJnX2FkZF9i bG9iKAorCQkJCQkJcmVjLCBiaWdfcmVjX3ZlYy0+ZmllbGRzW2ldCisJCQkJCQkuZmllbGRfbm8s IHBhZ2Vfbm8sIGluZGV4LAorCQkJCQkJInN0b3JlIik7CisKIAkJCQkJbWFjaF93cml0ZV90b180 KGZpZWxkX3JlZgogCQkJCQkJCSsgQlRSX0VYVEVSTl9TUEFDRV9JRCwKIAkJCQkJCQlzcGFjZV9p ZCk7CkBAIC00NDQ5LDYgKzQ0NTcsMTEgQEAgbmV4dF96aXBfcGFnZToKIAkJCQkJCSBNTE9HXzRC WVRFUywgJm10cik7CiAKIAkJCQlpZiAocHJldl9wYWdlX25vID09IEZJTF9OVUxMKSB7CisJCQkJ CWJ0cl9ibG9iX2RiZ19hZGRfYmxvYigKKwkJCQkJCXJlYywgYmlnX3JlY192ZWMtPmZpZWxkc1tp XQorCQkJCQkJLmZpZWxkX25vLCBwYWdlX25vLCBpbmRleCwKKwkJCQkJCSJzdG9yZSIpOworCiAJ CQkJCW1sb2dfd3JpdGVfdWxpbnQoZmllbGRfcmVmCiAJCQkJCQkJICsgQlRSX0VYVEVSTl9TUEFD RV9JRCwKIAkJCQkJCQkgc3BhY2VfaWQsCkBAIC00NjE3LDYgKzQ2MzAsMzcgQEAgYnRyX2ZyZWVf ZXh0ZXJuYWxseV9zdG9yZWRfZmllbGQoCiAJCXJlY196aXBfc2l6ZSA9IDA7CiAJfQogCisjaWZk ZWYgVU5JVl9CTE9CX0RFQlVHCisJaWYgKCEoZmllbGRfcmVmW0JUUl9FWFRFUk5fTEVOXSAmIEJU Ul9FWFRFUk5fT1dORVJfRkxBRykKKwkgICAgJiYgISgoZmllbGRfcmVmW0JUUl9FWFRFUk5fTEVO XSAmIEJUUl9FWFRFUk5fSU5IRVJJVEVEX0ZMQUcpCisJCSAmJiAocmJfY3R4ID09IFJCX05PUk1B TCB8fCByYl9jdHggPT0gUkJfUkVDT1ZFUlkpKSkgeworCQkvKiBUaGlzIG9mZi1wYWdlIGNvbHVt biB3aWxsIGJlIGZyZWVkLgorCQlDaGVjayB0aGF0IG5vIHJlZmVyZW5jZXMgcmVtYWluLiAqLwor CisJCWJ0cl9ibG9iX2RiZ190CWI7CisKKwkJYi5ibG9iX3BhZ2Vfbm8gPSBtYWNoX3JlYWRfZnJv bV80KAorCQkJZmllbGRfcmVmICsgQlRSX0VYVEVSTl9QQUdFX05PKTsKKworCQlpZiAocmVjKSB7 CisJCQkvKiBSZW1vdmUgdGhlIHJlZmVyZW5jZSBmcm9tIHRoZSByZWNvcmQgdG8gdGhlCisJCQlC TE9CLiBJZiB0aGUgQkxPQiB3ZXJlIG5vdCBmcmVlZCwgdGhlCisJCQlyZWZlcmVuY2Ugd291bGQg YmUgcmVtb3ZlZCB3aGVuIHRoZSByZWNvcmQgaXMKKwkJCXJlbW92ZWQuIEZyZWVpbmcgdGhlIEJM T0Igd2lsbCBvdmVyd3JpdGUgdGhlCisJCQlCVFJfRVhURVJOX1BBR0VfTk8gaW4gdGhlIGZpZWxk X3JlZiBvZiB0aGUKKwkJCXJlY29yZCB3aXRoIEZJTF9OVUxMLCB3aGljaCB3b3VsZCBtYWtlIHRo ZQorCQkJYnRyX2Jsb2JfZGJnIGluZm9ybWF0aW9uIGluY29uc2lzdGVudCB3aXRoIHRoZQorCQkJ cmVjb3JkLiAqLworCQkJYi5yZWZfcGFnZV9ubyA9IHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZV9hbGln bihyZWMpKTsKKwkJCWIucmVmX2hlYXBfbm8gPSBwYWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOwor CQkJYi5yZWZfZmllbGRfbm8gPSBpOworCQkJYnRyX2Jsb2JfZGJnX3JidF9kZWxldGUoaW5kZXgs ICZiLCAiZnJlZSIpOworCQl9CisKKwkJYnRyX2Jsb2JfZGJnX2Fzc2VydF9lbXB0eShpbmRleCwg Yi5ibG9iX3BhZ2Vfbm8pOworCX0KKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcgKi8KKwogCWZv ciAoOzspIHsKICNpZmRlZiBVTklWX1NZTkNfREVCVUcKIAkJYnVmX2Jsb2NrX3QqCXJlY19ibG9j azsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2RpY3QvZGljdDBtZW0uYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9kaWN0L2RpY3QwbWVtLmMJcmV2aWQ6dmFzaWwuZGltb3ZA b3JhY2xlLmNvbS0yMDExMDIwODA1NTY0OC1hbWk5ZDVvd2U1dnJiNHRhCisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2UvZGljdC9kaWN0MG1lbS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTEwMjA4MTIxNjE0LWprNTNqNzA1MmViN3Q5cmYKQEAgLTM4LDYgKzM4LDkgQEAgQ3JlYXRlZCAx LzgvMTk5NiBIZWlra2kgVHV1cmkKICNpZm5kZWYgVU5JVl9IT1RCQUNLVVAKICMgaW5jbHVkZSAi bG9jazBsb2NrLmgiCiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCisjaWZkZWYgVU5JVl9C TE9CX0RFQlVHCisjIGluY2x1ZGUgInV0MHJidC5oIgorI2VuZGlmIC8qIFVOSVZfQkxPQl9ERUJV RyAqLwogCiAjZGVmaW5lCURJQ1RfSEVBUF9TSVpFCQkxMDAJLyohPCBpbml0aWFsIG1lbW9yeSBo ZWFwIHNpemUgd2hlbgogCQkJCQljcmVhdGluZyBhIHRhYmxlIG9yIGluZGV4IG9iamVjdCAqLwpA QCAtMzgwLDYgKzM4MywxMiBAQCBkaWN0X21lbV9pbmRleF9mcmVlKAogewogCXV0X2FkKGluZGV4 KTsKIAl1dF9hZChpbmRleC0+bWFnaWNfbiA9PSBESUNUX0lOREVYX01BR0lDX04pOworI2lmZGVm IFVOSVZfQkxPQl9ERUJVRworCWlmIChpbmRleC0+YmxvYnMpIHsKKwkJbXV0ZXhfZnJlZSgmaW5k ZXgtPmJsb2JzX211dGV4KTsKKwkJcmJ0X2ZyZWUoaW5kZXgtPmJsb2JzKTsKKwl9CisjZW5kaWYg LyogVU5JVl9CTE9CX0RFQlVHICovCiAKIAltZW1faGVhcF9mcmVlKGluZGV4LT5oZWFwKTsKIH0K Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5oJwot LS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5oCXJldmlkOnZhc2lsLmRpbW92 QG9yYWNsZS5jb20tMjAxMTAyMDgwNTU2NDgtYW1pOWQ1b3dlNXZyYjR0YQorKysgYi9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwMjA4MTIxNjE0LWprNTNqNzA1MmViN3Q5cmYKQEAgLTkyLDYgKzkyLDkxIEBAIGluc2Vy dC9kZWxldGUgYnVmZmVyIHdoZW4gdGhlIHJlY29yZCBpcwogYnVmZmVyIHdoZW4gdGhlIHJlY29y ZCBpcyBub3QgaW4gdGhlIGJ1ZmZlciBwb29sLiAqLwogI2RlZmluZSBCVFJfREVMRVRFCQk4MTky CiAKKyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKyMgaW5jbHVkZSAidXQwcmJ0LmgiCisvKiogQW4g aW5kZXgtPmJsb2JzIGVudHJ5IGZvciBrZWVwaW5nIHRyYWNrIG9mIG9mZi1wYWdlIGNvbHVtbiBy ZWZlcmVuY2VzICovCitzdHJ1Y3QgYnRyX2Jsb2JfZGJnX3N0cnVjdAoreworCXVuc2lnbmVkCWJs b2JfcGFnZV9ubzozMjsJLyohPCBmaXJzdCBCTE9CIHBhZ2UgbnVtYmVyICovCisJdW5zaWduZWQJ cmVmX3BhZ2Vfbm86MzI7CQkvKiE8IHJlZmVycmluZyBwYWdlIG51bWJlciAqLworCXVuc2lnbmVk CXJlZl9oZWFwX25vOjE2OwkJLyohPCByZWZlcnJpbmcgaGVhcCBudW1iZXIgKi8KKwl1bnNpZ25l ZAlyZWZfZmllbGRfbm86MTA7CS8qITwgcmVmZXJyaW5nIGZpZWxkIG51bWJlciAqLworCXVuc2ln bmVkCW93bmVyOjE7CQkvKiE8IFRSVUUgaWYgQkxPQiBvd25lciAqLworCXVuc2lnbmVkCWFsd2F5 c19vd25lcjoxOwkJLyohPCBUUlVFIGlmIGFsd2F5cworCQkJCQkJaGFzIGJlZW4gdGhlIEJMT0Ig b3duZXI7CisJCQkJCQlyZXNldCB0byBUUlVFIG9uIEItdHJlZQorCQkJCQkJcGFnZSBzcGxpdHMg YW5kIG1lcmdlcyAqLworCXVuc2lnbmVkCWRlbDoxOwkJCS8qITwgVFJVRSBpZiBjdXJyZW50bHkK KwkJCQkJCWRlbGV0ZS1tYXJrZWQgKi8KK307CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0FkZCBhIHJlZmVyZW5j ZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4gdG8gdGhlIGluZGV4LT5ibG9icyBtYXAuICovCitVTklW X0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX2FkZF9ibG9iKAorLyo9PT09PT09PT09PT09PT09 PT0qLworCWNvbnN0IHJlY190KglyZWMsCQkvKiE8IGluOiBjbHVzdGVyZWQgaW5kZXggcmVjb3Jk ICovCisJdWxpbnQJCWZpZWxkX25vLAkvKiE8IGluOiBudW1iZXIgb2Ygb2ZmLXBhZ2UgY29sdW1u ICovCisJdWxpbnQJCXBhZ2Vfbm8sCS8qITwgaW46IHN0YXJ0IHBhZ2Ugb2YgdGhlIGNvbHVtbiAq LworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluL291dDogaW5kZXggdHJlZSAqLworCWNv bnN0IGNoYXIqCWN0eCkJCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0 cmlidXRlX18oKG5vbm51bGwpKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0Rpc3BsYXkgdGhlIHJlZmVyZW5jZXMg dG8gb2ZmLXBhZ2UgY29sdW1ucy4KK1RoaXMgZnVuY3Rpb24gaXMgdG8gYmUgY2FsbGVkIGZyb20g YSBkZWJ1Z2dlciwKK2ZvciBleGFtcGxlIHdoZW4gYSBicmVha3BvaW50IG9uIHV0X2RiZ19hc3Nl cnRpb25fZmFpbGVkIGlzIGhpdC4gKi8KK1VOSVZfSU5URVJOCit2b2lkCitidHJfYmxvYl9kYmdf cHJpbnQoCisvKj09PT09PT09PT09PT09PSovCisJY29uc3QgZGljdF9pbmRleF90KglpbmRleCkJ LyohPCBpbjogaW5kZXggdHJlZSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKK0NoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29s dW1ucyBmcm9tIG9yIHRvCit0aGUgZ2l2ZW4gcGFnZS4gSW52b2tlZCB3aGVuIGZyZWVpbmcgb3Ig Y2xlYXJpbmcgYSBwYWdlLgorQHJldHVybiBUUlVFIHdoZW4gbm8gb3JwaGFuIHJlZmVyZW5jZXMg ZXhpc3QgKi8KK1VOSVZfSU5URVJOCitpYm9vbAorYnRyX2Jsb2JfZGJnX2lzX2VtcHR5KAorLyo9 PT09PT09PT09PT09PT09PT0qLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluOiBpbmRl eCAqLworCXVsaW50CQlwYWdlX25vKQkvKiE8IGluOiBwYWdlIG51bWJlciAqLworCV9fYXR0cmli dXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOworCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitNb2Rp ZnkgdGhlICdkZWxldGVkJyBmbGFnIG9mIGEgcmVjb3JkLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQK K2J0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKAorLyo9PT09PT09PT09PT09PT09PT09PT09 PT09PSovCisJY29uc3QgcmVjX3QqCQlyZWMsCS8qITwgaW46IHJlY29yZCAqLworCWRpY3RfaW5k ZXhfdCoJCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25zdCB1bGludCoJCW9mZnNl dHMsLyohPCBpbjogcmVjX2dldF9vZmZzKHJlYywgaW5kZXgpICovCisJaWJvb2wJCQlkZWwpCS8q ITwgaW46IFRSVUU9ZGVsZXRlZCwgRkFMU0U9ZXhpc3RzICovCisJX19hdHRyaWJ1dGVfXygobm9u bnVsbCkpOworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgorQ2hhbmdlIHRoZSBvd25lcnNoaXAgb2YgYW4gb2ZmLXBhZ2Ug Y29sdW1uLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19vd25lcigKKy8qPT09 PT09PT09PT09PT09Ki8KKwljb25zdCByZWNfdCoJCXJlYywJLyohPCBpbjogcmVjb3JkICovCisJ ZGljdF9pbmRleF90KgkJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50 KgkJb2Zmc2V0cywvKiE8IGluOiByZWNfZ2V0X29mZnMocmVjLCBpbmRleCkgKi8KKwl1bGludAkJ CWksCS8qITwgaW46IGl0aCBmaWVsZCBpbiByZWMgKi8KKwlpYm9vbAkJCW93bikJLyohPCBpbjog VFJVRT1vd25lZCwgRkFMU0U9ZGlzb3duZWQgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7 CisvKiogQXNzZXJ0IHRoYXQgdGhlcmUgYXJlIG5vIEJMT0IgcmVmZXJlbmNlcyB0byBvciBmcm9t IHRoZSBnaXZlbiBwYWdlLiAqLworIyBkZWZpbmUgYnRyX2Jsb2JfZGJnX2Fzc2VydF9lbXB0eShp bmRleCwgcGFnZV9ubykJXAorCXV0X2EoYnRyX2Jsb2JfZGJnX2lzX2VtcHR5KGluZGV4LCBwYWdl X25vKSkKKyNlbHNlIC8qIFVOSVZfQkxPQl9ERUJVRyAqLworIyBkZWZpbmUgYnRyX2Jsb2JfZGJn X2FkZF9ibG9iKHJlYywgZmllbGRfbm8sIHBhZ2UsIGluZGV4LCBjdHgpCSgodm9pZCkgMCkKKyMg ZGVmaW5lIGJ0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKHJlYywgaW5kZXgsIG9mZnNldHMs IGRlbCkoKHZvaWQpIDApCisjIGRlZmluZSBidHJfYmxvYl9kYmdfb3duZXIocmVjLCBpbmRleCwg b2Zmc2V0cywgaSwgdmFsKQkoKHZvaWQpIDApCisjIGRlZmluZSBidHJfYmxvYl9kYmdfYXNzZXJ0 X2VtcHR5KGluZGV4LCBwYWdlX25vKQkJKCh2b2lkKSAwKQorI2VuZGlmIC8qIFVOSVZfQkxPQl9E RUJVRyAqLworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCiBHZXRzIHRoZSByb290IG5vZGUgb2YgYSB0cmVlIGFuZCB4 LWxhdGNoZXMgaXQuCiBAcmV0dXJuCXJvb3QgcGFnZSwgeC1sYXRjaGVkICovCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjB0eXBlcy5oJwotLS0gYS9zdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMHR5cGVzLmgJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xl LmNvbS0yMDExMDIwODA1NTY0OC1hbWk5ZDVvd2U1dnJiNHRhCisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9idHIwdHlwZXMuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEx MDIwODEyMTYxNC1qazUzajcwNTJlYjd0OXJmCkBAIC0zOCw2ICszOCwxMzEgQEAgdHlwZWRlZiBz dHJ1Y3QgYnRyX2N1cl9zdHJ1Y3QJCWJ0cl9jdXJfdAogLyoqIEItdHJlZSBzZWFyY2ggaW5mb3Jt YXRpb24gZm9yIHRoZSBhZGFwdGl2ZSBoYXNoIGluZGV4ICovCiB0eXBlZGVmIHN0cnVjdCBidHJf c2VhcmNoX3N0cnVjdAlidHJfc2VhcmNoX3Q7CiAKKyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKyMg aW5jbHVkZSAiYnVmMHR5cGVzLmgiCisvKiogQW4gaW5kZXgtPmJsb2JzIGVudHJ5IGZvciBrZWVw aW5nIHRyYWNrIG9mIG9mZi1wYWdlIGNvbHVtbiByZWZlcmVuY2VzICovCit0eXBlZGVmIHN0cnVj dCBidHJfYmxvYl9kYmdfc3RydWN0IGJ0cl9ibG9iX2RiZ190OworCisvKiogSW5zZXJ0IHRvIGlu ZGV4LT5ibG9icyBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4uCitAcGFyYW0gaW5k ZXgJdGhlIGluZGV4IHRyZWUKK0BwYXJhbSBiCXRoZSByZWZlcmVuY2UKK0BwYXJhbSBjdHgJY29u dGV4dCAoZm9yIGxvZ2dpbmcpICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX3Ji dF9pbnNlcnQoCisvKj09PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X2luZGV4X3QqCQlpbmRl eCwJLyohPCBpbi9vdXQ6IGluZGV4IHRyZWUgKi8KKwljb25zdCBidHJfYmxvYl9kYmdfdCoJYiwJ LyohPCBpbjogdGhlIHJlZmVyZW5jZSAqLworCWNvbnN0IGNoYXIqCQljdHgpCS8qITwgaW46IGNv bnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKworLyoq IFJlbW92ZSBmcm9tIGluZGV4LT5ibG9icyBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1 bW4uCitAcGFyYW0gaW5kZXgJdGhlIGluZGV4IHRyZWUKK0BwYXJhbSBiCXRoZSByZWZlcmVuY2UK K0BwYXJhbSBjdHgJY29udGV4dCAoZm9yIGxvZ2dpbmcpICovCitVTklWX0lOVEVSTgordm9pZAor YnRyX2Jsb2JfZGJnX3JidF9kZWxldGUoCisvKj09PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0 X2luZGV4X3QqCQlpbmRleCwJLyohPCBpbi9vdXQ6IGluZGV4IHRyZWUgKi8KKwljb25zdCBidHJf YmxvYl9kYmdfdCoJYiwJLyohPCBpbjogdGhlIHJlZmVyZW5jZSAqLworCWNvbnN0IGNoYXIqCQlj dHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5v bm51bGwpKTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgorQWRkIHRvIGluZGV4LT5ibG9icyBhbnkgcmVmZXJlbmNl cyB0byBvZmYtcGFnZSBjb2x1bW5zIGZyb20gYSByZWNvcmQuCitAcmV0dXJuIG51bWJlciBvZiBy ZWZlcmVuY2VzIGFkZGVkICovCitVTklWX0lOVEVSTgordWxpbnQKK2J0cl9ibG9iX2RiZ19hZGRf cmVjKAorLyo9PT09PT09PT09PT09PT09PSovCisJY29uc3QgcmVjX3QqCXJlYywJLyohPCBpbjog cmVjb3JkICovCisJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbi9vdXQ6IGluZGV4ICovCisJ Y29uc3QgdWxpbnQqCW9mZnNldHMsLyohPCBpbjogb2Zmc2V0cyAqLworCWNvbnN0IGNoYXIqCWN0 eCkJLyohPCBpbjogY29udGV4dCAoZm9yIGxvZ2dpbmcpICovCisJX19hdHRyaWJ1dGVfXygobm9u bnVsbCkpOworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgorUmVtb3ZlIGZyb20gaW5kZXgtPmJsb2JzIGFueSByZWZlcmVu Y2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMgZnJvbSBhIHJlY29yZC4KK0ByZXR1cm4gbnVtYmVyIG9m IHJlZmVyZW5jZXMgcmVtb3ZlZCAqLworVU5JVl9JTlRFUk4KK3VsaW50CitidHJfYmxvYl9kYmdf cmVtb3ZlX3JlYygKKy8qPT09PT09PT09PT09PT09PT09PT0qLworCWNvbnN0IHJlY190KglyZWMs CS8qITwgaW46IHJlY29yZCAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBp bmRleCAqLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IG9mZnNldHMgKi8KKwljb25z dCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0cmli dXRlX18oKG5vbm51bGwpKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0NvdW50IGFuZCBhZGQgdG8gaW5kZXgtPmJs b2JzIGFueSByZWZlcmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMKK2Zyb20gcmVjb3JkcyBvbiBh IHBhZ2UuCitAcmV0dXJuIG51bWJlciBvZiByZWZlcmVuY2VzIGFkZGVkICovCitVTklWX0lOVEVS TgordWxpbnQKK2J0cl9ibG9iX2RiZ19hZGQoCisvKj09PT09PT09PT09PT0qLworCWNvbnN0IHBh Z2VfdCoJcGFnZSwJLyohPCBpbjogcmV3cml0dGVuIHBhZ2UgKi8KKwlkaWN0X2luZGV4X3QqCWlu ZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNv bnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKK0NvdW50IGFuZCByZW1vdmUgZnJvbSBpbmRleC0+YmxvYnMgYW55IHJlZmVyZW5jZXMg dG8gb2ZmLXBhZ2UgY29sdW1ucworZnJvbSByZWNvcmRzIG9uIGEgcGFnZS4KK1VzZWQgd2hlbiBy ZW9yZ2FuaXppbmcgYSBwYWdlLCBiZWZvcmUgY29weWluZyB0aGUgcmVjb3Jkcy4KK0ByZXR1cm4g bnVtYmVyIG9mIHJlZmVyZW5jZXMgcmVtb3ZlZCAqLworVU5JVl9JTlRFUk4KK3VsaW50CitidHJf YmxvYl9kYmdfcmVtb3ZlKAorLyo9PT09PT09PT09PT09PT09Ki8KKwljb25zdCBwYWdlX3QqCXBh Z2UsCS8qITwgaW46IGItdHJlZSBwYWdlICovCisJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBp bi9vdXQ6IGluZGV4ICovCisJY29uc3QgY2hhcioJY3R4KQkvKiE8IGluOiBjb250ZXh0IChmb3Ig bG9nZ2luZykgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitSZXN0 b3JlIGluIGluZGV4LT5ibG9icyBhbnkgcmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zCitV c2VkIHdoZW4gcGFnZSByZW9yZ2FuaXplIGZhaWxzIGR1ZSB0byBjb21wcmVzc2VkIHBhZ2Ugb3Zl cmZsb3cuICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX3Jlc3RvcmUoCisvKj09 PT09PT09PT09PT09PT09Ki8KKwljb25zdCBwYWdlX3QqCW5wYWdlLAkvKiE8IGluOiBwYWdlIHRo YXQgZmFpbGVkIHRvIGNvbXByZXNzICovCisJY29uc3QgcGFnZV90KglwYWdlLAkvKiE8IGluOiBj b3B5IG9mIG9yaWdpbmFsIHBhZ2UgKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluL291 dDogaW5kZXggKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dn aW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKworLyoqIE9wZXJhdGlvbiB0aGF0 IHByb2Nlc3NlcyB0aGUgQkxPQiByZWZlcmVuY2VzIG9mIGFuIGluZGV4IHJlY29yZAorQHBhcmFt W2luXQlyZWMJcmVjb3JkIG9uIGluZGV4IHBhZ2UKK0BwYXJhbVtpbi9vdXRdCWluZGV4CXRoZSBp bmRleCB0cmVlIG9mIHRoZSByZWNvcmQKK0BwYXJhbVtpbl0Jb2Zmc2V0cwlyZWNfZ2V0X29mZnNl dHMocmVjLGluZGV4KQorQHBhcmFtW2luXQljdHgJY29udGV4dCAoZm9yIGxvZ2dpbmcpCitAcmV0 dXJuCQkJbnVtYmVyIG9mIEJMT0IgcmVmZXJlbmNlcyBwcm9jZXNzZWQgKi8KK3R5cGVkZWYgdWxp bnQgKCpidHJfYmxvYl9kYmdfb3BfZikKKyhjb25zdCByZWNfdCogcmVjLGRpY3RfaW5kZXhfdCog aW5kZXgsY29uc3QgdWxpbnQqIG9mZnNldHMsY29uc3QgY2hhciogY3R4KTsKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgorQ291bnQgYW5kIHByb2Nlc3MgYWxsIHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucyBv biBhIHBhZ2UuCitAcmV0dXJuIG51bWJlciBvZiByZWZlcmVuY2VzIHByb2Nlc3NlZCAqLworVU5J Vl9JTlRFUk4KK3VsaW50CitidHJfYmxvYl9kYmdfb3AoCisvKj09PT09PT09PT09PSovCisJY29u c3QgcGFnZV90KgkJcGFnZSwJLyohPCBpbjogQi10cmVlIGxlYWYgcGFnZSAqLworCWNvbnN0IHJl Y190KgkJcmVjLAkvKiE8IGluOiByZWNvcmQgdG8gc3RhcnQgZnJvbQorCQkJCQkoTlVMTCB0byBw cm9jZXNzIHRoZSB3aG9sZSBwYWdlKSAqLworCWRpY3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGlu L291dDogaW5kZXggKi8KKwljb25zdCBjaGFyKgkJY3R4LAkvKiE8IGluOiBjb250ZXh0IChmb3Ig bG9nZ2luZykgKi8KKwljb25zdCBidHJfYmxvYl9kYmdfb3BfZglvcCkJLyohPCBpbjogb3BlcmF0 aW9uIG9uIHJlY29yZHMgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKDEsMyw0LDUpKSk7Cisj ZWxzZSAvKiBVTklWX0JMT0JfREVCVUcgKi8KKyMgZGVmaW5lIGJ0cl9ibG9iX2RiZ19hZGRfcmVj KHJlYywgaW5kZXgsIG9mZnNldHMsIGN0eCkJCSgodm9pZCkgMCkKKyMgZGVmaW5lIGJ0cl9ibG9i X2RiZ19hZGQocGFnZSwgaW5kZXgsIGN0eCkJCQkoKHZvaWQpIDApCisjIGRlZmluZSBidHJfYmxv Yl9kYmdfcmVtb3ZlX3JlYyhyZWMsIGluZGV4LCBvZmZzZXRzLCBjdHgpCSgodm9pZCkgMCkKKyMg ZGVmaW5lIGJ0cl9ibG9iX2RiZ19yZW1vdmUocGFnZSwgaW5kZXgsIGN0eCkJCQkoKHZvaWQpIDAp CisjIGRlZmluZSBidHJfYmxvYl9kYmdfcmVzdG9yZShucGFnZSwgcGFnZSwgaW5kZXgsIGN0eCkJ CSgodm9pZCkgMCkKKyMgZGVmaW5lIGJ0cl9ibG9iX2RiZ19vcChwYWdlLCByZWMsIGluZGV4LCBj dHgsIG9wKQkJKCh2b2lkKSAwKQorI2VuZGlmIC8qIFVOSVZfQkxPQl9ERUJVRyAqLworCiAvKiog VGhlIHNpemUgb2YgYSByZWZlcmVuY2UgdG8gZGF0YSBzdG9yZWQgb24gYSBkaWZmZXJlbnQgcGFn ZS4KIFRoZSByZWZlcmVuY2UgaXMgc3RvcmVkIGF0IHRoZSBlbmQgb2YgdGhlIHByZWZpeCBvZiB0 aGUgZmllbGQKIGluIHRoZSBpbmRleCByZWNvcmQuICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwbWVtLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9kaWN0MG1lbS5oCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDgw NTU2NDgtYW1pOWQ1b3dlNXZyYjR0YQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGlj dDBtZW0uaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwODEyMTYxNC1qazUz ajcwNTJlYjd0OXJmCkBAIC00MDAsNiArNDAwLDEzIEBAIHN0cnVjdCBkaWN0X2luZGV4X3N0cnVj dHsKIAkJCQlpbmRleCwgb3IgMCBpZiB0aGUgaW5kZXggZXhpc3RlZAogCQkJCXdoZW4gSW5ub0RC IHdhcyBzdGFydGVkIHVwICovCiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCisjaWZkZWYg VU5JVl9CTE9CX0RFQlVHCisJbXV0ZXhfdAkJYmxvYnNfbXV0ZXg7CisJCQkJLyohPCBtdXRleCBw cm90ZWN0aW5nIGJsb2JzICovCisJdm9pZCoJCWJsb2JzOwkvKiE8IG1hcCBvZiAocGFnZV9ubyxo ZWFwX25vLGZpZWxkX25vKQorCQkJCXRvIGZpcnN0X2Jsb2JfcGFnZV9ubzsgcHJvdGVjdGVkIGJ5 CisJCQkJYmxvYnNfbXV0ZXg7IEBzZWUgYnRyX2Jsb2JfZGJnX3QgKi8KKyNlbmRpZiAvKiBVTklW X0JMT0JfREVCVUcgKi8KICNpZmRlZiBVTklWX0RFQlVHCiAJdWxpbnQJCW1hZ2ljX247LyohPCBt YWdpYyBudW1iZXIgKi8KIC8qKiBWYWx1ZSBvZiBkaWN0X2luZGV4X3N0cnVjdDo6bWFnaWNfbiAq LwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMHppcC5o JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFnZTB6aXAuaAlyZXZpZDp2YXNpbC5k aW1vdkBvcmFjbGUuY29tLTIwMTEwMjA4MDU1NjQ4LWFtaTlkNW93ZTV2cmI0dGEKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwemlwLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTAyMDgxMjE2MTQtams1M2o3MDUyZWI3dDlyZgpAQCAtNDIwLDcgKzQyMCw3IEBA IHBhZ2VfemlwX2NvcHlfcmVjcygKIAljb25zdCBwYWdlX3QqCQlzcmMsCQkvKiE8IGluOiBwYWdl ICovCiAJZGljdF9pbmRleF90KgkJaW5kZXgsCQkvKiE8IGluOiBpbmRleCBvZiB0aGUgQi10cmVl ICovCiAJbXRyX3QqCQkJbXRyKQkJLyohPCBpbjogbWluaS10cmFuc2FjdGlvbiAqLwotCV9fYXR0 cmlidXRlX18oKG5vbm51bGwoMSwyLDMsNCkpKTsKKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7 CiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoKPT09 IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91bml2LmknCi0tLSBhL3N0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91bml2LmkJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNv bS0yMDExMDIwODA1NTY0OC1hbWk5ZDVvd2U1dnJiNHRhCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS91bml2LmkJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAyMDgxMjE2 MTQtams1M2o3MDUyZWI3dDlyZgpAQCAtMTk2LDYgKzE5Niw4IEBAIHRoaXMgd2lsbCBicmVhayBy ZWRvIGxvZyBmaWxlIGNvbXBhdGliaWwKIGRlYnVnZ2luZyByZWRvIGxvZyBhcHBsaWNhdGlvbiBw cm9ibGVtcy4gKi8KICNkZWZpbmUgVU5JVl9NRU1fREVCVUcJCQkJLyogZGV0ZWN0IG1lbW9yeSBs ZWFrcyBldGMgKi8KICNkZWZpbmUgVU5JVl9JQlVGX0RFQlVHCQkJCS8qIGRlYnVnIHRoZSBpbnNl cnQgYnVmZmVyICovCisjZGVmaW5lIFVOSVZfQkxPQl9ERUJVRwkJCQkvKiB0cmFjayBCTE9CIG93 bmVyc2hpcDsKK2Fzc3VtZXMgdGhhdCBubyBCTE9CcyBzdXJ2aXZlIHNlcnZlciByZXN0YXJ0ICov CiAjZGVmaW5lIFVOSVZfSUJVRl9DT1VOVF9ERUJVRwkJCS8qIGRlYnVnIHRoZSBpbnNlcnQgYnVm ZmVyOwogdGhpcyBsaW1pdHMgdGhlIGRhdGFiYXNlIHRvIElCVUZfQ09VTlRfTl9TUEFDRVMgYW5k IElCVUZfQ09VTlRfTl9QQUdFUywKIGFuZCB0aGUgaW5zZXJ0IGJ1ZmZlciBtdXN0IGJlIGVtcHR5 IHdoZW4gdGhlIGRhdGFiYXNlIGlzIHN0YXJ0ZWQgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9y YWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBjdXIuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9wYWdl L3BhZ2UwY3VyLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwODA1NTY0OC1h bWk5ZDVvd2U1dnJiNHRhCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMGN1ci5jCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMjA4MTIxNjE0LWprNTNqNzA1MmViN3Q5 cmYKQEAgLTExNDksNiArMTE0OSw4IEBAIHVzZV9oZWFwOgogCQkJCQkgICAgICBjdXJyZW50X3Jl YywgaW5kZXgsIG10cik7CiAJfQogCisJYnRyX2Jsb2JfZGJnX2FkZF9yZWMoaW5zZXJ0X3JlYywg aW5kZXgsIG9mZnNldHMsICJpbnNlcnQiKTsKKwogCXJldHVybihpbnNlcnRfcmVjKTsKIH0KIApA QCAtMTE5NSwxMCArMTE5NywxMiBAQCBwYWdlX2N1cl9pbnNlcnRfcmVjX3ppcF9yZW9yZygKIAl9 CiAKIAkvKiBPdXQgb2Ygc3BhY2U6IHJlc3RvcmUgdGhlIHBhZ2UgKi8KKwlidHJfYmxvYl9kYmdf cmVtb3ZlKHBhZ2UsIGluZGV4LCAiaW5zZXJ0X3ppcF9mYWlsIik7CiAJaWYgKCFwYWdlX3ppcF9k ZWNvbXByZXNzKHBhZ2VfemlwLCBwYWdlLCBGQUxTRSkpIHsKIAkJdXRfZXJyb3I7IC8qIE1lbW9y eSBjb3JydXB0ZWQ/ICovCiAJfQogCXV0X2FkKHBhZ2VfdmFsaWRhdGUocGFnZSwgaW5kZXgpKTsK KwlidHJfYmxvYl9kYmdfYWRkKHBhZ2UsIGluZGV4LCAiaW5zZXJ0X3ppcF9mYWlsIik7CiAJcmV0 dXJuKE5VTEwpOwogfQogCkBAIC0xNDkwLDYgKzE0OTQsOCBAQCB1c2VfaGVhcDoKIAogCXBhZ2Vf emlwX3dyaXRlX3JlYyhwYWdlX3ppcCwgaW5zZXJ0X3JlYywgaW5kZXgsIG9mZnNldHMsIDEpOwog CisJYnRyX2Jsb2JfZGJnX2FkZF9yZWMoaW5zZXJ0X3JlYywgaW5kZXgsIG9mZnNldHMsICJpbnNl cnRfemlwX29rIik7CisKIAkvKiA5LiBXcml0ZSBsb2cgcmVjb3JkIG9mIHRoZSBpbnNlcnQgKi8K IAlpZiAoVU5JVl9MSUtFTFkobXRyICE9IE5VTEwpKSB7CiAJCXBhZ2VfY3VyX2luc2VydF9yZWNf d3JpdGVfbG9nKGluc2VydF9yZWMsIHJlY19zaXplLApAQCAtMTY5Nyw2ICsxNzAzLDkgQEAgcGFn ZV9jb3B5X3JlY19saXN0X2VuZF90b19jcmVhdGVkX3BhZ2UoCiAKIAkJaGVhcF90b3AgKz0gcmVj X3NpemU7CiAKKwkJcmVjX29mZnNfbWFrZV92YWxpZChpbnNlcnRfcmVjLCBpbmRleCwgb2Zmc2V0 cyk7CisJCWJ0cl9ibG9iX2RiZ19hZGRfcmVjKGluc2VydF9yZWMsIGluZGV4LCBvZmZzZXRzLCAi Y29weV9lbmQiKTsKKwogCQlwYWdlX2N1cl9pbnNlcnRfcmVjX3dyaXRlX2xvZyhpbnNlcnRfcmVj LCByZWNfc2l6ZSwgcHJldl9yZWMsCiAJCQkJCSAgICAgIGluZGV4LCBtdHIpOwogCQlwcmV2X3Jl YyA9IGluc2VydF9yZWM7CkBAIC0xOTQ0LDYgKzE5NTMsNyBAQCBwYWdlX2N1cl9kZWxldGVfcmVj KAogCXBhZ2VfZGlyX3Nsb3Rfc2V0X25fb3duZWQoY3VyX2Rpcl9zbG90LCBwYWdlX3ppcCwgY3Vy X25fb3duZWQgLSAxKTsKIAogCS8qIDYuIEZyZWUgdGhlIG1lbW9yeSBvY2N1cGllZCBieSB0aGUg cmVjb3JkICovCisJYnRyX2Jsb2JfZGJnX3JlbW92ZV9yZWMoY3VycmVudF9yZWMsIGluZGV4LCBv ZmZzZXRzLCAiZGVsZXRlIik7CiAJcGFnZV9tZW1fZnJlZShwYWdlLCBwYWdlX3ppcCwgY3VycmVu dF9yZWMsIGluZGV4LCBvZmZzZXRzKTsKIAogCS8qIDcuIE5vdyB3ZSBoYXZlIGRlY3JlbWVudGVk IHRoZSBudW1iZXIgb2Ygb3duZWQgcmVjb3JkcyBvZiB0aGUgc2xvdC4KCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBwYWdlLmMnCi0tLSBhL3N0b3JhZ2UvaW5u b2Jhc2UvcGFnZS9wYWdlMHBhZ2UuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEw MjA4MDU1NjQ4LWFtaTlkNW93ZTV2cmI0dGEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3Bh Z2UwcGFnZS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMjA4MTIxNjE0LWpr NTNqNzA1MmViN3Q5cmYKQEAgLTY4NSwxMiArNjg1LDE2IEBAIHBhZ2VfY29weV9yZWNfbGlzdF9l bmQoCiAJCQlpZiAoVU5JVl9VTkxJS0VMWQogCQkJICAgICghcGFnZV96aXBfcmVvcmdhbml6ZShu ZXdfYmxvY2ssIGluZGV4LCBtdHIpKSkgewogCisJCQkJYnRyX2Jsb2JfZGJnX3JlbW92ZShuZXdf cGFnZSwgaW5kZXgsCisJCQkJCQkgICAgImNvcHlfZW5kX3Jlb3JnX2ZhaWwiKTsKIAkJCQlpZiAo VU5JVl9VTkxJS0VMWQogCQkJCSAgICAoIXBhZ2VfemlwX2RlY29tcHJlc3MobmV3X3BhZ2Vfemlw LAogCQkJCQkJCSAgbmV3X3BhZ2UsIEZBTFNFKSkpIHsKIAkJCQkJdXRfZXJyb3I7CiAJCQkJfQog CQkJCXV0X2FkKHBhZ2VfdmFsaWRhdGUobmV3X3BhZ2UsIGluZGV4KSk7CisJCQkJYnRyX2Jsb2Jf ZGJnX2FkZChuZXdfcGFnZSwgaW5kZXgsCisJCQkJCQkgImNvcHlfZW5kX3Jlb3JnX2ZhaWwiKTsK IAkJCQlyZXR1cm4oTlVMTCk7CiAJCQl9IGVsc2UgewogCQkJCS8qIFRoZSBwYWdlIHdhcyByZW9y Z2FuaXplZDoKQEAgLTgwMywxMiArODA3LDE2IEBAIHBhZ2VfY29weV9yZWNfbGlzdF9zdGFydCgK IAkJCWlmIChVTklWX1VOTElLRUxZCiAJCQkgICAgKCFwYWdlX3ppcF9yZW9yZ2FuaXplKG5ld19i bG9jaywgaW5kZXgsIG10cikpKSB7CiAKKwkJCQlidHJfYmxvYl9kYmdfcmVtb3ZlKG5ld19wYWdl LCBpbmRleCwKKwkJCQkJCSAgICAiY29weV9zdGFydF9yZW9yZ19mYWlsIik7CiAJCQkJaWYgKFVO SVZfVU5MSUtFTFkKIAkJCQkgICAgKCFwYWdlX3ppcF9kZWNvbXByZXNzKG5ld19wYWdlX3ppcCwK IAkJCQkJCQkgIG5ld19wYWdlLCBGQUxTRSkpKSB7CiAJCQkJCXV0X2Vycm9yOwogCQkJCX0KIAkJ CQl1dF9hZChwYWdlX3ZhbGlkYXRlKG5ld19wYWdlLCBpbmRleCkpOworCQkJCWJ0cl9ibG9iX2Ri Z19hZGQobmV3X3BhZ2UsIGluZGV4LAorCQkJCQkJICJjb3B5X3N0YXJ0X3Jlb3JnX2ZhaWwiKTsK IAkJCQlyZXR1cm4oTlVMTCk7CiAJCQl9IGVsc2UgewogCQkJCS8qIFRoZSBwYWdlIHdhcyByZW9y Z2FuaXplZDoKQEAgLTEwODAsNiArMTA4OCw5IEBAIHBhZ2VfZGVsZXRlX3JlY19saXN0X2VuZCgK IAkvKiBSZW1vdmUgdGhlIHJlY29yZCBjaGFpbiBzZWdtZW50IGZyb20gdGhlIHJlY29yZCBjaGFp biAqLwogCXBhZ2VfcmVjX3NldF9uZXh0KHByZXZfcmVjLCBwYWdlX2dldF9zdXByZW11bV9yZWMo cGFnZSkpOwogCisJYnRyX2Jsb2JfZGJnX29wKHBhZ2UsIHJlYywgaW5kZXgsICJkZWxldGVfZW5k IiwKKwkJCWJ0cl9ibG9iX2RiZ19yZW1vdmVfcmVjKTsKKwogCS8qIENhdGVuYXRlIHRoZSBkZWxl dGVkIGNoYWluIHNlZ21lbnQgdG8gdGhlIHBhZ2UgZnJlZSBsaXN0ICovCiAKIAlwYWdlX3JlY19z ZXRfbmV4dChsYXN0X3JlYywgcGFnZV9oZWFkZXJfZ2V0X3B0cihwYWdlLCBQQUdFX0ZSRUUpKTsK Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTB6aXAuYycKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwemlwLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3Jh Y2xlLmNvbS0yMDExMDIwODA1NTY0OC1hbWk5ZDVvd2U1dnJiNHRhCisrKyBiL3N0b3JhZ2UvaW5u b2Jhc2UvcGFnZS9wYWdlMHppcC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEw MjA4MTIxNjE0LWprNTNqNzA1MmViN3Q5cmYKQEAgLTQ0NTUsNiArNDQ1NSw4IEBAIHBhZ2Vfemlw X3Jlb3JnYW5pemUoCiAJLyogQ29weSB0aGUgb2xkIHBhZ2UgdG8gdGVtcG9yYXJ5IHNwYWNlICov CiAJYnVmX2ZyYW1lX2NvcHkodGVtcF9wYWdlLCBwYWdlKTsKIAorCWJ0cl9ibG9iX2RiZ19yZW1v dmUocGFnZSwgaW5kZXgsICJ6aXBfcmVvcmciKTsKKwogCS8qIFJlY3JlYXRlIHRoZSBwYWdlOiBu b3RlIHRoYXQgZ2xvYmFsIGRhdGEgb24gcGFnZSAocG9zc2libGUKIAlzZWdtZW50IGhlYWRlcnMs IG5leHQgcGFnZS1maWVsZCwgZXRjLikgaXMgcHJlc2VydmVkIGludGFjdCAqLwogCkBAIC00NTEz LDcgKzQ1MTUsNyBAQCBwYWdlX3ppcF9jb3B5X3JlY3MoCiAJbXRyX3QqCQkJbXRyKQkJLyohPCBp bjogbWluaS10cmFuc2FjdGlvbiAqLwogewogCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zX3BhZ2Uo bXRyLCBwYWdlLCBNVFJfTUVNT19QQUdFX1hfRklYKSk7Ci0JdXRfYWQobXRyX21lbW9fY29udGFp bnNfcGFnZShtdHIsIChwYWdlX3QqKSBzcmMsIE1UUl9NRU1PX1BBR0VfWF9GSVgpKTsKKwl1dF9h ZChtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgc3JjLCBNVFJfTUVNT19QQUdFX1hfRklYKSk7 CiAJdXRfYWQoIWRpY3RfaW5kZXhfaXNfaWJ1ZihpbmRleCkpOwogI2lmZGVmIFVOSVZfWklQX0RF QlVHCiAJLyogVGhlIEItdHJlZSBvcGVyYXRpb25zIHRoYXQgY2FsbCB0aGlzIGZ1bmN0aW9uIG1h eSBzZXQKQEAgLTQ1ODMsNiArNDU4NSw3IEBAIHBhZ2VfemlwX2NvcHlfcmVjcygKICNpZmRlZiBV TklWX1pJUF9ERUJVRwogCXV0X2EocGFnZV96aXBfdmFsaWRhdGUocGFnZV96aXAsIHBhZ2UpKTsK ICNlbmRpZiAvKiBVTklWX1pJUF9ERUJVRyAqLworCWJ0cl9ibG9iX2RiZ19hZGQocGFnZSwgaW5k ZXgsICJwYWdlX3ppcF9jb3B5X3JlY3MiKTsKIAogCXBhZ2VfemlwX2NvbXByZXNzX3dyaXRlX2xv ZyhwYWdlX3ppcCwgcGFnZSwgaW5kZXgsIG10cik7CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Rv cmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9y b3cwdXBkLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwODA1NTY0OC1hbWk5 ZDVvd2U1dnJiNHRhCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwODEyMTYxNC1qazUzajcwNTJlYjd0OXJmCkBA IC00OTYsMTQgKzQ5Niw0OSBAQCByb3dfdXBkX3JlY19pbl9wbGFjZSgKIAluX2ZpZWxkcyA9IHVw ZF9nZXRfbl9maWVsZHModXBkYXRlKTsKIAogCWZvciAoaSA9IDA7IGkgPCBuX2ZpZWxkczsgaSsr KSB7CisjaWZkZWYgVU5JVl9CTE9CX0RFQlVHCisJCWJ0cl9ibG9iX2RiZ190CWI7CisJCWNvbnN0 IGJ5dGUqCWZpZWxkX3JlZgk9IE5VTEw7CisjZW5kaWYgLyogVU5JVl9CTE9CX0RFQlVHICovCisK IAkJdXBkX2ZpZWxkID0gdXBkX2dldF9udGhfZmllbGQodXBkYXRlLCBpKTsKIAkJbmV3X3ZhbCA9 ICYodXBkX2ZpZWxkLT5uZXdfdmFsKTsKIAkJdXRfYWQoIWRmaWVsZF9pc19leHQobmV3X3ZhbCkg PT0KIAkJICAgICAgIXJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0cywgdXBkX2ZpZWxkLT5maWVs ZF9ubykpOworI2lmZGVmIFVOSVZfQkxPQl9ERUJVRworCQlpZiAoZGZpZWxkX2lzX2V4dChuZXdf dmFsKSkgeworCQkJdWxpbnQJbGVuOworCQkJZmllbGRfcmVmID0gcmVjX2dldF9udGhfZmllbGQo cmVjLCBvZmZzZXRzLCBpLCAmbGVuKTsKKwkJCXV0X2EobGVuICE9IFVOSVZfU1FMX05VTEwpOwor CQkJdXRfYShsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJCQlmaWVsZF9yZWYg Kz0gbGVuIC0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRTsKKworCQkJYi5yZWZfcGFnZV9ubyA9 IHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZV9hbGlnbihyZWMpKTsKKwkJCWIucmVmX2hlYXBfbm8gPSBw YWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOworCQkJYi5yZWZfZmllbGRfbm8gPSBpOworCQkJYi5i bG9iX3BhZ2Vfbm8gPSBtYWNoX3JlYWRfZnJvbV80KAorCQkJCWZpZWxkX3JlZiArIEJUUl9FWFRF Uk5fUEFHRV9OTyk7CisJCQl1dF9hKGIucmVmX2ZpZWxkX25vID49IGluZGV4LT5uX3VuaXEpOwor CQkJYnRyX2Jsb2JfZGJnX3JidF9kZWxldGUoaW5kZXgsICZiLCAidXBkX2luX3BsYWNlIik7CisJ CX0KKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcgKi8KIAogCQlyZWNfc2V0X250aF9maWVsZChy ZWMsIG9mZnNldHMsIHVwZF9maWVsZC0+ZmllbGRfbm8sCiAJCQkJICBkZmllbGRfZ2V0X2RhdGEo bmV3X3ZhbCksCiAJCQkJICBkZmllbGRfZ2V0X2xlbihuZXdfdmFsKSk7CisKKyNpZmRlZiBVTklW X0JMT0JfREVCVUcKKwkJaWYgKGRmaWVsZF9pc19leHQobmV3X3ZhbCkpIHsKKwkJCWIuYmxvYl9w YWdlX25vID0gbWFjaF9yZWFkX2Zyb21fNCgKKwkJCQlmaWVsZF9yZWYgKyBCVFJfRVhURVJOX1BB R0VfTk8pOworCQkJYi5hbHdheXNfb3duZXIgPSBiLm93bmVyID0gIShmaWVsZF9yZWZbQlRSX0VY VEVSTl9MRU5dCisJCQkJCQkgICAgICYgQlRSX0VYVEVSTl9PV05FUl9GTEFHKTsKKwkJCWIuZGVs ID0gcmVjX2dldF9kZWxldGVkX2ZsYWcoCisJCQkJcmVjLCByZWNfb2Zmc19jb21wKG9mZnNldHMp KTsKKworCQkJYnRyX2Jsb2JfZGJnX3JidF9pbnNlcnQoaW5kZXgsICZiLCAidXBkX2luX3BsYWNl Iik7CisJCX0KKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcgKi8KIAl9CiAKIAlpZiAoVU5JVl9M SUtFTFlfTlVMTChwYWdlX3ppcCkpIHsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9i YXNlL3Nydi9zcnYwc3RhcnQuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHN0YXJ0 LmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwODA1NTY0OC1hbWk5ZDVvd2U1 dnJiNHRhCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5jCXJldmlkOm1hcmtv Lm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMjA4MTIxNjE0LWprNTNqNzA1MmViN3Q5cmYKQEAgLTEw ODMsNiArMTA4MywxMiBAQCBpbm5vYmFzZV9zdGFydF9vcl9jcmVhdGVfZm9yX215c3FsKHZvaWQp CiAjIGVuZGlmCiAjZW5kaWYKIAorI2lmZGVmIFVOSVZfQkxPQl9ERUJVRworCWZwcmludGYoc3Rk ZXJyLAorCQkiSW5ub0RCOiAhISEhISEhISBVTklWX0JMT0JfREVCVUcgc3dpdGNoZWQgb24gISEh ISEhISEhXG4iCisJCSJJbm5vREI6IFNlcnZlciByZXN0YXJ0IG1heSBmYWlsIHdpdGggVU5JVl9C TE9CX0RFQlVHXG4iKTsKKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcgKi8KKwogI2lmZGVmIFVO SVZfU1lOQ19ERUJVRwogCXV0X3ByaW50X3RpbWVzdGFtcChzdGRlcnIpOwogCWZwcmludGYoc3Rk ZXJyLAoK --===============2002262643== 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: 22444906400921ee970b281fad3c3f4037ac3bbe # timestamp: 2011-02-08 14:17:24 +0200 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # base_revision_id: vasil.dimov@stripped\ # ami9d5owe5vrb4ta # # Begin bundle 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 --===============2002262643==--