ZGlmZiAtLWdpdCBhL2FwL2xpYi9saWJhdWRpb21peC9taXguYyBiL2FwL2xpYi9saWJhdWRpb21peC9taXguYwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mMGRlMGY5Ci0tLSAvZGV2L251bGwKKysrIGIvYXAvbGliL2xpYmF1ZGlvbWl4L21peC5jCkBAIC0wLDAgKzEsODYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoqILDmyKjL+dPQIChDKTIwMTUsINbQ0MvNqNG2ucm33dPQz965q8u+oaMNCisqKiANCisqKiDOxLz+w/uzxjogbWl4LmMNCisqKiDOxLz+serKtjogICAgIA0KKyoqIMTayN3VqtKqOiAgICANCisqKiDKudPDt723qDogICAgIA0KKyoqIA0KKyoqINDeuMTI1cbaICAgICAgICCw5rG+usUgICAgICDQ3rjEseq8xyAgICAgICAg0N64xMjLICAgICAgICAgINDeuMTE2sjdDQorKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisqKiAyMDE5LzA5LzI1ICAgICBWMS4wICAgICAgICBDcmVhdGUgICAgICAgICAgeHhxICAgICAgICC0tL2oDQorKiogDQorKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgPHN0ZGlvLmg+DQorI2luY2x1ZGUgPHVuaXN0ZC5oPg0KKyNpbmNsdWRlIDxzdHJpbmcuaD4NCisjaW5jbHVkZSA8c3RkbGliLmg+DQorIA0KKyNpbmNsdWRlIDxzdGRpbnQuaD4NCisjaW5jbHVkZSA8bGludXgvdm9sdGVfZHJ2Lmg+DQorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPg0KKyNpbmNsdWRlIDxmY250bC5oPg0KKw0KKyNkZWZpbmUgTUlYX0RFVl9JTlZBTElEX0lEICgtMSkNCisjZGVmaW5lIERSVl9TVUNDRVNTIDANCisjZGVmaW5lIERSVl9FUlJPUiAoLTEpDQorI2RlZmluZSBBVURJT19NSVhfREVWX05BTUUgIi9kZXYvYXVkaW9fbWl4X2RldmljZSINCisgDQoraW50IGF1ZGlvX21peF9kZXZmZCA9IE1JWF9ERVZfSU5WQUxJRF9JRDsNCisNCitpbnQgekRydkF1ZGlvTWl4X1dyaXRlKHVuc2lnbmVkIGNoYXIgKnBCdWYsIHVuc2lnbmVkIGludCB1aUxlbikgDQoreyANCisJaWYoYXVkaW9fbWl4X2RldmZkID09IE1JWF9ERVZfSU5WQUxJRF9JRCkNCisJew0KKyAgICAgICAgcHJpbnRmKCJ6dGUgYXVkaW8gL2Rldi9hdWRpb19taXhfZGV2aWNlIHpEcnZBdWRpb01peF9Xcml0ZU9uZUZyYW1lIGludmFsaWQgZGV2IVxuIik7DQorICAgICAgICByZXR1cm4gRFJWX0VSUk9SOw0KKwl9IA0KKyAgICANCisJaWYod3JpdGUoYXVkaW9fbWl4X2RldmZkLCBwQnVmLCB1aUxlbikgPD0gMCkNCisJew0KKyAgICAgICAgcHJpbnRmKCJ6dGUgYXVkaW8gL2Rldi9hdWRpb19taXhfZGV2aWNlIHpEcnZBdWRpb01peF9Xcml0ZU9uZUZyYW1lIHdyaXRlIGZhaWxlZCFcbiIpOw0KKwkJcmV0dXJuIERSVl9FUlJPUjsNCisJfSANCisNCisJcmV0dXJuIERSVl9TVUNDRVNTOw0KK30gIA0KKw0KK2ludCB6RHJ2QXVkaW9NaXhfT3BlbihUX1pEcnZBdWRpb01peF9DZmcgKmNmZ1BhcmFtKSANCit7DQorCWF1ZGlvX21peF9kZXZmZCA9IG9wZW4oQVVESU9fTUlYX0RFVl9OQU1FLCBPX1JEV1IpOw0KKyAgICBwcmludGYoIm9wZW4gZW5kISBhdWRpb19taXhfZGV2ZmQ9JWQsIGF1ZGlvVHlwZT0lZCwgc2FtcGxlX3JhdGU9JWRcbiIsIGF1ZGlvX21peF9kZXZmZCwgY2ZnUGFyYW0tPmF1ZGlvVHlwZSwgY2ZnUGFyYW0tPnNhbXBsZV9yYXRlKTsNCisJaWYoYXVkaW9fbWl4X2RldmZkIDwgMCkNCisJew0KKyAgICAgICAgcHJpbnRmKCJ6dGUgYXVkaW8gL2Rldi9hdWRpb19taXhfZGV2aWNlIHpEcnZBdWRpb01peF9PcGVuIGZhaWxlZCFcbiIpOw0KKwkJcmV0dXJuIERSVl9FUlJPUjsNCisJfSAgDQorICAgICANCisJaWYoaW9jdGwoYXVkaW9fbWl4X2RldmZkLCBBVURJT01JWF9JT0NUTF9TRVRfQ0ZHLCBjZmdQYXJhbSkgPCAwKQ0KKwl7IA0KKyAgICAgICAgcHJpbnRmKCJ6dGUgYXVkaW8gL2Rldi9hdWRpb19taXhfZGV2aWNlIHNldCBjZmcgZmFpbGVkIVxuIik7DQorCQlnb3RvIGVycjsNCisJfQ0KKyAgICANCisJcmV0dXJuIERSVl9TVUNDRVNTOw0KK2VycjogDQorCWNsb3NlKGF1ZGlvX21peF9kZXZmZCk7DQorCWF1ZGlvX21peF9kZXZmZCA9IE1JWF9ERVZfSU5WQUxJRF9JRDsNCisgICAgcHJpbnRmKCJ6dGUgYXVkaW8gL2Rldi9hdWRpb19taXhfZGV2aWNlIHpEcnZBdWRpb01peF9PcGVuIGZhaWxlZCFcbiIpOw0KKwlyZXR1cm4gRFJWX0VSUk9SOw0KKw0KK30NCisNCitpbnQgekRydkF1ZGlvTWl4X0Nsb3NlKHZvaWQpICAgDQorew0KKwlpZihhdWRpb19taXhfZGV2ZmQgPT0gTUlYX0RFVl9JTlZBTElEX0lEKQ0KKwl7DQorICAgICAgICBwcmludGYoInp0ZSBhdWRpbyAvZGV2L2F1ZGlvX21peF9kZXZpY2UgekRydkF1ZGlvTWl4X0Nsb3NlIGludmFsaWQgZGV2IVxuIik7DQorCQlyZXR1cm4gRFJWX0VSUk9SOw0KKwl9DQorCWNsb3NlKGF1ZGlvX21peF9kZXZmZCk7IA0KKwlhdWRpb19taXhfZGV2ZmQgPSBNSVhfREVWX0lOVkFMSURfSUQ7DQorICAgIA0KKwlyZXR1cm4gRFJWX1NVQ0NFU1M7DQorfQ0KKw0K