ZGlmZiAtLWdpdCBhL2NwdS9pMzg2L01ha2VmaWxlIGIvY3B1L2kzODYvTWFrZWZpbGUKaW5kZXggZTk4YmQzZC4uYzY1OGM2ZSAxMDA2NDQKLS0tIGEvY3B1L2kzODYvTWFrZWZpbGUKKysrIGIvY3B1L2kzODYvTWFrZWZpbGUKQEAgLTI5LDcgKzI5LDcgQEAKIExJQgk9ICQob2JqKWxpYiQoQ1BVKS5hCiAKIFNUQVJUCT0gc3RhcnQubyBzdGFydDE2Lm8gcmVzZXR2ZWMubwotQ09CSlMJPSBzZXJpYWwubyBpbnRlcnJ1cHRzLm8gZXhjZXB0aW9ucy5vIGNwdS5vCitDT0JKUwk9IHNlcmlhbC5vIGludGVycnVwdHMubyBjcHUubwogCiBTUkNTCTo9ICQoU1RBUlQ6Lm89LlMpICQoU09CSlM6Lm89LlMpICQoQ09CSlM6Lm89LmMpCiBPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSAkKENPQkpTKSkKZGlmZiAtLWdpdCBhL2NwdS9pMzg2L2NwdS5jIGIvY3B1L2kzODYvY3B1LmMKaW5kZXggZDkxZTMzYi4uOGJhZjM3ZCAxMDA2NDQKLS0tIGEvY3B1L2kzODYvY3B1LmMKKysrIGIvY3B1L2kzODYvY3B1LmMKQEAgLTQ4LDcgKzQ4LDYgQEAKIAogCS8qIEluaXRpYWxpemUgY29yZSBpbnRlcnJ1cHQgYW5kIGV4Y2VwdGlvbiBmdW5jdGlvbmFsaXR5IG9mIENQVSAqLwogCWNwdV9pbml0X2ludGVycnVwdHMgKCk7Ci0JY3B1X2luaXRfZXhjZXB0aW9ucyAoKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvY3B1L2kzODYvZXhjZXB0aW9ucy5jIGIvY3B1L2kzODYvZXhjZXB0aW9ucy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzNkNDM0Li4wMDAwMDAwCi0tLSBhL2NwdS9pMzg2L2V4Y2VwdGlvbnMuYworKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0vKgotICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UuCi0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotI2luY2x1ZGUgPGNvbW1vbi5oPgotI2luY2x1ZGUgPGFzbS9pbnRlcnJ1cHQuaD4KLQotYXNtICgiLmdsb2JsIGV4cF9yZXR1cm5cbiIKLSAgICAgImV4cF9yZXR1cm46XG4iCi0gICAgICIgICAgIGFkZGwgICQxMiwgJWVzcFxuIgotICAgICAiICAgICBwb3AgICAlZXNwXG4iCi0gICAgICIgICAgIHBvcGFcbiIKLSAgICAgIiAgICAgaXJldFxuIik7Ci0KLWNoYXIgZXhjZXB0aW9uX3N0YWNrWzQwOTZdOwotCi0vKgotICogRm9yIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGVhY2ggZXhjZXB0aW9uLCByZWZlciB0bzoKLSAqIEludGVsriA2NCBhbmQgSUEtMzIgQXJjaGl0ZWN0dXJlcyBTb2Z0d2FyZSBEZXZlbG9wZXIncyBNYW51YWwKLSAqIFZvbHVtZSAxOiBCYXNpYyBBcmNoaXRlY3R1cmUKLSAqIE9yZGVyIE51bWJlcjogMjUzNjY1LTAyOVVTLCBOb3ZlbWJlciAyMDA4Ci0gKiBUYWJsZSA2LTEuIEV4Y2VwdGlvbnMgYW5kIEludGVycnVwdHMKLSAqLwotREVDTEFSRV9FWENFUFRJT04oMCwgZGl2aWRlX2Vycm9yX2VudHJ5KTsKLURFQ0xBUkVfRVhDRVBUSU9OKDEsIGRlYnVnX2VudHJ5KTsKLURFQ0xBUkVfRVhDRVBUSU9OKDIsIG5taV9pbnRlcnJ1cHRfZW50cnkpOwotREVDTEFSRV9FWENFUFRJT04oMywgYnJlYWtwb2ludF9lbnRyeSk7Ci1ERUNMQVJFX0VYQ0VQVElPTig0LCBvdmVyZmxvd19lbnRyeSk7Ci1ERUNMQVJFX0VYQ0VQVElPTig1LCBib3VuZF9yYW5nZV9leGNlZWRlZF9lbnRyeSk7Ci1ERUNMQVJFX0VYQ0VQVElPTig2LCBpbnZhbGlkX29wY29kZV9lbnRyeSk7Ci1ERUNMQVJFX0VYQ0VQVElPTig3LCBkZXZpY2Vfbm90X2F2YWlsYWJsZV9lbnRyeSk7Ci1ERUNMQVJFX0VYQ0VQVElPTig4LCBkb3VibGVfZmF1bHRfZW50cnkpOwotREVDTEFSRV9FWENFUFRJT04oOSwgY29wcm9jZXNzb3Jfc2VnbWVudF9vdmVycnVuX2VudHJ5KTsKLURFQ0xBUkVfRVhDRVBUSU9OKDEwLCBpbnZhbGlkX3Rzc19lbnRyeSk7Ci1ERUNMQVJFX0VYQ0VQVElPTigxMSwgc2VnbWVudF9ub3RfcHJlc2VudF9lbnRyeSk7Ci1ERUNMQVJFX0VYQ0VQVElPTigxMiwgc3RhY2tfc2VnbWVudF9mYXVsdF9lbnRyeSk7Ci1ERUNMQVJFX0VYQ0VQVElPTigxMywgZ2VuZXJhbF9wcm90ZWN0aW9uX2VudHJ5KTsKLURFQ0xBUkVfRVhDRVBUSU9OKDE0LCBwYWdlX2ZhdWx0X2VudHJ5KTsKLURFQ0xBUkVfRVhDRVBUSU9OKDE1LCByZXNlcnZlZF9leGNlcHRpb25fZW50cnkpOwotREVDTEFSRV9FWENFUFRJT04oMTYsIGZsb2F0aW5nX3BvaW50X2Vycm9yX2VudHJ5KTsKLURFQ0xBUkVfRVhDRVBUSU9OKDE3LCBhbGlnbm1lbnRfY2hlY2tfZW50cnkpOwotREVDTEFSRV9FWENFUFRJT04oMTgsIG1hY2hpbmVfY2hlY2tfZW50cnkpOwotREVDTEFSRV9FWENFUFRJT04oMTksIHNpbWRfZmxvYXRpbmdfcG9pbnRfZXhjZXB0aW9uX2VudHJ5KTsKLURFQ0xBUkVfRVhDRVBUSU9OKDIwLCByZXNlcnZlZF9leGNlcHRpb25fZW50cnkpOwotREVDTEFSRV9FWENFUFRJT04oMjEsIHJlc2VydmVkX2V4Y2VwdGlvbl9lbnRyeSk7Ci1ERUNMQVJFX0VYQ0VQVElPTigyMiwgcmVzZXJ2ZWRfZXhjZXB0aW9uX2VudHJ5KTsKLURFQ0xBUkVfRVhDRVBUSU9OKDIzLCByZXNlcnZlZF9leGNlcHRpb25fZW50cnkpOwotREVDTEFSRV9FWENFUFRJT04oMjQsIHJlc2VydmVkX2V4Y2VwdGlvbl9lbnRyeSk7Ci1ERUNMQVJFX0VYQ0VQVElPTigyNSwgcmVzZXJ2ZWRfZXhjZXB0aW9uX2VudHJ5KTsKLURFQ0xBUkVfRVhDRVBUSU9OKDI2LCByZXNlcnZlZF9leGNlcHRpb25fZW50cnkpOwotREVDTEFSRV9FWENFUFRJT04oMjcsIHJlc2VydmVkX2V4Y2VwdGlvbl9lbnRyeSk7Ci1ERUNMQVJFX0VYQ0VQVElPTigyOCwgcmVzZXJ2ZWRfZXhjZXB0aW9uX2VudHJ5KTsKLURFQ0xBUkVfRVhDRVBUSU9OKDI5LCByZXNlcnZlZF9leGNlcHRpb25fZW50cnkpOwotREVDTEFSRV9FWENFUFRJT04oMzAsIHJlc2VydmVkX2V4Y2VwdGlvbl9lbnRyeSk7Ci1ERUNMQVJFX0VYQ0VQVElPTigzMSwgcmVzZXJ2ZWRfZXhjZXB0aW9uX2VudHJ5KTsKLQotX19pc3JfXyByZXNlcnZlZF9leGNlcHRpb25fZW50cnkoaW50IGNhdXNlLCBpbnQgaXAsIGludCBzZWcpCi17Ci0JcHJpbnRmKCJSZXNlcnZlZCBFeGNlcHRpb24gJWQgYXQgJTA0eDolMDh4XG4iLCBjYXVzZSwgc2VnLCBpcCk7Ci19Ci0KLV9faXNyX18gZGl2aWRlX2Vycm9yX2VudHJ5KGludCBjYXVzZSwgaW50IGlwLCBpbnQgc2VnKQotewotCXByaW50ZigiRGl2aWRlIEVycm9yIChEaXZpc2lvbiBieSB6ZXJvKSBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOwotCXdoaWxlKDEpOwotfQotCi1fX2lzcl9fIGRlYnVnX2VudHJ5KGludCBjYXVzZSwgaW50IGlwLCBpbnQgc2VnKQotewotCXByaW50ZigiRGVidWcgSW50ZXJydXB0IChTaW5nbGUgc3RlcCkgYXQgJTA0eDolMDh4XG4iLCBzZWcsIGlwKTsKLX0KLQotX19pc3JfXyBubWlfaW50ZXJydXB0X2VudHJ5KGludCBjYXVzZSwgaW50IGlwLCBpbnQgc2VnKQotewotCXByaW50ZigiTk1JIEludGVycnVwdCBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOwotfQotCi1fX2lzcl9fIGJyZWFrcG9pbnRfZW50cnkoaW50IGNhdXNlLCBpbnQgaXAsIGludCBzZWcpCi17Ci0JcHJpbnRmKCJCcmVha3BvaW50IGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7Ci19Ci0KLV9faXNyX18gb3ZlcmZsb3dfZW50cnkoaW50IGNhdXNlLCBpbnQgaXAsIGludCBzZWcpCi17Ci0JcHJpbnRmKCJPdmVyZmxvdyBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOwotCXdoaWxlKDEpOwotfQotCi1fX2lzcl9fIGJvdW5kX3JhbmdlX2V4Y2VlZGVkX2VudHJ5KGludCBjYXVzZSwgaW50IGlwLCBpbnQgc2VnKQotewotCXByaW50ZigiQk9VTkQgUmFuZ2UgRXhjZWVkZWQgYXQgJTA0eDolMDh4XG4iLCBzZWcsIGlwKTsKLQl3aGlsZSgxKTsKLX0KLQotX19pc3JfXyBpbnZhbGlkX29wY29kZV9lbnRyeShpbnQgY2F1c2UsIGludCBpcCwgaW50IHNlZykKLXsKLQlwcmludGYoIkludmFsaWQgT3Bjb2RlIChVbkRlZmluZWQgT3Bjb2RlKSBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOwotCXdoaWxlKDEpOwotfQotCi1fX2lzcl9fIGRldmljZV9ub3RfYXZhaWxhYmxlX2VudHJ5KGludCBjYXVzZSwgaW50IGlwLCBpbnQgc2VnKQotewotCXByaW50ZigiRGV2aWNlIE5vdCBBdmFpbGFibGUgKE5vIE1hdGggQ29wcm9jZXNzb3IpIGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7Ci0Jd2hpbGUoMSk7Ci19Ci0KLV9faXNyX18gZG91YmxlX2ZhdWx0X2VudHJ5KGludCBjYXVzZSwgaW50IGlwLCBpbnQgc2VnKQotewotCXByaW50ZigiRG91YmxlIGZhdWx0IGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7Ci0Jd2hpbGUoMSk7Ci19Ci0KLV9faXNyX18gY29wcm9jZXNzb3Jfc2VnbWVudF9vdmVycnVuX2VudHJ5KGludCBjYXVzZSwgaW50IGlwLCBpbnQgc2VnKQotewotCXByaW50ZigiQ28tcHJvY2Vzc29yIHNlZ21lbnQgb3ZlcnJ1biBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOwotCXdoaWxlKDEpOwotfQotCi1fX2lzcl9fIGludmFsaWRfdHNzX2VudHJ5KGludCBjYXVzZSwgaW50IGlwLCBpbnQgc2VnKQotewotCXByaW50ZigiSW52YWxpZCBUU1MgYXQgJTA0eDolMDh4XG4iLCBzZWcsIGlwKTsKLX0KLQotX19pc3JfXyBzZWdtZW50X25vdF9wcmVzZW50X2VudHJ5KGludCBjYXVzZSwgaW50IGlwLCBpbnQgc2VnKQotewotCXByaW50ZigiU2VnbWVudCBOb3QgUHJlc2VudCBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOwotCXdoaWxlKDEpOwotfQotCi1fX2lzcl9fIHN0YWNrX3NlZ21lbnRfZmF1bHRfZW50cnkoaW50IGNhdXNlLCBpbnQgaXAsIGludCBzZWcpCi17Ci0JcHJpbnRmKCJTdGFjayBTZWdtZW50IEZhdWx0IGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7Ci0Jd2hpbGUoMSk7Ci19Ci0KLV9faXNyX18gZ2VuZXJhbF9wcm90ZWN0aW9uX2VudHJ5KGludCBjYXVzZSwgaW50IGlwLCBpbnQgc2VnKQotewotCXByaW50ZigiR2VuZXJhbCBQcm90ZWN0aW9uIGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7Ci19Ci0KLV9faXNyX18gcGFnZV9mYXVsdF9lbnRyeShpbnQgY2F1c2UsIGludCBpcCwgaW50IHNlZykKLXsKLQlwcmludGYoIlBhZ2UgZmF1bHQgYXQgJTA0eDolMDh4XG4iLCBzZWcsIGlwKTsKLQl3aGlsZSgxKTsKLX0KLQotX19pc3JfXyBmbG9hdGluZ19wb2ludF9lcnJvcl9lbnRyeShpbnQgY2F1c2UsIGludCBpcCwgaW50IHNlZykKLXsKLQlwcmludGYoIkZsb2F0aW5nLVBvaW50IEVycm9yIChNYXRoIEZhdWx0KSBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOwotfQotCi1fX2lzcl9fIGFsaWdubWVudF9jaGVja19lbnRyeShpbnQgY2F1c2UsIGludCBpcCwgaW50IHNlZykKLXsKLQlwcmludGYoIkFsaWdubWVudCBjaGVjayBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOwotfQotCi1fX2lzcl9fIG1hY2hpbmVfY2hlY2tfZW50cnkoaW50IGNhdXNlLCBpbnQgaXAsIGludCBzZWcpCi17Ci0JcHJpbnRmKCJNYWNoaW5lIENoZWNrIGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7Ci19Ci0KLV9faXNyX18gc2ltZF9mbG9hdGluZ19wb2ludF9leGNlcHRpb25fZW50cnkoaW50IGNhdXNlLCBpbnQgaXAsIGludCBzZWcpCi17Ci0JcHJpbnRmKCJTSU1EIEZsb2F0aW5nLVBvaW50IEV4Y2VwdGlvbiBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOwotfQotCi1pbnQgY3B1X2luaXRfZXhjZXB0aW9ucyh2b2lkKQotewotCS8qIEp1c3QgaW4gY2FzZS4uLiAqLwotCWRpc2FibGVfaW50ZXJydXB0cygpOwotCi0JLyogU2V0dXAgZXhjZXB0aW9ucyAqLwotCXNldF92ZWN0b3IoMHgwMCwgZXhwXzApOwotCXNldF92ZWN0b3IoMHgwMSwgZXhwXzEpOwotCXNldF92ZWN0b3IoMHgwMiwgZXhwXzIpOwotCXNldF92ZWN0b3IoMHgwMywgZXhwXzMpOwotCXNldF92ZWN0b3IoMHgwNCwgZXhwXzQpOwotCXNldF92ZWN0b3IoMHgwNSwgZXhwXzUpOwotCXNldF92ZWN0b3IoMHgwNiwgZXhwXzYpOwotCXNldF92ZWN0b3IoMHgwNywgZXhwXzcpOwotCXNldF92ZWN0b3IoMHgwOCwgZXhwXzgpOwotCXNldF92ZWN0b3IoMHgwOSwgZXhwXzkpOwotCXNldF92ZWN0b3IoMHgwYSwgZXhwXzEwKTsKLQlzZXRfdmVjdG9yKDB4MGIsIGV4cF8xMSk7Ci0Jc2V0X3ZlY3RvcigweDBjLCBleHBfMTIpOwotCXNldF92ZWN0b3IoMHgwZCwgZXhwXzEzKTsKLQlzZXRfdmVjdG9yKDB4MGUsIGV4cF8xNCk7Ci0Jc2V0X3ZlY3RvcigweDBmLCBleHBfMTUpOwotCXNldF92ZWN0b3IoMHgxMCwgZXhwXzE2KTsKLQlzZXRfdmVjdG9yKDB4MTEsIGV4cF8xNyk7Ci0Jc2V0X3ZlY3RvcigweDEyLCBleHBfMTgpOwotCXNldF92ZWN0b3IoMHgxMywgZXhwXzE5KTsKLQlzZXRfdmVjdG9yKDB4MTQsIGV4cF8yMCk7Ci0Jc2V0X3ZlY3RvcigweDE1LCBleHBfMjEpOwotCXNldF92ZWN0b3IoMHgxNiwgZXhwXzIyKTsKLQlzZXRfdmVjdG9yKDB4MTcsIGV4cF8yMyk7Ci0Jc2V0X3ZlY3RvcigweDE4LCBleHBfMjQpOwotCXNldF92ZWN0b3IoMHgxOSwgZXhwXzI1KTsKLQlzZXRfdmVjdG9yKDB4MWEsIGV4cF8yNik7Ci0Jc2V0X3ZlY3RvcigweDFiLCBleHBfMjcpOwotCXNldF92ZWN0b3IoMHgxYywgZXhwXzI4KTsKLQlzZXRfdmVjdG9yKDB4MWQsIGV4cF8yOSk7Ci0Jc2V0X3ZlY3RvcigweDFlLCBleHBfMzApOwotCXNldF92ZWN0b3IoMHgxZiwgZXhwXzMxKTsKLQotCS8qIEl0IGlzIG5vdyBzYWZlIHRvIGVuYWJsZSBpbnRlcnJ1cHRzICovCi0JZW5hYmxlX2ludGVycnVwdHMoKTsKLQotCXJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvY3B1L2kzODYvaW50ZXJydXB0cy5jIGIvY3B1L2kzODYvaW50ZXJydXB0cy5jCmluZGV4IDA2M2VhNDIuLmQ4MGNmYjEgMTAwNjQ0Ci0tLSBhL2NwdS9pMzg2L2ludGVycnVwdHMuYworKysgYi9jcHUvaTM4Ni9pbnRlcnJ1cHRzLmMKQEAgLTEsNCArMSw3IEBACiAvKgorICogKEMpIENvcHlyaWdodCAyMDA4CisgKiBHcmFlbWUgUnVzcywgZ3JhZW1lLnJ1c3NAZ21haWwuY29tLgorICoKICAqIChDKSBDb3B5cmlnaHQgMjAwMgogICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIGRhbmllbEBvbWljcm9uLnNlLgogICoKQEAgLTI0LDYgKzI3LDE0IEBACiAjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8YXNtL2ludGVycnVwdC5oPgogCisjZGVmaW5lIERFQ0xBUkVfSU5URVJSVVBUKHgpIFwKKwkiLmdsb2JsIGlycV8iI3giXG4iIFwKKwkiaXJxXyIjeCI6XG4iIFwKKwkicHVzaGwgJWVicFxuIiBcCisJIm1vdmwgJWVzcCwlZWJwXG4iIFwKKwkicHVzaGFcbiIgXAorCSJwdXNobCAkIiN4IlxuIiBcCisJImptcCBpcnFfY29tbW9uX2VudHJ5XG4iCiAKIHN0cnVjdCBpZHRfZW50cnkgewogCXUxNgliYXNlX2xvdzsKQEAgLTMzLDIzICs0NCwyMCBAQAogCXUxNgliYXNlX2hpZ2g7CiB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIAorc3RydWN0IGRlc2NfcHRyIHsKKwl1bnNpZ25lZCBzaG9ydCBzaXplOworCXVuc2lnbmVkIGxvbmcgYWRkcmVzczsKKwl1bnNpZ25lZCBzaG9ydCBzZWdtZW50OworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKIAogc3RydWN0IGlkdF9lbnRyeSBpZHRbMjU2XTsKIAorc3RydWN0IGRlc2NfcHRyIGlkdF9wdHI7CiAKLWFzbSAoIi5nbG9ibCBpcnFfcmV0dXJuXG4iCi0gICAgICJpcnFfcmV0dXJuOlxuIgotICAgICAiICAgICBhZGRsICAkNCwgJWVzcFxuIgotICAgICAiICAgICBwb3BhXG4iCi0gICAgICIgICAgIGlyZXRcbiIpOwotCi12b2lkIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDApKSkgZGVmYXVsdF9pc3Iodm9pZCk7Ci1hc20gKCJkZWZhdWx0X2lzcjogaXJldFxuIik7Ci0KLWFzbSAoImlkdF9wdHI6XG4iCi0JIi53b3JkCTB4ODAwXG4iIC8qIHNpemUgb2YgdGhlIHRhYmxlIDgqMjU2IGJ5dGVzICovCi0JIi5sb25nCWlkdFxuIgkgLyogb2Zmc2V0ICovCi0JIi53b3JkCTB4MThcbiIpOy8qIGRhdGEgc2VnbWVudCAqLworc3RhdGljIGlubGluZSB2b2lkIGxvYWRfaWR0KGNvbnN0IHN0cnVjdCBkZXNjX3B0ciAqZHRyKQoreworCWFzbSB2b2xhdGlsZSgiY3MgbGlkdCAlMCI6OiJtIiAoKmR0cikpOworfQogCiB2b2lkIHNldF92ZWN0b3IodTggaW50bnVtLCB2b2lkICpyb3V0aW5lKQogewpAQCAtNTcsMTEgKzY1LDE2IEBACiAJaWR0W2ludG51bV0uYmFzZV9sb3cgPSAodTE2KSgodTMyKShyb3V0aW5lICsgZ2QtPnJlbG9jX29mZikgJiAweGZmZmYpOwogfQogCit2b2lkIGlycV8wKHZvaWQpOwordm9pZCBpcnFfMSh2b2lkKTsKIAogaW50IGNwdV9pbml0X2ludGVycnVwdHModm9pZCkKIHsKIAlpbnQgaTsKIAorCWludCBpcnFfZW50cnlfc2l6ZSA9IGlycV8xIC0gaXJxXzA7CisJdm9pZCAqaXJxX2VudHJ5ID0gKHZvaWQgKilpcnFfMDsKKwogCS8qIEp1c3QgaW4gY2FzZS4uLiAqLwogCWRpc2FibGVfaW50ZXJydXB0cygpOwogCkBAIC03MCwxMCArODMsMTUgQEAKIAkJaWR0W2ldLmFjY2VzcyA9IDB4OGU7CiAJCWlkdFtpXS5yZXMgPSAwOwogCQlpZHRbaV0uc2VsZWN0b3IgPSAweDEwOwotCQlzZXRfdmVjdG9yKGksIGRlZmF1bHRfaXNyKTsKKwkJc2V0X3ZlY3RvcihpLCBpcnFfZW50cnkpOworCQlpcnFfZW50cnkgKz0gaXJxX2VudHJ5X3NpemU7CiAJfQogCi0JYXNtICgiY3MgbGlkdCBpZHRfcHRyXG4iKTsKKwlpZHRfcHRyLnNpemUgPSAyNTYgKiA4OworCWlkdF9wdHIuYWRkcmVzcyA9ICh1bnNpZ25lZCBsb25nKSBpZHQ7CisJaWR0X3B0ci5zZWdtZW50ID0gMHgxODsKKworCWxvYWRfaWR0KCZpZHRfcHRyKTsKIAogCS8qIEl0IGlzIG5vdyBzYWZlIHRvIGVuYWJsZSBpbnRlcnJ1cHRzICovCiAJZW5hYmxlX2ludGVycnVwdHMoKTsKQEAgLTgxLDYgKzk5LDEyIEBACiAJcmV0dXJuIDA7CiB9CiAKK3ZvaWQgX19kb19pcnEoaW50IGlycSkKK3sKKwlwcmludGYoIlVuaGFuZGxlZCBJUlEgOiAlZFxuIiwgaXJxKTsKK30KK3ZvaWQgZG9faXJxKGludCBpcnEpIF9fYXR0cmlidXRlX18oKHdlYWssIGFsaWFzKCJfX2RvX2lycSIpKSk7CisKIHZvaWQgZW5hYmxlX2ludGVycnVwdHModm9pZCkKIHsKIAlhc20oInN0aVxuIik7CkBAIC05NCwzICsxMTgsMzgwIEBACiAKIAlyZXR1cm4gKGZsYWdzJjB4MjAwKTsgLyogSUUgZmxhZ3MgaXMgYml0IDkgKi8KIH0KKworLyogSVJRIExvdy1MZXZlbCBTZXJ2aWNlIFJvdXRpbmUgKi8KK19faXNyX18gaXJxX2xsc3IoaW50IGlwLCBpbnQgc2VnLCBpbnQgaXJxKQoreworCS8qCisJICogRm9yIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGVhY2ggZXhjZXB0aW9uLCByZWZlciB0bzoKKwkgKiBJbnRlbK4gNjQgYW5kIElBLTMyIEFyY2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVyJ3MgTWFudWFsCisJICogVm9sdW1lIDE6IEJhc2ljIEFyY2hpdGVjdHVyZQorCSAqIE9yZGVyIE51bWJlcjogMjUzNjY1LTAyOVVTLCBOb3ZlbWJlciAyMDA4CisJICogVGFibGUgNi0xLiBFeGNlcHRpb25zIGFuZCBJbnRlcnJ1cHRzCisJICovCisJc3dpdGNoIChpcnEpIHsKKwljYXNlIDB4MDA6CisJCXByaW50ZigiRGl2aWRlIEVycm9yIChEaXZpc2lvbiBieSB6ZXJvKSBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOworCQl3aGlsZSgxKTsKKwkJYnJlYWs7CisJY2FzZSAweDAxOgorCQlwcmludGYoIkRlYnVnIEludGVycnVwdCAoU2luZ2xlIHN0ZXApIGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7CisJCWJyZWFrOworCWNhc2UgMHgwMjoKKwkJcHJpbnRmKCJOTUkgSW50ZXJydXB0IGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7CisJCWJyZWFrOworCWNhc2UgMHgwMzoKKwkJcHJpbnRmKCJCcmVha3BvaW50IGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7CisJCWJyZWFrOworCWNhc2UgMHgwNDoKKwkJcHJpbnRmKCJPdmVyZmxvdyBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOworCQl3aGlsZSgxKTsKKwkJYnJlYWs7CisJY2FzZSAweDA1OgorCQlwcmludGYoIkJPVU5EIFJhbmdlIEV4Y2VlZGVkIGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7CisJCXdoaWxlKDEpOworCQlicmVhazsKKwljYXNlIDB4MDY6CisJCXByaW50ZigiSW52YWxpZCBPcGNvZGUgKFVuRGVmaW5lZCBPcGNvZGUpIGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7CisJCXdoaWxlKDEpOworCQlicmVhazsKKwljYXNlIDB4MDc6CisJCXByaW50ZigiRGV2aWNlIE5vdCBBdmFpbGFibGUgKE5vIE1hdGggQ29wcm9jZXNzb3IpIGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7CisJCXdoaWxlKDEpOworCQlicmVhazsKKwljYXNlIDB4MDg6CisJCXByaW50ZigiRG91YmxlIGZhdWx0IGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7CisJCXdoaWxlKDEpOworCQlicmVhazsKKwljYXNlIDB4MDk6CisJCXByaW50ZigiQ28tcHJvY2Vzc29yIHNlZ21lbnQgb3ZlcnJ1biBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOworCQl3aGlsZSgxKTsKKwkJYnJlYWs7CisJY2FzZSAweDBhOgorCQlwcmludGYoIkludmFsaWQgVFNTIGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7CisJCWJyZWFrOworCWNhc2UgMHgwYjoKKwkJcHJpbnRmKCJTZWdtZW50IE5vdCBQcmVzZW50IGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7CisJCXdoaWxlKDEpOworCQlicmVhazsKKwljYXNlIDB4MGM6CisJCXByaW50ZigiU3RhY2sgU2VnbWVudCBGYXVsdCBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOworCQl3aGlsZSgxKTsKKwkJYnJlYWs7CisJY2FzZSAweDBkOgorCQlwcmludGYoIkdlbmVyYWwgUHJvdGVjdGlvbiBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOworCQlicmVhazsKKwljYXNlIDB4MGU6CisJCXByaW50ZigiUGFnZSBmYXVsdCBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOworCQl3aGlsZSgxKTsKKwkJYnJlYWs7CisJY2FzZSAweDBmOgorCQlwcmludGYoIkZsb2F0aW5nLVBvaW50IEVycm9yIChNYXRoIEZhdWx0KSBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOworCQlicmVhazsKKwljYXNlIDB4MTA6CisJCXByaW50ZigiQWxpZ25tZW50IGNoZWNrIGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7CisJCWJyZWFrOworCWNhc2UgMHgxMToKKwkJcHJpbnRmKCJNYWNoaW5lIENoZWNrIGF0ICUwNHg6JTA4eFxuIiwgc2VnLCBpcCk7CisJCWJyZWFrOworCWNhc2UgMHgxMjoKKwkJcHJpbnRmKCJTSU1EIEZsb2F0aW5nLVBvaW50IEV4Y2VwdGlvbiBhdCAlMDR4OiUwOHhcbiIsIHNlZywgaXApOworCQlicmVhazsKKwljYXNlIDB4MTM6CisJY2FzZSAweDE0OgorCWNhc2UgMHgxNToKKwljYXNlIDB4MTY6CisJY2FzZSAweDE3OgorCWNhc2UgMHgxODoKKwljYXNlIDB4MTk6CisJY2FzZSAweDFhOgorCWNhc2UgMHgxYjoKKwljYXNlIDB4MWM6CisJY2FzZSAweDFkOgorCWNhc2UgMHgxZToKKwljYXNlIDB4MWY6CisJCXByaW50ZigiUmVzZXJ2ZWQgRXhjZXB0aW9uICVkIGF0ICUwNHg6JTA4eFxuIiwgaXJxLCBzZWcsIGlwKTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQkvKiBIYXJkd2FyZSBvciBVc2VyIElSUSAqLworCQlkb19pcnEoaXJxKTsKKwl9Cit9CisKKy8qCisgKiBPSyAtIFRoaXMgbG9va3MgcmVhbGx5IGhvcnJpYmxlLCBidXQgaXQgc2VydmVzIGEgcHVycG9zZSAtIEl0IGhlbHBzIGNyZWF0ZQorICogZnVsbHkgcmVsb2NhdGFibGUgY29kZS4KKyAqICAtIFRoZSBjYWxsIHRvIGlycV9sbHNyIHdpbGwgYmUgYSByZWxhdGl2ZSBqdW1wCisgKiAgLSBUaGUgSVJRIGVudHJpZXMgd2lsbCBiZSBndWFyYW50ZWVkIHRvIGJlIGluIG9yZGVyCisgKiBJdCdzIGEgYml0IGFubm95aW5nIHRoYXQgd2UgbmVlZCB0byB3YXN0ZSAzIGJ5dGVzIHBlciBpbnRlcnJ1cHQgZW50cnkKKyAqICh0b3RhbCBvZiA3NjggY29kZSBieXRlcyksIGJ1dCB3ZSBNVVNUIGNyZWF0ZSBhIFN0YWNrIEZyYW1lIGFuZCB0aGlzIGlzCisgKiB0aGUgZWFzaWVzdCB3YXkgSSBjb3VsZCBkbyBpdC4gTWF5YmUgaXQgY2FuIGJlIG1hZGUgYmV0dGVyIGxhdGVyLgorICovCithc20oIi5nbG9ibCBpcnFfY29tbW9uX2VudHJ5XG4iIFwKKwkiaXJxX2NvbW1vbl9lbnRyeTpcbiIgXAorCSJwdXNobCAkMFxuIiBcCisJInB1c2hsICQwXG4iIFwKKwkiY2FsbCBpcnFfbGxzclxuIiBcCisJInBvcGwgJWVheFxuIiBcCisJInBvcGwgJWVheFxuIiBcCisJInBvcGwgJWVheFxuIiBcCisJInBvcGFcbiIgXAorCSJsZWF2ZVxuIlwKKwkiaXJldFxuIiBcCisJREVDTEFSRV9JTlRFUlJVUFQoMCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCgyKSBcCisJREVDTEFSRV9JTlRFUlJVUFQoMykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDQpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg1KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoNikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDcpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg4KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoOSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEwKSBcCisJREVDTEFSRV9JTlRFUlJVUFQoMTEpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCgxMikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEzKSBcCisJREVDTEFSRV9JTlRFUlJVUFQoMTQpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCgxNSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE2KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoMTcpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCgxOCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE5KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoMjApIFwKKwlERUNMQVJFX0lOVEVSUlVQVCgyMSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIyKSBcCisJREVDTEFSRV9JTlRFUlJVUFQoMjMpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCgyNCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI1KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoMjYpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCgyNykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI4KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoMjkpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCgzMCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDMxKSBcCisJREVDTEFSRV9JTlRFUlJVUFQoMzIpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCgzMykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDM0KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoMzUpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCgzNikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDM3KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoMzgpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCgzOSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDQwKSBcCisJREVDTEFSRV9JTlRFUlJVUFQoNDEpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg0MikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDQzKSBcCisJREVDTEFSRV9JTlRFUlJVUFQoNDQpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg0NSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDQ2KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoNDcpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg0OCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDQ5KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoNTApIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg1MSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDUyKSBcCisJREVDTEFSRV9JTlRFUlJVUFQoNTMpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg1NCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDU1KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoNTYpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg1NykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDU4KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoNTkpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg2MCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDYxKSBcCisJREVDTEFSRV9JTlRFUlJVUFQoNjIpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg2MykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDY0KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoNjUpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg2NikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDY3KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoNjgpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg2OSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDcwKSBcCisJREVDTEFSRV9JTlRFUlJVUFQoNzEpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg3MikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDczKSBcCisJREVDTEFSRV9JTlRFUlJVUFQoNzQpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg3NSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDc2KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoNzcpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg3OCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDc5KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoODApIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg4MSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDgyKSBcCisJREVDTEFSRV9JTlRFUlJVUFQoODMpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg4NCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDg1KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoODYpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg4NykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDg4KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoODkpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg5MCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDkxKSBcCisJREVDTEFSRV9JTlRFUlJVUFQoOTIpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg5MykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDk0KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoOTUpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg5NykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDk2KSBcCisJREVDTEFSRV9JTlRFUlJVUFQoOTgpIFwKKwlERUNMQVJFX0lOVEVSUlVQVCg5OSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEwMCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEwMSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEwMikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEwMykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEwNCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEwNSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEwNikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEwNykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEwOCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEwOSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDExMCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDExMSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDExMikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDExMykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDExNCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDExNSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDExNikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDExNykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDExOCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDExOSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEyMCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEyMSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEyMikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEyMykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEyNCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEyNSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEyNikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEyNykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEyOCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEyOSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEzMCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEzMSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEzMikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEzMykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEzNCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEzNSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEzNikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEzNykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEzOCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDEzOSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE0MCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE0MSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE0MikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE0MykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE0NCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE0NSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE0NikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE0NykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE0OCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE0OSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE1MCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE1MSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE1MikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE1MykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE1NCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE1NSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE1NikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE1NykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE1OCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE1OSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE2MCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE2MSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE2MikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE2MykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE2NCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE2NSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE2NikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE2NykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE2OCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE2OSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE3MCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE3MSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE3MikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE3MykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE3NCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE3NSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE3NikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE3NykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE3OCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE3OSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE4MCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE4MSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE4MikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE4MykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE4NCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE4NSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE4NikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE4NykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE4OCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE4OSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE5MCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE5MSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE5MikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE5MykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE5NCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE5NSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE5NikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE5NykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE5OCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDE5OSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIwMCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIwMSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIwMikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIwMykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIwNCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIwNSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIwNikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIwNykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIwOCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIwOSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIxMCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIxMSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIxMikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIxMykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIxNCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIxNSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIxNikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIxNykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIxOCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIxOSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIyMCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIyMSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIyMikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIyMykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIyNCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIyNSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIyNikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIyNykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIyOCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIyOSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIzMCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIzMSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIzMikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIzMykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIzNCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIzNSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIzNikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIzNykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIzOCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDIzOSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI0MCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI0MSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI0MikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI0MykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI0NCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI0NSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI0NikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI0NykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI0OCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI0OSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI1MCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI1MSkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI1MikgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI1MykgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI1NCkgXAorCURFQ0xBUkVfSU5URVJSVVBUKDI1NSkpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20taTM4Ni9pbnRlcnJ1cHQuaCBiL2luY2x1ZGUvYXNtLWkzODYvaW50ZXJydXB0LmgKaW5kZXggN2Y0MDhjYi4uM2UyNjc0YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20taTM4Ni9pbnRlcnJ1cHQuaAorKysgYi9pbmNsdWRlL2FzbS1pMzg2L2ludGVycnVwdC5oCkBAIC00MywzMSArNDMsNCBAQAogCiAjZGVmaW5lIF9faXNyX18gdm9pZCBfX2F0dHJpYnV0ZV9fICgocmVncGFybSgwKSkpCiAKLSNkZWZpbmUgREVDTEFSRV9JTlRFUlJVUFQoeCkgXAotCWFzbSgiLmdsb2JsIGlycV8iI3giXG4iIFwKLQkJICAgICJpcnFfIiN4IjpcbiIgXAotCQkgICAgInB1c2hhIFxuIiBcCi0JCSAgICAicHVzaGwgJCIjeCJcbiIgXAotCQkgICAgInB1c2hsICRpcnFfcmV0dXJuXG4iIFwKLQkJICAgICJqbXAgICBkb19pcnFcbiIpOyBcCi0JX19pc3JfXyBpcnFfIyN4KHZvaWQpCi0KLSNkZWZpbmUgREVDTEFSRV9FWENFUFRJT04oeCwgZikgXAotCWFzbSgiLmdsb2JsIGV4cF8iI3giXG4iIFwKLQkJICAgICJleHBfIiN4IjpcbiIgXAotCQkgICAgInB1c2hhIFxuIiBcCi0JCSAgICAibW92bCAgICAgJWVzcCwgJWVieFxuIiBcCi0JCSAgICAibW92bCAgICAgJGV4Y2VwdGlvbl9zdGFjaywgJWVheFxuIiBcCi0JCSAgICAibW92bCAgICAgJWVheCwgJWVzcCBcbiIgXAotCQkgICAgInB1c2hsICAgICVlYnhcbiIgXAotCQkgICAgIm1vdmwgICAgIDMyKCVlc3ApLCAlZWJ4XG4iIFwKLQkJICAgICJ4b3JsICAgICAlZWR4LCAlZWR4XG4iIFwKLQkJICAgICJtb3Z3ICAgICAzNiglZXNwKSwgJWR4XG4iIFwKLQkJICAgICJwdXNobCAgICAlZWR4XG4iIFwKLQkJICAgICJwdXNobCAgICAlZWJ4XG4iIFwKLQkJICAgICJwdXNobCAgICAkIiN4IlxuIiBcCi0JCSAgICAicHVzaGwgICAgJGV4cF9yZXR1cm5cbiIgXAotCQkgICAgImptcCAgICAgICIjZiJcbiIpOyBcCi0JX19pc3JfXyBleHBfIyN4KHZvaWQpCi0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20taTM4Ni91LWJvb3QtaTM4Ni5oIGIvaW5jbHVkZS9hc20taTM4Ni91LWJvb3QtaTM4Ni5oCmluZGV4IDM5MjFlMDEuLmRmZWMzMDcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWkzODYvdS1ib290LWkzODYuaAorKysgYi9pbmNsdWRlL2FzbS1pMzg2L3UtYm9vdC1pMzg2LmgKQEAgLTU1LDkgKzU1LDYgQEAKIC8qIGNwdS8uLi4vaW50ZXJydXB0cy5jICovCiBpbnQgY3B1X2luaXRfaW50ZXJydXB0cyh2b2lkKTsKIAotLyogY3B1Ly4uLi9leGNlcHRpb25zLmMgKi8KLWludCBjcHVfaW5pdF9leGNlcHRpb25zKHZvaWQpOwotCiAvKiBib2FyZC8uLi4vLi4uICovCiBpbnQgYm9hcmRfaW5pdCh2b2lkKTsKIGludCBkcmFtX2luaXQodm9pZCk7CmRpZmYgLS1naXQgYS9saWJfaTM4Ni9pbnRlcnJ1cHRzLmMgYi9saWJfaTM4Ni9pbnRlcnJ1cHRzLmMKaW5kZXggM2YzNjEzYS4uZWZiYWQ3MiAxMDA2NDQKLS0tIGEvbGliX2kzODYvaW50ZXJydXB0cy5jCisrKyBiL2xpYl9pMzg2L2ludGVycnVwdHMuYwpAQCAtMTA5LDggKzEwOSwxMCBAQAogCXJldHVybjsKIH0KIAotX19pc3JfXyBkb19pcnEoaW50IGlycSkKK3ZvaWQgZG9faXJxKGludCBod19pcnEpCiB7CisJaW50IGlycSA9IGh3X2lycSAtIDB4MjA7CisKIAlpZiAoaXJxIDwgMCB8fCBpcnEgPj0gQ09ORklHX1NZU19OVU1fSVJRUykgewogCQlwcmludGYoImRvX2lycTogYmFkIGlycSBudW1iZXIgJWRcbiIsIGlycSk7CiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL2xpYl9pMzg2L3BjYXRfaW50ZXJydXB0cy5jIGIvbGliX2kzODYvcGNhdF9pbnRlcnJ1cHRzLmMKaW5kZXggZjAxMjk4ZS4uNjdlNmU5NyAxMDA2NDQKLS0tIGEvbGliX2kzODYvcGNhdF9pbnRlcnJ1cHRzLmMKKysrIGIvbGliX2kzODYvcGNhdF9pbnRlcnJ1cHRzLmMKQEAgLTQwLDQ1ICs0MCwxMiBAQAogI2Vycm9yICJDT05GSUdfU1lTX05VTV9JUlFTIG11c3QgZXF1YWwgMTYgaWYgQ09ORklHX1NZU19OVU1fSVJRUyBpcyBkZWZpbmVkIgogI2VuZGlmCiAKLURFQ0xBUkVfSU5URVJSVVBUKDApOwotREVDTEFSRV9JTlRFUlJVUFQoMSk7Ci1ERUNMQVJFX0lOVEVSUlVQVCgzKTsKLURFQ0xBUkVfSU5URVJSVVBUKDQpOwotREVDTEFSRV9JTlRFUlJVUFQoNSk7Ci1ERUNMQVJFX0lOVEVSUlVQVCg2KTsKLURFQ0xBUkVfSU5URVJSVVBUKDcpOwotREVDTEFSRV9JTlRFUlJVUFQoOCk7Ci1ERUNMQVJFX0lOVEVSUlVQVCg5KTsKLURFQ0xBUkVfSU5URVJSVVBUKDEwKTsKLURFQ0xBUkVfSU5URVJSVVBUKDExKTsKLURFQ0xBUkVfSU5URVJSVVBUKDEyKTsKLURFQ0xBUkVfSU5URVJSVVBUKDEzKTsKLURFQ0xBUkVfSU5URVJSVVBUKDE0KTsKLURFQ0xBUkVfSU5URVJSVVBUKDE1KTsKLQogaW50IGludGVycnVwdF9pbml0KHZvaWQpCiB7CiAJdTggaTsKIAogCWRpc2FibGVfaW50ZXJydXB0cygpOwogCi0JLyogU2V0dXAgaW50ZXJydXB0cyAqLwotCXNldF92ZWN0b3IoMHgyMCwgaXJxXzApOwotCXNldF92ZWN0b3IoMHgyMSwgaXJxXzEpOwotCXNldF92ZWN0b3IoMHgyMywgaXJxXzMpOwotCXNldF92ZWN0b3IoMHgyNCwgaXJxXzQpOwotCXNldF92ZWN0b3IoMHgyNSwgaXJxXzUpOwotCXNldF92ZWN0b3IoMHgyNiwgaXJxXzYpOwotCXNldF92ZWN0b3IoMHgyNywgaXJxXzcpOwotCXNldF92ZWN0b3IoMHgyOCwgaXJxXzgpOwotCXNldF92ZWN0b3IoMHgyOSwgaXJxXzkpOwotCXNldF92ZWN0b3IoMHgyYSwgaXJxXzEwKTsKLQlzZXRfdmVjdG9yKDB4MmIsIGlycV8xMSk7Ci0Jc2V0X3ZlY3RvcigweDJjLCBpcnFfMTIpOwotCXNldF92ZWN0b3IoMHgyZCwgaXJxXzEzKTsKLQlzZXRfdmVjdG9yKDB4MmUsIGlycV8xNCk7Ci0Jc2V0X3ZlY3RvcigweDJmLCBpcnFfMTUpOwotCiAJLyogTWFzayBhbGwgaW50ZXJydXB0cyAqLwogCW91dGIoMHhmZiwgTUFTVEVSX1BJQyArIElNUik7CiAJb3V0YigweGZmLCBTTEFWRV9QSUMgKyBJTVIpOwo=