From: marko.makela Date: May 10 2012 1:11pm Subject: bzr push into mysql-trunk-wl5854 branch (marko.makela:3766 to 3767) WL#5854 WL#6255 List-Archive: http://lists.mysql.com/commits/143902 Message-Id: <201205101311.q4ADBmQX009214@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM3NjcgTWFya28gTcOka2Vsw6QJMjAxMi0wNS0xMAogICAgICBXTCM1ODU0IChicm9rZW4gcGF0 Y2gsIGFiYW5kb25pbmcgdGhpcyB0cmVlIGZvciBXTCM2MjU1KQogICAgICAKICAgICAgU3RhcnQg aW1wbGVtZW50aW5nIEFMVEVSIFRBQkxFIHQgTU9ESUZZIGMgTlVMTAogICAgICBmb3Igb3RoZXIg dGhhbiBST1dfRk9STUFUPVJFRFVOREFOVCB0YWJsZXMuCiAgICAgIAogICAgICBUaGlzIGFkZHMg YSBtdWx0aS12ZXJzaW9uZWQgZGF0YSBkaWN0aW9uYXJ5IGZvciB0aGUgY2x1c3RlcmVkIGluZGV4 IGFuZCB0aGUKICAgICAgdGFibGUuIFRoZSBwYXRjaCBpcyBpbmNvbXBsZXRlIGFuZCBicm9rZW4u IFRoaXMgYXBwcm9hY2ggY291bGQgd29yaywgYnV0CiAgICAgIHdlIHdpbGwgdHJ5IHNvbWV0aGlu ZyBzaW1wbGVyIHRvIGhhdmUgYmV0dGVyIGhvcGUgb2YgbWFraW5nIHRoZSBkZWFkbGluZS4KCiAg ICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9yL2FsdGVyX3RhYmxlLnJlc3VsdAogICAgICBt eXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYi1hbHRlci1udWxsYWJsZS5yZXN1bHQKICAg ICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGItYWx0ZXItbnVsbGFibGUudGVzdAog ICAgICBzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwYnRyLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvYnRyL2J0cjBjdXIuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9kaWN0L2RpY3QwY3JlYS5j YwogICAgICBzdG9yYWdlL2lubm9iYXNlL2RpY3QvZGljdDBkaWN0LmNjCiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2UvZGljdC9kaWN0MG1lbS5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIv aGFuZGxlcjBhbHRlci5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5o CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwcGN1ci5oCiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9idHIwc2VhLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9kaWN0MGRpY3QuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGljdDBkaWN0Lmlj CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MG1lbS5oCiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9wYWdlMHBhZ2UuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvcGFnZTB6aXAuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcmVtMHJlYy5oCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVjLmljCiAgICAgIHN0b3JhZ2UvaW5u b2Jhc2UvaW5jbHVkZS9yb3cwbWVyZ2UuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv cm93MHJvdy5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdW5pdi5pCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2UvbG9jay9sb2NrMGxvY2suY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9w YWdlL3BhZ2UwcGFnZS5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTB6aXAuY2MK ICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MG1lcmdlLmNjCiAgICAgIHN0b3JhZ2UvaW5u b2Jhc2Uvcm93L3JvdzBteXNxbC5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2Vs LmNjCiAzNzY2IE1hcmtvIE3DpGtlbMOkCTIwMTItMDUtMTAKICAgICAgV0wjNTg1NDogQWxsb2Nh dGUgaW5kZXgtPmxvY2sgYW5kIGluZGV4LT5ibG9ic19tdXRleCBzZXBhcmF0ZWx5CiAgICAgIGZy b20gdGhlIHJlc3Qgb2YgdGhlIGRpY3RfaW5kZXhfdCwgc28gdGhhdCB3aGVuIHRoZXJlIGFyZSBt dWx0aXBsZQogICAgICB2ZXJzaW9ucyBvZiBhIGNsdXN0ZXJlZCBpbmRleCAoYW5kIGEgdGFibGUg ZGVmaW5pdGlvbiksIHRoZXNlCiAgICAgIGRhdGEgc3RydWN0dXJlcyB3aWxsIGJlIHNoYXJlZCBh bW9uZyBhbGwgb2YgdGhlbS4KCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9i dHIvYnRyMGJ0ci5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2RpY3QvZGljdDBkaWN0LmNjCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MG1lbS5jYwogICAgICBzdG9yYWdlL2lubm9i YXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvZGljdDBkaWN0LmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MG1lbS5o Cj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3IvYWx0ZXJfdGFibGUucmVzdWx0JwotLS0g YS9teXNxbC10ZXN0L3IvYWx0ZXJfdGFibGUucmVzdWx0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTIwNTEwMTEyNTQ3LTVhdTMwaDY5amxvOTRhOHoKKysrIGIvbXlzcWwtdGVzdC9y L2FsdGVyX3RhYmxlLnJlc3VsdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUx MDEzMDkzMy03bGkwdzIxZ2Rnc3YxMXgxCkBAIC0xNzQ4LDggKzE3NDgsOCBAQCBBTFRFUiBUQUJM RSB0bTEgTU9ESUZZIENPTFVNTiBjIElOVCBOT1QKIGFmZmVjdGVkIHJvd3M6IDIKIGluZm86IFJl Y29yZHM6IDIgIER1cGxpY2F0ZXM6IDAgIFdhcm5pbmdzOiAwCiBBTFRFUiBUQUJMRSB0aTEgTU9E SUZZIENPTFVNTiBjIElOVCBOVUxMOwotYWZmZWN0ZWQgcm93czogMgotaW5mbzogUmVjb3Jkczog MiAgRHVwbGljYXRlczogMCAgV2FybmluZ3M6IDAKK2FmZmVjdGVkIHJvd3M6IDAKK2luZm86IFJl Y29yZHM6IDAgIER1cGxpY2F0ZXM6IDAgIFdhcm5pbmdzOiAwCiBBTFRFUiBUQUJMRSB0bTEgTU9E SUZZIENPTFVNTiBjIElOVCBOVUxMOwogYWZmZWN0ZWQgcm93czogMgogaW5mbzogUmVjb3Jkczog MiAgRHVwbGljYXRlczogMCAgV2FybmluZ3M6IDAKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10 ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYi1hbHRlci1udWxsYWJsZS5yZXN1bHQnCi0tLSBhL215 c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiLWFsdGVyLW51bGxhYmxlLnJlc3VsdAlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDExMjU0Ny01YXUzMGg2OWpsbzk0YTh6 CisrKyBiL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiLWFsdGVyLW51bGxhYmxlLnJl c3VsdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDEzMDkzMy03bGkwdzIx Z2Rnc3YxMXgxCkBAIC0zOSwxMSArMzksOSBAQCBjMQljMgljMwogNwk4CTkKIEFMVEVSIFRBQkxF IHRyIE1PRElGWSBjMiBJTlQsIEFMR09SSVRITT1JTlBMQUNFOwogQUxURVIgVEFCTEUgdGMgTU9E SUZZIGMyIElOVCwgQUxHT1JJVEhNPUlOUExBQ0U7Ci1FUlJPUiA0MjAwMDogVGhpcyB2ZXJzaW9u IG9mIE15U1FMIGRvZXNuJ3QgeWV0IHN1cHBvcnQgJ0FMVEVSIFRBQkxFIHRjIE1PRElGWSBjMiBJ TlQsIEFMR09SSVRITT1JTlBMQUNFJwogQkVHSU47CiBVUERBVEUgdHIgU0VUIGMyPU5VTEw7CiBV UERBVEUgdGMgU0VUIGMyPU5VTEw7Ci1FUlJPUiAyMzAwMDogQ29sdW1uICdjMicgY2Fubm90IGJl IG51bGwKIFNFTEVDVCAqIEZST00gdHI7CiBjMQljMgljMwogMQlOVUxMCTMKQEAgLTUxLDkgKzQ5 LDkgQEAgYzEJYzIJYzMKIDcJTlVMTAk5CiBTRUxFQ1QgKiBGUk9NIHRjOwogYzEJYzIJYzMKLTEJ MgkzCi00CTUJNgotNwk4CTkKKzEJTlVMTAkzCis0CU5VTEwJNgorNwlOVUxMCTkKIFJPTExCQUNL OwogU0VMRUNUICogRlJPTSB0cjsKIGMxCWMyCWMzCkBAIC02Nyw3ICs2NSw2IEBAIGMxCWMyCWMz CiA3CTgJOQogQUxURVIgVEFCTEUgdHIgTU9ESUZZIGMyIElOVCBOVUxMLCBBTEdPUklUSE09SU5Q TEFDRTsKIEFMVEVSIFRBQkxFIHRjIE1PRElGWSBjMiBJTlQgTlVMTCwgQUxHT1JJVEhNPUlOUExB Q0U7Ci1FUlJPUiA0MjAwMDogVGhpcyB2ZXJzaW9uIG9mIE15U1FMIGRvZXNuJ3QgeWV0IHN1cHBv cnQgJ0FMVEVSIFRBQkxFIHRjIE1PRElGWSBjMiBJTlQgTlVMTCwgQUxHT1JJVEhNPUlOUExBQ0Un CiBTRUxFQ1QgKiBGUk9NIElORk9STUFUSU9OX1NDSEVNQS5JTk5PREJfU1lTX1RBQkxFUwogV0hF UkUgTkFNRSBMSUtFICd0ZXN0L3RbcmNdJzsKIFRBQkxFX0lECU5BTUUJRkxBRwlOX0NPTFMJU1BB Q0UKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYi1h bHRlci1udWxsYWJsZS50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9k Yi1hbHRlci1udWxsYWJsZS50ZXN0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIw NTEwMTEyNTQ3LTVhdTMwaDY5amxvOTRhOHoKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIv dC9pbm5vZGItYWx0ZXItbnVsbGFibGUudGVzdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDEyMDUxMDEzMDkzMy03bGkwdzIxZ2Rnc3YxMXgxCkBAIC02MywxMyArNjMsMTEgQEAgY29u bmVjdGlvbiBkZWZhdWx0OwogCiAjIFRoZXNlIHNob3VsZCBjaGFuZ2UgdGhlIGNvbHVtbiB0byBO VUxMLgogQUxURVIgVEFCTEUgdHIgTU9ESUZZIGMyIElOVCwgQUxHT1JJVEhNPUlOUExBQ0U7Ci0t LWVycm9yIEVSX05PVF9TVVBQT1JURURfWUVUCiBBTFRFUiBUQUJMRSB0YyBNT0RJRlkgYzIgSU5U LCBBTEdPUklUSE09SU5QTEFDRTsKIAogY29ubmVjdGlvbiBjb24xOwogQkVHSU47CiBVUERBVEUg dHIgU0VUIGMyPU5VTEw7Ci0tLWVycm9yIEVSX0JBRF9OVUxMX0VSUk9SCiBVUERBVEUgdGMgU0VU IGMyPU5VTEw7CiBTRUxFQ1QgKiBGUk9NIHRyOwogU0VMRUNUICogRlJPTSB0YzsKQEAgLTgyLDcg KzgwLDYgQEAgY29ubmVjdGlvbiBkZWZhdWx0OwogCiAjIFRoZXNlIHNob3VsZCBiZSBuby1vcHMu CiBBTFRFUiBUQUJMRSB0ciBNT0RJRlkgYzIgSU5UIE5VTEwsIEFMR09SSVRITT1JTlBMQUNFOwot LS1lcnJvciBFUl9OT1RfU1VQUE9SVEVEX1lFVAogQUxURVIgVEFCTEUgdGMgTU9ESUZZIGMyIElO VCBOVUxMLCBBTEdPUklUSE09SU5QTEFDRTsKIAogU0VMRUNUICogRlJPTSBJTkZPUk1BVElPTl9T Q0hFTUEuSU5OT0RCX1NZU19UQUJMRVMKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9i YXNlL2J0ci9idHIwYnRyLmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwYnRyLmNj CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTEwMTEyNTQ3LTVhdTMwaDY5amxv OTRhOHoKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGJ0ci5jYwlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDEzMDkzMy03bGkwdzIxZ2Rnc3YxMXgxCkBAIC0xNjA4 LDE4ICsxNjA4LDIwIEBAIGJ0cl9mcmVlX3Jvb3QoCiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQ ICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgotUmVvcmdhbml6ZXMgYW4gaW5kZXggcGFnZS4gKi8KLXN0YXRpYwot aWJvb2wKK1Jlb3JnYW5pemVzIGFuIGluZGV4IHBhZ2UuCitAcmV0dXJuIHdoZXRoZXIgdGhlIG9w ZXJhdGlvbiBzdWNjZWVkZWQgKi8KK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKChub25udWxsKSkKK2Jv b2wKIGJ0cl9wYWdlX3Jlb3JnYW5pemVfbG93KAogLyo9PT09PT09PT09PT09PT09PT09PSovCi0J aWJvb2wJCXJlY292ZXJ5LC8qITwgaW46IFRSVUUgaWYgY2FsbGVkIGluIHJlY292ZXJ5OgorCWJv b2wJCXJlY292ZXJ5LC8qITwgaW46IHRydWUgaWYgY2FsbGVkIGluIHJlY292ZXJ5OgogCQkJCWxv Y2tzIHNob3VsZCBub3QgYmUgdXBkYXRlZCwgaS5lLiwKIAkJCQl0aGVyZSBjYW5ub3QgZXhpc3Qg bG9ja3Mgb24gdGhlCiAJCQkJcGFnZSwgYW5kIGEgaGFzaCBpbmRleCBzaG91bGQgbm90IGJlCiAJ CQkJZHJvcHBlZDogaXQgY2Fubm90IGV4aXN0ICovCiAJYnVmX2Jsb2NrX3QqCWJsb2NrLAkvKiE8 IGluOiBwYWdlIHRvIGJlIHJlb3JnYW5pemVkICovCi0JZGljdF9pbmRleF90KglpbmRleCwJLyoh PCBpbjogcmVjb3JkIGRlc2NyaXB0b3IgKi8KKwlkaWN0X2luZGV4X3QqCXBhZ2VfaW5kZXgsLyoh PCBpbjogaW5kZXggZGVmaW5pdGlvbiBvZiB0aGUgcGFnZSAqLworCWRpY3RfaW5kZXhfdCoJaW5k ZXgsCS8qITwgaW46IG5ldyBpbmRleCBkZWZpbml0aW9uIG9mIHRoZSBwYWdlICovCiAJbXRyX3Qq CQltdHIpCS8qITwgaW46IG10ciAqLwogewogI2lmbmRlZiBVTklWX0hPVEJBQ0tVUApAQCAtMTYz NCwyMyArMTYzNiwxOSBAQCBidHJfcGFnZV9yZW9yZ2FuaXplX2xvdygKIAl1bGludAkJZGF0YV9z aXplMjsKIAl1bGludAkJbWF4X2luc19zaXplMTsKIAl1bGludAkJbWF4X2luc19zaXplMjsKLQlp Ym9vbAkJc3VjY2VzcwkJPSBGQUxTRTsKKwlib29sCQlzdWNjZXNzCQk9IGZhbHNlOwogCiAJdXRf YWQobXRyX21lbW9fY29udGFpbnMobXRyLCBibG9jaywgTVRSX01FTU9fUEFHRV9YX0ZJWCkpOwot CWJ0cl9hc3NlcnRfbm90X2NvcnJ1cHRlZChibG9jaywgaW5kZXgpOworCXV0X2FkKGJ1Zl9ibG9j a19nZXRfc3RhdGUoYmxvY2spID09IEJVRl9CTE9DS19GSUxFX1BBR0UpOworCXV0X2FkKGZpbF9w YWdlX2dldF90eXBlKHBhZ2UpID09IEZJTF9QQUdFX0lOREVYKTsKKwlidHJfYXNzZXJ0X25vdF9j b3JydXB0ZWQoYmxvY2ssIHBhZ2VfaW5kZXgpOworCiAjaWZkZWYgVU5JVl9aSVBfREVCVUcKIAl1 dF9hKCFwYWdlX3ppcCB8fCBwYWdlX3ppcF92YWxpZGF0ZShwYWdlX3ppcCwgcGFnZSkpOwogI2Vu ZGlmIC8qIFVOSVZfWklQX0RFQlVHICovCiAJZGF0YV9zaXplMSA9IHBhZ2VfZ2V0X2RhdGFfc2l6 ZShwYWdlKTsKIAltYXhfaW5zX3NpemUxID0gcGFnZV9nZXRfbWF4X2luc2VydF9zaXplX2FmdGVy X3Jlb3JnYW5pemUocGFnZSwgMSk7CiAKLSNpZm5kZWYgVU5JVl9IT1RCQUNLVVAKLQkvKiBXcml0 ZSB0aGUgbG9nIHJlY29yZCAqLwotCW1sb2dfb3Blbl9hbmRfd3JpdGVfaW5kZXgobXRyLCBwYWdl LCBpbmRleCwgcGFnZV9pc19jb21wKHBhZ2UpCi0JCQkJICA/IE1MT0dfQ09NUF9QQUdFX1JFT1JH QU5JWkUKLQkJCQkgIDogTUxPR19QQUdFX1JFT1JHQU5JWkUsIDApOwotI2VuZGlmIC8qICFVTklW X0hPVEJBQ0tVUCAqLwotCiAJLyogVHVybiBsb2dnaW5nIG9mZiAqLwogCWxvZ19tb2RlID0gbXRy X3NldF9sb2dfbW9kZShtdHIsIE1UUl9MT0dfTk9ORSk7CiAKQEAgLTE2NjgsMjMgKzE2NjYsNDUg QEAgYnRyX3BhZ2VfcmVvcmdhbml6ZV9sb3coCiAjaWZuZGVmIFVOSVZfSE9UQkFDS1VQCiAJaWYg KCFyZWNvdmVyeSkgewogCQlidHJfc2VhcmNoX2Ryb3BfcGFnZV9oYXNoX2luZGV4KGJsb2NrKTsK KworCQkvKiBJbiBjaGFuZ2UgYnVmZmVyIG1lcmdlIChvbiBzZWNvbmRhcnkgaW5kZXhlcyksIHdl CisJCXVzZSBhIGR1bW15IGluZGV4IHdpdGggYm9ndXMgaW5kZXgtPmlkLiAqLworCQl1dF9hZChw YWdlX2luZGV4LT5pZCA9PSBidHJfcGFnZV9nZXRfaW5kZXhfaWQocGFnZSkKKwkJICAgICAgfHwg bXRyLT5pbnNpZGVfaWJ1Zik7CiAJfQogCiAJYmxvY2stPmNoZWNrX2luZGV4X3BhZ2VfYXRfZmx1 c2ggPSBUUlVFOwogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwotCWJ0cl9ibG9iX2RiZ19y ZW1vdmUocGFnZSwgaW5kZXgsICJidHJfcGFnZV9yZW9yZ2FuaXplIik7CisJYnRyX2Jsb2JfZGJn X3JlbW92ZShwYWdlLCBwYWdlX2luZGV4LCAiYnRyX3BhZ2VfcmVvcmdhbml6ZSIpOwogCiAJLyog UmVjcmVhdGUgdGhlIHBhZ2U6IG5vdGUgdGhhdCBnbG9iYWwgZGF0YSBvbiBwYWdlIChwb3NzaWJs ZQogCXNlZ21lbnQgaGVhZGVycywgbmV4dCBwYWdlLWZpZWxkLCBldGMuKSBpcyBwcmVzZXJ2ZWQg aW50YWN0ICovCiAKIAlwYWdlX2NyZWF0ZShibG9jaywgbXRyLCBkaWN0X3RhYmxlX2lzX2NvbXAo aW5kZXgtPnRhYmxlKSk7CiAKKyNpZm5kZWYgVU5JVl9IT1RCQUNLVVAKKwlpZiAocGFnZV9pbmRl eCAhPSBpbmRleCkgeworCQl1dF9hZCghcmVjb3ZlcnkpOworCQlpZiAocGFnZV96aXApIHsKKwkJ CW1hY2hfd3JpdGVfdG9fOChQQUdFX0hFQURFUiArIFBBR0VfSU5ERVhfSUQgKyBwYWdlLAorCQkJ CQlpbmRleC0+aWQpOworCQl9IGVsc2UgeworCQkJbWxvZ193cml0ZV91bGwoUEFHRV9IRUFERVIg KyBQQUdFX0lOREVYX0lEICsgcGFnZSwKKwkJCQkgICAgICAgaW5kZXgtPmlkLCBtdHIpOworCQl9 CisJfQorI2VuZGlmIC8qIFVOSVZfSE9UQkFDS1VQICovCisKIAkvKiBDb3B5IHRoZSByZWNvcmRz IGZyb20gdGhlIHRlbXBvcmFyeSBzcGFjZSB0byB0aGUgcmVjcmVhdGVkIHBhZ2U7CiAJZG8gbm90 IGNvcHkgdGhlIGxvY2sgYml0cyB5ZXQgKi8KIAotCXBhZ2VfY29weV9yZWNfbGlzdF9lbmRfbm9f bG9ja3MoYmxvY2ssIHRlbXBfYmxvY2ssCi0JCQkJCXBhZ2VfZ2V0X2luZmltdW1fcmVjKHRlbXBf cGFnZSksCi0JCQkJCWluZGV4LCBtdHIpOworCWlmICghcGFnZV9jb3B5X3JlY19saXN0X2VuZF9u b19sb2NrcygKKwkJICAgIGJsb2NrLCB0ZW1wX2Jsb2NrLAorCQkgICAgcGFnZV9nZXRfaW5maW11 bV9yZWModGVtcF9wYWdlKSwKKwkJICAgIHBhZ2VfaW5kZXgsIGluZGV4LCBtdHIpKSB7CisJCXV0 X2FkKHBhZ2VfaW5kZXggIT0gaW5kZXgpOworCQlnb3RvIGVycl9leGl0OworCX0KIAogCWlmIChk aWN0X2luZGV4X2lzX3NlY19vcl9pYnVmKGluZGV4KSAmJiBwYWdlX2lzX2xlYWYocGFnZSkpIHsK IAkJLyogQ29weSBtYXggdHJ4IGlkIHRvIHJlY3JlYXRlZCBwYWdlICovCkBAIC0xNjk2LDExICsx NzE2LDIwIEBAIGJ0cl9wYWdlX3Jlb3JnYW5pemVfbG93KAogCQl1dF9hZChtYXhfdHJ4X2lkICE9 IDAgfHwgcmVjb3ZlcnkpOwogCX0KIAorCXV0X2FkKCFtZW1jbXAocGFnZSwgdGVtcF9wYWdlLCBG SUxfUEFHRV9EQVRBKSk7CisJdXRfYWQoIW1lbWNtcChQQUdFX05fUkVDUyArIFBBR0VfSEVBREVS ICsgcGFnZSwKKwkJICAgICAgUEFHRV9OX1JFQ1MgKyBQQUdFX0hFQURFUiArIHRlbXBfcGFnZSwK KwkJICAgICAgUEFHRV9JTkRFWF9JRCAtIFBBR0VfTl9SRUNTKSk7CisJdXRfYWQoIW1lbWNtcChQ QUdFX0JUUl9TRUdfTEVBRiArIFBBR0VfSEVBREVSICsgcGFnZSwKKwkJICAgICAgUEFHRV9CVFJf U0VHX0xFQUYgKyBQQUdFX0hFQURFUiArIHRlbXBfcGFnZSwKKwkJICAgICAgUEFHRV9EQVRBIC0g UEFHRV9CVFJfU0VHX0xFQUYgLSBQQUdFX0hFQURFUikpOworCiAJaWYgKHBhZ2VfemlwICYmICFw YWdlX3ppcF9jb21wcmVzcyhwYWdlX3ppcCwgcGFnZSwgaW5kZXgsIE5VTEwpKSB7CiAKK2Vycl9l eGl0OgogCQkvKiBSZXN0b3JlIHRoZSBvbGQgcGFnZSBhbmQgZXhpdC4gKi8KLQkJYnRyX2Jsb2Jf ZGJnX3Jlc3RvcmUocGFnZSwgdGVtcF9wYWdlLCBpbmRleCwKLQkJCQkgICAgICJidHJfcGFnZV9y ZW9yZ2FuaXplX2NvbXByZXNzX2ZhaWwiKTsKKwkJYnRyX2Jsb2JfZGJnX3Jlc3RvcmUocGFnZSwg dGVtcF9wYWdlLCBwYWdlX2luZGV4LAorCQkJCSAgICAgImJ0cl9wYWdlX3Jlb3JnYW5pemVfZmFp bCIpOwogCiAjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9aSVBfREVCVUcK IAkJLyogQ2hlY2sgdGhhdCB0aGUgYnl0ZXMgdGhhdCB3ZSBza2lwIGFyZSBpZGVudGljYWwuICov CkBAIC0xNzE1LDYgKzE3NDQsOCBAQCBidHJfcGFnZV9yZW9yZ2FuaXplX2xvdygKIAogCQltZW1j cHkoUEFHRV9IRUFERVIgKyBwYWdlLCBQQUdFX0hFQURFUiArIHRlbXBfcGFnZSwKIAkJICAgICAg IFBBR0VfTl9SRUNTIC0gUEFHRV9OX0RJUl9TTE9UUyk7CisJCW1lbWNweShQQUdFX0hFQURFUiAr IFBBR0VfSU5ERVhfSUQgKyBwYWdlLAorCQkgICAgICAgUEFHRV9IRUFERVIgKyBQQUdFX0lOREVY X0lEICsgdGVtcF9wYWdlLCA4KTsKIAkJbWVtY3B5KFBBR0VfREFUQSArIHBhZ2UsIFBBR0VfREFU QSArIHRlbXBfcGFnZSwKIAkJICAgICAgIFVOSVZfUEFHRV9TSVpFIC0gUEFHRV9EQVRBIC0gRklM X1BBR0VfREFUQV9FTkQpOwogCkBAIC0xNzM2LDYgKzE3NjcsOCBAQCBidHJfcGFnZV9yZW9yZ2Fu aXplX2xvdygKIAltYXhfaW5zX3NpemUyID0gcGFnZV9nZXRfbWF4X2luc2VydF9zaXplX2FmdGVy X3Jlb3JnYW5pemUocGFnZSwgMSk7CiAKIAlpZiAoZGF0YV9zaXplMSAhPSBkYXRhX3NpemUyIHx8 IG1heF9pbnNfc2l6ZTEgIT0gbWF4X2luc19zaXplMikgeworCQkvKiBUT0RPOiBzdXBwcmVzcyB0 aGlzIGlmIHBhZ2VfaW5kZXggIT0gaW5kZXgKKwkJYW5kIFVUX0JJVFNfSU5fQllURVMoaW5kZXgt Pm5fbnVsbGFibGUpIGNoYW5nZWQgKi8KIAkJYnVmX3BhZ2VfcHJpbnQocGFnZSwgMCwgQlVGX1BB R0VfUFJJTlRfTk9fQ1JBU0gpOwogCQlidWZfcGFnZV9wcmludCh0ZW1wX3BhZ2UsIDAsIEJVRl9Q QUdFX1BSSU5UX05PX0NSQVNIKTsKIApAQCAtMTc1MCw4ICsxNzgzLDkgQEAgYnRyX3BhZ2VfcmVv cmdhbml6ZV9sb3coCiAJCQkodW5zaWduZWQgbG9uZykgbWF4X2luc19zaXplMSwKIAkJCSh1bnNp Z25lZCBsb25nKSBtYXhfaW5zX3NpemUyKTsKIAkJdXRfYWQoMCk7CisJCWdvdG8gZXJyX2V4aXQ7 CiAJfSBlbHNlIHsKLQkJc3VjY2VzcyA9IFRSVUU7CisJCXN1Y2Nlc3MgPSB0cnVlOwogCX0KIAog ZnVuY19leGl0OgpAQCAtMTc3NSwxNiArMTgwOSw3NSBAQCBJTVBPUlRBTlQ6IGlmIGJ0cl9wYWdl X3Jlb3JnYW5pemUoKSBpcyBpCiBwYWdlIG9mIGEgbm9uLWNsdXN0ZXJlZCBpbmRleCwgdGhlIGNh bGxlciBtdXN0IHVwZGF0ZSB0aGUgaW5zZXJ0CiBidWZmZXIgZnJlZSBiaXRzIGluIHRoZSBzYW1l IG1pbmktdHJhbnNhY3Rpb24gaW4gc3VjaCBhIHdheSB0aGF0IHRoZQogbW9kaWZpY2F0aW9uIHdp bGwgYmUgcmVkby1sb2dnZWQuCi1AcmV0dXJuCVRSVUUgb24gc3VjY2VzcywgRkFMU0Ugb24gZmFp bHVyZSAqLworQHJldHVybgl0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUgKi8KIFVO SVZfSU5URVJOCi1pYm9vbAorYm9vbAogYnRyX3BhZ2VfcmVvcmdhbml6ZSgKIC8qPT09PT09PT09 PT09PT09PSovCiAJYnVmX2Jsb2NrX3QqCWJsb2NrLAkvKiE8IGluOiBwYWdlIHRvIGJlIHJlb3Jn YW5pemVkICovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogcmVjb3JkIGRlc2NyaXB0 b3IgKi8KLQltdHJfdCoJCW10cikJLyohPCBpbjogbXRyICovCisJbXRyX3QqCQltdHIpCS8qITwg aW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCiB7Ci0JcmV0dXJuKGJ0cl9wYWdlX3Jlb3JnYW5p emVfbG93KEZBTFNFLCBibG9jaywgaW5kZXgsIG10cikpOworCWJvb2wJc3VjY2VzcyA9IGJ0cl9w YWdlX3Jlb3JnYW5pemVfbG93KAorCQlmYWxzZSwgYmxvY2ssIGluZGV4LCBpbmRleCwgbXRyKTsK KworCWlmIChzdWNjZXNzKSB7CisJCS8qIFdyaXRlIHRoZSBsb2cgcmVjb3JkLiAqLworCQltbG9n X29wZW5fYW5kX3dyaXRlX2luZGV4KG10ciwgYmxvY2stPmZyYW1lLCBpbmRleCwKKwkJCQkJICBw YWdlX2lzX2NvbXAoYmxvY2stPmZyYW1lKQorCQkJCQkgID8gTUxPR19DT01QX1BBR0VfUkVPUkdB TklaRQorCQkJCQkgIDogTUxPR19QQUdFX1JFT1JHQU5JWkUsIDApOworCX0KKworCXJldHVybihz dWNjZXNzKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCitDb252ZXJ0cyBhIGNsdXN0ZXJlZCBpbmRleCBsZWFm IHBhZ2UgYnkgcmVvcmdhbml6aW5nIGl0LgorSU1QT1JUQU5UOiB3aGVuIGludm9rZWQgb24gYSBj b21wcmVzc2VkIHBhZ2UsIHRoZSBjYWxsZXIgbXVzdCB1cGRhdGUKK3RoZSBpbnNlcnQgYnVmZmVy IGZyZWUgYml0cyBpbiB0aGUgc2FtZSBtaW5pLXRyYW5zYWN0aW9uIGluIHN1Y2ggYQord2F5IHRo YXQgdGhlIG1vZGlmaWNhdGlvbiB3aWxsIGJlIHJlZG8tbG9nZ2VkLgorQHJldHVybgl0cnVlIG9u IHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUgKi8KK1VOSVZfSU5URVJOCitib29sCitidHJfcGFn ZV9jb252ZXJ0KAorLyo9PT09PT09PT09PT09Ki8KKwlidWZfYmxvY2tfdCoJYmxvY2ssCQkvKiE8 IGluOiBwYWdlIHRvIGJlIGNvbnZlcnRlZCAqLworCWluZGV4X2lkX3QJaW5kZXhfaWQsCS8qITwg aW46IFBBR0VfSU5ERVhfSUQgb2YgdGhlIHBhZ2UgKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkJ LyohPCBpbjogY3VycmVudCBjbHVzdGVyZWQgaW5kZXggKi8KKwltdHJfdCoJCW10cikJCS8qITwg aW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCit7CisJZGljdF9pbmRleF90KglwYWdlX2luZGV4 ID0gZGljdF9pbmRleF9nZXRfdmVyc2lvbihpbmRleCwgaW5kZXhfaWQpOworCisJdXRfYWQocGFn ZV9pbmRleCk7CisJaWYgKCFwYWdlX2luZGV4KSB7CisJCXJldHVybihmYWxzZSk7CisJfQorCisJ aWYgKCFidHJfcGFnZV9yZW9yZ2FuaXplX2xvdygKKwkJICAgIGZhbHNlLCBibG9jaywgcGFnZV9p bmRleCwgaW5kZXgsIG10cikpIHsKKwkJcmV0dXJuKGZhbHNlKTsKKwl9CisKKwkvKiBXcml0ZSB0 aGUgbmV3IHBhZ2UgaW1hZ2UgdG8gdGhlIHJlZG8gbG9nLiAqLworCXBhZ2VfemlwX2Rlc190KiBw YWdlX3ppcCA9IGJ1Zl9ibG9ja19nZXRfcGFnZV96aXAoYmxvY2spOworCisJaWYgKHBhZ2Vfemlw KSB7CisJCXBhZ2VfemlwX2NvbXByZXNzX3dyaXRlX2xvZygKKwkJCXBhZ2VfemlwLCBibG9jay0+ ZnJhbWUsIGluZGV4LCBtdHIpOworCX0gZWxzZSB7CisJCXV0X2FkKG1hY2hfcmVhZF9mcm9tXzgo UEFHRV9JTkRFWF9JRCArIFBBR0VfSEVBREVSCisJCQkJICAgICAgICsgYmxvY2stPmZyYW1lKSA9 PSBpbmRleC0+aWQpOworCQltbG9nX2xvZ19zdHJpbmcoUEFHRV9IRUFERVIgKyBibG9jay0+ZnJh bWUsCisJCQkJUEFHRV9OX1JFQ1MsIG10cik7CisJCW1sb2dfd3JpdGVfdWxsKFBBR0VfSU5ERVhf SUQgKyBQQUdFX0hFQURFUgorCQkJICAgICAgICsgYmxvY2stPmZyYW1lLCBpbmRleC0+aWQsIG10 cik7CisJCW1sb2dfbG9nX3N0cmluZyhQQUdFX0RBVEEgKyBibG9jay0+ZnJhbWUsCisJCQkJVU5J Vl9QQUdFX1NJWkUgLSBQQUdFX0RBVEEKKwkJCQktIEZJTF9QQUdFX0RBVEFfRU5ELCBtdHIpOwor CX0KKworCXJldHVybih0cnVlKTsKIH0KICNlbmRpZiAvKiAhVU5JVl9IT1RCQUNLVVAgKi8KIApA QCAtMTgwNyw3ICsxOTAwLDExIEBAIGJ0cl9wYXJzZV9wYWdlX3Jlb3JnYW5pemUoCiAJLyogVGhl IHJlY29yZCBpcyBlbXB0eSwgZXhjZXB0IGZvciB0aGUgcmVjb3JkIGluaXRpYWwgcGFydCAqLwog CiAJaWYgKGJsb2NrICE9IE5VTEwpIHsKLQkJYnRyX3BhZ2VfcmVvcmdhbml6ZV9sb3coVFJVRSwg YmxvY2ssIGluZGV4LCBtdHIpOworCQlpZiAoIWJ0cl9wYWdlX3Jlb3JnYW5pemVfbG93KHRydWUs IGJsb2NrLCBpbmRleCwgaW5kZXgsIG10cikpIHsKKwkJCS8qIFdlIHNob3VsZCBub3Qgd3JpdGUg YW55IHJlZG8gbG9nIGVudHJ5CisJCQlmb3IgYSBmYWlsZWQgcmVvcmdhbml6YXRpb24uICovCisJ CQl1dF9hZCgwKTsKKwkJfQogCX0KIAogCXJldHVybihwdHIpOwoKPT09IG1vZGlmaWVkIGZpbGUg J3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv YnRyL2J0cjBjdXIuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTAxMTI1 NDctNWF1MzBoNjlqbG85NGE4egorKysgYi9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmNj CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTEwMTMwOTMzLTdsaTB3MjFnZGdz djExeDEKQEAgLTcxNCw2ICs3MTQsMTggQEAgcmV0cnlfcGFnZV9nZXQ6CiAJfQogCiAJdXRfYWQo ZmlsX3BhZ2VfZ2V0X3R5cGUocGFnZSkgPT0gRklMX1BBR0VfSU5ERVgpOworCisJeworCQlpbmRl eF9pZF90CXBhZ2VfaW5kZXhfaWQgPSBidHJfcGFnZV9nZXRfaW5kZXhfaWQocGFnZSk7CisKKwkJ aWYgKGluZGV4LT5pZCAhPSBwYWdlX2luZGV4X2lkKSB7CisJCQlpbmRleCA9IGRpY3RfaW5kZXhf Z2V0X3ZlcnNpb24oaW5kZXgsIHBhZ2VfaW5kZXhfaWQpOworCQkJLyogQSBjb3JyZXNwb25kaW5n IHRhYmxlIGRlZmluaXRpb24gbXVzdCBiZSBmb3VuZC4gKi8KKwkJCXV0X2EoaW5kZXgpOworCQl9 CisJfQorCisKIAl1dF9hZChpbmRleC0+aWQgPT0gYnRyX3BhZ2VfZ2V0X2luZGV4X2lkKHBhZ2Up KTsKIAogCWlmIChVTklWX1VOTElLRUxZKGhlaWdodCA9PSBVTElOVF9VTkRFRklORUQpKSB7CkBA IC03MjIsNiArNzM0LDcgQEAgcmV0cnlfcGFnZV9nZXQ6CiAJCWhlaWdodCA9IGJ0cl9wYWdlX2dl dF9sZXZlbChwYWdlLCBtdHIpOwogCQlyb290X2hlaWdodCA9IGhlaWdodDsKIAkJY3Vyc29yLT50 cmVlX2hlaWdodCA9IHJvb3RfaGVpZ2h0ICsgMTsKKwkJdXRfYWQobGV2ZWwgPD0gaGVpZ2h0KTsK IAogI2lmZGVmIEJUUl9DVVJfQURBUFQKIAkJaWYgKGJsb2NrICE9IGd1ZXNzICYmIGluZm8pIHsK QEAgLTc3MywxMSArNzg2LDM5IEBAIHJldHJ5X3BhZ2VfZ2V0OgogCQljb25zdCByZWNfdCoJbm9k ZV9wdHI7CiAJCXV0X2FkKGhlaWdodCA+IDApOwogCisJCWlmIChpbmRleCAhPSBjdXJzb3ItPmlu ZGV4ICYmIGluZGV4LT50YWJsZS0+bmV3ZXIpIHsKKwkJCXV0X2FkKGRpY3RfaW5kZXhfaXNfY2x1 c3QoaW5kZXgpKTsKKworCQkJLyogVXBkYXRlIFBBR0VfSU5ERVhfSUQgb24gbm9kZSBwb2ludGVy IHBhZ2VzCisJCQl0byB0aGUgbmV3ZXN0IGRlZmluaXRpb24gaWYgaW5kZXgtPmxvY2sgaXMKKwkJ CWV4Y2x1c2l2ZWx5IGxvY2tlZC4gKi8KKworCQkJc3dpdGNoIChsYXRjaF9tb2RlKSB7CisJCQlk ZWZhdWx0OgorCQkJCWJyZWFrOworCQkJY2FzZSBCVFJfTU9ESUZZX1RSRUU6CisJCQljYXNlIEJU Ul9DT05UX01PRElGWV9UUkVFOgorCQkJCXdoaWxlIChpbmRleC0+dGFibGUtPm5ld2VyKSB7CisJ CQkJCWluZGV4ID0gZGljdF90YWJsZV9nZXRfZmlyc3RfaW5kZXgoCisJCQkJCQlpbmRleC0+dGFi bGUtPm5ld2VyKTsKKwkJCQl9CisKKwkJCQlidHJfcGFnZV9zZXRfaW5kZXhfaWQoCisJCQkJCXBh Z2UsIGJ1Zl9ibG9ja19nZXRfcGFnZV96aXAoYmxvY2spLAorCQkJCQlpbmRleC0+aWQsIG10cik7 CisJCQl9CisJCX0KKwogCQloZWlnaHQtLTsKIAkJZ3Vlc3MgPSBOVUxMOwogCiAJCW5vZGVfcHRy ID0gcGFnZV9jdXJfZ2V0X3JlYyhwYWdlX2N1cnNvcik7CiAKKwkJLyogV2UgbWF5IGhhdmUgcGFn ZV9pbmRleF9pZCBtaXNtYXRjaCBoZXJlLAorCQlidXQgYmVjYXVzZSB0YWJsZSBkZWZpbml0aW9u IGNoYW5nZXMgYXJlIG9ubHkgYWxsb3dlZAorCQl3aGVuIHRoZSBwcmltYXJ5IGtleSBjb2x1bW5z IGFyZSBub3QgYWZmZWN0ZWQsIHRoZQorCQlub2RlIHBvaW50ZXIgcmVjb3JkcyBjYW4gYmUgaW50 ZXJwcmV0ZWQgdXNpbmcgYW55IGNsdXN0ZXJlZAorCQlpbmRleCBkZWZpbml0aW9uIG9mIHRoZSB0 YWJsZS4gKi8KIAkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cygKIAkJCW5vZGVfcHRyLCBpbmRl eCwgb2Zmc2V0cywgVUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7CiAKQEAgLTkxMyw3ICs5NTQsOSBA QCBidHJfY3VyX29wZW5fYXRfaW5kZXhfc2lkZV9mdW5jKAogCQkJCQkgZmlsZSwgbGluZSwgbXRy KTsKIAkJcGFnZSA9IGJ1Zl9ibG9ja19nZXRfZnJhbWUoYmxvY2spOwogCQl1dF9hZChmaWxfcGFn ZV9nZXRfdHlwZShwYWdlKSA9PSBGSUxfUEFHRV9JTkRFWCk7Ci0JCXV0X2FkKGluZGV4LT5pZCA9 PSBidHJfcGFnZV9nZXRfaW5kZXhfaWQocGFnZSkpOworCQl1dF9hZChpbmRleC0+aWQgPT0gYnRy X3BhZ2VfZ2V0X2luZGV4X2lkKHBhZ2UpCisJCSAgICAgIHx8IChkaWN0X2luZGV4X2lzX2NsdXN0 KGluZGV4KQorCQkJICAmJiAoaW5kZXgtPnRhYmxlLT5uZXdlciB8fCBpbmRleC0+dGFibGUtPm9s ZGVyKSkpOwogCiAJCWJsb2NrLT5jaGVja19pbmRleF9wYWdlX2F0X2ZsdXNoID0gVFJVRTsKIApA QCAtMTA0Myw3ICsxMDg2LDkgQEAgYnRyX2N1cl9vcGVuX2F0X3JuZF9wb3NfZnVuYygKIAkJCQkJ IGZpbGUsIGxpbmUsIG10cik7CiAJCXBhZ2UgPSBidWZfYmxvY2tfZ2V0X2ZyYW1lKGJsb2NrKTsK IAkJdXRfYWQoZmlsX3BhZ2VfZ2V0X3R5cGUocGFnZSkgPT0gRklMX1BBR0VfSU5ERVgpOwotCQl1 dF9hZChpbmRleC0+aWQgPT0gYnRyX3BhZ2VfZ2V0X2luZGV4X2lkKHBhZ2UpKTsKKwkJdXRfYWQo aW5kZXgtPmlkID09IGJ0cl9wYWdlX2dldF9pbmRleF9pZChwYWdlKQorCQkgICAgICB8fCAoZGlj dF9pbmRleF9pc19jbHVzdChpbmRleCkKKwkJCSAgJiYgKGluZGV4LT50YWJsZS0+bmV3ZXIgfHwg aW5kZXgtPnRhYmxlLT5vbGRlcikpKTsKIAogCQlpZiAoaGVpZ2h0ID09IFVMSU5UX1VOREVGSU5F RCkgewogCQkJLyogV2UgYXJlIGluIHRoZSByb290IG5vZGUgKi8KQEAgLTIwNjgsNiArMjExMywx NyBAQCBidHJfY3VyX29wdGltaXN0aWNfdXBkYXRlKAogCXV0X2FkKHRociB8fCBmbGFncyA9PSAo QlRSX05PX1VORE9fTE9HX0ZMQUcgfCBCVFJfTk9fTE9DS0lOR19GTEFHCiAJCQkgICAgICAgfCBC VFJfQ1JFQVRFX0ZMQUcgfCBCVFJfS0VFUF9TWVNfRkxBRykpOwogCXV0X2FkKGZpbF9wYWdlX2dl dF90eXBlKHBhZ2UpID09IEZJTF9QQUdFX0lOREVYKTsKKworCXsKKwkJaW5kZXhfaWRfdCBwYWdl X2luZGV4X2lkID0gYnRyX3BhZ2VfZ2V0X2luZGV4X2lkKHBhZ2UpOworCisJCWlmIChVTklWX1VO TElLRUxZCisJCSAgICAocGFnZV9pbmRleF9pZCAhPSBpbmRleC0+aWQKKwkJICAgICAmJiAhYnRy X3BhZ2VfY29udmVydChibG9jaywgcGFnZV9pbmRleF9pZCwgaW5kZXgsIG10cikpKSB7CisJCQly ZXR1cm4oREJfT1ZFUkZMT1cpOworCQl9CisJfQorCiAJdXRfYWQoYnRyX3BhZ2VfZ2V0X2luZGV4 X2lkKHBhZ2UpID09IGluZGV4LT5pZCk7CiAKIAloZWFwID0gbWVtX2hlYXBfY3JlYXRlKDEwMjQp OwpAQCAtMjM4Niw2ICsyNDQyLDggQEAgYnRyX2N1cl9wZXNzaW1pc3RpY191cGRhdGUoCiAJCX0K IAl9CiAKKwl1dF9hZChidHJfcGFnZV9nZXRfaW5kZXhfaWQocGFnZSkgPT0gaW5kZXgtPmlkKTsK KwogCWlmICghKmhlYXApIHsKIAkJKmhlYXAgPSBtZW1faGVhcF9jcmVhdGUoMTAyNCk7CiAJfQpA QCAtMzAyNCw2ICszMDgyLDggQEAgYnRyX2N1cl9vcHRpbWlzdGljX2RlbGV0ZV9mdW5jKAogCXVs aW50CQlvZmZzZXRzX1tSRUNfT0ZGU19OT1JNQUxfU0laRV07CiAJdWxpbnQqCQlvZmZzZXRzCQk9 IG9mZnNldHNfOwogCWlib29sCQlub19jb21wcmVzc19uZWVkZWQ7CisJZGljdF9pbmRleF90Kglp bmRleAkJPSBjdXJzb3ItPmluZGV4OworCWluZGV4X2lkX3QJcGFnZV9pbmRleF9pZDsKIAlyZWNf b2Zmc19pbml0KG9mZnNldHNfKTsKIAogCXV0X2FkKGZsYWdzID09IDAgfHwgZmxhZ3MgPT0gQlRS X0NSRUFURV9GTEFHKTsKQEAgLTMwMzMsMTIgKzMwOTMsMjYgQEAgYnRyX2N1cl9vcHRpbWlzdGlj X2RlbGV0ZV9mdW5jKAogCiAJYmxvY2sgPSBidHJfY3VyX2dldF9ibG9jayhjdXJzb3IpOwogCisJ dXRfYWQoYnVmX2Jsb2NrX2dldF9zdGF0ZShibG9jaykgPT0gQlVGX0JMT0NLX0ZJTEVfUEFHRSk7 CisJdXRfYWQoZmlsX3BhZ2VfZ2V0X3R5cGUoYnVmX2Jsb2NrX2dldF9mcmFtZShibG9jaykpID09 IEZJTF9QQUdFX0lOREVYKTsKIAl1dF9hZChwYWdlX2lzX2xlYWYoYnVmX2Jsb2NrX2dldF9mcmFt ZShibG9jaykpKTsKIAl1dF9hZCghZGljdF9pbmRleF9pc19vbmxpbmVfZGRsKGN1cnNvci0+aW5k ZXgpCiAJICAgICAgfHwgKGZsYWdzICYgQlRSX0NSRUFURV9GTEFHKSk7CiAKKwlwYWdlX2luZGV4 X2lkID0gYnRyX3BhZ2VfZ2V0X2luZGV4X2lkKGJ1Zl9ibG9ja19nZXRfZnJhbWUoYmxvY2spKTsK KworCWlmIChwYWdlX2luZGV4X2lkICE9IGluZGV4LT5pZCkgeworCQlpbmRleCA9IGRpY3RfaW5k ZXhfZ2V0X3ZlcnNpb24oaW5kZXgsIHBhZ2VfaW5kZXhfaWQpOworCQkvKiBBIGNvcnJlc3BvbmRp bmcgdGFibGUgZGVmaW5pdGlvbiBtdXN0IGJlIGZvdW5kLiAqLworCQl1dF9hZChpbmRleCk7CisJ CS8qIEFkZCBzb21lIGZhdWx0IHRvbGVyYW5jZS4gKi8KKwkJaWYgKCFpbmRleCkgeworCQkJcmV0 dXJuKEZBTFNFKTsKKwkJfQorCX0KKwogCXJlYyA9IGJ0cl9jdXJfZ2V0X3JlYyhjdXJzb3IpOwot CW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMocmVjLCBjdXJzb3ItPmluZGV4LCBvZmZzZXRzLAor CW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCwgb2Zmc2V0cywKIAkJCQkgIFVM SU5UX1VOREVGSU5FRCwgJmhlYXApOwogCiAJbm9fY29tcHJlc3NfbmVlZGVkID0gIXJlY19vZmZz X2FueV9leHRlcm4ob2Zmc2V0cykKQEAgLTMwNjMsMTMgKzMxMzcsMTMgQEAgYnRyX2N1cl9vcHRp bWlzdGljX2RlbGV0ZV9mdW5jKAogCQl1dF9hKCFwYWdlX3ppcCB8fCBwYWdlX3ppcF92YWxpZGF0 ZShwYWdlX3ppcCwgcGFnZSkpOwogI2VuZGlmIC8qIFVOSVZfWklQX0RFQlVHICovCiAJCXBhZ2Vf Y3VyX2RlbGV0ZV9yZWMoYnRyX2N1cl9nZXRfcGFnZV9jdXIoY3Vyc29yKSwKLQkJCQkgICAgY3Vy c29yLT5pbmRleCwgb2Zmc2V0cywgbXRyKTsKKwkJCQkgICAgaW5kZXgsIG9mZnNldHMsIG10cik7 CiAjaWZkZWYgVU5JVl9aSVBfREVCVUcKIAkJdXRfYSghcGFnZV96aXAgfHwgcGFnZV96aXBfdmFs aWRhdGUocGFnZV96aXAsIHBhZ2UpKTsKICNlbmRpZiAvKiBVTklWX1pJUF9ERUJVRyAqLwogCi0J CWlmIChkaWN0X2luZGV4X2lzX2NsdXN0KGN1cnNvci0+aW5kZXgpCi0JCSAgICB8fCBkaWN0X2lu ZGV4X2lzX2lidWYoY3Vyc29yLT5pbmRleCkKKwkJaWYgKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5k ZXgpCisJCSAgICB8fCBkaWN0X2luZGV4X2lzX2lidWYoaW5kZXgpCiAJCSAgICB8fCAhcGFnZV9p c19sZWFmKHBhZ2UpKSB7CiAJCQkvKiBUaGUgaW5zZXJ0IGJ1ZmZlciBkb2VzIG5vdCBoYW5kbGUK IAkJCWluc2VydHMgdG8gY2x1c3RlcmVkIGluZGV4ZXMsIHRvCkBAIC0zMTIxLDYgKzMxOTUsNyBA QCBidHJfY3VyX3Blc3NpbWlzdGljX2RlbGV0ZSgKIAlidWZfYmxvY2tfdCoJYmxvY2s7CiAJcGFn ZV90KgkJcGFnZTsKIAlwYWdlX3ppcF9kZXNfdCoJcGFnZV96aXA7CisJaW5kZXhfaWRfdAlwYWdl X2luZGV4X2lkOwogCWRpY3RfaW5kZXhfdCoJaW5kZXg7CiAJcmVjX3QqCQlyZWM7CiAJZHR1cGxl X3QqCW5vZGVfcHRyOwpAQCAtMzE0MSw2ICszMjE2LDIyIEBAIGJ0cl9jdXJfcGVzc2ltaXN0aWNf ZGVsZXRlKAogCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKG10ciwgZGljdF9pbmRleF9nZXRfbG9j ayhpbmRleCksCiAJCQkJTVRSX01FTU9fWF9MT0NLKSk7CiAJdXRfYWQobXRyX21lbW9fY29udGFp bnMobXRyLCBibG9jaywgTVRSX01FTU9fUEFHRV9YX0ZJWCkpOworCXV0X2FkKGJ1Zl9ibG9ja19n ZXRfc3RhdGUoYmxvY2spID09IEJVRl9CTE9DS19GSUxFX1BBR0UpOworCXV0X2FkKGZpbF9wYWdl X2dldF90eXBlKGJ1Zl9ibG9ja19nZXRfZnJhbWUoYmxvY2spKSA9PSBGSUxfUEFHRV9JTkRFWCk7 CisKKwlwYWdlX2luZGV4X2lkID0gYnRyX3BhZ2VfZ2V0X2luZGV4X2lkKGJ1Zl9ibG9ja19nZXRf ZnJhbWUoYmxvY2spKTsKKworCWlmIChwYWdlX2luZGV4X2lkICE9IGluZGV4LT5pZCkgeworCQlp bmRleCA9IGRpY3RfaW5kZXhfZ2V0X3ZlcnNpb24oaW5kZXgsIHBhZ2VfaW5kZXhfaWQpOworCQkv KiBBIGNvcnJlc3BvbmRpbmcgdGFibGUgZGVmaW5pdGlvbiBtdXN0IGJlIGZvdW5kLiAqLworCQl1 dF9hZChpbmRleCk7CisJCS8qIEFkZCBzb21lIGZhdWx0IHRvbGVyYW5jZS4gKi8KKwkJaWYgKCFp bmRleCkgeworCQkJKmVyciA9IERCX0lOREVYX0NPUlJVUFQ7CisJCQlyZXR1cm4oRkFMU0UpOwor CQl9CisJfQorCiAJaWYgKCFoYXNfcmVzZXJ2ZWRfZXh0ZW50cykgewogCQkvKiBGaXJzdCByZXNl cnZlIGVub3VnaCBmcmVlIHNwYWNlIGZvciB0aGUgZmlsZSBzZWdtZW50cwogCQlvZiB0aGUgaW5k ZXggdHJlZSwgc28gdGhhdCB0aGUgbm9kZSBwb2ludGVyIHVwZGF0ZXMgd2lsbAoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MGNyZWEuY2MnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2UvZGljdC9kaWN0MGNyZWEuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMjA1MTAxMTI1NDctNWF1MzBoNjlqbG85NGE4egorKysgYi9zdG9yYWdlL2lubm9iYXNl L2RpY3QvZGljdDBjcmVhLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTEw MTMwOTMzLTdsaTB3MjFnZGdzdjExeDEKQEAgLTI2NSw5ICsyNjUsMTEgQEAgZGljdF9idWlsZF90 YWJsZV9kZWZfc3RlcCgKIAl0YWJsZSA9IG5vZGUtPnRhYmxlOwogCXVzZV90YWJsZXNwYWNlID0g ISEodGFibGUtPmZsYWdzMiAmIERJQ1RfVEYyX1VTRV9UQUJMRVNQQUNFKTsKIAotCWRpY3RfaGRy X2dldF9uZXdfaWQoJnRhYmxlLT5pZCwgTlVMTCwgTlVMTCk7Ci0KLQl0aHJfZ2V0X3RyeCh0aHIp LT50YWJsZV9pZCA9IHRhYmxlLT5pZDsKKwlpZiAodGFibGUtPmlkID09IDApIHsKKwkJZGljdF9o ZHJfZ2V0X25ld19pZCgmdGFibGUtPmlkLCBOVUxMLCBOVUxMKTsKKwl9IGVsc2UgeworCQlnb3Rv IGZ1bmNfZXhpdDsKKwl9CiAKIAlpZiAodXNlX3RhYmxlc3BhY2UpIHsKIAkJLyogVGhpcyB0YWJs ZSB3aWxsIG5vdCB1c2UgdGhlIHN5c3RlbSB0YWJsZXNwYWNlLgpAQCAtMzI1LDYgKzMyNyw4IEBA IGRpY3RfYnVpbGRfdGFibGVfZGVmX3N0ZXAoCiAJCXRhYmxlLT5mbGFncyAmPSBESUNUX1RGX0NP TVBBQ1Q7CiAJfQogCitmdW5jX2V4aXQ6CisJdGhyX2dldF90cngodGhyKS0+dGFibGVfaWQgPSB0 YWJsZS0+aWQ7CiAJcm93ID0gZGljdF9jcmVhdGVfc3lzX3RhYmxlc190dXBsZSh0YWJsZSwgbm9k ZS0+aGVhcCk7CiAKIAlpbnNfbm9kZV9zZXRfbmV3X3Jvdyhub2RlLT50YWJfZGVmLCByb3cpOwpA QCAtNDM4LDcgKzQ0Miw3IEBAIGRpY3RfY3JlYXRlX3N5c19pbmRleGVzX3R1cGxlKAogCQllbnRy eSwgRElDVF9DT0xfX1NZU19JTkRFWEVTX19QQUdFX05PKTsKIAogCXB0ciA9IHN0YXRpY19jYXN0 PGJ5dGUqPihtZW1faGVhcF9hbGxvYyhoZWFwLCA0KSk7Ci0JbWFjaF93cml0ZV90b180KHB0ciwg RklMX05VTEwpOworCW1hY2hfd3JpdGVfdG9fNChwdHIsIGluZGV4LT5wYWdlKTsKIAogCWRmaWVs ZF9zZXRfZGF0YShkZmllbGQsIHB0ciwgNCk7CiAKQEAgLTYwOCw3ICs2MTIsNyBAQCBkaWN0X2J1 aWxkX2luZGV4X2RlZl9zdGVwKAogCXRhYmxlIGluIHRoZSBzYW1lIHRhYmxlc3BhY2UgKi8KIAog CWluZGV4LT5zcGFjZSA9IHRhYmxlLT5zcGFjZTsKLQlub2RlLT5wYWdlX25vID0gRklMX05VTEw7 CisJbm9kZS0+cGFnZV9ubyA9IGluZGV4LT5wYWdlOwogCXJvdyA9IGRpY3RfY3JlYXRlX3N5c19p bmRleGVzX3R1cGxlKGluZGV4LCBub2RlLT5oZWFwKTsKIAlub2RlLT5pbmRfcm93ID0gcm93Owog CkBAIC02NjAsOCArNjY0LDkgQEAgZGljdF9jcmVhdGVfaW5kZXhfdHJlZV9zdGVwKAogCiAJc3lz X2luZGV4ZXMgPSBkaWN0X3N5cy0+c3lzX2luZGV4ZXM7CiAKLQlpZiAoaW5kZXgtPnR5cGUgPT0g RElDVF9GVFMpIHsKLQkJLyogRlRTIGluZGV4IGRvZXMgbm90IG5lZWQgYW4gaW5kZXggdHJlZSAq LworCWlmIChpbmRleC0+dHlwZSA9PSBESUNUX0ZUUyB8fCBub2RlLT5wYWdlX25vICE9IEZJTF9O VUxMKSB7CisJCS8qIEZUUyBpbmRleCBkb2VzIG5vdCBuZWVkIGFuIGluZGV4IHRyZWUsCisJCWFu ZCBuZWl0aGVyIGRvIG9ubGluZSB0YWJsZSBkZWZpbml0aW9uIGNoYW5nZXMuICovCiAJCXJldHVy bihEQl9TVUNDRVNTKTsKIAl9CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L2RpY3QvZGljdDBkaWN0LmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2RpY3QvZGljdDBkaWN0 LmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTEwMTEyNTQ3LTVhdTMwaDY5 amxvOTRhOHoKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9kaWN0L2RpY3QwZGljdC5jYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDEzMDkzMy03bGkwdzIxZ2Rnc3YxMXgxCkBA IC0yMDMsOSArMjAzLDEwIEBAIGRpY3RfaW5kZXhfcmVtb3ZlX2Zyb21fY2FjaGVfbG93KAogCWli b29sCQlscnVfZXZpY3QpOwkvKiE8IGluOiBUUlVFIGlmIHBhZ2UgYmVpbmcgZXZpY3RlZAogCQkJ CQl0byBtYWtlIHJvb20gaW4gdGhlIHRhYmxlIExSVSBsaXN0ICovCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKLVJlbW92ZXMgYSB0YWJsZSBvYmplY3QgZnJvbSB0aGUgZGljdGlvbmFyeSBjYWNoZS4gKi8K LXN0YXRpYwotdm9pZAorUmVtb3ZlcyBhIHRhYmxlIG9iamVjdCBmcm9tIHRoZSBkaWN0aW9uYXJ5 IGNhY2hlLgorQHJldHVybiBwcmV2aW91cyB0YWJsZSBpbiB0aGUgTFJVIGxpc3QsIG9yIE5VTEwg Ki8KK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKChub25udWxsKSkKK2RpY3RfdGFibGVfdCoKIGRpY3Rf dGFibGVfcmVtb3ZlX2Zyb21fY2FjaGVfbG93KAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSovCiAJZGljdF90YWJsZV90Kgl0YWJsZSwJCS8qITwgaW4sIG93bjogdGFibGUgKi8KQEAg LTEyNDcsMTggKzEyNDgsMTIgQEAgZGljdF9tYWtlX3Jvb21faW5fY2FjaGUoCiAJICAgICAmJiAo bGVuIC0gbl9ldmljdGVkKSA+IG1heF90YWJsZXM7CiAJICAgICAtLWkpIHsKIAotCQlkaWN0X3Rh YmxlX3QqCXByZXZfdGFibGU7Ci0KLQkgICAgICAgIHByZXZfdGFibGUgPSBVVF9MSVNUX0dFVF9Q UkVWKHRhYmxlX0xSVSwgdGFibGUpOwotCiAJCWlmIChkaWN0X3RhYmxlX2Nhbl9iZV9ldmljdGVk KHRhYmxlKSkgewogCi0JCQlkaWN0X3RhYmxlX3JlbW92ZV9mcm9tX2NhY2hlX2xvdyh0YWJsZSwg VFJVRSk7CisJCQl0YWJsZSA9IGRpY3RfdGFibGVfcmVtb3ZlX2Zyb21fY2FjaGVfbG93KHRhYmxl LCBUUlVFKTsKIAogCQkJKytuX2V2aWN0ZWQ7CiAJCX0KLQotCQl0YWJsZSA9IHByZXZfdGFibGU7 CiAJfQogCiAJcmV0dXJuKG5fZXZpY3RlZCk7CkBAIC0xNjM4LDkgKzE2MzMsMTAgQEAgZGljdF90 YWJsZV9jaGFuZ2VfaWRfaW5fY2FjaGUoCiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotUmVtb3Zl cyBhIHRhYmxlIG9iamVjdCBmcm9tIHRoZSBkaWN0aW9uYXJ5IGNhY2hlLiAqLwotc3RhdGljCi12 b2lkCitSZW1vdmVzIGEgdGFibGUgb2JqZWN0IGZyb20gdGhlIGRpY3Rpb25hcnkgY2FjaGUuCitA cmV0dXJuIHByZXZpb3VzIHRhYmxlIGluIHRoZSBMUlUgbGlzdCwgb3IgTlVMTCAqLworc3RhdGlj IF9fYXR0cmlidXRlX18oKG5vbm51bGwpKQorZGljdF90YWJsZV90KgogZGljdF90YWJsZV9yZW1v dmVfZnJvbV9jYWNoZV9sb3coCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAlk aWN0X3RhYmxlX3QqCXRhYmxlLAkJLyohPCBpbiwgb3duOiB0YWJsZSAqLwpAQCAtMTY1MSwxOCAr MTY0NywxNiBAQCBkaWN0X3RhYmxlX3JlbW92ZV9mcm9tX2NhY2hlX2xvdygKIAlkaWN0X2luZGV4 X3QqCWluZGV4OwogCXVsaW50CQlzaXplOwogCi0JdXRfYWQodGFibGUpOwogCXV0X2FkKGRpY3Rf bHJ1X3ZhbGlkYXRlKCkpOwogCXV0X2EodGFibGUtPm5fcmVmX2NvdW50ID09IDApOwogCXV0X2Eo dGFibGUtPm5fcmVjX2xvY2tzID09IDApOwogCXV0X2FkKG11dGV4X293bigmKGRpY3Rfc3lzLT5t dXRleCkpKTsKIAl1dF9hZCh0YWJsZS0+bWFnaWNfbiA9PSBESUNUX1RBQkxFX01BR0lDX04pOwog Ci0jaWYgMAotCWZwdXRzKCJSZW1vdmluZyB0YWJsZSAiLCBzdGRlcnIpOwotCXV0X3ByaW50X25h bWUoc3RkZXJyLCB0YWJsZS0+bmFtZSwgVUxJTlRfVU5ERUZJTkVEKTsKLQlmcHV0cygiIGZyb20g ZGljdGlvbmFyeSBjYWNoZVxuIiwgc3RkZXJyKTsKLSNlbmRpZgorCS8qIEdldCB0aGUgbmV3ZXN0 IHRhYmxlIGRlZmluaXRpb24uICovCisJd2hpbGUgKHRhYmxlLT5uZXdlcikgeworCQl0YWJsZSA9 IHRhYmxlLT5uZXdlcjsKKwl9CiAKIAkvKiBSZW1vdmUgdGhlIGZvcmVpZ24gY29uc3RyYWludHMg ZnJvbSB0aGUgY2FjaGUgKi8KIApAQCAtMTY4Myw2ICsxNjc3LDE3IEBAIGRpY3RfdGFibGVfcmVt b3ZlX2Zyb21fY2FjaGVfbG93KAogCQlmb3JlaWduLT5yZWZlcmVuY2VkX2luZGV4ID0gTlVMTDsK IAl9CiAKKwkvKiBSZW1vdmUgdGFibGUgZnJvbSB0aGUgaGFzaCB0YWJsZXMgb2YgdGFibGVzICov CisKKwlIQVNIX0RFTEVURShkaWN0X3RhYmxlX3QsIG5hbWVfaGFzaCwgZGljdF9zeXMtPnRhYmxl X2hhc2gsCisJCSAgICB1dF9mb2xkX3N0cmluZyh0YWJsZS0+bmFtZSksIHRhYmxlKTsKKworZnJl ZV9vbGRlcl9wcmV2OgorCWRpY3RfdGFibGVfdCoJcHJldl90YWJsZSA9IFVUX0xJU1RfR0VUX1BS RVYodGFibGVfTFJVLCB0YWJsZSk7CitmcmVlX29sZGVyOgorCUhBU0hfREVMRVRFKGRpY3RfdGFi bGVfdCwgaWRfaGFzaCwgZGljdF9zeXMtPnRhYmxlX2lkX2hhc2gsCisJCSAgICB1dF9mb2xkX3Vs bCh0YWJsZS0+aWQpLCB0YWJsZSk7CisKIAkvKiBSZW1vdmUgdGhlIGluZGV4ZXMgZnJvbSB0aGUg Y2FjaGUgKi8KIAogCWZvciAoaW5kZXggPSBVVF9MSVNUX0dFVF9MQVNUKHRhYmxlLT5pbmRleGVz KTsKQEAgLTE2OTIsMTQgKzE2OTcsNiBAQCBkaWN0X3RhYmxlX3JlbW92ZV9mcm9tX2NhY2hlX2xv dygKIAkJZGljdF9pbmRleF9yZW1vdmVfZnJvbV9jYWNoZV9sb3codGFibGUsIGluZGV4LCBscnVf ZXZpY3QpOwogCX0KIAotCS8qIFJlbW92ZSB0YWJsZSBmcm9tIHRoZSBoYXNoIHRhYmxlcyBvZiB0 YWJsZXMgKi8KLQotCUhBU0hfREVMRVRFKGRpY3RfdGFibGVfdCwgbmFtZV9oYXNoLCBkaWN0X3N5 cy0+dGFibGVfaGFzaCwKLQkJICAgIHV0X2ZvbGRfc3RyaW5nKHRhYmxlLT5uYW1lKSwgdGFibGUp OwotCi0JSEFTSF9ERUxFVEUoZGljdF90YWJsZV90LCBpZF9oYXNoLCBkaWN0X3N5cy0+dGFibGVf aWRfaGFzaCwKLQkJICAgIHV0X2ZvbGRfdWxsKHRhYmxlLT5pZCksIHRhYmxlKTsKLQogCS8qIFJl bW92ZSB0YWJsZSBmcm9tIExSVSBvciBub24tTFJVIGxpc3QuICovCiAJaWYgKHRhYmxlLT5jYW5f YmVfZXZpY3RlZCkgewogCQl1dF9hZChkaWN0X2xydV9maW5kX3RhYmxlKHRhYmxlKSk7CkBAIC0x NzQwLDcgKzE3MzcsMjEgQEAgZGljdF90YWJsZV9yZW1vdmVfZnJvbV9jYWNoZV9sb3coCiAKIAlk aWN0X3N5cy0+c2l6ZSAtPSBzaXplOwogCisJZGljdF90YWJsZV90KglvbGRfdGFibGUgPSB0YWJs ZS0+b2xkZXI7CisKIAlkaWN0X21lbV90YWJsZV9mcmVlKHRhYmxlKTsKKworCXRhYmxlID0gb2xk X3RhYmxlOworCisJaWYgKCF0YWJsZSkgeworCQlyZXR1cm4ocHJldl90YWJsZSk7CisJfQorCisJ aWYgKHRhYmxlID09IHByZXZfdGFibGUpIHsKKwkJZ290byBmcmVlX29sZGVyX3ByZXY7CisJfSBl bHNlIHsKKwkJZ290byBmcmVlX29sZGVyOworCX0KIH0KIAogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBA IC01OTE2LDIwICs1OTI3LDE4IEBAIGRpY3RfY2xvc2Uodm9pZCkKIAogCS8qIEZyZWUgdGhlIGhh c2ggZWxlbWVudHMuIFdlIGRvbid0IHJlbW92ZSB0aGVtIGZyb20gdGhlIHRhYmxlCiAJYmVjYXVz ZSB3ZSBhcmUgZ29pbmcgdG8gZGVzdHJveSB0aGUgdGFibGUgYW55d2F5LiAqLwotCWZvciAoaSA9 IDA7IGkgPCBoYXNoX2dldF9uX2NlbGxzKGRpY3Rfc3lzLT50YWJsZV9oYXNoKTsgaSsrKSB7CisJ Zm9yIChpID0gMDsgaSA8IGhhc2hfZ2V0X25fY2VsbHMoZGljdF9zeXMtPnRhYmxlX2lkX2hhc2gp OyBpKyspIHsKIAkJZGljdF90YWJsZV90Kgl0YWJsZTsKIAogCQl0YWJsZSA9IHN0YXRpY19jYXN0 PGRpY3RfdGFibGVfdCo+KAotCQkJSEFTSF9HRVRfRklSU1QoZGljdF9zeXMtPnRhYmxlX2hhc2gs IGkpKTsKKwkJCUhBU0hfR0VUX0ZJUlNUKGRpY3Rfc3lzLT50YWJsZV9pZF9oYXNoLCBpKSk7CiAK IAkJd2hpbGUgKHRhYmxlKSB7CiAJCQlkaWN0X3RhYmxlX3QqCXByZXZfdGFibGUgPSB0YWJsZTsK IAogCQkJdGFibGUgPSBzdGF0aWNfY2FzdDxkaWN0X3RhYmxlX3QqPigKLQkJCQlIQVNIX0dFVF9O RVhUKG5hbWVfaGFzaCwgcHJldl90YWJsZSkpOwotI2lmZGVmIFVOSVZfREVCVUcKLQkJCXV0X2Eo cHJldl90YWJsZS0+bWFnaWNfbiA9PSBESUNUX1RBQkxFX01BR0lDX04pOwotI2VuZGlmCisJCQkJ SEFTSF9HRVRfTkVYVChpZF9oYXNoLCBwcmV2X3RhYmxlKSk7CisJCQl1dF9hZChwcmV2X3RhYmxl LT5tYWdpY19uID09IERJQ1RfVEFCTEVfTUFHSUNfTik7CiAJCQkvKiBBY3F1aXJlIG9ubHkgYmVj YXVzZSBpdCdzIGEgcHJlLWNvbmRpdGlvbi4gKi8KIAkJCW11dGV4X2VudGVyKCZkaWN0X3N5cy0+ bXV0ZXgpOwogCkBAIC01OTM5LDExICs1OTQ4LDExIEBAIGRpY3RfY2xvc2Uodm9pZCkKIAkJfQog CX0KIAotCWhhc2hfdGFibGVfZnJlZShkaWN0X3N5cy0+dGFibGVfaGFzaCk7CisJaGFzaF90YWJs ZV9mcmVlKGRpY3Rfc3lzLT50YWJsZV9pZF9oYXNoKTsKIAotCS8qIFRoZSBlbGVtZW50cyBhcmUg dGhlIHNhbWUgaW5zdGFuY2UgYXMgaW4gZGljdF9zeXMtPnRhYmxlX2hhc2gsCisJLyogVGhlIGVs ZW1lbnRzIGFyZSBhIHN1YnNldCBvZiBkaWN0X3N5cy0+dGFibGVfaWRfaGFzaCwKIAl0aGVyZWZv cmUgd2UgZG9uJ3QgZGVsZXRlIHRoZSBpbmRpdmlkdWFsIGVsZW1lbnRzLiAqLwotCWhhc2hfdGFi bGVfZnJlZShkaWN0X3N5cy0+dGFibGVfaWRfaGFzaCk7CisJaGFzaF90YWJsZV9mcmVlKGRpY3Rf c3lzLT50YWJsZV9oYXNoKTsKIAogCWRpY3RfaW5kX2ZyZWUoKTsKIAoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MG1lbS5jYycKLS0tIGEvc3RvcmFnZS9pbm5v YmFzZS9kaWN0L2RpY3QwbWVtLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIw NTEwMTEyNTQ3LTVhdTMwaDY5amxvOTRhOHoKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9kaWN0L2Rp Y3QwbWVtLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTEwMTMwOTMzLTds aTB3MjFnZGdzdjExeDEKQEAgLTEzNyw3ICsxMzcsOCBAQCBkaWN0X21lbV90YWJsZV9mcmVlKAog ICAgICAgICBpZiAoZGljdF90YWJsZV9oYXNfZnRzX2luZGV4KHRhYmxlKQogICAgICAgICAgICAg fHwgRElDVF9URjJfRkxBR19JU19TRVQodGFibGUsIERJQ1RfVEYyX0ZUU19IQVNfRE9DX0lEKQog ICAgICAgICAgICAgfHwgRElDVF9URjJfRkxBR19JU19TRVQodGFibGUsIERJQ1RfVEYyX0ZUU19B RERfRE9DX0lEKSkgewotCQlpZiAodGFibGUtPmZ0cykgeworCQlpZiAodGFibGUtPmZ0cyAmJiAh dGFibGUtPm5ld2VyKSB7CisJCQkvKiBUT0RPOiBlYWNoIHRhYmxlLT5mdHMgaXMgdGllZCB0byB0 YWJsZS0+aWQgKi8KIAkJCWZ0c19mcmVlKHRhYmxlKTsKIAkJfQogCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTIwNTEwMTEyNTQ3LTVhdTMwaDY5amxvOTRhOHoKKysrIGIvc3RvcmFnZS9p bm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMjA1MTAxMzA5MzMtN2xpMHcyMWdkZ3N2MTF4MQpAQCAtMjksNiArMjksNyBAQCBT bWFydCBBTFRFUiBUQUJMRQogI2luY2x1ZGUgPHNxbF9hbHRlci5oPgogI2luY2x1ZGUgPHNxbF9j bGFzcy5oPgogCisjaW5jbHVkZSAiZGljdDBib290LmgiCiAjaW5jbHVkZSAiZGljdDBzdGF0cy5o IgogI2luY2x1ZGUgImxvZzBsb2cuaCIKICNpbmNsdWRlICJyb3cwbG9nLmgiCkBAIC0yMDUsMTQg KzIwNiw2IEBAIGhhX2lubm9iYXNlOjpjaGVja19pZl9zdXBwb3J0ZWRfaW5wbGFjZV8KIAkJREJV R19SRVRVUk4oSEFfQUxURVJfSU5QTEFDRV9OT1RfU1VQUE9SVEVEKTsKIAl9CiAKLQlpZiAoKGhh X2FsdGVyX2luZm8tPmhhbmRsZXJfZmxhZ3MKLQkgICAgICYgQWx0ZXJfaW5wbGFjZV9pbmZvOjpB TFRFUl9DT0xVTU5fTlVMTEFCTEUpCi0JICAgICYmIGRpY3RfdGFibGVfaXNfY29tcChwcmVidWls dC0+dGFibGUpKSB7Ci0JCS8qIEZvciBub3csIHdlIG9ubHkgc3VwcG9ydCBjaGFuZ2luZyBhIGNv bHVtbiBmcm9tCi0JCU5PVCBOVUxMIHRvIE5VTEwgd2hlbiBST1dfRk9STUFUPVJFRFVOREFOVC4g Ki8KLQkJREJVR19SRVRVUk4oSEFfQUxURVJfSU5QTEFDRV9OT1RfU1VQUE9SVEVEKTsKLQl9Ci0K IAlpZiAoIShoYV9hbHRlcl9pbmZvLT5oYW5kbGVyX2ZsYWdzICYKIAkgICAgICB+KElOTk9CQVNF X0lOUExBQ0VfUkVGT1JNQVQKIAkJfCBBbHRlcl9pbnBsYWNlX2luZm86OkFMVEVSX0NPTFVNTl9O VUxMQUJMRSkpKSB7CkBAIC0yODc2LDYgKzI4NjksMjgzIEBAIGlubm9iYXNlX3NldF9udWxsYWJs ZSgKIAlEQlVHX1JFVFVSTihmYWxzZSk7CiB9CiAKKy8qKiBSZWRlZmluZSBhIHRhYmxlIChvbmxp bmUgcmVjb3JkIGZvcm1hdCBjaGFuZ2VzKQorQHBhcmFtIHRhYmxlX3NoYXJlCXRoZSBUQUJMRV9T SEFSRQorQHBhcmFtIHByZWJ1aWx0CQl0aGUgcHJlYnVpbHQgc3RydWN0CitAcGFyYW0gdHJ4CQlk YXRhIGRpY3Rpb25hcnkgdHJhbnNhY3Rpb24KK0BwYXJhbSBhbHRlcmVkX3RhYmxlCW5ldyB0YWJs ZSBkZWZpbml0aW9uCitAcmV0dmFsIHRydWUJCUZhaWx1cmUKK0ByZXR2YWwgZmFsc2UJCVN1Y2Nl c3MgKi8KK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQp KQorYm9vbAoraW5ub2Jhc2VfdGFibGVfcmVkZWZpbmUoCisvKj09PT09PT09PT09PT09PT09PT09 Ki8KKwljb25zdCBUQUJMRV9TSEFSRSoJdGFibGVfc2hhcmUsCisJcm93X3ByZWJ1aWx0X3QqCQlw cmVidWlsdCwKKwl0cnhfdCoJCQl0cngsCisJY29uc3QgVEFCTEUqCQlhbHRlcmVkX3RhYmxlKQor eworCXBhcnNfaW5mb190KglpbmZvOworCWRiZXJyX3QJCWVycm9yOworCisJREJVR19FTlRFUigi aW5ub2Jhc2Vfc2V0X251bGxhYmxlIik7CisJREJVR19BU1NFUlQodHJ4X2dldF9kaWN0X29wZXJh dGlvbih0cngpID09IFRSWF9ESUNUX09QX0lOREVYKTsKKwlEQlVHX0FTU0VSVCghcHJlYnVpbHQt PnRhYmxlLT5uZXdlcik7CisKKwl1dF9hZCh0cngtPmRpY3Rfb3BlcmF0aW9uX2xvY2tfbW9kZSA9 PSBSV19YX0xBVENIKTsKKwl1dF9hZChtdXRleF9vd24oJmRpY3Rfc3lzLT5tdXRleCkpOworI2lm ZGVmIFVOSVZfU1lOQ19ERUJVRworCXV0X2FkKHJ3X2xvY2tfb3duKCZkaWN0X29wZXJhdGlvbl9s b2NrLCBSV19MT0NLX0VYKSk7CisjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCisKKwkvKiBS ZW5hbWUgdGhlIGN1cnJlbnQgdGFibGUgaW4gdGhlIGRhdGEgZGljdGlvbmFyeSBhbmQKKwlpbiB0 aGUgY2FjaGUuIENyZWF0ZSBhIG5ldyB0YWJsZSBieSB0aGUgb3JpZ2luYWwgbmFtZS4gKi8KKwor CW1lbV9oZWFwX3QqCWhlYXAKKwkJPSBtZW1faGVhcF9jcmVhdGUoMTAwMCk7CisKKwlkaWN0X3Rh YmxlX3QqCW5ld190YWJsZQorCQk9IGRpY3RfbWVtX3RhYmxlX2NyZWF0ZSgKKwkJCXByZWJ1aWx0 LT50YWJsZS0+bmFtZSwgcHJlYnVpbHQtPnRhYmxlLT5zcGFjZSwKKwkJCWFsdGVyZWRfdGFibGUt PnMtPmZpZWxkcworCQkJKyAhIShESUNUX1RGMl9GTEFHX0lTX1NFVCgKKwkJCQkgICAgIHByZWJ1 aWx0LT50YWJsZSwKKwkJCQkgICAgIERJQ1RfVEYyX0ZUU19IQVNfRE9DX0lEKSksCisJCQlwcmVi dWlsdC0+dGFibGUtPmZsYWdzLAorCQkJcHJlYnVpbHQtPnRhYmxlLT5mbGFnczIpOworCisJZm9y ICh1aW50IGkgPSAwOyBpIDwgYWx0ZXJlZF90YWJsZS0+cy0+ZmllbGRzOyBpKyspIHsKKwkJY29u c3QgRmllbGQqCWZpZWxkID0gYWx0ZXJlZF90YWJsZS0+ZmllbGRbaV07CisJCXVsaW50CQlpc191 bnNpZ25lZDsKKwkJdWxpbnQJCWZpZWxkX3R5cGUKKwkJCT0gKHVsaW50KSBmaWVsZC0+dHlwZSgp OworCQl1bGludAkJY29sX3R5cGUKKwkJCT0gZ2V0X2lubm9iYXNlX3R5cGVfZnJvbV9teXNxbF90 eXBlKAorCQkJCSZpc191bnNpZ25lZCwgZmllbGQpOworCQl1bGludAkJY2hhcnNldF9ubzsKKwkJ dWxpbnQJCWNvbF9sZW47CisKKwkJdXRfYShjb2xfdHlwZSk7CisJCS8qIHdlIGFzc3VtZSBpbiBk dHlwZV9mb3JtX3BydHlwZSgpIHRoYXQgdGhpcworCQlmaXRzIGluIHR3byBieXRlcyAqLworCQl1 dF9hKGZpZWxkX3R5cGUgPD0gTUFYX0NIQVJfQ09MTF9OVU0pOworCisJCWlmICghZmllbGQtPm51 bGxfcHRyKSB7CisJCQlmaWVsZF90eXBlIHw9IERBVEFfTk9UX05VTEw7CisJCX0KKworCQlpZiAo ZmllbGQtPmJpbmFyeSgpKSB7CisJCQlmaWVsZF90eXBlIHw9IERBVEFfQklOQVJZX1RZUEU7CisJ CX0KKworCQlpZiAoaXNfdW5zaWduZWQpIHsKKwkJCWZpZWxkX3R5cGUgfD0gREFUQV9VTlNJR05F RDsKKwkJfQorCisJCWlmIChkdHlwZV9pc19zdHJpbmdfdHlwZShjb2xfdHlwZSkpIHsKKwkJCWNo YXJzZXRfbm8gPSAodWxpbnQpIGZpZWxkLT5jaGFyc2V0KCktPm51bWJlcjsKKworCQkJdXRfYShj aGFyc2V0X25vIDw9IE1BWF9DSEFSX0NPTExfTlVNKTsKKwkJfSBlbHNlIHsKKwkJCWNoYXJzZXRf bm8gPSAwOworCQl9CisKKwkJY29sX2xlbiA9IGZpZWxkLT5wYWNrX2xlbmd0aCgpOworCisJCS8q IFRoZSBNeVNRTCBwYWNrIGxlbmd0aCBjb250YWlucyAxIG9yIDIgYnl0ZXMKKwkJbGVuZ3RoIGZp ZWxkIGZvciBhIHRydWUgVkFSQ0hBUi4gTGV0IHVzCisJCXN1YnRyYWN0IHRoYXQsIHNvIHRoYXQg dGhlIElubm9EQiBjb2x1bW4KKwkJbGVuZ3RoIGluIHRoZSBJbm5vREIgZGF0YSBkaWN0aW9uYXJ5 IGlzIHRoZQorCQlyZWFsIG1heGltdW0gYnl0ZSBsZW5ndGggb2YgdGhlIGFjdHVhbCBkYXRhLiAq LworCisJCWlmIChmaWVsZC0+dHlwZSgpID09IE1ZU1FMX1RZUEVfVkFSQ0hBUikgeworCQkJdWlu dDMyCWxlbmd0aF9ieXRlcworCQkJCT0gc3RhdGljX2Nhc3Q8Y29uc3QgRmllbGRfdmFyc3RyaW5n Kj4oCisJCQkJCWZpZWxkKS0+bGVuZ3RoX2J5dGVzOworCisJCQljb2xfbGVuIC09IGxlbmd0aF9i eXRlczsKKworCQkJaWYgKGxlbmd0aF9ieXRlcyA9PSAyKSB7CisJCQkJZmllbGRfdHlwZSB8PSBE QVRBX0xPTkdfVFJVRV9WQVJDSEFSOworCQkJfQorCQl9CisKKwkJZGljdF9tZW1fdGFibGVfYWRk X2NvbCgKKwkJCW5ld190YWJsZSwgaGVhcCwKKwkJCWZpZWxkLT5maWVsZF9uYW1lLAorCQkJY29s X3R5cGUsCisJCQlkdHlwZV9mb3JtX3BydHlwZShmaWVsZF90eXBlLCBjaGFyc2V0X25vKSwKKwkJ CWNvbF9sZW4pOworCX0KKworCWlmIChESUNUX1RGMl9GTEFHX0lTX1NFVChuZXdfdGFibGUsIERJ Q1RfVEYyX0ZUU19IQVNfRE9DX0lEKSkgeworCQlmdHNfYWRkX2RvY19pZF9jb2x1bW4obmV3X3Rh YmxlLCBoZWFwKTsKKwkJbmV3X3RhYmxlLT5mdHMtPmRvY19jb2wgPSBhbHRlcmVkX3RhYmxlLT5z LT5maWVsZHM7CisJfQorCisJdGFibGVfaWRfdAluZXdfdGFibGVfaWQ7CisKKwlkaWN0X2hkcl9n ZXRfbmV3X2lkKCZuZXdfdGFibGVfaWQsIE5VTEwsIE5VTEwpOworCisJLyogUmVuYW1lIHRoZSBv bGQgdGFibGUgaW4gdGhlIGRhdGEgZGljdGlvbmFyeSBjYWNoZS4gKi8KKworCXRyeC0+b3BfaW5m byA9ICJyZW5hbWluZyBvbGQgdGFibGUgZGVmaW5pdGlvbiI7CisKKwljaGFyKiBuYW1lID0gc3Rh dGljX2Nhc3Q8Y2hhcio+KAorCQltZW1faGVhcF9hbGxvYyhoZWFwLCAxNiArIHNpemVvZiAiT0xE XyIpKTsKKwl1dF9zbnByaW50ZihuYW1lLCAxNiArIHNpemVvZiAiT0xEXyIsICJPTERfIiBJQl9J RF9GTVQwWCwKKwkJICAgIG5ld190YWJsZV9pZCk7CisKKwlpbmZvID0gcGFyc19pbmZvX2NyZWF0 ZSgpOworCisJcGFyc19pbmZvX2FkZF91bGxfbGl0ZXJhbChpbmZvLCAiaWQiLCBwcmVidWlsdC0+ dGFibGUtPmlkKTsKKwlwYXJzX2luZm9fYWRkX3N0cl9saXRlcmFsKGluZm8sICJuYW1lIiwgbmFt ZSk7CisKKwllcnJvciA9IHF1ZV9ldmFsX3NxbCgKKwkJaW5mbywKKwkJIlBST0NFRFVSRSBSRU5B TUVfU1lTX1RBQkxFU19QUk9DICgpIElTXG4iCisJCSJCRUdJTlxuIgorCQkiVVBEQVRFIFNZU19U QUJMRVMgU0VUIE5BTUU9Om5hbWVcbiIKKwkJIldIRVJFIElEPTppZDtcbiIKKwkJIkVORDtcbiIs CisJCUZBTFNFLCB0cngpOworCisJREJVR19FWEVDVVRFX0lGKCJpYl90YWJsZV9yZWRlZmluZV9l cnJvciIsCisJCQllcnJvciA9IERCX09VVF9PRl9GSUxFX1NQQUNFOyk7CisKKwl0cngtPm9wX2lu Zm8gPSAiIjsKKwljaGFyKiBvbGRfbmFtZSA9IHByZWJ1aWx0LT50YWJsZS0+bmFtZTsKKwkvKiBU ZW1wb3JhcmlseSBwcmV2ZW50IG5hbWUgY29sbGlzaW9ucy4gKi8KKwlwcmVidWlsdC0+dGFibGUt Pm5hbWUgPSBjb25zdF9jYXN0PGNoYXIqPigiIik7CisKKwlpZiAoZXJyb3IgPT0gREJfU1VDQ0VT UykgeworCQluZXdfdGFibGUtPmlkID0gbmV3X3RhYmxlX2lkOworCQllcnJvciA9IHJvd19jcmVh dGVfdGFibGVfZm9yX215c3FsKG5ld190YWJsZSwgdHJ4KTsKKworCQluZXdfdGFibGUgPSBkaWN0 X3RhYmxlX29wZW5fb25faWQobmV3X3RhYmxlX2lkLCBUUlVFLCBGQUxTRSk7CisJCXV0X2EobmV3 X3RhYmxlKTsKKwl9CisKKwltZW1faGVhcF9mcmVlKGhlYXApOworCisJaWYgKGVycm9yID09IERC X1NVQ0NFU1MpIHsKKwkJLyogQ3JlYXRlIHRoZSBjbHVzdGVyZWQgaW5kZXguICovCisJCWNvbnN0 IGRpY3RfaW5kZXhfdCoJb2xkX2NsdXN0X2luZGV4CisJCQk9IGRpY3RfdGFibGVfZ2V0X2ZpcnN0 X2luZGV4KHByZWJ1aWx0LT50YWJsZSk7CisJCXV0X2FkKGRpY3RfaW5kZXhfaXNfY2x1c3Qob2xk X2NsdXN0X2luZGV4KSk7CisJCXV0X2FkKG9sZF9jbHVzdF9pbmRleC0+cGFnZSAhPSBGSUxfTlVM TCk7CisJCWRpY3RfaW5kZXhfdCoJCW5ld19jbHVzdF9pbmRleAorCQkJPSBkaWN0X21lbV9pbmRl eF9jcmVhdGUoCisJCQkJbmV3X3RhYmxlLT5uYW1lLCBvbGRfY2x1c3RfaW5kZXgtPm5hbWUsCisJ CQkJbmV3X3RhYmxlLT5zcGFjZSwgb2xkX2NsdXN0X2luZGV4LT50eXBlLAorCQkJCW9sZF9jbHVz dF9pbmRleC0+bl91c2VyX2RlZmluZWRfY29scyk7CisKKwkJbmV3X2NsdXN0X2luZGV4LT5wYWdl ID0gb2xkX2NsdXN0X2luZGV4LT5wYWdlOworCisJCS8qIENvcHkgdGhlIHByaW1hcnkga2V5IGZp ZWxkcyBmcm9tIHRoZSBvbGQgZGVmaW5pdGlvbi4gKi8KKwkJZm9yICh1bnNpZ25lZCBpID0gMDsg aSA8IG9sZF9jbHVzdF9pbmRleC0+bl91c2VyX2RlZmluZWRfY29sczsKKwkJICAgICBpKyspIHsK KwkJCWNvbnN0IGRpY3RfZmllbGRfdCogaWZpZWxkCisJCQkJPSBkaWN0X2luZGV4X2dldF9udGhf ZmllbGQob2xkX2NsdXN0X2luZGV4LCBpKTsKKworCQkJZGljdF9tZW1faW5kZXhfYWRkX2ZpZWxk KAorCQkJCW5ld19jbHVzdF9pbmRleCwKKwkJCQlpZmllbGQtPm5hbWUsIGlmaWVsZC0+cHJlZml4 X2xlbik7CisJCX0KKworCQkvKiBDcmVhdGUgdGhlIGluZGV4IGluIFNZU19JTkRFWEVTLCBTWVNf RklFTERTIGFuZCBpbgorCQl0aGUgZGF0YSBkaWN0aW9uYXJ5IGNhY2hlLiAqLworCQl1dF9hZCgh ZGljdF90YWJsZV9nZXRfZmlyc3RfaW5kZXgobmV3X3RhYmxlKSk7CisKKwkJZXJyb3IgPSByb3df bWVyZ2VfY3JlYXRlX2luZGV4X2dyYXBoKAorCQkJdHJ4LCBuZXdfdGFibGUsIG5ld19jbHVzdF9p bmRleCk7CisKKwkJaWYgKGVycm9yICE9IERCX1NVQ0NFU1MpIHsKKwkJCWRpY3RfdGFibGVfY2xv c2UobmV3X3RhYmxlLCBUUlVFLCBGQUxTRSk7CisJCQlkaWN0X3RhYmxlX3JlbW92ZV9mcm9tX2Nh Y2hlKG5ld190YWJsZSk7CisJCX0KKwl9CisKKwlwcmVidWlsdC0+dGFibGUtPm5hbWUgPSBvbGRf bmFtZTsKKworCWlmIChlcnJvciA9PSBEQl9TVUNDRVNTKSB7CisJCXV0X2FkKCFwcmVidWlsdC0+ dGFibGUtPm5ld2VyKTsKKwkJdXRfYWQoZGljdF90YWJsZV9nZXRfZmlyc3RfaW5kZXgobmV3X3Rh YmxlKSk7CisJCXV0X2FkKCFuZXdfdGFibGUtPm5ld2VyKTsKKwkJdXRfYWQoIW5ld190YWJsZS0+ b2xkZXIpOworCQlwcmVidWlsdC0+dGFibGUtPm5ld2VyID0gbmV3X3RhYmxlOworCQluZXdfdGFi bGUtPm9sZGVyID0gcHJlYnVpbHQtPnRhYmxlOworCisJCXVsaW50CWZvbGQgPSB1dF9mb2xkX3N0 cmluZyhwcmVidWlsdC0+dGFibGUtPm5hbWUpOworCisJCS8qIFJlbW92ZSB0aGUgb2xkIHRhYmxl IGRlZmluaXRpb24gZnJvbSBkaWN0X3N5cy0+dGFibGUtPmhhc2gsCisJCXNvIHRoYXQgYSBsb29r dXAgYnkgbmFtZSB3aWxsIGZpbmQgbmV3X3RhYmxlLiAqLworCQlIQVNIX0RFTEVURShkaWN0X3Rh YmxlX3QsIG5hbWVfaGFzaCwgZGljdF9zeXMtPnRhYmxlX2hhc2gsCisJCQkgICAgZm9sZCwgcHJl YnVpbHQtPnRhYmxlKTsKKworI2lmZGVmIFVOSVZfREVCVUcKKwkJY29uc3QgZGljdF90YWJsZV90 KgljYWNoZWQ7CisJCUhBU0hfU0VBUkNIKG5hbWVfaGFzaCwgZGljdF9zeXMtPnRhYmxlX2hhc2gs IGZvbGQsCisJCQkgICAgZGljdF90YWJsZV90KiwgY2FjaGVkLAorCQkJICAgIHV0X2FkKGNhY2hl ZC0+Y2FjaGVkKSwKKwkJCSAgICAhdXRfc3RyY21wKGNhY2hlZC0+bmFtZSwgcHJlYnVpbHQtPnRh YmxlLT5uYW1lKSk7CisJCXV0X2FkKGNhY2hlZCA9PSBuZXdfdGFibGUpOworI2VuZGlmIC8qIFVO SVZfREVCVUcgKi8KKworCQkvKiBNb3ZlIHNlY29uZGFyeSBpbmRleGVzIHRvIG5ld190YWJsZS4g Ki8KKwkJZGljdF9pbmRleF90KiBpbmRleCA9IGRpY3RfdGFibGVfZ2V0X25leHRfaW5kZXgoCisJ CQlkaWN0X3RhYmxlX2dldF9maXJzdF9pbmRleChwcmVidWlsdC0+dGFibGUpKTsKKwkJd2hpbGUg KGluZGV4KSB7CisJCQlkaWN0X2luZGV4X3QqIG5leHRfaW5kZXggPSBkaWN0X3RhYmxlX2dldF9u ZXh0X2luZGV4KAorCQkJCWluZGV4KTsKKworCQkJaW5kZXgtPnRhYmxlX25hbWUgPSBuZXdfdGFi bGUtPm5hbWU7CisJCQlpbmRleC0+dGFibGUgPSBuZXdfdGFibGU7CisJCQlVVF9MSVNUX1JFTU9W RShpbmRleGVzLCBwcmVidWlsdC0+dGFibGUtPmluZGV4ZXMsCisJCQkJICAgICAgIGluZGV4KTsK KwkJCVVUX0xJU1RfQUREX0xBU1QoaW5kZXhlcywgbmV3X3RhYmxlLT5pbmRleGVzLCBpbmRleCk7 CisKKwkJCWluZGV4ID0gbmV4dF9pbmRleDsKKwkJfQorCisJCS8qIFRPRE86IGVhY2ggdGFibGUt PmZ0cyBpcyB0aWVkIHRvIHRhYmxlLT5pZCAqLworCQluZXdfdGFibGUtPmZ0cyA9IHByZWJ1aWx0 LT50YWJsZS0+ZnRzOworCisJCS8qIE1vdmUgZm9yZWlnbiBrZXkgZGVmaW5pdGlvbnMgdG8gbmV3 X3RhYmxlLiAqLworCQluZXdfdGFibGUtPmZvcmVpZ25fbGlzdCA9IHByZWJ1aWx0LT50YWJsZS0+ Zm9yZWlnbl9saXN0OworCQluZXdfdGFibGUtPnJlZmVyZW5jZWRfbGlzdCA9IHByZWJ1aWx0LT50 YWJsZS0+cmVmZXJlbmNlZF9saXN0OworCQlVVF9MSVNUX0lOSVQocHJlYnVpbHQtPnRhYmxlLT5m b3JlaWduX2xpc3QpOworCQlVVF9MSVNUX0lOSVQocHJlYnVpbHQtPnRhYmxlLT5yZWZlcmVuY2Vk X2xpc3QpOworCisJCWZvciAoZGljdF9mb3JlaWduX3QqIGYgPSBVVF9MSVNUX0dFVF9GSVJTVCgK KwkJCSAgICAgbmV3X3RhYmxlLT5mb3JlaWduX2xpc3QpOworCQkgICAgIGY7IGYgPSBVVF9MSVNU X0dFVF9ORVhUKGZvcmVpZ25fbGlzdCwgZikpIHsKKwkJCURCVUdfQVNTRVJUKGYtPmZvcmVpZ25f dGFibGUgPT0gcHJlYnVpbHQtPnRhYmxlKTsKKwkJCWYtPmZvcmVpZ25fdGFibGUgPSBuZXdfdGFi bGU7CisJCX0KKworCQlmb3IgKGRpY3RfZm9yZWlnbl90KiBmID0gVVRfTElTVF9HRVRfRklSU1Qo CisJCQkgICAgIG5ld190YWJsZS0+cmVmZXJlbmNlZF9saXN0KTsKKwkJICAgICBmOyBmID0gVVRf TElTVF9HRVRfTkVYVChyZWZlcmVuY2VkX2xpc3QsIGYpKSB7CisJCQlEQlVHX0FTU0VSVChmLT5y ZWZlcmVuY2VkX3RhYmxlID09IHByZWJ1aWx0LT50YWJsZSk7CisJCQlmLT5yZWZlcmVuY2VkX3Rh YmxlID0gbmV3X3RhYmxlOworCQl9CisKKwkJREJVR19BU1NFUlQobmV3X3RhYmxlLT5uX3JlZl9j b3VudCA9PSAxKTsKKwkJZGljdF90YWJsZV9jbG9zZShwcmVidWlsdC0+dGFibGUsIFRSVUUsIEZB TFNFKTsKKworCQlwcmVidWlsdC0+dGFibGUgPSBuZXdfdGFibGU7CisJfQorCisJaWYgKGVycm9y ICE9IERCX1NVQ0NFU1MpIHsKKwkJbXlfZXJyb3JfaW5ub2RiKGVycm9yLCB0YWJsZV9zaGFyZS0+ dGFibGVfbmFtZS5zdHIsIDApOworCQl0cngtPmVycm9yX3N0YXRlID0gREJfU1VDQ0VTUzsKKwkJ REJVR19SRVRVUk4odHJ1ZSk7CisJfQorCisJREJVR19SRVRVUk4oZmFsc2UpOworfQorCiAvKiog Q29tbWl0IG9yIHJvbGxiYWNrIHRoZSBjaGFuZ2VzIG1hZGUgZHVyaW5nCiBwcmVwYXJlX2lucGxh Y2VfYWx0ZXJfdGFibGUoKSBhbmQgaW5wbGFjZV9hbHRlcl90YWJsZSgpIGluc2lkZQogdGhlIHN0 b3JhZ2UgZW5naW5lLiBOb3RlIHRoYXQgdGhlIGFsbG93ZWQgbGV2ZWwgb2YgY29uY3VycmVuY3kK QEAgLTMwOTUsOSArMzM2NSwxMyBAQCBwcm9jZXNzZWRfZmllbGQ6CiAJfQogCiAJaWYgKGVyciA9 PSAwICYmICFuZXdfY2x1c3RlcmVkCi0JICAgICYmIChoYV9hbHRlcl9pbmZvLT5oYW5kbGVyX2Zs YWdzCi0JCSYgQWx0ZXJfaW5wbGFjZV9pbmZvOjpBTFRFUl9DT0xVTU5fTlVMTEFCTEUpKSB7Ci0J CURCVUdfQVNTRVJUKCFkaWN0X3RhYmxlX2lzX2NvbXAocHJlYnVpbHQtPnRhYmxlKSk7CisJICAg ICYmICgoaGFfYWx0ZXJfaW5mby0+aGFuZGxlcl9mbGFncworCQkgJiAoSU5OT0JBU0VfSU5QTEFD RV9SRUZPUk1BVAorCQkgICAgfCBBbHRlcl9pbnBsYWNlX2luZm86OkFMVEVSX0NPTFVNTl9OVUxM QUJMRSkpCisJCT09IEFsdGVyX2lucGxhY2VfaW5mbzo6QUxURVJfQ09MVU1OX05VTExBQkxFKQor CSAgICAmJiAhZGljdF90YWJsZV9pc19jb21wKHByZWJ1aWx0LT50YWJsZSkpIHsKKwkJLyogRm9y IFJPV19GT1JNQVQ9UkVEVU5EQU5ULCBNT0RJRlkuLi5OVUxMCisJCWRvZXMgbm90IHJlcXVpcmUg YSBuZXcgZGF0YSBkaWN0aW9uYXJ5IGZvcm1hdC4gKi8KIAogCQlMaXN0X2l0ZXJhdG9yX2Zhc3Q8 Q3JlYXRlX2ZpZWxkPiBjZl9pdDsKIAkJdWxpbnQJCQkJY29sID0gMDsKQEAgLTMxMjAsMTEgKzMz OTQsMTQgQEAgcHJvY2Vzc2VkX2ZpZWxkOgogCQkJCX0KIAkJCX0KIAkJfQotCX0KLQotCWlmIChl cnIgPT0gMCAmJiAhbmV3X2NsdXN0ZXJlZAotCSAgICAmJiAoaGFfYWx0ZXJfaW5mby0+aGFuZGxl cl9mbGFncyAmIElOTk9CQVNFX0lOUExBQ0VfUkVGT1JNQVQpKSB7Ci0JCXV0X2Vycm9yOworCX0g ZWxzZSBpZiAoZXJyID09IDAgJiYgIW5ld19jbHVzdGVyZWQKKwkJICAgJiYgKGhhX2FsdGVyX2lu Zm8tPmhhbmRsZXJfZmxhZ3MKKwkJICAgICAgICYgKElOTk9CQVNFX0lOUExBQ0VfUkVGT1JNQVQK KwkJCSAgfCBBbHRlcl9pbnBsYWNlX2luZm86OkFMVEVSX0NPTFVNTl9OVUxMQUJMRSkpKSB7CisJ CWlmIChpbm5vYmFzZV90YWJsZV9yZWRlZmluZSh0YWJsZV9zaGFyZSwgcHJlYnVpbHQsIHRyeCwK KwkJCQkJICAgIGFsdGVyZWRfdGFibGUpKSB7CisJCQllcnIgPSAtMTsKKwkJfQogCX0KIAogCWlm IChlcnIgPT0gMCkgewoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9idHIwYnRyLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwYnRyLmgJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTAxMTI1NDctNWF1MzBoNjlqbG85NGE4 egorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5oCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTIwNTEwMTMwOTMzLTdsaTB3MjFnZGdzdjExeDEKQEAgLTQzNywx NCArNDM3LDMwIEBAIElNUE9SVEFOVDogaWYgYnRyX3BhZ2VfcmVvcmdhbml6ZSgpIGlzIGkKIHBh Z2Ugb2YgYSBub24tY2x1c3RlcmVkIGluZGV4LCB0aGUgY2FsbGVyIG11c3QgdXBkYXRlIHRoZSBp bnNlcnQKIGJ1ZmZlciBmcmVlIGJpdHMgaW4gdGhlIHNhbWUgbWluaS10cmFuc2FjdGlvbiBpbiBz dWNoIGEgd2F5IHRoYXQgdGhlCiBtb2RpZmljYXRpb24gd2lsbCBiZSByZWRvLWxvZ2dlZC4KLUBy ZXR1cm4JVFJVRSBvbiBzdWNjZXNzLCBGQUxTRSBvbiBmYWlsdXJlICovCitAcmV0dXJuCXRydWUg b24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZSAqLwogVU5JVl9JTlRFUk4KLWlib29sCitib29s CiBidHJfcGFnZV9yZW9yZ2FuaXplKAogLyo9PT09PT09PT09PT09PT09Ki8KIAlidWZfYmxvY2tf dCoJYmxvY2ssCS8qITwgaW46IHBhZ2UgdG8gYmUgcmVvcmdhbml6ZWQgKi8KIAlkaWN0X2luZGV4 X3QqCWluZGV4LAkvKiE8IGluOiByZWNvcmQgZGVzY3JpcHRvciAqLwotCW10cl90KgkJbXRyKTsJ LyohPCBpbjogbXRyICovCisJbXRyX3QqCQltdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0 aW9uICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOworLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitDb252ZXJ0cyBh IGNsdXN0ZXJlZCBpbmRleCBsZWFmIHBhZ2UgYnkgcmVvcmdhbml6aW5nIGl0LgorSU1QT1JUQU5U OiB3aGVuIGludm9rZWQgb24gYSBjb21wcmVzc2VkIHBhZ2UsIHRoZSBjYWxsZXIgbXVzdCB1cGRh dGUKK3RoZSBpbnNlcnQgYnVmZmVyIGZyZWUgYml0cyBpbiB0aGUgc2FtZSBtaW5pLXRyYW5zYWN0 aW9uIGluIHN1Y2ggYQord2F5IHRoYXQgdGhlIG1vZGlmaWNhdGlvbiB3aWxsIGJlIHJlZG8tbG9n Z2VkLgorQHJldHVybgl0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUgKi8KK1VOSVZf SU5URVJOCitib29sCitidHJfcGFnZV9jb252ZXJ0KAorLyo9PT09PT09PT09PT09Ki8KKwlidWZf YmxvY2tfdCoJYmxvY2ssCS8qITwgaW46IHBhZ2UgdG8gYmUgY29udmVydGVkICovCisJaW5kZXhf aWRfdAlpbmRleF9pZCwvKiE8IGluOiBQQUdFX0lOREVYX0lEIG9mIHRoZSBwYWdlICovCisJZGlj dF9pbmRleF90KglpbmRleCwJLyohPCBpbjogY3VycmVudCBjbHVzdGVyZWQgaW5kZXggKi8KKwlt dHJfdCoJCW10cikJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KKwlfX2F0dHJpYnV0 ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogRGVjaWRlcyBp ZiB0aGUgcGFnZSBzaG91bGQgYmUgc3BsaXQgYXQgdGhlIGNvbnZlcmdlbmNlIHBvaW50IG9mCiBp bnNlcnRzIGNvbnZlcmdpbmcgdG8gbGVmdC4KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvYnRyMHBjdXIuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L2J0cjBwY3VyLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTAxMTI1NDct NWF1MzBoNjlqbG85NGE4egorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMHBjdXIu aAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDEzMDkzMy03bGkwdzIxZ2Rn c3YxMXgxCkBAIC00MDEsNiArNDAxLDcgQEAgYnRyX3BjdXJfZ2V0X3JlYygKICMgZGVmaW5lIGJ0 cl9wY3VyX2dldF9ibG9jayhjdXJzb3IpICgoY3Vyc29yKS0+YnRyX2N1ci5wYWdlX2N1ci5ibG9j aykKICMgZGVmaW5lIGJ0cl9wY3VyX2dldF9yZWMoY3Vyc29yKSAoKGN1cnNvciktPmJ0cl9jdXIu cGFnZV9jdXIucmVjKQogI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KKyNkZWZpbmUgYnRyX3BjdXJf Z2V0X2luZGV4KGMpIChidHJfY3VyX2dldF9pbmRleChidHJfcGN1cl9nZXRfYnRyX2N1cihjKSkp CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgogQ2hlY2tzIGlmIHRoZSBwZXJzaXN0ZW50IGN1cnNvciBpcyBvbiBhIHVzZXIgcmVj b3JkLiAqLwogVU5JVl9JTkxJTkUKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvYnRyMHNlYS5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBz ZWEuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTAxMTI1NDctNWF1MzBo NjlqbG85NGE4egorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMHNlYS5pYwlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDEzMDkzMy03bGkwdzIxZ2Rnc3YxMXgx CkBAIC02Niw2ICs2NiwxNSBAQCBidHJfc2VhcmNoX2luZm9fdXBkYXRlKAogCXV0X2FkKCFyd19s b2NrX293bigmYnRyX3NlYXJjaF9sYXRjaCwgUldfTE9DS19TSEFSRUQpKTsKIAl1dF9hZCghcndf bG9ja19vd24oJmJ0cl9zZWFyY2hfbGF0Y2gsIFJXX0xPQ0tfRVgpKTsKICNlbmRpZiAvKiBVTklW X1NZTkNfREVCVUcgKi8KKyNpZmRlZiBVTklWX0RFQlVHCisJaWYgKGluZGV4ICE9IGN1cnNvci0+ aW5kZXgpIHsKKwkJdXRfYWQoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpOworCQl1dF9hZChk aWN0X2luZGV4X2lzX2NsdXN0KGN1cnNvci0+aW5kZXgpKTsKKwkJdXRfYWQoaW5kZXgtPnRhYmxl LT5uZXdlciB8fCBpbmRleC0+dGFibGUtPm9sZGVyKTsKKwkJdXRfYWQoY3Vyc29yLT5pbmRleC0+ dGFibGUtPm5ld2VyCisJCSAgICAgIHx8IGN1cnNvci0+aW5kZXgtPnRhYmxlLT5vbGRlcik7CisJ fQorI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIAogCWluZm8gPSBidHJfc2VhcmNoX2dldF9pbmZv KGluZGV4KTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9k aWN0MGRpY3QuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwZGljdC5oCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTEwMTEyNTQ3LTVhdTMwaDY5amxvOTRh OHoKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwZGljdC5oCXJldmlkOm1hcmtv Lm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTEwMTMwOTMzLTdsaTB3MjFnZGdzdjExeDEKQEAgLTY2 OSw2ICs2NjksMTkgQEAgZGljdF9pbmRleF9pc19zZWNfb3JfaWJ1ZigKIAljb25zdCBkaWN0X2lu ZGV4X3QqCWluZGV4KQkvKiE8IGluOiBpbmRleCAqLwogCV9fYXR0cmlidXRlX18oKG5vbm51bGws IHB1cmUsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogCisjaWZkZWYgVU5JVl9ERUJVRworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLy8qKgorQ2hlY2sgd2hldGhlciB0d28gaW5kZXhlcyBhcmUgZXF1aXZhbGVudC4KK0By ZXR1cm4gdHJ1ZSBpZiBlcXVpdmFsZW50ICovCitVTklWX0lOTElORQorYm9vbAorZGljdF9pbmRl eF9pc19lcXVpdmFsZW50KAorLyo9PT09PT09PT09PT09PT09PT09PT0qLworCWNvbnN0IGRpY3Rf aW5kZXhfdCoJcmVjX2luZGV4LAkvKiE8IGluOiBpbmRleCBvZiBhIHJlY29yZCAqLworCWNvbnN0 IGRpY3RfaW5kZXhfdCoJZGljdF9pbmRleCkJLyohPCBpbjogaW5kZXggb2YgYSB0YWJsZSAqLwor CV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHB1cmUsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOworI2Vu ZGlmIC8qIFVOSVZfREVCVUcgKi8KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogR2V0cyB0aGUgYWxsIHRo ZSBGVFMgaW5kZXhlcyBmb3IgdGhlIHRhYmxlLiBOT1RFOiBtdXN0IG5vdCBiZSBjYWxsZWQgZm9y CiB0YWJsZXMgd2hpY2ggZG8gbm90IGhhdmUgYW4gRlRTLWluZGV4LiAqLwpAQCAtMTAxNyw2ICsx MDMwLDE3IEBAIGRpY3RfaW5kZXhfZ2V0X25fb3JkZXJpbmdfZGVmaW5lZF9ieV91c2UKIAljb25z dCBkaWN0X2luZGV4X3QqCWluZGV4KQkvKiE8IGluOiBhbiBpbnRlcm5hbCByZXByZXNlbnRhdGlv bgogCQkJCQlvZiBpbmRleCAoaW4gdGhlIGRpY3Rpb25hcnkgY2FjaGUpICovCiAJX19hdHRyaWJ1 dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitH ZXRzIHRoZSBjbHVzdGVyZWQgaW5kZXggZGVmaW5pdGlvbiBjb3JyZXNwb25kaW5nIHRvIGFuIGlu ZGV4X2lkLgorQHJldHVybgljbHVzdGVyZWQgaW5kZXggY29ycmVzcG9uZGluZyB0byBpbmRleF9p ZCwgb3IgTlVMTCBpZiBub3QgZm91bmQgKi8KK1VOSVZfSU5MSU5FCitkaWN0X2luZGV4X3QqCitk aWN0X2luZGV4X2dldF92ZXJzaW9uKAorLyo9PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X2lu ZGV4X3QqCWluZGV4LAkJLyohPCBpbjogY2x1c3RlcmVkIGluZGV4ICovCisJaW5kZXhfaWRfdAlp bmRleF9pZCkJLyohPCBpbjogUEFHRV9JTkRFWF9JRCAqLworCV9fYXR0cmlidXRlX18oKG5vbm51 bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOworCiAjaWZkZWYgVU5JVl9ERUJVRwogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgogR2V0cyB0aGUgbnRoIGZpZWxkIG9mIGFuIGluZGV4LgoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MGRpY3QuaWMnCi0tLSBhL3N0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9kaWN0MGRpY3QuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMjA1MTAxMTI1NDctNWF1MzBoNjlqbG85NGE4egorKysgYi9zdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvZGljdDBkaWN0LmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIw NTEwMTMwOTMzLTdsaTB3MjFnZGdzdjExeDEKQEAgLTMxOCw2ICszMTgsMzggQEAgZGljdF9pbmRl eF9pc19zZWNfb3JfaWJ1ZigKIAlyZXR1cm4oISh0eXBlICYgRElDVF9DTFVTVEVSRUQpIHx8ICh0 eXBlICYgRElDVF9JQlVGKSk7CiB9CiAKKyNpZmRlZiBVTklWX0RFQlVHCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCitDaGVjayB3aGV0aGVyIHR3byBpbmRleGVzIGFyZSBlcXVpdmFsZW50LgorQHJldHVybiB0 cnVlIGlmIGVxdWl2YWxlbnQgKi8KK1VOSVZfSU5MSU5FCitib29sCitkaWN0X2luZGV4X2lzX2Vx dWl2YWxlbnQoCisvKj09PT09PT09PT09PT09PT09PT09PSovCisJY29uc3QgZGljdF9pbmRleF90 KglyZWNfaW5kZXgsCS8qITwgaW46IGluZGV4IG9mIGEgcmVjb3JkICovCisJY29uc3QgZGljdF9p bmRleF90KglkaWN0X2luZGV4KQkvKiE8IGluOiBpbmRleCBvZiBhIHRhYmxlICovCit7CisJaWYg KHJlY19pbmRleCA9PSBkaWN0X2luZGV4KSB7CisJCXJldHVybih0cnVlKTsKKwl9CisKKwl1dF9h ZChkaWN0X2luZGV4X2lzX2NsdXN0KHJlY19pbmRleCkpOworCXV0X2FkKGRpY3RfaW5kZXhfaXNf Y2x1c3QoZGljdF9pbmRleCkpOworCXV0X2FkKHJlY19pbmRleC0+dGFibGUtPm5ld2VyKTsKKwl1 dF9hZChkaWN0X2luZGV4LT50YWJsZS0+b2xkZXIpOworCisJY29uc3QgZGljdF90YWJsZV90KiB0 YWJsZSA9IGRpY3RfaW5kZXgtPnRhYmxlOworCisJZG8geworCQlpZiAoZGljdF90YWJsZV9nZXRf Zmlyc3RfaW5kZXgodGFibGUpID09IHJlY19pbmRleCkgeworCQkJcmV0dXJuKHRydWUpOworCQl9 CisJfSB3aGlsZSAoKHRhYmxlID0gdGFibGUtPm9sZGVyKSAhPSBOVUxMKTsKKworCXJldHVybihm YWxzZSk7Cit9CisjZW5kaWYgLyogVU5JVl9ERUJVRyAqLworCiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBH ZXRzIHRoZSBudW1iZXIgb2YgdXNlci1kZWZpbmVkIGNvbHVtbnMgaW4gYSB0YWJsZSBpbiB0aGUg ZGljdGlvbmFyeQogY2FjaGUuCkBAIC05MjMsNiArOTU1LDM2IEBAIGRpY3RfaW5kZXhfZ2V0X25f b3JkZXJpbmdfZGVmaW5lZF9ieV91c2UKIAlyZXR1cm4oaW5kZXgtPm5fdXNlcl9kZWZpbmVkX2Nv bHMpOwogfQogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCitHZXRzIHRoZSBjbHVzdGVyZWQgaW5kZXggZGVm aW5pdGlvbiBjb3JyZXNwb25kaW5nIHRvIGFuIGluZGV4X2lkLgorQHJldHVybgljbHVzdGVyZWQg aW5kZXggY29ycmVzcG9uZGluZyB0byBpbmRleF9pZCwgb3IgTlVMTCBpZiBub3QgZm91bmQgKi8K K1VOSVZfSU5MSU5FCitkaWN0X2luZGV4X3QqCitkaWN0X2luZGV4X2dldF92ZXJzaW9uKAorLyo9 PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkJLyohPCBpbjogY2x1 c3RlcmVkIGluZGV4ICovCisJaW5kZXhfaWRfdAlpbmRleF9pZCkJLyohPCBpbjogUEFHRV9JTkRF WF9JRCAqLworeworCWRpY3RfdGFibGVfdCoJdGFibGU7CisKKwl1dF9hZChkaWN0X2luZGV4X2lz X2NsdXN0KGluZGV4KSk7CisKKwlmb3IgKHRhYmxlID0gaW5kZXgtPnRhYmxlOyB0YWJsZS0+bmV3 ZXI7ICkgeworCQl0YWJsZSA9IHRhYmxlLT5uZXdlcjsKKwl9CisKKwl3aGlsZSAodGFibGUgJiYg ZGljdF90YWJsZV9nZXRfZmlyc3RfaW5kZXgodGFibGUpLT5pZCAhPSBpbmRleF9pZCkgeworCQl1 dF9hZCh0YWJsZS0+c3BhY2UgPT0gaW5kZXgtPnNwYWNlKTsKKwkJdXRfYWQoZGljdF90YWJsZV9n ZXRfZmlyc3RfaW5kZXgodGFibGUpLT5zcGFjZQorCQkgICAgICA9PSBpbmRleC0+c3BhY2UpOwor CQl1dF9hZChkaWN0X3RhYmxlX2dldF9maXJzdF9pbmRleCh0YWJsZSktPnBhZ2UKKwkJICAgICAg PT0gaW5kZXgtPnBhZ2UpOworCQl0YWJsZSA9IHRhYmxlLT5vbGRlcjsKKwl9CisKKwlyZXR1cm4o dGFibGUgPyBkaWN0X3RhYmxlX2dldF9maXJzdF9pbmRleCh0YWJsZSkgOiBOVUxMKTsKK30KKwog I2lmZGVmIFVOSVZfREVCVUcKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEdldHMgdGhlIG50aCBmaWVsZCBv ZiBhbiBpbmRleC4KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv ZGljdDBtZW0uaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwbWVtLmgJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTAxMTI1NDctNWF1MzBoNjlqbG85NGE4 egorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGljdDBtZW0uaAlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDEzMDkzMy03bGkwdzIxZ2Rnc3YxMXgxCkBAIC02Mjgs NiArNjI4LDEwIEBAIHN0cnVjdCBkaWN0X3RhYmxlX3N0cnVjdHsKIAl0YWJsZV9pZF90CWlkOwkv KiE8IGlkIG9mIHRoZSB0YWJsZSAqLwogCW1lbV9oZWFwX3QqCWhlYXA7CS8qITwgbWVtb3J5IGhl YXAgKi8KIAljaGFyKgkJbmFtZTsJLyohPCB0YWJsZSBuYW1lICovCisJZGljdF90YWJsZV90Kglu ZXdlcjsJLyohPCBwb2ludGVyIHRvIGEgbmV3ZXIgdGFibGUgZGVmaW5pdGlvbiwKKwkJCQlvciBO VUxMIGlmIHRoaXMgaXMgdGhlIG5ld2VzdCAqLworCWRpY3RfdGFibGVfdCoJb2xkZXI7CS8qITwg cG9pbnRlciB0byBhbiBvbGRlciB0YWJsZSBkZWZpbml0aW9uLAorCQkJCW9yIE5VTEwgaWYgdGhp cyBpcyB0aGUgb2xkZXN0ICovCiAJY29uc3QgY2hhcioJZGlyX3BhdGhfb2ZfdGVtcF90YWJsZTsv KiE8IE5VTEwgb3IgdGhlIGRpcmVjdG9yeSBwYXRoCiAJCQkJd2hlcmUgYSBURU1QT1JBUlkgdGFi bGUgdGhhdCB3YXMgZXhwbGljaXRseQogCQkJCWNyZWF0ZWQgYnkgYSB1c2VyIHNob3VsZCBiZSBw bGFjZWQgaWYKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFn ZTBwYWdlLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMHBhZ2UuaAlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDExMjU0Ny01YXUzMGg2OWpsbzk0YTh6 CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMHBhZ2UuaAlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDEzMDkzMy03bGkwdzIxZ2Rnc3YxMXgxCkBAIC03Njgs MTYgKzc2OCwxOSBAQCBwYWdlX2NyZWF0ZV96aXAoCiAKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogRGlmZmVycyBmcm9t IHBhZ2VfY29weV9yZWNfbGlzdF9lbmQsIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdAot dG91Y2ggdGhlIGxvY2sgdGFibGUgYW5kIG1heCB0cnggaWQgb24gcGFnZSBvciBjb21wcmVzcyB0 aGUgcGFnZS4gKi8KK3RvdWNoIHRoZSBsb2NrIHRhYmxlIGFuZCBtYXggdHJ4IGlkIG9uIHBhZ2Ug b3IgY29tcHJlc3MgdGhlIHBhZ2UuCitAcmV0dXJuIHRydWUgaWYgdGhlIG9wZXJhdGlvbiBzdWNj ZWVkZWQgKi8KIFVOSVZfSU5URVJOCi12b2lkCitib29sCiBwYWdlX2NvcHlfcmVjX2xpc3RfZW5k X25vX2xvY2tzKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAlidWZfYmxvY2tf dCoJbmV3X2Jsb2NrLAkvKiE8IGluOiBpbmRleCBwYWdlIHRvIGNvcHkgdG8gKi8KIAlidWZfYmxv Y2tfdCoJYmxvY2ssCQkvKiE8IGluOiBpbmRleCBwYWdlIG9mIHJlYyAqLwogCXJlY190KgkJcmVj LAkJLyohPCBpbjogcmVjb3JkIG9uIHBhZ2UgKi8KIAlkaWN0X2luZGV4X3QqCWluZGV4LAkJLyoh PCBpbjogcmVjb3JkIGRlc2NyaXB0b3IgKi8KLQltdHJfdCoJCW10cik7CQkvKiE8IGluOiBtdHIg Ki8KKwlkaWN0X2luZGV4X3QqCW5ld19pbmRleCwJLyohPCBpbjogcmVjb3JkIGRlc2NyaXB0b3Ig Ki8KKwltdHJfdCoJCW10cikJCS8qITwgaW46IG10ciAqLworCV9fYXR0cmlidXRlX18oKG5vbm51 bGwpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgogQ29waWVzIHJlY29yZHMgZnJvbSBwYWdlIHRvIG5ld19wYWdlLCBm cm9tIHRoZSBnaXZlbiByZWNvcmQgb253YXJkLAogaW5jbHVkaW5nIHRoYXQgcmVjb3JkLiBJbmZp bXVtIGFuZCBzdXByZW11bSByZWNvcmRzIGFyZSBub3QgY29waWVkLgoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMHppcC5oJwotLS0gYS9zdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvcGFnZTB6aXAuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDEyMDUxMDExMjU0Ny01YXUzMGg2OWpsbzk0YTh6CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS9wYWdlMHppcC5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTEwMTMw OTMzLTdsaTB3MjFnZGdzdjExeDEKQEAgLTk0LDYgKzk0LDE3IEBAIHBhZ2VfemlwX2Rlc19pbml0 KAogCQkJCQlkZXNjcmlwdG9yICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorV3JpdGUgYSBsb2cg cmVjb3JkIG9mIGNvbXByZXNzaW5nIGFuIGluZGV4IHBhZ2UuICovCitVTklWX0lOVEVSTgordm9p ZAorcGFnZV96aXBfY29tcHJlc3Nfd3JpdGVfbG9nKAorLyo9PT09PT09PT09PT09PT09PT09PT09 PT0qLworCWNvbnN0IHBhZ2VfemlwX2Rlc190KglwYWdlX3ppcCwvKiE8IGluOiBjb21wcmVzc2Vk IHBhZ2UgKi8KKwljb25zdCBwYWdlX3QqCQlwYWdlLAkvKiE8IGluOiB1bmNvbXByZXNzZWQgcGFn ZSAqLworCWRpY3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGluOiBpbmRleCBvZiB0aGUgQi10cmVl IG5vZGUgKi8KKwltdHJfdCoJCQltdHIpCS8qITwgaW46IG1pbmktdHJhbnNhY3Rpb24gKi8KKwlf X2F0dHJpYnV0ZV9fKChub25udWxsKSk7CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIENvbmZpZ3VyZSB0 aGUgemxpYiBhbGxvY2F0b3IgdG8gdXNlIHRoZSBnaXZlbiBtZW1vcnkgaGVhcC4gKi8KIFVOSVZf SU5URVJOCiB2b2lkCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L3JlbTByZWMuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JlbTByZWMuaAlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDExMjU0Ny01YXUzMGg2OWpsbzk0YTh6 CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVjLmgJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMjA1MTAxMzA5MzMtN2xpMHcyMWdkZ3N2MTF4MQpAQCAtMSw2ICsx LDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTQsIDIwMTEs IE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5 cmlnaHQgKGMpIDE5OTQsIDIwMTIsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBS aWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZQpAQCAtMzk5LDYgKzM5OSw3IEBAIHJlY19nZXRfb2Zmc2V0c19yZXZlcnNlKAogCXVsaW50 KgkJCW9mZnNldHMpOy8qITwgaW4vb3V0OiBhcnJheSBjb25zaXN0aW5nIG9mCiAJCQkJCW9mZnNl dHNbMF0gYWxsb2NhdGVkIGVsZW1lbnRzICovCiAKKyNpZmRlZiBVTklWX0RFQlVHCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgogVmFsaWRhdGVzIG9mZnNldHMgcmV0dXJuZWQgYnkgcmVjX2dldF9vZmZzZXRzKCkuCiBAcmV0 dXJuCVRSVUUgaWYgdmFsaWQgKi8KQEAgLTQwOCw5ICs0MDksMjMgQEAgcmVjX29mZnNfdmFsaWRh dGUoCiAvKj09PT09PT09PT09PT09Ki8KIAljb25zdCByZWNfdCoJCXJlYywJLyohPCBpbjogcmVj b3JkIG9yIE5VTEwgKi8KIAljb25zdCBkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiByZWNv cmQgZGVzY3JpcHRvciBvciBOVUxMICovCi0JY29uc3QgdWxpbnQqCQlvZmZzZXRzKTsvKiE8IGlu OiBhcnJheSByZXR1cm5lZCBieQorCWNvbnN0IHVsaW50KgkJb2Zmc2V0cykvKiE8IGluOiBhcnJh eSByZXR1cm5lZCBieQogCQkJCQlyZWNfZ2V0X29mZnNldHMoKSAqLwotI2lmZGVmIFVOSVZfREVC VUcKKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKDMpLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKK1ZhbGlkYXRlcyBvZmZzZXRzIHJldHVybmVkIGJ5IHJlY19nZXRfb2Zmc2V0cygp LgorQHJldHVybglUUlVFIGlmIHZhbGlkLCBhbGxvd2luZyBhIG1pc21hdGNoIG9mIGEgY2x1c3Rl cmVkIGluZGV4IHdoZW4KK3RoZSByZWNvcmQgaXMgZm9yIGEgZGlmZmVyZW50IHRhYmxlIGRlZmlu aXRpb24gdmVyc2lvbiAqLworVU5JVl9JTkxJTkUKK2lib29sCityZWNfb2Zmc192YWxpZGF0ZV9y ZWxheGVkKAorLyo9PT09PT09PT09PT09PT09PT09PT09Ki8KKwljb25zdCByZWNfdCoJCXJlYywJ LyohPCBpbjogcmVjb3JkIG9yIE5VTEwgKi8KKwljb25zdCBkaWN0X2luZGV4X3QqCWluZGV4LAkv KiE8IGluOiByZWNvcmQgZGVzY3JpcHRvciBvciBOVUxMICovCisJY29uc3QgdWxpbnQqCQlvZmZz ZXRzKS8qITwgaW46IGFycmF5IHJldHVybmVkIGJ5CisJCQkJCXJlY19nZXRfb2Zmc2V0cygpICov CisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCgyLDMpLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovLyoqCiBVcGRhdGVzIGRlYnVnIGRhdGEgaW4gb2Zmc2V0cywgaW4gb3JkZXIgdG8gYXZvaWQg Ym9ndXMKIHJlY19vZmZzX3ZhbGlkYXRlKCkgZmFpbHVyZXMuICovCkBAIC00MjAsOCArNDM1LDkg QEAgcmVjX29mZnNfbWFrZV92YWxpZCgKIC8qPT09PT09PT09PT09PT09PSovCiAJY29uc3QgcmVj X3QqCQlyZWMsCS8qITwgaW46IHJlY29yZCAqLwogCWNvbnN0IGRpY3RfaW5kZXhfdCoJaW5kZXgs CS8qITwgaW46IHJlY29yZCBkZXNjcmlwdG9yICovCi0JdWxpbnQqCQkJb2Zmc2V0cyk7LyohPCBp bjogYXJyYXkgcmV0dXJuZWQgYnkKKwl1bGludCoJCQlvZmZzZXRzKS8qITwgaW46IGFycmF5IHJl dHVybmVkIGJ5CiAJCQkJCXJlY19nZXRfb2Zmc2V0cygpICovCisJX19hdHRyaWJ1dGVfXygobm9u bnVsbCkpOwogI2Vsc2UKICMgZGVmaW5lIHJlY19vZmZzX21ha2VfdmFsaWQocmVjLCBpbmRleCwg b2Zmc2V0cykgKCh2b2lkKSAwKQogI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcmVtMHJlYy5pYycKLS0tIGEvc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL3JlbTByZWMuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMjA1MTAxMTI1NDctNWF1MzBoNjlqbG85NGE4egorKysgYi9zdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvcmVtMHJlYy5pYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUx MDEzMDkzMy03bGkwdzIxZ2Rnc3YxMXgxCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZm aWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMiwg T3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC05NDIsNiArOTQyLDcg QEAgcmVjX29mZnNfbl9maWVsZHMoCiAJcmV0dXJuKG5fZmllbGRzKTsKIH0KIAorI2lmZGVmIFVO SVZfREVCVUcKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCiBWYWxpZGF0ZXMgb2Zmc2V0cyByZXR1cm5lZCBieSByZWNfZ2V0 X29mZnNldHMoKS4KIEByZXR1cm4JVFJVRSBpZiB2YWxpZCAqLwpAQCAtOTk3LDcgKzk5OCw0MyBA QCByZWNfb2Zmc192YWxpZGF0ZSgKIAl9CiAJcmV0dXJuKFRSVUUpOwogfQotI2lmZGVmIFVOSVZf REVCVUcKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKK1ZhbGlkYXRlcyBvZmZzZXRzIHJldHVybmVkIGJ5IHJlY19nZXRf b2Zmc2V0cygpLgorQHJldHVybglUUlVFIGlmIHZhbGlkLCBhbGxvd2luZyBhIG1pc21hdGNoIG9m IGEgY2x1c3RlcmVkIGluZGV4IHdoZW4KK3RoZSByZWNvcmQgaXMgZm9yIGEgZGlmZmVyZW50IHRh YmxlIGRlZmluaXRpb24gdmVyc2lvbiAqLworVU5JVl9JTkxJTkUKK2lib29sCityZWNfb2Zmc192 YWxpZGF0ZV9yZWxheGVkKAorLyo9PT09PT09PT09PT09PT09PT09PT09Ki8KKwljb25zdCByZWNf dCoJCXJlYywJLyohPCBpbjogcmVjb3JkIG9yIE5VTEwgKi8KKwljb25zdCBkaWN0X2luZGV4X3Qq CWluZGV4LAkvKiE8IGluOiByZWNvcmQgZGVzY3JpcHRvciBvciBOVUxMICovCisJY29uc3QgdWxp bnQqCQlvZmZzZXRzKS8qITwgaW46IGFycmF5IHJldHVybmVkIGJ5CisJCQkJCXJlY19nZXRfb2Zm c2V0cygpICovCit7CisJaWYgKCh1bGludCkgaW5kZXggIT0gb2Zmc2V0c1szXSkgeworCQlkaWN0 X3RhYmxlX3QqCXRhYmxlID0gaW5kZXgtPnRhYmxlOworCisJCXV0X2EoZGljdF9pbmRleF9pc19j bHVzdChpbmRleCkpOworCQl1dF9hKHRhYmxlLT5uZXdlciB8fCB0YWJsZS0+b2xkZXIpOworCisJ CXdoaWxlICh0YWJsZS0+b2xkZXIpIHsKKwkJCXRhYmxlID0gdGFibGUtPm9sZGVyOworCQl9CisK KwkJZG8geworCQkJaW5kZXggPSBkaWN0X3RhYmxlX2dldF9maXJzdF9pbmRleCh0YWJsZSk7CisJ CQlpZiAoKHVsaW50KSBpbmRleCA9PSBvZmZzZXRzWzNdKSB7CisJCQkJYnJlYWs7CisJCQl9CisJ CX0gd2hpbGUgKCh0YWJsZSA9IHRhYmxlLT5uZXdlcikgIT0gTlVMTCk7CisKKwkJdXRfYSh0YWJs ZSk7CisJfQorCisJcmV0dXJuKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNldHMp KTsKK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKIFVwZGF0ZXMgZGVidWcgZGF0YSBpbiBvZmZzZXRzLCBpbiBvcmRl ciB0byBhdm9pZCBib2d1cwogcmVjX29mZnNfdmFsaWRhdGUoKSBmYWlsdXJlcy4gKi8KCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MG1lcmdlLmgnCi0tLSBh L3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwbWVyZ2UuaAlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDEyMDUxMDExMjU0Ny01YXUzMGg2OWpsbzk0YTh6CisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9yb3cwbWVyZ2UuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDEyMDUxMDEzMDkzMy03bGkwdzIxZ2Rnc3YxMXgxCkBAIC0yNDEsNiArMjQxLDE3IEBAIHJv d19tZXJnZV9yZW5hbWVfaW5kZXhfdG9fZHJvcCgKIAlpbmRleF9pZF90CWluZGV4X2lkKQkvKiE8 IGluOiBpbmRleCBpZGVudGlmaWVyICovCiAJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOwogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKK0NyZWF0ZSBhbmQgZXhlY3V0ZSBhIHF1ZXJ5IGdyYXBoIGZvciBjcmVh dGluZyBhbiBpbmRleC4KK0ByZXR1cm4JREJfU1VDQ0VTUyBvciBlcnJvciBjb2RlICovCitVTklW X0lOVEVSTgorZGJlcnJfdAorcm93X21lcmdlX2NyZWF0ZV9pbmRleF9ncmFwaCgKKy8qPT09PT09 PT09PT09PT09PT09PT09PT09PSovCisJdHJ4X3QqCQl0cngsCQkvKiE8IGluOiB0cnggKi8KKwlk aWN0X3RhYmxlX3QqCXRhYmxlLAkJLyohPCBpbjogdGFibGUgKi8KKwlkaWN0X2luZGV4X3QqCWlu ZGV4KQkJLyohPCBpbjogaW5kZXggKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3Vu dXNlZF9yZXN1bHQpKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBDcmVhdGUgdGhlIGluZGV4IGFuZCBs b2FkIGluIHRvIHRoZSBkaWN0aW9uYXJ5LgogQHJldHVybglpbmRleCwgb3IgTlVMTCBvbiBlcnJv ciAqLwogVU5JVl9JTlRFUk4KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvcm93MHJvdy5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzByb3cu aWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTAxMTI1NDctNWF1MzBoNjlq bG85NGE4egorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHJvdy5pYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDEzMDkzMy03bGkwdzIxZ2Rnc3YxMXgxCkBA IC00Myw3ICs0Myw3IEBAIHJvd19nZXRfdHJ4X2lkX29mZnNldCgKIAl1bGludAlsZW47CiAKIAl1 dF9hZChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSk7Ci0JdXRfYWQocmVjX29mZnNfdmFsaWRh dGUoTlVMTCwgaW5kZXgsIG9mZnNldHMpKTsKKwl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZV9yZWxh eGVkKE5VTEwsIGluZGV4LCBvZmZzZXRzKSk7CiAKIAlwb3MgPSBkaWN0X2luZGV4X2dldF9zeXNf Y29sX3BvcyhpbmRleCwgREFUQV9UUlhfSUQpOwogCkBAIC02OCw3ICs2OCw3IEBAIHJvd19nZXRf cmVjX3RyeF9pZCgKIAl1bGludAlvZmZzZXQ7CiAKIAl1dF9hZChkaWN0X2luZGV4X2lzX2NsdXN0 KGluZGV4KSk7Ci0JdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykp OworCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlX3JlbGF4ZWQocmVjLCBpbmRleCwgb2Zmc2V0cykp OwogCiAJb2Zmc2V0ID0gaW5kZXgtPnRyeF9pZF9vZmZzZXQ7CiAKQEAgLTkzLDcgKzkzLDcgQEAg cm93X2dldF9yZWNfcm9sbF9wdHIoCiAJdWxpbnQJb2Zmc2V0OwogCiAJdXRfYWQoZGljdF9pbmRl eF9pc19jbHVzdChpbmRleCkpOwotCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgs IG9mZnNldHMpKTsKKwl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZV9yZWxheGVkKHJlYywgaW5kZXgs IG9mZnNldHMpKTsKIAogCW9mZnNldCA9IGluZGV4LT50cnhfaWRfb2Zmc2V0OwogCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3VuaXYuaScKLS0tIGEvc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL3VuaXYuaQlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDEyMDUxMDExMjU0Ny01YXUzMGg2OWpsbzk0YTh6CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS91bml2LmkJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTAxMzA5MzMt N2xpMHcyMWdkZ3N2MTF4MQpAQCAtNDIyLDYgKzQyMiw3IEBAIG1hY3JvIFVMSU5UUEYuICovCiAj IGRlZmluZSBVSU5UMzJQRgkiJUkzMnUiCiAjIGRlZmluZSBJTlQ2NFBGCSIlSTY0ZCIKICMgZGVm aW5lIFVJTlQ2NFBGCSIlSTY0dSIKKyMgZGVmaW5lIFVJTlQ2NFAwWEYJIiUwMTZJNjRYIgogdHlw ZWRlZiBfX2ludDY0IGliX2ludDY0X3Q7CiB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgaWJfdWlu dDY0X3Q7CiB0eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgaWJfdWludDMyX3Q7CkBAIC00MzAsMTIg KzQzMSwxNCBAQCB0eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgaWJfdWludDMyX3Q7CiAjIGRlZmlu ZSBVSU5UMzJQRgkiJSJQUkl1MzIKICMgZGVmaW5lIElOVDY0UEYJIiUiUFJJZDY0CiAjIGRlZmlu ZSBVSU5UNjRQRgkiJSJQUkl1NjQKKyMgZGVmaW5lIFVJTlQ2NFAwWEYJIiUwMTYiUFJJWDY0CiB0 eXBlZGVmIGludDY0X3QgaWJfaW50NjRfdDsKIHR5cGVkZWYgdWludDY0X3QgaWJfdWludDY0X3Q7 CiB0eXBlZGVmIHVpbnQzMl90IGliX3VpbnQzMl90OwogIyBlbmRpZiAvKiBfX1dJTl9fICovCiAK ICMgZGVmaW5lIElCX0lEX0ZNVAlVSU5UNjRQRgorIyBkZWZpbmUgSUJfSURfRk1UMFgJVUlOVDY0 UDBYRgogCiAjaWZkZWYgX1dJTjY0CiB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQJdWxpbnQ7Cgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9sb2NrL2xvY2swbG9jay5jYycKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9sb2NrL2xvY2swbG9jay5jYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDEyMDUxMDExMjU0Ny01YXUzMGg2OWpsbzk0YTh6CisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2UvbG9jay9sb2NrMGxvY2suY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20t MjAxMjA1MTAxMzA5MzMtN2xpMHcyMWdkZ3N2MTF4MQpAQCAtNTAxLDcgKzUwMSw3IEBAIGxvY2tf Y2hlY2tfdHJ4X2lkX3Nhbml0eSgKIAlpYm9vbAkJaXNfb2s7CiAJdHJ4X2lkX3QJbWF4X3RyeF9p ZDsKIAotCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNldHMpKTsKKwl1 dF9hZChyZWNfb2Zmc192YWxpZGF0ZV9yZWxheGVkKHJlYywgaW5kZXgsIG9mZnNldHMpKTsKIAog CW1heF90cnhfaWQgPSB0cnhfc3lzX2dldF9tYXhfdHJ4X2lkKCk7CiAJaXNfb2sgPSB0cnhfaWQg PCBtYXhfdHJ4X2lkOwpAQCAtNTMzLDcgKzUzMyw3IEBAIGxvY2tfY2x1c3RfcmVjX2NvbnNfcmVh ZF9zZWVzKAogCXV0X2FkKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKIAl1dF9hZCghZGlj dF9pbmRleF9pc19vbmxpbmVfZGRsKGluZGV4KSk7CiAJdXRfYWQocGFnZV9yZWNfaXNfdXNlcl9y ZWMocmVjKSk7Ci0JdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykp OworCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlX3JlbGF4ZWQocmVjLCBpbmRleCwgb2Zmc2V0cykp OwogCiAJLyogTk9URSB0aGF0IHdlIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGlsZSBob2xkaW5nIHRo ZSBzZWFyY2gKIAlzeXN0ZW0gbGF0Y2guICovCkBAIC0xNDEzLDEyICsxNDEzLDEyIEBAIGxvY2tf cmVjX2dldF9wcmV2KAogQ2hlY2tzIGlmIGEgdHJhbnNhY3Rpb24gaGFzIHRoZSBzcGVjaWZpZWQg dGFibGUgbG9jaywgb3Igc3Ryb25nZXIuIFRoaXMKIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNh bGxlZCBieSB0aGUgdGhyZWFkIHRoYXQgb3ducyB0aGUgdHJhbnNhY3Rpb24uCiBAcmV0dXJuCWxv Y2sgb3IgTlVMTCAqLwotVU5JVl9JTkxJTkUKK1VOSVZfSU5MSU5FIF9fYXR0cmlidXRlX18oKG5v bm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpCiBjb25zdCBsb2NrX3QqCi1sb2NrX3RhYmxlX2hh cygKLS8qPT09PT09PT09PT0qLworbG9ja190YWJsZV9oYXNfbG93KAorLyo9PT09PT09PT09PT09 PT0qLwogCWNvbnN0IHRyeF90KgkJdHJ4LAkvKiE8IGluOiB0cmFuc2FjdGlvbiAqLwotCWNvbnN0 IGRpY3RfdGFibGVfdCoJdGFibGUsCS8qITwgaW46IHRhYmxlICovCisJY29uc3QgZGljdF90YWJs ZV90Kgl0YWJsZSwJLyohPCBpbjogdGFibGUgZGVmaW5pdGlvbiAqLwogCWVudW0gbG9ja19tb2Rl CQltb2RlKQkvKiE8IGluOiBsb2NrIG1vZGUgKi8KIHsKIAlsaW50CQkJaTsKQEAgLTE0NTgsNiAr MTQ1OCwyOCBAQCBsb2NrX3RhYmxlX2hhcygKIAlyZXR1cm4oTlVMTCk7CiB9CiAKKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCitDaGVja3MgaWYgYSB0cmFuc2FjdGlvbiBoYXMgdGhlIHNwZWNpZmllZCB0YWJs ZSBsb2NrLCBvciBzdHJvbmdlci4gVGhpcworZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2FsbGVk IGJ5IHRoZSB0aHJlYWQgdGhhdCBvd25zIHRoZSB0cmFuc2FjdGlvbi4KK0ByZXR1cm4JbG9jayBv ciBOVUxMICovCitVTklWX0lOTElORSBfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNl ZF9yZXN1bHQpKQorY29uc3QgbG9ja190KgorbG9ja190YWJsZV9oYXMoCisvKj09PT09PT09PT09 Ki8KKwljb25zdCB0cnhfdCoJCXRyeCwJLyohPCBpbjogdHJhbnNhY3Rpb24gKi8KKwljb25zdCBk aWN0X3RhYmxlX3QqCXRhYmxlLAkvKiE8IGluOiB0YWJsZSAqLworCWVudW0gbG9ja19tb2RlCQlt b2RlKQkvKiE8IGluOiBsb2NrIG1vZGUgKi8KK3sKKwlkbyB7CisJCWNvbnN0IGxvY2tfdCoJbG9j ayA9IGxvY2tfdGFibGVfaGFzX2xvdyh0cngsIHRhYmxlLCBtb2RlKTsKKwkJaWYgKGxvY2spIHsK KwkJCXJldHVybihsb2NrKTsKKwkJfQorCX0gd2hpbGUgKCh0YWJsZSA9IHRhYmxlLT5vbGRlcikg IT0gTlVMTCk7CisKKwlyZXR1cm4oTlVMTCk7Cit9CisKIC8qPT09PT09PT09PT09PSBGVU5DVElP TlMgRk9SIEFOQUxZWklORyBSRUNPUkQgTE9DSyBRVUVVRSA9PT09PT09PT09PT09PT09Ki8KIAog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKQEAgLTU0MTQsNyArNTQzNiw3IEBAIGxvY2tfcmVjX3F1ZXVlX3Zh bGlkYXRlKAogCiAJdXRfYShyZWMpOwogCXV0X2EoYmxvY2stPmZyYW1lID09IHBhZ2VfYWxpZ24o cmVjKSk7Ci0JdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykpOwor CXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlX3JlbGF4ZWQocmVjLCBpbmRleCwgb2Zmc2V0cykpOwog CXV0X2FkKCFwYWdlX3JlY19pc19jb21wKHJlYykgPT0gIXJlY19vZmZzX2NvbXAob2Zmc2V0cykp OwogCXV0X2FkKGxvY2tfbXV0ZXhfb3duKCkgPT0gbG9ja2VkX2xvY2tfdHJ4X3N5cyk7CiAJdXRf YWQoIWluZGV4IHx8ICFkaWN0X2luZGV4X2lzX29ubGluZV9kZGwoaW5kZXgpKTsKQEAgLTU5MTks NyArNTk0MSw3IEBAIGxvY2tfcmVjX2NvbnZlcnRfaW1wbF90b19leHBsKAogCiAJdXRfYWQoIWxv Y2tfbXV0ZXhfb3duKCkpOwogCXV0X2FkKHBhZ2VfcmVjX2lzX3VzZXJfcmVjKHJlYykpOwotCXV0 X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNldHMpKTsKKwl1dF9hZChyZWNf b2Zmc192YWxpZGF0ZV9yZWxheGVkKHJlYywgaW5kZXgsIG9mZnNldHMpKTsKIAl1dF9hZCghcGFn ZV9yZWNfaXNfY29tcChyZWMpID09ICFyZWNfb2Zmc19jb21wKG9mZnNldHMpKTsKIAl1dF9hZCgh ZGljdF9pbmRleF9pc19vbmxpbmVfZGRsKGluZGV4KSk7CiAKQEAgLTU5ODYsNyArNjAwOCw3IEBA IGxvY2tfY2x1c3RfcmVjX21vZGlmeV9jaGVja19hbmRfbG9jaygKIAlkYmVycl90CWVycjsKIAl1 bGludAloZWFwX25vOwogCi0JdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zm c2V0cykpOworCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlX3JlbGF4ZWQocmVjLCBpbmRleCwgb2Zm c2V0cykpOwogCXV0X2FkKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKIAl1dF9hZCghZGlj dF9pbmRleF9pc19vbmxpbmVfZGRsKGluZGV4KSk7CiAJdXRfYWQoYmxvY2stPmZyYW1lID09IHBh Z2VfYWxpZ24ocmVjKSk7CkBAIC02MjIzLDcgKzYyNDUsNyBAQCBsb2NrX2NsdXN0X3JlY19yZWFk X2NoZWNrX2FuZF9sb2NrKAogCXV0X2FkKHBhZ2VfcmVjX2lzX3VzZXJfcmVjKHJlYykgfHwgcGFn ZV9yZWNfaXNfc3VwcmVtdW0ocmVjKSk7CiAJdXRfYWQoZ2FwX21vZGUgPT0gTE9DS19PUkRJTkFS WSB8fCBnYXBfbW9kZSA9PSBMT0NLX0dBUAogCSAgICAgIHx8IGdhcF9tb2RlID09IExPQ0tfUkVD X05PVF9HQVApOwotCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNldHMp KTsKKwl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZV9yZWxheGVkKHJlYywgaW5kZXgsIG9mZnNldHMp KTsKIAogCWlmIChmbGFncyAmIEJUUl9OT19MT0NLSU5HX0ZMQUcpIHsKIApAQCAtNjIzOSwxMCAr NjI2MSwyMyBAQCBsb2NrX2NsdXN0X3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrKAogCiAJbG9ja19t dXRleF9lbnRlcigpOwogCi0JdXRfYWQobW9kZSAhPSBMT0NLX1gKLQkgICAgICB8fCBsb2NrX3Rh YmxlX2hhcyh0aHJfZ2V0X3RyeCh0aHIpLCBpbmRleC0+dGFibGUsIExPQ0tfSVgpKTsKLQl1dF9h ZChtb2RlICE9IExPQ0tfUwotCSAgICAgIHx8IGxvY2tfdGFibGVfaGFzKHRocl9nZXRfdHJ4KHRo ciksIGluZGV4LT50YWJsZSwgTE9DS19JUykpOworI2lmZGVmIFVOSVZfREVCVUcKKwljb25zdCB0 cnhfdCoJdHJ4ID0gdGhyX2dldF90cngodGhyKTsKKwllbnVtIGxvY2tfbW9kZQl0bG9ja19tb2Rl OworCisJc3dpdGNoIChtb2RlKSB7CisJZGVmYXVsdDoKKwkJdXRfZXJyb3I7CisJY2FzZSBMT0NL X1g6CisJCXRsb2NrX21vZGUgPSBMT0NLX0lYOworCQlicmVhazsKKwljYXNlIExPQ0tfUzoKKwkJ dGxvY2tfbW9kZSA9IExPQ0tfSVM7CisJCWJyZWFrOworCX0KKworCXV0X2FkKGxvY2tfdGFibGVf aGFzKHRyeCwgaW5kZXgtPnRhYmxlLCB0bG9ja19tb2RlKSk7CisjZW5kaWYgLyogVU5JVl9ERUJV RyAqLwogCiAJZXJyID0gbG9ja19yZWNfbG9jayhGQUxTRSwgbW9kZSB8IGdhcF9tb2RlLCBibG9j aywgaGVhcF9ubywgaW5kZXgsIHRocik7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL3BhZ2UvcGFnZTBwYWdlLmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFn ZTBwYWdlLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTEwMTEyNTQ3LTVh dTMwaDY5amxvOTRhOHoKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwcGFnZS5jYwly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDEzMDkzMy03bGkwdzIxZ2Rnc3Yx MXgxCkBAIC01MjMsMTUgKzUyMywxNyBAQCBwYWdlX2NyZWF0ZV96aXAoCiAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgog RGlmZmVycyBmcm9tIHBhZ2VfY29weV9yZWNfbGlzdF9lbmQsIGJlY2F1c2UgdGhpcyBmdW5jdGlv biBkb2VzIG5vdAotdG91Y2ggdGhlIGxvY2sgdGFibGUgYW5kIG1heCB0cnggaWQgb24gcGFnZSBv ciBjb21wcmVzcyB0aGUgcGFnZS4gKi8KK3RvdWNoIHRoZSBsb2NrIHRhYmxlIGFuZCBtYXggdHJ4 IGlkIG9uIHBhZ2Ugb3IgY29tcHJlc3MgdGhlIHBhZ2UuCitAcmV0dXJuIHRydWUgaWYgdGhlIG9w ZXJhdGlvbiBzdWNjZWVkZWQgKi8KIFVOSVZfSU5URVJOCi12b2lkCitib29sCiBwYWdlX2NvcHlf cmVjX2xpc3RfZW5kX25vX2xvY2tzKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K IAlidWZfYmxvY2tfdCoJbmV3X2Jsb2NrLAkvKiE8IGluOiBpbmRleCBwYWdlIHRvIGNvcHkgdG8g Ki8KIAlidWZfYmxvY2tfdCoJYmxvY2ssCQkvKiE8IGluOiBpbmRleCBwYWdlIG9mIHJlYyAqLwog CXJlY190KgkJcmVjLAkJLyohPCBpbjogcmVjb3JkIG9uIHBhZ2UgKi8KIAlkaWN0X2luZGV4X3Qq CWluZGV4LAkJLyohPCBpbjogcmVjb3JkIGRlc2NyaXB0b3IgKi8KKwlkaWN0X2luZGV4X3QqCW5l d19pbmRleCwJLyohPCBpbjogcmVjb3JkIGRlc2NyaXB0b3IgKi8KIAltdHJfdCoJCW10cikJCS8q ITwgaW46IG10ciAqLwogewogCXBhZ2VfdCoJCW5ld19wYWdlCT0gYnVmX2Jsb2NrX2dldF9mcmFt ZShuZXdfYmxvY2spOwpAQCAtNTQ5LDcgKzU1MSw3IEBAIHBhZ2VfY29weV9yZWNfbGlzdF9lbmRf bm9fbG9ja3MoCiAJCXBhZ2VfY3VyX21vdmVfdG9fbmV4dCgmY3VyMSk7CiAJfQogCi0JYnRyX2Fz c2VydF9ub3RfY29ycnVwdGVkKG5ld19ibG9jaywgaW5kZXgpOworCWJ0cl9hc3NlcnRfbm90X2Nv cnJ1cHRlZChuZXdfYmxvY2ssIG5ld19pbmRleCk7CiAJdXRfYShwYWdlX2lzX2NvbXAobmV3X3Bh Z2UpID09IHBhZ2VfcmVjX2lzX2NvbXAocmVjKSk7CiAJdXRfYShtYWNoX3JlYWRfZnJvbV8yKG5l d19wYWdlICsgVU5JVl9QQUdFX1NJWkUgLSAxMCkgPT0gKHVsaW50KQogCSAgICAgKHBhZ2VfaXNf Y29tcChuZXdfcGFnZSkgPyBQQUdFX05FV19JTkZJTVVNIDogUEFHRV9PTERfSU5GSU1VTSkpOwpA QCAtNTU4LDM5ICs1NjAsMTMyIEBAIHBhZ2VfY29weV9yZWNfbGlzdF9lbmRfbm9fbG9ja3MoCiAK IAkvKiBDb3B5IHJlY29yZHMgZnJvbSB0aGUgb3JpZ2luYWwgcGFnZSB0byB0aGUgbmV3IHBhZ2Ug Ki8KIAotCXdoaWxlICghcGFnZV9jdXJfaXNfYWZ0ZXJfbGFzdCgmY3VyMSkpIHsKLQkJcmVjX3Qq CWN1cjFfcmVjID0gcGFnZV9jdXJfZ2V0X3JlYygmY3VyMSk7Ci0JCXJlY190KglpbnNfcmVjOwot CQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKGN1cjFfcmVjLCBpbmRleCwgb2Zmc2V0cywKLQkJ CQkJICBVTElOVF9VTkRFRklORUQsICZoZWFwKTsKLQkJaW5zX3JlYyA9IHBhZ2VfY3VyX2luc2Vy dF9yZWNfbG93KGN1cjIsIGluZGV4LAotCQkJCQkJICBjdXIxX3JlYywgb2Zmc2V0cywgbXRyKTsK LQkJaWYgKFVOSVZfVU5MSUtFTFkoIWluc19yZWMpKSB7Ci0JCQkvKiBUcmFjayBhbiBhc3NlcnRp b24gZmFpbHVyZSByZXBvcnRlZCBvbiB0aGUgbWFpbGluZwotCQkJbGlzdCBvbiBKdW5lIDE4dGgs IDIwMDMgKi8KLQotCQkJYnVmX3BhZ2VfcHJpbnQobmV3X3BhZ2UsIDAsCi0JCQkJICAgICAgIEJV Rl9QQUdFX1BSSU5UX05PX0NSQVNIKTsKLQkJCWJ1Zl9wYWdlX3ByaW50KHBhZ2VfYWxpZ24ocmVj KSwgMCwKLQkJCQkgICAgICAgQlVGX1BBR0VfUFJJTlRfTk9fQ1JBU0gpOwotCQkJdXRfcHJpbnRf dGltZXN0YW1wKHN0ZGVycik7Ci0KLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCSJJbm5vREI6IHJl YyBvZmZzZXQgJWx1LCBjdXIxIG9mZnNldCAlbHUsIgotCQkJCSIgY3VyMiBvZmZzZXQgJWx1XG4i LAotCQkJCSh1bG9uZykgcGFnZV9vZmZzZXQocmVjKSwKLQkJCQkodWxvbmcpIHBhZ2Vfb2Zmc2V0 KHBhZ2VfY3VyX2dldF9yZWMoJmN1cjEpKSwKLQkJCQkodWxvbmcpIHBhZ2Vfb2Zmc2V0KGN1cjIp KTsKLQkJCXV0X2Vycm9yOworCWlmIChpbmRleCAhPSBuZXdfaW5kZXgpIHsKKwkJLyogY29udmVy dCBjdXIxX3JlYyB0byBuZXdfaW5kZXggKi8KKwkJdXRfYWQoZGljdF9pbmRleF9pc19jbHVzdChp bmRleCkpOworCQl1dF9hZChkaWN0X2luZGV4X2lzX2NsdXN0KG5ld19pbmRleCkpOworCQl1dF9h ZChwYWdlX2lzX2xlYWYoYmxvY2stPmZyYW1lKSk7CisJCS8qIFRPRE86IHJlbW92ZSB0aGVzZSB3 aGVuIGltcGxlbWVudGluZworCQlBREQgQ09MVU1OLCBEUk9QIENPTFVNTiwgcmVvcmRlcmluZyBv ZiBjb2x1bW5zICovCisJCXV0X2FkKHBhZ2VfaXNfY29tcChibG9jay0+ZnJhbWUpKTsKKwkJdXRf YWQobmV3X2luZGV4LT5uX251bGxhYmxlID4gaW5kZXgtPm5fbnVsbGFibGUpOworCQl1dF9hZChu ZXdfaW5kZXgtPm5fZmllbGRzID09IGluZGV4LT5uX2ZpZWxkcyk7CisKKwkJdWxpbnQJc2l6ZSA9 ICgxICsgUkVDX09GRlNfSEVBREVSX1NJWkUpICsgMQorCQkJKyBkaWN0X2luZGV4X2dldF9uX2Zp ZWxkcyhuZXdfaW5kZXgpOworCisJCWlmICghaGVhcCkgeworCQkJaGVhcCA9IG1lbV9oZWFwX2Ny ZWF0ZShzaXplICogc2l6ZW9mICpvZmZzZXRzICogMik7CiAJCX0KIAotCQlwYWdlX2N1cl9tb3Zl X3RvX25leHQoJmN1cjEpOwotCQljdXIyID0gaW5zX3JlYzsKKwkJdWxpbnQqCW5ld19vZmZzZXRz ID0gc3RhdGljX2Nhc3Q8dWxpbnQqPigKKwkJCW1lbV9oZWFwX2FsbG9jKGhlYXAsIHNpemUgKiBz aXplb2YgKm5ld19vZmZzZXRzKSk7CisJCXJlY19vZmZzX3NldF9uX2FsbG9jKG5ld19vZmZzZXRz LCBzaXplKTsKKwkJbmV3X29mZnNldHNbMV0gPSBkaWN0X2luZGV4X2dldF9uX2ZpZWxkcyhuZXdf aW5kZXgpOworCisJCW1lbV9oZWFwX3QqCXJlY19oZWFwID0gbWVtX2hlYXBfY3JlYXRlKFVOSVZf UEFHRV9TSVpFIC8gMik7CisKKwkJd2hpbGUgKCFwYWdlX2N1cl9pc19hZnRlcl9sYXN0KCZjdXIx KSkgeworCQkJcmVjX3QqCWN1cjFfcmVjID0gcGFnZV9jdXJfZ2V0X3JlYygmY3VyMSk7CisJCQly ZWNfdCoJaW5zX3JlYzsKKwkJCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMoY3VyMV9yZWMsIGlu ZGV4LCBvZmZzZXRzLAorCQkJCQkJICBVTElOVF9VTkRFRklORUQsICZoZWFwKTsKKworCQkJLyog Q29udmVydCB0aGUgcmVjb3JkLiBGb3Igbm93LCBtaW1pYworCQkJcmVjX2luaXRfb2Zmc2V0c19j b21wX29yZGluYXJ5KCkuCisJCQlUT0RPOiBhZGQvZHJvcC9zaHVmZmxlIGNvbHVtbnMgKi8KKwor CQkJaW50CWV4dHJhX3NpemVfZGlmZgorCQkJCT0gVVRfQklUU19JTl9CWVRFUyhuZXdfaW5kZXgt Pm5fbnVsbGFibGUpCisJCQkJLSBVVF9CSVRTX0lOX0JZVEVTKGluZGV4LT5uX251bGxhYmxlKTsK KworCQkJYnl0ZSoJYnVmID0gc3RhdGljX2Nhc3Q8Ynl0ZSo+KAorCQkJCW1lbV9oZWFwX2FsbG9j KAorCQkJCQlyZWNfaGVhcCwKKwkJCQkJcmVjX29mZnNfc2l6ZShvZmZzZXRzKQorCQkJCQkrIGV4 dHJhX3NpemVfZGlmZikpOworCQkJYnl0ZSoJbmV3X3JlYyA9IGJ1ZiArIHJlY19vZmZzX2V4dHJh X3NpemUob2Zmc2V0cykKKwkJCQkrIGV4dHJhX3NpemVfZGlmZjsKKworCQkJLyogbWltaWMgcmVj X2NvbnZlcnRfZHR1cGxlX3RvX3JlY19jb21wKCkgKi8KKwkJCWJ5dGUqCW51bGxzID0gbmV3X3Jl YworCQkJCS0gKFJFQ19OX05FV19FWFRSQV9CWVRFUyArIDEpOworCQkJYnl0ZSoJbGVucyA9IG51 bGxzIC0gVVRfQklUU19JTl9CWVRFUygKKwkJCQluZXdfaW5kZXgtPm5fbnVsbGFibGUpOworCisJ CQkvKiBDb3B5IHRoZSBsZW5ndGhzLiAqLworCQkJbWVtY3B5KGJ1ZiwgY3VyMV9yZWMgLSByZWNf b2Zmc19leHRyYV9zaXplKG9mZnNldHMpLAorCQkJICAgICAgIChsZW5zICsgMSkgLSBidWYpOwor CQkJLyogQ2xlYXIgdGhlIFNRTC1udWxsIGZsYWdzLiAqLworCQkJbWVtc2V0KGxlbnMgKyAxLCAw LCBudWxscyAtIGxlbnMpOworCQkJLyogQ29weSB0aGUgaGVhZGVyIGFuZCBkYXRhLiAqLworCQkJ bWVtY3B5KG5ld19yZWMgLSBSRUNfTl9ORVdfRVhUUkFfQllURVMsCisJCQkgICAgICAgY3VyMV9y ZWMgLSBSRUNfTl9ORVdfRVhUUkFfQllURVMsCisJCQkgICAgICAgcmVjX29mZnNfZGF0YV9zaXpl KG9mZnNldHMpCisJCQkgICAgICAgKyBSRUNfTl9ORVdfRVhUUkFfQllURVMpOworCQkJLyogQ29w eSB0aGUgU1FMLW51bGwgZmxhZ3MuICovCisJCQlmb3IgKHVpbnQgaSA9IDAsIG51bGxfbWFzayA9 IDE7CisJCQkgICAgIGkgPCBkaWN0X2luZGV4X2dldF9uX2ZpZWxkcyhuZXdfaW5kZXgpOyBpKysp IHsKKwkJCQljb25zdCBkaWN0X2ZpZWxkX3QqCWZpZWxkCisJCQkJCT0gZGljdF9pbmRleF9nZXRf bnRoX2ZpZWxkKAorCQkJCQkJbmV3X2luZGV4LCBpKTsKKwkJCQlpZiAoZmllbGQtPmNvbC0+cHJ0 eXBlICYgREFUQV9OT1RfTlVMTCkgeworCQkJCQl1dF9hZCghcmVjX29mZnNfbnRoX3NxbF9udWxs KAorCQkJCQkJICAgICAgb2Zmc2V0cywgaSkpOworCQkJCQljb250aW51ZTsKKwkJCQl9CisKKwkJ CQlpZiAoIShieXRlKSBudWxsX21hc2spIHsKKwkJCQkJbnVsbHMtLTsKKwkJCQkJbnVsbF9tYXNr ID0gMTsKKwkJCQl9CisKKwkJCQlpZiAocmVjX29mZnNfbnRoX3NxbF9udWxsKG9mZnNldHMsIGkp KSB7CisJCQkJCSpudWxscyB8PSBudWxsX21hc2s7CisJCQkJfQorCisJCQkJbnVsbF9tYXNrIDw8 PSAxOworCQkJfQorCisJCQlyZWNfaW5pdF9vZmZzZXRzX2NvbXBfb3JkaW5hcnkoCisJCQkJbmV3 X3JlYywgUkVDX05fTkVXX0VYVFJBX0JZVEVTLAorCQkJCW5ld19pbmRleCwgbmV3X2luZGV4LT5u X251bGxhYmxlLAorCQkJCW5ld19vZmZzZXRzKTsKKworCQkJaW5zX3JlYyA9IHBhZ2VfY3VyX2lu c2VydF9yZWNfbG93KAorCQkJCWN1cjIsIG5ld19pbmRleCwgbmV3X3JlYywgbmV3X29mZnNldHMs IG10cik7CisKKwkJCWlmICghaW5zX3JlYykgeworCQkJCW1lbV9oZWFwX2ZyZWUocmVjX2hlYXAp OworCQkJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CisJCQkJcmV0dXJuKGZhbHNlKTsKKwkJCX0KKwor CQkJcGFnZV9jdXJfbW92ZV90b19uZXh0KCZjdXIxKTsKKwkJCWN1cjIgPSBpbnNfcmVjOworCQl9 CisKKwkJbWVtX2hlYXBfZnJlZShyZWNfaGVhcCk7CisJfSBlbHNlIHsKKwkJd2hpbGUgKCFwYWdl X2N1cl9pc19hZnRlcl9sYXN0KCZjdXIxKSkgeworCQkJcmVjX3QqCWN1cjFfcmVjID0gcGFnZV9j dXJfZ2V0X3JlYygmY3VyMSk7CisJCQlyZWNfdCoJaW5zX3JlYzsKKwkJCW9mZnNldHMgPSByZWNf Z2V0X29mZnNldHMoY3VyMV9yZWMsIGluZGV4LCBvZmZzZXRzLAorCQkJCQkJICBVTElOVF9VTkRF RklORUQsICZoZWFwKTsKKwkJCWluc19yZWMgPSBwYWdlX2N1cl9pbnNlcnRfcmVjX2xvdygKKwkJ CQljdXIyLCBuZXdfaW5kZXgsIGN1cjFfcmVjLCBvZmZzZXRzLCBtdHIpOworCQkJdXRfYShpbnNf cmVjKTsKKworCQkJcGFnZV9jdXJfbW92ZV90b19uZXh0KCZjdXIxKTsKKwkJCWN1cjIgPSBpbnNf cmVjOworCQl9CiAJfQogCiAJaWYgKFVOSVZfTElLRUxZX05VTEwoaGVhcCkpIHsKIAkJbWVtX2hl YXBfZnJlZShoZWFwKTsKIAl9CisKKwlyZXR1cm4odHJ1ZSk7CiB9CiAKICNpZm5kZWYgVU5JVl9I T1RCQUNLVVAKQEAgLTY0NCw3ICs3MzksNyBAQCBwYWdlX2NvcHlfcmVjX2xpc3RfZW5kKAogCQkJ CQkJICAgICAgIGluZGV4LCBtdHIpOwogCX0gZWxzZSB7CiAJCXBhZ2VfY29weV9yZWNfbGlzdF9l bmRfbm9fbG9ja3MobmV3X2Jsb2NrLCBibG9jaywgcmVjLAotCQkJCQkJaW5kZXgsIG10cik7CisJ CQkJCQlpbmRleCwgaW5kZXgsIG10cik7CiAJfQogCiAJLyogVXBkYXRlIFBBR0VfTUFYX1RSWF9J RCBvbiB0aGUgdW5jb21wcmVzc2VkIHBhZ2UuCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9p bm5vYmFzZS9wYWdlL3BhZ2UwemlwLmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFn ZTB6aXAuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTAxMTI1NDctNWF1 MzBoNjlqbG85NGE4egorKysgYi9zdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTB6aXAuY2MJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTAxMzA5MzMtN2xpMHcyMWdkZ3N2MTF4 MQpAQCAtMzEyLDcgKzMxMiw3IEBAIHBhZ2VfemlwX2Rpcl9nZXQoCiAjaWZuZGVmIFVOSVZfSE9U QkFDS1VQCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKIFdyaXRlIGEgbG9nIHJlY29yZCBvZiBjb21wcmVz c2luZyBhbiBpbmRleCBwYWdlLiAqLwotc3RhdGljCitVTklWX0lOVEVSTgogdm9pZAogcGFnZV96 aXBfY29tcHJlc3Nfd3JpdGVfbG9nKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT0qLwpAQCAt NDQ5OCw3ICs0NDk4LDcgQEAgcGFnZV96aXBfcmVvcmdhbml6ZSgKIAogCXBhZ2VfY29weV9yZWNf bGlzdF9lbmRfbm9fbG9ja3MoYmxvY2ssIHRlbXBfYmxvY2ssCiAJCQkJCXBhZ2VfZ2V0X2luZmlt dW1fcmVjKHRlbXBfcGFnZSksCi0JCQkJCWluZGV4LCBtdHIpOworCQkJCQlpbmRleCwgaW5kZXgs IG10cik7CiAKIAlpZiAoIWRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpICYmIHBhZ2VfaXNfbGVh Zih0ZW1wX3BhZ2UpKSB7CiAJCS8qIENvcHkgbWF4IHRyeCBpZCB0byByZWNyZWF0ZWQgcGFnZSAq LwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBtZXJnZS5jYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MG1lcmdlLmNjCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTIwNTEwMTEyNTQ3LTVhdTMwaDY5amxvOTRhOHoKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9yb3cvcm93MG1lcmdlLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTIwNTEwMTMwOTMzLTdsaTB3MjFnZGdzdjExeDEKQEAgLTMwMDEsNyArMzAwMSw3IEBAIGVy cl9leGl0OgogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKIENyZWF0ZSBhbmQgZXhlY3V0ZSBhIHF1ZXJ5IGdy YXBoIGZvciBjcmVhdGluZyBhbiBpbmRleC4KIEByZXR1cm4JREJfU1VDQ0VTUyBvciBlcnJvciBj b2RlICovCi1zdGF0aWMgX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0 KSkKK1VOSVZfSU5URVJOCiBkYmVycl90CiByb3dfbWVyZ2VfY3JlYXRlX2luZGV4X2dyYXBoKAog Lyo9PT09PT09PT09PT09PT09PT09PT09PT09Ki8KQEAgLTMwMTQsMTAgKzMwMTQsNiBAQCByb3df bWVyZ2VfY3JlYXRlX2luZGV4X2dyYXBoKAogCXF1ZV90aHJfdCoJdGhyOwkJLyohPCBRdWVyeSB0 aHJlYWQgKi8KIAlkYmVycl90CQllcnI7CiAKLQl1dF9hZCh0cngpOwotCXV0X2FkKHRhYmxlKTsK LQl1dF9hZChpbmRleCk7Ci0KIAloZWFwID0gbWVtX2hlYXBfY3JlYXRlKDUxMik7CiAKIAlpbmRl eC0+dGFibGUgPSB0YWJsZTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jv dy9yb3cwbXlzcWwuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5jYwly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDExMjU0Ny01YXUzMGg2OWpsbzk0 YTh6CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5jYwlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDEzMDkzMy03bGkwdzIxZ2Rnc3YxMXgxCkBAIC0yMTg1 LDEyICsyMTg1LDggQEAgZXJyX2V4aXQ6CiAJY2FzZSBUUlhfRElDVF9PUF9OT05FOgogCQl0cnhf c2V0X2RpY3Rfb3BlcmF0aW9uKHRyeCwgVFJYX0RJQ1RfT1BfVEFCTEUpOwogCWNhc2UgVFJYX0RJ Q1RfT1BfVEFCTEU6Ci0JCWJyZWFrOwogCWNhc2UgVFJYX0RJQ1RfT1BfSU5ERVg6Ci0JCS8qIElm IHRoZSB0cmFuc2FjdGlvbiB3YXMgcHJldmlvdXNseSBmbGFnZ2VkIGFzCi0JCVRSWF9ESUNUX09Q X0lOREVYLCB3ZSBzaG91bGQgYmUgY3JlYXRpbmcgYXV4aWxpYXJ5Ci0JCXRhYmxlcyBmb3IgZnVs bC10ZXh0IGluZGV4ZXMuICovCi0JCXV0X2FkKHN0cnN0cih0YWJsZS0+bmFtZSwgIi9GVFNfIikg IT0gTlVMTCk7CisJCWJyZWFrOwogCX0KIAogCW5vZGUgPSB0YWJfY3JlYXRlX2dyYXBoX2NyZWF0 ZSh0YWJsZSwgaGVhcCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cv cm93MHNlbC5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHNlbC5jYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxMDExMjU0Ny01YXUzMGg2OWpsbzk0YTh6Cisr KyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBzZWwuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMjA1MTAxMzA5MzMtN2xpMHcyMWdkZ3N2MTF4MQpAQCAtMjgxOCw3ICsyODE4 LDggQEAgcm93X3NlbF9zdG9yZV9teXNxbF9maWVsZF9mdW5jKAogCXV0X2FkKGZpZWxkX25vID09 IHRlbXBsLT5jbHVzdF9yZWNfZmllbGRfbm8KIAkgICAgICB8fCBmaWVsZF9ubyA9PSB0ZW1wbC0+ cmVjX2ZpZWxkX25vCiAJICAgICAgfHwgZmllbGRfbm8gPT0gdGVtcGwtPmljcF9yZWNfZmllbGRf bm8pOwotCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNldHMpKTsKKwl1 dF9hZChyZWNfb2Zmc192YWxpZGF0ZV9yZWxheGVkKHJlYywgaW5kZXgsIG9mZnNldHMpKTsKKwkv KiBUT0RPOiBBREQgQ09MVU1OLCBEUk9QIENPTFVNTiwgcmVvcmRlciBjb2x1bW5zICovCiAKIAlp ZiAoVU5JVl9VTkxJS0VMWShyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIGZpZWxkX25vKSkp IHsKIApAQCAtMjk1Nyw3ICsyOTU4LDcgQEAgcm93X3NlbF9zdG9yZV9teXNxbF9yZWMoCiB7CiAJ dWxpbnQJaTsKIAotCXV0X2FkKHJlY19jbHVzdCB8fCBpbmRleCA9PSBwcmVidWlsdC0+aW5kZXgp OworCXV0X2FkKHJlY19jbHVzdCB8fCBkaWN0X2luZGV4X2lzX2VxdWl2YWxlbnQoaW5kZXgsIHBy ZWJ1aWx0LT5pbmRleCkpOwogCXV0X2FkKCFyZWNfY2x1c3QgfHwgZGljdF9pbmRleF9pc19jbHVz dChpbmRleCkpOwogCiAJaWYgKFVOSVZfTElLRUxZX05VTEwocHJlYnVpbHQtPmJsb2JfaGVhcCkp IHsKQEAgLTM1NjksNyArMzU3MCw3IEBAIHJvd19zZWFyY2hfaWR4X2NvbmRfY2hlY2soCiAJZW51 bSBpY3BfcmVzdWx0IHJlc3VsdDsKIAl1bGludAkJaTsKIAotCXV0X2FkKHJlY19vZmZzX3ZhbGlk YXRlKHJlYywgcHJlYnVpbHQtPmluZGV4LCBvZmZzZXRzKSk7CisJdXRfYWQocmVjX29mZnNfdmFs aWRhdGVfcmVsYXhlZChyZWMsIHByZWJ1aWx0LT5pbmRleCwgb2Zmc2V0cykpOwogCiAJaWYgKCFw cmVidWlsdC0+aWR4X2NvbmQpIHsKIAkJcmV0dXJuKElDUF9NQVRDSCk7CkBAIC00MzMxLDEzICs0 MzMyLDI4IEBAIHdyb25nX29mZnM6CiAJLyogQ2FsY3VsYXRlIHRoZSAnb2Zmc2V0cycgYXNzb2Np YXRlZCB3aXRoICdyZWMnICovCiAKIAl1dF9hZChmaWxfcGFnZV9nZXRfdHlwZShidHJfcGN1cl9n ZXRfcGFnZShwY3VyKSkgPT0gRklMX1BBR0VfSU5ERVgpOwotCXV0X2FkKGJ0cl9wYWdlX2dldF9p bmRleF9pZChidHJfcGN1cl9nZXRfcGFnZShwY3VyKSkgPT0gaW5kZXgtPmlkKTsKKworCXsKKwkJ aW5kZXhfaWRfdCBwYWdlX2luZGV4X2lkID0gYnRyX3BhZ2VfZ2V0X2luZGV4X2lkKAorCQkJcGFn ZV9hbGlnbihyZWMpKTsKKworCQlpZiAoaW5kZXgtPmlkICE9IHBhZ2VfaW5kZXhfaWQpIHsKKwkJ CXV0X2FkKGluZGV4ID09IGNsdXN0X2luZGV4KTsKKwkJCWluZGV4ID0gZGljdF9pbmRleF9nZXRf dmVyc2lvbihpbmRleCwgcGFnZV9pbmRleF9pZCk7CisJCQlpZiAoIWluZGV4KSB7CisJCQkJLyog VGhlIGluZGV4IGRlZmluaXRpb24gbXVzdCBiZSBmb3VuZC4gKi8KKwkJCQl1dF9hKHNydl9mb3Jj ZV9yZWNvdmVyeSA+IDApOworCQkJCWdvdG8gc2tpcF9yZWM7CisJCQl9CisJCX0KKwl9CiAKIAlv ZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIG9mZnNldHMsIFVMSU5UX1VOREVG SU5FRCwgJmhlYXApOwogCiAJaWYgKFVOSVZfVU5MSUtFTFkoc3J2X2ZvcmNlX3JlY292ZXJ5ID4g MCkpIHsKIAkJaWYgKCFyZWNfdmFsaWRhdGUocmVjLCBvZmZzZXRzKQogCQkgICAgfHwgIWJ0cl9p bmRleF9yZWNfdmFsaWRhdGUocmVjLCBpbmRleCwgRkFMU0UpKSB7Citza2lwX3JlYzoKIAkJCWZw cmludGYoc3RkZXJyLAogCQkJCSJJbm5vREI6IEluZGV4IGNvcnJ1cHRpb246IHJlYyBvZmZzICVs dSIKIAkJCQkiIG5leHQgb2ZmcyAlbHUsIHBhZ2Ugbm8gJWx1LFxuIgpAQCAtNDQ4Miw3ICs0NDk4 LDcgQEAgd3Jvbmdfb2ZmczoKIAkJY29sMSA+PSAxMDAsIGFuZCB3ZSBmaW5kIGEgcmVjb3JkIHdo ZXJlIGNvbDEgPSAxMDAsIHRoZW4gbm8KIAkJbmVlZCB0byBsb2NrIHRoZSBnYXAgYmVmb3JlIHRo YXQgcmVjb3JkLiAqLwogCi0JCWlmIChpbmRleCA9PSBjbHVzdF9pbmRleAorCQlpZiAoZGljdF9p bmRleF9pc19jbHVzdChpbmRleCkKIAkJICAgICYmIG1vZGUgPT0gUEFHRV9DVVJfR0UKIAkJICAg ICYmIGRpcmVjdGlvbiA9PSAwCiAJCSAgICAmJiBkdHVwbGVfZ2V0X25fZmllbGRzX2NtcChzZWFy Y2hfdHVwbGUpCkBAIC00NDkzLDcgKzQ1MDksNyBAQCBub19nYXBfbG9jazoKIAkJfQogCiAJCWVy ciA9IHNlbF9zZXRfcmVjX2xvY2soYnRyX3BjdXJfZ2V0X2Jsb2NrKHBjdXIpLAotCQkJCSAgICAg ICByZWMsIGluZGV4LCBvZmZzZXRzLAorCQkJCSAgICAgICByZWMsIGJ0cl9wY3VyX2dldF9pbmRl eChwY3VyKSwgb2Zmc2V0cywKIAkJCQkgICAgICAgcHJlYnVpbHQtPnNlbGVjdF9sb2NrX3R5cGUs CiAJCQkJICAgICAgIGxvY2tfdHlwZSwgdGhyKTsKIApAQCAtNDUxNyw3ICs0NTMzLDcgQEAgbm9f Z2FwX2xvY2s6CiAJCQlpZiAoVU5JVl9MSUtFTFkocHJlYnVpbHQtPnJvd19yZWFkX3R5cGUKIAkJ CQkJIT0gUk9XX1JFQURfVFJZX1NFTUlfQ09OU0lTVEVOVCkKIAkJCSAgICB8fCB1bmlxdWVfc2Vh cmNoCi0JCQkgICAgfHwgaW5kZXggIT0gY2x1c3RfaW5kZXgpIHsKKwkJCSAgICB8fCAhZGljdF9p bmRleF9pc19jbHVzdChpbmRleCkpIHsKIAogCQkJCWdvdG8gbG9ja193YWl0X29yX2Vycm9yOwog CQkJfQpAQCAtNDU4MCw3ICs0NTk2LDcgQEAgbm9fZ2FwX2xvY2s6CiAJCQkvKiBEbyBub3RoaW5n OiB3ZSBsZXQgYSBub24tbG9ja2luZyBTRUxFQ1QgcmVhZCB0aGUKIAkJCWxhdGVzdCB2ZXJzaW9u IG9mIHRoZSByZWNvcmQgKi8KIAotCQl9IGVsc2UgaWYgKGluZGV4ID09IGNsdXN0X2luZGV4KSB7 CisJCX0gZWxzZSBpZiAoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpIHsKIAogCQkJLyogRmV0 Y2ggYSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSByb3cgaWYgdGhlIGN1cnJlbnQKIAkJCW9uZSBp cyBub3QgdmlzaWJsZSBpbiB0aGUgc25hcHNob3Q7IGlmIHdlIGhhdmUgYSB2ZXJ5CkBAIC00Njc3 LDcgKzQ2OTMsNyBAQCBsb2Nrc19vazoKIAkJYXBwbGljYWJsZSB0byB1bmlxdWUgc2Vjb25kYXJ5 IGluZGV4ZXMuIEN1cnJlbnQgYmVoYXZpb3VyIGlzCiAJCXRvIHdpZGVuIHRoZSBzY29wZSBvZiBh IGxvY2sgb24gYW4gYWxyZWFkeSBkZWxldGUgbWFya2VkIHJlY29yZAogCQlpZiB0aGUgc2FtZSBy ZWNvcmQgaXMgZGVsZXRlZCB0d2ljZSBieSB0aGUgc2FtZSB0cmFuc2FjdGlvbiAqLwotCQlpZiAo aW5kZXggPT0gY2x1c3RfaW5kZXggJiYgdW5pcXVlX3NlYXJjaCkgeworCQlpZiAoZGljdF9pbmRl eF9pc19jbHVzdChpbmRleCkgJiYgdW5pcXVlX3NlYXJjaCkgewogCQkJZXJyID0gREJfUkVDT1JE X05PVF9GT1VORDsKIAogCQkJZ290byBub3JtYWxfcmV0dXJuOwpAQCAtNDcwMywxMCArNDcxOSwx MSBAQCBsb2Nrc19vazoKIAkvKiBHZXQgdGhlIGNsdXN0ZXJlZCBpbmRleCByZWNvcmQgaWYgbmVl ZGVkLCBpZiB3ZSBkaWQgbm90IGRvIHRoZQogCXNlYXJjaCB1c2luZyB0aGUgY2x1c3RlcmVkIGlu ZGV4LiAqLwogCi0JaWYgKGluZGV4ICE9IGNsdXN0X2luZGV4ICYmIHByZWJ1aWx0LT5uZWVkX3Rv X2FjY2Vzc19jbHVzdGVyZWQpIHsKKwlpZiAoIWRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpCisJ ICAgICYmIHByZWJ1aWx0LT5uZWVkX3RvX2FjY2Vzc19jbHVzdGVyZWQpIHsKIAogcmVxdWlyZXNf Y2x1c3RfcmVjOgotCQl1dF9hZChpbmRleCAhPSBjbHVzdF9pbmRleCk7CisJCXV0X2FkKCFkaWN0 X2luZGV4X2lzX2NsdXN0KGluZGV4KSk7CiAJCS8qIFdlIHVzZSBhICdnb3RvJyB0byB0aGUgcHJl Y2VkaW5nIGxhYmVsIGlmIGEgY29uc2lzdGVudAogCQlyZWFkIG9mIGEgc2Vjb25kYXJ5IGluZGV4 IHJlY29yZCByZXF1aXJlcyB1cyB0byBsb29rIHVwIG9sZAogCQl2ZXJzaW9ucyBvZiB0aGUgYXNz b2NpYXRlZCBjbHVzdGVyZWQgaW5kZXggcmVjb3JkLiAqLwoKTm8gYnVuZGxlIChyZWFzb246IHVz ZWxlc3MgZm9yIHB1c2ggZW1haWxzKS4=