From: marko.makela Date: March 29 2012 11:29am Subject: bzr push into mysql-trunk branch (marko.makela:3871 to 3875) WL#5526 WL#5534 List-Archive: http://lists.mysql.com/commits/143354 Message-Id: <201203291130.q2TBU5Qp023474@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM4NzUgTWFya28gTcOka2Vsw6QJMjAxMi0wMy0yOQogICAgICBSZW1vdmUgdW5uZWNlc3Nhcnkg c3RlcHMgZnJvbSBpbm5vZGIuaW5ub2RiLCBub3cgdGhhdCBXTCM1NTM0L1dMIzU1MjYKICAgICAg YWxsb3dzIGluLXBsYWNlIEFMVEVSIFRBQkxFIERST1AgSU5ERVgsIEFERCBJTkRFWCBvZiB0aGUg c2FtZSBpbmRleC4KCiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIv ci9pbm5vZGIucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiLnRl c3QKIDM4NzQgTWFya28gTcOka2Vsw6QJMjAxMi0wMy0yOQogICAgICBSZW1vdmUgdW51c2VkIGZ1 bmN0aW9uIGRpY3RfaW5kZXhfZ2V0X29uX2lkX2xvdygpLgoKICAgIG1vZGlmaWVkOgogICAgICBz dG9yYWdlL2lubm9iYXNlL2RpY3QvZGljdDBkaWN0LmNjCiAzODczIE1hcmtvIE3DpGtlbMOkCTIw MTItMDMtMjkKICAgICAgTm9uLWZ1bmN0aW9uYWwgY2hhbmdlOiBBZGQgc29tZSBHQ0MgZnVuY3Rp b24gYXR0cmlidXRlcy4KCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL2RhdGEwZGF0YS5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kYXRhMGRhdGEu aWMKIDM4NzIgTWFya28gTcOka2Vsw6QJMjAxMi0wMy0yOQogICAgICBCdWcjMTM4NjY1MzIgUkVD T1JEIE5PVCBGT1VORCBPUiBOT1QgREVMRVRFLU1BUktFRCBBRlRFUiBDUkVBVElORyBJTkRFWCBP TkxJTkUKICAgICAgCiAgICAgIEluIG9ubGluZSBpbmRleCBjcmVhdGlvbiwgd2hlbiBzY2Fubmlu ZyB0aGUgY2x1c3RlcmVkIGluZGV4LCB3ZSBtdXN0CiAgICAgIGNvcHkgZGVsZXRlLW1hcmtlZCBy ZWNvcmRzIHdob3NlIHRyYW5zYWN0aW9ucyBhcmUgc3RpbGwKICAgICAgYWN0aXZlLiBPdGhlcndp c2UsIHByb2JsZW1zIGNvdWxkIG9jY3VyIHdoZW4gYW4gZXJyb3Igb2NjdXJzIGR1cmluZwogICAg ICB0aGUgYXR0ZW1wdCB0byBVUERBVEUgYSBQUklNQVJZIEtFWS4KICAgICAgCiAgICAgIGlubm9k Yi1pbmRleC1vbmxpbmUtZGVsZXRlLnRlc3Q6IFRyaWdnZXIgYSBkdXBsaWNhdGUga2V5IGVycm9y IGluIGFuCiAgICAgIHVwZGF0ZSBvZiBhIHByaW1hcnkga2V5IHdoaWxlIGEgc2Vjb25kYXJ5IGlu ZGV4IGlzIGJlaW5nIGNyZWF0ZWQKICAgICAgb25saW5lLgogICAgICAKICAgICAgcm93X3VwZGF0 ZV9mb3JfbXlzcWwoKTogQWRkIERFQlVHX1NZTkMgcm93X3VwZGF0ZV9mb3JfbXlzcWxfZXJyb3Iu CiAgICAgIAogICAgICBoYV9pbm5vYmFzZTo6aW5wbGFjZV9hbHRlcl90YWJsZSgpOiBBZGQgREVC VUdfU1lOQwogICAgICBpbm5vZGJfYWZ0ZXJfaW5wbGFjZV9hbHRlcl90YWJsZS4KICAgICAgCiAg ICAgIHJvd19tZXJnZV9yZWFkX2NsdXN0ZXJlZF9pbmRleCgpOiBXaGVuIGNyZWF0aW5nIGFuIGlu ZGV4IG9ubGluZSwgY29weQogICAgICBkZWxldGUtbWFya2VkIHJlY29yZHMgdGhhdCBhcmUgaW1w bGljaXRseSBsb2NrZWQgYnkgYW4gYWN0aXZlCiAgICAgIHRyYW5zYWN0aW9uLgogICAgICAKICAg ICAgQXMgcGFydCBvZiB0aGlzIGZpeCwgd2UgbXVzdCBwcmVzZXJ2ZSB0aGUgZGVsZXRlLW1hcmsg ZmxhZ3MgZHVyaW5nIHRoZQogICAgICBtZXJnZSBzb3J0LgogICAgICAKICAgICAgbXR1cGxlX3Q6 IE5ldyBzdHJ1Y3QsIGNvbXByaXNpbmcgZGVsX21hcmsgYW5kIGZpZWxkcy4gVGhlIHR1cGxlcyB1 c2VkCiAgICAgIHRvIGJlIHN0b3JlZCBhcyBhbiBhcnJheSBvZiBkZmllbGRfdCogaW4gcm93X21l cmdlX2J1Zl90LgogICAgICAKICAgICAgcm93X21lcmdlX3R1cGxlX3ByaW50KCksIHJvd19tZXJn ZV9idWZfZW5jb2RlKCksCiAgICAgIHJvd19tZXJnZV90dXBsZV9jbXAoKSwgcm93X21lcmdlX3R1 cGxlX3NvcnQoKTogT3BlcmF0ZSBvbiBtdHVwbGVfdAogICAgICBpbnN0ZWFkIG9mIGRmaWVsZF90 W10uCiAgICAgIAogICAgICBtcmVjX3Q6IFdoZW4gY3JlYXRpbmcgYW4gaW5kZXggb25saW5lLCBz dG9yZSB0aGUgZGVsZXRlLW1hcmsgZmxhZyBhcwogICAgICB0aGUgbGFzdCBiaXQgaW4gdGhlIG51 bGwtZmxhZyBiaXRtYXAgaW4gdGhlIHJlY29yZC4gVGhpcyByZXF1aXJlcyB0aGF0CiAgICAgIHdl IHJlcGxhY2UgaW5kZXgtPm5fbnVsbGFibGUgd2l0aCBhIHBhcmFtZXRlciBpbiB0aGUgbG93LWxl dmVsCiAgICAgIGZ1bmN0aW9ucy4KICAgICAgCiAgICAgIHJlY19nZXRfY29udmVydGVkX3NpemVf Y29tcF9wcmVmaXgoKSwKICAgICAgcmVjX2luaXRfb2Zmc2V0c19jb21wX29yZGluYXJ5KCksIHJl Y19jb252ZXJ0X2R0dXBsZV90b19yZWNfY29tcCgpLAogICAgICByZWNfZ2V0X2NvbnZlcnRlZF9z aXplX2NvbXBfcHJlZml4KCksIHJvd19tZXJnZV9yZWFkX3JlYygpLAogICAgICByb3dfbWVyZ2Vf YmxvY2tzKCksIHJvd19tZXJnZV9ibG9ja3NfY29weSgpLCByb3dfbWVyZ2UoKToKICAgICAgQWRk IHRoZSBwYXJhbWV0ZXIgbl9udWxsLCB3aGljaCBtdXN0IGJlIGF0IGxlYXN0IGluZGV4LT5uX251 bGxhYmxlLgogICAgICAKICAgICAgcm93X21lcmdlX2luc2VydF9pbmRleF90dXBsZXMoKTogQWRk IHRoZSBwYXJhbWV0ZXIgZGVsX21hcmtzLgogICAgICAKICAgICAgcmI6OTk1IGFwcHJvdmVkIGJ5 IEppbW15IFlhbmcKCiAgICBhZGRlZDoKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9p bm5vZGItaW5kZXgtb25saW5lLWRlbGV0ZS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9p bm5vZGIvdC9pbm5vZGItaW5kZXgtb25saW5lLWRlbGV0ZS50ZXN0CiAgICBtb2RpZmllZDoKICAg ICAgc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jYwogICAgICBzdG9yYWdlL2lubm9iYXNl L2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv cmVtMHJlYy5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVjLmljCiAgICAg IHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwbWVyZ2UuaAogICAgICBzdG9yYWdlL2lubm9i YXNlL3JlbS9yZW0wcmVjLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBmdHNvcnQu Y2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGxvZy5jYwogICAgICBzdG9yYWdlL2lu bm9iYXNlL3Jvdy9yb3cwbWVyZ2UuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MG15 c3FsLmNjCiAzODcxIFN1bm55IEJhaW5zCTIwMTItMDMtMjkgW21lcmdlXQogICAgICBOdWxsIG1l cmdlIGZyb20gbXlzcWwtNS41LiBUaGlzIGlzIGZvciBhIHBhdGNoIHRoYXQgd2FzIGJhY2twb3J0 ZWQgZnJvbSB0cnVuawogICAgICBieSBkaXJlY3RseSBwYXRjaGluZyBteXNxbC01LjUuCgo9PT0g YWRkZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGItaW5kZXgtb25saW5l LWRlbGV0ZS5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiLWlu ZGV4LW9ubGluZS1kZWxldGUucmVzdWx0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIv bXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGItaW5kZXgtb25saW5lLWRlbGV0ZS5yZXN1 bHQJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjAzMjkxMTI5MDAtcGNwNGNhNmRm NzE1MmJxYQpAQCAtMCwwICsxLDEyIEBACitDUkVBVEUgVEFCTEUgdCAoYSBJTlQgUFJJTUFSWSBL RVksIGIgSU5UIE5PVCBOVUxMKSBFTkdJTkU9SW5ub0RCOworSU5TRVJUIElOVE8gdCBWQUxVRVMo MSwyKSwoMiwzKTsKK1NFVCBERUJVR19TWU5DPSdhbHRlcl90YWJsZV9pbnBsYWNlX2FmdGVyX2xv Y2tfZG93bmdyYWRlIFNJR05BTCBkbyBXQUlUX0ZPUiBtJzsKK1NFVCBERUJVR19TWU5DPSdpbm5v ZGJfYWZ0ZXJfaW5wbGFjZV9hbHRlcl90YWJsZSBTSUdOQUwgc2Nhbm5lZCBXQUlUX0ZPUiBkb25l JzsKK0NSRUFURSBJTkRFWCB0YiBPTiB0KGIpOworU0VUIERFQlVHX1NZTkM9J25vdyBXQUlUX0ZP UiBkbyc7CitTRVQgREVCVUdfU1lOQz0ncm93X3VwZGF0ZV9mb3JfbXlzcWxfZXJyb3IgU0lHTkFM IG0gV0FJVF9GT1Igc2Nhbm5lZCc7CitVUERBVEUgdCBTRVQgYT0yIFdIRVJFIGE9MTsKK0VSUk9S IDIzMDAwOiBEdXBsaWNhdGUgZW50cnkgJzInIGZvciBrZXkgJ1BSSU1BUlknCitTRVQgREVCVUdf U1lOQz0nbm93IFNJR05BTCBkb25lJzsKK1NFVCBERUJVR19TWU5DPSdSRVNFVCc7CitEUk9QIFRB QkxFIHQ7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5v ZGIucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYi5yZXN1bHQJ cmV2aWQ6c3VubnkuYmFpbnNAb3JhY2xlLmNvbS0yMDEyMDMyOTA3MDQwMC10dmJ6cmhlNTdxcGI4 dmdyCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiLnJlc3VsdAlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDMyOTExMjkwMC1wY3A0Y2E2ZGY3MTUyYnFhCkBA IC02OTUsOCArNjk1LDYgQEAgc2VsZWN0IGNvdW50KCopIGZyb20gdDEgd2hlcmUgc2NhX3BpYyBp cwogY291bnQoKikKIDIKIGFsdGVyIHRhYmxlIHQxIGRyb3AgaW5kZXggc2NhX3BpYywgYWRkIGlu ZGV4IHNjYV9waWMgKGNhdF9jb2RlLCBzY2FfcGljKTsKLWFsdGVyIHRhYmxlIHQxIGRyb3AgaW5k ZXggc2NhX3BpYzsKLWFsdGVyIHRhYmxlIHQxIGFkZCBpbmRleCBzY2FfcGljIChjYXRfY29kZSwg c2NhX3BpYyk7CiBzZWxlY3QgY291bnQoKikgZnJvbSB0MSB3aGVyZSBzY2FfY29kZT0nUEQnIGFu ZCBzY2FfcGljIGlzIG51bGw7CiBjb3VudCgqKQogMQpAQCAtNzA0LDggKzcwMiw2IEBAIHNlbGVj dCBjb3VudCgqKSBmcm9tIHQxIHdoZXJlIGNhdF9jb2RlPScKIGNvdW50KCopCiAwCiBhbHRlciB0 YWJsZSB0MSBkcm9wIGluZGV4IHNjYV9waWMsIGFkZCBpbmRleCAoc2NhX3BpYywgY2F0X2NvZGUp OwotYWx0ZXIgdGFibGUgdDEgZHJvcCBpbmRleCBzY2FfcGljOwotYWx0ZXIgdGFibGUgdDEgYWRk IGluZGV4IChzY2FfcGljLCBjYXRfY29kZSk7CiBzZWxlY3QgY291bnQoKikgZnJvbSB0MSB3aGVy ZSBzY2FfY29kZT0nUEQnIGFuZCBzY2FfcGljIGlzIG51bGw7CiBjb3VudCgqKQogMQoKPT09IGFk ZGVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiLWluZGV4LW9ubGluZS1k ZWxldGUudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGItaW5kZXgt b25saW5lLWRlbGV0ZS50ZXN0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwt dGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGItaW5kZXgtb25saW5lLWRlbGV0ZS50ZXN0CXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwMzI5MTEyOTAwLXBjcDRjYTZkZjcxNTJicWEK QEAgLTAsMCArMSwzNSBAQAorLS1zb3VyY2UgaW5jbHVkZS9oYXZlX2lubm9kYi5pbmMKKy0tc291 cmNlIGluY2x1ZGUvaGF2ZV9kZWJ1Z19zeW5jLmluYworCisjIFNhdmUgdGhlIGluaXRpYWwgbnVt YmVyIG9mIGNvbmN1cnJlbnQgc2Vzc2lvbnMuCistLXNvdXJjZSBpbmNsdWRlL2NvdW50X3Nlc3Np b25zLmluYworCitjb25uZWN0IChjb24xLGxvY2FsaG9zdCxyb290LCwpOworCitjb25uZWN0aW9u IGRlZmF1bHQ7CisKK0NSRUFURSBUQUJMRSB0IChhIElOVCBQUklNQVJZIEtFWSwgYiBJTlQgTk9U IE5VTEwpIEVOR0lORT1Jbm5vREI7CitJTlNFUlQgSU5UTyB0IFZBTFVFUygxLDIpLCgyLDMpOwor CitTRVQgREVCVUdfU1lOQz0nYWx0ZXJfdGFibGVfaW5wbGFjZV9hZnRlcl9sb2NrX2Rvd25ncmFk ZSBTSUdOQUwgZG8gV0FJVF9GT1IgbSc7CitTRVQgREVCVUdfU1lOQz0naW5ub2RiX2FmdGVyX2lu cGxhY2VfYWx0ZXJfdGFibGUgU0lHTkFMIHNjYW5uZWQgV0FJVF9GT1IgZG9uZSc7CistLXNlbmQK K0NSRUFURSBJTkRFWCB0YiBPTiB0KGIpOworCitjb25uZWN0aW9uIGNvbjE7CitTRVQgREVCVUdf U1lOQz0nbm93IFdBSVRfRk9SIGRvJzsKK1NFVCBERUJVR19TWU5DPSdyb3dfdXBkYXRlX2Zvcl9t eXNxbF9lcnJvciBTSUdOQUwgbSBXQUlUX0ZPUiBzY2FubmVkJzsKKy0tZXJyb3IgRVJfRFVQX0VO VFJZCitVUERBVEUgdCBTRVQgYT0yIFdIRVJFIGE9MTsKK1NFVCBERUJVR19TWU5DPSdub3cgU0lH TkFMIGRvbmUnOworCitkaXNjb25uZWN0IGNvbjE7CisKK2Nvbm5lY3Rpb24gZGVmYXVsdDsKK3Jl YXA7CitTRVQgREVCVUdfU1lOQz0nUkVTRVQnOworRFJPUCBUQUJMRSB0OworCisjIENoZWNrIHRo YXQgYWxsIGNvbm5lY3Rpb25zIG9wZW5lZCBieSB0ZXN0IGNhc2VzIGluIHRoaXMgZmlsZSBhcmUg cmVhbGx5CisjIGdvbmUgc28gZXhlY3V0aW9uIG9mIG90aGVyIHRlc3RzIHdvbid0IGJlIGFmZmVj dGVkIGJ5IHRoZWlyIHByZXNlbmNlLgorLS1zb3VyY2UgaW5jbHVkZS93YWl0X3VudGlsX2NvdW50 X3Nlc3Npb25zLmluYwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2Ri L3QvaW5ub2RiLnRlc3QnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiLnRl c3QJcmV2aWQ6c3VubnkuYmFpbnNAb3JhY2xlLmNvbS0yMDEyMDMyOTA3MDQwMC10dmJ6cmhlNTdx cGI4dmdyCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiLnRlc3QJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjAzMjkxMTI5MDAtcGNwNGNhNmRmNzE1MmJxYQpA QCAtNDQ0LDE5ICs0NDQsMTEgQEAgSU5TRVJUIElOVE8gdDEgKCBzY2FfY29kZSwgY2F0X2NvZGUs IHNjYQogc2VsZWN0IGNvdW50KCopIGZyb20gdDEgd2hlcmUgc2NhX2NvZGUgPSAnUEQnOwogc2Vs ZWN0IGNvdW50KCopIGZyb20gdDEgd2hlcmUgc2NhX2NvZGUgPD0gJ1BEJzsKIHNlbGVjdCBjb3Vu dCgqKSBmcm9tIHQxIHdoZXJlIHNjYV9waWMgaXMgbnVsbDsKLSMgdGhpcyBzaG91bGQgYmUgZml4 ZWQgYnkgTXlTUUwgKHNlZSBCdWcgIzUxNDUxKQotIyBub3cgdGhhdCBodHRwOi8vYnVncy5teXNx bC5jb20vNDk4MzggaXMgZml4ZWQgdGhlIGZvbGxvd2luZyBBTFRFUiBkb2VzCi0jIGNvcHkgdGhl IHRhYmxlIGluc3RlYWQgb2YgZmFpbGluZwotIyAtLWVycm9yIEVSX1dST05HX05BTUVfRk9SX0lO REVYCiBhbHRlciB0YWJsZSB0MSBkcm9wIGluZGV4IHNjYV9waWMsIGFkZCBpbmRleCBzY2FfcGlj IChjYXRfY29kZSwgc2NhX3BpYyk7Ci1hbHRlciB0YWJsZSB0MSBkcm9wIGluZGV4IHNjYV9waWM7 Ci1hbHRlciB0YWJsZSB0MSBhZGQgaW5kZXggc2NhX3BpYyAoY2F0X2NvZGUsIHNjYV9waWMpOwog c2VsZWN0IGNvdW50KCopIGZyb20gdDEgd2hlcmUgc2NhX2NvZGU9J1BEJyBhbmQgc2NhX3BpYyBp cyBudWxsOwogc2VsZWN0IGNvdW50KCopIGZyb20gdDEgd2hlcmUgY2F0X2NvZGU9J0UnOwogCiBh bHRlciB0YWJsZSB0MSBkcm9wIGluZGV4IHNjYV9waWMsIGFkZCBpbmRleCAoc2NhX3BpYywgY2F0 X2NvZGUpOwotYWx0ZXIgdGFibGUgdDEgZHJvcCBpbmRleCBzY2FfcGljOwotYWx0ZXIgdGFibGUg dDEgYWRkIGluZGV4IChzY2FfcGljLCBjYXRfY29kZSk7CiBzZWxlY3QgY291bnQoKikgZnJvbSB0 MSB3aGVyZSBzY2FfY29kZT0nUEQnIGFuZCBzY2FfcGljIGlzIG51bGw7CiBzZWxlY3QgY291bnQo KikgZnJvbSB0MSB3aGVyZSBzY2FfcGljID49ICduJzsKIHNlbGVjdCBzY2FfcGljIGZyb20gdDEg d2hlcmUgc2NhX3BpYyBpcyBudWxsOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jh c2UvYnRyL2J0cjBjdXIuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuY2MJ cmV2aWQ6c3VubnkuYmFpbnNAb3JhY2xlLmNvbS0yMDEyMDMyOTA3MDQwMC10dmJ6cmhlNTdxcGI4 dmdyCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuY2MJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMjAzMjkxMTI5MDAtcGNwNGNhNmRmNzE1MmJxYQpAQCAtMTMxOSw3 ICsxMzE5LDcgQEAgYnRyX2N1cl9vcHRpbWlzdGljX2luc2VydCgKIAkJICAgICYmIFVOSVZfVU5M SUtFTFkoUkVDX05PREVfUFRSX1NJWkUKIAkJCQkgICAgICsgcmVjX2dldF9jb252ZXJ0ZWRfc2l6 ZV9jb21wX3ByZWZpeCgKIAkJCQkJICAgICBpbmRleCwgZW50cnktPmZpZWxkcywgbl91bmlxLAot CQkJCQkgICAgIE5VTEwpCisJCQkJCSAgICAgaW5kZXgtPm5fbnVsbGFibGUsIE5VTEwpCiAJCQkJ ICAgICAvKiBPbiBhIGNvbXByZXNzZWQgcGFnZSwgdGhlcmUgaXMKIAkJCQkgICAgIGEgdHdvLWJ5 dGUgZW50cnkgaW4gdGhlIGRlbnNlCiAJCQkJICAgICBwYWdlIGRpcmVjdG9yeSBmb3IgZXZlcnkg cmVjb3JkLgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MGRp Y3QuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MGRpY3QuY2MJcmV2aWQ6c3Vu bnkuYmFpbnNAb3JhY2xlLmNvbS0yMDEyMDMyOTA3MDQwMC10dmJ6cmhlNTdxcGI4dmdyCisrKyBi L3N0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MGRpY3QuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMjAzMjkxMTI5MDAtcGNwNGNhNmRmNzE1MmJxYQpAQCAtNjI4LDMzICs2Mjgs NiBAQCBkaWN0X3RhYmxlX2F1dG9pbmNfdW5sb2NrKAogewogCW11dGV4X2V4aXQoJnRhYmxlLT5h dXRvaW5jX211dGV4KTsKIH0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1Mb29rcyBmb3IgYW4gaW5k ZXggd2l0aCB0aGUgZ2l2ZW4gdGFibGUgYW5kIGluZGV4IGlkLgotTm90ZTogRG9lcyBub3QgcmVz ZXJ2ZSB0aGUgZGljdGlvbmFyeSBtdXRleC4KLUByZXR1cm4JaW5kZXggb3IgTlVMTCBpZiBub3Qg Zm91bmQgaW4gY2FjaGUgKi8KLVVOSVZfSU5URVJOCi1kaWN0X2luZGV4X3QqCi1kaWN0X2luZGV4 X2dldF9vbl9pZF9sb3coCi0vKj09PT09PT09PT09PT09PT09PT09PSovCi0JZGljdF90YWJsZV90 Kgl0YWJsZSwJLyohPCBpbjogdGFibGUgKi8KLQlpbmRleF9pZF90CWlkKQkvKiE8IGluOiBpbmRl eCBpZCAqLwotewotCWRpY3RfaW5kZXhfdCoJaW5kZXg7Ci0KLQlmb3IgKGluZGV4ID0gZGljdF90 YWJsZV9nZXRfZmlyc3RfaW5kZXgodGFibGUpOwotCSAgICAgaW5kZXggIT0gTlVMTDsKLQkgICAg IGluZGV4ID0gZGljdF90YWJsZV9nZXRfbmV4dF9pbmRleChpbmRleCkpIHsKLQotCQlpZiAoaWQg PT0gaW5kZXgtPmlkKSB7Ci0JCQkvKiBGb3VuZCAqLwotCi0JCQlyZXR1cm4oaW5kZXgpOwotCQl9 Ci0JfQotCi0JcmV0dXJuKE5VTEwpOwotfQogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwog CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9o YW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9o YW5kbGVyMGFsdGVyLmNjCXJldmlkOnN1bm55LmJhaW5zQG9yYWNsZS5jb20tMjAxMjAzMjkwNzA0 MDAtdHZienJoZTU3cXBiOHZncgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFuZGxl cjBhbHRlci5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDMyOTExMjkwMC1w Y3A0Y2E2ZGY3MTUyYnFhCkBAIC0yNCw2ICsyNCw3IEBAIFNtYXJ0IEFMVEVSIFRBQkxFCiAjaW5j bHVkZSA8dW5pcmVnLmg+CiAjaW5jbHVkZSA8bXlzcWxkX2Vycm9yLmg+CiAjaW5jbHVkZSA8bG9n Lmg+CisjaW5jbHVkZSA8ZGVidWdfc3luYy5oPgogI2luY2x1ZGUgPG15c3FsL2lubm9kYl9wcml2 Lmg+CiAKICNpbmNsdWRlICJkaWN0MHN0YXRzLmgiCkBAIC0yMTU2LDYgKzIxNTcsNyBAQCBvb206 CiAJCWhhcHBlbnMgdG8gYmUgZXhlY3V0aW5nIG9uIHRoaXMgdmVyeSB0YWJsZS4gKi8KIAkJREJV R19BU1NFUlQoY3R4LT5pbmRleGVkX3RhYmxlID09IHByZWJ1aWx0LT50YWJsZQogCQkJICAgIHx8 IHByZWJ1aWx0LT50YWJsZS0+bl9yZWZfY291bnQgLSAxIDw9IDEpOworCQlERUJVR19TWU5DKHVz ZXJfdGhkLCAiaW5ub2RiX2FmdGVyX2lucGxhY2VfYWx0ZXJfdGFibGUiKTsKIAkJREJVR19SRVRV Uk4oZmFsc2UpOwogCWNhc2UgREJfRFVQTElDQVRFX0tFWToKIAkJaWYgKHByZWJ1aWx0LT50cngt PmVycm9yX2tleV9udW0gPT0gVUxJTlRfVU5ERUZJTkVEKSB7Cgo9PT0gbW9kaWZpZWQgZmlsZSAn c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RhdGEwZGF0YS5oJwotLS0gYS9zdG9yYWdlL2lubm9i YXNlL2luY2x1ZGUvZGF0YTBkYXRhLmgJcmV2aWQ6c3VubnkuYmFpbnNAb3JhY2xlLmNvbS0yMDEy MDMyOTA3MDQwMC10dmJ6cmhlNTdxcGI4dmdyCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9kYXRhMGRhdGEuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDMyOTExMjkw MC1wY3A0Y2E2ZGY3MTUyYnFhCkBAIC00NSw3ICs0NSw4IEBAIFVOSVZfSU5MSU5FCiBkdHlwZV90 KgogZGZpZWxkX2dldF90eXBlKAogLyo9PT09PT09PT09PT0qLwotCWNvbnN0IGRmaWVsZF90Kglm aWVsZCk7CS8qITwgaW46IFNRTCBkYXRhIGZpZWxkICovCisJY29uc3QgZGZpZWxkX3QqCWZpZWxk KQkvKiE8IGluOiBTUUwgZGF0YSBmaWVsZCAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdh cm5fdW51c2VkX3Jlc3VsdCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEdldHMgcG9pbnRlciB0byB0 aGUgZGF0YSBpbiBhIGZpZWxkLgogQHJldHVybglwb2ludGVyIHRvIGRhdGEgKi8KQEAgLTUzLDcg KzU0LDggQEAgVU5JVl9JTkxJTkUKIHZvaWQqCiBkZmllbGRfZ2V0X2RhdGEoCiAvKj09PT09PT09 PT09PSovCi0JY29uc3QgZGZpZWxkX3QqIGZpZWxkKTsJLyohPCBpbjogZmllbGQgKi8KKwljb25z dCBkZmllbGRfdCogZmllbGQpCS8qITwgaW46IGZpZWxkICovCisJX19hdHRyaWJ1dGVfXygobm9u bnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAjZWxzZSAvKiBVTklWX0RFQlVHICovCiAjIGRl ZmluZSBkZmllbGRfZ2V0X3R5cGUoZmllbGQpICgmKGZpZWxkKS0+dHlwZSkKICMgZGVmaW5lIGRm aWVsZF9nZXRfZGF0YShmaWVsZCkgKChmaWVsZCktPmRhdGEpCkBAIC02NSw3ICs2Nyw4IEBAIHZv aWQKIGRmaWVsZF9zZXRfdHlwZSgKIC8qPT09PT09PT09PT09Ki8KIAlkZmllbGRfdCoJZmllbGQs CS8qITwgaW46IFNRTCBkYXRhIGZpZWxkICovCi0JZHR5cGVfdCoJdHlwZSk7CS8qITwgaW46IHBv aW50ZXIgdG8gZGF0YSB0eXBlIHN0cnVjdCAqLworCWNvbnN0IGR0eXBlX3QqCXR5cGUpCS8qITwg aW46IHBvaW50ZXIgdG8gZGF0YSB0eXBlIHN0cnVjdCAqLworCV9fYXR0cmlidXRlX18oKG5vbm51 bGwpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCiBHZXRzIGxlbmd0aCBvZiBmaWVsZCBkYXRhLgogQHJl dHVybglsZW5ndGggb2YgZGF0YTsgVU5JVl9TUUxfTlVMTCBpZiBTUUwgbnVsbCBkYXRhICovCkBA IC03Myw3ICs3Niw4IEBAIFVOSVZfSU5MSU5FCiB1bGludAogZGZpZWxkX2dldF9sZW4oCiAvKj09 PT09PT09PT09Ki8KLQljb25zdCBkZmllbGRfdCogZmllbGQpOwkvKiE8IGluOiBmaWVsZCAqLwor CWNvbnN0IGRmaWVsZF90KiBmaWVsZCkJLyohPCBpbjogZmllbGQgKi8KKwlfX2F0dHJpYnV0ZV9f KChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBTZXRz IGxlbmd0aCBpbiBhIGZpZWxkLiAqLwogVU5JVl9JTkxJTkUKQEAgLTgxLDcgKzg1LDggQEAgdm9p ZAogZGZpZWxkX3NldF9sZW4oCiAvKj09PT09PT09PT09Ki8KIAlkZmllbGRfdCoJZmllbGQsCS8q ITwgaW46IGZpZWxkICovCi0JdWxpbnQJCWxlbik7CS8qITwgaW46IGxlbmd0aCBvciBVTklWX1NR TF9OVUxMICovCisJdWxpbnQJCWxlbikJLyohPCBpbjogbGVuZ3RoIG9yIFVOSVZfU1FMX05VTEwg Ki8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogRGV0ZXJt aW5lcyBpZiBhIGZpZWxkIGlzIFNRTCBOVUxMCiBAcmV0dXJuCW5vbnplcm8gaWYgU1FMIG51bGwg ZGF0YSAqLwpAQCAtODksNyArOTQsOCBAQCBVTklWX0lOTElORQogdWxpbnQKIGRmaWVsZF9pc19u dWxsKAogLyo9PT09PT09PT09PSovCi0JY29uc3QgZGZpZWxkX3QqIGZpZWxkKTsJLyohPCBpbjog ZmllbGQgKi8KKwljb25zdCBkZmllbGRfdCogZmllbGQpCS8qITwgaW46IGZpZWxkICovCisJX19h dHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgogRGV0ZXJtaW5lcyBpZiBhIGZpZWxkIGlzIGV4dGVybmFsbHkgc3RvcmVkCiBAcmV0dXJu CW5vbnplcm8gaWYgZXh0ZXJuYWxseSBzdG9yZWQgKi8KQEAgLTk3LDE0ICsxMDMsMTYgQEAgVU5J Vl9JTkxJTkUKIHVsaW50CiBkZmllbGRfaXNfZXh0KAogLyo9PT09PT09PT09Ki8KLQljb25zdCBk ZmllbGRfdCogZmllbGQpOwkvKiE8IGluOiBmaWVsZCAqLworCWNvbnN0IGRmaWVsZF90KiBmaWVs ZCkJLyohPCBpbjogZmllbGQgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNl ZF9yZXN1bHQpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBTZXRzIHRoZSAiZXh0ZXJuYWwgc3RvcmFn ZSIgZmxhZyAqLwogVU5JVl9JTkxJTkUKIHZvaWQKIGRmaWVsZF9zZXRfZXh0KAogLyo9PT09PT09 PT09PSovCi0JZGZpZWxkX3QqCWZpZWxkKTsJLyohPCBpbi9vdXQ6IGZpZWxkICovCisJZGZpZWxk X3QqCWZpZWxkKQkvKiE8IGluL291dDogZmllbGQgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxs KSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgogU2V0cyBwb2ludGVyIHRvIHRoZSBkYXRhIGFuZCBsZW5n dGggaW4gYSBmaWVsZC4gKi8KIFVOSVZfSU5MSU5FCkBAIC0xMTMsMTQgKzEyMSwxNiBAQCBkZmll bGRfc2V0X2RhdGEoCiAvKj09PT09PT09PT09PSovCiAJZGZpZWxkX3QqCWZpZWxkLAkvKiE8IGlu OiBmaWVsZCAqLwogCWNvbnN0IHZvaWQqCWRhdGEsCS8qITwgaW46IGRhdGEgKi8KLQl1bGludAkJ bGVuKTsJLyohPCBpbjogbGVuZ3RoIG9yIFVOSVZfU1FMX05VTEwgKi8KKwl1bGludAkJbGVuKQkv KiE8IGluOiBsZW5ndGggb3IgVU5JVl9TUUxfTlVMTCAqLworCV9fYXR0cmlidXRlX18oKG5vbm51 bGwoMSkpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBTZXRzIGEgZGF0YSBmaWVsZCB0byBTUUwgTlVM TC4gKi8KIFVOSVZfSU5MSU5FCiB2b2lkCiBkZmllbGRfc2V0X251bGwoCiAvKj09PT09PT09PT09 PSovCi0JZGZpZWxkX3QqCWZpZWxkKTsJLyohPCBpbi9vdXQ6IGZpZWxkICovCisJZGZpZWxkX3Qq CWZpZWxkKQkvKiE8IGluL291dDogZmllbGQgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7 CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKIFdyaXRlcyBhbiBTUUwgbnVsbCBmaWVsZCBmdWxsIG9mIHpl cm9zLiAqLwogVU5JVl9JTkxJTkUKQEAgLTEyOCw3ICsxMzgsOCBAQCB2b2lkCiBkYXRhX3dyaXRl X3NxbF9udWxsKAogLyo9PT09PT09PT09PT09PT09Ki8KIAlieXRlKglkYXRhLAkvKiE8IGluOiBw b2ludGVyIHRvIGEgYnVmZmVyIG9mIHNpemUgbGVuICovCi0JdWxpbnQJbGVuKTsJLyohPCBpbjog U1FMIG51bGwgc2l6ZSBpbiBieXRlcyAqLworCXVsaW50CWxlbikJLyohPCBpbjogU1FMIG51bGwg c2l6ZSBpbiBieXRlcyAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovLyoqCiBDb3BpZXMgdGhlIGRhdGEgYW5kIGxlbiBmaWVsZHMuICovCiBVTklWX0lOTElORQpA QCAtMTM2LDcgKzE0Nyw4IEBAIHZvaWQKIGRmaWVsZF9jb3B5X2RhdGEoCiAvKj09PT09PT09PT09 PT0qLwogCWRmaWVsZF90KglmaWVsZDEsCS8qITwgb3V0OiBmaWVsZCB0byBjb3B5IHRvICovCi0J Y29uc3QgZGZpZWxkX3QqCWZpZWxkMik7LyohPCBpbjogZmllbGQgdG8gY29weSBmcm9tICovCisJ Y29uc3QgZGZpZWxkX3QqCWZpZWxkMikJLyohPCBpbjogZmllbGQgdG8gY29weSBmcm9tICovCisJ X19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIENvcGllcyBhIGRh dGEgZmllbGQgdG8gYW5vdGhlci4gKi8KIFVOSVZfSU5MSU5FCkBAIC0xNDQsNyArMTU2LDggQEAg dm9pZAogZGZpZWxkX2NvcHkoCiAvKj09PT09PT09Ki8KIAlkZmllbGRfdCoJZmllbGQxLAkvKiE8 IG91dDogZmllbGQgdG8gY29weSB0byAqLwotCWNvbnN0IGRmaWVsZF90KglmaWVsZDIpOy8qITwg aW46IGZpZWxkIHRvIGNvcHkgZnJvbSAqLworCWNvbnN0IGRmaWVsZF90KglmaWVsZDIpCS8qITwg aW46IGZpZWxkIHRvIGNvcHkgZnJvbSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCiBDb3BpZXMgdGhlIGRhdGEgcG9pbnRlZCB0byBieSBhIGRhdGEgZmll bGQuICovCiBVTklWX0lOTElORQpAQCAtMTUyLDcgKzE2NSw4IEBAIHZvaWQKIGRmaWVsZF9kdXAo CiAvKj09PT09PT0qLwogCWRmaWVsZF90KglmaWVsZCwJLyohPCBpbi9vdXQ6IGRhdGEgZmllbGQg Ki8KLQltZW1faGVhcF90KgloZWFwKTsJLyohPCBpbjogbWVtb3J5IGhlYXAgd2hlcmUgYWxsb2Nh dGVkICovCisJbWVtX2hlYXBfdCoJaGVhcCkJLyohPCBpbjogbWVtb3J5IGhlYXAgd2hlcmUgYWxs b2NhdGVkICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOwogI2lmbmRlZiBVTklWX0hPVEJB Q0tVUAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKIFRlc3RzIGlmIHR3byBkYXRhIGZpZWxkcyBhcmUgZXF1 YWwuCkBAIC0xODcsNyArMjAxLDggQEAgVU5JVl9JTkxJTkUKIHVsaW50CiBkdHVwbGVfZ2V0X25f ZmllbGRzKAogLyo9PT09PT09PT09PT09PT09Ki8KLQljb25zdCBkdHVwbGVfdCoJdHVwbGUpOwkv KiE8IGluOiB0dXBsZSAqLworCWNvbnN0IGR0dXBsZV90Kgl0dXBsZSkJLyohPCBpbjogdHVwbGUg Ki8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKICNpZmRl ZiBVTklWX0RFQlVHCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0cyBudGggZmllbGQgb2YgYSB0dXBs ZS4KQEAgLTIwOCw3ICsyMjMsOCBAQCBVTklWX0lOTElORQogdWxpbnQKIGR0dXBsZV9nZXRfaW5m b19iaXRzKAogLyo9PT09PT09PT09PT09PT09PSovCi0JY29uc3QgZHR1cGxlX3QqCXR1cGxlKTsJ LyohPCBpbjogdHVwbGUgKi8KKwljb25zdCBkdHVwbGVfdCoJdHVwbGUpCS8qITwgaW46IHR1cGxl ICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgogU2V0cyBpbmZvIGJpdHMgaW4gYSBkYXRhIHR1cGxlLiAqLwogVU5JVl9J TkxJTkUKQEAgLTIxNiw3ICsyMzIsOCBAQCB2b2lkCiBkdHVwbGVfc2V0X2luZm9fYml0cygKIC8q PT09PT09PT09PT09PT09PT0qLwogCWR0dXBsZV90Kgl0dXBsZSwJCS8qITwgaW46IHR1cGxlICov Ci0JdWxpbnQJCWluZm9fYml0cyk7CS8qITwgaW46IGluZm8gYml0cyAqLworCXVsaW50CQlpbmZv X2JpdHMpCS8qITwgaW46IGluZm8gYml0cyAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCiBHZXRzIG51bWJlciBvZiBmaWVsZHMgdXNlZCBpbiByZWNvcmQg Y29tcGFyaXNvbnMuCiBAcmV0dXJuCW51bWJlciBvZiBmaWVsZHMgdXNlZCBpbiBjb21wYXJpc29u cyBpbiByZW0wY21wLiogKi8KQEAgLTIyNCw3ICsyNDEsOCBAQCBVTklWX0lOTElORQogdWxpbnQK IGR0dXBsZV9nZXRfbl9maWVsZHNfY21wKAogLyo9PT09PT09PT09PT09PT09PT09PSovCi0JY29u c3QgZHR1cGxlX3QqCXR1cGxlKTsJLyohPCBpbjogdHVwbGUgKi8KKwljb25zdCBkdHVwbGVfdCoJ dHVwbGUpCS8qITwgaW46IHR1cGxlICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91 bnVzZWRfcmVzdWx0KSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0cyBudW1iZXIgb2YgZmllbGRz IHVzZWQgaW4gcmVjb3JkIGNvbXBhcmlzb25zLiAqLwogVU5JVl9JTkxJTkUKQEAgLTIzMiw4ICsy NTAsOSBAQCB2b2lkCiBkdHVwbGVfc2V0X25fZmllbGRzX2NtcCgKIC8qPT09PT09PT09PT09PT09 PT09PT0qLwogCWR0dXBsZV90Kgl0dXBsZSwJCS8qITwgaW46IHR1cGxlICovCi0JdWxpbnQJCW5f ZmllbGRzX2NtcCk7CS8qITwgaW46IG51bWJlciBvZiBmaWVsZHMgdXNlZCBpbgorCXVsaW50CQlu X2ZpZWxkc19jbXApCS8qITwgaW46IG51bWJlciBvZiBmaWVsZHMgdXNlZCBpbgogCQkJCQljb21w YXJpc29ucyBpbiByZW0wY21wLiogKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CiAKIC8q IEVzdGltYXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgYWxsb2Nh dGVkIHdoZW4KIGNyZWF0aW5nIGEgbmV3IGR0dXBsZV90IG9iamVjdCAqLwpAQCAtMjUyLDcgKzI3 MSw4IEBAIGR0dXBsZV9jcmVhdGVfZnJvbV9tZW0oCiAvKj09PT09PT09PT09PT09PT09PT0qLwog CXZvaWQqCWJ1ZiwJCS8qITwgaW4sIG91dDogYnVmZmVyIHRvIHVzZSAqLwogCXVsaW50CWJ1Zl9z aXplLAkvKiE8IGluOiBidWZmZXIgc2l6ZSAqLwotCXVsaW50CW5fZmllbGRzKTsJLyohPCBpbjog bnVtYmVyIG9mIGZpZWxkcyAqLworCXVsaW50CW5fZmllbGRzKQkvKiE8IGluOiBudW1iZXIgb2Yg ZmllbGRzICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7 CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLy8qKgogQ3JlYXRlcyBhIGRhdGEgdHVwbGUgdG8gYSBtZW1vcnkgaGVhcC4gVGhlIGRl ZmF1bHQgdmFsdWUgZm9yIG51bWJlcgpAQCAtMjY1LDcgKzI4NSw4IEBAIGR0dXBsZV9jcmVhdGUo CiAJbWVtX2hlYXBfdCoJaGVhcCwJLyohPCBpbjogbWVtb3J5IGhlYXAgd2hlcmUgdGhlIHR1cGxl CiAJCQkJaXMgY3JlYXRlZCwgRFRVUExFX0VTVF9BTExPQyhuX2ZpZWxkcykKIAkJCQlieXRlcyB3 aWxsIGJlIGFsbG9jYXRlZCBmcm9tIHRoaXMgaGVhcCAqLwotCXVsaW50CQluX2ZpZWxkcyk7IC8q ITwgaW46IG51bWJlciBvZiBmaWVsZHMgKi8KKwl1bGludAkJbl9maWVsZHMpLyohPCBpbjogbnVt YmVyIG9mIGZpZWxkcyAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIG1hbGxvYykpOwogCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKIFdyYXAgZGF0YSBmaWVsZHMgaW4gYSB0dXBsZS4gVGhlIGRlZmF1bHQgdmFsdWUgZm9y IG51bWJlcgpAQCAtMjc3LDcgKzI5OCw4IEBAIGR0dXBsZV9mcm9tX2ZpZWxkcygKIC8qPT09PT09 PT09PT09PT09Ki8KIAlkdHVwbGVfdCoJdHVwbGUsCQkvKiE8IGluOiBzdG9yYWdlIGZvciBkYXRh IHR1cGxlICovCiAJY29uc3QgZGZpZWxkX3QqCWZpZWxkcywJCS8qITwgaW46IGZpZWxkcyAqLwot CXVsaW50CQluX2ZpZWxkcyk7CS8qITwgaW46IG51bWJlciBvZiBmaWVsZHMgKi8KKwl1bGludAkJ bl9maWVsZHMpCS8qITwgaW46IG51bWJlciBvZiBmaWVsZHMgKi8KKwlfX2F0dHJpYnV0ZV9fKChu b25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFNldHMg bnVtYmVyIG9mIGZpZWxkcyB1c2VkIGluIGEgdHVwbGUuIE5vcm1hbGx5IHRoaXMgaXMgc2V0IGlu CkBAIC0yODcsNyArMzA5LDggQEAgdm9pZAogZHR1cGxlX3NldF9uX2ZpZWxkcygKIC8qPT09PT09 PT09PT09PT09PSovCiAJZHR1cGxlX3QqCXR1cGxlLAkJLyohPCBpbjogdHVwbGUgKi8KLQl1bGlu dAkJbl9maWVsZHMpOwkvKiE8IGluOiBudW1iZXIgb2YgZmllbGRzICovCisJdWxpbnQJCW5fZmll bGRzKQkvKiE8IGluOiBudW1iZXIgb2YgZmllbGRzICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVs bCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKIENvcGllcyBhIGRhdGEgdHVwbGUgdG8gYW5vdGhlci4g IFRoaXMgaXMgYSBzaGFsbG93IGNvcHk7IGlmIGEgZGVlcCBjb3B5CiBpcyBkZXNpcmVkLCBkZmll bGRfZHVwKCkgd2lsbCBoYXZlIHRvIGJlIGludm9rZWQgb24gZWFjaCBmaWVsZC4KQEAgLTI5Nyw4 ICszMjAsOSBAQCBkdHVwbGVfdCoKIGR0dXBsZV9jb3B5KAogLyo9PT09PT09PSovCiAJY29uc3Qg ZHR1cGxlX3QqCXR1cGxlLAkvKiE8IGluOiB0dXBsZSB0byBjb3B5IGZyb20gKi8KLQltZW1faGVh cF90KgloZWFwKTsJLyohPCBpbjogbWVtb3J5IGhlYXAKKwltZW1faGVhcF90KgloZWFwKQkvKiE8 IGluOiBtZW1vcnkgaGVhcAogCQkJCXdoZXJlIHRoZSB0dXBsZSBpcyBjcmVhdGVkICovCisJX19h dHRyaWJ1dGVfXygobm9ubnVsbCwgbWFsbG9jKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFRoZSBmb2xsb3dpbmcgZnVu Y3Rpb24gcmV0dXJucyB0aGUgc3VtIG9mIGRhdGEgbGVuZ3RocyBvZiBhIHR1cGxlLiBUaGUgc3Bh Y2UKIG9jY3VwaWVkIGJ5IHRoZSBmaWVsZCBzdHJ1Y3RzIG9yIHRoZSB0dXBsZSBzdHJ1Y3QgaXMg bm90IGNvdW50ZWQuCkBAIC0zMDgsNyArMzMyLDggQEAgdWxpbnQKIGR0dXBsZV9nZXRfZGF0YV9z aXplKAogLyo9PT09PT09PT09PT09PT09PSovCiAJY29uc3QgZHR1cGxlX3QqCXR1cGxlLAkvKiE8 IGluOiB0eXBlZCBkYXRhIHR1cGxlICovCi0JdWxpbnQJCWNvbXApOwkvKiE8IGluOiBub256ZXJv PVJPV19GT1JNQVQ9Q09NUEFDVCAgKi8KKwl1bGludAkJY29tcCkJLyohPCBpbjogbm9uemVybz1S T1dfRk9STUFUPUNPTVBBQ1QgICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOwogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIENvbXB1dGVzIHRoZSBudW1iZXIgb2YgZXh0ZXJuYWxseSBzdG9yZWQgZmll bGRzIGluIGEgZGF0YSB0dXBsZS4KIEByZXR1cm4JbnVtYmVyIG9mIGZpZWxkcyAqLwpAQCAtMzE2 LDcgKzM0MSw4IEBAIFVOSVZfSU5MSU5FCiB1bGludAogZHR1cGxlX2dldF9uX2V4dCgKIC8qPT09 PT09PT09PT09PSovCi0JY29uc3QgZHR1cGxlX3QqCXR1cGxlKTsJLyohPCBpbjogdHVwbGUgKi8K Kwljb25zdCBkdHVwbGVfdCoJdHVwbGUpCS8qITwgaW46IHR1cGxlICovCisJX19hdHRyaWJ1dGVf Xygobm9ubnVsbCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKIENvbXBhcmUgdHdvIGRhdGEgdHVwbGVzLCByZXNwZWN0 aW5nIHRoZSBjb2xsYXRpb24gb2YgY2hhcmFjdGVyIGZpZWxkcy4KIEByZXR1cm4gMSwgMCAsIC0x IGlmIHR1cGxlMSBpcyBncmVhdGVyLCBlcXVhbCwgbGVzcywgcmVzcGVjdGl2ZWx5LApAQCAtMzI2 LDcgKzM1Miw4IEBAIGludAogZHR1cGxlX2NvbGxfY21wKAogLyo9PT09PT09PT09PT0qLwogCWNv bnN0IGR0dXBsZV90Kgl0dXBsZTEsCS8qITwgaW46IHR1cGxlIDEgKi8KLQljb25zdCBkdHVwbGVf dCoJdHVwbGUyKTsvKiE8IGluOiB0dXBsZSAyICovCisJY29uc3QgZHR1cGxlX3QqCXR1cGxlMikJ LyohPCBpbjogdHVwbGUgMiAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2Vk X3Jlc3VsdCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKIEZvbGRzIGEgcHJlZml4IGdpdmVuIGFzIHRoZSBudW1iZXIg b2YgZmllbGRzIG9mIGEgdHVwbGUuCiBAcmV0dXJuCXRoZSBmb2xkZWQgdmFsdWUgKi8KQEAgLTMz OSw3ICszNjYsNyBAQCBkdHVwbGVfZm9sZCgKIAl1bGludAkJbl9ieXRlcywvKiE8IGluOiBudW1i ZXIgb2YgYnl0ZXMgdG8gZm9sZCBpbiBhbgogCQkJCWluY29tcGxldGUgbGFzdCBmaWVsZCAqLwog CWluZGV4X2lkX3QJdHJlZV9pZCkvKiE8IGluOiBpbmRleCB0cmVlIGlkICovCi0JX19hdHRyaWJ1 dGVfXygocHVyZSkpOworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHB1cmUsIHdhcm5fdW51c2Vk X3Jlc3VsdCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBTZXRzIHR5cGVzIG9mIGZpZWxkcyBiaW5hcnkg aW4gYSB0dXBsZS4gKi8KIFVOSVZfSU5MSU5FCkBAIC0zNDcsNyArMzc0LDggQEAgdm9pZAogZHR1 cGxlX3NldF90eXBlc19iaW5hcnkoCiAvKj09PT09PT09PT09PT09PT09PT09Ki8KIAlkdHVwbGVf dCoJdHVwbGUsCS8qITwgaW46IGRhdGEgdHVwbGUgKi8KLQl1bGludAkJbik7CS8qITwgaW46IG51 bWJlciBvZiBmaWVsZHMgdG8gc2V0ICovCisJdWxpbnQJCW4pCS8qITwgaW46IG51bWJlciBvZiBm aWVsZHMgdG8gc2V0ICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOwogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovLyoqCiBDaGVja3MgaWYgYSBkdHVwbGUgY29udGFpbnMgYW4gU1FMIG51bGwgdmFsdWUuCiBA cmV0dXJuCVRSVUUgaWYgc29tZSBmaWVsZCBpcyBTUUwgbnVsbCAqLwpAQCAtMzU1LDcgKzM4Myw4 IEBAIFVOSVZfSU5MSU5FCiBpYm9vbAogZHR1cGxlX2NvbnRhaW5zX251bGwoCiAvKj09PT09PT09 PT09PT09PT09Ki8KLQljb25zdCBkdHVwbGVfdCoJdHVwbGUpOwkvKiE8IGluOiBkdHVwbGUgKi8K Kwljb25zdCBkdHVwbGVfdCoJdHVwbGUpCS8qITwgaW46IGR0dXBsZSAqLworCV9fYXR0cmlidXRl X18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBDaGVja3MgdGhhdCBh IGRhdGEgZmllbGQgaXMgdHlwZWQuIEFzc2VydHMgYW4gZXJyb3IgaWYgbm90LgogQHJldHVybglU UlVFIGlmIG9rICovCkBAIC0zNjMsNyArMzkyLDggQEAgVU5JVl9JTlRFUk4KIGlib29sCiBkZmll bGRfY2hlY2tfdHlwZWQoCiAvKj09PT09PT09PT09PT09PSovCi0JY29uc3QgZGZpZWxkX3QqCWZp ZWxkKTsJLyohPCBpbjogZGF0YSBmaWVsZCAqLworCWNvbnN0IGRmaWVsZF90KglmaWVsZCkJLyoh PCBpbjogZGF0YSBmaWVsZCAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2Vk X3Jlc3VsdCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCiBDaGVja3MgdGhhdCBhIGRhdGEgdHVwbGUgaXMgdHlwZWQuIEFz c2VydHMgYW4gZXJyb3IgaWYgbm90LgogQHJldHVybglUUlVFIGlmIG9rICovCkBAIC0zNzEsNyAr NDAxLDggQEAgVU5JVl9JTlRFUk4KIGlib29sCiBkdHVwbGVfY2hlY2tfdHlwZWQoCiAvKj09PT09 PT09PT09PT09PSovCi0JY29uc3QgZHR1cGxlX3QqCXR1cGxlKTsJLyohPCBpbjogdHVwbGUgKi8K Kwljb25zdCBkdHVwbGVfdCoJdHVwbGUpCS8qITwgaW46IHR1cGxlICovCisJX19hdHRyaWJ1dGVf Xygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIENoZWNrcyB0aGF0IGEg ZGF0YSB0dXBsZSBpcyB0eXBlZC4KIEByZXR1cm4JVFJVRSBpZiBvayAqLwpAQCAtMzc5LDcgKzQx MCw4IEBAIFVOSVZfSU5URVJOCiBpYm9vbAogZHR1cGxlX2NoZWNrX3R5cGVkX25vX2Fzc2VydCgK IC8qPT09PT09PT09PT09PT09PT09PT09PT09PSovCi0JY29uc3QgZHR1cGxlX3QqCXR1cGxlKTsJ LyohPCBpbjogdHVwbGUgKi8KKwljb25zdCBkdHVwbGVfdCoJdHVwbGUpCS8qITwgaW46IHR1cGxl ICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAjaWZk ZWYgVU5JVl9ERUJVRwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCiBWYWxpZGF0ZXMgdGhlIGNvbnNpc3RlbmN5IG9mIGEgdHVw bGUgd2hpY2ggbXVzdCBiZSBjb21wbGV0ZSwgaS5lLApAQCAtMzg5LDcgKzQyMSw4IEBAIFVOSVZf SU5URVJOCiBpYm9vbAogZHR1cGxlX3ZhbGlkYXRlKAogLyo9PT09PT09PT09PT0qLwotCWNvbnN0 IGR0dXBsZV90Kgl0dXBsZSk7CS8qITwgaW46IHR1cGxlICovCisJY29uc3QgZHR1cGxlX3QqCXR1 cGxlKQkvKiE8IGluOiB0dXBsZSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51 c2VkX3Jlc3VsdCkpOwogI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUHJldHR5 IHByaW50cyBhIGRmaWVsZCB2YWx1ZSBhY2NvcmRpbmcgdG8gaXRzIGRhdGEgdHlwZS4gKi8KQEAg LTM5Nyw3ICs0MzAsOCBAQCBVTklWX0lOVEVSTgogdm9pZAogZGZpZWxkX3ByaW50KAogLyo9PT09 PT09PT0qLwotCWNvbnN0IGRmaWVsZF90KglkZmllbGQpOy8qITwgaW46IGRmaWVsZCAqLworCWNv bnN0IGRmaWVsZF90KglkZmllbGQpCS8qITwgaW46IGRmaWVsZCAqLworCV9fYXR0cmlidXRlX18o KG5vbm51bGwpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgogUHJldHR5IHByaW50cyBhIGRmaWVsZCB2YWx1ZSBhY2Nv cmRpbmcgdG8gaXRzIGRhdGEgdHlwZS4gQWxzbyB0aGUgaGV4IHN0cmluZwogaXMgcHJpbnRlZCBp ZiBhIHN0cmluZyBjb250YWlucyBub24tcHJpbnRhYmxlIGNoYXJhY3RlcnMuICovCkBAIC00MDUs NyArNDM5LDggQEAgVU5JVl9JTlRFUk4KIHZvaWQKIGRmaWVsZF9wcmludF9hbHNvX2hleCgKIC8q PT09PT09PT09PT09PT09PT09Ki8KLQljb25zdCBkZmllbGRfdCoJZGZpZWxkKTsJIC8qITwgaW46 IGRmaWVsZCAqLworCWNvbnN0IGRmaWVsZF90KglkZmllbGQpCSAvKiE8IGluOiBkZmllbGQgKi8K KwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFRoZSBmb2xsb3dpbmcgZnVuY3Rp b24gcHJpbnRzIHRoZSBjb250ZW50cyBvZiBhIHR1cGxlLiAqLwogVU5JVl9JTlRFUk4KQEAgLTQx Myw3ICs0NDgsOCBAQCB2b2lkCiBkdHVwbGVfcHJpbnQoCiAvKj09PT09PT09PSovCiAJRklMRSoJ CWYsCS8qITwgaW46IG91dHB1dCBzdHJlYW0gKi8KLQljb25zdCBkdHVwbGVfdCoJdHVwbGUpOwkv KiE8IGluOiB0dXBsZSAqLworCWNvbnN0IGR0dXBsZV90Kgl0dXBsZSkJLyohPCBpbjogdHVwbGUg Ki8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBNb3ZlcyBwYXJ0cyBv ZiBsb25nIGZpZWxkcyBpbiBlbnRyeSB0byB0aGUgYmlnIHJlY29yZCB2ZWN0b3Igc28gdGhhdAog dGhlIHNpemUgb2YgdHVwbGUgZHJvcHMgYmVsb3cgdGhlIG1heGltdW0gcmVjb3JkIHNpemUgYWxs b3dlZCBpbiB0aGUKQEAgLTQyOCw4ICs0NjQsOSBAQCBkdHVwbGVfY29udmVydF9iaWdfcmVjKAog Lyo9PT09PT09PT09PT09PT09PT09Ki8KIAlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBp bmRleCAqLwogCWR0dXBsZV90KgllbnRyeSwJLyohPCBpbi9vdXQ6IGluZGV4IGVudHJ5ICovCi0J dWxpbnQqCQluX2V4dCk7CS8qITwgaW4vb3V0OiBudW1iZXIgb2YKKwl1bGludCoJCW5fZXh0KQkv KiE8IGluL291dDogbnVtYmVyIG9mCiAJCQkJZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucyAqLwor CV9fYXR0cmlidXRlX18oKG5vbm51bGwsIG1hbGxvYywgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCiBQdXRzIGJhY2sgdG8gZW50cnkgdGhlIGRhdGEgc3RvcmVkIGluIHZlY3Rvci4g Tm90ZSB0aGF0IHRvIGVuc3VyZSB0aGUKIGZpZWxkcyBpbiBlbnRyeSBjYW4gYWNjb21tb2RhdGUg dGhlIGRhdGEsIHZlY3RvciBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkCkBAIC00NDAsMTYgKzQ3Nywx OCBAQCBkdHVwbGVfY29udmVydF9iYWNrX2JpZ19yZWMoCiAvKj09PT09PT09PT09PT09PT09PT09 PT09PSovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogaW5kZXggKi8KIAlkdHVwbGVf dCoJZW50cnksCS8qITwgaW46IGVudHJ5IHdob3NlIGRhdGEgd2FzIHB1dCB0byB2ZWN0b3IgKi8K LQliaWdfcmVjX3QqCXZlY3Rvcik7LyohPCBpbiwgb3duOiBiaWcgcmVjIHZlY3RvcjsgaXQgaXMK KwliaWdfcmVjX3QqCXZlY3RvcikJLyohPCBpbiwgb3duOiBiaWcgcmVjIHZlY3RvcjsgaXQgaXMK IAkJCQlmcmVlZCBpbiB0aGlzIGZ1bmN0aW9uICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkp OwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgogRnJlZXMgdGhlIG1lbW9yeSBpbiBhIGJpZyByZWMgdmVjdG9yLiAqLwog VU5JVl9JTkxJTkUKIHZvaWQKIGR0dXBsZV9iaWdfcmVjX2ZyZWUoCiAvKj09PT09PT09PT09PT09 PT0qLwotCWJpZ19yZWNfdCoJdmVjdG9yKTsJLyohPCBpbiwgb3duOiBiaWcgcmVjIHZlY3Rvcjsg aXQgaXMKKwliaWdfcmVjX3QqCXZlY3RvcikJLyohPCBpbiwgb3duOiBiaWcgcmVjIHZlY3Rvcjsg aXQgaXMKIAkJCQlmcmVlZCBpbiB0aGlzIGZ1bmN0aW9uICovCisJX19hdHRyaWJ1dGVfXygobm9u bnVsbCkpOwogCiAvKiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMqLwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL2RhdGEwZGF0YS5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2RhdGEwZGF0YS5pYwlyZXZpZDpzdW5ueS5iYWluc0BvcmFjbGUuY29tLTIwMTIwMzI5 MDcwNDAwLXR2YnpyaGU1N3FwYjh2Z3IKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2Rh dGEwZGF0YS5pYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDMyOTExMjkwMC1w Y3A0Y2E2ZGY3MTUyYnFhCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQKIGRmaWVsZF9zZXRfdHlwZSgK IC8qPT09PT09PT09PT09Ki8KIAlkZmllbGRfdCoJZmllbGQsCS8qITwgaW46IFNRTCBkYXRhIGZp ZWxkICovCi0JZHR5cGVfdCoJdHlwZSkJLyohPCBpbjogcG9pbnRlciB0byBkYXRhIHR5cGUgc3Ry dWN0ICovCisJY29uc3QgZHR5cGVfdCoJdHlwZSkJLyohPCBpbjogcG9pbnRlciB0byBkYXRhIHR5 cGUgc3RydWN0ICovCiB7CiAJdXRfYWQoZmllbGQgJiYgdHlwZSk7CiAKCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcmVtMHJlYy5oJwotLS0gYS9zdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvcmVtMHJlYy5oCXJldmlkOnN1bm55LmJhaW5zQG9yYWNsZS5jb20tMjAx MjAzMjkwNzA0MDAtdHZienJoZTU3cXBiOHZncgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvcmVtMHJlYy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwMzI5MTEyOTAw LXBjcDRjYTZkZjcxNTJicWEKQEAgLTM3Niw4ICszNzYsMTEgQEAgcmVjX2luaXRfb2Zmc2V0c19j b21wX29yZGluYXJ5KAogCQkJCQl0aGUgZGF0YSBwYXlsb2FkCiAJCQkJCSh1c3VhbGx5IFJFQ19O X05FV19FWFRSQV9CWVRFUykgKi8KIAljb25zdCBkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGlu OiByZWNvcmQgZGVzY3JpcHRvciAqLwotCXVsaW50KgkJCW9mZnNldHMpOy8qITwgaW4vb3V0OiBh cnJheSBvZiBvZmZzZXRzOworCXVsaW50CQkJbl9udWxsLAkvKiE8IGluOiBudW1iZXIgb2YgZmll bGRzIHRoYXQKKwkJCQkJY2FuIGJlIE5VTEwgKi8KKwl1bGludCoJCQlvZmZzZXRzKS8qITwgaW4v b3V0OiBhcnJheSBvZiBvZmZzZXRzOwogCQkJCQlpbjogbj1yZWNfb2Zmc19uX2ZpZWxkcyhvZmZz ZXRzKSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKIAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFRoZSBmb2xsb3dpbmcg ZnVuY3Rpb24gZGV0ZXJtaW5lcyB0aGUgb2Zmc2V0cyB0byBlYWNoIGZpZWxkCkBAIC02OTUsNyAr Njk4LDEwIEBAIHJlY19jb252ZXJ0X2R0dXBsZV90b19yZWNfY29tcCgKIAljb25zdCBkaWN0X2lu ZGV4X3QqCWluZGV4LAkvKiE8IGluOiByZWNvcmQgZGVzY3JpcHRvciAqLwogCXVsaW50CQkJc3Rh dHVzLAkvKiE8IGluOiBzdGF0dXMgYml0cyBvZiB0aGUgcmVjb3JkICovCiAJY29uc3QgZGZpZWxk X3QqCQlmaWVsZHMsCS8qITwgaW46IGFycmF5IG9mIGRhdGEgZmllbGRzICovCi0JdWxpbnQJCQlu X2ZpZWxkcyk7LyohPCBpbjogbnVtYmVyIG9mIGRhdGEgZmllbGRzICovCisJdWxpbnQJCQluX2Zp ZWxkcywvKiE8IGluOiBudW1iZXIgb2YgZGF0YSBmaWVsZHMgKi8KKwl1bGludAkJCW5fbnVsbCkJ LyohPCBpbjogbnVtYmVyIG9mIGZpZWxkcyB0aGF0CisJCQkJCWNhbiBiZSBOVUxMICovCisJX19h dHRyaWJ1dGVfXygobm9ubnVsbCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEJ1aWxkcyBhIHBoeXNpY2FsIHJlY29yZCBv dXQgb2YgYSBkYXRhIHR1cGxlIGFuZAogc3RvcmVzIGl0IGludG8gdGhlIGdpdmVuIGJ1ZmZlci4K QEAgLTcyMSw3ICs3MjcsNyBAQCByZWNfZ2V0X2NvbnZlcnRlZF9leHRyYV9zaXplKAogCXVsaW50 CWRhdGFfc2l6ZSwJLyohPCBpbjogZGF0YSBzaXplICovCiAJdWxpbnQJbl9maWVsZHMsCS8qITwg aW46IG51bWJlciBvZiBmaWVsZHMgKi8KIAl1bGludAluX2V4dCkJCS8qITwgaW46IG51bWJlciBv ZiBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zICovCi0JCV9fYXR0cmlidXRlX18oKGNvbnN0KSk7 CisJX19hdHRyaWJ1dGVfXygoY29uc3QpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogRGV0ZXJtaW5lcyB0aGUgc2l6ZSBv ZiBhIGRhdGEgdHVwbGUgcHJlZml4IGluIFJPV19GT1JNQVQ9Q09NUEFDVC4KIEByZXR1cm4JdG90 YWwgc2l6ZSAqLwpAQCAtNzM1LDcgKzc0MSwxMCBAQCByZWNfZ2V0X2NvbnZlcnRlZF9zaXplX2Nv bXBfcHJlZml4KAogCQkJCQlpdCBkb2VzIG5vdCAqLwogCWNvbnN0IGRmaWVsZF90KgkJZmllbGRz LAkvKiE8IGluOiBhcnJheSBvZiBkYXRhIGZpZWxkcyAqLwogCXVsaW50CQkJbl9maWVsZHMsLyoh PCBpbjogbnVtYmVyIG9mIGRhdGEgZmllbGRzICovCi0JdWxpbnQqCQkJZXh0cmEpOwkvKiE8IG91 dDogZXh0cmEgc2l6ZSAqLworCXVsaW50CQkJbl9udWxsLAkvKiE8IGluOiBudW1iZXIgb2YgZmll bGRzIHRoYXQKKwkJCQkJY2FuIGJlIE5VTEwgKi8KKwl1bGludCoJCQlleHRyYSkJLyohPCBvdXQ6 IGV4dHJhIHNpemUgKi8KKwlfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQsIG5vbm51 bGwoMSwyKSkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCiBEZXRlcm1pbmVzIHRoZSBzaXplIG9mIGEgZGF0YSB0dXBsZSBp biBST1dfRk9STUFUPUNPTVBBQ1QuCiBAcmV0dXJuCXRvdGFsIHNpemUgKi8KQEAgLTc1MCw3ICs3 NTksMTAgQEAgcmVjX2dldF9jb252ZXJ0ZWRfc2l6ZV9jb21wKAogCXVsaW50CQkJc3RhdHVzLAkv KiE8IGluOiBzdGF0dXMgYml0cyBvZiB0aGUgcmVjb3JkICovCiAJY29uc3QgZGZpZWxkX3QqCQlm aWVsZHMsCS8qITwgaW46IGFycmF5IG9mIGRhdGEgZmllbGRzICovCiAJdWxpbnQJCQluX2ZpZWxk cywvKiE8IGluOiBudW1iZXIgb2YgZGF0YSBmaWVsZHMgKi8KLQl1bGludCoJCQlleHRyYSk7CS8q ITwgb3V0OiBleHRyYSBzaXplICovCisJdWxpbnQJCQluX251bGwsCS8qITwgaW46IG51bWJlciBv ZiBmaWVsZHMgdGhhdAorCQkJCQljYW4gYmUgTlVMTCAqLworCXVsaW50KgkJCWV4dHJhKQkvKiE8 IG91dDogZXh0cmEgc2l6ZSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwoMSwzKSkpOwogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNpemUgb2YgYSBkYXRhIHR1 cGxlIHdoZW4gY29udmVydGVkIHRvCiBhIHBoeXNpY2FsIHJlY29yZC4KQEAgLTc2MSw3ICs3NzMs OCBAQCByZWNfZ2V0X2NvbnZlcnRlZF9zaXplKAogLyo9PT09PT09PT09PT09PT09PT09Ki8KIAlk aWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiByZWNvcmQgZGVzY3JpcHRvciAqLwogCWNvbnN0 IGR0dXBsZV90KglkdHVwbGUsCS8qITwgaW46IGRhdGEgdHVwbGUgKi8KLQl1bGludAkJbl9leHQp OwkvKiE8IGluOiBudW1iZXIgb2YgZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucyAqLworCXVsaW50 CQluX2V4dCkJLyohPCBpbjogbnVtYmVyIG9mIGV4dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMgKi8K KwlfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQsIG5vbm51bGwpKTsKICNpZm5kZWYg VU5JVl9IT1RCQUNLVVAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKIENvcGllcyB0aGUgZmlyc3QgbiBmaWVsZHMgb2Yg YSBwaHlzaWNhbCByZWNvcmQgdG8gYSBkYXRhIHR1cGxlLgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVjLmljJwotLS0gYS9zdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvcmVtMHJlYy5pYwlyZXZpZDpzdW5ueS5iYWluc0BvcmFjbGUuY29tLTIwMTIwMzI5 MDcwNDAwLXR2YnpyaGU1N3FwYjh2Z3IKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3Jl bTByZWMuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjAzMjkxMTI5MDAtcGNw NGNhNmRmNzE1MmJxYQpAQCAtMTYwMCw3ICsxNjAwLDggQEAgcmVjX2dldF9jb252ZXJ0ZWRfc2l6 ZSgKIAkJCQkJCSAgIGR0dXBsZV9nZXRfaW5mb19iaXRzKGR0dXBsZSkKIAkJCQkJCSAgICYgUkVD X05FV19TVEFUVVNfTUFTSywKIAkJCQkJCSAgIGR0dXBsZS0+ZmllbGRzLAotCQkJCQkJICAgZHR1 cGxlLT5uX2ZpZWxkcywgTlVMTCkpOworCQkJCQkJICAgZHR1cGxlLT5uX2ZpZWxkcywKKwkJCQkJ CSAgIGluZGV4LT5uX251bGxhYmxlLCBOVUxMKSk7CiAJfQogCiAJZGF0YV9zaXplID0gZHR1cGxl X2dldF9kYXRhX3NpemUoZHR1cGxlLCAwKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvcm93MG1lcmdlLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9yb3cwbWVyZ2UuaAlyZXZpZDpzdW5ueS5iYWluc0BvcmFjbGUuY29tLTIwMTIwMzI5MDcwNDAw LXR2YnpyaGU1N3FwYjh2Z3IKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBtZXJn ZS5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwMzI5MTEyOTAwLXBjcDRjYTZk ZjcxNTJicWEKQEAgLTYzLDYgKzYzLDEyIEBAIFRoZSBmb3JtYXQgaXMgdGhlIHNhbWUgYXMgYSBy ZWNvcmQgaW4gUk8KIGV4Y2VwdGlvbiB0aGF0IHRoZSBSRUNfTl9ORVdfRVhUUkFfQllURVMgYXJl IG9taXR0ZWQuICovCiB0eXBlZGVmIGJ5dGUJbXJlY190OwogCisvKiogTWVyZ2UgcmVjb3JkIGlu IHJvd19tZXJnZV9idWZfdCAqLworc3RydWN0IG10dXBsZV90IHsKKwlib29sCQlkZWxfbWFyazsJ LyohPCB0cnVlIHdoZW4gZGVsZXRlLW1hcmtlZCAqLworCWRmaWVsZF90KglmaWVsZHM7CQkvKiE8 IGRhdGEgZmllbGRzICovCit9OworCiAvKiogQnVmZmVyIGZvciBzb3J0aW5nIGluIG1haW4gbWVt b3J5LiAqLwogc3RydWN0IHJvd19tZXJnZV9idWZfc3RydWN0IHsKIAltZW1faGVhcF90KgloZWFw OwkJLyohPCBtZW1vcnkgaGVhcCB3aGVyZSBhbGxvY2F0ZWQgKi8KQEAgLTcwLDEwICs3Niw4IEBA IHN0cnVjdCByb3dfbWVyZ2VfYnVmX3N0cnVjdCB7CiAJdWxpbnQJCXRvdGFsX3NpemU7CS8qITwg dG90YWwgYW1vdW50IG9mIGRhdGEgYnl0ZXMgKi8KIAl1bGludAkJbl90dXBsZXM7CS8qITwgbnVt YmVyIG9mIGRhdGEgdHVwbGVzICovCiAJdWxpbnQJCW1heF90dXBsZXM7CS8qITwgbWF4aW11bSBu dW1iZXIgb2YgZGF0YSB0dXBsZXMgKi8KLQljb25zdCBkZmllbGRfdCoqdHVwbGVzOwkJLyohPCBh cnJheSBvZiBwb2ludGVycyB0bwotCQkJCQlhcnJheXMgb2YgZmllbGRzIHRoYXQgZm9ybQotCQkJ CQl0aGUgZGF0YSB0dXBsZXMgKi8KLQljb25zdCBkZmllbGRfdCoqdG1wX3R1cGxlczsJLyohPCB0 ZW1wb3JhcnkgY29weSBvZiB0dXBsZXMsCisJbXR1cGxlX3QqCXR1cGxlczsJCS8qITwgYXJyYXkg b2YgZGF0YSB0dXBsZXMgKi8KKwltdHVwbGVfdCoJdG1wX3R1cGxlczsJLyohPCB0ZW1wb3Jhcnkg Y29weSBvZiB0dXBsZXMsCiAJCQkJCWZvciBzb3J0aW5nICovCiB9OwogCkBAIC0zNDgsOSArMzUy LDEwIEBAIHJvd19tZXJnZV9zb3J0KAogCQkJCQlpbmRleCBlbnRyaWVzICovCiAJcm93X21lcmdl X2Jsb2NrX3QqCWJsb2NrLAkvKiE8IGluL291dDogMyBidWZmZXJzICovCiAJaW50KgkJCXRtcGZk LAkvKiE8IGluL291dDogdGVtcG9yYXJ5IGZpbGUgaGFuZGxlICovCi0Jc3RydWN0IFRBQkxFKgkJ dGFibGUpOwkvKiE8IGluL291dDogTXlTUUwgdGFibGUsIGZvcgorCXN0cnVjdCBUQUJMRSoJCXRh YmxlKQkvKiE8IGluL291dDogTXlTUUwgdGFibGUsIGZvcgogCQkJCQlyZXBvcnRpbmcgZXJyb25l b3VzIGtleSB2YWx1ZQogCQkJCQlpZiBhcHBsaWNhYmxlICovCisJX19hdHRyaWJ1dGVfXygobm9u bnVsbCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKIEFsbG9jYXRlIGEgc29ydCBidWZmZXIuCiBAcmV0 dXJuIG93bjogc29ydCBidWZmZXIgKi8KQEAgLTM5MSw3ICszOTYsNyBAQCByb3dfbWVyZ2VfcmVh ZCgKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKIFJlYWQgYSBtZXJnZSByZWNvcmQuCiBAcmV0dXJuIHBvaW50 ZXIgdG8gbmV4dCByZWNvcmQsIG9yIE5VTEwgb24gSS9PIGVycm9yIG9yIGVuZCBvZiBsaXN0ICov Ci1VTklWX0lOVEVSTiBfX2F0dHJpYnV0ZV9fKChub25udWxsKSkKK1VOSVZfSU5URVJOCiBjb25z dCBieXRlKgogcm93X21lcmdlX3JlYWRfcmVjKAogLyo9PT09PT09PT09PT09PT0qLwpAQCAtMzk5 LDEwICs0MDQsMTIgQEAgcm93X21lcmdlX3JlYWRfcmVjKAogCW1yZWNfYnVmX3QqCQlidWYsCS8q ITwgaW4vb3V0OiBzZWNvbmRhcnkgYnVmZmVyICovCiAJY29uc3QgYnl0ZSoJCWIsCS8qITwgaW46 IHBvaW50ZXIgdG8gcmVjb3JkICovCiAJY29uc3QgZGljdF9pbmRleF90KglpbmRleCwJLyohPCBp bjogaW5kZXggb2YgdGhlIHJlY29yZCAqLworCXVsaW50CQkJbl9udWxsLAkvKiE8IGluOiBzaXpl IG9mIHRoZSBOVUxMLWJpdCBiaXRtYXAgKi8KIAlpbnQJCQlmZCwJLyohPCBpbjogZmlsZSBkZXNj cmlwdG9yICovCiAJdWxpbnQqCQkJZm9mZnMsCS8qITwgaW4vb3V0OiBmaWxlIG9mZnNldCAqLwog CWNvbnN0IG1yZWNfdCoqCQltcmVjLAkvKiE8IG91dDogcG9pbnRlciB0byBtZXJnZSByZWNvcmQs CiAJCQkJCW9yIE5VTEwgb24gZW5kIG9mIGxpc3QKIAkJCQkJKG5vbi1OVUxMIG9uIEkvTyBlcnJv cikgKi8KLQl1bGludCoJCQlvZmZzZXRzKTsvKiE8IG91dDogb2Zmc2V0cyBvZiBtcmVjICovCisJ dWxpbnQqCQkJb2Zmc2V0cykvKiE8IG91dDogb2Zmc2V0cyBvZiBtcmVjICovCisJX19hdHRyaWJ1 dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAjZW5kaWYgLyogcm93MG1lcmdl LmggKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3JlbS9yZW0wcmVjLmNj JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3JlbS9yZW0wcmVjLmNjCXJldmlkOnN1bm55LmJhaW5z QG9yYWNsZS5jb20tMjAxMjAzMjkwNzA0MDAtdHZienJoZTU3cXBiOHZncgorKysgYi9zdG9yYWdl L2lubm9iYXNlL3JlbS9yZW0wcmVjLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTIwMzI5MTEyOTAwLXBjcDRjYTZkZjcxNTJicWEKQEAgLTI1MSw2ICsyNTEsOCBAQCByZWNfaW5p dF9vZmZzZXRzX2NvbXBfb3JkaW5hcnkoCiAJCQkJCXRoZSBkYXRhIHBheWxvYWQKIAkJCQkJKHVz dWFsbHkgUkVDX05fTkVXX0VYVFJBX0JZVEVTKSAqLwogCWNvbnN0IGRpY3RfaW5kZXhfdCoJaW5k ZXgsCS8qITwgaW46IHJlY29yZCBkZXNjcmlwdG9yICovCisJdWxpbnQJCQluX251bGwsCS8qITwg aW46IG51bWJlciBvZiBmaWVsZHMgdGhhdAorCQkJCQljYW4gYmUgTlVMTCAqLwogCXVsaW50KgkJ CW9mZnNldHMpLyohPCBpbi9vdXQ6IGFycmF5IG9mIG9mZnNldHM7CiAJCQkJCWluOiBuPXJlY19v ZmZzX25fZmllbGRzKG9mZnNldHMpICovCiB7CkBAIC0yNTgsOCArMjYwLDcgQEAgcmVjX2luaXRf b2Zmc2V0c19jb21wX29yZGluYXJ5KAogCXVsaW50CQlvZmZzCQk9IDA7CiAJdWxpbnQJCWFueV9l eHQJCT0gMDsKIAljb25zdCBieXRlKgludWxscwkJPSByZWMgLSAoZXh0cmEgKyAxKTsKLQljb25z dCBieXRlKglsZW5zCQk9IG51bGxzCi0JCS0gVVRfQklUU19JTl9CWVRFUyhpbmRleC0+bl9udWxs YWJsZSk7CisJY29uc3QgYnl0ZSoJbGVucwkJPSBudWxscyAtIFVUX0JJVFNfSU5fQllURVMobl9u dWxsKTsKIAlkaWN0X2ZpZWxkX3QqCWZpZWxkOwogCXVsaW50CQludWxsX21hc2sJPSAxOwogCkBA IC0yNzAsNiArMjcxLDcgQEAgcmVjX2luaXRfb2Zmc2V0c19jb21wX29yZGluYXJ5KAogCW9mZnNl dHNbMl0gPSAodWxpbnQpIHJlYzsKIAlvZmZzZXRzWzNdID0gKHVsaW50KSBpbmRleDsKICNlbmRp ZiAvKiBVTklWX0RFQlVHICovCisJdXRfYWQobl9udWxsID49IGluZGV4LT5uX251bGxhYmxlKTsK IAogCS8qIHJlYWQgdGhlIGxlbmd0aHMgb2YgZmllbGRzIDAuLm4gKi8KIAlkbyB7CkBAIC0zOTQs OSArMzk2LDkgQEAgcmVjX2luaXRfb2Zmc2V0cygKIAkJCQk9IGRpY3RfaW5kZXhfZ2V0X25fdW5p cXVlX2luX3RyZWUoaW5kZXgpOwogCQkJYnJlYWs7CiAJCWNhc2UgUkVDX1NUQVRVU19PUkRJTkFS WToKLQkJCXJlY19pbml0X29mZnNldHNfY29tcF9vcmRpbmFyeShyZWMsCi0JCQkJCQkgICAgICAg UkVDX05fTkVXX0VYVFJBX0JZVEVTLAotCQkJCQkJICAgICAgIGluZGV4LCBvZmZzZXRzKTsKKwkJ CXJlY19pbml0X29mZnNldHNfY29tcF9vcmRpbmFyeSgKKwkJCQlyZWMsIFJFQ19OX05FV19FWFRS QV9CWVRFUywKKwkJCQlpbmRleCwgaW5kZXgtPm5fbnVsbGFibGUsIG9mZnNldHMpOwogCQkJcmV0 dXJuOwogCQl9CiAKQEAgLTc4NCw2ICs3ODYsOCBAQCByZWNfZ2V0X2NvbnZlcnRlZF9zaXplX2Nv bXBfcHJlZml4KAogCQkJCQlpdCBkb2VzIG5vdCAqLwogCWNvbnN0IGRmaWVsZF90KgkJZmllbGRz LAkvKiE8IGluOiBhcnJheSBvZiBkYXRhIGZpZWxkcyAqLwogCXVsaW50CQkJbl9maWVsZHMsLyoh PCBpbjogbnVtYmVyIG9mIGRhdGEgZmllbGRzICovCisJdWxpbnQJCQluX251bGwsCS8qITwgaW46 IG51bWJlciBvZiBmaWVsZHMgdGhhdAorCQkJCQljYW4gYmUgTlVMTCAqLwogCXVsaW50KgkJCWV4 dHJhKQkvKiE8IG91dDogZXh0cmEgc2l6ZSAqLwogewogCXVsaW50CWV4dHJhX3NpemU7CkBAIC03 OTMsOSArNzk3LDkgQEAgcmVjX2dldF9jb252ZXJ0ZWRfc2l6ZV9jb21wX3ByZWZpeCgKIAl1dF9h ZChmaWVsZHMpOwogCXV0X2FkKG5fZmllbGRzID4gMCk7CiAJdXRfYWQobl9maWVsZHMgPD0gZGlj dF9pbmRleF9nZXRfbl9maWVsZHMoaW5kZXgpKTsKKwl1dF9hZChuX251bGwgPj0gaW5kZXgtPm5f bnVsbGFibGUpOwogCi0JZXh0cmFfc2l6ZSA9IFJFQ19OX05FV19FWFRSQV9CWVRFUwotCQkrIFVU X0JJVFNfSU5fQllURVMoaW5kZXgtPm5fbnVsbGFibGUpOworCWV4dHJhX3NpemUgPSBSRUNfTl9O RVdfRVhUUkFfQllURVMgKyBVVF9CSVRTX0lOX0JZVEVTKG5fbnVsbCk7CiAJZGF0YV9zaXplID0g MDsKIAogCS8qIHJlYWQgdGhlIGxlbmd0aHMgb2YgZmllbGRzIDAuLm4gKi8KQEAgLTg2OSwxMiAr ODczLDE1IEBAIHJlY19nZXRfY29udmVydGVkX3NpemVfY29tcCgKIAl1bGludAkJCXN0YXR1cywJ LyohPCBpbjogc3RhdHVzIGJpdHMgb2YgdGhlIHJlY29yZCAqLwogCWNvbnN0IGRmaWVsZF90KgkJ ZmllbGRzLAkvKiE8IGluOiBhcnJheSBvZiBkYXRhIGZpZWxkcyAqLwogCXVsaW50CQkJbl9maWVs ZHMsLyohPCBpbjogbnVtYmVyIG9mIGRhdGEgZmllbGRzICovCisJdWxpbnQJCQluX251bGwsCS8q ITwgaW46IG51bWJlciBvZiBmaWVsZHMgdGhhdAorCQkJCQljYW4gYmUgTlVMTCAqLwogCXVsaW50 KgkJCWV4dHJhKQkvKiE8IG91dDogZXh0cmEgc2l6ZSAqLwogewogCXVsaW50CXNpemU7CiAJdXRf YWQoaW5kZXgpOwogCXV0X2FkKGZpZWxkcyk7CiAJdXRfYWQobl9maWVsZHMgPiAwKTsKKwl1dF9h ZChuX251bGwgPj0gaW5kZXgtPm5fbnVsbGFibGUpOwogCiAJc3dpdGNoIChVTklWX0VYUEVDVChz dGF0dXMsIFJFQ19TVEFUVVNfT1JESU5BUlkpKSB7CiAJY2FzZSBSRUNfU1RBVFVTX09SRElOQVJZ OgpAQCAtODk5LDggKzkwNiw4IEBAIHJlY19nZXRfY29udmVydGVkX3NpemVfY29tcCgKIAkJcmV0 dXJuKFVMSU5UX1VOREVGSU5FRCk7CiAJfQogCi0JcmV0dXJuKHNpemUgKyByZWNfZ2V0X2NvbnZl cnRlZF9zaXplX2NvbXBfcHJlZml4KGluZGV4LCBmaWVsZHMsCi0JCQkJCQkJIG5fZmllbGRzLCBl eHRyYSkpOworCXJldHVybihzaXplICsgcmVjX2dldF9jb252ZXJ0ZWRfc2l6ZV9jb21wX3ByZWZp eCgKKwkJICAgICAgIGluZGV4LCBmaWVsZHMsIG5fZmllbGRzLCBuX251bGwsIGV4dHJhKSk7CiB9 CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKQEAgLTEwODksNyArMTA5Niw5IEBAIHJlY19jb252ZXJ0X2R0dXBsZV90b19y ZWNfY29tcCgKIAljb25zdCBkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiByZWNvcmQgZGVz Y3JpcHRvciAqLwogCXVsaW50CQkJc3RhdHVzLAkvKiE8IGluOiBzdGF0dXMgYml0cyBvZiB0aGUg cmVjb3JkICovCiAJY29uc3QgZGZpZWxkX3QqCQlmaWVsZHMsCS8qITwgaW46IGFycmF5IG9mIGRh dGEgZmllbGRzICovCi0JdWxpbnQJCQluX2ZpZWxkcykvKiE8IGluOiBudW1iZXIgb2YgZGF0YSBm aWVsZHMgKi8KKwl1bGludAkJCW5fZmllbGRzLC8qITwgaW46IG51bWJlciBvZiBkYXRhIGZpZWxk cyAqLworCXVsaW50CQkJbl9udWxsKQkvKiE8IGluOiBudW1iZXIgb2YgZmllbGRzIHRoYXQKKwkJ CQkJY2FuIGJlIE5VTEwgKi8KIHsKIAljb25zdCBkZmllbGRfdCoJZmllbGQ7CiAJY29uc3QgZHR5 cGVfdCoJdHlwZTsKQEAgLTExMDQsNiArMTExMyw3IEBAIHJlY19jb252ZXJ0X2R0dXBsZV90b19y ZWNfY29tcCgKIAl1dF9hZChleHRyYSA9PSAwIHx8IGRpY3RfdGFibGVfaXNfY29tcChpbmRleC0+ dGFibGUpKTsKIAl1dF9hZChleHRyYSA9PSAwIHx8IGV4dHJhID09IFJFQ19OX05FV19FWFRSQV9C WVRFUyk7CiAJdXRfYWQobl9maWVsZHMgPiAwKTsKKwl1dF9hZChuX251bGwgPj0gaW5kZXgtPm5f bnVsbGFibGUpOwogCiAJc3dpdGNoIChVTklWX0VYUEVDVChzdGF0dXMsIFJFQ19TVEFUVVNfT1JE SU5BUlkpKSB7CiAJY2FzZSBSRUNfU1RBVFVTX09SRElOQVJZOgpAQCAtMTEyNiw3ICsxMTM2LDcg QEAgcmVjX2NvbnZlcnRfZHR1cGxlX3RvX3JlY19jb21wKAogCiAJZW5kID0gcmVjOwogCW51bGxz ID0gcmVjIC0gKGV4dHJhICsgMSk7Ci0JbGVucyA9IG51bGxzIC0gVVRfQklUU19JTl9CWVRFUyhp bmRleC0+bl9udWxsYWJsZSk7CisJbGVucyA9IG51bGxzIC0gVVRfQklUU19JTl9CWVRFUyhuX251 bGwpOwogCS8qIGNsZWFyIHRoZSBTUUwtbnVsbCBmbGFncyAqLwogCW1lbXNldChsZW5zICsgMSwg MCwgbnVsbHMgLSBsZW5zKTsKIApAQCAtMTIyOSwxMiArMTIzOSwxMiBAQCByZWNfY29udmVydF9k dHVwbGVfdG9fcmVjX25ldygKIAlzdGF0dXMgPSBkdHVwbGVfZ2V0X2luZm9fYml0cyhkdHVwbGUp ICYgUkVDX05FV19TVEFUVVNfTUFTSzsKIAlyZWNfZ2V0X2NvbnZlcnRlZF9zaXplX2NvbXAoaW5k ZXgsIHN0YXR1cywKIAkJCQkgICAgZHR1cGxlLT5maWVsZHMsIGR0dXBsZS0+bl9maWVsZHMsCi0J CQkJICAgICZleHRyYV9zaXplKTsKKwkJCQkgICAgaW5kZXgtPm5fbnVsbGFibGUsICZleHRyYV9z aXplKTsKIAlyZWMgPSBidWYgKyBleHRyYV9zaXplOwogCiAJcmVjX2NvbnZlcnRfZHR1cGxlX3Rv X3JlY19jb21wKAogCQlyZWMsIFJFQ19OX05FV19FWFRSQV9CWVRFUywgaW5kZXgsIHN0YXR1cywK LQkJZHR1cGxlLT5maWVsZHMsIGR0dXBsZS0+bl9maWVsZHMpOworCQlkdHVwbGUtPmZpZWxkcywg ZHR1cGxlLT5uX2ZpZWxkcywgaW5kZXgtPm5fbnVsbGFibGUpOwogCiAJLyogU2V0IHRoZSBpbmZv IGJpdHMgb2YgdGhlIHJlY29yZCAqLwogCXJlY19zZXRfaW5mb19hbmRfc3RhdHVzX2JpdHMocmVj LCBkdHVwbGVfZ2V0X2luZm9fYml0cyhkdHVwbGUpKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9y YWdlL2lubm9iYXNlL3Jvdy9yb3cwZnRzb3J0LmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jv dy9yb3cwZnRzb3J0LmNjCXJldmlkOnN1bm55LmJhaW5zQG9yYWNsZS5jb20tMjAxMjAzMjkwNzA0 MDAtdHZienJoZTU3cXBiOHZncgorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwZnRzb3J0 LmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwMzI5MTEyOTAwLXBjcDRjYTZk ZjcxNTJicWEKQEAgLTM1LDcgKzM1LDcgQEAgQ3JlYXRlZCAxMC8xMy8yMDEwIEppbW15IFlhbmcK ICNkZWZpbmUgUk9XX01FUkdFX1JFQURfR0VUX05FWFQoTikJCQkJCVwKIAlkbyB7CQkJCQkJCQlc CiAJCWJbTl0gPSByb3dfbWVyZ2VfcmVhZF9yZWMoCQkJCVwKLQkJCWJsb2NrW05dLCBidWZbTl0s IGJbTl0sIGluZGV4LAkJCVwKKwkJCWJsb2NrW05dLCBidWZbTl0sIGJbTl0sIGluZGV4LCBuX251 bGwsCQlcCiAJCQlmZFtOXSwgJmZvZmZzW05dLCAmbXJlY1tOXSwgb2Zmc2V0c1tOXSk7CVwKIAkJ aWYgKFVOSVZfVU5MSUtFTFkoIWJbTl0pKSB7CQkJCVwKIAkJCWlmIChtcmVjW05dKSB7CQkJCQlc CkBAIC00MzAsMTIgKzQzMCwxMiBAQCByb3dfbWVyZ2VfZnRzX2RvY190b2tlbml6ZSgKIAkJdXRf YSh0X2N0eC0+YnVmX3VzZWQgPCBGVFNfTlVNX0FVWF9JTkRFWCk7CiAJCWlkeCA9IHRfY3R4LT5i dWZfdXNlZDsKIAotCQlidWYtPnR1cGxlc1tidWYtPm5fdHVwbGVzICsgbl90dXBsZVtpZHhdXSA9 IGZpZWxkID0KLQkJCXN0YXRpY19jYXN0PGRmaWVsZF90Kj4obWVtX2hlYXBfYWxsb2MoCi0JCQkJ YnVmLT5oZWFwLAotCQkJCUZUU19OVU1fRklFTERTX1NPUlQgKiBzaXplb2YgKmZpZWxkKSk7CisJ CW10dXBsZV90KiBtdHVwbGUgPSAmYnVmLT50dXBsZXNbYnVmLT5uX3R1cGxlcyArIG5fdHVwbGVb aWR4XV07CiAKLQkJdXRfYShmaWVsZCk7CisJCW10dXBsZS0+ZGVsX21hcmsgPSBmYWxzZTsKKwkJ ZmllbGQgPSBtdHVwbGUtPmZpZWxkcyA9IHN0YXRpY19jYXN0PGRmaWVsZF90Kj4oCisJCQltZW1f aGVhcF9hbGxvYyhidWYtPmhlYXAsCisJCQkJICAgICAgIEZUU19OVU1fRklFTERTX1NPUlQgKiBz aXplb2YgKmZpZWxkKSk7CiAKIAkJLyogVGhlIGZpcnN0IGZpZWxkIGlzIHRoZSB0b2tlbml6ZWQg d29yZCAqLwogCQlkZmllbGRfc2V0X2RhdGEoZmllbGQsIHRfc3RyLmZfc3RyLCB0X3N0ci5mX2xl bik7CkBAIC01MTksNiArNTE5LDEwIEBAIHJvd19tZXJnZV9mdHNfZG9jX3Rva2VuaXplKAogCS8q IFVwZGF0ZSB0aGUgZGF0YSBsZW5ndGggYW5kIHRoZSBudW1iZXIgb2YgbmV3IHdvcmQgdHVwbGVz CiAJYWRkZWQgaW4gdGhpcyByb3VuZCBvZiB0b2tlbml6YXRpb24gKi8KIAlmb3IgKGkgPSAwOyBp IDwgIEZUU19OVU1fQVVYX0lOREVYOyBpKyspIHsKKwkJLyogVGhlIGNvbXB1dGF0aW9uIG9mIHRv dGFsX3NpemUgYmVsb3cgYXNzdW1lcyB0aGF0IG5vCisJCWRlbGV0ZS1tYXJrIGZsYWdzIHdpbGwg YmUgc3RvcmVkIGFuZCB0aGF0IGFsbCBmaWVsZHMKKwkJYXJlIE5PVCBOVUxMIGFuZCBmaXhlZC1s ZW5ndGguICovCisKIAkJc29ydF9idWZbaV0tPnRvdGFsX3NpemUgKz0gZGF0YV9zaXplW2ldOwog CiAJCXNvcnRfYnVmW2ldLT5uX3R1cGxlcyArPSBuX3R1cGxlW2ldOwpAQCAtMTMzNiw2ICsxMzQw LDggQEAgcm93X2Z0c19tZXJnZV9pbnNlcnQoCiAJaW5zX2N0eC5mdHNfdGFibGUucGFyZW50ID0g aW5kZXgtPnRhYmxlLT5uYW1lOwogCWluc19jdHguZnRzX3RhYmxlLnRhYmxlID0gTlVMTDsKIAor CWNvbnN0IHVsaW50CW5fbnVsbCA9IGluZGV4LT5uX251bGxhYmxlOworCiAJZm9yIChpID0gMDsg aSA8IGZ0c19zb3J0X3BsbF9kZWdyZWU7IGkrKykgewogCQlpZiAocHNvcnRfaW5mb1tpXS5tZXJn ZV9maWxlW2lkXS0+bl9yZWMgPT0gMCkgewogCQkJLyogTm8gUm93cyB0byByZWFkICovCgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGxvZy5jYycKLS0tIGEvc3Rv cmFnZS9pbm5vYmFzZS9yb3cvcm93MGxvZy5jYwlyZXZpZDpzdW5ueS5iYWluc0BvcmFjbGUuY29t LTIwMTIwMzI5MDcwNDAwLXR2YnpyaGU1N3FwYjh2Z3IKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9y b3cvcm93MGxvZy5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDMyOTExMjkw MC1wY3A0Y2E2ZGY3MTUyYnFhCkBAIC0xMzcsOSArMTM3LDkgQEAgb3Bfb2s6CiAJcm93X21lcmdl X2J1Zl9lbmNvZGUoKSwgYmVjYXVzZSBoZXJlIHdlIGRvIG5vdCBlbmNvZGUKIAlleHRyYV9zaXpl KzEgKGFuZCByZXNlcnZlIDAgYXMgdGhlIGVuZC1vZi1jaHVuayBtYXJrZXIpLiAqLwogCi0Jc2l6 ZSA9IHJlY19nZXRfY29udmVydGVkX3NpemVfY29tcCgKLQkJaW5kZXgsIFJFQ19TVEFUVVNfT1JE SU5BUlksCi0JCXR1cGxlLT5maWVsZHMsIHR1cGxlLT5uX2ZpZWxkcywgJmV4dHJhX3NpemUpOwor CXNpemUgPSByZWNfZ2V0X2NvbnZlcnRlZF9zaXplX2NvbXBfcHJlZml4KAorCQlpbmRleCwgdHVw bGUtPmZpZWxkcywgdHVwbGUtPm5fZmllbGRzLAorCQlpbmRleC0+bl9udWxsYWJsZSwgJmV4dHJh X3NpemUpOwogCXV0X2FkKHNpemUgPj0gZXh0cmFfc2l6ZSk7CiAJdXRfYWQoZXh0cmFfc2l6ZSA+ PSBSRUNfTl9ORVdfRVhUUkFfQllURVMpOwogCWV4dHJhX3NpemUgLT0gUkVDX05fTkVXX0VYVFJB X0JZVEVTOwpAQCAtMTcwLDcgKzE3MCw4IEBAIG9wX29rOgogCiAJcmVjX2NvbnZlcnRfZHR1cGxl X3RvX3JlY19jb21wKAogCQliICsgZXh0cmFfc2l6ZSwgMCwgaW5kZXgsCi0JCVJFQ19TVEFUVVNf T1JESU5BUlksIHR1cGxlLT5maWVsZHMsIHR1cGxlLT5uX2ZpZWxkcyk7CisJCVJFQ19TVEFUVVNf T1JESU5BUlksIHR1cGxlLT5maWVsZHMsIHR1cGxlLT5uX2ZpZWxkcywKKwkJaW5kZXgtPm5fbnVs bGFibGUpOwogCWIgKz0gc2l6ZTsKIAogCWlmIChtcmVjX3NpemUgPj0gYXZhaWxfc2l6ZSkgewpA QCAtNjc5LDcgKzY4MCw4IEBAIGNvcnJ1cHRlZDoKIAkJcmV0dXJuKE5VTEwpOwogCX0KIAotCXJl Y19pbml0X29mZnNldHNfY29tcF9vcmRpbmFyeShtcmVjLCAwLCBpbmRleCwgb2Zmc2V0cyk7CisJ cmVjX2luaXRfb2Zmc2V0c19jb21wX29yZGluYXJ5KAorCQltcmVjLCAwLCBpbmRleCwgaW5kZXgt Pm5fbnVsbGFibGUsIG9mZnNldHMpOwogCiAJaWYgKHJlY19vZmZzX2FueV9leHRlcm4ob2Zmc2V0 cykpIHsKIAkJLyogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIGFueSBleHRlcm5hbGx5IHN0b3JlZCBm aWVsZHMKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2Uu Y2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBtZXJnZS5jYwlyZXZpZDpzdW5ueS5i YWluc0BvcmFjbGUuY29tLTIwMTIwMzI5MDcwNDAwLXR2YnpyaGU1N3FwYjh2Z3IKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9yb3cvcm93MG1lcmdlLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTIwMzI5MTEyOTAwLXBjcDRjYTZkZjcxNTJicWEKQEAgLTkwLDE4ICs5MCwyMCBAQCBV TklWX0lOVEVSTiBjaGFyCXNydl9kaXNhYmxlX3NvcnRfZmlsZV9jCiAjaWZkZWYgVU5JVl9ERUJV RwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKIERpc3BsYXkgYSBtZXJnZSB0dXBsZS4gKi8KLXN0YXRpYworc3RhdGljIF9fYXR0cmli dXRlX18oKG5vbm51bGwpKQogdm9pZAogcm93X21lcmdlX3R1cGxlX3ByaW50KAogLyo9PT09PT09 PT09PT09PT09PT0qLwogCUZJTEUqCQlmLAkvKiE8IGluOiBvdXRwdXQgc3RyZWFtICovCi0JY29u c3QgZGZpZWxkX3QqCWVudHJ5LAkvKiE8IGluOiB0dXBsZSB0byBwcmludCAqLworCWNvbnN0IG10 dXBsZV90KgllbnRyeSwJLyohPCBpbjogdHVwbGUgdG8gcHJpbnQgKi8KIAl1bGludAkJbl9maWVs ZHMpLyohPCBpbjogbnVtYmVyIG9mIGZpZWxkcyBpbiB0aGUgdHVwbGUgKi8KIHsKIAl1bGludAlq OwogCisJZnB1dHMoZW50cnktPmRlbF9tYXJrID8gIihkZWxldGVkKSIgOiAiIiwgc3RkZXJyKTsK KwogCWZvciAoaiA9IDA7IGogPCBuX2ZpZWxkczsgaisrKSB7Ci0JCWNvbnN0IGRmaWVsZF90Kglm aWVsZCA9ICZlbnRyeVtqXTsKKwkJY29uc3QgZGZpZWxkX3QqCWZpZWxkID0gJmVudHJ5LT5maWVs ZHNbal07CiAKIAkJaWYgKGRmaWVsZF9pc19udWxsKGZpZWxkKSkgewogCQkJZnB1dHMoIlxuIE5V TEw7IiwgZik7CkBAIC0xMjUsMjUgKzEyNywyOSBAQCByb3dfbWVyZ2VfdHVwbGVfcHJpbnQoCiAK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCiBFbmNvZGUgYW4gaW5kZXggcmVjb3JkLiAqLwotc3RhdGljCitzdGF0aWMgX19hdHRyaWJ1 dGVfXygobm9ubnVsbCkpCiB2b2lkCiByb3dfbWVyZ2VfYnVmX2VuY29kZSgKIC8qPT09PT09PT09 PT09PT09PT0qLwogCWJ5dGUqKgkJCWIsCQkvKiE8IGluL291dDogcG9pbnRlciB0bwogCQkJCQkJ Y3VycmVudCBlbmQgb2Ygb3V0cHV0IGJ1ZmZlciAqLwogCWNvbnN0IGRpY3RfaW5kZXhfdCoJaW5k ZXgsCQkvKiE8IGluOiBpbmRleCAqLwotCWNvbnN0IGRmaWVsZF90KgkJZW50cnksCQkvKiE8IGlu OiBpbmRleCBmaWVsZHMKKwljb25zdCBtdHVwbGVfdCoJCWVudHJ5LAkJLyohPCBpbjogaW5kZXgg ZmllbGRzCiAJCQkJCQlvZiB0aGUgcmVjb3JkIHRvIGVuY29kZSAqLwotCXVsaW50CQkJbl9maWVs ZHMpCS8qITwgaW46IG51bWJlciBvZiBmaWVsZHMKKwl1bGludAkJCW5fZmllbGRzLAkvKiE8IGlu OiBudW1iZXIgb2YgZmllbGRzCiAJCQkJCQlpbiB0aGUgZW50cnkgKi8KKwl1bGludAkJCW5fbnVs bCkJCS8qITwgaW46IHNpemUgb2YgdGhlIG51bGwKKwkJCQkJCWZsYWdzIGJpdG1hcCAqLwogewog CXVsaW50CXNpemU7CiAJdWxpbnQJZXh0cmFfc2l6ZTsKIAotCXNpemUgPSByZWNfZ2V0X2NvbnZl cnRlZF9zaXplX2NvbXAoCi0JCWluZGV4LCBSRUNfU1RBVFVTX09SRElOQVJZLCBlbnRyeSwgbl9m aWVsZHMsICZleHRyYV9zaXplKTsKKwlzaXplID0gcmVjX2dldF9jb252ZXJ0ZWRfc2l6ZV9jb21w X3ByZWZpeCgKKwkJaW5kZXgsIGVudHJ5LT5maWVsZHMsIG5fZmllbGRzLCBuX251bGwsICZleHRy YV9zaXplKTsKIAl1dF9hZChzaXplID49IGV4dHJhX3NpemUpOwogCXV0X2FkKGV4dHJhX3NpemUg Pj0gUkVDX05fTkVXX0VYVFJBX0JZVEVTKTsKKwl1dF9hZCgodWxpbnQpIChuX251bGwgLSBpbmRl eC0+bl9udWxsYWJsZSkgPD0gMSk7CisKIAlleHRyYV9zaXplIC09IFJFQ19OX05FV19FWFRSQV9C WVRFUzsKIAlzaXplIC09IFJFQ19OX05FV19FWFRSQV9CWVRFUzsKIApAQCAtMTU3LDcgKzE2Mywx NyBAQCByb3dfbWVyZ2VfYnVmX2VuY29kZSgKIAl9CiAKIAlyZWNfY29udmVydF9kdHVwbGVfdG9f cmVjX2NvbXAoKmIgKyBleHRyYV9zaXplLCAwLCBpbmRleCwKLQkJCQkgICAgICAgUkVDX1NUQVRV U19PUkRJTkFSWSwgZW50cnksIG5fZmllbGRzKTsKKwkJCQkgICAgICAgUkVDX1NUQVRVU19PUkRJ TkFSWSwKKwkJCQkgICAgICAgZW50cnktPmZpZWxkcywgbl9maWVsZHMsIG5fbnVsbCk7CisKKwkv KiBJbiBtcmVjLCB0aGUgZGVsZXRlLW1hcmsgZmxhZyBpcyBzdG9yZWQgaW4gdGhlIE5VTEwgZmxh Z3MKKwliaXRtYXAgYWZ0ZXIgdGhlIGZsYWdzIG9mIGFueSBmaWVsZHMgdGhhdCBjYW4gYmUgTlVM TC4gKi8KKwlpZiAoZW50cnktPmRlbF9tYXJrKSB7CisJCXV0X2FkKG5fbnVsbCA9PSAodWxpbnQp IGluZGV4LT5uX251bGxhYmxlICsgMSk7CisJCSgqYilbZXh0cmFfc2l6ZSAtIDEgLSAoaW50KSBp bmRleC0+bl9udWxsYWJsZSAvIDhdCisJCQl8PSAxIDw8IChpbmRleC0+bl9udWxsYWJsZSAmIDcp OworCX0KKwogCSpiICs9IHNpemU7CiB9CiAKQEAgLTE4NSw3ICsyMDEsNyBAQCByb3dfbWVyZ2Vf YnVmX2NyZWF0ZV9sb3coCiAJYnVmLT5oZWFwID0gaGVhcDsKIAlidWYtPmluZGV4ID0gaW5kZXg7 CiAJYnVmLT5tYXhfdHVwbGVzID0gbWF4X3R1cGxlczsKLQlidWYtPnR1cGxlcyA9IHN0YXRpY19j YXN0PGNvbnN0IGRmaWVsZF90Kio+KAorCWJ1Zi0+dHVwbGVzID0gc3RhdGljX2Nhc3Q8bXR1cGxl X3QqPigKIAkJdXRfbWFsbG9jKDIgKiBtYXhfdHVwbGVzICogc2l6ZW9mICpidWYtPnR1cGxlcykp OwogCWJ1Zi0+dG1wX3R1cGxlcyA9IGJ1Zi0+dHVwbGVzICsgbWF4X3R1cGxlczsKIApAQCAtMjI3 LDEzICsyNDMsMTEgQEAgcm93X21lcmdlX2J1Zl9lbXB0eSgKIC8qPT09PT09PT09PT09PT09PSov CiAJcm93X21lcmdlX2J1Zl90KglidWYpCS8qITwgaW4sb3duOiBzb3J0IGJ1ZmZlciAqLwogewot CXVsaW50CQlidWZfc2l6ZTsKKwl1bGludAkJYnVmX3NpemUJPSBzaXplb2YgKmJ1ZjsKIAl1bGlu dAkJbWF4X3R1cGxlcwk9IGJ1Zi0+bWF4X3R1cGxlczsKIAltZW1faGVhcF90KgloZWFwCQk9IGJ1 Zi0+aGVhcDsKIAlkaWN0X2luZGV4X3QqCWluZGV4CQk9IGJ1Zi0+aW5kZXg7Ci0Jdm9pZCoJCXR1 cGxlCQk9IGJ1Zi0+dHVwbGVzOwotCi0JYnVmX3NpemUgPSAoc2l6ZW9mICpidWYpOzsKKwltdHVw bGVfdCoJdHVwbGVzCQk9IGJ1Zi0+dHVwbGVzOwogCiAJbWVtX2hlYXBfZW1wdHkoaGVhcCk7CiAK QEAgLTI0MSw3ICsyNTUsNyBAQCByb3dfbWVyZ2VfYnVmX2VtcHR5KAogCWJ1Zi0+aGVhcCA9IGhl YXA7CiAJYnVmLT5pbmRleCA9IGluZGV4OwogCWJ1Zi0+bWF4X3R1cGxlcyA9IG1heF90dXBsZXM7 Ci0JYnVmLT50dXBsZXMgPSBzdGF0aWNfY2FzdDxjb25zdCBkZmllbGRfdCoqPih0dXBsZSk7CisJ YnVmLT50dXBsZXMgPSB0dXBsZXM7CiAJYnVmLT50bXBfdHVwbGVzID0gYnVmLT50dXBsZXMgKyBt YXhfdHVwbGVzOwogCiAJcmV0dXJuKGJ1Zik7CkBAIC0yNzksNyArMjkzLDcgQEAgcm93X21lcmdl X2J1Zl9hZGQoCiB7CiAJdWxpbnQJCQlpOwogCWNvbnN0IGRpY3RfaW5kZXhfdCoJaW5kZXg7Ci0J ZGZpZWxkX3QqCQllbnRyeTsKKwltdHVwbGVfdCoJCWVudHJ5OwogCWRmaWVsZF90KgkJZmllbGQ7 CiAJY29uc3QgZGljdF9maWVsZF90KglpZmllbGQ7CiAJdWxpbnQJCQluX2ZpZWxkczsKQEAgLTMw NiwxNCArMzIwLDE3IEBAIHJvd19tZXJnZV9idWZfYWRkKAogCiAJbl9maWVsZHMgPSBkaWN0X2lu ZGV4X2dldF9uX2ZpZWxkcyhpbmRleCk7CiAKLQllbnRyeSA9IHN0YXRpY19jYXN0PGRmaWVsZF90 Kj4oCi0JCW1lbV9oZWFwX2FsbG9jKGJ1Zi0+aGVhcCwgbl9maWVsZHMgKiBzaXplb2YgKmVudHJ5 KSk7Ci0KLQlidWYtPnR1cGxlc1tidWYtPm5fdHVwbGVzXSA9IGVudHJ5OwotCWZpZWxkID0gZW50 cnk7CisJZW50cnkgPSAmYnVmLT50dXBsZXNbYnVmLT5uX3R1cGxlc107CisJZW50cnktPmRlbF9t YXJrID0gISEoZHR1cGxlX2dldF9pbmZvX2JpdHMocm93KQorCQkJICAgICAmIFJFQ19JTkZPX0RF TEVURURfRkxBRyk7CisJZmllbGQgPSBlbnRyeS0+ZmllbGRzID0gc3RhdGljX2Nhc3Q8ZGZpZWxk X3QqPigKKwkJbWVtX2hlYXBfYWxsb2MoYnVmLT5oZWFwLCBuX2ZpZWxkcyAqIHNpemVvZiAqZW50 cnktPmZpZWxkcykpOwogCiAJZGF0YV9zaXplID0gMDsKLQlleHRyYV9zaXplID0gVVRfQklUU19J Tl9CWVRFUyhpbmRleC0+bl9udWxsYWJsZSk7CisJZXh0cmFfc2l6ZSA9IFVUX0JJVFNfSU5fQllU RVMoCisJCWluZGV4LT5uX251bGxhYmxlCisJCSsgKGRpY3RfaW5kZXhfZ2V0X29ubGluZV9zdGF0 dXMoaW5kZXgpCisJCSAgICE9IE9OTElORV9JTkRFWF9DT01QTEVURSkpOwogCiAJaWZpZWxkID0g ZGljdF9pbmRleF9nZXRfbnRoX2ZpZWxkKGluZGV4LCAwKTsKIApAQCAtNDkxLDkgKzUwOCwxMiBA QCByb3dfbWVyZ2VfYnVmX2FkZCgKIAkJdWxpbnQJc2l6ZTsKIAkJdWxpbnQJZXh0cmE7CiAKLQkJ c2l6ZSA9IHJlY19nZXRfY29udmVydGVkX3NpemVfY29tcChpbmRleCwKLQkJCQkJCSAgIFJFQ19T VEFUVVNfT1JESU5BUlksCi0JCQkJCQkgICBlbnRyeSwgbl9maWVsZHMsICZleHRyYSk7CisJCXNp emUgPSByZWNfZ2V0X2NvbnZlcnRlZF9zaXplX2NvbXBfcHJlZml4KAorCQkJaW5kZXgsIGVudHJ5 LT5maWVsZHMsIG5fZmllbGRzLAorCQkJaW5kZXgtPm5fbnVsbGFibGUKKwkJCSsgKGRpY3RfaW5k ZXhfZ2V0X29ubGluZV9zdGF0dXMoaW5kZXgpCisJCQkgICAhPSBPTkxJTkVfSU5ERVhfQ09NUExF VEUpLAorCQkJJmV4dHJhKTsKIAogCQl1dF9hZChkYXRhX3NpemUgKyBleHRyYSA9PSBzaXplKTsK IAkJdXRfYWQoZXh0cmFfc2l6ZSArIFJFQ19OX05FV19FWFRSQV9CWVRFUyA9PSBleHRyYSk7CkBA IC01MDYsMTIgKzUyNiw2IEBAIHJvd19tZXJnZV9idWZfYWRkKAogCW9mIGV4dHJhX3NpemUuICov CiAJZGF0YV9zaXplICs9IChleHRyYV9zaXplICsgMSkgKyAoKGV4dHJhX3NpemUgKyAxKSA+PSAw eDgwKTsKIAotCS8qIFRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIG1heSBmYWlsIGlmIHJvd19tZXJn ZV9ibG9ja190IGlzCi0JZGVjbGFyZWQgdmVyeSBzbWFsbCBhbmQgYSBQUklNQVJZIEtFWSBpcyBi ZWluZyBjcmVhdGVkIHdpdGgKLQltYW55IHByZWZpeCBjb2x1bW5zLiAgSW4gdGhhdCBjYXNlLCB0 aGUgcmVjb3JkIG1heSBleGNlZWQgdGhlCi0JcGFnZV96aXBfcmVjX25lZWRzX2V4dCgpIGxpbWl0 LiAgSG93ZXZlciwgbm8gZnVydGhlciBjb2x1bW5zCi0Jd2lsbCBiZSBtb3ZlZCB0byBleHRlcm5h bCBzdG9yYWdlIHVudGlsIHRoZSByZWNvcmQgaXMgaW5zZXJ0ZWQKLQl0byB0aGUgY2x1c3RlcmVk IGluZGV4IEItdHJlZS4gKi8KIAl1dF9hZChkYXRhX3NpemUgPCBzcnZfc29ydF9idWZfc2l6ZSk7 CiAKIAkvKiBSZXNlcnZlIG9uZSBieXRlIGZvciB0aGUgZW5kIG1hcmtlciBvZiByb3dfbWVyZ2Vf YmxvY2tfdC4gKi8KQEAgLTUyMyw3ICs1MzcsNyBAQCByb3dfbWVyZ2VfYnVmX2FkZCgKIAlidWYt Pm5fdHVwbGVzKys7CiAJbl9yb3dfYWRkZWQrKzsKIAotCWZpZWxkID0gZW50cnk7CisJZmllbGQg PSBlbnRyeS0+ZmllbGRzOwogCiAJLyogQ29weSB0aGUgZGF0YSBmaWVsZHMuICovCiAKQEAgLTU4 MCwxOSArNTk0LDIwIEBAIHJvd19tZXJnZV9kdXBfcmVwb3J0KAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBDb21wYXJl IHR3byB0dXBsZXMuCiBAcmV0dXJuCTEsIDAsIC0xIGlmIGEgaXMgZ3JlYXRlciwgZXF1YWwsIGxl c3MsIHJlc3BlY3RpdmVseSwgdGhhbiBiICovCi1zdGF0aWMgX19hdHRyaWJ1dGVfXygod2Fybl91 bnVzZWRfcmVzdWx0LCBub25udWxsKDMsNCkpKQorc3RhdGljIF9fYXR0cmlidXRlX18oKHdhcm5f dW51c2VkX3Jlc3VsdCkpCiBpbnQKIHJvd19tZXJnZV90dXBsZV9jbXAoCiAvKj09PT09PT09PT09 PT09PT0qLwogCXVsaW50CQkJbl91bmlxLAkvKiE8IGluOiBudW1iZXIgb2YgdW5pcXVlIGZpZWxk cyAqLwogCXVsaW50CQkJbl9maWVsZCwvKiE8IGluOiBudW1iZXIgb2YgZmllbGRzICovCi0JY29u c3QgZGZpZWxkX3QqCQlhLAkvKiE8IGluOiBmaXJzdCB0dXBsZSB0byBiZSBjb21wYXJlZCAqLwot CWNvbnN0IGRmaWVsZF90KgkJYiwJLyohPCBpbjogc2Vjb25kIHR1cGxlIHRvIGJlIGNvbXBhcmVk ICovCisJY29uc3QgbXR1cGxlX3QmCQlhLAkvKiE8IGluOiBmaXJzdCB0dXBsZSB0byBiZSBjb21w YXJlZCAqLworCWNvbnN0IG10dXBsZV90JgkJYiwJLyohPCBpbjogc2Vjb25kIHR1cGxlIHRvIGJl IGNvbXBhcmVkICovCiAJcm93X21lcmdlX2R1cF90KglkdXApCS8qITwgaW4vb3V0OiBmb3IgcmVw b3J0aW5nIGR1cGxpY2F0ZXMsCiAJCQkJCU5VTEwgaWYgbm9uLXVuaXF1ZSBpbmRleCAqLwogewog CWludAkJY21wOwotCWNvbnN0IGRmaWVsZF90KglmaWVsZAk9IGE7CisJY29uc3QgZGZpZWxkX3Qq CWFmCT0gYS5maWVsZHM7CisJY29uc3QgZGZpZWxkX3QqCWJmCT0gYi5maWVsZHM7CiAJdWxpbnQJ CW4JPSBuX3VuaXE7CiAKIAl1dF9hZChuX2ZpZWxkID4gMCk7CkBAIC02MDIsNyArNjE3LDcgQEAg cm93X21lcmdlX3R1cGxlX2NtcCgKIAlmb3VuZCBvciB3ZSBydW4gb3V0IG9mIGZpZWxkcyB0byBj b21wYXJlLiAgSWYgIWNtcCBhdCB0aGUKIAllbmQsIHRoZSB0dXBsZXMgYXJlIGVxdWFsLiAqLwog CWRvIHsKLQkJY21wID0gY21wX2RmaWVsZF9kZmllbGQoYSsrLCBiKyspOworCQljbXAgPSBjbXBf ZGZpZWxkX2RmaWVsZChhZisrLCBiZisrKTsKIAl9IHdoaWxlICghY21wICYmIC0tbik7CiAKIAlp ZiAoY21wKSB7CkBAIC02MTQsMjAgKzYyOSwyMCBAQCByb3dfbWVyZ2VfdHVwbGVfY21wKAogCQls b2dpY2FsbHkgZXF1YWwuICBOVUxMIGNvbHVtbnMgYXJlIGxvZ2ljYWxseSBpbmVxdWFsLAogCQlh bHRob3VnaCB0aGV5IGFyZSBlcXVhbCBpbiB0aGUgc29ydGluZyBvcmRlci4gIEZpbmQKIAkJb3V0 IGlmIGFueSBvZiB0aGUgZmllbGRzIGFyZSBOVUxMLiAqLwotCQlmb3IgKGNvbnN0IGRmaWVsZF90 KiBkID0gZmllbGQ7IGQgIT0gYTsgZCsrKSB7Ci0JCQlpZiAoZGZpZWxkX2lzX251bGwoZCkpIHsK KwkJZm9yIChjb25zdCBkZmllbGRfdCogZGYgPSBhLmZpZWxkczsgZGYgIT0gYWY7IGRmKyspIHsK KwkJCWlmIChkZmllbGRfaXNfbnVsbChkZikpIHsKIAkJCQlnb3RvIG5vX3JlcG9ydDsKIAkJCX0K IAkJfQogCi0JCXJvd19tZXJnZV9kdXBfcmVwb3J0KGR1cCwgZmllbGQpOworCQlyb3dfbWVyZ2Vf ZHVwX3JlcG9ydChkdXAsIGEuZmllbGRzKTsKIAl9CiAKIG5vX3JlcG9ydDoKIAkvKiBUaGUgbl91 bmlxIGZpZWxkcyB3ZXJlIGVxdWFsLCBidXQgd2UgY29tcGFyZSBhbGwgZmllbGRzIHNvCiAJdGhh dCB3ZSB3aWxsIGdldCB0aGUgc2FtZSBvcmRlciBhcyBpbiB0aGUgQi10cmVlLiAqLwogCWZvciAo biA9IG5fZmllbGQgLSBuX3VuaXEgKyAxOyAtLW47ICkgewotCQljbXAgPSBjbXBfZGZpZWxkX2Rm aWVsZChhKyssIGIrKyk7CisJCWNtcCA9IGNtcF9kZmllbGRfZGZpZWxkKGFmKyssIGJmKyspOwog CQlpZiAoY21wKSB7CiAJCQlyZXR1cm4oY21wKTsKIAkJfQpAQCAtNjY1LDggKzY4MCw4IEBAIHJv d19tZXJnZV90dXBsZV9zb3J0KAogCXVsaW50CQkJbl9maWVsZCwvKiE8IGluOiBudW1iZXIgb2Yg ZmllbGRzICovCiAJcm93X21lcmdlX2R1cF90KglkdXAsCS8qITwgaW4vb3V0OiByZXBvcnRlciBv ZiBkdXBsaWNhdGVzCiAJCQkJCShOVUxMIGlmIG5vbi11bmlxdWUgaW5kZXgpICovCi0JY29uc3Qg ZGZpZWxkX3QqKgl0dXBsZXMsCS8qITwgaW4vb3V0OiB0dXBsZXMgKi8KLQljb25zdCBkZmllbGRf dCoqCWF1eCwJLyohPCBpbi9vdXQ6IHdvcmsgYXJlYSAqLworCW10dXBsZV90KgkJdHVwbGVzLAkv KiE8IGluL291dDogdHVwbGVzICovCisJbXR1cGxlX3QqCQlhdXgsCS8qITwgaW4vb3V0OiB3b3Jr IGFyZWEgKi8KIAl1bGludAkJCWxvdywJLyohPCBpbjogbG93ZXIgYm91bmQgb2YgdGhlCiAJCQkJ CXNvcnRpbmcgYXJlYSwgaW5jbHVzaXZlICovCiAJdWxpbnQJCQloaWdoKQkvKiE8IGluOiB1cHBl ciBib3VuZCBvZiB0aGUKQEAgLTcwOCwxNCArNzIzLDE4IEBAIHJvd19tZXJnZV9idWZfd3JpdGUo CiB7CiAJY29uc3QgZGljdF9pbmRleF90KglpbmRleAk9IGJ1Zi0+aW5kZXg7CiAJdWxpbnQJCQlu X2ZpZWxkcz0gZGljdF9pbmRleF9nZXRfbl9maWVsZHMoaW5kZXgpOworCXVsaW50CQkJbl9udWxs CT0gaW5kZXgtPm5fbnVsbGFibGUKKwkJKyAoZGljdF9pbmRleF9nZXRfb25saW5lX3N0YXR1cyhp bmRleCkKKwkJICAgIT0gT05MSU5FX0lOREVYX0NPTVBMRVRFKTsKIAlieXRlKgkJCWIJPSAmYmxv Y2tbMF07CiAKLQl1bGludAkJaTsKLQotCWZvciAoaSA9IDA7IGkgPCBidWYtPm5fdHVwbGVzOyBp KyspIHsKLQkJY29uc3QgZGZpZWxkX3QqCWVudHJ5CT0gYnVmLT50dXBsZXNbaV07CisJZm9yICh1 bGludCBpID0gMDsgaSA8IGJ1Zi0+bl90dXBsZXM7IGkrKykgeworCQljb25zdCBtdHVwbGVfdCoJ ZW50cnkJPSAmYnVmLT50dXBsZXNbaV07CiAKLQkJcm93X21lcmdlX2J1Zl9lbmNvZGUoJmIsIGlu ZGV4LCBlbnRyeSwgbl9maWVsZHMpOworCQl1dF9hZCghZW50cnktPmRlbF9tYXJrCisJCSAgICAg IHx8IGRpY3RfaW5kZXhfZ2V0X29ubGluZV9zdGF0dXMoaW5kZXgpCisJCSAgICAgICE9IE9OTElO RV9JTkRFWF9DT01QTEVURSk7CisJCXJvd19tZXJnZV9idWZfZW5jb2RlKCZiLCBpbmRleCwgZW50 cnksIG5fZmllbGRzLCBuX251bGwpOwogCQl1dF9hZChiIDwgJmJsb2NrW3Nydl9zb3J0X2J1Zl9z aXplXSk7CiAjaWZkZWYgVU5JVl9ERUJVRwogCQlpZiAocm93X21lcmdlX3ByaW50X3dyaXRlKSB7 CkBAIC04ODksNyArOTA4LDcgQEAgcm93X21lcmdlX3dyaXRlKAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgog UmVhZCBhIG1lcmdlIHJlY29yZC4KIEByZXR1cm4JcG9pbnRlciB0byBuZXh0IHJlY29yZCwgb3Ig TlVMTCBvbiBJL08gZXJyb3Igb3IgZW5kIG9mIGxpc3QgKi8KLVVOSVZfSU5URVJOIF9fYXR0cmli dXRlX18oKG5vbm51bGwpKQorVU5JVl9JTlRFUk4KIGNvbnN0IGJ5dGUqCiByb3dfbWVyZ2VfcmVh ZF9yZWMoCiAvKj09PT09PT09PT09PT09PSovCkBAIC04OTcsNiArOTE2LDcgQEAgcm93X21lcmdl X3JlYWRfcmVjKAogCW1yZWNfYnVmX3QqCQlidWYsCS8qITwgaW4vb3V0OiBzZWNvbmRhcnkgYnVm ZmVyICovCiAJY29uc3QgYnl0ZSoJCWIsCS8qITwgaW46IHBvaW50ZXIgdG8gcmVjb3JkICovCiAJ Y29uc3QgZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogaW5kZXggb2YgdGhlIHJlY29yZCAq LworCXVsaW50CQkJbl9udWxsLAkvKiE8IGluOiBzaXplIG9mIHRoZSBOVUxMLWJpdCBiaXRtYXAg Ki8KIAlpbnQJCQlmZCwJLyohPCBpbjogZmlsZSBkZXNjcmlwdG9yICovCiAJdWxpbnQqCQkJZm9m ZnMsCS8qITwgaW4vb3V0OiBmaWxlIG9mZnNldCAqLwogCWNvbnN0IG1yZWNfdCoqCQltcmVjLAkv KiE8IG91dDogcG9pbnRlciB0byBtZXJnZSByZWNvcmQsCkBAIC05ODIsNyArMTAwMiw4IEBAIGVy cl9leGl0OgogCiAJCSptcmVjID0gKmJ1ZiArIGV4dHJhX3NpemU7CiAKLQkJcmVjX2luaXRfb2Zm c2V0c19jb21wX29yZGluYXJ5KCptcmVjLCAwLCBpbmRleCwgb2Zmc2V0cyk7CisJCXJlY19pbml0 X29mZnNldHNfY29tcF9vcmRpbmFyeSgKKwkJCSptcmVjLCAwLCBpbmRleCwgbl9udWxsLCBvZmZz ZXRzKTsKIAogCQlkYXRhX3NpemUgPSByZWNfb2Zmc19kYXRhX3NpemUob2Zmc2V0cyk7CiAKQEAg LTEwMDEsNyArMTAyMiw3IEBAIGVycl9leGl0OgogCiAJKm1yZWMgPSBiICsgZXh0cmFfc2l6ZTsK IAotCXJlY19pbml0X29mZnNldHNfY29tcF9vcmRpbmFyeSgqbXJlYywgMCwgaW5kZXgsIG9mZnNl dHMpOworCXJlY19pbml0X29mZnNldHNfY29tcF9vcmRpbmFyeSgqbXJlYywgMCwgaW5kZXgsIG5f bnVsbCwgb2Zmc2V0cyk7CiAKIAlkYXRhX3NpemUgPSByZWNfb2Zmc19kYXRhX3NpemUob2Zmc2V0 cyk7CiAJdXRfYWQoZXh0cmFfc2l6ZSArIGRhdGFfc2l6ZSA8IHNpemVvZiAqYnVmKTsKQEAgLTE0 MzEsMTggKzE0NTIsMjkgQEAgcm93X21lcmdlX3JlYWRfY2x1c3RlcmVkX2luZGV4KAogCiAJCXJl YyA9IHBhZ2VfY3VyX2dldF9yZWMoY3VyKTsKIAotCQlpZiAocmVjX2dldF9kZWxldGVkX2ZsYWco cmVjLCBkaWN0X3RhYmxlX2lzX2NvbXAob2xkX3RhYmxlKSkpIHsKLQkJCS8qIFNraXAgZGVsZXRl LW1hcmtlZCByZWNvcmRzLiBUaGlzIHdpbGwgbWFrZQotCQkJdGhlIGNyZWF0ZWQgaW5kZXhlcyB1 bnVzZWFibGUgZm9yIHRyYW5zYWN0aW9ucworCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJl YywgY2x1c3RfaW5kZXgsIE5VTEwsCisJCQkJCSAgVUxJTlRfVU5ERUZJTkVELCAmcm93X2hlYXAp OworCisJCWlmIChyZWNfZ2V0X2RlbGV0ZWRfZmxhZyhyZWMsIGRpY3RfdGFibGVfaXNfY29tcChv bGRfdGFibGUpKQorCQkgICAgJiYgKCFvbmxpbmUKKwkJCXx8ICF0cnhfcndfaXNfYWN0aXZlKAor CQkJCXJvd19nZXRfcmVjX3RyeF9pZChyZWMsIGNsdXN0X2luZGV4LCBvZmZzZXRzKSwKKwkJCQlO VUxMKSkpIHsKKwkJCS8qIFNraXAgZGVsZXRlLW1hcmtlZCByZWNvcmRzLCB1bmxlc3MgdGhlCisJ CQl0cmFuc2FjdGlvbiBpcyBzdGlsbCBhY3RpdmUuIEFjdGl2ZSB0cmFuc2FjdGlvbnMKKwkJCXdv dWxkIGludm9rZSByb3dfbG9nX29ubGluZV9vcCgpLCBiZWNhdXNlIGR1cmluZworCQkJaGFfaW5u b2Jhc2U6OnByZXBhcmVfaW5wbGFjZV9hbHRlcl90YWJsZSgpIHRoZXJlCisJCQltdXN0IGhhdmUg YmVlbiBubyBhY3RpdmUgdHJhbnNhY3Rpb25zIG9uIHRoZSB0YWJsZS4KKworCQkJU2tpcHBpbmcg ZGVsZXRlLW1hcmtlZCByZWNvcmRzIHdpbGwgbWFrZSB0aGUKKwkJCWNyZWF0ZWQgaW5kZXhlcyB1 bnVzZWFibGUgZm9yIHRyYW5zYWN0aW9ucwogCQkJd2hvc2UgcmVhZCB2aWV3cyB3ZXJlIGNyZWF0 ZWQgYmVmb3JlIHRoZSBpbmRleAogCQkJY3JlYXRpb24gY29tcGxldGVkLCBidXQgcHJlc2Vydmlu ZyB0aGUgaGlzdG9yeQotCQkJd291bGQgbWFrZSBpdCB0cmlja3kgdG8gZGV0ZWN0IGR1cGxpY2F0 ZSBrZXlzLiAqLworCQkJd291bGQgbWFrZSBpdCB0cmlja3kgdG8gZGV0ZWN0IGR1cGxpY2F0ZQor CQkJa2V5cy4gKi8KIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zm c2V0cyhyZWMsIGNsdXN0X2luZGV4LCBOVUxMLAotCQkJCQkgIFVMSU5UX1VOREVGSU5FRCwgJnJv d19oZWFwKTsKLQogCQkvKiBUaGlzIGlzIGVzc2VudGlhbGx5IGEgUkVBRCBVTkNPTU1JVFRFRCB0 byBmZXRjaCB0aGUKIAkJbW9zdCByZWNlbnQgdmVyc2lvbiBvZiB0aGUgcmVjb3JkLiAqLwogCkBA IC0xNzA3LDcgKzE3MzksNyBAQCB3YWl0X2FnYWluOgogCQl9CQkJCQkJCVwKIAkJYiMjTiA9IHJv d19tZXJnZV9yZWFkX3JlYygmYmxvY2tbTiAqIHNydl9zb3J0X2J1Zl9zaXplXSxcCiAJCQkJCSAg JmJ1ZltOXSwJCQlcCi0JCQkJCSAgYiMjTiwgaW5kZXgsCQkJXAorCQkJCQkgIGIjI04sIGluZGV4 LCBuX251bGwsCQlcCiAJCQkJCSAgZmlsZS0+ZmQsIGZvZmZzIyNOLAkJXAogCQkJCQkgICZtcmVj IyNOLCBvZmZzZXRzIyNOKTsJXAogCQlpZiAoVU5JVl9VTkxJS0VMWSghYiMjTikpIHsJCQkJXApA QCAtMTcyMSwxMSArMTc1MywxMiBAQCB3YWl0X2FnYWluOgogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBNZXJnZSB0d28g YmxvY2tzIG9mIHJlY29yZHMgb24gZGlzayBhbmQgd3JpdGUgYSBiaWdnZXIgYmxvY2suCiBAcmV0 dXJuCURCX1NVQ0NFU1Mgb3IgZXJyb3IgY29kZSAqLwotc3RhdGljCitzdGF0aWMgX19hdHRyaWJ1 dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSkKIGRiX2Vycgogcm93X21lcmdlX2Js b2NrcygKIC8qPT09PT09PT09PT09PSovCiAJY29uc3QgZGljdF9pbmRleF90KglpbmRleCwJLyoh PCBpbjogaW5kZXggYmVpbmcgY3JlYXRlZCAqLworCXVsaW50CQkJbl9udWxsLAkvKiE8IGluOiBz aXplIG9mIHRoZSBOVUxMLWJpdCBiaXRtYXAgKi8KIAljb25zdCBtZXJnZV9maWxlX3QqCWZpbGUs CS8qITwgaW46IGZpbGUgY29udGFpbmluZwogCQkJCQlpbmRleCBlbnRyaWVzICovCiAJcm93X21l cmdlX2Jsb2NrX3QqCWJsb2NrLAkvKiE8IGluL291dDogMyBidWZmZXJzICovCkBAIC0xNzc4LDEx ICsxODExLDExIEBAIGNvcnJ1cHQ6CiAJYjEgPSAmYmxvY2tbc3J2X3NvcnRfYnVmX3NpemVdOwog CWIyID0gJmJsb2NrWzIgKiBzcnZfc29ydF9idWZfc2l6ZV07CiAKLQliMCA9IHJvd19tZXJnZV9y ZWFkX3JlYygmYmxvY2tbMF0sICZidWZbMF0sIGIwLCBpbmRleCwgZmlsZS0+ZmQsCi0JCQkJZm9m ZnMwLCAmbXJlYzAsIG9mZnNldHMwKTsKKwliMCA9IHJvd19tZXJnZV9yZWFkX3JlYygmYmxvY2tb MF0sICZidWZbMF0sIGIwLCBpbmRleCwgbl9udWxsLAorCQkJCWZpbGUtPmZkLCBmb2ZmczAsICZt cmVjMCwgb2Zmc2V0czApOwogCWIxID0gcm93X21lcmdlX3JlYWRfcmVjKCZibG9ja1tzcnZfc29y dF9idWZfc2l6ZV0sCi0JCQkJJmJ1ZltzcnZfc29ydF9idWZfc2l6ZV0sIGIxLCBpbmRleCwgZmls ZS0+ZmQsCi0JCQkJZm9mZnMxLCAmbXJlYzEsIG9mZnNldHMxKTsKKwkJCQkmYnVmW3Nydl9zb3J0 X2J1Zl9zaXplXSwgYjEsIGluZGV4LCBuX251bGwsCisJCQkJZmlsZS0+ZmQsIGZvZmZzMSwgJm1y ZWMxLCBvZmZzZXRzMSk7CiAJaWYgKFVOSVZfVU5MSUtFTFkoIWIwICYmIG1yZWMwKQogCSAgICB8 fCBVTklWX1VOTElLRUxZKCFiMSAmJiBtcmVjMSkpIHsKIApAQCAtMTgzMiwxMSArMTg2NSwxMiBA QCBkb25lMToKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgogQ29weSBhIGJsb2NrIG9mIGluZGV4IGVudHJpZXMuCiBAcmV0 dXJuCVRSVUUgb24gc3VjY2VzcywgRkFMU0Ugb24gZmFpbHVyZSAqLwotc3RhdGljIF9fYXR0cmli dXRlX18oKG5vbm51bGwpKQorc3RhdGljIF9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51 c2VkX3Jlc3VsdCkpCiBpYm9vbAogcm93X21lcmdlX2Jsb2Nrc19jb3B5KAogLyo9PT09PT09PT09 PT09PT09PT0qLwogCWNvbnN0IGRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGluZGV4IGJl aW5nIGNyZWF0ZWQgKi8KKwl1bGludAkJCW5fbnVsbCwJLyohPCBpbjogc2l6ZSBvZiB0aGUgTlVM TC1iaXQgYml0bWFwICovCiAJY29uc3QgbWVyZ2VfZmlsZV90KglmaWxlLAkvKiE8IGluOiBpbnB1 dCBmaWxlICovCiAJcm93X21lcmdlX2Jsb2NrX3QqCWJsb2NrLAkvKiE8IGluL291dDogMyBidWZm ZXJzICovCiAJdWxpbnQqCQkJZm9mZnMwLAkvKiE8IGluL291dDogaW5wdXQgZmlsZSBvZmZzZXQg Ki8KQEAgLTE4NzcsOCArMTkxMSw4IEBAIGNvcnJ1cHQ6CiAKIAliMiA9ICZibG9ja1syICogc3J2 X3NvcnRfYnVmX3NpemVdOwogCi0JYjAgPSByb3dfbWVyZ2VfcmVhZF9yZWMoJmJsb2NrWzBdLCAm YnVmWzBdLCBiMCwgaW5kZXgsIGZpbGUtPmZkLAotCQkJCWZvZmZzMCwgJm1yZWMwLCBvZmZzZXRz MCk7CisJYjAgPSByb3dfbWVyZ2VfcmVhZF9yZWMoJmJsb2NrWzBdLCAmYnVmWzBdLCBiMCwgaW5k ZXgsIG5fbnVsbCwKKwkJCQlmaWxlLT5mZCwgZm9mZnMwLCAmbXJlYzAsIG9mZnNldHMwKTsKIAlp ZiAoVU5JVl9VTkxJS0VMWSghYjAgJiYgbXJlYzApKSB7CiAKIAkJZ290byBjb3JydXB0OwpAQCAt MTkxMSw2ICsxOTQ1LDcgQEAgcm93X21lcmdlKAogLyo9PT09PT0qLwogCXRyeF90KgkJCXRyeCwJ LyohPCBpbjogdHJhbnNhY3Rpb24gKi8KIAljb25zdCBkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8 IGluOiBpbmRleCBiZWluZyBjcmVhdGVkICovCisJdWxpbnQJCQluX251bGwsCS8qITwgaW46IHNp emUgb2YgdGhlIE5VTEwtYml0IGJpdG1hcCAqLwogCW1lcmdlX2ZpbGVfdCoJCWZpbGUsCS8qITwg aW4vb3V0OiBmaWxlIGNvbnRhaW5pbmcKIAkJCQkJaW5kZXggZW50cmllcyAqLwogCXJvd19tZXJn ZV9ibG9ja190KglibG9jaywJLyohPCBpbi9vdXQ6IDMgYnVmZmVycyAqLwpAQCAtMTk2NCw3ICsx OTk5LDcgQEAgcm93X21lcmdlKAogCQkvKiBSZW1lbWJlciB0aGUgb2Zmc2V0IG51bWJlciBmb3Ig dGhpcyBydW4gKi8KIAkJcnVuX29mZnNldFtuX3J1bisrXSA9IG9mLm9mZnNldDsKIAotCQllcnJv ciA9IHJvd19tZXJnZV9ibG9ja3MoaW5kZXgsIGZpbGUsIGJsb2NrLAorCQllcnJvciA9IHJvd19t ZXJnZV9ibG9ja3MoaW5kZXgsIG5fbnVsbCwgZmlsZSwgYmxvY2ssCiAJCQkJCSAmZm9mZnMwLCAm Zm9mZnMxLCAmb2YsIHRhYmxlKTsKIAogCQlpZiAoZXJyb3IgIT0gREJfU1VDQ0VTUykgewpAQCAt MTk4Myw3ICsyMDE4LDggQEAgcm93X21lcmdlKAogCQkvKiBSZW1lbWJlciB0aGUgb2Zmc2V0IG51 bWJlciBmb3IgdGhpcyBydW4gKi8KIAkJcnVuX29mZnNldFtuX3J1bisrXSA9IG9mLm9mZnNldDsK IAotCQlpZiAoIXJvd19tZXJnZV9ibG9ja3NfY29weShpbmRleCwgZmlsZSwgYmxvY2ssICZmb2Zm czAsICZvZikpIHsKKwkJaWYgKCFyb3dfbWVyZ2VfYmxvY2tzX2NvcHkoaW5kZXgsIG5fbnVsbCwg ZmlsZSwgYmxvY2ssCisJCQkJCSAgICZmb2ZmczAsICZvZikpIHsKIAkJCXJldHVybihEQl9DT1JS VVBUSU9OKTsKIAkJfQogCX0KQEAgLTE5OTgsNyArMjAzNCw4IEBAIHJvd19tZXJnZSgKIAkJLyog UmVtZW1iZXIgdGhlIG9mZnNldCBudW1iZXIgZm9yIHRoaXMgcnVuICovCiAJCXJ1bl9vZmZzZXRb bl9ydW4rK10gPSBvZi5vZmZzZXQ7CiAKLQkJaWYgKCFyb3dfbWVyZ2VfYmxvY2tzX2NvcHkoaW5k ZXgsIGZpbGUsIGJsb2NrLCAmZm9mZnMxLCAmb2YpKSB7CisJCWlmICghcm93X21lcmdlX2Jsb2Nr c19jb3B5KGluZGV4LCBuX251bGwsIGZpbGUsIGJsb2NrLAorCQkJCQkgICAmZm9mZnMxLCAmb2Yp KSB7CiAJCQlyZXR1cm4oREJfQ09SUlVQVElPTik7CiAJCX0KIAl9CkBAIC0yMDQ5LDEwICsyMDg2 LDEzIEBAIHJvd19tZXJnZV9zb3J0KAogCQkJCQlyZXBvcnRpbmcgZXJyb25lb3VzIGtleSB2YWx1 ZQogCQkJCQlpZiBhcHBsaWNhYmxlICovCiB7Ci0JdWxpbnQJaGFsZiA9IGZpbGUtPm9mZnNldCAv IDI7Ci0JdWxpbnQJbnVtX3J1bnM7Ci0JdWxpbnQqCXJ1bl9vZmZzZXQ7Ci0JZGJfZXJyCWVycm9y ID0gREJfU1VDQ0VTUzsKKwljb25zdCB1bGludAluX251bGwJPSBpbmRleC0+bl9udWxsYWJsZQor CQkrIChkaWN0X2luZGV4X2dldF9vbmxpbmVfc3RhdHVzKGluZGV4KQorCQkgICAhPSBPTkxJTkVf SU5ERVhfQ09NUExFVEUpOworCWNvbnN0IHVsaW50CWhhbGYJPSBmaWxlLT5vZmZzZXQgLyAyOwor CXVsaW50CQludW1fcnVuczsKKwl1bGludCoJCXJ1bl9vZmZzZXQ7CisJZGJfZXJyCQllcnJvcgk9 IERCX1NVQ0NFU1M7CiAKIAkvKiBSZWNvcmQgdGhlIG51bWJlciBvZiBtZXJnZSBydW5zIHdlIG5l ZWQgdG8gcGVyZm9ybSAqLwogCW51bV9ydW5zID0gZmlsZS0+b2Zmc2V0OwpAQCAtMjA3NSw3ICsy MTE1LDcgQEAgcm93X21lcmdlX3NvcnQoCiAKIAkvKiBNZXJnZSB0aGUgcnVucyB1bnRpbCB3ZSBo YXZlIG9uZSBiaWcgcnVuICovCiAJZG8gewotCQllcnJvciA9IHJvd19tZXJnZSh0cngsIGluZGV4 LCBmaWxlLCBibG9jaywgdG1wZmQsCisJCWVycm9yID0gcm93X21lcmdlKHRyeCwgaW5kZXgsIG5f bnVsbCwgZmlsZSwgYmxvY2ssIHRtcGZkLAogCQkJCSAgdGFibGUsICZudW1fcnVucywgcnVuX29m ZnNldCk7CiAKIAkJVU5JVl9NRU1fQVNTRVJUX1JXKHJ1bl9vZmZzZXQsIG51bV9ydW5zICogc2l6 ZW9mICpydW5fb2Zmc2V0KTsKQEAgLTIxNDQsNiArMjE4NCw5IEBAIHJvd19tZXJnZV9pbnNlcnRf aW5kZXhfdHVwbGVzKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJdHJ4X2lkX3QJ CXRyeF9pZCwJLyohPCBpbjogdHJhbnNhY3Rpb24gaWRlbnRpZmllciAqLwogCWRpY3RfaW5kZXhf dCoJCWluZGV4LAkvKiE8IGluOiBpbmRleCAqLworCWJvb2wJCQlkZWxfbWFya3MsCisJCQkJCS8q ITwgaW46IHdoZXRoZXIgc29tZSB0dXBsZXMgbWF5CisJCQkJCWJlIGRlbGV0ZS1tYXJrZWQgKi8K IAl1bGludAkJCXppcF9zaXplLC8qITwgaW46IGNvbXByZXNzZWQgcGFnZSBzaXplIG9mCiAJCQkJ CSB0aGUgb2xkIHRhYmxlLCBvciAwIGlmIHVuY29tcHJlc3NlZCAqLwogCWludAkJCWZkLAkvKiE8 IGluOiBmaWxlIGRlc2NyaXB0b3IgKi8KQEAgLTIxNTgsNiArMjIwMSw4IEBAIHJvd19tZXJnZV9p bnNlcnRfaW5kZXhfdHVwbGVzKAogCW1yZWNfYnVmX3QqCQlidWY7CiAKIAl1dF9hZCghKGluZGV4 LT50eXBlICYgRElDVF9GVFMpKTsKKwl1dF9hZChkZWxfbWFya3MgPT0gKGRpY3RfaW5kZXhfZ2V0 X29ubGluZV9zdGF0dXMoaW5kZXgpCisJCQkgICAgIT0gT05MSU5FX0lOREVYX0NPTVBMRVRFKSk7 CiAKIAl0dXBsZV9oZWFwID0gbWVtX2hlYXBfY3JlYXRlKDEwMDApOwogCkBAIC0yMTc2LDYgKzIy MjEsOCBAQCByb3dfbWVyZ2VfaW5zZXJ0X2luZGV4X3R1cGxlcygKIAlpZiAoIXJvd19tZXJnZV9y ZWFkKGZkLCBmb2ZmcywgYmxvY2spKSB7CiAJCWVycm9yID0gREJfQ09SUlVQVElPTjsKIAl9IGVs c2UgeworCQljb25zdCB1bGludAluX251bGwgPSBpbmRleC0+bl9udWxsYWJsZSArIGRlbF9tYXJr czsKKwogCQlidWYgPSBzdGF0aWNfY2FzdDxtcmVjX2J1Zl90Kj4oCiAJCQltZW1faGVhcF9hbGxv YyhoZWFwLCBzaXplb2YgKmJ1ZikpOwogCkBAIC0yMTg4LDcgKzIyMzUsNyBAQCByb3dfbWVyZ2Vf aW5zZXJ0X2luZGV4X3R1cGxlcygKIAkJCWJ0cl9jdXJfdAljdXJzb3I7CiAJCQltdHJfdAkJbXRy OwogCi0JCQliID0gcm93X21lcmdlX3JlYWRfcmVjKGJsb2NrLCBidWYsIGIsIGluZGV4LAorCQkJ YiA9IHJvd19tZXJnZV9yZWFkX3JlYyhibG9jaywgYnVmLCBiLCBpbmRleCwgbl9udWxsLAogCQkJ CQkgICAgICAgZmQsICZmb2ZmcywgJm1yZWMsIG9mZnNldHMpOwogCQkJaWYgKFVOSVZfVU5MSUtF TFkoIWIpKSB7CiAJCQkJLyogRW5kIG9mIGxpc3QsIG9yIEkvTyBlcnJvciAqLwpAQCAtMjIwMSw2 ICsyMjQ4LDE1IEBAIHJvd19tZXJnZV9pbnNlcnRfaW5kZXhfdHVwbGVzKAogCQkJZHR1cGxlID0g cm93X3JlY190b19pbmRleF9lbnRyeV9sb3coCiAJCQkJbXJlYywgaW5kZXgsIG9mZnNldHMsICZu X2V4dCwgdHVwbGVfaGVhcCk7CiAKKwkJCS8qIEluIG1yZWMsIHRoZSBkZWxldGUtbWFyayBmbGFn IGlzIHN0b3JlZCBpbgorCQkJdGhlIE5VTEwgZmxhZ3MgYml0bWFwIGFmdGVyIHRoZSBmbGFncyBv ZiBhbnkKKwkJCWZpZWxkcyB0aGF0IGNhbiBiZSBOVUxMLiAqLworCQkJaWYgKGRlbF9tYXJrcyAm JiAobXJlY1stMSAtIChpbnQpIGluZGV4LT5uX251bGxhYmxlIC8gOF0KKwkJCQkJICAmICgxIDw8 IChpbmRleC0+bl9udWxsYWJsZSAmIDcpKSkpIHsKKwkJCQlkdHVwbGVfc2V0X2luZm9fYml0cyhk dHVwbGUsCisJCQkJCQkgICAgIFJFQ19JTkZPX0RFTEVURURfRkxBRyk7CisJCQl9CisKIAkJCWlm IChVTklWX1VOTElLRUxZKG5fZXh0KSkgewogCQkJCXJvd19tZXJnZV9jb3B5X2Jsb2JzKG1yZWMs IG9mZnNldHMsIHppcF9zaXplLAogCQkJCQkJICAgICBkdHVwbGUsIHR1cGxlX2hlYXApOwpAQCAt MzIzNCwxMiArMzI5MCwxMyBAQCB3YWl0X2FnYWluOgogCQkJREVCVUdfRlRTX1NPUlRfUFJJTlQo IkZUU19TT1JUOiBDb21wbGV0ZSBJbnNlcnRcbiIpOwogI2VuZGlmCiAJCX0gZWxzZSB7Ci0JCQll cnJvciA9IHJvd19tZXJnZV9zb3J0KHRyeCwgc29ydF9pZHgsICZtZXJnZV9maWxlc1tpXSwKLQkJ CQkJICAgICAgIGJsb2NrLCAmdG1wZmQsIHRhYmxlKTsKKwkJCWVycm9yID0gcm93X21lcmdlX3Nv cnQoCisJCQkJdHJ4LCBzb3J0X2lkeCwgJm1lcmdlX2ZpbGVzW2ldLAorCQkJCWJsb2NrLCAmdG1w ZmQsIHRhYmxlKTsKIAogCQkJaWYgKGVycm9yID09IERCX1NVQ0NFU1MpIHsKIAkJCQllcnJvciA9 IHJvd19tZXJnZV9pbnNlcnRfaW5kZXhfdHVwbGVzKAotCQkJCQl0cngtPmlkLCBzb3J0X2lkeCwK KwkJCQkJdHJ4LT5pZCwgc29ydF9pZHgsIG9ubGluZSwKIAkJCQkJZGljdF90YWJsZV96aXBfc2l6 ZShvbGRfdGFibGUpLAogCQkJCQltZXJnZV9maWxlc1tpXS5mZCwgYmxvY2spOwogCQkJfQoKPT09 IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5jYycKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MG15c3FsLmNjCXJldmlkOnN1bm55LmJhaW5zQG9yYWNs ZS5jb20tMjAxMjAzMjkwNzA0MDAtdHZienJoZTU3cXBiOHZncgorKysgYi9zdG9yYWdlL2lubm9i YXNlL3Jvdy9yb3cwbXlzcWwuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjAz MjkxMTI5MDAtcGNwNGNhNmRmNzE1MmJxYQpAQCAtMzAsNiArMzAsOCBAQCBDcmVhdGVkIDkvMTcv MjAwMCBIZWlra2kgVHV1cmkKICNpbmNsdWRlICJyb3cwbXlzcWwuaWMiCiAjZW5kaWYKIAorI2lu Y2x1ZGUgPGRlYnVnX3N5bmMuaD4KKwogI2luY2x1ZGUgInJvdzBpbnMuaCIKICNpbmNsdWRlICJy b3cwbWVyZ2UuaCIKICNpbmNsdWRlICJyb3cwc2VsLmgiCkBAIC0xNjg2LDYgKzE2ODgsMTAgQEAg cnVuX2FnYWluOgogCQl9CiAKIAkJdGhyLT5sb2NrX3N0YXRlPSBRVUVfVEhSX0xPQ0tfUk9XOwor CisJCURFQlVHX1NZTkMoc3RhdGljX2Nhc3Q8VEhEKj4odHJ4LT5teXNxbF90aGQpLAorCQkJICAg InJvd191cGRhdGVfZm9yX215c3FsX2Vycm9yIik7CisKIAkJd2FzX2xvY2tfd2FpdCA9IHJvd19t eXNxbF9oYW5kbGVfZXJyb3JzKCZlcnIsIHRyeCwgdGhyLAogCQkJCQkJCSZzYXZlcHQpOwogCQl0 aHItPmxvY2tfc3RhdGU9IFFVRV9USFJfTE9DS19OT0xPQ0s7CgpObyBidW5kbGUgKHJlYXNvbjog dXNlbGVzcyBmb3IgcHVzaCBlbWFpbHMpLg==