From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1FavRN-0000ga-JN for qemu-devel@nongnu.org; Tue, 02 May 2006 10:01:25 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1FavRJ-0000fi-Tn for qemu-devel@nongnu.org; Tue, 02 May 2006 10:01:25 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1FavRJ-0000ff-PA for qemu-devel@nongnu.org; Tue, 02 May 2006 10:01:21 -0400 Received: from [62.8.134.5] (helo=mail.sysgo.com) by monty-python.gnu.org with esmtp (Exim 4.52) id 1FavRS-0006cU-EK for qemu-devel@nongnu.org; Tue, 02 May 2006 10:01:32 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.sysgo.com (Postfix) with ESMTP id 695BEFB85F for ; Tue, 2 May 2006 16:01:17 +0200 (CEST) Received: from donald.sysgo.com (unknown [172.20.1.30]) by mail.sysgo.com (Postfix) with ESMTP id 3FEF3FB85F for ; Tue, 2 May 2006 16:01:17 +0200 (CEST) Received: from mag.sysgo.com (mag.sysgo.com [172.24.2.130]) by donald.sysgo.com (Postfix) with ESMTP id 4DD2BD0015D for ; Tue, 2 May 2006 16:01:11 +0200 (CEST) Date: Tue, 2 May 2006 16:01:11 +0200 (CEST) From: Marius Groeger Sender: mag@sysgo.com Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="413958658-1434026107-1146578471=:19632" Subject: [Qemu-devel] [PATCH][MIPS] FPU support for MIPS 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 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --413958658-1434026107-1146578471=:19632 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Hi again, again, a current version of my FPU patch for MIPS. Fabrice, I tried to implement all your suggestions you made for the previous version. The patch seems now a lot cleaner to me, easier to extend, and will now also handle IEEE single floating point (.s) format. Also, the exception handling of unimplemented arith operations/formats is now more constistent. I also verified the implementation with CONFIG_SOFTFLOAT. Regards, Marius -- Marius Groeger SYSGO AG Embedded and Real-Time Software Voice: +49 6136 9948 0 FAX: +49 6136 9948 10 www.sysgo.com | www.elinos.com | www.osek.de | www.pikeos.com --413958658-1434026107-1146578471=:19632 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=qemu-0.8.0-mips-fpu.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=qemu-0.8.0-mips-fpu.patch SW5kZXg6IHRhcmdldC1taXBzL2NwdS5oDQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQpSQ1MgZmlsZTogL3NvdXJjZXMvcWVtdS9xZW11L3RhcmdldC1taXBz L2NwdS5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS42DQpkaWZmIC11IC1y MS42IGNwdS5oDQotLS0gdGFyZ2V0LW1pcHMvY3B1LmgJMTEgTWFyIDIwMDYg MTY6MjM6MzkgLTAwMDAJMS42DQorKysgdGFyZ2V0LW1pcHMvY3B1LmgJMiBN YXkgMjAwNiAxMzo1MTozMiAtMDAwMA0KQEAgLTksMTAgKzksMTMgQEANCiAj aW5jbHVkZSAic29mdGZsb2F0LmgiDQogDQogdHlwZWRlZiB1bmlvbiBmcHJf dCBmcHJfdDsNCisNCiB1bmlvbiBmcHJfdCB7DQotICAgIGRvdWJsZSBkOw0K LSAgICBmbG9hdCAgZjsNCi0gICAgdWludDMyX3QgdVsyXTsNCisgICAgZmxv YXQ2NCBmZDsgLyogaWVlZSBkb3VibGUgcHJlY2lzaW9uICovDQorCWZsb2F0 MzIgZnM7IC8qIGllZWUgc2luZ2xlIHByZWNpc2lvbiAqLw0KKyAgICBpbnQ2 NF90IGQ7IC8qIGJpbmFyeSBzaW5nbGUgZml4ZWQtcG9pbnQgKi8NCisgICAg aW50MzJfdCB3OyAvKiBiaW5hcnkgc2luZ2xlIGZpeGVkLXBvaW50ICovDQor ICAgIHVpbnQzMl90IHUzMlsyXTsNCiB9Ow0KIA0KICNpZiBkZWZpbmVkKE1J UFNfVVNFU19SNEtfVExCKQ0KQEAgLTQzLDE2ICs0Niw0MSBAQA0KICAgICB1 aW50MzJfdCBEQ1I7IC8qID8gKi8NCiAjaWYgZGVmaW5lZChNSVBTX1VTRVNf RlBVKQ0KICAgICAvKiBGbG9hdGluZyBwb2ludCByZWdpc3RlcnMgKi8NCi0g ICAgZnByX3QgZnByWzE2XTsNCi0gICAgLyogRmxvYXRpbmcgcG9pbnQgc3Bl Y2lhbCBwdXJwb3NlIHJlZ2lzdGVycyAqLw0KKwl1aW50MzJfdCBmcHJbMioz Ml07CQ0KKyNkZWZpbmUgRlBSKGNwdSwgbiwgZm10KSAoKGZwcl90KikmKGNw dSktPmZwclsobikgJiAweDFmXSkNCisNCisjaWZuZGVmIFVTRV9IT1NUX0ZM T0FUX1JFR1MNCisgICAgZnByX3QgZnQwOw0KKyAgICBmcHJfdCBmdDE7DQor ICAgIGZwcl90IGZ0MjsNCisjZW5kaWYNCisJZmxvYXRfc3RhdHVzIGZwX3N0 YXR1czsNCisJLyogZnB1IGltcGxlbWVudGF0aW9uL3JldmlzaW9uIHJlZ2lz dGVyICovDQogICAgIHVpbnQzMl90IGZjcjA7DQotICAgIHVpbnQzMl90IGZj cjI1Ow0KLSAgICB1aW50MzJfdCBmY3IyNjsNCi0gICAgdWludDMyX3QgZmNy Mjg7DQotICAgIHVpbnQzMl90IGZjc3I7DQorCS8qIGZjc3IgKi8NCisgICAg dWludDMyX3QgZmNyMzE7DQorLyogc2V0IGNvbmRpdGlvbiwgImMiIG11c3Qg YmUgMCBvciAxICovDQorI2RlZmluZSBTRVRfRlBfQ09ORChyZWcsIGMpIGRv IHsgXA0KKwkJLyphc3NlcnQoYyA9PSAwIHx8IGMgPT0gMSk7Ki8gXA0KKwkJ KHJlZykgPSAoKHJlZykgJiB+KDE8PDIzKSkgfCAoKGMpPDwyMyk7IFwNCisJ fSB3aGlsZSgwKQ0KKyNkZWZpbmUgSVNfRlBfQ09ORF9TRVQocmVnKSAgKCgo cmVnKSAmICgxPDwyMykpICE9IDApDQorI2RlZmluZSBHRVRfRlBfQ0FVU0Uo cmVnKSAgICAoKChyZWcpID4+IDEyKSAmIDB4M2YpDQorI2RlZmluZSBHRVRf RlBfRU5BQkxFKHJlZykgICAoKChyZWcpID4+ICA3KSAmIDB4MWYpDQorI2Rl ZmluZSBHRVRfRlBfRkxBR1MocmVnKSAgICAoKChyZWcpID4+ICAyKSAmIDB4 MWYpDQorI2RlZmluZSBTRVRfRlBfQ0FVU0UocmVnLHYpICBkbyB7IChyZWcp ID0gKChyZWcpICYgfigweDNmIDw8IDEyKSkgfCAoKHYpIDw8IDEyKTsgfSB3 aGlsZSgwKQ0KKyNkZWZpbmUgU0VUX0ZQX0VOQUJMRShyZWcsdikgZG8geyAo cmVnKSA9ICgocmVnKSAmIH4oMHgxZiA8PCAgNykpIHwgKCh2KSA8PCA3KTsg fSB3aGlsZSgwKQ0KKyNkZWZpbmUgU0VUX0ZQX0ZMQUdTKHJlZyx2KSAgZG8g eyAocmVnKSA9ICgocmVnKSAmIH4oMHgxZiA8PCAgMikpIHwgKCh2KSA8PCAy KTsgfSB3aGlsZSgwKQ0KKyNkZWZpbmUgRlBfSU5FWEFDVCAgICAgICAgMQ0K KyNkZWZpbmUgRlBfVU5ERVJGTE9XICAgICAgMg0KKyNkZWZpbmUgRlBfT1ZF UkZMT1cgICAgICAgNA0KKyNkZWZpbmUgRlBfRElWMCAgICAgICAgICAgOA0K KyNkZWZpbmUgRlBfSU5WQUxJRCAgICAgICAgMTYNCisjZGVmaW5lIEZQX1VO SU1QTEVNRU5URUQgIDMyDQorCQkNCiAjZW5kaWYNCiAjaWYgZGVmaW5lZChN SVBTX1VTRVNfUjRLX1RMQikNCi0gICAgdGxiX3QgdGxiWzE2XTsNCisgICAg dGxiX3QgdGxiW01JUFNfVExCX05CXTsNCiAjZW5kaWYNCiAgICAgdWludDMy X3QgQ1AwX2luZGV4Ow0KICAgICB1aW50MzJfdCBDUDBfcmFuZG9tOw0KQEAg LTcxLDYgKzk5LDcgQEANCiAjZGVmaW5lIENQMFN0X0NVMSAgIDI5DQogI2Rl ZmluZSBDUDBTdF9DVTAgICAyOA0KICNkZWZpbmUgQ1AwU3RfUlAgICAgMjcN CisjZGVmaW5lIENQMFN0X0ZSICAgIDI2DQogI2RlZmluZSBDUDBTdF9SRSAg ICAyNQ0KICNkZWZpbmUgQ1AwU3RfQkVWICAgMjINCiAjZGVmaW5lIENQMFN0 X1RTICAgIDIxDQpAQCAtMTM4LDkgKzE2Nyw2IEBADQogICAgIHVpbnQzMl90 IENQMF9FcnJvckVQQzsNCiAgICAgdWludDMyX3QgQ1AwX0RFU0FWRTsNCiAg ICAgLyogUWVtdSAqLw0KLSNpZiBkZWZpbmVkIChVU0VfSE9TVF9GTE9BVF9S RUdTKSAmJiBkZWZpbmVkKE1JUFNfVVNFU19GUFUpDQotICAgIGRvdWJsZSBm dDAsIGZ0MSwgZnQyOw0KLSNlbmRpZg0KICAgICBzdHJ1Y3QgUUVNVVRpbWVy ICp0aW1lcjsgLyogSW50ZXJuYWwgdGltZXIgKi8NCiAgICAgaW50IGludGVy cnVwdF9yZXF1ZXN0Ow0KICAgICBqbXBfYnVmIGptcF9lbnY7DQpJbmRleDog dGFyZ2V0LW1pcHMvZXhlYy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL3NvdXJjZXMvcWVtdS9xZW11L3RhcmdldC1taXBzL2V4ZWMu aCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNw0KZGlmZiAtdSAtcjEuNyBl eGVjLmgNCi0tLSB0YXJnZXQtbWlwcy9leGVjLmgJMTEgTWFyIDIwMDYgMTU6 MDA6MDggLTAwMDAJMS43DQorKysgdGFyZ2V0LW1pcHMvZXhlYy5oCTIgTWF5 IDIwMDYgMTM6NTE6MzIgLTAwMDANCkBAIC0yMSwxMyArMjEsMjAgQEANCiBy ZWdpc3RlciBob3N0X3VpbnRfdCBUMiBhc20oQVJFRzMpOw0KIA0KICNpZiBk ZWZpbmVkIChVU0VfSE9TVF9GTE9BVF9SRUdTKQ0KLXJlZ2lzdGVyIGRvdWJs ZSBGVDAgYXNtKEZSRUcwKTsNCi1yZWdpc3RlciBkb3VibGUgRlQxIGFzbShG UkVHMSk7DQotcmVnaXN0ZXIgZG91YmxlIEZUMiBhc20oRlJFRzIpOw0KKyNl cnJvciAiaW1wbGVtZW50IG1lLiINCiAjZWxzZQ0KLSNkZWZpbmUgRlQwIChl bnYtPmZ0MC5kKQ0KLSNkZWZpbmUgRlQxIChlbnYtPmZ0MS5kKQ0KLSNkZWZp bmUgRlQyIChlbnYtPmZ0Mi5kKQ0KKyNkZWZpbmUgRkRUMCAoZW52LT5mdDAu ZmQpDQorI2RlZmluZSBGRFQxIChlbnYtPmZ0MS5mZCkNCisjZGVmaW5lIEZE VDIgKGVudi0+ZnQyLmZkKQ0KKyNkZWZpbmUgRlNUMCAoZW52LT5mdDAuZnMp DQorI2RlZmluZSBGU1QxIChlbnYtPmZ0MS5mcykNCisjZGVmaW5lIEZTVDIg KGVudi0+ZnQyLmZzKQ0KKyNkZWZpbmUgRFQwIChlbnYtPmZ0MC5kKQ0KKyNk ZWZpbmUgRFQxIChlbnYtPmZ0MS5kKQ0KKyNkZWZpbmUgRFQyIChlbnYtPmZ0 Mi5kKQ0KKyNkZWZpbmUgV1QwIChlbnYtPmZ0MC53KQ0KKyNkZWZpbmUgV1Qx IChlbnYtPmZ0MS53KQ0KKyNkZWZpbmUgV1QyIChlbnYtPmZ0Mi53KQ0KICNl bmRpZg0KIA0KICNpZiBkZWZpbmVkIChERUJVR19PUCkNCkBAIC02NSw2ICs3 MiwxMyBAQA0KIHZvaWQgZG9fdGxid3IgKHZvaWQpOw0KIHZvaWQgZG9fdGxi cCAodm9pZCk7DQogdm9pZCBkb190bGJyICh2b2lkKTsNCisjaWZkZWYgTUlQ U19VU0VTX0ZQVQ0KK3ZvaWQgZHVtcF9mcHUoQ1BVU3RhdGUgKmVudik7DQor dm9pZCBmcHVfZHVtcF9zdGF0ZShDUFVTdGF0ZSAqZW52LCBGSUxFICpmLCAN CisgICAgICAgICAgICAgICAgICAgIGludCAoKmZwdV9mcHJpbnRmKShGSUxF ICpmLCBjb25zdCBjaGFyICpmbXQsIC4uLiksDQorICAgICAgICAgICAgICAg ICAgICBpbnQgZmxhZ3MpOw0KKyNlbmRpZg0KK3ZvaWQgZHVtcF9zYyAodm9p ZCk7DQogdm9pZCBkb19sd2xfcmF3ICh1aW50MzJfdCk7DQogdm9pZCBkb19s d3JfcmF3ICh1aW50MzJfdCk7DQogdWludDMyX3QgZG9fc3dsX3JhdyAodWlu dDMyX3QpOw0KSW5kZXg6IHRhcmdldC1taXBzL21pcHMtZGVmcy5oDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3NvdXJjZXMvcWVtdS9x ZW11L3RhcmdldC1taXBzL21pcHMtZGVmcy5oLHYNCnJldHJpZXZpbmcgcmV2 aXNpb24gMS4xDQpkaWZmIC11IC1yMS4xIG1pcHMtZGVmcy5oDQotLS0gdGFy Z2V0LW1pcHMvbWlwcy1kZWZzLmgJMiBKdWwgMjAwNSAxNDo1NzoxNCAtMDAw MAkxLjENCisrKyB0YXJnZXQtbWlwcy9taXBzLWRlZnMuaAkyIE1heSAyMDA2 IDEzOjUxOjMyIC0wMDAwDQpAQCAtMjQsNiArMjQsOCBAQA0KIC8qIFVzZXMg TUlQUyBSNEtjIFRMQiBtb2RlbCAqLw0KICNkZWZpbmUgTUlQU19VU0VTX1I0 S19UTEINCiAjZGVmaW5lIE1JUFNfVExCX05CIDE2DQorLyogYmFzaWMgRlBV IHJlZ2lzdGVyIHN1cHBvcnQgKi8NCisjZGVmaW5lIE1JUFNfVVNFU19GUFUN CiAvKiBIYXZlIGNvbmZpZzEsIHJ1bnMgaW4gYmlnLWVuZGlhbiBtb2RlLCB1 c2VzIFRMQiAqLw0KICNkZWZpbmUgTUlQU19DT05GSUcwICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogKCgxIDw8IENQ MEMwX00pIHwgKDB4MDAwIDw8IENQMEMwX0syMykgfCAoMHgwMDAgPDwgQ1Aw QzBfS1UpIHwgIFwNCkBAIC01Miw3ICs1NCw3IEBADQogI2Vycm9yICJNSVBT IENQVSBub3QgZGVmaW5lZCINCiAvKiBSZW1haW5kZXIgZm9yIG90aGVyIGZs YWdzICovDQogLy8jZGVmaW5lIFRBUkdFVF9NSVBTNjQNCi0vL2RlZmluZSBN SVBTX1VTRVNfRlBVDQorLy8jZGVmaW5lIE1JUFNfVVNFU19GUFUNCiAjZW5k aWYNCiANCiAjZW5kaWYgLyogIWRlZmluZWQgKF9fUUVNVV9NSVBTX0RFRlNf SF9fKSAqLw0KSW5kZXg6IHRhcmdldC1taXBzL29wLmMNCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0NClJDUyBmaWxlOiAvc291cmNlcy9xZW11L3FlbXUvdGFy Z2V0LW1pcHMvb3AuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNw0KZGlm ZiAtdSAtcjEuNyBvcC5jDQotLS0gdGFyZ2V0LW1pcHMvb3AuYwkyMyBBcHIg MjAwNiAxNToyMzo0OCAtMDAwMAkxLjcNCisrKyB0YXJnZXQtbWlwcy9vcC5j CTIgTWF5IDIwMDYgMTM6NTE6MzIgLTAwMDANCkBAIC0yLDYgKzIsNyBAQA0K ICAqICBNSVBTIGVtdWxhdGlvbiBtaWNyby1vcGVyYXRpb25zIGZvciBxZW11 Lg0KICAqIA0KICAqICBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwNSBKb2NlbHlu IE1heWVyDQorICogIENvcHlyaWdodCAoYykgMjAwNiBNYXJpdXMgR3JvZWdl ciAoRlBVIG9wZXJhdGlvbnMpDQogICoNCiAgKiBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y DQogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYw0KQEAgLTE0OSw2ICsxNTAsMTExIEBADQog I2luY2x1ZGUgIm9wX3RlbXBsYXRlLmMiDQogI3VuZGVmIFRODQogDQorI2lm ZGVmIE1JUFNfVVNFU19GUFUNCisNCisjZGVmaW5lIEZSRUcgMA0KKyNpbmNs dWRlICJmb3BfdGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNkZWZpbmUg RlJFRyAxDQorI2luY2x1ZGUgImZvcF90ZW1wbGF0ZS5jIg0KKyN1bmRlZiBG UkVHDQorI2RlZmluZSBGUkVHIDINCisjaW5jbHVkZSAiZm9wX3RlbXBsYXRl LmMiDQorI3VuZGVmIEZSRUcNCisjZGVmaW5lIEZSRUcgMw0KKyNpbmNsdWRl ICJmb3BfdGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJF RyA0DQorI2luY2x1ZGUgImZvcF90ZW1wbGF0ZS5jIg0KKyN1bmRlZiBGUkVH DQorI2RlZmluZSBGUkVHIDUNCisjaW5jbHVkZSAiZm9wX3RlbXBsYXRlLmMi DQorI3VuZGVmIEZSRUcNCisjZGVmaW5lIEZSRUcgNg0KKyNpbmNsdWRlICJm b3BfdGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyA3 DQorI2luY2x1ZGUgImZvcF90ZW1wbGF0ZS5jIg0KKyN1bmRlZiBGUkVHDQor I2RlZmluZSBGUkVHIDgNCisjaW5jbHVkZSAiZm9wX3RlbXBsYXRlLmMiDQor I3VuZGVmIEZSRUcNCisjZGVmaW5lIEZSRUcgOQ0KKyNpbmNsdWRlICJmb3Bf dGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAxMA0K KyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNk ZWZpbmUgRlJFRyAxMQ0KKyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisj dW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAxMg0KKyNpbmNsdWRlICJmb3Bf dGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAxMw0K KyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNk ZWZpbmUgRlJFRyAxNA0KKyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisj dW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAxNQ0KKyNpbmNsdWRlICJmb3Bf dGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAxNg0K KyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNk ZWZpbmUgRlJFRyAxNw0KKyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisj dW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAxOA0KKyNpbmNsdWRlICJmb3Bf dGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAxOQ0K KyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNk ZWZpbmUgRlJFRyAyMA0KKyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisj dW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAyMQ0KKyNpbmNsdWRlICJmb3Bf dGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAyMg0K KyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNk ZWZpbmUgRlJFRyAyMw0KKyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisj dW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAyNA0KKyNpbmNsdWRlICJmb3Bf dGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAyNQ0K KyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNk ZWZpbmUgRlJFRyAyNg0KKyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisj dW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAyNw0KKyNpbmNsdWRlICJmb3Bf dGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAyOA0K KyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNk ZWZpbmUgRlJFRyAyOQ0KKyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisj dW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAzMA0KKyNpbmNsdWRlICJmb3Bf dGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKyNkZWZpbmUgRlJFRyAzMQ0K KyNpbmNsdWRlICJmb3BfdGVtcGxhdGUuYyINCisjdW5kZWYgRlJFRw0KKw0K KyNkZWZpbmUgRlRODQorI2luY2x1ZGUgImZvcF90ZW1wbGF0ZS5jIg0KKyN1 bmRlZiBGVE4NCisNCisjZW5kaWYNCisNCiB2b2lkIG9wX2R1cF9UMCAodm9p ZCkNCiB7DQogICAgIFQyID0gVDA7DQpAQCAtNTYyLDYgKzY2OCwyNTkgQEAN CiAgICAgUkVUVVJOKCk7DQogfQ0KIA0KKyNpZmRlZiBNSVBTX1VTRVNfRlBV DQorDQorI2lmIDANCisjIGRlZmluZSBERUJVR19GUFVfU1RBVEUoKSBDQUxM X0ZST01fVEIxKGR1bXBfZnB1LCBlbnYpDQorI2Vsc2UNCisjIGRlZmluZSBE RUJVR19GUFVfU1RBVEUoKSBkbyB7IH0gd2hpbGUoMCkNCisjZW5kaWYNCisN CisvKiBDUDEgZnVuY3Rpb25zICovDQordm9pZCBvcF9jZmMxICh2b2lkKQ0K K3sNCisgICAgaWYgKFQxID09IDApDQorICAgICAgICBUMCA9IGVudi0+ZmNy MDsNCisgICAgZWxzZQ0KKyAgICAgICAgVDAgPSBlbnYtPmZjcjMxOw0KKwlE RUJVR19GUFVfU1RBVEUoKTsNCisgICAgUkVUVVJOKCk7DQorfQ0KKw0KK3Zv aWQgb3BfY3RjMSAodm9pZCkNCit7DQorICAgIGlmIChUMSA9PSAwKQ0KKyAg ICAgICAgZW52LT5mY3IwID0gVDA7DQorICAgIGVsc2Ugew0KKwkJaW50IHJt Ow0KKw0KKwkJLyogc3RvcmUgbmV3IGZjcjMxLCBtYXNraW5nIHVudXNlZCBi aXRzICovCQ0KKyAgICAgICAgZW52LT5mY3IzMSA9IFQwICYgMHhmZTcwMDAw MDsNCisNCisJCS8qIHNldCByb3VuZGluZyBtb2RlICovCQ0KKwkJc3dpdGNo KGVudi0+ZmNyMzEgJiAzKSB7DQorCQkJY2FzZSAwOiBybSA9IGZsb2F0X3Jv dW5kX25lYXJlc3RfZXZlbjsgYnJlYWs7DQorCQkJY2FzZSAxOiBybSA9IGZs b2F0X3JvdW5kX3RvX3plcm87IGJyZWFrOw0KKwkJCWNhc2UgMjogcm0gPSBm bG9hdF9yb3VuZF91cDsgYnJlYWs7DQorCQkJY2FzZSAzOiBybSA9IGZsb2F0 X3JvdW5kX2Rvd247IGJyZWFrOw0KKwkJCWRlZmF1bHQ6IHJtID0gMDsJDQor CQl9DQorCQlzZXRfZmxvYXRfcm91bmRpbmdfbW9kZShybSwgJmVudi0+ZnBf c3RhdHVzKTsNCisNCisjaWZuZGVmIENPTkZJR19TT0ZURkxPQVQNCisJCS8q IG5vIGZsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbiBmb3IgbmF0aXZlIGZsb2F0 ICovDQorCQlTRVRfRlBfRU5BQkxFKGVudi0+ZmNyMzEsIDApOw0KKyNlbmRp Zg0KKwl9DQorCURFQlVHX0ZQVV9TVEFURSgpOw0KKyAgICBSRVRVUk4oKTsN Cit9DQorDQordm9pZCBvcF9tZmMxICh2b2lkKQ0KK3sNCisJVDAgPSBXVDA7 DQorCURFQlVHX0ZQVV9TVEFURSgpOw0KKyAgICBSRVRVUk4oKTsNCit9DQor DQordm9pZCBvcF9tdGMxICh2b2lkKQ0KK3sNCisJV1QwID0gVDA7DQorCURF QlVHX0ZQVV9TVEFURSgpOw0KKyAgICBSRVRVUk4oKTsNCit9DQorDQorLyog RmxvYXQgc3VwcG9ydC4NCisgICBTaW5nbGUgcHJlY2l0aW9uIHJvdXRpbmVz IGhhdmUgYSAicyIgc3VmZml4LCBkb3VibGUgcHJlY2lzaW9uIGENCisgICAi ZCIgc3VmZml4LiAgKi8NCisNCisjZGVmaW5lIEZMT0FUX09QKG5hbWUsIHAp IHZvaWQgT1BQUk9UTyBvcF9mbG9hdF8jI25hbWUjI18jI3Aodm9pZCkNCisN CitGTE9BVF9PUChjdnRkLCB3KQ0KK3sNCisJRkRUMiA9IGludDMyX3RvX2Zs b2F0NjQoV1QwLCAmZW52LT5mcF9zdGF0dXMpOw0KKwlERUJVR19GUFVfU1RB VEUoKTsNCisgICAgUkVUVVJOKCk7DQorfQ0KK0ZMT0FUX09QKGN2dHMsIHcp DQorew0KKwlGU1QyID0gaW50MzJfdG9fZmxvYXQzMihXVDAsICZlbnYtPmZw X3N0YXR1cyk7DQorCURFQlVHX0ZQVV9TVEFURSgpOw0KKyAgICBSRVRVUk4o KTsNCit9DQorDQorRkxPQVRfT1AodHJ1bmN3LCBkKQ0KK3sNCisJV1QyID0g ZmxvYXQ2NF90b19pbnQzMl9yb3VuZF90b196ZXJvKEZEVDAsICZlbnYtPmZw X3N0YXR1cyk7DQorCURFQlVHX0ZQVV9TVEFURSgpOw0KKyAgICBSRVRVUk4o KTsNCit9DQorRkxPQVRfT1AodHJ1bmN3LCBzKQ0KK3sNCisJV1QyID0gZmxv YXQzMl90b19pbnQzMl9yb3VuZF90b196ZXJvKEZTVDAsICZlbnYtPmZwX3N0 YXR1cyk7DQorCURFQlVHX0ZQVV9TVEFURSgpOw0KKyAgICBSRVRVUk4oKTsN Cit9DQorDQorRkxPQVRfT1Aocm91bmR3LCBkKQ0KK3sNCisJV1QyID0gZmxv YXQ2NF9yb3VuZF90b19pbnQoRkRUMCwgJmVudi0+ZnBfc3RhdHVzKTsNCisJ REVCVUdfRlBVX1NUQVRFKCk7DQorICAgIFJFVFVSTigpOw0KK30NCitGTE9B VF9PUChyb3VuZHcsIHMpDQorew0KKwlXVDIgPSBmbG9hdDMyX3JvdW5kX3Rv X2ludChGU1QwLCAmZW52LT5mcF9zdGF0dXMpOw0KKwlERUJVR19GUFVfU1RB VEUoKTsNCisgICAgUkVUVVJOKCk7DQorfQ0KKw0KKy8qIGJpbmFyeSBvcGVy YXRpb25zICovDQorI2RlZmluZSBGTE9BVF9CSU5PUChuYW1lKSBcDQorRkxP QVRfT1AobmFtZSwgZCkgICAgICAgICBcDQoreyAgICAgICAgICAgICAgICAg ICAgICAgICBcDQorICAgIEZEVDIgPSBmbG9hdDY0XyAjIyBuYW1lIChGRFQw LCBGRFQxLCAmZW52LT5mcF9zdGF0dXMpOyAgICBcDQorCURFQlVHX0ZQVV9T VEFURSgpOyAgICBcDQorfSAgICAgICAgICAgICAgICAgICAgICAgICBcDQor RkxPQVRfT1AobmFtZSwgcykgICAgICAgICBcDQoreyAgICAgICAgICAgICAg ICAgICAgICAgICBcDQorICAgIEZTVDIgPSBmbG9hdDMyXyAjIyBuYW1lIChG U1QwLCBGU1QxLCAmZW52LT5mcF9zdGF0dXMpOyAgICBcDQorCURFQlVHX0ZQ VV9TVEFURSgpOyAgICBcDQorfQ0KK0ZMT0FUX0JJTk9QKGFkZCkNCitGTE9B VF9CSU5PUChzdWIpDQorRkxPQVRfQklOT1AobXVsKQ0KK0ZMT0FUX0JJTk9Q KGRpdikNCisjdW5kZWYgRkxPQVRfQklOT1ANCisNCisvKiB1bmFyeSBvcGVy YXRpb25zLCBtb2RpZnlpbmcgZnAgc3RhdHVzICAqLw0KKyNkZWZpbmUgRkxP QVRfVU5PUChuYW1lKSAgXA0KK0ZMT0FUX09QKG5hbWUsIGQpICAgICAgICAg XA0KK3sgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICBGRFQyID0g ZmxvYXQ2NF8gIyMgbmFtZShGRFQwLCAmZW52LT5mcF9zdGF0dXMpOyAgIFwN CisJREVCVUdfRlBVX1NUQVRFKCk7ICAgIFwNCit9ICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCitGTE9BVF9PUChuYW1lLCBzKSAgICAgICAgIFwNCit7 ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgRlNUMiA9IGZsb2F0 MzJfICMjIG5hbWUoRlNUMCwgJmVudi0+ZnBfc3RhdHVzKTsgICBcDQorCURF QlVHX0ZQVV9TVEFURSgpOyAgICBcDQorfQ0KK0ZMT0FUX1VOT1Aoc3FydCkN CisjdW5kZWYgRkxPQVRfVU5PUA0KKw0KKy8qIHVuYXJ5IG9wZXJhdGlvbnMs IG5vdCBtb2RpZnlpbmcgZnAgc3RhdHVzICAqLw0KKyNkZWZpbmUgRkxPQVRf VU5PUChuYW1lKSAgXA0KK0ZMT0FUX09QKG5hbWUsIGQpICAgICAgICAgXA0K K3sgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICBGRFQyID0gZmxv YXQ2NF8gIyMgbmFtZShGRFQwKTsgICBcDQorCURFQlVHX0ZQVV9TVEFURSgp OyAgICBcDQorfSAgICAgICAgICAgICAgICAgICAgICAgICBcDQorRkxPQVRf T1AobmFtZSwgcykgICAgICAgICBcDQoreyAgICAgICAgICAgICAgICAgICAg ICAgICBcDQorICAgIEZTVDIgPSBmbG9hdDMyXyAjIyBuYW1lKEZTVDApOyAg IFwNCisJREVCVUdfRlBVX1NUQVRFKCk7ICAgIFwNCit9DQorRkxPQVRfVU5P UChhYnMpDQorRkxPQVRfVU5PUChjaHMpDQorI3VuZGVmIEZMT0FUX1VOT1AN CisNCitGTE9BVF9PUChtb3YsIGQpDQorew0KKyAgICBGRFQyID0gRkRUMDsN CisJREVCVUdfRlBVX1NUQVRFKCk7DQorICAgIFJFVFVSTigpOw0KK30NCitG TE9BVF9PUChtb3YsIHMpDQorew0KKyAgICBGU1QyID0gRlNUMDsNCisJREVC VUdfRlBVX1NUQVRFKCk7DQorICAgIFJFVFVSTigpOw0KK30NCisNCisjZGVm aW5lIEZPUF9DT05EKGZtdCwgb3AsIGNvbmQpICAgICAgICBcDQordm9pZCBv cF9jbXBfICMjIGZtdCAjIyBfICMjIG9wICh2b2lkKSAgXA0KK3sgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisJaW50IGMgPSAo Y29uZCk7ICAgICAgICAgICAgICAgICAgICBcDQorCVNFVF9GUF9DT05EKGVu di0+ZmNyMzEsIGMpOyAgICAgICAgXA0KKwlERUJVR19GUFVfU1RBVEUoKTsg ICAgICAgICAgICAgICAgIFwNCisJUkVUVVJOKCk7CSAgICAgICAgICAgICAg ICAgICAgICAgXA0KK30NCisNCisjZGVmaW5lIGZfaXN1bm9yZGVyZWQoYSwg YikgXA0KKwkJKGZsb2F0NjRfaXNfc2lnbmFsaW5nX25hbihhKSB8fCBmbG9h dDY0X2lzX3NpZ25hbGluZ19uYW4oYikpDQorI2RlZmluZSBmX2lzZXF1YWwo YSwgYikgICAgIGZsb2F0NjRfZXEoYSwgYiwgJmVudi0+ZnBfc3RhdHVzKQ0K KyNkZWZpbmUgZl9pc2xlc3NlcXVhbChhLCBiKSBmbG9hdDY0X2xlKGEsIGIs ICZlbnYtPmZwX3N0YXR1cykNCisjZGVmaW5lIGZfaXNsZXNzKGEsIGIpICAg ICAgZmxvYXQ2NF9sdChhLCBiLCAmZW52LT5mcF9zdGF0dXMpDQorI2RlZmlu ZSBmX2lzZ3JlYXRlcihhLCBiKSAgICFmX2lzbGVzc2VxdWFsKGEsIGIpDQor I2RlZmluZSBmX2lzZXF1YWxzaWcoYSwgYikgIGZsb2F0NjRfZXFfc2lnbmFs aW5nKGEsIGIsICZlbnYtPmZwX3N0YXR1cykNCitGT1BfQ09ORChkLCBmLCAw KSAvKiBmYWxzZSAqLw0KK0ZPUF9DT05EKGQsIHVuLCBmX2lzdW5vcmRlcmVk KEZEVDEsIEZEVDApKSAvKiB1bm9yZGVyZWQgKi8NCitGT1BfQ09ORChkLCBl cSwgZl9pc2VxdWFsKEZEVDAsIEZEVDEpKSAvKiBlcXVhbCAqLw0KK0ZPUF9D T05EKGQsIHVlcSwgKGZfaXN1bm9yZGVyZWQoRkRUMSwgRkRUMCkgfHwgZl9p c2VxdWFsKEZEVDAsIEZEVDEpKSkgLyogdW5vcmRlcmVkIG9yIGVxdWFsICov DQorRk9QX0NPTkQoZCwgb2x0LCAoIWZfaXN1bm9yZGVyZWQoRkRUMSwgRkRU MCkgJiYgZl9pc2xlc3MoRkRUMCwgRkRUMSkpKSAvKiBvcmRlcmVkIGxlc3Mg dGhhbiAqLw0KK0ZPUF9DT05EKGQsIHVsdCwgKGZfaXN1bm9yZGVyZWQoRkRU MSwgRkRUMCkgfHwgZl9pc2xlc3MoRkRUMCwgRkRUMSkpKSAvKiB1bm9yZGVy ZWQgb3IgbGVzcyB0aGFuICovDQorRk9QX0NPTkQoZCwgb2xlLCAoIWZfaXN1 bm9yZGVyZWQoRkRUMSwgRkRUMCkgJiYgZl9pc2xlc3NlcXVhbChGRFQwLCBG RFQxKSkpIC8qIG9yZGVyZWQgbGVzcyB0aGFuIG9yIGVxdWFsICovDQorRk9Q X0NPTkQoZCwgdWxlLCAoZl9pc3Vub3JkZXJlZChGRFQxLCBGRFQwKSB8fCBm X2lzbGVzc2VxdWFsKEZEVDAsIEZEVDEpKSkgLyogdW5vcmRlcmVkIG9yIGxl c3MgdGhhbiBvciBlcXVhbCAqLw0KK0ZPUF9DT05EKGQsIHNmLCAwKSAvKiBz aWduYWxpbmcgZmFsc2UgKi8NCitGT1BfQ09ORChkLCBuZ2xlLCAoIWZfaXNn cmVhdGVyKEZEVDEsIEZEVDApIHx8IGZfaXNsZXNzZXF1YWwoRkRUMCwgRkRU MSkpKSAvKiBub3QgZ3JlYXRlciBvciBsZXNzIHRoYW4gb3IgZXF1YWwgKi8N CitGT1BfQ09ORChkLCBzZXEsIGZfaXNlcXVhbHNpZyhGRFQxLCBGRFQwKSkg Lyogc2lnbmFsaW5nIGVxdWFsICAqLw0KK0ZPUF9DT05EKGQsIG5nbCwgKCFm X2lzZ3JlYXRlcihGRFQxLCBGRFQwKSB8fCBmX2lzbGVzcyhGRFQwLCBGRFQx KSkpIC8qIG5vdCBncmVhdGVyIHRoYW4gb3IgbGVzcyB0aGFuICovDQorRk9Q X0NPTkQoZCwgbHQsIGZfaXNsZXNzKEZEVDAsIEZEVDEpKSAvKiBsdCAqLw0K K0ZPUF9DT05EKGQsIG5nZSwgKCFmX2lzZ3JlYXRlcihGRFQxLCBGRFQwKSB8 fCBmX2lzZXF1YWwoRkRUMCwgRkRUMSkpKSAvKiBub3QgZ3JlYXRlciB0aGFu IG9yIGVxdWFsICovDQorRk9QX0NPTkQoZCwgbGUsIChmX2lzbGVzcyhGRFQx LCBGRFQwKSB8fCBmX2lzZXF1YWwoRkRUMCwgRkRUMSkpKSAvKiBsZXNzIHRo YW4gb3IgZXF1YWwgKi8NCitGT1BfQ09ORChkLCBuZ3QsICFmX2lzZ3JlYXRl cihGRFQxLCBGRFQwKSkgLyogbm90IGdyZWF0ZXIgdGhhbiAqLw0KKyN1bmRl ZiBmX2lzdW5vcmRlcmVkDQorI3VuZGVmIGZfaXNlcXVhbA0KKyN1bmRlZiBm X2lzbGVzc2VxdWFsDQorI3VuZGVmIGZfaXNsZXNzDQorI3VuZGVmIGZfaXNn cmVhdGVyDQorI3VuZGVmIGZfaXNlcXVhbHNpZw0KKw0KKyNkZWZpbmUgZl9p c3Vub3JkZXJlZChhLCBiKSBcDQorCQkoZmxvYXQzMl9pc19zaWduYWxpbmdf bmFuKGEpIHx8IGZsb2F0MzJfaXNfc2lnbmFsaW5nX25hbihiKSkNCisjZGVm aW5lIGZfaXNlcXVhbChhLCBiKSAgICAgZmxvYXQzMl9lcShhLCBiLCAmZW52 LT5mcF9zdGF0dXMpDQorI2RlZmluZSBmX2lzbGVzc2VxdWFsKGEsIGIpIGZs b2F0MzJfbGUoYSwgYiwgJmVudi0+ZnBfc3RhdHVzKQ0KKyNkZWZpbmUgZl9p c2xlc3MoYSwgYikgICAgICBmbG9hdDMyX2x0KGEsIGIsICZlbnYtPmZwX3N0 YXR1cykNCisjZGVmaW5lIGZfaXNncmVhdGVyKGEsIGIpICAgIWZfaXNsZXNz ZXF1YWwoYSwgYikNCisjZGVmaW5lIGZfaXNlcXVhbHNpZyhhLCBiKSAgZmxv YXQzMl9lcV9zaWduYWxpbmcoYSwgYiwgJmVudi0+ZnBfc3RhdHVzKQ0KK0ZP UF9DT05EKHMsIGYsIDApIC8qIGZhbHNlICovDQorRk9QX0NPTkQocywgdW4s IGZfaXN1bm9yZGVyZWQoRlNUMSwgRlNUMCkpIC8qIHVub3JkZXJlZCAqLw0K K0ZPUF9DT05EKHMsIGVxLCBmX2lzZXF1YWwoRlNUMCwgRlNUMSkpIC8qIGVx dWFsICovDQorRk9QX0NPTkQocywgdWVxLCAoZl9pc3Vub3JkZXJlZChGU1Qx LCBGU1QwKSB8fCBmX2lzZXF1YWwoRlNUMCwgRlNUMSkpKSAvKiB1bm9yZGVy ZWQgb3IgZXF1YWwgKi8NCitGT1BfQ09ORChzLCBvbHQsICghZl9pc3Vub3Jk ZXJlZChGU1QxLCBGU1QwKSAmJiBmX2lzbGVzcyhGU1QwLCBGU1QxKSkpIC8q IG9yZGVyZWQgbGVzcyB0aGFuICovDQorRk9QX0NPTkQocywgdWx0LCAoZl9p c3Vub3JkZXJlZChGU1QxLCBGU1QwKSB8fCBmX2lzbGVzcyhGU1QwLCBGU1Qx KSkpIC8qIHVub3JkZXJlZCBvciBsZXNzIHRoYW4gKi8NCitGT1BfQ09ORChz LCBvbGUsICghZl9pc3Vub3JkZXJlZChGU1QxLCBGU1QwKSAmJiBmX2lzbGVz c2VxdWFsKEZTVDAsIEZTVDEpKSkgLyogb3JkZXJlZCBsZXNzIHRoYW4gb3Ig ZXF1YWwgKi8NCitGT1BfQ09ORChzLCB1bGUsIChmX2lzdW5vcmRlcmVkKEZT VDEsIEZTVDApIHx8IGZfaXNsZXNzZXF1YWwoRlNUMCwgRlNUMSkpKSAvKiB1 bm9yZGVyZWQgb3IgbGVzcyB0aGFuIG9yIGVxdWFsICovDQorRk9QX0NPTkQo cywgc2YsIDApIC8qIHNpZ25hbGluZyBmYWxzZSAqLw0KK0ZPUF9DT05EKHMs IG5nbGUsICghZl9pc2dyZWF0ZXIoRlNUMSwgRlNUMCkgfHwgZl9pc2xlc3Nl cXVhbChGU1QwLCBGU1QxKSkpIC8qIG5vdCBncmVhdGVyIG9yIGxlc3MgdGhh biBvciBlcXVhbCAqLw0KK0ZPUF9DT05EKHMsIHNlcSwgZl9pc2VxdWFsc2ln KEZTVDEsIEZTVDApKSAvKiBzaWduYWxpbmcgZXF1YWwgICovDQorRk9QX0NP TkQocywgbmdsLCAoIWZfaXNncmVhdGVyKEZTVDEsIEZTVDApIHx8IGZfaXNs ZXNzKEZTVDAsIEZTVDEpKSkgLyogbm90IGdyZWF0ZXIgdGhhbiBvciBsZXNz IHRoYW4gKi8NCitGT1BfQ09ORChzLCBsdCwgZl9pc2xlc3MoRlNUMCwgRlNU MSkpIC8qIGx0ICovDQorRk9QX0NPTkQocywgbmdlLCAoIWZfaXNncmVhdGVy KEZTVDEsIEZTVDApIHx8IGZfaXNlcXVhbChGU1QwLCBGU1QxKSkpIC8qIG5v dCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgKi8NCitGT1BfQ09ORChzLCBsZSwg KGZfaXNsZXNzKEZTVDEsIEZTVDApIHx8IGZfaXNlcXVhbChGU1QwLCBGU1Qx KSkpIC8qIGxlc3MgdGhhbiBvciBlcXVhbCAqLw0KK0ZPUF9DT05EKHMsIG5n dCwgIWZfaXNncmVhdGVyKEZTVDEsIEZTVDApKSAvKiBub3QgZ3JlYXRlciB0 aGFuICovDQorI3VuZGVmIGZfaXN1bm9yZGVyZWQNCisjdW5kZWYgZl9pc2Vx dWFsDQorI3VuZGVmIGZfaXNsZXNzZXF1YWwNCisjdW5kZWYgZl9pc2xlc3MN CisjdW5kZWYgZl9pc2dyZWF0ZXINCisjdW5kZWYgZl9pc2VxdWFsc2lnDQor DQordm9pZCBvcF9iYzFmICh2b2lkKQ0KK3sNCisJVDAgPSAhIElTX0ZQX0NP TkRfU0VUKGVudi0+ZmNyMzEpOw0KKwlERUJVR19GUFVfU1RBVEUoKTsNCisg ICAgUkVUVVJOKCk7DQorfQ0KKw0KK3ZvaWQgb3BfYmMxdCAodm9pZCkNCit7 DQorCVQwID0gSVNfRlBfQ09ORF9TRVQoZW52LT5mY3IzMSk7DQorCURFQlVH X0ZQVV9TVEFURSgpOw0KKyAgICBSRVRVUk4oKTsNCit9DQorI2VuZGlmIC8q IE1JUFNfVVNFU19GUFUgKi8NCisNCiAjaWYgZGVmaW5lZChNSVBTX1VTRVNf UjRLX1RMQikNCiB2b2lkIG9wX3RsYndpICh2b2lkKQ0KIHsNCkluZGV4OiB0 YXJnZXQtbWlwcy9vcF9oZWxwZXIuYw0KPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KUkNTIGZpbGU6IC9zb3VyY2VzL3FlbXUvcWVtdS90YXJnZXQtbWlwcy9v cF9oZWxwZXIuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTENCmRpZmYg LXUgLXIxLjExIG9wX2hlbHBlci5jDQotLS0gdGFyZ2V0LW1pcHMvb3BfaGVs cGVyLmMJMjMgQXByIDIwMDYgMTg6MTg6MTAgLTAwMDAJMS4xMQ0KKysrIHRh cmdldC1taXBzL29wX2hlbHBlci5jCTIgTWF5IDIwMDYgMTM6NTE6MzIgLTAw MDANCkBAIC01MzIsNiArNTMyLDQ3IEBADQogICAgIHJldHVybjsNCiB9DQog DQorI2lmZGVmIE1JUFNfVVNFU19GUFUNCisjaW5jbHVkZSAic29mdGZsb2F0 LmgiDQorDQordm9pZCBmcHVfaGFuZGxlX2V4Y2VwdGlvbih2b2lkKQ0KK3sN CisjaWZkZWYgQ09ORklHX1NPRlRGTE9BVA0KKwlpbnQgZmxhZ3MgPSBnZXRf ZmxvYXRfZXhjZXB0aW9uX2ZsYWdzKCZlbnYtPmZwX3N0YXR1cyk7DQorCXVu c2lnbmVkIGludCBjcHVmbGFncyA9IDAsIGVuYWJsZSwgY2F1c2UgPSAwOw0K Kw0KKwllbmFibGUgPSBHRVRfRlBfRU5BQkxFKGVudi0+ZmNyMzEpOw0KKw0K KwkvKiBkZXRlcm1pbmUgY3VycmVudCBmbGFncyAqLwkNCisJaWYgKGZsYWdz ICYgZmxvYXRfZmxhZ19pbnZhbGlkKSB7DQorCQljcHVmbGFncyB8PSBGUF9J TlZBTElEOw0KKwkJY2F1c2UgfD0gRlBfSU5WQUxJRCAmIGVuYWJsZTsNCisJ fQ0KKwlpZiAoZmxhZ3MgJiBmbG9hdF9mbGFnX2RpdmJ5emVybykgew0KKwkJ Y3B1ZmxhZ3MgfD0gRlBfRElWMDsJDQorCQljYXVzZSB8PSBGUF9ESVYwICYg ZW5hYmxlOw0KKwl9DQorCWlmIChmbGFncyAmIGZsb2F0X2ZsYWdfb3ZlcmZs b3cpIHsNCisJCWNwdWZsYWdzIHw9IEZQX09WRVJGTE9XOwkNCisJCWNhdXNl IHw9IEZQX09WRVJGTE9XICYgZW5hYmxlOw0KKwl9DQorCWlmIChmbGFncyAm IGZsb2F0X2ZsYWdfdW5kZXJmbG93KSB7DQorCQljcHVmbGFncyB8PSBGUF9V TkRFUkZMT1c7CQ0KKwkJY2F1c2UgfD0gRlBfVU5ERVJGTE9XICYgZW5hYmxl Ow0KKwl9DQorCWlmIChmbGFncyAmIGZsb2F0X2ZsYWdfaW5leGFjdCkgew0K KwkJY3B1ZmxhZ3MgfD0gRlBfSU5FWEFDVDsJDQorCQljYXVzZSB8PSBGUF9J TkVYQUNUICYgZW5hYmxlOw0KKwl9DQorCVNFVF9GUF9GTEFHUyhlbnYtPmZj cjMxLCBjcHVmbGFncyk7DQorCVNFVF9GUF9DQVVTRShlbnYtPmZjcjMxLCBj YXVzZSk7DQorI2Vsc2UNCisJU0VUX0ZQX0ZMQUdTKGVudi0+ZmNyMzEsIDAp Ow0KKwlTRVRfRlBfQ0FVU0UoZW52LT5mY3IzMSwgMCk7DQorI2VuZGlmDQor fQ0KKyNlbmRpZiAvKiBNSVBTX1VTRVNfRlBVICovDQorDQogLyogVExCIG1h bmFnZW1lbnQgKi8NCiAjaWYgZGVmaW5lZChNSVBTX1VTRVNfUjRLX1RMQikN CiBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlX3RsYiAoaW50IGlkeCkNCkluZGV4 OiB0YXJnZXQtbWlwcy9vcF9tZW0uYw0KPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KUkNTIGZpbGU6IC9zb3VyY2VzL3FlbXUvcWVtdS90YXJnZXQtbWlwcy9v cF9tZW0uYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMg0KZGlmZiAtdSAt cjEuMiBvcF9tZW0uYw0KLS0tIHRhcmdldC1taXBzL29wX21lbS5jCTUgRGVj IDIwMDUgMTk6NTk6MzYgLTAwMDAJMS4yDQorKysgdGFyZ2V0LW1pcHMvb3Bf bWVtLmMJMiBNYXkgMjAwNiAxMzo1MTozMiAtMDAwMA0KQEAgLTYxLDYgKzYx LDE4IEBADQogICAgIFJFVFVSTigpOw0KIH0NCiANCit2b2lkIGdsdWUob3Bf bHd1LCBNRU1TVUZGSVgpICh2b2lkKQ0KK3sNCisgICAgVDAgPSBnbHVlKGxk bCwgTUVNU1VGRklYKShUMCk7DQorICAgIFJFVFVSTigpOw0KK30NCisNCit2 b2lkIGdsdWUob3BfbHd1LCBNRU1TVUZGSVgpICh2b2lkKQ0KK3sNCisgICAg VDAgPSBnbHVlKGxkbCwgTUVNU1VGRklYKShUMCk7DQorICAgIFJFVFVSTigp Ow0KK30NCisNCiB2b2lkIGdsdWUob3Bfc3csIE1FTVNVRkZJWCkgKHZvaWQp DQogew0KICAgICBnbHVlKHN0bCwgTUVNU1VGRklYKShUMCwgVDEpOw0KQEAg LTExOCwzICsxMzAsMjggQEANCiAgICAgfQ0KICAgICBSRVRVUk4oKTsNCiB9 DQorDQorI2lmZGVmIE1JUFNfVVNFU19GUFUNCit2b2lkIGdsdWUob3BfbHdj MSwgTUVNU1VGRklYKSAodm9pZCkNCit7DQorCVdUMCA9IGdsdWUobGRsLCBN RU1TVUZGSVgpKFQwKTsNCisgICAgUkVUVVJOKCk7DQorfQ0KK3ZvaWQgZ2x1 ZShvcF9zd2MxLCBNRU1TVUZGSVgpICh2b2lkKQ0KK3sNCisgICAJZ2x1ZShz dGwsIE1FTVNVRkZJWCkoVDAsIFdUMCk7DQorICAgIFJFVFVSTigpOw0KK30N Cit2b2lkIGdsdWUob3BfbGRjMSwgTUVNU1VGRklYKSAodm9pZCkNCit7DQor ICAgIERUMCA9IGdsdWUobGRxLCBNRU1TVUZGSVgpKFQwKTsNCisgICAgLy9D QUxMX0ZST01fVEIwKGR1bXBfZnB1KTsNCisgICAgUkVUVVJOKCk7DQorfQ0K K3ZvaWQgZ2x1ZShvcF9zZGMxLCBNRU1TVUZGSVgpICh2b2lkKQ0KK3sNCisg ICAgLy9DQUxMX0ZST01fVEIwKGR1bXBfZnB1KTsNCisgICAgZ2x1ZShzdHEs IE1FTVNVRkZJWCkoVDAsIERUMCk7DQorICAgIFJFVFVSTigpOw0KK30NCisj ZW5kaWYNCkluZGV4OiB0YXJnZXQtbWlwcy90cmFuc2xhdGUuYw0KPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9zb3VyY2VzL3FlbXUvcWVt dS90YXJnZXQtbWlwcy90cmFuc2xhdGUuYyx2DQpyZXRyaWV2aW5nIHJldmlz aW9uIDEuMTINCmRpZmYgLXUgLXIxLjEyIHRyYW5zbGF0ZS5jDQotLS0gdGFy Z2V0LW1pcHMvdHJhbnNsYXRlLmMJMjMgQXByIDIwMDYgMTU6MjE6MjQgLTAw MDAJMS4xMg0KKysrIHRhcmdldC1taXBzL3RyYW5zbGF0ZS5jCTIgTWF5IDIw MDYgMTM6NTE6MzIgLTAwMDANCkBAIC0yLDYgKzIsNyBAQA0KICAqICBNSVBT MzIgZW11bGF0aW9uIGZvciBxZW11OiBtYWluIHRyYW5zbGF0aW9uIHJvdXRp bmVzLg0KICAqIA0KICAqICBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwNSBKb2Nl bHluIE1heWVyDQorICogIENvcHlyaWdodCAoYykgMjAwNiBNYXJpdXMgR3Jv ZWdlciAoRlBVIG9wZXJhdGlvbnMpDQogICoNCiAgKiBUaGlzIGxpYnJhcnkg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yDQogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYw0KQEAgLTIxNyw2ICsyMTgsMTYgQEAN CiAgICAgT1BDX1dBSVQgICAgID0gMHgyMCB8IEVYVF9DUDAsDQogfTsNCiAN CisjaWZkZWYgTUlQU19VU0VTX0ZQVQ0KK2VudW0gew0KKyAgICAvKiBDb3By b2Nlc3NvciAxIChGUFUpICovDQorICAgIE9QQ19NRkMxICAgICA9IDB4MDAg fCBFWFRfQ1AxLA0KKyAgICBPUENfTVRDMSAgICAgPSAweDA0IHwgRVhUX0NQ MSwNCisgICAgT1BDX0NGQzEgICAgID0gMHgwMiB8IEVYVF9DUDEsDQorICAg IE9QQ19DVEMxICAgICA9IDB4MDYgfCBFWFRfQ1AxLA0KK307DQorI2VuZGlm DQorDQogY29uc3QgdW5zaWduZWQgY2hhciAqcmVnbmFtZXNbXSA9DQogICAg IHsgInIwIiwgImF0IiwgInYwIiwgInYxIiwgImEwIiwgImExIiwgImEyIiwg ImEzIiwNCiAgICAgICAidDAiLCAidDEiLCAidDIiLCAidDMiLCAidDQiLCAi dDUiLCAidDYiLCAidDciLA0KQEAgLTI0OCw2ICsyNTksNzYgQEANCiBHRU4z MihnZW5fb3Bfc3RvcmVfVDBfZ3ByLCBnZW5fb3Bfc3RvcmVfVDBfZ3ByX2dw cik7DQogR0VOMzIoZ2VuX29wX3N0b3JlX1QxX2dwciwgZ2VuX29wX3N0b3Jl X1QxX2dwcl9ncHIpOw0KIA0KKyNpZmRlZiBNSVBTX1VTRVNfRlBVDQorY29u c3QgdW5zaWduZWQgY2hhciAqZnJlZ25hbWVzW10gPQ0KKyAgICB7ICJmMCIs ICAiZjEiLCAgImYyIiwgICJmMyIsICAiZjQiLCAgImY1IiwgICJmNiIsICAi ZjciLA0KKyAgICAgICJmOCIsICAiZjkiLCAgImYxMCIsICJmMTEiLCAiZjEy IiwgImYxMyIsICJmMTQiLCAiZjE1IiwNCisgICAgICAiZjE2IiwgImYxNyIs ICJmMTgiLCAiZjE5IiwgImYyMCIsICJmMjEiLCAiZjIyIiwgImYyMyIsDQor ICAgICAgImYyNCIsICJmMjUiLCAiZjI2IiwgImYyNyIsICJmMjgiLCAiZjI5 IiwgImYzMCIsICJmMzEiLCB9Ow0KKw0KKyMgZGVmaW5lIEZHRU4zMihmdW5j LCBOQU1FKSBcDQorc3RhdGljIEdlbk9wRnVuYyAqTkFNRSAjIyBfdGFibGUg WzMyXSA9IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KK05BTUUgIyMgMCwgIE5BTUUgIyMgMSwgTkFNRSAjIyAyLCBOQU1FICMj IDMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCitOQU1F ICMjIDQsICBOQU1FICMjIDUsIE5BTUUgIyMgNiwgTkFNRSAjIyA3LCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorTkFNRSAjIyA4LCAg TkFNRSAjIyA5LCBOQU1FICMjIDEwLCBOQU1FICMjIDExLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KK05BTUUgIyMgMTIsIE5BTUUgIyMg MTMsIE5BTUUgIyMgMTQsIE5BTUUgIyMgMTUsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCitOQU1FICMjIDE2LCBOQU1FICMjIDE3LCBOQU1F ICMjIDE4LCBOQU1FICMjIDE5LCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQorTkFNRSAjIyAyMCwgTkFNRSAjIyAyMSwgTkFNRSAjIyAyMiwg TkFNRSAjIyAyMywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K K05BTUUgIyMgMjQsIE5BTUUgIyMgMjUsIE5BTUUgIyMgMjYsIE5BTUUgIyMg MjcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCitOQU1FICMj IDI4LCBOQU1FICMjIDI5LCBOQU1FICMjIDMwLCBOQU1FICMjIDMxLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorfTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KK3N0YXRpYyBpbmxpbmUgdm9pZCBmdW5j KGludCBuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQorICAgIE5BTUUgIyMgX3RhYmxlW25dKCk7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KK30N CisNCitGR0VOMzIoZ2VuX29wX2xvYWRfZnByX1dUMCwgIGdlbl9vcF9sb2Fk X2Zwcl9XVDBfZnByKTsNCitGR0VOMzIoZ2VuX29wX3N0b3JlX2Zwcl9XVDAs IGdlbl9vcF9zdG9yZV9mcHJfV1QwX2Zwcik7DQorDQorRkdFTjMyKGdlbl9v cF9sb2FkX2Zwcl9XVDEsICBnZW5fb3BfbG9hZF9mcHJfV1QxX2Zwcik7DQor RkdFTjMyKGdlbl9vcF9zdG9yZV9mcHJfV1QxLCBnZW5fb3Bfc3RvcmVfZnBy X1dUMV9mcHIpOw0KKw0KK0ZHRU4zMihnZW5fb3BfbG9hZF9mcHJfV1QyLCAg Z2VuX29wX2xvYWRfZnByX1dUMl9mcHIpOw0KK0ZHRU4zMihnZW5fb3Bfc3Rv cmVfZnByX1dUMiwgZ2VuX29wX3N0b3JlX2Zwcl9XVDJfZnByKTsNCisNCitG R0VOMzIoZ2VuX29wX2xvYWRfZnByX0RUMCwgIGdlbl9vcF9sb2FkX2Zwcl9E VDBfZnByKTsNCitGR0VOMzIoZ2VuX29wX3N0b3JlX2Zwcl9EVDAsIGdlbl9v cF9zdG9yZV9mcHJfRFQwX2Zwcik7DQorDQorRkdFTjMyKGdlbl9vcF9sb2Fk X2Zwcl9EVDEsICBnZW5fb3BfbG9hZF9mcHJfRFQxX2Zwcik7DQorRkdFTjMy KGdlbl9vcF9zdG9yZV9mcHJfRFQxLCBnZW5fb3Bfc3RvcmVfZnByX0RUMV9m cHIpOw0KKw0KK0ZHRU4zMihnZW5fb3BfbG9hZF9mcHJfRFQyLCAgZ2VuX29w X2xvYWRfZnByX0RUMl9mcHIpOw0KK0ZHRU4zMihnZW5fb3Bfc3RvcmVfZnBy X0RUMiwgZ2VuX29wX3N0b3JlX2Zwcl9EVDJfZnByKTsNCisNCisjZGVmaW5l IEZPUF9DT05EUyhmbXQpIFwNCitzdGF0aWMgR2VuT3BGdW5jICogY29uZF8g IyMgZm10ICMjIF90YWJsZVsxNl0gPSB7CQkJCQkJXA0KKwlnZW5fb3BfY21w XyAjIyBmbXQgIyMgX2YsCQkJCQkJCQkJCQlcDQorCWdlbl9vcF9jbXBfICMj IGZtdCAjIyBfdW4sCQkJCQkJCQkJCQlcDQorCWdlbl9vcF9jbXBfICMjIGZt dCAjIyBfZXEsCQkJCQkJCQkJCQlcDQorCWdlbl9vcF9jbXBfICMjIGZtdCAj IyBfdWVxLAkJCQkJCQkJCQkJXA0KKwlnZW5fb3BfY21wXyAjIyBmbXQgIyMg X29sdCwJCQkJCQkJCQkJCVwNCisJZ2VuX29wX2NtcF8gIyMgZm10ICMjIF91 bHQsCQkJCQkJCQkJCQlcDQorCWdlbl9vcF9jbXBfICMjIGZtdCAjIyBfb2xl LAkJCQkJCQkJCQkJXA0KKwlnZW5fb3BfY21wXyAjIyBmbXQgIyMgX3VsZSwJ CQkJCQkJCQkJCVwNCisJZ2VuX29wX2NtcF8gIyMgZm10ICMjIF9zZiwJCQkJ CQkJCQkJCVwNCisJZ2VuX29wX2NtcF8gIyMgZm10ICMjIF9uZ2xlLAkJCQkJ CQkJCQlcDQorCWdlbl9vcF9jbXBfICMjIGZtdCAjIyBfc2VxLAkJCQkJCQkJ CQkJXA0KKwlnZW5fb3BfY21wXyAjIyBmbXQgIyMgX25nbCwJCQkJCQkJCQkJ CVwNCisJZ2VuX29wX2NtcF8gIyMgZm10ICMjIF9sdCwJCQkJCQkJCQkJCVwN CisJZ2VuX29wX2NtcF8gIyMgZm10ICMjIF9uZ2UsCQkJCQkJCQkJCQlcDQor CWdlbl9vcF9jbXBfICMjIGZtdCAjIyBfbGUsCQkJCQkJCQkJCQlcDQorCWdl bl9vcF9jbXBfICMjIGZtdCAjIyBfbmd0LAkJCQkJCQkJCQkJXA0KK307CQkJ CQkJCQkJCQkJCQkJCQkJXA0KK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fY21w XyAjIyBmbXQoaW50IG4pCQkJCQkJCQlcDQorewkJCQkJCQkJCQkJCQkJCQkJ CVwNCisgICAgY29uZF8gIyMgZm10ICMjIF90YWJsZVtuXSgpOwkJCQkJCQkJ CQlcDQorfQ0KKw0KK0ZPUF9DT05EUyhkKQ0KK0ZPUF9DT05EUyhzKQ0KKw0K KyNlbmRpZg0KKw0KIHR5cGVkZWYgc3RydWN0IERpc2FzQ29udGV4dCB7DQog ICAgIHN0cnVjdCBUcmFuc2xhdGlvbkJsb2NrICp0YjsNCiAgICAgdGFyZ2V0 X3Vsb25nIHBjLCBzYXZlZF9wYzsNCkBAIC0zMTIsNiArMzkzLDIwIEBADQog ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KIH0gd2hpbGUg KDApDQogDQorI2lmZGVmIE1JUFNfVVNFU19GUFUNCisNCisjIGRlZmluZSBH RU5fTE9BRF9GUkVHX0ZUTihGVG4sIEZuKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQorZG8geyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KKyAgICBnbHVlKGdlbl9vcF9sb2FkX2Zwcl8s IEZUbikoRm4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCit9IHdoaWxlICgwKQ0KKw0KKyNkZWZpbmUgR0VOX1NUT1JF X0ZUTl9GUkVHKEZuLCBGVG4pICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCitkbyB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQorICAgIGdsdWUoZ2VuX29wX3N0b3JlX2Zwcl8sIEZUbiko Rm4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KK30gd2hpbGUgKDApDQorDQorI2VuZGlmDQorDQogc3RhdGljIGlubGlu ZSB2b2lkIHNhdmVfY3B1X3N0YXRlIChEaXNhc0NvbnRleHQgKmN0eCwgaW50 IGRvX3NhdmVfcGMpDQogew0KICNpZiBkZWZpbmVkIE1JUFNfREVCVUdfRElT QVMNCkBAIC0zOTcsNiArNDkyLDEyIEBADQogT1BfU1RfVEFCTEUoYik7DQog T1BfTERfVEFCTEUobCk7DQogT1BfU1RfVEFCTEUoYyk7DQorI2lmZGVmIE1J UFNfVVNFU19GUFUNCitPUF9MRF9UQUJMRSh3YzEpOw0KK09QX1NUX1RBQkxF KHdjMSk7DQorT1BfTERfVEFCTEUoZGMxKTsNCitPUF9TVF9UQUJMRShkYzEp Ow0KKyNlbmRpZg0KIA0KIC8qIExvYWQgYW5kIHN0b3JlICovDQogc3RhdGlj IHZvaWQgZ2VuX2xkc3QgKERpc2FzQ29udGV4dCAqY3R4LCB1aW50MTZfdCBv cGMsIGludCBydCwNCkBAIC01NTEsNiArNjUyLDU1IEBADQogICAgIE1JUFNf REVCVUcoIiVzICVzLCAlZCglcykiLCBvcG4sIHJlZ25hbWVzW3J0XSwgb2Zm c2V0LCByZWduYW1lc1tiYXNlXSk7DQogfQ0KIA0KKyNpZmRlZiBNSVBTX1VT RVNfRlBVDQorLyogTG9hZCBhbmQgc3RvcmUgKi8NCitzdGF0aWMgdm9pZCBn ZW5fZmx0X2xkc3QgKERpc2FzQ29udGV4dCAqY3R4LCB1aW50MTZfdCBvcGMs IGludCBmdCwNCisgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2UsIGlu dDE2X3Qgb2Zmc2V0KQ0KK3sNCisgICAgY29uc3QgdW5zaWduZWQgY2hhciAq b3BuID0gInVuayI7DQorDQorICAgIGlmIChiYXNlID09IDApIHsNCisgICAg ICAgIEdFTl9MT0FEX0lNTV9UTihUMCwgb2Zmc2V0KTsNCisgICAgfSBlbHNl IGlmIChvZmZzZXQgPT0gMCkgew0KKyAgICAgICAgZ2VuX29wX2xvYWRfZ3By X1QwKGJhc2UpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgZ2VuX29wX2xv YWRfZ3ByX1QwKGJhc2UpOw0KKyAgICAgICAgZ2VuX29wX3NldF9UMShvZmZz ZXQpOw0KKyAgICAgICAgZ2VuX29wX2FkZCgpOw0KKyAgICB9DQorICAgIC8q IERvbid0IGRvIE5PUCBpZiBkZXN0aW5hdGlvbiBpcyB6ZXJvOiB3ZSBtdXN0 IHBlcmZvcm0gdGhlIGFjdHVhbA0KKyAgICAgKiBtZW1vcnkgYWNjZXNzDQor ICAgICAqLw0KKyAgICBzd2l0Y2ggKG9wYykgew0KKyAgICBjYXNlIE9QQ19M V0MxOg0KKyAgICAgICAgb3BfbGRzdChsd2MxKTsNCisJCUdFTl9TVE9SRV9G VE5fRlJFRyhmdCwgV1QwKTsNCisgICAgICAgIG9wbiA9ICJsd2MxIjsNCisg ICAgICAgIGJyZWFrOw0KKyAgICBjYXNlIE9QQ19TV0MxOg0KKwkJR0VOX0xP QURfRlJFR19GVE4oV1QwLCBmdCk7DQorICAgICAgICBvcF9sZHN0KHN3YzEp Ow0KKyAgICAgICAgb3BuID0gInN3YzEiOw0KKyAgICAgICAgYnJlYWs7DQor ICAgIGNhc2UgT1BDX0xEQzE6DQorCQlvcF9sZHN0KGxkYzEpOw0KKyAgICAg ICAgR0VOX1NUT1JFX0ZUTl9GUkVHKGZ0LCBEVDApOw0KKyAgICAgICAgb3Bu ID0gImxkYzEiOw0KKyAgICAgICAgYnJlYWs7DQorICAgIGNhc2UgT1BDX1NE QzE6DQorICAgICAgICBHRU5fTE9BRF9GUkVHX0ZUTihEVDAsIGZ0KTsNCisg ICAgICAgIG9wX2xkc3Qoc2RjMSk7DQorICAgICAgICBvcG4gPSAic2RjMSI7 DQorICAgICAgICBicmVhazsNCisgICAgZGVmYXVsdDoNCisgICAgICAgIE1J UFNfSU5WQUwoImZsb2F0IGxvYWQvc3RvcmUiKTsNCisgICAgICAgIGdlbmVy YXRlX2V4Y2VwdGlvbihjdHgsIEVYQ1BfQ3BVKTsNCisgICAgICAgIHJldHVy bjsNCisgICAgfQ0KKyAgICBNSVBTX0RFQlVHKCIlcyAlcywgJWQoJXMpIiwg b3BuLCBmcmVnbmFtZXNbZnRdLCBvZmZzZXQsIHJlZ25hbWVzW2Jhc2VdKTsN Cit9DQorI2VuZGlmDQorDQogLyogQXJpdGhtZXRpYyB3aXRoIGltbWVkaWF0 ZSBvcGVyYW5kICovDQogc3RhdGljIHZvaWQgZ2VuX2FyaXRoX2ltbSAoRGlz YXNDb250ZXh0ICpjdHgsIHVpbnQxNl90IG9wYywgaW50IHJ0LA0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBycywgaW50MTZfdCBpbW0pDQpA QCAtMTE4MCw3ICsxMzMwLDcgQEANCiAgICAgY29uc3QgdW5zaWduZWQgY2hh ciAqb3BuID0gInVuayI7DQogDQogICAgIGlmICghKGN0eC0+Q1AwX1N0YXR1 cyAmICgxIDw8IENQMFN0X0NVMCkpICYmDQotICAgICAgICAoY3R4LT5oZmxh Z3MgJiBNSVBTX0hGTEFHX1VNKSAmJg0KKyAgICAgICAgIShjdHgtPmhmbGFn cyAmIE1JUFNfSEZMQUdfVU0pICYmDQogICAgICAgICAhKGN0eC0+aGZsYWdz ICYgTUlQU19IRkxBR19FUkwpICYmDQogICAgICAgICAhKGN0eC0+aGZsYWdz ICYgTUlQU19IRkxBR19FWEwpKSB7DQogICAgICAgICBpZiAobG9nbGV2ZWwg JiBDUFVfTE9HX1RCX0lOX0FTTSkgew0KQEAgLTExODksNiArMTMzOSw3IEBA DQogICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25fZXJyIChjdHgsIEVYQ1Bf Q3BVLCAwKTsNCiAgICAgICAgIHJldHVybjsNCiAgICAgfQ0KKw0KICAgICBz d2l0Y2ggKG9wYykgew0KICAgICBjYXNlIE9QQ19NRkMwOg0KICAgICAgICAg aWYgKHJ0ID09IDApIHsNCkBAIC0xMjY1LDcgKzE0MTYsMzgzIEBADQogICAg IE1JUFNfREVCVUcoIiVzICVzICVkIiwgb3BuLCByZWduYW1lc1tydF0sIHJk KTsNCiB9DQogDQorI2lmZGVmIE1JUFNfVVNFU19GUFUNCisvKiBDUDEgQnJh bmNoZXMgKGJlZm9yZSBkZWxheSBzbG90KSAqLw0KK3N0YXRpYyB2b2lkIGdl bl9jb21wdXRlX2JyYW5jaDEgKERpc2FzQ29udGV4dCAqY3R4LCB1aW50MTZf dCBjb25kLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dDMyX3Qgb2Zmc2V0KQ0KK3sNCisgICAgdGFyZ2V0X3Vsb25nIGJ0YXJnZXQ7 DQorDQorICAgIGJ0YXJnZXQgPSBjdHgtPnBjICsgNCArIG9mZnNldDsNCisN CisJc3dpdGNoIChjb25kKSB7DQorICAgIGNhc2UgMHgwMDAwOiAvKiBiYzFm ICovDQorCQlnZW5fb3BfYmMxZigpOw0KKwkJTUlQU19ERUJVRygiYmMxZiAl MDh4IiwgYnRhcmdldCk7DQorCQlnb3RvIG5vdF9saWtlbHk7DQorICAgIGNh c2UgMHgwMDAyOiAvKiBiYzFmbCAqLw0KKwkJZ2VuX29wX2JjMWYoKTsNCisJ CU1JUFNfREVCVUcoImJjMWZsICUwOHgiLCBidGFyZ2V0KTsNCisJCWdvdG8g bGlrZWx5Ow0KKyAgICBjYXNlIDB4MDAwMTogLyogYmMxdCAqLw0KKwkJZ2Vu X29wX2JjMXQoKTsNCisJCU1JUFNfREVCVUcoImJjMXQgJTA4eCIsIGJ0YXJn ZXQpOw0KKwlub3RfbGlrZWx5Og0KKwkJY3R4LT5oZmxhZ3MgfD0gTUlQU19I RkxBR19CQzsNCisJCWJyZWFrOw0KKyAgICBjYXNlIDB4MDAwMzogLyogYmMx dGwgKi8NCisJCWdlbl9vcF9iYzF0KCk7DQorCQlNSVBTX0RFQlVHKCJiYzF0 bCAlMDh4IiwgYnRhcmdldCk7DQorCWxpa2VseToNCisJCWN0eC0+aGZsYWdz IHw9IE1JUFNfSEZMQUdfQkw7DQorCQlicmVhazsNCisJZGVmYXVsdDoJDQor ICAgICAgICBNSVBTX0lOVkFMKCJjcDEgYnJhbmNoL2p1bXAiKTsNCisgICAg ICAgIGdlbmVyYXRlX2V4Y2VwdGlvbihjdHgsIEVYQ1BfUkkpOw0KKyAgICAg ICAgcmV0dXJuOw0KKwl9DQorCWdlbl9vcF9zZXRfYmNvbmQoKTsNCisNCisg ICAgTUlQU19ERUJVRygiZW50ZXIgZHM6IGNvbmQgJTAyeCB0YXJnZXQgJTA4 eCIsDQorICAgICAgICAgICAgICAgY3R4LT5oZmxhZ3MsIGJ0YXJnZXQpOw0K KyAgICBjdHgtPmJ0YXJnZXQgPSBidGFyZ2V0Ow0KKw0KKyAgICByZXR1cm47 DQorfQ0KKw0KIC8qIENvcHJvY2Vzc29yIDEgKEZQVSkgKi8NCitzdGF0aWMg dm9pZCBnZW5fY3AxIChEaXNhc0NvbnRleHQgKmN0eCwgdWludDE2X3Qgb3Bj LCBpbnQgcnQsIGludCBmcykNCit7DQorICAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKm9wbiA9ICJ1bmsiOw0KKw0KKyAgICBpZiAoIShjdHgtPkNQMF9TdGF0 dXMgJiAoMSA8PCBDUDBTdF9DVTEpKSkgew0KKyAgICAgICAgaWYgKGxvZ2xl dmVsICYgQ1BVX0xPR19UQl9JTl9BU00pIHsNCisgICAgICAgICAgICBmcHJp bnRmKGxvZ2ZpbGUsICJDUDEgaXMgbm90IHVzYWJsZVxuIik7DQorICAgICAg ICB9DQorICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25fZXJyIChjdHgsIEVY Q1BfQ3BVLCAwKTsNCisgICAgICAgIHJldHVybjsNCisgICAgfQ0KKw0KKyAg ICBzd2l0Y2ggKG9wYykgew0KKyAgICBjYXNlIE9QQ19NRkMxOg0KKwkJR0VO X0xPQURfRlJFR19GVE4oV1QwLCBmcyk7DQorICAgICAgICBnZW5fb3BfbWZj MSgpOw0KKyAgICAgICAgR0VOX1NUT1JFX1ROX1JFRyhydCwgVDApOw0KKyAg ICAgICAgb3BuID0gIm1mYzEiOw0KKyAgICAgICAgYnJlYWs7DQorICAgIGNh c2UgT1BDX01UQzE6DQorICAgICAgICAvKiBJZiB3ZSBnZXQgYW4gZXhjZXB0 aW9uLCB3ZSB3YW50IHRvIHJlc3RhcnQgYXQgbmV4dCBpbnN0cnVjdGlvbiAq Lw0KKyAgICAgICAgR0VOX0xPQURfUkVHX1ROKFQwLCBydCk7DQorICAgICAg ICBnZW5fb3BfbXRjMSgpOw0KKwkJR0VOX1NUT1JFX0ZUTl9GUkVHKGZzLCBX VDApOw0KKyAgICAgICAgb3BuID0gIm10YzEiOw0KKyAgICAgICAgYnJlYWs7 DQorICAgIGNhc2UgT1BDX0NGQzE6DQorICAgICAgICBpZiAoZnMgIT0gMCAm JiBmcyAhPSAzMSkgew0KKyAgICAgICAgICAgIE1JUFNfSU5WQUwoImNmYzEg ZnJlZyIpOw0KKyAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbihjdHgs IEVYQ1BfUkkpOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0N CisgICAgICAgIEdFTl9MT0FEX0lNTV9UTihUMSwgZnMpOw0KKyAgICAgICAg Z2VuX29wX2NmYzEoKTsNCisgICAgICAgIEdFTl9TVE9SRV9UTl9SRUcocnQs IFQwKTsNCisgICAgICAgIG9wbiA9ICJjZmMxIjsNCisgICAgICAgIGJyZWFr Ow0KKyAgICBjYXNlIE9QQ19DVEMxOg0KKyAgICAgICAgaWYgKGZzICE9IDAg JiYgZnMgIT0gMzEpIHsNCisgICAgICAgICAgICBNSVBTX0lOVkFMKCJjZmMx IGZyZWciKTsNCisgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb24oY3R4 LCBFWENQX1JJKTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9 DQorICAgICAgICBHRU5fTE9BRF9JTU1fVE4oVDEsIGZzKTsNCisgICAgICAg IEdFTl9MT0FEX1JFR19UTihUMCwgcnQpOw0KKyAgICAgICAgZ2VuX29wX2N0 YzEoKTsNCisgICAgICAgIG9wbiA9ICJjdGMxIjsNCisgICAgICAgIGJyZWFr Ow0KKyAgICBkZWZhdWx0Og0KKyAgICAgICAgaWYgKGxvZ2xldmVsICYgQ1BV X0xPR19UQl9JTl9BU00pIHsNCisgICAgICAgICAgICBmcHJpbnRmKGxvZ2Zp bGUsICJJbnZhbGlkIENQMSBvcGNvZGU6ICUwOHggJTAzeCAlMDN4ICUwM3hc biIsDQorICAgICAgICAgICAgICAgICAgICBjdHgtPm9wY29kZSwgY3R4LT5v cGNvZGUgPj4gMjYsIGN0eC0+b3Bjb2RlICYgMHgzRiwNCisgICAgICAgICAg ICAgICAgICAgICgoY3R4LT5vcGNvZGUgPj4gMTYpICYgMHgxRikpOw0KKyAg ICAgICAgfQ0KKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uKGN0eCwgRVhD UF9SSSk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisgICAgTUlQU19E RUJVRygiJXMgJXMgJXMiLCBvcG4sIHJlZ25hbWVzW3J0XSwgZnJlZ25hbWVz W2ZzXSk7DQorfQ0KKw0KKy8qIHZlcmlmeSBpZiBmbG9hdGluZyBwb2ludCBy ZWdpc3RlciBpcyB2YWxpZDsgYW4gb3BlcmF0aW9uIGlzIG5vdCBkZWZpbmVk DQorICogaWYgYml0IDAgb2YgYW55IHJlZ2lzdGVyIHNwZWNpZmljYXRpb24g aXMgc2V0IGFuZCB0aGUgRlIgYml0IGluIHRoZQ0KKyAqIFN0YXR1cyByZWdp c3RlciBlcXVhbHMgemVybywgc2luY2UgdGhlIHJlZ2lzdGVyIG51bWJlcnMg c3BlY2lmeSBhbg0KKyAqIGV2ZW4tb2RkIHBhaXIgb2YgYWRqYWNlbnQgY29w cm9jZXNzb3IgZ2VuZXJhbCByZWdpc3RlcnMuIFdoZW4gdGhlIEZSIGJpdA0K KyAqIGluIHRoZSBTdGF0dXMgcmVnaXN0ZXIgZXF1YWxzIG9uZSwgYm90aCBl dmVuIGFuZCBvZGQgcmVnaXN0ZXIgbnVtYmVycw0KKyAqIGFyZSB2YWxpZC4N CisgKiANCisgKiBNdWx0aXBsZSBmbG9hdCByZWdpc3RlcnMgY2FuIGJlIGNo ZWNrZWQgYnkgY2FsbGluZw0KKyAqIENIRUNLX0ZSKGN0eCwgZnJlZzEgfCBm cmVnMiB8IC4uLiB8IGZyZWdOKTsNCisgKi8NCisjZGVmaW5lIENIRUNLX0ZS KGN0eCwgZnJlZykgZG8geyBcDQorCQlpZiAoISgoY3R4KS0+Q1AwX1N0YXR1 cyAmICgxPDxDUDBTdF9GUikpICYmICgoZnJlZykgJiAxKSkgeyBcDQorCQkJ Z2VuZXJhdGVfZXhjZXB0aW9uKGN0eCwgRVhDUF9SSSk7IFwNCisJCQlyZXR1 cm47IFwNCisJCX0gXA0KKwl9IHdoaWxlKDApDQorDQorI2RlZmluZSBGT1Ao ZnVuYywgZm10KSAoKChmbXQpIDw8IDIxKSB8IChmdW5jKSkNCisNCitzdGF0 aWMgdm9pZCBnZW5fZmFyaXRoIChEaXNhc0NvbnRleHQgKmN0eCwgaW50IGZt dCwgaW50IGZ0LCBpbnQgZnMsIGludCBmZCwgaW50IGZ1bmMpDQorew0KKyAg ICBjb25zdCB1bnNpZ25lZCBjaGFyICpvcG4gPSAidW5rIjsNCisJY29uc3Qg Y2hhciAqY29uZG5hbWVzW10gPSB7DQorCQkJImMuZiIsDQorCQkJImMudW4i LA0KKwkJCSJjLmVxIiwNCisJCQkiYy51ZXEiLA0KKwkJCSJjLm9sdCIsDQor CQkJImMudWx0IiwNCisJCQkiYy5vbGUiLA0KKwkJCSJjLnVsZSIsDQorCQkJ ImMuc2YiLA0KKwkJCSJjLm5nbGUiLA0KKwkJCSJjLnNlcSIsDQorCQkJImMu bmdsIiwNCisJCQkiYy5sdCIsDQorCQkJImMubmdlIiwNCisJCQkiYy5sZSIs DQorCQkJImMubmd0IiwNCisJfTsNCisJaW50IGJpbmFyeSA9IDA7DQorCQ0K KyAgICBzd2l0Y2ggKGN0eC0+b3Bjb2RlICYgRk9QKDB4M2YsIDB4MWYpKSB7 DQorCWNhc2UgRk9QKDAsIDE3KToNCisJCUNIRUNLX0ZSKGN0eCwgZnMgfCBm dCB8IGZkKTsNCisgICAgICAgIEdFTl9MT0FEX0ZSRUdfRlROKERUMCwgZnMp Ow0KKyAgICAgICAgR0VOX0xPQURfRlJFR19GVE4oRFQxLCBmdCk7DQorCQln ZW5fb3BfZmxvYXRfYWRkX2QoKTsNCisgICAgICAgIEdFTl9TVE9SRV9GVE5f RlJFRyhmZCwgRFQyKTsNCisgICAgICAgIG9wbiA9ICJhZGQuZCI7DQorCQli aW5hcnkgPSAxOw0KKwkJYnJlYWs7DQorCWNhc2UgRk9QKDEsIDE3KToNCisJ CUNIRUNLX0ZSKGN0eCwgZnMgfCBmdCB8IGZkKTsNCisgICAgICAgIEdFTl9M T0FEX0ZSRUdfRlROKERUMCwgZnMpOw0KKyAgICAgICAgR0VOX0xPQURfRlJF R19GVE4oRFQxLCBmdCk7DQorCQlnZW5fb3BfZmxvYXRfc3ViX2QoKTsNCisg ICAgICAgIEdFTl9TVE9SRV9GVE5fRlJFRyhmZCwgRFQyKTsNCisgICAgICAg IG9wbiA9ICJzdWIuZCI7DQorCQliaW5hcnkgPSAxOw0KKwkJYnJlYWs7DQor CWNhc2UgRk9QKDIsIDE3KToNCisJCUNIRUNLX0ZSKGN0eCwgZnMgfCBmdCB8 IGZkKTsNCisgICAgICAgIEdFTl9MT0FEX0ZSRUdfRlROKERUMCwgZnMpOw0K KyAgICAgICAgR0VOX0xPQURfRlJFR19GVE4oRFQxLCBmdCk7DQorCQlnZW5f b3BfZmxvYXRfbXVsX2QoKTsNCisgICAgICAgIEdFTl9TVE9SRV9GVE5fRlJF RyhmZCwgRFQyKTsNCisgICAgICAgIG9wbiA9ICJtdWwuZCI7DQorCQliaW5h cnkgPSAxOw0KKwkJYnJlYWs7DQorCWNhc2UgRk9QKDMsIDE3KToNCisJCUNI RUNLX0ZSKGN0eCwgZnMgfCBmdCB8IGZkKTsNCisgICAgICAgIEdFTl9MT0FE X0ZSRUdfRlROKERUMCwgZnMpOw0KKyAgICAgICAgR0VOX0xPQURfRlJFR19G VE4oRFQxLCBmdCk7DQorCQlnZW5fb3BfZmxvYXRfZGl2X2QoKTsNCisgICAg ICAgIEdFTl9TVE9SRV9GVE5fRlJFRyhmZCwgRFQyKTsNCisgICAgICAgIG9w biA9ICJkaXYuZCI7DQorCQliaW5hcnkgPSAxOw0KKwkJYnJlYWs7DQorCWNh c2UgRk9QKDQsIDE3KToNCisJCUNIRUNLX0ZSKGN0eCwgZnMgfCBmZCk7DQor ICAgICAgICBHRU5fTE9BRF9GUkVHX0ZUTihEVDAsIGZzKTsNCisJCWdlbl9v cF9mbG9hdF9zcXJ0X2QoKTsNCisgICAgICAgIEdFTl9TVE9SRV9GVE5fRlJF RyhmZCwgRFQyKTsNCisgICAgICAgIG9wbiA9ICJzcXJ0LmQiOw0KKwkJYnJl YWs7DQorCWNhc2UgRk9QKDUsIDE3KToNCisJCUNIRUNLX0ZSKGN0eCwgZnMg fCBmZCk7DQorICAgICAgICBHRU5fTE9BRF9GUkVHX0ZUTihEVDAsIGZzKTsN CisJCWdlbl9vcF9mbG9hdF9hYnNfZCgpOw0KKyAgICAgICAgR0VOX1NUT1JF X0ZUTl9GUkVHKGZkLCBEVDIpOw0KKyAgICAgICAgb3BuID0gImFicy5kIjsN CisJCWJyZWFrOw0KKwljYXNlIEZPUCg2LCAxNyk6DQorCQlDSEVDS19GUihj dHgsIGZzIHwgZmQpOw0KKyAgICAgICAgR0VOX0xPQURfRlJFR19GVE4oRFQw LCBmcyk7DQorCQlnZW5fb3BfZmxvYXRfbW92X2QoKTsNCisgICAgICAgIEdF Tl9TVE9SRV9GVE5fRlJFRyhmZCwgRFQyKTsNCisgICAgICAgIG9wbiA9ICJt b3YuZCI7DQorCQlicmVhazsNCisJY2FzZSBGT1AoNywgMTcpOg0KKwkJQ0hF Q0tfRlIoY3R4LCBmcyB8IGZkKTsNCisgICAgICAgIEdFTl9MT0FEX0ZSRUdf RlROKERUMCwgZnMpOw0KKwkJZ2VuX29wX2Zsb2F0X2Noc19kKCk7DQorICAg ICAgICBHRU5fU1RPUkVfRlROX0ZSRUcoZmQsIERUMik7DQorICAgICAgICBv cG4gPSAibmVnLmQiOw0KKwkJYnJlYWs7DQorCWNhc2UgRk9QKDEyLCAxNyk6 DQorCQlDSEVDS19GUihjdHgsIGZzIHwgZmQpOw0KKyAgICAgICAgR0VOX0xP QURfRlJFR19GVE4oRFQwLCBmcyk7DQorCQlnZW5fb3BfZmxvYXRfcm91bmR3 X2QoKTsNCisgICAgICAgIEdFTl9TVE9SRV9GVE5fRlJFRyhmZCwgV1QyKTsN CisgICAgICAgIG9wbiA9ICJyb3VuZC53LmQiOw0KKwkJYnJlYWs7DQorCWNh c2UgRk9QKDEzLCAxNyk6DQorCQlDSEVDS19GUihjdHgsIGZzIHwgZmQpOw0K KyAgICAgICAgR0VOX0xPQURfRlJFR19GVE4oRFQwLCBmcyk7DQorCQlnZW5f b3BfZmxvYXRfdHJ1bmN3X2QoKTsNCisgICAgICAgIEdFTl9TVE9SRV9GVE5f RlJFRyhmZCwgV1QyKTsNCisgICAgICAgIG9wbiA9ICJ0cnVuYy53LmQiOw0K KwkJYnJlYWs7DQorICAgIGNhc2UgRk9QKDMzLCAyMCk6IC8qIGN2dC5kLncg Ki8NCisJCUNIRUNLX0ZSKGN0eCwgZnMgfCBmZCk7DQorICAgICAgICBHRU5f TE9BRF9GUkVHX0ZUTihXVDAsIGZzKTsNCisJCWdlbl9vcF9mbG9hdF9jdnRk X3coKTsNCisgICAgICAgIEdFTl9TVE9SRV9GVE5fRlJFRyhmZCwgRFQyKTsN CisgICAgICAgIG9wbiA9ICJjdnQuZC53IjsNCisJCWJyZWFrOw0KKwljYXNl IEZPUCg0OCwgMTcpOg0KKwljYXNlIEZPUCg0OSwgMTcpOg0KKwljYXNlIEZP UCg1MCwgMTcpOg0KKwljYXNlIEZPUCg1MSwgMTcpOg0KKwljYXNlIEZPUCg1 MiwgMTcpOg0KKwljYXNlIEZPUCg1MywgMTcpOg0KKwljYXNlIEZPUCg1NCwg MTcpOg0KKwljYXNlIEZPUCg1NSwgMTcpOg0KKwljYXNlIEZPUCg1NiwgMTcp Og0KKwljYXNlIEZPUCg1NywgMTcpOg0KKwljYXNlIEZPUCg1OCwgMTcpOg0K KwljYXNlIEZPUCg1OSwgMTcpOg0KKwljYXNlIEZPUCg2MCwgMTcpOg0KKwlj YXNlIEZPUCg2MSwgMTcpOg0KKwljYXNlIEZPUCg2MiwgMTcpOg0KKwljYXNl IEZPUCg2MywgMTcpOg0KKwkJQ0hFQ0tfRlIoY3R4LCBmcyB8IGZ0KTsNCisg ICAgICAgIEdFTl9MT0FEX0ZSRUdfRlROKERUMCwgZnMpOw0KKyAgICAgICAg R0VOX0xPQURfRlJFR19GVE4oRFQxLCBmdCk7DQorICAgICAgICBnZW5fY21w X2QoZnVuYy00OCk7DQorICAgICAgICBvcG4gPSBjb25kbmFtZXNbZnVuYy00 OF07DQorCQlicmVhazsNCisJY2FzZSBGT1AoMCwgMTYpOg0KKwkJQ0hFQ0tf RlIoY3R4LCBmcyB8IGZ0IHwgZmQpOw0KKyAgICAgICAgR0VOX0xPQURfRlJF R19GVE4oV1QwLCBmcyk7DQorICAgICAgICBHRU5fTE9BRF9GUkVHX0ZUTihX VDEsIGZ0KTsNCisJCWdlbl9vcF9mbG9hdF9hZGRfcygpOw0KKyAgICAgICAg R0VOX1NUT1JFX0ZUTl9GUkVHKGZkLCBXVDIpOw0KKyAgICAgICAgb3BuID0g ImFkZC5zIjsNCisJCWJpbmFyeSA9IDE7DQorCQlicmVhazsNCisJY2FzZSBG T1AoMSwgMTYpOg0KKwkJQ0hFQ0tfRlIoY3R4LCBmcyB8IGZ0IHwgZmQpOw0K KyAgICAgICAgR0VOX0xPQURfRlJFR19GVE4oV1QwLCBmcyk7DQorICAgICAg ICBHRU5fTE9BRF9GUkVHX0ZUTihXVDEsIGZ0KTsNCisJCWdlbl9vcF9mbG9h dF9zdWJfcygpOw0KKyAgICAgICAgR0VOX1NUT1JFX0ZUTl9GUkVHKGZkLCBX VDIpOw0KKyAgICAgICAgb3BuID0gInN1Yi5zIjsNCisJCWJpbmFyeSA9IDE7 DQorCQlicmVhazsNCisJY2FzZSBGT1AoMiwgMTYpOg0KKwkJQ0hFQ0tfRlIo Y3R4LCBmcyB8IGZ0IHwgZmQpOw0KKyAgICAgICAgR0VOX0xPQURfRlJFR19G VE4oV1QwLCBmcyk7DQorICAgICAgICBHRU5fTE9BRF9GUkVHX0ZUTihXVDEs IGZ0KTsNCisJCWdlbl9vcF9mbG9hdF9tdWxfcygpOw0KKyAgICAgICAgR0VO X1NUT1JFX0ZUTl9GUkVHKGZkLCBXVDIpOw0KKyAgICAgICAgb3BuID0gIm11 bC5zIjsNCisJCWJpbmFyeSA9IDE7DQorCQlicmVhazsNCisJY2FzZSBGT1Ao MywgMTYpOg0KKwkJQ0hFQ0tfRlIoY3R4LCBmcyB8IGZ0IHwgZmQpOw0KKyAg ICAgICAgR0VOX0xPQURfRlJFR19GVE4oV1QwLCBmcyk7DQorICAgICAgICBH RU5fTE9BRF9GUkVHX0ZUTihXVDEsIGZ0KTsNCisJCWdlbl9vcF9mbG9hdF9k aXZfcygpOw0KKyAgICAgICAgR0VOX1NUT1JFX0ZUTl9GUkVHKGZkLCBXVDIp Ow0KKyAgICAgICAgb3BuID0gImRpdi5zIjsNCisJCWJpbmFyeSA9IDE7DQor CQlicmVhazsNCisJY2FzZSBGT1AoNCwgMTYpOg0KKwkJQ0hFQ0tfRlIoY3R4 LCBmcyB8IGZkKTsNCisgICAgICAgIEdFTl9MT0FEX0ZSRUdfRlROKFdUMCwg ZnMpOw0KKwkJZ2VuX29wX2Zsb2F0X3NxcnRfcygpOw0KKyAgICAgICAgR0VO X1NUT1JFX0ZUTl9GUkVHKGZkLCBXVDIpOw0KKyAgICAgICAgb3BuID0gInNx cnQucyI7DQorCQlicmVhazsNCisJY2FzZSBGT1AoNSwgMTYpOg0KKwkJQ0hF Q0tfRlIoY3R4LCBmcyB8IGZkKTsNCisgICAgICAgIEdFTl9MT0FEX0ZSRUdf RlROKFdUMCwgZnMpOw0KKwkJZ2VuX29wX2Zsb2F0X2Fic19zKCk7DQorICAg ICAgICBHRU5fU1RPUkVfRlROX0ZSRUcoZmQsIFdUMik7DQorICAgICAgICBv cG4gPSAiYWJzLnMiOw0KKwkJYnJlYWs7DQorCWNhc2UgRk9QKDYsIDE2KToN CisJCUNIRUNLX0ZSKGN0eCwgZnMgfCBmZCk7DQorICAgICAgICBHRU5fTE9B RF9GUkVHX0ZUTihXVDAsIGZzKTsNCisJCWdlbl9vcF9mbG9hdF9tb3Zfcygp Ow0KKyAgICAgICAgR0VOX1NUT1JFX0ZUTl9GUkVHKGZkLCBXVDIpOw0KKyAg ICAgICAgb3BuID0gIm1vdi5zIjsNCisJCWJyZWFrOw0KKwljYXNlIEZPUCg3 LCAxNik6DQorCQlDSEVDS19GUihjdHgsIGZzIHwgZmQpOw0KKyAgICAgICAg R0VOX0xPQURfRlJFR19GVE4oV1QwLCBmcyk7DQorCQlnZW5fb3BfZmxvYXRf Y2hzX3MoKTsNCisgICAgICAgIEdFTl9TVE9SRV9GVE5fRlJFRyhmZCwgV1Qy KTsNCisgICAgICAgIG9wbiA9ICJuZWcucyI7DQorCQlicmVhazsNCisJY2Fz ZSBGT1AoMTIsIDE2KToNCisJCUNIRUNLX0ZSKGN0eCwgZnMgfCBmZCk7DQor ICAgICAgICBHRU5fTE9BRF9GUkVHX0ZUTihXVDAsIGZzKTsNCisJCWdlbl9v cF9mbG9hdF9yb3VuZHdfcygpOw0KKyAgICAgICAgR0VOX1NUT1JFX0ZUTl9G UkVHKGZkLCBXVDIpOw0KKyAgICAgICAgb3BuID0gInJvdW5kLncucyI7DQor CQlicmVhazsNCisJY2FzZSBGT1AoMTMsIDE2KToNCisJCUNIRUNLX0ZSKGN0 eCwgZnMgfCBmZCk7DQorICAgICAgICBHRU5fTE9BRF9GUkVHX0ZUTihXVDAs IGZzKTsNCisJCWdlbl9vcF9mbG9hdF90cnVuY3dfcygpOw0KKyAgICAgICAg R0VOX1NUT1JFX0ZUTl9GUkVHKGZkLCBXVDIpOw0KKyAgICAgICAgb3BuID0g InRydW5jLncucyI7DQorCQlicmVhazsNCisgICAgY2FzZSBGT1AoMzIsIDIw KTogLyogY3Z0LnMudyAqLw0KKwkJQ0hFQ0tfRlIoY3R4LCBmcyB8IGZkKTsN CisgICAgICAgIEdFTl9MT0FEX0ZSRUdfRlROKFdUMCwgZnMpOw0KKwkJZ2Vu X29wX2Zsb2F0X2N2dHNfdygpOw0KKyAgICAgICAgR0VOX1NUT1JFX0ZUTl9G UkVHKGZkLCBXVDIpOw0KKyAgICAgICAgb3BuID0gImN2dC5zLnciOw0KKwkJ YnJlYWs7DQorCWNhc2UgRk9QKDQ4LCAxNik6DQorCWNhc2UgRk9QKDQ5LCAx Nik6DQorCWNhc2UgRk9QKDUwLCAxNik6DQorCWNhc2UgRk9QKDUxLCAxNik6 DQorCWNhc2UgRk9QKDUyLCAxNik6DQorCWNhc2UgRk9QKDUzLCAxNik6DQor CWNhc2UgRk9QKDU0LCAxNik6DQorCWNhc2UgRk9QKDU1LCAxNik6DQorCWNh c2UgRk9QKDU2LCAxNik6DQorCWNhc2UgRk9QKDU3LCAxNik6DQorCWNhc2Ug Rk9QKDU4LCAxNik6DQorCWNhc2UgRk9QKDU5LCAxNik6DQorCWNhc2UgRk9Q KDYwLCAxNik6DQorCWNhc2UgRk9QKDYxLCAxNik6DQorCWNhc2UgRk9QKDYy LCAxNik6DQorCWNhc2UgRk9QKDYzLCAxNik6DQorCQlDSEVDS19GUihjdHgs IGZzIHwgZnQpOw0KKyAgICAgICAgR0VOX0xPQURfRlJFR19GVE4oV1QwLCBm cyk7DQorICAgICAgICBHRU5fTE9BRF9GUkVHX0ZUTihXVDEsIGZ0KTsNCisg ICAgICAgIGdlbl9jbXBfcyhmdW5jLTQ4KTsNCisgICAgICAgIG9wbiA9IGNv bmRuYW1lc1tmdW5jLTQ4XTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0OgkNCisg ICAgICAgIGlmIChsb2dsZXZlbCAmIENQVV9MT0dfVEJfSU5fQVNNKSB7DQor ICAgICAgICAgICAgZnByaW50Zihsb2dmaWxlLCAiSW52YWxpZCBhcml0aCBm dW5jdGlvbjogJTA4eCAlMDN4ICUwM3ggJTAzeFxuIiwNCisgICAgICAgICAg ICAgICAgICAgIGN0eC0+b3Bjb2RlLCBjdHgtPm9wY29kZSA+PiAyNiwgY3R4 LT5vcGNvZGUgJiAweDNGLA0KKyAgICAgICAgICAgICAgICAgICAgKChjdHgt Pm9wY29kZSA+PiAxNikgJiAweDFGKSk7DQorICAgICAgICB9DQorICAgICAg ICBnZW5lcmF0ZV9leGNlcHRpb24oY3R4LCBFWENQX1JJKTsNCisgICAgICAg IHJldHVybjsNCisgICAgfQ0KKwlpZiAoYmluYXJ5KQ0KKwkgICAgTUlQU19E RUJVRygiJXMgJXMsICVzLCAlcyIsIG9wbiwgZnJlZ25hbWVzW2ZkXSwgZnJl Z25hbWVzW2ZzXSwgZnJlZ25hbWVzW2Z0XSk7DQorCWVsc2UNCisJCU1JUFNf REVCVUcoIiVzICVzLCVzIiwgb3BuLCBmcmVnbmFtZXNbZmRdLCBmcmVnbmFt ZXNbZnNdKTsNCit9DQorI2VuZGlmDQogDQogLyogSVNBIGV4dGVuc2lvbnMg Ki8NCiAvKiBNSVBTMTYgZXh0ZW5zaW9uIHRvIE1JUFMzMiAqLw0KQEAgLTE0 MzYsNyArMTk2Myw3IEBADQogICAgICAgICB9DQogICAgICAgICBicmVhazsN CiAgICAgY2FzZSAweDAxOiAgICAgICAgICAvKiBCIFJFR0lNTSBvcGNvZGUg Ki8NCi0gICAgICAgIG9wMSA9ICgoY3R4LT5vcGNvZGUgPj4gMTYpICYgMHgx Rik7DQorCSAgICAgICAgb3AxID0gKChjdHgtPm9wY29kZSA+PiAxNikgJiAw eDFGKTsNCiAgICAgICAgIHN3aXRjaCAob3AxKSB7DQogICAgICAgICBjYXNl IDB4MDAgLi4uIDB4MDM6IC8qIFJFR0lNTSBicmFuY2hlcyAqLw0KICAgICAg ICAgY2FzZSAweDEwIC4uLiAweDEzOg0KQEAgLTE0OTUsMTQgKzIwMjIsNDIg QEANCiAgICAgY2FzZSAweDM1OiAvKiBMREMxICovDQogICAgIGNhc2UgMHgz OTogLyogU1dDMSAqLw0KICAgICBjYXNlIDB4M0Q6IC8qIFNEQzEgKi8NCi0g ICAgY2FzZSAweDExOiAgICAgICAgICAvKiBDUDEgb3Bjb2RlICovDQogI2lm IGRlZmluZWQoTUlQU19VU0VTX0ZQVSkNCi0gICAgICAgIC8qIFhYWDogbm90 IGNvcnJlY3QgKi8NCisgICAgICAgIGdlbl9mbHRfbGRzdChjdHgsIG9wLCBy dCwgcnMsIGltbSk7DQogI2Vsc2UNCiAgICAgICAgIGdlbmVyYXRlX2V4Y2Vw dGlvbl9lcnIoY3R4LCBFWENQX0NwVSwgMSk7DQogI2VuZGlmDQogICAgICAg ICBicmVhazsNCiANCisgICAgY2FzZSAweDExOiAgICAgICAgICAvKiBDUDEg b3Bjb2RlICovDQorI2lmIGRlZmluZWQoTUlQU19VU0VTX0ZQVSkNCisgICAg ICAgIG9wMSA9ICgoY3R4LT5vcGNvZGUgPj4gMjEpICYgMHgxRik7DQorICAg ICAgICBzd2l0Y2ggKG9wMSkgew0KKyAgICAgICAgY2FzZSAweDAwOiAvKiBt ZmMxICovDQorICAgICAgICBjYXNlIDB4MDI6IC8qIGNmYzEgKi8NCisgICAg ICAgIGNhc2UgMHgwNDogLyogbXRjMSAqLw0KKyAgICAgICAgY2FzZSAweDA2 OiAvKiBjdGMxICovDQorICAgICAgICAgICAgZ2VuX2NwMShjdHgsIG9wMSB8 IEVYVF9DUDEsIHJ0LCByZCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAg ICAgICBjYXNlIDB4MDg6IC8qIGJjICovDQorCQkJZ2VuX2NvbXB1dGVfYnJh bmNoMShjdHgsIHJ0LCBpbW0gPDwgMik7DQorCSAgICAgICAgcmV0dXJuOw0K KwkJY2FzZSAweDEwOiAvKiAxNjogZm10PXNpbmdsZSBmcCAqLw0KKwkJY2Fz ZSAweDExOiAvKiAxNzogZm10PWRvdWJsZSBmcCAqLw0KKwkJY2FzZSAweDE0 OiAvKiAyMDogZm10PTMyYml0IGZpeGVkICovDQorCQljYXNlIDB4MTU6IC8q IDIxOiBmbXQ9NjRiaXQgZml4ZWQgKi8NCisgICAgICAgICAgICBnZW5fZmFy aXRoKGN0eCwgb3AxLCBydCwgcmQsIHNhLCBjdHgtPm9wY29kZSAmIDB4M2Yp Ow0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgZGVmYXVsdDoNCisJ ICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25fZXJyKGN0eCwgRVhDUF9DcFUs IDEpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAg ICAgYnJlYWs7DQorI2Vsc2UNCisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlv bl9lcnIoY3R4LCBFWENQX0NwVSwgMSk7DQorI2VuZGlmDQorICAgICAgICBi cmVhazsNCisJCQkNCiAgICAgLyogQ09QMi4gICovDQogICAgIGNhc2UgMHgz MjogLyogTFdDMiAqLw0KICAgICBjYXNlIDB4MzY6IC8qIExEQzIgKi8NCkBA IC0xNTM2LDYgKzIwOTEsNyBAQA0KICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0 aW9uKGN0eCwgRVhDUF9SSSk7DQogICAgICAgICBicmVhazsNCiAgICAgfQ0K Kw0KICAgICBpZiAoY3R4LT5oZmxhZ3MgJiBNSVBTX0hGTEFHX0JNQVNLKSB7 DQogICAgICAgICBpbnQgaGZsYWdzID0gY3R4LT5oZmxhZ3M7DQogICAgICAg ICAvKiBCcmFuY2hlcyBjb21wbGV0aW9uICovDQpAQCAtMTcyMiw2ICsyMjc4 LDQ1IEBADQogICAgIHJldHVybiBnZW5faW50ZXJtZWRpYXRlX2NvZGVfaW50 ZXJuYWwoZW52LCB0YiwgMSk7DQogfQ0KIA0KKyNpZmRlZiBNSVBTX1VTRVNf RlBVDQordm9pZCBmcHVfZHVtcF9zdGF0ZShDUFVTdGF0ZSAqZW52LCBGSUxF ICpmLCANCisgICAgICAgICAgICAgICAgICAgIGludCAoKmZwdV9mcHJpbnRm KShGSUxFICpmLCBjb25zdCBjaGFyICpmbXQsIC4uLiksDQorICAgICAgICAg ICAgICAgICAgICBpbnQgZmxhZ3MpDQorew0KKwlpbnQgaTsNCisNCisjCWRl ZmluZSBwcmludGZwcihmcCkgZG8geyBcDQorCQlmcHVfZnByaW50ZihmLCAi dzolMDh4IGQ6JTA4bHglMDhseCBmZDolZyBmczolZ1xuIiwgXA0KKwkJCQko ZnApLT53LCAoZnApLT51MzJbMF0sIChmcCktPnUzMlsxXSwgKGZwKS0+ZmQs IChmcCktPmZzKTsgXA0KKwl9IHdoaWxlKDApDQorDQorICAgIGZwdV9mcHJp bnRmKGYsICJDUDEgRkNSMCAweCUwOHggIEZDUjMxIDB4JTA4eCAgU1IuRlIg JWRcbiIsDQorICAgICAgICAgICAgICAgIGVudi0+ZmNyMCwgZW52LT5mY3Iz MSwNCisJCQkJKGVudi0+Q1AwX1N0YXR1cyAmICgxPDxDUDBTdF9GUikpICE9 IDApOw0KKwlmcHVfZnByaW50ZihmLCAiRlQwOiAiKTsgcHJpbnRmcHIoJmVu di0+ZnQwKTsNCisJZnB1X2ZwcmludGYoZiwgIkZUMTogIik7IHByaW50ZnBy KCZlbnYtPmZ0MSk7DQorCWZwdV9mcHJpbnRmKGYsICJGVDI6ICIpOyBwcmlu dGZwcigmZW52LT5mdDIpOw0KKwlmb3IoaT0wOyBpIDwgMzI7IGkrKykgew0K KyAgICAgICAgZnB1X2ZwcmludGYoZiwgImYlMDJkOiAiLCBpKTsNCisJCXBy aW50ZnByKEZQUihlbnYsIGksIDApKTsNCisJCWlmICghKGVudi0+Q1AwX1N0 YXR1cyAmICgxPDxDUDBTdF9GUikpKQ0KKwkJCWkrKzsNCisJfQ0KKw0KKyN1 bmRlZiBwcmludGZwcg0KK30NCisNCit2b2lkIGR1bXBfZnB1KENQVVN0YXRl ICplbnYpDQorew0KKwlpZiAobG9nbGV2ZWwpIHsJDQorICAgICAgIGZwcmlu dGYobG9nZmlsZSwgInBjPTB4JTA4eCBIST0weCUwOHggTE89MHglMDh4IGRz ICUwNHggJTA4eCAlZFxuIiwNCisgICAgICAgICAgICAgICBlbnYtPlBDLCBl bnYtPkhJLCBlbnYtPkxPLCBlbnYtPmhmbGFncywgZW52LT5idGFyZ2V0LCBl bnYtPmJjb25kKTsNCisgICAgICAgZnB1X2R1bXBfc3RhdGUoZW52LCBsb2dm aWxlLCBmcHJpbnRmLCAwKTsNCisJfQ0KK30NCisNCisjZW5kaWYNCisNCiB2 b2lkIGNwdV9kdW1wX3N0YXRlIChDUFVTdGF0ZSAqZW52LCBGSUxFICpmLCAN CiAgICAgICAgICAgICAgICAgICAgICBpbnQgKCpjcHVfZnByaW50ZikoRklM RSAqZiwgY29uc3QgY2hhciAqZm10LCAuLi4pLA0KICAgICAgICAgICAgICAg ICAgICAgIGludCBmbGFncykNCkBAIC0xNzUxLDYgKzIzNDYsOSBAQA0KICAg ICAgICAgICAgICAgICBjMF9zdGF0dXMsIGVudi0+Q1AwX0NhdXNlLCBlbnYt PkNQMF9FUEMpOw0KICAgICBjcHVfZnByaW50ZihmLCAiICAgIENvbmZpZzAg MHglMDh4IENvbmZpZzEgMHglMDh4IExMQWRkciAweCUwOHhcbiIsDQogICAg ICAgICAgICAgICAgIGVudi0+Q1AwX0NvbmZpZzAsIGVudi0+Q1AwX0NvbmZp ZzEsIGVudi0+Q1AwX0xMQWRkcik7DQorI2lmZGVmIE1JUFNfVVNFU19GUFUN CisJZnB1X2R1bXBfc3RhdGUoZW52LCBmLCBjcHVfZnByaW50ZiwgZmxhZ3Mp Ow0KKyNlbmRpZg0KIH0NCiANCiBDUFVNSVBTU3RhdGUgKmNwdV9taXBzX2lu aXQgKHZvaWQpDQotLS0gL2Rldi9udWxsCTIwMDQtMDMtMDkgMTc6MDU6MjQu MDAwMDAwMDAwICswMTAwDQorKysgdGFyZ2V0LW1pcHMvZm9wX3RlbXBsYXRl LmMJMjAwNi0wNS0wMSAxOToyMzo1MS4wMDAwMDAwMDAgKzAyMDANCkBAIC0w LDAgKzEsODEgQEANCisvKg0KKyAqIE1JUFMgZW11bGF0aW9uIG1pY3JvLW9w ZXJhdGlvbnMgdGVtcGxhdGVzIGZvciBmbG9hdGluZyBwb2ludCByZWcgDQor ICogbG9hZCAmIHN0b3JlIGZvciBxZW11Lg0KKyAqIA0KKyAqIENvcHlyaWdo dCAoYykgMjAwNiBNYXJpdXMgR3JvZWdlcg0KKyAqDQorICogVGhpcyBsaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vcg0KKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXINCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIGxp YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUgR05VDQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisgKg0KKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMNCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5 OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQorICogRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJv c3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQ0KKyAqLw0KKw0KKyNpZiBkZWZp bmVkKEZSRUcpDQorDQorI2RlZmluZSBPUF9MT0FEX0ZSRUcodHJlZywgdHJl Z25hbWUsIHdpZHRoLCBGUkVHKSAgICAgICBcDQorCXZvaWQgZ2x1ZShnbHVl KG9wX2xvYWRfZnByXyx0cmVnbmFtZSksIEZSRUcpICh2b2lkKSBcDQorCXsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQorCSAgICB0cmVnID0gRlBSKGVudiwgRlJFRywgMCktPndpZHRo OyAgICAgICAgICAgICAgICBcDQorCSAgICBSRVRVUk4oKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorCX0NCisNCisjZGVm aW5lIE9QX1NUT1JFX0ZSRUcodHJlZywgdHJlZ25hbWUsIHdpZHRoLCBGUkVH KSAgICAgIFwNCisJdm9pZCBnbHVlKGdsdWUob3Bfc3RvcmVfZnByXyx0cmVn bmFtZSksIEZSRUcpICh2b2lkKVwNCisJeyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisJICAgIEZQUihl bnYsIEZSRUcsIDApLT53aWR0aCA9IHRyZWc7ICAgICAgICAgICAgICAgIFwN CisJICAgIFJFVFVSTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCisJfQ0KKw0KKy8qIFdUMCA9IEZSRUcudzogb3BfbG9h ZF9mcHJfV1QwX2ZwckZSRUcgKi8NCitPUF9MT0FEX0ZSRUcoV1QwLCBXVDBf ZnByLCB3LCBGUkVHKQ0KKy8qIEZSRUcudyA9IFdUMDogb3Bfc3RvcmVfZnBy X1dUMF9mcHJGUkVHICovDQorT1BfU1RPUkVfRlJFRyhXVDAsIFdUMF9mcHIs IHcsIEZSRUcpDQorDQorT1BfTE9BRF9GUkVHKFdUMSwgV1QxX2Zwciwgdywg RlJFRykNCitPUF9TVE9SRV9GUkVHKFdUMSwgV1QxX2ZwciwgdywgRlJFRykN CisNCitPUF9MT0FEX0ZSRUcoV1QyLCBXVDJfZnByLCB3LCBGUkVHKQ0KK09Q X1NUT1JFX0ZSRUcoV1QyLCBXVDJfZnByLCB3LCBGUkVHKQ0KKw0KK09QX0xP QURfRlJFRyhEVDAsIERUMF9mcHIsIGQsIEZSRUcpDQorT1BfU1RPUkVfRlJF RyhEVDAsIERUMF9mcHIsIGQsIEZSRUcpDQorDQorT1BfTE9BRF9GUkVHKERU MSwgRFQxX2ZwciwgZCwgRlJFRykNCitPUF9TVE9SRV9GUkVHKERUMSwgRFQx X2ZwciwgZCwgRlJFRykNCisNCitPUF9MT0FEX0ZSRUcoRFQyLCBEVDJfZnBy LCBkLCBGUkVHKQ0KK09QX1NUT1JFX0ZSRUcoRFQyLCBEVDJfZnByLCBkLCBG UkVHKQ0KKw0KKyNlbmRpZg0KKw0KKyNpZiBkZWZpbmVkIChGVE4pDQorDQor I2RlZmluZSBTRVRfUkVTRVQodHJlZywgdHJlZ25hbWUpICAgIFwNCisgICAg dm9pZCBnbHVlKG9wX3NldCwgdHJlZ25hbWUpKHZvaWQpICAgIFwNCisgICAg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAg dHJlZyA9IFBBUkFNMTsgICAgICAgICAgICAgICBcDQorICAgICAgICBSRVRV Uk4oKTsgICAgICAgICAgICAgICAgICAgIFwNCisgICAgfSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICB2b2lkIGdsdWUob3BfcmVz ZXQsIHRyZWduYW1lKSh2b2lkKSAgXA0KKyAgICB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQorICAgICAgICB0cmVnID0gMDsgICAgICAg ICAgICAgICAgICAgIFwNCisgICAgICAgIFJFVFVSTigpOyAgICAgICAgICAg ICAgICAgICAgXA0KKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQorDQorU0VUX1JFU0VUKFdUMCwgX1dUMCkNCitTRVRfUkVTRVQo V1QxLCBfV1QxKQ0KK1NFVF9SRVNFVChXVDIsIF9XVDIpDQorU0VUX1JFU0VU KERUMCwgX0RUMCkNCitTRVRfUkVTRVQoRFQxLCBfRFQxKQ0KK1NFVF9SRVNF VChEVDIsIF9EVDIpDQorDQorI2VuZGlmDQo= --413958658-1434026107-1146578471=:19632--