From: marko.makela Date: June 2 2010 10:46am Subject: bzr push into mysql-5.1-innodb branch (marko.makela:3492 to 3496) Bug#53674 List-Archive: http://lists.mysql.com/commits/109937 X-Bug: 53674 Message-Id: <201006021046.o529PQLO012704@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1320286770==" --===============1320286770== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDM0OTYgTWFya28gTcOka2Vsw6QJMjAxMC0wNi0wMgogICAgICBEb2N1bWVudCB0aGUgQnVnICM1 MzY3NCBmaXggaW4gdGhlIElubm9EQiBQbHVnaW4KCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFn ZS9pbm5vZGJfcGx1Z2luL0NoYW5nZUxvZwogMzQ5NSBNYXJrbyBNw6RrZWzDpAkyMDEwLTA2LTAy CiAgICAgIEJ1ZyM1MzY3NDogSW5ub0RCOiBFcnJvcjogdW5sb2NrIHJvdyBjb3VsZCBub3QgZmlu ZCBhIDQgbW9kZSBsb2NrIG9uIHRoZSByZWNvcmQKICAgICAgCiAgICAgIEluIHNlbWktY29uc2lz dGVudCByZWFkLCBvbmx5IHVubG9jayBmcmVzaGx5IGxvY2tlZCBub24tbWF0Y2hpbmcgcmVjb3Jk cy4KICAgICAgCiAgICAgIGxvY2tfcmVjX2xvY2tfZmFzdCgpOiBSZXR1cm4gTE9DS19SRUNfU1VD Q0VTUywKICAgICAgTE9DS19SRUNfU1VDQ0VTU19DUkVBVEVELCBvciBMT0NLX1JFQ19GQUlMIGlu c3RlYWQgb2YgVFJVRS9GQUxTRS4KICAgICAgCiAgICAgIGVudW0gZGJfZXJyOiBBZGQgREJfU1VD Q0VTU19MT0NLRURfUkVDIGZvciBpbmRpY2F0aW5nIGEgc3VjY2Vzc2Z1bAogICAgICBvcGVyYXRp b24gd2hlcmUgYSByZWNvcmQgbG9jayB3YXMgY3JlYXRlZC4KICAgICAgCiAgICAgIGxvY2tfc2Vj X3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrKCksCiAgICAgIGxvY2tfY2x1c3RfcmVjX3JlYWRfY2hl Y2tfYW5kX2xvY2soKSwgbG9ja19yZWNfZW5xdWV1ZV93YWl0aW5nKCksCiAgICAgIGxvY2tfcmVj X2xvY2tfc2xvdygpLCBsb2NrX3JlY19sb2NrKCksIHJvd19pbnNfc2V0X3NoYXJlZF9yZWNfbG9j aygpLAogICAgICByb3dfaW5zX3NldF9leGNsdXNpdmVfcmVjX2xvY2soKSwgc2VsX3NldF9yZWNf bG9jaygpLAogICAgICByb3dfc2VsX2dldF9jbHVzdF9yZWNfZm9yX215c3FsKCk6IFJldHVybiBE Ql9TVUNDRVNTX0xPQ0tFRF9SRUMgaWYgYQogICAgICBuZXcgcmVjb3JkIGxvY2sgd2FzIGNyZWF0 ZWQuIEFkanVzdCBjYWxsZXJzLgogICAgICAKICAgICAgcm93X3VubG9ja19mb3JfbXlzcWwoKTog Q29ycmVjdCB0aGUgZnVuY3Rpb24gZG9jdW1lbnRhdGlvbi4KICAgICAgCiAgICAgIHJvd19wcmVi dWlsdF90OjpuZXdfcmVjX2xvY2tzOiBDb3JyZWN0IHRoZSBkb2N1bWVudGF0aW9uLgoKICAgIGFk ZGVkOgogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vci9pbm5vZGJfYnVnNTM2 NzQucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX3BsdWdpbi90L2lubm9kYl9i dWc1MzY3NC1tYXN0ZXIub3B0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX3BsdWdpbi90 L2lubm9kYl9idWc1MzY3NC50ZXN0CiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vZGJf cGx1Z2luL2luY2x1ZGUvZGIwZXJyLmgKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1 ZGUvbG9jazBsb2NrLmgKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvcm93MG15 c3FsLmgKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2xvY2svbG9jazBsb2NrLmMKICAgICAg c3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwaW5zLmMKICAgICAgc3RvcmFnZS9pbm5vZGJf cGx1Z2luL3Jvdy9yb3cwbXlzcWwuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3Jv dzBzZWwuYwogMzQ5NCBNYXJrbyBNw6RrZWzDpAkyMDEwLTA2LTAyCiAgICAgIEJ1ZyM1MzY3NDog SW5ub0RCOiBFcnJvcjogdW5sb2NrIHJvdyBjb3VsZCBub3QgZmluZCBhIDQgbW9kZSBsb2NrIG9u IHRoZSByZWNvcmQKICAgICAgCiAgICAgIEluIHNlbWktY29uc2lzdGVudCByZWFkLCBvbmx5IHVu bG9jayBmcmVzaGx5IGxvY2tlZCBub24tbWF0Y2hpbmcgcmVjb3Jkcy4KICAgICAgCiAgICAgIERl ZmluZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMgZm9yIGluZGljYXRpbmcgYSBzdWNjZXNzZnVsIG9w ZXJhdGlvbgogICAgICB3aGVyZSBhIHJlY29yZCBsb2NrIHdhcyBjcmVhdGVkLgogICAgICAKICAg ICAgbG9ja19yZWNfbG9ja19mYXN0KCk6IFJldHVybiBMT0NLX1JFQ19TVUNDRVNTLAogICAgICBM T0NLX1JFQ19TVUNDRVNTX0NSRUFURUQsIG9yIExPQ0tfUkVDX0ZBSUwgaW5zdGVhZCBvZiBUUlVF L0ZBTFNFLgogICAgICAKICAgICAgbG9ja19zZWNfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soKSwK ICAgICAgbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRfbG9jaygpLCBsb2NrX3JlY19lbnF1 ZXVlX3dhaXRpbmcoKSwKICAgICAgbG9ja19yZWNfbG9ja19zbG93KCksIGxvY2tfcmVjX2xvY2so KSwgcm93X2luc19zZXRfc2hhcmVkX3JlY19sb2NrKCksCiAgICAgIHJvd19pbnNfc2V0X2V4Y2x1 c2l2ZV9yZWNfbG9jaygpLCBzZWxfc2V0X3JlY19sb2NrKCksCiAgICAgIHJvd19zZWxfZ2V0X2Ns dXN0X3JlY19mb3JfbXlzcWwoKTogUmV0dXJuIERCX1NVQ0NFU1NfTE9DS0VEX1JFQyBpZiBhCiAg ICAgIG5ldyByZWNvcmQgbG9jayB3YXMgY3JlYXRlZC4gQWRqdXN0IGNhbGxlcnMuCiAgICAgIAog ICAgICByb3dfdW5sb2NrX2Zvcl9teXNxbCgpOiBDb3JyZWN0IHRoZSBmdW5jdGlvbiBkb2N1bWVu dGF0aW9uLgogICAgICAKICAgICAgcm93X3ByZWJ1aWx0X3Q6Om5ld19yZWNfbG9ja3M6IENvcnJl Y3QgdGhlIGRvY3VtZW50YXRpb24uCgogICAgYWRkZWQ6CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUv aW5ub2RiL3IvaW5ub2RiX2J1ZzUzNjc0LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2lu bm9kYi90L2lubm9kYl9idWc1MzY3NC1tYXN0ZXIub3B0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUv aW5ub2RiL3QvaW5ub2RiX2J1ZzUzNjc0LnRlc3QKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvZGIwZXJyLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L2xvY2swbG9jay5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwbXlzcWwuaAog ICAgICBzdG9yYWdlL2lubm9iYXNlL2xvY2svbG9jazBsb2NrLmMKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9yb3cvcm93MGlucy5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5j CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBzZWwuYwogMzQ5MyBNYXJrbyBNw6RrZWzD pAkyMDEwLTA2LTAyCiAgICAgIGZpbF9wcmludF9vcnBoYW5lZF90YWJsZXNwYWNlcygpOiBVbnVz ZWQgZnVuY3Rpb24sIHJlbW92ZS4KCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vZGJf cGx1Z2luL2ZpbC9maWwwZmlsLmMKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUv ZmlsMGZpbC5oCiAzNDkyIE1hcmtvIE3DpGtlbMOkCTIwMTAtMDYtMDEKICAgICAgRG9jdW1lbnQg QnVnICM0ODE5NyBmaXgKCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2lu L0NoYW5nZUxvZwo9PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5v ZGJfYnVnNTM2NzQucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9k Yl9idWc1MzY3NC5yZXN1bHQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10 ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9idWc1MzY3NC5yZXN1bHQJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMDM5MDMtMzNieWl4czN4bHFjd3NqMApAQCAtMCwwICsx LDExIEBACitjcmVhdGUgdGFibGUgYnVnNTM2NzQoYSBpbnQpZW5naW5lPWlubm9kYjsKK2luc2Vy dCBpbnRvIGJ1ZzUzNjc0IHZhbHVlcyAoMSksKDIpOworc3RhcnQgdHJhbnNhY3Rpb247CitzZWxl Y3QgKiBmcm9tIGJ1ZzUzNjc0IGZvciB1cGRhdGU7CithCisxCisyCitzZWxlY3QgKiBmcm9tIGJ1 ZzUzNjc0IHdoZXJlIGE9KHNlbGVjdCBhIGZyb20gYnVnNTM2NzQgd2hlcmUgYSA+IDEpOworYQor MgorZHJvcCB0YWJsZSBidWc1MzY3NDsKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1aXRl L2lubm9kYi90L2lubm9kYl9idWc1MzY3NC1tYXN0ZXIub3B0JwotLS0gYS9teXNxbC10ZXN0L3N1 aXRlL2lubm9kYi90L2lubm9kYl9idWc1MzY3NC1tYXN0ZXIub3B0CTE5NzAtMDEtMDEgMDA6MDA6 MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTM2NzQt bWFzdGVyLm9wdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjEwMzkwMy0z M2J5aXhzM3hscWN3c2owCkBAIC0wLDAgKzEgQEAKKy0tbG9nLWJpbiAtLWlubm9kYi1sb2Nrcy11 bnNhZmUtZm9yLWJpbmxvZyAtLWJpbmxvZy1mb3JtYXQ9bWl4ZWQKCj09PSBhZGRlZCBmaWxlICdt eXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1MzY3NC50ZXN0JwotLS0gYS9teXNx bC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1MzY3NC50ZXN0CTE5NzAtMDEtMDEgMDA6 MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTM2 NzQudGVzdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjEwMzkwMy0zM2J5 aXhzM3hscWN3c2owCkBAIC0wLDAgKzEsOCBAQAorLS0gc291cmNlIGluY2x1ZGUvaGF2ZV9pbm5v ZGIuaW5jCisKK2NyZWF0ZSB0YWJsZSBidWc1MzY3NChhIGludCllbmdpbmU9aW5ub2RiOworaW5z ZXJ0IGludG8gYnVnNTM2NzQgdmFsdWVzICgxKSwoMik7CitzdGFydCB0cmFuc2FjdGlvbjsKK3Nl bGVjdCAqIGZyb20gYnVnNTM2NzQgZm9yIHVwZGF0ZTsKK3NlbGVjdCAqIGZyb20gYnVnNTM2NzQg d2hlcmUgYT0oc2VsZWN0IGEgZnJvbSBidWc1MzY3NCB3aGVyZSBhID4gMSk7Citkcm9wIHRhYmxl IGJ1ZzUzNjc0OwoKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX3BsdWdp bi9yL2lubm9kYl9idWc1MzY3NC5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2Ri X3BsdWdpbi9yL2lubm9kYl9idWc1MzY3NC5yZXN1bHQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAw MAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vci9pbm5vZGJfYnVnNTM2NzQu cmVzdWx0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAzOTAzLTMzYnlp eHMzeGxxY3dzajAKQEAgLTAsMCArMSwxMSBAQAorY3JlYXRlIHRhYmxlIGJ1ZzUzNjc0KGEgaW50 KWVuZ2luZT1pbm5vZGI7CitpbnNlcnQgaW50byBidWc1MzY3NCB2YWx1ZXMgKDEpLCgyKTsKK3N0 YXJ0IHRyYW5zYWN0aW9uOworc2VsZWN0ICogZnJvbSBidWc1MzY3NCBmb3IgdXBkYXRlOworYQor MQorMgorc2VsZWN0ICogZnJvbSBidWc1MzY3NCB3aGVyZSBhPShzZWxlY3QgYSBmcm9tIGJ1ZzUz Njc0IHdoZXJlIGEgPiAxKTsKK2EKKzIKK2Ryb3AgdGFibGUgYnVnNTM2NzQ7Cgo9PT0gYWRkZWQg ZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfcGx1Z2luL3QvaW5ub2RiX2J1ZzUzNjc0LW1h c3Rlci5vcHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX3BsdWdpbi90L2lubm9kYl9i dWc1MzY3NC1tYXN0ZXIub3B0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwt dGVzdC9zdWl0ZS9pbm5vZGJfcGx1Z2luL3QvaW5ub2RiX2J1ZzUzNjc0LW1hc3Rlci5vcHQJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMDM5MDMtMzNieWl4czN4bHFjd3Nq MApAQCAtMCwwICsxIEBACistLWxvZy1iaW4gLS1pbm5vZGItbG9ja3MtdW5zYWZlLWZvci1iaW5s b2cgLS1iaW5sb2ctZm9ybWF0PW1peGVkCgo9PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0 ZS9pbm5vZGJfcGx1Z2luL3QvaW5ub2RiX2J1ZzUzNjc0LnRlc3QnCi0tLSBhL215c3FsLXRlc3Qv c3VpdGUvaW5ub2RiX3BsdWdpbi90L2lubm9kYl9idWc1MzY3NC50ZXN0CTE5NzAtMDEtMDEgMDA6 MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfcGx1Z2luL3QvaW5ub2Ri X2J1ZzUzNjc0LnRlc3QJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMDM5 MDMtMzNieWl4czN4bHFjd3NqMApAQCAtMCwwICsxLDggQEAKKy0tIHNvdXJjZSBpbmNsdWRlL2hh dmVfaW5ub2RiX3BsdWdpbi5pbmMKKworY3JlYXRlIHRhYmxlIGJ1ZzUzNjc0KGEgaW50KWVuZ2lu ZT1pbm5vZGI7CitpbnNlcnQgaW50byBidWc1MzY3NCB2YWx1ZXMgKDEpLCgyKTsKK3N0YXJ0IHRy YW5zYWN0aW9uOworc2VsZWN0ICogZnJvbSBidWc1MzY3NCBmb3IgdXBkYXRlOworc2VsZWN0ICog ZnJvbSBidWc1MzY3NCB3aGVyZSBhPShzZWxlY3QgYSBmcm9tIGJ1ZzUzNjc0IHdoZXJlIGEgPiAx KTsKK2Ryb3AgdGFibGUgYnVnNTM2NzQ7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL2RiMGVyci5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGIw ZXJyLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDExMzU4MDItaGdwbGNw cjgwODl1cmE4ZworKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGIwZXJyLmgJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMDM5MDMtMzNieWl4czN4bHFjd3NqMApA QCAtMTAsNiArMTAsOCBAQCBDcmVhdGVkIDUvMjQvMTk5NiBIZWlra2kgVHV1cmkKICNkZWZpbmUg ZGIwZXJyX2gKIAogCisjZGVmaW5lIERCX1NVQ0NFU1NfTE9DS0VEX1JFQwk5CS8qIGxpa2UgREJf U1VDQ0VTUywgYnV0IGEgbmV3CisJCQkJCWV4cGxpY2l0IHJlY29yZCBsb2NrIHdhcyBjcmVhdGVk ICovCiAjZGVmaW5lIERCX1NVQ0NFU1MJCTEwCiAKIC8qIFRoZSBmb2xsb3dpbmcgYXJlIGVycm9y IGNvZGVzICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2xv Y2swbG9jay5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbG9jazBsb2NrLmgJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDExMzU4MDItaGdwbGNwcjgwODl1cmE4 ZworKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbG9jazBsb2NrLmgJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMDM5MDMtMzNieWl4czN4bHFjd3NqMApAQCAtMjky LDE0ICsyOTIsMTUgQEAgbG9ja19zZWNfcmVjX21vZGlmeV9jaGVja19hbmRfbG9jaygKIAlkaWN0 X2luZGV4X3QqCWluZGV4LAkvKiBpbjogc2Vjb25kYXJ5IGluZGV4ICovCiAJcXVlX3Rocl90Kgl0 aHIpOwkvKiBpbjogcXVlcnkgdGhyZWFkICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotTGlrZSB0aGUg Y291bnRlcnBhcnQgZm9yIGEgY2x1c3RlcmVkIGluZGV4IGJlbG93LCBidXQgbm93IHdlIHJlYWQg YQorTGlrZSBsb2NrX2NsdXN0X3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrKCksIGJ1dCByZWFkcyBh CiBzZWNvbmRhcnkgaW5kZXggcmVjb3JkLiAqLwogCiB1bGludAogbG9ja19zZWNfcmVjX3JlYWRf Y2hlY2tfYW5kX2xvY2soCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQkJCQkv KiBvdXQ6IERCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwKLQkJCQlEQl9ERUFETE9DSywgb3IgREJf UVVFX1RIUl9TVVNQRU5ERUQgKi8KKwkJCQkvKiBvdXQ6IERCX1NVQ0NFU1MsIERCX1NVQ0NFU1Nf TE9DS0VEX1JFQywKKwkJCQlEQl9MT0NLX1dBSVQsIERCX0RFQURMT0NLLAorCQkJCW9yIERCX1FV RV9USFJfU1VTUEVOREVEICovCiAJdWxpbnQJCWZsYWdzLAkvKiBpbjogaWYgQlRSX05PX0xPQ0tJ TkdfRkxBRyBiaXQgaXMgc2V0LAogCQkJCWRvZXMgbm90aGluZyAqLwogCXJlY190KgkJcmVjLAkv KiBpbjogdXNlciByZWNvcmQgb3IgcGFnZSBzdXByZW11bSByZWNvcmQKQEAgLTMyNCw4ICszMjUs OSBAQCBsb2NrIG9uIHRoZSByZWNvcmQuICovCiB1bGludAogbG9ja19jbHVzdF9yZWNfcmVhZF9j aGVja19hbmRfbG9jaygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0JCQkJ Lyogb3V0OiBEQl9TVUNDRVNTLCBEQl9MT0NLX1dBSVQsCi0JCQkJREJfREVBRExPQ0ssIG9yIERC X1FVRV9USFJfU1VTUEVOREVEICovCisJCQkJLyogb3V0OiBEQl9TVUNDRVNTLCBEQl9TVUNDRVNT X0xPQ0tFRF9SRUMsCisJCQkJREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywKKwkJCQlvciBEQl9R VUVfVEhSX1NVU1BFTkRFRCAqLwogCXVsaW50CQlmbGFncywJLyogaW46IGlmIEJUUl9OT19MT0NL SU5HX0ZMQUcgYml0IGlzIHNldCwKIAkJCQlkb2VzIG5vdGhpbmcgKi8KIAlyZWNfdCoJCXJlYywJ LyogaW46IHVzZXIgcmVjb3JkIG9yIHBhZ2Ugc3VwcmVtdW0gcmVjb3JkCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBteXNxbC5oJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvcm93MG15c3FsLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMDA2MDExMzU4MDItaGdwbGNwcjgwODl1cmE4ZworKysgYi9zdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvcm93MG15c3FsLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2 MDIxMDM5MDMtMzNieWl4czN4bHFjd3NqMApAQCAtMjQ2LDIyICsyNDYsMjAgQEAgcm93X3VwZGF0 ZV9mb3JfbXlzcWwoCiAJcm93X3ByZWJ1aWx0X3QqCXByZWJ1aWx0KTsJLyogaW46IHByZWJ1aWx0 IHN0cnVjdCBpbiBNeVNRTAogCQkJCQloYW5kbGUgKi8KIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1UaGlz IGNhbiBvbmx5IGJlIHVzZWQgd2hlbiBzcnZfbG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cgaXMgVFJV RSBvcgotc2Vzc2lvbiBpcyB1c2luZyBhIFJFQUQgQ09NTUlUVEVEIGlzb2xhdGlvbiBsZXZlbC4g QmVmb3JlCi1jYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2UgbXVzdCB1c2UgdHJ4X3Jlc2V0X25ld19y ZWNfbG9ja19pbmZvKCkgYW5kCi10cnhfcmVnaXN0ZXJfbmV3X3JlY19sb2NrKCkgdG8gc3RvcmUg dGhlIGluZm9ybWF0aW9uIHdoaWNoIG5ldyByZWNvcmQgbG9ja3MKLXJlYWxseSB3ZXJlIHNldC4g VGhpcyBmdW5jdGlvbiByZW1vdmVzIGEgbmV3bHkgc2V0IGxvY2sgdW5kZXIgcHJlYnVpbHQtPnBj dXIsCi1hbmQgYWxzbyB1bmRlciBwcmVidWlsdC0+Y2x1c3RfcGN1ci4gQ3VycmVudGx5LCB0aGlz IGlzIG9ubHkgdXNlZCBhbmQgdGVzdGVkCi1pbiB0aGUgY2FzZSBvZiBhbiBVUERBVEUgb3IgYSBE RUxFVEUgc3RhdGVtZW50LCB3aGVyZSB0aGUgcm93IGxvY2sgaXMgb2YgdGhlCi1MT0NLX1ggdHlw ZS4KLVRodXMsIHRoaXMgaW1wbGVtZW50cyBhICdtaW5pLXJvbGxiYWNrJyB0aGF0IHJlbGVhc2Vz IHRoZSBsYXRlc3QgcmVjb3JkCi1sb2NrcyB3ZSBzZXQuICovCitUaGlzIGNhbiBvbmx5IGJlIHVz ZWQgd2hlbiBzcnZfbG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cgaXMgVFJVRSBvciB0aGlzCitzZXNz aW9uIGlzIHVzaW5nIGEgUkVBRCBDT01NSVRURUQgb3IgUkVBRCBVTkNPTU1JVFRFRCBpc29sYXRp b24gbGV2ZWwuCitCZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHJvd19zZWFyY2hfZm9yX215 c3FsKCkgbXVzdCBoYXZlCitpbml0aWFsaXplZCBwcmVidWlsdC0+bmV3X3JlY19sb2NrcyB0byBz dG9yZSB0aGUgaW5mb3JtYXRpb24gd2hpY2ggbmV3CityZWNvcmQgbG9ja3MgcmVhbGx5IHdlcmUg c2V0LiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgYSBuZXdseSBzZXQKK2NsdXN0ZXJlZCBpbmRleCBy ZWNvcmQgbG9jayB1bmRlciBwcmVidWlsdC0+cGN1ciBvcgorcHJlYnVpbHQtPmNsdXN0X3BjdXIu ICBUaHVzLCB0aGlzIGltcGxlbWVudHMgYSAnbWluaS1yb2xsYmFjaycgdGhhdAorcmVsZWFzZXMg dGhlIGxhdGVzdCBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIGxvY2sgd2Ugc2V0LiAqLwogCiBpbnQK IHJvd191bmxvY2tfZm9yX215c3FsKAogLyo9PT09PT09PT09PT09PT09PSovCiAJCQkJCS8qIG91 dDogZXJyb3IgY29kZSBvciBEQl9TVUNDRVNTICovCi0Jcm93X3ByZWJ1aWx0X3QqCXByZWJ1aWx0 LAkvKiBpbjogcHJlYnVpbHQgc3RydWN0IGluIE15U1FMCisJcm93X3ByZWJ1aWx0X3QqCXByZWJ1 aWx0LAkvKiBpbi9vdXQ6IHByZWJ1aWx0IHN0cnVjdCBpbiBNeVNRTAogCQkJCQloYW5kbGUgKi8K IAlpYm9vbAkJaGFzX2xhdGNoZXNfb25fcmVjcyk7LyogVFJVRSBpZiBjYWxsZWQgc28gdGhhdCB3 ZSBoYXZlCiAJCQkJCXRoZSBsYXRjaGVzIG9uIHRoZSByZWNvcmRzIHVuZGVyIHBjdXIKQEAgLTY2 MCwxOCArNjU4LDE3IEBAIHN0cnVjdCByb3dfcHJlYnVpbHRfc3RydWN0IHsKIAl1bGludAkJbmV3 X3JlY19sb2NrczsJLyogbm9ybWFsbHkgMDsgaWYKIAkJCQkJc3J2X2xvY2tzX3Vuc2FmZV9mb3Jf YmlubG9nIGlzCiAJCQkJCVRSVUUgb3Igc2Vzc2lvbiBpcyB1c2luZyBSRUFECi0JCQkJCUNPTU1J VFRFRCBpc29sYXRpb24gbGV2ZWwsIGluIGEKLQkJCQkJY3Vyc29yIHNlYXJjaCwgaWYgd2Ugc2V0 IGEgbmV3Ci0JCQkJCXJlY29yZCBsb2NrIG9uIGFuIGluZGV4LCB0aGlzIGlzCi0JCQkJCWluY3Jl bWVudGVkOyB0aGlzIGlzIHVzZWQgaW4KLQkJCQkJcmVsZWFzaW5nIHRoZSBsb2NrcyB1bmRlciB0 aGUKLQkJCQkJY3Vyc29ycyBpZiB3ZSBhcmUgcGVyZm9ybWluZyBhbgotCQkJCQlVUERBVEUgYW5k IHdlIGRldGVybWluZSBhZnRlcgotCQkJCQlyZXRyaWV2aW5nIHRoZSByb3cgdGhhdCBpdCBkb2Vz Ci0JCQkJCW5vdCBuZWVkIHRvIGJlIGxvY2tlZDsgdGh1cywKLQkJCQkJdGhlc2UgY2FuIGJlIHVz ZWQgdG8gaW1wbGVtZW50IGEKLQkJCQkJJ21pbmktcm9sbGJhY2snIHRoYXQgcmVsZWFzZXMKLQkJ CQkJdGhlIGxhdGVzdCByZWNvcmQgbG9ja3MgKi8KKwkJCQkJQ09NTUlUVEVEIG9yIFJFQUQgVU5D T01NSVRURUQKKwkJCQkJaXNvbGF0aW9uIGxldmVsLCBzZXQgaW4KKwkJCQkJcm93X3NlYXJjaF9m b3JfbXlzcWwoKSBpZiB3ZSBzZXQgYSBuZXcKKwkJCQkJcmVjb3JkIGxvY2sgb24gdGhlIHNlY29u ZGFyeQorCQkJCQlvciBjbHVzdGVyZWQgaW5kZXg7IHRoaXMgaXMKKwkJCQkJdXNlZCBpbiByb3df dW5sb2NrX2Zvcl9teXNxbCgpCisJCQkJCXdoZW4gcmVsZWFzaW5nIHRoZSBsb2NrIHVuZGVyCisJ CQkJCXRoZSBjdXJzb3IgaWYgd2UgZGV0ZXJtaW5lCisJCQkJCWFmdGVyIHJldHJpZXZpbmcgdGhl IHJvdyB0aGF0CisJCQkJCWl0IGRvZXMgbm90IG5lZWQgdG8gYmUgbG9ja2VkCisJCQkJCSgnbWlu aS1yb2xsYmFjaycpICovCiAJdWxpbnQJCW15c3FsX3ByZWZpeF9sZW47LyogYnl0ZSBvZmZzZXQg b2YgdGhlIGVuZCBvZgogCQkJCQl0aGUgbGFzdCByZXF1ZXN0ZWQgY29sdW1uICovCiAJdWxpbnQJ CW15c3FsX3Jvd19sZW47CS8qIGxlbmd0aCBpbiBieXRlcyBvZiBhIHJvdyBpbiB0aGUKCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2xvY2svbG9jazBsb2NrLmMnCi0tLSBhL3N0 b3JhZ2UvaW5ub2Jhc2UvbG9jay9sb2NrMGxvY2suYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDEwMDYwMTEzNTgwMi1oZ3BsY3ByODA4OXVyYThnCisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2UvbG9jay9sb2NrMGxvY2suYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYw MjEwMzkwMy0zM2J5aXhzM3hscWN3c2owCkBAIC0xNzM5LDExICsxNzM5LDEyIEBAIHVsaW50CiBs b2NrX3JlY19lbnF1ZXVlX3dhaXRpbmcoCiAvKj09PT09PT09PT09PT09PT09PT09PSovCiAJCQkJ Lyogb3V0OiBEQl9MT0NLX1dBSVQsIERCX0RFQURMT0NLLCBvcgotCQkJCURCX1FVRV9USFJfU1VT UEVOREVELCBvciBEQl9TVUNDRVNTOwotCQkJCURCX1NVQ0NFU1MgbWVhbnMgdGhhdCB0aGVyZSB3 YXMgYSBkZWFkbG9jaywKLQkJCQlidXQgYW5vdGhlciB0cmFuc2FjdGlvbiB3YXMgY2hvc2VuIGFz IGEKLQkJCQl2aWN0aW0sIGFuZCB3ZSBnb3QgdGhlIGxvY2sgaW1tZWRpYXRlbHk6Ci0JCQkJbm8g bmVlZCB0byB3YWl0IHRoZW4gKi8KKwkJCQlEQl9RVUVfVEhSX1NVU1BFTkRFRCwgb3IgREJfU1VD Q0VTU19MT0NLRURfUkVDOworCQkJCURCX1NVQ0NFU1NfTE9DS0VEX1JFQyBtZWFucyB0aGF0IHRo ZXJlCisJCQkJd2FzIGEgZGVhZGxvY2ssIGJ1dCBhbm90aGVyCisJCQkJdHJhbnNhY3Rpb24gd2Fz IGNob3NlbiBhcyBhIHZpY3RpbSwKKwkJCQlhbmQgd2UgZ290IHRoZSBsb2NrIGltbWVkaWF0ZWx5 OiBubworCQkJCW5lZWQgdG8gd2FpdCB0aGVuICovCiAJdWxpbnQJCXR5cGVfbW9kZSwvKiBpbjog bG9jayBtb2RlIHRoaXMgdHJhbnNhY3Rpb24gaXMKIAkJCQlyZXF1ZXN0aW5nOiBMT0NLX1Mgb3Ig TE9DS19YLCBwb3NzaWJseSBPUmVkCiAJCQkJd2l0aCBMT0NLX0dBUCBvciBMT0NLX1JFQ19OT1Rf R0FQLCBPUmVkCkBAIC0xODA0LDcgKzE4MDUsNyBAQCBsb2NrX3JlY19lbnF1ZXVlX3dhaXRpbmco CiAKIAlpZiAodHJ4LT53YWl0X2xvY2sgPT0gTlVMTCkgewogCi0JCXJldHVybihEQl9TVUNDRVNT KTsKKwkJcmV0dXJuKERCX1NVQ0NFU1NfTE9DS0VEX1JFQyk7CiAJfQogCiAJdHJ4LT5xdWVfc3Rh dGUgPSBUUlhfUVVFX0xPQ0tfV0FJVDsKQEAgLTE5MDMsNiArMTkwNCwxNiBAQCBsb2NrX3JlY19h ZGRfdG9fcXVldWUoCiAJcmV0dXJuKGxvY2tfcmVjX2NyZWF0ZSh0eXBlX21vZGUsIHJlYywgaW5k ZXgsIHRyeCkpOwogfQogCisvKiogUmVjb3JkIGxvY2tpbmcgcmVxdWVzdCBzdGF0dXMgKi8KK2Vu dW0gbG9ja19yZWNfcmVxX3N0YXR1cyB7CisJLyoqIEZhaWxlZCB0byBhY3F1aXJlIGEgbG9jayAq LworCUxPQ0tfUkVDX0ZBSUwsCisJLyoqIFN1Y2NlZWRlZCBpbiBhY3F1aXJpbmcgYSBsb2NrIChp bXBsaWNpdCBvciBhbHJlYWR5IGFjcXVpcmVkKSAqLworCUxPQ0tfUkVDX1NVQ0NFU1MsCisJLyoq IEV4cGxpY2l0bHkgY3JlYXRlZCBhIG5ldyBsb2NrICovCisJTE9DS19SRUNfU1VDQ0VTU19DUkVB VEVECit9OworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogVGhpcyBpcyBhIGZhc3Qgcm91dGluZSBmb3Ig bG9ja2luZyBhIHJlY29yZCBpbiB0aGUgbW9zdCBjb21tb24gY2FzZXM6CiB0aGVyZSBhcmUgbm8g ZXhwbGljaXQgbG9ja3Mgb24gdGhlIHBhZ2UsIG9yIHRoZXJlIGlzIGp1c3Qgb25lIGxvY2ssIG93 bmVkCkBAIC0xOTExLDEwICsxOTIyLDEwIEBAIHdoaWNoIGRvZXMgTk9UIGxvb2sgYXQgaW1wbGlj aXQgbG9ja3MhIEMKIGV4cGxpY2l0IGxvY2tzLiBUaGlzIGZ1bmN0aW9uIHNldHMgYSBub3JtYWwg bmV4dC1rZXkgbG9jaywgb3IgaW4gdGhlIGNhc2Ugb2YKIGEgcGFnZSBzdXByZW11bSByZWNvcmQs IGEgZ2FwIHR5cGUgbG9jay4gKi8KIFVOSVZfSU5MSU5FCi1pYm9vbAorZW51bSBsb2NrX3JlY19y ZXFfc3RhdHVzCiBsb2NrX3JlY19sb2NrX2Zhc3QoCiAvKj09PT09PT09PT09PT09PSovCi0JCQkJ Lyogb3V0OiBUUlVFIGlmIGxvY2tpbmcgc3VjY2VlZGVkICovCisJCQkJLyogb3V0OiB3aGV0aGVy IHRoZSBsb2NraW5nIHN1Y2NlZWRlZCAqLwogCWlib29sCQlpbXBsLAkvKiBpbjogaWYgVFJVRSwg bm8gbG9jayBpcyBzZXQgaWYgbm8gd2FpdAogCQkJCWlzIG5lY2Vzc2FyeTogd2UgYXNzdW1lIHRo YXQgdGhlIGNhbGxlciB3aWxsCiAJCQkJc2V0IGFuIGltcGxpY2l0IGxvY2sgKi8KQEAgLTE5NTAs MTkgKzE5NjEsMTkgQEAgbG9ja19yZWNfbG9ja19mYXN0KAogCQkJbG9ja19yZWNfY3JlYXRlKG1v ZGUsIHJlYywgaW5kZXgsIHRyeCk7CiAJCX0KIAotCQlyZXR1cm4oVFJVRSk7CisJCXJldHVybihM T0NLX1JFQ19TVUNDRVNTX0NSRUFURUQpOwogCX0KIAogCWlmIChsb2NrX3JlY19nZXRfbmV4dF9v bl9wYWdlKGxvY2spKSB7CiAKLQkJcmV0dXJuKEZBTFNFKTsKKwkJcmV0dXJuKExPQ0tfUkVDX0ZB SUwpOwogCX0KIAogCWlmIChsb2NrLT50cnggIT0gdHJ4CiAJICAgIHx8IGxvY2stPnR5cGVfbW9k ZSAhPSAobW9kZSB8IExPQ0tfUkVDKQogCSAgICB8fCBsb2NrX3JlY19nZXRfbl9iaXRzKGxvY2sp IDw9IGhlYXBfbm8pIHsKIAotCQlyZXR1cm4oRkFMU0UpOworCQlyZXR1cm4oTE9DS19SRUNfRkFJ TCk7CiAJfQogCiAJaWYgKCFpbXBsKSB7CkBAIC0xOTcxLDEwICsxOTgyLDExIEBAIGxvY2tfcmVj X2xvY2tfZmFzdCgKIAogCQlpZiAoIWxvY2tfcmVjX2dldF9udGhfYml0KGxvY2ssIGhlYXBfbm8p KSB7CiAJCQlsb2NrX3JlY19zZXRfbnRoX2JpdChsb2NrLCBoZWFwX25vKTsKKwkJCXJldHVybihM T0NLX1JFQ19TVUNDRVNTX0NSRUFURUQpOwogCQl9CiAJfQogCi0JcmV0dXJuKFRSVUUpOworCXJl dHVybihMT0NLX1JFQ19TVUNDRVNTKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTE5ODYs OCArMTk5OCw5IEBAIHN0YXRpYwogdWxpbnQKIGxvY2tfcmVjX2xvY2tfc2xvdygKIC8qPT09PT09 PT09PT09PT09Ki8KLQkJCQkvKiBvdXQ6IERCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwgb3IgZXJy b3IKLQkJCQljb2RlICovCisJCQkJLyogb3V0OiBEQl9TVUNDRVNTLCBEQl9TVUNDRVNTX0xPQ0tF RF9SRUMsCisJCQkJREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywKKwkJCQlvciBEQl9RVUVfVEhS X1NVU1BFTkRFRCAqLwogCWlib29sCQlpbXBsLAkvKiBpbjogaWYgVFJVRSwgbm8gbG9jayBpcyBz ZXQgaWYgbm8gd2FpdCBpcwogCQkJCW5lY2Vzc2FyeTogd2UgYXNzdW1lIHRoYXQgdGhlIGNhbGxl ciB3aWxsIHNldAogCQkJCWFuIGltcGxpY2l0IGxvY2sgKi8KQEAgLTE5OTgsNyArMjAxMSw2IEBA IGxvY2tfcmVjX2xvY2tfc2xvdygKIAlxdWVfdGhyX3QqCXRocikJLyogaW46IHF1ZXJ5IHRocmVh ZCAqLwogewogCXRyeF90Kgl0cng7Ci0JdWxpbnQJZXJyOwogCiAJdXRfYWQobXV0ZXhfb3duKCZr ZXJuZWxfbXV0ZXgpKTsKIAl1dF9hZCgoTE9DS19NT0RFX01BU0sgJiBtb2RlKSAhPSBMT0NLX1MK QEAgLTIwMTcsMjYgKzIwMjksMjEgQEAgbG9ja19yZWNfbG9ja19zbG93KAogCQkvKiBUaGUgdHJ4 IGFscmVhZHkgaGFzIGEgc3Ryb25nIGVub3VnaCBsb2NrIG9uIHJlYzogZG8KIAkJbm90aGluZyAq LwogCi0JCWVyciA9IERCX1NVQ0NFU1M7CiAJfSBlbHNlIGlmIChsb2NrX3JlY19vdGhlcl9oYXNf Y29uZmxpY3RpbmcobW9kZSwgcmVjLCB0cngpKSB7CiAKIAkJLyogSWYgYW5vdGhlciB0cmFuc2Fj dGlvbiBoYXMgYSBub24tZ2FwIGNvbmZsaWN0aW5nIHJlcXVlc3QgaW4KIAkJdGhlIHF1ZXVlLCBh cyB0aGlzIHRyYW5zYWN0aW9uIGRvZXMgbm90IGhhdmUgYSBsb2NrIHN0cm9uZwogCQllbm91Z2gg YWxyZWFkeSBncmFudGVkIG9uIHRoZSByZWNvcmQsIHdlIGhhdmUgdG8gd2FpdC4gKi8KIAotCQll cnIgPSBsb2NrX3JlY19lbnF1ZXVlX3dhaXRpbmcobW9kZSwgcmVjLCBpbmRleCwgdGhyKTsKLQl9 IGVsc2UgewotCQlpZiAoIWltcGwpIHsKLQkJCS8qIFNldCB0aGUgcmVxdWVzdGVkIGxvY2sgb24g dGhlIHJlY29yZCAqLworCQlyZXR1cm4obG9ja19yZWNfZW5xdWV1ZV93YWl0aW5nKG1vZGUsIHJl YywgaW5kZXgsIHRocikpOworCX0gZWxzZSBpZiAoIWltcGwpIHsKKwkJLyogU2V0IHRoZSByZXF1 ZXN0ZWQgbG9jayBvbiB0aGUgcmVjb3JkICovCiAKLQkJCWxvY2tfcmVjX2FkZF90b19xdWV1ZShM T0NLX1JFQyB8IG1vZGUsIHJlYywgaW5kZXgsCi0JCQkJCSAgICAgIHRyeCk7Ci0JCX0KLQotCQll cnIgPSBEQl9TVUNDRVNTOworCQlsb2NrX3JlY19hZGRfdG9fcXVldWUoTE9DS19SRUMgfCBtb2Rl LCByZWMsIGluZGV4LCB0cngpOworCQlyZXR1cm4oREJfU1VDQ0VTU19MT0NLRURfUkVDKTsKIAl9 CiAKLQlyZXR1cm4oZXJyKTsKKwlyZXR1cm4oREJfU1VDQ0VTUyk7CiB9CiAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCkBAIC0yMDQ5LDggKzIwNTYsOSBAQCBzdGF0aWMKIHVsaW50CiBsb2NrX3JlY19sb2Nr KAogLyo9PT09PT09PT09Ki8KLQkJCQkvKiBvdXQ6IERCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwg b3IgZXJyb3IKLQkJCQljb2RlICovCisJCQkJLyogb3V0OiBEQl9TVUNDRVNTLCBEQl9TVUNDRVNT X0xPQ0tFRF9SRUMsCisJCQkJREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywgb3IKKwkJCQlEQl9R VUVfVEhSX1NVU1BFTkRFRCAqLwogCWlib29sCQlpbXBsLAkvKiBpbjogaWYgVFJVRSwgbm8gbG9j ayBpcyBzZXQgaWYgbm8gd2FpdCBpcwogCQkJCW5lY2Vzc2FyeTogd2UgYXNzdW1lIHRoYXQgdGhl IGNhbGxlciB3aWxsIHNldAogCQkJCWFuIGltcGxpY2l0IGxvY2sgKi8KQEAgLTIwNjAsOCArMjA2 OCw2IEBAIGxvY2tfcmVjX2xvY2soCiAJZGljdF9pbmRleF90KglpbmRleCwJLyogaW46IGluZGV4 IG9mIHJlY29yZCAqLwogCXF1ZV90aHJfdCoJdGhyKQkvKiBpbjogcXVlcnkgdGhyZWFkICovCiB7 Ci0JdWxpbnQJZXJyOwotCiAJdXRfYWQobXV0ZXhfb3duKCZrZXJuZWxfbXV0ZXgpKTsKIAl1dF9h ZCgoTE9DS19NT0RFX01BU0sgJiBtb2RlKSAhPSBMT0NLX1MKIAkgICAgICB8fCBsb2NrX3RhYmxl X2hhcyh0aHJfZ2V0X3RyeCh0aHIpLCBpbmRleC0+dGFibGUsIExPQ0tfSVMpKTsKQEAgLTIwNzMs MTcgKzIwNzksMTkgQEAgbG9ja19yZWNfbG9jaygKIAkgICAgICB8fCBtb2RlIC0gKExPQ0tfTU9E RV9NQVNLICYgbW9kZSkgPT0gTE9DS19SRUNfTk9UX0dBUAogCSAgICAgIHx8IG1vZGUgLSAoTE9D S19NT0RFX01BU0sgJiBtb2RlKSA9PSAwKTsKIAotCWlmIChsb2NrX3JlY19sb2NrX2Zhc3QoaW1w bCwgbW9kZSwgcmVjLCBpbmRleCwgdGhyKSkgewotCi0JCS8qIFdlIHRyeSBhIHNpbXBsaWZpZWQg YW5kIGZhc3RlciBzdWJyb3V0aW5lIGZvciB0aGUgbW9zdAotCQljb21tb24gY2FzZXMgKi8KLQot CQllcnIgPSBEQl9TVUNDRVNTOwotCX0gZWxzZSB7Ci0JCWVyciA9IGxvY2tfcmVjX2xvY2tfc2xv dyhpbXBsLCBtb2RlLCByZWMsIGluZGV4LCB0aHIpOworCS8qIFdlIHRyeSBhIHNpbXBsaWZpZWQg YW5kIGZhc3RlciBzdWJyb3V0aW5lIGZvciB0aGUgbW9zdAorCWNvbW1vbiBjYXNlcyAqLworCXN3 aXRjaCAobG9ja19yZWNfbG9ja19mYXN0KGltcGwsIG1vZGUsIHJlYywgaW5kZXgsIHRocikpIHsK KwljYXNlIExPQ0tfUkVDX1NVQ0NFU1M6CisJCXJldHVybihEQl9TVUNDRVNTKTsKKwljYXNlIExP Q0tfUkVDX1NVQ0NFU1NfQ1JFQVRFRDoKKwkJcmV0dXJuKERCX1NVQ0NFU1NfTE9DS0VEX1JFQyk7 CisJY2FzZSBMT0NLX1JFQ19GQUlMOgorCQlyZXR1cm4obG9ja19yZWNfbG9ja19zbG93KGltcGws IG1vZGUsIHJlYywgaW5kZXgsIHRocikpOwogCX0KIAotCXJldHVybihlcnIpOworCXV0X2Vycm9y OworCXJldHVybihEQl9FUlJPUik7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC00ODMyLDcg KzQ4NDAsNyBAQCBsb2NrX3JlY19pbnNlcnRfY2hlY2tfYW5kX2xvY2soCiAKIAlsb2NrID0gbG9j a19yZWNfZ2V0X2ZpcnN0KG5leHRfcmVjKTsKIAotCWlmIChsb2NrID09IE5VTEwpIHsKKwlpZiAo VU5JVl9MSUtFTFkobG9jayA9PSBOVUxMKSkgewogCQkvKiBXZSBvcHRpbWl6ZSBDUFUgdGltZSB1 c2FnZSBpbiB0aGUgc2ltcGxlc3QgY2FzZSAqLwogCiAJCWxvY2tfbXV0ZXhfZXhpdF9rZXJuZWwo KTsKQEAgLTQ4NDAsOCArNDg0OCw3IEBAIGxvY2tfcmVjX2luc2VydF9jaGVja19hbmRfbG9jaygK IAkJaWYgKCEoaW5kZXgtPnR5cGUgJiBESUNUX0NMVVNURVJFRCkpIHsKIAogCQkJLyogVXBkYXRl IHRoZSBwYWdlIG1heCB0cnggaWQgZmllbGQgKi8KLQkJCXBhZ2VfdXBkYXRlX21heF90cnhfaWQo YnVmX2ZyYW1lX2FsaWduKHJlYyksCi0JCQkJCSAgICAgICB0aHJfZ2V0X3RyeCh0aHIpLT5pZCk7 CisJCQlwYWdlX3VwZGF0ZV9tYXhfdHJ4X2lkKGJ1Zl9mcmFtZV9hbGlnbihyZWMpLCB0cngtPmlk KTsKIAkJfQogCiAJCXJldHVybihEQl9TVUNDRVNTKTsKQEAgLTQ4NzMsMTEgKzQ4ODAsMTYgQEAg bG9ja19yZWNfaW5zZXJ0X2NoZWNrX2FuZF9sb2NrKAogCiAJbG9ja19tdXRleF9leGl0X2tlcm5l bCgpOwogCi0JaWYgKCEoaW5kZXgtPnR5cGUgJiBESUNUX0NMVVNURVJFRCkgJiYgKGVyciA9PSBE Ql9TVUNDRVNTKSkgewotCisJc3dpdGNoIChlcnIpIHsKKwljYXNlIERCX1NVQ0NFU1NfTE9DS0VE X1JFQzoKKwkJZXJyID0gREJfU1VDQ0VTUzsKKwkJLyogZmFsbCB0aHJvdWdoICovCisJY2FzZSBE Ql9TVUNDRVNTOgorCQlpZiAoaW5kZXgtPnR5cGUgJiBESUNUX0NMVVNURVJFRCkgeworCQkJYnJl YWs7CisJCX0KIAkJLyogVXBkYXRlIHRoZSBwYWdlIG1heCB0cnggaWQgZmllbGQgKi8KLQkJcGFn ZV91cGRhdGVfbWF4X3RyeF9pZChidWZfZnJhbWVfYWxpZ24ocmVjKSwKLQkJCQkgICAgICAgdGhy X2dldF90cngodGhyKS0+aWQpOworCQlwYWdlX3VwZGF0ZV9tYXhfdHJ4X2lkKGJ1Zl9mcmFtZV9h bGlnbihyZWMpLCB0cngtPmlkKTsKIAl9CiAKICNpZmRlZiBVTklWX0RFQlVHCkBAIC00OTg0LDYg KzQ5OTYsMTAgQEAgbG9ja19jbHVzdF9yZWNfbW9kaWZ5X2NoZWNrX2FuZF9sb2NrKAogCiAJdXRf YWQobG9ja19yZWNfcXVldWVfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykpOwogCisJaWYg KFVOSVZfVU5MSUtFTFkoZXJyID09IERCX1NVQ0NFU1NfTE9DS0VEX1JFQykpIHsKKwkJZXJyID0g REJfU1VDQ0VTUzsKKwl9CisKIAlyZXR1cm4oZXJyKTsKIH0KIApAQCAtNTA0MywyNSArNTA1OSwy OSBAQCBsb2NrX3NlY19yZWNfbW9kaWZ5X2NoZWNrX2FuZF9sb2NrKAogCX0KICNlbmRpZiAvKiBV TklWX0RFQlVHICovCiAKLQlpZiAoZXJyID09IERCX1NVQ0NFU1MpIHsKKwlpZiAoZXJyID09IERC X1NVQ0NFU1MgfHwgZXJyID09IERCX1NVQ0NFU1NfTE9DS0VEX1JFQykgewogCQkvKiBVcGRhdGUg dGhlIHBhZ2UgbWF4IHRyeCBpZCBmaWVsZCAqLwotCisJCS8qIEl0IG1pZ2h0IG5vdCBiZSBuZWNl c3NhcnkgdG8gZG8gdGhpcyBpZgorCQllcnIgPT0gREJfU1VDQ0VTUyAobm8gbmV3IGxvY2sgY3Jl YXRlZCksCisJCWJ1dCBpdCBzaG91bGQgbm90IGNvc3QgdG9vIG11Y2ggcGVyZm9ybWFuY2UuICov CiAJCXBhZ2VfdXBkYXRlX21heF90cnhfaWQoYnVmX2ZyYW1lX2FsaWduKHJlYyksCiAJCQkJICAg ICAgIHRocl9nZXRfdHJ4KHRociktPmlkKTsKKwkJZXJyID0gREJfU1VDQ0VTUzsKIAl9CiAKIAly ZXR1cm4oZXJyKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUxpa2UgdGhlIGNvdW50ZXJwYXJ0 IGZvciBhIGNsdXN0ZXJlZCBpbmRleCBiZWxvdywgYnV0IG5vdyB3ZSByZWFkIGEKK0xpa2UgbG9j a19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRfbG9jaygpLCBidXQgcmVhZHMgYQogc2Vjb25kYXJ5 IGluZGV4IHJlY29yZC4gKi8KIAogdWxpbnQKIGxvY2tfc2VjX3JlY19yZWFkX2NoZWNrX2FuZF9s b2NrKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0JCQkJLyogb3V0OiBEQl9T VUNDRVNTLCBEQl9MT0NLX1dBSVQsCi0JCQkJREJfREVBRExPQ0ssIG9yIERCX1FVRV9USFJfU1VT UEVOREVEICovCisJCQkJLyogb3V0OiBEQl9TVUNDRVNTLCBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMs CisJCQkJREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywKKwkJCQlvciBEQl9RVUVfVEhSX1NVU1BF TkRFRCAqLwogCXVsaW50CQlmbGFncywJLyogaW46IGlmIEJUUl9OT19MT0NLSU5HX0ZMQUcgYml0 IGlzIHNldCwKIAkJCQlkb2VzIG5vdGhpbmcgKi8KIAlyZWNfdCoJCXJlYywJLyogaW46IHVzZXIg cmVjb3JkIG9yIHBhZ2Ugc3VwcmVtdW0gcmVjb3JkCkBAIC01MTI2LDggKzUxNDYsOSBAQCBsb2Nr IG9uIHRoZSByZWNvcmQuICovCiB1bGludAogbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRf bG9jaygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0JCQkJLyogb3V0OiBE Ql9TVUNDRVNTLCBEQl9MT0NLX1dBSVQsCi0JCQkJREJfREVBRExPQ0ssIG9yIERCX1FVRV9USFJf U1VTUEVOREVEICovCisJCQkJLyogb3V0OiBEQl9TVUNDRVNTLCBEQl9TVUNDRVNTX0xPQ0tFRF9S RUMsCisJCQkJREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywKKwkJCQlvciBEQl9RVUVfVEhSX1NV U1BFTkRFRCAqLwogCXVsaW50CQlmbGFncywJLyogaW46IGlmIEJUUl9OT19MT0NLSU5HX0ZMQUcg Yml0IGlzIHNldCwKIAkJCQlkb2VzIG5vdGhpbmcgKi8KIAlyZWNfdCoJCXJlYywJLyogaW46IHVz ZXIgcmVjb3JkIG9yIHBhZ2Ugc3VwcmVtdW0gcmVjb3JkCkBAIC01MjA2LDE2ICs1MjI3LDIxIEBA IGxvY2tfY2x1c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2tfYWx0KAogCW1lbV9oZWFwX3QqCXRt cF9oZWFwCT0gTlVMTDsKIAl1bGludAkJb2Zmc2V0c19bUkVDX09GRlNfTk9STUFMX1NJWkVdOwog CXVsaW50KgkJb2Zmc2V0cwkJPSBvZmZzZXRzXzsKLQl1bGludAkJcmV0OworCXVsaW50CQllcnI7 CiAJKm9mZnNldHNfID0gKHNpemVvZiBvZmZzZXRzXykgLyBzaXplb2YgKm9mZnNldHNfOwogCiAJ b2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBvZmZzZXRzLAogCQkJCSAgVUxJ TlRfVU5ERUZJTkVELCAmdG1wX2hlYXApOwotCXJldCA9IGxvY2tfY2x1c3RfcmVjX3JlYWRfY2hl Y2tfYW5kX2xvY2soZmxhZ3MsIHJlYywgaW5kZXgsCisJZXJyID0gbG9ja19jbHVzdF9yZWNfcmVh ZF9jaGVja19hbmRfbG9jayhmbGFncywgcmVjLCBpbmRleCwKIAkJCQkJCSBvZmZzZXRzLCBtb2Rl LCBnYXBfbW9kZSwgdGhyKTsKIAlpZiAodG1wX2hlYXApIHsKIAkJbWVtX2hlYXBfZnJlZSh0bXBf aGVhcCk7CiAJfQotCXJldHVybihyZXQpOworCisJaWYgKFVOSVZfVU5MSUtFTFkoZXJyID09IERC X1NVQ0NFU1NfTE9DS0VEX1JFQykpIHsKKwkJZXJyID0gREJfU1VDQ0VTUzsKKwl9CisKKwlyZXR1 cm4oZXJyKTsKIH0KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3Jv dzBpbnMuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jCXJldmlkOm1hcmtv Lm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAxMTM1ODAyLWhncGxjcHI4MDg5dXJhOGcKKysrIGIv c3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTAwNjAyMTAzOTAzLTMzYnlpeHMzeGxxY3dzajAKQEAgLTExMTQsNyArMTExNCw4IEBA IHN0YXRpYwogdWxpbnQKIHJvd19pbnNfc2V0X3NoYXJlZF9yZWNfbG9jaygKIC8qPT09PT09PT09 PT09PT09PT09PT09PT09Ki8KLQkJCQkvKiBvdXQ6IERCX1NVQ0NFU1Mgb3IgZXJyb3IgY29kZSAq LworCQkJCS8qIG91dDogREJfU1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURfUkVDLAorCQkJCW9y IGVycm9yIGNvZGUgKi8KIAl1bGludAkJdHlwZSwJLyogaW46IExPQ0tfT1JESU5BUlksIExPQ0tf R0FQLCBvcgogCQkJCUxPQ0tfUkVDX05PVF9HQVAgdHlwZSBsb2NrICovCiAJcmVjX3QqCQlyZWMs CS8qIGluOiByZWNvcmQgKi8KQEAgLTExNDUsNyArMTE0Niw4IEBAIHN0YXRpYwogdWxpbnQKIHJv d19pbnNfc2V0X2V4Y2x1c2l2ZV9yZWNfbG9jaygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09 PT09Ki8KLQkJCQkvKiBvdXQ6IERCX1NVQ0NFU1Mgb3IgZXJyb3IgY29kZSAqLworCQkJCS8qIG91 dDogREJfU1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURfUkVDLAorCQkJCW9yIGVycm9yIGNvZGUg Ki8KIAl1bGludAkJdHlwZSwJLyogaW46IExPQ0tfT1JESU5BUlksIExPQ0tfR0FQLCBvcgogCQkJ CUxPQ0tfUkVDX05PVF9HQVAgdHlwZSBsb2NrICovCiAJcmVjX3QqCQlyZWMsCS8qIGluOiByZWNv cmQgKi8KQEAgLTExOTUsOSArMTE5Nyw3IEBAIHJvd19pbnNfY2hlY2tfZm9yZWlnbl9jb25zdHJh aW50KAogCWRpY3RfdGFibGVfdCoJY2hlY2tfdGFibGU7CiAJZGljdF9pbmRleF90KgljaGVja19p bmRleDsKIAl1bGludAkJbl9maWVsZHNfY21wOwotCXJlY190KgkJcmVjOwogCWJ0cl9wY3VyX3QJ cGN1cjsKLQlpYm9vbAkJbW92ZWQ7CiAJaW50CQljbXA7CiAJdWxpbnQJCWVycjsKIAl1bGludAkJ aTsKQEAgLTEzMjgsMTIgKzEzMjgsMTIgQEAgcnVuX2FnYWluOgogCiAJLyogU2NhbiBpbmRleCBy ZWNvcmRzIGFuZCBjaGVjayBpZiB0aGVyZSBpcyBhIG1hdGNoaW5nIHJlY29yZCAqLwogCi0JZm9y ICg7OykgewotCQlyZWMgPSBidHJfcGN1cl9nZXRfcmVjKCZwY3VyKTsKKwlkbyB7CisJCXJlY190 KglyZWMgPSBidHJfcGN1cl9nZXRfcmVjKCZwY3VyKTsKIAogCQlpZiAocGFnZV9yZWNfaXNfaW5m aW11bShyZWMpKSB7CiAKLQkJCWdvdG8gbmV4dF9yZWM7CisJCQljb250aW51ZTsKIAkJfQogCiAJ CW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMocmVjLCBjaGVja19pbmRleCwKQEAgLTEzNDMsMTIg KzEzNDMsMTMgQEAgcnVuX2FnYWluOgogCiAJCQllcnIgPSByb3dfaW5zX3NldF9zaGFyZWRfcmVj X2xvY2soCiAJCQkJTE9DS19PUkRJTkFSWSwgcmVjLCBjaGVja19pbmRleCwgb2Zmc2V0cywgdGhy KTsKLQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCi0JCQkJYnJlYWs7CisJCQlzd2l0Y2gg KGVycikgeworCQkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCQljYXNlIERCX1NVQ0NF U1M6CisJCQkJY29udGludWU7CisJCQlkZWZhdWx0OgorCQkJCWdvdG8gZW5kX3NjYW47CiAJCQl9 Ci0KLQkJCWdvdG8gbmV4dF9yZWM7CiAJCX0KIAogCQljbXAgPSBjbXBfZHR1cGxlX3JlYyhlbnRy eSwgcmVjLCBvZmZzZXRzKTsKQEAgLTEzNTksOSArMTM2MCwxMiBAQCBydW5fYWdhaW46CiAJCQkJ ZXJyID0gcm93X2luc19zZXRfc2hhcmVkX3JlY19sb2NrKAogCQkJCQlMT0NLX09SRElOQVJZLCBy ZWMsIGNoZWNrX2luZGV4LAogCQkJCQlvZmZzZXRzLCB0aHIpOwotCQkJCWlmIChlcnIgIT0gREJf U1VDQ0VTUykgewotCisJCQkJc3dpdGNoIChlcnIpIHsKKwkJCQljYXNlIERCX1NVQ0NFU1NfTE9D S0VEX1JFQzoKKwkJCQljYXNlIERCX1NVQ0NFU1M6CiAJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6 CisJCQkJCWdvdG8gZW5kX3NjYW47CiAJCQkJfQogCQkJfSBlbHNlIHsKIAkJCQkvKiBGb3VuZCBh IG1hdGNoaW5nIHJlY29yZC4gTG9jayBvbmx5CkBAIC0xMzcyLDE1ICsxMzc2LDE4IEBAIHJ1bl9h Z2FpbjoKIAkJCQkJTE9DS19SRUNfTk9UX0dBUCwgcmVjLCBjaGVja19pbmRleCwKIAkJCQkJb2Zm c2V0cywgdGhyKTsKIAotCQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCisJCQkJc3dpdGNo IChlcnIpIHsKKwkJCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCQljYXNlIERCX1NV Q0NFU1M6CiAJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQkJCWdvdG8gZW5kX3NjYW47CiAJ CQkJfQogCiAJCQkJaWYgKGNoZWNrX3JlZikgewogCQkJCQllcnIgPSBEQl9TVUNDRVNTOwogCi0J CQkJCWJyZWFrOworCQkJCQlnb3RvIGVuZF9zY2FuOwogCQkJCX0gZWxzZSBpZiAoZm9yZWlnbi0+ dHlwZSAhPSAwKSB7CiAJCQkJCS8qIFRoZXJlIGlzIGFuIE9OIFVQREFURSBvciBPTiBERUxFVEUK IAkJCQkJY29uZGl0aW9uOiBjaGVjayB0aGVtIGluIGEgc2VwYXJhdGUKQEAgLTE0MDYsNyArMTQx Myw3IEBAIHJ1bl9hZ2FpbjoKIAkJCQkJCQllcnIgPSBEQl9GT1JFSUdOX0RVUExJQ0FURV9LRVk7 CiAJCQkJCQl9CiAKLQkJCQkJCWJyZWFrOworCQkJCQkJZ290byBlbmRfc2NhbjsKIAkJCQkJfQog CQkJCX0gZWxzZSB7CiAJCQkJCXJvd19pbnNfZm9yZWlnbl9yZXBvcnRfZXJyKApAQCAtMTQxNCw0 OCArMTQyMSwzOSBAQCBydW5fYWdhaW46CiAJCQkJCQl0aHIsIGZvcmVpZ24sIHJlYywgZW50cnkp OwogCiAJCQkJCWVyciA9IERCX1JPV19JU19SRUZFUkVOQ0VEOwotCQkJCQlicmVhazsKKwkJCQkJ Z290byBlbmRfc2NhbjsKIAkJCQl9CiAJCQl9Ci0JCX0KKwkJfSBlbHNlIHsKKwkJCXV0X2EoY21w IDwgMCk7CiAKLQkJaWYgKGNtcCA8IDApIHsKIAkJCWVyciA9IHJvd19pbnNfc2V0X3NoYXJlZF9y ZWNfbG9jaygKIAkJCQlMT0NLX0dBUCwgcmVjLCBjaGVja19pbmRleCwgb2Zmc2V0cywgdGhyKTsK LQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCi0JCQkJYnJlYWs7Ci0JCQl9Ci0KLQkJCWlm IChjaGVja19yZWYpIHsKLQkJCQllcnIgPSBEQl9OT19SRUZFUkVOQ0VEX1JPVzsKLQkJCQlyb3df aW5zX2ZvcmVpZ25fcmVwb3J0X2FkZF9lcnIoCi0JCQkJCXRyeCwgZm9yZWlnbiwgcmVjLCBlbnRy eSk7Ci0JCQl9IGVsc2UgewotCQkJCWVyciA9IERCX1NVQ0NFU1M7CisJCQlzd2l0Y2ggKGVycikg eworCQkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCQljYXNlIERCX1NVQ0NFU1M6CisJ CQkJaWYgKGNoZWNrX3JlZikgeworCQkJCQllcnIgPSBEQl9OT19SRUZFUkVOQ0VEX1JPVzsKKwkJ CQkJcm93X2luc19mb3JlaWduX3JlcG9ydF9hZGRfZXJyKAorCQkJCQkJdHJ4LCBmb3JlaWduLCBy ZWMsIGVudHJ5KTsKKwkJCQl9IGVsc2UgeworCQkJCQllcnIgPSBEQl9TVUNDRVNTOworCQkJCX0K IAkJCX0KIAotCQkJYnJlYWs7CisJCQlnb3RvIGVuZF9zY2FuOwogCQl9CisJfSB3aGlsZSAoYnRy X3BjdXJfbW92ZV90b19uZXh0KCZwY3VyLCAmbXRyKSk7CiAKLQkJdXRfYShjbXAgPT0gMCk7Ci1u ZXh0X3JlYzoKLQkJbW92ZWQgPSBidHJfcGN1cl9tb3ZlX3RvX25leHQoJnBjdXIsICZtdHIpOwot Ci0JCWlmICghbW92ZWQpIHsKLQkJCWlmIChjaGVja19yZWYpIHsKLQkJCQlyZWMgPSBidHJfcGN1 cl9nZXRfcmVjKCZwY3VyKTsKLQkJCQlyb3dfaW5zX2ZvcmVpZ25fcmVwb3J0X2FkZF9lcnIoCi0J CQkJCXRyeCwgZm9yZWlnbiwgcmVjLCBlbnRyeSk7Ci0JCQkJZXJyID0gREJfTk9fUkVGRVJFTkNF RF9ST1c7Ci0JCQl9IGVsc2UgewotCQkJCWVyciA9IERCX1NVQ0NFU1M7Ci0JCQl9Ci0KLQkJCWJy ZWFrOwotCQl9CisJaWYgKGNoZWNrX3JlZikgeworCQlyb3dfaW5zX2ZvcmVpZ25fcmVwb3J0X2Fk ZF9lcnIoCisJCQl0cngsIGZvcmVpZ24sIGJ0cl9wY3VyX2dldF9yZWMoJnBjdXIpLCBlbnRyeSk7 CisJCWVyciA9IERCX05PX1JFRkVSRU5DRURfUk9XOworCX0gZWxzZSB7CisJCWVyciA9IERCX1NV Q0NFU1M7CiAJfQogCitlbmRfc2NhbjoKIAlidHJfcGN1cl9jbG9zZSgmcGN1cik7CiAKIAltdHJf Y29tbWl0KCZtdHIpOwpAQCAtMTY0MSwxMCArMTYzOSw4IEBAIHJvd19pbnNfc2Nhbl9zZWNfaW5k ZXhfZm9yX2R1cGxpY2F0ZSgKIAl1bGludAkJaTsKIAlpbnQJCWNtcDsKIAl1bGludAkJbl9maWVs ZHNfY21wOwotCXJlY190KgkJcmVjOwogCWJ0cl9wY3VyX3QJcGN1cjsKIAl1bGludAkJZXJyCQk9 IERCX1NVQ0NFU1M7Ci0JaWJvb2wJCW1vdmVkOwogCXVuc2lnbmVkCWFsbG93X2R1cGxpY2F0ZXM7 CiAJbXRyX3QJCW10cjsKIAltZW1faGVhcF90KgloZWFwCQk9IE5VTEw7CkBAIC0xNjgwLDEyICsx Njc2LDEyIEBAIHJvd19pbnNfc2Nhbl9zZWNfaW5kZXhfZm9yX2R1cGxpY2F0ZSgKIAogCS8qIFNj YW4gaW5kZXggcmVjb3JkcyBhbmQgY2hlY2sgaWYgdGhlcmUgaXMgYSBkdXBsaWNhdGUgKi8KIAot CWZvciAoOzspIHsKLQkJcmVjID0gYnRyX3BjdXJfZ2V0X3JlYygmcGN1cik7CisJZG8geworCQly ZWNfdCoJcmVjID0gYnRyX3BjdXJfZ2V0X3JlYygmcGN1cik7CiAKIAkJaWYgKHBhZ2VfcmVjX2lz X2luZmltdW0ocmVjKSkgewogCi0JCQlnb3RvIG5leHRfcmVjOworCQkJY29udGludWU7CiAJCX0K IAogCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIG9mZnNldHMsCkBAIC0x NzA2LDE0ICsxNzAyLDE4IEBAIHJvd19pbnNfc2Nhbl9zZWNfaW5kZXhfZm9yX2R1cGxpY2F0ZSgK IAkJCQlMT0NLX09SRElOQVJZLCByZWMsIGluZGV4LCBvZmZzZXRzLCB0aHIpOwogCQl9CiAKLQkJ aWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0KKwkJc3dpdGNoIChlcnIpIHsKKwkJY2FzZSBEQl9T VUNDRVNTX0xPQ0tFRF9SRUM6CisJCQllcnIgPSBEQl9TVUNDRVNTOworCQljYXNlIERCX1NVQ0NF U1M6CiAJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWdvdG8gZW5kX3NjYW47CiAJCX0KIAogCQlp ZiAocGFnZV9yZWNfaXNfc3VwcmVtdW0ocmVjKSkgewogCi0JCQlnb3RvIG5leHRfcmVjOworCQkJ Y29udGludWU7CiAJCX0KIAogCQljbXAgPSBjbXBfZHR1cGxlX3JlYyhlbnRyeSwgcmVjLCBvZmZz ZXRzKTsKQEAgLTE3MjUsMjMgKzE3MjUsMTUgQEAgcm93X2luc19zY2FuX3NlY19pbmRleF9mb3Jf ZHVwbGljYXRlKAogCiAJCQkJdGhyX2dldF90cngodGhyKS0+ZXJyb3JfaW5mbyA9IGluZGV4Owog Ci0JCQkJYnJlYWs7CisJCQkJZ290byBlbmRfc2NhbjsKIAkJCX0KKwkJfSBlbHNlIHsKKwkJCXV0 X2EoY21wIDwgMCk7CisJCQlnb3RvIGVuZF9zY2FuOwogCQl9CisJfSB3aGlsZSAoYnRyX3BjdXJf bW92ZV90b19uZXh0KCZwY3VyLCAmbXRyKSk7CiAKLQkJaWYgKGNtcCA8IDApIHsKLQkJCWJyZWFr OwotCQl9Ci0KLQkJdXRfYShjbXAgPT0gMCk7Ci1uZXh0X3JlYzoKLQkJbW92ZWQgPSBidHJfcGN1 cl9tb3ZlX3RvX25leHQoJnBjdXIsICZtdHIpOwotCi0JCWlmICghbW92ZWQpIHsKLQkJCWJyZWFr OwotCQl9Ci0JfQotCitlbmRfc2NhbjoKIAlpZiAoVU5JVl9MSUtFTFlfTlVMTChoZWFwKSkgewog CQltZW1faGVhcF9mcmVlKGhlYXApOwogCX0KQEAgLTE4MzcsNyArMTgyOSwxMSBAQCByb3dfaW5z X2R1cGxpY2F0ZV9lcnJvcl9pbl9jbHVzdCgKIAkJCQkJY3Vyc29yLT5pbmRleCwgb2Zmc2V0cywg dGhyKTsKIAkJCX0KIAotCQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7CisJCQlzd2l0Y2ggKGVy cikgeworCQkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCQljYXNlIERCX1NVQ0NFU1M6 CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgogCQkJCWdvdG8gZnVuY19leGl0OwogCQkJfQogCkBA IC0xODc1LDcgKzE4NzEsMTEgQEAgcm93X2luc19kdXBsaWNhdGVfZXJyb3JfaW5fY2x1c3QoCiAJ CQkJCWN1cnNvci0+aW5kZXgsIG9mZnNldHMsIHRocik7CiAJCQl9CiAKLQkJCWlmIChlcnIgIT0g REJfU1VDQ0VTUykgeworCQkJc3dpdGNoIChlcnIpIHsKKwkJCWNhc2UgREJfU1VDQ0VTU19MT0NL RURfUkVDOgorCQkJY2FzZSBEQl9TVUNDRVNTOgorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKIAkJ CQlnb3RvIGZ1bmNfZXhpdDsKIAkJCX0KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5u b2Jhc2Uvcm93L3JvdzBteXNxbC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbXlz cWwuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMTEzNTgwMi1oZ3BsY3By ODA4OXVyYThnCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5jCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAzOTAzLTMzYnlpeHMzeGxxY3dzajAKQEAg LTE0NTUsMjIgKzE0NTUsMjAgQEAgcnVuX2FnYWluOgogfQogCiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot VGhpcyBjYW4gb25seSBiZSB1c2VkIHdoZW4gc3J2X2xvY2tzX3Vuc2FmZV9mb3JfYmlubG9nIGlz IFRSVUUgb3IKLXRoaXMgc2Vzc2lvbiBpcyB1c2luZyBhIFJFQUQgQ09NTUlUVEVEIGlzb2xhdGlv biBsZXZlbC4gQmVmb3JlCi1jYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2UgbXVzdCB1c2UgdHJ4X3Jl c2V0X25ld19yZWNfbG9ja19pbmZvKCkgYW5kCi10cnhfcmVnaXN0ZXJfbmV3X3JlY19sb2NrKCkg dG8gc3RvcmUgdGhlIGluZm9ybWF0aW9uIHdoaWNoIG5ldyByZWNvcmQgbG9ja3MKLXJlYWxseSB3 ZXJlIHNldC4gVGhpcyBmdW5jdGlvbiByZW1vdmVzIGEgbmV3bHkgc2V0IGxvY2sgdW5kZXIgcHJl YnVpbHQtPnBjdXIsCi1hbmQgYWxzbyB1bmRlciBwcmVidWlsdC0+Y2x1c3RfcGN1ci4gQ3VycmVu dGx5LCB0aGlzIGlzIG9ubHkgdXNlZCBhbmQgdGVzdGVkCi1pbiB0aGUgY2FzZSBvZiBhbiBVUERB VEUgb3IgYSBERUxFVEUgc3RhdGVtZW50LCB3aGVyZSB0aGUgcm93IGxvY2sgaXMgb2YgdGhlCi1M T0NLX1ggdHlwZS4KLVRodXMsIHRoaXMgaW1wbGVtZW50cyBhICdtaW5pLXJvbGxiYWNrJyB0aGF0 IHJlbGVhc2VzIHRoZSBsYXRlc3QgcmVjb3JkCi1sb2NrcyB3ZSBzZXQuICovCitUaGlzIGNhbiBv bmx5IGJlIHVzZWQgd2hlbiBzcnZfbG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cgaXMgVFJVRSBvciB0 aGlzCitzZXNzaW9uIGlzIHVzaW5nIGEgUkVBRCBDT01NSVRURUQgb3IgUkVBRCBVTkNPTU1JVFRF RCBpc29sYXRpb24gbGV2ZWwuCitCZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHJvd19zZWFy Y2hfZm9yX215c3FsKCkgbXVzdCBoYXZlCitpbml0aWFsaXplZCBwcmVidWlsdC0+bmV3X3JlY19s b2NrcyB0byBzdG9yZSB0aGUgaW5mb3JtYXRpb24gd2hpY2ggbmV3CityZWNvcmQgbG9ja3MgcmVh bGx5IHdlcmUgc2V0LiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgYSBuZXdseSBzZXQKK2NsdXN0ZXJl ZCBpbmRleCByZWNvcmQgbG9jayB1bmRlciBwcmVidWlsdC0+cGN1ciBvcgorcHJlYnVpbHQtPmNs dXN0X3BjdXIuICBUaHVzLCB0aGlzIGltcGxlbWVudHMgYSAnbWluaS1yb2xsYmFjaycgdGhhdAor cmVsZWFzZXMgdGhlIGxhdGVzdCBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIGxvY2sgd2Ugc2V0LiAq LwogCiBpbnQKIHJvd191bmxvY2tfZm9yX215c3FsKAogLyo9PT09PT09PT09PT09PT09PSovCiAJ CQkJCS8qIG91dDogZXJyb3IgY29kZSBvciBEQl9TVUNDRVNTICovCi0Jcm93X3ByZWJ1aWx0X3Qq CXByZWJ1aWx0LAkvKiBpbjogcHJlYnVpbHQgc3RydWN0IGluIE15U1FMCisJcm93X3ByZWJ1aWx0 X3QqCXByZWJ1aWx0LAkvKiBpbi9vdXQ6IHByZWJ1aWx0IHN0cnVjdCBpbiBNeVNRTAogCQkJCQlo YW5kbGUgKi8KIAlpYm9vbAkJaGFzX2xhdGNoZXNfb25fcmVjcykvKiBUUlVFIGlmIGNhbGxlZCBz byB0aGF0IHdlIGhhdmUKIAkJCQkJdGhlIGxhdGNoZXMgb24gdGhlIHJlY29yZHMgdW5kZXIgcGN1 cgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBzZWwuYycKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHNlbC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTAwNjAxMTM1ODAyLWhncGxjcHI4MDg5dXJhOGcKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS9yb3cvcm93MHNlbC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAy MTAzOTAzLTMzYnlpeHMzeGxxY3dzajAKQEAgLTc1NCw4ICs3NTQsMTQgQEAgcm93X3NlbF9nZXRf Y2x1c3RfcmVjKAogCQkJMCwgY2x1c3RfcmVjLCBpbmRleCwgb2Zmc2V0cywKIAkJCW5vZGUtPnJv d19sb2NrX21vZGUsIGxvY2tfdHlwZSwgdGhyKTsKIAotCQlpZiAoZXJyICE9IERCX1NVQ0NFU1Mp IHsKLQorCQlzd2l0Y2ggKGVycikgeworCQljYXNlIERCX1NVQ0NFU1M6CisJCWNhc2UgREJfU1VD Q0VTU19MT0NLRURfUkVDOgorCQkJLyogRGVjbGFyZSB0aGUgdmFyaWFibGUgdW5pbml0aWFsaXpl ZCBpbiBWYWxncmluZC4KKwkJCUl0IHNob3VsZCBiZSBzZXQgdG8gREJfU1VDQ0VTUyBhdCBmdW5j X2V4aXQuICovCisJCQlVTklWX01FTV9JTlZBTElEKCZlcnIsIHNpemVvZiBlcnIpOworCQkJYnJl YWs7CisJCWRlZmF1bHQ6CiAJCQlnb3RvIGVycl9leGl0OwogCQl9CiAJfSBlbHNlIHsKQEAgLTgy Niw3ICs4MzIsOCBAQCBVTklWX0lOTElORQogdWxpbnQKIHNlbF9zZXRfcmVjX2xvY2soCiAvKj09 PT09PT09PT09PT0qLwotCQkJCS8qIG91dDogREJfU1VDQ0VTUyBvciBlcnJvciBjb2RlICovCisJ CQkJLyogb3V0OiBEQl9TVUNDRVNTLCBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMsCisJCQkJb3IgZXJy b3IgY29kZSAqLwogCXJlY190KgkJcmVjLAkvKiBpbjogcmVjb3JkICovCiAJZGljdF9pbmRleF90 KglpbmRleCwJLyogaW46IGluZGV4ICovCiAJY29uc3QgdWxpbnQqCW9mZnNldHMsLyogaW46IHJl Y19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4KSAqLwpAQCAtMTM3NCwxMSArMTM4MSwxNSBAQCByZWNf bG9vcDoKIAkJCQkJICAgICAgIG5vZGUtPnJvd19sb2NrX21vZGUsCiAJCQkJCSAgICAgICBsb2Nr X3R5cGUsIHRocik7CiAKLQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgeworCQkJc3dpdGNoIChl cnIpIHsKKwkJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJCWVyciA9IERCX1NVQ0NF U1M7CisJCQljYXNlIERCX1NVQ0NFU1M6CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgogCQkJCS8q IE5vdGUgdGhhdCBpbiB0aGlzIGNhc2Ugd2Ugd2lsbCBzdG9yZSBpbiBwY3VyCiAJCQkJdGhlIFBS RURFQ0VTU09SIG9mIHRoZSByZWNvcmQgd2UgYXJlIHdhaXRpbmcKIAkJCQl0aGUgbG9jayBmb3Ig Ki8KLQogCQkJCWdvdG8gbG9ja193YWl0X29yX2Vycm9yOwogCQkJfQogCQl9CkBAIC0xNDI5LDgg KzE0NDAsMTIgQEAgc2tpcF9sb2NrOgogCQllcnIgPSBzZWxfc2V0X3JlY19sb2NrKHJlYywgaW5k ZXgsIG9mZnNldHMsCiAJCQkJICAgICAgIG5vZGUtPnJvd19sb2NrX21vZGUsIGxvY2tfdHlwZSwg dGhyKTsKIAotCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKLQorCQlzd2l0Y2ggKGVycikgewor CQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCWVyciA9IERCX1NVQ0NFU1M7CisJCWNh c2UgREJfU1VDQ0VTUzoKKwkJCWJyZWFrOworCQlkZWZhdWx0OgogCQkJZ290byBsb2NrX3dhaXRf b3JfZXJyb3I7CiAJCX0KIAl9CkBAIC0yNzQ1LDcgKzI3NjAsOCBAQCBzdGF0aWMKIHVsaW50CiBy b3dfc2VsX2dldF9jbHVzdF9yZWNfZm9yX215c3FsKAogLyo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ki8KLQkJCQkvKiBvdXQ6IERCX1NVQ0NFU1Mgb3IgZXJyb3IgY29kZSAqLworCQkJCS8q IG91dDogREJfU1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURfUkVDLAorCQkJCW9yIGVycm9yIGNv ZGUgKi8KIAlyb3dfcHJlYnVpbHRfdCoJcHJlYnVpbHQsLyogaW46IHByZWJ1aWx0IHN0cnVjdCBp biB0aGUgaGFuZGxlICovCiAJZGljdF9pbmRleF90KglzZWNfaW5kZXgsLyogaW46IHNlY29uZGFy eSBpbmRleCB3aGVyZSByZWMgcmVzaWRlcyAqLwogCXJlY190KgkJcmVjLAkvKiBpbjogcmVjb3Jk IGluIGEgbm9uLWNsdXN0ZXJlZCBpbmRleDsgaWYKQEAgLTI4MjYsNiArMjg0Miw3IEBAIHJvd19z ZWxfZ2V0X2NsdXN0X3JlY19mb3JfbXlzcWwoCiAKIAkJY2x1c3RfcmVjID0gTlVMTDsKIAorCQll cnIgPSBEQl9TVUNDRVNTOwogCQlnb3RvIGZ1bmNfZXhpdDsKIAl9CiAKQEAgLTI4NDAsOCArMjg1 NywxMSBAQCByb3dfc2VsX2dldF9jbHVzdF9yZWNfZm9yX215c3FsKAogCQllcnIgPSBsb2NrX2Ns dXN0X3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrKAogCQkJMCwgY2x1c3RfcmVjLCBjbHVzdF9pbmRl eCwgKm9mZnNldHMsCiAJCQlwcmVidWlsdC0+c2VsZWN0X2xvY2tfdHlwZSwgTE9DS19SRUNfTk9U X0dBUCwgdGhyKTsKLQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0KKwkJc3dpdGNoIChlcnIp IHsKKwkJY2FzZSBEQl9TVUNDRVNTOgorCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJ CWJyZWFrOworCQlkZWZhdWx0OgogCQkJZ290byBlcnJfZXhpdDsKIAkJfQogCX0gZWxzZSB7CkBA IC0yOTAwLDYgKzI5MjAsOCBAQCByb3dfc2VsX2dldF9jbHVzdF9yZWNfZm9yX215c3FsKAogCQkJ CSAgICAgcmVjLCBzZWNfaW5kZXgsIGNsdXN0X3JlYywgY2x1c3RfaW5kZXgpKTsKICNlbmRpZgog CQl9CisKKwkJZXJyID0gREJfU1VDQ0VTUzsKIAl9CiAKIGZ1bmNfZXhpdDoKQEAgLTI5MTIsNyAr MjkzNCw2IEBAIGZ1bmNfZXhpdDoKIAkJYnRyX3BjdXJfc3RvcmVfcG9zaXRpb24ocHJlYnVpbHQt PmNsdXN0X3BjdXIsIG10cik7CiAJfQogCi0JZXJyID0gREJfU1VDQ0VTUzsKIGVycl9leGl0Ogog CXJldHVybihlcnIpOwogfQpAQCAtMzYyNiw4ICszNjQ3LDEyIEBAIHNob3J0Y3V0X2ZhaWxzX3Rv b19iaWdfcmVjOgogCQkJCQkgICAgICAgcHJlYnVpbHQtPnNlbGVjdF9sb2NrX3R5cGUsCiAJCQkJ CSAgICAgICBMT0NLX0dBUCwgdGhyKTsKIAotCQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0K KwkJCXN3aXRjaCAoZXJyKSB7CisJCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCQll cnIgPSBEQl9TVUNDRVNTOworCQkJY2FzZSBEQl9TVUNDRVNTOgorCQkJCWJyZWFrOworCQkJZGVm YXVsdDoKIAkJCQlnb3RvIGxvY2tfd2FpdF9vcl9lcnJvcjsKIAkJCX0KIAkJfQpAQCAtMzcyNCw4 ICszNzQ5LDEyIEBAIHJlY19sb29wOgogCQkJCQkgICAgICAgcHJlYnVpbHQtPnNlbGVjdF9sb2Nr X3R5cGUsCiAJCQkJCSAgICAgICBMT0NLX09SRElOQVJZLCB0aHIpOwogCi0JCQlpZiAoZXJyICE9 IERCX1NVQ0NFU1MpIHsKLQorCQkJc3dpdGNoIChlcnIpIHsKKwkJCWNhc2UgREJfU1VDQ0VTU19M T0NLRURfUkVDOgorCQkJCWVyciA9IERCX1NVQ0NFU1M7CisJCQljYXNlIERCX1NVQ0NFU1M6CisJ CQkJYnJlYWs7CisJCQlkZWZhdWx0OgogCQkJCWdvdG8gbG9ja193YWl0X29yX2Vycm9yOwogCQkJ fQogCQl9CkBAIC0zODU2LDggKzM4ODUsMTEgQEAgd3Jvbmdfb2ZmczoKIAkJCQkJcHJlYnVpbHQt PnNlbGVjdF9sb2NrX3R5cGUsIExPQ0tfR0FQLAogCQkJCQl0aHIpOwogCi0JCQkJaWYgKGVyciAh PSBEQl9TVUNDRVNTKSB7Ci0KKwkJCQlzd2l0Y2ggKGVycikgeworCQkJCWNhc2UgREJfU1VDQ0VT U19MT0NLRURfUkVDOgorCQkJCWNhc2UgREJfU1VDQ0VTUzoKKwkJCQkJYnJlYWs7CisJCQkJZGVm YXVsdDoKIAkJCQkJZ290byBsb2NrX3dhaXRfb3JfZXJyb3I7CiAJCQkJfQogCQkJfQpAQCAtMzg5 MSw4ICszOTIzLDExIEBAIHdyb25nX29mZnM6CiAJCQkJCXByZWJ1aWx0LT5zZWxlY3RfbG9ja190 eXBlLCBMT0NLX0dBUCwKIAkJCQkJdGhyKTsKIAotCQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykg ewotCisJCQkJc3dpdGNoIChlcnIpIHsKKwkJCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoK KwkJCQljYXNlIERCX1NVQ0NFU1M6CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CiAJCQkJCWdv dG8gbG9ja193YWl0X29yX2Vycm9yOwogCQkJCX0KIAkJCX0KQEAgLTM5NjEsMTUgKzM5OTYsMjEg QEAgbm9fZ2FwX2xvY2s6CiAKIAkJc3dpdGNoIChlcnIpIHsKIAkJCXJlY190KglvbGRfdmVyczsK LQkJY2FzZSBEQl9TVUNDRVNTOgorCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKIAkJCWlm IChzcnZfbG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cKLQkJCSAgICB8fCB0cngtPmlzb2xhdGlvbl9s ZXZlbCA8PSBUUlhfSVNPX1JFQURfQ09NTUlUVEVEKSB7CisJCQkgICAgfHwgdHJ4LT5pc29sYXRp b25fbGV2ZWwKKwkJCSAgICA8PSBUUlhfSVNPX1JFQURfQ09NTUlUVEVEKSB7CiAJCQkJLyogTm90 ZSB0aGF0IGEgcmVjb3JkIG9mCiAJCQkJcHJlYnVpbHQtPmluZGV4IHdhcyBsb2NrZWQuICovCiAJ CQkJcHJlYnVpbHQtPm5ld19yZWNfbG9ja3MgPSAxOwogCQkJfQorCQkJZXJyID0gREJfU1VDQ0VT UzsKKwkJY2FzZSBEQl9TVUNDRVNTOgogCQkJYnJlYWs7CiAJCWNhc2UgREJfTE9DS19XQUlUOgor CQkJLyogTmV2ZXIgdW5sb2NrIHJvd3MgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb25mbGljdC4gKi8K KwkJCXByZWJ1aWx0LT5uZXdfcmVjX2xvY2tzID0gMDsKKwogCQkJaWYgKFVOSVZfTElLRUxZKHBy ZWJ1aWx0LT5yb3dfcmVhZF90eXBlCiAJCQkJCSE9IFJPV19SRUFEX1RSWV9TRU1JX0NPTlNJU1RF TlQpCiAJCQkgICAgfHwgdW5pcXVlX3NlYXJjaApAQCAtMzk5OSw3ICs0MDQwLDYgQEAgbm9fZ2Fw X2xvY2s6CiAJCQlpZiAoVU5JVl9MSUtFTFkodHJ4LT53YWl0X2xvY2sgIT0gTlVMTCkpIHsKIAkJ CQlsb2NrX2NhbmNlbF93YWl0aW5nX2FuZF9yZWxlYXNlKAogCQkJCQl0cngtPndhaXRfbG9jayk7 Ci0JCQkJcHJlYnVpbHQtPm5ld19yZWNfbG9ja3MgPSAwOwogCQkJfSBlbHNlIHsKIAkJCQltdXRl eF9leGl0KCZrZXJuZWxfbXV0ZXgpOwogCkBAIC00MDExLDkgKzQwNTEsNiBAQCBub19nYXBfbG9j azoKIAkJCQkJCQkgIFVMSU5UX1VOREVGSU5FRCwKIAkJCQkJCQkgICZoZWFwKTsKIAkJCQllcnIg PSBEQl9TVUNDRVNTOwotCQkJCS8qIE5vdGUgdGhhdCBhIHJlY29yZCBvZgotCQkJCXByZWJ1aWx0 LT5pbmRleCB3YXMgbG9ja2VkLiAqLwotCQkJCXByZWJ1aWx0LT5uZXdfcmVjX2xvY2tzID0gMTsK IAkJCQlicmVhazsKIAkJCX0KIAkJCW11dGV4X2V4aXQoJmtlcm5lbF9tdXRleCk7CkBAIC00MTUx LDI3ICs0MTg4LDMwIEBAIHJlcXVpcmVzX2NsdXN0X3JlYzoKIAkJZXJyID0gcm93X3NlbF9nZXRf Y2x1c3RfcmVjX2Zvcl9teXNxbChwcmVidWlsdCwgaW5kZXgsIHJlYywKIAkJCQkJCSAgICAgIHRo ciwgJmNsdXN0X3JlYywKIAkJCQkJCSAgICAgICZvZmZzZXRzLCAmaGVhcCwgJm10cik7Ci0JCWlm IChlcnIgIT0gREJfU1VDQ0VTUykgeworCQlzd2l0Y2ggKGVycikgeworCQljYXNlIERCX1NVQ0NF U1M6CisJCQlpZiAoY2x1c3RfcmVjID09IE5VTEwpIHsKKwkJCQkvKiBUaGUgcmVjb3JkIGRpZCBu b3QgZXhpc3QgaW4gdGhlIHJlYWQgdmlldyAqLworCQkJCXV0X2FkKHByZWJ1aWx0LT5zZWxlY3Rf bG9ja190eXBlID09IExPQ0tfTk9ORSk7CiAKKwkJCQlnb3RvIG5leHRfcmVjOworCQkJfQorCQkJ YnJlYWs7CisJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJdXRfYShjbHVzdF9yZWMg IT0gTlVMTCk7CisJCQlpZiAoc3J2X2xvY2tzX3Vuc2FmZV9mb3JfYmlubG9nCisJCQkgICAgIHx8 IHRyeC0+aXNvbGF0aW9uX2xldmVsCisJCQkgICAgPD0gVFJYX0lTT19SRUFEX0NPTU1JVFRFRCkg eworCQkJCS8qIE5vdGUgdGhhdCB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZAorCQkJCXdhcyBs b2NrZWQuICovCisJCQkJcHJlYnVpbHQtPm5ld19yZWNfbG9ja3MgPSAyOworCQkJfQorCQkJZXJy ID0gREJfU1VDQ0VTUzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgogCQkJZ290byBsb2NrX3dhaXRf b3JfZXJyb3I7CiAJCX0KIAotCQlpZiAoY2x1c3RfcmVjID09IE5VTEwpIHsKLQkJCS8qIFRoZSBy ZWNvcmQgZGlkIG5vdCBleGlzdCBpbiB0aGUgcmVhZCB2aWV3ICovCi0JCQl1dF9hZChwcmVidWls dC0+c2VsZWN0X2xvY2tfdHlwZSA9PSBMT0NLX05PTkUpOwotCi0JCQlnb3RvIG5leHRfcmVjOwot CQl9Ci0KLQkJaWYgKChzcnZfbG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cKLQkJICAgICB8fCB0cngt Pmlzb2xhdGlvbl9sZXZlbCA8PSBUUlhfSVNPX1JFQURfQ09NTUlUVEVEKQotCQkgICAgJiYgcHJl YnVpbHQtPnNlbGVjdF9sb2NrX3R5cGUgIT0gTE9DS19OT05FKSB7Ci0JCQkvKiBOb3RlIHRoYXQg Ym90aCB0aGUgc2Vjb25kYXJ5IGluZGV4IHJlY29yZAotCQkJYW5kIHRoZSBjbHVzdGVyZWQgaW5k ZXggcmVjb3JkIHdlcmUgbG9ja2VkLiAqLwotCQkJdXRfYWQocHJlYnVpbHQtPm5ld19yZWNfbG9j a3MgPT0gMSk7Ci0JCQlwcmVidWlsdC0+bmV3X3JlY19sb2NrcyA9IDI7Ci0JCX0KLQogCQlpZiAo VU5JVl9VTkxJS0VMWShyZWNfZ2V0X2RlbGV0ZWRfZmxhZyhjbHVzdF9yZWMsIGNvbXApKSkgewog CiAJCQkvKiBUaGUgcmVjb3JkIGlzIGRlbGV0ZSBtYXJrZWQ6IHdlIGNhbiBza2lwIGl0ICovCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL0NoYW5nZUxvZycKLS0tIGEv c3RvcmFnZS9pbm5vZGJfcGx1Z2luL0NoYW5nZUxvZwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDEwMDYwMTEzNTgwMi1oZ3BsY3ByODA4OXVyYThnCisrKyBiL3N0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9DaGFuZ2VMb2cJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIx MDM5MDMtMzNieWl4czN4bHFjd3NqMApAQCAtMSwzICsxLDEwIEBACisyMDEwLTA2LTAyCVRoZSBJ bm5vREIgVGVhbQorCisJKiBpbmNsdWRlL2RiMGVyci5oLCBpbmNsdWRlL2xvY2swbG9jay5oLCBp bmNsdWRlL3JvdzBteXNxbC5oLAorCWxvY2svbG9jazBsb2NrLmMsIHJvdy9yb3cwaW5zLmMsIHJv dy9yb3cwbXlzcWwuYywgcm93L3JvdzBzZWwuYzoKKwlGaXggQnVnIzUzNjc0IElubm9EQjogRXJy b3I6IHVubG9jayByb3cgY291bGQgbm90IGZpbmQgYQorCTQgbW9kZSBsb2NrIG9uIHRoZSByZWNv cmQKKwogMjAxMC0wNi0wMQlUaGUgSW5ub0RCIFRlYW0KIAogCSogaW5jbHVkZS9zeW5jMHJ3Lmgs IHN5bmMvc3luYzBydy5jOgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdp bi9maWwvZmlsMGZpbC5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vZmlsL2ZpbDBmaWwu YwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMTEzNTgwMi1oZ3BsY3ByODA4 OXVyYThnCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9maWwvZmlsMGZpbC5jCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAzOTAzLTMzYnlpeHMzeGxxY3dzajAKQEAg LTM1NDIsMzkgKzM1NDIsNiBAQCBuZXh0X2RhdGFkaXJfaXRlbToKIAlyZXR1cm4oZXJyKTsKIH0K IAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgotSWYgd2UgbmVlZCBjcmFzaCByZWNvdmVyeSwgYW5kIHdlIGhh dmUgY2FsbGVkCi1maWxfbG9hZF9zaW5nbGVfdGFibGVfdGFibGVzcGFjZXMoKSBhbmQgZGljdF9s b2FkX3NpbmdsZV90YWJsZV90YWJsZXNwYWNlcygpLAotd2UgY2FuIGNhbGwgdGhpcyBmdW5jdGlv biB0byBwcmludCBhbiBlcnJvciBtZXNzYWdlIG9mIG9ycGhhbmVkIC5pYmQgZmlsZXMKLWZvciB3 aGljaCB0aGVyZSBpcyBub3QgYSBkYXRhIGRpY3Rpb25hcnkgZW50cnkgd2l0aCBhIG1hdGNoaW5n IHRhYmxlIG5hbWUKLWFuZCBzcGFjZSBpZC4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi1maWxfcHJp bnRfb3JwaGFuZWRfdGFibGVzcGFjZXModm9pZCkKLS8qPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0qLwotewotCWZpbF9zcGFjZV90KglzcGFjZTsKLQotCW11dGV4X2VudGVyKCZmaWxf c3lzdGVtLT5tdXRleCk7Ci0KLQlzcGFjZSA9IFVUX0xJU1RfR0VUX0ZJUlNUKGZpbF9zeXN0ZW0t PnNwYWNlX2xpc3QpOwotCi0Jd2hpbGUgKHNwYWNlKSB7Ci0JCWlmIChzcGFjZS0+cHVycG9zZSA9 PSBGSUxfVEFCTEVTUEFDRSAmJiBzcGFjZS0+aWQgIT0gMAotCQkgICAgJiYgIXNwYWNlLT5tYXJr KSB7Ci0JCQlmcHV0cygiSW5ub0RCOiBXYXJuaW5nOiB0YWJsZXNwYWNlICIsIHN0ZGVycik7Ci0J CQl1dF9wcmludF9maWxlbmFtZShzdGRlcnIsIHNwYWNlLT5uYW1lKTsKLQkJCWZwcmludGYoc3Rk ZXJyLCAiIG9mIGlkICVsdSBoYXMgbm8gbWF0Y2hpbmcgdGFibGUgaW5cbiIKLQkJCQkiSW5ub0RC OiB0aGUgSW5ub0RCIGRhdGEgZGljdGlvbmFyeS5cbiIsCi0JCQkJKHVsb25nKSBzcGFjZS0+aWQp OwotCQl9Ci0KLQkJc3BhY2UgPSBVVF9MSVNUX0dFVF9ORVhUKHNwYWNlX2xpc3QsIHNwYWNlKTsK LQl9Ci0KLQltdXRleF9leGl0KCZmaWxfc3lzdGVtLT5tdXRleCk7Ci19Ci0KIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgogUmV0dXJucyBUUlVFIGlmIGEgc2luZ2xlLXRhYmxlIHRhYmxlc3BhY2UgZG9lcyBub3Qg ZXhpc3QgaW4gdGhlIG1lbW9yeSBjYWNoZSwKIG9yIGlzIGJlaW5nIGRlbGV0ZWQgdGhlcmUuCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvZGIwZXJyLmgn Ci0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2RiMGVyci5oCXJldmlkOm1hcmtv Lm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAxMTM1ODAyLWhncGxjcHI4MDg5dXJhOGcKKysrIGIv c3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvZGIwZXJyLmgJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMDA2MDIxMDM5MDMtMzNieWl4czN4bHFjd3NqMApAQCAtMjgsNiArMjgs OCBAQCBDcmVhdGVkIDUvMjQvMTk5NiBIZWlra2kgVHV1cmkKIAogCiBlbnVtIGRiX2VyciB7CisJ REJfU1VDQ0VTU19MT0NLRURfUkVDID0gOSwJLyohPCBsaWtlIERCX1NVQ0NFU1MsIGJ1dCBhIG5l dworCQkJCQlleHBsaWNpdCByZWNvcmQgbG9jayB3YXMgY3JlYXRlZCAqLwogCURCX1NVQ0NFU1Mg PSAxMCwKIAogCS8qIFRoZSBmb2xsb3dpbmcgYXJlIGVycm9yIGNvZGVzICovCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvZmlsMGZpbC5oJwotLS0gYS9z dG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9maWwwZmlsLmgJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMDA2MDExMzU4MDItaGdwbGNwcjgwODl1cmE4ZworKysgYi9zdG9yYWdl L2lubm9kYl9wbHVnaW4vaW5jbHVkZS9maWwwZmlsLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMDA2MDIxMDM5MDMtMzNieWl4czN4bHFjd3NqMApAQCAtNTA2LDE2ICs1MDYsNiBA QCBVTklWX0lOVEVSTgogdWxpbnQKIGZpbF9sb2FkX3NpbmdsZV90YWJsZV90YWJsZXNwYWNlcyh2 b2lkKTsKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgotSWYgd2UgbmVlZCBjcmFzaCByZWNvdmVyeSwgYW5kIHdlIGhhdmUgY2FsbGVkCi1m aWxfbG9hZF9zaW5nbGVfdGFibGVfdGFibGVzcGFjZXMoKSBhbmQgZGljdF9sb2FkX3NpbmdsZV90 YWJsZV90YWJsZXNwYWNlcygpLAotd2UgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBwcmludCBh biBlcnJvciBtZXNzYWdlIG9mIG9ycGhhbmVkIC5pYmQgZmlsZXMKLWZvciB3aGljaCB0aGVyZSBp cyBub3QgYSBkYXRhIGRpY3Rpb25hcnkgZW50cnkgd2l0aCBhIG1hdGNoaW5nIHRhYmxlIG5hbWUK LWFuZCBzcGFjZSBpZC4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi1maWxfcHJpbnRfb3JwaGFuZWRf dGFibGVzcGFjZXModm9pZCk7Ci0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgogUmV0dXJucyBUUlVFIGlmIGEgc2luZ2xlLXRhYmxlIHRhYmxlc3Bh Y2UgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1lbW9yeSBjYWNoZSwKIG9yIGlzIGJlaW5nIGRlbGV0 ZWQgdGhlcmUuCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1 ZGUvbG9jazBsb2NrLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2xvY2sw bG9jay5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAxMTM1ODAyLWhncGxj cHI4MDg5dXJhOGcKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvbG9jazBsb2Nr LmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMDM5MDMtMzNieWl4czN4 bHFjd3NqMApAQCAtMzQwLDExICszNDAsMTIgQEAgbG9ja19zZWNfcmVjX21vZGlmeV9jaGVja19h bmRfbG9jaygKIAlxdWVfdGhyX3QqCXRociwJLyohPCBpbjogcXVlcnkgdGhyZWFkICovCiAJbXRy X3QqCQltdHIpOwkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLwogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKLUxpa2UgdGhlIGNvdW50ZXJwYXJ0IGZvciBhIGNsdXN0ZXJlZCBpbmRleCBiZWxvdywg YnV0IG5vdyB3ZSByZWFkIGEKK0xpa2UgbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRfbG9j aygpLCBidXQgcmVhZHMgYQogc2Vjb25kYXJ5IGluZGV4IHJlY29yZC4KLUByZXR1cm4JREJfU1VD Q0VTUywgREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywgb3IgREJfUVVFX1RIUl9TVVNQRU5ERUQg Ki8KK0ByZXR1cm4JREJfU1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURfUkVDLCBEQl9MT0NLX1dB SVQsIERCX0RFQURMT0NLLAorb3IgREJfUVVFX1RIUl9TVVNQRU5ERUQgKi8KIFVOSVZfSU5URVJO Ci11bGludAorZW51bSBkYl9lcnIKIGxvY2tfc2VjX3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrKAog Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJdWxpbnQJCQlmbGFncywJLyohPCBp bjogaWYgQlRSX05PX0xPQ0tJTkdfRkxBRwpAQCAtMzcxLDkgKzM3MiwxMCBAQCBpZiB0aGUgcXVl cnkgdGhyZWFkIHNob3VsZCBhbnl3YXkgYmUgc3VzCiBwdXRzIHRoZSB0cmFuc2FjdGlvbiBhbmQg dGhlIHF1ZXJ5IHRocmVhZCB0byB0aGUgbG9jayB3YWl0IHN0YXRlIGFuZCBpbnNlcnRzIGEKIHdh aXRpbmcgcmVxdWVzdCBmb3IgYSByZWNvcmQgbG9jayB0byB0aGUgbG9jayBxdWV1ZS4gU2V0cyB0 aGUgcmVxdWVzdGVkIG1vZGUKIGxvY2sgb24gdGhlIHJlY29yZC4KLUByZXR1cm4JREJfU1VDQ0VT UywgREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywgb3IgREJfUVVFX1RIUl9TVVNQRU5ERUQgKi8K K0ByZXR1cm4JREJfU1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURfUkVDLCBEQl9MT0NLX1dBSVQs IERCX0RFQURMT0NLLAorb3IgREJfUVVFX1RIUl9TVVNQRU5ERUQgKi8KIFVOSVZfSU5URVJOCi11 bGludAorZW51bSBkYl9lcnIKIGxvY2tfY2x1c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soCiAv Kj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXVsaW50CQkJZmxhZ3MsCS8qITwg aW46IGlmIEJUUl9OT19MT0NLSU5HX0ZMQUcKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9kYl9wbHVnaW4vaW5jbHVkZS9yb3cwbXlzcWwuaCcKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1 Z2luL2luY2x1ZGUvcm93MG15c3FsLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MDA2MDExMzU4MDItaGdwbGNwcjgwODl1cmE4ZworKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4v aW5jbHVkZS9yb3cwbXlzcWwuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYw MjEwMzkwMy0zM2J5aXhzM3hscWN3c2owCkBAIC0yNjQsMjcgKzI2NCwyNiBAQCByb3dfdXBkYXRl X2Zvcl9teXNxbCgKIAlyb3dfcHJlYnVpbHRfdCoJcHJlYnVpbHQpOwkvKiE8IGluOiBwcmVidWls dCBzdHJ1Y3QgaW4gTXlTUUwKIAkJCQkJaGFuZGxlICovCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotVGhp cyBjYW4gb25seSBiZSB1c2VkIHdoZW4gc3J2X2xvY2tzX3Vuc2FmZV9mb3JfYmlubG9nIGlzIFRS VUUgb3IKLXNlc3Npb24gaXMgdXNpbmcgYSBSRUFEIENPTU1JVFRFRCBpc29sYXRpb24gbGV2ZWwu IEJlZm9yZQotY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdlIG11c3QgdXNlIHRyeF9yZXNldF9uZXdf cmVjX2xvY2tfaW5mbygpIGFuZAotdHJ4X3JlZ2lzdGVyX25ld19yZWNfbG9jaygpIHRvIHN0b3Jl IHRoZSBpbmZvcm1hdGlvbiB3aGljaCBuZXcgcmVjb3JkIGxvY2tzCi1yZWFsbHkgd2VyZSBzZXQu IFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyBhIG5ld2x5IHNldCBsb2NrIHVuZGVyIHByZWJ1aWx0LT5w Y3VyLAotYW5kIGFsc28gdW5kZXIgcHJlYnVpbHQtPmNsdXN0X3BjdXIuIEN1cnJlbnRseSwgdGhp cyBpcyBvbmx5IHVzZWQgYW5kIHRlc3RlZAotaW4gdGhlIGNhc2Ugb2YgYW4gVVBEQVRFIG9yIGEg REVMRVRFIHN0YXRlbWVudCwgd2hlcmUgdGhlIHJvdyBsb2NrIGlzIG9mIHRoZQotTE9DS19YIHR5 cGUuCi1UaHVzLCB0aGlzIGltcGxlbWVudHMgYSAnbWluaS1yb2xsYmFjaycgdGhhdCByZWxlYXNl cyB0aGUgbGF0ZXN0IHJlY29yZAotbG9ja3Mgd2Ugc2V0LgotQHJldHVybgllcnJvciBjb2RlIG9y IERCX1NVQ0NFU1MgKi8KK1RoaXMgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIHNydl9sb2Nrc191bnNh ZmVfZm9yX2JpbmxvZyBpcyBUUlVFIG9yIHRoaXMKK3Nlc3Npb24gaXMgdXNpbmcgYSBSRUFEIENP TU1JVFRFRCBvciBSRUFEIFVOQ09NTUlUVEVEIGlzb2xhdGlvbiBsZXZlbC4KK0JlZm9yZSBjYWxs aW5nIHRoaXMgZnVuY3Rpb24gcm93X3NlYXJjaF9mb3JfbXlzcWwoKSBtdXN0IGhhdmUKK2luaXRp YWxpemVkIHByZWJ1aWx0LT5uZXdfcmVjX2xvY2tzIHRvIHN0b3JlIHRoZSBpbmZvcm1hdGlvbiB3 aGljaCBuZXcKK3JlY29yZCBsb2NrcyByZWFsbHkgd2VyZSBzZXQuIFRoaXMgZnVuY3Rpb24gcmVt b3ZlcyBhIG5ld2x5IHNldAorY2x1c3RlcmVkIGluZGV4IHJlY29yZCBsb2NrIHVuZGVyIHByZWJ1 aWx0LT5wY3VyIG9yCitwcmVidWlsdC0+Y2x1c3RfcGN1ci4gIFRodXMsIHRoaXMgaW1wbGVtZW50 cyBhICdtaW5pLXJvbGxiYWNrJyB0aGF0CityZWxlYXNlcyB0aGUgbGF0ZXN0IGNsdXN0ZXJlZCBp bmRleCByZWNvcmQgbG9jayB3ZSBzZXQuCitAcmV0dXJuIGVycm9yIGNvZGUgb3IgREJfU1VDQ0VT UyAqLwogVU5JVl9JTlRFUk4KIGludAogcm93X3VubG9ja19mb3JfbXlzcWwoCiAvKj09PT09PT09 PT09PT09PT09Ki8KLQlyb3dfcHJlYnVpbHRfdCoJcHJlYnVpbHQsCS8qITwgaW46IHByZWJ1aWx0 IHN0cnVjdCBpbiBNeVNRTAorCXJvd19wcmVidWlsdF90KglwcmVidWlsdCwJLyohPCBpbi9vdXQ6 IHByZWJ1aWx0IHN0cnVjdCBpbiBNeVNRTAogCQkJCQloYW5kbGUgKi8KLQlpYm9vbAkJaGFzX2xh dGNoZXNfb25fcmVjcyk7LyohPCBUUlVFIGlmIGNhbGxlZCBzbyB0aGF0IHdlIGhhdmUKLQkJCQkJ dGhlIGxhdGNoZXMgb24gdGhlIHJlY29yZHMgdW5kZXIgcGN1cgotCQkJCQlhbmQgY2x1c3RfcGN1 ciwgYW5kIHdlIGRvIG5vdCBuZWVkIHRvCi0JCQkJCXJlcG9zaXRpb24gdGhlIGN1cnNvcnMuICov CisJaWJvb2wJCWhhc19sYXRjaGVzX29uX3JlY3MpOy8qITwgaW46IFRSVUUgaWYgY2FsbGVkCisJ CQkJCXNvIHRoYXQgd2UgaGF2ZSB0aGUgbGF0Y2hlcyBvbgorCQkJCQl0aGUgcmVjb3JkcyB1bmRl ciBwY3VyIGFuZAorCQkJCQljbHVzdF9wY3VyLCBhbmQgd2UgZG8gbm90IG5lZWQKKwkJCQkJdG8g cmVwb3NpdGlvbiB0aGUgY3Vyc29ycy4gKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBDcmVhdGVzIGFu IHF1ZXJ5IGdyYXBoIG5vZGUgb2YgJ3VwZGF0ZScgdHlwZSB0byBiZSB1c2VkIGluIHRoZSBNeVNR TAogaW50ZXJmYWNlLgpAQCAtNzAyLDE4ICs3MDEsMTcgQEAgc3RydWN0IHJvd19wcmVidWlsdF9z dHJ1Y3QgewogCXVsaW50CQluZXdfcmVjX2xvY2tzOwkvKiE8IG5vcm1hbGx5IDA7IGlmCiAJCQkJ CXNydl9sb2Nrc191bnNhZmVfZm9yX2JpbmxvZyBpcwogCQkJCQlUUlVFIG9yIHNlc3Npb24gaXMg dXNpbmcgUkVBRAotCQkJCQlDT01NSVRURUQgaXNvbGF0aW9uIGxldmVsLCBpbiBhCi0JCQkJCWN1 cnNvciBzZWFyY2gsIGlmIHdlIHNldCBhIG5ldwotCQkJCQlyZWNvcmQgbG9jayBvbiBhbiBpbmRl eCwgdGhpcyBpcwotCQkJCQlpbmNyZW1lbnRlZDsgdGhpcyBpcyB1c2VkIGluCi0JCQkJCXJlbGVh c2luZyB0aGUgbG9ja3MgdW5kZXIgdGhlCi0JCQkJCWN1cnNvcnMgaWYgd2UgYXJlIHBlcmZvcm1p bmcgYW4KLQkJCQkJVVBEQVRFIGFuZCB3ZSBkZXRlcm1pbmUgYWZ0ZXIKLQkJCQkJcmV0cmlldmlu ZyB0aGUgcm93IHRoYXQgaXQgZG9lcwotCQkJCQlub3QgbmVlZCB0byBiZSBsb2NrZWQ7IHRodXMs Ci0JCQkJCXRoZXNlIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBhCi0JCQkJCSdtaW5pLXJvbGxi YWNrJyB0aGF0IHJlbGVhc2VzCi0JCQkJCXRoZSBsYXRlc3QgcmVjb3JkIGxvY2tzICovCisJCQkJ CUNPTU1JVFRFRCBvciBSRUFEIFVOQ09NTUlUVEVECisJCQkJCWlzb2xhdGlvbiBsZXZlbCwgc2V0 IGluCisJCQkJCXJvd19zZWFyY2hfZm9yX215c3FsKCkgaWYgd2Ugc2V0IGEgbmV3CisJCQkJCXJl Y29yZCBsb2NrIG9uIHRoZSBzZWNvbmRhcnkKKwkJCQkJb3IgY2x1c3RlcmVkIGluZGV4OyB0aGlz IGlzCisJCQkJCXVzZWQgaW4gcm93X3VubG9ja19mb3JfbXlzcWwoKQorCQkJCQl3aGVuIHJlbGVh c2luZyB0aGUgbG9jayB1bmRlcgorCQkJCQl0aGUgY3Vyc29yIGlmIHdlIGRldGVybWluZQorCQkJ CQlhZnRlciByZXRyaWV2aW5nIHRoZSByb3cgdGhhdAorCQkJCQlpdCBkb2VzIG5vdCBuZWVkIHRv IGJlIGxvY2tlZAorCQkJCQkoJ21pbmktcm9sbGJhY2snKSAqLwogCXVsaW50CQlteXNxbF9wcmVm aXhfbGVuOy8qITwgYnl0ZSBvZmZzZXQgb2YgdGhlIGVuZCBvZgogCQkJCQl0aGUgbGFzdCByZXF1 ZXN0ZWQgY29sdW1uICovCiAJdWxpbnQJCW15c3FsX3Jvd19sZW47CS8qITwgbGVuZ3RoIGluIGJ5 dGVzIG9mIGEgcm93IGluIHRoZQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3Bs dWdpbi9sb2NrL2xvY2swbG9jay5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vbG9jay9s b2NrMGxvY2suYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMTEzNTgwMi1o Z3BsY3ByODA4OXVyYThnCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9sb2NrL2xvY2swbG9j ay5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAzOTAzLTMzYnlpeHMz eGxxY3dzajAKQEAgLTE3MzMsMTEgKzE3MzMsMTEgQEAgbG9ja19yZWNfY3JlYXRlKAogRW5xdWV1 ZXMgYSB3YWl0aW5nIHJlcXVlc3QgZm9yIGEgbG9jayB3aGljaCBjYW5ub3QgYmUgZ3JhbnRlZCBp bW1lZGlhdGVseS4KIENoZWNrcyBmb3IgZGVhZGxvY2tzLgogQHJldHVybiBEQl9MT0NLX1dBSVQs IERCX0RFQURMT0NLLCBvciBEQl9RVUVfVEhSX1NVU1BFTkRFRCwgb3IKLURCX1NVQ0NFU1M7IERC X1NVQ0NFU1MgbWVhbnMgdGhhdCB0aGVyZSB3YXMgYSBkZWFkbG9jaywgYnV0IGFub3RoZXIKLXRy YW5zYWN0aW9uIHdhcyBjaG9zZW4gYXMgYSB2aWN0aW0sIGFuZCB3ZSBnb3QgdGhlIGxvY2sgaW1t ZWRpYXRlbHk6Ci1ubyBuZWVkIHRvIHdhaXQgdGhlbiAqLworREJfU1VDQ0VTU19MT0NLRURfUkVD OyBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMgbWVhbnMgdGhhdAordGhlcmUgd2FzIGEgZGVhZGxvY2ss IGJ1dCBhbm90aGVyIHRyYW5zYWN0aW9uIHdhcyBjaG9zZW4gYXMgYSB2aWN0aW0sCithbmQgd2Ug Z290IHRoZSBsb2NrIGltbWVkaWF0ZWx5OiBubyBuZWVkIHRvIHdhaXQgdGhlbiAqLwogc3RhdGlj Ci11bGludAorZW51bSBkYl9lcnIKIGxvY2tfcmVjX2VucXVldWVfd2FpdGluZygKIC8qPT09PT09 PT09PT09PT09PT09PT09Ki8KIAl1bGludAkJCXR5cGVfbW9kZSwvKiE8IGluOiBsb2NrIG1vZGUg dGhpcwpAQCAtMTgwOSw3ICsxODA5LDcgQEAgbG9ja19yZWNfZW5xdWV1ZV93YWl0aW5nKAogCiAJ aWYgKHRyeC0+d2FpdF9sb2NrID09IE5VTEwpIHsKIAotCQlyZXR1cm4oREJfU1VDQ0VTUyk7CisJ CXJldHVybihEQl9TVUNDRVNTX0xPQ0tFRF9SRUMpOwogCX0KIAogCXRyeC0+cXVlX3N0YXRlID0g VFJYX1FVRV9MT0NLX1dBSVQ7CkBAIC0xOTI1LDYgKzE5MjUsMTYgQEAgc29tZWJvZHlfd2FpdHM6 CiAJcmV0dXJuKGxvY2tfcmVjX2NyZWF0ZSh0eXBlX21vZGUsIGJsb2NrLCBoZWFwX25vLCBpbmRl eCwgdHJ4KSk7CiB9CiAKKy8qKiBSZWNvcmQgbG9ja2luZyByZXF1ZXN0IHN0YXR1cyAqLworZW51 bSBsb2NrX3JlY19yZXFfc3RhdHVzIHsKKwkvKiogRmFpbGVkIHRvIGFjcXVpcmUgYSBsb2NrICov CisJTE9DS19SRUNfRkFJTCwKKwkvKiogU3VjY2VlZGVkIGluIGFjcXVpcmluZyBhIGxvY2sgKGlt cGxpY2l0IG9yIGFscmVhZHkgYWNxdWlyZWQpICovCisJTE9DS19SRUNfU1VDQ0VTUywKKwkvKiog RXhwbGljaXRseSBjcmVhdGVkIGEgbmV3IGxvY2sgKi8KKwlMT0NLX1JFQ19TVUNDRVNTX0NSRUFU RUQKK307CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBUaGlzIGlzIGEgZmFzdCByb3V0aW5lIGZvciBs b2NraW5nIGEgcmVjb3JkIGluIHRoZSBtb3N0IGNvbW1vbiBjYXNlczoKIHRoZXJlIGFyZSBubyBl eHBsaWNpdCBsb2NrcyBvbiB0aGUgcGFnZSwgb3IgdGhlcmUgaXMganVzdCBvbmUgbG9jaywgb3du ZWQKQEAgLTE5MzIsOSArMTk0Miw5IEBAIGJ5IHRoaXMgdHJhbnNhY3Rpb24sIGFuZCBvZiB0aGUg cmlnaHQgdHkKIHdoaWNoIGRvZXMgTk9UIGxvb2sgYXQgaW1wbGljaXQgbG9ja3MhIENoZWNrcyBs b2NrIGNvbXBhdGliaWxpdHkgd2l0aGluCiBleHBsaWNpdCBsb2Nrcy4gVGhpcyBmdW5jdGlvbiBz ZXRzIGEgbm9ybWFsIG5leHQta2V5IGxvY2ssIG9yIGluIHRoZSBjYXNlIG9mCiBhIHBhZ2Ugc3Vw cmVtdW0gcmVjb3JkLCBhIGdhcCB0eXBlIGxvY2suCi1AcmV0dXJuCVRSVUUgaWYgbG9ja2luZyBz dWNjZWVkZWQgKi8KK0ByZXR1cm4gd2hldGhlciB0aGUgbG9ja2luZyBzdWNjZWVkZWQgKi8KIFVO SVZfSU5MSU5FCi1pYm9vbAorZW51bSBsb2NrX3JlY19yZXFfc3RhdHVzCiBsb2NrX3JlY19sb2Nr X2Zhc3QoCiAvKj09PT09PT09PT09PT09PSovCiAJaWJvb2wJCQlpbXBsLAkvKiE8IGluOiBpZiBU UlVFLCBubyBsb2NrIGlzIHNldApAQCAtMTk3MywxOSArMTk4MywxOSBAQCBsb2NrX3JlY19sb2Nr X2Zhc3QoCiAJCQlsb2NrX3JlY19jcmVhdGUobW9kZSwgYmxvY2ssIGhlYXBfbm8sIGluZGV4LCB0 cngpOwogCQl9CiAKLQkJcmV0dXJuKFRSVUUpOworCQlyZXR1cm4oTE9DS19SRUNfU1VDQ0VTU19D UkVBVEVEKTsKIAl9CiAKIAlpZiAobG9ja19yZWNfZ2V0X25leHRfb25fcGFnZShsb2NrKSkgewog Ci0JCXJldHVybihGQUxTRSk7CisJCXJldHVybihMT0NLX1JFQ19GQUlMKTsKIAl9CiAKIAlpZiAo bG9jay0+dHJ4ICE9IHRyeAogCSAgICB8fCBsb2NrLT50eXBlX21vZGUgIT0gKG1vZGUgfCBMT0NL X1JFQykKIAkgICAgfHwgbG9ja19yZWNfZ2V0X25fYml0cyhsb2NrKSA8PSBoZWFwX25vKSB7CiAK LQkJcmV0dXJuKEZBTFNFKTsKKwkJcmV0dXJuKExPQ0tfUkVDX0ZBSUwpOwogCX0KIAogCWlmICgh aW1wbCkgewpAQCAtMTk5NCwxMCArMjAwNCwxMSBAQCBsb2NrX3JlY19sb2NrX2Zhc3QoCiAKIAkJ aWYgKCFsb2NrX3JlY19nZXRfbnRoX2JpdChsb2NrLCBoZWFwX25vKSkgewogCQkJbG9ja19yZWNf c2V0X250aF9iaXQobG9jaywgaGVhcF9ubyk7CisJCQlyZXR1cm4oTE9DS19SRUNfU1VDQ0VTU19D UkVBVEVEKTsKIAkJfQogCX0KIAotCXJldHVybihUUlVFKTsKKwlyZXR1cm4oTE9DS19SRUNfU1VD Q0VTUyk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC0yMDA1LDkgKzIwMTYsMTAgQEAgVGhp cyBpcyB0aGUgZ2VuZXJhbCwgYW5kIHNsb3dlciwgcm91dGluZQogbG93LWxldmVsIGZ1bmN0aW9u IHdoaWNoIGRvZXMgTk9UIGxvb2sgYXQgaW1wbGljaXQgbG9ja3MhIENoZWNrcyBsb2NrCiBjb21w YXRpYmlsaXR5IHdpdGhpbiBleHBsaWNpdCBsb2Nrcy4gVGhpcyBmdW5jdGlvbiBzZXRzIGEgbm9y bWFsIG5leHQta2V5CiBsb2NrLCBvciBpbiB0aGUgY2FzZSBvZiBhIHBhZ2Ugc3VwcmVtdW0gcmVj b3JkLCBhIGdhcCB0eXBlIGxvY2suCi1AcmV0dXJuCURCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwg b3IgZXJyb3IgY29kZSAqLworQHJldHVybglEQl9TVUNDRVNTLCBEQl9TVUNDRVNTX0xPQ0tFRF9S RUMsIERCX0xPQ0tfV0FJVCwgREJfREVBRExPQ0ssCitvciBEQl9RVUVfVEhSX1NVU1BFTkRFRCAq Lwogc3RhdGljCi11bGludAorZW51bSBkYl9lcnIKIGxvY2tfcmVjX2xvY2tfc2xvdygKIC8qPT09 PT09PT09PT09PT09Ki8KIAlpYm9vbAkJCWltcGwsCS8qITwgaW46IGlmIFRSVUUsIG5vIGxvY2sg aXMgc2V0CkBAIC0yMDI0LDcgKzIwMzYsNiBAQCBsb2NrX3JlY19sb2NrX3Nsb3coCiAJcXVlX3Ro cl90KgkJdGhyKQkvKiE8IGluOiBxdWVyeSB0aHJlYWQgKi8KIHsKIAl0cnhfdCoJdHJ4OwotCXVs aW50CWVycjsKIAogCXV0X2FkKG11dGV4X293bigma2VybmVsX211dGV4KSk7CiAJdXRfYWQoKExP Q0tfTU9ERV9NQVNLICYgbW9kZSkgIT0gTE9DS19TCkBAIC0yMDQzLDI3ICsyMDU0LDIzIEBAIGxv Y2tfcmVjX2xvY2tfc2xvdygKIAkJLyogVGhlIHRyeCBhbHJlYWR5IGhhcyBhIHN0cm9uZyBlbm91 Z2ggbG9jayBvbiByZWM6IGRvCiAJCW5vdGhpbmcgKi8KIAotCQllcnIgPSBEQl9TVUNDRVNTOwog CX0gZWxzZSBpZiAobG9ja19yZWNfb3RoZXJfaGFzX2NvbmZsaWN0aW5nKG1vZGUsIGJsb2NrLCBo ZWFwX25vLCB0cngpKSB7CiAKIAkJLyogSWYgYW5vdGhlciB0cmFuc2FjdGlvbiBoYXMgYSBub24t Z2FwIGNvbmZsaWN0aW5nIHJlcXVlc3QgaW4KIAkJdGhlIHF1ZXVlLCBhcyB0aGlzIHRyYW5zYWN0 aW9uIGRvZXMgbm90IGhhdmUgYSBsb2NrIHN0cm9uZwogCQllbm91Z2ggYWxyZWFkeSBncmFudGVk IG9uIHRoZSByZWNvcmQsIHdlIGhhdmUgdG8gd2FpdC4gKi8KIAotCQllcnIgPSBsb2NrX3JlY19l bnF1ZXVlX3dhaXRpbmcobW9kZSwgYmxvY2ssIGhlYXBfbm8sCi0JCQkJCSAgICAgICBpbmRleCwg dGhyKTsKLQl9IGVsc2UgewotCQlpZiAoIWltcGwpIHsKLQkJCS8qIFNldCB0aGUgcmVxdWVzdGVk IGxvY2sgb24gdGhlIHJlY29yZCAqLwotCi0JCQlsb2NrX3JlY19hZGRfdG9fcXVldWUoTE9DS19S RUMgfCBtb2RlLCBibG9jaywKLQkJCQkJICAgICAgaGVhcF9ubywgaW5kZXgsIHRyeCk7Ci0JCX0K LQotCQllcnIgPSBEQl9TVUNDRVNTOworCQlyZXR1cm4obG9ja19yZWNfZW5xdWV1ZV93YWl0aW5n KG1vZGUsIGJsb2NrLCBoZWFwX25vLAorCQkJCQkJaW5kZXgsIHRocikpOworCX0gZWxzZSBpZiAo IWltcGwpIHsKKwkJLyogU2V0IHRoZSByZXF1ZXN0ZWQgbG9jayBvbiB0aGUgcmVjb3JkICovCisK KwkJbG9ja19yZWNfYWRkX3RvX3F1ZXVlKExPQ0tfUkVDIHwgbW9kZSwgYmxvY2ssCisJCQkJICAg ICAgaGVhcF9ubywgaW5kZXgsIHRyeCk7CisJCXJldHVybihEQl9TVUNDRVNTX0xPQ0tFRF9SRUMp OwogCX0KIAotCXJldHVybihlcnIpOworCXJldHVybihEQl9TVUNDRVNTKTsKIH0KIAogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKQEAgLTIwNzIsOSArMjA3OSwxMCBAQCBwb3NzaWJsZSwgZW5xdWV1ZXMgYSB3 YWl0aW5nIGxvY2sgcmVxdWVzCiB3aGljaCBkb2VzIE5PVCBsb29rIGF0IGltcGxpY2l0IGxvY2tz ISBDaGVja3MgbG9jayBjb21wYXRpYmlsaXR5IHdpdGhpbgogZXhwbGljaXQgbG9ja3MuIFRoaXMg ZnVuY3Rpb24gc2V0cyBhIG5vcm1hbCBuZXh0LWtleSBsb2NrLCBvciBpbiB0aGUgY2FzZQogb2Yg YSBwYWdlIHN1cHJlbXVtIHJlY29yZCwgYSBnYXAgdHlwZSBsb2NrLgotQHJldHVybglEQl9TVUND RVNTLCBEQl9MT0NLX1dBSVQsIG9yIGVycm9yIGNvZGUgKi8KK0ByZXR1cm4JREJfU1VDQ0VTUywg REJfU1VDQ0VTU19MT0NLRURfUkVDLCBEQl9MT0NLX1dBSVQsIERCX0RFQURMT0NLLAorb3IgREJf UVVFX1RIUl9TVVNQRU5ERUQgKi8KIHN0YXRpYwotdWxpbnQKK2VudW0gZGJfZXJyCiBsb2NrX3Jl Y19sb2NrKAogLyo9PT09PT09PT09Ki8KIAlpYm9vbAkJCWltcGwsCS8qITwgaW46IGlmIFRSVUUs IG5vIGxvY2sgaXMgc2V0CkBAIC0yMDkwLDggKzIwOTgsNiBAQCBsb2NrX3JlY19sb2NrKAogCWRp Y3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGluOiBpbmRleCBvZiByZWNvcmQgKi8KIAlxdWVfdGhy X3QqCQl0aHIpCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwogewotCXVsaW50CWVycjsKLQogCXV0 X2FkKG11dGV4X293bigma2VybmVsX211dGV4KSk7CiAJdXRfYWQoKExPQ0tfTU9ERV9NQVNLICYg bW9kZSkgIT0gTE9DS19TCiAJICAgICAgfHwgbG9ja190YWJsZV9oYXModGhyX2dldF90cngodGhy KSwgaW5kZXgtPnRhYmxlLCBMT0NLX0lTKSk7CkBAIC0yMTAzLDE4ICsyMTA5LDIwIEBAIGxvY2tf cmVjX2xvY2soCiAJICAgICAgfHwgbW9kZSAtIChMT0NLX01PREVfTUFTSyAmIG1vZGUpID09IExP Q0tfUkVDX05PVF9HQVAKIAkgICAgICB8fCBtb2RlIC0gKExPQ0tfTU9ERV9NQVNLICYgbW9kZSkg PT0gMCk7CiAKLQlpZiAobG9ja19yZWNfbG9ja19mYXN0KGltcGwsIG1vZGUsIGJsb2NrLCBoZWFw X25vLCBpbmRleCwgdGhyKSkgewotCi0JCS8qIFdlIHRyeSBhIHNpbXBsaWZpZWQgYW5kIGZhc3Rl ciBzdWJyb3V0aW5lIGZvciB0aGUgbW9zdAotCQljb21tb24gY2FzZXMgKi8KLQotCQllcnIgPSBE Ql9TVUNDRVNTOwotCX0gZWxzZSB7Ci0JCWVyciA9IGxvY2tfcmVjX2xvY2tfc2xvdyhpbXBsLCBt b2RlLCBibG9jaywKLQkJCQkJIGhlYXBfbm8sIGluZGV4LCB0aHIpOworCS8qIFdlIHRyeSBhIHNp bXBsaWZpZWQgYW5kIGZhc3RlciBzdWJyb3V0aW5lIGZvciB0aGUgbW9zdAorCWNvbW1vbiBjYXNl cyAqLworCXN3aXRjaCAobG9ja19yZWNfbG9ja19mYXN0KGltcGwsIG1vZGUsIGJsb2NrLCBoZWFw X25vLCBpbmRleCwgdGhyKSkgeworCWNhc2UgTE9DS19SRUNfU1VDQ0VTUzoKKwkJcmV0dXJuKERC X1NVQ0NFU1MpOworCWNhc2UgTE9DS19SRUNfU1VDQ0VTU19DUkVBVEVEOgorCQlyZXR1cm4oREJf U1VDQ0VTU19MT0NLRURfUkVDKTsKKwljYXNlIExPQ0tfUkVDX0ZBSUw6CisJCXJldHVybihsb2Nr X3JlY19sb2NrX3Nsb3coaW1wbCwgbW9kZSwgYmxvY2ssCisJCQkJCSAgaGVhcF9ubywgaW5kZXgs IHRocikpOwogCX0KIAotCXJldHVybihlcnIpOworCXV0X2Vycm9yOworCXJldHVybihEQl9FUlJP Uik7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC01MDcyLDcgKzUwODAsMTQgQEAgbG9ja19y ZWNfaW5zZXJ0X2NoZWNrX2FuZF9sb2NrKAogCiAJbG9ja19tdXRleF9leGl0X2tlcm5lbCgpOwog Ci0JaWYgKChlcnIgPT0gREJfU1VDQ0VTUykgJiYgIWRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgp KSB7CisJc3dpdGNoIChlcnIpIHsKKwljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJZXJy ID0gREJfU1VDQ0VTUzsKKwkJLyogZmFsbCB0aHJvdWdoICovCisJY2FzZSBEQl9TVUNDRVNTOgor CQlpZiAoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpIHsKKwkJCWJyZWFrOworCQl9CiAJCS8q IFVwZGF0ZSB0aGUgcGFnZSBtYXggdHJ4IGlkIGZpZWxkICovCiAJCXBhZ2VfdXBkYXRlX21heF90 cnhfaWQoYmxvY2ssCiAJCQkJICAgICAgIGJ1Zl9ibG9ja19nZXRfcGFnZV96aXAoYmxvY2spLApA QCAtNTE5NSw2ICs1MjEwLDEwIEBAIGxvY2tfY2x1c3RfcmVjX21vZGlmeV9jaGVja19hbmRfbG9j aygKIAogCXV0X2FkKGxvY2tfcmVjX3F1ZXVlX3ZhbGlkYXRlKGJsb2NrLCByZWMsIGluZGV4LCBv ZmZzZXRzKSk7CiAKKwlpZiAoVU5JVl9VTkxJS0VMWShlcnIgPT0gREJfU1VDQ0VTU19MT0NLRURf UkVDKSkgeworCQllcnIgPSBEQl9TVUNDRVNTOworCX0KKwogCXJldHVybihlcnIpOwogfQogCkBA IC01MjYxLDIyICs1MjgwLDI3IEBAIGxvY2tfc2VjX3JlY19tb2RpZnlfY2hlY2tfYW5kX2xvY2so CiAJfQogI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIAotCWlmIChlcnIgPT0gREJfU1VDQ0VTUykg eworCWlmIChlcnIgPT0gREJfU1VDQ0VTUyB8fCBlcnIgPT0gREJfU1VDQ0VTU19MT0NLRURfUkVD KSB7CiAJCS8qIFVwZGF0ZSB0aGUgcGFnZSBtYXggdHJ4IGlkIGZpZWxkICovCisJCS8qIEl0IG1p Z2h0IG5vdCBiZSBuZWNlc3NhcnkgdG8gZG8gdGhpcyBpZgorCQllcnIgPT0gREJfU1VDQ0VTUyAo bm8gbmV3IGxvY2sgY3JlYXRlZCksCisJCWJ1dCBpdCBzaG91bGQgbm90IGNvc3QgdG9vIG11Y2gg cGVyZm9ybWFuY2UuICovCiAJCXBhZ2VfdXBkYXRlX21heF90cnhfaWQoYmxvY2ssCiAJCQkJICAg ICAgIGJ1Zl9ibG9ja19nZXRfcGFnZV96aXAoYmxvY2spLAogCQkJCSAgICAgICB0aHJfZ2V0X3Ry eCh0aHIpLT5pZCwgbXRyKTsKKwkJZXJyID0gREJfU1VDQ0VTUzsKIAl9CiAKIAlyZXR1cm4oZXJy KTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKLUxpa2UgdGhlIGNvdW50ZXJwYXJ0IGZvciBhIGNs dXN0ZXJlZCBpbmRleCBiZWxvdywgYnV0IG5vdyB3ZSByZWFkIGEKK0xpa2UgbG9ja19jbHVzdF9y ZWNfcmVhZF9jaGVja19hbmRfbG9jaygpLCBidXQgcmVhZHMgYQogc2Vjb25kYXJ5IGluZGV4IHJl Y29yZC4KLUByZXR1cm4JREJfU1VDQ0VTUywgREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywgb3Ig REJfUVVFX1RIUl9TVVNQRU5ERUQgKi8KK0ByZXR1cm4JREJfU1VDQ0VTUywgREJfU1VDQ0VTU19M T0NLRURfUkVDLCBEQl9MT0NLX1dBSVQsIERCX0RFQURMT0NLLAorb3IgREJfUVVFX1RIUl9TVVNQ RU5ERUQgKi8KIFVOSVZfSU5URVJOCi11bGludAorZW51bSBkYl9lcnIKIGxvY2tfc2VjX3JlY19y ZWFkX2NoZWNrX2FuZF9sb2NrKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJ dWxpbnQJCQlmbGFncywJLyohPCBpbjogaWYgQlRSX05PX0xPQ0tJTkdfRkxBRwpAQCAtNTI5Nyw4 ICs1MzIxLDggQEAgbG9ja19zZWNfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soCiAJCQkJCUxPQ0tf UkVDX05PVF9HQVAgKi8KIAlxdWVfdGhyX3QqCQl0aHIpCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAq LwogewotCXVsaW50CWVycjsKLQl1bGludAloZWFwX25vOworCWVudW0gZGJfZXJyCWVycjsKKwl1 bGludAkJaGVhcF9ubzsKIAogCXV0X2FkKCFkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSk7CiAJ dXRfYWQoYmxvY2stPmZyYW1lID09IHBhZ2VfYWxpZ24ocmVjKSk7CkBAIC01MzQ5LDkgKzUzNzMs MTAgQEAgaWYgdGhlIHF1ZXJ5IHRocmVhZCBzaG91bGQgYW55d2F5IGJlIHN1cwogcHV0cyB0aGUg dHJhbnNhY3Rpb24gYW5kIHRoZSBxdWVyeSB0aHJlYWQgdG8gdGhlIGxvY2sgd2FpdCBzdGF0ZSBh bmQgaW5zZXJ0cyBhCiB3YWl0aW5nIHJlcXVlc3QgZm9yIGEgcmVjb3JkIGxvY2sgdG8gdGhlIGxv Y2sgcXVldWUuIFNldHMgdGhlIHJlcXVlc3RlZCBtb2RlCiBsb2NrIG9uIHRoZSByZWNvcmQuCi1A cmV0dXJuCURCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwgREJfREVBRExPQ0ssIG9yIERCX1FVRV9U SFJfU1VTUEVOREVEICovCitAcmV0dXJuCURCX1NVQ0NFU1MsIERCX1NVQ0NFU1NfTE9DS0VEX1JF QywgREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywKK29yIERCX1FVRV9USFJfU1VTUEVOREVEICov CiBVTklWX0lOVEVSTgotdWxpbnQKK2VudW0gZGJfZXJyCiBsb2NrX2NsdXN0X3JlY19yZWFkX2No ZWNrX2FuZF9sb2NrKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAl1bGlu dAkJCWZsYWdzLAkvKiE8IGluOiBpZiBCVFJfTk9fTE9DS0lOR19GTEFHCkBAIC01MzcyLDggKzUz OTcsOCBAQCBsb2NrX2NsdXN0X3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrKAogCQkJCQlMT0NLX1JF Q19OT1RfR0FQICovCiAJcXVlX3Rocl90KgkJdGhyKQkvKiE8IGluOiBxdWVyeSB0aHJlYWQgKi8K IHsKLQl1bGludAllcnI7Ci0JdWxpbnQJaGVhcF9ubzsKKwllbnVtIGRiX2VycgllcnI7CisJdWxp bnQJCWhlYXBfbm87CiAKIAl1dF9hZChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSk7CiAJdXRf YWQoYmxvY2stPmZyYW1lID09IHBhZ2VfYWxpZ24ocmVjKSk7CkBAIC01NDQ0LDE3ICs1NDY5LDIy IEBAIGxvY2tfY2x1c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2tfYWx0KAogCW1lbV9oZWFwX3Qq CXRtcF9oZWFwCT0gTlVMTDsKIAl1bGludAkJb2Zmc2V0c19bUkVDX09GRlNfTk9STUFMX1NJWkVd OwogCXVsaW50KgkJb2Zmc2V0cwkJPSBvZmZzZXRzXzsKLQl1bGludAkJcmV0OworCXVsaW50CQll cnI7CiAJcmVjX29mZnNfaW5pdChvZmZzZXRzXyk7CiAKIAlvZmZzZXRzID0gcmVjX2dldF9vZmZz ZXRzKHJlYywgaW5kZXgsIG9mZnNldHMsCiAJCQkJICBVTElOVF9VTkRFRklORUQsICZ0bXBfaGVh cCk7Ci0JcmV0ID0gbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRfbG9jayhmbGFncywgYmxv Y2ssIHJlYywgaW5kZXgsCisJZXJyID0gbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRfbG9j ayhmbGFncywgYmxvY2ssIHJlYywgaW5kZXgsCiAJCQkJCQkgb2Zmc2V0cywgbW9kZSwgZ2FwX21v ZGUsIHRocik7CiAJaWYgKHRtcF9oZWFwKSB7CiAJCW1lbV9oZWFwX2ZyZWUodG1wX2hlYXApOwog CX0KLQlyZXR1cm4ocmV0KTsKKworCWlmIChVTklWX1VOTElLRUxZKGVyciA9PSBEQl9TVUNDRVNT X0xPQ0tFRF9SRUMpKSB7CisJCWVyciA9IERCX1NVQ0NFU1M7CisJfQorCisJcmV0dXJuKGVycik7 CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9yb3cvcm93MGlucy5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3Jv dzBpbnMuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMTEzNTgwMi1oZ3Bs Y3ByODA4OXVyYThnCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MGlucy5jCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAzOTAzLTMzYnlpeHMzeGxxY3dz ajAKQEAgLTExMjEsOSArMTEyMSw5IEBAIG5vbnN0YW5kYXJkX2V4aXRfZnVuYzoKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCiBTZXRzIGEgc2hhcmVkIGxvY2sgb24gYSByZWNvcmQuIFVzZWQgaW4gbG9ja2lu ZyBwb3NzaWJsZSBkdXBsaWNhdGUga2V5CiByZWNvcmRzIGFuZCBhbHNvIGluIGNoZWNraW5nIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnRzLgotQHJldHVybglEQl9TVUNDRVNTIG9yIGVycm9yIGNvZGUg Ki8KK0ByZXR1cm4JREJfU1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURfUkVDLCBvciBlcnJvciBj b2RlICovCiBzdGF0aWMKLXVsaW50CitlbnVtIGRiX2Vycgogcm93X2luc19zZXRfc2hhcmVkX3Jl Y19sb2NrKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXVsaW50CQkJdHlwZSwJLyoh PCBpbjogTE9DS19PUkRJTkFSWSwgTE9DS19HQVAsIG9yCkBAIC0xMTM0LDcgKzExMzQsNyBAQCBy b3dfaW5zX3NldF9zaGFyZWRfcmVjX2xvY2soCiAJY29uc3QgdWxpbnQqCQlvZmZzZXRzLC8qITwg aW46IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4KSAqLwogCXF1ZV90aHJfdCoJCXRocikJLyoh PCBpbjogcXVlcnkgdGhyZWFkICovCiB7Ci0JdWxpbnQJZXJyOworCWVudW0gZGJfZXJyCWVycjsK IAogCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNldHMpKTsKIApAQCAt MTE1Miw5ICsxMTUyLDkgQEAgcm93X2luc19zZXRfc2hhcmVkX3JlY19sb2NrKAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIFNldHMgYSBleGNsdXNpdmUgbG9jayBvbiBhIHJlY29yZC4gVXNlZCBpbiBsb2Nr aW5nIHBvc3NpYmxlIGR1cGxpY2F0ZSBrZXkKIHJlY29yZHMKLUByZXR1cm4JREJfU1VDQ0VTUyBv ciBlcnJvciBjb2RlICovCitAcmV0dXJuCURCX1NVQ0NFU1MsIERCX1NVQ0NFU1NfTE9DS0VEX1JF Qywgb3IgZXJyb3IgY29kZSAqLwogc3RhdGljCi11bGludAorZW51bSBkYl9lcnIKIHJvd19pbnNf c2V0X2V4Y2x1c2l2ZV9yZWNfbG9jaygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K IAl1bGludAkJCXR5cGUsCS8qITwgaW46IExPQ0tfT1JESU5BUlksIExPQ0tfR0FQLCBvcgpAQCAt MTE2NSw3ICsxMTY1LDcgQEAgcm93X2luc19zZXRfZXhjbHVzaXZlX3JlY19sb2NrKAogCWNvbnN0 IHVsaW50KgkJb2Zmc2V0cywvKiE8IGluOiByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCkgKi8K IAlxdWVfdGhyX3QqCQl0aHIpCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwogewotCXVsaW50CWVy cjsKKwllbnVtIGRiX2VycgllcnI7CiAKIAl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZWMsIGlu ZGV4LCBvZmZzZXRzKSk7CiAKQEAgLTEyMDUsNyArMTIwNSw2IEBAIHJvd19pbnNfY2hlY2tfZm9y ZWlnbl9jb25zdHJhaW50KAogCWRpY3RfaW5kZXhfdCoJY2hlY2tfaW5kZXg7CiAJdWxpbnQJCW5f ZmllbGRzX2NtcDsKIAlidHJfcGN1cl90CXBjdXI7Ci0JaWJvb2wJCW1vdmVkOwogCWludAkJY21w OwogCXVsaW50CQllcnI7CiAJdWxpbnQJCWk7CkBAIC0xMzM2LDEzICsxMzM1LDEzIEBAIHJ1bl9h Z2FpbjoKIAogCS8qIFNjYW4gaW5kZXggcmVjb3JkcyBhbmQgY2hlY2sgaWYgdGhlcmUgaXMgYSBt YXRjaGluZyByZWNvcmQgKi8KIAotCWZvciAoOzspIHsKKwlkbyB7CiAJCWNvbnN0IHJlY190KgkJ cmVjID0gYnRyX3BjdXJfZ2V0X3JlYygmcGN1cik7CiAJCWNvbnN0IGJ1Zl9ibG9ja190KglibG9j ayA9IGJ0cl9wY3VyX2dldF9ibG9jaygmcGN1cik7CiAKIAkJaWYgKHBhZ2VfcmVjX2lzX2luZmlt dW0ocmVjKSkgewogCi0JCQlnb3RvIG5leHRfcmVjOworCQkJY29udGludWU7CiAJCX0KIAogCQlv ZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgY2hlY2tfaW5kZXgsCkBAIC0xMzUzLDEyICsx MzUyLDEzIEBAIHJ1bl9hZ2FpbjoKIAkJCWVyciA9IHJvd19pbnNfc2V0X3NoYXJlZF9yZWNfbG9j ayhMT0NLX09SRElOQVJZLCBibG9jaywKIAkJCQkJCQkgIHJlYywgY2hlY2tfaW5kZXgsCiAJCQkJ CQkJICBvZmZzZXRzLCB0aHIpOwotCQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0KLQkJCQli cmVhazsKKwkJCXN3aXRjaCAoZXJyKSB7CisJCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoK KwkJCWNhc2UgREJfU1VDQ0VTUzoKKwkJCQljb250aW51ZTsKKwkJCWRlZmF1bHQ6CisJCQkJZ290 byBlbmRfc2NhbjsKIAkJCX0KLQotCQkJZ290byBuZXh0X3JlYzsKIAkJfQogCiAJCWNtcCA9IGNt cF9kdHVwbGVfcmVjKGVudHJ5LCByZWMsIG9mZnNldHMpOwpAQCAtMTM2OSw5ICsxMzY5LDEyIEBA IHJ1bl9hZ2FpbjoKIAkJCQllcnIgPSByb3dfaW5zX3NldF9zaGFyZWRfcmVjX2xvY2soCiAJCQkJ CUxPQ0tfT1JESU5BUlksIGJsb2NrLAogCQkJCQlyZWMsIGNoZWNrX2luZGV4LCBvZmZzZXRzLCB0 aHIpOwotCQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCisJCQkJc3dpdGNoIChlcnIpIHsK KwkJCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCQljYXNlIERCX1NVQ0NFU1M6CiAJ CQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQkJCWdvdG8gZW5kX3NjYW47CiAJCQkJfQogCQkJ fSBlbHNlIHsKIAkJCQkvKiBGb3VuZCBhIG1hdGNoaW5nIHJlY29yZC4gTG9jayBvbmx5CkBAIC0x MzgyLDE1ICsxMzg1LDE4IEBAIHJ1bl9hZ2FpbjoKIAkJCQkJTE9DS19SRUNfTk9UX0dBUCwgYmxv Y2ssCiAJCQkJCXJlYywgY2hlY2tfaW5kZXgsIG9mZnNldHMsIHRocik7CiAKLQkJCQlpZiAoZXJy ICE9IERCX1NVQ0NFU1MpIHsKLQorCQkJCXN3aXRjaCAoZXJyKSB7CisJCQkJY2FzZSBEQl9TVUND RVNTX0xPQ0tFRF9SRUM6CisJCQkJY2FzZSBEQl9TVUNDRVNTOgogCQkJCQlicmVhazsKKwkJCQlk ZWZhdWx0OgorCQkJCQlnb3RvIGVuZF9zY2FuOwogCQkJCX0KIAogCQkJCWlmIChjaGVja19yZWYp IHsKIAkJCQkJZXJyID0gREJfU1VDQ0VTUzsKIAotCQkJCQlicmVhazsKKwkJCQkJZ290byBlbmRf c2NhbjsKIAkJCQl9IGVsc2UgaWYgKGZvcmVpZ24tPnR5cGUgIT0gMCkgewogCQkJCQkvKiBUaGVy ZSBpcyBhbiBPTiBVUERBVEUgb3IgT04gREVMRVRFCiAJCQkJCWNvbmRpdGlvbjogY2hlY2sgdGhl bSBpbiBhIHNlcGFyYXRlCkBAIC0xNDE2LDcgKzE0MjIsNyBAQCBydW5fYWdhaW46CiAJCQkJCQkJ ZXJyID0gREJfRk9SRUlHTl9EVVBMSUNBVEVfS0VZOwogCQkJCQkJfQogCi0JCQkJCQlicmVhazsK KwkJCQkJCWdvdG8gZW5kX3NjYW47CiAJCQkJCX0KIAogCQkJCQkvKiByb3dfaW5zX2ZvcmVpZ25f Y2hlY2tfb25fY29uc3RyYWludApAQCAtMTQyOSw0OSArMTQzNSw0MSBAQCBydW5fYWdhaW46CiAJ CQkJCQl0aHIsIGZvcmVpZ24sIHJlYywgZW50cnkpOwogCiAJCQkJCWVyciA9IERCX1JPV19JU19S RUZFUkVOQ0VEOwotCQkJCQlicmVhazsKKwkJCQkJZ290byBlbmRfc2NhbjsKIAkJCQl9CiAJCQl9 Ci0JCX0KKwkJfSBlbHNlIHsKKwkJCXV0X2EoY21wIDwgMCk7CiAKLQkJaWYgKGNtcCA8IDApIHsK IAkJCWVyciA9IHJvd19pbnNfc2V0X3NoYXJlZF9yZWNfbG9jaygKIAkJCQlMT0NLX0dBUCwgYmxv Y2ssCiAJCQkJcmVjLCBjaGVja19pbmRleCwgb2Zmc2V0cywgdGhyKTsKLQkJCWlmIChlcnIgIT0g REJfU1VDQ0VTUykgewotCi0JCQkJYnJlYWs7Ci0JCQl9CiAKLQkJCWlmIChjaGVja19yZWYpIHsK LQkJCQllcnIgPSBEQl9OT19SRUZFUkVOQ0VEX1JPVzsKLQkJCQlyb3dfaW5zX2ZvcmVpZ25fcmVw b3J0X2FkZF9lcnIoCi0JCQkJCXRyeCwgZm9yZWlnbiwgcmVjLCBlbnRyeSk7Ci0JCQl9IGVsc2Ug ewotCQkJCWVyciA9IERCX1NVQ0NFU1M7CisJCQlzd2l0Y2ggKGVycikgeworCQkJY2FzZSBEQl9T VUNDRVNTX0xPQ0tFRF9SRUM6CisJCQljYXNlIERCX1NVQ0NFU1M6CisJCQkJaWYgKGNoZWNrX3Jl ZikgeworCQkJCQllcnIgPSBEQl9OT19SRUZFUkVOQ0VEX1JPVzsKKwkJCQkJcm93X2luc19mb3Jl aWduX3JlcG9ydF9hZGRfZXJyKAorCQkJCQkJdHJ4LCBmb3JlaWduLCByZWMsIGVudHJ5KTsKKwkJ CQl9IGVsc2UgeworCQkJCQllcnIgPSBEQl9TVUNDRVNTOworCQkJCX0KIAkJCX0KIAotCQkJYnJl YWs7CisJCQlnb3RvIGVuZF9zY2FuOwogCQl9CisJfSB3aGlsZSAoYnRyX3BjdXJfbW92ZV90b19u ZXh0KCZwY3VyLCAmbXRyKSk7CiAKLQkJdXRfYShjbXAgPT0gMCk7Ci1uZXh0X3JlYzoKLQkJbW92 ZWQgPSBidHJfcGN1cl9tb3ZlX3RvX25leHQoJnBjdXIsICZtdHIpOwotCi0JCWlmICghbW92ZWQp IHsKLQkJCWlmIChjaGVja19yZWYpIHsKLQkJCQlyZWMgPSBidHJfcGN1cl9nZXRfcmVjKCZwY3Vy KTsKLQkJCQlyb3dfaW5zX2ZvcmVpZ25fcmVwb3J0X2FkZF9lcnIoCi0JCQkJCXRyeCwgZm9yZWln biwgcmVjLCBlbnRyeSk7Ci0JCQkJZXJyID0gREJfTk9fUkVGRVJFTkNFRF9ST1c7Ci0JCQl9IGVs c2UgewotCQkJCWVyciA9IERCX1NVQ0NFU1M7Ci0JCQl9Ci0KLQkJCWJyZWFrOwotCQl9CisJaWYg KGNoZWNrX3JlZikgeworCQlyb3dfaW5zX2ZvcmVpZ25fcmVwb3J0X2FkZF9lcnIoCisJCQl0cngs IGZvcmVpZ24sIGJ0cl9wY3VyX2dldF9yZWMoJnBjdXIpLCBlbnRyeSk7CisJCWVyciA9IERCX05P X1JFRkVSRU5DRURfUk9XOworCX0gZWxzZSB7CisJCWVyciA9IERCX1NVQ0NFU1M7CiAJfQogCitl bmRfc2NhbjoKIAlidHJfcGN1cl9jbG9zZSgmcGN1cik7CiAKIAltdHJfY29tbWl0KCZtdHIpOwpA QCAtMTcxOSw5ICsxNzE3LDEzIEBAIHJvd19pbnNfc2Nhbl9zZWNfaW5kZXhfZm9yX2R1cGxpY2F0 ZSgKIAkJCQlyZWMsIGluZGV4LCBvZmZzZXRzLCB0aHIpOwogCQl9CiAKLQkJaWYgKGVyciAhPSBE Ql9TVUNDRVNTKSB7Ci0KKwkJc3dpdGNoIChlcnIpIHsKKwkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tF RF9SRUM6CisJCQllcnIgPSBEQl9TVUNDRVNTOworCQljYXNlIERCX1NVQ0NFU1M6CiAJCQlicmVh azsKKwkJZGVmYXVsdDoKKwkJCWdvdG8gZW5kX3NjYW47CiAJCX0KIAogCQlpZiAocGFnZV9yZWNf aXNfc3VwcmVtdW0ocmVjKSkgewpAQCAtMTczOCwxNyArMTc0MCwxNSBAQCByb3dfaW5zX3NjYW5f c2VjX2luZGV4X2Zvcl9kdXBsaWNhdGUoCiAKIAkJCQl0aHJfZ2V0X3RyeCh0aHIpLT5lcnJvcl9p bmZvID0gaW5kZXg7CiAKLQkJCQlicmVhazsKKwkJCQlnb3RvIGVuZF9zY2FuOwogCQkJfQorCQl9 IGVsc2UgeworCQkJdXRfYShjbXAgPCAwKTsKKwkJCWdvdG8gZW5kX3NjYW47CiAJCX0KLQotCQlp ZiAoY21wIDwgMCkgewotCQkJYnJlYWs7Ci0JCX0KLQotCQl1dF9hKGNtcCA9PSAwKTsKIAl9IHdo aWxlIChidHJfcGN1cl9tb3ZlX3RvX25leHQoJnBjdXIsICZtdHIpKTsKIAorZW5kX3NjYW46CiAJ aWYgKFVOSVZfTElLRUxZX05VTEwoaGVhcCkpIHsKIAkJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAl9 CkBAIC0xODM3LDcgKzE4MzcsMTEgQEAgcm93X2luc19kdXBsaWNhdGVfZXJyb3JfaW5fY2x1c3Qo CiAJCQkJCWN1cnNvci0+aW5kZXgsIG9mZnNldHMsIHRocik7CiAJCQl9CiAKLQkJCWlmIChlcnIg IT0gREJfU1VDQ0VTUykgeworCQkJc3dpdGNoIChlcnIpIHsKKwkJCWNhc2UgREJfU1VDQ0VTU19M T0NLRURfUkVDOgorCQkJY2FzZSBEQl9TVUNDRVNTOgorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoK IAkJCQlnb3RvIGZ1bmNfZXhpdDsKIAkJCX0KIApAQCAtMTg3Nyw3ICsxODgxLDExIEBAIHJvd19p bnNfZHVwbGljYXRlX2Vycm9yX2luX2NsdXN0KAogCQkJCQlyZWMsIGN1cnNvci0+aW5kZXgsIG9m ZnNldHMsIHRocik7CiAJCQl9CiAKLQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgeworCQkJc3dp dGNoIChlcnIpIHsKKwkJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJY2FzZSBEQl9T VUNDRVNTOgorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKIAkJCQlnb3RvIGZ1bmNfZXhpdDsKIAkJ CX0KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MG15 c3FsLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MG15c3FsLmMJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDExMzU4MDItaGdwbGNwcjgwODl1cmE4Zwor KysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzBteXNxbC5jCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAzOTAzLTMzYnlpeHMzeGxxY3dzajAKQEAgLTE0MzAs MjcgKzE0MzAsMjYgQEAgcnVuX2FnYWluOgogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotVGhpcyBj YW4gb25seSBiZSB1c2VkIHdoZW4gc3J2X2xvY2tzX3Vuc2FmZV9mb3JfYmlubG9nIGlzIFRSVUUg b3IKLXRoaXMgc2Vzc2lvbiBpcyB1c2luZyBhIFJFQUQgQ09NTUlUVEVEIGlzb2xhdGlvbiBsZXZl bC4gQmVmb3JlCi1jYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2UgbXVzdCB1c2UgdHJ4X3Jlc2V0X25l d19yZWNfbG9ja19pbmZvKCkgYW5kCi10cnhfcmVnaXN0ZXJfbmV3X3JlY19sb2NrKCkgdG8gc3Rv cmUgdGhlIGluZm9ybWF0aW9uIHdoaWNoIG5ldyByZWNvcmQgbG9ja3MKLXJlYWxseSB3ZXJlIHNl dC4gVGhpcyBmdW5jdGlvbiByZW1vdmVzIGEgbmV3bHkgc2V0IGxvY2sgdW5kZXIgcHJlYnVpbHQt PnBjdXIsCi1hbmQgYWxzbyB1bmRlciBwcmVidWlsdC0+Y2x1c3RfcGN1ci4gQ3VycmVudGx5LCB0 aGlzIGlzIG9ubHkgdXNlZCBhbmQgdGVzdGVkCi1pbiB0aGUgY2FzZSBvZiBhbiBVUERBVEUgb3Ig YSBERUxFVEUgc3RhdGVtZW50LCB3aGVyZSB0aGUgcm93IGxvY2sgaXMgb2YgdGhlCi1MT0NLX1gg dHlwZS4KLVRodXMsIHRoaXMgaW1wbGVtZW50cyBhICdtaW5pLXJvbGxiYWNrJyB0aGF0IHJlbGVh c2VzIHRoZSBsYXRlc3QgcmVjb3JkCi1sb2NrcyB3ZSBzZXQuCi1AcmV0dXJuCWVycm9yIGNvZGUg b3IgREJfU1VDQ0VTUyAqLworVGhpcyBjYW4gb25seSBiZSB1c2VkIHdoZW4gc3J2X2xvY2tzX3Vu c2FmZV9mb3JfYmlubG9nIGlzIFRSVUUgb3IgdGhpcworc2Vzc2lvbiBpcyB1c2luZyBhIFJFQUQg Q09NTUlUVEVEIG9yIFJFQUQgVU5DT01NSVRURUQgaXNvbGF0aW9uIGxldmVsLgorQmVmb3JlIGNh bGxpbmcgdGhpcyBmdW5jdGlvbiByb3dfc2VhcmNoX2Zvcl9teXNxbCgpIG11c3QgaGF2ZQoraW5p dGlhbGl6ZWQgcHJlYnVpbHQtPm5ld19yZWNfbG9ja3MgdG8gc3RvcmUgdGhlIGluZm9ybWF0aW9u IHdoaWNoIG5ldworcmVjb3JkIGxvY2tzIHJlYWxseSB3ZXJlIHNldC4gVGhpcyBmdW5jdGlvbiBy ZW1vdmVzIGEgbmV3bHkgc2V0CitjbHVzdGVyZWQgaW5kZXggcmVjb3JkIGxvY2sgdW5kZXIgcHJl YnVpbHQtPnBjdXIgb3IKK3ByZWJ1aWx0LT5jbHVzdF9wY3VyLiAgVGh1cywgdGhpcyBpbXBsZW1l bnRzIGEgJ21pbmktcm9sbGJhY2snIHRoYXQKK3JlbGVhc2VzIHRoZSBsYXRlc3QgY2x1c3RlcmVk IGluZGV4IHJlY29yZCBsb2NrIHdlIHNldC4KK0ByZXR1cm4gZXJyb3IgY29kZSBvciBEQl9TVUND RVNTICovCiBVTklWX0lOVEVSTgogaW50CiByb3dfdW5sb2NrX2Zvcl9teXNxbCgKIC8qPT09PT09 PT09PT09PT09PT0qLwotCXJvd19wcmVidWlsdF90KglwcmVidWlsdCwJLyohPCBpbjogcHJlYnVp bHQgc3RydWN0IGluIE15U1FMCisJcm93X3ByZWJ1aWx0X3QqCXByZWJ1aWx0LAkvKiE8IGluL291 dDogcHJlYnVpbHQgc3RydWN0IGluIE15U1FMCiAJCQkJCWhhbmRsZSAqLwotCWlib29sCQloYXNf bGF0Y2hlc19vbl9yZWNzKS8qITwgVFJVRSBpZiBjYWxsZWQgc28gdGhhdCB3ZSBoYXZlCi0JCQkJ CXRoZSBsYXRjaGVzIG9uIHRoZSByZWNvcmRzIHVuZGVyIHBjdXIKLQkJCQkJYW5kIGNsdXN0X3Bj dXIsIGFuZCB3ZSBkbyBub3QgbmVlZCB0bwotCQkJCQlyZXBvc2l0aW9uIHRoZSBjdXJzb3JzLiAq LworCWlib29sCQloYXNfbGF0Y2hlc19vbl9yZWNzKS8qITwgaW46IFRSVUUgaWYgY2FsbGVkIHNv CisJCQkJCXRoYXQgd2UgaGF2ZSB0aGUgbGF0Y2hlcyBvbgorCQkJCQl0aGUgcmVjb3JkcyB1bmRl ciBwY3VyIGFuZAorCQkJCQljbHVzdF9wY3VyLCBhbmQgd2UgZG8gbm90IG5lZWQKKwkJCQkJdG8g cmVwb3NpdGlvbiB0aGUgY3Vyc29ycy4gKi8KIHsKIAlidHJfcGN1cl90KglwY3VyCQk9IHByZWJ1 aWx0LT5wY3VyOwogCWJ0cl9wY3VyX3QqCWNsdXN0X3BjdXIJPSBwcmVidWlsdC0+Y2x1c3RfcGN1 cjsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzBzZWwu YycKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwc2VsLmMJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDExMzU4MDItaGdwbGNwcjgwODl1cmE4ZworKysgYi9z dG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzBzZWwuYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDEwMDYwMjEwMzkwMy0zM2J5aXhzM3hscWN3c2owCkBAIC04NjMsOCArODYzLDE0 IEBAIHJvd19zZWxfZ2V0X2NsdXN0X3JlYygKIAkJCWNsdXN0X3JlYywgaW5kZXgsIG9mZnNldHMs CiAJCQlub2RlLT5yb3dfbG9ja19tb2RlLCBsb2NrX3R5cGUsIHRocik7CiAKLQkJaWYgKGVyciAh PSBEQl9TVUNDRVNTKSB7Ci0KKwkJc3dpdGNoIChlcnIpIHsKKwkJY2FzZSBEQl9TVUNDRVNTOgor CQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCS8qIERlY2xhcmUgdGhlIHZhcmlhYmxl IHVuaW5pdGlhbGl6ZWQgaW4gVmFsZ3JpbmQuCisJCQlJdCBzaG91bGQgYmUgc2V0IHRvIERCX1NV Q0NFU1MgYXQgZnVuY19leGl0LiAqLworCQkJVU5JVl9NRU1fSU5WQUxJRCgmZXJyLCBzaXplb2Yg ZXJyKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgogCQkJZ290byBlcnJfZXhpdDsKIAkJfQogCX0g ZWxzZSB7CkBAIC05MzQsOSArOTQwLDkgQEAgZXJyX2V4aXQ6CiAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CiBTZXRzIGEgbG9jayBvbiBhIHJlY29yZC4KLUByZXR1cm4JREJfU1VDQ0VTUyBvciBlcnJvciBj b2RlICovCitAcmV0dXJuCURCX1NVQ0NFU1MsIERCX1NVQ0NFU1NfTE9DS0VEX1JFQywgb3IgZXJy b3IgY29kZSAqLwogVU5JVl9JTkxJTkUKLXVsaW50CitlbnVtIGRiX2Vycgogc2VsX3NldF9yZWNf bG9jaygKIC8qPT09PT09PT09PT09PSovCiAJY29uc3QgYnVmX2Jsb2NrX3QqCWJsb2NrLAkvKiE8 IGluOiBidWZmZXIgYmxvY2sgb2YgcmVjICovCkBAIC05NDgsOCArOTU0LDggQEAgc2VsX3NldF9y ZWNfbG9jaygKIAkJCQkJTE9DX1JFQ19OT1RfR0FQICovCiAJcXVlX3Rocl90KgkJdGhyKQkvKiE8 IGluOiBxdWVyeSB0aHJlYWQgKi8KIHsKLQl0cnhfdCoJdHJ4OwotCXVsaW50CWVycjsKKwl0cnhf dCoJCXRyeDsKKwllbnVtIGRiX2VycgllcnI7CiAKIAl0cnggPSB0aHJfZ2V0X3RyeCh0aHIpOwog CkBAIC0xNDgyLDExICsxNDg4LDE1IEBAIHJlY19sb29wOgogCQkJCQkgICAgICAgbm9kZS0+cm93 X2xvY2tfbW9kZSwKIAkJCQkJICAgICAgIGxvY2tfdHlwZSwgdGhyKTsKIAotCQkJaWYgKGVyciAh PSBEQl9TVUNDRVNTKSB7CisJCQlzd2l0Y2ggKGVycikgeworCQkJY2FzZSBEQl9TVUNDRVNTX0xP Q0tFRF9SRUM6CisJCQkJZXJyID0gREJfU1VDQ0VTUzsKKwkJCWNhc2UgREJfU1VDQ0VTUzoKKwkJ CQlicmVhazsKKwkJCWRlZmF1bHQ6CiAJCQkJLyogTm90ZSB0aGF0IGluIHRoaXMgY2FzZSB3ZSB3 aWxsIHN0b3JlIGluIHBjdXIKIAkJCQl0aGUgUFJFREVDRVNTT1Igb2YgdGhlIHJlY29yZCB3ZSBh cmUgd2FpdGluZwogCQkJCXRoZSBsb2NrIGZvciAqLwotCiAJCQkJZ290byBsb2NrX3dhaXRfb3Jf ZXJyb3I7CiAJCQl9CiAJCX0KQEAgLTE1MzgsOCArMTU0OCwxMiBAQCBza2lwX2xvY2s6CiAJCQkJ ICAgICAgIHJlYywgaW5kZXgsIG9mZnNldHMsCiAJCQkJICAgICAgIG5vZGUtPnJvd19sb2NrX21v ZGUsIGxvY2tfdHlwZSwgdGhyKTsKIAotCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKLQorCQlz d2l0Y2ggKGVycikgeworCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCWVyciA9IERC X1NVQ0NFU1M7CisJCWNhc2UgREJfU1VDQ0VTUzoKKwkJCWJyZWFrOworCQlkZWZhdWx0OgogCQkJ Z290byBsb2NrX3dhaXRfb3JfZXJyb3I7CiAJCX0KIAl9CkBAIC0yODAxLDkgKzI4MTUsOSBAQCBy b3dfc2VsX2J1aWxkX3ByZXZfdmVyc19mb3JfbXlzcWwoCiBSZXRyaWV2ZXMgdGhlIGNsdXN0ZXJl ZCBpbmRleCByZWNvcmQgY29ycmVzcG9uZGluZyB0byBhIHJlY29yZCBpbiBhCiBub24tY2x1c3Rl cmVkIGluZGV4LiBEb2VzIHRoZSBuZWNlc3NhcnkgbG9ja2luZy4gVXNlZCBpbiB0aGUgTXlTUUwK IGludGVyZmFjZS4KLUByZXR1cm4JREJfU1VDQ0VTUyBvciBlcnJvciBjb2RlICovCitAcmV0dXJu CURCX1NVQ0NFU1MsIERCX1NVQ0NFU1NfTE9DS0VEX1JFQywgb3IgZXJyb3IgY29kZSAqLwogc3Rh dGljCi11bGludAorZW51bSBkYl9lcnIKIHJvd19zZWxfZ2V0X2NsdXN0X3JlY19mb3JfbXlzcWwo CiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXJvd19wcmVidWlsdF90KglwcmVi dWlsdCwvKiE8IGluOiBwcmVidWlsdCBzdHJ1Y3QgaW4gdGhlIGhhbmRsZSAqLwpAQCAtMjgzMCw3 ICsyODQ0LDcgQEAgcm93X3NlbF9nZXRfY2x1c3RfcmVjX2Zvcl9teXNxbCgKIAlkaWN0X2luZGV4 X3QqCWNsdXN0X2luZGV4OwogCWNvbnN0IHJlY190KgljbHVzdF9yZWM7CiAJcmVjX3QqCQlvbGRf dmVyczsKLQl1bGludAkJZXJyOworCWVudW0gZGJfZXJyCWVycjsKIAl0cnhfdCoJCXRyeDsKIAog CSpvdXRfcmVjID0gTlVMTDsKQEAgLTI4ODksNiArMjkwMyw3IEBAIHJvd19zZWxfZ2V0X2NsdXN0 X3JlY19mb3JfbXlzcWwoCiAKIAkJY2x1c3RfcmVjID0gTlVMTDsKIAorCQllcnIgPSBEQl9TVUND RVNTOwogCQlnb3RvIGZ1bmNfZXhpdDsKIAl9CiAKQEAgLTI5MDQsOCArMjkxOSwxMSBAQCByb3df c2VsX2dldF9jbHVzdF9yZWNfZm9yX215c3FsKAogCQkJMCwgYnRyX3BjdXJfZ2V0X2Jsb2NrKHBy ZWJ1aWx0LT5jbHVzdF9wY3VyKSwKIAkJCWNsdXN0X3JlYywgY2x1c3RfaW5kZXgsICpvZmZzZXRz LAogCQkJcHJlYnVpbHQtPnNlbGVjdF9sb2NrX3R5cGUsIExPQ0tfUkVDX05PVF9HQVAsIHRocik7 Ci0JCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCisJCXN3aXRjaCAoZXJyKSB7CisJCWNhc2Ug REJfU1VDQ0VTUzoKKwkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCQlicmVhazsKKwkJ ZGVmYXVsdDoKIAkJCWdvdG8gZXJyX2V4aXQ7CiAJCX0KIAl9IGVsc2UgewpAQCAtMjk2NSw2ICsy OTgzLDggQEAgcm93X3NlbF9nZXRfY2x1c3RfcmVjX2Zvcl9teXNxbCgKIAkJCQkgICAgIHJlYywg c2VjX2luZGV4LCBjbHVzdF9yZWMsIGNsdXN0X2luZGV4KSk7CiAjZW5kaWYKIAkJfQorCisJCWVy ciA9IERCX1NVQ0NFU1M7CiAJfQogCiBmdW5jX2V4aXQ6CkBAIC0yOTc3LDcgKzI5OTcsNiBAQCBm dW5jX2V4aXQ6CiAJCWJ0cl9wY3VyX3N0b3JlX3Bvc2l0aW9uKHByZWJ1aWx0LT5jbHVzdF9wY3Vy LCBtdHIpOwogCX0KIAotCWVyciA9IERCX1NVQ0NFU1M7CiBlcnJfZXhpdDoKIAlyZXR1cm4oZXJy KTsKIH0KQEAgLTM3MDIsOCArMzcyMSwxMiBAQCBzaG9ydGN1dF9mYWlsc190b29fYmlnX3JlYzoK IAkJCQkJICAgICAgIHByZWJ1aWx0LT5zZWxlY3RfbG9ja190eXBlLAogCQkJCQkgICAgICAgTE9D S19HQVAsIHRocik7CiAKLQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCisJCQlzd2l0Y2gg KGVycikgeworCQkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCQkJZXJyID0gREJfU1VD Q0VTUzsKKwkJCWNhc2UgREJfU1VDQ0VTUzoKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CiAJCQkJ Z290byBsb2NrX3dhaXRfb3JfZXJyb3I7CiAJCQl9CiAJCX0KQEAgLTM4MDEsOCArMzgyNCwxMiBA QCByZWNfbG9vcDoKIAkJCQkJICAgICAgIHByZWJ1aWx0LT5zZWxlY3RfbG9ja190eXBlLAogCQkJ CQkgICAgICAgTE9DS19PUkRJTkFSWSwgdGhyKTsKIAotCQkJaWYgKGVyciAhPSBEQl9TVUNDRVNT KSB7Ci0KKwkJCXN3aXRjaCAoZXJyKSB7CisJCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoK KwkJCQllcnIgPSBEQl9TVUNDRVNTOworCQkJY2FzZSBEQl9TVUNDRVNTOgorCQkJCWJyZWFrOwor CQkJZGVmYXVsdDoKIAkJCQlnb3RvIGxvY2tfd2FpdF9vcl9lcnJvcjsKIAkJCX0KIAkJfQpAQCAt MzkzMiw4ICszOTU5LDExIEBAIHdyb25nX29mZnM6CiAJCQkJCXByZWJ1aWx0LT5zZWxlY3RfbG9j a190eXBlLCBMT0NLX0dBUCwKIAkJCQkJdGhyKTsKIAotCQkJCWlmIChlcnIgIT0gREJfU1VDQ0VT UykgewotCisJCQkJc3dpdGNoIChlcnIpIHsKKwkJCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JF QzoKKwkJCQljYXNlIERCX1NVQ0NFU1M6CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CiAJCQkJ CWdvdG8gbG9ja193YWl0X29yX2Vycm9yOwogCQkJCX0KIAkJCX0KQEAgLTM5NjgsOCArMzk5OCwx MSBAQCB3cm9uZ19vZmZzOgogCQkJCQlwcmVidWlsdC0+c2VsZWN0X2xvY2tfdHlwZSwgTE9DS19H QVAsCiAJCQkJCXRocik7CiAKLQkJCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKLQorCQkJCXN3 aXRjaCAoZXJyKSB7CisJCQkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCQkJY2FzZSBE Ql9TVUNDRVNTOgorCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgogCQkJCQlnb3RvIGxvY2tfd2Fp dF9vcl9lcnJvcjsKIAkJCQl9CiAJCQl9CkBAIC00MDM5LDE1ICs0MDcyLDIxIEBAIG5vX2dhcF9s b2NrOgogCiAJCXN3aXRjaCAoZXJyKSB7CiAJCQljb25zdCByZWNfdCoJb2xkX3ZlcnM7Ci0JCWNh c2UgREJfU1VDQ0VTUzoKKwkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CiAJCQlpZiAoc3J2 X2xvY2tzX3Vuc2FmZV9mb3JfYmlubG9nCi0JCQkgICAgfHwgdHJ4LT5pc29sYXRpb25fbGV2ZWwg PD0gVFJYX0lTT19SRUFEX0NPTU1JVFRFRCkgeworCQkJICAgIHx8IHRyeC0+aXNvbGF0aW9uX2xl dmVsCisJCQkgICAgPD0gVFJYX0lTT19SRUFEX0NPTU1JVFRFRCkgewogCQkJCS8qIE5vdGUgdGhh dCBhIHJlY29yZCBvZgogCQkJCXByZWJ1aWx0LT5pbmRleCB3YXMgbG9ja2VkLiAqLwogCQkJCXBy ZWJ1aWx0LT5uZXdfcmVjX2xvY2tzID0gMTsKIAkJCX0KKwkJCWVyciA9IERCX1NVQ0NFU1M7CisJ CWNhc2UgREJfU1VDQ0VTUzoKIAkJCWJyZWFrOwogCQljYXNlIERCX0xPQ0tfV0FJVDoKKwkJCS8q IE5ldmVyIHVubG9jayByb3dzIHRoYXQgd2VyZSBwYXJ0IG9mIGEgY29uZmxpY3QuICovCisJCQlw cmVidWlsdC0+bmV3X3JlY19sb2NrcyA9IDA7CisKIAkJCWlmIChVTklWX0xJS0VMWShwcmVidWls dC0+cm93X3JlYWRfdHlwZQogCQkJCQkhPSBST1dfUkVBRF9UUllfU0VNSV9DT05TSVNURU5UKQog CQkJICAgIHx8IHVuaXF1ZV9zZWFyY2gKQEAgLTQwNzcsNyArNDExNiw2IEBAIG5vX2dhcF9sb2Nr OgogCQkJaWYgKFVOSVZfTElLRUxZKHRyeC0+d2FpdF9sb2NrICE9IE5VTEwpKSB7CiAJCQkJbG9j a19jYW5jZWxfd2FpdGluZ19hbmRfcmVsZWFzZSgKIAkJCQkJdHJ4LT53YWl0X2xvY2spOwotCQkJ CXByZWJ1aWx0LT5uZXdfcmVjX2xvY2tzID0gMDsKIAkJCX0gZWxzZSB7CiAJCQkJbXV0ZXhfZXhp dCgma2VybmVsX211dGV4KTsKIApAQCAtNDA4OSw5ICs0MTI3LDYgQEAgbm9fZ2FwX2xvY2s6CiAJ CQkJCQkJICBVTElOVF9VTkRFRklORUQsCiAJCQkJCQkJICAmaGVhcCk7CiAJCQkJZXJyID0gREJf U1VDQ0VTUzsKLQkJCQkvKiBOb3RlIHRoYXQgYSByZWNvcmQgb2YKLQkJCQlwcmVidWlsdC0+aW5k ZXggd2FzIGxvY2tlZC4gKi8KLQkJCQlwcmVidWlsdC0+bmV3X3JlY19sb2NrcyA9IDE7CiAJCQkJ YnJlYWs7CiAJCQl9CiAJCQltdXRleF9leGl0KCZrZXJuZWxfbXV0ZXgpOwpAQCAtNDIyOCwyNyAr NDI2MywzMCBAQCByZXF1aXJlc19jbHVzdF9yZWM6CiAJCWVyciA9IHJvd19zZWxfZ2V0X2NsdXN0 X3JlY19mb3JfbXlzcWwocHJlYnVpbHQsIGluZGV4LCByZWMsCiAJCQkJCQkgICAgICB0aHIsICZj bHVzdF9yZWMsCiAJCQkJCQkgICAgICAmb2Zmc2V0cywgJmhlYXAsICZtdHIpOwotCQlpZiAoZXJy ICE9IERCX1NVQ0NFU1MpIHsKKwkJc3dpdGNoIChlcnIpIHsKKwkJY2FzZSBEQl9TVUNDRVNTOgor CQkJaWYgKGNsdXN0X3JlYyA9PSBOVUxMKSB7CisJCQkJLyogVGhlIHJlY29yZCBkaWQgbm90IGV4 aXN0IGluIHRoZSByZWFkIHZpZXcgKi8KKwkJCQl1dF9hZChwcmVidWlsdC0+c2VsZWN0X2xvY2tf dHlwZSA9PSBMT0NLX05PTkUpOwogCisJCQkJZ290byBuZXh0X3JlYzsKKwkJCX0KKwkJCWJyZWFr OworCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCXV0X2EoY2x1c3RfcmVjICE9IE5V TEwpOworCQkJaWYgKHNydl9sb2Nrc191bnNhZmVfZm9yX2JpbmxvZworCQkJICAgICB8fCB0cngt Pmlzb2xhdGlvbl9sZXZlbAorCQkJICAgIDw9IFRSWF9JU09fUkVBRF9DT01NSVRURUQpIHsKKwkJ CQkvKiBOb3RlIHRoYXQgdGhlIGNsdXN0ZXJlZCBpbmRleCByZWNvcmQKKwkJCQl3YXMgbG9ja2Vk LiAqLworCQkJCXByZWJ1aWx0LT5uZXdfcmVjX2xvY2tzID0gMjsKKwkJCX0KKwkJCWVyciA9IERC X1NVQ0NFU1M7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKIAkJCWdvdG8gbG9ja193YWl0X29yX2Vy cm9yOwogCQl9CiAKLQkJaWYgKGNsdXN0X3JlYyA9PSBOVUxMKSB7Ci0JCQkvKiBUaGUgcmVjb3Jk IGRpZCBub3QgZXhpc3QgaW4gdGhlIHJlYWQgdmlldyAqLwotCQkJdXRfYWQocHJlYnVpbHQtPnNl bGVjdF9sb2NrX3R5cGUgPT0gTE9DS19OT05FKTsKLQotCQkJZ290byBuZXh0X3JlYzsKLQkJfQot Ci0JCWlmICgoc3J2X2xvY2tzX3Vuc2FmZV9mb3JfYmlubG9nCi0JCSAgICAgfHwgdHJ4LT5pc29s YXRpb25fbGV2ZWwgPD0gVFJYX0lTT19SRUFEX0NPTU1JVFRFRCkKLQkJICAgICYmIHByZWJ1aWx0 LT5zZWxlY3RfbG9ja190eXBlICE9IExPQ0tfTk9ORSkgewotCQkJLyogTm90ZSB0aGF0IGJvdGgg dGhlIHNlY29uZGFyeSBpbmRleCByZWNvcmQKLQkJCWFuZCB0aGUgY2x1c3RlcmVkIGluZGV4IHJl Y29yZCB3ZXJlIGxvY2tlZC4gKi8KLQkJCXV0X2FkKHByZWJ1aWx0LT5uZXdfcmVjX2xvY2tzID09 IDEpOwotCQkJcHJlYnVpbHQtPm5ld19yZWNfbG9ja3MgPSAyOwotCQl9Ci0KIAkJaWYgKFVOSVZf VU5MSUtFTFkocmVjX2dldF9kZWxldGVkX2ZsYWcoY2x1c3RfcmVjLCBjb21wKSkpIHsKIAogCQkJ LyogVGhlIHJlY29yZCBpcyBkZWxldGUgbWFya2VkOiB3ZSBjYW4gc2tpcCBpdCAqLwoK --===============1320286770== 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.1-innodb/ # testament_sha1: 9d8bf8dc61e4ab42fb62b503b9111a402efe6889 # timestamp: 2010-06-02 13:46:41 +0300 # base_revision_id: marko.makela@stripped\ # hgplcpr8089ura8g # # Begin bundle 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 KVCw/wFYVh/xdyRThQkBf8MEYA== --===============1320286770==--