From: marko.makela Date: June 16 2011 9:27am Subject: bzr commit into mysql-trunk branch (marko.makela:3211) List-Archive: http://lists.mysql.com/commits/139301 Message-Id: <201106160928.p5G9SHUf000535@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2098728783==" --===============2098728783== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS9teXNxbC10cnVuay8g YmFzZWQgb24gcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYzMDE2LWo5 MmpkOGNneGsxengxY2cKCiAzMjExIE1hcmtvIE3DpGtlbMOkCTIwMTEtMDYtMTYgW21lcmdlXQog ICAgICBNZXJnZSBteXNxbC01LjUgdG8gbXlzcWwtdHJ1bmsuCgogICAgbW9kaWZpZWQ6CiAgICAg IHN0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBidHIuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2J0 ci9idHIwY3VyLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaAogICAg ICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGN1ci5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9idHIwY3VyLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYw YnVmLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaWMKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwY3VyLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9wYWdlMHBhZ2UuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFnZTBw YWdlLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVjLmgKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JlbTByZWMuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL3N5bmMwcncuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3N5bmMwc3lu Yy5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91bml2LmkKICAgICAgc3RvcmFnZS9p bm5vYmFzZS9wYWdlL3BhZ2UwY3VyLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2Uw cGFnZS5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBpbnMuYwogICAgICBzdG9yYWdl L2lubm9iYXNlL3Jvdy9yb3cwcm93LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVw ZC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB2ZXJzLmMKICAgICAgc3RvcmFnZS9p bm5vYmFzZS9zeW5jL3N5bmMwcncuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3N5bmMvc3luYzBz eW5jLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHJlYy5jCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwYnRyLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvYnRyL2J0cjBidHIuYwlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYw NjMwMTYtajkyamQ4Y2d4azF6eDFjZworKysgYi9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwYnRy LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTI2MDktNHppemNwNWxy Z3A0Z3czcApAQCAtMjI3OCw3ICsyMjc4LDcgQEAgYnRyX2F0dGFjaF9oYWxmX3BhZ2VzKAogLyo9 PT09PT09PT09PT09PT09PT0qLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluOiB0aGUg aW5kZXggdHJlZSAqLwogCWJ1Zl9ibG9ja190KglibG9jaywJCS8qITwgaW4vb3V0OiBwYWdlIHRv IGJlIHNwbGl0ICovCi0JcmVjX3QqCQlzcGxpdF9yZWMsCS8qITwgaW46IGZpcnN0IHJlY29yZCBv biB1cHBlcgorCWNvbnN0IHJlY190KglzcGxpdF9yZWMsCS8qITwgaW46IGZpcnN0IHJlY29yZCBv biB1cHBlcgogCQkJCQloYWxmIHBhZ2UgKi8KIAlidWZfYmxvY2tfdCoJbmV3X2Jsb2NrLAkvKiE8 IGluL291dDogdGhlIG5ldyBoYWxmIHBhZ2UgKi8KIAl1bGludAkJZGlyZWN0aW9uLAkvKiE8IGlu OiBGU1BfVVAgb3IgRlNQX0RPV04gKi8KQEAgLTI5NzEsMTUgKzI5NzEsMTYgQEAgYnRyX25vZGVf cHRyX2RlbGV0ZSgKIAl1dF9hKGVyciA9PSBEQl9TVUNDRVNTKTsKIAogCWlmICghY29tcHJlc3Nl ZCkgewotCQlidHJfY3VyX2NvbXByZXNzX2lmX3VzZWZ1bCgmY3Vyc29yLCBtdHIpOworCQlidHJf Y3VyX2NvbXByZXNzX2lmX3VzZWZ1bCgmY3Vyc29yLCBGQUxTRSwgbXRyKTsKIAl9CiB9CiAKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgogSWYgcGFnZSBpcyB0aGUgb25seSBvbiBpdHMgbGV2ZWwsIHRoaXMgZnVuY3Rpb24g bW92ZXMgaXRzIHJlY29yZHMgdG8gdGhlCi1mYXRoZXIgcGFnZSwgdGh1cyByZWR1Y2luZyB0aGUg dHJlZSBoZWlnaHQuICovCitmYXRoZXIgcGFnZSwgdGh1cyByZWR1Y2luZyB0aGUgdHJlZSBoZWln aHQuCitAcmV0dXJuIGZhdGhlciBibG9jayAqLwogc3RhdGljCi12b2lkCitidWZfYmxvY2tfdCoK IGJ0cl9saWZ0X3BhZ2VfdXAoCiAvKj09PT09PT09PT09PT0qLwogCWRpY3RfaW5kZXhfdCoJaW5k ZXgsCS8qITwgaW46IGluZGV4IHRyZWUgKi8KQEAgLTMwOTYsNiArMzA5Nyw4IEBAIGJ0cl9saWZ0 X3BhZ2VfdXAoCiAJfQogCXV0X2FkKHBhZ2VfdmFsaWRhdGUoZmF0aGVyX3BhZ2UsIGluZGV4KSk7 CiAJdXRfYWQoYnRyX2NoZWNrX25vZGVfcHRyKGluZGV4LCBmYXRoZXJfYmxvY2ssIG10cikpOwor CisJcmV0dXJuKGZhdGhlcl9ibG9jayk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtMzExMiwxMSArMzEx NSwxMyBAQCBVTklWX0lOVEVSTgogaWJvb2wKIGJ0cl9jb21wcmVzcygKIC8qPT09PT09PT09Ki8K LQlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29yIG9uIHRoZSBwYWdlIHRvIG1lcmdl IG9yIGxpZnQ7Ci0JCQkJdGhlIHBhZ2UgbXVzdCBub3QgYmUgZW1wdHk6IGluIHJlY29yZCBkZWxl dGUKLQkJCQl1c2UgYnRyX2Rpc2NhcmRfcGFnZSBpZiB0aGUgcGFnZSB3b3VsZCBiZWNvbWUKLQkJ CQllbXB0eSAqLwotCW10cl90KgkJbXRyKQkvKiE8IGluOiBtdHIgKi8KKwlidHJfY3VyX3QqCWN1 cnNvciwJLyohPCBpbi9vdXQ6IGN1cnNvciBvbiB0aGUgcGFnZSB0byBtZXJnZQorCQkJCW9yIGxp ZnQ7IHRoZSBwYWdlIG11c3Qgbm90IGJlIGVtcHR5OgorCQkJCXdoZW4gZGVsZXRpbmcgcmVjb3Jk cywgdXNlIGJ0cl9kaXNjYXJkX3BhZ2UoKQorCQkJCWlmIHRoZSBwYWdlIHdvdWxkIGJlY29tZSBl bXB0eSAqLworCWlib29sCQlhZGp1c3QsCS8qITwgaW46IFRSVUUgaWYgc2hvdWxkIGFkanVzdCB0 aGUKKwkJCQljdXJzb3IgcG9zaXRpb24gZXZlbiBpZiBjb21wcmVzc2lvbiBvY2N1cnMgKi8KKwlt dHJfdCoJCW10cikJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KIHsKIAlkaWN0X2lu ZGV4X3QqCWluZGV4OwogCXVsaW50CQlzcGFjZTsKQEAgLTMxMzQsMTIgKzMxMzksMTQgQEAgYnRy X2NvbXByZXNzKAogCXVsaW50KgkJb2Zmc2V0czsKIAl1bGludAkJZGF0YV9zaXplOwogCXVsaW50 CQluX3JlY3M7CisJdWxpbnQJCW50aF9yZWM7CiAJdWxpbnQJCW1heF9pbnNfc2l6ZTsKIAl1bGlu dAkJbWF4X2luc19zaXplX3Jlb3JnOwogCiAJYmxvY2sgPSBidHJfY3VyX2dldF9ibG9jayhjdXJz b3IpOwogCXBhZ2UgPSBidHJfY3VyX2dldF9wYWdlKGN1cnNvcik7CiAJaW5kZXggPSBidHJfY3Vy X2dldF9pbmRleChjdXJzb3IpOworCiAJdXRfYSgoaWJvb2wpICEhcGFnZV9pc19jb21wKHBhZ2Up ID09IGRpY3RfdGFibGVfaXNfY29tcChpbmRleC0+dGFibGUpKTsKIAogCXV0X2FkKG10cl9tZW1v X2NvbnRhaW5zKG10ciwgZGljdF9pbmRleF9nZXRfbG9jayhpbmRleCksCkBAIC0zMTYwLDYgKzMx NjcsMTAgQEAgYnRyX2NvbXByZXNzKAogCW9mZnNldHMgPSBidHJfcGFnZV9nZXRfZmF0aGVyX2Js b2NrKE5VTEwsIGhlYXAsIGluZGV4LCBibG9jaywgbXRyLAogCQkJCQkgICAgJmZhdGhlcl9jdXJz b3IpOwogCisJaWYgKGFkanVzdCkgeworCQludGhfcmVjID0gcGFnZV9yZWNfZ2V0X25fcmVjc19i ZWZvcmUoYnRyX2N1cl9nZXRfcmVjKGN1cnNvcikpOworCX0KKwogCS8qIERlY2lkZSB0aGUgcGFn ZSB0byB3aGljaCB3ZSB0cnkgdG8gbWVyZ2UgYW5kIHdoaWNoIHdpbGwgaW5oZXJpdAogCXRoZSBs b2NrcyAqLwogCkBAIC0zMTg2LDkgKzMxOTcsOSBAQCBidHJfY29tcHJlc3MoCiAJfSBlbHNlIHsK IAkJLyogVGhlIHBhZ2UgaXMgdGhlIG9ubHkgb25lIG9uIHRoZSBsZXZlbCwgbGlmdCB0aGUgcmVj b3JkcwogCQl0byB0aGUgZmF0aGVyICovCi0JCWJ0cl9saWZ0X3BhZ2VfdXAoaW5kZXgsIGJsb2Nr LCBtdHIpOwotCQltZW1faGVhcF9mcmVlKGhlYXApOwotCQlyZXR1cm4oVFJVRSk7CisKKwkJbWVy Z2VfYmxvY2sgPSBidHJfbGlmdF9wYWdlX3VwKGluZGV4LCBibG9jaywgbXRyKTsKKwkJZ290byBm dW5jX2V4aXQ7CiAJfQogCiAJbl9yZWNzID0gcGFnZV9nZXRfbl9yZWNzKHBhZ2UpOwpAQCAtMzI3 MCw2ICszMjgxLDEwIEBAIGVycl9leGl0OgogCiAJCWJ0cl9ub2RlX3B0cl9kZWxldGUoaW5kZXgs IGJsb2NrLCBtdHIpOwogCQlsb2NrX3VwZGF0ZV9tZXJnZV9sZWZ0KG1lcmdlX2Jsb2NrLCBvcmln X3ByZWQsIGJsb2NrKTsKKworCQlpZiAoYWRqdXN0KSB7CisJCQludGhfcmVjICs9IHBhZ2VfcmVj X2dldF9uX3JlY3NfYmVmb3JlKG9yaWdfcHJlZCk7CisJCX0KIAl9IGVsc2UgewogCQlyZWNfdCoJ CW9yaWdfc3VjYzsKICNpZmRlZiBVTklWX0JUUl9ERUJVRwpAQCAtMzMzNCw3ICszMzQ5LDYgQEAg ZXJyX2V4aXQ6CiAJfQogCiAJYnRyX2Jsb2JfZGJnX3JlbW92ZShwYWdlLCBpbmRleCwgImJ0cl9j b21wcmVzcyIpOwotCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAKIAlpZiAoIWRpY3RfaW5kZXhfaXNf Y2x1c3QoaW5kZXgpICYmIHBhZ2VfaXNfbGVhZihtZXJnZV9wYWdlKSkgewogCQkvKiBVcGRhdGUg dGhlIGZyZWUgYml0cyBvZiB0aGUgQi10cmVlIHBhZ2UgaW4gdGhlCkBAIC0zMzg2LDYgKzM0MDAs MTYgQEAgZXJyX2V4aXQ6CiAJYnRyX3BhZ2VfZnJlZShpbmRleCwgYmxvY2ssIG10cik7CiAKIAl1 dF9hZChidHJfY2hlY2tfbm9kZV9wdHIoaW5kZXgsIG1lcmdlX2Jsb2NrLCBtdHIpKTsKK2Z1bmNf ZXhpdDoKKwltZW1faGVhcF9mcmVlKGhlYXApOworCisJaWYgKGFkanVzdCkgeworCQlidHJfY3Vy X3Bvc2l0aW9uKAorCQkJaW5kZXgsCisJCQlwYWdlX3JlY19nZXRfbnRoKG1lcmdlX2Jsb2NrLT5m cmFtZSwgbnRoX3JlYyksCisJCQltZXJnZV9ibG9jaywgY3Vyc29yKTsKKwl9CisKIAlyZXR1cm4o VFJVRSk7CiB9CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIw Y3VyLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuYwlyZXZpZDpqb3JnZW4u bG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjMwMTYtajkyamQ4Y2d4azF6eDFjZworKysgYi9z dG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMTA2MTYwOTI2MDktNHppemNwNWxyZ3A0Z3czcApAQCAtMTk3MCw3ICsxOTcwLDYgQEAg YnRyX2N1cl9vcHRpbWlzdGljX3VwZGF0ZSgKIAl1bGludAkJb2xkX3JlY19zaXplOwogCWR0dXBs ZV90KgluZXdfZW50cnk7CiAJcm9sbF9wdHJfdAlyb2xsX3B0cjsKLQl0cnhfdCoJCXRyeDsKIAlt ZW1faGVhcF90KgloZWFwOwogCXVsaW50CQlpOwogCXVsaW50CQluX2V4dDsKQEAgLTE5ODcsOSAr MTk4NiwxMCBAQCBidHJfY3VyX29wdGltaXN0aWNfdXBkYXRlKAogCiAJaGVhcCA9IG1lbV9oZWFw X2NyZWF0ZSgxMDI0KTsKIAlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIE5V TEwsIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApOwotI2lmZGVmIFVOSVZfQkxPQl9OVUxMX0RFQlVH Ci0JdXRfYSghcmVjX29mZnNfYW55X251bGxfZXh0ZXJuKHJlYywgb2Zmc2V0cykpOwotI2VuZGlm IC8qIFVOSVZfQkxPQl9OVUxMX0RFQlVHICovCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRl ZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCisJdXRfYSghcmVjX29mZnNfYW55X251bGxfZXh0 ZXJuKHJlYywgb2Zmc2V0cykKKwkgICAgIHx8IHRyeF9pc19yZWN2KHRocl9nZXRfdHJ4KHRocikp KTsKKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLwogCiAj aWZkZWYgVU5JVl9ERUJVRwogCWlmIChidHJfY3VyX3ByaW50X3JlY29yZF9vcHMgJiYgdGhyKSB7 CkBAIC0yMTEyLDEzICsyMTEyLDExIEBAIGFueV9leHRlcm46CiAKIAlwYWdlX2N1cl9tb3ZlX3Rv X3ByZXYocGFnZV9jdXJzb3IpOwogCi0JdHJ4ID0gdGhyX2dldF90cngodGhyKTsKLQogCWlmICgh KGZsYWdzICYgQlRSX0tFRVBfU1lTX0ZMQUcpKSB7CiAJCXJvd191cGRfaW5kZXhfZW50cnlfc3lz X2ZpZWxkKG5ld19lbnRyeSwgaW5kZXgsIERBVEFfUk9MTF9QVFIsCiAJCQkJCSAgICAgIHJvbGxf cHRyKTsKIAkJcm93X3VwZF9pbmRleF9lbnRyeV9zeXNfZmllbGQobmV3X2VudHJ5LCBpbmRleCwg REFUQV9UUlhfSUQsCi0JCQkJCSAgICAgIHRyeC0+aWQpOworCQkJCQkgICAgICB0aHJfZ2V0X3Ry eCh0aHIpLT5pZCk7CiAJfQogCiAJLyogVGhlcmUgYXJlIG5vIGV4dGVybmFsbHkgc3RvcmVkIGNv bHVtbnMgaW4gbmV3X2VudHJ5ICovCkBAIC0yMjA0LDcgKzIyMDIsOSBAQCBidHJfY3VyX3Blc3Np bWlzdGljX3VwZGF0ZSgKIC8qPT09PT09PT09PT09PT09PT09PT09PT0qLwogCXVsaW50CQlmbGFn cywJLyohPCBpbjogdW5kbyBsb2dnaW5nLCBsb2NraW5nLCBhbmQgcm9sbGJhY2sKIAkJCQlmbGFn cyAqLwotCWJ0cl9jdXJfdCoJY3Vyc29yLAkvKiE8IGluOiBjdXJzb3Igb24gdGhlIHJlY29yZCB0 byB1cGRhdGUgKi8KKwlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbi9vdXQ6IGN1cnNvciBvbiB0 aGUgcmVjb3JkIHRvIHVwZGF0ZTsKKwkJCQljdXJzb3IgbWF5IGJlY29tZSBpbnZhbGlkIGlmICpi aWdfcmVjID09IE5VTEwKKwkJCQl8fCAhKGZsYWdzICYgQlRSX0tFRVBfUE9TX0ZMQUcpICovCiAJ bWVtX2hlYXBfdCoqCWhlYXAsCS8qITwgaW4vb3V0OiBwb2ludGVyIHRvIG1lbW9yeSBoZWFwLCBv ciBOVUxMICovCiAJYmlnX3JlY190KioJYmlnX3JlYywvKiE8IG91dDogYmlnIHJlYyB2ZWN0b3Ig d2hvc2UgZmllbGRzIGhhdmUgdG8KIAkJCQliZSBzdG9yZWQgZXh0ZXJuYWxseSBieSB0aGUgY2Fs bGVyLCBvciBOVUxMICovCkBAIC0yMzQzLDcgKzIzNDMsNyBAQCBidHJfY3VyX3Blc3NpbWlzdGlj X3VwZGF0ZSgKIAlyZWNvcmQgdG8gYmUgaW5zZXJ0ZWQ6IHdlIGhhdmUgdG8gcmVtZW1iZXIgd2hp Y2ggZmllbGRzIHdlcmUgc3VjaCAqLwogCiAJdXRfYWQoIXBhZ2VfaXNfY29tcChwYWdlKSB8fCAh cmVjX2dldF9ub2RlX3B0cl9mbGFnKHJlYykpOwotCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMo cmVjLCBpbmRleCwgb2Zmc2V0cywgVUxJTlRfVU5ERUZJTkVELCBoZWFwKTsKKwl1dF9hZChyZWNf b2Zmc192YWxpZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRzKSk7CiAJbl9leHQgKz0gYnRyX3B1c2hf dXBkYXRlX2V4dGVybl9maWVsZHMobmV3X2VudHJ5LCB1cGRhdGUsICpoZWFwKTsKIAogCWlmIChV TklWX0xJS0VMWV9OVUxMKHBhZ2VfemlwKSkgewpAQCAtMjM2Niw2ICsyMzY2LDEwIEBAIG1ha2Vf ZXh0ZXJuYWw6CiAJCQllcnIgPSBEQl9UT09fQklHX1JFQ09SRDsKIAkJCWdvdG8gcmV0dXJuX2Fm dGVyX3Jlc2VydmF0aW9uczsKIAkJfQorCisJCXV0X2FkKHBhZ2VfaXNfbGVhZihwYWdlKSk7CisJ CXV0X2FkKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKKwkJdXRfYWQoZmxhZ3MgJiBCVFJf S0VFUF9QT1NfRkxBRyk7CiAJfQogCiAJLyogU3RvcmUgc3RhdGUgb2YgZXhwbGljaXQgbG9ja3Mg b24gcmVjIG9uIHRoZSBwYWdlIGluZmltdW0gcmVjb3JkLApAQCAtMjM5Myw2ICsyMzk3LDggQEAg bWFrZV9leHRlcm5hbDoKIAlyZWMgPSBidHJfY3VyX2luc2VydF9pZl9wb3NzaWJsZShjdXJzb3Is IG5ld19lbnRyeSwgbl9leHQsIG10cik7CiAKIAlpZiAocmVjKSB7CisJCXBhZ2VfY3Vyc29yLT5y ZWMgPSByZWM7CisKIAkJbG9ja19yZWNfcmVzdG9yZV9mcm9tX3BhZ2VfaW5maW11bShidHJfY3Vy X2dldF9ibG9jayhjdXJzb3IpLAogCQkJCQkJICAgcmVjLCBibG9jayk7CiAKQEAgLTI0MDYsNyAr MjQxMiwxMCBAQCBtYWtlX2V4dGVybmFsOgogCQkJCQkJICAgICByZWMsIGluZGV4LCBvZmZzZXRz LCBtdHIpOwogCQl9CiAKLQkJYnRyX2N1cl9jb21wcmVzc19pZl91c2VmdWwoY3Vyc29yLCBtdHIp OworCQlidHJfY3VyX2NvbXByZXNzX2lmX3VzZWZ1bCgKKwkJCWN1cnNvciwKKwkJCWJpZ19yZWNf dmVjICE9IE5VTEwgJiYgKGZsYWdzICYgQlRSX0tFRVBfUE9TX0ZMQUcpLAorCQkJbXRyKTsKIAog CQlpZiAocGFnZV96aXAgJiYgIWRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpCiAJCSAgICAmJiBw YWdlX2lzX2xlYWYocGFnZSkpIHsKQEAgLTI0MjYsNiArMjQzNSwyMSBAQCBtYWtlX2V4dGVybmFs OgogCQl9CiAJfQogCisJaWYgKGJpZ19yZWNfdmVjKSB7CisJCXV0X2FkKHBhZ2VfaXNfbGVhZihw YWdlKSk7CisJCXV0X2FkKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKKwkJdXRfYWQoZmxh Z3MgJiBCVFJfS0VFUF9QT1NfRkxBRyk7CisKKwkJLyogYnRyX3BhZ2Vfc3BsaXRfYW5kX2luc2Vy dCgpIGluCisJCWJ0cl9jdXJfcGVzc2ltaXN0aWNfaW5zZXJ0KCkgaW52b2tlcworCQltdHJfbWVt b19yZWxlYXNlKG10ciwgaW5kZXgtPmxvY2ssIE1UUl9NRU1PX1hfTE9DSykuCisJCVdlIG11c3Qg a2VlcCB0aGUgaW5kZXgtPmxvY2sgd2hlbiB3ZSBjcmVhdGVkIGEKKwkJYmlnX3JlYywgc28gdGhh dCByb3dfdXBkX2NsdXN0X3JlYygpIGNhbiBzdG9yZSB0aGUKKwkJYmlnX3JlYyBpbiB0aGUgc2Ft ZSBtaW5pLXRyYW5zYWN0aW9uLiAqLworCisJCW10cl94X2xvY2soZGljdF9pbmRleF9nZXRfbG9j ayhpbmRleCksIG10cik7CisJfQorCiAJLyogV2FzIHRoZSByZWNvcmQgdG8gYmUgdXBkYXRlZCBw b3NpdGlvbmVkIGFzIHRoZSBmaXJzdCB1c2VyCiAJcmVjb3JkIG9uIGl0cyBwYWdlPyAqLwogCXdh c19maXJzdCA9IHBhZ2VfY3VyX2lzX2JlZm9yZV9maXJzdChwYWdlX2N1cnNvcik7CkBAIC0yNDQx LDYgKzI0NjUsNyBAQCBtYWtlX2V4dGVybmFsOgogCXV0X2EocmVjKTsKIAl1dF9hKGVyciA9PSBE Ql9TVUNDRVNTKTsKIAl1dF9hKGR1bW15X2JpZ19yZWMgPT0gTlVMTCk7CisJcGFnZV9jdXJzb3It PnJlYyA9IHJlYzsKIAogCWlmIChkaWN0X2luZGV4X2lzX3NlY19vcl9pYnVmKGluZGV4KSkgewog CQkvKiBVcGRhdGUgUEFHRV9NQVhfVFJYX0lEIGluIHRoZSBpbmRleCBwYWdlIGhlYWRlci4KQEAg LTI0OTksNiArMjUyNCwzOSBAQCByZXR1cm5fYWZ0ZXJfcmVzZXJ2YXRpb25zOgogCXJldHVybihl cnIpOwogfQogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCitDb21taXRzIGFuZCByZXN0YXJ0cyBhIG1pbmktdHJhbnNh Y3Rpb24gc28gdGhhdCBpdCB3aWxsIHJldGFpbiBhbgoreC1sb2NrIG9uIGluZGV4LT5sb2NrIGFu ZCB0aGUgY3Vyc29yIHBhZ2UuICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2N1cl9tdHJfY29t bWl0X2FuZF9zdGFydCgKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PSovCisJYnRyX2N1cl90 KgljdXJzb3IsCS8qITwgaW46IGN1cnNvciAqLworCW10cl90KgkJbXRyKQkvKiE8IGluL291dDog bWluaS10cmFuc2FjdGlvbiAqLworeworCWJ1Zl9ibG9ja190KglibG9jazsKKworCWJsb2NrID0g YnRyX2N1cl9nZXRfYmxvY2soY3Vyc29yKTsKKworCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKG10 ciwgZGljdF9pbmRleF9nZXRfbG9jayhjdXJzb3ItPmluZGV4KSwKKwkJCQlNVFJfTUVNT19YX0xP Q0spKTsKKwl1dF9hZChtdHJfbWVtb19jb250YWlucyhtdHIsIGJsb2NrLCBNVFJfTUVNT19QQUdF X1hfRklYKSk7CisJLyogS2VlcCB0aGUgbG9ja3MgYWNyb3NzIHRoZSBtdHJfY29tbWl0KG10ciku ICovCisJcndfbG9ja194X2xvY2soZGljdF9pbmRleF9nZXRfbG9jayhjdXJzb3ItPmluZGV4KSk7 CisJcndfbG9ja194X2xvY2soJmJsb2NrLT5sb2NrKTsKKwltdXRleF9lbnRlcigmYmxvY2stPm11 dGV4KTsKKwlidWZfYmxvY2tfYnVmX2ZpeF9pbmMoYmxvY2ssIF9fRklMRV9fLCBfX0xJTkVfXyk7 CisJbXV0ZXhfZXhpdCgmYmxvY2stPm11dGV4KTsKKwkvKiBXcml0ZSBvdXQgdGhlIHJlZG8gbG9n LiAqLworCW10cl9jb21taXQobXRyKTsKKwltdHJfc3RhcnQobXRyKTsKKwkvKiBSZWFzc29jaWF0 ZSB0aGUgbG9ja3Mgd2l0aCB0aGUgbWluaS10cmFuc2FjdGlvbi4KKwlUaGV5IHdpbGwgYmUgcmVs ZWFzZWQgb24gbXRyX2NvbW1pdChtdHIpLiAqLworCW10cl9tZW1vX3B1c2gobXRyLCBkaWN0X2lu ZGV4X2dldF9sb2NrKGN1cnNvci0+aW5kZXgpLAorCQkgICAgICBNVFJfTUVNT19YX0xPQ0spOwor CW10cl9tZW1vX3B1c2gobXRyLCBibG9jaywgTVRSX01FTU9fUEFHRV9YX0ZJWCk7Cit9CisKIC8q PT09PT09PT09PT09PT09PT09PT0gQi1UUkVFIERFTEVURSBNQVJLIEFORCBVTk1BUksgPT09PT09 PT09PT09PT09Ki8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC0yODc5LDEwICsyOTM3LDEyIEBAIFVOSVZf SU5URVJOCiBpYm9vbAogYnRyX2N1cl9jb21wcmVzc19pZl91c2VmdWwoCiAvKj09PT09PT09PT09 PT09PT09PT09PT09Ki8KLQlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29yIG9uIHRo ZSBwYWdlIHRvIGNvbXByZXNzOwotCQkJCWN1cnNvciBkb2VzIG5vdCBzdGF5IHZhbGlkIGlmIGNv bXByZXNzaW9uCi0JCQkJb2NjdXJzICovCi0JbXRyX3QqCQltdHIpCS8qITwgaW46IG10ciAqLwor CWJ0cl9jdXJfdCoJY3Vyc29yLAkvKiE8IGluL291dDogY3Vyc29yIG9uIHRoZSBwYWdlIHRvIGNv bXByZXNzOworCQkJCWN1cnNvciBkb2VzIG5vdCBzdGF5IHZhbGlkIGlmICFhZGp1c3QgYW5kCisJ CQkJY29tcHJlc3Npb24gb2NjdXJzICovCisJaWJvb2wJCWFkanVzdCwJLyohPCBpbjogVFJVRSBp ZiBzaG91bGQgYWRqdXN0IHRoZQorCQkJCWN1cnNvciBwb3NpdGlvbiBldmVuIGlmIGNvbXByZXNz aW9uIG9jY3VycyAqLworCW10cl90KgkJbXRyKQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlv biAqLwogewogCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKG10ciwKIAkJCQlkaWN0X2luZGV4X2dl dF9sb2NrKGJ0cl9jdXJfZ2V0X2luZGV4KGN1cnNvcikpLApAQCAtMjg5MSw3ICsyOTUxLDcgQEAg YnRyX2N1cl9jb21wcmVzc19pZl91c2VmdWwoCiAJCQkJTVRSX01FTU9fUEFHRV9YX0ZJWCkpOwog CiAJcmV0dXJuKGJ0cl9jdXJfY29tcHJlc3NfcmVjb21tZW5kYXRpb24oY3Vyc29yLCBtdHIpCi0J ICAgICAgICYmIGJ0cl9jb21wcmVzcyhjdXJzb3IsIG10cikpOworCSAgICAgICAmJiBidHJfY29t cHJlc3MoY3Vyc29yLCBhZGp1c3QsIG10cikpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKQEAgLTMxMzMsNyArMzE5Myw3 IEBAIHJldHVybl9hZnRlcl9yZXNlcnZhdGlvbnM6CiAJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAog CWlmIChyZXQgPT0gRkFMU0UpIHsKLQkJcmV0ID0gYnRyX2N1cl9jb21wcmVzc19pZl91c2VmdWwo Y3Vyc29yLCBtdHIpOworCQlyZXQgPSBidHJfY3VyX2NvbXByZXNzX2lmX3VzZWZ1bChjdXJzb3Is IEZBTFNFLCBtdHIpOwogCX0KIAogCWlmIChuX2V4dGVudHMgPiAwKSB7Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaCcKLS0tIGEvc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaAlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20t MjAxMTA2MTYwNjMwMTYtajkyamQ4Y2d4azF6eDFjZworKysgYi9zdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvYnRyMGJ0ci5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDky NjA5LTR6aXpjcDVscmdwNGd3M3AKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKIAotQ29weXJpZ2h0IChjKSAxOTk0LCAyMDEwLCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBS ZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZm aWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC00ODEsMTEgKzQ4MSwxNCBAQCBVTklWX0lOVEVSTgogaWJv b2wKIGJ0cl9jb21wcmVzcygKIC8qPT09PT09PT09Ki8KLQlidHJfY3VyX3QqCWN1cnNvciwJLyoh PCBpbjogY3Vyc29yIG9uIHRoZSBwYWdlIHRvIG1lcmdlIG9yIGxpZnQ7Ci0JCQkJdGhlIHBhZ2Ug bXVzdCBub3QgYmUgZW1wdHk6IGluIHJlY29yZCBkZWxldGUKLQkJCQl1c2UgYnRyX2Rpc2NhcmRf cGFnZSBpZiB0aGUgcGFnZSB3b3VsZCBiZWNvbWUKLQkJCQllbXB0eSAqLwotCW10cl90KgkJbXRy KTsJLyohPCBpbjogbXRyICovCisJYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW4vb3V0OiBjdXJz b3Igb24gdGhlIHBhZ2UgdG8gbWVyZ2UKKwkJCQlvciBsaWZ0OyB0aGUgcGFnZSBtdXN0IG5vdCBi ZSBlbXB0eToKKwkJCQl3aGVuIGRlbGV0aW5nIHJlY29yZHMsIHVzZSBidHJfZGlzY2FyZF9wYWdl KCkKKwkJCQlpZiB0aGUgcGFnZSB3b3VsZCBiZWNvbWUgZW1wdHkgKi8KKwlpYm9vbAkJYWRqdXN0 LAkvKiE8IGluOiBUUlVFIGlmIHNob3VsZCBhZGp1c3QgdGhlCisJCQkJY3Vyc29yIHBvc2l0aW9u IGV2ZW4gaWYgY29tcHJlc3Npb24gb2NjdXJzICovCisJbXRyX3QqCQltdHIpCS8qITwgaW4vb3V0 OiBtaW5pLXRyYW5zYWN0aW9uICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOwogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCiBEaXNjYXJkcyBhIHBhZ2UgZnJvbSBhIEItdHJlZS4gVGhpcyBpcyB1c2VkIHRvIHJlbW92 ZSB0aGUgbGFzdCByZWNvcmQgZnJvbQogYSBCLXRyZWUgcGFnZTogdGhlIHdob2xlIHBhZ2UgbXVz dCBiZSByZW1vdmVkIGF0IHRoZSBzYW1lIHRpbWUuIFRoaXMgY2Fubm90Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaCcKLS0tIGEvc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaAlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20t MjAxMTA2MTYwNjMwMTYtajkyamQ4Y2d4azF6eDFjZworKysgYi9zdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvYnRyMGN1ci5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDky NjA5LTR6aXpjcDVscmdwNGd3M3AKQEAgLTM2LDYgKzM2LDkgQEAgQ3JlYXRlZCAxMC8xNi8xOTk0 IEhlaWtraSBUdXVyaQogI2RlZmluZSBCVFJfTk9fTE9DS0lOR19GTEFHCTIJLyogZG8gbm8gcmVj b3JkIGxvY2sgY2hlY2tpbmcgKi8KICNkZWZpbmUgQlRSX0tFRVBfU1lTX0ZMQUcJNAkvKiBzeXMg ZmllbGRzIHdpbGwgYmUgZm91bmQgZnJvbSB0aGUKIAkJCQkJdXBkYXRlIHZlY3RvciBvciBpbnNl cnRlZCBlbnRyeSAqLworI2RlZmluZSBCVFJfS0VFUF9QT1NfRkxBRwk4CS8qIGJ0cl9jdXJfcGVz c2ltaXN0aWNfdXBkYXRlKCkKKwkJCQkJbXVzdCBrZWVwIGN1cnNvciBwb3NpdGlvbiB3aGVuCisJ CQkJCW1vdmluZyBjb2x1bW5zIHRvIGJpZ19yZWMgKi8KIAogI2lmbmRlZiBVTklWX0hPVEJBQ0tV UAogI2luY2x1ZGUgInF1ZTB0eXBlcy5oIgpAQCAtMzEyLDcgKzMxNSw5IEBAIGJ0cl9jdXJfcGVz c2ltaXN0aWNfdXBkYXRlKAogLyo9PT09PT09PT09PT09PT09PT09PT09PSovCiAJdWxpbnQJCWZs YWdzLAkvKiE8IGluOiB1bmRvIGxvZ2dpbmcsIGxvY2tpbmcsIGFuZCByb2xsYmFjawogCQkJCWZs YWdzICovCi0JYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW46IGN1cnNvciBvbiB0aGUgcmVjb3Jk IHRvIHVwZGF0ZSAqLworCWJ0cl9jdXJfdCoJY3Vyc29yLAkvKiE8IGluL291dDogY3Vyc29yIG9u IHRoZSByZWNvcmQgdG8gdXBkYXRlOworCQkJCWN1cnNvciBtYXkgYmVjb21lIGludmFsaWQgaWYg KmJpZ19yZWMgPT0gTlVMTAorCQkJCXx8ICEoZmxhZ3MgJiBCVFJfS0VFUF9QT1NfRkxBRykgKi8K IAltZW1faGVhcF90KioJaGVhcCwJLyohPCBpbi9vdXQ6IHBvaW50ZXIgdG8gbWVtb3J5IGhlYXAs IG9yIE5VTEwgKi8KIAliaWdfcmVjX3QqKgliaWdfcmVjLC8qITwgb3V0OiBiaWcgcmVjIHZlY3Rv ciB3aG9zZSBmaWVsZHMgaGF2ZSB0bwogCQkJCWJlIHN0b3JlZCBleHRlcm5hbGx5IGJ5IHRoZSBj YWxsZXIsIG9yIE5VTEwgKi8KQEAgLTMyNCw2ICszMjksMTYgQEAgYnRyX2N1cl9wZXNzaW1pc3Rp Y191cGRhdGUoCiAJcXVlX3Rocl90Kgl0aHIsCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwogCW10 cl90KgkJbXRyKTsJLyohPCBpbjogbXRyOyBtdXN0IGJlIGNvbW1pdHRlZCBiZWZvcmUKIAkJCQls YXRjaGluZyBhbnkgZnVydGhlciBwYWdlcyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitDb21taXRzIGFuZCByZXN0 YXJ0cyBhIG1pbmktdHJhbnNhY3Rpb24gc28gdGhhdCBpdCB3aWxsIHJldGFpbiBhbgoreC1sb2Nr IG9uIGluZGV4LT5sb2NrIGFuZCB0aGUgY3Vyc29yIHBhZ2UuICovCitVTklWX0lOVEVSTgordm9p ZAorYnRyX2N1cl9tdHJfY29tbWl0X2FuZF9zdGFydCgKKy8qPT09PT09PT09PT09PT09PT09PT09 PT09PSovCisJYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW46IGN1cnNvciAqLworCW10cl90KgkJ bXRyKQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLworCVVOSVZfQ09MRCBfX2F0dHJp YnV0ZV9fKChub25udWxsKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBNYXJrcyBhIGNsdXN0ZXJlZCBpbmRleCByZWNv cmQgZGVsZXRlZC4gV3JpdGVzIGFuIHVuZG8gbG9nIHJlY29yZCB0bwogdW5kbyBsb2cgb24gdGhp cyBkZWxldGUgbWFya2luZy4gV3JpdGVzIGluIHRoZSB0cnggaWQgZmllbGQgdGhlIGlkCkBAIC0z NjYsMTAgKzM4MSwxMyBAQCBVTklWX0lOVEVSTgogaWJvb2wKIGJ0cl9jdXJfY29tcHJlc3NfaWZf dXNlZnVsKAogLyo9PT09PT09PT09PT09PT09PT09PT09PSovCi0JYnRyX2N1cl90KgljdXJzb3Is CS8qITwgaW46IGN1cnNvciBvbiB0aGUgcGFnZSB0byBjb21wcmVzczsKKwlidHJfY3VyX3QqCWN1 cnNvciwJLyohPCBpbi9vdXQ6IGN1cnNvciBvbiB0aGUgcGFnZSB0byBjb21wcmVzczsKIAkJCQlj dXJzb3IgZG9lcyBub3Qgc3RheSB2YWxpZCBpZiBjb21wcmVzc2lvbgogCQkJCW9jY3VycyAqLwot CW10cl90KgkJbXRyKTsJLyohPCBpbjogbXRyICovCisJaWJvb2wJCWFkanVzdCwJLyohPCBpbjog VFJVRSBpZiBzaG91bGQgYWRqdXN0IHRoZQorCQkJCWN1cnNvciBwb3NpdGlvbiBldmVuIGlmIGNv bXByZXNzaW9uIG9jY3VycyAqLworCW10cl90KgkJbXRyKQkvKiE8IGluL291dDogbWluaS10cmFu c2FjdGlvbiAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUmVtb3ZlcyB0aGUg cmVjb3JkIG9uIHdoaWNoIHRoZSB0cmVlIGN1cnNvciBpcyBwb3NpdGlvbmVkLiBJdCBpcyBhc3N1 bWVkCiB0aGF0IHRoZSBtdHIgaGFzIGFuIHgtbGF0Y2ggb24gdGhlIHBhZ2Ugd2hlcmUgdGhlIGN1 cnNvciBpcyBwb3NpdGlvbmVkLAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9idHIwY3VyLmljJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGN1 ci5pYwlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjMwMTYtajkyamQ4 Y2d4azF6eDFjZworKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGN1ci5pYwlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjA5MjYwOS00eml6Y3A1bHJncDRndzNw CkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykg MTk5NCwgMjAwOSwgSW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQg KGMpIDE5OTQsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMg UmVzZXJ2ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpA QCAtMTQwLDcgKzE0MCw3IEBAIGJ0cl9jdXJfY29tcHJlc3NfcmVjb21tZW5kYXRpb24oCiAJYnRy X2N1cl90KgljdXJzb3IsCS8qITwgaW46IGJ0ciBjdXJzb3IgKi8KIAltdHJfdCoJCW10cikJLyoh PCBpbjogbXRyICovCiB7Ci0JcGFnZV90KgkJcGFnZTsKKwljb25zdCBwYWdlX3QqCQlwYWdlOwog CiAJdXRfYWQobXRyX21lbW9fY29udGFpbnMobXRyLCBidHJfY3VyX2dldF9ibG9jayhjdXJzb3Ip LAogCQkJCU1UUl9NRU1PX1BBR0VfWF9GSVgpKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvYnVmMGJ1Zi5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvYnVmMGJ1Zi5oCXJldmlkOmpvcmdlbi5sb2xhbmRAb3JhY2xlLmNvbS0yMDExMDYxNjA2MzAx Ni1qOTJqZDhjZ3hrMXp4MWNnCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwYnVm LmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTI2MDktNHppemNwNWxy Z3A0Z3czcApAQCAtNTg3LDYgKzU4NywzMSBAQCBidWZfYmxvY2tfZ2V0X21vZGlmeV9jbG9jaygK ICNlbHNlIC8qICFVTklWX0hPVEJBQ0tVUCAqLwogIyBkZWZpbmUgYnVmX2Jsb2NrX21vZGlmeV9j bG9ja19pbmMoYmxvY2spICgodm9pZCkgMCkKICNlbmRpZiAvKiAhVU5JVl9IT1RCQUNLVVAgKi8K Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgorSW5jcmVtZW50cyB0aGUgYnVmZmVyZml4IGNvdW50LiAqLworVU5J Vl9JTkxJTkUKK3ZvaWQKK2J1Zl9ibG9ja19idWZfZml4X2luY19mdW5jKAorLyo9PT09PT09PT09 PT09PT09PT09PT09PSovCisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisJY29uc3QgY2hhcioJZmls ZSwJLyohPCBpbjogZmlsZSBuYW1lICovCisJdWxpbnQJCWxpbmUsCS8qITwgaW46IGxpbmUgKi8K KyNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KKwlidWZfYmxvY2tfdCoJYmxvY2spCS8qITwg aW4vb3V0OiBibG9jayB0byBidWZmZXJmaXggKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7 CisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisvKiogSW5jcmVtZW50cyB0aGUgYnVmZmVyZml4IGNv dW50LgorQHBhcmFtIGIJaW4vb3V0OiBibG9jayB0byBidWZmZXJmaXgKK0BwYXJhbSBmCWluOiBm aWxlIG5hbWUgd2hlcmUgcmVxdWVzdGVkCitAcGFyYW0gbAlpbjogbGluZSBudW1iZXIgd2hlcmUg cmVxdWVzdGVkICovCisjIGRlZmluZSBidWZfYmxvY2tfYnVmX2ZpeF9pbmMoYixmLGwpIGJ1Zl9i bG9ja19idWZfZml4X2luY19mdW5jKGYsbCxiKQorI2Vsc2UgLyogVU5JVl9TWU5DX0RFQlVHICov CisvKiogSW5jcmVtZW50cyB0aGUgYnVmZmVyZml4IGNvdW50LgorQHBhcmFtIGIJaW4vb3V0OiBi bG9jayB0byBidWZmZXJmaXgKK0BwYXJhbSBmCWluOiBmaWxlIG5hbWUgd2hlcmUgcmVxdWVzdGVk CitAcGFyYW0gbAlpbjogbGluZSBudW1iZXIgd2hlcmUgcmVxdWVzdGVkICovCisjIGRlZmluZSBi dWZfYmxvY2tfYnVmX2ZpeF9pbmMoYixmLGwpIGJ1Zl9ibG9ja19idWZfZml4X2luY19mdW5jKGIp CisjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBDYWxjdWxh dGVzIGEgcGFnZSBjaGVja3N1bSB3aGljaCBpcyBzdG9yZWQgdG8gdGhlIHBhZ2Ugd2hlbiBpdCBp cyB3cml0dGVuCiB0byBhIGZpbGUuIE5vdGUgdGhhdCB3ZSBtdXN0IGJlIGNhcmVmdWwgdG8gY2Fs Y3VsYXRlIHRoZSBzYW1lIHZhbHVlCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL2J1ZjBidWYuaWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYw YnVmLmljCXJldmlkOmpvcmdlbi5sb2xhbmRAb3JhY2xlLmNvbS0yMDExMDYxNjA2MzAxNi1qOTJq ZDhjZ3hrMXp4MWNnCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwYnVmLmljCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpjcDVscmdwNGd3 M3AKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChj KSAxOTk1LCAyMDEwLCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdo dCAoYykgMTk5NSwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0 cyBSZXNlcnZlZC4KIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4KIAogUG9ydGlvbnMg b2YgdGhpcyBmaWxlIGNvbnRhaW4gbW9kaWZpY2F0aW9ucyBjb250cmlidXRlZCBhbmQgY29weXJp Z2h0ZWQgYnkKQEAgLTkwOSwxOSArOTA5LDYgQEAgYnVmX2Jsb2NrX2J1Zl9maXhfaW5jX2Z1bmMo CiAKIAlibG9jay0+cGFnZS5idWZfZml4X2NvdW50Kys7CiB9Ci0jaWZkZWYgVU5JVl9TWU5DX0RF QlVHCi0vKiogSW5jcmVtZW50cyB0aGUgYnVmZmVyZml4IGNvdW50LgotQHBhcmFtIGIJaW4vb3V0 OiBibG9jayB0byBidWZmZXJmaXgKLUBwYXJhbSBmCWluOiBmaWxlIG5hbWUgd2hlcmUgcmVxdWVz dGVkCi1AcGFyYW0gbAlpbjogbGluZSBudW1iZXIgd2hlcmUgcmVxdWVzdGVkICovCi0jIGRlZmlu ZSBidWZfYmxvY2tfYnVmX2ZpeF9pbmMoYixmLGwpIGJ1Zl9ibG9ja19idWZfZml4X2luY19mdW5j KGYsbCxiKQotI2Vsc2UgLyogVU5JVl9TWU5DX0RFQlVHICovCi0vKiogSW5jcmVtZW50cyB0aGUg YnVmZmVyZml4IGNvdW50LgotQHBhcmFtIGIJaW4vb3V0OiBibG9jayB0byBidWZmZXJmaXgKLUBw YXJhbSBmCWluOiBmaWxlIG5hbWUgd2hlcmUgcmVxdWVzdGVkCi1AcGFyYW0gbAlpbjogbGluZSBu dW1iZXIgd2hlcmUgcmVxdWVzdGVkICovCi0jIGRlZmluZSBidWZfYmxvY2tfYnVmX2ZpeF9pbmMo YixmLGwpIGJ1Zl9ibG9ja19idWZfZml4X2luY19mdW5jKGIpCi0jZW5kaWYgLyogVU5JVl9TWU5D X0RFQlVHICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogRGVjcmVtZW50cyB0aGUgYnVmZmVyZml4IGNv dW50LiAqLwpAQCAtMTI3MCw3ICsxMjU3LDcgQEAgYnVmX2Jsb2NrX2RiZ19hZGRfbGV2ZWwoCiAJ CQkJd2hlcmUgd2UgaGF2ZSBhY3F1aXJlZCBsYXRjaCAqLwogCXVsaW50CQlsZXZlbCkJLyohPCBp bjogbGF0Y2hpbmcgb3JkZXIgbGV2ZWwgKi8KIHsKLQlzeW5jX3RocmVhZF9hZGRfbGV2ZWwoJmJs b2NrLT5sb2NrLCBsZXZlbCk7CisJc3luY190aHJlYWRfYWRkX2xldmVsKCZibG9jay0+bG9jaywg bGV2ZWwsIEZBTFNFKTsKIH0KICNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFn ZTBjdXIuaWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMGN1ci5pYwlyZXZp ZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjMwMTYtajkyamQ4Y2d4azF6eDFj ZworKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFnZTBjdXIuaWMJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTI2MDktNHppemNwNWxyZ3A0Z3czcApAQCAtMSw2 ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTQsIDIw MDksIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk0 LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVk LgogCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKQEAgLTI3LDYg KzI3LDggQEAgQ3JlYXRlZCAxMC80LzE5OTQgSGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAiYnVmMHR5 cGVzLmgiCiAKICNpZmRlZiBVTklWX0RFQlVHCisjIGluY2x1ZGUgInJlbTBjbXAuaCIKKwogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKIEdldHMgcG9pbnRlciB0byB0aGUgcGFnZSBmcmFtZSB3aGVyZSB0aGUgY3Vyc29yIGlzIHBv c2l0aW9uZWQuCiBAcmV0dXJuCXBhZ2UgKi8KQEAgLTI2OCw2ICsyNzAsNyBAQCBwYWdlX2N1cl90 dXBsZV9pbnNlcnQoCiAJCQkJCSAgICAgIGluZGV4LCByZWMsIG9mZnNldHMsIG10cik7CiAJfQog CisJdXRfYWQoIXJlYyB8fCAhY21wX2R0dXBsZV9yZWModHVwbGUsIHJlYywgb2Zmc2V0cykpOwog CW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAJcmV0dXJuKHJlYyk7CiB9Cgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwcGFnZS5oJwotLS0gYS9zdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvcGFnZTBwYWdlLmgJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29t LTIwMTEwNjE2MDYzMDE2LWo5MmpkOGNneGsxengxY2cKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL3BhZ2UwcGFnZS5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2 MDkyNjA5LTR6aXpjcDVscmdwNGd3M3AKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk0LCAyMDA5LCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0 cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMg YWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIK IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC0yODQsMTYgKzI4NCw0MiBAQCBwYWdlX2dldF9zdXBy ZW11bV9vZmZzZXQoCiAJY29uc3QgcGFnZV90KglwYWdlKTsJLyohPCBpbjogcGFnZSB3aGljaCBt dXN0IGhhdmUgcmVjb3JkKHMpICovCiAjZGVmaW5lIHBhZ2VfZ2V0X2luZmltdW1fcmVjKHBhZ2Up ICgocGFnZSkgKyBwYWdlX2dldF9pbmZpbXVtX29mZnNldChwYWdlKSkKICNkZWZpbmUgcGFnZV9n ZXRfc3VwcmVtdW1fcmVjKHBhZ2UpICgocGFnZSkgKyBwYWdlX2dldF9zdXByZW11bV9vZmZzZXQo cGFnZSkpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCi1SZXR1cm5zIHRoZSBtaWRkbGUgcmVjb3JkIG9mIHJlY29yZCBs aXN0LiBJZiB0aGVyZSBhcmUgYW4gZXZlbiBudW1iZXIKLW9mIHJlY29yZHMgaW4gdGhlIGxpc3Qs IHJldHVybnMgdGhlIGZpcnN0IHJlY29yZCBvZiB1cHBlciBoYWxmLWxpc3QuCi1AcmV0dXJuCW1p ZGRsZSByZWNvcmQgKi8KK1JldHVybnMgdGhlIG50aCByZWNvcmQgb2YgdGhlIHJlY29yZCBsaXN0 LgorVGhpcyBpcyB0aGUgaW52ZXJzZSBmdW5jdGlvbiBvZiBwYWdlX3JlY19nZXRfbl9yZWNzX2Jl Zm9yZSgpLgorQHJldHVybgludGggcmVjb3JkICovCiBVTklWX0lOVEVSTgorY29uc3QgcmVjX3Qq CitwYWdlX3JlY19nZXRfbnRoX2NvbnN0KAorLyo9PT09PT09PT09PT09PT09PT09Ki8KKwljb25z dCBwYWdlX3QqCXBhZ2UsCS8qITwgaW46IHBhZ2UgKi8KKwl1bGludAkJbnRoKQkvKiE8IGluOiBu dGggcmVjb3JkICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0 KSk7CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgorUmV0dXJucyB0aGUgbnRoIHJlY29yZCBvZiB0aGUgcmVjb3JkIGxpc3Qu CitUaGlzIGlzIHRoZSBpbnZlcnNlIGZ1bmN0aW9uIG9mIHBhZ2VfcmVjX2dldF9uX3JlY3NfYmVm b3JlKCkuCitAcmV0dXJuCW50aCByZWNvcmQgKi8KK1VOSVZfSU5MSU5FCityZWNfdCoKK3BhZ2Vf cmVjX2dldF9udGgoCisvKj09PT09PT09PT09PT0qLworCXBhZ2VfdCoJcGFnZSwJLyo8IGluOiBw YWdlICovCisJdWxpbnQJbnRoKQkvKiE8IGluOiBudGggcmVjb3JkICovCisJX19hdHRyaWJ1dGVf Xygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CisKKyNpZm5kZWYgVU5JVl9IT1RCQUNL VVAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovLyoqCitSZXR1cm5zIHRoZSBtaWRkbGUgcmVjb3JkIG9mIHRoZSByZWNvcmRzIG9u IHRoZSBwYWdlLiBJZiB0aGVyZSBpcyBhbgorZXZlbiBudW1iZXIgb2YgcmVjb3JkcyBpbiB0aGUg bGlzdCwgcmV0dXJucyB0aGUgZmlyc3QgcmVjb3JkIG9mIHRoZQordXBwZXIgaGFsZi1saXN0Lgor QHJldHVybgltaWRkbGUgcmVjb3JkICovCitVTklWX0lOTElORQogcmVjX3QqCiBwYWdlX2dldF9t aWRkbGVfcmVjKAogLyo9PT09PT09PT09PT09PT09Ki8KLQlwYWdlX3QqCXBhZ2UpOwkvKiE8IGlu OiBwYWdlICovCi0jaWZuZGVmIFVOSVZfSE9UQkFDS1VQCisJcGFnZV90KglwYWdlKQkvKiE8IGlu OiBwYWdlICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7 CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIENvbXBhcmVzIGEgZGF0YSB0dXBsZSB0byBhIHBoeXNpY2FsIHJlY29yZC4g RGlmZmVycyBmcm9tIHRoZSBmdW5jdGlvbgogY21wX2R0dXBsZV9yZWNfd2l0aF9tYXRjaCBpbiB0 aGUgd2F5IHRoYXQgdGhlIHJlY29yZCBtdXN0IHJlc2lkZSBvbiBhbgpAQCAtMzQ4LDYgKzM3NCw3 IEBAIHBhZ2VfZ2V0X25fcmVjcygKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBSZXR1cm5zIHRoZSBudW1iZXIgb2Yg cmVjb3JkcyBiZWZvcmUgdGhlIGdpdmVuIHJlY29yZCBpbiBjaGFpbi4KIFRoZSBudW1iZXIgaW5j bHVkZXMgaW5maW11bSBhbmQgc3VwcmVtdW0gcmVjb3Jkcy4KK1RoaXMgaXMgdGhlIGludmVyc2Ug ZnVuY3Rpb24gb2YgcGFnZV9yZWNfZ2V0X250aCgpLgogQHJldHVybgludW1iZXIgb2YgcmVjb3Jk cyAqLwogVU5JVl9JTlRFUk4KIHVsaW50Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL3BhZ2UwcGFnZS5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L3BhZ2UwcGFnZS5pYwlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjMw MTYtajkyamQ4Y2d4azF6eDFjZworKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFnZTBw YWdlLmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpj cDVscmdwNGd3M3AKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAotQ29w eXJpZ2h0IChjKSAxOTk0LCAyMDA5LCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K K0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4g QWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlCkBAIC00MTksNyArNDE5LDM3IEBAIHBhZ2VfcmVjX2lzX2luZmltdW0oCiAJcmV0 dXJuKHBhZ2VfcmVjX2lzX2luZmltdW1fbG93KHBhZ2Vfb2Zmc2V0KHJlYykpKTsKIH0KIAorLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKK1JldHVybnMgdGhlIG50aCByZWNvcmQgb2YgdGhlIHJlY29yZCBsaXN0LgorVGhpcyBp cyB0aGUgaW52ZXJzZSBmdW5jdGlvbiBvZiBwYWdlX3JlY19nZXRfbl9yZWNzX2JlZm9yZSgpLgor QHJldHVybgludGggcmVjb3JkICovCitVTklWX0lOTElORQorcmVjX3QqCitwYWdlX3JlY19nZXRf bnRoKAorLyo9PT09PT09PT09PT09Ki8KKwlwYWdlX3QqCXBhZ2UsCS8qITwgaW46IHBhZ2UgKi8K Kwl1bGludAludGgpCS8qITwgaW46IG50aCByZWNvcmQgKi8KK3sKKwlyZXR1cm4oKHJlY190Kikg cGFnZV9yZWNfZ2V0X250aF9jb25zdChwYWdlLCBudGgpKTsKK30KKwogI2lmbmRlZiBVTklWX0hP VEJBQ0tVUAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKK1JldHVybnMgdGhlIG1pZGRsZSByZWNvcmQgb2YgdGhlIHJlY29y ZHMgb24gdGhlIHBhZ2UuIElmIHRoZXJlIGlzIGFuCitldmVuIG51bWJlciBvZiByZWNvcmRzIGlu IHRoZSBsaXN0LCByZXR1cm5zIHRoZSBmaXJzdCByZWNvcmQgb2YgdGhlCit1cHBlciBoYWxmLWxp c3QuCitAcmV0dXJuCW1pZGRsZSByZWNvcmQgKi8KK1VOSVZfSU5MSU5FCityZWNfdCoKK3BhZ2Vf Z2V0X21pZGRsZV9yZWMoCisvKj09PT09PT09PT09PT09PT0qLworCXBhZ2VfdCoJcGFnZSkJLyoh PCBpbjogcGFnZSAqLworeworCXVsaW50CW1pZGRsZSA9IChwYWdlX2dldF9uX3JlY3MocGFnZSkg KyBQQUdFX0hFQVBfTk9fVVNFUl9MT1cpIC8gMjsKKworCXJldHVybihwYWdlX3JlY19nZXRfbnRo KHBhZ2UsIG1pZGRsZSkpOworfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIENvbXBhcmVzIGEgZGF0YSB0dXBsZSB0 byBhIHBoeXNpY2FsIHJlY29yZC4gRGlmZmVycyBmcm9tIHRoZSBmdW5jdGlvbgogY21wX2R0dXBs ZV9yZWNfd2l0aF9tYXRjaCBpbiB0aGUgd2F5IHRoYXQgdGhlIHJlY29yZCBtdXN0IHJlc2lkZSBv biBhbgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVj LmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVjLmgJcmV2aWQ6am9yZ2Vu LmxvbGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYzMDE2LWo5MmpkOGNneGsxengxY2cKKysrIGIv c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JlbTByZWMuaAlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDExMDYxNjA5MjYwOS00eml6Y3A1bHJncDRndzNwCkBAIC00ODAsNyArNDgwLDcg QEAgdWxpbnQKIHJlY19vZmZzX2FueV9leHRlcm4oCiAvKj09PT09PT09PT09PT09PT0qLwogCWNv bnN0IHVsaW50KglvZmZzZXRzKTsvKiE8IGluOiBhcnJheSByZXR1cm5lZCBieSByZWNfZ2V0X29m ZnNldHMoKSAqLwotI2lmZGVmIFVOSVZfQkxPQl9OVUxMX0RFQlVHCisjaWYgZGVmaW5lZCBVTklW X0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogRGV0ZXJtaW5lIGlm IHRoZSBvZmZzZXRzIGFyZSBmb3IgYSByZWNvcmQgY29udGFpbmluZyBudWxsIEJMT0IgcG9pbnRl cnMuCiBAcmV0dXJuCWZpcnN0IGZpZWxkIGNvbnRhaW5pbmcgYSBudWxsIEJMT0IgcG9pbnRlciwg b3IgTlVMTCBpZiBub25lIGZvdW5kICovCkBAIC00OTEsNyArNDkxLDcgQEAgcmVjX29mZnNfYW55 X251bGxfZXh0ZXJuKAogCWNvbnN0IHJlY190KglyZWMsCQkvKiE8IGluOiByZWNvcmQgKi8KIAlj b25zdCB1bGludCoJb2Zmc2V0cykJLyohPCBpbjogcmVjX2dldF9vZmZzZXRzKHJlYykgKi8KIAlf X2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKLSNlbmRpZiAvKiBV TklWX0JMT0JfTlVMTF9ERUJVRyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9C X0xJR0hUX0RFQlVHICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgogUmV0dXJucyBub256ZXJvIGlmIHRoZSBleHRlcm4gYml0IGlz IHNldCBpbiBudGggZmllbGQgb2YgcmVjLgogQHJldHVybglub256ZXJvIGlmIGV4dGVybmFsbHkg c3RvcmVkICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3Jl bTByZWMuaWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVjLmljCXJldmlk Ompvcmdlbi5sb2xhbmRAb3JhY2xlLmNvbS0yMDExMDYxNjA2MzAxNi1qOTJqZDhjZ3hrMXp4MWNn CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVjLmljCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpjcDVscmdwNGd3M3AKQEAgLTEwODgs NyArMTA4OCw3IEBAIHJlY19vZmZzX2FueV9leHRlcm4oCiAJcmV0dXJuKFVOSVZfVU5MSUtFTFko KnJlY19vZmZzX2Jhc2Uob2Zmc2V0cykgJiBSRUNfT0ZGU19FWFRFUk5BTCkpOwogfQogCi0jaWZk ZWYgVU5JVl9CTE9CX05VTExfREVCVUcKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5l ZCBVTklWX0JMT0JfTElHSFRfREVCVUcKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBEZXRlcm1pbmUgaWYgdGhlIG9mZnNldHMgYXJl IGZvciBhIHJlY29yZCBjb250YWluaW5nIG51bGwgQkxPQiBwb2ludGVycy4KIEByZXR1cm4JZmly c3QgZmllbGQgY29udGFpbmluZyBhIG51bGwgQkxPQiBwb2ludGVyLCBvciBOVUxMIGlmIG5vbmUg Zm91bmQgKi8KQEAgLTExMjQsNyArMTEyNCw3IEBAIHJlY19vZmZzX2FueV9udWxsX2V4dGVybigK IAogCXJldHVybihOVUxMKTsKIH0KLSNlbmRpZiAvKiBVTklWX0JMT0JfTlVMTF9ERUJVRyAqLwor I2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJR0hUX0RFQlVHICovCiAKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBS ZXR1cm5zIG5vbnplcm8gaWYgdGhlIGV4dGVybiBiaXQgaXMgc2V0IGluIG50aCBmaWVsZCBvZiBy ZWMuCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3N5bmMwcncu aWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHJ3LmljCXJldmlkOmpvcmdl bi5sb2xhbmRAb3JhY2xlLmNvbS0yMDExMDYxNjA2MzAxNi1qOTJqZDhjZ3hrMXp4MWNnCisrKyBi L3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHJ3LmljCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpjcDVscmdwNGd3M3AKQEAgLTEsNiArMSw2IEBA CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk1LCAyMDA5LCBJbm5v YmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NSwgMjAxMSwg T3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIENvcHly aWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4KIAogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGNvbnRh aW4gbW9kaWZpY2F0aW9ucyBjb250cmlidXRlZCBhbmQgY29weXJpZ2h0ZWQgYnkKQEAgLTYwMywx NiArNjAzLDE2IEBAIHJ3X2xvY2tfeF91bmxvY2tfZGlyZWN0KAogCiAJdXRfYWQoKGxvY2stPmxv Y2tfd29yZCAlIFhfTE9DS19ERUNSKSA9PSAwKTsKIAotI2lmZGVmIFVOSVZfU1lOQ19ERUJVRwot CXJ3X2xvY2tfcmVtb3ZlX2RlYnVnX2luZm8obG9jaywgMCwgUldfTE9DS19FWCk7Ci0jZW5kaWYK LQogCWlmIChsb2NrLT5sb2NrX3dvcmQgPT0gMCkgewogCQlsb2NrLT5yZWN1cnNpdmUgPSBGQUxT RTsKIAkJVU5JVl9NRU1fSU5WQUxJRCgmbG9jay0+d3JpdGVyX3RocmVhZCwKIAkJCQkgc2l6ZW9m IGxvY2stPndyaXRlcl90aHJlYWQpOwogCX0KIAorI2lmZGVmIFVOSVZfU1lOQ19ERUJVRworCXJ3 X2xvY2tfcmVtb3ZlX2RlYnVnX2luZm8obG9jaywgMCwgUldfTE9DS19FWCk7CisjZW5kaWYKKwog CWxvY2stPmxvY2tfd29yZCArPSBYX0xPQ0tfREVDUjsKIAogCXV0X2FkKCFsb2NrLT53YWl0ZXJz KTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvc3luYzBzeW5j LmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHN5bmMuaAlyZXZpZDpqb3Jn ZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjMwMTYtajkyamQ4Y2d4azF6eDFjZworKysg Yi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvc3luYzBzeW5jLmgJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMTA2MTYwOTI2MDktNHppemNwNWxyZ3A0Z3czcApAQCAtNDA3LDggKzQw NywxMCBAQCB2b2lkCiBzeW5jX3RocmVhZF9hZGRfbGV2ZWwoCiAvKj09PT09PT09PT09PT09PT09 PSovCiAJdm9pZCoJbGF0Y2gsCS8qITwgaW46IHBvaW50ZXIgdG8gYSBtdXRleCBvciBhbiBydy1s b2NrICovCi0JdWxpbnQJbGV2ZWwpOwkvKiE8IGluOiBsZXZlbCBpbiB0aGUgbGF0Y2hpbmcgb3Jk ZXI7IGlmCisJdWxpbnQJbGV2ZWwsCS8qITwgaW46IGxldmVsIGluIHRoZSBsYXRjaGluZyBvcmRl cjsgaWYKIAkJCVNZTkNfTEVWRUxfVkFSWUlORywgbm90aGluZyBpcyBkb25lICovCisJaWJvb2wJ cmVsb2NrKQkvKiE8IGluOiBUUlVFIGlmIHJlLWVudGVyaW5nIGFuIHgtbG9jayAqLworCV9fYXR0 cmlidXRlX18oKG5vbm51bGwpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBSZW1vdmVzIGEgbGF0Y2ggZnJv bSB0aGUgdGhyZWFkIGxldmVsIGFycmF5IGlmIGl0IGlzIGZvdW5kIHRoZXJlLgogQHJldHVybiBU UlVFIGlmIGZvdW5kIGluIHRoZSBhcnJheTsgaXQgaXMgbm8gZXJyb3IgaWYgdGhlIGxhdGNoIGlz Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3VuaXYuaScKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3VuaXYuaQlyZXZpZDpqb3JnZW4ubG9sYW5kQG9y YWNsZS5jb20tMjAxMTA2MTYwNjMwMTYtajkyamQ4Y2d4azF6eDFjZworKysgYi9zdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvdW5pdi5pCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEw NjE2MDkyNjA5LTR6aXpjcDVscmdwNGd3M3AKQEAgLTIsNyArMiw2IEBACiAKIENvcHlyaWdodCAo YykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBS ZXNlcnZlZC4KIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4KLUNvcHlyaWdodCAoYykg MjAwOSwgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLgogCiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgY29u dGFpbiBtb2RpZmljYXRpb25zIGNvbnRyaWJ1dGVkIGFuZCBjb3B5cmlnaHRlZCBieQogR29vZ2xl LCBJbmMuIFRob3NlIG1vZGlmaWNhdGlvbnMgYXJlIGdyYXRlZnVsbHkgYWNrbm93bGVkZ2VkIGFu ZCBhcmUgZGVzY3JpYmVkCkBAIC0xOTEsOCArMTkwLDYgQEAgY29tbWFuZC4gTm90IHRlc3RlZCBv biBXaW5kb3dzLiAqLwogCQkJCQkJZGVidWdnaW5nIHdpdGhvdXQgVU5JVl9ERUJVRyAqLwogI2Rl ZmluZSBVTklWX0JMT0JfTElHSFRfREVCVUcJCQkvKiBFbmFibGUgb2ZmLXBhZ2UgY29sdW1uCiAJ CQkJCQlkZWJ1Z2dpbmcgd2l0aG91dCBVTklWX0RFQlVHICovCi0jZGVmaW5lIFVOSVZfQkxPQl9O VUxMX0RFQlVHCQkJLyogRW5hYmxlIGRlZXAgb2ZmLXBhZ2UKLQkJCQkJCWNvbHVtbiBkZWJ1Z2dp bmcgKi8KICNkZWZpbmUgVU5JVl9ERUJVRwkJCQkvKiBFbmFibGUgdXRfYWQoKSBhc3NlcnRpb25z CiAJCQkJCQlhbmQgZGlzYWJsZSBVTklWX0lOTElORSAqLwogI2RlZmluZSBVTklWX0RFQlVHX0xP Q0tfVkFMSURBVEUJCS8qIEVuYWJsZQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jh c2UvcGFnZS9wYWdlMGN1ci5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBjdXIu YwlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjMwMTYtajkyamQ4Y2d4 azF6eDFjZworKysgYi9zdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBjdXIuYwlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjA5MjYwOS00eml6Y3A1bHJncDRndzNwCkBAIC0x LDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NCwg MjAwOSwgSW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5 OTQsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2 ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMTE4 MCwxNCArMTE4MCwxNSBAQCBwYWdlX2N1cl9pbnNlcnRfcmVjX3ppcF9yZW9yZygKIAkvKiBCZWZv cmUgdHJ5aW5nIHRvIHJlb3JnYW5pemUgdGhlIHBhZ2UsCiAJc3RvcmUgdGhlIG51bWJlciBvZiBw cmVjZWRpbmcgcmVjb3JkcyBvbiB0aGUgcGFnZS4gKi8KIAlwb3MgPSBwYWdlX3JlY19nZXRfbl9y ZWNzX2JlZm9yZShyZWMpOworCXV0X2FkKHBvcyA+IDApOwogCiAJaWYgKHBhZ2VfemlwX3Jlb3Jn YW5pemUoYmxvY2ssIGluZGV4LCBtdHIpKSB7CiAJCS8qIFRoZSBwYWdlIHdhcyByZW9yZ2FuaXpl ZDogRmluZCByZWMgYnkgc2Vla2luZyB0byBwb3MsCiAJCWFuZCB1cGRhdGUgKmN1cnJlbnRfcmVj LiAqLwotCQlyZWMgPSBwYWdlICsgUEFHRV9ORVdfSU5GSU1VTTsKLQotCQl3aGlsZSAoLS1wb3Mp IHsKLQkJCXJlYyA9IHBhZ2UgKyByZWNfZ2V0X25leHRfb2ZmcyhyZWMsIFRSVUUpOworCQlpZiAo cG9zID4gMSkgeworCQkJcmVjID0gcGFnZV9yZWNfZ2V0X250aChwYWdlLCBwb3MgLSAxKTsKKwkJ fSBlbHNlIHsKKwkJCXJlYyA9IHBhZ2UgKyBQQUdFX05FV19JTkZJTVVNOwogCQl9CiAKIAkJKmN1 cnJlbnRfcmVjID0gcmVjOwpAQCAtMTI4Myw2ICsxMjg0LDEyIEBAIHBhZ2VfY3VyX2luc2VydF9y ZWNfemlwKAogCQkJaW5zZXJ0X3JlYyA9IHBhZ2VfY3VyX2luc2VydF9yZWNfemlwX3Jlb3JnKAog CQkJCWN1cnJlbnRfcmVjLCBibG9jaywgaW5kZXgsIGluc2VydF9yZWMsCiAJCQkJcGFnZSwgcGFn ZV96aXAsIG10cik7CisjaWZkZWYgVU5JVl9ERUJVRworCQkJaWYgKGluc2VydF9yZWMpIHsKKwkJ CQlyZWNfb2Zmc19tYWtlX3ZhbGlkKAorCQkJCQlpbnNlcnRfcmVjLCBpbmRleCwgb2Zmc2V0cyk7 CisJCQl9CisjZW5kaWYgLyogVU5JVl9ERUJVRyAqLwogCQl9CiAKIAkJcmV0dXJuKGluc2VydF9y ZWMpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHBhZ2Uu YycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwcGFnZS5jCXJldmlkOmpvcmdlbi5s b2xhbmRAb3JhY2xlLmNvbS0yMDExMDYxNjA2MzAxNi1qOTJqZDhjZ3hrMXp4MWNnCisrKyBiL3N0 b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHBhZ2UuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMDYxNjA5MjYwOS00eml6Y3A1bHJncDRndzNwCkBAIC0xLDYgKzEsNiBAQAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NCwgMjAxMCwgSW5ub2Jhc2Ug T3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTQsIDIwMTEsIE9yYWNs ZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMTQ2NSw1NSArMTQ2NSw1NCBA QCBwYWdlX2Rpcl9iYWxhbmNlX3Nsb3QoCiAJfQogfQogCi0jaWZuZGVmIFVOSVZfSE9UQkFDS1VQ CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLy8qKgotUmV0dXJucyB0aGUgbWlkZGxlIHJlY29yZCBvZiB0aGUgcmVjb3JkIGxpc3Qu IElmIHRoZXJlIGFyZSBhbiBldmVuIG51bWJlcgotb2YgcmVjb3JkcyBpbiB0aGUgbGlzdCwgcmV0 dXJucyB0aGUgZmlyc3QgcmVjb3JkIG9mIHRoZSB1cHBlciBoYWxmLWxpc3QuCi1AcmV0dXJuCW1p ZGRsZSByZWNvcmQgKi8KK1JldHVybnMgdGhlIG50aCByZWNvcmQgb2YgdGhlIHJlY29yZCBsaXN0 LgorVGhpcyBpcyB0aGUgaW52ZXJzZSBmdW5jdGlvbiBvZiBwYWdlX3JlY19nZXRfbl9yZWNzX2Jl Zm9yZSgpLgorQHJldHVybgludGggcmVjb3JkICovCiBVTklWX0lOVEVSTgotcmVjX3QqCi1wYWdl X2dldF9taWRkbGVfcmVjKAotLyo9PT09PT09PT09PT09PT09Ki8KLQlwYWdlX3QqCXBhZ2UpCS8q ITwgaW46IHBhZ2UgKi8KK2NvbnN0IHJlY190KgorcGFnZV9yZWNfZ2V0X250aF9jb25zdCgKKy8q PT09PT09PT09PT09PT09PT09PSovCisJY29uc3QgcGFnZV90KglwYWdlLAkvKiE8IGluOiBwYWdl ICovCisJdWxpbnQJCW50aCkJLyohPCBpbjogbnRoIHJlY29yZCAqLwogewotCXBhZ2VfZGlyX3Ns b3RfdCoJc2xvdDsKLQl1bGludAkJCW1pZGRsZTsKKwljb25zdCBwYWdlX2Rpcl9zbG90X3QqCXNs b3Q7CiAJdWxpbnQJCQlpOwogCXVsaW50CQkJbl9vd25lZDsKLQl1bGludAkJCWNvdW50OwotCXJl Y190KgkJCXJlYzsKLQotCS8qIFRoaXMgbWFueSByZWNvcmRzIHdlIG11c3QgbGVhdmUgYmVoaW5k ICovCi0JbWlkZGxlID0gKHBhZ2VfZ2V0X25fcmVjcyhwYWdlKSArIFBBR0VfSEVBUF9OT19VU0VS X0xPVykgLyAyOworCWNvbnN0IHJlY190KgkJcmVjOwogCi0JY291bnQgPSAwOworCXV0X2FkKG50 aCA8IFVOSVZfUEFHRV9TSVpFIC8gKFJFQ19OX05FV19FWFRSQV9CWVRFUyArIDEpKTsKIAogCWZv ciAoaSA9IDA7OyBpKyspIHsKIAogCQlzbG90ID0gcGFnZV9kaXJfZ2V0X250aF9zbG90KHBhZ2Us IGkpOwogCQluX293bmVkID0gcGFnZV9kaXJfc2xvdF9nZXRfbl9vd25lZChzbG90KTsKIAotCQlp ZiAoY291bnQgKyBuX293bmVkID4gbWlkZGxlKSB7CisJCWlmIChuX293bmVkID4gbnRoKSB7CiAJ CQlicmVhazsKIAkJfSBlbHNlIHsKLQkJCWNvdW50ICs9IG5fb3duZWQ7CisJCQludGggLT0gbl9v d25lZDsKIAkJfQogCX0KIAogCXV0X2FkKGkgPiAwKTsKIAlzbG90ID0gcGFnZV9kaXJfZ2V0X250 aF9zbG90KHBhZ2UsIGkgLSAxKTsKLQlyZWMgPSAocmVjX3QqKSBwYWdlX2Rpcl9zbG90X2dldF9y ZWMoc2xvdCk7Ci0JcmVjID0gcGFnZV9yZWNfZ2V0X25leHQocmVjKTsKKwlyZWMgPSBwYWdlX2Rp cl9zbG90X2dldF9yZWMoc2xvdCk7CiAKLQkvKiBUaGVyZSBhcmUgbm93IGNvdW50IHJlY29yZHMg YmVoaW5kIHJlYyAqLwotCi0JZm9yIChpID0gMDsgaSA8IG1pZGRsZSAtIGNvdW50OyBpKyspIHsK LQkJcmVjID0gcGFnZV9yZWNfZ2V0X25leHQocmVjKTsKKwlpZiAocGFnZV9pc19jb21wKHBhZ2Up KSB7CisJCWRvIHsKKwkJCXJlYyA9IHBhZ2VfcmVjX2dldF9uZXh0X2xvdyhyZWMsIFRSVUUpOwor CQkJdXRfYWQocmVjKTsKKwkJfSB3aGlsZSAobnRoLS0pOworCX0gZWxzZSB7CisJCWRvIHsKKwkJ CXJlYyA9IHBhZ2VfcmVjX2dldF9uZXh0X2xvdyhyZWMsIEZBTFNFKTsKKwkJCXV0X2FkKHJlYyk7 CisJCX0gd2hpbGUgKG50aC0tKTsKIAl9CiAKIAlyZXR1cm4ocmVjKTsKIH0KLSNlbmRpZiAvKiAh VU5JVl9IT1RCQUNLVVAgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFJldHVybnMgdGhlIG51bWJlciBvZiBy ZWNvcmRzIGJlZm9yZSB0aGUgZ2l2ZW4gcmVjb3JkIGluIGNoYWluLgpAQCAtMTU3NSw2ICsxNTc0 LDcgQEAgcGFnZV9yZWNfZ2V0X25fcmVjc19iZWZvcmUoCiAJbi0tOwogCiAJdXRfYWQobiA+PSAw KTsKKwl1dF9hZChuIDwgVU5JVl9QQUdFX1NJWkUgLyAoUkVDX05fTkVXX0VYVFJBX0JZVEVTICsg MSkpOwogCiAJcmV0dXJuKCh1bGludCkgbik7CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFn ZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cw aW5zLmMJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYzMDE2LWo5Mmpk OGNneGsxengxY2cKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpjcDVscmdwNGd3M3AKQEAg LTM0Miw5ICszNDIsOSBAQCByb3dfaW5zX2NsdXN0X2luZGV4X2VudHJ5X2J5X21vZGlmeSgKIAkJ CXJldHVybihEQl9MT0NLX1RBQkxFX0ZVTEwpOwogCiAJCX0KLQkJZXJyID0gYnRyX2N1cl9wZXNz aW1pc3RpY191cGRhdGUoMCwgY3Vyc29yLAotCQkJCQkJIGhlYXAsIGJpZ19yZWMsIHVwZGF0ZSwK LQkJCQkJCSAwLCB0aHIsIG10cik7CisJCWVyciA9IGJ0cl9jdXJfcGVzc2ltaXN0aWNfdXBkYXRl KAorCQkJQlRSX0tFRVBfUE9TX0ZMQUcsIGN1cnNvciwgaGVhcCwgYmlnX3JlYywgdXBkYXRlLAor CQkJMCwgdGhyLCBtdHIpOwogCX0KIAogCXJldHVybihlcnIpOwpAQCAtMTk4Miw2ICsxOTgyLDgg QEAgcm93X2luc19pbmRleF9lbnRyeV9sb3coCiAJdWxpbnQJCXNlYXJjaF9tb2RlOwogCWlib29s CQltb2RpZnkJCQk9IEZBTFNFOwogCXJlY190KgkJaW5zZXJ0X3JlYzsKKwlyZWNfdCoJCXJlYzsK Kwl1bGludCoJCW9mZnNldHM7CiAJdWxpbnQJCWVycjsKIAl1bGludAkJbl91bmlxdWU7CiAJYmln X3JlY190KgliaWdfcmVjCQkJPSBOVUxMOwpAQCAtMjA4Myw2ICsyMDg1LDQyIEBAIHJvd19pbnNf aW5kZXhfZW50cnlfbG93KAogCQkJZXJyID0gcm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9ieV9t b2RpZnkoCiAJCQkJbW9kZSwgJmN1cnNvciwgJmhlYXAsICZiaWdfcmVjLCBlbnRyeSwKIAkJCQl0 aHIsICZtdHIpOworCisJCQlpZiAoYmlnX3JlYykgeworCQkJCXV0X2EoZXJyID09IERCX1NVQ0NF U1MpOworCQkJCS8qIFdyaXRlIG91dCB0aGUgZXh0ZXJuYWxseSBzdG9yZWQKKwkJCQljb2x1bW5z IHdoaWxlIHN0aWxsIHgtbGF0Y2hpbmcKKwkJCQlpbmRleC0+bG9jayBhbmQgYmxvY2stPmxvY2su IFdlIGhhdmUKKwkJCQl0byBtdHJfY29tbWl0KG10cikgZmlyc3QsIHNvIHRoYXQgdGhlCisJCQkJ cmVkbyBsb2cgd2lsbCBiZSB3cml0dGVuIGluIHRoZQorCQkJCWNvcnJlY3Qgb3JkZXIuIE90aGVy d2lzZSwgd2Ugd291bGQgcnVuCisJCQkJaW50byB0cm91YmxlIG9uIGNyYXNoIHJlY292ZXJ5IGlm IG10cgorCQkJCWZyZWVkIEItdHJlZSBwYWdlcyBvbiB3aGljaCBzb21lIG9mCisJCQkJdGhlIGJp Z19yZWMgZmllbGRzIHdpbGwgYmUgd3JpdHRlbi4gKi8KKwkJCQlidHJfY3VyX210cl9jb21taXRf YW5kX3N0YXJ0KCZjdXJzb3IsICZtdHIpOworCisJCQkJcmVjID0gYnRyX2N1cl9nZXRfcmVjKCZj dXJzb3IpOworCQkJCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMoCisJCQkJCXJlYywgaW5kZXgs IE5VTEwsCisJCQkJCVVMSU5UX1VOREVGSU5FRCwgJmhlYXApOworCisJCQkJZXJyID0gYnRyX3N0 b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcygKKwkJCQkJaW5kZXgsIGJ0cl9jdXJfZ2V0X2Jsb2Nr KCZjdXJzb3IpLAorCQkJCQlyZWMsIG9mZnNldHMsICZtdHIsIEZBTFNFLCBiaWdfcmVjKTsKKwkJ CQkvKiBJZiB3cml0aW5nIGJpZ19yZWMgZmFpbHMgKGZvcgorCQkJCWV4YW1wbGUsIGJlY2F1c2Ug b2YgREJfT1VUX09GX0ZJTEVfU1BBQ0UpLAorCQkJCXRoZSByZWNvcmQgd2lsbCBiZSBjb3JydXB0 ZWQuIEV2ZW4gaWYKKwkJCQl3ZSBkaWQgbm90IHVwZGF0ZSBhbnkgZXh0ZXJuYWxseQorCQkJCXN0 b3JlZCBjb2x1bW5zLCBvdXIgdXBkYXRlIGNvdWxkIGNhdXNlCisJCQkJdGhlIHJlY29yZCB0byBn cm93IHNvIHRoYXQgYQorCQkJCW5vbi11cGRhdGVkIGNvbHVtbiB3YXMgc2VsZWN0ZWQgZm9yCisJ CQkJZXh0ZXJuYWwgc3RvcmFnZS4gVGhpcyBub24tdXBkYXRlCisJCQkJd291bGQgbm90IGhhdmUg YmVlbiB3cml0dGVuIHRvIHRoZQorCQkJCXVuZG8gbG9nLCBhbmQgdGh1cyB0aGUgcmVjb3JkIGNh bm5vdAorCQkJCWJlIHJvbGxlZCBiYWNrLiAqLworCQkJCXV0X2EoZXJyID09IERCX1NVQ0NFU1Mp OworCQkJCWdvdG8gc3RvcmVkX2JpZ19yZWM7CisJCQl9CiAJCX0gZWxzZSB7CiAJCQl1dF9hZCgh bl9leHQpOwogCQkJZXJyID0gcm93X2luc19zZWNfaW5kZXhfZW50cnlfYnlfbW9kaWZ5KApAQCAt MjExMSw4ICsyMTQ5LDYgQEAgZnVuY3Rpb25fZXhpdDoKIAltdHJfY29tbWl0KCZtdHIpOwogCiAJ aWYgKFVOSVZfTElLRUxZX05VTEwoYmlnX3JlYykpIHsKLQkJcmVjX3QqCXJlYzsKLQkJdWxpbnQq CW9mZnNldHM7CiAJCW10cl9zdGFydCgmbXRyKTsKIAogCQlidHJfY3VyX3NlYXJjaF90b19udGhf bGV2ZWwoaW5kZXgsIDAsIGVudHJ5LCBQQUdFX0NVUl9MRSwKQEAgLTIxMjYsNiArMjE2Miw3IEBA IGZ1bmN0aW9uX2V4aXQ6CiAJCQlpbmRleCwgYnRyX2N1cl9nZXRfYmxvY2soJmN1cnNvciksCiAJ CQlyZWMsIG9mZnNldHMsICZtdHIsIEZBTFNFLCBiaWdfcmVjKTsKIAorc3RvcmVkX2JpZ19yZWM6 CiAJCWlmIChtb2RpZnkpIHsKIAkJCWR0dXBsZV9iaWdfcmVjX2ZyZWUoYmlnX3JlYyk7CiAJCX0g ZWxzZSB7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHJvdy5j JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwcm93LmMJcmV2aWQ6am9yZ2VuLmxvbGFu ZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYzMDE2LWo5MmpkOGNneGsxengxY2cKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9yb3cvcm93MHJvdy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTEwNjE2MDkyNjA5LTR6aXpjcDVscmdwNGd3M3AKQEAgLTE5Miw2ICsxOTIsMTAgQEAgcm93X2J1 aWxkKAogCiAJdXRfYWQoaW5kZXggJiYgcmVjICYmIGhlYXApOwogCXV0X2FkKGRpY3RfaW5kZXhf aXNfY2x1c3QoaW5kZXgpKTsKKyNpZmRlZiBVTklWX1NZTkNfREVCVUcKKwl1dF9hZCghcndfbG9j a19vd24oJnRyeF9zeXMtPmxvY2ssIFJXX0xPQ0tfU0hBUkVEKSk7CisJdXRfYWQoIXJ3X2xvY2tf b3duKCZ0cnhfc3lzLT5sb2NrLCBSV19MT0NLX0VYKSk7CisjZW5kaWYgLyogVU5JVl9TWU5DX0RF QlVHICovCiAKIAlpZiAoIW9mZnNldHMpIHsKIAkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhy ZWMsIGluZGV4LCBvZmZzZXRzXywKQEAgLTIwMCwxMyArMjA0LDM1IEBAIHJvd19idWlsZCgKIAkJ dXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykpOwogCX0KIAotI2lm IDAgJiYgZGVmaW5lZCBVTklWX0JMT0JfTlVMTF9ERUJVRwotCS8qIFRoaXMgb25lIGNhbiBmYWls IGluIHRyeF9yb2xsYmFja19hY3RpdmUoKSBpZgotCXRoZSBzZXJ2ZXIgY3Jhc2hlZCBkdXJpbmcg YW4gaW5zZXJ0IGJlZm9yZSB0aGUKLQlidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKCkg ZGlkIG10cl9jb21taXQoKQotCWFsbCBCTE9CIHBvaW50ZXJzIHRvIHRoZSBjbHVzdGVyZWQgaW5k ZXggcmVjb3JkLiAqLwotCXV0X2EoIXJlY19vZmZzX2FueV9udWxsX2V4dGVybihyZWMsIG9mZnNl dHMpKTsKLSNlbmRpZiAvKiAwICYmIFVOSVZfQkxPQl9OVUxMX0RFQlVHICovCisjaWYgZGVmaW5l ZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCisJaWYgKFVOSVZf TElLRUxZX05VTEwocmVjX29mZnNfYW55X251bGxfZXh0ZXJuKHJlYywgb2Zmc2V0cykpKSB7CisJ CS8qIFRoaXMgY29uZGl0aW9uIGNhbiBvY2N1ciBkdXJpbmcgY3Jhc2ggcmVjb3ZlcnkgYmVmb3Jl CisJCXRyeF9yb2xsYmFja19hY3RpdmUoKSBoYXMgY29tcGxldGVkIGV4ZWN1dGlvbi4KKworCQlU aGlzIGNvbmRpdGlvbiBpcyBwb3NzaWJsZSBpZiB0aGUgc2VydmVyIGNyYXNoZWQKKwkJZHVyaW5n IGFuIGluc2VydCBvciB1cGRhdGUgYmVmb3JlCisJCWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9m aWVsZHMoKSBkaWQgbXRyX2NvbW1pdCgpIGFsbAorCQlCTE9CIHBvaW50ZXJzIHRvIHRoZSBjbHVz dGVyZWQgaW5kZXggcmVjb3JkLgorCisJCUxvb2sgdXAgdGhlIHRyYW5zYWN0aW9uIHRoYXQgaG9s ZHMgdGhlIGltcGxpY2l0IGxvY2sKKwkJb24gdGhpcyByZWNvcmQsIGFuZCBhc3NlcnQgdGhhdCBp dCB3YXMgcmVjb3ZlcmVkIChhbmQKKwkJd2lsbCBzb29uIGJlIHJvbGxlZCBiYWNrKS4gKi8KKwor CQl1bGludAkJdHJ4X2lkX3Bvcwk9IGRpY3RfaW5kZXhfZ2V0X3N5c19jb2xfcG9zKAorCQkJCWlu ZGV4LCBEQVRBX1RSWF9JRCk7CisJCXVsaW50CQlsZW47CisJCXRyeF9pZF90CXRyeF9pZAkJPSB0 cnhfcmVhZF90cnhfaWQoCisJCQlyZWNfZ2V0X250aF9maWVsZChyZWMsIG9mZnNldHMsIHRyeF9p ZF9wb3MsICZsZW4pKTsKKwkJY29uc3QgdHJ4X3QqCXRyeDsKKwkJdXRfYShsZW4gPT0gNik7CisK KwkJcndfbG9ja19zX2xvY2soJnRyeF9zeXMtPmxvY2spOworCQl0cnggPSB0cnhfZ2V0X29uX2lk KHRyeF9pZCk7CisJCXV0X2EodHJ4KTsKKwkJdXRfYSh0cngtPmlzX3JlY292ZXJlZCk7CisJCXJ3 X2xvY2tfc191bmxvY2soJnRyeF9zeXMtPmxvY2spOworCX0KKyNlbmRpZiAvKiBVTklWX0RFQlVH IHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLwogCiAJaWYgKHR5cGUgIT0gUk9XX0NPUFlfUE9J TlRFUlMpIHsKIAkJLyogVGFrZSBhIGNvcHkgb2YgcmVjIHRvIGhlYXAgKi8KQEAgLTM5MSwxMCAr NDE3LDEwIEBAIHJvd19yZWNfdG9faW5kZXhfZW50cnkoCiAJCXJlYyA9IHJlY19jb3B5KGJ1Ziwg cmVjLCBvZmZzZXRzKTsKIAkJLyogQXZvaWQgYSBkZWJ1ZyBhc3NlcnRpb24gaW4gcmVjX29mZnNf dmFsaWRhdGUoKS4gKi8KIAkJcmVjX29mZnNfbWFrZV92YWxpZChyZWMsIGluZGV4LCBvZmZzZXRz KTsKLSNpZmRlZiBVTklWX0JMT0JfTlVMTF9ERUJVRworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8 fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJVRwogCX0gZWxzZSB7CiAJCXV0X2EoIXJlY19v ZmZzX2FueV9udWxsX2V4dGVybihyZWMsIG9mZnNldHMpKTsKLSNlbmRpZiAvKiBVTklWX0JMT0Jf TlVMTF9ERUJVRyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJR0hUX0RF QlVHICovCiAJfQogCiAJZW50cnkgPSByb3dfcmVjX3RvX2luZGV4X2VudHJ5X2xvdyhyZWMsIGlu ZGV4LCBvZmZzZXRzLCBuX2V4dCwgaGVhcCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9p bm5vYmFzZS9yb3cvcm93MHVwZC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBk LmMJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYzMDE2LWo5MmpkOGNn eGsxengxY2cKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jCXJldmlkOm1hcmtv Lm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpjcDVscmdwNGd3M3AKQEAgLTE5 OTUsMjggKzE5OTUsNDMgQEAgcm93X3VwZF9jbHVzdF9yZWMoCiAJdXRfYWQoIXJlY19nZXRfZGVs ZXRlZF9mbGFnKGJ0cl9wY3VyX2dldF9yZWMocGN1ciksCiAJCQkJICAgIGRpY3RfdGFibGVfaXNf Y29tcChpbmRleC0+dGFibGUpKSk7CiAKLQllcnIgPSBidHJfY3VyX3Blc3NpbWlzdGljX3VwZGF0 ZShCVFJfTk9fTE9DS0lOR19GTEFHLCBidHJfY3VyLAotCQkJCQkgJmhlYXAsICZiaWdfcmVjLCBu b2RlLT51cGRhdGUsCi0JCQkJCSBub2RlLT5jbXBsX2luZm8sIHRociwgbXRyKTsKLQltdHJfY29t bWl0KG10cik7Ci0KLQlpZiAoZXJyID09IERCX1NVQ0NFU1MgJiYgYmlnX3JlYykgeworCWVyciA9 IGJ0cl9jdXJfcGVzc2ltaXN0aWNfdXBkYXRlKAorCQlCVFJfTk9fTE9DS0lOR19GTEFHIHwgQlRS X0tFRVBfUE9TX0ZMQUcsIGJ0cl9jdXIsCisJCSZoZWFwLCAmYmlnX3JlYywgbm9kZS0+dXBkYXRl LCBub2RlLT5jbXBsX2luZm8sIHRociwgbXRyKTsKKwlpZiAoYmlnX3JlYykgewogCQl1bGludAkJ b2Zmc2V0c19bUkVDX09GRlNfTk9STUFMX1NJWkVdOwogCQlyZWNfdCoJCXJlYzsKIAkJcmVjX29m ZnNfaW5pdChvZmZzZXRzXyk7CiAKLQkJbXRyX3N0YXJ0KG10cik7CisJCXV0X2EoZXJyID09IERC X1NVQ0NFU1MpOworCQkvKiBXcml0ZSBvdXQgdGhlIGV4dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMg d2hpbGUgc3RpbGwKKwkJeC1sYXRjaGluZyBpbmRleC0+bG9jayBhbmQgYmxvY2stPmxvY2suIFdl IGhhdmUgdG8KKwkJbXRyX2NvbW1pdChtdHIpIGZpcnN0LCBzbyB0aGF0IHRoZSByZWRvIGxvZyB3 aWxsIGJlCisJCXdyaXR0ZW4gaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIE90aGVyd2lzZSwgd2Ugd291 bGQgcnVuCisJCWludG8gdHJvdWJsZSBvbiBjcmFzaCByZWNvdmVyeSBpZiBtdHIgZnJlZWQgQi10 cmVlCisJCXBhZ2VzIG9uIHdoaWNoIHNvbWUgb2YgdGhlIGJpZ19yZWMgZmllbGRzIHdpbGwgYmUK KwkJd3JpdHRlbi4gKi8KKwkJYnRyX2N1cl9tdHJfY29tbWl0X2FuZF9zdGFydChidHJfY3VyLCBt dHIpOwogCi0JCXV0X2EoYnRyX3BjdXJfcmVzdG9yZV9wb3NpdGlvbihCVFJfTU9ESUZZX1RSRUUs IHBjdXIsIG10cikpOwogCQlyZWMgPSBidHJfY3VyX2dldF9yZWMoYnRyX2N1cik7CiAJCWVyciA9 IGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoCiAJCQlpbmRleCwgYnRyX2N1cl9nZXRf YmxvY2soYnRyX2N1ciksIHJlYywKIAkJCXJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBvZmZz ZXRzXywKIAkJCQkJVUxJTlRfVU5ERUZJTkVELCAmaGVhcCksCiAJCQltdHIsIFRSVUUsIGJpZ19y ZWMpOwotCQltdHJfY29tbWl0KG10cik7CisJCS8qIElmIHdyaXRpbmcgYmlnX3JlYyBmYWlscyAo Zm9yIGV4YW1wbGUsIGJlY2F1c2Ugb2YKKwkJREJfT1VUX09GX0ZJTEVfU1BBQ0UpLCB0aGUgcmVj b3JkIHdpbGwgYmUgY29ycnVwdGVkLgorCQlFdmVuIGlmIHdlIGRpZCBub3QgdXBkYXRlIGFueSBl eHRlcm5hbGx5IHN0b3JlZAorCQljb2x1bW5zLCBvdXIgdXBkYXRlIGNvdWxkIGNhdXNlIHRoZSBy ZWNvcmQgdG8gZ3JvdyBzbworCQl0aGF0IGEgbm9uLXVwZGF0ZWQgY29sdW1uIHdhcyBzZWxlY3Rl ZCBmb3IgZXh0ZXJuYWwKKwkJc3RvcmFnZS4gVGhpcyBub24tdXBkYXRlIHdvdWxkIG5vdCBoYXZl IGJlZW4gd3JpdHRlbgorCQl0byB0aGUgdW5kbyBsb2csIGFuZCB0aHVzIHRoZSByZWNvcmQgY2Fu bm90IGJlIHJvbGxlZAorCQliYWNrLiAqLworCQl1dF9hKGVyciA9PSBEQl9TVUNDRVNTKTsKIAl9 CiAKKwltdHJfY29tbWl0KG10cik7CisKIAlpZiAoVU5JVl9MSUtFTFlfTlVMTChoZWFwKSkgewog CQltZW1faGVhcF9mcmVlKGhlYXApOwogCX0KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL3Jvdy9yb3cwdmVycy5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdmVy cy5jCXJldmlkOmpvcmdlbi5sb2xhbmRAb3JhY2xlLmNvbS0yMDExMDYxNjA2MzAxNi1qOTJqZDhj Z3hrMXp4MWNnCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB2ZXJzLmMJcmV2aWQ6bWFy a28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTI2MDktNHppemNwNWxyZ3A0Z3czcApAQCAt NTU3LDEwICs1NTcsMTAgQEAgcm93X3ZlcnNfYnVpbGRfZm9yX2NvbnNpc3RlbnRfcmVhZCgKIAkJ CQkvKiBUaGUgdmlldyBhbHJlYWR5IHNlZXMgdGhpcyB2ZXJzaW9uOiB3ZSBjYW4KIAkJCQljb3B5 IGl0IHRvIGluX2hlYXAgYW5kIHJldHVybiAqLwogCi0jaWZkZWYgVU5JVl9CTE9CX05VTExfREVC VUcKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklWX0JMT0JfTElHSFRfREVC VUcKIAkJCQl1dF9hKCFyZWNfb2Zmc19hbnlfbnVsbF9leHRlcm4oCiAJCQkJCSAgICAgdmVyc2lv biwgKm9mZnNldHMpKTsKLSNlbmRpZiAvKiBVTklWX0JMT0JfTlVMTF9ERUJVRyAqLworI2VuZGlm IC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJR0hUX0RFQlVHICovCiAKIAkJCQlidWYgPSBt ZW1faGVhcF9hbGxvYyhpbl9oZWFwLAogCQkJCQkJICAgICByZWNfb2Zmc19zaXplKCpvZmZzZXRz KSk7CkBAIC01OTUsOSArNTk1LDkgQEAgcm93X3ZlcnNfYnVpbGRfZm9yX2NvbnNpc3RlbnRfcmVh ZCgKIAkJKm9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMocHJldl92ZXJzaW9uLCBpbmRleCwgKm9m ZnNldHMsCiAJCQkJCSAgIFVMSU5UX1VOREVGSU5FRCwgb2Zmc2V0X2hlYXApOwogCi0jaWZkZWYg VU5JVl9CTE9CX05VTExfREVCVUcKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBV TklWX0JMT0JfTElHSFRfREVCVUcKIAkJdXRfYSghcmVjX29mZnNfYW55X251bGxfZXh0ZXJuKHBy ZXZfdmVyc2lvbiwgKm9mZnNldHMpKTsKLSNlbmRpZiAvKiBVTklWX0JMT0JfTlVMTF9ERUJVRyAq LworI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJR0hUX0RFQlVHICovCiAKIAkJ dHJ4X2lkID0gcm93X2dldF9yZWNfdHJ4X2lkKHByZXZfdmVyc2lvbiwgaW5kZXgsICpvZmZzZXRz KTsKIApAQCAtNjkzLDkgKzY5Myw5IEBAIHJvd192ZXJzX2J1aWxkX2Zvcl9zZW1pX2NvbnNpc3Rl bnRfcmVhZCgKIAkJCS8qIFdlIGZvdW5kIGEgdmVyc2lvbiB0aGF0IGJlbG9uZ3MgdG8gYQogCQkJ Y29tbWl0dGVkIHRyYW5zYWN0aW9uOiByZXR1cm4gaXQuICovCiAKLSNpZmRlZiBVTklWX0JMT0Jf TlVMTF9ERUJVRworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9M SUdIVF9ERUJVRwogCQkJdXRfYSghcmVjX29mZnNfYW55X251bGxfZXh0ZXJuKHZlcnNpb24sICpv ZmZzZXRzKSk7Ci0jZW5kaWYgLyogVU5JVl9CTE9CX05VTExfREVCVUcgKi8KKyNlbmRpZiAvKiBV TklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLwogCiAJCQlpZiAocmVjID09IHZl cnNpb24pIHsKIAkJCQkqb2xkX3ZlcnMgPSByZWM7CkBAIC03NTQsOSArNzU0LDkgQEAgcm93X3Zl cnNfYnVpbGRfZm9yX3NlbWlfY29uc2lzdGVudF9yZWFkKAogCQl2ZXJzaW9uID0gcHJldl92ZXJz aW9uOwogCQkqb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyh2ZXJzaW9uLCBpbmRleCwgKm9mZnNl dHMsCiAJCQkJCSAgIFVMSU5UX1VOREVGSU5FRCwgb2Zmc2V0X2hlYXApOwotI2lmZGVmIFVOSVZf QkxPQl9OVUxMX0RFQlVHCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9C TE9CX0xJR0hUX0RFQlVHCiAJCXV0X2EoIXJlY19vZmZzX2FueV9udWxsX2V4dGVybih2ZXJzaW9u LCAqb2Zmc2V0cykpOwotI2VuZGlmIC8qIFVOSVZfQkxPQl9OVUxMX0RFQlVHICovCisjZW5kaWYg LyogVU5JVl9ERUJVRyB8fCBVTklWX0JMT0JfTElHSFRfREVCVUcgKi8KIAl9LyogZm9yICg7Oykg Ki8KIAogCWlmIChoZWFwKSB7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9z eW5jL3N5bmMwcncuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9zeW5jL3N5bmMwcncuYwlyZXZp ZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjMwMTYtajkyamQ4Y2d4azF6eDFj ZworKysgYi9zdG9yYWdlL2lubm9iYXNlL3N5bmMvc3luYzBydy5jCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpjcDVscmdwNGd3M3AKQEAgLTc4Niw3ICs3 ODYsOSBAQCByd19sb2NrX2FkZF9kZWJ1Z19pbmZvKAogCXJ3X2xvY2tfZGVidWdfbXV0ZXhfZXhp dCgpOwogCiAJaWYgKChwYXNzID09IDApICYmIChsb2NrX3R5cGUgIT0gUldfTE9DS19XQUlUX0VY KSkgewotCQlzeW5jX3RocmVhZF9hZGRfbGV2ZWwobG9jaywgbG9jay0+bGV2ZWwpOworCQlzeW5j X3RocmVhZF9hZGRfbGV2ZWwobG9jaywgbG9jay0+bGV2ZWwsCisJCQkJICAgICAgbG9ja190eXBl ID09IFJXX0xPQ0tfRVgKKwkJCQkgICAgICAmJiBsb2NrLT5sb2NrX3dvcmQgPCAwKTsKIAl9CiB9 CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3N5bmMvc3luYzBzeW5jLmMn Ci0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvc3luYy9zeW5jMHN5bmMuYwlyZXZpZDpqb3JnZW4ubG9s YW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjMwMTYtajkyamQ4Y2d4azF6eDFjZworKysgYi9zdG9y YWdlL2lubm9iYXNlL3N5bmMvc3luYzBzeW5jLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMTA2MTYwOTI2MDktNHppemNwNWxyZ3A0Z3czcApAQCAtNjkwLDcgKzY5MCw3IEBAIG11 dGV4X3NldF9kZWJ1Z19pbmZvKAogCXV0X2FkKG11dGV4KTsKIAl1dF9hZChmaWxlX25hbWUpOwog Ci0Jc3luY190aHJlYWRfYWRkX2xldmVsKG11dGV4LCBtdXRleC0+bGV2ZWwpOworCXN5bmNfdGhy ZWFkX2FkZF9sZXZlbChtdXRleCwgbXV0ZXgtPmxldmVsLCBGQUxTRSk7CiAKIAltdXRleC0+Zmls ZV9uYW1lID0gZmlsZV9uYW1lOwogCW11dGV4LT5saW5lCSA9IGxpbmU7CkBAIC0xMTMzLDggKzEx MzMsOSBAQCB2b2lkCiBzeW5jX3RocmVhZF9hZGRfbGV2ZWwoCiAvKj09PT09PT09PT09PT09PT09 PSovCiAJdm9pZCoJbGF0Y2gsCS8qITwgaW46IHBvaW50ZXIgdG8gYSBtdXRleCBvciBhbiBydy1s b2NrICovCi0JdWxpbnQJbGV2ZWwpCS8qITwgaW46IGxldmVsIGluIHRoZSBsYXRjaGluZyBvcmRl cjsgaWYKKwl1bGludAlsZXZlbCwJLyohPCBpbjogbGV2ZWwgaW4gdGhlIGxhdGNoaW5nIG9yZGVy OyBpZgogCQkJU1lOQ19MRVZFTF9WQVJZSU5HLCBub3RoaW5nIGlzIGRvbmUgKi8KKwlpYm9vbAly ZWxvY2spCS8qITwgaW46IFRSVUUgaWYgcmUtZW50ZXJpbmcgYW4geC1sb2NrICovCiB7CiAJdWxp bnQJCWk7CiAJc3luY19sZXZlbF90KglzbG90OwpAQCAtMTE4NSw2ICsxMTg2LDEwIEBAIHN5bmNf dGhyZWFkX2FkZF9sZXZlbCgKIAogCWFycmF5ID0gdGhyZWFkX3Nsb3QtPmxldmVsczsKIAorCWlm IChyZWxvY2spIHsKKwkJZ290byBsZXZlbHNfb2s7CisJfQorCiAJLyogTk9URSB0aGF0IHRoZXJl IGlzIGEgcHJvYmxlbSB3aXRoIF9OT0RFIGFuZCBfTEVBRiBsZXZlbHM6IGlmIHRoZQogCUItdHJl ZSBoZWlnaHQgY2hhbmdlcywgdGhlbiBhIGxlYWYgY2FuIGNoYW5nZSB0byBhbiBpbnRlcm5hbCBu b2RlCiAJb3IgdGhlIG90aGVyIHdheSBhcm91bmQuIFdlIGRvIG5vdCBrbm93IGF0IHByZXNlbnQg aWYgdGhpcyBjYW4gY2F1c2UKQEAgLTEzNjcsNiArMTM3Miw3IEBAIHN5bmNfdGhyZWFkX2FkZF9s ZXZlbCgKIAkJdXRfZXJyb3I7CiAJfQogCitsZXZlbHNfb2s6CiAJaWYgKGFycmF5LT5uZXh0X2Zy ZWUgPT0gVUxJTlRfVU5ERUZJTkVEKSB7CiAJCXV0X2EoYXJyYXktPm5fZWxlbXMgPCBhcnJheS0+ bWF4X2VsZW1zKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3Ry eDByZWMuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHJlYy5jCXJldmlkOmpvcmdl bi5sb2xhbmRAb3JhY2xlLmNvbS0yMDExMDYxNjA2MzAxNi1qOTJqZDhjZ3hrMXp4MWNnCisrKyBi L3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDByZWMuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMDYxNjA5MjYwOS00eml6Y3A1bHJncDRndzNwCkBAIC0xNTQ2LDkgKzE1NDYsOSBA QCB0cnhfdW5kb19wcmV2X3ZlcnNpb25fYnVpbGQoCiAJdXRfYSh0YWJsZV9pZCA9PSBpbmRleC0+ dGFibGUtPmlkKTsKIAl1dF9hKHB0cik7CiAKLSMgaWZkZWYgVU5JVl9CTE9CX05VTExfREVCVUcK KyMgaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVH CiAJdXRfYSghcmVjX29mZnNfYW55X251bGxfZXh0ZXJuKHJlYywgb2Zmc2V0cykpOwotIyBlbmRp ZiAvKiBVTklWX0JMT0JfTlVMTF9ERUJVRyAqLworIyBlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVO SVZfQkxPQl9MSUdIVF9ERUJVRyAqLwogCiAJaWYgKHJvd191cGRfY2hhbmdlc19maWVsZF9zaXpl X29yX2V4dGVybmFsKGluZGV4LCBvZmZzZXRzLCB1cGRhdGUpKSB7CiAJCXVsaW50CW5fZXh0OwoK --===============2098728783== 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/mysql-trunk/ # testament_sha1: e73bdc2bddfa50ceda4118cda11563a03fb9a487 # timestamp: 2011-06-16 12:28:07 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/mysql-5.5/ # base_revision_id: jorgen.loland@stripped\ # j92jd8cgxk1zx1cg # # Begin bundle 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 GxMybxJTKlDJEma1FhmNGsmCePCYLcDiU12lWIhLHinsKIqnaZkycNKl4QhyGOe464bwasqFlcY5 8ajKs0yhOt+WESUjtTk8ixwVNTyLBxqQXXwKHhPYcKd5MuZdbvVY5OvTNh7/fq1M3V3cl3h1LnZT Dm0d3R2aOXXk1btnDYwyaYaNndhTJusszKa5uT1Pf+MCe2BOoPSopUjKkSEQZShLWqnGFBDegDFU YkRTq3cNXB6OvZ1ZsMnLkS76d+j1eT+V8kqH0avdw7qbPNZPDs7Hdh0Ts8Lr2XWYXk7x9HSIlKkQ 1c2jZ7V92GrmdHR7+jlJBoZrm64wkJ4KfopLKeb2Syn1tihFp9GcnlcziorHayzPD3XYLs4KdHyc DFzkyHQ7iR2O4yahsokT3+/Q/h8iqXmMLDN6Eh0cMjq7ZsmP2vpWiZNjzX+DB7vTPPBsR8eAZH9B 4bpSOTc4NAmdxg9TckSNQ2OBYPfYqYPDw7zfhCRgS8Uu3kHuj7gFHPj8/AOnh3bRDfp7X8DA6p8E iI/okdY9ynkbFh4P3T9jUxCfrqKRVxXsfar2KjUlyilnQwufYln6cGyiNpIT9DBuS04jEIle+mRd GPqFU6rU4aNDjKhQ3pY62tSBRMtAoFlJCAXNCG8TMH5SJutUdw+IfM94Gq1vEaJOpRHIvDZz/rPe ZPG+8Fx8D2QcZyTscwsSxUf0nyq0cQFRxMkC9AqmEkBgnWWAvQB8g4ar0Uct2pdJBgEGEGEQIEYE BhgbSbpzgXskgnF0YZqHm7Fno9FKiqhP9dJJZ4SZcCS2ggIUoLQEBBIJQhA6M3P6Nk9PsP6jovEB dwdXOI9xZ6Ch3mMmo7xbkDVSHLCF9SJb84cEz8vyyfiCQXn1427Q3CizurV1bOXLVq0bLNGrI4bL XeHJh+HN1NmqznTlzP6Dv0VNmCjqo6OFNPjKYcmjszTw82ymnhktnhT9TM5nkzXdGq65TmbtNF27 VbJu7NTN0dFjCmczYcHn5cn57tVOjZ5N3J5zkV2cLuq7OatdmZ3beTDfJs3TN6knxk5sOjmdXmpx 5tFNJw+cn2V8XDd3NVmryeTmy81lPDR2MMmyzo8mq+aCTzc3JMndTMtN2TB5Ju8l3Zm6NNXJk7Mz hk6xCevrw1bK5Zo+mrdhu5qdYhPVGUGkJ/Z6/aoo/X/9QJct8IEtAnSD7+0SLw+aNUYu+SOfTBdg pTQWJtDaAJ0W+zHcdxOJByL8NjlXKGDoMGST8NXp2VQ71DeoLlUueKsn19KfDMy1RG8MESEVFLGj QFWERSlBoGVAC21QPV6qFqqHGGswBHw7nhqC9TSdAI/TU8PqQfWlSKGhCgUKgjFKhAaJGodmU7+I 3KoaDu9xiRyOOCIOkP1NShYgwC4uMlip8oihIAh0/Ydsw58pTufrg4EUUc0buuJF4XgxO/3yas8b Qo/XUkfVIM1oyb/r9p+sgKHrJHng0M1a26v3Qev5Or7Sd2kjmQbwfgX2dD+gnq+yNi1GVH0GgKKI NfYLUPSpkDiMIuYUqLQlD+CUolB+JRvJdMRCVvJYzHaCMQN3wQLTYO3w2ugUGBFAGsR2fBIp+R8G lrjUK/n+R2Tyb0ezWLSf/sRycZRFIRYRXcJN35xRChZCQkfWQhGfZPrkTXrdZ/fZS3Qz3oGjpJPM 8IosASy2x5Dm4+A7w1FG1ahYeTrodvWqbw9qMTK5iBp10rqFPI7DaX2h7g8A3BVHp6NgrqBgpAgE QRh6gOp5kLx3pIDCEWeTUnOS4KhwRR+W1XkUOBjAsCoBAwtIr5SNJKNXWlClFK0gzjBKPkDZozp1 RJBKCqaQRsEByYPV3nxdoe1pyB9Li02JttH5+JbtFc/q8uIEPIQ3AAhEBJpaaOg5mGQyWFrgYBCg Ia/Gr5iW8EqKIn8w942mzs6xEeXEeKqGPWIonTuXo3mV4T++T9lTBIwNlH1PJT6L2B+ZawwpiE/R kqUpSf4MJZFS3tH96XMxMifZRt1kkjyUkzNMRkH1MQ/UumF7JERfzJhOs+oqObR1DWhvZeNFhefU r0gqBPYysWjCWLWW5RkSJFoE7olQJgx72WsTaGj83zftb5c95qdThGh+xelfmp/Z7ziDZaGDWWWa 0rdItGwgwubW8/OgQWkEuQ2BkCNBsodyRC4CAnM5h8Qd0hZLCnaV91oTwqGqijWFBj4lOBkbQ8MP HYN9h4oRBJ/JhczbqJ5J8DE+JE8k3h59pf2Hs9sgJtVsoh5O8zl4HjkDfiyUGUQRSqDd6tv08pkC qKexwDDXtFET0IgfcfaoEECjIJQBklkEsCIEoSJYEQJfuj84fA7yfueTkKUUf5s4q0CfXzR0jYu+ yq5HwNFH8pkzqk1KD9dVRlB5JD8J0SF47Ic0VNV0v/Bl9OZXSISli8zVImY+P7Pn0O0KeCqLT77r qpSyyxeqpL3RaeKYUUdZGCyR+PLjs0TQ++UapAqB/jPj+h3geCXtTvGGZoeXmjyNyvBAgvEPHTQQ l8NFc4Z/BqFnqSZmwYBtQDjCMZpMDChDIwoywmrAKMdGZzDCgIbQvAbT7qOUmxQngESUE688JgWI 9yqHP5+j5FoqXl6APFkCg6DYcoNj+u+hMRCVpy9BN+qirRIWWKlhhJaQR9dekZQxIS6IlSH12hJu idBkXkeihF7KOE5OjLFQjYekkhaSPB/TuhIfsVn0UawvGTcf4KecLrFIL7fd6nQ4oLwHOECImUFi FbBaCmXWtRaP0tAmDFhT7XRzi1KlDzSWizKtUoFSFgWgyIC50LRtX8MaXCOqP0QOTOGJNNB5fIe8 4UeMIiYCQCEbEYrRsrCwURKt/hsLNWP2iqZTeJns+tdiOZ8YiGc0Ke/qZw4oHqPipYnu+3/jwUQe nT5ltdhiCo9hUXZ807TGO11CFVZERU2hEX7kigacEDEwoEAgxhAZSHdVlFD2CokToozFf5DxlC+E Po83mk5zr1jjrB1+RmUqUf2Qepc/zUK6iADh+oFFOsVHQLvIClykFxmFIqD4f1p97EMh3+WkSpI8 KeqR8DX6BtC8DMGIIBBzBVg7FYQGFOnqW+4WhRUcbBEMmsDlNa9xRB4FHDsSWAPkWgce3WCPb0Gh Ec2VMMlNaOfqofVEDoRNB757IWk0YC42Q+EkB1sT9meukstAoWgULQKFzkhscjA5QwJQQdXBwdDq CJmTDD2kp+qDACMCET6OvdAORRdCINgcnWnWGUA89xzwMCJ2hXx4nFqt4WLSKVNU5+xwyY4kTsbc sHPIfTJoLEDn8qqHOXGpa6fdm+wVTFoW7YKphiPHPu+fQDU+vQoYRK/8AyP2OcKJ7LgPkUuQD7xJ oJmM8xDYySkIghPXaIgCCaCmiG8gCEKDIeCDtK0oFGAiLJNykDcTGRAU0YJhDYHWkRSIMBRVBYoo xQQVVFUIbkAoKByNo7fQUS+0FvhFrRECi4BKIwl7FkP1rIWC6z5v9kGiJEmskgyjykOcW8F84vlv BW0Ip4QQyAQHIGlEoGcTrMRF9R3FCPyCivygp3MSHzasEOuNMJ9AQEONSqQClDc2OTh2ils4skF6 LKhRPee3i50OyiqqfYqxo3VPNPZHl8Kxso7Tqqz8/2iihR6JXNpN4qDisThao0SriKJ4DRKG2B4B QKIg9ptE2xSD7AR953fPaXb1M2B6UDSWhH9I9iJ4uR2iKJgh3JeBhIQIBY0SqS0F+PsOUeJ5VHzv 7T3tC3zPlITYmqw+R+6wsUqhRawscYpSuiTsZzdQKKVVOiUEU7EKLrAhCESNsS0Wzk1jqkIanXSQ 6SRx9r6Jg0RCt6UVFFUWnxsu/LykfM5SPyz1UzWQuo/RUHiKivCjyrLH5HLESjfVguYNZrtY1jY0 ZyZXKUmZTZixkbNm921rNozPayhkpcqZH1GlqqoMG5RRUkkklAO/P9Z9R16jxTO8UxhpnUOkSpU0 FLVvZ9Wexea4xkSZnxb1odj0b+KWLSVHspdZkY+zKYUTQ+/hxFSVvBhz5wft2hsRxA44qEirIgSF yANTnwAxlRiBAimXiRR5BaXoA3atSiHJBCQkKofl8s2ck8+FpNoSMMvP7uB9n7naOr1IslliSz0m rxYVYcovC2KWVQYMFItupMzm5xLRaaWjDODCc3miJZoIPgbShh7o+q8bOMoDw84D5hHLdUDzh30G ktYWLWFi2GOVjomrvIWp6PT7oKdmPO5756NEsvaKWoUVdaPVuWMqhWbbcybw2Awt2C4UeDWwO8ib hREjApQKIWT1zXUJugE0QKGrR6oFj5v8kvYiefp9Uvkam6SWzn2hwFpIBRQuhPVATJ5EwjmqEbSm JR5a02zQJhtUNjSRP6uJGu/9dycCmtJH1eLHI5yOM6jCW6Fn5n3E5TJ1i5ymq5vJFNYNxPggT2mD SpClSQue9Uj4UD7VEtFAJAZBChFhBTAYHuCPNgHmCqr+L6I/LEanw7we8o+4evB7D2pLRKpQUpSn ossrS0kkfs9eSHCilHkpZsom03BQM4KuKBKg8fMHpFYisABijFEIJAhAgt3pBkSMAkJzKzseYIYo r14Y+8lz3qpYfeVVVkxVpChaUKkiR/IEKGJ3ncgcabxTktS0HZG2qCNoBzKZPRcK6DgB7zQZMi+P SeC4aD09AcRwUBK5s0xJwEU4T9jB8y4wHPyKGWnrJMjh4m7Emc6STvNjPUPre98h8jNIQ9dI6p7l 5oqbxKnquilpJZ7lFyn0V9Zs3PrcFAO3eNUkvJCfp8Y+bgoJA2jnXjDtd4EQykEIvEAl/I7wiGOK tnKpgA5nonUDjzm4HZiW5yOkNJ5B0HFJWnsZFtoPqJP8qhSjYnGGUfAmAy1Q9/odJizMtIijo9xn B51yD24CqQ26F9eUq+k5OLMIusIBAjGQGGMxIFER+j6ETRzg+GRrCp6I5FPkpPvqWKQ/eqQ+iuup ZPj+P8OIfJhkm6j66fdKHChPl+/9ph7w7lGTvKoAhFFgskRkC8vIPQENdoBrae3q28nPxHYqhiDi UIQimYShTYNCisDsYXRDB85eKpxvCpaqxPT8tnyfY5PqPqx9hhwUM0vN3wYTKMywlr+cvw4wH+Wy stSgv8AbSS1b71NKnkhIX3QuG36kBaMwA5tmM7dftt9IKdK8fSbyhzJzgjkYoDUxHifFOvGCPNae oFOkNpx+Xd8Wdwp50ifgkIongFEE/Ifh6m6EhCSI//geYPOH9BdyRThQkIvM67M= --===============2098728783==--