From: Alexander Barkov Date: March 4 2011 2:59pm Subject: bzr commit into mysql-trunk branch (alexander.barkov:3724) List-Archive: http://lists.mysql.com/commits/132470 Message-Id: <201103041459.p24ExwSW009906@bar.myoffice.izhnet.ru> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 I0F0IGZpbGU6Ly8vaG9tZS9iYXIvbXlzcWwtYnpyL215c3FsLXRydW5rLyBiYXNlZCBvbiByZXZp ZDptYXR0aWFzLmpvbnNzb25Ab3JhY2xlLmNvbS0yMDExMDMwMzIyMjYxOS1yNjNtdXJmdzR5cWxl c2F3CgogMzcyNCBBbGV4YW5kZXIgQmFya292CTIwMTEtMDMtMDQgW21lcmdlXQogICAgICBNZXJn aW5nIGZyb20gbXlzcWwtNS41CgogICAgYWRkZWQ6CiAgICAgIG15c3FsLXRlc3Qvci9mdW5jX2Vu Y3J5cHRfdWNzMi5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC90L2Z1bmNfZW5jcnlwdF91Y3MyLnRl c3QKICAgIG1vZGlmaWVkOgogICAgICBteXNxbC10ZXN0L3IvY3R5cGVfc2ppcy5yZXN1bHQKICAg ICAgbXlzcWwtdGVzdC9yL2N0eXBlX3Vjcy5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC90L2N0eXBl X3NqaXMudGVzdAogICAgICBteXNxbC10ZXN0L3QvY3R5cGVfdWNzLnRlc3QKICAgICAgc3FsL2l0 ZW1fZnVuYy5jYwogICAgICBzcWwvaXRlbV9zdHJmdW5jLmNjCiAgICAgIHNxbC9pdGVtX3N0cmZ1 bmMuaAo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9yL2N0eXBlX3NqaXMucmVzdWx0Jwot LS0gYS9teXNxbC10ZXN0L3IvY3R5cGVfc2ppcy5yZXN1bHQJMjAxMC0wMy0yMiAwOToxMzo0MSAr MDAwMAorKysgYi9teXNxbC10ZXN0L3IvY3R5cGVfc2ppcy5yZXN1bHQJMjAxMS0wMy0wNCAxNDo1 OTozMiArMDAwMApAQCAtMjE4LDYgKzIxOCwxMiBAQCBoZXgoYSkJaGV4KGxvd2VyKGEpKQloZXgo dXBwZXIoYSkpCiA4MzUyODM1RQk4MzUyODM1RQk4MzUyODM1RQogODM3MjgzNUUJODM3MjgzNUUJ ODM3MjgzNUUKIERST1AgVEFCTEUgdDE7CisjCisjIEJ1ZyMxMTc2NjUxOSAtIEJ1ZyM1OTY0ODog TVlfU1RSVE9MTDEwX01CMjogQVNTRVJUSU9OIGAoKkVORFBUUiAtIFMpICUgMiA9PSAwJyBGQUlM RUQuCisjCitTRUxFQ1QgUVVPVEUoJ++/vVwnKTsKK1FVT1RFKCfvv71cJykKKyfvv71cJwogIyBF bmQgb2YgNS4xIHRlc3RzCiAjCiAjIFN0YXJ0IG9mIDUuNSB0ZXN0cwoKPT09IG1vZGlmaWVkIGZp bGUgJ215c3FsLXRlc3Qvci9jdHlwZV91Y3MucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvY3R5 cGVfdWNzLnJlc3VsdAkyMDExLTAyLTEwIDA4OjQ3OjA1ICswMDAwCisrKyBiL215c3FsLXRlc3Qv ci9jdHlwZV91Y3MucmVzdWx0CTIwMTEtMDMtMDQgMTQ6NTk6MzIgKzAwMDAKQEAgLTEwNTYsOCAr MTA1Niw4IEBAIG9sZF9wYXNzd29yZChuYW1lKQogMTRlNTAwYjEzMTc3Mzk5MQogc2VsZWN0IHF1 b3RlKG5hbWUpIGZyb20gYnVnMjA1MzY7CiBxdW90ZShuYW1lKQotPz8/Pz8/Pz8KLT8/Pz8/Pz8/ Pz8/Pz8/Pz8KKyd0ZXN0MScKKydcJ3Rlc3RcXF8yXCcnCiBkcm9wIHRhYmxlIGJ1ZzIwNTM2Owog c2V0IG5hbWVzIHVjczI7CiBFUlJPUiA0MjAwMDogVmFyaWFibGUgJ2NoYXJhY3Rlcl9zZXRfY2xp ZW50JyBjYW4ndCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICd1Y3MyJwpAQCAtMTMwNCw2ICsxMzA0 LDE3IEBAIENSRUFURSBWSUVXIHYxIEFTIFNFTEVDVCAxIGZyb20gdDEKIFdIRVJFIHQxLmIgPD0+ IChTRUxFQ1QgYSBGUk9NIHQxIFdIRVJFIGEgPCBTT01FKFNFTEVDVCAnMScpKTsKIERST1AgVklF VyB2MTsKIERST1AgVEFCTEUgdDE7CisjCisjIEJ1ZyM1OTY0OCBteV9zdHJ0b2xsMTBfbWIyOiBB c3NlcnRpb24gYCgqZW5kcHRyIC0gcykgJSAyID09IDAnIGZhaWxlZC4KKyMKK1NFTEVDVCBIRVgo Q0hBUihDT0FMRVNDRShOVUxMLCBDSEFSKENPVU5UKCclcycpIFVTSU5HIHVjczIpLCAxLCBAQGds b2JhbC5saWNlbnNlLCBOVUxMKSBVU0lORyBjcDg1MCkpOworSEVYKENIQVIoQ09BTEVTQ0UoTlVM TCwgQ0hBUihDT1VOVCgnJXMnKSBVU0lORyB1Y3MyKSwgMSwgQEBnbG9iYWwubGljZW5zZSwgTlVM TCkgVVNJTkcgY3A4NTApKQorMDAKK1NFTEVDVCBDT05WRVJUKFFVT1RFKENIQVIoMHhmNSB1c2lu ZyB1Y3MyKSksIFNJR05FRCk7CitDT05WRVJUKFFVT1RFKENIQVIoMHhmNSB1c2luZyB1Y3MyKSks IFNJR05FRCkKKzAKK1dhcm5pbmdzOgorV2FybmluZwkxMjkyCVRydW5jYXRlZCBpbmNvcnJlY3Qg SU5URUdFUiB2YWx1ZTogJyfDtScnCiBFbmQgb2YgNS4wIHRlc3RzCiAjCiAjIFN0YXJ0IG9mIDUu NSB0ZXN0cwoKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvci9mdW5jX2VuY3J5cHRfdWNzMi5y ZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9mdW5jX2VuY3J5cHRfdWNzMi5yZXN1bHQJMTk3MC0w MS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3IvZnVuY19lbmNyeXB0X3VjczIu cmVzdWx0CTIwMTEtMDMtMDQgMTQ6NTk6MzIgKzAwMDAKQEAgLTAsMCArMSwxOSBAQAorIworIyBC dWcjNTk2NDggbXlfc3RydG9sbDEwX21iMjogQXNzZXJ0aW9uIGAoKmVuZHB0ciAtIHMpICUgMiA9 PSAwJyBmYWlsZWQuCisjCitTRUxFQ1QgQ0hBUl9MRU5HVEgoREVTX0VOQ1JZUFQoMCwgQ0hBUign MScgVVNJTkcgdWNzMikpKTsKK0NIQVJfTEVOR1RIKERFU19FTkNSWVBUKDAsIENIQVIoJzEnIFVT SU5HIHVjczIpKSkKKzkKK1NFTEVDVCBDT05WRVJUKERFU19FTkNSWVBUKDAsIENIQVIoJzEnIFVT SU5HIHVjczIpKSxVTlNJR05FRCk7CitDT05WRVJUKERFU19FTkNSWVBUKDAsIENIQVIoJzEnIFVT SU5HIHVjczIpKSxVTlNJR05FRCkKKzAKK1dhcm5pbmdzOgorV2FybmluZwkxMjkyCVRydW5jYXRl ZCBpbmNvcnJlY3QgSU5URUdFUiB2YWx1ZTogJ1x4RkZUXHhEQ2lLXHg5MmpceEU2XHhGQycKK1NF TEVDVCBDSEFSX0xFTkdUSChERVNfREVDUllQVCgweEZGMERDOUZDOTUzN0NBNzVGNCwgQ0hBUign MScgVVNJTkcgdWNzMikpKTsKK0NIQVJfTEVOR1RIKERFU19ERUNSWVBUKDB4RkYwREM5RkM5NTM3 Q0E3NUY0LCBDSEFSKCcxJyBVU0lORyB1Y3MyKSkpCis0CitTRUxFQ1QgQ09OVkVSVChERVNfREVD UllQVCgweEZGMERDOUZDOTUzN0NBNzVGNCwgQ0hBUignMScgdXNpbmcgdWNzMikpLCBVTlNJR05F RCk7CitDT05WRVJUKERFU19ERUNSWVBUKDB4RkYwREM5RkM5NTM3Q0E3NUY0LCBDSEFSKCcxJyB1 c2luZyB1Y3MyKSksIFVOU0lHTkVEKQorMAorV2FybmluZ3M6CitXYXJuaW5nCTEyOTIJVHJ1bmNh dGVkIGluY29ycmVjdCBJTlRFR0VSIHZhbHVlOiAndGVzdCcKCj09PSBtb2RpZmllZCBmaWxlICdt eXNxbC10ZXN0L3QvY3R5cGVfc2ppcy50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3QvY3R5cGVfc2pp cy50ZXN0CTIwMTAtMDMtMjIgMDk6MTM6NDEgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC90L2N0eXBl X3NqaXMudGVzdAkyMDExLTAzLTA0IDE0OjU5OjMyICswMDAwCkBAIC05Miw2ICs5MiwxNCBAQCBJ TlNFUlQgSU5UTyB0MSBWQUxVRVMgKDB4ODM3MjgzNUUpLCgweDgzCiBTRUxFQ1QgaGV4KGEpLCBo ZXgobG93ZXIoYSkpLCBoZXgodXBwZXIoYSkpIEZST00gdDEgT1JERVIgQlkgYmluYXJ5KGEpOwog RFJPUCBUQUJMRSB0MTsKIAorLS1lY2hvICMKKy0tZWNobyAjIEJ1ZyMxMTc2NjUxOSAtIEJ1ZyM1 OTY0ODogTVlfU1RSVE9MTDEwX01CMjogQVNTRVJUSU9OIGAoKkVORFBUUiAtIFMpICUgMiA9PSAw JyBGQUlMRUQuCistLWVjaG8gIworIyBJbiB0aGUgYmVsb3cgc3RyaW5nIGJhY2tzbGFzaCAoMHg1 QykgaXMgYSBwYXJ0IG9mIGEgbXVsdGktYnl0ZQorIyBjaGFyYWN0ZXIsIHNvIGl0IHNob3VsZCBu b3QgYmUgcXVvdGVkLgorU0VMRUNUIFFVT1RFKCfvv71cJyk7CisKKwogLS1lY2hvICMgRW5kIG9m IDUuMSB0ZXN0cwogCiAKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3QvY3R5cGVfdWNz LnRlc3QnCi0tLSBhL215c3FsLXRlc3QvdC9jdHlwZV91Y3MudGVzdAkyMDExLTAxLTE4IDA3OjE2 OjQ5ICswMDAwCisrKyBiL215c3FsLXRlc3QvdC9jdHlwZV91Y3MudGVzdAkyMDExLTAzLTA0IDE0 OjU5OjMyICswMDAwCkBAIC02OTksNiArNjk5LDEyIEBAIFdIRVJFIHQxLmIgPD0+IChTRUxFQ1Qg YSBGUk9NIHQxIFdIRVJFIGEKIERST1AgVklFVyB2MTsKIERST1AgVEFCTEUgdDE7CiAKKy0tZWNo byAjCistLWVjaG8gIyBCdWcjNTk2NDggbXlfc3RydG9sbDEwX21iMjogQXNzZXJ0aW9uIGAoKmVu ZHB0ciAtIHMpICUgMiA9PSAwJyBmYWlsZWQuCistLWVjaG8gIworU0VMRUNUIEhFWChDSEFSKENP QUxFU0NFKE5VTEwsIENIQVIoQ09VTlQoJyVzJykgVVNJTkcgdWNzMiksIDEsIEBAZ2xvYmFsLmxp Y2Vuc2UsIE5VTEwpIFVTSU5HIGNwODUwKSk7CitTRUxFQ1QgQ09OVkVSVChRVU9URShDSEFSKDB4 ZjUgdXNpbmcgdWNzMikpLCBTSUdORUQpOworCiAtLWVjaG8gRW5kIG9mIDUuMCB0ZXN0cwogCiAK Cj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3QvZnVuY19lbmNyeXB0X3VjczIudGVzdCcKLS0t IGEvbXlzcWwtdGVzdC90L2Z1bmNfZW5jcnlwdF91Y3MyLnRlc3QJMTk3MC0wMS0wMSAwMDowMDow MCArMDAwMAorKysgYi9teXNxbC10ZXN0L3QvZnVuY19lbmNyeXB0X3VjczIudGVzdAkyMDExLTAz LTAzIDEyOjI3OjM2ICswMDAwCkBAIC0wLDAgKzEsMTIgQEAKKy0tIHNvdXJjZSBpbmNsdWRlL2hh dmVfc3NsX2NyeXB0b19mdW5jdHMuaW5jCistLSBzb3VyY2UgaW5jbHVkZS9oYXZlX3VjczIuaW5j CisKKy0tZWNobyAjCistLWVjaG8gIyBCdWcjNTk2NDggbXlfc3RydG9sbDEwX21iMjogQXNzZXJ0 aW9uIGAoKmVuZHB0ciAtIHMpICUgMiA9PSAwJyBmYWlsZWQuCistLWVjaG8gIworCitTRUxFQ1Qg Q0hBUl9MRU5HVEgoREVTX0VOQ1JZUFQoMCwgQ0hBUignMScgVVNJTkcgdWNzMikpKTsKK1NFTEVD VCBDT05WRVJUKERFU19FTkNSWVBUKDAsIENIQVIoJzEnIFVTSU5HIHVjczIpKSxVTlNJR05FRCk7 CisKK1NFTEVDVCBDSEFSX0xFTkdUSChERVNfREVDUllQVCgweEZGMERDOUZDOTUzN0NBNzVGNCwg Q0hBUignMScgVVNJTkcgdWNzMikpKTsKK1NFTEVDVCBDT05WRVJUKERFU19ERUNSWVBUKDB4RkYw REM5RkM5NTM3Q0E3NUY0LCBDSEFSKCcxJyB1c2luZyB1Y3MyKSksIFVOU0lHTkVEKTsKCj09PSBt b2RpZmllZCBmaWxlICdzcWwvaXRlbV9mdW5jLmNjJwotLS0gYS9zcWwvaXRlbV9mdW5jLmNjCTIw MTEtMDMtMDEgMTQ6NDc6MDEgKzAwMDAKKysrIGIvc3FsL2l0ZW1fZnVuYy5jYwkyMDExLTAzLTA0 IDE0OjU5OjMyICswMDAwCkBAIC04ODYsNyArODg2LDcgQEAgbG9uZ2xvbmcgSXRlbV9mdW5jX251 bWh5YnJpZDo6dmFsX2ludCgpCiAgICAgICByZXR1cm4gMDsKIAogICAgIGNoYXIgKmVuZD0gKGNo YXIqKSByZXMtPnB0cigpICsgcmVzLT5sZW5ndGgoKTsKLSAgICBDSEFSU0VUX0lORk8gKmNzPSBz dHJfdmFsdWUuY2hhcnNldCgpOworICAgIENIQVJTRVRfSU5GTyAqY3M9IHJlcy0+Y2hhcnNldCgp OwogICAgIHJldHVybiAoKihjcy0+Y3NldC0+c3RydG9sbDEwKSkoY3MsIHJlcy0+cHRyKCksICZl bmQsICZlcnJfbm90X3VzZWQpOwogICB9CiAgIGRlZmF1bHQ6Cgo9PT0gbW9kaWZpZWQgZmlsZSAn c3FsL2l0ZW1fc3RyZnVuYy5jYycKLS0tIGEvc3FsL2l0ZW1fc3RyZnVuYy5jYwkyMDExLTAyLTEw IDA4OjQ3OjA1ICswMDAwCisrKyBiL3NxbC9pdGVtX3N0cmZ1bmMuY2MJMjAxMS0wMy0wNCAxNDo1 OTozMiArMDAwMApAQCAtNzk2LDYgKzc5Niw3IEBAIFN0cmluZyAqSXRlbV9mdW5jX2Rlc19lbmNy eXB0Ojp2YWxfc3RyKFMKICAgdG1wX2FyZ1tyZXNfbGVuZ3RoLTFdPXRhaWw7ICAgICAgICAgICAg ICAgICAgIC8vIHNhdmUgZXh0cmEgbGVuZ3RoCiAgIHRtcF92YWx1ZS5yZWFsbG9jKHJlc19sZW5n dGgrMSk7CiAgIHRtcF92YWx1ZS5sZW5ndGgocmVzX2xlbmd0aCsxKTsKKyAgdG1wX3ZhbHVlLnNl dF9jaGFyc2V0KCZteV9jaGFyc2V0X2Jpbik7CiAgIHRtcF92YWx1ZVswXT0oY2hhcikgKDEyOCB8 IGtleV9udW1iZXIpOwogICAvLyBSZWFsIGVuY3J5cHRpb24KICAgYnplcm8oKGNoYXIqKSAmaXZl YyxzaXplb2YoaXZlYykpOwpAQCAtODgzLDYgKzg4NCw3IEBAIFN0cmluZyAqSXRlbV9mdW5jX2Rl c19kZWNyeXB0Ojp2YWxfc3RyKFMKICAgaWYgKCh0YWlsPSh1aW50KSAodWNoYXIpIHRtcF92YWx1 ZVtsZW5ndGgtMl0pID4gOCkKICAgICBnb3RvIHdyb25nX2tleTsJCQkJICAgICAvLyBXcm9uZyBr ZXkKICAgdG1wX3ZhbHVlLmxlbmd0aChsZW5ndGgtMS10YWlsKTsKKyAgdG1wX3ZhbHVlLnNldF9j aGFyc2V0KCZteV9jaGFyc2V0X2Jpbik7CiAgIHJldHVybiAmdG1wX3ZhbHVlOwogCiBlcnJvcjoK QEAgLTM1OTcsMTQgKzM1OTksNjggQEAgU3RyaW5nICpJdGVtX2Z1bmNfcXVvdGU6OnZhbF9zdHIo U3RyaW5nIAogICB9CiAKICAgYXJnX2xlbmd0aD0gYXJnLT5sZW5ndGgoKTsKLSAgbmV3X2xlbmd0 aD0gYXJnX2xlbmd0aCsyOyAvKiBmb3IgYmVnaW5uaW5nIGFuZCBlbmRpbmcgJyBzaWducyAqLwog Ci0gIGZvciAoZnJvbT0gKGNoYXIqKSBhcmctPnB0cigpLCBlbmQ9IGZyb20gKyBhcmdfbGVuZ3Ro OyBmcm9tIDwgZW5kOyBmcm9tKyspCi0gICAgbmV3X2xlbmd0aCs9IGdldF9lc2NfYml0KGVzY21h c2ssICh1Y2hhcikgKmZyb20pOworICBpZiAoY29sbGF0aW9uLmNvbGxhdGlvbi0+bWJtYXhsZW4g PT0gMSkKKyAgeworICAgIG5ld19sZW5ndGg9IGFyZ19sZW5ndGggKyAyOyAvKiBmb3IgYmVnaW5u aW5nIGFuZCBlbmRpbmcgJyBzaWducyAqLworICAgIGZvciAoZnJvbT0gKGNoYXIqKSBhcmctPnB0 cigpLCBlbmQ9IGZyb20gKyBhcmdfbGVuZ3RoOyBmcm9tIDwgZW5kOyBmcm9tKyspCisgICAgICBu ZXdfbGVuZ3RoKz0gZ2V0X2VzY19iaXQoZXNjbWFzaywgKHVjaGFyKSAqZnJvbSk7CisgIH0KKyAg ZWxzZQorICB7CisgICAgbmV3X2xlbmd0aD0gKGFyZ19sZW5ndGggKiAyKSArICAvKiBGb3Igc3Ry aW5nIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgICAgICAoMiAqIGNvbGxhdGlvbi5jb2xsYXRp b24tPm1ibWF4bGVuKTsgLyogRm9yIHF1b3RlcyAqLworICB9CiAKICAgaWYgKHRtcF92YWx1ZS5h bGxvYyhuZXdfbGVuZ3RoKSkKICAgICBnb3RvIG51bGw7CiAKKyAgaWYgKGNvbGxhdGlvbi5jb2xs YXRpb24tPm1ibWF4bGVuID4gMSkKKyAgeworICAgIENIQVJTRVRfSU5GTyAqY3M9IGNvbGxhdGlv bi5jb2xsYXRpb247CisgICAgaW50IG1ibGVuOworICAgIHVjaGFyICp0b19lbmQ7CisgICAgdG89 IChjaGFyKikgdG1wX3ZhbHVlLnB0cigpOworICAgIHRvX2VuZD0gKHVjaGFyKikgdG8gKyBuZXdf bGVuZ3RoOworCisgICAgLyogUHV0IGxlYWRpbmcgcXVvdGUgKi8KKyAgICBpZiAoKG1ibGVuPSBj cy0+Y3NldC0+d2NfbWIoY3MsICdcJycsICh1Y2hhciAqKSB0bywgdG9fZW5kKSkgPD0gMCkKKyAg ICAgIGdvdG8gbnVsbDsKKyAgICB0bys9IG1ibGVuOworCisgICAgZm9yIChzdGFydD0gKGNoYXIq KSBhcmctPnB0cigpLCBlbmQ9IHN0YXJ0ICsgYXJnX2xlbmd0aDsgc3RhcnQgPCBlbmQ7ICkKKyAg ICB7CisgICAgICBteV93Y190IHdjOworICAgICAgYm9vbCBlc2NhcGU7CisgICAgICBpZiAoKG1i bGVuPSBjcy0+Y3NldC0+bWJfd2MoY3MsICZ3YywgKHVjaGFyKikgc3RhcnQsICh1Y2hhciopIGVu ZCkpIDw9IDApCisgICAgICAgIGdvdG8gbnVsbDsKKyAgICAgIHN0YXJ0Kz0gbWJsZW47CisgICAg ICBzd2l0Y2ggKHdjKSB7CisgICAgICAgIGNhc2UgMDogICAgICBlc2NhcGU9IDE7IHdjPSAnMCc7 IGJyZWFrOworICAgICAgICBjYXNlICdcMDMyJzogZXNjYXBlPSAxOyB3Yz0gJ1onOyBicmVhazsK KyAgICAgICAgY2FzZSAnXCcnOiAgIGVzY2FwZT0gMTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ1xc JzogICBlc2NhcGU9IDE7IGJyZWFrOworICAgICAgICBkZWZhdWx0OiAgICAgZXNjYXBlPSAwOyBi cmVhazsKKyAgICAgIH0KKyAgICAgIGlmIChlc2NhcGUpCisgICAgICB7CisgICAgICAgIGlmICgo bWJsZW49IGNzLT5jc2V0LT53Y19tYihjcywgJ1xcJywgKHVjaGFyKikgdG8sIHRvX2VuZCkpIDw9 IDApCisgICAgICAgICAgZ290byBudWxsOworICAgICAgICB0bys9IG1ibGVuOworICAgICAgfQor ICAgICAgaWYgKChtYmxlbj0gY3MtPmNzZXQtPndjX21iKGNzLCB3YywgKHVjaGFyKikgdG8sIHRv X2VuZCkpIDw9IDApCisgICAgICAgIGdvdG8gbnVsbDsKKyAgICAgIHRvKz0gbWJsZW47CisgICAg fQorCisgICAgLyogUHV0IHRyYWlsaW5nIHF1b3RlICovCisgICAgaWYgKChtYmxlbj0gY3MtPmNz ZXQtPndjX21iKGNzLCAnXCcnLCAodWNoYXIgKikgdG8sIHRvX2VuZCkpIDw9IDApCisgICAgICBn b3RvIG51bGw7CisgICAgdG8rPSBtYmxlbjsKKyAgICBuZXdfbGVuZ3RoPSB0byAtIHRtcF92YWx1 ZS5wdHIoKTsKKyAgICBnb3RvIHJldDsKKyAgfQorCiAgIC8qCiAgICAgV2UgcmVwbGFjZSBjaGFy YWN0ZXJzIGZyb20gdGhlIGVuZCB0byB0aGUgYmVnaW5uaW5nCiAgICovCkBAIC0zNjM2LDYgKzM2 OTIsOCBAQCBTdHJpbmcgKkl0ZW1fZnVuY19xdW90ZTo6dmFsX3N0cihTdHJpbmcgCiAgICAgfQog ICB9CiAgICp0bz0gJ1wnJzsKKworcmV0OgogICB0bXBfdmFsdWUubGVuZ3RoKG5ld19sZW5ndGgp OwogICB0bXBfdmFsdWUuc2V0X2NoYXJzZXQoY29sbGF0aW9uLmNvbGxhdGlvbik7CiAgIG51bGxf dmFsdWU9IDA7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL2l0ZW1fc3RyZnVuYy5oJwotLS0gYS9z cWwvaXRlbV9zdHJmdW5jLmgJMjAxMS0wMi0xMCAwODo0NzowNSArMDAwMAorKysgYi9zcWwvaXRl bV9zdHJmdW5jLmgJMjAxMS0wMy0wNCAxNDo1OTozMiArMDAwMApAQCAtODA4LDkgKzgwOCwxMCBA QCBwdWJsaWM6CiAgIFN0cmluZyAqdmFsX3N0cihTdHJpbmcgKik7CiAgIHZvaWQgZml4X2xlbmd0 aF9hbmRfZGVjKCkKICAgewotICAgIHVsb25nbG9uZyBtYXhfcmVzdWx0X2xlbmd0aD0gKHVsb25n bG9uZykgYXJnc1swXS0+bWF4X2xlbmd0aCAqIDIgKyAyOwotICAgIG1heF9sZW5ndGg9ICh1aW50 MzIpIG1pbihtYXhfcmVzdWx0X2xlbmd0aCwgTUFYX0JMT0JfV0lEVEgpOwogICAgIGNvbGxhdGlv bi5zZXQoYXJnc1swXS0+Y29sbGF0aW9uKTsKKyAgICB1bG9uZ2xvbmcgbWF4X3Jlc3VsdF9sZW5n dGg9ICh1bG9uZ2xvbmcpIGFyZ3NbMF0tPm1heF9sZW5ndGggKiAyICsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAyICogY29sbGF0aW9uLmNvbGxhdGlvbi0+bWJtYXhsZW47Cisg ICAgbWF4X2xlbmd0aD0gKHVpbnQzMikgbWluKG1heF9yZXN1bHRfbGVuZ3RoLCBNQVhfQkxPQl9X SURUSCk7CiAgIH0KIH07CiAKCk5vIGJ1bmRsZSAocmVhc29uOiByZXZpc2lvbiBpcyBhIG1lcmdl ICh5b3UgY2FuIGZvcmNlIGdlbmVyYXRpb24gb2YgYSBidW5kbGUgd2l0aCBlbnYgdmFyIEJaUl9G T1JDRV9CVU5ETEU9MSkpLg==