ZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9LY29uZmlnIGIvZHJpdmVycy9zY3NpL0tjb25maWcKaW5kZXggNjBmNTgyNy4uMDEzM2YzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL0tjb25maWcKKysrIGIvZHJpdmVycy9zY3NpL0tjb25maWcKQEAgLTk3Myw2ICs5NzMsMTUgQEAKIAkgIG1hbnkgUEEtUklTQyB3b3Jrc3RhdGlvbnMgJiBzZXJ2ZXJzLiAgSWYgeW91IGRvIG5vdCBrbm93IHdoZXRoZXIgeW91CiAJICBoYXZlIGEgTGFzaSBjaGlwLCBpdCBpcyBzYWZlIHRvIHNheSAiWSIgaGVyZS4KIAorY29uZmlnIFNDU0lfU05JXzUzQzcxMAorCXRyaXN0YXRlICJTTkkgUk0gU0NTSSBzdXBwb3J0IGZvciA1M2M3MTAiCisJZGVwZW5kcyBvbiBTTklfUk0gJiYgU0NTSQorCXNlbGVjdCBTQ1NJX1NQSV9BVFRSUworCXNlbGVjdCA1M0M3MDBfTEVfT05fQkUKKwloZWxwCisJICBUaGlzIGlzIGEgZHJpdmVyIGZvciB0aGUgb25ib2FyZCBTQ1NJIGNvbnRyb2xsZXIgZm91bmQgaW4gb2xkZXIKKwkgIFNOSSBSTSB3b3Jrc3RhdGlvbnMgJiBzZXJ2ZXJzLgorCiBjb25maWcgNTNDNzAwX0xFX09OX0JFCiAJYm9vbAogCWRlcGVuZHMgb24gU0NTSV9MQVNJNzAwCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvTWFrZWZpbGUgYi9kcml2ZXJzL3Njc2kvTWFrZWZpbGUKaW5kZXggYmQ3Yzk4OC4uNzllY2Y0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvc2NzaS9NYWtlZmlsZQpAQCAtMTI0LDYgKzEyNCw3IEBACiBvYmotJChDT05GSUdfU1VOM1hfRVNQKQkJKz0gTkNSNTNDOXgubwlzdW4zeF9lc3Aubwogb2JqLSQoQ09ORklHX1NDU0lfRkNBTCkJCSs9IGZjYWwubwogb2JqLSQoQ09ORklHX1NDU0lfTEFTSTcwMCkJKz0gNTNjNzAwLm8gbGFzaTcwMC5vCitvYmotJChDT05GSUdfU0NTSV9TTklfNTNDNzEwKQkrPSA1M2M3MDAubyBzbmlfNTNjNzEwLm8KIG9iai0kKENPTkZJR19TQ1NJX05TUDMyKQkrPSBuc3AzMi5vCiBvYmotJChDT05GSUdfU0NTSV9JUFIpCQkrPSBpcHIubwogb2JqLSQoQ09ORklHX1NDU0lfU1JQKQkJKz0gbGlic3JwLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zbmlfNTNjNzEwLmMgYi9kcml2ZXJzL3Njc2kvc25pXzUzYzcxMC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYzUwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3Njc2kvc25pXzUzYzcxMC5jCkBAIC0wLDAgKzEsMTU5IEBACisvKiAtKi0gbW9kZTogYzsgYy1iYXNpYy1vZmZzZXQ6IDggLSotICovCisKKy8qIFNOSSBSTSBkcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEgYnkgSmFtZXMuQm90dG9tbGV5QEhhbnNlblBhcnRuZXJzaGlwLmNvbQorKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKioKKyoqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKiogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisqKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyoqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKioKKyoqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyoqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKiogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyoqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKioKKyoqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKiogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisqKiAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisqKgorKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qCisgKiBCYXNlZCBvbiBsYXNpNzAwLmMKKyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvc3RhdC5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvYmxrZGV2Lmg+CisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorCisjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KKyNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgorI2luY2x1ZGUgPGFzbS9pcnEuaD4KKyNpbmNsdWRlIDxhc20vZGVsYXkuaD4KKworI2luY2x1ZGUgPHNjc2kvc2NzaV9ob3N0Lmg+CisjaW5jbHVkZSA8c2NzaS9zY3NpX2RldmljZS5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV90cmFuc3BvcnQuaD4KKyNpbmNsdWRlIDxzY3NpL3Njc2lfdHJhbnNwb3J0X3NwaS5oPgorCisjaW5jbHVkZSAiNTNjNzAwLmgiCisKK01PRFVMRV9BVVRIT1IoIlRob21hcyBCb2dlbmT2cmZlciIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJTTkkgUk0gNTNjNzEwIFNDU0kgRHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CisKKyNkZWZpbmUgU05JUk03MTBfQ0xPQ0sJMzIKKworc3RhdGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgc25pcm03MTBfdGVtcGxhdGUgPSB7CisJLm5hbWUJCT0gIlNOSSBSTSBTQ1NJIDUzYzcxMCIsCisJLnByb2NfbmFtZQk9ICJzbmlybV81M2M3MTAiLAorCS50aGlzX2lkCT0gNywKKwkubW9kdWxlCQk9IFRISVNfTU9EVUxFLAorfTsKKworc3RhdGljIGludCBfX2luaXQgc25pcm03MTBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQoreworCXVuc2lnbmVkIGxvbmcgYmFzZTsKKwlzdHJ1Y3QgTkNSXzcwMF9Ib3N0X1BhcmFtZXRlcnMgKmhvc3RkYXRhOworCXN0cnVjdCBTY3NpX0hvc3QgKmhvc3Q7CisJc3RydWN0ICByZXNvdXJjZSAqcmVzOworCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCWlmICghcmVzKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWJhc2UgPSByZXMtPnN0YXJ0OworCWhvc3RkYXRhID0ga3phbGxvYyhzaXplb2YoKmhvc3RkYXRhKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFob3N0ZGF0YSkgeworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgaG9zdCBkYXRhXG4iLAorCQkgICAgICAgZGV2LT5kZXYuYnVzX2lkKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJaG9zdGRhdGEtPmRldiA9ICZkZXYtPmRldjsKKwlkbWFfc2V0X21hc2soJmRldi0+ZGV2LCBETUFfMzJCSVRfTUFTSyk7CisJaG9zdGRhdGEtPmJhc2UgPSBpb3JlbWFwX25vY2FjaGUoQ1BIWVNBRERSKGJhc2UpLCAweDEwMCk7CisJaG9zdGRhdGEtPmRpZmZlcmVudGlhbCA9IDA7CisKKwlob3N0ZGF0YS0+Y2xvY2sgPSBTTklSTTcxMF9DTE9DSzsKKwlob3N0ZGF0YS0+Zm9yY2VfbGVfb25fYmUgPSAxOworCWhvc3RkYXRhLT5jaGlwNzEwID0gMTsKKwlob3N0ZGF0YS0+YnVyc3RfbGVuZ3RoID0gNDsKKworCWhvc3QgPSBOQ1JfNzAwX2RldGVjdCgmc25pcm03MTBfdGVtcGxhdGUsIGhvc3RkYXRhLCAmZGV2LT5kZXYpOworCWlmICghaG9zdCkKKwkJZ290byBvdXRfa2ZyZWU7CisJaG9zdC0+dGhpc19pZCA9IDc7CisJaG9zdC0+YmFzZSA9IGJhc2U7CisJaG9zdC0+aXJxID0gcGxhdGZvcm1fZ2V0X2lycShkZXYsIDApOworCWlmKHJlcXVlc3RfaXJxKGhvc3QtPmlycSwgTkNSXzcwMF9pbnRyLCBTQV9TSElSUSwgInNuaXJtNzEwIiwgaG9zdCkpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJzbmlybTcxMDogcmVxdWVzdF9pcnEgZmFpbGVkIVxuIik7CisJCWdvdG8gb3V0X3B1dF9ob3N0OworCX0KKworCWRldl9zZXRfZHJ2ZGF0YSgmZGV2LT5kZXYsIGhvc3QpOworCXNjc2lfc2Nhbl9ob3N0KGhvc3QpOworCisJcmV0dXJuIDA7CisKKyBvdXRfcHV0X2hvc3Q6CisJc2NzaV9ob3N0X3B1dChob3N0KTsKKyBvdXRfa2ZyZWU6CisJaW91bm1hcChob3N0ZGF0YS0+YmFzZSk7CisJa2ZyZWUoaG9zdGRhdGEpOworCXJldHVybiAtRU5PREVWOworfQorCitzdGF0aWMgaW50IF9fZXhpdCBzbmlybTcxMF9kcml2ZXJfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0ID0gZGV2X2dldF9kcnZkYXRhKCZkZXYtPmRldik7CisJc3RydWN0IE5DUl83MDBfSG9zdF9QYXJhbWV0ZXJzICpob3N0ZGF0YSA9CisJCShzdHJ1Y3QgTkNSXzcwMF9Ib3N0X1BhcmFtZXRlcnMgKilob3N0LT5ob3N0ZGF0YVswXTsKKworCXNjc2lfcmVtb3ZlX2hvc3QoaG9zdCk7CisJTkNSXzcwMF9yZWxlYXNlKGhvc3QpOworCWZyZWVfaXJxKGhvc3QtPmlycSwgaG9zdCk7CisJaW91bm1hcChob3N0ZGF0YS0+YmFzZSk7CisJa2ZyZWUoaG9zdGRhdGEpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHNuaXJtNzEwX2RyaXZlciA9IHsKKwkucHJvYmUJPSBzbmlybTcxMF9wcm9iZSwKKwkucmVtb3ZlCT0gX19kZXZleGl0X3Aoc25pcm03MTBfZHJpdmVyX3JlbW92ZSksCisJLmRyaXZlcgk9IHsKKwkJLm5hbWUJPSAic25pcm1fNTNjNzEwIiwKKwl9LAorfTsKKworc3RhdGljIGludCBfX2luaXQgc25pcm03MTBfaW5pdCh2b2lkKQoreworCWludCBlcnI7CisKKwlpZiAoKGVyciA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3Rlcigmc25pcm03MTBfZHJpdmVyKSkpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJEcml2ZXIgcmVnaXN0cmF0aW9uIGZhaWxlZFxuIik7CisJCXJldHVybiBlcnI7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgc25pcm03MTBfZXhpdCh2b2lkKQoreworCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZzbmlybTcxMF9kcml2ZXIpOworfQorCittb2R1bGVfaW5pdChzbmlybTcxMF9pbml0KTsKK21vZHVsZV9leGl0KHNuaXJtNzEwX2V4aXQpOwo=