From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 95B4689C07 for ; Thu, 9 May 2019 12:39:28 +0000 (UTC) From: Daniel Mrzyglod Date: Thu, 9 May 2019 14:38:07 +0200 Message-Id: <20190509123809.15507-4-daniel.t.mrzyglod@intel.com> In-Reply-To: <20190509123809.15507-1-daniel.t.mrzyglod@intel.com> References: <20190509123809.15507-1-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v5 3/5] lib/intel_mmio: add pointer for read/write register funtions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: VGhpcyBwYXRjaCBpcyBmaXJzdCBtb3ZlIHRvIGV4dGVuZCBmdW5jdGlvbmFsaXR5IG9mIGludGVs X21taW8gbGlicmFyeS4KVGhlcmUgd2FzIGxpbWl0YXRpb24gZm9yIDEgZGV2aWNlLCBhZGRpbmcg cG9pbnRlciBmb3IgSU8gZnVuY3Rpb25zIHRvCm1tYXBlZCBhcmVhIGdpdmVzIHVzIHBvc3NpYmls aXR5IHRvIHVzZSB0aG9zZSBJTyBmdW5jdGlvbnMgZm9yIG90aGVyIG1tYXBlZApkZXZpY2VzLgoK djQ6IHJld29yZCBjb21taXRtc2csIHNwZWxsaW5nIGVycm9ycwoKU2lnbmVkLW9mZi1ieTogRGFu aWVsIE1yenlnbG9kIDxkYW5pZWwudC5tcnp5Z2xvZEBpbnRlbC5jb20+Ci0tLQogbGliL2ludGVs X2lvLmggICAgICAgICAgICAgICB8ICAxMiArLQogbGliL2ludGVsX21taW8uYyAgICAgICAgICAg ICB8ICAyOSArKy0tCiB0ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5jICAgIHwgICAyICstCiB0b29s cy9pbnRlbF9hdWRpb19kdW1wLmMgICAgIHwgMjg5ICsrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tCiB0b29scy9pbnRlbF9iYWNrbGlnaHQuYyAgICAgIHwgIDEwICstCiB0b29scy9p bnRlbF9kaXNwbGF5X3BvbGxlci5jIHwgICA4ICstCiB0b29scy9pbnRlbF9ncHVfdGltZS5jICAg ICAgIHwgICA2ICstCiB0b29scy9pbnRlbF9pbmZvZnJhbWVzLmMgICAgIHwgIDY4ICsrKystLS0t LQogdG9vbHMvaW50ZWxfbGlkLmMgICAgICAgICAgICB8ICAgMiArLQogdG9vbHMvaW50ZWxfcGFu ZWxfZml0dGVyLmMgICB8ICAyNCArLS0KIHRvb2xzL2ludGVsX3JlZy5jICAgICAgICAgICAgfCAg MTAgKy0KIHRvb2xzL2ludGVsX3JlZ19jaGVja2VyLmMgICAgfCAgIDIgKy0KIHRvb2xzL2ludGVs X3dhdGVybWFyay5jICAgICAgfCAgIDIgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDI1MCBpbnNlcnRp b25zKCspLCAyMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2lvLmggYi9s aWIvaW50ZWxfaW8uaAppbmRleCA2MDE0YzQ4NS4uMDY3NGI0MmMgMTAwNjQ0Ci0tLSBhL2xpYi9p bnRlbF9pby5oCisrKyBiL2xpYi9pbnRlbF9pby5oCkBAIC00MiwxMiArNDIsMTIgQEAgdWludDMy X3QgaW50ZWxfcmVnaXN0ZXJfcmVhZCh1aW50MzJfdCByZWcpOwogdm9pZCBpbnRlbF9yZWdpc3Rl cl93cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7CiBpbnQgaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX25lZWRzX2Zha2V3YWtlKHZvaWQpOwogCi11aW50MzJfdCBJTlJFRyh1aW50MzJfdCBy ZWcpOwotdWludDE2X3QgSU5SRUcxNih1aW50MzJfdCByZWcpOwotdWludDhfdCBJTlJFRzgodWlu dDMyX3QgcmVnKTsKLXZvaWQgT1VUUkVHKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKLXZv aWQgT1VUUkVHMTYodWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwpOwotdm9pZCBPVVRSRUc4KHVp bnQzMl90IHJlZywgdWludDhfdCB2YWwpOwordWludDMyX3QgSU5SRUcodm9pZCAqaWd0X21taW8s IHVpbnQzMl90IHJlZyk7Cit1aW50MTZfdCBJTlJFRzE2KHZvaWQgKmlndF9tbWlvLCB1aW50MzJf dCByZWcpOwordWludDhfdCBJTlJFRzgodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZyk7Cit2 b2lkIE9VVFJFRyh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwor dm9pZCBPVVRSRUcxNih2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwp Owordm9pZCBPVVRSRUc4KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFs KTsKIAogLyogc2lkZWJhbmQgYWNjZXNzIGZ1bmN0aW9ucyBmcm9tIGludGVsX2lvc2YuYyAqLwog dWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZCh1aW50MzJfdCByZWcsIGludCBwaHkpOwpkaWZm IC0tZ2l0IGEvbGliL2ludGVsX21taW8uYyBiL2xpYi9pbnRlbF9tbWlvLmMKaW5kZXggYTU0NThh ZWIuLmQ0NzNjZDliIDEwMDY0NAotLS0gYS9saWIvaW50ZWxfbW1pby5jCisrKyBiL2xpYi9pbnRl bF9tbWlvLmMKQEAgLTMwOSw2ICszMDksNyBAQCB3cml0ZV9vdXQ6CiAKIC8qKgogICogSU5SRUc6 CisgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKICAqIEByZWc6IHJlZ2lzdGVyIG9m ZnNldAogICoKICAqIDMyLWJpdCByZWFkIG9mIHRoZSByZWdpc3RlciBhdCBvZmZzZXQgQHJlZy4g VGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhlCkBAIC0zMTksMTMgKzMyMCwxNCBAQCB3 cml0ZV9vdXQ6CiAgKiBSZXR1cm5zOgogICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0 ZXIuCiAgKi8KLXVpbnQzMl90IElOUkVHKHVpbnQzMl90IHJlZykKK3VpbnQzMl90IElOUkVHKHZv aWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcpCiB7Ci0JcmV0dXJuICoodm9sYXRpbGUgdWludDMy X3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3RfZ2xvYmFsX21taW8gKyByZWcpOworCXJldHVybiAq KHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X21taW8gKyByZWcpOwog fQogCiAvKioKICAqIElOUkVHMTY6CisgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIK ICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAogICoKICAqIDE2LWJpdCByZWFkIG9mIHRoZSByZWdp c3RlciBhdCBvZmZzZXQgQHJlZy4gVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhlCkBA IC0zMzYsMTMgKzMzOCwxNCBAQCB1aW50MzJfdCBJTlJFRyh1aW50MzJfdCByZWcpCiAgKiBSZXR1 cm5zOgogICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0ZXIuCiAgKi8KLXVpbnQxNl90 IElOUkVHMTYodWludDMyX3QgcmVnKQordWludDE2X3QgSU5SRUcxNih2b2lkICppZ3RfbW1pbywg dWludDMyX3QgcmVnKQogewotCXJldHVybiAqKHZvbGF0aWxlIHVpbnQxNl90ICopKCh2b2xhdGls ZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvICsgcmVnKTsKKwlyZXR1cm4gKih2b2xhdGlsZSB1aW50 MTZfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9tbWlvICsgcmVnKTsKIH0KIAogLyoqCiAgKiBJ TlJFRzg6CisgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKICAqIEByZWc6IHJlZ2lz dGVyIG9mZnNldAogICoKICAqIDgtYml0IHJlYWQgb2YgdGhlIHJlZ2lzdGVyIGF0IG9mZnNldCBA cmVnLiBUaGlzIGZ1bmN0aW9uIG9ubHkgd29ya3Mgd2hlbiB0aGUKQEAgLTM1MywxMyArMzU2LDE0 IEBAIHVpbnQxNl90IElOUkVHMTYodWludDMyX3QgcmVnKQogICogUmV0dXJuczoKICAqIFRoZSB2 YWx1ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgogICovCi11aW50OF90IElOUkVHOCh1aW50MzJf dCByZWcpCit1aW50OF90IElOUkVHOCh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnKQogewot CXJldHVybiAqKCh2b2xhdGlsZSB1aW50OF90ICopaWd0X2dsb2JhbF9tbWlvICsgcmVnKTsKKwly ZXR1cm4gKigodm9sYXRpbGUgdWludDhfdCAqKWlndF9tbWlvICsgcmVnKTsKIH0KIAogLyoqCiAg KiBPVVRSRUc6CisgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKICAqIEByZWc6IHJl Z2lzdGVyIG9mZnNldAogICogQHZhbDogdmFsdWUgdG8gd3JpdGUKICAqCkBAIC0zNjksOSArMzcz LDkgQEAgdWludDhfdCBJTlJFRzgodWludDMyX3QgcmVnKQogICoKICAqIFRoaXMgZnVuY3Rpb24g ZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91dCBzYWZldHkgY2hl Y2tzLgogICovCi12b2lkIE9VVFJFRyh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKK3ZvaWQg T1VUUkVHKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKIHsKLQkq KHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvICsg cmVnKSA9IHZhbDsKKwkqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0 X21taW8gKyByZWcpID0gdmFsOwogfQogCiAvKioKQEAgLTM4NSwxMyArMzg5LDE0IEBAIHZvaWQg T1VUUkVHKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQogICoKICAqIFRoaXMgZnVuY3Rpb24g ZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91dCBzYWZldHkgY2hl Y2tzLgogICovCi12b2lkIE9VVFJFRzE2KHVpbnQzMl90IHJlZywgdWludDE2X3QgdmFsKQordm9p ZCBPVVRSRUcxNih2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwpCiB7 Ci0JKih2b2xhdGlsZSB1aW50MTZfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1p byArIHJlZykgPSB2YWw7CisJKih2b2xhdGlsZSB1aW50MTZfdCAqKSgodm9sYXRpbGUgY2hhciAq KWlndF9tbWlvICsgcmVnKSA9IHZhbDsKIH0KIAogLyoqCiAgKiBPVVRSRUc4OgorICogQGlndF9t bWlvIG1hcGVkIG1lbW9yeSBwb2ludGVyCiAgKiBAcmVnOiByZWdpc3RlciBvZmZzZXQKICAqIEB2 YWw6IHZhbHVlIHRvIHdyaXRlCiAgKgpAQCAtNDAxLDcgKzQwNiw3IEBAIHZvaWQgT1VUUkVHMTYo dWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwpCiAgKgogICogVGhpcyBmdW5jdGlvbiBkaXJlY3Rs eSBhY2Nlc3NlcyB0aGUgI2lndF9nbG9iYWxfbW1pbyB3aXRob3V0IHNhZmV0eSBjaGVja3MuCiAg Ki8KLXZvaWQgT1VUUkVHOCh1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFsKQordm9pZCBPVVRSRUc4 KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFsKQogewotCSooKHZvbGF0 aWxlIHVpbnQ4X3QgKilpZ3RfZ2xvYmFsX21taW8gKyByZWcpID0gdmFsOworCSooKHZvbGF0aWxl IHVpbnQ4X3QgKilpZ3RfbW1pbyArIHJlZykgPSB2YWw7CiB9CmRpZmYgLS1naXQgYS90ZXN0cy9p OTE1L2k5MTVfcG1fbHBzcC5jIGIvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYwppbmRleCBiMzE5 ZGJlOS4uZjY5Yzg4ZjYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKKysr IGIvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYwpAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgYm9v bCBscHNwX2lzX2VuYWJsZWQoaW50IGRybV9mZCkKIHsKIAl1aW50MzJfdCB2YWw7CiAKLQl2YWwg PSBJTlJFRyhIU1dfUFdSX1dFTExfQ1RMMik7CisJdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlv LCBIU1dfUFdSX1dFTExfQ1RMMik7CiAJcmV0dXJuICEodmFsICYgSFNXX1BXUl9XRUxMX1NUQVRF X0VOQUJMRUQpOwogfQogCmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9hdWRpb19kdW1wLmMgYi90 b29scy9pbnRlbF9hdWRpb19kdW1wLmMKaW5kZXggOTAyNjBhMmYuLjY3OGUxZDA4IDEwMDY0NAot LS0gYS90b29scy9pbnRlbF9hdWRpb19kdW1wLmMKKysrIGIvdG9vbHMvaW50ZWxfYXVkaW9fZHVt cC5jCkBAIC02NywyMyArNjcsMjMgQEAgc3RhdGljIGludCBkaXNwX3JlZ19iYXNlID0gMDsJLyog YmFzZSBhZGRyZXNzIG9mIGRpc3BsYXkgcmVnaXN0ZXJzICovCiAKICNkZWZpbmUgZHVtcF9yZWco cmVnLCBkZXNjKQkJCQkJXAogCWRvIHsJCQkJCQkJXAotCQlkd29yZCA9IElOUkVHKHJlZyk7CVwK KwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZyk7CVwKIAkJcHJpbnRmKCIlLTIx cyglI3gpIDB4JTA4eCAgJXNcbiIsICMgcmVnLCByZWcsIGR3b3JkLCBkZXNjKTsJXAogCX0gd2hp bGUgKDApCiAKICNkZWZpbmUgZHVtcF9kaXNwX3JlZyhyZWcsIGRlc2MpCQkJCQlcCiAJZG8gewkJ CQkJCQlcCi0JCWR3b3JkID0gSU5SRUcoZGlzcF9yZWdfYmFzZSArIHJlZyk7CVwKKwkJZHdvcmQg PSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGRpc3BfcmVnX2Jhc2UgKyByZWcpOwlcCiAJCXByaW50 ZigiJS0yMXMoJSN4KSAweCUwOHggICVzXG4iLCAjIHJlZywgcmVnLCBkd29yZCwgZGVzYyk7CVwK IAl9IHdoaWxlICgwKQogCiAjZGVmaW5lIGR1bXBfYXVkX3JlZyhyZWcsIGRlc2MpCQkJCQlcCiAJ ZG8gewkJCQkJCQlcCi0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgcmVnKTsJXAorCQlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgcmVnKTsJXAogCQlw cmludGYoIiUtMjFzKCUjeCkgMHglMDh4ICAlc1xuIiwgIyByZWcsIHJlZywgZHdvcmQsIGRlc2Mp OwlcCiAJfSB3aGlsZSAoMCkKIAotI2RlZmluZSByZWFkX2F1ZF9yZWcocmVnKQlJTlJFRyhhdWRf cmVnX2Jhc2UgKyAocmVnKSkKKyNkZWZpbmUgcmVhZF9hdWRfcmVnKHJlZykJSU5SRUcoaWd0X2ds b2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyAocmVnKSkKIAogc3RhdGljIGludCBnZXRfbnVtX3Bp cGVzKHZvaWQpCiB7CkBAIC01MzIsMzEgKzUzMiwzMSBAQCBzdGF0aWMgdm9pZCBkdW1wX2VhZ2xl bGFrZSh2b2lkKQogCiAJcHJpbnRmKCJcbkRldGFpbHM6XG5cbiIpOwogCi0JZHdvcmQgPSBJTlJF RyhBVURfVklEX0RJRCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9WSURf RElEKTsKIAlwcmludGYoIkFVRF9WSURfRElEIHZlbmRvciBpZFx0XHRcdDB4JXhcbiIsIGR3b3Jk ID4+IDE2KTsKIAlwcmludGYoIkFVRF9WSURfRElEIGRldmljZSBpZFx0XHRcdDB4JXhcbiIsIGR3 b3JkICYgMHhmZmZmKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1JJRCk7CisJZHdvcmQgPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9SSUQpOwogCXByaW50ZigiQVVEX1JJRCBtYWpvciByZXZp c2lvblx0XHRcdDB4JWx4XG4iLCBCSVRTKGR3b3JkLCAyMywgMjApKTsKIAlwcmludGYoIkFVRF9S SUQgbWlub3IgcmV2aXNpb25cdFx0XHQweCVseFxuIiwgQklUUyhkd29yZCwgMTksIDE2KSk7CiAJ cHJpbnRmKCJBVURfUklEIHJldmlzaW9uIGlkXHRcdFx0MHglbHhcbiIsICAgIEJJVFMoZHdvcmQs IDE1LCA4KSk7CiAJcHJpbnRmKCJBVURfUklEIHN0ZXBwaW5nIGlkXHRcdFx0MHglbHhcbiIsICAg IEJJVFMoZHdvcmQsIDcsIDApKTsKIAotCWR3b3JkID0gSU5SRUcoU0RWT0IpOworCWR3b3JkID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBTRFZPQik7CiAJcHJpbnRmKCJTRFZPQiBlbmFibGVcdFx0 XHRcdCV1XG4iLCAgICAgICEhKGR3b3JkICYgU0RWT19FTkFCTEUpKTsKIAlwcmludGYoIlNEVk9C IEhETUkgZW5jb2RpbmdcdFx0XHQldVxuIiwgISEoZHdvcmQgJiBTRFZPX0VOQ09ESU5HX0hETUkp KTsKIAlwcmludGYoIlNEVk9CIFNEVk8gZW5jb2RpbmdcdFx0XHQldVxuIiwgISEoZHdvcmQgJiBT RFZPX0VOQ09ESU5HX1NEVk8pKTsKIAlwcmludGYoIlNEVk9CIG51bGwgcGFja2V0c1x0XHRcdCV1 XG4iLCAgISEoZHdvcmQgJiBTRFZPX05VTExfUEFDS0VUU19EVVJJTkdfVlNZTkMpKTsKIAlwcmlu dGYoIlNEVk9CIGF1ZGlvIGVuYWJsZWRcdFx0XHQldVxuIiwgISEoZHdvcmQgJiBTRFZPX0FVRElP X0VOQUJMRSkpOwogCi0JZHdvcmQgPSBJTlJFRyhTRFZPQyk7CisJZHdvcmQgPSBJTlJFRyhpZ3Rf Z2xvYmFsX21taW8sIFNEVk9DKTsKIAlwcmludGYoIlNEVk9DIGVuYWJsZVx0XHRcdFx0JXVcbiIs ICAgICAgISEoZHdvcmQgJiBTRFZPX0VOQUJMRSkpOwogCXByaW50ZigiU0RWT0MgSERNSSBlbmNv ZGluZ1x0XHRcdCV1XG4iLCAhIShkd29yZCAmIFNEVk9fRU5DT0RJTkdfSERNSSkpOwogCXByaW50 ZigiU0RWT0MgU0RWTyBlbmNvZGluZ1x0XHRcdCV1XG4iLCAhIShkd29yZCAmIFNEVk9fRU5DT0RJ TkdfU0RWTykpOwogCXByaW50ZigiU0RWT0MgbnVsbCBwYWNrZXRzXHRcdFx0JXVcbiIsICAhIShk d29yZCAmIFNEVk9fTlVMTF9QQUNLRVRTX0RVUklOR19WU1lOQykpOwogCXByaW50ZigiU0RWT0Mg YXVkaW8gZW5hYmxlZFx0XHRcdCV1XG4iLCAhIShkd29yZCAmIFNEVk9fQVVESU9fRU5BQkxFKSk7 CiAKLQlkd29yZCA9IElOUkVHKFBPUlRfSE9UUExVR19FTik7CisJZHdvcmQgPSBJTlJFRyhpZ3Rf Z2xvYmFsX21taW8sIFBPUlRfSE9UUExVR19FTik7CiAJcHJpbnRmKCJQT1JUX0hPVFBMVUdfRU4g RGlzcGxheVBvcnQvSERNSSBwb3J0IEJcdCVsZFxuIiwgQklUKGR3b3JkLCAyOSkpLAogCXByaW50 ZigiUE9SVF9IT1RQTFVHX0VOIERpc3BsYXlQb3J0L0hETUkgcG9ydCBDXHQlbGRcbiIsIEJJVChk d29yZCwgMjgpKSwKIAlwcmludGYoIlBPUlRfSE9UUExVR19FTiBEaXNwbGF5UG9ydCBwb3J0IERc dCVsZFxuIiwgICAgICBCSVQoZHdvcmQsIDI3KSksCkBAIC01NjYsNyArNTY2LDcgQEAgc3RhdGlj IHZvaWQgZHVtcF9lYWdsZWxha2Uodm9pZCkKIAlwcmludGYoIlBPUlRfSE9UUExVR19FTiBUVlx0 XHRcdCVsZFxuIiwgICAgQklUKGR3b3JkLCAyMykpLAogCXByaW50ZigiUE9SVF9IT1RQTFVHX0VO IENSVFx0XHRcdCVsZFxuIiwgICBCSVQoZHdvcmQsIDkpKSwKIAotCWR3b3JkID0gSU5SRUcoVklE RU9fRElQX0NUTCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIFZJREVPX0RJUF9D VEwpOwogCXByaW50ZigiVklERU9fRElQX0NUTCBlbmFibGUgZ3JhcGhpY3MgRElQXHQlbGRcbiIs ICAgICBCSVQoZHdvcmQsIDMxKSksCiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMIHBvcnQgc2VsZWN0 XHRcdFsweCVseF0gJXNcbiIsCiAJCQkJQklUUyhkd29yZCwgMzAsIDI5KSwgZGlwX3BvcnRbQklU Uyhkd29yZCwgMzAsIDI5KV0pOwpAQCAtNTgxLDQ2ICs1ODEsNDYgQEAgc3RhdGljIHZvaWQgZHVt cF9lYWdsZWxha2Uodm9pZCkKIAlwcmludGYoIlZJREVPX0RJUF9DVEwgRElQIGJ1ZmZlciBzaXpl XHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMTEsIDgpKTsKIAlwcmludGYoIlZJREVPX0RJUF9DVEwg RElQIGFkZHJlc3NcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAzLCAwKSk7CiAKLQlkd29yZCA9IElO UkVHKEFVRF9DT05GSUcpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ09O RklHKTsKIAlwcmludGYoIkFVRF9DT05GSUcgcGl4ZWwgY2xvY2tcdFx0XHRbMHglbHhdICVzXG4i LCBCSVRTKGR3b3JkLCAxOSwgMTYpLAogCQkJT1BOQU1FKHBpeGVsX2Nsb2NrLCBCSVRTKGR3b3Jk LCAxOSwgMTYpKSk7CiAJcHJpbnRmKCJBVURfQ09ORklHIGZhYnJpY2F0aW9uIGVuYWJsZWRcdFx0 JWx1XG4iLCBCSVRTKGR3b3JkLCAyLCAyKSk7CiAJcHJpbnRmKCJBVURfQ09ORklHIHByb2Zlc3Np b25hbCB1c2UgYWxsb3dlZFx0JWx1XG4iLCBCSVQoZHdvcmQsIDEpKTsKIAlwcmludGYoIkFVRF9D T05GSUcgZnVzZSBlbmFibGVkXHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDApKTsKIAotCWR3b3Jk ID0gSU5SRUcoQVVEX0RFQlVHKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVE X0RFQlVHKTsKIAlwcmludGYoIkFVRF9ERUJVRyBmdW5jdGlvbiByZXNldFx0XHQlbHVcbiIsIEJJ VChkd29yZCwgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfU1VCTl9DTlQpOworCWR3b3JkID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfU1VCTl9DTlQpOwogCXByaW50ZigiQVVEX1NVQk5f Q05UIHN0YXJ0aW5nIG5vZGUgbnVtYmVyXHQweCVseFxuIiwgIEJJVFMoZHdvcmQsIDIzLCAxNikp OwogCXByaW50ZigiQVVEX1NVQk5fQ05UIHRvdGFsIG51bWJlciBvZiBub2Rlc1x0MHglbHhcbiIs IEJJVFMoZHdvcmQsIDcsIDApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1NVQk5fQ05UMik7CisJ ZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9TVUJOX0NOVDIpOwogCXByaW50Zigi QVVEX1NVQk5fQ05UMiBzdGFydGluZyBub2RlIG51bWJlclx0MHglbHhcbiIsICBCSVRTKGR3b3Jk LCAyNCwgMTYpKTsKIAlwcmludGYoIkFVRF9TVUJOX0NOVDIgdG90YWwgbnVtYmVyIG9mIG5vZGVz XHQweCVseFxuIiwgQklUUyhkd29yZCwgNywgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfRlVO Q19HUlApOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfRlVOQ19HUlApOwog CXByaW50ZigiQVVEX0ZVTkNfR1JQIHVuc29sIGNhcGFibGVcdFx0JWx1XG4iLCBCSVQoZHdvcmQs IDgpKTsKIAlwcmludGYoIkFVRF9GVU5DX0dSUCBub2RlIHR5cGVcdFx0XHQweCVseFxuIiwgQklU Uyhkd29yZCwgNywgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfR1JQX0NBUCk7CisJZHdvcmQg PSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9HUlBfQ0FQKTsKIAlwcmludGYoIkFVRF9HUlBf Q0FQIGJlZXAgMFx0XHRcdCVsdVxuIiwgICAgICAgQklUKGR3b3JkLCAxNikpOwogCXByaW50Zigi QVVEX0dSUF9DQVAgaW5wdXQgZGVsYXlcdFx0XHQlbHVcbiIsICBCSVRTKGR3b3JkLCAxMSwgOCkp OwogCXByaW50ZigiQVVEX0dSUF9DQVAgb3V0cHV0IGRlbGF5XHRcdCVsdVxuIiwgICBCSVRTKGR3 b3JkLCAzLCAwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9QV1JTVCk7CisJZHdvcmQgPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9QV1JTVCk7CiAJcHJpbnRmKCJBVURfUFdSU1QgZGV2aWNl IHBvd2VyIHN0YXRlXHRcdCVzXG4iLAogCQkJcG93ZXJfc3RhdGVbQklUUyhkd29yZCwgNSwgNCld KTsKIAlwcmludGYoIkFVRF9QV1JTVCBkZXZpY2UgcG93ZXIgc3RhdGUgc2V0dGluZ1x0JXNcbiIs CiAJCQlwb3dlcl9zdGF0ZVtCSVRTKGR3b3JkLCAxLCAwKV0pOwogCi0JZHdvcmQgPSBJTlJFRyhB VURfU1VQUFdSKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX1NVUFBXUik7 CiAJcHJpbnRmKCJBVURfU1VQUFdSIHN1cHBvcnQgRDBcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwg MCkpOwogCXByaW50ZigiQVVEX1NVUFBXUiBzdXBwb3J0IEQxXHRcdFx0JWx1XG4iLCBCSVQoZHdv cmQsIDEpKTsKIAlwcmludGYoIkFVRF9TVVBQV1Igc3VwcG9ydCBEMlx0XHRcdCVsdVxuIiwgQklU KGR3b3JkLCAyKSk7CiAJcHJpbnRmKCJBVURfU1VQUFdSIHN1cHBvcnQgRDNcdFx0XHQlbHVcbiIs IEJJVChkd29yZCwgMykpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX0NXQ0FQKTsKKwlkd29y ZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9DV0NBUCk7CiAJcHJpbnRmKCJBVURf T1VUX0NXQ0FQIHdpZGdldCB0eXBlXHRcdDB4JWx4XG4iLCAgQklUUyhkd29yZCwgMjMsIDIwKSk7 CiAJcHJpbnRmKCJBVURfT1VUX0NXQ0FQIHNhbXBsZSBkZWxheVx0XHQweCVseFxuIiwgQklUUyhk d29yZCwgMTksIDE2KSk7CiAJcHJpbnRmKCJBVURfT1VUX0NXQ0FQIGNoYW5uZWwgY291bnRcdFx0 JWx1XG4iLApAQCAtNjM2LDcgKzYzNiw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfZWFnbGVsYWtlKHZv aWQpCiAJcHJpbnRmKCJBVURfT1VUX0NXQ0FQIG91dCBhbXAgcHJlc2VudFx0XHQlbHVcbiIsICBC SVQoZHdvcmQsIDIpKTsKIAlwcmludGYoIkFVRF9PVVRfQ1dDQVAgaW4gYW1wIHByZXNlbnRcdFx0 JWx1XG4iLCAgIEJJVChkd29yZCwgMSkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX0RJR19D TlZUKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9ESUdfQ05WVCk7 CiAJcHJpbnRmKCJBVURfT1VUX0RJR19DTlZUIFNQRElGIGNhdGVnb3J5XHRcdDB4JWx4XG4iLCBC SVRTKGR3b3JkLCAxNCwgOCkpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVCBTUERJRiBsZXZl bFx0XHQlbHVcbiIsICAgICAgQklUKGR3b3JkLCA3KSk7CiAJcHJpbnRmKCJBVURfT1VUX0RJR19D TlZUIHByb2Zlc3Npb25hbFx0XHQlbHVcbiIsICAgICBCSVQoZHdvcmQsIDYpKTsKQEAgLTY0Nywx NiArNjQ3LDE2IEBAIHN0YXRpYyB2b2lkIGR1bXBfZWFnbGVsYWtlKHZvaWQpCiAJcHJpbnRmKCJB VURfT1VUX0RJR19DTlZUIHZhbGlkaXR5IGZsYWdcdFx0JWx1XG4iLCAgICBCSVQoZHdvcmQsIDEp KTsKIAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlQgZGlnaXRhbCBlbmFibGVcdFx0JWx1XG4iLCAg IEJJVChkd29yZCwgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX0NIX1NUUik7CisJZHdv cmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfQ0hfU1RSKTsKIAlwcmludGYoIkFV RF9PVVRfQ0hfU1RSIHN0cmVhbSBpZFx0XHQweCVseFxuIiwgICAgICAgIEJJVFMoZHdvcmQsIDcs IDQpKTsKIAlwcmludGYoIkFVRF9PVVRfQ0hfU1RSIGxvd2VzdCBjaGFubmVsXHRcdCVsdVxuIiwg ICAgIEJJVFMoZHdvcmQsIDMsIDApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX09VVF9TVFJfREVT Qyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfU1RSX0RFU0MpOwog CXByaW50ZigiQVVEX09VVF9TVFJfREVTQyBzdHJlYW0gY2hhbm5lbHNcdCVsdVxuIiwgICAgQklU Uyhkd29yZCwgMywgMCkgKyAxKTsKIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0MgQml0cyBwZXIg U2FtcGxlXHRbJSNseF0gJXNcbiIsCiAJCQlCSVRTKGR3b3JkLCA2LCA0KSwgT1BOQU1FKGJpdHNf cGVyX3NhbXBsZSwgQklUUyhkd29yZCwgNiwgNCkpKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1BJ TldfQ0FQKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX1BJTldfQ0FQKTsK IAlwcmludGYoIkFVRF9QSU5XX0NBUCB3aWRnZXQgdHlwZVx0XHQweCVseFxuIiwgICAgICAgIEJJ VFMoZHdvcmQsIDIzLCAyMCkpOwogCXByaW50ZigiQVVEX1BJTldfQ0FQIHNhbXBsZSBkZWxheVx0 XHQweCVseFxuIiwgICAgICAgQklUUyhkd29yZCwgMTksIDE2KSk7CiAJcHJpbnRmKCJBVURfUElO V19DQVAgY2hhbm5lbCBjb3VudFx0XHQlbHVcbiIsCkBAIC02NzQsMTMgKzY3NCwxMyBAQCBzdGF0 aWMgdm9pZCBkdW1wX2VhZ2xlbGFrZSh2b2lkKQogCXByaW50ZigiQVVEX1BJTldfQ0FQIGluIGFt cCBwcmVzZW50XHRcdCVsdVxuIiwgICAgICAgQklUKGR3b3JkLCAxKSk7CiAKIAotCWR3b3JkID0g SU5SRUcoQVVEX1BJTl9DQVApOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURf UElOX0NBUCk7CiAJcHJpbnRmKCJBVURfUElOX0NBUCBFQVBEXHRcdFx0JWx1XG4iLCAgICAgICAg ICBCSVQoZHdvcmQsIDE2KSk7CiAJcHJpbnRmKCJBVURfUElOX0NBUCBIRE1JXHRcdFx0JWx1XG4i LCAgICAgICAgICBCSVQoZHdvcmQsIDcpKTsKIAlwcmludGYoIkFVRF9QSU5fQ0FQIG91dHB1dFx0 XHRcdCVsdVxuIiwgICAgICAgIEJJVChkd29yZCwgNCkpOwogCXByaW50ZigiQVVEX1BJTl9DQVAg cHJlc2VuY2UgZGV0ZWN0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAyKSk7CiAKLQlkd29yZCA9IElO UkVHKEFVRF9QSU5XX0NOVFIpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURf UElOV19DTlRSKTsKIAlwcmludGYoIkFVRF9QSU5XX0NOVFIgbXV0ZSBzdGF0dXNcdFx0JWx1XG4i LCAgICAgQklUKGR3b3JkLCA4KSk7CiAJcHJpbnRmKCJBVURfUElOV19DTlRSIG91dCBlbmFibGVc dFx0JWx1XG4iLCAgICAgIEJJVChkd29yZCwgNikpOwogCXByaW50ZigiQVVEX1BJTldfQ05UUiBh bXAgbXV0ZSBzdGF0dXNcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDgpKTsKQEAgLTY4OSwxMCArNjg5 LDEwIEBAIHN0YXRpYyB2b2lkIGR1bXBfZWFnbGVsYWtlKHZvaWQpCiAJCQlCSVRTKGR3b3JkLCAy LCAwKSwKIAkJCU9QTkFNRShzdHJlYW1fdHlwZSwgQklUUyhkd29yZCwgMiwgMCkpKTsKIAotCWR3 b3JkID0gSU5SRUcoQVVEX1BJTldfVU5TT0xSRVNQKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9i YWxfbW1pbywgQVVEX1BJTldfVU5TT0xSRVNQKTsKIAlwcmludGYoIkFVRF9QSU5XX1VOU09MUkVT UCBlbmFibGUgdW5zb2wgcmVzcFx0JWx1XG4iLCBCSVQoZHdvcmQsIDMxKSk7CiAKLQlkd29yZCA9 IElOUkVHKEFVRF9DTlRMX1NUKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVE X0NOVExfU1QpOwogCXByaW50ZigiQVVEX0NOVExfU1QgRElQIGF1ZGlvIGVuYWJsZWRcdFx0JWx1 XG4iLCBCSVQoZHdvcmQsIDIxKSk7CiAJcHJpbnRmKCJBVURfQ05UTF9TVCBESVAgQUNQIGVuYWJs ZWRcdFx0JWx1XG4iLCAgIEJJVChkd29yZCwgMjIpKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUIERJ UCBJU1JDeCBlbmFibGVkXHRcdCVsdVxuIiwgQklUKGR3b3JkLCAyMykpOwpAQCAtNzA5LDM4ICs3 MDksMzkgQEAgc3RhdGljIHZvaWQgZHVtcF9lYWdsZWxha2Uodm9pZCkKIAlwcmludGYoIkFVRF9D TlRMX1NUIEVMRCBidWZzaXplXHRcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxMywgOSkpOwogCXBy aW50ZigiQVVEX0NOVExfU1QgRUxEIGFkZHJlc3NcdFx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDgs IDUpKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX0hETUlXX1NUQVRVUyk7CisJZHdvcmQgPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9IRE1JV19TVEFUVVMpOwogCXByaW50ZigiQVVEX0hETUlX X1NUQVRVUyBDRENMSy9ET1RDTEsgdW5kZXJydW5cdCVsdVxuIiwgQklUKGR3b3JkLCAzMSkpOwog CXByaW50ZigiQVVEX0hETUlXX1NUQVRVUyBDRENMSy9ET1RDTEsgb3ZlcnJ1blx0JWx1XG4iLCAg QklUKGR3b3JkLCAzMCkpOwogCXByaW50ZigiQVVEX0hETUlXX1NUQVRVUyBCQ0xLL0NEQ0xLIHVu ZGVycnVuXHQlbHVcbiIsICAgQklUKGR3b3JkLCAyOSkpOwogCXByaW50ZigiQVVEX0hETUlXX1NU QVRVUyBCQ0xLL0NEQ0xLIG92ZXJydW5cdCVsdVxuIiwgICAgQklUKGR3b3JkLCAyOCkpOwogCi0J ZHdvcmQgPSBJTlJFRyhBVURfQ09OVl9DSENOVCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFs X21taW8sIEFVRF9DT05WX0NIQ05UKTsKIAlwcmludGYoIkFVRF9DT05WX0NIQ05UIEhETUkgSEJS IGVuYWJsZWRcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxNSwgMTQpKTsKIAlwcmludGYoIkFVRF9D T05WX0NIQ05UIEhETUkgY2hhbm5lbCBjb3VudFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxMSwgOCkg KyAxKTsKIAogCXByaW50ZigiQVVEX0NPTlZfQ0hDTlQgSERNSSBjaGFubmVsIG1hcHBpbmc6XG4i KTsKIAlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7Ci0JCU9VVFJFRyhBVURfQ09OVl9DSENOVCwg aSk7Ci0JCWR3b3JkID0gSU5SRUcoQVVEX0NPTlZfQ0hDTlQpOworCQlPVVRSRUcoaWd0X2dsb2Jh bF9tbWlvLCBBVURfQ09OVl9DSENOVCwgaSk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9t bWlvLCBBVURfQ09OVl9DSENOVCk7CiAJCXByaW50ZigiXHRcdFx0XHRcdFsweCV4XSAldSA9PiAl bHVcbiIsIGR3b3JkLCBpLCBCSVRTKGR3b3JkLCA3LCA0KSk7CiAJfQogCiAJcHJpbnRmKCJBVURf SERNSVdfSERNSUVESUQgSERNSSBFTEQ6XG5cdCIpOwotCWR3b3JkID0gSU5SRUcoQVVEX0NOVExf U1QpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVCk7CiAJZHdv cmQgJj0gfkJJVE1BU0soOCwgNSk7Ci0JT1VUUkVHKEFVRF9DTlRMX1NULCBkd29yZCk7CisJT1VU UkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1QsIGR3b3JkKTsKIAlmb3IgKGkgPSAwOyBp IDwgQklUUyhkd29yZCwgMTQsIDEwKSAvIDQ7IGkrKykKLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25s KElOUkVHKEFVRF9IRE1JV19IRE1JRURJRCkpKTsKKwkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElO UkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0hETUlXX0hETUlFRElEKSkpOwogCXByaW50ZigiXG4i KTsKIAogCXByaW50ZigiQVVEX0hETUlXX0lORk9GUiBIRE1JIGF1ZGlvIEluZm9mcmFtZTpcblx0 Iik7Ci0JZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xv YmFsX21taW8sIEFVRF9DTlRMX1NUKTsKIAlkd29yZCAmPSB+QklUTUFTSygyMCwgMTgpOwogCWR3 b3JkICY9IH5CSVRNQVNLKDMsIDApOwotCU9VVFJFRyhBVURfQ05UTF9TVCwgZHdvcmQpOworCU9V VFJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NULCBkd29yZCk7CiAJZm9yIChpID0gMDsg aSA8IDg7IGkrKykKLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKEFVRF9IRE1JV19JTkZP RlIpKSk7CisJCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhpZ3RfZ2xvYmFsX21taW8sCisJ CQkJCSAgICBBVURfSERNSVdfSU5GT0ZSKSkpOwogCXByaW50ZigiXG4iKTsKIH0KIApAQCAtODYz LDcgKzg2NCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAKIAlwcmludGYoIlxuRGV0 YWlsczpcblxuIik7CiAKLQlkd29yZCA9IElOUkVHKFZJREVPX0RJUF9DVExfQSk7CisJZHdvcmQg PSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIFZJREVPX0RJUF9DVExfQSk7CiAJcHJpbnRmKCJWSURF T19ESVBfQ1RMX0EgRW5hYmxlX0dyYXBoaWNzX0RJUFx0XHRcdCVsZFxuIiwgICAgIEJJVChkd29y ZCwgMzEpKSwKIAlwcmludGYoIlZJREVPX0RJUF9DVExfQSBHQ1BfRElQX2VuYWJsZVx0XHRcdFx0 JWxkXG4iLCAgICAgQklUKGR3b3JkLCAyNSkpLAogCXByaW50ZigiVklERU9fRElQX0NUTF9BIFZp ZGVvX0RJUF90eXBlX2VuYWJsZSBBVklcdFx0JWx1XG4iLCAgICAgICBCSVQoZHdvcmQsIDIxKSk7 CkBAIC04NzcsNyArODc4LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYo IlZJREVPX0RJUF9DVExfQSBWaWRlb19ESVBfYnVmZmVyX3NpemVcdFx0XHQlbHVcbiIsIEJJVFMo ZHdvcmQsIDExLCA4KSk7CiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0EgVmlkZW9fRElQX2FjY2Vz c19hZGRyZXNzXHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMywgMCkpOwogCi0JZHdvcmQgPSBJTlJF RyhWSURFT19ESVBfQ1RMX0IpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBWSURF T19ESVBfQ1RMX0IpOwogCXByaW50ZigiVklERU9fRElQX0NUTF9CIEVuYWJsZV9HcmFwaGljc19E SVBcdFx0XHQlbGRcbiIsICAgICBCSVQoZHdvcmQsIDMxKSksCiAJcHJpbnRmKCJWSURFT19ESVBf Q1RMX0IgR0NQX0RJUF9lbmFibGVcdFx0XHRcdCVsZFxuIiwgICAgIEJJVChkd29yZCwgMjUpKSwK IAlwcmludGYoIlZJREVPX0RJUF9DVExfQiBWaWRlb19ESVBfdHlwZV9lbmFibGUgQVZJXHRcdCVs dVxuIiwgICAgICAgQklUKGR3b3JkLCAyMSkpOwpAQCAtODkxLDcgKzg5Miw3IEBAIHN0YXRpYyB2 b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0IgVmlkZW9fRElQX2J1 ZmZlcl9zaXplXHRcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxMSwgOCkpOwogCXByaW50ZigiVklE RU9fRElQX0NUTF9CIFZpZGVvX0RJUF9hY2Nlc3NfYWRkcmVzc1x0XHQlbHVcbiIsIEJJVFMoZHdv cmQsIDMsIDApKTsKIAotCWR3b3JkID0gSU5SRUcoVklERU9fRElQX0NUTF9DKTsKKwlkd29yZCA9 IElOUkVHKGlndF9nbG9iYWxfbW1pbywgVklERU9fRElQX0NUTF9DKTsKIAlwcmludGYoIlZJREVP X0RJUF9DVExfQyBFbmFibGVfR3JhcGhpY3NfRElQXHRcdFx0JWxkXG4iLCAgICAgQklUKGR3b3Jk LCAzMSkpLAogCXByaW50ZigiVklERU9fRElQX0NUTF9DIEdDUF9ESVBfZW5hYmxlXHRcdFx0XHQl bGRcbiIsICAgICBCSVQoZHdvcmQsIDI1KSksCiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0MgVmlk ZW9fRElQX3R5cGVfZW5hYmxlIEFWSVx0XHQlbHVcbiIsICAgICAgIEJJVChkd29yZCwgMjEpKTsK QEAgLTkwNSwxNyArOTA2LDE3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRm KCJWSURFT19ESVBfQ1RMX0MgVmlkZW9fRElQX2J1ZmZlcl9zaXplXHRcdFx0JWx1XG4iLCBCSVRT KGR3b3JkLCAxMSwgOCkpOwogCXByaW50ZigiVklERU9fRElQX0NUTF9DIFZpZGVvX0RJUF9hY2Nl c3NfYWRkcmVzc1x0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDMsIDApKTsKIAotCWR3b3JkID0gSU5S RUcoQVVEX1ZJRF9ESUQpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfVklE X0RJRCk7CiAJcHJpbnRmKCJBVURfVklEX0RJRCB2ZW5kb3IgaWRcdFx0XHRcdFx0MHgleFxuIiwg ZHdvcmQgPj4gMTYpOwogCXByaW50ZigiQVVEX1ZJRF9ESUQgZGV2aWNlIGlkXHRcdFx0XHRcdDB4 JXhcbiIsIGR3b3JkICYgMHhmZmZmKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1JJRCk7CisJZHdv cmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9SSUQpOwogCXByaW50ZigiQVVEX1JJRCBN YWpvcl9SZXZpc2lvblx0XHRcdFx0XHQweCVseFxuIiwgQklUUyhkd29yZCwgMjMsIDIwKSk7CiAJ cHJpbnRmKCJBVURfUklEIE1pbm9yX1JldmlzaW9uXHRcdFx0XHRcdDB4JWx4XG4iLCBCSVRTKGR3 b3JkLCAxOSwgMTYpKTsKIAlwcmludGYoIkFVRF9SSUQgUmV2aXNpb25fSWRcdFx0XHRcdFx0MHgl bHhcbiIsICAgIEJJVFMoZHdvcmQsIDE1LCA4KSk7CiAJcHJpbnRmKCJBVURfUklEIFN0ZXBwaW5n X0lkXHRcdFx0XHRcdDB4JWx4XG4iLCAgICBCSVRTKGR3b3JkLCA3LCAwKSk7CiAKLQlkd29yZCA9 IElOUkVHKEhETUlCKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgSERNSUIpOwog CXByaW50ZigiSERNSUIgUG9ydF9FbmFibGVcdFx0XHRcdFx0JXVcbiIsICAgICAgISEoZHdvcmQg JiBTRFZPX0VOQUJMRSkpOwogCXByaW50ZigiSERNSUIgVHJhbnNjb2Rlcl9TZWxlY3RcdFx0XHRc dFx0WzB4JWx4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDMwLCAyOSksIHRyYW5zY29kZXJfc2Vs ZWN0W0JJVFMoZHdvcmQsIDMwLCAyOSldKTsKQEAgLTkyOCw3ICs5MjksNyBAQCBzdGF0aWMgdm9p ZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiSERNSUIgSERNSV9vcl9EVklfU2VsZWN0XHRcdFx0 XHQlc1xuIiwgQklUKGR3b3JkLCA5KSA/ICJIRE1JIiA6ICJEVkkiKTsKIAlwcmludGYoIkhETUlC IEF1ZGlvX091dHB1dF9FbmFibGVcdFx0XHRcdCV1XG4iLCAhIShkd29yZCAmIFNEVk9fQVVESU9f RU5BQkxFKSk7CiAKLQlkd29yZCA9IElOUkVHKEhETUlDKTsKKwlkd29yZCA9IElOUkVHKGlndF9n bG9iYWxfbW1pbywgSERNSUMpOwogCXByaW50ZigiSERNSUMgUG9ydF9FbmFibGVcdFx0XHRcdFx0 JXVcbiIsICAgICAgISEoZHdvcmQgJiBTRFZPX0VOQUJMRSkpOwogCXByaW50ZigiSERNSUMgVHJh bnNjb2Rlcl9TZWxlY3RcdFx0XHRcdFx0WzB4JWx4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDMw LCAyOSksIHRyYW5zY29kZXJfc2VsZWN0W0JJVFMoZHdvcmQsIDMwLCAyOSldKTsKQEAgLTk0MSw3 ICs5NDIsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiSERNSUMgSERN SV9vcl9EVklfU2VsZWN0XHRcdFx0XHQlc1xuIiwgQklUKGR3b3JkLCA5KSA/ICJIRE1JIiA6ICJE VkkiKTsKIAlwcmludGYoIkhETUlDIEF1ZGlvX091dHB1dF9FbmFibGVcdFx0XHRcdCV1XG4iLCAh IShkd29yZCAmIFNEVk9fQVVESU9fRU5BQkxFKSk7CiAKLQlkd29yZCA9IElOUkVHKEhETUlEKTsK Kwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgSERNSUQpOwogCXByaW50ZigiSERNSUQg UG9ydF9FbmFibGVcdFx0XHRcdFx0JXVcbiIsICAgICAgISEoZHdvcmQgJiBTRFZPX0VOQUJMRSkp OwogCXByaW50ZigiSERNSUQgVHJhbnNjb2Rlcl9TZWxlY3RcdFx0XHRcdFx0WzB4JWx4XSAlc1xu IiwKIAkJCUJJVFMoZHdvcmQsIDMwLCAyOSksIHRyYW5zY29kZXJfc2VsZWN0W0JJVFMoZHdvcmQs IDMwLCAyOSldKTsKQEAgLTk1NCw3ICs5NTUsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lk KQogCXByaW50ZigiSERNSUQgSERNSV9vcl9EVklfU2VsZWN0XHRcdFx0XHQlc1xuIiwgQklUKGR3 b3JkLCA5KSA/ICJIRE1JIiA6ICJEVkkiKTsKIAlwcmludGYoIkhETUlEIEF1ZGlvX091dHB1dF9F bmFibGVcdFx0XHRcdCV1XG4iLCAhIShkd29yZCAmIFNEVk9fQVVESU9fRU5BQkxFKSk7CiAKLQlk d29yZCA9IElOUkVHKERQX0NUTF9CKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywg RFBfQ1RMX0IpOwogCXByaW50ZigiRFBfQ1RMX0IgRGlzcGxheVBvcnRfRW5hYmxlXHRcdFx0XHQl bHVcbiIsIEJJVChkd29yZCwgMzEpKTsKIAlwcmludGYoIkRQX0NUTF9CIFBvcnRfV2lkdGhfU2Vs ZWN0aW9uXHRcdFx0XHRbMHglbHhdICVzXG4iLAogCQkJQklUUyhkd29yZCwgMjEsIDE5KSwgZHBf cG9ydF93aWR0aFtCSVRTKGR3b3JkLCAyMSwgMTkpXSk7CkBAIC05NjIsNyArOTYzLDcgQEAgc3Rh dGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkRQX0NUTF9CIEhEQ1BfUG9ydF9TZWxl Y3RcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA1KSk7CiAJcHJpbnRmKCJEUF9DVExfQiBBdWRp b19PdXRwdXRfRW5hYmxlXHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgNikpOwogCi0JZHdvcmQg PSBJTlJFRyhEUF9DVExfQyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIERQX0NU TF9DKTsKIAlwcmludGYoIkRQX0NUTF9DIERpc3BsYXlQb3J0X0VuYWJsZVx0XHRcdFx0JWx1XG4i LCBCSVQoZHdvcmQsIDMxKSk7CiAJcHJpbnRmKCJEUF9DVExfQyBQb3J0X1dpZHRoX1NlbGVjdGlv blx0XHRcdFx0WzB4JWx4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDIxLCAxOSksIGRwX3BvcnRf d2lkdGhbQklUUyhkd29yZCwgMjEsIDE5KV0pOwpAQCAtOTcwLDcgKzk3MSw3IEBAIHN0YXRpYyB2 b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJEUF9DVExfQyBIRENQX1BvcnRfU2VsZWN0XHRc dFx0XHQlbHVcbiIsIEJJVChkd29yZCwgNSkpOwogCXByaW50ZigiRFBfQ1RMX0MgQXVkaW9fT3V0 cHV0X0VuYWJsZVx0XHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDYpKTsKIAotCWR3b3JkID0gSU5S RUcoRFBfQ1RMX0QpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBEUF9DVExfRCk7 CiAJcHJpbnRmKCJEUF9DVExfRCBEaXNwbGF5UG9ydF9FbmFibGVcdFx0XHRcdCVsdVxuIiwgQklU KGR3b3JkLCAzMSkpOwogCXByaW50ZigiRFBfQ1RMX0QgUG9ydF9XaWR0aF9TZWxlY3Rpb25cdFx0 XHRcdFsweCVseF0gJXNcbiIsCiAJCQlCSVRTKGR3b3JkLCAyMSwgMTkpLCBkcF9wb3J0X3dpZHRo W0JJVFMoZHdvcmQsIDIxLCAxOSldKTsKQEAgLTk3OCw3ICs5NzksNyBAQCBzdGF0aWMgdm9pZCBk dW1wX2NwdCh2b2lkKQogCXByaW50ZigiRFBfQ1RMX0QgSERDUF9Qb3J0X1NlbGVjdFx0XHRcdFx0 JWx1XG4iLCBCSVQoZHdvcmQsIDUpKTsKIAlwcmludGYoIkRQX0NUTF9EIEF1ZGlvX091dHB1dF9F bmFibGVcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA2KSk7CiAKLQlkd29yZCA9IElOUkVHKEFV RF9DT05GSUdfQSk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DT05GSUdf QSk7CiAJcHJpbnRmKCJBVURfQ09ORklHX0EgIE5faW5kZXhfdmFsdWVcdFx0XHRcdFsweCVseF0g JXNcbiIsIEJJVChkd29yZCwgMjkpLAogCQkJbl9pbmRleF92YWx1ZVtCSVQoZHdvcmQsIDI5KV0p OwogCXByaW50ZigiQVVEX0NPTkZJR19BICBOX3Byb2dyYW1taW5nX2VuYWJsZVx0XHRcdCVsdVxu IiwgQklUKGR3b3JkLCAyOCkpOwpAQCAtOTg3LDcgKzk4OCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBf Y3B0KHZvaWQpCiAJcHJpbnRmKCJBVURfQ09ORklHX0EgIFBpeGVsX0Nsb2NrX0hETUlcdFx0XHRc dFsweCVseF0gJXNcbiIsIEJJVFMoZHdvcmQsIDE5LCAxNiksCiAJCQlPUE5BTUUocGl4ZWxfY2xv Y2ssIEJJVFMoZHdvcmQsIDE5LCAxNikpKTsKIAlwcmludGYoIkFVRF9DT05GSUdfQSAgRGlzYWJs ZV9OQ1RTXHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgMykpOwotCWR3b3JkID0gSU5SRUcoQVVE X0NPTkZJR19CKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NPTkZJR19C KTsKIAlwcmludGYoIkFVRF9DT05GSUdfQiAgTl9pbmRleF92YWx1ZVx0XHRcdFx0WzB4JWx4XSAl c1xuIiwgQklUKGR3b3JkLCAyOSksCiAJCQluX2luZGV4X3ZhbHVlW0JJVChkd29yZCwgMjkpXSk7 CiAJcHJpbnRmKCJBVURfQ09ORklHX0IgIE5fcHJvZ3JhbW1pbmdfZW5hYmxlXHRcdFx0JWx1XG4i LCBCSVQoZHdvcmQsIDI4KSk7CkBAIC05OTYsNyArOTk3LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9j cHQodm9pZCkKIAlwcmludGYoIkFVRF9DT05GSUdfQiAgUGl4ZWxfQ2xvY2tfSERNSVx0XHRcdFx0 WzB4JWx4XSAlc1xuIiwgQklUUyhkd29yZCwgMTksIDE2KSwKIAkJCU9QTkFNRShwaXhlbF9jbG9j aywgQklUUyhkd29yZCwgMTksIDE2KSkpOwogCXByaW50ZigiQVVEX0NPTkZJR19CICBEaXNhYmxl X05DVFNcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAzKSk7Ci0JZHdvcmQgPSBJTlJFRyhBVURf Q09ORklHX0MpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ09ORklHX0Mp OwogCXByaW50ZigiQVVEX0NPTkZJR19DICBOX2luZGV4X3ZhbHVlXHRcdFx0XHRbMHglbHhdICVz XG4iLCBCSVQoZHdvcmQsIDI5KSwKIAkJCW5faW5kZXhfdmFsdWVbQklUKGR3b3JkLCAyOSldKTsK IAlwcmludGYoIkFVRF9DT05GSUdfQyAgTl9wcm9ncmFtbWluZ19lbmFibGVcdFx0XHQlbHVcbiIs IEJJVChkd29yZCwgMjgpKTsKQEAgLTEwMDYsMzYgKzEwMDcsMzYgQEAgc3RhdGljIHZvaWQgZHVt cF9jcHQodm9pZCkKIAkJCU9QTkFNRShwaXhlbF9jbG9jaywgQklUUyhkd29yZCwgMTksIDE2KSkp OwogCXByaW50ZigiQVVEX0NPTkZJR19DICBEaXNhYmxlX05DVFNcdFx0XHRcdCVsdVxuIiwgQklU KGR3b3JkLCAzKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9DVFNfRU5BQkxFX0EpOworCWR3b3Jk ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ1RTX0VOQUJMRV9BKTsKIAlwcmludGYoIkFV RF9DVFNfRU5BQkxFX0EgIEVuYWJsZV9DVFNfb3JfTV9wcm9ncmFtbWluZ1x0XHQlbHVcbiIsIEJJ VChkd29yZCwgMjApKTsKIAlwcmludGYoIkFVRF9DVFNfRU5BQkxFX0EgIENUU19NIHZhbHVlIElu ZGV4XHRcdFx0JXNcbiIsIEJJVChkd29yZCwgMjEpID8gIkNUUyIgOiAiTSIpOwogCXByaW50Zigi QVVEX0NUU19FTkFCTEVfQSAgQ1RTX3Byb2dyYW1taW5nXHRcdFx0JSNseFxuIiwgQklUUyhkd29y ZCwgMTksIDApKTsKLQlkd29yZCA9IElOUkVHKEFVRF9DVFNfRU5BQkxFX0IpOworCWR3b3JkID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ1RTX0VOQUJMRV9CKTsKIAlwcmludGYoIkFVRF9D VFNfRU5BQkxFX0IgIEVuYWJsZV9DVFNfb3JfTV9wcm9ncmFtbWluZ1x0XHQlbHVcbiIsIEJJVChk d29yZCwgMjApKTsKIAlwcmludGYoIkFVRF9DVFNfRU5BQkxFX0IgIENUU19NIHZhbHVlIEluZGV4 XHRcdFx0JXNcbiIsIEJJVChkd29yZCwgMjEpID8gIkNUUyIgOiAiTSIpOwogCXByaW50ZigiQVVE X0NUU19FTkFCTEVfQiAgQ1RTX3Byb2dyYW1taW5nXHRcdFx0JSNseFxuIiwgQklUUyhkd29yZCwg MTksIDApKTsKLQlkd29yZCA9IElOUkVHKEFVRF9DVFNfRU5BQkxFX0MpOworCWR3b3JkID0gSU5S RUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ1RTX0VOQUJMRV9DKTsKIAlwcmludGYoIkFVRF9DVFNf RU5BQkxFX0MgIEVuYWJsZV9DVFNfb3JfTV9wcm9ncmFtbWluZ1x0XHQlbHVcbiIsIEJJVChkd29y ZCwgMjApKTsKIAlwcmludGYoIkFVRF9DVFNfRU5BQkxFX0MgIENUU19NIHZhbHVlIEluZGV4XHRc dFx0JXNcbiIsIEJJVChkd29yZCwgMjEpID8gIkNUUyIgOiAiTSIpOwogCXByaW50ZigiQVVEX0NU U19FTkFCTEVfQyAgQ1RTX3Byb2dyYW1taW5nXHRcdFx0JSNseFxuIiwgQklUUyhkd29yZCwgMTks IDApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX01JU0NfQ1RSTF9BKTsKKwlkd29yZCA9IElOUkVH KGlndF9nbG9iYWxfbW1pbywgQVVEX01JU0NfQ1RSTF9BKTsKIAlwcmludGYoIkFVRF9NSVNDX0NU UkxfQSAgU2FtcGxlX0ZhYnJpY2F0aW9uX0VOX2JpdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgMikp OwogCXByaW50ZigiQVVEX01JU0NfQ1RSTF9BICBTYW1wbGVfcHJlc2VudF9EaXNhYmxlXHRcdFx0 JWx1XG4iLAlCSVQoZHdvcmQsIDgpKTsKIAlwcmludGYoIkFVRF9NSVNDX0NUUkxfQSAgT3V0cHV0 X0RlbGF5XHRcdFx0XHQlbHVcbiIsCQlCSVRTKGR3b3JkLCA3LCA0KSk7CiAJcHJpbnRmKCJBVURf TUlTQ19DVFJMX0EgIFByb19BbGxvd2VkXHRcdFx0XHQlbHVcbiIsCQkJQklUKGR3b3JkLCAxKSk7 Ci0JZHdvcmQgPSBJTlJFRyhBVURfTUlTQ19DVFJMX0IpOworCWR3b3JkID0gSU5SRUcoaWd0X2ds b2JhbF9tbWlvLCBBVURfTUlTQ19DVFJMX0IpOwogCXByaW50ZigiQVVEX01JU0NfQ1RSTF9CICBT YW1wbGVfRmFicmljYXRpb25fRU5fYml0XHRcdCVsdVxuIiwJQklUKGR3b3JkLCAyKSk7CiAJcHJp bnRmKCJBVURfTUlTQ19DVFJMX0IgIFNhbXBsZV9wcmVzZW50X0Rpc2FibGVcdFx0XHQlbHVcbiIs CUJJVChkd29yZCwgOCkpOwogCXByaW50ZigiQVVEX01JU0NfQ1RSTF9CICBPdXRwdXRfRGVsYXlc dFx0XHRcdCVsdVxuIiwJCUJJVFMoZHdvcmQsIDcsIDQpKTsKIAlwcmludGYoIkFVRF9NSVNDX0NU UkxfQiAgUHJvX0FsbG93ZWRcdFx0XHRcdCVsdVxuIiwJCQlCSVQoZHdvcmQsIDEpKTsKLQlkd29y ZCA9IElOUkVHKEFVRF9NSVNDX0NUUkxfQyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21t aW8sIEFVRF9NSVNDX0NUUkxfQyk7CiAJcHJpbnRmKCJBVURfTUlTQ19DVFJMX0MgIFNhbXBsZV9G YWJyaWNhdGlvbl9FTl9iaXRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDIpKTsKIAlwcmludGYoIkFV RF9NSVNDX0NUUkxfQyAgU2FtcGxlX3ByZXNlbnRfRGlzYWJsZVx0XHRcdCVsdVxuIiwJQklUKGR3 b3JkLCA4KSk7CiAJcHJpbnRmKCJBVURfTUlTQ19DVFJMX0MgIE91dHB1dF9EZWxheVx0XHRcdFx0 JWx1XG4iLAkJQklUUyhkd29yZCwgNywgNCkpOwogCXByaW50ZigiQVVEX01JU0NfQ1RSTF9DICBQ cm9fQWxsb3dlZFx0XHRcdFx0JWx1XG4iLAkJCUJJVChkd29yZCwgMSkpOwogCi0JZHdvcmQgPSBJ TlJFRyhBVURfUFdSU1QpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfUFdS U1QpOwogCXByaW50ZigiQVVEX1BXUlNUICBGdW5jX0dycF9EZXZfUHdyU3RfQ3VyciAgICAgICAg ICAgICAgICAgIFx0JXNcbiIsIHBvd2VyX3N0YXRlW0JJVFMoZHdvcmQsIDI3LCAyNildKTsKIAlw cmludGYoIkFVRF9QV1JTVCAgRnVuY19HcnBfRGV2X1B3clN0X1NldCAgICAgICAgICAgICAgICAg ICBcdCVzXG4iLCBwb3dlcl9zdGF0ZVtCSVRTKGR3b3JkLCAyNSwgMjQpXSk7CiAJcHJpbnRmKCJB VURfUFdSU1QgIENvbnZlcnRvckFfV2lkZ2V0X1Bvd2VyX1N0YXRlX0N1cnJlbnQgICAgXHQlc1xu IiwgcG93ZXJfc3RhdGVbQklUUyhkd29yZCwgMTUsIDE0KV0pOwpAQCAtMTA1MSw3ICsxMDUyLDcg QEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkFVRF9QV1JTVCAgUGluRF9X aWRnZXRfUG93ZXJfU3RhdGVfQ3VycmVudCAgICAgICAgICBcdCVzXG4iLCBwb3dlcl9zdGF0ZVtC SVRTKGR3b3JkLCAxMSwgMTApXSk7CiAJcHJpbnRmKCJBVURfUFdSU1QgIFBpbkRfV2lkZ2V0X1Bv d2VyX1N0YXRlX1NldCAgICAgICAgICAgICAgXHQlc1xuIiwgcG93ZXJfc3RhdGVbQklUUyhkd29y ZCwgIDksICA4KV0pOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfUE9SVF9FTl9IRF9DRkcpOworCWR3 b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfUE9SVF9FTl9IRF9DRkcpOwogCXByaW50 ZigiQVVEX1BPUlRfRU5fSERfQ0ZHICBDb252ZXJ0b3JfQV9EaWdlblx0XHRcdCVsdVxuIiwJQklU KGR3b3JkLCAwKSk7CiAJcHJpbnRmKCJBVURfUE9SVF9FTl9IRF9DRkcgIENvbnZlcnRvcl9CX0Rp Z2VuXHRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDEpKTsKIAlwcmludGYoIkFVRF9QT1JUX0VOX0hE X0NGRyAgQ29udmVydG9yX0NfRGlnZW5cdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgMikpOwpAQCAt MTA2NSw3ICsxMDY2LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkFV RF9QT1JUX0VOX0hEX0NGRyAgUG9ydF9DX0FtcF9NdXRlX1N0YXR1c1x0XHQlbHVcbiIsIEJJVChk d29yZCwgMjEpKTsKIAlwcmludGYoIkFVRF9QT1JUX0VOX0hEX0NGRyAgUG9ydF9EX0FtcF9NdXRl X1N0YXR1c1x0XHQlbHVcbiIsIEJJVChkd29yZCwgMjIpKTsKIAotCWR3b3JkID0gSU5SRUcoQVVE X09VVF9ESUdfQ05WVF9BKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX09V VF9ESUdfQ05WVF9BKTsKIAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlRfQSAgVlx0XHRcdFx0XHQl bHVcbiIsCQlCSVQoZHdvcmQsIDEpKTsKIAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlRfQSAgVkNG R1x0XHRcdFx0JWx1XG4iLAkJQklUKGR3b3JkLCAyKSk7CiAJcHJpbnRmKCJBVURfT1VUX0RJR19D TlZUX0EgIFBSRVx0XHRcdFx0XHQlbHVcbiIsCQlCSVQoZHdvcmQsIDMpKTsKQEAgLTEwNzcsNyAr MTA3OCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJBVURfT1VUX0RJ R19DTlZUX0EgIExvd2VzdF9DaGFubmVsX051bWJlclx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDE5 LCAxNikpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9BICBTdHJlYW1fSURcdFx0XHRcdCVs dVxuIiwJQklUUyhkd29yZCwgMjMsIDIwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9PVVRfRElH X0NOVlRfQik7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfRElHX0NO VlRfQik7CiAJcHJpbnRmKCJBVURfT1VUX0RJR19DTlZUX0IgIFZcdFx0XHRcdFx0JWx1XG4iLAkJ QklUKGR3b3JkLCAxKSk7CiAJcHJpbnRmKCJBVURfT1VUX0RJR19DTlZUX0IgIFZDRkdcdFx0XHRc dCVsdVxuIiwJCUJJVChkd29yZCwgMikpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9CICBQ UkVcdFx0XHRcdFx0JWx1XG4iLAkJQklUKGR3b3JkLCAzKSk7CkBAIC0xMDg5LDcgKzEwOTAsNyBA QCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9C ICBMb3dlc3RfQ2hhbm5lbF9OdW1iZXJcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxOSwgMTYpKTsK IAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlRfQiAgU3RyZWFtX0lEXHRcdFx0XHQlbHVcbiIsCUJJ VFMoZHdvcmQsIDIzLCAyMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX0RJR19DTlZUX0Mp OworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfT1VUX0RJR19DTlZUX0MpOwog CXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9DICBWXHRcdFx0XHRcdCVsdVxuIiwJCUJJVChkd29y ZCwgMSkpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9DICBWQ0ZHXHRcdFx0XHQlbHVcbiIs CQlCSVQoZHdvcmQsIDIpKTsKIAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlRfQyAgUFJFXHRcdFx0 XHRcdCVsdVxuIiwJCUJJVChkd29yZCwgMykpOwpAQCAtMTEwMyw4ICsxMTA0LDkgQEAgc3RhdGlj IHZvaWQgZHVtcF9jcHQodm9pZCkKIAogCXByaW50ZigiQVVEX09VVF9DSF9TVFIgIENvbnZlcnRl cl9DaGFubmVsX01BUAlQT1JUQglQT1JUQwlQT1JURFxuIik7CiAJZm9yIChpID0gMDsgaSA8IDg7 IGkrKykgewotCQlPVVRSRUcoQVVEX09VVF9DSF9TVFIsIGkgfCAoaSA8PCA4KSB8IChpIDw8IDE2 KSk7Ci0JCWR3b3JkID0gSU5SRUcoQVVEX09VVF9DSF9TVFIpOworCQlPVVRSRUcoaWd0X2dsb2Jh bF9tbWlvLCBBVURfT1VUX0NIX1NUUiwgaSB8IChpIDw8IDgpIHwKKwkJICAgICAgIChpIDw8IDE2 KSk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfT1VUX0NIX1NUUik7CiAJ CXByaW50ZigiXHRcdFx0XHQlbHVcdCVsdVx0JWx1XHQlbHVcbiIsCiAJCQkJMSArIEJJVFMoZHdv cmQsICAzLCAgMCksCiAJCQkJMSArIEJJVFMoZHdvcmQsICA3LCAgNCksCkBAIC0xMTEyLDMzICsx MTE0LDMzIEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJCQkJMSArIEJJVFMoZHdvcmQs IDIzLCAyMCkpOwogCX0KIAotCWR3b3JkID0gSU5SRUcoQVVEX09VVF9TVFJfREVTQ19BKTsKKwlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9TVFJfREVTQ19BKTsKIAlwcmlu dGYoIkFVRF9PVVRfU1RSX0RFU0NfQSAgSEJSX2VuYWJsZVx0XHRcdFx0JWx1XG4iLAkgQklUUyhk d29yZCwgMjgsIDI3KSk7CiAJcHJpbnRmKCJBVURfT1VUX1NUUl9ERVNDX0EgIENvbnZlcnRvcl9D aGFubmVsX0NvdW50XHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMjAsIDE2KSArIDEpOwogCXByaW50 ZigiQVVEX09VVF9TVFJfREVTQ19BICBCaXRzX3Blcl9TYW1wbGVcdFx0XHRbJSNseF0gJXNcbiIs CiAJCQlCSVRTKGR3b3JkLCA2LCA0KSwgT1BOQU1FKGJpdHNfcGVyX3NhbXBsZSwgQklUUyhkd29y ZCwgNiwgNCkpKTsKIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0NfQSAgTnVtYmVyX29mX0NoYW5u ZWxzX2luX2FfU3RyZWFtXHQlbHVcbiIsIDEgKyBCSVRTKGR3b3JkLCAzLCAwKSk7CiAKLQlkd29y ZCA9IElOUkVHKEFVRF9PVVRfU1RSX0RFU0NfQik7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFs X21taW8sIEFVRF9PVVRfU1RSX0RFU0NfQik7CiAJcHJpbnRmKCJBVURfT1VUX1NUUl9ERVNDX0Ig IEhCUl9lbmFibGVcdFx0XHRcdCVsdVxuIiwJIEJJVFMoZHdvcmQsIDI4LCAyNykpOwogCXByaW50 ZigiQVVEX09VVF9TVFJfREVTQ19CICBDb252ZXJ0b3JfQ2hhbm5lbF9Db3VudFx0XHQlbHVcbiIs IEJJVFMoZHdvcmQsIDIwLCAxNikgKyAxKTsKIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0NfQiAg Qml0c19wZXJfU2FtcGxlXHRcdFx0WyUjbHhdICVzXG4iLAogCQkJQklUUyhkd29yZCwgNiwgNCks IE9QTkFNRShiaXRzX3Blcl9zYW1wbGUsIEJJVFMoZHdvcmQsIDYsIDQpKSk7CiAJcHJpbnRmKCJB VURfT1VUX1NUUl9ERVNDX0IgIE51bWJlcl9vZl9DaGFubmVsc19pbl9hX1N0cmVhbVx0JWx1XG4i LCAxICsgQklUUyhkd29yZCwgMywgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX1NUUl9E RVNDX0MpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfT1VUX1NUUl9ERVND X0MpOwogCXByaW50ZigiQVVEX09VVF9TVFJfREVTQ19DICBIQlJfZW5hYmxlXHRcdFx0XHQlbHVc biIsCSBCSVRTKGR3b3JkLCAyOCwgMjcpKTsKIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0NfQyAg Q29udmVydG9yX0NoYW5uZWxfQ291bnRcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAyMCwgMTYpICsg MSk7CiAJcHJpbnRmKCJBVURfT1VUX1NUUl9ERVNDX0MgIEJpdHNfcGVyX1NhbXBsZVx0XHRcdFsl I2x4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDYsIDQpLCBPUE5BTUUoYml0c19wZXJfc2FtcGxl LCBCSVRTKGR3b3JkLCA2LCA0KSkpOwogCXByaW50ZigiQVVEX09VVF9TVFJfREVTQ19DICBOdW1i ZXJfb2ZfQ2hhbm5lbHNfaW5fYV9TdHJlYW1cdCVsdVxuIiwgMSArIEJJVFMoZHdvcmQsIDMsIDAp KTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1BJTldfQ09OTkxOR19TRUwpOworCWR3b3JkID0gSU5S RUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfUElOV19DT05OTE5HX1NFTCk7CiAJcHJpbnRmKCJBVURf UElOV19DT05OTE5HX1NFTCAgQ29ubmVjdGlvbl9zZWxlY3RfQ29udHJvbF9CXHQlI2x4XG4iLCBC SVRTKGR3b3JkLCAgNywgIDApKTsKIAlwcmludGYoIkFVRF9QSU5XX0NPTk5MTkdfU0VMICBDb25u ZWN0aW9uX3NlbGVjdF9Db250cm9sX0NcdCUjbHhcbiIsIEJJVFMoZHdvcmQsIDE1LCAgOCkpOwog CXByaW50ZigiQVVEX1BJTldfQ09OTkxOR19TRUwgIENvbm5lY3Rpb25fc2VsZWN0X0NvbnRyb2xf RFx0JSNseFxuIiwgQklUUyhkd29yZCwgMjMsIDE2KSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9D TlRMX1NUX0EpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVF9B KTsKIAlwcmludGYoIkFVRF9DTlRMX1NUX0EgIERJUF9Qb3J0X1NlbGVjdFx0XHRcdFx0WyUjbHhd ICVzXG4iLAogCQkJQklUUyhkd29yZCwgMzAsIDI5KSwgZGlwX3BvcnRbQklUUyhkd29yZCwgMzAs IDI5KV0pOwogCXByaW50ZigiQVVEX0NOVExfU1RfQSAgRElQX3R5cGVfZW5hYmxlX3N0YXR1cyBB dWRpbyBESVBcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDIxKSk7CkBAIC0xMTQ5LDcgKzExNTEsNyBA QCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiQVVEX0NOVExfU1RfQSAgRUxE X0FDS1x0XHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgNCkpOwogCXByaW50ZigiQVVEX0NOVExf U1RfQSAgRUxEX2J1ZmZlcl9zaXplXHRcdFx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDE0LCAxMCkp OwogCi0JZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVF9CKTsKKwlkd29yZCA9IElOUkVHKGlndF9n bG9iYWxfbW1pbywgQVVEX0NOVExfU1RfQik7CiAJcHJpbnRmKCJBVURfQ05UTF9TVF9CICBESVBf UG9ydF9TZWxlY3RcdFx0XHRcdFslI2x4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDMwLCAyOSks IGRpcF9wb3J0W0JJVFMoZHdvcmQsIDMwLCAyOSldKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUX0Ig IERJUF90eXBlX2VuYWJsZV9zdGF0dXMgQXVkaW8gRElQXHRcdCVsdVxuIiwgQklUKGR3b3JkLCAy MSkpOwpAQCAtMTE2MCw3ICsxMTYyLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlw cmludGYoIkFVRF9DTlRMX1NUX0IgIEVMRF9BQ0tcdFx0XHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQs IDQpKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUX0IgIEVMRF9idWZmZXJfc2l6ZVx0XHRcdFx0JWx1 XG4iLCBCSVRTKGR3b3JkLCAxNCwgMTApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX0NOVExfU1Rf Qyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0MpOwogCXBy aW50ZigiQVVEX0NOVExfU1RfQyAgRElQX1BvcnRfU2VsZWN0XHRcdFx0XHRbJSNseF0gJXNcbiIs CiAJCQlCSVRTKGR3b3JkLCAzMCwgMjkpLCBkaXBfcG9ydFtCSVRTKGR3b3JkLCAzMCwgMjkpXSk7 CiAJcHJpbnRmKCJBVURfQ05UTF9TVF9DICBESVBfdHlwZV9lbmFibGVfc3RhdHVzIEF1ZGlvIERJ UFx0XHQlbHVcbiIsIEJJVChkd29yZCwgMjEpKTsKQEAgLTExNzEsNyArMTE3Myw3IEBAIHN0YXRp YyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJBVURfQ05UTF9TVF9DICBFTERfQUNLXHRc dFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA0KSk7CiAJcHJpbnRmKCJBVURfQ05UTF9TVF9DICBF TERfYnVmZmVyX3NpemVcdFx0XHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMTQsIDEwKSk7CiAKLQlk d29yZCA9IElOUkVHKEFVRF9DTlRSTF9TVDIpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9t bWlvLCBBVURfQ05UUkxfU1QyKTsKIAlwcmludGYoIkFVRF9DTlRSTF9TVDIgIENQX1JlYWR5Qlx0 XHRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDEpKTsKIAlwcmludGYoIkFVRF9DTlRSTF9TVDIgIEVM RF92YWxpZEJcdFx0XHRcdCVsdVxuIiwJQklUKGR3b3JkLCAwKSk7CiAJcHJpbnRmKCJBVURfQ05U UkxfU1QyICBDUF9SZWFkeUNcdFx0XHRcdCVsdVxuIiwJQklUKGR3b3JkLCA1KSk7CkBAIC0xMTc5 LDcgKzExODEsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiQVVEX0NO VFJMX1NUMiAgQ1BfUmVhZHlEXHRcdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgOSkpOwogCXByaW50 ZigiQVVEX0NOVFJMX1NUMiAgRUxEX3ZhbGlkRFx0XHRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDgp KTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX0NOVFJMX1NUMyk7CisJZHdvcmQgPSBJTlJFRyhpZ3Rf Z2xvYmFsX21taW8sIEFVRF9DTlRSTF9TVDMpOwogCXByaW50ZigiQVVEX0NOVFJMX1NUMyAgVHJh bnNBX0RQVF9BdWRpb19PdXRwdXRfRW5cdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDMpKTsKIAlwcmlu dGYoIkFVRF9DTlRSTF9TVDMgIFRyYW5zQV90b19Qb3J0X1NlbFx0XHRcdFslI2x4XSAlc1xuIiwK IAkJCUJJVFMoZHdvcmQsIDIsIDApLCB0cmFuc190b19wb3J0X3NlbFtCSVRTKGR3b3JkLCAyLCAw KV0pOwpAQCAtMTE5MCw3ICsxMTkyLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlw cmludGYoIkFVRF9DTlRSTF9TVDMgIFRyYW5zQ190b19Qb3J0X1NlbFx0XHRcdFslI2x4XSAlc1xu IiwKIAkJCUJJVFMoZHdvcmQsIDEwLCA4KSwgdHJhbnNfdG9fcG9ydF9zZWxbQklUUyhkd29yZCwg MTAsIDgpXSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9IRE1JV19TVEFUVVMpOworCWR3b3JkID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfSERNSVdfU1RBVFVTKTsKIAlwcmludGYoIkFVRF9I RE1JV19TVEFUVVMgIENvbnZfQV9DRENMSy9ET1RDTEtfRklGT19VbmRlcnJ1blx0JWx1XG4iLCBC SVQoZHdvcmQsIDI3KSk7CiAJcHJpbnRmKCJBVURfSERNSVdfU1RBVFVTICBDb252X0FfQ0RDTEsv RE9UQ0xLX0ZJRk9fT3ZlcnJ1blx0JWx1XG4iLCAgQklUKGR3b3JkLCAyNikpOwogCXByaW50Zigi QVVEX0hETUlXX1NUQVRVUyAgQ29udl9CX0NEQ0xLL0RPVENMS19GSUZPX1VuZGVycnVuXHQlbHVc biIsIEJJVChkd29yZCwgMjkpKTsKQEAgLTEyMDEsNTQgKzEyMDMsNjAgQEAgc3RhdGljIHZvaWQg ZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkFVRF9IRE1JV19TVEFUVVMgIEZ1bmN0aW9uX1Jlc2V0 XHRcdFx0JWx1XG4iLAkJIEJJVChkd29yZCwgMjQpKTsKIAogCXByaW50ZigiQVVEX0hETUlXX0hE TUlFRElEX0EgSERNSSBFTEQ6XG5cdCIpOwotCWR3b3JkID0gSU5SRUcoQVVEX0NOVExfU1RfQSk7 CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0EpOwogCWR3b3Jk ICY9IH5CSVRNQVNLKDksIDUpOwotCU9VVFJFRyhBVURfQ05UTF9TVF9BLCBkd29yZCk7CisJT1VU UkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1RfQSwgZHdvcmQpOwogCWZvciAoaSA9IDA7 IGkgPCBCSVRTKGR3b3JkLCAxNCwgMTApIC8gNDsgaSsrKQotCQlwcmludGYoIiUwOHggIiwgaHRv bmwoSU5SRUcoQVVEX0hETUlXX0hETUlFRElEX0EpKSk7CisJCXByaW50ZigiJTA4eCAiLCBodG9u bChJTlJFRyhpZ3RfZ2xvYmFsX21taW8sCisJCQkJCSAgICBBVURfSERNSVdfSERNSUVESURfQSkp KTsKIAlwcmludGYoIlxuIik7CiAKIAlwcmludGYoIkFVRF9IRE1JV19IRE1JRURJRF9CIEhETUkg RUxEOlxuXHQiKTsKLQlkd29yZCA9IElOUkVHKEFVRF9DTlRMX1NUX0IpOworCWR3b3JkID0gSU5S RUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVF9CKTsKIAlkd29yZCAmPSB+QklUTUFTSyg5 LCA1KTsKLQlPVVRSRUcoQVVEX0NOVExfU1RfQiwgZHdvcmQpOworCU9VVFJFRyhpZ3RfZ2xvYmFs X21taW8sIEFVRF9DTlRMX1NUX0IsIGR3b3JkKTsKIAlmb3IgKGkgPSAwOyBpIDwgQklUUyhkd29y ZCwgMTQsIDEwKSAvIDQ7IGkrKykKLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKEFVRF9I RE1JV19IRE1JRURJRF9CKSkpOworCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoaWd0X2ds b2JhbF9tbWlvLAorCQkJCQkgICAgQVVEX0hETUlXX0hETUlFRElEX0IpKSk7CiAJcHJpbnRmKCJc biIpOwogCiAJcHJpbnRmKCJBVURfSERNSVdfSERNSUVESURfQyBIRE1JIEVMRDpcblx0Iik7Ci0J ZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVF9DKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxf bW1pbywgQVVEX0NOVExfU1RfQyk7CiAJZHdvcmQgJj0gfkJJVE1BU0soOSwgNSk7Ci0JT1VUUkVH KEFVRF9DTlRMX1NUX0MsIGR3b3JkKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05U TF9TVF9DLCBkd29yZCk7CiAJZm9yIChpID0gMDsgaSA8IEJJVFMoZHdvcmQsIDE0LCAxMCkgLyA0 OyBpKyspCi0JCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhBVURfSERNSVdfSERNSUVESURf QykpKTsKKwkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKGlndF9nbG9iYWxfbW1pbywKKwkJ CQkJICAgIEFVRF9IRE1JV19IRE1JRURJRF9DKSkpOwogCXByaW50ZigiXG4iKTsKIAogCXByaW50 ZigiQVVEX0hETUlXX0lORk9GUl9BIEhETUkgYXVkaW8gSW5mb2ZyYW1lOlxuXHQiKTsKLQlkd29y ZCA9IElOUkVHKEFVRF9DTlRMX1NUX0EpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlv LCBBVURfQ05UTF9TVF9BKTsKIAlkd29yZCAmPSB+QklUTUFTSygyMCwgMTgpOwogCWR3b3JkICY9 IH5CSVRNQVNLKDMsIDApOwotCU9VVFJFRyhBVURfQ05UTF9TVF9BLCBkd29yZCk7CisJT1VUUkVH KGlndF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1RfQSwgZHdvcmQpOwogCWZvciAoaSA9IDA7IGkg PCA4OyBpKyspCi0JCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhBVURfSERNSVdfSU5GT0ZS X0EpKSk7CisJCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhpZ3RfZ2xvYmFsX21taW8sCisJ CQkJCSAgICBBVURfSERNSVdfSU5GT0ZSX0EpKSk7CiAJcHJpbnRmKCJcbiIpOwogCiAJcHJpbnRm KCJBVURfSERNSVdfSU5GT0ZSX0IgSERNSSBhdWRpbyBJbmZvZnJhbWU6XG5cdCIpOwotCWR3b3Jk ID0gSU5SRUcoQVVEX0NOVExfU1RfQik7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8s IEFVRF9DTlRMX1NUX0IpOwogCWR3b3JkICY9IH5CSVRNQVNLKDIwLCAxOCk7CiAJZHdvcmQgJj0g fkJJVE1BU0soMywgMCk7Ci0JT1VUUkVHKEFVRF9DTlRMX1NUX0IsIGR3b3JkKTsKKwlPVVRSRUco aWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVF9CLCBkd29yZCk7CiAJZm9yIChpID0gMDsgaSA8 IDg7IGkrKykKLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKEFVRF9IRE1JV19JTkZPRlJf QikpKTsKKwkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKGlndF9nbG9iYWxfbW1pbywKKwkJ CQkJICAgIEFVRF9IRE1JV19JTkZPRlJfQikpKTsKIAlwcmludGYoIlxuIik7CiAKIAlwcmludGYo IkFVRF9IRE1JV19JTkZPRlJfQyBIRE1JIGF1ZGlvIEluZm9mcmFtZTpcblx0Iik7Ci0JZHdvcmQg PSBJTlJFRyhBVURfQ05UTF9TVF9DKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywg QVVEX0NOVExfU1RfQyk7CiAJZHdvcmQgJj0gfkJJVE1BU0soMjAsIDE4KTsKIAlkd29yZCAmPSB+ QklUTUFTSygzLCAwKTsKLQlPVVRSRUcoQVVEX0NOVExfU1RfQywgZHdvcmQpOworCU9VVFJFRyhp Z3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0MsIGR3b3JkKTsKIAlmb3IgKGkgPSAwOyBpIDwg ODsgaSsrKQotCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoQVVEX0hETUlXX0lORk9GUl9D KSkpOworCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoaWd0X2dsb2JhbF9tbWlvLAorCQkJ CQkgICAgQVVEX0hETUlXX0lORk9GUl9DKSkpOwogCXByaW50ZigiXG4iKTsKIAogfQpAQCAtMTM3 NCwxMCArMTM4MiwxMiBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9jb25maWcoaW50IGluZGV4KQog CWNoYXIgcHJlZml4W01BWF9QUkVGSVhfU0laRV07CiAKIAlpZiAoIUlTX0hBU1dFTExfUExVUyhk ZXZpZCkpIHsKLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfQ09ORklHX0EgKyAo aW5kZXggLSBQSVBFX0EpICogMHgxMDApOworCQlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1p bywgYXVkX3JlZ19iYXNlICsgQVVEX0NPTkZJR19BICsKKwkJCSAgICAgIChpbmRleCAtIFBJUEVf QSkgKiAweDEwMCk7CiAJCXNwcmludGYocHJlZml4LCAiQVVEX0NPTkZJR18lYyAgIiwgJ0EnICsg aW5kZXggLSBQSVBFX0EpOwogCX0gZWxzZSB7Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNl ICsgQVVEX1RDQV9DT05GSUcgKyAoaW5kZXggLSBUUkFOU0NPREVSX0EpICogMHgxMDApOworCQlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX1RDQV9DT05G SUcgKworCQkJICAgICAgKGluZGV4IC0gVFJBTlNDT0RFUl9BKSAqIDB4MTAwKTsKIAkJc3ByaW50 ZihwcmVmaXgsICJBVURfVEMlY19DT05GSUciLCAnQScgKyBpbmRleCAtIFRSQU5TQ09ERVJfQSk7 CiAJfQogCkBAIC0xMzk3LDEwICsxNDA3LDEyIEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX21pc2Nf Y29udHJvbChpbnQgaW5kZXgpCiAJY2hhciBwcmVmaXhbTUFYX1BSRUZJWF9TSVpFXTsKIAogCWlm ICghSVNfSEFTV0VMTF9QTFVTKGRldmlkKSkgewotCQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFz ZSArIEFVRF9NSVNDX0NUUkxfQSArIChpbmRleCAtIFBJUEVfQSkgKiAweDEwMCk7CisJCWR3b3Jk ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfTUlTQ19DVFJMX0Eg KworCQkJICAgICAgKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKIAkJc3ByaW50ZihwcmVmaXgs ICJBVURfTUlTQ19DVFJMXyVjICIsICdBJyArIGluZGV4IC0gUElQRV9BKTsKIAl9IGVsc2Ugewot CQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9DMV9NSVNDX0NUUkwgKyAoaW5kZXgg LSBDT05WRVJURVJfMSkgKiAweDEwMCk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlv LCBhdWRfcmVnX2Jhc2UgKyBBVURfQzFfTUlTQ19DVFJMICsKKwkJCSAgICAgIChpbmRleCAtIENP TlZFUlRFUl8xKSAqIDB4MTAwKTsKIAkJc3ByaW50ZihwcmVmaXgsICJBVURfQyVjX01JU0NfQ1RS TCIsICcxJyArIGluZGV4IC0gQ09OVkVSVEVSXzEpOwogCX0KIApAQCAtMTQxNCw3ICsxNDI2LDcg QEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfdmVuZG9yX2RldmljZV9pZCh2b2lkKQogewogCXVpbnQz Ml90IGR3b3JkOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfVklEX0RJRCk7 CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9WSURf RElEKTsKIAlwcmludGYoIkFVRF9WSURfRElEIGRldmljZSBpZFx0XHRcdFx0XHQweCVseFxuIiwg QklUUyhkd29yZCwgMTUsIDApKTsKIAlwcmludGYoIkFVRF9WSURfRElEIHZlbmRvciBpZFx0XHRc dFx0XHQweCVseFxuIiwgQklUUyhkd29yZCwgMzEsIDE2KSk7CiB9CkBAIC0xNDIzLDcgKzE0MzUs NyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9yZXZpc2lvbl9pZCh2b2lkKQogewogCXVpbnQzMl90 IGR3b3JkOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfUklEKTsKKwlkd29y ZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX1JJRCk7CiAJcHJp bnRmKCJBVURfUklEIFN0ZXBwaW5nX0lkXHRcdFx0XHRcdDB4JWx4XG4iLCAgICBCSVRTKGR3b3Jk LCA3LCAwKSk7CiAJcHJpbnRmKCJBVURfUklEIFJldmlzaW9uX0lkXHRcdFx0XHRcdDB4JWx4XG4i LCAgICBCSVRTKGR3b3JkLCAxNSwgOCkpOwogCXByaW50ZigiQVVEX1JJRCBNaW5vcl9SZXZpc2lv blx0XHRcdFx0XHQweCVseFxuIiwgQklUUyhkd29yZCwgMTksIDE2KSk7CkBAIC0xNDM2LDEwICsx NDQ4LDEzIEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX21fY3RzX2VuYWJsZShpbnQgaW5kZXgpCiAJ Y2hhciBwcmVmaXhbTUFYX1BSRUZJWF9TSVpFXTsKIAogCWlmICghSVNfSEFTV0VMTF9QTFVTKGRl dmlkKSkgewotCQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9DVFNfRU5BQkxFX0Eg ICsgKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFs X21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9DVFNfRU5BQkxFX0EgKworCQkJICAgICAgKGluZGV4 IC0gUElQRV9BKSAqIDB4MTAwKTsKIAkJc3ByaW50ZihwcmVmaXgsICJBVURfQ1RTX0VOQUJMRV8l YyAgICAiLCAnQScgKyBpbmRleCAtIFBJUEVfQSk7CiAJfSBlbHNlIHsKLQkJZHdvcmQgPSBJTlJF RyhhdWRfcmVnX2Jhc2UgKyBBVURfVENBX01fQ1RTX0VOQUJMRSAgKyAoaW5kZXggLSBUUkFOU0NP REVSX0EpICogMHgxMDApOworCQlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3Jl Z19iYXNlICsKKwkJCSAgICAgIEFVRF9UQ0FfTV9DVFNfRU5BQkxFICArIChpbmRleCAtIFRSQU5T Q09ERVJfQSkgKgorCQkJICAgICAgMHgxMDApOwogCQlzcHJpbnRmKHByZWZpeCwgIkFVRF9UQyVj X01fQ1RTX0VOQUJMRSIsICdBJyArIGluZGV4IC0gVFJBTlNDT0RFUl9BKTsKIAl9CiAKQEAgLTE0 NTQsNyArMTQ2OSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX3Bvd2VyX3N0YXRlKHZvaWQpCiAJ dWludDMyX3QgZHdvcmQ7CiAJaW50IG51bV9waXBlczsKIAotCWR3b3JkID0gSU5SRUcoYXVkX3Jl Z19iYXNlICsgQVVEX1BXUlNUKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVk X3JlZ19iYXNlICsgQVVEX1BXUlNUKTsKIAlwcmludGYoIkFVRF9QV1JTVCAgUGluQl9XaWRnZXRf UG93ZXJfU3RhdGVfU2V0ICAgICAgICAgICAgICBcdCVzXG4iLCAgICAgICAgIHBvd2VyX3N0YXRl W0JJVFMoZHdvcmQsICAxLCAgMCldKTsKIAlwcmludGYoIkFVRF9QV1JTVCAgUGluQl9XaWRnZXRf UG93ZXJfU3RhdGVfQ3VycmVudCAgICAgICAgICBcdCVzXG4iLCAgICAgICAgIHBvd2VyX3N0YXRl W0JJVFMoZHdvcmQsICAzLCAgMildKTsKIAlwcmludGYoIkFVRF9QV1JTVCAgUGluQ19XaWRnZXRf UG93ZXJfU3RhdGVfU2V0ICAgICAgICAgICAgICBcdCVzXG4iLCAgICAgICAgIHBvd2VyX3N0YXRl W0JJVFMoZHdvcmQsICA1LCAgNCldKTsKQEAgLTE1MTAsMTEgKzE1MjUsMTEgQEAgc3RhdGljIHZv aWQgZHVtcF9hdWRfZWRpZF9kYXRhKGludCBpbmRleCkKIAkJcHJpbnRmKCJBVURfSERNSVdfSERN SUVESURfJWMgSERNSSBFTEQ6XG5cdCIsICAnQScgKyBpbmRleCAtIFBJUEVfQSk7CiAJfQogCi0J ZHdvcmQgPSBJTlJFRyhhdWRfY3RybF9zdCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21t aW8sIGF1ZF9jdHJsX3N0KTsKIAlkd29yZCAmPSB+QklUTUFTSyg5LCA1KTsKLQlPVVRSRUcoYXVk X2N0cmxfc3QsIGR3b3JkKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfY3RybF9zdCwg ZHdvcmQpOwogCWZvciAoaSA9IDA7IGkgPCBCSVRTKGR3b3JkLCAxNCwgMTApIC8gNDsgaSsrKQot CQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoZWRpZF9kYXRhKSkpOworCQlwcmludGYoIiUw OHggIiwgaHRvbmwoSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBlZGlkX2RhdGEpKSk7CiAJcHJpbnRm KCJcbiIpOwogfQogCkBAIC0xNTM3LDEyICsxNTUyLDEyIEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVk X2luZm9mcmFtZShpbnQgaW5kZXgpCiAJCXByaW50ZigiQVVEX0hETUlXX0lORk9GUl8lYyBIRE1J IGF1ZGlvIEluZm9mcmFtZTpcblx0IiwgICdBJyArIGluZGV4IC0gUElQRV9BKTsKIAl9CiAKLQlk d29yZCA9IElOUkVHKGF1ZF9jdHJsX3N0KTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1p bywgYXVkX2N0cmxfc3QpOwogCWR3b3JkICY9IH5CSVRNQVNLKDIwLCAxOCk7CiAJZHdvcmQgJj0g fkJJVE1BU0soMywgMCk7Ci0JT1VUUkVHKGF1ZF9jdHJsX3N0LCBkd29yZCk7CisJT1VUUkVHKGln dF9nbG9iYWxfbW1pbywgYXVkX2N0cmxfc3QsIGR3b3JkKTsKIAlmb3IgKGkgPSAwOyBpIDwgODsg aSsrKQotCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoaW5mb19mcm0pKSk7CisJCXByaW50 ZigiJTA4eCAiLCBodG9ubChJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGluZm9fZnJtKSkpOwogCXBy aW50ZigiXG4iKTsKIH0KIApAQCAtMTU1MSw3ICsxNTY2LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9h dWRfcG9ydF9lbl9oZF9jZmcodm9pZCkKIAl1aW50MzJfdCBkd29yZDsKIAlpbnQgbnVtX3BpcGVz ID0gZ2V0X251bV9waXBlcygpOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURf UE9SVF9FTl9IRF9DRkcpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVn X2Jhc2UgKyBBVURfUE9SVF9FTl9IRF9DRkcpOwogCWlmIChudW1fcGlwZXMgPT0gMikgewogCQlw cmludGYoIkFVRF9QT1JUX0VOX0hEX0NGRyAgQ29udmVydG9yX0FfRGlnZW5cdFx0XHQlbHVcbiIs ICAgIEJJVChkd29yZCwgMCkpOwogCQlwcmludGYoIkFVRF9QT1JUX0VOX0hEX0NGRyAgQ29udmVy dG9yX0JfRGlnZW5cdFx0XHQlbHVcbiIsICAgIEJJVChkd29yZCwgMSkpOwpAQCAtMTU4NSw3ICsx NjAwLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfcGlwZV9jb252X2NmZyh2b2lkKQogewogCXVp bnQzMl90IGR3b3JkOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfUElQRV9D T05WX0NGRyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSAr IEFVRF9QSVBFX0NPTlZfQ0ZHKTsKIAlwcmludGYoIkFVRF9QSVBFX0NPTlZfQ0ZHICBDb252ZXJ0 b3JfMV9EaWdlblx0XHRcdCVsdVxuIiwgICAgQklUKGR3b3JkLCAwKSk7CiAJcHJpbnRmKCJBVURf UElQRV9DT05WX0NGRyAgQ29udmVydG9yXzJfRGlnZW5cdFx0XHQlbHVcbiIsICAgIEJJVChkd29y ZCwgMSkpOwogCXByaW50ZigiQVVEX1BJUEVfQ09OVl9DRkcgIENvbnZlcnRvcl8zX0RpZ2VuXHRc dFx0JWx1XG4iLCAgICBCSVQoZHdvcmQsIDIpKTsKQEAgLTE2MDcsMTAgKzE2MjIsMTIgQEAgc3Rh dGljIHZvaWQgZHVtcF9hdWRfZGlnX2NudnQoaW50IGluZGV4KQogCWNoYXIgcHJlZml4W01BWF9Q UkVGSVhfU0laRV07CiAKIAlpZiAoIUlTX0hBU1dFTExfUExVUyhkZXZpZCkpIHsKLQkJZHdvcmQg PSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfT1VUX0RJR19DTlZUX0EgICsgKGluZGV4IC0gUElQ RV9BKSAqIDB4MTAwKTsKKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdf YmFzZSArCisJCQkgICAgICBBVURfT1VUX0RJR19DTlZUX0EgICsgKGluZGV4IC0gUElQRV9BKSAq IDB4MTAwKTsKIAkJc3ByaW50ZihwcmVmaXgsICJBVURfT1VUX0RJR19DTlZUXyVjIiwgJ0EnICsg aW5kZXggLSBQSVBFX0EpOwogCX0gZWxzZSB7Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNl ICsgQVVEX0MxX0RJR19DTlZUICsgKGluZGV4IC0gQ09OVkVSVEVSXzEpICogMHgxMDApOworCQlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX0MxX0RJR19D TlZUICsKKwkJCSAgICAgIChpbmRleCAtIENPTlZFUlRFUl8xKSAqIDB4MTAwKTsKIAkJc3ByaW50 ZihwcmVmaXgsICJBVURfQyVjX0RJR19DTlZUICAgIiwgJzEnICsgaW5kZXggLSBDT05WRVJURVJf MSk7CiAJfQogCkBAIC0xNjMzLDEwICsxNjUwLDEyIEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX3N0 cl9kZXNjKGludCBpbmRleCkKIAl1aW50MzJfdCByYXRlOwogCiAJaWYgKCFJU19IQVNXRUxMX1BM VVMoZGV2aWQpKSB7Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX09VVF9TVFJf REVTQ19BICsgKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKKwkJZHdvcmQgPSBJTlJFRyhpZ3Rf Z2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArCisJCQkgICAgICBBVURfT1VUX1NUUl9ERVNDX0Eg KyAoaW5kZXggLSBQSVBFX0EpICogMHgxMDApOwogCQlzcHJpbnRmKHByZWZpeCwgIkFVRF9PVVRf U1RSX0RFU0NfJWMiLCAnQScgKyBpbmRleCAtIFBJUEVfQSk7CiAJfSBlbHNlIHsKLQkJZHdvcmQg PSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfQzFfU1RSX0RFU0MgKyAoaW5kZXggLSBDT05WRVJU RVJfMSkgKiAweDEwMCk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVn X2Jhc2UgKyBBVURfQzFfU1RSX0RFU0MgKworCQkJICAgICAgKGluZGV4IC0gQ09OVkVSVEVSXzEp ICogMHgxMDApOwogCQlzcHJpbnRmKHByZWZpeCwgIkFVRF9DJWNfU1RSX0RFU0MgICIsICcxJyAr IGluZGV4IC0gQ09OVkVSVEVSXzEpOwogCX0KIApAQCAtMTY2OCw4ICsxNjg3LDkgQEAgc3RhdGlj IHZvaWQgZHVtcF9hdWRfb3V0X2NoYW5fbWFwKHZvaWQpCiAKIAlwcmludGYoIkFVRF9PVVRfQ0hB Tl9NQVAgIENvbnZlcnRlcl9DaGFubmVsX01BUAlQT1JUQglQT1JUQwlQT1JURFxuIik7CiAJZm9y IChpID0gMDsgaSA8IDg7IGkrKykgewotCQlPVVRSRUcoYXVkX3JlZ19iYXNlICsgQVVEX09VVF9D SEFOX01BUCwgaSB8IChpIDw8IDgpIHwgKGkgPDwgMTYpKTsKLQkJZHdvcmQgPSBJTlJFRyhhdWRf cmVnX2Jhc2UgKyBBVURfT1VUX0NIQU5fTUFQKTsKKwkJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywg YXVkX3JlZ19iYXNlICsgQVVEX09VVF9DSEFOX01BUCwKKwkJICAgICAgIGkgfCAoaSA8PCA4KSB8 IChpIDw8IDE2KSk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jh c2UgKyBBVURfT1VUX0NIQU5fTUFQKTsKIAkJcHJpbnRmKCJcdFx0XHRcdCVsdVx0JWx1XHQlbHVc dCVsdVxuIiwKIAkJCQkxICsgQklUUyhkd29yZCwgIDMsICAwKSwKIAkJCQkxICsgQklUUyhkd29y ZCwgIDcsICA0KSwKQEAgLTE2ODMsNyArMTcwMyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX2Nv bm5lY3RfbGlzdCh2b2lkKQogCXVpbnQzMl90IGR3b3JkOwogCWNoYXIgcHJlZml4W01BWF9QUkVG SVhfU0laRV07CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9QSU5XX0NPTk5M TkdfTElTVCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSAr IEFVRF9QSU5XX0NPTk5MTkdfTElTVCk7CiAJc3ByaW50ZihwcmVmaXgsICJBVURfUElOV19DT05O TE5HX0xJU1QiKTsKIAogCXByaW50ZigiJXMgIENvbm5lY3RfTGlzdF9MZW5ndGhcdFx0JWx1XG4i LCAgICAgcHJlZml4LCBCSVRTKGR3b3JkLCA2LCAwKSk7CkBAIC0xNjk4LDExICsxNzE4LDEzIEBA IHN0YXRpYyB2b2lkIGR1bXBfYXVkX2Nvbm5lY3Rfc2VsZWN0KHZvaWQpCiAJY2hhciBwcmVmaXhb TUFYX1BSRUZJWF9TSVpFXTsKIAogCWlmIChJU19IQVNXRUxMX1BMVVMoZGV2aWQpKSB7Ci0JCWR3 b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1BJUEVfQ09OTl9TRUxfQ1RSTCk7CisJCWR3 b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKworCQkJICAgICAgQVVE X1BJUEVfQ09OTl9TRUxfQ1RSTCk7CiAJCXNwcmludGYocHJlZml4LCAiQVVEX1BJUEVfQ09OTl9T RUxfQ1RSTCIpOwogCiAJfSBlbHNlIHsKLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBB VURfUElOV19DT05OTE5HX1NFTCk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBh dWRfcmVnX2Jhc2UgKworCQkJICAgICAgQVVEX1BJTldfQ09OTkxOR19TRUwpOwogCQlzcHJpbnRm KHByZWZpeCwgIkFVRF9QSU5XX0NPTk5MTkdfU0VMICAiKTsKIAl9CiAKQEAgLTE3MTgsMTEgKzE3 NDAsMTMgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfY3RybF9zdGF0ZShpbnQgaW5kZXgpCiAKIAlp ZiAoSVNfSEFTV0VMTF9QTFVTKGRldmlkKSkgewogCQlvZmZzZXQgPSAoaW5kZXggLSBUUkFOU0NP REVSX0EpICogMHgxMDA7Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1RDQV9E SVBfRUxEX0NUUkxfU1QgKyBvZmZzZXQpOworCQlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1p bywgYXVkX3JlZ19iYXNlICsKKwkJCSAgICAgIEFVRF9UQ0FfRElQX0VMRF9DVFJMX1NUICsgb2Zm c2V0KTsKIAkJcHJpbnRmKCJBdWRpbyBESVAgYW5kIEVMRCBjb250cm9sIHN0YXRlIGZvciBUcmFu c2NvZGVyICVjXG4iLCAgJ0EnICsgaW5kZXggLSBUUkFOU0NPREVSX0EpOwogCX0gZWxzZSB7CiAJ CW9mZnNldCA9IChpbmRleCAtIFBJUEVfQSkgKiAweDEwMDsKLQkJZHdvcmQgPSBJTlJFRyhhdWRf cmVnX2Jhc2UgKyBBVURfQ05UTF9TVF9BICsgb2Zmc2V0KTsKKwkJZHdvcmQgPSBJTlJFRyhpZ3Rf Z2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9DTlRMX1NUX0EgKworCQkJICAgICAgb2Zm c2V0KTsKIAkJcHJpbnRmKCJBdWRpbyBjb250cm9sIHN0YXRlIC0gUGlwZSAlY1xuIiwgICdBJyAr IGluZGV4IC0gUElQRV9BKTsKIAl9CiAKQEAgLTE3NDMsNyArMTc2Nyw3IEBAIHN0YXRpYyB2b2lk IGR1bXBfYXVkX2N0cmxfc3RhdGUyKHZvaWQpCiB7CiAJdWludDMyX3QgZHdvcmQ7CiAKLQlkd29y ZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9DTlRMX1NUMik7CisJZHdvcmQgPSBJTlJFRyhp Z3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9DTlRMX1NUMik7CiAJcHJpbnRmKCJB VURfQ05UTF9TVDIgIEVMRF92YWxpZEJcdFx0XHRcdCVsdVxuIiwgIEJJVChkd29yZCwgMCkpOwog CXByaW50ZigiQVVEX0NOVExfU1QyICBDUF9SZWFkeUJcdFx0XHRcdFx0JWx1XG4iLCBCSVQoZHdv cmQsIDEpKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUMiAgRUxEX3ZhbGlkQ1x0XHRcdFx0JWx1XG4i LCAgQklUKGR3b3JkLCA0KSk7CkBAIC0xNzU3LDcgKzE3ODEsNyBAQCBzdGF0aWMgdm9pZCBkdW1w X2F1ZF9lbGRfY3BfdmxkKHZvaWQpCiB7CiAJdWludDMyX3QgZHdvcmQ7CiAKLQlkd29yZCA9IElO UkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9QSU5fRUxEX0NQX1ZMRCk7CisJZHdvcmQgPSBJTlJFRyhp Z3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9QSU5fRUxEX0NQX1ZMRCk7CiAJcHJp bnRmKCJBVURfUElOX0VMRF9DUF9WTEQgIFRyYW5zY29kZXJfQSBFTERfdmFsaWRcdFx0JWx1XG4i LAlCSVQoZHdvcmQsIDApKTsKIAlwcmludGYoIkFVRF9QSU5fRUxEX0NQX1ZMRCAgVHJhbnNjb2Rl cl9BIENQX1JlYWR5IFx0XHQlbHVcbiIsCUJJVChkd29yZCwgMSkpOwogCXByaW50ZigiQVVEX1BJ Tl9FTERfQ1BfVkxEICBUcmFuc2NvZGVyX0EgT3V0X2VuYWJsZVx0XHQlbHVcbiIsCUJJVChkd29y ZCwgMikpOwpAQCAtMTc3Niw3ICsxODAwLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfaGRtaV9z dGF0dXModm9pZCkKIHsKIAl1aW50MzJfdCBkd29yZDsKIAotCWR3b3JkID0gSU5SRUcoYXVkX3Jl Z19iYXNlICsgQVVEX0hETUlXX1NUQVRVUyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21t aW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9IRE1JV19TVEFUVVMpOwogCXByaW50ZigiQVVEX0hETUlX X1NUQVRVUyAgRnVuY3Rpb25fUmVzZXRcdFx0XHQlbHVcbiIsICAgICAgICAgICAgICAgIEJJVChk d29yZCwgMjQpKTsKIAlwcmludGYoIkFVRF9IRE1JV19TVEFUVVMgIEJDTEsvQ0RDTEtfRklGT19P dmVycnVuXHRcdCVsdVxuIiwJICAgICBCSVQoZHdvcmQsIDI1KSk7CiAJcHJpbnRmKCJBVURfSERN SVdfU1RBVFVTICBDb252X0FfQ0RDTEsvRE9UQ0xLX0ZJRk9fT3ZlcnJ1blx0JWx1XG4iLCAgQklU KGR3b3JkLCAyOCkpOwpAQCAtMTgxNyw3ICsxODQxLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9kcF9w b3J0X2N0cmwoaW50IHBvcnQpCiAJc3ByaW50ZihwcmVmaXgsICJEUF8lYyIsICdCJyArIHBvcnQg LSBQT1JUX0IpOwogCiAJcG9ydF9jdHJsID0gZGlzcF9yZWdfYmFzZSArIERQX0NUTF9CICsgKHBv cnQgLSBQT1JUX0IpICogMHgxMDA7Ci0JZHdvcmQgPSBJTlJFRyhwb3J0X2N0cmwpOworCWR3b3Jk ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBwb3J0X2N0cmwpOwogCXByaW50ZigiJXMgRGlzcGxh eVBvcnRfRW5hYmxlXHRcdFx0XHRcdCVsdVxuIiwgICAgICAgIHByZWZpeCwgQklUKGR3b3JkLCAz MSkpOwogCXByaW50ZigiJXMgVHJhbnNjb2Rlcl9TZWxlY3RcdFx0XHRcdFx0JXNcbiIsICAgICAg ICAgIHByZWZpeCwgQklUKGR3b3JkLCAzMCkgPyAiVHJhbnNjb2RlciBCIiA6ICJUcmFuc2NvZGVy IEEiKTsKIAlwcmludGYoIiVzIFBvcnRfV2lkdGhfU2VsZWN0aW9uXHRcdFx0XHRbMHglbHhdICVz XG4iLCBwcmVmaXgsIEJJVFMoZHdvcmQsIDIxLCAxOSksCkBAIC0xODQxLDcgKzE4NjUsNyBAQCBz dGF0aWMgdm9pZCBkdW1wX2hkbWlfcG9ydF9jdHJsKGludCBwb3J0KQogCQlwb3J0X2N0cmwgPSBk aXNwX3JlZ19iYXNlICsgSERNSV9DVExfQiArIChwb3J0IC0gUE9SVF9CKSAqIDB4MTA7CiAJfQog Ci0JZHdvcmQgPSBJTlJFRyhwb3J0X2N0cmwpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9t bWlvLCBwb3J0X2N0cmwpOwogCXByaW50ZigiJXMgSERNSV9FbmFibGVcdFx0XHRcdFx0JXVcbiIs ICAgICAgICAgICAgICAgICBwcmVmaXgsICEhKGR3b3JkICYgU0RWT19FTkFCTEUpKTsKIAlwcmlu dGYoIiVzIFRyYW5zY29kZXJfU2VsZWN0XHRcdFx0XHQlc1xuIiwgICAgICAgICAgICAgcHJlZml4 LCBCSVQoZHdvcmQsIDMwKSA/ICJUcmFuc2NvZGVyIEIiIDogIlRyYW5zY29kZXIgQSIpOwogCXBy aW50ZigiJXMgSERDUF9Qb3J0X1NlbGVjdFx0XHRcdFx0JWx1XG4iLCAgICAgICAgICAgICBwcmVm aXgsIEJJVChkd29yZCwgNSkpOwpAQCAtMjAyOSw3ICsyMDUzLDcgQEAgc3RhdGljIHZvaWQgZHVt cF9kZGlfYnVmX2N0bChpbnQgcG9ydCkKIHsKIAl1aW50MzJfdCBkd29yZDsKIAotCWR3b3JkID0g SU5SRUcoRERJX0JVRl9DVExfQSArIChwb3J0IC0gUE9SVF9BKSAqIDB4MTAwKTsKKwlkd29yZCA9 IElOUkVHKGlndF9nbG9iYWxfbW1pbywgRERJX0JVRl9DVExfQSArIChwb3J0IC0gUE9SVF9BKSAq IDB4MTAwKTsKIAlwcmludGYoIkRESSAlYyBCdWZmZXIgY29udHJvbFxuIiwgJ0EnICsgcG9ydCAt IFBPUlRfQSk7CiAKIAlwcmludGYoIlx0RFAgcG9ydCB3aWR0aFx0XHRcdFx0XHRbMHglbHhdICVz XG4iLCBCSVRTKGR3b3JkLCAzLCAxKSwKQEAgLTIwNDEsNyArMjA2NSw4IEBAIHN0YXRpYyB2b2lk IGR1bXBfZGRpX2Z1bmNfY3RsKGludCBwaXBlKQogewogCXVpbnQzMl90IGR3b3JkOwogCi0JZHdv cmQgPSBJTlJFRyhQSVBFX0RESV9GVU5DX0NUTF9BICsgKHBpcGUgLSBQSVBFX0EpICogMHgxMDAw KTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgUElQRV9ERElfRlVOQ19DVExfQSAr IChwaXBlIC0gUElQRV9BKSAqCisJCSAgICAgIDB4MTAwMCk7CiAJcHJpbnRmKCJQaXBlICVjIERE SSBGdW5jdGlvbiBDb250cm9sXG4iLCAnQScgKyBwaXBlIC0gUElQRV9BKTsKIAogCXByaW50Zigi XHRCSVRTIHBlciBjb2xvclx0XHRcdFx0XHRbMHglbHhdICVzXG4iLCAgICBCSVRTKGR3b3JkLCAy MiwgMjApLApAQCAtMjA1OCw3ICsyMDgzLDggQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfY29ubmVj dF9saXN0X2VudHJ5X2xlbmd0aChpbnQgdHJhbnNjb2RlcikKIAl1aW50MzJfdCBkd29yZDsKIAlj aGFyIHByZWZpeFtNQVhfUFJFRklYX1NJWkVdOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jh c2UgKyBBVURfVENBX1BJTl9QSVBFX0NPTk5fRU5UUllfTE5HVEggKyAodHJhbnNjb2RlciAtIFRS QU5TQ09ERVJfQSkgKiAweDEwMCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1 ZF9yZWdfYmFzZSArCisJCSAgICAgIEFVRF9UQ0FfUElOX1BJUEVfQ09OTl9FTlRSWV9MTkdUSCAr ICh0cmFuc2NvZGVyIC0gVFJBTlNDT0RFUl9BKSAqIDB4MTAwKTsKIAlzcHJpbnRmKHByZWZpeCwg IkFVRF9UQyVjX1BJTl9QSVBFX0NPTk5fRU5UUllfTE5HVEgiLCAnQScgKyB0cmFuc2NvZGVyIC0g VFJBTlNDT0RFUl9BKTsKIAogCXByaW50ZigiJXMgIENvbm5lY3RfTGlzdF9MZW5ndGhcdCVsdVxu IiwgcHJlZml4LCBCSVRTKGR3b3JkLCA2LCAwKSk7CkBAIC0yMDcxLDcgKzIwOTcsNyBAQCBzdGF0 aWMgdm9pZCBkdW1wX2F1ZF9jb25uZWN0X3NlbGVjdF9jdHJsKHZvaWQpCiB7CiAJdWludDMyX3Qg ZHdvcmQ7CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9QSVBFX0NPTk5fU0VM X0NUUkwpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBB VURfUElQRV9DT05OX1NFTF9DVFJMKTsKIAlwcmludGYoIkFVRF9QSVBFX0NPTk5fU0VMX0NUUkwg IENvbm5lY3Rpb25fc2VsZWN0X1BvcnRfQlx0JSNseFxuIiwgQklUUyhkd29yZCwgIDcsICAwKSk7 CiAJcHJpbnRmKCJBVURfUElQRV9DT05OX1NFTF9DVFJMICBDb25uZWN0aW9uX3NlbGVjdF9Qb3J0 X0NcdCUjbHhcbiIsIEJJVFMoZHdvcmQsIDE1LCAgOCkpOwogCXByaW50ZigiQVVEX1BJUEVfQ09O Tl9TRUxfQ1RSTCAgQ29ubmVjdGlvbl9zZWxlY3RfUG9ydF9EXHQlI2x4XG4iLCBCSVRTKGR3b3Jk LCAyMywgMTYpKTsKQEAgLTIwODIsNyArMjEwOCw4IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX2Rp cF9lbGRfY3RybF9zdChpbnQgdHJhbnNjb2RlcikKIAl1aW50MzJfdCBkd29yZDsKIAlpbnQgb2Zm c2V0ID0gKHRyYW5zY29kZXIgLSBUUkFOU0NPREVSX0EpICogMHgxMDA7CiAKLQlkd29yZCA9IElO UkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9UQ0FfRElQX0VMRF9DVFJMX1NUICsgb2Zmc2V0KTsKKwlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX1RDQV9ESVBf RUxEX0NUUkxfU1QgKworCQkgICAgICBvZmZzZXQpOwogCXByaW50ZigiQXVkaW8gRElQIGFuZCBF TEQgY29udHJvbCBzdGF0ZSBmb3IgVHJhbnNjb2RlciAlY1xuIiwgICdBJyArIHRyYW5zY29kZXIg LSBUUkFOU0NPREVSX0EpOwogCiAJcHJpbnRmKCJcdEVMRF9BQ0tcdFx0XHRcdFx0XHQlbHVcbiIs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQklUKGR3b3JkLCA0KSk7CkBAIC0yMTAy LDcgKzIxMjksNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9oZG1pX2ZpZm9fc3RhdHVzKHZvaWQp CiB7CiAJdWludDMyX3QgZHdvcmQ7CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFV RF9IRE1JX0ZJRk9fU1RBVFVTKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVk X3JlZ19iYXNlICsgQVVEX0hETUlfRklGT19TVEFUVVMpOwogCXByaW50ZigiQVVEX0hETUlfRklG T19TVEFUVVMgIEZ1bmN0aW9uX1Jlc2V0XHRcdFx0JWx1XG4iLCAgICAgICAgICAgICAgICBCSVQo ZHdvcmQsIDI0KSk7CiAJcHJpbnRmKCJBVURfSERNSV9GSUZPX1NUQVRVUyAgQ29udl8xX0NEQ0xL L0RPVENMS19GSUZPX092ZXJydW5cdCVsdVxuIiwgIEJJVChkd29yZCwgMjYpKTsKIAlwcmludGYo IkFVRF9IRE1JX0ZJRk9fU1RBVFVTICBDb252XzFfQ0RDTEsvRE9UQ0xLX0ZJRk9fVW5kZXJydW5c dCVsdVxuIiwgQklUKGR3b3JkLCAyNykpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfYmFja2xp Z2h0LmMgYi90b29scy9pbnRlbF9iYWNrbGlnaHQuYwppbmRleCAwNjdmZDQxOC4uYmRiZjlhZjMg MTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2JhY2tsaWdodC5jCisrKyBiL3Rvb2xzL2ludGVsX2Jh Y2tsaWdodC5jCkBAIC00Miw4ICs0Miw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJn dikKIAogCWludGVsX21taW9fdXNlX3BjaV9iYXIoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSk7CiAK LQljdXJyZW50ID0gSU5SRUcoQkxDX1BXTV9DUFVfQ1RMKSAmIEJBQ0tMSUdIVF9EVVRZX0NZQ0xF X01BU0s7Ci0JbWF4ID0gSU5SRUcoQkxDX1BXTV9QQ0hfQ1RMMikgPj4gMTY7CisJY3VycmVudCA9 IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQkxDX1BXTV9DUFVfQ1RMKSAmIEJBQ0tMSUdIVF9EVVRZ X0NZQ0xFX01BU0s7CisJbWF4ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBCTENfUFdNX1BDSF9D VEwyKSA+PiAxNjsKIAogCXByaW50ZiAoImN1cnJlbnQgYmFja2xpZ2h0IHZhbHVlOiAlZCUlXG4i LCBjdXJyZW50ICogMTAwIC8gbWF4KTsKIApAQCAtNTEsOSArNTEsOSBAQCBpbnQgbWFpbihpbnQg YXJnYywgY2hhcioqIGFyZ3YpCiAJCXVpbnQzMl90IHYgPSBhdG9pIChhcmd2WzFdKSAqIG1heCAv IDEwMDsKIAkJaWYgKHYgPiBtYXgpCiAJCQl2ID0gbWF4OwotCQlPVVRSRUcoQkxDX1BXTV9DUFVf Q1RMLAotCQkgICAgICAgKElOUkVHKEJMQ19QV01fQ1BVX0NUTCkgJn4gQkFDS0xJR0hUX0RVVFlf Q1lDTEVfTUFTSykgfCB2KTsKLQkJKHZvaWQpIElOUkVHKEJMQ19QV01fQ1BVX0NUTCk7CisJCU9V VFJFRyhpZ3RfZ2xvYmFsX21taW8sIEJMQ19QV01fQ1BVX0NUTCwKKwkJICAgICAgIChJTlJFRyhp Z3RfZ2xvYmFsX21taW8sIEJMQ19QV01fQ1BVX0NUTCkgJiB+QkFDS0xJR0hUX0RVVFlfQ1lDTEVf TUFTSykgfCB2KTsKKwkJKHZvaWQpSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBCTENfUFdNX0NQVV9D VEwpOwogCQlwcmludGYgKCJzZXQgYmFja2xpZ2h0IHRvICVkJSVcbiIsIHYgKiAxMDAgLyBtYXgp OwogCX0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYyBiL3Rvb2xz L2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMKaW5kZXggNTFmNWI5YTUuLmUxMDk0ZDM5IDEwMDY0NAot LS0gYS90b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jCisrKyBiL3Rvb2xzL2ludGVsX2Rpc3Bs YXlfcG9sbGVyLmMKQEAgLTcxLDIyICs3MSwyMiBAQCBzdGF0aWMgdm9pZCBzaWdoYW5kbGVyKGlu dCB4KQogCiBzdGF0aWMgdWludDE2X3QgcmVhZF9yZWdfMTYodWludDMyX3QgcmVnKQogewotCXJl dHVybiBJTlJFRzE2KHZsdl9vZmZzZXQgKyByZWcpOworCXJldHVybiBJTlJFRzE2KGlndF9nbG9i YWxfbW1pbywgdmx2X29mZnNldCArIHJlZyk7CiB9CiAKIHN0YXRpYyB1aW50MzJfdCByZWFkX3Jl Zyh1aW50MzJfdCByZWcpCiB7Ci0JcmV0dXJuIElOUkVHKHZsdl9vZmZzZXQgKyByZWcpOworCXJl dHVybiBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIHZsdl9vZmZzZXQgKyByZWcpOwogfQogCiBzdGF0 aWMgdm9pZCB3cml0ZV9yZWdfMTYodWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwpCiB7Ci0JT1VU UkVHMTYodmx2X29mZnNldCArIHJlZywgdmFsKTsKKwlPVVRSRUcxNihpZ3RfZ2xvYmFsX21taW8s IHZsdl9vZmZzZXQgKyByZWcsIHZhbCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdyaXRlX3JlZyh1aW50 MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKIHsKLQlPVVRSRUcodmx2X29mZnNldCArIHJlZywgdmFs KTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCB2bHZfb2Zmc2V0ICsgcmVnLCB2YWwpOwogfQog CiBzdGF0aWMgY2hhciBwaXBlX25hbWUoaW50IHBpcGUpCmRpZmYgLS1naXQgYS90b29scy9pbnRl bF9ncHVfdGltZS5jIGIvdG9vbHMvaW50ZWxfZ3B1X3RpbWUuYwppbmRleCA1NmQ2NWZlMC4uNzky NDBmZDMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2dwdV90aW1lLmMKKysrIGIvdG9vbHMvaW50 ZWxfZ3B1X3RpbWUuYwpAQCAtODYsOCArODYsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCXdoaWxlICghZ29kZG8pIHsKIAkJdWludDMyX3QgcmluZ19oZWFkLCByaW5nX3Rh aWw7CiAKLQkJcmluZ19oZWFkID0gSU5SRUcoTFBfUklORyArIFJJTkdfSEVBRCkgJiBIRUFEX0FE RFI7Ci0JCXJpbmdfdGFpbCA9IElOUkVHKExQX1JJTkcgKyBSSU5HX1RBSUwpICYgVEFJTF9BRERS OworCQlyaW5nX2hlYWQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIExQX1JJTkcgKyBSSU5HX0hF QUQpICYKKwkJCSAgICBIRUFEX0FERFI7CisJCXJpbmdfdGFpbCA9IElOUkVHKGlndF9nbG9iYWxf bW1pbywgTFBfUklORyArIFJJTkdfVEFJTCkgJgorCQkJICAgIFRBSUxfQUREUjsKIAogCQlpZiAo cmluZ190YWlsID09IHJpbmdfaGVhZCkKIAkJCXJpbmdfaWRsZSsrOwpkaWZmIC0tZ2l0IGEvdG9v bHMvaW50ZWxfaW5mb2ZyYW1lcy5jIGIvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jCmluZGV4IDJl ZjVkNGZkLi42ODlmNWZhYSAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfaW5mb2ZyYW1lcy5jCisr KyBiL3Rvb2xzL2ludGVsX2luZm9mcmFtZXMuYwpAQCAtMzM3LDIwICszMzcsMjAgQEAgc3RhdGlj IHZvaWQgbG9hZF9pbmZvZnJhbWUoVHJhbnNjb2RlciB0cmFuc2NvZGVyLCBEaXBJbmZvRnJhbWUg KmZyYW1lLAogCXVpbnQzMl90IGN0bF92YWw7CiAJdWludDMyX3QgaTsKIAotCWN0bF92YWwgPSBJ TlJFRyhjdGxfcmVnKTsKKwljdGxfdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBjdGxfcmVn KTsKIAogCWN0bF92YWwgJj0gfkRJUF9DVExfQlVGRkVSX0lOREVYOwogCWN0bF92YWwgfD0gdHlw ZSA8PCAxOTsKLQlPVVRSRUcoY3RsX3JlZywgY3RsX3ZhbCk7Ci0JY3RsX3ZhbCA9IElOUkVHKGN0 bF9yZWcpOworCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIGN0bF9yZWcsIGN0bF92YWwpOworCWN0 bF92YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGN0bF9yZWcpOwogCiAJY3RsX3ZhbCAmPSB+ RElQX0NUTF9BQ0NFU1NfQUREUjsKLQlPVVRSRUcoY3RsX3JlZywgY3RsX3ZhbCk7CisJT1VUUkVH KGlndF9nbG9iYWxfbW1pbywgY3RsX3JlZywgY3RsX3ZhbCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwg MTY7IGkrKykgewotCQljdGxfdmFsID0gSU5SRUcoY3RsX3JlZyk7CisJCWN0bF92YWwgPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sIGN0bF9yZWcpOwogCQlhc3NlcnQoKGN0bF92YWwgJiBESVBfQ1RM X0FDQ0VTU19BRERSKSA9PSBpKTsKLQkJZnJhbWUtPmRhdGEzMltpXSA9IElOUkVHKGRhdGFfcmVn KTsKKwkJZnJhbWUtPmRhdGEzMltpXSA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgZGF0YV9yZWcp OwogCX0KIH0KIApAQCAtMzg1LDcgKzM4NSw3IEBAIHN0YXRpYyB2b2lkIGluZm9mcmFtZV9maXhf Y2hlY2tzdW0oRGlwSW5mb0ZyYW1lICpmcmFtZSkKIHN0YXRpYyB2b2lkIGR1bXBfcG9ydF9pbmZv KGludCBoZG1pX3BvcnRfaW5kZXgpCiB7CiAJUmVnaXN0ZXIgcG9ydCA9IGdldF9oZG1pX3BvcnQo aGRtaV9wb3J0X2luZGV4KTsKLQl1aW50MzJfdCB2YWwgPSBJTlJFRyhwb3J0KTsKKwl1aW50MzJf dCB2YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIHBvcnQpOwogCVRyYW5zY29kZXIgdHJhbnNj b2RlcjsKIAogCXByaW50ZigiXG5Qb3J0ICVzOlxuIiwgaGRtaV9wb3J0X25hbWVzW2hkbWlfcG9y dF9pbmRleF0pOwpAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXZpX2luZm8o VHJhbnNjb2RlciB0cmFuc2NvZGVyKQogCURpcEluZm9GcmFtZSBmcmFtZTsKIAogCWxvYWRfaW5m b2ZyYW1lKHRyYW5zY29kZXIsICZmcmFtZSwgRElQX0FWSSk7Ci0JdmFsID0gSU5SRUcocmVnKTsK Kwl2YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZyk7CiAKIAlwcmludGYoIkFWSSBJbmZv RnJhbWU6XG4iKTsKIApAQCAtNTM3LDcgKzUzNyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfdmVuZG9y X2luZm8oVHJhbnNjb2RlciB0cmFuc2NvZGVyKQogCURpcEluZm9GcmFtZSBmcmFtZTsKIAogCWxv YWRfaW5mb2ZyYW1lKHRyYW5zY29kZXIsICZmcmFtZSwgRElQX1ZFTkRPUik7Ci0JdmFsID0gSU5S RUcocmVnKTsKKwl2YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZyk7CiAKIAlwcmludGYo IlZlbmRvciBJbmZvRnJhbWU6XG4iKTsKIApAQCAtNTcyLDcgKzU3Miw3IEBAIHN0YXRpYyB2b2lk IGR1bXBfZ2FtdXRfaW5mbyhUcmFuc2NvZGVyIHRyYW5zY29kZXIpCiAJRGlwSW5mb0ZyYW1lIGZy YW1lOwogCiAJbG9hZF9pbmZvZnJhbWUodHJhbnNjb2RlciwgJmZyYW1lLCBESVBfR0FNVVQpOwot CXZhbCA9IElOUkVHKHJlZyk7CisJdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcpOwog CiAJcHJpbnRmKCJHYW11dCBJbmZvRnJhbWU6XG4iKTsKIApAQCAtNjAwLDcgKzYwMCw3IEBAIHN0 YXRpYyB2b2lkIGR1bXBfc3BkX2luZm8oVHJhbnNjb2RlciB0cmFuc2NvZGVyKQogCWNoYXIgZGVz Y3JpcHRpb25bMTddOwogCiAJbG9hZF9pbmZvZnJhbWUodHJhbnNjb2RlciwgJmZyYW1lLCBESVBf U1BEKTsKLQl2YWwgPSBJTlJFRyhyZWcpOworCXZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywg cmVnKTsKIAogCXByaW50ZigiU1BEIEluZm9GcmFtZTpcbiIpOwogCkBAIC02MzUsNyArNjM1LDcg QEAgc3RhdGljIHZvaWQgZHVtcF9zcGRfaW5mbyhUcmFuc2NvZGVyIHRyYW5zY29kZXIpCiBzdGF0 aWMgdm9pZCBkdW1wX3RyYW5zY29kZXJfaW5mbyhUcmFuc2NvZGVyIHRyYW5zY29kZXIpCiB7CiAJ UmVnaXN0ZXIgcmVnID0gZ2V0X2RpcF9jdGxfcmVnKHRyYW5zY29kZXIpOwotCXVpbnQzMl90IHZh bCA9IElOUkVHKHJlZyk7CisJdWludDMyX3QgdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBy ZWcpOwogCiAJaWYgKGdlbiA9PSA0KSB7CiAJCXByaW50ZigiXG5ESVAgaW5mb3JtYXRpb246XG4i KTsKQEAgLTY5OCwzNyArNjk4LDM3IEBAIHN0YXRpYyB2b2lkIHdyaXRlX2luZm9mcmFtZShUcmFu c2NvZGVyIHRyYW5zY29kZXIsIERpcFR5cGUgdHlwZSwKIAl1aW50MzJfdCBjdGxfdmFsOwogCXVu c2lnbmVkIGludCBpOwogCi0JY3RsX3ZhbCA9IElOUkVHKGN0bF9yZWcpOworCWN0bF92YWwgPSBJ TlJFRyhpZ3RfZ2xvYmFsX21taW8sIGN0bF9yZWcpOwogCWN0bF92YWwgJj0gfkRJUF9DVExfQlVG RkVSX0lOREVYOwogCWN0bF92YWwgfD0gKHR5cGUgPDwgMTkpOwogCWN0bF92YWwgJj0gfkRJUF9D VExfQUNDRVNTX0FERFI7Ci0JT1VUUkVHKGN0bF9yZWcsIGN0bF92YWwpOworCU9VVFJFRyhpZ3Rf Z2xvYmFsX21taW8sIGN0bF9yZWcsIGN0bF92YWwpOwogCiAJZm9yIChpID0gMDsgaSA8IDg7IGkr KykgewotCQljdGxfdmFsID0gSU5SRUcoY3RsX3JlZyk7CisJCWN0bF92YWwgPSBJTlJFRyhpZ3Rf Z2xvYmFsX21taW8sIGN0bF9yZWcpOwogCQlhc3NlcnQoKGN0bF92YWwgJiBESVBfQ1RMX0FDQ0VT U19BRERSKSA9PSBpKTsKLQkJT1VUUkVHKGRhdGFfcmVnLCBmcmFtZS0+ZGF0YTMyW2ldKTsKKwkJ T1VUUkVHKGlndF9nbG9iYWxfbW1pbywgZGF0YV9yZWcsIGZyYW1lLT5kYXRhMzJbaV0pOwogCX0K IH0KIAogc3RhdGljIHZvaWQgZGlzYWJsZV9pbmZvZnJhbWUoVHJhbnNjb2RlciB0cmFuc2NvZGVy LCBEaXBUeXBlIHR5cGUpCiB7CiAJUmVnaXN0ZXIgcmVnID0gZ2V0X2RpcF9jdGxfcmVnKHRyYW5z Y29kZXIpOwotCXVpbnQzMl90IHZhbCA9IElOUkVHKHJlZyk7CisJdWludDMyX3QgdmFsID0gSU5S RUcoaWd0X2dsb2JhbF9tbWlvLCByZWcpOwogCWlmIChnZW4gIT0gNCAmJiB0eXBlID09IERJUF9B VkkpCiAJCXZhbCAmPSB+RElQX0NUTF9FTkFCTEU7CiAJdmFsICY9IH4oMSA8PCAoMjEgKyB0eXBl KSk7Ci0JT1VUUkVHKHJlZywgdmFsKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcsIHZh bCk7CiB9CiAKIHN0YXRpYyB2b2lkIGVuYWJsZV9pbmZvZnJhbWUoVHJhbnNjb2RlciB0cmFuc2Nv ZGVyLCBEaXBUeXBlIHR5cGUpCiB7CiAJUmVnaXN0ZXIgcmVnID0gZ2V0X2RpcF9jdGxfcmVnKHRy YW5zY29kZXIpOwotCXVpbnQzMl90IHZhbCA9IElOUkVHKHJlZyk7CisJdWludDMyX3QgdmFsID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcpOwogCWlmIChnZW4gIT0gNCAmJiB0eXBlID09IERJ UF9BVkkpCiAJCXZhbCB8PSBESVBfQ1RMX0VOQUJMRTsKIAl2YWwgfD0gKDEgPDwgKDIxICsgdHlw ZSkpOwotCU9VVFJFRyhyZWcsIHZhbCk7CisJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnLCB2 YWwpOwogfQogCiBzdGF0aWMgaW50IHBhcnNlX2luZm9mcmFtZV9vcHRpb25fdShjb25zdCBjaGFy ICpuYW1lLCBjb25zdCBjaGFyICpzLApAQCAtNzg3LDcgKzc4Nyw3IEBAIHN0YXRpYyB2b2lkIGNo YW5nZV9hdmlfaW5mb2ZyYW1lKFRyYW5zY29kZXIgdHJhbnNjb2RlciwgY2hhciAqY29tbWFuZHMp CiAJY2hhciAqY3VycmVudCA9IGNvbW1hbmRzOwogCiAJbG9hZF9pbmZvZnJhbWUodHJhbnNjb2Rl ciwgJmZyYW1lLCBESVBfQVZJKTsKLQl2YWwgPSBJTlJFRyhyZWcpOworCXZhbCA9IElOUkVHKGln dF9nbG9iYWxfbW1pbywgcmVnKTsKIAogCXdoaWxlICgxKSB7CiAJCXJjID0gc3NjYW5mKGN1cnJl bnQsICIlMzFzJW4iLCBvcHRpb24sICZyZWFkKTsKQEAgLTg1Niw3ICs4NTYsNyBAQCBzdGF0aWMg dm9pZCBjaGFuZ2VfYXZpX2luZm9mcmFtZShUcmFuc2NvZGVyIHRyYW5zY29kZXIsIGNoYXIgKmNv bW1hbmRzKQogCiAJdmFsICY9IH5ESVBfQ1RMX0ZSRVFVRU5DWTsKIAl2YWwgfD0gRElQX0NUTF9G UkVRX0VWRVJZOwotCU9VVFJFRyhyZWcsIHZhbCk7CisJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywg cmVnLCB2YWwpOwogCiAJZnJhbWUuYXZpLmhlYWRlci50eXBlID0gQVZJX0lORk9GUkFNRV9UWVBF OwogCWZyYW1lLmF2aS5oZWFkZXIudmVyc2lvbiA9IEFWSV9JTkZPRlJBTUVfVkVSU0lPTjsKQEAg LTg4OCw3ICs4ODgsNyBAQCBzdGF0aWMgdm9pZCBjaGFuZ2Vfc3BkX2luZm9mcmFtZShUcmFuc2Nv ZGVyIHRyYW5zY29kZXIsIGNoYXIgKmNvbW1hbmRzKQogCWNoYXIgKmN1cnJlbnQgPSBjb21tYW5k czsKIAogCWxvYWRfaW5mb2ZyYW1lKHRyYW5zY29kZXIsICZmcmFtZSwgRElQX1NQRCk7Ci0JdmFs ID0gSU5SRUcocmVnKTsKKwl2YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZyk7CiAKIAl3 aGlsZSAoMSkgewogCQlyYyA9IHNzY2FuZihjdXJyZW50LCAiJTE1cyVuIiwgb3B0aW9uLCAmcmVh ZCk7CkBAIC05MTcsNyArOTE3LDcgQEAgc3RhdGljIHZvaWQgY2hhbmdlX3NwZF9pbmZvZnJhbWUo VHJhbnNjb2RlciB0cmFuc2NvZGVyLCBjaGFyICpjb21tYW5kcykKIAogCXZhbCAmPSB+RElQX0NU TF9GUkVRVUVOQ1k7CiAJdmFsIHw9IERJUF9DVExfRlJFUV9FVkVSWV9PVEhFUjsKLQlPVVRSRUco cmVnLCB2YWwpOworCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZywgdmFsKTsKIAogCWZyYW1l LnNwZC5oZWFkZXIudHlwZSA9IFNQRF9JTkZPRlJBTUVfVFlQRTsKIAlmcmFtZS5zcGQuaGVhZGVy LnZlcnNpb24gPSBTUERfSU5GT0ZSQU1FX1ZFUlNJT047CkBAIC05NDYsNyArOTQ2LDcgQEAgc3Rh dGljIHZvaWQgY2hhbmdlX2luZm9mcmFtZV9mcmVxdWVuY3koVHJhbnNjb2RlciB0cmFuc2NvZGVy LCBEaXBUeXBlIHR5cGUsCiAJCQkJICAgICAgIERpcEZyZXF1ZW5jeSBmcmVxdWVuY3kpCiB7CiAJ UmVnaXN0ZXIgcmVnID0gZ2V0X2RpcF9jdGxfcmVnKHRyYW5zY29kZXIpOwotCXVpbnQzMl90IHZh bCA9IElOUkVHKHJlZyk7CisJdWludDMyX3QgdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBy ZWcpOwogCiAJaWYgKHR5cGUgPT0gRElQX0FWSSAmJiBmcmVxdWVuY3kgIT0gRElQX0ZSRVFfRVZF UllfVlNZTkMpIHsKIAkJcHJpbnRmKCJFcnJvcjogQVZJIGluZm9mcmFtZSBtdXN0IGJlIHNlbnQg ZXZlcnkgVlN5bmMhXG4iKTsKQEAgLTk1NSwzNyArOTU1LDM3IEBAIHN0YXRpYyB2b2lkIGNoYW5n ZV9pbmZvZnJhbWVfZnJlcXVlbmN5KFRyYW5zY29kZXIgdHJhbnNjb2RlciwgRGlwVHlwZSB0eXBl LAogCiAJdmFsICY9IH5ESVBfQ1RMX0ZSRVFVRU5DWTsKIAl2YWwgfD0gKGZyZXF1ZW5jeSA8PCAx Nik7Ci0JT1VUUkVHKHJlZywgdmFsKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcsIHZh bCk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpc2FibGVfZGlwKFRyYW5zY29kZXIgdHJhbnNjb2RlcikK IHsKIAlSZWdpc3RlciByZWcgPSBnZXRfZGlwX2N0bF9yZWcodHJhbnNjb2Rlcik7Ci0JdWludDMy X3QgdmFsID0gSU5SRUcocmVnKTsKKwl1aW50MzJfdCB2YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21t aW8sIHJlZyk7CiAJdmFsICY9IH5ESVBfQ1RMX0VOQUJMRTsKLQlPVVRSRUcocmVnLCB2YWwpOwor CU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZywgdmFsKTsKIH0KIAogc3RhdGljIHZvaWQgZW5h YmxlX2RpcChUcmFuc2NvZGVyIHRyYW5zY29kZXIpCiB7CiAJUmVnaXN0ZXIgcmVnID0gZ2V0X2Rp cF9jdGxfcmVnKHRyYW5zY29kZXIpOwotCXVpbnQzMl90IHZhbCA9IElOUkVHKHJlZyk7CisJdWlu dDMyX3QgdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcpOwogCXZhbCB8PSBESVBfQ1RM X0VOQUJMRTsKLQlPVVRSRUcocmVnLCB2YWwpOworCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIHJl ZywgdmFsKTsKIH0KIAogc3RhdGljIHZvaWQgZGlzYWJsZV9oZG1pX3BvcnQoUmVnaXN0ZXIgcmVn KQogewotCXVpbnQzMl90IHZhbCA9IElOUkVHKHJlZyk7CisJdWludDMyX3QgdmFsID0gSU5SRUco aWd0X2dsb2JhbF9tbWlvLCByZWcpOwogCXZhbCAmPSB+SERNSV9QT1JUX0VOQUJMRTsKLQlPVVRS RUcocmVnLCB2YWwpOworCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZywgdmFsKTsKIH0KIAog c3RhdGljIHZvaWQgZW5hYmxlX2hkbWlfcG9ydChSZWdpc3RlciByZWcpCiB7Ci0JdWludDMyX3Qg dmFsID0gSU5SRUcocmVnKTsKKwl1aW50MzJfdCB2YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8s IHJlZyk7CiAJdmFsIHw9IEhETUlfUE9SVF9FTkFCTEU7Ci0JT1VUUkVHKHJlZywgdmFsKTsKKwlP VVRSRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcsIHZhbCk7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW50 X3VzYWdlKHZvaWQpCmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9saWQuYyBiL3Rvb2xzL2ludGVs X2xpZC5jCmluZGV4IDM3YzZiYTVlLi4yYjU5N2VmYiAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxf bGlkLmMKKysrIGIvdG9vbHMvaW50ZWxfbGlkLmMKQEAgLTEyMiw3ICsxMjIsNyBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJaW50ZWxfbW1pb191c2VfcGNpX2JhcihpbnRlbF9n ZXRfcGNpX2RldmljZSgpKTsKIAogCXdoaWxlICgxKSB7Ci0JCXN3ZjE0ID0gSU5SRUcoU1dGMTQp OworCQlzd2YxNCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgU1dGMTQpOwogCiAJCXByaW50Zigi SW50ZWwgTFZEUyBMaWQgc3RhdHVzOlxuIik7CiAJCXByaW50ZigiXHRTV0YxNCgweCV4KSA6ICVz XG4iLCBzd2YxNCwKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jIGIvdG9v bHMvaW50ZWxfcGFuZWxfZml0dGVyLmMKaW5kZXggMTM3ZWY2MWEuLjI2ODQzZDdjIDEwMDY0NAot LS0gYS90b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYworKysgYi90b29scy9pbnRlbF9wYW5lbF9m aXR0ZXIuYwpAQCAtODQsMTIgKzg0LDEyIEBAIHN0YXRpYyB2b2lkIHJlYWRfcGlwZV9pbmZvKGlu dCBpbnRlbF9waXBlLCBzdHJ1Y3QgcGlwZV9pbmZvICppbmZvKQogewogCXVpbnQzMl90IGNvbmYs IHZ0b3RhbCwgaHRvdGFsLCBzcmMsIGN0cmwxLCB3aW5fc3o7CiAKLQljb25mICAgPSBJTlJFRyhQ SVBFQ09ORltpbnRlbF9waXBlXSk7Ci0JaHRvdGFsID0gSU5SRUcoSFRPVEFMW2ludGVsX3BpcGVd KTsKLQl2dG90YWwgPSBJTlJFRyhWVE9UQUxbaW50ZWxfcGlwZV0pOwotCXNyYyAgICA9IElOUkVH KFBJUEVTUkNbaW50ZWxfcGlwZV0pOwotCWN0cmwxICA9IElOUkVHKFBGX0NUUkwxW2ludGVsX3Bp cGVdKTsKLQl3aW5fc3ogPSBJTlJFRyhQRl9XSU5fU1pbaW50ZWxfcGlwZV0pOworCWNvbmYgICA9 IElOUkVHKGlndF9nbG9iYWxfbW1pbywgUElQRUNPTkZbaW50ZWxfcGlwZV0pOworCWh0b3RhbCA9 IElOUkVHKGlndF9nbG9iYWxfbW1pbywgSFRPVEFMW2ludGVsX3BpcGVdKTsKKwl2dG90YWwgPSBJ TlJFRyhpZ3RfZ2xvYmFsX21taW8sIFZUT1RBTFtpbnRlbF9waXBlXSk7CisJc3JjICAgID0gSU5S RUcoaWd0X2dsb2JhbF9tbWlvLCBQSVBFU1JDW2ludGVsX3BpcGVdKTsKKwljdHJsMSAgPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sIFBGX0NUUkwxW2ludGVsX3BpcGVdKTsKKwl3aW5fc3ogPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sIFBGX1dJTl9TWltpbnRlbF9waXBlXSk7CiAKIAlpbmZvLT5lbmFi bGVkID0gKGNvbmYgJiBQSVBFQ09ORl9FTkFCTEUpID8gdHJ1ZSA6IGZhbHNlOwogCWluZm8tPnRv dF93aWR0aCA9IChodG90YWwgJiBIVE9UQUxfQUNUSVZFX01BU0spICsgMTsKQEAgLTIzMiwyNCAr MjMyLDI0IEBAIHN0YXRpYyBpbnQgY2hhbmdlX3NjcmVlbl9zaXplKGludCBpbnRlbF9waXBlLCBp bnQgeCwgaW50IHkpCiAJCQlhc3NlcnQoMCk7CiAJCX0KIAl9Ci0JT1VUUkVHKFBGX0NUUkwxW2lu dGVsX3BpcGVdLCBjdHJsMV92YWwpOworCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIFBGX0NUUkwx W2ludGVsX3BpcGVdLCBjdHJsMV92YWwpOwogCiAJd2luX3Bvc192YWwgPSBwb3NfeCA8PCAxNjsK IAl3aW5fcG9zX3ZhbCB8PSBwb3NfeTsKLQlPVVRSRUcoUEZfV0lOX1BPU1tpbnRlbF9waXBlXSwg d2luX3Bvc192YWwpOworCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIFBGX1dJTl9QT1NbaW50ZWxf cGlwZV0sIHdpbl9wb3NfdmFsKTsKIAogCXdpbl9zel92YWwgPSBkc3Rfd2lkdGggPDwgMTY7CiAJ d2luX3N6X3ZhbCB8PSBkc3RfaGVpZ2h0OwotCU9VVFJFRyhQRl9XSU5fU1pbaW50ZWxfcGlwZV0s IHdpbl9zel92YWwpOworCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIFBGX1dJTl9TWltpbnRlbF9w aXBlXSwgd2luX3N6X3ZhbCk7CiAKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBkaXNhYmxl X3BhbmVsX2ZpdHRlcihpbnQgaW50ZWxfcGlwZSkKIHsKLQlPVVRSRUcoUEZfQ1RSTDFbaW50ZWxf cGlwZV0sIDApOwotCU9VVFJFRyhQRl9XSU5fUE9TW2ludGVsX3BpcGVdLCAwKTsKLQlPVVRSRUco UEZfV0lOX1NaW2ludGVsX3BpcGVdLCAwKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBQRl9D VFJMMVtpbnRlbF9waXBlXSwgMCk7CisJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgUEZfV0lOX1BP U1tpbnRlbF9waXBlXSwgMCk7CisJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgUEZfV0lOX1NaW2lu dGVsX3BpcGVdLCAwKTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxf cmVnLmMgYi90b29scy9pbnRlbF9yZWcuYwppbmRleCAxMjQ3YjcwYi4uMmU3NGI2MDEgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL2ludGVsX3JlZy5jCisrKyBiL3Rvb2xzL2ludGVsX3JlZy5jCkBAIC0zNjQs NyArMzY0LDggQEAgc3RhdGljIGludCByZWFkX3JlZ2lzdGVyKHN0cnVjdCBjb25maWcgKmNvbmZp Zywgc3RydWN0IHJlZyAqcmVnLCB1aW50MzJfdCAqdmFscCkKIAkJaWYgKHJlZy0+ZW5naW5lKQog CQkJdmFsID0gcmVnaXN0ZXJfc3JtKGNvbmZpZywgcmVnLCBOVUxMKTsKIAkJZWxzZQotCQkJdmFs ID0gSU5SRUcocmVnLT5tbWlvX29mZnNldCArIHJlZy0+YWRkcik7CisJCQl2YWwgPSBJTlJFRyhp Z3RfZ2xvYmFsX21taW8sCisJCQkJICAgIHJlZy0+bW1pb19vZmZzZXQgKyByZWctPmFkZHIpOwog CQlicmVhazsKIAljYXNlIFBPUlRfUE9SVElPX1ZHQToKIAkJaW9wbCgzKTsKQEAgLTM3Miw3ICsz NzMsNyBAQCBzdGF0aWMgaW50IHJlYWRfcmVnaXN0ZXIoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBz dHJ1Y3QgcmVnICpyZWcsIHVpbnQzMl90ICp2YWxwKQogCQlpb3BsKDApOwogCQlicmVhazsKIAlj YXNlIFBPUlRfTU1JT19WR0E6Ci0JCXZhbCA9IElOUkVHOChyZWctPmFkZHIpOworCQl2YWwgPSBJ TlJFRzgoaWd0X2dsb2JhbF9tbWlvLCByZWctPmFkZHIpOwogCQlicmVhazsKIAljYXNlIFBPUlRf QlVOSVQ6CiAJY2FzZSBQT1JUX1BVTklUOgpAQCAtNDI0LDcgKzQyNSw4IEBAIHN0YXRpYyBpbnQg d3JpdGVfcmVnaXN0ZXIoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcmVnICpyZWcsIHVp bnQzMl90IHZhbCkKIAkJaWYgKHJlZy0+ZW5naW5lKSB7CiAJCQlyZWdpc3Rlcl9zcm0oY29uZmln LCByZWcsICZ2YWwpOwogCQl9IGVsc2UgewotCQkJT1VUUkVHKHJlZy0+bW1pb19vZmZzZXQgKyBy ZWctPmFkZHIsIHZhbCk7CisJCQlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLAorCQkJICAgICAgIHJl Zy0+bW1pb19vZmZzZXQgKyByZWctPmFkZHIsIHZhbCk7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBQ T1JUX1BPUlRJT19WR0E6CkBAIC00NDMsNyArNDQ1LDcgQEAgc3RhdGljIGludCB3cml0ZV9yZWdp c3RlcihzdHJ1Y3QgY29uZmlnICpjb25maWcsIHN0cnVjdCByZWcgKnJlZywgdWludDMyX3QgdmFs KQogCQkJCXZhbCwgcmVnLT5wb3J0X2Rlc2MubmFtZSk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KLQkJ T1VUUkVHOChyZWctPmFkZHIsIHZhbCk7CisJCU9VVFJFRzgoaWd0X2dsb2JhbF9tbWlvLCByZWct PmFkZHIsIHZhbCk7CiAJCWJyZWFrOwogCWNhc2UgUE9SVF9CVU5JVDoKIAljYXNlIFBPUlRfUFVO SVQ6CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9yZWdfY2hlY2tlci5jIGIvdG9vbHMvaW50ZWxf cmVnX2NoZWNrZXIuYwppbmRleCA2YmRlNjNlYy4uYjE0YTA2ZWEgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2ludGVsX3JlZ19jaGVja2VyLmMKKysrIGIvdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYwpAQCAt MzUsNyArMzUsNyBAQCBzdGF0aWMgaW50IGdlbjsKIHN0YXRpYyB1aW50MzJfdAogcmVhZF9hbmRf cHJpbnRfcmVnKGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQzMl90IHJlZykKIHsKLQl1aW50MzJfdCB2 YWwgPSBJTlJFRyhyZWcpOworCXVpbnQzMl90IHZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywg cmVnKTsKIAogCXByaW50ZigiJXMgKDB4JXgpOiAweCUwOHhcbiIsIG5hbWUsIHJlZywgdmFsKTsK IApkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMgYi90b29scy9pbnRlbF93YXRl cm1hcmsuYwppbmRleCBlNzFjM2Q5Yy4uMDBiZGQxMjAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVs X3dhdGVybWFyay5jCisrKyBiL3Rvb2xzL2ludGVsX3dhdGVybWFyay5jCkBAIC0zOCw3ICszOCw3 IEBAIHN0YXRpYyB1aW50MzJfdCBkZXZpZDsKIAogc3RhdGljIHVpbnQzMl90IHJlYWRfcmVnKHVp bnQzMl90IGFkZHIpCiB7Ci0JcmV0dXJuIElOUkVHKGRpc3BsYXlfYmFzZSArIGFkZHIpOworCXJl dHVybiBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGRpc3BsYXlfYmFzZSArIGFkZHIpOwogfQogCiBz dHJ1Y3QgZ21jaF93bSB7Ci0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaWd0LWRldg==