From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1L9LGq-0005R9-2C for qemu-devel@nongnu.org; Sun, 07 Dec 2008 10:10:08 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1L9LGl-0005Q8-Cs for qemu-devel@nongnu.org; Sun, 07 Dec 2008 10:10:06 -0500 Received: from [199.232.76.173] (port=60126 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1L9LGi-0005Pp-Ss for qemu-devel@nongnu.org; Sun, 07 Dec 2008 10:10:01 -0500 Received: from fk-out-0910.google.com ([209.85.128.184]:55568) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1L9LGh-0007Lx-LC for qemu-devel@nongnu.org; Sun, 07 Dec 2008 10:10:00 -0500 Received: by fk-out-0910.google.com with SMTP id 18so835096fks.2 for ; Sun, 07 Dec 2008 07:09:58 -0800 (PST) Message-ID: Date: Sun, 7 Dec 2008 17:09:58 +0200 From: "Blue Swirl" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_43389_22075467.1228662598206" Subject: [Qemu-devel] [PATCH][FYI] Remove address masking for non-Sparc hardware Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "qemu-devel@nongnu.org" ------=_Part_43389_22075467.1228662598206 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, As the address supplied to MMIO functions is now an offset, some of the address masking can be removed. I did this for Sparc, this patch removes most of the remaining ones. I tried to check that the size of the area registered matches the removed mask size, the area size is static and the function is not used also for IO port access which uses absolute port numbers. In RTL8139 case the common function performs the operation. I have not tested the patch otherwise, so I won't apply it but offer the patch for testing and cherry picking. ------=_Part_43389_22075467.1228662598206 Content-Type: plain/text; name=remove_address_masking_rest.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_foftwqc5 Content-Disposition: attachment; filename=remove_address_masking_rest.diff SW5kZXg6IHFlbXUvaHcvYXBpYy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9hcGljLmMJ MjAwOC0xMi0wNyAxNDo1ODowNy4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvYXBpYy5jCTIw MDgtMTItMDcgMTQ6NTg6MTIuMDAwMDAwMDAwICswMDAwCkBAIC02MTQsNyArNjE0LDcgQEAKICAg ICAgICAgcmV0dXJuIDA7CiAgICAgcyA9IGVudi0+YXBpY19zdGF0ZTsKIAotICAgIGluZGV4ID0g KGFkZHIgPj4gNCkgJiAweGZmOworICAgIGluZGV4ID0gYWRkciA+PiA0OwogICAgIHN3aXRjaChp bmRleCkgewogICAgIGNhc2UgMHgwMjogLyogaWQgKi8KICAgICAgICAgdmFsID0gcy0+aWQgPDwg MjQ7CkBAIC02OTgsNyArNjk4LDcgQEAKICAgICBwcmludGYoIkFQSUMgd3JpdGU6ICUwOHggPSAl MDh4XG4iLCAodWludDMyX3QpYWRkciwgdmFsKTsKICNlbmRpZgogCi0gICAgaW5kZXggPSAoYWRk ciA+PiA0KSAmIDB4ZmY7CisgICAgaW5kZXggPSBhZGRyID4+IDQ7CiAgICAgc3dpdGNoKGluZGV4 KSB7CiAgICAgY2FzZSAweDAyOgogICAgICAgICBzLT5pZCA9ICh2YWwgPj4gMjQpOwpJbmRleDog cWVtdS9ody9jaXJydXNfdmdhLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L2NpcnJ1c192 Z2EuYwkyMDA4LTEyLTA3IDE0OjU4OjA4LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9jaXJy dXNfdmdhLmMJMjAwOC0xMi0wNyAxNDo1ODoxMi4wMDAwMDAwMDAgKzAwMDAKQEAgLTIwMTcsOCAr MjAxNyw2IEBACiAJcmV0dXJuIHZnYV9tZW1fcmVhZGIocywgYWRkcik7CiAgICAgfQogCi0gICAg YWRkciAmPSAweDFmZmZmOwotCiAgICAgaWYgKGFkZHIgPCAweDEwMDAwKSB7CiAJLyogWFhYIGhh bmRsZSBiaXRibHQgKi8KIAkvKiB2aWRlbyBtZW1vcnkgKi8KQEAgLTIwOTMsOCArMjA5MSw2IEBA CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhZGRyICY9IDB4MWZmZmY7Ci0KICAgICBp ZiAoYWRkciA8IDB4MTAwMDApIHsKIAlpZiAocy0+Y2lycnVzX3NyY3B0ciAhPSBzLT5jaXJydXNf c3JjcHRyX2VuZCkgewogCSAgICAvKiBiaXRibHQgKi8KQEAgLTI5NzUsOCArMjk3MSw2IEBACiB7 CiAgICAgQ2lycnVzVkdBU3RhdGUgKnMgPSAoQ2lycnVzVkdBU3RhdGUgKikgb3BhcXVlOwogCi0g ICAgYWRkciAmPSBDSVJSVVNfUE5QTU1JT19TSVpFIC0gMTsKLQogICAgIGlmIChhZGRyID49IDB4 MTAwKSB7CiAgICAgICAgIHJldHVybiBjaXJydXNfbW1pb19ibHRfcmVhZChzLCBhZGRyIC0gMHgx MDApOwogICAgIH0gZWxzZSB7CkBAIC0zMDE5LDggKzMwMTMsNiBAQAogewogICAgIENpcnJ1c1ZH QVN0YXRlICpzID0gKENpcnJ1c1ZHQVN0YXRlICopIG9wYXF1ZTsKIAotICAgIGFkZHIgJj0gQ0lS UlVTX1BOUE1NSU9fU0laRSAtIDE7Ci0KICAgICBpZiAoYWRkciA+PSAweDEwMCkgewogCWNpcnJ1 c19tbWlvX2JsdF93cml0ZShzLCBhZGRyIC0gMHgxMDAsIHZhbCk7CiAgICAgfSBlbHNlIHsKSW5k ZXg6IHFlbXUvaHcvY3VkYS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9jdWRhLmMJMjAw OC0xMi0wNyAxNDo1ODowOC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvY3VkYS5jCTIwMDgt MTItMDcgMTQ6NTg6MTIuMDAwMDAwMDAwICswMDAwCkBAIC0yNTAsNyArMjUwLDcgQEAKICAgICBD VURBU3RhdGUgKnMgPSBvcGFxdWU7CiAgICAgdWludDMyX3QgdmFsOwogCi0gICAgYWRkciA9IChh ZGRyID4+IDkpICYgMHhmOworICAgIGFkZHIgPSBhZGRyID4+IDk7CiAgICAgc3dpdGNoKGFkZHIp IHsKICAgICBjYXNlIDA6CiAgICAgICAgIHZhbCA9IHMtPmI7CkBAIC0zMjIsNyArMzIyLDcgQEAK IHsKICAgICBDVURBU3RhdGUgKnMgPSBvcGFxdWU7CiAKLSAgICBhZGRyID0gKGFkZHIgPj4gOSkg JiAweGY7CisgICAgYWRkciA9IGFkZHIgPj4gOTsKICNpZmRlZiBERUJVR19DVURBCiAgICAgcHJp bnRmKCJjdWRhOiB3cml0ZTogcmVnPTB4JXggdmFsPSUwMnhcbiIsIGFkZHIsIHZhbCk7CiAjZW5k aWYKSW5kZXg6IHFlbXUvaHcvZTEwMDAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvZTEw MDAuYwkyMDA4LTEyLTA3IDE0OjU4OjA5LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9lMTAw MC5jCTIwMDgtMTItMDcgMTQ6NTg6MTIuMDAwMDAwMDAwICswMDAwCkBAIC03ODUsNyArNzg1LDcg QEAKIGUxMDAwX21taW9fd3JpdGVsKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFk ZHIsIHVpbnQzMl90IHZhbCkKIHsKICAgICBFMTAwMFN0YXRlICpzID0gb3BhcXVlOwotICAgIHVu c2lnbmVkIGludCBpbmRleCA9IChhZGRyICYgMHgxZmZmZikgPj4gMjsKKyAgICB1bnNpZ25lZCBp bnQgaW5kZXggPSBhZGRyID4+IDI7CiAKICNpZmRlZiBUQVJHRVRfV09SRFNfQklHRU5ESUFOCiAg ICAgdmFsID0gYnN3YXAzMih2YWwpOwpAQCAtODE5LDcgKzgxOSw3IEBACiBlMTAwMF9tbWlvX3Jl YWRsKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCiB7CiAgICAgRTEwMDBT dGF0ZSAqcyA9IG9wYXF1ZTsKLSAgICB1bnNpZ25lZCBpbnQgaW5kZXggPSAoYWRkciAmIDB4MWZm ZmYpID4+IDI7CisgICAgdW5zaWduZWQgaW50IGluZGV4ID0gYWRkciA+PiAyOwogCiAgICAgaWYg KGluZGV4IDwgTlJFQURPUFMgJiYgbWFjcmVnX3JlYWRvcHNbaW5kZXhdKQogICAgIHsKSW5kZXg6 IHFlbXUvaHcvZXRyYXhmc19zZXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvZXRyYXhm c19zZXIuYwkyMDA4LTEyLTA3IDE0OjU4OjA4LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9l dHJheGZzX3Nlci5jCTIwMDgtMTItMDcgMTQ6NTg6MTIuMDAwMDAwMDAwICswMDAwCkBAIC05Nyw3 ICs5Nyw3IEBACiAJRChDUFVTdGF0ZSAqZW52ID0gcy0+ZW52KTsKIAl1aW50MzJfdCByID0gMDsK IAotCXN3aXRjaCAoYWRkciAmIDB4ZmZmKQorCXN3aXRjaCAoYWRkcikKIAl7CiAJCWNhc2UgUldf VFJfQ1RSTDoKIAkJCXIgPSBzLT5yd190cl9jdHJsOwpAQCAtMTUwLDcgKzE1MCw3IEBACiAJdW5z aWduZWQgY2hhciBjaCA9IHZhbHVlOwogCUQoQ1BVU3RhdGUgKmVudiA9IHMtPmVudik7CiAKLQlz d2l0Y2ggKGFkZHIgJiAweGZmZikKKwlzd2l0Y2ggKGFkZHIpCiAJewogCQljYXNlIFJXX1RSX0NU Ukw6CiAJCQlEKHByaW50ZigicndfdHJfY3RybD0leFxuIiwgdmFsdWUpKTsKSW5kZXg6IHFlbXUv aHcvZzM2NGZiLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L2czNjRmYi5jCTIwMDgtMTIt MDcgMTQ6NTg6MDguMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L2czNjRmYi5jCTIwMDgtMTIt MDcgMTQ6NTg6MTIuMDAwMDAwMDAwICswMDAwCkBAIC0xOTMsOCArMTkzLDYgQEAKICAgICAvL0cz NjRTdGF0ZSAqcyA9IG9wYXF1ZTsKICAgICB1aW50MzJfdCB2YWw7CiAKLSAgICBhZGRyICY9IDB4 ZmZmZjsKLQogICAgIHN3aXRjaCAoYWRkcikgewogICAgICAgICBkZWZhdWx0OgogI2lmZGVmIERF QlVHX0czNjQKQEAgLTIzMyw4ICsyMzEsNiBAQAogewogICAgIEczNjRTdGF0ZSAqcyA9IG9wYXF1 ZTsKIAotICAgIGFkZHIgJj0gMHhmZmZmOwotCiAjaWZkZWYgREVCVUdfRzM2NAogICAgIHByaW50 ZigiZzM2NGZiL2N0cmw6IHdyaXRlIDB4JTAyeCBhdCBbIiBUQVJHRVRfRk1UX2x4ICJdXG4iLCB2 YWwsIGFkZHIpOwogI2VuZGlmCkluZGV4OiBxZW11L2h3L2d0NjR4eHguYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBxZW11Lm9yaWcvaHcvZ3Q2NHh4eC5jCTIwMDgtMTItMDcgMTQ6NTg6MDcuMDAwMDAwMDAwICsw MDAwCisrKyBxZW11L2h3L2d0NjR4eHguYwkyMDA4LTEyLTA3IDE0OjU4OjEyLjAwMDAwMDAwMCAr MDAwMApAQCAtMzEyLDcgKzMxMiw3IEBACiAgICAgaWYgKCEocy0+cmVnc1tHVF9DUFVdICYgMHgw MDAwMTAwMCkpCiAgICAgICAgIHZhbCA9IGJzd2FwMzIodmFsKTsKIAotICAgIHNhZGRyID0gKGFk ZHIgJiAweGZmZikgPj4gMjsKKyAgICBzYWRkciA9IGFkZHIgPj4gMjsKICAgICBzd2l0Y2ggKHNh ZGRyKSB7CiAKICAgICAvKiBDUFUgQ29uZmlndXJhdGlvbiAqLwpAQCAtNTg5LDcgKzU4OSw3IEBA CiAgICAgdWludDMyX3QgdmFsOwogICAgIHVpbnQzMl90IHNhZGRyOwogCi0gICAgc2FkZHIgPSAo YWRkciAmIDB4ZmZmKSA+PiAyOworICAgIHNhZGRyID0gYWRkciA+PiAyOwogICAgIHN3aXRjaCAo c2FkZHIpIHsKIAogICAgIC8qIENQVSBDb25maWd1cmF0aW9uICovCkluZGV4OiBxZW11L2h3L2hl YXRocm93X3BpYy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9oZWF0aHJvd19waWMuYwky MDA4LTEyLTA3IDE0OjU4OjA2LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9oZWF0aHJvd19w aWMuYwkyMDA4LTEyLTA3IDE0OjU4OjEyLjAwMDAwMDAwMCArMDAwMApAQCAtNjMsNyArNjMsNyBA QAogI2lmZGVmIFRBUkdFVF9XT1JEU19CSUdFTkRJQU4KICAgICB2YWx1ZSA9IGJzd2FwMzIodmFs dWUpOwogI2VuZGlmCi0gICAgbiA9ICgoYWRkciAmIDB4ZmZmKSAtIDB4MTApID4+IDQ7CisgICAg biA9IChhZGRyIC0gMHgxMCkgPj4gNDsKICNpZmRlZiBERUJVRwogICAgIHByaW50ZigicGljX3dy aXRlbDogIiBQQUREUlggIiAldTogJTA4eFxuIiwgYWRkciwgbiwgdmFsdWUpOwogI2VuZGlmCkBA IC05Myw3ICs5Myw3IEBACiAgICAgdW5zaWduZWQgaW50IG47CiAgICAgdWludDMyX3QgdmFsdWU7 CiAKLSAgICBuID0gKChhZGRyICYgMHhmZmYpIC0gMHgxMCkgPj4gNDsKKyAgICBuID0gKGFkZHIg LSAweDEwKSA+PiA0OwogICAgIGlmIChuID49IDIpIHsKICAgICAgICAgdmFsdWUgPSAwOwogICAg IH0gZWxzZSB7CkluZGV4OiBxZW11L2h3L2lkZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9o dy9pZGUuYwkyMDA4LTEyLTA3IDE0OjU4OjA3LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9p ZGUuYwkyMDA4LTEyLTA3IDE0OjU4OjEyLjAwMDAwMDAwMCArMDAwMApAQCAtMzM2MCw3ICszMzYw LDcgQEAKIHN0YXRpYyB2b2lkIHBtYWNfaWRlX3dyaXRlbCAodm9pZCAqb3BhcXVlLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgdWludDMyX3Qg dmFsKQogewotICAgIGFkZHIgPSAoYWRkciAmIDB4RkZGKSA+PiA0OworICAgIGFkZHIgPSBhZGRy ID4+IDQ7CiAjaWZkZWYgVEFSR0VUX1dPUkRTX0JJR0VORElBTgogICAgIHZhbCA9IGJzd2FwMzIo dmFsKTsKICNlbmRpZgpAQCAtMzM3Myw3ICszMzczLDcgQEAKIHsKICAgICB1aW50MzJfdCByZXR2 YWw7CiAKLSAgICBhZGRyID0gKGFkZHIgJiAweEZGRikgPj4gNDsKKyAgICBhZGRyID0gYWRkciA+ PiA0OwogICAgIGlmIChhZGRyID09IDApIHsKICAgICAgICAgcmV0dmFsID0gaWRlX2RhdGFfcmVh ZGwob3BhcXVlLCAwKTsKICAgICB9IGVsc2UgewpJbmRleDogcWVtdS9ody9tY2ZfZmVjLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L21jZl9mZWMuYwkyMDA4LTEyLTA3IDE0OjU4OjA3LjAw MDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9tY2ZfZmVjLmMJMjAwOC0xMi0wNyAxNDo1ODoxMi4w MDAwMDAwMDAgKzAwMDAKQEAgLTIxNiw3ICsyMTYsNyBAQAogc3RhdGljIHVpbnQzMl90IG1jZl9m ZWNfcmVhZCh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQogewogICAgIG1j Zl9mZWNfc3RhdGUgKnMgPSAobWNmX2ZlY19zdGF0ZSAqKW9wYXF1ZTsKLSAgICBzd2l0Y2ggKGFk ZHIgJiAweDNmZikgeworICAgIHN3aXRjaCAoYWRkcikgewogICAgIGNhc2UgMHgwMDQ6IHJldHVy biBzLT5laXI7CiAgICAgY2FzZSAweDAwODogcmV0dXJuIHMtPmVpbXI7CiAgICAgY2FzZSAweDAx MDogcmV0dXJuIHMtPnJ4X2VuYWJsZWQgPyAoMSA8PCAyNCkgOiAwOyAvKiBSREFSICovCkBAIC0y NTQsNyArMjU0LDcgQEAKIHN0YXRpYyB2b2lkIG1jZl9mZWNfd3JpdGUodm9pZCAqb3BhcXVlLCB0 YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgdWludDMyX3QgdmFsdWUpCiB7CiAgICAgbWNmX2ZlY19z dGF0ZSAqcyA9IChtY2ZfZmVjX3N0YXRlICopb3BhcXVlOwotICAgIHN3aXRjaCAoYWRkciAmIDB4 M2ZmKSB7CisgICAgc3dpdGNoIChhZGRyKSB7CiAgICAgY2FzZSAweDAwNDoKICAgICAgICAgcy0+ ZWlyICY9IH52YWx1ZTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBxZW11L2h3L21jZl9pbnRjLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L21jZl9pbnRjLmMJMjAwOC0xMi0wNyAxNDo1ODow OC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvbWNmX2ludGMuYwkyMDA4LTEyLTA3IDE0OjU4 OjEyLjAwMDAwMDAwMCArMDAwMApAQCAtNDUsNyArNDUsNyBAQAogewogICAgIGludCBvZmZzZXQ7 CiAgICAgbWNmX2ludGNfc3RhdGUgKnMgPSAobWNmX2ludGNfc3RhdGUgKilvcGFxdWU7Ci0gICAg b2Zmc2V0ID0gYWRkciAmIDB4ZmY7CisgICAgb2Zmc2V0ID0gYWRkcjsKICAgICBpZiAob2Zmc2V0 ID49IDB4NDAgJiYgb2Zmc2V0IDwgMHg4MCkgewogICAgICAgICByZXR1cm4gcy0+aWNyW29mZnNl dCAtIDB4NDBdOwogICAgIH0KQEAgLTc3LDcgKzc3LDcgQEAKIHsKICAgICBpbnQgb2Zmc2V0Owog ICAgIG1jZl9pbnRjX3N0YXRlICpzID0gKG1jZl9pbnRjX3N0YXRlICopb3BhcXVlOwotICAgIG9m ZnNldCA9IGFkZHIgJiAweGZmOworICAgIG9mZnNldCA9IGFkZHI7CiAgICAgaWYgKG9mZnNldCA+ PSAweDQwICYmIG9mZnNldCA8IDB4ODApIHsKICAgICAgICAgaW50IG4gPSBvZmZzZXQgLSAweDQw OwogICAgICAgICBzLT5pY3Jbbl0gPSB2YWw7CkluZGV4OiBxZW11L2h3L21jZl91YXJ0LmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L21jZl91YXJ0LmMJMjAwOC0xMi0wNyAxNDo1ODowOC4w MDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvbWNmX3VhcnQuYwkyMDA4LTEyLTA3IDE0OjU4OjEy LjAwMDAwMDAwMCArMDAwMApAQCAtNjcsNyArNjcsNyBAQAogdWludDMyX3QgbWNmX3VhcnRfcmVh ZCh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQogewogICAgIG1jZl91YXJ0 X3N0YXRlICpzID0gKG1jZl91YXJ0X3N0YXRlICopb3BhcXVlOwotICAgIHN3aXRjaCAoYWRkciAm IDB4M2YpIHsKKyAgICBzd2l0Y2ggKGFkZHIpIHsKICAgICBjYXNlIDB4MDA6CiAgICAgICAgIHJl dHVybiBzLT5tcltzLT5jdXJyZW50X21yXTsKICAgICBjYXNlIDB4MDQ6CkBAIC0xODUsNyArMTg1 LDcgQEAKIHZvaWQgbWNmX3VhcnRfd3JpdGUodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRy X3QgYWRkciwgdWludDMyX3QgdmFsKQogewogICAgIG1jZl91YXJ0X3N0YXRlICpzID0gKG1jZl91 YXJ0X3N0YXRlICopb3BhcXVlOwotICAgIHN3aXRjaCAoYWRkciAmIDB4M2YpIHsKKyAgICBzd2l0 Y2ggKGFkZHIpIHsKICAgICBjYXNlIDB4MDA6CiAgICAgICAgIHMtPm1yW3MtPmN1cnJlbnRfbXJd ID0gdmFsOwogICAgICAgICBzLT5jdXJyZW50X21yID0gMTsKSW5kZXg6IHFlbXUvaHcvbWlwc19t YWx0YS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9taXBzX21hbHRhLmMJMjAwOC0xMi0w NyAxNDo1ODowOC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvbWlwc19tYWx0YS5jCTIwMDgt MTItMDcgMTQ6NTg6MTIuMDAwMDAwMDAwICswMDAwCkBAIC0yMjUsNyArMjI1LDcgQEAKICAgICB1 aW50MzJfdCB2YWwgPSAwOwogICAgIHVpbnQzMl90IHNhZGRyOwogCi0gICAgc2FkZHIgPSAoYWRk ciAmIDB4ZmZmZmYpOworICAgIHNhZGRyID0gYWRkcjsKIAogICAgIHN3aXRjaCAoc2FkZHIpIHsK IApAQCAtMzEyLDcgKzMxMiw3IEBACiAgICAgTWFsdGFGUEdBU3RhdGUgKnMgPSBvcGFxdWU7CiAg ICAgdWludDMyX3Qgc2FkZHI7CiAKLSAgICBzYWRkciA9IChhZGRyICYgMHhmZmZmZik7CisgICAg c2FkZHIgPSBhZGRyOwogCiAgICAgc3dpdGNoIChzYWRkcikgewogCkluZGV4OiBxZW11L2h3L21p cHNfcjRrLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L21pcHNfcjRrLmMJMjAwOC0xMi0w NyAxNDo1ODowNy4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvbWlwc19yNGsuYwkyMDA4LTEy LTA3IDE0OjU4OjEyLjAwMDAwMDAwMCArMDAwMApAQCAtNTAsOSArNTAsOSBAQAogc3RhdGljIHZv aWQgbWlwc19xZW11X3dyaXRlbCAodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRk ciwKIAkJCSAgICAgIHVpbnQzMl90IHZhbCkKIHsKLSAgICBpZiAoKGFkZHIgJiAweGZmZmYpID09 IDAgJiYgdmFsID09IDQyKQorICAgIGlmIChhZGRyID09IDAgJiYgdmFsID09IDQyKQogICAgICAg ICBxZW11X3N5c3RlbV9yZXNldF9yZXF1ZXN0ICgpOwotICAgIGVsc2UgaWYgKChhZGRyICYgMHhm ZmZmKSA9PSA0ICYmIHZhbCA9PSA0MikKKyAgICBlbHNlIGlmIChhZGRyID09IDQgJiYgdmFsID09 IDQyKQogICAgICAgICBxZW11X3N5c3RlbV9zaHV0ZG93bl9yZXF1ZXN0ICgpOwogfQogCkluZGV4 OiBxZW11L2h3L21wY29yZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9tcGNvcmUuYwky MDA4LTEyLTA3IDE0OjU4OjA3LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9tcGNvcmUuYwky MDA4LTEyLTA3IDE0OjU4OjEyLjAwMDAwMDAwMCArMDAwMApAQCAtMTU5LDcgKzE1OSw3IEBACiB7 CiAgICAgbXBjb3JlX3ByaXZfc3RhdGUgKnMgPSAobXBjb3JlX3ByaXZfc3RhdGUgKilvcGFxdWU7 CiAgICAgaW50IGlkOwotICAgIG9mZnNldCAmPSAweGZmZjsKKwogICAgIGlmIChvZmZzZXQgPCAw eDEwMCkgewogICAgICAgICAvKiBTQ1UgKi8KICAgICAgICAgc3dpdGNoIChvZmZzZXQpIHsKQEAg LTIwNSw3ICsyMDUsNyBAQAogewogICAgIG1wY29yZV9wcml2X3N0YXRlICpzID0gKG1wY29yZV9w cml2X3N0YXRlICopb3BhcXVlOwogICAgIGludCBpZDsKLSAgICBvZmZzZXQgJj0gMHhmZmY7CisK ICAgICBpZiAob2Zmc2V0IDwgMHgxMDApIHsKICAgICAgICAgLyogU0NVICovCiAgICAgICAgIHN3 aXRjaCAob2Zmc2V0KSB7CkluZGV4OiBxZW11L2h3L29tYXAxLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVt dS5vcmlnL2h3L29tYXAxLmMJMjAwOC0xMi0wNyAxNDo1ODowOC4wMDAwMDAwMDAgKzAwMDAKKysr IHFlbXUvaHcvb21hcDEuYwkyMDA4LTEyLTA3IDE0OjU4OjEyLjAwMDAwMDAwMCArMDAwMApAQCAt OTczLDcgKzk3Myw3IEBACiBzdGF0aWMgdWludDMyX3Qgb21hcF9vc190aW1lcl9yZWFkKHZvaWQg Km9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCiB7CiAgICAgc3RydWN0IG9tYXBfMzJr aHpfdGltZXJfcyAqcyA9IChzdHJ1Y3Qgb21hcF8zMmtoel90aW1lcl9zICopIG9wYXF1ZTsKLSAg ICBpbnQgb2Zmc2V0ID0gYWRkciAmIE9NQVBfTVBVSV9SRUdfTUFTSzsKKyAgICBpbnQgb2Zmc2V0 ID0gYWRkcjsKIAogICAgIHN3aXRjaCAob2Zmc2V0KSB7CiAgICAgY2FzZSAweDAwOgkvKiBUVlIg Ki8KQEAgLTk5Niw3ICs5OTYsNyBAQAogICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbHVlKQog ewogICAgIHN0cnVjdCBvbWFwXzMya2h6X3RpbWVyX3MgKnMgPSAoc3RydWN0IG9tYXBfMzJraHpf dGltZXJfcyAqKSBvcGFxdWU7Ci0gICAgaW50IG9mZnNldCA9IGFkZHIgJiBPTUFQX01QVUlfUkVH X01BU0s7CisgICAgaW50IG9mZnNldCA9IGFkZHI7CiAKICAgICBzd2l0Y2ggKG9mZnNldCkgewog ICAgIGNhc2UgMHgwMDoJLyogVFZSICovCkBAIC0yNTc2LDcgKzI1NzYsNyBAQAogc3RhdGljIHVp bnQzMl90IG9tYXBfbXB1aW9fcmVhZCh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBh ZGRyKQogewogICAgIHN0cnVjdCBvbWFwX21wdWlvX3MgKnMgPSAoc3RydWN0IG9tYXBfbXB1aW9f cyAqKSBvcGFxdWU7Ci0gICAgaW50IG9mZnNldCA9IGFkZHIgJiBPTUFQX01QVUlfUkVHX01BU0s7 CisgICAgaW50IG9mZnNldCA9IGFkZHI7CiAgICAgdWludDE2X3QgcmV0OwogCiAgICAgc3dpdGNo IChvZmZzZXQpIHsKQEAgLTI2MzIsNyArMjYzMiw3IEBACiAgICAgICAgICAgICAgICAgdWludDMy X3QgdmFsdWUpCiB7CiAgICAgc3RydWN0IG9tYXBfbXB1aW9fcyAqcyA9IChzdHJ1Y3Qgb21hcF9t cHVpb19zICopIG9wYXF1ZTsKLSAgICBpbnQgb2Zmc2V0ID0gYWRkciAmIE9NQVBfTVBVSV9SRUdf TUFTSzsKKyAgICBpbnQgb2Zmc2V0ID0gYWRkcjsKICAgICB1aW50MTZfdCBkaWZmOwogICAgIGlu dCBsbjsKIApAQCAtMzAxMCw3ICszMDEwLDcgQEAKIHN0YXRpYyB1aW50MzJfdCBvbWFwX3V3aXJl X3JlYWQodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKIHsKICAgICBzdHJ1 Y3Qgb21hcF91d2lyZV9zICpzID0gKHN0cnVjdCBvbWFwX3V3aXJlX3MgKikgb3BhcXVlOwotICAg IGludCBvZmZzZXQgPSBhZGRyICYgT01BUF9NUFVJX1JFR19NQVNLOworICAgIGludCBvZmZzZXQg PSBhZGRyOwogCiAgICAgc3dpdGNoIChvZmZzZXQpIHsKICAgICBjYXNlIDB4MDA6CS8qIFJEUiAq LwpAQCAtMzA0MCw3ICszMDQwLDcgQEAKICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSkK IHsKICAgICBzdHJ1Y3Qgb21hcF91d2lyZV9zICpzID0gKHN0cnVjdCBvbWFwX3V3aXJlX3MgKikg b3BhcXVlOwotICAgIGludCBvZmZzZXQgPSBhZGRyICYgT01BUF9NUFVJX1JFR19NQVNLOworICAg IGludCBvZmZzZXQgPSBhZGRyOwogCiAgICAgc3dpdGNoIChvZmZzZXQpIHsKICAgICBjYXNlIDB4 MDA6CS8qIFREUiAqLwpAQCAtMzE1MSw3ICszMTUxLDcgQEAKIHN0YXRpYyB1aW50MzJfdCBvbWFw X3B3bF9yZWFkKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCiB7CiAgICAg c3RydWN0IG9tYXBfbXB1X3N0YXRlX3MgKnMgPSAoc3RydWN0IG9tYXBfbXB1X3N0YXRlX3MgKikg b3BhcXVlOwotICAgIGludCBvZmZzZXQgPSBhZGRyICYgT01BUF9NUFVJX1JFR19NQVNLOworICAg IGludCBvZmZzZXQgPSBhZGRyOwogCiAgICAgc3dpdGNoIChvZmZzZXQpIHsKICAgICBjYXNlIDB4 MDA6CS8qIFBXTF9MRVZFTCAqLwpAQCAtMzE2Nyw3ICszMTY3LDcgQEAKICAgICAgICAgICAgICAg ICB1aW50MzJfdCB2YWx1ZSkKIHsKICAgICBzdHJ1Y3Qgb21hcF9tcHVfc3RhdGVfcyAqcyA9IChz dHJ1Y3Qgb21hcF9tcHVfc3RhdGVfcyAqKSBvcGFxdWU7Ci0gICAgaW50IG9mZnNldCA9IGFkZHIg JiBPTUFQX01QVUlfUkVHX01BU0s7CisgICAgaW50IG9mZnNldCA9IGFkZHI7CiAKICAgICBzd2l0 Y2ggKG9mZnNldCkgewogICAgIGNhc2UgMHgwMDoJLyogUFdMX0xFVkVMICovCkBAIC0zMjMxLDcg KzMyMzEsNyBAQAogc3RhdGljIHVpbnQzMl90IG9tYXBfcHd0X3JlYWQodm9pZCAqb3BhcXVlLCB0 YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKIHsKICAgICBzdHJ1Y3Qgb21hcF9tcHVfc3RhdGVfcyAq cyA9IChzdHJ1Y3Qgb21hcF9tcHVfc3RhdGVfcyAqKSBvcGFxdWU7Ci0gICAgaW50IG9mZnNldCA9 IGFkZHIgJiBPTUFQX01QVUlfUkVHX01BU0s7CisgICAgaW50IG9mZnNldCA9IGFkZHI7CiAKICAg ICBzd2l0Y2ggKG9mZnNldCkgewogICAgIGNhc2UgMHgwMDoJLyogRlJDICovCkBAIC0zMjQ5LDcg KzMyNDksNyBAQAogICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbHVlKQogewogICAgIHN0cnVj dCBvbWFwX21wdV9zdGF0ZV9zICpzID0gKHN0cnVjdCBvbWFwX21wdV9zdGF0ZV9zICopIG9wYXF1 ZTsKLSAgICBpbnQgb2Zmc2V0ID0gYWRkciAmIE9NQVBfTVBVSV9SRUdfTUFTSzsKKyAgICBpbnQg b2Zmc2V0ID0gYWRkcjsKIAogICAgIHN3aXRjaCAob2Zmc2V0KSB7CiAgICAgY2FzZSAweDAwOgkv KiBGUkMgKi8KQEAgLTMzNjcsNyArMzM2Nyw3IEBACiBzdGF0aWMgdWludDMyX3Qgb21hcF9ydGNf cmVhZCh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQogewogICAgIHN0cnVj dCBvbWFwX3J0Y19zICpzID0gKHN0cnVjdCBvbWFwX3J0Y19zICopIG9wYXF1ZTsKLSAgICBpbnQg b2Zmc2V0ID0gYWRkciAmIE9NQVBfTVBVSV9SRUdfTUFTSzsKKyAgICBpbnQgb2Zmc2V0ID0gYWRk cjsKICAgICB1aW50OF90IGk7CiAKICAgICBzd2l0Y2ggKG9mZnNldCkgewpAQCAtMzQ0NSw3ICsz NDQ1LDcgQEAKICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSkKIHsKICAgICBzdHJ1Y3Qg b21hcF9ydGNfcyAqcyA9IChzdHJ1Y3Qgb21hcF9ydGNfcyAqKSBvcGFxdWU7Ci0gICAgaW50IG9m ZnNldCA9IGFkZHIgJiBPTUFQX01QVUlfUkVHX01BU0s7CisgICAgaW50IG9mZnNldCA9IGFkZHI7 CiAgICAgc3RydWN0IHRtIG5ld190bTsKICAgICB0aW1lX3QgdGlbMl07CiAKQEAgLTM5NTMsNyAr Mzk1Myw3IEBACiBzdGF0aWMgdWludDMyX3Qgb21hcF9tY2JzcF9yZWFkKHZvaWQgKm9wYXF1ZSwg dGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCiB7CiAgICAgc3RydWN0IG9tYXBfbWNic3BfcyAqcyA9 IChzdHJ1Y3Qgb21hcF9tY2JzcF9zICopIG9wYXF1ZTsKLSAgICBpbnQgb2Zmc2V0ID0gYWRkciAm IE9NQVBfTVBVSV9SRUdfTUFTSzsKKyAgICBpbnQgb2Zmc2V0ID0gYWRkcjsKICAgICB1aW50MTZf dCByZXQ7CiAKICAgICBzd2l0Y2ggKG9mZnNldCkgewpAQCAtNDA0Nyw3ICs0MDQ3LDcgQEAKICAg ICAgICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSkKIHsKICAgICBzdHJ1Y3Qgb21hcF9tY2JzcF9z ICpzID0gKHN0cnVjdCBvbWFwX21jYnNwX3MgKikgb3BhcXVlOwotICAgIGludCBvZmZzZXQgPSBh ZGRyICYgT01BUF9NUFVJX1JFR19NQVNLOworICAgIGludCBvZmZzZXQgPSBhZGRyOwogCiAgICAg c3dpdGNoIChvZmZzZXQpIHsKICAgICBjYXNlIDB4MDA6CS8qIERSUjIgKi8KQEAgLTQxODUsNyAr NDE4NSw3IEBACiAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFsdWUpCiB7CiAgICAgc3RydWN0 IG9tYXBfbWNic3BfcyAqcyA9IChzdHJ1Y3Qgb21hcF9tY2JzcF9zICopIG9wYXF1ZTsKLSAgICBp bnQgb2Zmc2V0ID0gYWRkciAmIE9NQVBfTVBVSV9SRUdfTUFTSzsKKyAgICBpbnQgb2Zmc2V0ID0g YWRkcjsKIAogICAgIGlmIChvZmZzZXQgPT0gMHgwNCkgewkJCQkvKiBEWFIgKi8KICAgICAgICAg aWYgKCgocy0+eGNyWzBdID4+IDUpICYgNykgPCAzKQkJCS8qIFhXRExFTjEgKi8KQEAgLTQzNjEs NyArNDM2MSw3IEBACiBzdGF0aWMgdWludDMyX3Qgb21hcF9scGdfcmVhZCh2b2lkICpvcGFxdWUs IHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQogewogICAgIHN0cnVjdCBvbWFwX2xwZ19zICpzID0g KHN0cnVjdCBvbWFwX2xwZ19zICopIG9wYXF1ZTsKLSAgICBpbnQgb2Zmc2V0ID0gYWRkciAmIE9N QVBfTVBVSV9SRUdfTUFTSzsKKyAgICBpbnQgb2Zmc2V0ID0gYWRkcjsKIAogICAgIHN3aXRjaCAo b2Zmc2V0KSB7CiAgICAgY2FzZSAweDAwOgkvKiBMQ1IgKi8KQEAgLTQzNzksNyArNDM3OSw3IEBA CiAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFsdWUpCiB7CiAgICAgc3RydWN0IG9tYXBfbHBn X3MgKnMgPSAoc3RydWN0IG9tYXBfbHBnX3MgKikgb3BhcXVlOwotICAgIGludCBvZmZzZXQgPSBh ZGRyICYgT01BUF9NUFVJX1JFR19NQVNLOworICAgIGludCBvZmZzZXQgPSBhZGRyOwogCiAgICAg c3dpdGNoIChvZmZzZXQpIHsKICAgICBjYXNlIDB4MDA6CS8qIExDUiAqLwpJbmRleDogcWVtdS9o dy9vcGVucGljLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L29wZW5waWMuYwkyMDA4LTEy LTA3IDE0OjU4OjA2LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9vcGVucGljLmMJMjAwOC0x Mi0wNyAxNDo1ODoxMi4wMDAwMDAwMDAgKzAwMDAKQEAgLTkyMCw3ICs5MjAsNiBAQAogewogICAg IG9wZW5waWNfdCAqb3BwID0gb3BhcXVlOwogCi0gICAgYWRkciAmPSAweDNGRkZGOwogICAgIERQ UklOVEYoIiVzOiBvZmZzZXQgJTA4eCB2YWw6ICUwOHhcbiIsIF9fZnVuY19fLCAoaW50KWFkZHIs IHZhbCk7CiAgICAgaWYgKGFkZHIgPCAweDExMDApIHsKICAgICAgICAgLyogR2xvYmFsIHJlZ2lz dGVycyAqLwpAQCAtOTQyLDcgKzk0MSw2IEBACiAgICAgb3BlbnBpY190ICpvcHAgPSBvcGFxdWU7 CiAgICAgdWludDMyX3QgcmV0dmFsOwogCi0gICAgYWRkciAmPSAweDNGRkZGOwogICAgIERQUklO VEYoIiVzOiBvZmZzZXQgJTA4eFxuIiwgX19mdW5jX18sIChpbnQpYWRkcik7CiAgICAgaWYgKGFk ZHIgPCAweDExMDApIHsKICAgICAgICAgLyogR2xvYmFsIHJlZ2lzdGVycyAqLwpJbmRleDogcWVt dS9ody9wY25ldC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9wY25ldC5jCTIwMDgtMTIt MDcgMTQ6NTg6MDguMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3BjbmV0LmMJMjAwOC0xMi0w NyAxNDo1ODoxMi4wMDAwMDAwMDAgKzAwMDAKQEAgLTE4MDIsNyArMTgwMiw2IEBACiAgICAgaWYg KGFkZHIgJiAweDEwKQogICAgICAgICBwY25ldF9pb3BvcnRfd3JpdGV3KGQsIGFkZHIgJiAweDBm LCB2YWwpOwogICAgIGVsc2UgewotICAgICAgICBhZGRyICY9IDB4MGY7CiAgICAgICAgIHBjbmV0 X2Fwcm9tX3dyaXRlYihkLCBhZGRyLCB2YWwgJiAweGZmKTsKICAgICAgICAgcGNuZXRfYXByb21f d3JpdGViKGQsIGFkZHIrMSwgKHZhbCAmIDB4ZmYwMCkgPj4gOCk7CiAgICAgfQpAQCAtMTgxNSw3 ICsxODE0LDYgQEAKICAgICBpZiAoYWRkciAmIDB4MTApCiAgICAgICAgIHZhbCA9IHBjbmV0X2lv cG9ydF9yZWFkdyhkLCBhZGRyICYgMHgwZik7CiAgICAgZWxzZSB7Ci0gICAgICAgIGFkZHIgJj0g MHgwZjsKICAgICAgICAgdmFsID0gcGNuZXRfYXByb21fcmVhZGIoZCwgYWRkcisxKTsKICAgICAg ICAgdmFsIDw8PSA4OwogICAgICAgICB2YWwgfD0gcGNuZXRfYXByb21fcmVhZGIoZCwgYWRkcik7 CkBAIC0xODM3LDcgKzE4MzUsNiBAQAogICAgIGlmIChhZGRyICYgMHgxMCkKICAgICAgICAgcGNu ZXRfaW9wb3J0X3dyaXRlbChkLCBhZGRyICYgMHgwZiwgdmFsKTsKICAgICBlbHNlIHsKLSAgICAg ICAgYWRkciAmPSAweDBmOwogICAgICAgICBwY25ldF9hcHJvbV93cml0ZWIoZCwgYWRkciwgdmFs ICYgMHhmZik7CiAgICAgICAgIHBjbmV0X2Fwcm9tX3dyaXRlYihkLCBhZGRyKzEsICh2YWwgJiAw eGZmMDApID4+IDgpOwogICAgICAgICBwY25ldF9hcHJvbV93cml0ZWIoZCwgYWRkcisyLCAodmFs ICYgMHhmZjAwMDApID4+IDE2KTsKQEAgLTE4NTIsNyArMTg0OSw2IEBACiAgICAgaWYgKGFkZHIg JiAweDEwKQogICAgICAgICB2YWwgPSBwY25ldF9pb3BvcnRfcmVhZGwoZCwgYWRkciAmIDB4MGYp OwogICAgIGVsc2UgewotICAgICAgICBhZGRyICY9IDB4MGY7CiAgICAgICAgIHZhbCA9IHBjbmV0 X2Fwcm9tX3JlYWRiKGQsIGFkZHIrMyk7CiAgICAgICAgIHZhbCA8PD0gODsKICAgICAgICAgdmFs IHw9IHBjbmV0X2Fwcm9tX3JlYWRiKGQsIGFkZHIrMik7CkluZGV4OiBxZW11L2h3L3BsMDExLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L3BsMDExLmMJMjAwOC0xMi0wNyAxNDo1ODowNy4w MDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvcGwwMTEuYwkyMDA4LTEyLTA3IDE0OjU4OjEyLjAw MDAwMDAwMCArMDAwMApAQCAtNTgsNyArNTgsNyBAQAogICAgIHBsMDExX3N0YXRlICpzID0gKHBs MDExX3N0YXRlICopb3BhcXVlOwogICAgIHVpbnQzMl90IGM7CiAKLSAgICBpZiAob2Zmc2V0ID49 IDB4ZmUwICYmIG9mZnNldCA8IDB4MTAwMCkgeworICAgIGlmIChvZmZzZXQgPj0gMHhmZTApIHsK ICAgICAgICAgcmV0dXJuIHBsMDExX2lkW3MtPnR5cGVdWyhvZmZzZXQgLSAweGZlMCkgPj4gMl07 CiAgICAgfQogICAgIHN3aXRjaCAob2Zmc2V0ID4+IDIpIHsKSW5kZXg6IHFlbXUvaHcvcGwwMjIu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvcGwwMjIuYwkyMDA4LTEyLTA3IDE0OjU4OjA3 LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9wbDAyMi5jCTIwMDgtMTItMDcgMTQ6NTg6MTIu MDAwMDAwMDAwICswMDAwCkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICBwbDAyMl9zdGF0ZSAqcyA9 IChwbDAyMl9zdGF0ZSAqKW9wYXF1ZTsKICAgICBpbnQgdmFsOwogCi0gICAgaWYgKG9mZnNldCA+ PSAweGZlMCAmJiBvZmZzZXQgPCAweDEwMDApIHsKKyAgICBpZiAob2Zmc2V0ID49IDB4ZmUwKSB7 CiAgICAgICAgIHJldHVybiBwbDAyMl9pZFsob2Zmc2V0IC0gMHhmZTApID4+IDJdOwogICAgIH0K ICAgICBzd2l0Y2ggKG9mZnNldCkgewpJbmRleDogcWVtdS9ody9wbDAzMS5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHFlbXUub3JpZy9ody9wbDAzMS5jCTIwMDgtMTItMDcgMTQ6NTg6MDguMDAwMDAwMDAwICsw MDAwCisrKyBxZW11L2h3L3BsMDMxLmMJMjAwOC0xMi0wNyAxNDo1ODoxMi4wMDAwMDAwMDAgKzAw MDAKQEAgLTk2LDcgKzk2LDcgQEAKIHsKICAgICBwbDAzMV9zdGF0ZSAqcyA9IChwbDAzMV9zdGF0 ZSAqKW9wYXF1ZTsKIAotICAgIGlmIChvZmZzZXQgPj0gMHhmZTAgICYmICBvZmZzZXQgPCAweDEw MDApCisgICAgaWYgKG9mZnNldCA+PSAweGZlMCkKICAgICAgICAgcmV0dXJuIHBsMDMxX2lkWyhv ZmZzZXQgLSAweGZlMCkgPj4gMl07CiAKICAgICBzd2l0Y2ggKG9mZnNldCkgewpJbmRleDogcWVt dS9ody9wbDA1MC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9wbDA1MC5jCTIwMDgtMTIt MDcgMTQ6NTg6MDcuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3BsMDUwLmMJMjAwOC0xMi0w NyAxNDo1ODoxMi4wMDAwMDAwMDAgKzAwMDAKQEAgLTQ2LDcgKzQ2LDcgQEAKIHN0YXRpYyB1aW50 MzJfdCBwbDA1MF9yZWFkKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IG9mZnNldCkK IHsKICAgICBwbDA1MF9zdGF0ZSAqcyA9IChwbDA1MF9zdGF0ZSAqKW9wYXF1ZTsKLSAgICBpZiAo b2Zmc2V0ID49IDB4ZmUwICYmIG9mZnNldCA8IDB4MTAwMCkKKyAgICBpZiAob2Zmc2V0ID49IDB4 ZmUwKQogICAgICAgICByZXR1cm4gcGwwNTBfaWRbKG9mZnNldCAtIDB4ZmUwKSA+PiAyXTsKIAog ICAgIHN3aXRjaCAob2Zmc2V0ID4+IDIpIHsKSW5kZXg6IHFlbXUvaHcvcGwwNjEuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBxZW11Lm9yaWcvaHcvcGwwNjEuYwkyMDA4LTEyLTA3IDE0OjU4OjA3LjAwMDAwMDAw MCArMDAwMAorKysgcWVtdS9ody9wbDA2MS5jCTIwMDgtMTItMDcgMTQ6NTg6MTIuMDAwMDAwMDAw ICswMDAwCkBAIC04Miw3ICs4Miw3IEBACiB7CiAgICAgcGwwNjFfc3RhdGUgKnMgPSAocGwwNjFf c3RhdGUgKilvcGFxdWU7CiAKLSAgICBpZiAob2Zmc2V0ID49IDB4ZmQwICYmIG9mZnNldCA8IDB4 MTAwMCkgeworICAgIGlmIChvZmZzZXQgPj0gMHhmZDApIHsKICAgICAgICAgcmV0dXJuIHBsMDYx X2lkWyhvZmZzZXQgLSAweGZkMCkgPj4gMl07CiAgICAgfQogICAgIGlmIChvZmZzZXQgPCAweDQw MCkgewpJbmRleDogcWVtdS9ody9wbDA4MC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9w bDA4MC5jCTIwMDgtMTItMDcgMTQ6NTg6MDguMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3Bs MDgwLmMJMjAwOC0xMi0wNyAxNDo1ODoxMi4wMDAwMDAwMDAgKzAwMDAKQEAgLTE4Niw3ICsxODYs NyBAQAogICAgIHVpbnQzMl90IGk7CiAgICAgdWludDMyX3QgbWFzazsKIAotICAgIGlmIChvZmZz ZXQgPj0gMHhmZTAgJiYgb2Zmc2V0IDwgMHgxMDAwKSB7CisgICAgaWYgKG9mZnNldCA+PSAweGZl MCkgewogICAgICAgICBpZiAocy0+bmNoYW5uZWxzID09IDgpIHsKICAgICAgICAgICAgIHJldHVy biBwbDA4MF9pZFsob2Zmc2V0IC0gMHhmZTApID4+IDJdOwogICAgICAgICB9IGVsc2UgewpJbmRl eDogcWVtdS9ody9wbDExMC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9wbDExMC5jCTIw MDgtMTItMDcgMTQ6NTg6MDcuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3BsMTEwLmMJMjAw OC0xMi0wNyAxNDo1ODoxMi4wMDAwMDAwMDAgKzAwMDAKQEAgLTI4OCw3ICsyODgsNyBAQAogewog ICAgIHBsMTEwX3N0YXRlICpzID0gKHBsMTEwX3N0YXRlICopb3BhcXVlOwogCi0gICAgaWYgKG9m ZnNldCA+PSAweGZlMCAmJiBvZmZzZXQgPCAweDEwMDApIHsKKyAgICBpZiAob2Zmc2V0ID49IDB4 ZmUwKSB7CiAgICAgICAgIGlmIChzLT52ZXJzYXRpbGUpCiAgICAgICAgICAgICByZXR1cm4gcGwx MTBfdmVyc2F0aWxlX2lkWyhvZmZzZXQgLSAweGZlMCkgPj4gMl07CiAgICAgICAgIGVsc2UKSW5k ZXg6IHFlbXUvaHcvcGwxODEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvcGwxODEuYwky MDA4LTEyLTA3IDE0OjU4OjA4LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9wbDE4MS5jCTIw MDgtMTItMDcgMTQ6NTg6MTIuMDAwMDAwMDAwICswMDAwCkBAIC0yNjAsNyArMjYwLDcgQEAKICAg ICBwbDE4MV9zdGF0ZSAqcyA9IChwbDE4MV9zdGF0ZSAqKW9wYXF1ZTsKICAgICB1aW50MzJfdCB0 bXA7CiAKLSAgICBpZiAob2Zmc2V0ID49IDB4ZmUwICYmIG9mZnNldCA8IDB4MTAwMCkgeworICAg IGlmIChvZmZzZXQgPj0gMHhmZTApIHsKICAgICAgICAgcmV0dXJuIHBsMTgxX2lkWyhvZmZzZXQg LSAweGZlMCkgPj4gMl07CiAgICAgfQogICAgIHN3aXRjaCAob2Zmc2V0KSB7CkluZGV4OiBxZW11 L2h3L3BsMTkwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L3BsMTkwLmMJMjAwOC0xMi0w NyAxNDo1ODowNy4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvcGwxOTAuYwkyMDA4LTEyLTA3 IDE0OjU4OjEyLjAwMDAwMDAwMCArMDAwMApAQCAtOTEsNyArOTEsNyBAQAogICAgIHBsMTkwX3N0 YXRlICpzID0gKHBsMTkwX3N0YXRlICopb3BhcXVlOwogICAgIGludCBpOwogCi0gICAgaWYgKG9m ZnNldCA+PSAweGZlMCAmJiBvZmZzZXQgPCAweDEwMDApIHsKKyAgICBpZiAob2Zmc2V0ID49IDB4 ZmUwKSB7CiAgICAgICAgIHJldHVybiBwbDE5MF9pZFsob2Zmc2V0IC0gMHhmZTApID4+IDJdOwog ICAgIH0KICAgICBpZiAob2Zmc2V0ID49IDB4MTAwICYmIG9mZnNldCA8IDB4MTQwKSB7CkluZGV4 OiBxZW11L2h3L3BwY19wcmVwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L3BwY19wcmVw LmMJMjAwOC0xMi0wNyAxNDo1ODowOC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvcHBjX3By ZXAuYwkyMDA4LTEyLTA3IDE0OjU4OjEyLjAwMDAwMDAwMCArMDAwMApAQCAtMTIyLDcgKzEyMiw3 IEBACiB7CiAgICAgdWludDMyX3QgcmV0dmFsID0gMDsKIAotICAgIGlmICgoYWRkciAmIDB4Zikg PT0gMCkKKyAgICBpZiAoYWRkciA9PSAwKQogICAgICAgICByZXR2YWwgPSBwaWNfaW50YWNrX3Jl YWQoaXNhX3BpYyk7CiAvLyAgIHByaW50ZigiJXM6IDB4IiBQQUREUlggIiA8PSAlMDgiIFBSSXgz MiAiXG4iLCBfX2Z1bmNfXywgYWRkciwgcmV0dmFsKTsKIApJbmRleDogcWVtdS9ody9yYzQwMzAu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvcmM0MDMwLmMJMjAwOC0xMi0wNyAxNDo1ODow OC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvcmM0MDMwLmMJMjAwOC0xMi0wNyAxNDo1ODox Mi4wMDAwMDAwMDAgKzAwMDAKQEAgLTgzLDcgKzgzLDYgQEAKICAgICByYzQwMzBTdGF0ZSAqcyA9 IG9wYXF1ZTsKICAgICB1aW50MzJfdCB2YWw7CiAKLSAgICBhZGRyICY9IDB4M2ZmZjsKICAgICBz d2l0Y2ggKGFkZHIgJiB+MHgzKSB7CiAgICAgLyogR2xvYmFsIGNvbmZpZyByZWdpc3RlciAqLwog ICAgIGNhc2UgMHgwMDAwOgpAQCAtMjI4LDcgKzIyNyw2IEBACiBzdGF0aWMgdm9pZCByYzQwMzBf d3JpdGVsKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHVpbnQzMl90IHZh bCkKIHsKICAgICByYzQwMzBTdGF0ZSAqcyA9IG9wYXF1ZTsKLSAgICBhZGRyICY9IDB4M2ZmZjsK IAogI2lmZGVmIERFQlVHX1JDNDAzMAogICAgIHByaW50ZigicmM0MDMwOiB3cml0ZSAweCUwMngg YXQgIiBUQVJHRVRfRk1UX2x4ICJcbiIsIHZhbCwgYWRkcik7CkBAIC00NDYsNyArNDQ0LDYgQEAK ICAgICByYzQwMzBTdGF0ZSAqcyA9IG9wYXF1ZTsKICAgICB1aW50MzJfdCB2YWw7CiAgICAgdWlu dDMyX3QgaXJxOwotICAgIGFkZHIgJj0gMHhmZmY7CiAKICAgICBzd2l0Y2ggKGFkZHIpIHsKICAg ICBjYXNlIDB4MDA6IHsKQEAgLTUwMCw3ICs0OTcsNiBAQAogc3RhdGljIHZvaWQgaW50X3dyaXRl Yih2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiB7 CiAgICAgcmM0MDMwU3RhdGUgKnMgPSBvcGFxdWU7Ci0gICAgYWRkciAmPSAweGZmZjsKIAogI2lm ZGVmIERFQlVHX1JDNDAzMAogICAgIHByaW50ZigicmM0MDMwOiAoaW50ZXJydXB0IGNvbnRyb2xs ZXIpIHdyaXRlIDB4JTAyeCBhdCAiIFRBUkdFVF9GTVRfbHggIlxuIiwgdmFsLCBhZGRyKTsKSW5k ZXg6IHFlbXUvaHcvcnRsODEzOS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9ydGw4MTM5 LmMJMjAwOC0xMi0wNyAxNDo1ODowNy4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvcnRsODEz OS5jCTIwMDgtMTItMDcgMTQ6NTg6MTIuMDAwMDAwMDAwICswMDAwCkBAIC0zMDMwLDM5ICszMDMw LDM5IEBACiAKIHN0YXRpYyB2b2lkIHJ0bDgxMzlfaW9wb3J0X3dyaXRlYih2b2lkICpvcGFxdWUs IHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCkKIHsKLSAgICBydGw4MTM5X2lvX3dyaXRlYihv cGFxdWUsIGFkZHIgJiAweEZGLCB2YWwpOworICAgIHJ0bDgxMzlfaW9fd3JpdGViKG9wYXF1ZSwg YWRkciwgdmFsKTsKIH0KIAogc3RhdGljIHZvaWQgcnRsODEzOV9pb3BvcnRfd3JpdGV3KHZvaWQg Km9wYXF1ZSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQogewotICAgIHJ0bDgxMzlfaW9f d3JpdGV3KG9wYXF1ZSwgYWRkciAmIDB4RkYsIHZhbCk7CisgICAgcnRsODEzOV9pb193cml0ZXco b3BhcXVlLCBhZGRyLCB2YWwpOwogfQogCiBzdGF0aWMgdm9pZCBydGw4MTM5X2lvcG9ydF93cml0 ZWwodm9pZCAqb3BhcXVlLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiB7Ci0gICAgcnRs ODEzOV9pb193cml0ZWwob3BhcXVlLCBhZGRyICYgMHhGRiwgdmFsKTsKKyAgICBydGw4MTM5X2lv X3dyaXRlbChvcGFxdWUsIGFkZHIsIHZhbCk7CiB9CiAKIHN0YXRpYyB1aW50MzJfdCBydGw4MTM5 X2lvcG9ydF9yZWFkYih2b2lkICpvcGFxdWUsIHVpbnQzMl90IGFkZHIpCiB7Ci0gICAgcmV0dXJu IHJ0bDgxMzlfaW9fcmVhZGIob3BhcXVlLCBhZGRyICYgMHhGRik7CisgICAgcmV0dXJuIHJ0bDgx MzlfaW9fcmVhZGIob3BhcXVlLCBhZGRyKTsKIH0KIAogc3RhdGljIHVpbnQzMl90IHJ0bDgxMzlf aW9wb3J0X3JlYWR3KHZvaWQgKm9wYXF1ZSwgdWludDMyX3QgYWRkcikKIHsKLSAgICByZXR1cm4g cnRsODEzOV9pb19yZWFkdyhvcGFxdWUsIGFkZHIgJiAweEZGKTsKKyAgICByZXR1cm4gcnRsODEz OV9pb19yZWFkdyhvcGFxdWUsIGFkZHIpOwogfQogCiBzdGF0aWMgdWludDMyX3QgcnRsODEzOV9p b3BvcnRfcmVhZGwodm9pZCAqb3BhcXVlLCB1aW50MzJfdCBhZGRyKQogewotICAgIHJldHVybiBy dGw4MTM5X2lvX3JlYWRsKG9wYXF1ZSwgYWRkciAmIDB4RkYpOworICAgIHJldHVybiBydGw4MTM5 X2lvX3JlYWRsKG9wYXF1ZSwgYWRkcik7CiB9CiAKIC8qICovCiAKIHN0YXRpYyB2b2lkIHJ0bDgx MzlfbW1pb193cml0ZWIodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgdWlu dDMyX3QgdmFsKQogewotICAgIHJ0bDgxMzlfaW9fd3JpdGViKG9wYXF1ZSwgYWRkciAmIDB4RkYs IHZhbCk7CisgICAgcnRsODEzOV9pb193cml0ZWIob3BhcXVlLCBhZGRyLCB2YWwpOwogfQogCiBz dGF0aWMgdm9pZCBydGw4MTM5X21taW9fd3JpdGV3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNf YWRkcl90IGFkZHIsIHVpbnQzMl90IHZhbCkKQEAgLTMwNzAsNyArMzA3MCw3IEBACiAjaWZkZWYg VEFSR0VUX1dPUkRTX0JJR0VORElBTgogICAgIHZhbCA9IGJzd2FwMTYodmFsKTsKICNlbmRpZgot ICAgIHJ0bDgxMzlfaW9fd3JpdGV3KG9wYXF1ZSwgYWRkciAmIDB4RkYsIHZhbCk7CisgICAgcnRs ODEzOV9pb193cml0ZXcob3BhcXVlLCBhZGRyLCB2YWwpOwogfQogCiBzdGF0aWMgdm9pZCBydGw4 MTM5X21taW9fd3JpdGVsKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHVp bnQzMl90IHZhbCkKQEAgLTMwNzgsMTcgKzMwNzgsMTcgQEAKICNpZmRlZiBUQVJHRVRfV09SRFNf QklHRU5ESUFOCiAgICAgdmFsID0gYnN3YXAzMih2YWwpOwogI2VuZGlmCi0gICAgcnRsODEzOV9p b193cml0ZWwob3BhcXVlLCBhZGRyICYgMHhGRiwgdmFsKTsKKyAgICBydGw4MTM5X2lvX3dyaXRl bChvcGFxdWUsIGFkZHIsIHZhbCk7CiB9CiAKIHN0YXRpYyB1aW50MzJfdCBydGw4MTM5X21taW9f cmVhZGIodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKIHsKLSAgICByZXR1 cm4gcnRsODEzOV9pb19yZWFkYihvcGFxdWUsIGFkZHIgJiAweEZGKTsKKyAgICByZXR1cm4gcnRs ODEzOV9pb19yZWFkYihvcGFxdWUsIGFkZHIpOwogfQogCiBzdGF0aWMgdWludDMyX3QgcnRsODEz OV9tbWlvX3JlYWR3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCiB7Ci0g ICAgdWludDMyX3QgdmFsID0gcnRsODEzOV9pb19yZWFkdyhvcGFxdWUsIGFkZHIgJiAweEZGKTsK KyAgICB1aW50MzJfdCB2YWwgPSBydGw4MTM5X2lvX3JlYWR3KG9wYXF1ZSwgYWRkcik7CiAjaWZk ZWYgVEFSR0VUX1dPUkRTX0JJR0VORElBTgogICAgIHZhbCA9IGJzd2FwMTYodmFsKTsKICNlbmRp ZgpAQCAtMzA5Nyw3ICszMDk3LDcgQEAKIAogc3RhdGljIHVpbnQzMl90IHJ0bDgxMzlfbW1pb19y ZWFkbCh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQogewotICAgIHVpbnQz Ml90IHZhbCA9IHJ0bDgxMzlfaW9fcmVhZGwob3BhcXVlLCBhZGRyICYgMHhGRik7CisgICAgdWlu dDMyX3QgdmFsID0gcnRsODEzOV9pb19yZWFkbChvcGFxdWUsIGFkZHIpOwogI2lmZGVmIFRBUkdF VF9XT1JEU19CSUdFTkRJQU4KICAgICB2YWwgPSBic3dhcDMyKHZhbCk7CiAjZW5kaWYKSW5kZXg6 IHFlbXUvaHcvc201MDEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvc201MDEuYwkyMDA4 LTEyLTA3IDE0OjU4OjA4LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9zbTUwMS5jCTIwMDgt MTItMDcgMTQ6NTg6MTIuMDAwMDAwMDAwICswMDAwCkBAIC04NTAsNyArODUwLDYgQEAKICAgICAv KiBUT0RPIDogY29uc2lkZXIgQllURS9XT1JEIGFjY2VzcyAqLwogICAgIC8qIFRPRE8gOiBjb25z aWRlciBlbmRpYW4gKi8KIAotICAgIGFzc2VydCgwIDw9IGFkZHIgJiYgYWRkciA8IDB4NDAwICog Myk7CiAgICAgcmV0dXJuICoodWludDMyX3QqKSZzLT5kY19wYWxldHRlW2FkZHJdOwogfQogCkBA IC04NjQsNyArODYzLDYgQEAKICAgICAvKiBUT0RPIDogY29uc2lkZXIgQllURS9XT1JEIGFjY2Vz cyAqLwogICAgIC8qIFRPRE8gOiBjb25zaWRlciBlbmRpYW4gKi8KIAotICAgIGFzc2VydCgwIDw9 IGFkZHIgJiYgYWRkciA8IDB4NDAwICogMyk7CiAgICAgKih1aW50MzJfdCopJnMtPmRjX3BhbGV0 dGVbYWRkcl0gPSB2YWx1ZTsKIH0KIApJbmRleDogcWVtdS9ody92Z2EuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBxZW11Lm9yaWcvaHcvdmdhLmMJMjAwOC0xMi0wNyAxNDo1ODowOC4wMDAwMDAwMDAgKzAwMDAK KysrIHFlbXUvaHcvdmdhLmMJMjAwOC0xMi0wNyAxNDo1ODoxMi4wMDAwMDAwMDAgKzAwMDAKQEAg LTcxMyw3ICs3MTMsNyBAQAogCiAgICAgLyogY29udmVydCB0byBWR0EgbWVtb3J5IG9mZnNldCAq LwogICAgIG1lbW9yeV9tYXBfbW9kZSA9IChzLT5ncls2XSA+PiAyKSAmIDM7Ci0gICAgYWRkciAm PSAweDFmZmZmOworCiAgICAgc3dpdGNoKG1lbW9yeV9tYXBfbW9kZSkgewogICAgIGNhc2UgMDoK ICAgICAgICAgYnJlYWs7CkBAIC04MDMsNyArODAzLDcgQEAKICNlbmRpZgogICAgIC8qIGNvbnZl cnQgdG8gVkdBIG1lbW9yeSBvZmZzZXQgKi8KICAgICBtZW1vcnlfbWFwX21vZGUgPSAocy0+Z3Jb Nl0gPj4gMikgJiAzOwotICAgIGFkZHIgJj0gMHgxZmZmZjsKKwogICAgIHN3aXRjaChtZW1vcnlf bWFwX21vZGUpIHsKICAgICBjYXNlIDA6CiAgICAgICAgIGJyZWFrOwo= ------=_Part_43389_22075467.1228662598206--