From: marko.makela Date: October 19 2010 6:35am Subject: bzr commit into mysql-5.5-innodb branch (marko.makela:3187) Bug#56680 List-Archive: http://lists.mysql.com/commits/121052 X-Bug: 56680 Message-Id: <201010190636.o9J6C6Zx003909@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0114642431==" --===============0114642431== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjUtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAxMDE4MTIxNjIzLTIycmhr aXZoY2Z3eW45MGIKCiAzMTg3IE1hcmtvIE3DpGtlbMOkCTIwMTAtMTAtMTkgW21lcmdlXQogICAg ICBNZXJnZSBCdWcgIzU2NjgwIGZyb20gbXlzcWwtNS4xLgogICAgICAKICAgICAgQWRkaXRpb25h bCBmaXhlcyBpbiA1LjU6CiAgICAgIAogICAgICBpYnVmX3NldF9kZWxfbWFyaygpOiBBZGQgZGlh Z25vc3RpY3Mgd2hlbiBzZXR0aW5nIGEgYnVmZmVyZWQgZGVsZXRlLW1hcmsgZmFpbHMuCiAgICAg IAogICAgICBpYnVmX2RlbGV0ZSgpOiBDb3JyZWN0IGEgbWlzbGVhZGluZyBjb21tZW50IGFib3V0 IG5vbi1mb3VuZCByZWNvcmRzLgogICAgICAKICAgICAgcmVjX3ByaW50KCk6IEFkZCBhIGNvbnN0 IHF1YWxpZmllciB0byB0aGUgaW5kZXggcGFyYW1ldGVyLgogICAgICAKICAgICAgQnVnICM1NjY4 MCB3cm9uZyBJbm5vREIgcmVzdWx0cyBmcm9tIGEgY2FzZS1pbnNlbnNpdGl2ZSBjb3ZlcmluZyBp bmRleAogICAgICAKICAgICAgcm93X3NlYXJjaF9mb3JfbXlzcWwoKTogV2hlbiBhIHNlY29uZGFy eSBpbmRleCByZWNvcmQgbWlnaHQgbm90IGJlCiAgICAgIHZpc2libGUgaW4gdGhlIGN1cnJlbnQg dHJhbnNhY3Rpb24ncyByZWFkIHZpZXcgYW5kIHdlIGNvbnN1bHQgdGhlCiAgICAgIGNsdXN0ZXJl ZCBpbmRleCBhbmQgb3B0aW9uYWxseSBzb21lIHVuZG8gbG9nIHJlY29yZHMsIHJldHVybiB0aGUK ICAgICAgcmVsZXZhbnQgY29sdW1ucyBvZiB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZCB0byBN eVNRTCBpbnN0ZWFkIG9mIHRoZQogICAgICBzZWNvbmRhcnkgaW5kZXggcmVjb3JkLgogICAgICAK ICAgICAgaWJ1Zl9pbnNlcnRfdG9faW5kZXhfcGFnZV9sb3coKTogTmV3IGZ1bmN0aW9uLCByZWZh Y3RvcmVkIGZyb20KICAgICAgaWJ1Zl9pbnNlcnRfdG9faW5kZXhfcGFnZSgpLgogICAgICAKICAg ICAgaWJ1Zl9pbnNlcnRfdG9faW5kZXhfcGFnZSgpOiBXaGVuIHdlIGFyZSBpbnNlcnRpbmcgYSBy ZWNvcmQgaW4gcGxhY2UKICAgICAgb2YgYSBkZWxldGUtbWFya2VkIHJlY29yZCBhbmQgc29tZSBm aWVsZHMgb2YgdGhlIHJlY29yZCBkaWZmZXIsIHVwZGF0ZQogICAgICB0aGF0IHJlY29yZCBqdXN0 IGxpa2Ugcm93X2luc19zZWNfaW5kZXhfZW50cnlfYnlfbW9kaWZ5KCkgd291bGQgZG8uCiAgICAg IAogICAgICBidHJfY3VyX3VwZGF0ZV9hbGxvY196aXAoKTogTWFrZSB0aGUgZnVuY3Rpb24gcHVi bGljLgogICAgICAKICAgICAgbXlzcWxfcm93X3RlbXBsX3Q6IEFkZCBjbHVzdF9yZWNfZmllbGRf bm8uCiAgICAgIAogICAgICByb3dfc2VsX3N0b3JlX215c3FsX3JlYygpLCByb3dfc2VsX3B1c2hf Y2FjaGVfcm93X2Zvcl9teXNxbCgpOiBBZGQgdGhlCiAgICAgIGZsYWcgcmVjX2NsdXN0LCBmb3Ig cmV0dXJuaW5nIGRhdGEgYXQgY2x1c3RfcmVjX2ZpZWxkX25vIGluc3RlYWQgb2YKICAgICAgcmVj X2ZpZWxkX25vLiBSZXN1cnJlY3QgdGhlIGRlYnVnIGFzc2VydGlvbiB0aGF0IHRoZSByZWNvcmQg bm90IGJlCiAgICAgIG1hcmtlZCBmb3IgZGVsZXRpb24uIChCdWcgIzU1NjI2KQogICAgICAKICAg ICAgW1VOSVZfREVCVUcgfHwgVU5JVl9JQlVGX0RFQlVHXSBpYnVmX2RlYnVnLCBidWZfcGFnZV9n ZXRfZ2VuKCksCiAgICAgIGJ1Zl9mbHVzaF9wYWdlX3RyeSgpOgogICAgICBJbXBsZW1lbnQgaW5u b2RiX2NoYW5nZV9idWZmZXJpbmdfZGVidWc9MSBmb3IgZXZpY3RpbmcgcGFnZXMgZnJvbSB0aGUK ICAgICAgYnVmZmVyIHBvb2wsIHNvIHRoYXQgY2hhbmdlIGJ1ZmZlcmluZyB3aWxsIGJlIGF0dGVt cHRlZCBtb3JlCiAgICAgIGZyZXF1ZW50bHkuCgogICAgYWRkZWQ6CiAgICAgIG15c3FsLXRlc3Qv c3VpdGUvaW5ub2RiL3IvaW5ub2RiX2J1ZzU2NjgwLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1 aXRlL2lubm9kYi90L2lubm9kYl9idWc1NjY4MC50ZXN0CiAgICBtb2RpZmllZDoKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1 ZjBidWYuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwZmx1LmMKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2li dWYvaWJ1ZjBpYnVmLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaAog ICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGZsdS5oCiAgICAgIHN0b3JhZ2UvaW5u b2Jhc2UvaW5jbHVkZS9pYnVmMGlidWYuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv cmVtMHJlYy5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwbXlzcWwuaAogICAg ICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHVwZC5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvcmVtL3JlbTByZWMuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbXlzcWwuYwog ICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2VsLmMKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9yb3cvcm93MHVwZC5jCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYi9y L2lubm9kYl9idWc1NjY4MC5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3Iv aW5ub2RiX2J1ZzU2NjgwLnJlc3VsdAkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215 c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiX2J1ZzU2NjgwLnJlc3VsdAlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTAxOTA2MzUxNC1rNjNyZHM4NXNqNW8wZmRkCkBAIC0w LDAgKzEsMTA5IEBACitTRVQgR0xPQkFMIHR4X2lzb2xhdGlvbj0nUkVQRUFUQUJMRS1SRUFEJzsK K1NFVCBHTE9CQUwgaW5ub2RiX2ZpbGVfZm9ybWF0PUJhcnJhY3VkYTsKK1NFVCBHTE9CQUwgaW5u b2RiX2ZpbGVfcGVyX3RhYmxlPW9uOworQ1JFQVRFIFRBQkxFIGJ1ZzU2NjgwKAorYSBJTlQgQVVU T19JTkNSRU1FTlQgUFJJTUFSWSBLRVksCitiIENIQVIoMSksCitjIElOVCwKK0lOREVYKGIpKQor RU5HSU5FPUlubm9EQjsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFZBTFVFUygwLCd4JywxKTsKK0JF R0lOOworU0VMRUNUIGIgRlJPTSBidWc1NjY4MDsKK2IKK3gKK0JFR0lOOworVVBEQVRFIGJ1ZzU2 NjgwIFNFVCBiPSdYJzsKK1NFTEVDVCBiIEZST00gYnVnNTY2ODA7CitiCit4CitTRUxFQ1QgKiBG Uk9NIGJ1ZzU2NjgwOworYQliCWMKKzEJeAkxCitST0xMQkFDSzsKK1NFTEVDVCBiIEZST00gYnVn NTY2ODA7CitiCit4CitTRVQgR0xPQkFMIHR4X2lzb2xhdGlvbj0nUkVBRC1VTkNPTU1JVFRFRCc7 CitJTlNFUlQgSU5UTyBidWc1NjY4MCBTRUxFQ1QgMCxiLGMgRlJPTSBidWc1NjY4MDsKK0lOU0VS VCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOworSU5TRVJUIElOVE8g YnVnNTY2ODAgU0VMRUNUIDAsYixjIEZST00gYnVnNTY2ODA7CitJTlNFUlQgSU5UTyBidWc1NjY4 MCBTRUxFQ1QgMCxiLGMgRlJPTSBidWc1NjY4MDsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVD VCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOworSU5TRVJUIElOVE8gYnVnNTY2ODAgU0VMRUNUIDAsYixj IEZST00gYnVnNTY2ODA7CitJTlNFUlQgSU5UTyBidWc1NjY4MCBTRUxFQ1QgMCxiLGMgRlJPTSBi dWc1NjY4MDsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2Njgw OworSU5TRVJUIElOVE8gYnVnNTY2ODAgU0VMRUNUIDAsYixjIEZST00gYnVnNTY2ODA7CitJTlNF UlQgSU5UTyBidWc1NjY4MCBTRUxFQ1QgMCxiLGMgRlJPTSBidWc1NjY4MDsKK0lOU0VSVCBJTlRP IGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOworQkVHSU47CitTRUxFQ1QgYiBG Uk9NIGJ1ZzU2NjgwIExJTUlUIDI7CitiCit4Cit4CitCRUdJTjsKK0RFTEVURSBGUk9NIGJ1ZzU2 NjgwIFdIRVJFIGE9MTsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFZBTFVFUygxLCdYJywxKTsKK1NF TEVDVCBiIEZST00gYnVnNTY2ODAgTElNSVQgMzsKK2IKK1gKK3gKK3gKK1NFTEVDVCBiIEZST00g YnVnNTY2ODAgTElNSVQgMjsKK2IKK3gKK3gKK0NIRUNLIFRBQkxFIGJ1ZzU2NjgwOworVGFibGUJ T3AJTXNnX3R5cGUJTXNnX3RleHQKK3Rlc3QuYnVnNTY2ODAJY2hlY2sJc3RhdHVzCU9LCitST0xM QkFDSzsKK1NFTEVDVCBiIEZST00gYnVnNTY2ODAgTElNSVQgMjsKK2IKK3gKK3gKK0NIRUNLIFRB QkxFIGJ1ZzU2NjgwOworVGFibGUJT3AJTXNnX3R5cGUJTXNnX3RleHQKK3Rlc3QuYnVnNTY2ODAJ Y2hlY2sJc3RhdHVzCU9LCitTRUxFQ1QgYiBGUk9NIGJ1ZzU2NjgwIExJTUlUIDI7CitiCit4Cit4 CitDUkVBVEUgVEFCTEUgYnVnNTY2ODBfMigKK2EgSU5UIEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkg S0VZLAorYiBWQVJDSEFSKDIpIENIQVJTRVQgbGF0aW4xIENPTExBVEUgbGF0aW4xX2dlcm1hbjJf Y2ksCitjIElOVCwKK0lOREVYKGIpKQorRU5HSU5FPUlubm9EQjsKK0lOU0VSVCBJTlRPIGJ1ZzU2 NjgwXzIgU0VMRUNUIDAsX2xhdGluMSAweGRmLGMgRlJPTSBidWc1NjY4MDsKK0JFR0lOOworU0VM RUNUIEhFWChiKSBGUk9NIGJ1ZzU2NjgwXzIgTElNSVQgMjsKK0hFWChiKQorREYKK0RGCitERUxF VEUgRlJPTSBidWc1NjY4MF8yIFdIRVJFIGE9MTsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwXzIgVkFM VUVTKDEsJ1NTJywxKTsKK1NFTEVDVCBIRVgoYikgRlJPTSBidWc1NjY4MF8yIExJTUlUIDM7CitI RVgoYikKKzUzNTMKK0RGCitERgorQ0hFQ0sgVEFCTEUgYnVnNTY2ODBfMjsKK1RhYmxlCU9wCU1z Z190eXBlCU1zZ190ZXh0Cit0ZXN0LmJ1ZzU2NjgwXzIJY2hlY2sJc3RhdHVzCU9LCitBTFRFUiBU QUJMRSBidWc1NjY4MF8yIFJPV19GT1JNQVQ9Q09NUFJFU1NFRCBLRVlfQkxPQ0tfU0laRT0xOwor U0VMRUNUIEhFWChiKSBGUk9NIGJ1ZzU2NjgwXzIgTElNSVQgMjsKK0hFWChiKQorNTM1MworREYK K0RFTEVURSBGUk9NIGJ1ZzU2NjgwXzIgV0hFUkUgYT0xOworSU5TRVJUIElOVE8gYnVnNTY2ODBf MiBWQUxVRVMoMSxfbGF0aW4xIDB4ZGYsMSk7CitTRUxFQ1QgSEVYKGIpIEZST00gYnVnNTY2ODBf MiBMSU1JVCAzOworSEVYKGIpCitERgorREYKK0RGCitDSEVDSyBUQUJMRSBidWc1NjY4MF8yOwor VGFibGUJT3AJTXNnX3R5cGUJTXNnX3RleHQKK3Rlc3QuYnVnNTY2ODBfMgljaGVjawlzdGF0dXMJ T0sKK0RST1AgVEFCTEUgYnVnNTY2ODBfMjsKK0RST1AgVEFCTEUgYnVnNTY2ODA7Cgo9PT0gYWRk ZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTY2ODAudGVzdCcK LS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTY2ODAudGVzdAkxOTcw LTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5u b2RiX2J1ZzU2NjgwLnRlc3QJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEwMTkw NjM1MTQtazYzcmRzODVzajVvMGZkZApAQCAtMCwwICsxLDE0MiBAQAorIworIyBCdWcgIzU2Njgw IElubm9EQiBtYXkgcmV0dXJuIHdyb25nIHJlc3VsdHMgZnJvbSBhIGNhc2UtaW5zZW5zaXRpdmUg aW5kZXgKKyMKKy0tIHNvdXJjZSBpbmNsdWRlL2hhdmVfaW5ub2RiLmluYworCistLSBkaXNhYmxl X3F1ZXJ5X2xvZworU0VUIEB0eF9pc29sYXRpb25fb3JpZyA9IEBAdHhfaXNvbGF0aW9uOworU0VU IEBpbm5vZGJfZmlsZV9wZXJfdGFibGVfb3JpZyA9IEBAaW5ub2RiX2ZpbGVfcGVyX3RhYmxlOwor U0VUIEBpbm5vZGJfZmlsZV9mb3JtYXRfb3JpZyA9IEBAaW5ub2RiX2ZpbGVfZm9ybWF0OworU0VU IEBpbm5vZGJfZmlsZV9mb3JtYXRfbWF4X29yaWcgPSBAQGlubm9kYl9maWxlX2Zvcm1hdF9tYXg7 CisjIFRoZSBmbGFnIGlubm9kYl9jaGFuZ2VfYnVmZmVyaW5nX2RlYnVnIGlzIG9ubHkgYXZhaWxh YmxlIGluIGRlYnVnIGJ1aWxkcy4KKyMgSXQgaW5zdHJ1Y3RzIElubm9EQiB0byB0cnkgdG8gZXZp Y3QgcGFnZXMgZnJvbSB0aGUgYnVmZmVyIHBvb2wgd2hlbgorIyBjaGFuZ2UgYnVmZmVyaW5nIGlz IHBvc3NpYmxlLCBzbyB0aGF0IHRoZSBjaGFuZ2UgYnVmZmVyIHdpbGwgYmUgdXNlZAorIyB3aGVu ZXZlciBwb3NzaWJsZS4KKy0tIGVycm9yIDAsRVJfVU5LTk9XTl9TWVNURU1fVkFSSUFCTEUKK1NF VCBAaW5ub2RiX2NoYW5nZV9idWZmZXJpbmdfZGVidWdfb3JpZyA9IEBAaW5ub2RiX2NoYW5nZV9i dWZmZXJpbmdfZGVidWc7CistLSBlcnJvciAwLEVSX1VOS05PV05fU1lTVEVNX1ZBUklBQkxFCitT RVQgR0xPQkFMIGlubm9kYl9jaGFuZ2VfYnVmZmVyaW5nX2RlYnVnID0gMTsKKy0tIGVuYWJsZV9x dWVyeV9sb2cKK1NFVCBHTE9CQUwgdHhfaXNvbGF0aW9uPSdSRVBFQVRBQkxFLVJFQUQnOworU0VU IEdMT0JBTCBpbm5vZGJfZmlsZV9mb3JtYXQ9QmFycmFjdWRhOworU0VUIEdMT0JBTCBpbm5vZGJf ZmlsZV9wZXJfdGFibGU9b247CisKK0NSRUFURSBUQUJMRSBidWc1NjY4MCgKKyAgICAgICBhIElO VCBBVVRPX0lOQ1JFTUVOVCBQUklNQVJZIEtFWSwKKyAgICAgICBiIENIQVIoMSksCisgICAgICAg YyBJTlQsCisgICAgICAgSU5ERVgoYikpCitFTkdJTkU9SW5ub0RCOworCitJTlNFUlQgSU5UTyBi dWc1NjY4MCBWQUxVRVMoMCwneCcsMSk7CitCRUdJTjsKK1NFTEVDVCBiIEZST00gYnVnNTY2ODA7 CisKK2Nvbm5lY3QgKGNvbjEsbG9jYWxob3N0LHJvb3QsLCk7Citjb25uZWN0aW9uIGNvbjE7CitC RUdJTjsKK1VQREFURSBidWc1NjY4MCBTRVQgYj0nWCc7CisKK2Nvbm5lY3Rpb24gZGVmYXVsdDsK KyMgVGhpcyBzaG91bGQgcmV0dXJuIHRoZSBsYXN0IGNvbW1pdHRlZCB2YWx1ZSAneCcsIGJ1dCB3 b3VsZCByZXR1cm4gJ1gnCisjIGR1ZSB0byBhIGJ1ZyBpbiByb3dfc2VhcmNoX2Zvcl9teXNxbCgp LgorU0VMRUNUIGIgRlJPTSBidWc1NjY4MDsKKyMgVGhpcyB3b3VsZCBhbHdheXMgcmV0dXJuIHRo ZSBsYXN0IGNvbW1pdHRlZCB2YWx1ZSAneCcuCitTRUxFQ1QgKiBGUk9NIGJ1ZzU2NjgwOworCitj b25uZWN0aW9uIGNvbjE7CitST0xMQkFDSzsKK2Rpc2Nvbm5lY3QgY29uMTsKKworY29ubmVjdGlv biBkZWZhdWx0OworCitTRUxFQ1QgYiBGUk9NIGJ1ZzU2NjgwOworCisjIEZvciB0aGUgcmVzdCBv ZiB0aGlzIHRlc3QsIHVzZSB0aGUgUkVBRCBVTkNPTU1JVFRFRCBpc29sYXRpb24gbGV2ZWwKKyMg dG8gc2VlIHdoYXQgZXhpc3RzIGluIHRoZSBzZWNvbmRhcnkgaW5kZXguCitTRVQgR0xPQkFMIHR4 X2lzb2xhdGlvbj0nUkVBRC1VTkNPTU1JVFRFRCc7CisKKyMgQ3JlYXRlIGVub3VnaCByb3dzIGZv ciB0aGUgdGFibGUsIHNvIHRoYXQgdGhlIGluc2VydCBidWZmZXIgd2lsbCBiZQorIyB1c2VkIGZv ciBtb2RpZnlpbmcgdGhlIHNlY29uZGFyeSBpbmRleCBwYWdlLiBUaGVyZSBtdXN0IGJlIG11bHRp cGxlCisjIGluZGV4IHBhZ2VzLCBiZWNhdXNlIGNoYW5nZXMgdG8gdGhlIHJvb3QgcGFnZSBhcmUg bmV2ZXIgYnVmZmVyZWQuCisKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9N IGJ1ZzU2NjgwOworSU5TRVJUIElOVE8gYnVnNTY2ODAgU0VMRUNUIDAsYixjIEZST00gYnVnNTY2 ODA7CitJTlNFUlQgSU5UTyBidWc1NjY4MCBTRUxFQ1QgMCxiLGMgRlJPTSBidWc1NjY4MDsKK0lO U0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOworSU5TRVJUIElO VE8gYnVnNTY2ODAgU0VMRUNUIDAsYixjIEZST00gYnVnNTY2ODA7CitJTlNFUlQgSU5UTyBidWc1 NjY4MCBTRUxFQ1QgMCxiLGMgRlJPTSBidWc1NjY4MDsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNF TEVDVCAwLGIsYyBGUk9NIGJ1ZzU2NjgwOworSU5TRVJUIElOVE8gYnVnNTY2ODAgU0VMRUNUIDAs YixjIEZST00gYnVnNTY2ODA7CitJTlNFUlQgSU5UTyBidWc1NjY4MCBTRUxFQ1QgMCxiLGMgRlJP TSBidWc1NjY4MDsKK0lOU0VSVCBJTlRPIGJ1ZzU2NjgwIFNFTEVDVCAwLGIsYyBGUk9NIGJ1ZzU2 NjgwOworSU5TRVJUIElOVE8gYnVnNTY2ODAgU0VMRUNUIDAsYixjIEZST00gYnVnNTY2ODA7CisK K0JFR0lOOworU0VMRUNUIGIgRlJPTSBidWc1NjY4MCBMSU1JVCAyOworCitjb25uZWN0IChjb24x LGxvY2FsaG9zdCxyb290LCwpOworY29ubmVjdGlvbiBjb24xOworQkVHSU47CitERUxFVEUgRlJP TSBidWc1NjY4MCBXSEVSRSBhPTE7CisjIFRoaXMgc2hvdWxkIGJlIGJ1ZmZlcmVkLCBpZiBpbm5v ZGJfY2hhbmdlX2J1ZmZlcmluZ19kZWJ1ZyA9IDEgaXMgaW4gZWZmZWN0LgorSU5TRVJUIElOVE8g YnVnNTY2ODAgVkFMVUVTKDEsJ1gnLDEpOworCisjIFRoaXMgc2hvdWxkIGZvcmNlIGFuIGluc2Vy dCBidWZmZXIgbWVyZ2UsIGFuZCByZXR1cm4gJ1gnIGluIHRoZSBmaXJzdCByb3cuCitTRUxFQ1Qg YiBGUk9NIGJ1ZzU2NjgwIExJTUlUIDM7CisKK2Nvbm5lY3Rpb24gZGVmYXVsdDsKK1NFTEVDVCBi IEZST00gYnVnNTY2ODAgTElNSVQgMjsKK0NIRUNLIFRBQkxFIGJ1ZzU2NjgwOworCitjb25uZWN0 aW9uIGNvbjE7CitST0xMQkFDSzsKK1NFTEVDVCBiIEZST00gYnVnNTY2ODAgTElNSVQgMjsKK0NI RUNLIFRBQkxFIGJ1ZzU2NjgwOworCitjb25uZWN0aW9uIGRlZmF1bHQ7CitkaXNjb25uZWN0IGNv bjE7CisKK1NFTEVDVCBiIEZST00gYnVnNTY2ODAgTElNSVQgMjsKKworQ1JFQVRFIFRBQkxFIGJ1 ZzU2NjgwXzIoCisgICAgICAgYSBJTlQgQVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVksCisgICAg ICAgYiBWQVJDSEFSKDIpIENIQVJTRVQgbGF0aW4xIENPTExBVEUgbGF0aW4xX2dlcm1hbjJfY2ks CisgICAgICAgYyBJTlQsCisgICAgICAgSU5ERVgoYikpCitFTkdJTkU9SW5ub0RCOworCitJTlNF UlQgSU5UTyBidWc1NjY4MF8yIFNFTEVDVCAwLF9sYXRpbjEgMHhkZixjIEZST00gYnVnNTY2ODA7 CisKK0JFR0lOOworU0VMRUNUIEhFWChiKSBGUk9NIGJ1ZzU2NjgwXzIgTElNSVQgMjsKK0RFTEVU RSBGUk9NIGJ1ZzU2NjgwXzIgV0hFUkUgYT0xOworIyBUaGlzIHNob3VsZCBiZSBidWZmZXJlZCwg aWYgaW5ub2RiX2NoYW5nZV9idWZmZXJpbmdfZGVidWcgPSAxIGlzIGluIGVmZmVjdC4KK0lOU0VS VCBJTlRPIGJ1ZzU2NjgwXzIgVkFMVUVTKDEsJ1NTJywxKTsKKworIyBUaGlzIHNob3VsZCBmb3Jj ZSBhbiBpbnNlcnQgYnVmZmVyIG1lcmdlLCBhbmQgcmV0dXJuICdTUycgaW4gdGhlIGZpcnN0IHJv dy4KK1NFTEVDVCBIRVgoYikgRlJPTSBidWc1NjY4MF8yIExJTUlUIDM7CitDSEVDSyBUQUJMRSBi dWc1NjY4MF8yOworCisjIFRlc3QgdGhpcyB3aXRoIGNvbXByZXNzZWQgdGFibGVzLgorQUxURVIg VEFCTEUgYnVnNTY2ODBfMiBST1dfRk9STUFUPUNPTVBSRVNTRUQgS0VZX0JMT0NLX1NJWkU9MTsK KworU0VMRUNUIEhFWChiKSBGUk9NIGJ1ZzU2NjgwXzIgTElNSVQgMjsKK0RFTEVURSBGUk9NIGJ1 ZzU2NjgwXzIgV0hFUkUgYT0xOworIyBUaGlzIHNob3VsZCBiZSBidWZmZXJlZCwgaWYgaW5ub2Ri X2NoYW5nZV9idWZmZXJpbmdfZGVidWcgPSAxIGlzIGluIGVmZmVjdC4KK0lOU0VSVCBJTlRPIGJ1 ZzU2NjgwXzIgVkFMVUVTKDEsX2xhdGluMSAweGRmLDEpOworCisjIFRoaXMgc2hvdWxkIGZvcmNl IGFuIGluc2VydCBidWZmZXIgbWVyZ2UsIGFuZCByZXR1cm4gMHhkZiBpbiB0aGUgZmlyc3Qgcm93 LgorU0VMRUNUIEhFWChiKSBGUk9NIGJ1ZzU2NjgwXzIgTElNSVQgMzsKK0NIRUNLIFRBQkxFIGJ1 ZzU2NjgwXzI7CisKK0RST1AgVEFCTEUgYnVnNTY2ODBfMjsKK0RST1AgVEFCTEUgYnVnNTY2ODA7 CisKKy0tIGRpc2FibGVfcXVlcnlfbG9nCitTRVQgR0xPQkFMIHR4X2lzb2xhdGlvbiA9IEB0eF9p c29sYXRpb25fb3JpZzsKK1NFVCBHTE9CQUwgaW5ub2RiX2ZpbGVfcGVyX3RhYmxlID0gQGlubm9k Yl9maWxlX3Blcl90YWJsZV9vcmlnOworU0VUIEdMT0JBTCBpbm5vZGJfZmlsZV9mb3JtYXQgPSBA aW5ub2RiX2ZpbGVfZm9ybWF0X29yaWc7CitTRVQgR0xPQkFMIGlubm9kYl9maWxlX2Zvcm1hdF9t YXggPSBAaW5ub2RiX2ZpbGVfZm9ybWF0X21heF9vcmlnOworLS0gZXJyb3IgMCwgRVJfVU5LTk9X Tl9TWVNURU1fVkFSSUFCTEUKK1NFVCBHTE9CQUwgaW5ub2RiX2NoYW5nZV9idWZmZXJpbmdfZGVi dWcgPSBAaW5ub2RiX2NoYW5nZV9idWZmZXJpbmdfZGVidWdfb3JpZzsKCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvYnRyL2J0cjBjdXIuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAxMDE4MTIx NjIzLTIycmhraXZoY2Z3eW45MGIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5j CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMDE5MDYzNTE0LWs2M3Jkczg1c2o1 bzBmZGQKQEAgLTE3NDQsNyArMTc0NCw3IEBAIGZ1bmNfZXhpdDoKIFNlZSBpZiB0aGVyZSBpcyBl bm91Z2ggcGxhY2UgaW4gdGhlIHBhZ2UgbW9kaWZpY2F0aW9uIGxvZyB0byBsb2cKIGFuIHVwZGF0 ZS1pbi1wbGFjZS4KIEByZXR1cm4JVFJVRSBpZiBlbm91Z2ggcGxhY2UgKi8KLXN0YXRpYworVU5J Vl9JTlRFUk4KIGlib29sCiBidHJfY3VyX3VwZGF0ZV9hbGxvY196aXAoCiAvKj09PT09PT09PT09 PT09PT09PT09PSovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVm MGJ1Zi5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwYnVmLmMJcmV2aWQ6dmFzaWwu ZGltb3ZAb3JhY2xlLmNvbS0yMDEwMTAxODEyMTYyMy0yMnJoa2l2aGNmd3luOTBiCisrKyBiL3N0 b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDEwMTAxOTA2MzUxNC1rNjNyZHM4NXNqNW8wZmRkCkBAIC0zMDA4LDYgKzMwMDgsNDYgQEAg d2FpdF91bnRpbF91bmZpeGVkOgogCWJ5dGVzLiAqLwogCVVOSVZfTUVNX0FTU0VSVF9SVygmYmxv Y2stPnBhZ2UsIHNpemVvZiBibG9jay0+cGFnZSk7CiAjZW5kaWYKKyNpZiBkZWZpbmVkIFVOSVZf REVCVUcgfHwgZGVmaW5lZCBVTklWX0lCVUZfREVCVUcKKwlpZiAoKG1vZGUgPT0gQlVGX0dFVF9J Rl9JTl9QT09MIHx8IG1vZGUgPT0gQlVGX0dFVF9JRl9JTl9QT09MX09SX1dBVENIKQorCSAgICAm JiBpYnVmX2RlYnVnKSB7CisJCS8qIFRyeSB0byBldmljdCB0aGUgYmxvY2sgZnJvbSB0aGUgYnVm ZmVyIHBvb2wsIHRvIHVzZSB0aGUKKwkJaW5zZXJ0IGJ1ZmZlciAoY2hhbmdlIGJ1ZmZlcikgYXMg bXVjaCBhcyBwb3NzaWJsZS4gKi8KKworCQlpZiAoYnVmX0xSVV9mcmVlX2Jsb2NrKCZibG9jay0+ cGFnZSwgVFJVRSwgTlVMTCkKKwkJICAgID09IEJVRl9MUlVfRlJFRUQpIHsKKwkJCW11dGV4X2V4 aXQoJmJsb2NrLT5tdXRleCk7CisJCQlpZiAobW9kZSA9PSBCVUZfR0VUX0lGX0lOX1BPT0xfT1Jf V0FUQ0gpIHsKKwkJCQkvKiBTZXQgdGhlIHdhdGNoLCBhcyBpdCB3b3VsZCBoYXZlCisJCQkJYmVl biBzZXQgaWYgdGhlIHBhZ2Ugd2VyZSBub3QgaW4gdGhlCisJCQkJYnVmZmVyIHBvb2wgaW4gdGhl IGZpcnN0IHBsYWNlLiAqLworCQkJCWJsb2NrID0gKGJ1Zl9ibG9ja190KikgYnVmX3Bvb2xfd2F0 Y2hfc2V0KAorCQkJCQlzcGFjZSwgb2Zmc2V0LCBmb2xkKTsKKworCQkJCWlmIChVTklWX0xJS0VM WV9OVUxMKGJsb2NrKSkgeworCisJCQkJCS8qIFRoZSBwYWdlIGVudGVyZWQgdGhlIGJ1ZmZlcgor CQkJCQlwb29sIGZvciBzb21lIHJlYXNvbi4gVHJ5IHRvCisJCQkJCWV2aWN0IGl0IGFnYWluLiAq LworCQkJCQlnb3RvIGdvdF9ibG9jazsKKwkJCQl9CisJCQl9CisJCQlidWZfcG9vbF9tdXRleF9l eGl0KGJ1Zl9wb29sKTsKKwkJCWZwcmludGYoc3RkZXJyLAorCQkJCSJpbm5vZGJfY2hhbmdlX2J1 ZmZlcmluZ19kZWJ1ZyBldmljdCAldSAldVxuIiwKKwkJCQkodW5zaWduZWQpIHNwYWNlLCAodW5z aWduZWQpIG9mZnNldCk7CisJCQlyZXR1cm4oTlVMTCk7CisJCX0gZWxzZSBpZiAoYnVmX2ZsdXNo X3BhZ2VfdHJ5KGJ1Zl9wb29sLCBibG9jaykpIHsKKwkJCWZwcmludGYoc3RkZXJyLAorCQkJCSJp bm5vZGJfY2hhbmdlX2J1ZmZlcmluZ19kZWJ1ZyBmbHVzaCAldSAldVxuIiwKKwkJCQkodW5zaWdu ZWQpIHNwYWNlLCAodW5zaWduZWQpIG9mZnNldCk7CisJCQlndWVzcyA9IGJsb2NrOworCQkJZ290 byBsb29wOworCQl9CisKKwkJLyogRmFpbGVkIHRvIGV2aWN0IHRoZSBwYWdlOyBjaGFuZ2UgaXQg ZGlyZWN0bHkgKi8KKwl9CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0lCVUZfREVCVUcg Ki8KIAogCWJ1Zl9ibG9ja19idWZfZml4X2luYyhibG9jaywgZmlsZSwgbGluZSk7CiAKCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwZmx1LmMnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2UvYnVmL2J1ZjBmbHUuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIw MTAxMDE4MTIxNjIzLTIycmhraXZoY2Z3eW45MGIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9idWYv YnVmMGZsdS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMDE5MDYzNTE0LWs2 M3Jkczg1c2o1bzBmZGQKQEAgLTExMzIsNiArMTEzMiw4MyBAQCBidWZfZmx1c2hfd3JpdGVfYmxv Y2tfbG93KAogCX0KIH0KIAorIyBpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklW X0lCVUZfREVCVUcKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK1dyaXRlcyBhIGZsdXNoYWJsZSBwYWdlIGFz eW5jaHJvbm91c2x5IGZyb20gdGhlIGJ1ZmZlciBwb29sIHRvIGEgZmlsZS4KK05PVEU6IGJ1Zl9w b29sX211dGV4IGFuZCBibG9jay0+bXV0ZXggbXVzdCBiZSBoZWxkIHVwb24gZW50ZXJpbmcgdGhp cworZnVuY3Rpb24sIGFuZCB0aGV5IHdpbGwgYmUgcmVsZWFzZWQgYnkgdGhpcyBmdW5jdGlvbiBh ZnRlciBmbHVzaGluZy4KK1RoaXMgaXMgbG9vc2VseSBiYXNlZCBvbiBidWZfZmx1c2hfYmF0Y2go KSBhbmQgYnVmX2ZsdXNoX3BhZ2UoKS4KK0ByZXR1cm4gVFJVRSBpZiB0aGUgcGFnZSB3YXMgZmx1 c2hlZCBhbmQgdGhlIG11dGV4ZXMgcmVsZWFzZWQgKi8KK1VOSVZfSU5URVJOCitpYm9vbAorYnVm X2ZsdXNoX3BhZ2VfdHJ5KAorLyo9PT09PT09PT09PT09PT0qLworCWJ1Zl9wb29sX3QqCWJ1Zl9w b29sLAkvKiE8IGluL291dDogYnVmZmVyIHBvb2wgaW5zdGFuY2UgKi8KKwlidWZfYmxvY2tfdCoJ YmxvY2spCQkvKiE8IGluL291dDogYnVmZmVyIGNvbnRyb2wgYmxvY2sgKi8KK3sKKwl1dF9hZChi dWZfcG9vbF9tdXRleF9vd24oYnVmX3Bvb2wpKTsKKwl1dF9hZChidWZfYmxvY2tfZ2V0X3N0YXRl KGJsb2NrKSA9PSBCVUZfQkxPQ0tfRklMRV9QQUdFKTsKKwl1dF9hZChtdXRleF9vd24oJmJsb2Nr LT5tdXRleCkpOworCisJaWYgKCFidWZfZmx1c2hfcmVhZHlfZm9yX2ZsdXNoKCZibG9jay0+cGFn ZSwgQlVGX0ZMVVNIX0xSVSkpIHsKKwkJcmV0dXJuKEZBTFNFKTsKKwl9CisKKwlpZiAoYnVmX3Bv b2wtPm5fZmx1c2hbQlVGX0ZMVVNIX0xSVV0gPiAwCisJICAgIHx8IGJ1Zl9wb29sLT5pbml0X2Zs dXNoW0JVRl9GTFVTSF9MUlVdKSB7CisJCS8qIFRoZXJlIGlzIGFscmVhZHkgYSBmbHVzaCBiYXRj aCBvZiB0aGUgc2FtZSB0eXBlIHJ1bm5pbmcgKi8KKwkJcmV0dXJuKEZBTFNFKTsKKwl9CisKKwli dWZfcG9vbC0+aW5pdF9mbHVzaFtCVUZfRkxVU0hfTFJVXSA9IFRSVUU7CisKKwlidWZfcGFnZV9z ZXRfaW9fZml4KCZibG9jay0+cGFnZSwgQlVGX0lPX1dSSVRFKTsKKworCWJ1Zl9wYWdlX3NldF9m bHVzaF90eXBlKCZibG9jay0+cGFnZSwgQlVGX0ZMVVNIX0xSVSk7CisKKwlpZiAoYnVmX3Bvb2wt Pm5fZmx1c2hbQlVGX0ZMVVNIX0xSVV0rKyA9PSAwKSB7CisKKwkJb3NfZXZlbnRfcmVzZXQoYnVm X3Bvb2wtPm5vX2ZsdXNoW0JVRl9GTFVTSF9MUlVdKTsKKwl9CisKKwkvKiBWRVJZIElNUE9SVEFO VDoKKwlCZWNhdXNlIGFueSB0aHJlYWQgbWF5IGNhbGwgdGhlIExSVSBmbHVzaCwgZXZlbiB3aGVu IG93bmluZworCWxvY2tzIG9uIHBhZ2VzLCB0byBhdm9pZCBkZWFkbG9ja3MsIHdlIG11c3QgbWFr ZSBzdXJlIHRoYXQgdGhlCisJcy1sb2NrIGlzIGFjcXVpcmVkIG9uIHRoZSBwYWdlIHdpdGhvdXQg d2FpdGluZzogdGhpcyBpcworCWFjY29tcGxpc2hlZCBiZWNhdXNlIGJ1Zl9mbHVzaF9yZWFkeV9m b3JfZmx1c2goKSBtdXN0IGhvbGQsCisJYW5kIHRoYXQgcmVxdWlyZXMgdGhlIHBhZ2Ugbm90IHRv IGJlIGJ1ZmZlcmZpeGVkLiAqLworCisJcndfbG9ja19zX2xvY2tfZ2VuKCZibG9jay0+bG9jaywg QlVGX0lPX1dSSVRFKTsKKworCS8qIE5vdGUgdGhhdCB0aGUgcy1sYXRjaCBpcyBhY3F1aXJlZCBi ZWZvcmUgcmVsZWFzaW5nIHRoZQorCWJ1Zl9wb29sIG11dGV4OiB0aGlzIGVuc3VyZXMgdGhhdCB0 aGUgbGF0Y2ggaXMgYWNxdWlyZWQKKwlpbW1lZGlhdGVseS4gKi8KKworCW11dGV4X2V4aXQoJmJs b2NrLT5tdXRleCk7CisJYnVmX3Bvb2xfbXV0ZXhfZXhpdChidWZfcG9vbCk7CisKKwkvKiBFdmVu IHRob3VnaCBibG9jayBpcyBub3QgcHJvdGVjdGVkIGJ5IGFueSBtdXRleCBhdCB0aGlzCisJcG9p bnQsIGl0IGlzIHNhZmUgdG8gYWNjZXNzIGJsb2NrLCBiZWNhdXNlIGl0IGlzIGlvX2ZpeGVkIGFu ZAorCW9sZGVzdF9tb2RpZmljYXRpb24gIT0gMC4gIFRodXMsIGl0IGNhbm5vdCBiZSByZWxvY2F0 ZWQgaW4gdGhlCisJYnVmZmVyIHBvb2wgb3IgcmVtb3ZlZCBmcm9tIGZsdXNoX2xpc3Qgb3IgTFJV X2xpc3QuICovCisKKwlidWZfZmx1c2hfd3JpdGVfYmxvY2tfbG93KCZibG9jay0+cGFnZSk7CisK KwlidWZfcG9vbF9tdXRleF9lbnRlcihidWZfcG9vbCk7CisJYnVmX3Bvb2wtPmluaXRfZmx1c2hb QlVGX0ZMVVNIX0xSVV0gPSBGQUxTRTsKKworCWlmIChidWZfcG9vbC0+bl9mbHVzaFtCVUZfRkxV U0hfTFJVXSA9PSAwKSB7CisJCS8qIFRoZSBydW5uaW5nIGZsdXNoIGJhdGNoIGhhcyBlbmRlZCAq LworCQlvc19ldmVudF9zZXQoYnVmX3Bvb2wtPm5vX2ZsdXNoW0JVRl9GTFVTSF9MUlVdKTsKKwl9 CisKKwlidWZfcG9vbF9tdXRleF9leGl0KGJ1Zl9wb29sKTsKKwlidWZfZmx1c2hfYnVmZmVyZWRf d3JpdGVzKCk7CisKKwlyZXR1cm4oVFJVRSk7Cit9CisjIGVuZGlmIC8qIFVOSVZfREVCVUcgfHwg VU5JVl9JQlVGX0RFQlVHICovCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFdyaXRlcyBhIGZsdXNoYWJs ZSBwYWdlIGFzeW5jaHJvbm91c2x5IGZyb20gdGhlIGJ1ZmZlciBwb29sIHRvIGEgZmlsZS4KIE5P VEU6IGluIHNpbXVsYXRlZCBhaW8gd2UgbXVzdCBjYWxsCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Rv cmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9oYW5kbGVyL2hhX2lubm9kYi5jYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAx MDE4MTIxNjIzLTIycmhraXZoY2Z3eW45MGIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVy L2hhX2lubm9kYi5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTAxOTA2MzUx NC1rNjNyZHM4NXNqNW8wZmRkCkBAIC00NjE1LDE3ICs0NjE1LDE4IEBAIGluY2x1ZGVfZmllbGQ6 CiAJCW5fcmVxdWVzdGVkX2ZpZWxkcysrOwogCiAJCXRlbXBsLT5jb2xfbm8gPSBpOworCQl0ZW1w bC0+Y2x1c3RfcmVjX2ZpZWxkX25vID0gZGljdF9jb2xfZ2V0X2NsdXN0X3BvcygKKwkJCWNvbCwg Y2x1c3RfaW5kZXgpOworCQl1dF9hZCh0ZW1wbC0+Y2x1c3RfcmVjX2ZpZWxkX25vICE9IFVMSU5U X1VOREVGSU5FRCk7CiAKIAkJaWYgKGluZGV4ID09IGNsdXN0X2luZGV4KSB7Ci0JCQl0ZW1wbC0+ cmVjX2ZpZWxkX25vID0gZGljdF9jb2xfZ2V0X2NsdXN0X3BvcygKLQkJCQljb2wsIGluZGV4KTsK KwkJCXRlbXBsLT5yZWNfZmllbGRfbm8gPSB0ZW1wbC0+Y2x1c3RfcmVjX2ZpZWxkX25vOwogCQl9 IGVsc2UgewogCQkJdGVtcGwtPnJlY19maWVsZF9ubyA9IGRpY3RfaW5kZXhfZ2V0X250aF9jb2xf cG9zKAogCQkJCQkJCQlpbmRleCwgaSk7Ci0JCX0KLQotCQlpZiAodGVtcGwtPnJlY19maWVsZF9u byA9PSBVTElOVF9VTkRFRklORUQpIHsKLQkJCXByZWJ1aWx0LT5uZWVkX3RvX2FjY2Vzc19jbHVz dGVyZWQgPSBUUlVFOworCQkJaWYgKHRlbXBsLT5yZWNfZmllbGRfbm8gPT0gVUxJTlRfVU5ERUZJ TkVEKSB7CisJCQkJcHJlYnVpbHQtPm5lZWRfdG9fYWNjZXNzX2NsdXN0ZXJlZCA9IFRSVUU7CisJ CQl9CiAJCX0KIAogCQlpZiAoZmllbGQtPm51bGxfcHRyKSB7CkBAIC00Njc1LDkgKzQ2NzYsNyBA QCBza2lwX2ZpZWxkOgogCQlmb3IgKGkgPSAwOyBpIDwgbl9yZXF1ZXN0ZWRfZmllbGRzOyBpKysp IHsKIAkJCXRlbXBsID0gcHJlYnVpbHQtPm15c3FsX3RlbXBsYXRlICsgaTsKIAotCQkJdGVtcGwt PnJlY19maWVsZF9ubyA9IGRpY3RfY29sX2dldF9jbHVzdF9wb3MoCi0JCQkJJmluZGV4LT50YWJs ZS0+Y29sc1t0ZW1wbC0+Y29sX25vXSwKLQkJCQljbHVzdF9pbmRleCk7CisJCQl0ZW1wbC0+cmVj X2ZpZWxkX25vID0gdGVtcGwtPmNsdXN0X3JlY19maWVsZF9ubzsKIAkJfQogCX0KIH0KQEAgLTEx MTYyLDYgKzExMTYxLDEzIEBAIHN0YXRpYyBNWVNRTF9TWVNWQVJfU1RSKGNoYW5nZV9idWZmZXJp bmcKICAgaW5ub2RiX2NoYW5nZV9idWZmZXJpbmdfdmFsaWRhdGUsCiAgIGlubm9kYl9jaGFuZ2Vf YnVmZmVyaW5nX3VwZGF0ZSwgImFsbCIpOwogCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRl ZmluZWQgVU5JVl9JQlVGX0RFQlVHCitzdGF0aWMgTVlTUUxfU1lTVkFSX1VJTlQoY2hhbmdlX2J1 ZmZlcmluZ19kZWJ1ZywgaWJ1Zl9kZWJ1ZywKKyAgUExVR0lOX1ZBUl9SUUNNREFSRywKKyAgIkRl YnVnIGZsYWdzIGZvciBJbm5vREIgY2hhbmdlIGJ1ZmZlcmluZyAoMD1ub25lKSIsCisgIE5VTEws IE5VTEwsIDAsIDAsIDEsIDApOworI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9JQlVGX0RF QlVHICovCisKIHN0YXRpYyBNWVNRTF9TWVNWQVJfVUxPTkcocmVhZF9haGVhZF90aHJlc2hvbGQs IHNydl9yZWFkX2FoZWFkX3RocmVzaG9sZCwKICAgUExVR0lOX1ZBUl9SUUNNREFSRywKICAgIk51 bWJlciBvZiBwYWdlcyB0aGF0IG11c3QgYmUgYWNjZXNzZWQgc2VxdWVudGlhbGx5IGZvciBJbm5v REIgdG8gIgpAQCAtMTEyMjUsNiArMTEyMzEsOSBAQCBzdGF0aWMgc3RydWN0IHN0X215c3FsX3N5 c192YXIqIGlubm9iYXNlCiAgIE1ZU1FMX1NZU1ZBUih1c2Vfc3lzX21hbGxvYyksCiAgIE1ZU1FM X1NZU1ZBUih1c2VfbmF0aXZlX2FpbyksCiAgIE1ZU1FMX1NZU1ZBUihjaGFuZ2VfYnVmZmVyaW5n KSwKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklWX0lCVUZfREVCVUcKKyAg TVlTUUxfU1lTVkFSKGNoYW5nZV9idWZmZXJpbmdfZGVidWcpLAorI2VuZGlmIC8qIFVOSVZfREVC VUcgfHwgVU5JVl9JQlVGX0RFQlVHICovCiAgIE1ZU1FMX1NZU1ZBUihyZWFkX2FoZWFkX3RocmVz aG9sZCksCiAgIE1ZU1FMX1NZU1ZBUihpb19jYXBhY2l0eSksCiAgIE1ZU1FMX1NZU1ZBUihwdXJn ZV90aHJlYWRzKSwKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2lidWYvaWJ1 ZjBpYnVmLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuYwlyZXZpZDp2 YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAxMDE4MTIxNjIzLTIycmhraXZoY2Z3eW45MGIKKysr IGIvc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5jCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTAxMDE5MDYzNTE0LWs2M3Jkczg1c2o1bzBmZGQKQEAgLTQ5LDYgKzQ5LDcg QEAgQ3JlYXRlZCA3LzE5LzE5OTcgSGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAiYnRyMGN1ci5oIgog I2luY2x1ZGUgImJ0cjBwY3VyLmgiCiAjaW5jbHVkZSAiYnRyMGJ0ci5oIgorI2luY2x1ZGUgInJv dzB1cGQuaCIKICNpbmNsdWRlICJzeW5jMHN5bmMuaCIKICNpbmNsdWRlICJkaWN0MGJvb3QuaCIK ICNpbmNsdWRlICJmdXQwbHN0LmgiCkBAIC0xOTIsNiArMTkzLDExIEBAIGFjY2VzcyBvcmRlciBy dWxlcy4gKi8KIC8qKiBPcGVyYXRpb25zIHRoYXQgY2FuIGN1cnJlbnRseSBiZSBidWZmZXJlZC4g Ki8KIFVOSVZfSU5URVJOIGlidWZfdXNlX3QJaWJ1Zl91c2UJCT0gSUJVRl9VU0VfQUxMOwogCisj aWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9JQlVGX0RFQlVHCisvKiogRmxh ZyB0byBjb250cm9sIGluc2VydCBidWZmZXIgZGVidWdnaW5nLiAqLworVU5JVl9JTlRFUk4gdWlu dAlpYnVmX2RlYnVnOworI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9JQlVGX0RFQlVHICov CisKIC8qKiBUaGUgaW5zZXJ0IGJ1ZmZlciBjb250cm9sIHN0cnVjdHVyZSAqLwogVU5JVl9JTlRF Uk4gaWJ1Zl90KglpYnVmCQkJPSBOVUxMOwogCkBAIC0yNzYxLDkgKzI3NjcsOCBAQCBpYnVmX2dl dF92b2x1bWVfYnVmZmVyZWRfY291bnQoCiAKIAlzd2l0Y2ggKGlidWZfb3ApIHsKIAljYXNlIElC VUZfT1BfSU5TRVJUOgotCQkvKiBJbnNlcnRzIGNhbiBiZSBkb25lIGJ5Ci0JCWJ0cl9jdXJfc2V0 X2RlbGV0ZWRfZmxhZ19mb3JfaWJ1ZigpLiAgQmVjYXVzZQotCQlkZWxldGUtbWFyayBhbmQgaW5z ZXJ0IG9wZXJhdGlvbnMgY2FuIGJlIHBvaW50aW5nIHRvCisJCS8qIEluc2VydHMgY2FuIGJlIGRv bmUgYnkgdXBkYXRpbmcgYSBkZWxldGUtbWFya2VkIHJlY29yZC4KKwkJQmVjYXVzZSBkZWxldGUt bWFyayBhbmQgaW5zZXJ0IG9wZXJhdGlvbnMgY2FuIGJlIHBvaW50aW5nIHRvCiAJCXRoZSBzYW1l IHJlY29yZHMsIHdlIG11c3Qgbm90IGNvdW50IGR1cGxpY2F0ZXMuICovCiAJY2FzZSBJQlVGX09Q X0RFTEVURV9NQVJLOgogCQkvKiBUaGVyZSBtdXN0IGJlIGEgcmVjb3JkIHRvIGRlbGV0ZS1tYXJr LgpAQCAtMzc0OCw5ICszNzUzLDgwIEBAIER1cmluZyBtZXJnZSwgaW5zZXJ0cyB0byBhbiBpbmRl eCBwYWdlIGEKIGZyb20gdGhlIGluc2VydCBidWZmZXIuICovCiBzdGF0aWMKIHZvaWQKK2lidWZf aW5zZXJ0X3RvX2luZGV4X3BhZ2VfbG93KAorLyo9PT09PT09PT09PT09PT09PT09PT09PT09PSov CisJY29uc3QgZHR1cGxlX3QqCWVudHJ5LAkvKiE8IGluOiBidWZmZXJlZCBlbnRyeSB0byBpbnNl cnQgKi8KKwlidWZfYmxvY2tfdCoJYmxvY2ssCS8qITwgaW4vb3V0OiBpbmRleCBwYWdlIHdoZXJl IHRoZSBidWZmZXJlZAorCQkJCWVudHJ5IHNob3VsZCBiZSBwbGFjZWQgKi8KKwlkaWN0X2luZGV4 X3QqCWluZGV4LAkvKiE8IGluOiByZWNvcmQgZGVzY3JpcHRvciAqLworCW10cl90KgkJbXRyLAkv KiE8IGluL291dDogbXRyICovCisJcGFnZV9jdXJfdCoJcGFnZV9jdXIpLyohPCBpbi9vdXQ6IGN1 cnNvciBwb3NpdGlvbmVkIG9uIHRoZSByZWNvcmQKKwkJCQlhZnRlciB3aGljaCB0byBpbnNlcnQg dGhlIGJ1ZmZlcmVkIGVudHJ5ICovCit7CisJY29uc3QgcGFnZV90KglwYWdlOworCXVsaW50CQlz cGFjZTsKKwl1bGludAkJcGFnZV9ubzsKKwl1bGludAkJemlwX3NpemU7CisJY29uc3QgcGFnZV90 KgliaXRtYXBfcGFnZTsKKwl1bGludAkJb2xkX2JpdHM7CisKKwlpZiAoVU5JVl9MSUtFTFkKKwkg ICAgKHBhZ2VfY3VyX3R1cGxlX2luc2VydChwYWdlX2N1ciwgZW50cnksIGluZGV4LCAwLCBtdHIp ICE9IE5VTEwpKSB7CisJCXJldHVybjsKKwl9CisKKwkvKiBJZiB0aGUgcmVjb3JkIGRpZCBub3Qg Zml0LCByZW9yZ2FuaXplICovCisKKwlidHJfcGFnZV9yZW9yZ2FuaXplKGJsb2NrLCBpbmRleCwg bXRyKTsKKwlwYWdlX2N1cl9zZWFyY2goYmxvY2ssIGluZGV4LCBlbnRyeSwgUEFHRV9DVVJfTEUs IHBhZ2VfY3VyKTsKKworCS8qIFRoaXMgdGltZSB0aGUgcmVjb3JkIG11c3QgZml0ICovCisKKwlp ZiAoVU5JVl9MSUtFTFkKKwkgICAgKHBhZ2VfY3VyX3R1cGxlX2luc2VydChwYWdlX2N1ciwgZW50 cnksIGluZGV4LCAwLCBtdHIpICE9IE5VTEwpKSB7CisJCXJldHVybjsKKwl9CisKKwlwYWdlID0g YnVmX2Jsb2NrX2dldF9mcmFtZShibG9jayk7CisKKwl1dF9wcmludF90aW1lc3RhbXAoc3RkZXJy KTsKKworCWZwcmludGYoc3RkZXJyLAorCQkiICBJbm5vREI6IEVycm9yOiBJbnNlcnQgYnVmZmVy IGluc2VydCBmYWlsczsiCisJCSIgcGFnZSBmcmVlICVsdSwgZHR1cGxlIHNpemUgJWx1XG4iLAor CQkodWxvbmcpIHBhZ2VfZ2V0X21heF9pbnNlcnRfc2l6ZShwYWdlLCAxKSwKKwkJKHVsb25nKSBy ZWNfZ2V0X2NvbnZlcnRlZF9zaXplKGluZGV4LCBlbnRyeSwgMCkpOworCWZwdXRzKCJJbm5vREI6 IENhbm5vdCBpbnNlcnQgaW5kZXggcmVjb3JkICIsIHN0ZGVycik7CisJZHR1cGxlX3ByaW50KHN0 ZGVyciwgZW50cnkpOworCWZwdXRzKCJcbklubm9EQjogVGhlIHRhYmxlIHdoZXJlIHRoaXMgaW5k ZXggcmVjb3JkIGJlbG9uZ3NcbiIKKwkgICAgICAiSW5ub0RCOiBpcyBub3cgcHJvYmFibHkgY29y cnVwdC4gUGxlYXNlIHJ1biBDSEVDSyBUQUJMRSBvblxuIgorCSAgICAgICJJbm5vREI6IHRoYXQg dGFibGUuXG4iLCBzdGRlcnIpOworCisJc3BhY2UgPSBwYWdlX2dldF9zcGFjZV9pZChwYWdlKTsK Kwl6aXBfc2l6ZSA9IGJ1Zl9ibG9ja19nZXRfemlwX3NpemUoYmxvY2spOworCXBhZ2Vfbm8gPSBw YWdlX2dldF9wYWdlX25vKHBhZ2UpOworCisJYml0bWFwX3BhZ2UgPSBpYnVmX2JpdG1hcF9nZXRf bWFwX3BhZ2Uoc3BhY2UsIHBhZ2Vfbm8sIHppcF9zaXplLCBtdHIpOworCW9sZF9iaXRzID0gaWJ1 Zl9iaXRtYXBfcGFnZV9nZXRfYml0cyhiaXRtYXBfcGFnZSwgcGFnZV9ubywgemlwX3NpemUsCisJ CQkJCSAgICAgSUJVRl9CSVRNQVBfRlJFRSwgbXRyKTsKKworCWZwcmludGYoc3RkZXJyLAorCQki SW5ub0RCOiBzcGFjZSAlbHUsIHBhZ2UgJWx1LCB6aXBfc2l6ZSAlbHUsIGJpdG1hcCBiaXRzICVs dVxuIiwKKwkJKHVsb25nKSBzcGFjZSwgKHVsb25nKSBwYWdlX25vLAorCQkodWxvbmcpIHppcF9z aXplLCAodWxvbmcpIG9sZF9iaXRzKTsKKworCWZwdXRzKCJJbm5vREI6IFN1Ym1pdCBhIGRldGFp bGVkIGJ1ZyByZXBvcnQiCisJICAgICAgIiB0byBodHRwOi8vYnVncy5teXNxbC5jb21cbiIsIHN0 ZGVycik7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK0R1cmluZyBtZXJnZSwgaW5zZXJ0cyB0byBh biBpbmRleCBwYWdlIGEgc2Vjb25kYXJ5IGluZGV4IGVudHJ5IGV4dHJhY3RlZAorZnJvbSB0aGUg aW5zZXJ0IGJ1ZmZlci4gKi8KK3N0YXRpYwordm9pZAogaWJ1Zl9pbnNlcnRfdG9faW5kZXhfcGFn ZSgKIC8qPT09PT09PT09PT09PT09PT09PT09PSovCi0JZHR1cGxlX3QqCWVudHJ5LAkvKiE8IGlu OiBidWZmZXJlZCBlbnRyeSB0byBpbnNlcnQgKi8KKwljb25zdCBkdHVwbGVfdCoJZW50cnksCS8q ITwgaW46IGJ1ZmZlcmVkIGVudHJ5IHRvIGluc2VydCAqLwogCWJ1Zl9ibG9ja190KglibG9jaywJ LyohPCBpbi9vdXQ6IGluZGV4IHBhZ2Ugd2hlcmUgdGhlIGJ1ZmZlcmVkIGVudHJ5CiAJCQkJc2hv dWxkIGJlIHBsYWNlZCAqLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IHJlY29yZCBk ZXNjcmlwdG9yICovCkBAIC0zNzYwLDExICszODM2LDEwIEBAIGlidWZfaW5zZXJ0X3RvX2luZGV4 X3BhZ2UoCiAJdWxpbnQJCWxvd19tYXRjaDsKIAlwYWdlX3QqCQlwYWdlCQk9IGJ1Zl9ibG9ja19n ZXRfZnJhbWUoYmxvY2spOwogCXJlY190KgkJcmVjOwotCXBhZ2VfdCoJCWJpdG1hcF9wYWdlOwot CXVsaW50CQlvbGRfYml0czsKIAogCXV0X2FkKGlidWZfaW5zaWRlKCkpOwogCXV0X2FkKGR0dXBs ZV9jaGVja190eXBlZChlbnRyeSkpOworCXV0X2FkKCFidWZfYmxvY2tfYWxpZ24ocGFnZSktPmlz X2hhc2hlZCk7CiAKIAlpZiAoVU5JVl9VTkxJS0VMWShkaWN0X3RhYmxlX2lzX2NvbXAoaW5kZXgt PnRhYmxlKQogCQkJICAhPSAoaWJvb2wpISFwYWdlX2lzX2NvbXAocGFnZSkpKSB7CkBAIC0zODEw LDcxICszODg1LDg3IEBAIGR1bXA6CiAJbG93X21hdGNoID0gcGFnZV9jdXJfc2VhcmNoKGJsb2Nr LCBpbmRleCwgZW50cnksCiAJCQkJICAgIFBBR0VfQ1VSX0xFLCAmcGFnZV9jdXIpOwogCi0JaWYg KGxvd19tYXRjaCA9PSBkdHVwbGVfZ2V0X25fZmllbGRzKGVudHJ5KSkgeworCWlmIChVTklWX1VO TElLRUxZKGxvd19tYXRjaCA9PSBkdHVwbGVfZ2V0X25fZmllbGRzKGVudHJ5KSkpIHsKKwkJbWVt X2hlYXBfdCoJaGVhcDsKKwkJdXBkX3QqCQl1cGRhdGU7CisJCXVsaW50KgkJb2Zmc2V0czsKIAkJ cGFnZV96aXBfZGVzX3QqCXBhZ2VfemlwOwogCiAJCXJlYyA9IHBhZ2VfY3VyX2dldF9yZWMoJnBh Z2VfY3VyKTsKLQkJcGFnZV96aXAgPSBidWZfYmxvY2tfZ2V0X3BhZ2VfemlwKGJsb2NrKTsKIAot CQlidHJfY3VyX3NldF9kZWxldGVkX2ZsYWdfZm9yX2lidWYocmVjLCBwYWdlX3ppcCwgRkFMU0Us IG10cik7Ci0JfSBlbHNlIHsKLQkJcmVjID0gcGFnZV9jdXJfdHVwbGVfaW5zZXJ0KCZwYWdlX2N1 ciwgZW50cnksIGluZGV4LCAwLCBtdHIpOworCQkvKiBUaGlzIGlzIGJhc2VkIG9uCisJCXJvd19p bnNfc2VjX2luZGV4X2VudHJ5X2J5X21vZGlmeShCVFJfTU9ESUZZX0xFQUYpLiAqLworCQl1dF9h ZChyZWNfZ2V0X2RlbGV0ZWRfZmxhZyhyZWMsIHBhZ2VfaXNfY29tcChwYWdlKSkpOworCisJCWhl YXAgPSBtZW1faGVhcF9jcmVhdGUoMTAyNCk7CisKKwkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0 cyhyZWMsIGluZGV4LCBOVUxMLCBVTElOVF9VTkRFRklORUQsCisJCQkJCSAgJmhlYXApOworCQl1 cGRhdGUgPSByb3dfdXBkX2J1aWxkX3NlY19yZWNfZGlmZmVyZW5jZV9iaW5hcnkoCisJCQlpbmRl eCwgZW50cnksIHJlYywgTlVMTCwgaGVhcCk7CiAKLQkJaWYgKFVOSVZfTElLRUxZKHJlYyAhPSBO VUxMKSkgeworCQlwYWdlX3ppcCA9IGJ1Zl9ibG9ja19nZXRfcGFnZV96aXAoYmxvY2spOworCisJ CWlmICh1cGRhdGUtPm5fZmllbGRzID09IDApIHsKKwkJCS8qIFRoZSByZWNvcmRzIG9ubHkgZGlm ZmVyIGluIHRoZSBkZWxldGUtbWFyay4KKwkJCUNsZWFyIHRoZSBkZWxldGUtbWFyaywgbGlrZSB3 ZSBkaWQgYmVmb3JlCisJCQlCdWcgIzU2NjgwIHdhcyBmaXhlZC4gKi8KKwkJCWJ0cl9jdXJfc2V0 X2RlbGV0ZWRfZmxhZ19mb3JfaWJ1ZigKKwkJCQlyZWMsIHBhZ2VfemlwLCBGQUxTRSwgbXRyKTsK K3VwZGF0ZWRfaW5fcGxhY2U6CisJCQltZW1faGVhcF9mcmVlKGhlYXApOwogCQkJcmV0dXJuOwog CQl9CiAKLQkJLyogSWYgdGhlIHJlY29yZCBkaWQgbm90IGZpdCwgcmVvcmdhbml6ZSAqLworCQkv KiBDb3B5IHRoZSBpbmZvIGJpdHMuIENsZWFyIHRoZSBkZWxldGUtbWFyay4gKi8KKwkJdXBkYXRl LT5pbmZvX2JpdHMgPSByZWNfZ2V0X2luZm9fYml0cyhyZWMsIHBhZ2VfaXNfY29tcChwYWdlKSk7 CisJCXVwZGF0ZS0+aW5mb19iaXRzICY9IH5SRUNfSU5GT19ERUxFVEVEX0ZMQUc7CisKKwkJLyog V2UgY2Fubm90IGludm9rZSBidHJfY3VyX29wdGltaXN0aWNfdXBkYXRlKCkgaGVyZSwKKwkJYmVj YXVzZSB3ZSBkbyBub3QgaGF2ZSBhIGJ0cl9jdXJfdCBvciBxdWVfdGhyX3QsCisJCWFzIHRoZSBp bnNlcnQgYnVmZmVyIG1lcmdlIG9jY3VycyBhdCBhIHZlcnkgbG93IGxldmVsLiAqLworCQlpZiAo IXJvd191cGRfY2hhbmdlc19maWVsZF9zaXplX29yX2V4dGVybmFsKGluZGV4LCBvZmZzZXRzLAor CQkJCQkJCSAgICB1cGRhdGUpCisJCSAgICAmJiAoIXBhZ2VfemlwIHx8IGJ0cl9jdXJfdXBkYXRl X2FsbG9jX3ppcCgKKwkJCQlwYWdlX3ppcCwgYmxvY2ssIGluZGV4LAorCQkJCXJlY19vZmZzX3Np emUob2Zmc2V0cyksIEZBTFNFLCBtdHIpKSkgeworCQkJLyogVGhpcyBpcyB0aGUgZWFzeSBjYXNl LiBEbyBzb21ldGhpbmcgc2ltaWxhcgorCQkJdG8gYnRyX2N1cl91cGRhdGVfaW5fcGxhY2UoKS4g Ki8KKwkJCXJvd191cGRfcmVjX2luX3BsYWNlKHJlYywgaW5kZXgsIG9mZnNldHMsCisJCQkJCSAg ICAgdXBkYXRlLCBwYWdlX3ppcCk7CisJCQlnb3RvIHVwZGF0ZWRfaW5fcGxhY2U7CisJCX0KKwor CQkvKiBBIGNvbGxhdGlvbiBtYXkgaWRlbnRpZnkgdmFsdWVzIHRoYXQgZGlmZmVyIGluCisJCXN0 b3JhZ2UgbGVuZ3RoLgorCQlTb21lIGV4YW1wbGVzICgxIG9yIDIgYnl0ZXMpOgorCQl1dGY4X3R1 cmtpc2hfY2k6IEkgPSBVKzAxMzEgTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSQorCQl1dGY4 X2dlbmVyYWxfY2k6IFMgPSBVKzAwREYgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKKwkJdXRm OF9nZW5lcmFsX2NpOiBBID0gVSswMEU0IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJF U0lTCisKKwkJbGF0aW4xX2dlcm1hbjJfY2k6IFNTID0gVSswMERGIExBVElOIFNNQUxMIExFVFRF UiBTSEFSUCBTCisKKwkJRXhhbXBsZXMgb2YgYSBjaGFyYWN0ZXIgKDMtYnl0ZSBVVEYtOCBzZXF1 ZW5jZSkKKwkJaWRlbnRpZmllZCB3aXRoIDIgb3IgNCBjaGFyYWN0ZXJzICgxLWJ5dGUgVVRGLTgg c2VxdWVuY2VzKToKKworCQl1dGY4X3VuaWNvZGVfY2k6ICdJSScgPSBVKzIxNzEgU01BTEwgUk9N QU4gTlVNRVJBTCBUV08KKwkJdXRmOF91bmljb2RlX2NpOiAnKDEwKScgPSBVKzI0N0QgUEFSRU5U SEVTSVpFRCBOVU1CRVIgVEVOCisJCSovCiAKLQkJYnRyX3BhZ2VfcmVvcmdhbml6ZShibG9jaywg aW5kZXgsIG10cik7Ci0JCXBhZ2VfY3VyX3NlYXJjaChibG9jaywgaW5kZXgsIGVudHJ5LCBQQUdF X0NVUl9MRSwgJnBhZ2VfY3VyKTsKLQotCQkvKiBUaGlzIHRpbWUgdGhlIHJlY29yZCBtdXN0IGZp dCAqLwotCQlpZiAoVU5JVl9VTkxJS0VMWQotCQkgICAgKCFwYWdlX2N1cl90dXBsZV9pbnNlcnQo JnBhZ2VfY3VyLCBlbnRyeSwgaW5kZXgsCi0JCQkJCSAgICAwLCBtdHIpKSkgewotCQkJdWxpbnQJ c3BhY2U7Ci0JCQl1bGludAlwYWdlX25vOwotCQkJdWxpbnQJemlwX3NpemU7CisJCS8qIERlbGV0 ZSB0aGUgZGlmZmVyZW50LWxlbmd0aCByZWNvcmQsIGFuZCBpbnNlcnQgdGhlCisJCWJ1ZmZlcmVk IG9uZS4gKi8KIAotCQkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7Ci0KLQkJCWZwcmludGYo c3RkZXJyLAotCQkJCSIgIElubm9EQjogRXJyb3I6IEluc2VydCBidWZmZXIgaW5zZXJ0IgotCQkJ CSIgZmFpbHM7IHBhZ2UgZnJlZSAlbHUsIgotCQkJCSIgZHR1cGxlIHNpemUgJWx1XG4iLAotCQkJ CSh1bG9uZykgcGFnZV9nZXRfbWF4X2luc2VydF9zaXplKAotCQkJCQlwYWdlLCAxKSwKLQkJCQko dWxvbmcpIHJlY19nZXRfY29udmVydGVkX3NpemUoCi0JCQkJCWluZGV4LCBlbnRyeSwgMCkpOwot CQkJZnB1dHMoIklubm9EQjogQ2Fubm90IGluc2VydCBpbmRleCByZWNvcmQgIiwKLQkJCSAgICAg IHN0ZGVycik7Ci0JCQlkdHVwbGVfcHJpbnQoc3RkZXJyLCBlbnRyeSk7Ci0JCQlmcHV0cygiXG5J bm5vREI6IFRoZSB0YWJsZSB3aGVyZSIKLQkJCSAgICAgICIgdGhpcyBpbmRleCByZWNvcmQgYmVs b25nc1xuIgotCQkJICAgICAgIklubm9EQjogaXMgbm93IHByb2JhYmx5IGNvcnJ1cHQuIgotCQkJ ICAgICAgIiBQbGVhc2UgcnVuIENIRUNLIFRBQkxFIG9uXG4iCi0JCQkgICAgICAiSW5ub0RCOiB0 aGF0IHRhYmxlLlxuIiwgc3RkZXJyKTsKLQotCQkJc3BhY2UgPSBwYWdlX2dldF9zcGFjZV9pZChw YWdlKTsKLQkJCXppcF9zaXplID0gYnVmX2Jsb2NrX2dldF96aXBfc2l6ZShibG9jayk7Ci0JCQlw YWdlX25vID0gcGFnZV9nZXRfcGFnZV9ubyhwYWdlKTsKLQotCQkJYml0bWFwX3BhZ2UgPSBpYnVm X2JpdG1hcF9nZXRfbWFwX3BhZ2UoCi0JCQkJc3BhY2UsIHBhZ2Vfbm8sIHppcF9zaXplLCBtdHIp OwotCQkJb2xkX2JpdHMgPSBpYnVmX2JpdG1hcF9wYWdlX2dldF9iaXRzKAotCQkJCWJpdG1hcF9w YWdlLCBwYWdlX25vLCB6aXBfc2l6ZSwKLQkJCQlJQlVGX0JJVE1BUF9GUkVFLCBtdHIpOwotCi0J CQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkiSW5ub0RCOiBzcGFjZSAlbHUsIHBhZ2UgJWx1LCIKLQkJ CQkiIHppcF9zaXplICVsdSwgYml0bWFwIGJpdHMgJWx1XG4iLAotCQkJCSh1bG9uZykgc3BhY2Us ICh1bG9uZykgcGFnZV9ubywKLQkJCQkodWxvbmcpIHppcF9zaXplLCAodWxvbmcpIG9sZF9iaXRz KTsKKwkJbG9ja19yZWNfc3RvcmVfb25fcGFnZV9pbmZpbXVtKGJsb2NrLCByZWMpOworCQlwYWdl X2N1cl9kZWxldGVfcmVjKCZwYWdlX2N1ciwgaW5kZXgsIG9mZnNldHMsIG10cik7CisJCXBhZ2Vf Y3VyX21vdmVfdG9fcHJldigmcGFnZV9jdXIpOworCQltZW1faGVhcF9mcmVlKGhlYXApOwogCi0J CQlmcHV0cygiSW5ub0RCOiBTdWJtaXQgYSBkZXRhaWxlZCBidWcgcmVwb3J0IgotCQkJICAgICAg IiB0byBodHRwOi8vYnVncy5teXNxbC5jb21cbiIsIHN0ZGVycik7Ci0JCX0KKwkJaWJ1Zl9pbnNl cnRfdG9faW5kZXhfcGFnZV9sb3coZW50cnksIGJsb2NrLCBpbmRleCwgbXRyLAorCQkJCQkgICAg ICAmcGFnZV9jdXIpOworCQlsb2NrX3JlY19yZXN0b3JlX2Zyb21fcGFnZV9pbmZpbXVtKGJsb2Nr LCByZWMsIGJsb2NrKTsKKwl9IGVsc2UgeworCQlpYnVmX2luc2VydF90b19pbmRleF9wYWdlX2xv dyhlbnRyeSwgYmxvY2ssIGluZGV4LCBtdHIsCisJCQkJCSAgICAgICZwYWdlX2N1cik7CiAJfQog fQogCkBAIC0zOTA2LDkgKzM5OTcsMzEgQEAgaWJ1Zl9zZXRfZGVsX21hcmsoCiAJCXJlYyA9IHBh Z2VfY3VyX2dldF9yZWMoJnBhZ2VfY3VyKTsKIAkJcGFnZV96aXAgPSBwYWdlX2N1cl9nZXRfcGFn ZV96aXAoJnBhZ2VfY3VyKTsKIAorCQlpZiAoVU5JVl9VTkxJS0VMWQorCQkgICAgKHJlY19nZXRf ZGVsZXRlZF9mbGFnKAorCQkJICAgIHJlYywgZGljdF90YWJsZV9pc19jb21wKGluZGV4LT50YWJs ZSkpKSkgeworCQkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7CisJCQlmcHV0cygiICBJbm5v REI6IHJlY29yZCBpcyBhbHJlYWR5IGRlbGV0ZS1tYXJrZWRcbiIsCisJCQkgICAgICBzdGRlcnIp OworCQkJZ290byBmYWlsdXJlOworCQl9CisKIAkJYnRyX2N1cl9zZXRfZGVsZXRlZF9mbGFnX2Zv cl9pYnVmKHJlYywgcGFnZV96aXAsIFRSVUUsIG10cik7CiAJfSBlbHNlIHsKLQkJLyogVGhpcyBj YW4gaGFwcGVuIGJlbmlnbmx5IGluIHNvbWUgc2l0dWF0aW9ucy4gKi8KKwkJdXRfcHJpbnRfdGlt ZXN0YW1wKHN0ZGVycik7CisJCWZwdXRzKCIgIElubm9EQjogdW5hYmxlIHRvIGZpbmQgYSByZWNv cmQgdG8gZGVsZXRlLW1hcmtcbiIsCisJCSAgICAgIHN0ZGVycik7CitmYWlsdXJlOgorCQlmcHV0 cygiSW5ub0RCOiB0dXBsZSAiLCBzdGRlcnIpOworCQlkdHVwbGVfcHJpbnQoc3RkZXJyLCBlbnRy eSk7CisJCWZwdXRzKCJcbiIKKwkJICAgICAgIklubm9EQjogcmVjb3JkICIsIHN0ZGVycik7CisJ CXJlY19wcmludChzdGRlcnIsIHBhZ2VfY3VyX2dldF9yZWMoJnBhZ2VfY3VyKSwgaW5kZXgpOwor CQlwdXRjKCdcbicsIHN0ZGVycik7CisJCWZwdXRzKCJcbiIKKwkJICAgICAgIklubm9EQjogU3Vi bWl0IGEgZGV0YWlsZWQgYnVnIHJlcG9ydCIKKwkJICAgICAgIiB0byBodHRwOi8vYnVncy5teXNx bC5jb21cbiIsIHN0ZGVycik7CisJCXV0X2FkKDApOwogCX0KIH0KIApAQCAtMzk4MywxMCArNDA5 Niw3IEBAIGlidWZfZGVsZXRlKAogCQkJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAkJfQogCX0gZWxz ZSB7Ci0JCS8qIFRoaXMgY2FuIGhhcHBlbiBiZW5pZ25seSBpbiBzb21lIHNpdHVhdGlvbnM6IGVp dGhlciB3aGVuCi0JCXdlIGNyYXNoZWQgYXQganVzdCB0aGUgcmlnaHQgdGltZSwgb3Igb24gZGF0 YWJhc2Ugc3RhcnR1cAotCQl3aGVuIHdlIHJlZG8gc29tZSBvbGQgbG9nIGVudHJpZXMgKGR1ZSB0 byB3b3JzZSBzdG9yZWQKLQkJcG9zaXRpb24gZ3JhbnVsYXJpdHkgb24gZGlzayB0aGFuIGluIG1l bW9yeSkuICovCisJCS8qIFRoZSByZWNvcmQgbXVzdCBoYXZlIGJlZW4gcHVyZ2VkIGFscmVhZHku ICovCiAJfQogfQogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L2J0cjBjdXIuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaAlyZXZp ZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTAxMDE4MTIxNjIzLTIycmhraXZoY2Z3eW45MGIK KysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaAlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDEwMTAxOTA2MzUxNC1rNjNyZHM4NXNqNW8wZmRkCkBAIC0yNDMsNiAr MjQzLDIyIEBAIGJ0cl9jdXJfcGVzc2ltaXN0aWNfaW5zZXJ0KAogCXF1ZV90aHJfdCoJdGhyLAkv KiE8IGluOiBxdWVyeSB0aHJlYWQgb3IgTlVMTCAqLwogCW10cl90KgkJbXRyKTsJLyohPCBpbjog bXRyICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKK1NlZSBpZiB0aGVyZSBpcyBlbm91Z2ggcGxhY2UgaW4gdGhlIHBh Z2UgbW9kaWZpY2F0aW9uIGxvZyB0byBsb2cKK2FuIHVwZGF0ZS1pbi1wbGFjZS4KK0ByZXR1cm4J VFJVRSBpZiBlbm91Z2ggcGxhY2UgKi8KK1VOSVZfSU5URVJOCitpYm9vbAorYnRyX2N1cl91cGRh dGVfYWxsb2NfemlwKAorLyo9PT09PT09PT09PT09PT09PT09PT0qLworCXBhZ2VfemlwX2Rlc190 KglwYWdlX3ppcCwvKiE8IGluL291dDogY29tcHJlc3NlZCBwYWdlICovCisJYnVmX2Jsb2NrX3Qq CWJsb2NrLAkvKiE8IGluL291dDogYnVmZmVyIHBhZ2UgKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4 LAkvKiE8IGluOiB0aGUgaW5kZXggY29ycmVzcG9uZGluZyB0byB0aGUgYmxvY2sgKi8KKwl1bGlu dAkJbGVuZ3RoLAkvKiE8IGluOiBzaXplIG5lZWRlZCAqLworCWlib29sCQljcmVhdGUsCS8qITwg aW46IFRSVUU9ZGVsZXRlLWFuZC1pbnNlcnQsCisJCQkJRkFMU0U9dXBkYXRlLWluLXBsYWNlICov CisJbXRyX3QqCQltdHIpCS8qITwgaW46IG1pbmktdHJhbnNhY3Rpb24gKi8KKwlfX2F0dHJpYnV0 ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogVXBkYXRlcyBh IHJlY29yZCB3aGVuIHRoZSB1cGRhdGUgY2F1c2VzIG5vIHNpemUgY2hhbmdlcyBpbiBpdHMgZmll bGRzLgogQHJldHVybglEQl9TVUNDRVNTIG9yIGVycm9yIG51bWJlciAqLwogVU5JVl9JTlRFUk4K Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGZsdS5oJwot LS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGZsdS5oCXJldmlkOnZhc2lsLmRpbW92 QG9yYWNsZS5jb20tMjAxMDEwMTgxMjE2MjMtMjJyaGtpdmhjZnd5bjkwYgorKysgYi9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvYnVmMGZsdS5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTAxMDE5MDYzNTE0LWs2M3Jkczg1c2o1bzBmZGQKQEAgLTg0LDYgKzg0LDIxIEBAIGJ1Zl9m bHVzaF9pbml0X2Zvcl93cml0aW5nKAogCWliX3VpbnQ2NF90CW5ld2VzdF9sc24pOwkvKiE8IGlu OiBuZXdlc3QgbW9kaWZpY2F0aW9uIGxzbgogCQkJCQl0byB0aGUgcGFnZSAqLwogI2lmbmRlZiBV TklWX0hPVEJBQ0tVUAorIyBpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklWX0lC VUZfREVCVUcKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKK1dyaXRlcyBhIGZsdXNoYWJsZSBwYWdlIGFzeW5j aHJvbm91c2x5IGZyb20gdGhlIGJ1ZmZlciBwb29sIHRvIGEgZmlsZS4KK05PVEU6IGJ1Zl9wb29s X211dGV4IGFuZCBibG9jay0+bXV0ZXggbXVzdCBiZSBoZWxkIHVwb24gZW50ZXJpbmcgdGhpcwor ZnVuY3Rpb24sIGFuZCB0aGV5IHdpbGwgYmUgcmVsZWFzZWQgYnkgdGhpcyBmdW5jdGlvbiBhZnRl ciBmbHVzaGluZy4KK1RoaXMgaXMgbG9vc2VseSBiYXNlZCBvbiBidWZfZmx1c2hfYmF0Y2goKSBh bmQgYnVmX2ZsdXNoX3BhZ2UoKS4KK0ByZXR1cm4gVFJVRSBpZiB0aGUgcGFnZSB3YXMgZmx1c2hl ZCBhbmQgdGhlIG11dGV4ZXMgcmVsZWFzZWQgKi8KK1VOSVZfSU5URVJOCitpYm9vbAorYnVmX2Zs dXNoX3BhZ2VfdHJ5KAorLyo9PT09PT09PT09PT09PT0qLworCWJ1Zl9wb29sX3QqCWJ1Zl9wb29s LAkvKiE8IGluL291dDogYnVmZmVyIHBvb2wgaW5zdGFuY2UgKi8KKwlidWZfYmxvY2tfdCoJYmxv Y2spCQkvKiE8IGluL291dDogYnVmZmVyIGNvbnRyb2wgYmxvY2sgKi8KKwlfX2F0dHJpYnV0ZV9f KChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKKyMgZW5kaWYgLyogVU5JVl9ERUJVRyB8 fCBVTklWX0lCVUZfREVCVUcgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogVGhpcyB1dGlsaXR5IGZsdXNo ZXMgZGlydHkgYmxvY2tzIGZyb20gdGhlIGVuZCBvZiB0aGUgTFJVIGxpc3QuCiBOT1RFOiBUaGUg Y2FsbGluZyB0aHJlYWQgbWF5IG93biBsYXRjaGVzIHRvIHBhZ2VzOiB0byBhdm9pZCBkZWFkbG9j a3MsCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2lidWYwaWJ1 Zi5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvaWJ1ZjBpYnVmLmgJcmV2aWQ6dmFz aWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEwMTAxODEyMTYyMy0yMnJoa2l2aGNmd3luOTBiCisrKyBi L3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9pYnVmMGlidWYuaAlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDEwMTAxOTA2MzUxNC1rNjNyZHM4NXNqNW8wZmRkCkBAIC02Myw2ICs2Mywx MSBAQCB0eXBlZGVmIGVudW0gewogLyoqIE9wZXJhdGlvbnMgdGhhdCBjYW4gY3VycmVudGx5IGJl IGJ1ZmZlcmVkLiAqLwogZXh0ZXJuIGlidWZfdXNlX3QJaWJ1Zl91c2U7CiAKKyNpZiBkZWZpbmVk IFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklWX0lCVUZfREVCVUcKKy8qKiBGbGFnIHRvIGNvbnRy b2wgaW5zZXJ0IGJ1ZmZlciBkZWJ1Z2dpbmcuICovCitleHRlcm4gdWludAkJaWJ1Zl9kZWJ1ZzsK KyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfSUJVRl9ERUJVRyAqLworCiAvKiogVGhlIGlu c2VydCBidWZmZXIgY29udHJvbCBzdHJ1Y3R1cmUgKi8KIGV4dGVybiBpYnVmX3QqCQlpYnVmOwog Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JlbTByZWMuaCcK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JlbTByZWMuaAlyZXZpZDp2YXNpbC5kaW1v dkBvcmFjbGUuY29tLTIwMTAxMDE4MTIxNjIzLTIycmhraXZoY2Z3eW45MGIKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL3JlbTByZWMuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDEwMTAxOTA2MzUxNC1rNjNyZHM4NXNqNW8wZmRkCkBAIC04MDEsOSArODAxLDkgQEAgVU5J Vl9JTlRFUk4KIHZvaWQKIHJlY19wcmludCgKIC8qPT09PT09Ki8KLQlGSUxFKgkJZmlsZSwJLyoh PCBpbjogZmlsZSB3aGVyZSB0byBwcmludCAqLwotCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46 IHBoeXNpY2FsIHJlY29yZCAqLwotCWRpY3RfaW5kZXhfdCoJaW5kZXgpOwkvKiE8IGluOiByZWNv cmQgZGVzY3JpcHRvciAqLworCUZJTEUqCQkJZmlsZSwJLyohPCBpbjogZmlsZSB3aGVyZSB0byBw cmludCAqLworCWNvbnN0IHJlY190KgkJcmVjLAkvKiE8IGluOiBwaHlzaWNhbCByZWNvcmQgKi8K Kwljb25zdCBkaWN0X2luZGV4X3QqCWluZGV4KTsJLyohPCBpbjogcmVjb3JkIGRlc2NyaXB0b3Ig Ki8KICNlbmRpZiAvKiBVTklWX0hPVEJBQ0tVUCAqLwogCiAvKiBNYXhpbXVtIGxlbmd0aHMgZm9y IHRoZSBkYXRhIGluIGEgcGh5c2ljYWwgcmVjb3JkIGlmIHRoZSBvZmZzZXRzCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBteXNxbC5oJwotLS0gYS9zdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MG15c3FsLmgJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xl LmNvbS0yMDEwMTAxODEyMTYyMy0yMnJoa2l2aGNmd3luOTBiCisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9yb3cwbXlzcWwuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEw MTAxOTA2MzUxNC1rNjNyZHM4NXNqNW8wZmRkCkBAIC01MzgsNiArNTM4LDEwIEBAIHN0cnVjdCBt eXNxbF9yb3dfdGVtcGxfc3RydWN0IHsKIAkJCQkJSW5ub2Jhc2UgcmVjb3JkIGluIHRoZSBjdXJy ZW50IGluZGV4OwogCQkJCQlub3QgZGVmaW5lZCBpZiB0ZW1wbGF0ZV90eXBlIGlzCiAJCQkJCVJP V19NWVNRTF9XSE9MRV9ST1cgKi8KKwl1bGludAljbHVzdF9yZWNfZmllbGRfbm87CS8qITwgZmll bGQgbnVtYmVyIG9mIHRoZSBjb2x1bW4gaW4gYW4KKwkJCQkJSW5ub2Jhc2UgcmVjb3JkIGluIHRo ZSBjbHVzdGVyZWQgaW5kZXg7CisJCQkJCW5vdCBkZWZpbmVkIGlmIHRlbXBsYXRlX3R5cGUgaXMK KwkJCQkJUk9XX01ZU1FMX1dIT0xFX1JPVyAqLwogCXVsaW50CW15c3FsX2NvbF9vZmZzZXQ7CS8q ITwgb2Zmc2V0IG9mIHRoZSBjb2x1bW4gaW4gdGhlIE15U1FMCiAJCQkJCXJvdyBmb3JtYXQgKi8K IAl1bGludAlteXNxbF9jb2xfbGVuOwkJLyohPCBsZW5ndGggb2YgdGhlIGNvbHVtbiBpbiB0aGUg TXlTUUwKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHVw ZC5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHVwZC5oCXJldmlkOnZhc2ls LmRpbW92QG9yYWNsZS5jb20tMjAxMDEwMTgxMjE2MjMtMjJyaGtpdmhjZnd5bjkwYgorKysgYi9z dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHVwZC5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTAxMDE5MDYzNTE0LWs2M3Jkczg1c2o1bzBmZGQKQEAgLTE2Nyw4ICsxNjcsMTEg QEAgcm93X3VwZF9jaGFuZ2VzX2ZpZWxkX3NpemVfb3JfZXh0ZXJuYWwoCiAJY29uc3QgdXBkX3Qq CXVwZGF0ZSk7LyohPCBpbjogdXBkYXRlIHZlY3RvciAqLwogI2VuZGlmIC8qICFVTklWX0hPVEJB Q0tVUCAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgotUmVwbGFjZXMgdGhlIG5ldyBjb2x1bW4gdmFsdWVzIHN0b3JlZCBp biB0aGUgdXBkYXRlIHZlY3RvciB0byB0aGUgcmVjb3JkCi1naXZlbi4gTm8gZmllbGQgc2l6ZSBj aGFuZ2VzIGFyZSBhbGxvd2VkLiAqLworUmVwbGFjZXMgdGhlIG5ldyBjb2x1bW4gdmFsdWVzIHN0 b3JlZCBpbiB0aGUgdXBkYXRlIHZlY3RvciB0byB0aGUKK3JlY29yZCBnaXZlbi4gTm8gZmllbGQg c2l6ZSBjaGFuZ2VzIGFyZSBhbGxvd2VkLiBUaGlzIGZ1bmN0aW9uIGlzCit1c3VhbGx5IGludm9r ZWQgb24gYSBjbHVzdGVyZWQgaW5kZXguIFRoZSBvbmx5IHVzZSBjYXNlIGZvciBhCitzZWNvbmRh cnkgaW5kZXggaXMgcm93X2luc19zZWNfaW5kZXhfZW50cnlfYnlfbW9kaWZ5KCkgb3IgaXRzCitj b3VudGVycGFydCBpbiBpYnVmX2luc2VydF90b19pbmRleF9wYWdlKCkuICovCiBVTklWX0lOVEVS Tgogdm9pZAogcm93X3VwZF9yZWNfaW5fcGxhY2UoCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFn ZS9pbm5vYmFzZS9yZW0vcmVtMHJlYy5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3JlbS9yZW0w cmVjLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEwMTAxODEyMTYyMy0yMnJoa2l2 aGNmd3luOTBiCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvcmVtL3JlbTByZWMuYwlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTAxOTA2MzUxNC1rNjNyZHM4NXNqNW8wZmRkCkBAIC0x NzQ5LDkgKzE3NDksOSBAQCBVTklWX0lOVEVSTgogdm9pZAogcmVjX3ByaW50KAogLyo9PT09PT0q LwotCUZJTEUqCQlmaWxlLAkvKiE8IGluOiBmaWxlIHdoZXJlIHRvIHByaW50ICovCi0JY29uc3Qg cmVjX3QqCXJlYywJLyohPCBpbjogcGh5c2ljYWwgcmVjb3JkICovCi0JZGljdF9pbmRleF90Kglp bmRleCkJLyohPCBpbjogcmVjb3JkIGRlc2NyaXB0b3IgKi8KKwlGSUxFKgkJCWZpbGUsCS8qITwg aW46IGZpbGUgd2hlcmUgdG8gcHJpbnQgKi8KKwljb25zdCByZWNfdCoJCXJlYywJLyohPCBpbjog cGh5c2ljYWwgcmVjb3JkICovCisJY29uc3QgZGljdF9pbmRleF90KglpbmRleCkJLyohPCBpbjog cmVjb3JkIGRlc2NyaXB0b3IgKi8KIHsKIAl1dF9hZChpbmRleCk7CiAKCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbXlzcWwuYycKLS0tIGEvc3RvcmFnZS9pbm5v YmFzZS9yb3cvcm93MG15c3FsLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEwMTAx ODEyMTYyMy0yMnJoa2l2aGNmd3luOTBiCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBt eXNxbC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMDE5MDYzNTE0LWs2M3Jk czg1c2o1bzBmZGQKQEAgLTUwMyw3ICs1MDMsNyBAQCByb3dfbXlzcWxfY29udmVydF9yb3dfdG9f aW5ub2Jhc2UoCiAJCQkJCXJvdyBpcyB1c2VkLCBhcyByb3cgbWF5IGNvbnRhaW4KIAkJCQkJcG9p bnRlcnMgdG8gdGhpcyByZWNvcmQhICovCiB7Ci0JbXlzcWxfcm93X3RlbXBsX3QqCXRlbXBsOwor CWNvbnN0IG15c3FsX3Jvd190ZW1wbF90KnRlbXBsOwogCWRmaWVsZF90KgkJZGZpZWxkOwogCXVs aW50CQkJaTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBz ZWwuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHNlbC5jCXJldmlkOnZhc2lsLmRp bW92QG9yYWNsZS5jb20tMjAxMDEwMTgxMjE2MjMtMjJyaGtpdmhjZnd5bjkwYgorKysgYi9zdG9y YWdlL2lubm9iYXNlL3Jvdy9yb3cwc2VsLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20t MjAxMDEwMTkwNjM1MTQtazYzcmRzODVzajVvMGZkZApAQCAtMjY2NywyMSArMjY2NywyMiBAQCBy b3dfc2VsX3N0b3JlX215c3FsX3JlYygKIAlyb3dfcHJlYnVpbHRfdCoJcHJlYnVpbHQsCS8qITwg aW46IHByZWJ1aWx0IHN0cnVjdCAqLwogCWNvbnN0IHJlY190KglyZWMsCQkvKiE8IGluOiBJbm5v YmFzZSByZWNvcmQgaW4gdGhlIGluZGV4CiAJCQkJCXdoaWNoIHdhcyBkZXNjcmliZWQgaW4gcHJl YnVpbHQncwotCQkJCQl0ZW1wbGF0ZTsgbXVzdCBiZSBwcm90ZWN0ZWQgYnkKLQkJCQkJYSBwYWdl IGxhdGNoICovCisJCQkJCXRlbXBsYXRlLCBvciBpbiB0aGUgY2x1c3RlcmVkIGluZGV4OworCQkJ CQltdXN0IGJlIHByb3RlY3RlZCBieSBhIHBhZ2UgbGF0Y2ggKi8KKwlpYm9vbAkJcmVjX2NsdXN0 LAkvKiE8IGluOiBUUlVFIGlmIHJlYyBpcyBpbiB0aGUKKwkJCQkJY2x1c3RlcmVkIGluZGV4IGlu c3RlYWQgb2YKKwkJCQkJcHJlYnVpbHQtPmluZGV4ICovCiAJY29uc3QgdWxpbnQqCW9mZnNldHMp CS8qITwgaW46IGFycmF5IHJldHVybmVkIGJ5Ci0JCQkJCXJlY19nZXRfb2Zmc2V0cygpICovCisJ CQkJCXJlY19nZXRfb2Zmc2V0cyhyZWMpICovCiB7Ci0JbXlzcWxfcm93X3RlbXBsX3QqCXRlbXBs OwotCW1lbV9oZWFwX3QqCQlleHRlcm5fZmllbGRfaGVhcAk9IE5VTEw7Ci0JbWVtX2hlYXBfdCoJ CWhlYXA7Ci0JY29uc3QgYnl0ZSoJCWRhdGE7Ci0JdWxpbnQJCQlsZW47Ci0JdWxpbnQJCQlpOwor CW1lbV9oZWFwX3QqCWV4dGVybl9maWVsZF9oZWFwCT0gTlVMTDsKKwltZW1faGVhcF90KgloZWFw OworCXVsaW50CQlpOwogCiAJdXRfYWQocHJlYnVpbHQtPm15c3FsX3RlbXBsYXRlKTsKIAl1dF9h ZChwcmVidWlsdC0+ZGVmYXVsdF9yZWMpOwogCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywg TlVMTCwgb2Zmc2V0cykpOworCXV0X2FkKCFyZWNfZ2V0X2RlbGV0ZWRfZmxhZyhyZWMsIHJlY19v ZmZzX2NvbXAob2Zmc2V0cykpKTsKIAogCWlmIChVTklWX0xJS0VMWV9OVUxMKHByZWJ1aWx0LT5i bG9iX2hlYXApKSB7CiAJCW1lbV9oZWFwX2ZyZWUocHJlYnVpbHQtPmJsb2JfaGVhcCk7CkBAIC0y NjkwLDEwICsyNjkxLDE1IEBAIHJvd19zZWxfc3RvcmVfbXlzcWxfcmVjKAogCiAJZm9yIChpID0g MDsgaSA8IHByZWJ1aWx0LT5uX3RlbXBsYXRlOyBpKyspIHsKIAotCQl0ZW1wbCA9IHByZWJ1aWx0 LT5teXNxbF90ZW1wbGF0ZSArIGk7CisJCWNvbnN0IG15c3FsX3Jvd190ZW1wbF90KnRlbXBsID0g cHJlYnVpbHQtPm15c3FsX3RlbXBsYXRlICsgaTsKKwkJY29uc3QgYnl0ZSoJCWRhdGE7CisJCXVs aW50CQkJbGVuOworCQl1bGludAkJCWZpZWxkX25vOworCisJCWZpZWxkX25vID0gcmVjX2NsdXN0 CisJCQk/IHRlbXBsLT5jbHVzdF9yZWNfZmllbGRfbm8gOiB0ZW1wbC0+cmVjX2ZpZWxkX25vOwog Ci0JCWlmIChVTklWX1VOTElLRUxZKHJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0cywKLQkJCQkJ CSAgICAgIHRlbXBsLT5yZWNfZmllbGRfbm8pKSkgeworCQlpZiAoVU5JVl9VTkxJS0VMWShyZWNf b2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIGZpZWxkX25vKSkpIHsKIAogCQkJLyogQ29weSBhbiBl eHRlcm5hbGx5IHN0b3JlZCBmaWVsZCB0byB0aGUgdGVtcG9yYXJ5CiAJCQloZWFwICovCkBAIC0y NzIxLDcgKzI3MjcsNyBAQCByb3dfc2VsX3N0b3JlX215c3FsX3JlYygKIAkJCWRhdGEgPSBidHJf cmVjX2NvcHlfZXh0ZXJuYWxseV9zdG9yZWRfZmllbGQoCiAJCQkJcmVjLCBvZmZzZXRzLAogCQkJ CWRpY3RfdGFibGVfemlwX3NpemUocHJlYnVpbHQtPnRhYmxlKSwKLQkJCQl0ZW1wbC0+cmVjX2Zp ZWxkX25vLCAmbGVuLCBoZWFwKTsKKwkJCQlmaWVsZF9ubywgJmxlbiwgaGVhcCk7CiAKIAkJCWlm IChVTklWX1VOTElLRUxZKCFkYXRhKSkgewogCQkJCS8qIFRoZSBleHRlcm5hbGx5IHN0b3JlZCBm aWVsZApAQCAtMjc0Miw4ICsyNzQ4LDcgQEAgcm93X3NlbF9zdG9yZV9teXNxbF9yZWMoCiAJCX0g ZWxzZSB7CiAJCQkvKiBGaWVsZCBpcyBzdG9yZWQgaW4gdGhlIHJvdy4gKi8KIAotCQkJZGF0YSA9 IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywKLQkJCQkJCSB0ZW1wbC0+cmVjX2ZpZWxk X25vLCAmbGVuKTsKKwkJCWRhdGEgPSByZWNfZ2V0X250aF9maWVsZChyZWMsIG9mZnNldHMsIGZp ZWxkX25vLCAmbGVuKTsKIAogCQkJaWYgKFVOSVZfVU5MSUtFTFkodGVtcGwtPnR5cGUgPT0gREFU QV9CTE9CKQogCQkJICAgICYmIGxlbiAhPSBVTklWX1NRTF9OVUxMKSB7CkBAIC0zMTA1LDcgKzMx MTAsNyBAQCByb3dfc2VsX3BvcF9jYWNoZWRfcm93X2Zvcl9teXNxbCgKIAlyb3dfcHJlYnVpbHRf dCoJcHJlYnVpbHQpCS8qITwgaW46IHByZWJ1aWx0IHN0cnVjdCAqLwogewogCXVsaW50CQkJaTsK LQlteXNxbF9yb3dfdGVtcGxfdCoJdGVtcGw7CisJY29uc3QgbXlzcWxfcm93X3RlbXBsX3QqdGVt cGw7CiAJYnl0ZSoJCQljYWNoZWRfcmVjOwogCXV0X2FkKHByZWJ1aWx0LT5uX2ZldGNoX2NhY2hl ZCA+IDApOwogCXV0X2FkKHByZWJ1aWx0LT5teXNxbF9wcmVmaXhfbGVuIDw9IHByZWJ1aWx0LT5t eXNxbF9yb3dfbGVuKTsKQEAgLTMxNjIsMTUgKzMxNjcsMjEgQEAgaWJvb2wKIHJvd19zZWxfcHVz aF9jYWNoZV9yb3dfZm9yX215c3FsKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSov CiAJcm93X3ByZWJ1aWx0X3QqCXByZWJ1aWx0LAkvKiE8IGluOiBwcmVidWlsdCBzdHJ1Y3QgKi8K LQljb25zdCByZWNfdCoJcmVjLAkJLyohPCBpbjogcmVjb3JkIHRvIHB1c2g7IG11c3QKLQkJCQkJ YmUgcHJvdGVjdGVkIGJ5IGEgcGFnZSBsYXRjaCAqLwotCWNvbnN0IHVsaW50KglvZmZzZXRzKQkv KiE8IGluOiByZWNfZ2V0X29mZnNldHMoKSAqLworCWNvbnN0IHJlY190KglyZWMsCQkvKiE8IGlu OiByZWNvcmQgdG8gcHVzaCwgaW4gdGhlIGluZGV4CisJCQkJCXdoaWNoIHdhcyBkZXNjcmliZWQg aW4gcHJlYnVpbHQncworCQkJCQl0ZW1wbGF0ZSwgb3IgaW4gdGhlIGNsdXN0ZXJlZCBpbmRleDsK KwkJCQkJbXVzdCBiZSBwcm90ZWN0ZWQgYnkgYSBwYWdlIGxhdGNoICovCisJaWJvb2wJCXJlY19j bHVzdCwJLyohPCBpbjogVFJVRSBpZiByZWMgaXMgaW4gdGhlCisJCQkJCWNsdXN0ZXJlZCBpbmRl eCBpbnN0ZWFkIG9mCisJCQkJCXByZWJ1aWx0LT5pbmRleCAqLworCWNvbnN0IHVsaW50KglvZmZz ZXRzKQkvKiE8IGluOiByZWNfZ2V0X29mZnNldHMocmVjKSAqLwogewogCWJ5dGUqCWJ1ZjsKIAl1 bGludAlpOwogCiAJdXRfYWQocHJlYnVpbHQtPm5fZmV0Y2hfY2FjaGVkIDwgTVlTUUxfRkVUQ0hf Q0FDSEVfU0laRSk7CiAJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBOVUxMLCBvZmZzZXRz KSk7CisJdXRfYWQoIXJlY19nZXRfZGVsZXRlZF9mbGFnKHJlYywgcmVjX29mZnNfY29tcChvZmZz ZXRzKSkpOwogCXV0X2EoIXByZWJ1aWx0LT50ZW1wbF9jb250YWluc19ibG9iKTsKIAogCWlmIChw cmVidWlsdC0+ZmV0Y2hfY2FjaGVbMF0gPT0gTlVMTCkgewpAQCAtMzE5OSw3ICszMjEwLDcgQEAg cm93X3NlbF9wdXNoX2NhY2hlX3Jvd19mb3JfbXlzcWwoCiAJaWYgKFVOSVZfVU5MSUtFTFkoIXJv d19zZWxfc3RvcmVfbXlzcWxfcmVjKAogCQkJCSAgcHJlYnVpbHQtPmZldGNoX2NhY2hlWwogCQkJ CQkgIHByZWJ1aWx0LT5uX2ZldGNoX2NhY2hlZF0sCi0JCQkJICBwcmVidWlsdCwgcmVjLCBvZmZz ZXRzKSkpIHsKKwkJCQkgIHByZWJ1aWx0LCByZWMsIHJlY19jbHVzdCwgb2Zmc2V0cykpKSB7CiAJ CXJldHVybihGQUxTRSk7CiAJfQogCkBAIC0zNjAwLDcgKzM2MTEsOCBAQCByb3dfc2VhcmNoX2Zv cl9teXNxbCgKIAkJCQl1dF9hZCghcmVjX2dldF9kZWxldGVkX2ZsYWcocmVjLCBjb21wKSk7CiAK IAkJCQlpZiAoIXJvd19zZWxfc3RvcmVfbXlzcWxfcmVjKGJ1ZiwgcHJlYnVpbHQsCi0JCQkJCQkJ ICAgICByZWMsIG9mZnNldHMpKSB7CisJCQkJCQkJICAgICByZWMsIEZBTFNFLAorCQkJCQkJCSAg ICAgb2Zmc2V0cykpIHsKIAkJCQkJLyogT25seSBmcmVzaCBpbnNlcnRzIG1heSBjb250YWluCiAJ CQkJCWluY29tcGxldGUgZXh0ZXJuYWxseSBzdG9yZWQKIAkJCQkJY29sdW1ucy4gUHJldGVuZCB0 aGF0IHN1Y2gKQEAgLTQyMzQsNyArNDI0Niw2IEBAIG5vX2dhcF9sb2NrOgogCQkJaXMgbmVjZXNz YXJ5LCBiZWNhdXNlIHdlIGNhbiBvbmx5IGdldCB0aGUgdW5kbwogCQkJaW5mb3JtYXRpb24gdmlh IHRoZSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkLiAqLwogCi0JCQl1dF9hZChpbmRleCAhPSBjbHVz dF9pbmRleCk7CiAJCQl1dF9hZCghZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpOwogCiAJCQlp ZiAoIWxvY2tfc2VjX3JlY19jb25zX3JlYWRfc2VlcygKQEAgLTQzNTAsMjYgKzQzNjEsMTAgQEAg cmVxdWlyZXNfY2x1c3RfcmVjOgogCQkJZ290byBuZXh0X3JlYzsKIAkJfQogCi0JCWlmIChwcmVi dWlsdC0+bmVlZF90b19hY2Nlc3NfY2x1c3RlcmVkKSB7Ci0KLQkJCXJlc3VsdF9yZWMgPSBjbHVz dF9yZWM7Ci0KLQkJCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlc3VsdF9yZWMsIGNsdXN0X2lu ZGV4LAotCQkJCQkJb2Zmc2V0cykpOwotCQl9IGVsc2UgewotCQkJLyogV2UgdXNlZCAnb2Zmc2V0 cycgZm9yIHRoZSBjbHVzdCByZWMsIHJlY2FsY3VsYXRlCi0JCQl0aGVtIGZvciAncmVjJyAqLwot CQkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBvZmZzZXRzLAotCQkJCQkJ ICBVTElOVF9VTkRFRklORUQsICZoZWFwKTsKLQkJCXJlc3VsdF9yZWMgPSByZWM7Ci0JCX0KLQot CQkvKiByZXN1bHRfcmVjIGNhbiBsZWdpdGltYXRlbHkgYmUgZGVsZXRlLW1hcmtlZAotCQlub3cg dGhhdCBpdCBoYXMgYmVlbiBlc3RhYmxpc2hlZCB0aGF0IGl0IHBvaW50cyB0byBhCi0JCWNsdXN0 ZXJlZCBpbmRleCByZWNvcmQgdGhhdCBleGlzdHMgaW4gdGhlIHJlYWQgdmlldy4gKi8KKwkJcmVz dWx0X3JlYyA9IGNsdXN0X3JlYzsKKwkJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVzdWx0X3Jl YywgY2x1c3RfaW5kZXgsIG9mZnNldHMpKTsKIAl9IGVsc2UgewogCQlyZXN1bHRfcmVjID0gcmVj OwotCQl1dF9hZCghcmVjX2dldF9kZWxldGVkX2ZsYWcocmVjLCBjb21wKSk7CiAJfQogCiAJLyog V2UgZm91bmQgYSBxdWFsaWZ5aW5nIHJlY29yZCAncmVzdWx0X3JlYycuIEF0IHRoaXMgcG9pbnQs CkBAIC00Mzc4LDYgKzQzNzMsNyBAQCByZXF1aXJlc19jbHVzdF9yZWM6CiAJdXRfYWQocmVjX29m ZnNfdmFsaWRhdGUocmVzdWx0X3JlYywKIAkJCQlyZXN1bHRfcmVjICE9IHJlYyA/IGNsdXN0X2lu ZGV4IDogaW5kZXgsCiAJCQkJb2Zmc2V0cykpOworCXV0X2FkKCFyZWNfZ2V0X2RlbGV0ZWRfZmxh ZyhyZXN1bHRfcmVjLCBjb21wKSk7CiAKIAkvKiBBdCB0aGlzIHBvaW50LCB0aGUgY2x1c3RlcmVk IGluZGV4IHJlY29yZCBpcyBwcm90ZWN0ZWQKIAlieSBhIHBhZ2UgbGF0Y2ggdGhhdCB3YXMgYWNx dWlyZWQgd2hlbiBwY3VyIHdhcyBwb3NpdGlvbmVkLgpAQCAtNDQwMiw2ICs0Mzk4LDcgQEAgcmVx dWlyZXNfY2x1c3RfcmVjOgogCQljdXJzb3IuICovCiAKIAkJaWYgKCFyb3dfc2VsX3B1c2hfY2Fj aGVfcm93X2Zvcl9teXNxbChwcmVidWlsdCwgcmVzdWx0X3JlYywKKwkJCQkJCSAgICAgIHJlc3Vs dF9yZWMgIT0gcmVjLAogCQkJCQkJICAgICAgb2Zmc2V0cykpIHsKIAkJCS8qIE9ubHkgZnJlc2gg aW5zZXJ0cyBtYXkgY29udGFpbiBpbmNvbXBsZXRlCiAJCQlleHRlcm5hbGx5IHN0b3JlZCBjb2x1 bW5zLiBQcmV0ZW5kIHRoYXQgc3VjaApAQCAtNDQxOSwxNSArNDQxNiwzMSBAQCByZXF1aXJlc19j bHVzdF9yZWM6CiAKIAkJZ290byBuZXh0X3JlYzsKIAl9IGVsc2UgewotCQlpZiAocHJlYnVpbHQt PnRlbXBsYXRlX3R5cGUgPT0gUk9XX01ZU1FMX0RVTU1ZX1RFTVBMQVRFKSB7CisJCWlmIChVTklW X1VOTElLRUxZCisJCSAgICAocHJlYnVpbHQtPnRlbXBsYXRlX3R5cGUgPT0gUk9XX01ZU1FMX0RV TU1ZX1RFTVBMQVRFKSkgeworCQkJLyogQ0hFQ0sgVEFCTEU6IGZldGNoIHRoZSByb3cgKi8KKwor CQkJaWYgKHJlc3VsdF9yZWMgIT0gcmVjCisJCQkgICAgJiYgIXByZWJ1aWx0LT5uZWVkX3RvX2Fj Y2Vzc19jbHVzdGVyZWQpIHsKKwkJCQkvKiBXZSB1c2VkICdvZmZzZXRzJyBmb3IgdGhlIGNsdXN0 CisJCQkJcmVjLCByZWNhbGN1bGF0ZSB0aGVtIGZvciAncmVjJyAqLworCQkJCW9mZnNldHMgPSBy ZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCwgb2Zmc2V0cywKKwkJCQkJCQkgIFVMSU5UX1VOREVG SU5FRCwKKwkJCQkJCQkgICZoZWFwKTsKKwkJCQlyZXN1bHRfcmVjID0gcmVjOworCQkJfQorCiAJ CQltZW1jcHkoYnVmICsgNCwgcmVzdWx0X3JlYwogCQkJICAgICAgIC0gcmVjX29mZnNfZXh0cmFf c2l6ZShvZmZzZXRzKSwKIAkJCSAgICAgICByZWNfb2Zmc19zaXplKG9mZnNldHMpKTsKIAkJCW1h Y2hfd3JpdGVfdG9fNChidWYsCiAJCQkJCXJlY19vZmZzX2V4dHJhX3NpemUob2Zmc2V0cykgKyA0 KTsKIAkJfSBlbHNlIHsKLQkJCWlmICghcm93X3NlbF9zdG9yZV9teXNxbF9yZWMoYnVmLCBwcmVi dWlsdCwKLQkJCQkJCSAgICAgcmVzdWx0X3JlYywgb2Zmc2V0cykpIHsKKwkJCS8qIFJldHVybmlu ZyBhIHJvdyB0byBNeVNRTCAqLworCisJCQlpZiAoIXJvd19zZWxfc3RvcmVfbXlzcWxfcmVjKGJ1 ZiwgcHJlYnVpbHQsIHJlc3VsdF9yZWMsCisJCQkJCQkgICAgIHJlc3VsdF9yZWMgIT0gcmVjLAor CQkJCQkJICAgICBvZmZzZXRzKSkgewogCQkJCS8qIE9ubHkgZnJlc2ggaW5zZXJ0cyBtYXkgY29u dGFpbgogCQkJCWluY29tcGxldGUgZXh0ZXJuYWxseSBzdG9yZWQKIAkJCQljb2x1bW5zLiBQcmV0 ZW5kIHRoYXQgc3VjaCByZWNvcmRzIGRvCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9yb3cvcm93MHVwZC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMJ cmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEwMTAxODEyMTYyMy0yMnJoa2l2aGNmd3lu OTBiCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuYwlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDEwMTAxOTA2MzUxNC1rNjNyZHM4NXNqNW8wZmRkCkBAIC00NjYsOCAr NDY2LDExIEBAIHJvd191cGRfY2hhbmdlc19maWVsZF9zaXplX29yX2V4dGVybmFsKAogI2VuZGlm IC8qICFVTklWX0hPVEJBQ0tVUCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1SZXBsYWNlcyB0aGUgbmV3IGNvbHVt biB2YWx1ZXMgc3RvcmVkIGluIHRoZSB1cGRhdGUgdmVjdG9yIHRvIHRoZSByZWNvcmQKLWdpdmVu LiBObyBmaWVsZCBzaXplIGNoYW5nZXMgYXJlIGFsbG93ZWQuICovCitSZXBsYWNlcyB0aGUgbmV3 IGNvbHVtbiB2YWx1ZXMgc3RvcmVkIGluIHRoZSB1cGRhdGUgdmVjdG9yIHRvIHRoZQorcmVjb3Jk IGdpdmVuLiBObyBmaWVsZCBzaXplIGNoYW5nZXMgYXJlIGFsbG93ZWQuIFRoaXMgZnVuY3Rpb24g aXMKK3VzdWFsbHkgaW52b2tlZCBvbiBhIGNsdXN0ZXJlZCBpbmRleC4gVGhlIG9ubHkgdXNlIGNh c2UgZm9yIGEKK3NlY29uZGFyeSBpbmRleCBpcyByb3dfaW5zX3NlY19pbmRleF9lbnRyeV9ieV9t b2RpZnkoKSBvciBpdHMKK2NvdW50ZXJwYXJ0IGluIGlidWZfaW5zZXJ0X3RvX2luZGV4X3BhZ2Uo KS4gKi8KIFVOSVZfSU5URVJOCiB2b2lkCiByb3dfdXBkX3JlY19pbl9wbGFjZSgKCg== --===============0114642431== 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.5-innodb/ # testament_sha1: 3d2e4872e543111b807fe4ddc29eeefeb5c2115b # timestamp: 2010-10-19 09:35:55 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: vasil.dimov@stripped\ # 22rhkivhcfwyn90b # # Begin bundle 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 cT504JhT3aL5e5ixsZZOCnBoxU3mcNTJk+dRjGhhODWfCFN9ypxM3uktpHUYqAU4Yw4ugmKR4mPa /K7jTqYLFCxaW33e5ufQpapy5/gKl5EIFEqpC0IG0Cf2xo4Rj++N5BXDBa3L5XsYtJRS+3vnTRZR l51Xu835x0aS0y33mhUQ/ziojkAyCHBrIpI1cEUYgjuicKFvcYutTgZzsyyqOQWFHdMXgwP6jCqK pr1k0XX+saeouTAzs4cFj19NyVuMNnwgVb+czNvmZZTE7NNGuFpzDDdbEmtX4jg74Q1wnQInc/3C eoYypAfZCpuF0If4HDEIRAfZLSn2S9CVA45QgOg/UbPOeYH0HB57+PZ4dyr5MclM2f01kf3Gd/fn 5ZHk2F3eus2Y5WWKeKmmrF6Wu6qr7E+pNk/1n9ja+ZgyTJLJlN0bZOnsfK9ztYrO6ylWnFr8O/Ro xatMFOqofA7O+b39Lx137VnbPynmywjNx8pUopubo8hTo4NHSBWVPHXJA3bjMqiumxmDQx6UPThV 7cndphgqu7bcw1WXqKlKudVt7NvuYxT7W++S2xiOssb5flO2aJ5eFDJg3S2kus4c3UPEfYOQ8tQ9 DEIxwHEYAhZ+djFVsOI/0RP7ET6BRxEU3f24yVt/Pu1/2ijM9ejRsWtKf78H5pG5gpSxIlllkhka t35PypoiR34fif2kkckievFHpWTeWLpfzUcYJmjZs0OBBoYCPW6PWPuHxoLPZuIl3a4JE7jmiRge 42zYzaWk8NJIHpMSGeAvi9RnymoxDWFyr14tq5vtyR2X0YJs7XHc79/pwOXvVjLsvkY41KnQyWdY XPdP0hjPKfMd7xd00rgzbfN0XZG9sZsFqYYLNZzVsYtTJxm8wmpsy+b/T0nKpPDx2PJznAnXe7vh 771a25HkM1GE4E8bHh4OOCjjjio1staeHhX+4QwJ0oICDgJhaFlqWeC7vEw48EAyQSkpMvMCvEzC tEqPMyhe65Q8iCAeifh0I+4QfgT5lD9tv9rh+EkowVJ5UYLmIfd3ih+F6Ant/0PqfIfCRURFUVRE k61eCbRBv29ZNTam0CscqqufbggVVAFVSBSPjU9OoPeOs9vq4eq3q9/5aLV34Xl7JlAwL5Rxvpx1 12Kidd9NKG4Tpo6adyHEvEBxB0keznjR1kOYAyDiFpDshPdId7jDCZTOZ2otEEzg6YYRKxEAM8ct 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 BsbCJ/hZVlX/F3JFOFCQw08U7g== --===============0114642431==--