[patch 2/5] 2.4.20-pre5 i2c updates

Albert Cranford (ac9410@attbi.com)
Thu, 29 Aug 2002 01:36:02 -0400 (EDT)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--0-1417588945-1030599362=:16793
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello Marcelo,
Attached are i2c patches that bring the kernel to the latest released and tested
version. Updates include:
o Support for SMBus 2.0 PEC Packet Error Checking
o New algorithm-i2c-algo-8xxx for MPC8XXX
o New algorithm-i2c-algo-ibm_ocp for IBM PPC 405
o New adapter-i2c-adap-ibm_ocp for IBM PPC 405
o New adapter-i2c-frodo for SA 1110 board
o New adapter-i2c-pcf-epp for PCF8584
o New adapter-i2c-pport for parallel port
o New adapter-i2c-rpx for embeded MPC8XX
o Updated documentation
Thanks,
Albert

-- 
ac9410@attbi.com

-- 
ac9410@attbi.com

--0-1417588945-1030599362=:16793 Content-Type: TEXT/PLAIN; charset=X-UNKNOWN; name=47-i2c-2-patch Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.4.44.0208290136020.16793@home1> Content-Description: Content-Disposition: attachment; filename=47-i2c-2-patch

LS0tIGxpbnV4L2RyaXZlcnMvaTJjL2kyYy1jb3JlLmMub3JpZwkyMDAyLTA3 LTIzIDAxOjQzOjU4LjAwMDAwMDAwMCAtMDQwMA0KKysrIGxpbnV4L2RyaXZl cnMvaTJjL2kyYy1jb3JlLmMJMjAwMi0wOC0yNyAwMTo0NToyMi4wMDAwMDAw MDAgLTA0MDANCkBAIC0xOCw5ICsxOCwxMCBAQA0KIC8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0gKi8NCiANCiAvKiBXaXRoIHNvbWUgY2hhbmdl cyBmcm9tIEt59nN0aSBN5Gxra2kgPGttYWxra2lAY2MuaHV0LmZpPi4NCi0g ICBBbGwgU01CdXMtcmVsYXRlZCB0aGluZ3MgYXJlIHdyaXR0ZW4gYnkgRnJv ZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiAqLw0KKyAgIEFsbCBTTUJ1 cy1yZWxhdGVkIHRoaW5ncyBhcmUgd3JpdHRlbiBieSBGcm9kbyBMb29pamFh cmQgPGZyb2RvbEBkZHMubmw+DQorICAgU01CdXMgMi4wIHN1cHBvcnQgYnkg TWFyayBTdHVkZWJha2VyIDxtZHN4eXoxMjNAeWFob28uY29tPiAgICAgICAg ICAgICAgICAqLw0KIA0KLS8qICRJZDogaTJjLWNvcmUuYyx2IDEuNjQgMjAw MS8wOC8xMyAwMTozNTo1NiBtZHMgRXhwICQgKi8NCisvKiAkSWQ6IGkyYy1j b3JlLmMsdiAxLjgzIDIwMDIvMDcvMDggMDE6Mzc6MTUgbWRzIEV4cCAkICov DQogDQogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KICNpbmNsdWRlIDxs aW51eC9rZXJuZWwuaD4NCkBAIC0yOCw3ICsyOSw2IEBADQogI2luY2x1ZGUg PGxpbnV4L3NsYWIuaD4NCiAjaW5jbHVkZSA8bGludXgvcHJvY19mcy5oPg0K ICNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4NCi0NCiAjaW5jbHVkZSA8bGlu dXgvaTJjLmg+DQogDQogLyogLS0tLS0gY29tcGF0aWJpbGl0eSBzdHVmZiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSAqLw0KQEAgLTM2LDEwICszNiw2IEBADQogI2luY2x1ZGUgPGxpbnV4L3Zl cnNpb24uaD4NCiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPg0KIA0KLSNpZiBM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDMsMSkNCi0j ZGVmaW5lIGluaXRfTVVURVgocykgZG8geyAqKHMpID0gTVVURVg7IH0gd2hp bGUoMCkNCi0jZW5kaWYNCi0NCiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4N CiANCiAvKiAtLS0tLSBnbG9iYWwgZGVmaW5lcyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQpAQCAt ODQsMTAgKzgwLDYgQEANCiBzdGF0aWMgaW50IGkyY3Byb2NfaW5pdCh2b2lk KTsNCiBzdGF0aWMgaW50IGkyY3Byb2NfY2xlYW51cCh2b2lkKTsNCiANCi0j aWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVSU0lPTigyLDMs MjcpKQ0KLXN0YXRpYyB2b2lkIG1vbml0b3JfYnVzX2kyYyhzdHJ1Y3QgaW5v ZGUgKmlub2RlLCBpbnQgZmlsbCk7DQotI2VuZGlmIC8qIChMSU5VWF9WRVJT SU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiwxLDU4KSkgKi8NCi0NCiBz dGF0aWMgc3NpemVfdCBpMmNwcm9jX2J1c19yZWFkKHN0cnVjdCBmaWxlICog ZmlsZSwgY2hhciAqIGJ1ZixzaXplX3QgY291bnQsIA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbG9mZl90ICpwcG9zKTsNCiBzdGF0aWMg aW50IHJlYWRfYnVzX2kyYyhjaGFyICpidWYsIGNoYXIgKipzdGFydCwgb2Zm X3Qgb2Zmc2V0LCBpbnQgbGVuLA0KQEAgLTk5LDEyICs5MSw2IEBADQogCXJl YWQ6CQlpMmNwcm9jX2J1c19yZWFkLA0KIH07DQogDQotI2lmIChMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDMsNDgpKQ0KLXN0YXRp YyBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBpMmNwcm9jX2lub2RlX29wZXJh dGlvbnMgPSB7DQotCSZpMmNwcm9jX29wZXJhdGlvbnMNCi19Ow0KLSNlbmRp Zg0KLQ0KIHN0YXRpYyBpbnQgaTJjcHJvY19pbml0aWFsaXplZCA9IDA7DQog DQogI2Vsc2UgLyogdW5kZWYgQ09ORklHX1BST0NfRlMgKi8NCkBAIC0xNTgs MjIgKzE0NCwxNCBAQA0KIA0KIAkJcHJvY19lbnRyeSA9IGNyZWF0ZV9wcm9j X2VudHJ5KG5hbWUsMCxwcm9jX2J1cyk7DQogCQlpZiAoISBwcm9jX2VudHJ5 KSB7DQotCQkJcHJpbnRrKCJpMmMtY29yZS5vOiBDb3VsZCBub3QgY3JlYXRl IC9wcm9jL2J1cy8lc1xuIiwNCisJCQlwcmludGsoS0VSTl9FUlIgImkyYy1j b3JlLm86IENvdWxkIG5vdCBjcmVhdGUgL3Byb2MvYnVzLyVzXG4iLA0KIAkJ CSAgICAgICBuYW1lKTsNCiAJCQlyZXMgPSAtRU5PRU5UOw0KIAkJCWdvdG8g RVJST1IxOw0KIAkJfQ0KIA0KLSNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49 IEtFUk5FTF9WRVJTSU9OKDIsMyw0OCkpDQogCQlwcm9jX2VudHJ5LT5wcm9j X2ZvcHMgPSAmaTJjcHJvY19vcGVyYXRpb25zOw0KLSNlbHNlDQotCQlwcm9j X2VudHJ5LT5vcHMgPSAmaTJjcHJvY19pbm9kZV9vcGVyYXRpb25zOw0KLSNl bmRpZg0KLSNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJT SU9OKDIsMywyNykpDQogCQlwcm9jX2VudHJ5LT5vd25lciA9IFRISVNfTU9E VUxFOw0KLSNlbHNlDQotCQlwcm9jX2VudHJ5LT5maWxsX2lub2RlID0gJm1v bml0b3JfYnVzX2kyYzsNCi0jZW5kaWYgLyogKExJTlVYX1ZFUlNJT05fQ09E RSA+PSBLRVJORUxfVkVSU0lPTigyLDEsNTgpKSAqLw0KIAkJYWRhcC0+aW5v ZGUgPSBwcm9jX2VudHJ5LT5sb3dfaW5vOw0KIAl9DQogDQpAQCAtMTg4LDcg KzE2Niw3IEBADQogCQkJZHJpdmVyc1tqXS0+YXR0YWNoX2FkYXB0ZXIoYWRh cCk7DQogCURSVl9VTkxPQ0soKTsNCiAJDQotCURFQihwcmludGsoImkyYy1j b3JlLm86IGFkYXB0ZXIgJXMgcmVnaXN0ZXJlZCBhcyBhZGFwdGVyICVkLlxu IiwNCisJREVCKHByaW50ayhLRVJOX0RFQlVHICJpMmMtY29yZS5vOiBhZGFw dGVyICVzIHJlZ2lzdGVyZWQgYXMgYWRhcHRlciAlZC5cbiIsDQogCSAgICAg ICAgICAgYWRhcC0+bmFtZSxpKSk7DQogDQogCXJldHVybiAwOwkNCkBAIC0y MTQsNyArMTkyLDcgQEANCiAJCWlmIChhZGFwID09IGFkYXB0ZXJzW2ldKQ0K IAkJCWJyZWFrOw0KIAlpZiAoSTJDX0FEQVBfTUFYID09IGkpIHsNCi0JCXBy aW50ayggImkyYy1jb3JlLm86IHVucmVnaXN0ZXJfYWRhcHRlciBhZGFwIFsl c10gbm90IGZvdW5kLlxuIiwNCisJCXByaW50ayggS0VSTl9XQVJOSU5HICJp MmMtY29yZS5vOiB1bnJlZ2lzdGVyX2FkYXB0ZXIgYWRhcCBbJXNdIG5vdCBm b3VuZC5cbiIsDQogCQkJYWRhcC0+bmFtZSk7DQogCQlyZXMgPSAtRU5PREVW Ow0KIAkJZ290byBFUlJPUjA7DQpAQCAtMjI5LDcgKzIwNyw3IEBADQogCWZv ciAoaiA9IDA7IGogPCBJMkNfRFJJVkVSX01BWDsgaisrKSANCiAJCWlmIChk cml2ZXJzW2pdICYmIChkcml2ZXJzW2pdLT5mbGFncyAmIEkyQ19ERl9EVU1N WSkpDQogCQkJaWYgKChyZXMgPSBkcml2ZXJzW2pdLT5hdHRhY2hfYWRhcHRl cihhZGFwKSkpIHsNCi0JCQkJcHJpbnRrKCJpMmMtY29yZS5vOiBjYW4ndCBk ZXRhY2ggYWRhcHRlciAlcyAiDQorCQkJCXByaW50ayhLRVJOX1dBUk5JTkcg ImkyYy1jb3JlLm86IGNhbid0IGRldGFjaCBhZGFwdGVyICVzICINCiAJCQkJ ICAgICAgICJ3aGlsZSBkZXRhY2hpbmcgZHJpdmVyICVzOiBkcml2ZXIgbm90 ICINCiAJCQkJICAgICAgICJkZXRhY2hlZCEiLGFkYXAtPm5hbWUsZHJpdmVy c1tqXS0+bmFtZSk7DQogCQkJCWdvdG8gRVJST1IxOwkNCkBAIC0yNDcsNyAr MjI1LDcgQEANCiAJCSAgICAgKiBtdXN0IGJlIGRlbGV0ZWQsIGFzIHRoaXMg d291bGQgY2F1c2UgaW52YWxpZCBzdGF0ZXMuDQogCQkgICAgICovDQogCQkJ aWYgKChyZXM9Y2xpZW50LT5kcml2ZXItPmRldGFjaF9jbGllbnQoY2xpZW50 KSkpIHsNCi0JCQkJcHJpbnRrKCJpMmMtY29yZS5vOiBhZGFwdGVyICVzIG5v dCAiDQorCQkJCXByaW50ayhLRVJOX0VSUiAiaTJjLWNvcmUubzogYWRhcHRl ciAlcyBub3QgIg0KIAkJCQkJInVucmVnaXN0ZXJlZCwgYmVjYXVzZSBjbGll bnQgYXQgIg0KIAkJCQkJImFkZHJlc3MgJTAyeCBjYW4ndCBiZSBkZXRhY2hl ZC4gIiwNCiAJCQkJCWFkYXAtPm5hbWUsIGNsaWVudC0+YWRkcik7DQpAQCAt MjY2LDcgKzI0NCw3IEBADQogCWFkYXBfY291bnQtLTsNCiAJDQogCUFEQVBf VU5MT0NLKCk7CQ0KLQlERUIocHJpbnRrKCJpMmMtY29yZS5vOiBhZGFwdGVy IHVucmVnaXN0ZXJlZDogJXNcbiIsYWRhcC0+bmFtZSkpOw0KKwlERUIocHJp bnRrKEtFUk5fREVCVUcgImkyYy1jb3JlLm86IGFkYXB0ZXIgdW5yZWdpc3Rl cmVkOiAlc1xuIixhZGFwLT5uYW1lKSk7DQogCXJldHVybiAwOw0KIA0KIEVS Uk9SMDoNCkBAIC0zMDUsNyArMjgzLDcgQEANCiAJDQogCURSVl9VTkxPQ0so KTsJLyogZHJpdmVyIHdhcyBzdWNjZXNzZnVsbHkgYWRkZWQgKi8NCiAJDQot CURFQihwcmludGsoImkyYy1jb3JlLm86IGRyaXZlciAlcyByZWdpc3RlcmVk LlxuIixkcml2ZXItPm5hbWUpKTsNCisJREVCKHByaW50ayhLRVJOX0RFQlVH ICJpMmMtY29yZS5vOiBkcml2ZXIgJXMgcmVnaXN0ZXJlZC5cbiIsZHJpdmVy LT5uYW1lKSk7DQogCQ0KIAlBREFQX0xPQ0soKTsNCiANCkBAIC0zNDAsNyAr MzE4LDcgQEANCiAJICogYXR0YWNoZWQuIElmIHNvLCBkZXRhY2ggdGhlbSB0 byBiZSBhYmxlIHRvIGtpbGwgdGhlIGRyaXZlciANCiAJICogYWZ0ZXJ3YXJk cy4NCiAJICovDQotCURFQjIocHJpbnRrKCJpMmMtY29yZS5vOiB1bnJlZ2lz dGVyX2RyaXZlciAtIGxvb2tpbmcgZm9yIGNsaWVudHMuXG4iKSk7DQorCURF QjIocHJpbnRrKEtFUk5fREVCVUcgImkyYy1jb3JlLm86IHVucmVnaXN0ZXJf ZHJpdmVyIC0gbG9va2luZyBmb3IgY2xpZW50cy5cbiIpKTsNCiAJLyogcmVt b3ZpbmcgY2xpZW50cyBkb2VzIG5vdCBkZXBlbmQgb24gdGhlIG5vdGlmeSBm bGFnLCBlbHNlIA0KIAkgKiBpbnZhbGlkIG9wZXJhdGlvbiBtaWdodCAod2ls bCEpIHJlc3VsdCwgd2hlbiB1c2luZyBzdGFsZSBjbGllbnQNCiAJICogcG9p bnRlcnMuDQpAQCAtMzUwLDcgKzMyOCw3IEBADQogCQlzdHJ1Y3QgaTJjX2Fk YXB0ZXIgKmFkYXAgPSBhZGFwdGVyc1trXTsNCiAJCWlmIChhZGFwID09IE5V TEwpIC8qIHNraXAgZW1wdHkgZW50cmllcy4gKi8NCiAJCQljb250aW51ZTsN Ci0JCURFQjIocHJpbnRrKCJpMmMtY29yZS5vOiBleGFtaW5pbmcgYWRhcHRl ciAlczpcbiIsDQorCQlERUIyKHByaW50ayhLRVJOX0RFQlVHICJpMmMtY29y ZS5vOiBleGFtaW5pbmcgYWRhcHRlciAlczpcbiIsDQogCQkJICAgIGFkYXAt Pm5hbWUpKTsNCiAJCWlmIChkcml2ZXItPmZsYWdzICYgSTJDX0RGX0RVTU1Z KSB7DQogCQkvKiBEVU1NWSBkcml2ZXJzIGRvIG5vdCByZWdpc3RlciB0aGVp ciBjbGllbnRzLCBzbyB3ZSBoYXZlIHRvDQpAQCAtMzU5LDcgKzMzNyw3IEBA DQogCQkgKiB0aGlzIG9yIGhlbGwgd2lsbCBicmVhayBsb29zZS4uLiAgDQog CQkgKi8NCiAJCQlpZiAoKHJlcyA9IGRyaXZlci0+YXR0YWNoX2FkYXB0ZXIo YWRhcCkpKSB7DQotCQkJCXByaW50aygiaTJjLWNvcmUubzogd2hpbGUgdW5y ZWdpc3RlcmluZyAiDQorCQkJCXByaW50ayhLRVJOX1dBUk5JTkcgImkyYy1j b3JlLm86IHdoaWxlIHVucmVnaXN0ZXJpbmcgIg0KIAkJCQkgICAgICAgImR1 bW15IGRyaXZlciAlcywgYWRhcHRlciAlcyBjb3VsZCAiDQogCQkJCSAgICAg ICAibm90IGJlIGRldGFjaGVkIHByb3Blcmx5OyBkcml2ZXIgIg0KIAkJCQkg ICAgICAgIm5vdCB1bmxvYWRlZCEiLGRyaXZlci0+bmFtZSwNCkBAIC0zNzIs MTkgKzM1MCwxNyBAQA0KIAkJCQlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 ID0gYWRhcC0+Y2xpZW50c1tqXTsNCiAJCQkJaWYgKGNsaWVudCAhPSBOVUxM ICYmIA0KIAkJCQkgICAgY2xpZW50LT5kcml2ZXIgPT0gZHJpdmVyKSB7DQot CQkJCQlERUIyKHByaW50aygiaTJjLWNvcmUubzogIg0KKwkJCQkJREVCMihw cmludGsoS0VSTl9ERUJVRyAiaTJjLWNvcmUubzogIg0KIAkJCQkJCSAgICAi ZGV0YWNoaW5nIGNsaWVudCAlczpcbiIsDQogCQkJCQkgICAgICAgICAgICBj bGllbnQtPm5hbWUpKTsNCiAJCQkJCWlmICgocmVzID0gZHJpdmVyLT4NCiAJ CQkJCQkJZGV0YWNoX2NsaWVudChjbGllbnQpKSkNCiAJCQkJCXsNCi0JCQkJ CQlwcmludGsoImkyYy1jb3JlLm86IHdoaWxlICINCisJCQkJCQlwcmludGso S0VSTl9FUlIgImkyYy1jb3JlLm86IHdoaWxlICINCiAJCQkJCQkgICAgICAg InVucmVnaXN0ZXJpbmcgZHJpdmVyICINCiAJCQkJCQkgICAgICAgImAlcycs IHRoZSBjbGllbnQgYXQgIg0KLQkJCQkJCSAgICAgICAiYWRkcmVzcyAlMDJ4 IG9mICINCi0JCQkJCQkgICAgICAgImFkYXB0ZXIgYCVzJyBjb3VsZCBub3Qi DQotCQkJCQkJICAgICAgICJiZSBkZXRhY2hlZDsgZHJpdmVyIg0KLQkJCQkJ CSAgICAgICAibm90IHVubG9hZGVkISIsDQorCQkJCQkJICAgICAgICJhZGRy ZXNzICUwMnggb2YgYWRhcHRlciBgJXMnIGNvdWxkIG5vdCBiZSAiDQorCQkJ CQkJICAgICAgICJkZXRhY2hlZDsgZHJpdmVyIG5vdCB1bmxvYWRlZCEiLA0K IAkJCQkJCSAgICAgICBkcml2ZXItPm5hbWUsDQogCQkJCQkJICAgICAgIGNs aWVudC0+YWRkciwNCiAJCQkJCQkgICAgICAgYWRhcC0+bmFtZSk7DQpAQCAt NDAwLDcgKzM3Niw3IEBADQogCWRyaXZlcl9jb3VudC0tOw0KIAlEUlZfVU5M T0NLKCk7DQogCQ0KLQlERUIocHJpbnRrKCJpMmMtY29yZS5vOiBkcml2ZXIg dW5yZWdpc3RlcmVkOiAlc1xuIixkcml2ZXItPm5hbWUpKTsNCisJREVCKHBy aW50ayhLRVJOX0RFQlVHICJpMmMtY29yZS5vOiBkcml2ZXIgdW5yZWdpc3Rl cmVkOiAlc1xuIixkcml2ZXItPm5hbWUpKTsNCiAJcmV0dXJuIDA7DQogfQ0K IA0KQEAgLTQzNiwxMCArNDEyLDEwIEBADQogCQ0KIAlpZiAoYWRhcHRlci0+ Y2xpZW50X3JlZ2lzdGVyKSANCiAJCWlmIChhZGFwdGVyLT5jbGllbnRfcmVn aXN0ZXIoY2xpZW50KSkgDQotCQkJcHJpbnRrKCJpMmMtY29yZS5vOiB3YXJu aW5nOiBjbGllbnRfcmVnaXN0ZXIgc2VlbXMgIg0KKwkJCXByaW50ayhLRVJO X0RFQlVHICJpMmMtY29yZS5vOiB3YXJuaW5nOiBjbGllbnRfcmVnaXN0ZXIg c2VlbXMgIg0KIAkJCSAgICAgICAidG8gaGF2ZSBmYWlsZWQgZm9yIGNsaWVu dCAlMDJ4IGF0IGFkYXB0ZXIgJXNcbiIsDQogCQkJICAgICAgIGNsaWVudC0+ YWRkcixhZGFwdGVyLT5uYW1lKTsNCi0JREVCKHByaW50aygiaTJjLWNvcmUu bzogY2xpZW50IFslc10gcmVnaXN0ZXJlZCB0byBhZGFwdGVyIFslc10ocG9z LiAlZCkuXG4iLA0KKwlERUIocHJpbnRrKEtFUk5fREVCVUcgImkyYy1jb3Jl Lm86IGNsaWVudCBbJXNdIHJlZ2lzdGVyZWQgdG8gYWRhcHRlciBbJXNdKHBv cy4gJWQpLlxuIiwNCiAJCWNsaWVudC0+bmFtZSwgYWRhcHRlci0+bmFtZSxp KSk7DQogDQogCWlmKGNsaWVudC0+ZmxhZ3MgJiBJMkNfQ0xJRU5UX0FMTE9X X1VTRSkNCkBAIC00NzAsNyArNDQ2LDcgQEANCiAJDQogCWlmIChhZGFwdGVy LT5jbGllbnRfdW5yZWdpc3RlciAhPSBOVUxMKSANCiAJCWlmICgocmVzID0g YWRhcHRlci0+Y2xpZW50X3VucmVnaXN0ZXIoY2xpZW50KSkpIHsNCi0JCQlw cmludGsoImkyYy1jb3JlLm86IGNsaWVudF91bnJlZ2lzdGVyIFslc10gZmFp bGVkLCAiDQorCQkJcHJpbnRrKEtFUk5fRVJSICJpMmMtY29yZS5vOiBjbGll bnRfdW5yZWdpc3RlciBbJXNdIGZhaWxlZCwgIg0KIAkJCSAgICAgICAiY2xp ZW50IG5vdCBkZXRhY2hlZCIsY2xpZW50LT5uYW1lKTsNCiAJCQlyZXR1cm4g cmVzOw0KIAkJfQ0KQEAgLTQ3OCw3ICs0NTQsNyBAQA0KIAlhZGFwdGVyLT5j bGllbnRzW2ldID0gTlVMTDsNCiAJYWRhcHRlci0+Y2xpZW50X2NvdW50LS07 DQogDQotCURFQihwcmludGsoImkyYy1jb3JlLm86IGNsaWVudCBbJXNdIHVu cmVnaXN0ZXJlZC5cbiIsY2xpZW50LT5uYW1lKSk7DQorCURFQihwcmludGso S0VSTl9ERUJVRyAiaTJjLWNvcmUubzogY2xpZW50IFslc10gdW5yZWdpc3Rl cmVkLlxuIixjbGllbnQtPm5hbWUpKTsNCiAJcmV0dXJuIDA7DQogfQ0KIA0K QEAgLTYxMSwxOCArNTg3LDYgQEANCiANCiAjaWZkZWYgQ09ORklHX1BST0Nf RlMNCiANCi0jaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8PSBLRVJORUxfVkVS U0lPTigyLDMsMjcpKQ0KLS8qIE1vbml0b3IgYWNjZXNzIHRvIC9wcm9jL2J1 cy9pMmMqOyBtYWtlIHVubG9hZGluZyBpMmMtcHJvYyBpbXBvc3NpYmxlDQot ICAgaWYgc29tZSBwcm9jZXNzIHN0aWxsIHVzZXMgaXQgb3Igc29tZSBmaWxl IGluIGl0ICovDQotdm9pZCBtb25pdG9yX2J1c19pMmMoc3RydWN0IGlub2Rl ICppbm9kZSwgaW50IGZpbGwpDQotew0KLQlpZiAoZmlsbCkNCi0JCU1PRF9J TkNfVVNFX0NPVU5UOw0KLQllbHNlDQotCQlNT0RfREVDX1VTRV9DT1VOVDsN Ci19DQotI2VuZGlmIC8qIChMSU5VWF9WRVJTSU9OX0NPREUgPD0gS0VSTkVM X1ZFUlNJT04oMiwzLDM3KSkgKi8NCi0NCiAvKiBUaGlzIGZ1bmN0aW9uIGdl bmVyYXRlcyB0aGUgb3V0cHV0IGZvciAvcHJvYy9idXMvaTJjICovDQogaW50 IHJlYWRfYnVzX2kyYyhjaGFyICpidWYsIGNoYXIgKipzdGFydCwgb2ZmX3Qg b2Zmc2V0LCBpbnQgbGVuLCBpbnQgKmVvZiwgDQogICAgICAgICAgICAgICAg ICB2b2lkICpwcml2YXRlKQ0KQEAgLTY1OSwxMiArNjIzLDEyIEBADQogCWlu dCBpLGosayxvcmRlcl9ucixsZW49MCxsZW5fdG90YWw7DQogCWludCBvcmRl cltJMkNfQ0xJRU5UX01BWF07DQogDQotCWlmIChjb3VudCA+IDQwMDApDQor CWlmIChjb3VudCA+IDQwOTYpDQogCQlyZXR1cm4gLUVJTlZBTDsgDQogCWxl bl90b3RhbCA9IGZpbGUtPmZfcG9zICsgY291bnQ7DQogCS8qIFRvbyBiYWQg aWYgdGhpcyBnZXRzIGxvbmdlciAodW5saWtlbHkpICovDQotCWlmIChsZW5f dG90YWwgPiA0MDAwKQ0KLQkJbGVuX3RvdGFsID0gNDAwMDsNCisJaWYgKGxl bl90b3RhbCA+IDQwOTYpDQorCQlsZW5fdG90YWwgPSA0MDk2Ow0KIAlmb3Ig KGkgPSAwOyBpIDwgSTJDX0FEQVBfTUFYOyBpKyspDQogCQlpZiAoYWRhcHRl cnNbaV0tPmlub2RlID09IGlub2RlLT5pX2lubykgew0KIAkJLyogV2UgbmVl ZCBhIGJpdCBvZiBzbGFjayBpbiB0aGUga2VybmVsIGJ1ZmZlcjsgdGhpcyBt YWtlcyB0aGUNCkBAIC03MjAsMjIgKzY4NCwxOCBAQA0KIAlpMmNwcm9jX2lu aXRpYWxpemVkID0gMDsNCiANCiAJaWYgKCEgcHJvY19idXMpIHsNCi0JCXBy aW50aygiaTJjLWNvcmUubzogL3Byb2MvYnVzLyBkb2VzIG5vdCBleGlzdCIp Ow0KKwkJcHJpbnRrKEtFUk5fRVJSICJpMmMtY29yZS5vOiAvcHJvYy9idXMv IGRvZXMgbm90IGV4aXN0Iik7DQogCQlpMmNwcm9jX2NsZWFudXAoKTsNCiAJ CXJldHVybiAtRU5PRU5UOw0KICAJfSANCiAJcHJvY19idXNfaTJjID0gY3Jl YXRlX3Byb2NfZW50cnkoImkyYyIsMCxwcm9jX2J1cyk7DQogCWlmICghcHJv Y19idXNfaTJjKSB7DQotCQlwcmludGsoImkyYy1jb3JlLm86IENvdWxkIG5v dCBjcmVhdGUgL3Byb2MvYnVzL2kyYyIpOw0KKwkJcHJpbnRrKEtFUk5fRVJS ICJpMmMtY29yZS5vOiBDb3VsZCBub3QgY3JlYXRlIC9wcm9jL2J1cy9pMmMi KTsNCiAJCWkyY3Byb2NfY2xlYW51cCgpOw0KIAkJcmV0dXJuIC1FTk9FTlQ7 DQogIAl9DQogCXByb2NfYnVzX2kyYy0+cmVhZF9wcm9jID0gJnJlYWRfYnVz X2kyYzsNCi0jaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVS U0lPTigyLDMsMjcpKQ0KIAlwcm9jX2J1c19pMmMtPm93bmVyID0gVEhJU19N T0RVTEU7DQotI2Vsc2UNCi0JcHJvY19idXNfaTJjLT5maWxsX2lub2RlID0g Jm1vbml0b3JfYnVzX2kyYzsNCi0jZW5kaWYgLyogKExJTlVYX1ZFUlNJT05f Q09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDMsMjcpKSAqLw0KIAlpMmNwcm9j X2luaXRpYWxpemVkICs9IDI7DQogCXJldHVybiAwOw0KIH0NCkBAIC03NjUs NyArNzI1LDcgQEANCiAJY29uZGl0aW9uYWxfc2NoZWR1bGUoKTsNCiANCiAJ aWYgKGFkYXAtPmFsZ28tPm1hc3Rlcl94ZmVyKSB7DQotIAkgCURFQjIocHJp bnRrKCJpMmMtY29yZS5vOiBtYXN0ZXJfeGZlcjogJXMgd2l0aCAlZCBtc2dz LlxuIiwNCisgCSAJREVCMihwcmludGsoS0VSTl9ERUJVRyAiaTJjLWNvcmUu bzogbWFzdGVyX3hmZXI6ICVzIHdpdGggJWQgbXNncy5cbiIsDQogCQkgICAg ICAgICAgICBhZGFwLT5uYW1lLG51bSkpOw0KIA0KIAkJSTJDX0xPQ0soYWRh cCk7DQpAQCAtNzc0LDcgKzczNCw3IEBADQogDQogCQlyZXR1cm4gcmV0Ow0K IAl9IGVsc2Ugew0KLQkJcHJpbnRrKCJpMmMtY29yZS5vOiBJMkMgYWRhcHRl ciAlMDR4OiBJMkMgbGV2ZWwgdHJhbnNmZXJzIG5vdCBzdXBwb3J0ZWRcbiIs DQorCQlwcmludGsoS0VSTl9FUlIgImkyYy1jb3JlLm86IEkyQyBhZGFwdGVy ICUwNHg6IEkyQyBsZXZlbCB0cmFuc2ZlcnMgbm90IHN1cHBvcnRlZFxuIiwN CiAJCSAgICAgICBhZGFwLT5pZCk7DQogCQlyZXR1cm4gLUVOT1NZUzsNCiAJ fQ0KQEAgLTc5NCw3ICs3NTQsNyBAQA0KIAkJbXNnLmxlbiA9IGNvdW50Ow0K IAkJKGNvbnN0IGNoYXIgKiltc2cuYnVmID0gYnVmOw0KIAkNCi0JCURFQjIo cHJpbnRrKCJpMmMtY29yZS5vOiBtYXN0ZXJfc2VuZDogd3JpdGluZyAlZCBi eXRlcyBvbiAlcy5cbiIsDQorCQlERUIyKHByaW50ayhLRVJOX0RFQlVHICJp MmMtY29yZS5vOiBtYXN0ZXJfc2VuZDogd3JpdGluZyAlZCBieXRlcyBvbiAl cy5cbiIsDQogCQkJY291bnQsY2xpZW50LT5hZGFwdGVyLT5uYW1lKSk7DQog CQ0KIAkJSTJDX0xPQ0soYWRhcCk7DQpAQCAtODA2LDcgKzc2Niw3IEBADQog CQkgKi8NCiAJCXJldHVybiAocmV0ID09IDEgKT8gY291bnQgOiByZXQ7DQog CX0gZWxzZSB7DQotCQlwcmludGsoImkyYy1jb3JlLm86IEkyQyBhZGFwdGVy ICUwNHg6IEkyQyBsZXZlbCB0cmFuc2ZlcnMgbm90IHN1cHBvcnRlZFxuIiwN CisJCXByaW50ayhLRVJOX0VSUiAiaTJjLWNvcmUubzogSTJDIGFkYXB0ZXIg JTA0eDogSTJDIGxldmVsIHRyYW5zZmVycyBub3Qgc3VwcG9ydGVkXG4iLA0K IAkJICAgICAgIGNsaWVudC0+YWRhcHRlci0+aWQpOw0KIAkJcmV0dXJuIC1F Tk9TWVM7DQogCX0NCkBAIC04MjcsMTQgKzc4NywxNCBAQA0KIAkJbXNnLmxl biA9IGNvdW50Ow0KIAkJbXNnLmJ1ZiA9IGJ1ZjsNCiANCi0JCURFQjIocHJp bnRrKCJpMmMtY29yZS5vOiBtYXN0ZXJfcmVjdjogcmVhZGluZyAlZCBieXRl cyBvbiAlcy5cbiIsDQorCQlERUIyKHByaW50ayhLRVJOX0RFQlVHICJpMmMt Y29yZS5vOiBtYXN0ZXJfcmVjdjogcmVhZGluZyAlZCBieXRlcyBvbiAlcy5c biIsDQogCQkJY291bnQsY2xpZW50LT5hZGFwdGVyLT5uYW1lKSk7DQogCQ0K IAkJSTJDX0xPQ0soYWRhcCk7DQogCQlyZXQgPSBhZGFwLT5hbGdvLT5tYXN0 ZXJfeGZlcihhZGFwLCZtc2csMSk7DQogCQlJMkNfVU5MT0NLKGFkYXApOw0K IAkNCi0JCURFQjIocHJpbnRrKCJpMmMtY29yZS5vOiBtYXN0ZXJfcmVjdjog cmV0dXJuOiVkIChjb3VudDolZCwgYWRkcjoweCUwMngpXG4iLA0KKwkJREVC MihwcmludGsoS0VSTl9ERUJVRyAiaTJjLWNvcmUubzogbWFzdGVyX3JlY3Y6 IHJldHVybjolZCAoY291bnQ6JWQsIGFkZHI6MHglMDJ4KVxuIiwNCiAJCQly ZXQsIGNvdW50LCBjbGllbnQtPmFkZHIpKTsNCiAJDQogCQkvKiBpZiBldmVy eXRoaW5nIHdlbnQgb2sgKGkuZS4gMSBtc2cgdHJhbnNtaXR0ZWQpLCByZXR1 cm4gI2J5dGVzDQpAQCAtODQyLDcgKzgwMiw3IEBADQogCSAJKi8NCiAJCXJl dHVybiAocmV0ID09IDEgKT8gY291bnQgOiByZXQ7DQogCX0gZWxzZSB7DQot CQlwcmludGsoImkyYy1jb3JlLm86IEkyQyBhZGFwdGVyICUwNHg6IEkyQyBs ZXZlbCB0cmFuc2ZlcnMgbm90IHN1cHBvcnRlZFxuIiwNCisJCXByaW50ayhL RVJOX0RFQlVHICJpMmMtY29yZS5vOiBJMkMgYWRhcHRlciAlMDR4OiBJMkMg bGV2ZWwgdHJhbnNmZXJzIG5vdCBzdXBwb3J0ZWRcbiIsDQogCQkgICAgICAg Y2xpZW50LT5hZGFwdGVyLT5pZCk7DQogCQlyZXR1cm4gLUVOT1NZUzsNCiAJ fQ0KQEAgLTg1NSw3ICs4MTUsNyBAQA0KIAlpbnQgcmV0ID0gMDsNCiAJc3Ry dWN0IGkyY19hZGFwdGVyICphZGFwID0gY2xpZW50LT5hZGFwdGVyOw0KIA0K LQlERUIyKHByaW50aygiaTJjLWNvcmUubzogaTJjIGlvY3RsLCBjbWQ6IDB4 JXgsIGFyZzogJSNseFxuIiwgY21kLCBhcmcpKTsNCisJREVCMihwcmludGso S0VSTl9ERUJVRyAiaTJjLWNvcmUubzogaTJjIGlvY3RsLCBjbWQ6IDB4JXgs IGFyZzogJSNseFxuIiwgY21kLCBhcmcpKTsNCiAJc3dpdGNoICggY21kICkg ew0KIAkJY2FzZSBJMkNfUkVUUklFUzoNCiAJCQlhZGFwLT5yZXRyaWVzID0g YXJnOw0KQEAgLTkwMCw3ICs4NjAsNyBAQA0KIAkJCWlmICgoKGFkYXBfaWQg PT0gYWRkcmVzc19kYXRhLT5mb3JjZVtpXSkgfHwgDQogCQkJICAgICAoYWRk cmVzc19kYXRhLT5mb3JjZVtpXSA9PSBBTllfSTJDX0JVUykpICYmDQogCQkJ ICAgICAoYWRkciA9PSBhZGRyZXNzX2RhdGEtPmZvcmNlW2krMV0pKSB7DQot CQkJCURFQjIocHJpbnRrKCJpMmMtY29yZS5vOiBmb3VuZCBmb3JjZSBwYXJh bWV0ZXIgZm9yIGFkYXB0ZXIgJWQsIGFkZHIgJTA0eFxuIiwNCisJCQkJREVC MihwcmludGsoS0VSTl9ERUJVRyAiaTJjLWNvcmUubzogZm91bmQgZm9yY2Ug cGFyYW1ldGVyIGZvciBhZGFwdGVyICVkLCBhZGRyICUwNHhcbiIsDQogCQkJ CSAgICAgICAgICAgIGFkYXBfaWQsYWRkcikpOw0KIAkJCQlpZiAoKGVyciA9 IGZvdW5kX3Byb2MoYWRhcHRlcixhZGRyLDAsMCkpKQ0KIAkJCQkJcmV0dXJu IGVycjsNCkBAIC05MTgsNyArODc4LDcgQEANCiAJCQlpZiAoKChhZGFwX2lk ID09IGFkZHJlc3NfZGF0YS0+aWdub3JlW2ldKSB8fCANCiAJCQkgICAgKChh ZGRyZXNzX2RhdGEtPmlnbm9yZVtpXSA9PSBBTllfSTJDX0JVUykpKSAmJg0K IAkJCSAgICAoYWRkciA9PSBhZGRyZXNzX2RhdGEtPmlnbm9yZVtpKzFdKSkg ew0KLQkJCQlERUIyKHByaW50aygiaTJjLWNvcmUubzogZm91bmQgaWdub3Jl IHBhcmFtZXRlciBmb3IgYWRhcHRlciAlZCwgIg0KKwkJCQlERUIyKHByaW50 ayhLRVJOX0RFQlVHICJpMmMtY29yZS5vOiBmb3VuZCBpZ25vcmUgcGFyYW1l dGVyIGZvciBhZGFwdGVyICVkLCAiDQogCQkJCSAgICAgImFkZHIgJTA0eFxu IiwgYWRhcF9pZCAsYWRkcikpOw0KIAkJCQlmb3VuZCA9IDE7DQogCQkJfQ0K QEAgLTkzMCw3ICs4OTAsNyBAQA0KIAkJCSAgICAoKGFkZHJlc3NfZGF0YS0+ aWdub3JlX3JhbmdlW2ldPT1BTllfSTJDX0JVUykpKSAmJg0KIAkJCSAgICAo YWRkciA+PSBhZGRyZXNzX2RhdGEtPmlnbm9yZV9yYW5nZVtpKzFdKSAmJg0K IAkJCSAgICAoYWRkciA8PSBhZGRyZXNzX2RhdGEtPmlnbm9yZV9yYW5nZVtp KzJdKSkgew0KLQkJCQlERUIyKHByaW50aygiaTJjLWNvcmUubzogZm91bmQg aWdub3JlX3JhbmdlIHBhcmFtZXRlciBmb3IgYWRhcHRlciAlZCwgIg0KKwkJ CQlERUIyKHByaW50ayhLRVJOX0RFQlVHICJpMmMtY29yZS5vOiBmb3VuZCBp Z25vcmVfcmFuZ2UgcGFyYW1ldGVyIGZvciBhZGFwdGVyICVkLCAiDQogCQkJ CSAgICAgICAgICAgICJhZGRyICUwNHhcbiIsIGFkYXBfaWQsYWRkcikpOw0K IAkJCQlmb3VuZCA9IDE7DQogCQkJfQ0KQEAgLTk0NSw3ICs5MDUsNyBAQA0K IAkJICAgICBpICs9IDEpIHsNCiAJCQlpZiAoYWRkciA9PSBhZGRyZXNzX2Rh dGEtPm5vcm1hbF9pMmNbaV0pIHsNCiAJCQkJZm91bmQgPSAxOw0KLQkJCQlE RUIyKHByaW50aygiaTJjLWNvcmUubzogZm91bmQgbm9ybWFsIGkyYyBlbnRy eSBmb3IgYWRhcHRlciAlZCwgIg0KKwkJCQlERUIyKHByaW50ayhLRVJOX0RF QlVHICJpMmMtY29yZS5vOiBmb3VuZCBub3JtYWwgaTJjIGVudHJ5IGZvciBh ZGFwdGVyICVkLCAiDQogCQkJCSAgICAgICAgICAgICJhZGRyICUwMngiLCBh ZGFwX2lkLGFkZHIpKTsNCiAJCQl9DQogCQl9DQpAQCAtOTU2LDcgKzkxNiw3 IEBADQogCQkJaWYgKChhZGRyID49IGFkZHJlc3NfZGF0YS0+bm9ybWFsX2ky Y19yYW5nZVtpXSkgJiYNCiAJCQkgICAgKGFkZHIgPD0gYWRkcmVzc19kYXRh LT5ub3JtYWxfaTJjX3JhbmdlW2krMV0pKSB7DQogCQkJCWZvdW5kID0gMTsN Ci0JCQkJREVCMihwcmludGsoImkyYy1jb3JlLm86IGZvdW5kIG5vcm1hbCBp MmNfcmFuZ2UgZW50cnkgZm9yIGFkYXB0ZXIgJWQsICINCisJCQkJREVCMihw cmludGsoS0VSTl9ERUJVRyAiaTJjLWNvcmUubzogZm91bmQgbm9ybWFsIGky Y19yYW5nZSBlbnRyeSBmb3IgYWRhcHRlciAlZCwgIg0KIAkJCQkgICAgICAg ICAgICAiYWRkciAlMDR4XG4iLCBhZGFwX2lkLGFkZHIpKTsNCiAJCQl9DQog CQl9DQpAQCAtOTY4LDcgKzkyOCw3IEBADQogCQkJICAgICgoYWRkcmVzc19k YXRhLT5wcm9iZVtpXSA9PSBBTllfSTJDX0JVUykpKSAmJg0KIAkJCSAgICAo YWRkciA9PSBhZGRyZXNzX2RhdGEtPnByb2JlW2krMV0pKSB7DQogCQkJCWZv dW5kID0gMTsNCi0JCQkJREVCMihwcmludGsoImkyYy1jb3JlLm86IGZvdW5k IHByb2JlIHBhcmFtZXRlciBmb3IgYWRhcHRlciAlZCwgIg0KKwkJCQlERUIy KHByaW50ayhLRVJOX0RFQlVHICJpMmMtY29yZS5vOiBmb3VuZCBwcm9iZSBw YXJhbWV0ZXIgZm9yIGFkYXB0ZXIgJWQsICINCiAJCQkJICAgICAgICAgICAg ImFkZHIgJTA0eFxuIiwgYWRhcF9pZCxhZGRyKSk7DQogCQkJfQ0KIAkJfQ0K QEAgLTk4MCw3ICs5NDAsNyBAQA0KIAkJCSAgIChhZGRyID49IGFkZHJlc3Nf ZGF0YS0+cHJvYmVfcmFuZ2VbaSsxXSkgJiYNCiAJCQkgICAoYWRkciA8PSBh ZGRyZXNzX2RhdGEtPnByb2JlX3JhbmdlW2krMl0pKSB7DQogCQkJCWZvdW5k ID0gMTsNCi0JCQkJREVCMihwcmludGsoImkyYy1jb3JlLm86IGZvdW5kIHBy b2JlX3JhbmdlIHBhcmFtZXRlciBmb3IgYWRhcHRlciAlZCwgIg0KKwkJCQlE RUIyKHByaW50ayhLRVJOX0RFQlVHICJpMmMtY29yZS5vOiBmb3VuZCBwcm9i ZV9yYW5nZSBwYXJhbWV0ZXIgZm9yIGFkYXB0ZXIgJWQsICINCiAJCQkJICAg ICAgICAgICAgImFkZHIgJTA0eFxuIiwgYWRhcF9pZCxhZGRyKSk7DQogCQkJ fQ0KIAkJfQ0KQEAgLTEwMTAsNiArOTcwLDEyMyBAQA0KIA0KIC8qIFRoZSBT TUJ1cyBwYXJ0cyAqLw0KIA0KKyNkZWZpbmUgUE9MWSAgICAoMHgxMDcwVSA8 PCAzKSANCitzdGF0aWMgdTgNCitjcmM4KHUxNiBkYXRhKQ0KK3sNCisJaW50 IGk7DQorICANCisJZm9yKGkgPSAwOyBpIDwgODsgaSsrKSB7DQorCQlpZiAo ZGF0YSAmIDB4ODAwMCkgDQorCQkJZGF0YSA9IGRhdGEgXiBQT0xZOw0KKwkJ ZGF0YSA9IGRhdGEgPDwgMTsNCisJfQ0KKwlyZXR1cm4gKHU4KShkYXRhID4+ IDgpOw0KK30NCisNCisvKiBDUkMgb3ZlciBjb3VudCBieXRlcyBpbiB0aGUg Zmlyc3QgYXJyYXkgcGx1cyB0aGUgYnl0ZXMgaW4gdGhlIHJlc3QNCisgICBh cnJheSBpZiBpdCBpcyBub24tbnVsbC4gcmVzdFswXSBpcyB0aGUgKGxlbmd0 aCBvZiByZXN0KSAtIDENCisgICBhbmQgaXMgaW5jbHVkZWQuICovDQordTgg aTJjX3NtYnVzX3BhcnRpYWxfcGVjKHU4IGNyYywgaW50IGNvdW50LCB1OCAq Zmlyc3QsIHU4ICpyZXN0KQ0KK3sNCisJaW50IGk7DQorDQorCWZvcihpID0g MDsgaSA8IGNvdW50OyBpKyspDQorCQljcmMgPSBjcmM4KChjcmMgXiBmaXJz dFtpXSkgPDwgOCk7DQorCWlmKHJlc3QgIT0gTlVMTCkNCisJCWZvcihpID0g MDsgaSA8PSByZXN0WzBdOyBpKyspDQorCQkJY3JjID0gY3JjOCgoY3JjIF4g cmVzdFtpXSkgPDwgOCk7DQorCXJldHVybiBjcmM7DQorfQ0KKw0KK3U4IGky Y19zbWJ1c19wZWMoaW50IGNvdW50LCB1OCAqZmlyc3QsIHU4ICpyZXN0KQ0K K3sNCisJcmV0dXJuIGkyY19zbWJ1c19wYXJ0aWFsX3BlYygwLCBjb3VudCwg Zmlyc3QsIHJlc3QpOw0KK30NCisNCisvKiBSZXR1cm5zIG5ldyAic2l6ZSIg KHRyYW5zYWN0aW9uIHR5cGUpDQorICAgTm90ZSB0aGF0IHdlIGNvbnZlcnQg Ynl0ZSB0byBieXRlX2RhdGEgYW5kIGJ5dGVfZGF0YSB0byB3b3JkX2RhdGEN CisgICByYXRoZXIgdGhhbiBpbnZlbnQgbmV3IHh4eF9QRUMgdHJhbnNhY3Rp b25zLiAqLw0KK2ludCBpMmNfc21idXNfYWRkX3BlYyh1MTYgYWRkciwgdTgg Y29tbWFuZCwgaW50IHNpemUsDQorICAgICAgICAgICAgICAgICAgICAgIHVu aW9uIGkyY19zbWJ1c19kYXRhICpkYXRhKQ0KK3sNCisJdTggYnVmWzNdOw0K Kw0KKwlidWZbMF0gPSBhZGRyIDw8IDE7DQorCWJ1ZlsxXSA9IGNvbW1hbmQ7 DQorCXN3aXRjaChzaXplKSB7DQorCQljYXNlIEkyQ19TTUJVU19CWVRFOg0K KwkJCWRhdGEtPmJ5dGUgPSBpMmNfc21idXNfcGVjKDIsIGJ1ZiwgTlVMTCk7 DQorCQkJc2l6ZSA9IEkyQ19TTUJVU19CWVRFX0RBVEE7DQorCQkJYnJlYWs7 DQorCQljYXNlIEkyQ19TTUJVU19CWVRFX0RBVEE6DQorCQkJYnVmWzJdID0g ZGF0YS0+Ynl0ZTsNCisJCQlkYXRhLT53b3JkID0gYnVmWzJdIHx8DQorCQkJ ICAgICAgICAgICAgKGkyY19zbWJ1c19wZWMoMywgYnVmLCBOVUxMKSA8PCA4 KTsNCisJCQlzaXplID0gSTJDX1NNQlVTX1dPUkRfREFUQTsNCisJCQlicmVh azsNCisJCWNhc2UgSTJDX1NNQlVTX1dPUkRfREFUQToNCisJCQkvKiB1bnN1 cHBvcnRlZCAqLw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBJMkNfU01CVVNfQkxP Q0tfREFUQToNCisJCQlkYXRhLT5ibG9ja1tkYXRhLT5ibG9ja1swXSArIDFd ID0NCisJCQkgICAgICAgICAgICAgaTJjX3NtYnVzX3BlYygyLCBidWYsIGRh dGEtPmJsb2NrKTsNCisJCQlzaXplID0gSTJDX1NNQlVTX0JMT0NLX0RBVEFf UEVDOw0KKwkJCWJyZWFrOw0KKwl9DQorCXJldHVybiBzaXplOwkNCit9DQor DQoraW50IGkyY19zbWJ1c19jaGVja19wZWModTE2IGFkZHIsIHU4IGNvbW1h bmQsIGludCBzaXplLCB1OCBwYXJ0aWFsLA0KKyAgICAgICAgICAgICAgICAg ICAgICAgIHVuaW9uIGkyY19zbWJ1c19kYXRhICpkYXRhKQ0KK3sNCisJdTgg YnVmWzNdLCBycGVjLCBjcGVjOw0KKw0KKwlidWZbMV0gPSBjb21tYW5kOw0K Kwlzd2l0Y2goc2l6ZSkgew0KKwkJY2FzZSBJMkNfU01CVVNfQllURV9EQVRB Og0KKwkJCWJ1ZlswXSA9IChhZGRyIDw8IDEpIHwgMTsNCisJCQljcGVjID0g aTJjX3NtYnVzX3BlYygyLCBidWYsIE5VTEwpOw0KKwkJCXJwZWMgPSBkYXRh LT5ieXRlOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBJMkNfU01CVVNfV09SRF9E QVRBOg0KKwkJCWJ1ZlswXSA9IChhZGRyIDw8IDEpIHwgMTsNCisJCQlidWZb Ml0gPSBkYXRhLT53b3JkICYgMHhmZjsNCisJCQljcGVjID0gaTJjX3NtYnVz X3BlYygzLCBidWYsIE5VTEwpOw0KKwkJCXJwZWMgPSBkYXRhLT53b3JkID4+ IDg7DQorCQkJYnJlYWs7DQorCQljYXNlIEkyQ19TTUJVU19XT1JEX0RBVEFf UEVDOg0KKwkJCS8qIHVuc3VwcG9ydGVkICovDQorCQkJY3BlYyA9IHJwZWMg PSAwOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBJMkNfU01CVVNfUFJPQ19DQUxM X1BFQzoNCisJCQkvKiB1bnN1cHBvcnRlZCAqLw0KKwkJCWNwZWMgPSBycGVj ID0gMDsNCisJCQlicmVhazsNCisJCWNhc2UgSTJDX1NNQlVTX0JMT0NLX0RB VEFfUEVDOg0KKwkJCWJ1ZlswXSA9IChhZGRyIDw8IDEpOw0KKwkJCWJ1Zlsy XSA9IChhZGRyIDw8IDEpIHwgMTsNCisJCQljcGVjID0gaTJjX3NtYnVzX3Bl YygzLCBidWYsIGRhdGEtPmJsb2NrKTsNCisJCQlycGVjID0gZGF0YS0+Ymxv Y2tbZGF0YS0+YmxvY2tbMF0gKyAxXTsNCisJCQlicmVhazsNCisJCWNhc2Ug STJDX1NNQlVTX0JMT0NLX1BST0NfQ0FMTF9QRUM6DQorCQkJYnVmWzBdID0g KGFkZHIgPDwgMSkgfCAxOw0KKwkJCXJwZWMgPSBpMmNfc21idXNfcGFydGlh bF9wZWMocGFydGlhbCwgMSwNCisJCQkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJ1ZiwgZGF0YS0+YmxvY2spOw0KKwkJCWNwZWMgPSBkYXRhLT5i bG9ja1tkYXRhLT5ibG9ja1swXSArIDFdOw0KKwkJCWJyZWFrOw0KKwkJZGVm YXVsdDoNCisJCQljcGVjID0gcnBlYyA9IDA7DQorCQkJYnJlYWs7DQorCX0N CisJaWYocnBlYyAhPSBjcGVjKSB7DQorCQlERUIocHJpbnRrKEtFUk5fREVC VUcgImkyYy1jb3JlLm86IEJhZCBQRUMgMHglMDJ4IHZzLiAweCUwMnhcbiIs DQorCQkgICAgICAgICAgIHJwZWMsIGNwZWMpKTsNCisJCXJldHVybiAtMTsN CisJfQ0KKwlyZXR1cm4gMDsJDQorfQ0KKw0KIGV4dGVybiBzMzIgaTJjX3Nt YnVzX3dyaXRlX3F1aWNrKHN0cnVjdCBpMmNfY2xpZW50ICogY2xpZW50LCB1 OCB2YWx1ZSkNCiB7DQogCXJldHVybiBpMmNfc21idXNfeGZlcihjbGllbnQt PmFkYXB0ZXIsY2xpZW50LT5hZGRyLGNsaWVudC0+ZmxhZ3MsDQpAQCAtMTAy OCw4ICsxMTA1LDkgQEANCiANCiBleHRlcm4gczMyIGkyY19zbWJ1c193cml0 ZV9ieXRlKHN0cnVjdCBpMmNfY2xpZW50ICogY2xpZW50LCB1OCB2YWx1ZSkN CiB7DQorCXVuaW9uIGkyY19zbWJ1c19kYXRhIGRhdGE7CS8qIG9ubHkgZm9y IFBFQyAqLw0KIAlyZXR1cm4gaTJjX3NtYnVzX3hmZXIoY2xpZW50LT5hZGFw dGVyLGNsaWVudC0+YWRkcixjbGllbnQtPmZsYWdzLA0KLQkgICAgICAgICAg ICAgICAgICAgICAgSTJDX1NNQlVTX1dSSVRFLHZhbHVlLCBJMkNfU01CVVNf QllURSxOVUxMKTsNCisJICAgICAgICAgICAgICAgICAgICAgIEkyQ19TTUJV U19XUklURSx2YWx1ZSwgSTJDX1NNQlVTX0JZVEUsJmRhdGEpOw0KIH0NCiAN CiBleHRlcm4gczMyIGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShzdHJ1Y3Qg aTJjX2NsaWVudCAqIGNsaWVudCwgdTggY29tbWFuZCkNCkBAIC0xMTA3LDgg KzExODUsOCBAQA0KIHsNCiAJdW5pb24gaTJjX3NtYnVzX2RhdGEgZGF0YTsN CiAJaW50IGk7DQotCWlmIChsZW5ndGggPiAzMikNCi0JCWxlbmd0aCA9IDMy Ow0KKwlpZiAobGVuZ3RoID4gSTJDX1NNQlVTX0JMT0NLX01BWCkNCisJCWxl bmd0aCA9IEkyQ19TTUJVU19CTE9DS19NQVg7DQogCWZvciAoaSA9IDE7IGkg PD0gbGVuZ3RoOyBpKyspDQogCQlkYXRhLmJsb2NrW2ldID0gdmFsdWVzW2kt MV07DQogCWRhdGEuYmxvY2tbMF0gPSBsZW5ndGg7DQpAQCAtMTExNywxMyAr MTE5NSw1MCBAQA0KIAkgICAgICAgICAgICAgICAgICAgICAgSTJDX1NNQlVT X0JMT0NLX0RBVEEsJmRhdGEpOw0KIH0NCiANCisvKiBSZXR1cm5zIHRoZSBu dW1iZXIgb2YgcmVhZCBieXRlcyAqLw0KK2V4dGVybiBzMzIgaTJjX3NtYnVz X2Jsb2NrX3Byb2Nlc3NfY2FsbChzdHJ1Y3QgaTJjX2NsaWVudCAqIGNsaWVu dCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dTggY29tbWFuZCwgdTggbGVuZ3RoLCB1OCAqdmFsdWVzKQ0KK3sNCisJdW5p b24gaTJjX3NtYnVzX2RhdGEgZGF0YTsNCisJaW50IGk7DQorCWlmIChsZW5n dGggPiBJMkNfU01CVVNfQkxPQ0tfTUFYIC0gMSkNCisJCXJldHVybiAtMTsN CisJZGF0YS5ibG9ja1swXSA9IGxlbmd0aDsNCisJZm9yIChpID0gMTsgaSA8 PSBsZW5ndGg7IGkrKykNCisJCWRhdGEuYmxvY2tbaV0gPSB2YWx1ZXNbaS0x XTsNCisJaWYoaTJjX3NtYnVzX3hmZXIoY2xpZW50LT5hZGFwdGVyLGNsaWVu dC0+YWRkcixjbGllbnQtPmZsYWdzLA0KKwkgICAgICAgICAgICAgICAgICBJ MkNfU01CVVNfV1JJVEUsIGNvbW1hbmQsDQorCSAgICAgICAgICAgICAgICAg IEkyQ19TTUJVU19CTE9DS19QUk9DX0NBTEwsICZkYXRhKSkNCisJCXJldHVy biAtMTsNCisJZm9yIChpID0gMTsgaSA8PSBkYXRhLmJsb2NrWzBdOyBpKysp DQorCQl2YWx1ZXNbaS0xXSA9IGRhdGEuYmxvY2tbaV07DQorCXJldHVybiBk YXRhLmJsb2NrWzBdOw0KK30NCisNCisvKiBSZXR1cm5zIHRoZSBudW1iZXIg b2YgcmVhZCBieXRlcyAqLw0KK2V4dGVybiBzMzIgaTJjX3NtYnVzX3JlYWRf aTJjX2Jsb2NrX2RhdGEoc3RydWN0IGkyY19jbGllbnQgKiBjbGllbnQsDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCBj b21tYW5kLCB1OCAqdmFsdWVzKQ0KK3sNCisJdW5pb24gaTJjX3NtYnVzX2Rh dGEgZGF0YTsNCisJaW50IGk7DQorCWlmIChpMmNfc21idXNfeGZlcihjbGll bnQtPmFkYXB0ZXIsY2xpZW50LT5hZGRyLGNsaWVudC0+ZmxhZ3MsDQorCSAg ICAgICAgICAgICAgICAgICAgICBJMkNfU01CVVNfUkVBRCxjb21tYW5kLA0K KwkgICAgICAgICAgICAgICAgICAgICAgSTJDX1NNQlVTX0kyQ19CTE9DS19E QVRBLCZkYXRhKSkNCisJCXJldHVybiAtMTsNCisJZWxzZSB7DQorCQlmb3Ig KGkgPSAxOyBpIDw9IGRhdGEuYmxvY2tbMF07IGkrKykNCisJCQl2YWx1ZXNb aS0xXSA9IGRhdGEuYmxvY2tbaV07DQorCQlyZXR1cm4gZGF0YS5ibG9ja1sw XTsNCisJfQ0KK30NCisNCiBleHRlcm4gczMyIGkyY19zbWJ1c193cml0ZV9p MmNfYmxvY2tfZGF0YShzdHJ1Y3QgaTJjX2NsaWVudCAqIGNsaWVudCwNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCBj b21tYW5kLCB1OCBsZW5ndGgsIHU4ICp2YWx1ZXMpDQogew0KIAl1bmlvbiBp MmNfc21idXNfZGF0YSBkYXRhOw0KIAlpbnQgaTsNCi0JaWYgKGxlbmd0aCA+ IDMyKQ0KLQkJbGVuZ3RoID0gMzI7DQorCWlmIChsZW5ndGggPiBJMkNfU01C VVNfSTJDX0JMT0NLX01BWCkNCisJCWxlbmd0aCA9IEkyQ19TTUJVU19JMkNf QkxPQ0tfTUFYOw0KIAlmb3IgKGkgPSAxOyBpIDw9IGxlbmd0aDsgaSsrKQ0K IAkJZGF0YS5ibG9ja1tpXSA9IHZhbHVlc1tpLTFdOw0KIAlkYXRhLmJsb2Nr WzBdID0gbGVuZ3RoOw0KQEAgLTExODUsMzAgKzEzMDAsNTQgQEANCiAJCWJy ZWFrOw0KIAljYXNlIEkyQ19TTUJVU19QUk9DX0NBTEw6DQogCQludW0gPSAy OyAvKiBTcGVjaWFsIGNhc2UgKi8NCisJCXJlYWRfd3JpdGUgPSBJMkNfU01C VVNfUkVBRDsNCiAJCW1zZ1swXS5sZW4gPSAzOw0KIAkJbXNnWzFdLmxlbiA9 IDI7DQogCQltc2didWYwWzFdID0gZGF0YS0+d29yZCAmIDB4ZmY7DQogCQlt c2didWYwWzJdID0gKGRhdGEtPndvcmQgPj4gOCkgJiAweGZmOw0KIAkJYnJl YWs7DQogCWNhc2UgSTJDX1NNQlVTX0JMT0NLX0RBVEE6DQorCWNhc2UgSTJD X1NNQlVTX0JMT0NLX0RBVEFfUEVDOg0KIAkJaWYgKHJlYWRfd3JpdGUgPT0g STJDX1NNQlVTX1JFQUQpIHsNCi0JCQlwcmludGsoImkyYy1jb3JlLm86IEJs b2NrIHJlYWQgbm90IHN1cHBvcnRlZCB1bmRlciAiDQotCQkJICAgICAgICJJ MkMgZW11bGF0aW9uIVxuIik7DQotCQlyZXR1cm4gLTE7DQorCQkJcHJpbnRr KEtFUk5fRVJSICJpMmMtY29yZS5vOiBCbG9jayByZWFkIG5vdCBzdXBwb3J0 ZWQgIg0KKwkJCSAgICAgICAidW5kZXIgSTJDIGVtdWxhdGlvbiFcbiIpOw0K KwkJCXJldHVybiAtMTsNCiAJCX0gZWxzZSB7DQogCQkJbXNnWzBdLmxlbiA9 IGRhdGEtPmJsb2NrWzBdICsgMjsNCi0JCQlpZiAobXNnWzBdLmxlbiA+IDM0 KSB7DQotCQkJCXByaW50aygiaTJjLWNvcmUubzogc21idXNfYWNjZXNzIGNh bGxlZCB3aXRoICINCisJCQlpZiAobXNnWzBdLmxlbiA+IEkyQ19TTUJVU19C TE9DS19NQVggKyAyKSB7DQorCQkJCXByaW50ayhLRVJOX0VSUiAiaTJjLWNv cmUubzogc21idXNfYWNjZXNzIGNhbGxlZCB3aXRoICINCiAJCQkJICAgICAg ICJpbnZhbGlkIGJsb2NrIHdyaXRlIHNpemUgKCVkKVxuIiwNCi0JCQkJICAg ICAgIG1zZ1swXS5sZW4pOw0KKwkJCQkgICAgICAgZGF0YS0+YmxvY2tbMF0p Ow0KIAkJCQlyZXR1cm4gLTE7DQogCQkJfQ0KKwkJCWlmKHNpemUgPT0gSTJD X1NNQlVTX0JMT0NLX0RBVEFfUEVDKQ0KKwkJCQkobXNnWzBdLmxlbikrKzsN CiAJCQlmb3IgKGkgPSAxOyBpIDw9IG1zZ1swXS5sZW47IGkrKykNCiAJCQkJ bXNnYnVmMFtpXSA9IGRhdGEtPmJsb2NrW2ktMV07DQogCQl9DQogCQlicmVh azsNCisJY2FzZSBJMkNfU01CVVNfQkxPQ0tfUFJPQ19DQUxMOg0KKwljYXNl IEkyQ19TTUJVU19CTE9DS19QUk9DX0NBTExfUEVDOg0KKwkJcHJpbnRrKEtF Uk5fRVJSICJpMmMtY29yZS5vOiBCbG9jayBwcm9jZXNzIGNhbGwgbm90IHN1 cHBvcnRlZCAiDQorCQkgICAgICAgInVuZGVyIEkyQyBlbXVsYXRpb24hXG4i KTsNCisJCXJldHVybiAtMTsNCisJY2FzZSBJMkNfU01CVVNfSTJDX0JMT0NL X0RBVEE6DQorCQlpZiAocmVhZF93cml0ZSA9PSBJMkNfU01CVVNfUkVBRCkg ew0KKwkJCW1zZ1sxXS5sZW4gPSBJMkNfU01CVVNfSTJDX0JMT0NLX01BWDsN CisJCX0gZWxzZSB7DQorCQkJbXNnWzBdLmxlbiA9IGRhdGEtPmJsb2NrWzBd ICsgMjsNCisJCQlpZiAobXNnWzBdLmxlbiA+IEkyQ19TTUJVU19JMkNfQkxP Q0tfTUFYICsgMikgew0KKwkJCQlwcmludGsoImkyYy1jb3JlLm86IGkyY19z bWJ1c194ZmVyX2VtdWxhdGVkIGNhbGxlZCB3aXRoICINCisJCQkJICAgICAg ICJpbnZhbGlkIGJsb2NrIHdyaXRlIHNpemUgKCVkKVxuIiwNCisJCQkJICAg ICAgIGRhdGEtPmJsb2NrWzBdKTsNCisJCQkJcmV0dXJuIC0xOw0KKwkJCX0N CisJCQlmb3IgKGkgPSAwOyBpIDwgZGF0YS0+YmxvY2tbMF07IGkrKykNCisJ CQkJbXNnYnVmMFtpXSA9IGRhdGEtPmJsb2NrW2krMV07DQorCQl9DQorCQli cmVhazsNCiAJZGVmYXVsdDoNCi0JCXByaW50aygiaTJjLWNvcmUubzogc21i dXNfYWNjZXNzIGNhbGxlZCB3aXRoIGludmFsaWQgc2l6ZSAoJWQpXG4iLA0K KwkJcHJpbnRrKEtFUk5fRVJSICJpMmMtY29yZS5vOiBzbWJ1c19hY2Nlc3Mg Y2FsbGVkIHdpdGggaW52YWxpZCBzaXplICglZClcbiIsDQogCQkgICAgICAg c2l6ZSk7DQogCQlyZXR1cm4gLTE7DQogCX0NCkBAIC0xMjI4LDYgKzEzNjcs MTIgQEANCiAJCQljYXNlIEkyQ19TTUJVU19QUk9DX0NBTEw6DQogCQkJCWRh dGEtPndvcmQgPSBtc2didWYxWzBdIHwgKG1zZ2J1ZjFbMV0gPDwgOCk7DQog CQkJCWJyZWFrOw0KKwkJCWNhc2UgSTJDX1NNQlVTX0kyQ19CTE9DS19EQVRB Og0KKwkJCQkvKiBmaXhlZCBhdCAzMiBmb3Igbm93ICovDQorCQkJCWRhdGEt PmJsb2NrWzBdID0gSTJDX1NNQlVTX0kyQ19CTE9DS19NQVg7DQorCQkJCWZv ciAoaSA9IDA7IGkgPCBJMkNfU01CVVNfSTJDX0JMT0NLX01BWDsgaSsrKQ0K KwkJCQkJZGF0YS0+YmxvY2tbaSsxXSA9IG1zZ2J1ZjFbaV07DQorCQkJCWJy ZWFrOw0KIAkJfQ0KIAlyZXR1cm4gMDsNCiB9DQpAQCAtMTIzOCw3ICsxMzgz LDI5IEBADQogICAgICAgICAgICAgICAgICAgIHVuaW9uIGkyY19zbWJ1c19k YXRhICogZGF0YSkNCiB7DQogCXMzMiByZXM7DQotCWZsYWdzID0gZmxhZ3Mg JiBJMkNfTV9URU47DQorCWludCBzd3BlYyA9IDA7DQorCXU4IHBhcnRpYWwg PSAwOw0KKw0KKwlmbGFncyAmPSBJMkNfTV9URU4gfCBJMkNfQ0xJRU5UX1BF QzsNCisJaWYoKGZsYWdzICYgSTJDX0NMSUVOVF9QRUMpICYmDQorCSAgICEo aTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoYWRhcHRlciwgSTJDX0ZVTkNfU01C VVNfSFdQRUNfQ0FMQykpKSB7DQorCQlzd3BlYyA9IDE7DQorCQlpZihyZWFk X3dyaXRlID09IEkyQ19TTUJVU19SRUFEICYmDQorCQkgICBzaXplID09IEky Q19TTUJVU19CTE9DS19EQVRBKQ0KKwkJCXNpemUgPSBJMkNfU01CVVNfQkxP Q0tfREFUQV9QRUM7DQorCQllbHNlIGlmKHNpemUgPT0gSTJDX1NNQlVTX1BS T0NfQ0FMTCkNCisJCQlzaXplID0gSTJDX1NNQlVTX1BST0NfQ0FMTF9QRUM7 DQorCQllbHNlIGlmKHNpemUgPT0gSTJDX1NNQlVTX0JMT0NLX1BST0NfQ0FM TCkgew0KKwkJCWkyY19zbWJ1c19hZGRfcGVjKGFkZHIsIGNvbW1hbmQsDQor CQkgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19TTUJVU19CTE9DS19E QVRBLCBkYXRhKTsNCisJCQlwYXJ0aWFsID0gZGF0YS0+YmxvY2tbZGF0YS0+ YmxvY2tbMF0gKyAxXTsNCisJCQlzaXplID0gSTJDX1NNQlVTX0JMT0NLX1BS T0NfQ0FMTF9QRUM7DQorCQl9IGVsc2UgaWYocmVhZF93cml0ZSA9PSBJMkNf U01CVVNfV1JJVEUgJiYNCisJCSAgICAgICAgICBzaXplICE9IEkyQ19TTUJV U19RVUlDSyAmJg0KKwkJICAgICAgICAgIHNpemUgIT0gSTJDX1NNQlVTX0ky Q19CTE9DS19EQVRBKQ0KKwkJCXNpemUgPSBpMmNfc21idXNfYWRkX3BlYyhh ZGRyLCBjb21tYW5kLCBzaXplLCBkYXRhKTsNCisJfQ0KKw0KIAlpZiAoYWRh cHRlci0+YWxnby0+c21idXNfeGZlcikgew0KIAkJSTJDX0xPQ0soYWRhcHRl cik7DQogCQlyZXMgPSBhZGFwdGVyLT5hbGdvLT5zbWJ1c194ZmVyKGFkYXB0 ZXIsYWRkcixmbGFncyxyZWFkX3dyaXRlLA0KQEAgLTEyNDcsNiArMTQxNCwx NCBAQA0KIAl9IGVsc2UNCiAJCXJlcyA9IGkyY19zbWJ1c194ZmVyX2VtdWxh dGVkKGFkYXB0ZXIsYWRkcixmbGFncyxyZWFkX3dyaXRlLA0KIAkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQsc2l6ZSxk YXRhKTsNCisNCisJaWYocmVzID49IDAgJiYgc3dwZWMgJiYNCisJICAgc2l6 ZSAhPSBJMkNfU01CVVNfUVVJQ0sgJiYgc2l6ZSAhPSBJMkNfU01CVVNfSTJD X0JMT0NLX0RBVEEgJiYNCisJICAgKHJlYWRfd3JpdGUgPT0gSTJDX1NNQlVT X1JFQUQgfHwgc2l6ZSA9PSBJMkNfU01CVVNfUFJPQ19DQUxMX1BFQyB8fA0K KwkgICAgc2l6ZSA9PSBJMkNfU01CVVNfQkxPQ0tfUFJPQ19DQUxMX1BFQykp IHsNCisJCWlmKGkyY19zbWJ1c19jaGVja19wZWMoYWRkciwgY29tbWFuZCwg c2l6ZSwgcGFydGlhbCwgZGF0YSkpDQorCQkJcmV0dXJuIC0xOw0KKwl9DQog CXJldHVybiByZXM7DQogfQ0KIA0KQEAgLTEyNzAsNyArMTQ0NSw3IEBADQog DQogc3RhdGljIGludCBfX2luaXQgaTJjX2luaXQodm9pZCkNCiB7DQotCXBy aW50aygiaTJjLWNvcmUubzogaTJjIGNvcmUgbW9kdWxlXG4iKTsNCisJcHJp bnRrKEtFUk5fSU5GTyAiaTJjLWNvcmUubzogaTJjIGNvcmUgbW9kdWxlIHZl cnNpb24gJXMgKCVzKVxuIiwgSTJDX1ZFUlNJT04sIEkyQ19EQVRFKTsNCiAJ bWVtc2V0KGFkYXB0ZXJzLDAsc2l6ZW9mKGFkYXB0ZXJzKSk7DQogCW1lbXNl dChkcml2ZXJzLDAsc2l6ZW9mKGRyaXZlcnMpKTsNCiAJYWRhcF9jb3VudD0w Ow0KQEAgLTE0MDgsNiArMTU4Myw4IEBADQogRVhQT1JUX1NZTUJPTChpMmNf c21idXNfcHJvY2Vzc19jYWxsKTsNCiBFWFBPUlRfU1lNQk9MKGkyY19zbWJ1 c19yZWFkX2Jsb2NrX2RhdGEpOw0KIEVYUE9SVF9TWU1CT0woaTJjX3NtYnVz X3dyaXRlX2Jsb2NrX2RhdGEpOw0KK0VYUE9SVF9TWU1CT0woaTJjX3NtYnVz X3JlYWRfaTJjX2Jsb2NrX2RhdGEpOw0KK0VYUE9SVF9TWU1CT0woaTJjX3Nt YnVzX3dyaXRlX2kyY19ibG9ja19kYXRhKTsNCiANCiBFWFBPUlRfU1lNQk9M KGkyY19nZXRfZnVuY3Rpb25hbGl0eSk7DQogRVhQT1JUX1NZTUJPTChpMmNf Y2hlY2tfZnVuY3Rpb25hbGl0eSk7DQotLS0gbGludXgvZHJpdmVycy9pMmMv aTJjLWRldi5jLm9yaWcJMjAwMS0xMC0xMSAxMTowNTo0Ny4wMDAwMDAwMDAg LTA0MDANCisrKyBsaW51eC9kcml2ZXJzL2kyYy9pMmMtZGV2LmMJMjAwMi0w Ny0yMyAwOTowMToyOC4wMDAwMDAwMDAgLTA0MDANCkBAIC0yOCw3ICsyOCw3 IEBADQogLyogVGhlIGRldmZzIGNvZGUgaXMgY29udHJpYnV0ZWQgYnkgUGhp bGlwcCBNYXR0aGlhcyBIYWhuIA0KICAgIDxwbWhhaG5AdGl0YW4ubGFobi5k ZT4gKi8NCiANCi0vKiAkSWQ6IGkyYy1kZXYuYyx2IDEuNDAgMjAwMS8wOC8y NSAwMToyODowMSBtZHMgRXhwICQgKi8NCisvKiAkSWQ6IGkyYy1kZXYuYyx2 IDEuNDYgMjAwMi8wNy8wNiAwMjowNzozOSBtZHMgRXhwICQgKi8NCiANCiAj aW5jbHVkZSA8bGludXgvY29uZmlnLmg+DQogI2luY2x1ZGUgPGxpbnV4L2tl cm5lbC5oPg0KQEAgLTM2LDkgKzM2LDcgQEANCiAjaW5jbHVkZSA8bGludXgv ZnMuaD4NCiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KICNpbmNsdWRlIDxs aW51eC92ZXJzaW9uLmg+DQotI2lmIExJTlVYX0tFUk5FTF9WRVJTSU9OID49 IEtFUk5FTF9WRVJTSU9OKDIsNCwwKQ0KICNpbmNsdWRlIDxsaW51eC9zbXBf bG9jay5oPg0KLSNlbmRpZiAvKiBMSU5VWF9LRVJORUxfVkVSU0lPTiA+PSBL RVJORUxfVkVSU0lPTigyLDQsMCkgKi8NCiAjaWZkZWYgQ09ORklHX0RFVkZT X0ZTDQogI2luY2x1ZGUgPGxpbnV4L2RldmZzX2ZzX2tlcm5lbC5oPg0KICNl bmRpZg0KQEAgLTQ5LDcgKzQ3LDYgQEANCiANCiAjaW5jbHVkZSA8bGludXgv aW5pdC5oPg0KICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPg0KLQ0KICNpbmNs dWRlIDxsaW51eC9pMmMuaD4NCiAjaW5jbHVkZSA8bGludXgvaTJjLWRldi5o Pg0KIA0KQEAgLTYwLDkgKzU3LDYgQEANCiANCiAvKiBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIGNoYW5nZWQgdG9vIG9mdGVuIGluIHRoZSAyLjEgc2VyaWVz IGZvciBuaWNlIGNvZGUgKi8NCiANCi0jaWYgTElOVVhfS0VSTkVMX1ZFUlNJ T04gPCBLRVJORUxfVkVSU0lPTigyLDQsOSkNCi1zdGF0aWMgbG9mZl90IGky Y2Rldl9sc2VlayAoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQs IGludCBvcmlnaW4pOw0KLSNlbmRpZg0KIHN0YXRpYyBzc2l6ZV90IGkyY2Rl dl9yZWFkIChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciAqYnVmLCBzaXplX3Qg Y291bnQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2ZmX3Qg Km9mZnNldCk7DQogc3RhdGljIHNzaXplX3QgaTJjZGV2X3dyaXRlIChzdHJ1 Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQs IA0KQEAgLTg4LDE0ICs4Miw4IEBADQogc3RhdGljIGludCBpMmNkZXZfY2xl YW51cCh2b2lkKTsNCiANCiBzdGF0aWMgc3RydWN0IGZpbGVfb3BlcmF0aW9u cyBpMmNkZXZfZm9wcyA9IHsNCi0jaWYgTElOVVhfS0VSTkVMX1ZFUlNJT04g Pj0gS0VSTkVMX1ZFUlNJT04oMiw0LDApDQogCW93bmVyOgkJVEhJU19NT0RV TEUsDQotI2VuZGlmIC8qIExJTlVYX0tFUk5FTF9WRVJTSU9OID49IEtFUk5F TF9WRVJTSU9OKDIsNCwwKSAqLw0KLSNpZiBMSU5VWF9LRVJORUxfVkVSU0lP TiA8IEtFUk5FTF9WRVJTSU9OKDIsNCw5KQ0KLQlsbHNlZWs6CQlpMmNkZXZf bHNlZWssDQotI2Vsc2UNCiAJbGxzZWVrOgkJbm9fbGxzZWVrLA0KLSNlbmRp Zg0KIAlyZWFkOgkJaTJjZGV2X3JlYWQsDQogCXdyaXRlOgkJaTJjZGV2X3dy aXRlLA0KIAlpb2N0bDoJCWkyY2Rldl9pb2N0bCwNCkBAIC0xMzMsMjAgKzEy MSw2IEBADQogDQogc3RhdGljIGludCBpMmNkZXZfaW5pdGlhbGl6ZWQ7DQog DQotI2lmIExJTlVYX0tFUk5FTF9WRVJTSU9OIDwgS0VSTkVMX1ZFUlNJT04o Miw0LDkpDQotLyogTm90ZSB0aGF0IHRoZSBsc2VlayBmdW5jdGlvbiBpcyBj YWxsZWQgbGxzZWVrIGluIDIuMSBrZXJuZWxzLiBCdXQgdGhpbmdzDQotICAg YXJlIGNvbXBsaWNhdGVkIGVub3VnaCBhcyBpcy4gKi8NCi1sb2ZmX3QgaTJj ZGV2X2xzZWVrIChzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwg aW50IG9yaWdpbikNCi17DQotI2lmZGVmIERFQlVHDQotCXN0cnVjdCBpbm9k ZSAqaW5vZGUgPSBmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZTsNCi0JcHJpbnRr KCJpMmMtZGV2Lm86IGkyYy0lZCBsc2VlayB0byAlbGQgYnl0ZXMgcmVsYXRp dmUgdG8gJWQuXG4iLA0KLQkgICAgICAgTUlOT1IoaW5vZGUtPmlfcmRldiks KGxvbmcpIG9mZnNldCxvcmlnaW4pOw0KLSNlbmRpZiAvKiBERUJVRyAqLw0K LQlyZXR1cm4gLUVTUElQRTsNCi19DQotI2VuZGlmDQotDQogc3RhdGljIHNz aXplX3QgaTJjZGV2X3JlYWQgKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyICpi dWYsIHNpemVfdCBjb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbG9mZl90ICpvZmZzZXQpDQogew0KQEAgLTE2NSw3ICsxMzksNyBAQA0K IAkJcmV0dXJuIC1FTk9NRU07DQogDQogI2lmZGVmIERFQlVHDQotCXByaW50 aygiaTJjLWRldi5vOiBpMmMtJWQgcmVhZGluZyAlZCBieXRlcy5cbiIsTUlO T1IoaW5vZGUtPmlfcmRldiksDQorCXByaW50ayhLRVJOX0RFQlVHICJpMmMt ZGV2Lm86IGkyYy0lZCByZWFkaW5nICVkIGJ5dGVzLlxuIixNSU5PUihpbm9k ZS0+aV9yZGV2KSwNCiAJICAgICAgIGNvdW50KTsNCiAjZW5kaWYNCiANCkBA IC0xOTcsNyArMTcxLDcgQEANCiAJfQ0KIA0KICNpZmRlZiBERUJVRw0KLQlw cmludGsoImkyYy1kZXYubzogaTJjLSVkIHdyaXRpbmcgJWQgYnl0ZXMuXG4i LE1JTk9SKGlub2RlLT5pX3JkZXYpLA0KKwlwcmludGsoS0VSTl9ERUJVRyAi aTJjLWRldi5vOiBpMmMtJWQgd3JpdGluZyAlZCBieXRlcy5cbiIsTUlOT1Io aW5vZGUtPmlfcmRldiksDQogCSAgICAgICBjb3VudCk7DQogI2VuZGlmDQog CXJldCA9IGkyY19tYXN0ZXJfc2VuZChjbGllbnQsdG1wLGNvdW50KTsNCkBA IC0yMTcsNyArMTkxLDcgQEANCiAJdW5zaWduZWQgbG9uZyBmdW5jczsNCiAN CiAjaWZkZWYgREVCVUcNCi0JcHJpbnRrKCJpMmMtZGV2Lm86IGkyYy0lZCBp b2N0bCwgY21kOiAweCV4LCBhcmc6ICVseC5cbiIsIA0KKwlwcmludGsoS0VS Tl9ERUJVRyAiaTJjLWRldi5vOiBpMmMtJWQgaW9jdGwsIGNtZDogMHgleCwg YXJnOiAlbHguXG4iLCANCiAJICAgICAgIE1JTk9SKGlub2RlLT5pX3JkZXYp LGNtZCwgYXJnKTsNCiAjZW5kaWYgLyogREVCVUcgKi8NCiANCkBAIC0yMzcs NiArMjExLDEyIEBADQogCQllbHNlDQogCQkJY2xpZW50LT5mbGFncyAmPSB+ STJDX01fVEVOOw0KIAkJcmV0dXJuIDA7DQorCWNhc2UgSTJDX1BFQzoNCisJ CWlmIChhcmcpDQorCQkJY2xpZW50LT5mbGFncyB8PSBJMkNfQ0xJRU5UX1BF QzsNCisJCWVsc2UNCisJCQljbGllbnQtPmZsYWdzICY9IH5JMkNfQ0xJRU5U X1BFQzsNCisJCXJldHVybiAwOw0KIAljYXNlIEkyQ19GVU5DUzoNCiAJCWZ1 bmNzID0gaTJjX2dldF9mdW5jdGlvbmFsaXR5KGNsaWVudC0+YWRhcHRlcik7 DQogCQlyZXR1cm4gKGNvcHlfdG9fdXNlcigodW5zaWduZWQgbG9uZyAqKWFy ZywmZnVuY3MsDQpAQCAtMzEzLDkgKzI5MywxMCBAQA0KIAkJICAgIChkYXRh X2FyZy5zaXplICE9IEkyQ19TTUJVU19XT1JEX0RBVEEpICYmDQogCQkgICAg KGRhdGFfYXJnLnNpemUgIT0gSTJDX1NNQlVTX1BST0NfQ0FMTCkgJiYNCiAJ CSAgICAoZGF0YV9hcmcuc2l6ZSAhPSBJMkNfU01CVVNfQkxPQ0tfREFUQSkg JiYNCi0JCSAgICAoZGF0YV9hcmcuc2l6ZSAhPSBJMkNfU01CVVNfSTJDX0JM T0NLX0RBVEEpKSB7DQorCQkgICAgKGRhdGFfYXJnLnNpemUgIT0gSTJDX1NN QlVTX0kyQ19CTE9DS19EQVRBKSAmJg0KKwkJICAgIChkYXRhX2FyZy5zaXpl ICE9IEkyQ19TTUJVU19CTE9DS19QUk9DX0NBTEwpKSB7DQogI2lmZGVmIERF QlVHDQotCQkJcHJpbnRrKCJpMmMtZGV2Lm86IHNpemUgb3V0IG9mIHJhbmdl ICgleCkgaW4gaW9jdGwgSTJDX1NNQlVTLlxuIiwNCisJCQlwcmludGsoS0VS Tl9ERUJVRyAiaTJjLWRldi5vOiBzaXplIG91dCBvZiByYW5nZSAoJXgpIGlu IGlvY3RsIEkyQ19TTUJVUy5cbiIsDQogCQkJICAgICAgIGRhdGFfYXJnLnNp emUpOw0KICNlbmRpZg0KIAkJCXJldHVybiAtRUlOVkFMOw0KQEAgLTMyNSw3 ICszMDYsNyBAQA0KIAkJaWYgKChkYXRhX2FyZy5yZWFkX3dyaXRlICE9IEky Q19TTUJVU19SRUFEKSAmJiANCiAJCSAgICAoZGF0YV9hcmcucmVhZF93cml0 ZSAhPSBJMkNfU01CVVNfV1JJVEUpKSB7DQogI2lmZGVmIERFQlVHDQotCQkJ cHJpbnRrKCJpMmMtZGV2Lm86IHJlYWRfd3JpdGUgb3V0IG9mIHJhbmdlICgl eCkgaW4gaW9jdGwgSTJDX1NNQlVTLlxuIiwNCisJCQlwcmludGsoS0VSTl9E RUJVRyAiaTJjLWRldi5vOiByZWFkX3dyaXRlIG91dCBvZiByYW5nZSAoJXgp IGluIGlvY3RsIEkyQ19TTUJVUy5cbiIsDQogCQkJICAgICAgIGRhdGFfYXJn LnJlYWRfd3JpdGUpOw0KICNlbmRpZg0KIAkJCXJldHVybiAtRUlOVkFMOw0K QEAgLTM0NSw3ICszMjYsNyBAQA0KIA0KIAkJaWYgKGRhdGFfYXJnLmRhdGEg PT0gTlVMTCkgew0KICNpZmRlZiBERUJVRw0KLQkJCXByaW50aygiaTJjLWRl di5vOiBkYXRhIGlzIE5VTEwgcG9pbnRlciBpbiBpb2N0bCBJMkNfU01CVVMu XG4iKTsNCisJCQlwcmludGsoS0VSTl9ERUJVRyAiaTJjLWRldi5vOiBkYXRh IGlzIE5VTEwgcG9pbnRlciBpbiBpb2N0bCBJMkNfU01CVVMuXG4iKTsNCiAj ZW5kaWYNCiAJCQlyZXR1cm4gLUVJTlZBTDsNCiAJCX0NCkBAIC0zNTYsMTAg KzMzNywxMSBAQA0KIAkJZWxzZSBpZiAoKGRhdGFfYXJnLnNpemUgPT0gSTJD X1NNQlVTX1dPUkRfREFUQSkgfHwgDQogCQkgICAgICAgICAoZGF0YV9hcmcu c2l6ZSA9PSBJMkNfU01CVVNfUFJPQ19DQUxMKSkNCiAJCQlkYXRhc2l6ZSA9 IHNpemVvZihkYXRhX2FyZy5kYXRhLT53b3JkKTsNCi0JCWVsc2UgLyogc2l6 ZSA9PSBJMkNfU01CVVNfQkxPQ0tfREFUQSAqLw0KKwkJZWxzZSAvKiBzaXpl ID09IHNtYnVzIGJsb2NrLCBpMmMgYmxvY2ssIG9yIGJsb2NrIHByb2MuIGNh bGwgKi8NCiAJCQlkYXRhc2l6ZSA9IHNpemVvZihkYXRhX2FyZy5kYXRhLT5i bG9jayk7DQogDQogCQlpZiAoKGRhdGFfYXJnLnNpemUgPT0gSTJDX1NNQlVT X1BST0NfQ0FMTCkgfHwgDQorCQkgICAgKGRhdGFfYXJnLnNpemUgPT0gSTJD X1NNQlVTX0JMT0NLX1BST0NfQ0FMTCkgfHwgDQogCQkgICAgKGRhdGFfYXJn LnJlYWRfd3JpdGUgPT0gSTJDX1NNQlVTX1dSSVRFKSkgew0KIAkJCWlmIChj b3B5X2Zyb21fdXNlcigmdGVtcCwgZGF0YV9hcmcuZGF0YSwgZGF0YXNpemUp KQ0KIAkJCQlyZXR1cm4gLUVGQVVMVDsNCkBAIC0zNjgsNiArMzUwLDcgQEAN CiAJCSAgICAgIGRhdGFfYXJnLnJlYWRfd3JpdGUsDQogCQkgICAgICBkYXRh X2FyZy5jb21tYW5kLGRhdGFfYXJnLnNpemUsJnRlbXApOw0KIAkJaWYgKCEg cmVzICYmICgoZGF0YV9hcmcuc2l6ZSA9PSBJMkNfU01CVVNfUFJPQ19DQUxM KSB8fCANCisJCSAgICAgICAgICAgICAgKGRhdGFfYXJnLnNpemUgPT0gSTJD X1NNQlVTX0JMT0NLX1BST0NfQ0FMTCkgfHwgDQogCQkJICAgICAgKGRhdGFf YXJnLnJlYWRfd3JpdGUgPT0gSTJDX1NNQlVTX1JFQUQpKSkgew0KIAkJCWlm IChjb3B5X3RvX3VzZXIoZGF0YV9hcmcuZGF0YSwgJnRlbXAsIGRhdGFzaXpl KSkNCiAJCQkJcmV0dXJuIC1FRkFVTFQ7DQpAQCAtMzg3LDcgKzM3MCw3IEBA DQogDQogCWlmICgobWlub3IgPj0gSTJDREVWX0FEQVBTX01BWCkgfHwgISAo aTJjZGV2X2FkYXBzW21pbm9yXSkpIHsNCiAjaWZkZWYgREVCVUcNCi0JCXBy aW50aygiaTJjLWRldi5vOiBUcnlpbmcgdG8gb3BlbiB1bmF0dGFjaGVkIGFk YXB0ZXIgaTJjLSVkXG4iLA0KKwkJcHJpbnRrKEtFUk5fREVCVUcgImkyYy1k ZXYubzogVHJ5aW5nIHRvIG9wZW4gdW5hdHRhY2hlZCBhZGFwdGVyIGkyYy0l ZFxuIiwNCiAJCSAgICAgICBtaW5vcik7DQogI2VuZGlmDQogCQlyZXR1cm4g LUVOT0RFVjsNCkBAIC00MDMsMTIgKzM4Niw4IEBADQogDQogCWlmIChpMmNk ZXZfYWRhcHNbbWlub3JdLT5pbmNfdXNlKQ0KIAkJaTJjZGV2X2FkYXBzW21p bm9yXS0+aW5jX3VzZShpMmNkZXZfYWRhcHNbbWlub3JdKTsNCi0jaWYgTElO VVhfS0VSTkVMX1ZFUlNJT04gPCBLRVJORUxfVkVSU0lPTigyLDQsMCkNCi0J TU9EX0lOQ19VU0VfQ09VTlQ7DQotI2VuZGlmIC8qIExJTlVYX0tFUk5FTF9W RVJTSU9OIDwgS0VSTkVMX1ZFUlNJT04oMiw0LDApICovDQotDQogI2lmZGVm IERFQlVHDQotCXByaW50aygiaTJjLWRldi5vOiBvcGVuZWQgaTJjLSVkXG4i LG1pbm9yKTsNCisJcHJpbnRrKEtFUk5fREVCVUcgImkyYy1kZXYubzogb3Bl bmVkIGkyYy0lZFxuIixtaW5vcik7DQogI2VuZGlmDQogCXJldHVybiAwOw0K IH0NCkBAIC00MTksMTggKzM5OCwxMiBAQA0KIAlrZnJlZShmaWxlLT5wcml2 YXRlX2RhdGEpOw0KIAlmaWxlLT5wcml2YXRlX2RhdGE9TlVMTDsNCiAjaWZk ZWYgREVCVUcNCi0JcHJpbnRrKCJpMmMtZGV2Lm86IENsb3NlZDogaTJjLSVk XG4iLCBtaW5vcik7DQorCXByaW50ayhLRVJOX0RFQlVHICJpMmMtZGV2Lm86 IENsb3NlZDogaTJjLSVkXG4iLCBtaW5vcik7DQogI2VuZGlmDQotI2lmIExJ TlVYX0tFUk5FTF9WRVJTSU9OIDwgS0VSTkVMX1ZFUlNJT04oMiw0LDApDQot CU1PRF9ERUNfVVNFX0NPVU5UOw0KLSNlbHNlIC8qIExJTlVYX0tFUk5FTF9W RVJTSU9OID49IEtFUk5FTF9WRVJTSU9OKDIsNCwwKSAqLw0KIAlsb2NrX2tl cm5lbCgpOw0KLSNlbmRpZiAvKiBMSU5VWF9LRVJORUxfVkVSU0lPTiA8IEtF Uk5FTF9WRVJTSU9OKDIsNCwwKSAqLw0KIAlpZiAoaTJjZGV2X2FkYXBzW21p bm9yXS0+ZGVjX3VzZSkNCiAJCWkyY2Rldl9hZGFwc1ttaW5vcl0tPmRlY191 c2UoaTJjZGV2X2FkYXBzW21pbm9yXSk7DQotI2lmIExJTlVYX0tFUk5FTF9W RVJTSU9OID49IEtFUk5FTF9WRVJTSU9OKDIsNCwwKQ0KIAl1bmxvY2tfa2Vy bmVsKCk7DQotI2VuZGlmIC8qIExJTlVYX0tFUk5FTF9WRVJTSU9OID49IEtF Uk5FTF9WRVJTSU9OKDIsNCwwKSAqLw0KIAlyZXR1cm4gMDsNCiB9DQogDQpA QCAtNDQwLDExICs0MTMsMTEgQEANCiAJY2hhciBuYW1lWzhdOw0KIA0KIAlp ZiAoKGkgPSBpMmNfYWRhcHRlcl9pZChhZGFwKSkgPCAwKSB7DQotCQlwcmlu dGsoImkyYy1kZXYubzogVW5rbm93biBhZGFwdGVyID8hP1xuIik7DQorCQlw cmludGsoS0VSTl9ERUJVRyAiaTJjLWRldi5vOiBVbmtub3duIGFkYXB0ZXIg PyE/XG4iKTsNCiAJCXJldHVybiAtRU5PREVWOw0KIAl9DQogCWlmIChpID49 IEkyQ0RFVl9BREFQU19NQVgpIHsNCi0JCXByaW50aygiaTJjLWRldi5vOiBB ZGFwdGVyIG51bWJlciB0b28gbGFyZ2U/IT8gKCVkKVxuIixpKTsNCisJCXBy aW50ayhLRVJOX0RFQlVHICJpMmMtZGV2Lm86IEFkYXB0ZXIgbnVtYmVyIHRv byBsYXJnZT8hPyAoJWQpXG4iLGkpOw0KIAkJcmV0dXJuIC1FTk9ERVY7DQog CX0NCiANCkBAIC00NTcsNyArNDMwLDcgQEANCiAJCQlTX0lGQ0hSIHwgU19J UlVTUiB8IFNfSVdVU1IsDQogCQkJJmkyY2Rldl9mb3BzLCBOVUxMKTsNCiAj ZW5kaWYNCi0JCXByaW50aygiaTJjLWRldi5vOiBSZWdpc3RlcmVkICclcycg YXMgbWlub3IgJWRcbiIsYWRhcC0+bmFtZSxpKTsNCisJCXByaW50ayhLRVJO X0RFQlVHICJpMmMtZGV2Lm86IFJlZ2lzdGVyZWQgJyVzJyBhcyBtaW5vciAl ZFxuIixhZGFwLT5uYW1lLGkpOw0KIAl9IGVsc2Ugew0KIAkJLyogVGhpcyBp cyBhY3R1YWxseSBhIGRldGFjaF9hZGFwdGVyIGNhbGwhICovDQogI2lmZGVm IENPTkZJR19ERVZGU19GUw0KQEAgLTQ2NSw3ICs0MzgsNyBAQA0KICNlbmRp Zg0KIAkJaTJjZGV2X2FkYXBzW2ldID0gTlVMTDsNCiAjaWZkZWYgREVCVUcN Ci0JCXByaW50aygiaTJjLWRldi5vOiBBZGFwdGVyIHVucmVnaXN0ZXJlZDog JXNcbiIsYWRhcC0+bmFtZSk7DQorCQlwcmludGsoS0VSTl9ERUJVRyAiaTJj LWRldi5vOiBBZGFwdGVyIHVucmVnaXN0ZXJlZDogJXNcbiIsYWRhcC0+bmFt ZSk7DQogI2VuZGlmDQogCX0NCiANCkBAIC00ODcsNyArNDYwLDcgQEANCiB7 DQogCWludCByZXM7DQogDQotCXByaW50aygiaTJjLWRldi5vOiBpMmMgL2Rl diBlbnRyaWVzIGRyaXZlciBtb2R1bGVcbiIpOw0KKwlwcmludGsoS0VSTl9J TkZPICJpMmMtZGV2Lm86IGkyYyAvZGV2IGVudHJpZXMgZHJpdmVyIG1vZHVs ZSB2ZXJzaW9uICVzICglcylcbiIsIEkyQ19WRVJTSU9OLCBJMkNfREFURSk7 DQogDQogCWkyY2Rldl9pbml0aWFsaXplZCA9IDA7DQogI2lmZGVmIENPTkZJ R19ERVZGU19GUw0KQEAgLTQ5NSw3ICs0NjgsNyBAQA0KICNlbHNlDQogCWlm IChyZWdpc3Rlcl9jaHJkZXYoSTJDX01BSk9SLCJpMmMiLCZpMmNkZXZfZm9w cykpIHsNCiAjZW5kaWYNCi0JCXByaW50aygiaTJjLWRldi5vOiB1bmFibGUg dG8gZ2V0IG1ham9yICVkIGZvciBpMmMgYnVzXG4iLA0KKwkJcHJpbnRrKEtF Uk5fRVJSICJpMmMtZGV2Lm86IHVuYWJsZSB0byBnZXQgbWFqb3IgJWQgZm9y IGkyYyBidXNcbiIsDQogCQkgICAgICAgSTJDX01BSk9SKTsNCiAJCXJldHVy biAtRUlPOw0KIAl9DQpAQCAtNTA1LDcgKzQ3OCw3IEBADQogCWkyY2Rldl9p bml0aWFsaXplZCArKzsNCiANCiAJaWYgKChyZXMgPSBpMmNfYWRkX2RyaXZl cigmaTJjZGV2X2RyaXZlcikpKSB7DQotCQlwcmludGsoImkyYy1kZXYubzog RHJpdmVyIHJlZ2lzdHJhdGlvbiBmYWlsZWQsIG1vZHVsZSBub3QgaW5zZXJ0 ZWQuXG4iKTsNCisJCXByaW50ayhLRVJOX0VSUiAiaTJjLWRldi5vOiBEcml2 ZXIgcmVnaXN0cmF0aW9uIGZhaWxlZCwgbW9kdWxlIG5vdCBpbnNlcnRlZC5c biIpOw0KIAkJaTJjZGV2X2NsZWFudXAoKTsNCiAJCXJldHVybiByZXM7DQog CX0NCkBAIC01MTksNyArNDkyLDcgQEANCiANCiAJaWYgKGkyY2Rldl9pbml0 aWFsaXplZCA+PSAyKSB7DQogCQlpZiAoKHJlcyA9IGkyY19kZWxfZHJpdmVy KCZpMmNkZXZfZHJpdmVyKSkpIHsNCi0JCQlwcmludGsoImkyYy1kZXYubzog RHJpdmVyIGRlcmVnaXN0cmF0aW9uIGZhaWxlZCwgIg0KKwkJCXByaW50ayhL RVJOX0VSUiAiaTJjLWRldi5vOiBEcml2ZXIgZGVyZWdpc3RyYXRpb24gZmFp bGVkLCAiDQogCQkJICAgICAgICJtb2R1bGUgbm90IHJlbW92ZWQuXG4iKTsN CiAJCQlyZXR1cm4gcmVzOw0KIAkJfQ0KQEAgLTUzMyw3ICs1MDYsNyBAQA0K ICNlbHNlDQogCQlpZiAoKHJlcyA9IHVucmVnaXN0ZXJfY2hyZGV2KEkyQ19N QUpPUiwiaTJjIikpKSB7DQogI2VuZGlmDQotCQkJcHJpbnRrKCJpMmMtZGV2 Lm86IHVuYWJsZSB0byByZWxlYXNlIG1ham9yICVkIGZvciBpMmMgYnVzXG4i LA0KKwkJCXByaW50ayhLRVJOX0VSUiAiaTJjLWRldi5vOiB1bmFibGUgdG8g cmVsZWFzZSBtYWpvciAlZCBmb3IgaTJjIGJ1c1xuIiwNCiAJCQkgICAgICAg STJDX01BSk9SKTsNCiAJCQlyZXR1cm4gcmVzOw0KIAkJfQ0KLS0tIGxpbnV4 L2luY2x1ZGUvbGludXgvaTJjLWRldi5oLm9yaWcJMjAwMS0xMC0xMSAxMTow NTo0Ny4wMDAwMDAwMDAgLTA0MDANCisrKyBsaW51eC9pbmNsdWRlL2xpbnV4 L2kyYy1kZXYuaAkyMDAyLTA3LTIzIDAxOjU0OjQ0LjAwMDAwMDAwMCAtMDQw MA0KQEAgLTE5LDcgKzE5LDcgQEANCiAgICAgRm91bmRhdGlvbiwgSW5jLiwg Njc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuDQogKi8N CiANCi0vKiAkSWQ6IGkyYy1kZXYuaCx2IDEuOSAyMDAxLzA4LzE1IDAzOjA0 OjU4IG1kcyBFeHAgJCAqLw0KKy8qICRJZDogaTJjLWRldi5oLHYgMS4xMSAy MDAyLzA3LzA3IDE1OjQyOjQ3IG1kcyBFeHAgJCAqLw0KIA0KICNpZm5kZWYg STJDX0RFVl9IDQogI2RlZmluZSBJMkNfREVWX0gNCkBAIC0xNDQsNyArMTQ0 LDcgQEANCiAJZWxzZSB7DQogCQlmb3IgKGkgPSAxOyBpIDw9IGRhdGEuYmxv Y2tbMF07IGkrKykNCiAJCQl2YWx1ZXNbaS0xXSA9IGRhdGEuYmxvY2tbaV07 DQotCQkJcmV0dXJuIGRhdGEuYmxvY2tbMF07DQorCQlyZXR1cm4gZGF0YS5i bG9ja1swXTsNCiAJfQ0KIH0NCiANCkBAIC0xNjIsNiArMTYyLDIyIEBADQog CSAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19TTUJVU19CTE9DS19EQVRB LCAmZGF0YSk7DQogfQ0KIA0KKy8qIFJldHVybnMgdGhlIG51bWJlciBvZiBy ZWFkIGJ5dGVzICovDQorc3RhdGljIGlubGluZSBfX3MzMiBpMmNfc21idXNf cmVhZF9pMmNfYmxvY2tfZGF0YShpbnQgZmlsZSwgX191OCBjb21tYW5kLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX191OCAqdmFsdWVzKQ0KK3sNCisJdW5pb24gaTJjX3NtYnVzX2Rh dGEgZGF0YTsNCisJaW50IGk7DQorCWlmIChpMmNfc21idXNfYWNjZXNzKGZp bGUsSTJDX1NNQlVTX1JFQUQsY29tbWFuZCwNCisJICAgICAgICAgICAgICAg ICAgICAgIEkyQ19TTUJVU19JMkNfQkxPQ0tfREFUQSwmZGF0YSkpDQorCQly ZXR1cm4gLTE7DQorCWVsc2Ugew0KKwkJZm9yIChpID0gMTsgaSA8PSBkYXRh LmJsb2NrWzBdOyBpKyspDQorCQkJdmFsdWVzW2ktMV0gPSBkYXRhLmJsb2Nr W2ldOw0KKwkJcmV0dXJuIGRhdGEuYmxvY2tbMF07DQorCX0NCit9DQorDQog c3RhdGljIGlubGluZSBfX3MzMiBpMmNfc21idXNfd3JpdGVfaTJjX2Jsb2Nr X2RhdGEoaW50IGZpbGUsIF9fdTggY29tbWFuZCwNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdTggbGVuZ3Ro LCBfX3U4ICp2YWx1ZXMpDQogew0KQEAgLTE3Niw2ICsxOTIsMjcgQEANCiAJ ICAgICAgICAgICAgICAgICAgICAgICAgSTJDX1NNQlVTX0kyQ19CTE9DS19E QVRBLCAmZGF0YSk7DQogfQ0KIA0KKy8qIFJldHVybnMgdGhlIG51bWJlciBv ZiByZWFkIGJ5dGVzICovDQorc3RhdGljIGlubGluZSBfX3MzMiBpMmNfc21i dXNfYmxvY2tfcHJvY2Vzc19jYWxsKGludCBmaWxlLCBfX3U4IGNvbW1hbmQs DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF9fdTggbGVuZ3RoLCBfX3U4ICp2YWx1ZXMpDQorew0KKwl1bmlv biBpMmNfc21idXNfZGF0YSBkYXRhOw0KKwlpbnQgaTsNCisJaWYgKGxlbmd0 aCA+IDMyKQ0KKwkJbGVuZ3RoID0gMzI7DQorCWZvciAoaSA9IDE7IGkgPD0g bGVuZ3RoOyBpKyspDQorCQlkYXRhLmJsb2NrW2ldID0gdmFsdWVzW2ktMV07 DQorCWRhdGEuYmxvY2tbMF0gPSBsZW5ndGg7DQorCWlmIChpMmNfc21idXNf YWNjZXNzKGZpbGUsSTJDX1NNQlVTX1dSSVRFLGNvbW1hbmQsDQorCSAgICAg ICAgICAgICAgICAgICAgIEkyQ19TTUJVU19CTE9DS19QUk9DX0NBTEwsJmRh dGEpKQ0KKwkJcmV0dXJuIC0xOw0KKwllbHNlIHsNCisJCWZvciAoaSA9IDE7 IGkgPD0gZGF0YS5ibG9ja1swXTsgaSsrKQ0KKwkJCXZhbHVlc1tpLTFdID0g ZGF0YS5ibG9ja1tpXTsNCisJCXJldHVybiBkYXRhLmJsb2NrWzBdOw0KKwl9 DQorfQ0KKw0KICNlbmRpZiAvKiBuZGVmIF9fS0VSTkVMX18gKi8NCiANCiAj ZW5kaWYNCi0tLSBsaW51eC9pbmNsdWRlL2xpbnV4L2kyYy1pZC5oLm9yaWcJ MjAwMS0xMC0xMSAxMTowNTo0Ny4wMDAwMDAwMDAgLTA0MDANCisrKyBsaW51 eC9pbmNsdWRlL2xpbnV4L2kyYy1pZC5oCTIwMDItMDctMjMgMDE6NDU6MjEu MDAwMDAwMDAwIC0wNDAwDQpAQCAtMjAsNyArMjAsNyBAQA0KICAgICBGb3Vu ZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIx MzksIFVTQS4JCSAgICAgKi8NCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tICovDQogDQotLyogJElkOiBpMmMtaWQuaCx2IDEuMzUgMjAwMS8w OC8xMiAxNzoyMjoyMCBtZHMgRXhwICQgKi8NCisvKiAkSWQ6IGkyYy1pZC5o LHYgMS41MiAyMDAyLzA3LzEwIDEzOjI4OjQ0IGFieiBFeHAgJCAqLw0KIA0K ICNpZm5kZWYgSTJDX0lEX0gNCiAjZGVmaW5lIEkyQ19JRF9IDQpAQCAtOTAs NiArOTAsMTQgQEANCiAjZGVmaW5lIEkyQ19EUklWRVJJRF9EUlAzNTEwCTQz ICAgICAvKiBBRFIgZGVjb2RlciAoQXN0cmEgUmFkaW8pCSovDQogI2RlZmlu ZSBJMkNfRFJJVkVSSURfU1A1MDU1CTQ0ICAgICAvKiBTYXRlbGxpdGUgdHVu ZXIJCSovDQogI2RlZmluZSBJMkNfRFJJVkVSSURfU1RWMDAzMAk0NSAgICAg LyogTXVsdGlwdXJwb3NlIHN3aXRjaAkJKi8NCisjZGVmaW5lIEkyQ19EUklW RVJJRF9TQUE3MTA4CTQ2ICAgICAvKiB2aWRlbyBkZWNvZGVyLCBpbWFnZSBz Y2FsZXIgICAqLw0KKyNkZWZpbmUgSTJDX0RSSVZFUklEX0RTMTMwNwk0NyAg ICAgLyogRFMxMzA3IHJlYWwgdGltZSBjbG9jawkqLw0KKyNkZWZpbmUgSTJD X0RSSVZFUklEX0FEVjcxN3gJNDggICAgIC8qIEFEViA3MTc1LzcxNzYgdmlk ZW8gZW5jb2RlcgkqLw0KKyNkZWZpbmUgSTJDX0RSSVZFUklEX1pSMzYwNjcJ NDkgICAgIC8qIFpvcmFuIDM2MDY3IHZpZGVvIGVuY29kZXIJKi8NCisjZGVm aW5lIEkyQ19EUklWRVJJRF9aUjM2MTIwCTUwICAgICAvKiBab3JhbiAzNjEy MCB2aWRlbyBlbmNvZGVyCSovDQorI2RlZmluZSBJMkNfRFJJVkVSSURfMjRM QzMyQQk1MQkJLyogTWljcm9jaGlwIDI0TEMzMkEgMzJrIEVFUFJPTQkqLw0K Kw0KKw0KIA0KICNkZWZpbmUgSTJDX0RSSVZFUklEX0VYUDAJMHhGMAkvKiBl eHBlcmltZW50YWwgdXNlIGlkJ3MJKi8NCiAjZGVmaW5lIEkyQ19EUklWRVJJ RF9FWFAxCTB4RjENCkBAIC05OCw2ICsxMDYsOCBAQA0KIA0KICNkZWZpbmUg STJDX0RSSVZFUklEX0kyQ0RFVgk5MDANCiAjZGVmaW5lIEkyQ19EUklWRVJJ RF9JMkNQUk9DCTkwMQ0KKyNkZWZpbmUgSTJDX0RSSVZFUklEX0FSUCAgICAg ICAgOTAyICAgIC8qIFNNQnVzIEFSUCBDbGllbnQgICAgICAgICAgICAgICov DQorI2RlZmluZSBJMkNfRFJJVkVSSURfQUxFUlQgICAgICA5MDMgICAgLyog U01CdXMgQWxlcnQgUmVzcG9uZGVyIENsaWVudCAgKi8NCiANCiAvKiBJRHMg LS0gICBVc2UgRFJJVkVSSURzIDEwMDAtMTk5OSBmb3Igc2Vuc29ycy4gDQog ICAgVGhlc2Ugd2VyZSBvcmlnaW5hbGx5IGluIHNlbnNvcnMuaCBpbiB0aGUg bG1fc2Vuc29ycyBwYWNrYWdlICovDQpAQCAtMTI3LDYgKzEzNywxMiBAQA0K ICNkZWZpbmUgSTJDX0RSSVZFUklEX0FETTEwMjQgMTAyNQ0KICNkZWZpbmUg STJDX0RSSVZFUklEX0lUODcgMTAyNg0KICNkZWZpbmUgSTJDX0RSSVZFUklE X0NINzAwWCAxMDI3IC8qIHNpbmdsZSBkcml2ZXIgZm9yIENINzAwMy03MDA5 IGRpZ2l0YWwgcGMgdG8gdHYgZW5jb2RlcnMgKi8NCisjZGVmaW5lIEkyQ19E UklWRVJJRF9GU0NQT1MgMTAyOA0KKyNkZWZpbmUgSTJDX0RSSVZFUklEX0ZT Q1NDWSAxMDI5DQorI2RlZmluZSBJMkNfRFJJVkVSSURfUENGODU5MSAxMDMw DQorI2RlZmluZSBJMkNfRFJJVkVSSURfU01TQzQ3TTEgMTAzMQ0KKyNkZWZp bmUgSTJDX0RSSVZFUklEX1ZUMTIxMSAxMDMyDQorI2RlZmluZSBJMkNfRFJJ VkVSSURfTE05MiAxMDMzDQogDQogLyoNCiAgKiAtLS0tIEFkYXB0ZXIgdHlw ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KQEAgLTE0MywxMCArMTU5LDEyIEBADQogI2RlZmluZSBJ MkNfQUxHT19JU0EgCTB4MDUwMDAwCS8qIGxtX3NlbnNvcnMgSVNBIHBzZXVk by1hZGFwdGVyICovDQogI2RlZmluZSBJMkNfQUxHT19TQUE3MTQ2IDB4MDYw MDAwCS8qIFNBQSA3MTQ2IHZpZGVvIGRlY29kZXIgYnVzCSovDQogI2RlZmlu ZSBJMkNfQUxHT19BQ0IgCTB4MDcwMDAwCS8qIEFDQ0VTUy5idXMgYWxnb3Jp dGhtICAgICAgICAgKi8NCi0NCisjZGVmaW5lIEkyQ19BTEdPX0lJQyAgICAw eDA4MDAwMCAJLyogSVRFIElJQyBidXMgKi8NCisjZGVmaW5lIEkyQ19BTEdP X1NBQTcxMzQgMHgwOTAwMDANCiAjZGVmaW5lIEkyQ19BTEdPX0VDICAgICAw eDEwMDAwMCAgICAgICAgLyogQUNQSSBlbWJlZGRlZCBjb250cm9sbGVyICAg ICAqLw0KIA0KICNkZWZpbmUgSTJDX0FMR09fTVBDOFhYIDB4MTEwMDAwCS8q IE1QQzh4eCBQb3dlclBDIEkyQyBhbGdvcml0aG0gKi8NCisjZGVmaW5lIEky Q19BTEdPX09DUCAgICAweDEyMDAwMAkvKiBJQk0gb3Igb3RoZXJ3aXNlIE9u LWNoaXAgSTJDIGFsZ29yaXRobSAqLw0KIA0KICNkZWZpbmUgSTJDX0FMR09f RVhQCTB4ODAwMDAwCS8qIGV4cGVyaW1lbnRhbAkJCSovDQogDQpAQCAtMTc0 LDkgKzE5MiwxMSBAQA0KICNkZWZpbmUgSTJDX0hXX0JfSTgxMAkweDBhCS8q IEludGVsIEk4MTAgCQkJCSovDQogI2RlZmluZSBJMkNfSFdfQl9WT08JMHgw YgkvKiAzZGZ4IFZvb2RvbyAzIC8gQmFuc2hlZSAgICAgIAkqLw0KICNkZWZp bmUgSTJDX0hXX0JfUFBPUlQgIDB4MGMJLyogUHJpbWl0aXZlIHBhcmFsbGVs IHBvcnQgYWRhcHRlcgkqLw0KKyNkZWZpbmUgSTJDX0hXX0JfU0FWRwkweDBk CS8qIFNhdmFnZSA0ICAgICAgICAgICAgICAgICAgICAgCSovDQogI2RlZmlu ZSBJMkNfSFdfQl9SSVZBCTB4MTAJLyogUml2YSBiYXNlZCBncmFwaGljcyBj YXJkcwkJKi8NCiAjZGVmaW5lIEkyQ19IV19CX0lPQwkweDExCS8qIElPQyBi aXQtd2lnZ2xpbmcJCQkqLw0KICNkZWZpbmUgSTJDX0hXX0JfVFNVTkEgIDB4 MTIJLyogREVDIFRzdW5hbWkgY2hpcHNldAkJCSovDQorI2RlZmluZSBJMkNf SFdfQl9GUk9ETyAgMHgxMyAgICAvKiAyZDNELCBJbmMuIFNBLTExMTAgRGV2 ZWxvcG1lbnQgQm9hcmQgKi8NCiANCiAvKiAtLS0gUENGIDg1ODQgYmFzZWQg YWxnb3JpdGhtcwkJCQkJKi8NCiAjZGVmaW5lIEkyQ19IV19QX0xQCTB4MDAJ LyogUGFyYWxsZWwgcG9ydCBpbnRlcmZhY2UJCSovDQpAQCAtMTg5LDYgKzIw OSwxMyBAQA0KIC8qIC0tLSBNUEM4eHggUG93ZXJQQyBhZGFwdGVycwkJCQkJ CSovDQogI2RlZmluZSBJMkNfSFdfTVBDOFhYX0VQT04gMHgwMAkvKiBFcG9u eW1vdXMgTVBDOHh4IEkyQyBhZGFwdGVyIAkqLw0KIA0KKy8qIC0tLSBJVEUg YmFzZWQgYWxnb3JpdGhtcwkJCQkJCSovDQorI2RlZmluZSBJMkNfSFdfSV9J SUMJMHgwMAkvKiBjb250cm9sbGVyIG9uIHRoZSBJVEUgKi8NCisNCisvKiAt LS0gUG93ZXJQQyBvbi1jaGlwIGFkYXB0ZXJzCQkJCQkJKi8NCisjZGVmaW5l IEkyQ19IV19PQ1AgMHgwMAkvKiBJQk0gb24tY2hpcCBJMkMgYWRhcHRlciAJ Ki8NCisNCisNCiAvKiAtLS0gU01CdXMgb25seSBhZGFwdGVycwkJCQkJCSov DQogI2RlZmluZSBJMkNfSFdfU01CVVNfUElJWDQJMHgwMA0KICNkZWZpbmUg STJDX0hXX1NNQlVTX0FMSTE1WDMJMHgwMQ0KLS0tIGxpbnV4L2RyaXZlcnMv aTJjL2kyYy1wcm9jLmMub3JpZwkyMDAyLTAyLTI1IDE0OjM3OjU3LjAwMDAw MDAwMCAtMDUwMA0KKysrIGxpbnV4L2RyaXZlcnMvaTJjL2kyYy1wcm9jLmMJ MjAwMi0wNy0yMyAwOToxNDo1Ny4wMDAwMDAwMDAgLTA0MDANCkBAIC0zMiwx NiArMzIsMTAgQEANCiAjaW5jbHVkZSA8bGludXgvcHJvY19mcy5oPg0KICNp bmNsdWRlIDxsaW51eC9pb3BvcnQuaD4NCiAjaW5jbHVkZSA8YXNtL3VhY2Nl c3MuaD4NCi0NCiAjaW5jbHVkZSA8bGludXgvaTJjLmg+DQogI2luY2x1ZGUg PGxpbnV4L2kyYy1wcm9jLmg+DQotDQogI2luY2x1ZGUgPGxpbnV4L2luaXQu aD4NCiANCi0vKiBGSVhNRSBuZWVkIGkyYyB2ZXJzaW9uaW5nICovDQotI2Rl ZmluZSBMTV9EQVRFICIyMDAxMDgyNSINCi0jZGVmaW5lIExNX1ZFUlNJT04g IjIuNi4xIg0KLQ0KICNpZm5kZWYgVEhJU19NT0RVTEUNCiAjZGVmaW5lIFRI SVNfTU9EVUxFIE5VTEwNCiAjZW5kaWYNCkBAIC02NywxMCArNjEsNiBAQA0K IA0KIHN0YXRpYyBzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjX2NsaWVudHNbU0VO U09SU19FTlRSWV9NQVhdOw0KIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpMmNf aW5vZGVzW1NFTlNPUlNfRU5UUllfTUFYXTsNCi0jaWYgTElOVVhfVkVSU0lP Tl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiwzLDEpDQotc3RhdGljIHZvaWQg aTJjX2ZpbGxfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgaW50IGZpbGwp Ow0KLXN0YXRpYyB2b2lkIGkyY19kaXJfZmlsbF9pbm9kZShzdHJ1Y3QgaW5v ZGUgKmlub2RlLCBpbnQgZmlsbCk7DQotI2VuZGlmCQkJLyogTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiwzLDEpICovDQogDQogc3Rh dGljIGN0bF90YWJsZSBzeXNjdGxfdGFibGVbXSA9IHsNCiAJe0NUTF9ERVYs ICJkZXYiLCBOVUxMLCAwLCAwNTU1fSwNCkBAIC0xODAsOSArMTcwLDEwIEBA DQogCQluZXdfdGFibGVbaV0uZXh0cmEyID0gY2xpZW50Ow0KIA0KIAlpZiAo IShuZXdfaGVhZGVyID0gcmVnaXN0ZXJfc3lzY3RsX3RhYmxlKG5ld190YWJs ZSwgMCkpKSB7DQorCQlwcmludGsoS0VSTl9FUlIgImkyYy1wcm9jLm86IGVy cm9yOiBzeXNjdGwgaW50ZXJmYWNlIG5vdCBzdXBwb3J0ZWQgYnkga2VybmVs IVxuIik7DQogCQlrZnJlZShuZXdfdGFibGUpOw0KIAkJa2ZyZWUobmFtZSk7 DQotCQlyZXR1cm4gLUVOT01FTTsNCisJCXJldHVybiAtRVBFUk07DQogCX0N CiANCiAJaTJjX2VudHJpZXNbaWQgLSAyNTZdID0gbmV3X2hlYWRlcjsNCkBA IC0xOTQsMTggKzE4NSwxMyBAQA0KIAkgICAgIW5ld19oZWFkZXItPmN0bF90 YWJsZS0+Y2hpbGQtPmNoaWxkIHx8DQogCSAgICAhbmV3X2hlYWRlci0+Y3Rs X3RhYmxlLT5jaGlsZC0+Y2hpbGQtPmRlKSB7DQogCQlwcmludGsNCi0JCSAg ICAoImkyYy1wcm9jLm86IE5VTEwgcG9pbnRlciB3aGVuIHRyeWluZyB0byBp bnN0YWxsIGZpbGxfaW5vZGUgZml4IVxuIik7DQorCQkgICAgKEtFUk5fRVJS ICJpMmMtcHJvYy5vOiBOVUxMIHBvaW50ZXIgd2hlbiB0cnlpbmcgdG8gaW5z dGFsbCBmaWxsX2lub2RlIGZpeCFcbiIpOw0KIAkJcmV0dXJuIGlkOw0KIAl9 DQogI2VuZGlmCQkJCS8qIERFQlVHICovDQogCWkyY19pbm9kZXNbaWQgLSAy NTZdID0NCiAJICAgIG5ld19oZWFkZXItPmN0bF90YWJsZS0+Y2hpbGQtPmNo aWxkLT5kZS0+bG93X2lubzsNCi0jaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+ PSBLRVJORUxfVkVSU0lPTigyLDMsMjcpKQ0KIAluZXdfaGVhZGVyLT5jdGxf dGFibGUtPmNoaWxkLT5jaGlsZC0+ZGUtPm93bmVyID0gY29udHJvbGxpbmdf bW9kOw0KLSNlbHNlDQotCW5ld19oZWFkZXItPmN0bF90YWJsZS0+Y2hpbGQt PmNoaWxkLT5kZS0+ZmlsbF9pbm9kZSA9DQotCSAgICAmaTJjX2Rpcl9maWxs X2lub2RlOw0KLSNlbmRpZgkvKiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtF Uk5FTF9WRVJTSU9OKDIsMywyNykpICovDQogDQogCXJldHVybiBpZDsNCiB9 DQpAQCAtMjQ3LDcgKzIzMyw3IEBADQogDQogI2lmZGVmIERFQlVHDQogCWlm ICghaW5vZGUpIHsNCi0JCXByaW50aygiaTJjLXByb2MubzogV2FybmluZzog aW5vZGUgTlVMTCBpbiBmaWxsX2lub2RlKClcbiIpOw0KKwkJcHJpbnRrKEtF Uk5fRVJSICJpMmMtcHJvYy5vOiBXYXJuaW5nOiBpbm9kZSBOVUxMIGluIGZp bGxfaW5vZGUoKVxuIik7DQogCQlyZXR1cm47DQogCX0NCiAjZW5kaWYJCQkJ LyogZGVmIERFQlVHICovDQpAQCAtMjU4LDcgKzI0NCw3IEBADQogI2lmZGVm IERFQlVHDQogCWlmIChpID09IFNFTlNPUlNfRU5UUllfTUFYKSB7DQogCQlw cmludGsNCi0JCSAgICAoImkyYy1wcm9jLm86IFdhcm5pbmc6IGlub2RlICgl bGQpIG5vdCBmb3VuZCBpbiBmaWxsX2lub2RlKClcbiIsDQorCQkgICAgKEtF Uk5fRVJSICJpMmMtcHJvYy5vOiBXYXJuaW5nOiBpbm9kZSAoJWxkKSBub3Qg Zm91bmQgaW4gZmlsbF9pbm9kZSgpXG4iLA0KIAkJICAgICBpbm9kZS0+aV9p bm8pOw0KIAkJcmV0dXJuOw0KIAl9DQpAQCAtNjg0LDcgKzY3MCw3IEBADQog CQkJCSAgICAmJiAoYWRkciA9PSB0aGlzX2ZvcmNlLT5mb3JjZVtqICsgMV0p KSB7DQogI2lmZGVmIERFQlVHDQogCQkJCQlwcmludGsNCi0JCQkJCSAgICAo ImkyYy1wcm9jLm86IGZvdW5kIGZvcmNlIHBhcmFtZXRlciBmb3IgYWRhcHRl ciAlZCwgYWRkciAlMDR4XG4iLA0KKwkJCQkJICAgIChLRVJOX0RFQlVHICJp MmMtcHJvYy5vOiBmb3VuZCBmb3JjZSBwYXJhbWV0ZXIgZm9yIGFkYXB0ZXIg JWQsIGFkZHIgJTA0eFxuIiwNCiAJCQkJCSAgICAgYWRhcHRlcl9pZCwgYWRk cik7DQogI2VuZGlmDQogCQkJCQlpZiAoDQpAQCAtNzE0LDcgKzcwMCw3IEBA DQogCQkJICAgICYmIChhZGRyID09IGFkZHJlc3NfZGF0YS0+aWdub3JlW2kg KyAxXSkpIHsNCiAjaWZkZWYgREVCVUcNCiAJCQkJcHJpbnRrDQotCQkJCSAg ICAoImkyYy1wcm9jLm86IGZvdW5kIGlnbm9yZSBwYXJhbWV0ZXIgZm9yIGFk YXB0ZXIgJWQsICINCisJCQkJICAgIChLRVJOX0RFQlVHICJpMmMtcHJvYy5v OiBmb3VuZCBpZ25vcmUgcGFyYW1ldGVyIGZvciBhZGFwdGVyICVkLCAiDQog CQkJCSAgICAgImFkZHIgJTA0eFxuIiwgYWRhcHRlcl9pZCwgYWRkcik7DQog I2VuZGlmDQogCQkJCWZvdW5kID0gMTsNCkBAIC03MzQsNyArNzIwLDcgQEAN CiAJCQkgICAgJiYgKGFkZHIgPD0gYWRkcmVzc19kYXRhLT5pZ25vcmVfcmFu Z2VbaSArIDJdKSkgew0KICNpZmRlZiBERUJVRw0KIAkJCQlwcmludGsNCi0J CQkJICAgICgiaTJjLXByb2MubzogZm91bmQgaWdub3JlX3JhbmdlIHBhcmFt ZXRlciBmb3IgYWRhcHRlciAlZCwgIg0KKwkJCQkgICAgKEtFUk5fREVCVUcg ImkyYy1wcm9jLm86IGZvdW5kIGlnbm9yZV9yYW5nZSBwYXJhbWV0ZXIgZm9y IGFkYXB0ZXIgJWQsICINCiAJCQkJICAgICAiYWRkciAlMDR4XG4iLCBhZGFw dGVyX2lkLCBhZGRyKTsNCiAjZW5kaWYNCiAJCQkJZm91bmQgPSAxOw0KQEAg LTc1Myw3ICs3MzksNyBAQA0KIAkJCQlpZiAoYWRkciA9PSBhZGRyZXNzX2Rh dGEtPm5vcm1hbF9pc2FbaV0pIHsNCiAjaWZkZWYgREVCVUcNCiAJCQkJCXBy aW50aw0KLQkJCQkJICAgICgiaTJjLXByb2MubzogZm91bmQgbm9ybWFsIGlz YSBlbnRyeSBmb3IgYWRhcHRlciAlZCwgIg0KKwkJCQkJICAgIChLRVJOX0RF QlVHICJpMmMtcHJvYy5vOiBmb3VuZCBub3JtYWwgaXNhIGVudHJ5IGZvciBh ZGFwdGVyICVkLCAiDQogCQkJCQkgICAgICJhZGRyICUwNHhcbiIsIGFkYXB0 ZXJfaWQsDQogCQkJCQkgICAgIGFkZHIpOw0KICNlbmRpZg0KQEAgLTc3NSw3 ICs3NjEsNyBAQA0KIAkJCQkgICAgIDApKSB7DQogI2lmZGVmIERFQlVHDQog CQkJCQlwcmludGsNCi0JCQkJCSAgICAoImkyYy1wcm9jLm86IGZvdW5kIG5v cm1hbCBpc2FfcmFuZ2UgZW50cnkgZm9yIGFkYXB0ZXIgJWQsICINCisJCQkJ CSAgICAoS0VSTl9ERUJVRyAiaTJjLXByb2MubzogZm91bmQgbm9ybWFsIGlz YV9yYW5nZSBlbnRyeSBmb3IgYWRhcHRlciAlZCwgIg0KIAkJCQkJICAgICAi YWRkciAlMDR4IiwgYWRhcHRlcl9pZCwgYWRkcik7DQogI2VuZGlmDQogCQkJ CQlmb3VuZCA9IDE7DQpAQCAtNzg5LDcgKzc3NSw3IEBADQogCQkJCQlmb3Vu ZCA9IDE7DQogI2lmZGVmIERFQlVHDQogCQkJCQlwcmludGsNCi0JCQkJCSAg ICAoImkyYy1wcm9jLm86IGZvdW5kIG5vcm1hbCBpMmMgZW50cnkgZm9yIGFk YXB0ZXIgJWQsICINCisJCQkJCSAgICAoS0VSTl9ERUJVRyAiaTJjLXByb2Mu bzogZm91bmQgbm9ybWFsIGkyYyBlbnRyeSBmb3IgYWRhcHRlciAlZCwgIg0K IAkJCQkJICAgICAiYWRkciAlMDJ4IiwgYWRhcHRlcl9pZCwgYWRkcik7DQog I2VuZGlmDQogCQkJCX0NCkBAIC04MDUsNyArNzkxLDcgQEANCiAJCQkJew0K ICNpZmRlZiBERUJVRw0KIAkJCQkJcHJpbnRrDQotCQkJCQkgICAgKCJpMmMt cHJvYy5vOiBmb3VuZCBub3JtYWwgaTJjX3JhbmdlIGVudHJ5IGZvciBhZGFw dGVyICVkLCAiDQorCQkJCQkgICAgKEtFUk5fREVCVUcgImkyYy1wcm9jLm86 IGZvdW5kIG5vcm1hbCBpMmNfcmFuZ2UgZW50cnkgZm9yIGFkYXB0ZXIgJWQs ICINCiAJCQkJCSAgICAgImFkZHIgJTA0eFxuIiwgYWRhcHRlcl9pZCwgYWRk cik7DQogI2VuZGlmDQogCQkJCQlmb3VuZCA9IDE7DQpAQCAtODIyLDcgKzgw OCw3IEBADQogCQkJICAgICYmIChhZGRyID09IGFkZHJlc3NfZGF0YS0+cHJv YmVbaSArIDFdKSkgew0KICNpZmRlZiBERUJVRw0KIAkJCQlwcmludGsNCi0J CQkJICAgICgiaTJjLXByb2MubzogZm91bmQgcHJvYmUgcGFyYW1ldGVyIGZv ciBhZGFwdGVyICVkLCAiDQorCQkJCSAgICAoS0VSTl9ERUJVRyAiaTJjLXBy b2MubzogZm91bmQgcHJvYmUgcGFyYW1ldGVyIGZvciBhZGFwdGVyICVkLCAi DQogCQkJCSAgICAgImFkZHIgJTA0eFxuIiwgYWRhcHRlcl9pZCwgYWRkcik7 DQogI2VuZGlmDQogCQkJCWZvdW5kID0gMTsNCkBAIC04NDEsNyArODI3LDcg QEANCiAJCQkJZm91bmQgPSAxOw0KICNpZmRlZiBERUJVRw0KIAkJCQlwcmlu dGsNCi0JCQkJICAgICgiaTJjLXByb2MubzogZm91bmQgcHJvYmVfcmFuZ2Ug cGFyYW1ldGVyIGZvciBhZGFwdGVyICVkLCAiDQorCQkJCSAgICAoS0VSTl9E RUJVRyAiaTJjLXByb2MubzogZm91bmQgcHJvYmVfcmFuZ2UgcGFyYW1ldGVy IGZvciBhZGFwdGVyICVkLCAiDQogCQkJCSAgICAgImFkZHIgJTA0eFxuIiwg YWRhcHRlcl9pZCwgYWRkcik7DQogI2VuZGlmDQogCQkJfQ0KQEAgLTg2Miwx NyArODQ4LDE1IEBADQogDQogaW50IF9faW5pdCBzZW5zb3JzX2luaXQodm9p ZCkNCiB7DQotCXByaW50aygiaTJjLXByb2MubyB2ZXJzaW9uICVzICglcylc biIsIExNX1ZFUlNJT04sIExNX0RBVEUpOw0KKwlwcmludGsoS0VSTl9JTkZP ICJpMmMtcHJvYy5vIHZlcnNpb24gJXMgKCVzKVxuIiwgSTJDX1ZFUlNJT04s IEkyQ19EQVRFKTsNCiAJaTJjX2luaXRpYWxpemVkID0gMDsNCiAJaWYgKCEN CiAJICAgIChpMmNfcHJvY19oZWFkZXIgPQ0KLQkgICAgIHJlZ2lzdGVyX3N5 c2N0bF90YWJsZShpMmNfcHJvYywgMCkpKSByZXR1cm4gLUVOT01FTTsNCi0j aWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigyLDMs MSkpDQorCSAgICAgcmVnaXN0ZXJfc3lzY3RsX3RhYmxlKGkyY19wcm9jLCAw KSkpIHsNCisJCXByaW50ayhLRVJOX0VSUiAiaTJjLXByb2MubzogZXJyb3I6 IHN5c2N0bCBpbnRlcmZhY2Ugbm90IHN1cHBvcnRlZCBieSBrZXJuZWwhXG4i KTsNCisJCXJldHVybiAtRVBFUk07DQorCX0NCiAJaTJjX3Byb2NfaGVhZGVy LT5jdGxfdGFibGUtPmNoaWxkLT5kZS0+b3duZXIgPSBUSElTX01PRFVMRTsN Ci0jZWxzZQ0KLQlpMmNfcHJvY19oZWFkZXItPmN0bF90YWJsZS0+Y2hpbGQt PmRlLT5maWxsX2lub2RlID0NCi0JICAgICZpMmNfZmlsbF9pbm9kZTsNCi0j ZW5kaWYJCQkvKiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJT SU9OKDIsMywxKSkgKi8NCiAJaTJjX2luaXRpYWxpemVkKys7DQogCXJldHVy biAwOw0KIH0NCkBAIC05MDcsNCArODkxLDUgQEANCiB7DQogCXJldHVybiBp MmNfY2xlYW51cCgpOw0KIH0NCisNCiAjZW5kaWYJCQkJLyogTU9EVUxFICov DQotLS0gbGludXgvaW5jbHVkZS9saW51eC9pMmMtcHJvYy5oLm9yaWcJMjAw MS0xMC0xMSAxMTowNTo0Ny4wMDAwMDAwMDAgLTA0MDANCisrKyBsaW51eC9p bmNsdWRlL2xpbnV4L2kyYy1wcm9jLmgJMjAwMi0wNy0yMyAwMTo0NToyMS4w MDAwMDAwMDAgLTA0MDANCkBAIC0xLDYgKzEsNyBAQA0KIC8qDQotICAgIHNl bnNvcnMuaCAtIFBhcnQgb2YgbG1fc2Vuc29ycywgTGludXgga2VybmVsIG1v ZHVsZXMgZm9yIGhhcmR3YXJlDQotICAgICAgICAgICAgICAgIG1vbml0b3Jp bmcNCisgICAgaTJjLXByb2MuaCAtIFBhcnQgb2YgdGhlIGkyYyBwYWNrYWdl DQorICAgIHdhcyBvcmlnaW5hbGx5IHNlbnNvcnMuaCAtIFBhcnQgb2YgbG1f c2Vuc29ycywgTGludXgga2VybmVsIG1vZHVsZXMNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZm9yIGhhcmR3YXJlIG1vbml0b3JpbmcNCiAg ICAgQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5ICBGcm9kbyBMb29pamFhcmQg PGZyb2RvbEBkZHMubmw+DQogDQogICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5DQotLS0gbGludXgvaW5jbHVkZS9saW51eC9pMmMuaC5vcmlnCTIwMDEt MTAtMTEgMTE6MDU6NDcuMDAwMDAwMDAwIC0wNDAwDQorKysgbGludXgvaW5j bHVkZS9saW51eC9pMmMuaAkyMDAyLTA4LTEzIDAwOjIxOjA1LjAwMDAwMDAw MCAtMDQwMA0KQEAgLTIzLDEzICsyMywxMyBAQA0KIC8qIFdpdGggc29tZSBj aGFuZ2VzIGZyb20gS3n2c3RpIE3kbGtraSA8a21hbGtraUBjYy5odXQuZmk+ IGFuZA0KICAgIEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4gKi8N CiANCi0vKiAkSWQ6IGkyYy5oLHYgMS40NiAyMDAxLzA4LzMxIDAwOjA0OjA3 IHBoaWwgRXhwICQgKi8NCisvKiAkSWQ6IGkyYy5oLHYgMS41OSAyMDAyLzA3 LzE5IDIwOjUzOjQ1IHBoaWwgRXhwICQgKi8NCiANCiAjaWZuZGVmIEkyQ19I DQogI2RlZmluZSBJMkNfSA0KIA0KLSNkZWZpbmUgSTJDX0RBVEUgIjIwMDEw ODMwIg0KLSNkZWZpbmUgSTJDX1ZFUlNJT04gIjIuNi4xIg0KKyNkZWZpbmUg STJDX0RBVEUgIjIwMDIwNzE5Ig0KKyNkZWZpbmUgSTJDX1ZFUlNJT04gIjIu Ni40Ig0KIA0KICNpbmNsdWRlIDxsaW51eC9pMmMtaWQuaD4JLyogaWQgdmFs dWVzIG9mIGFkYXB0ZXJzIGV0LiBhbC4gCSovDQogI2luY2x1ZGUgPGxpbnV4 L3R5cGVzLmg+DQpAQCAtNDgsMTEgKzQ4LDggQEANCiAjZW5kaWYNCiANCiAj aW5jbHVkZSA8YXNtL3BhZ2UuaD4JCQkvKiBmb3IgMi4yLnh4IAkJCSovDQot I2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsMCwy NSkNCiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4NCi0jZWxzZQ0KICNpbmNs dWRlIDxhc20vc2VtYXBob3JlLmg+DQotI2VuZGlmDQogI2luY2x1ZGUgPGxp bnV4L2NvbmZpZy5oPg0KIA0KIC8qIC0tLSBHZW5lcmFsIG9wdGlvbnMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CSovDQpAQCAtMTIzLDYgKzEyMCw4IEBADQogZXh0ZXJuIHMzMiBpMmNfc21i dXNfd3JpdGVfYmxvY2tfZGF0YShzdHJ1Y3QgaTJjX2NsaWVudCAqIGNsaWVu dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4 IGNvbW1hbmQsIHU4IGxlbmd0aCwNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHU4ICp2YWx1ZXMpOw0KK2V4dGVybiBzMzIgaTJj X3NtYnVzX3JlYWRfaTJjX2Jsb2NrX2RhdGEoc3RydWN0IGkyY19jbGllbnQg KiBjbGllbnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1OCBjb21tYW5kLCB1OCAqdmFsdWVzKTsNCiBleHRlcm4gczMy IGkyY19zbWJ1c193cml0ZV9pMmNfYmxvY2tfZGF0YShzdHJ1Y3QgaTJjX2Ns aWVudCAqIGNsaWVudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1OCBjb21tYW5kLCB1OCBsZW5ndGgsDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTggKnZhbHVl cyk7DQpAQCAtMjI2LDEwICsyMjUsNiBAQA0KIAl1MzIgKCpmdW5jdGlvbmFs aXR5KSAoc3RydWN0IGkyY19hZGFwdGVyICopOw0KIH07DQogDQotI2lmIExJ TlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsMSwyOSkNCi1z dHJ1Y3QgcHJvY19kaXJfZW50cnk7DQotI2VuZGlmDQotDQogLyoNCiAgKiBp MmNfYWRhcHRlciBpcyB0aGUgc3RydWN0dXJlIHVzZWQgdG8gaWRlbnRpZnkg YSBwaHlzaWNhbCBpMmMgYnVzIGFsb25nDQogICogd2l0aCB0aGUgYWNjZXNz IGFsZ29yaXRobXMgbmVjZXNzYXJ5IHRvIGFjY2VzcyBpdC4NCkBAIC0yNjcs OSArMjYyLDYgQEANCiAjaWZkZWYgQ09ORklHX1BST0NfRlMgDQogCS8qIE5v IG5lZWQgdG8gc2V0IHRoaXMgd2hlbiB5b3UgaW5pdGlhbGl6ZSB0aGUgYWRh cHRlciAgICAgICAgICAqLw0KIAlpbnQgaW5vZGU7DQotI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsMSwyOSkNCi0Jc3RydWN0 IHByb2NfZGlyX2VudHJ5ICpwcm9jX2VudHJ5Ow0KLSNlbmRpZg0KICNlbmRp ZiAvKiBkZWYgQ09ORklHX1BST0NfRlMgKi8NCiB9Ow0KIA0KQEAgLTI4MSw2 ICsyNzMsOSBAQA0KICNkZWZpbmUgSTJDX0NMSUVOVF9BTExPV19VU0UJCTB4 MDEJLyogQ2xpZW50IGFsbG93cyBhY2Nlc3MgKi8NCiAjZGVmaW5lIEkyQ19D TElFTlRfQUxMT1dfTVVMVElQTEVfVVNFIAkweDAyICAJLyogQWxsb3cgbXVs dGlwbGUgYWNjZXNzLWxvY2tzICovDQogCQkJCQkJLyogb24gYW4gaTJjX2Ns aWVudCAqLw0KKyNkZWZpbmUgSTJDX0NMSUVOVF9QRUMgIDB4MDQJCQkvKiBV c2UgUGFja2V0IEVycm9yIENoZWNraW5nICovDQorI2RlZmluZSBJMkNfQ0xJ RU5UX1RFTgkweDEwCQkJLyogd2UgaGF2ZSBhIHRlbiBiaXQgY2hpcCBhZGRy ZXNzCSovDQorCQkJCQkJLyogTXVzdCBlcXVhbCBJMkNfTV9URU4gYmVsb3cg Ki8NCiANCiAvKiBpMmNfY2xpZW50X2FkZHJlc3NfZGF0YSBpcyB0aGUgc3Ry dWN0IGZvciBob2xkaW5nIGRlZmF1bHQgY2xpZW50DQogICogYWRkcmVzc2Vz IGZvciBhIGRyaXZlciBhbmQgZm9yIHRoZSBwYXJhbWV0ZXJzIHN1cHBsaWVk IG9uIHRoZQ0KQEAgLTM5Niw2ICszOTEsMTIgQEANCiAjZGVmaW5lIEkyQ19G VU5DX0kyQwkJCTB4MDAwMDAwMDENCiAjZGVmaW5lIEkyQ19GVU5DXzEwQklU X0FERFIJCTB4MDAwMDAwMDINCiAjZGVmaW5lIEkyQ19GVU5DX1BST1RPQ09M X01BTkdMSU5HCTB4MDAwMDAwMDQgLyogSTJDX01fe1JFVl9ESVJfQUREUixO T1NUQVJUfSAqLw0KKyNkZWZpbmUgSTJDX0ZVTkNfU01CVVNfSFdQRUNfQ0FM QwkweDAwMDAwMDA4IC8qIFNNQnVzIDIuMCAqLw0KKyNkZWZpbmUgSTJDX0ZV TkNfU01CVVNfUkVBRF9XT1JEX0RBVEFfUEVDICAweDAwMDAwODAwIC8qIFNN QnVzIDIuMCAqLyANCisjZGVmaW5lIEkyQ19GVU5DX1NNQlVTX1dSSVRFX1dP UkRfREFUQV9QRUMgMHgwMDAwMTAwMCAvKiBTTUJ1cyAyLjAgKi8gDQorI2Rl ZmluZSBJMkNfRlVOQ19TTUJVU19QUk9DX0NBTExfUEVDCTB4MDAwMDIwMDAg LyogU01CdXMgMi4wICovDQorI2RlZmluZSBJMkNfRlVOQ19TTUJVU19CTE9D S19QUk9DX0NBTExfUEVDIDB4MDAwMDQwMDAgLyogU01CdXMgMi4wICovDQor I2RlZmluZSBJMkNfRlVOQ19TTUJVU19CTE9DS19QUk9DX0NBTEwJMHgwMDAw ODAwMCAvKiBTTUJ1cyAyLjAgKi8NCiAjZGVmaW5lIEkyQ19GVU5DX1NNQlVT X1FVSUNLCQkweDAwMDEwMDAwIA0KICNkZWZpbmUgSTJDX0ZVTkNfU01CVVNf UkVBRF9CWVRFCTB4MDAwMjAwMDAgDQogI2RlZmluZSBJMkNfRlVOQ19TTUJV U19XUklURV9CWVRFCTB4MDAwNDAwMDAgDQpAQCAtNDA2LDggKzQwNywxMiBA QA0KICNkZWZpbmUgSTJDX0ZVTkNfU01CVVNfUFJPQ19DQUxMCTB4MDA4MDAw MDAgDQogI2RlZmluZSBJMkNfRlVOQ19TTUJVU19SRUFEX0JMT0NLX0RBVEEJ MHgwMTAwMDAwMCANCiAjZGVmaW5lIEkyQ19GVU5DX1NNQlVTX1dSSVRFX0JM T0NLX0RBVEEgMHgwMjAwMDAwMCANCi0jZGVmaW5lIEkyQ19GVU5DX1NNQlVT X1JFQURfSTJDX0JMT0NLCTB4MDQwMDAwMDAgLyogTmV3IEkyQy1saWtlIGJs b2NrICovDQotI2RlZmluZSBJMkNfRlVOQ19TTUJVU19XUklURV9JMkNfQkxP Q0sJMHgwODAwMDAwMCAvKiB0cmFuc2ZlciAqLw0KKyNkZWZpbmUgSTJDX0ZV TkNfU01CVVNfUkVBRF9JMkNfQkxPQ0sJMHgwNDAwMDAwMCAvKiBJMkMtbGlr ZSBibG9jayB4ZmVyICAqLw0KKyNkZWZpbmUgSTJDX0ZVTkNfU01CVVNfV1JJ VEVfSTJDX0JMT0NLCTB4MDgwMDAwMDAgLyogdy8gMS1ieXRlIHJlZy4gYWRk ci4gKi8NCisjZGVmaW5lIEkyQ19GVU5DX1NNQlVTX1JFQURfSTJDX0JMT0NL XzIJIDB4MTAwMDAwMDAgLyogSTJDLWxpa2UgYmxvY2sgeGZlciAgKi8NCisj ZGVmaW5lIEkyQ19GVU5DX1NNQlVTX1dSSVRFX0kyQ19CTE9DS18yIDB4MjAw MDAwMDAgLyogdy8gMi1ieXRlIHJlZy4gYWRkci4gKi8NCisjZGVmaW5lIEky Q19GVU5DX1NNQlVTX1JFQURfQkxPQ0tfREFUQV9QRUMgIDB4NDAwMDAwMDAg LyogU01CdXMgMi4wICovDQorI2RlZmluZSBJMkNfRlVOQ19TTUJVU19XUklU RV9CTE9DS19EQVRBX1BFQyAweDgwMDAwMDAwIC8qIFNNQnVzIDIuMCAqLw0K IA0KICNkZWZpbmUgSTJDX0ZVTkNfU01CVVNfQllURSBJMkNfRlVOQ19TTUJV U19SRUFEX0JZVEUgfCBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg IEkyQ19GVU5DX1NNQlVTX1dSSVRFX0JZVEUNCkBAIC00MTksMjEgKzQyNCw0 MCBAQA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJMkNf RlVOQ19TTUJVU19XUklURV9CTE9DS19EQVRBDQogI2RlZmluZSBJMkNfRlVO Q19TTUJVU19JMkNfQkxPQ0sgSTJDX0ZVTkNfU01CVVNfUkVBRF9JMkNfQkxP Q0sgfCBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEky Q19GVU5DX1NNQlVTX1dSSVRFX0kyQ19CTE9DSw0KKyNkZWZpbmUgSTJDX0ZV TkNfU01CVVNfSTJDX0JMT0NLXzIgSTJDX0ZVTkNfU01CVVNfUkVBRF9JMkNf QkxPQ0tfMiB8IFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEkyQ19GVU5DX1NNQlVTX1dSSVRFX0kyQ19CTE9DS18yDQorI2RlZmlu ZSBJMkNfRlVOQ19TTUJVU19CTE9DS19EQVRBX1BFQyBJMkNfRlVOQ19TTUJV U19SRUFEX0JMT0NLX0RBVEFfUEVDIHwgXA0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSTJDX0ZVTkNfU01CVVNfV1JJVEVfQkxP Q0tfREFUQV9QRUMNCisjZGVmaW5lIEkyQ19GVU5DX1NNQlVTX1dPUkRfREFU QV9QRUMgIEkyQ19GVU5DX1NNQlVTX1JFQURfV09SRF9EQVRBX1BFQyB8IFwN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19G VU5DX1NNQlVTX1dSSVRFX1dPUkRfREFUQV9QRUMNCisNCisjZGVmaW5lIEky Q19GVU5DX1NNQlVTX1JFQURfQllURV9QRUMJCUkyQ19GVU5DX1NNQlVTX1JF QURfQllURV9EQVRBDQorI2RlZmluZSBJMkNfRlVOQ19TTUJVU19XUklURV9C WVRFX1BFQwkJSTJDX0ZVTkNfU01CVVNfV1JJVEVfQllURV9EQVRBDQorI2Rl ZmluZSBJMkNfRlVOQ19TTUJVU19SRUFEX0JZVEVfREFUQV9QRUMJSTJDX0ZV TkNfU01CVVNfUkVBRF9XT1JEX0RBVEENCisjZGVmaW5lIEkyQ19GVU5DX1NN QlVTX1dSSVRFX0JZVEVfREFUQV9QRUMJSTJDX0ZVTkNfU01CVVNfV1JJVEVf V09SRF9EQVRBDQorI2RlZmluZSBJMkNfRlVOQ19TTUJVU19CWVRFX1BFQwkJ CUkyQ19GVU5DX1NNQlVTX0JZVEVfREFUQQ0KKyNkZWZpbmUgSTJDX0ZVTkNf U01CVVNfQllURV9EQVRBX1BFQwkJSTJDX0ZVTkNfU01CVVNfV09SRF9EQVRB DQogDQogI2RlZmluZSBJMkNfRlVOQ19TTUJVU19FTVVMIEkyQ19GVU5DX1NN QlVTX1FVSUNLIHwgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ MkNfRlVOQ19TTUJVU19CWVRFIHwgXA0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEgfCBcDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEkyQ19GVU5DX1NNQlVTX1dPUkRfREFU QSB8IFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX0ZVTkNf U01CVVNfUFJPQ19DQUxMIHwgXA0KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJMkNfRlVOQ19TTUJVU19XUklURV9CTE9DS19EQVRBDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEkyQ19GVU5DX1NNQlVTX1dSSVRFX0JM T0NLX0RBVEEgfCBcDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEky Q19GVU5DX1NNQlVTX1dSSVRFX0JMT0NLX0RBVEFfUEVDIHwgXA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJMkNfRlVOQ19TTUJVU19JMkNfQkxP Q0sNCiANCiAvKiANCiAgKiBEYXRhIGZvciBTTUJ1cyBNZXNzYWdlcyANCiAg Ki8NCisjZGVmaW5lIEkyQ19TTUJVU19CTE9DS19NQVgJMzIJLyogQXMgc3Bl Y2lmaWVkIGluIFNNQnVzIHN0YW5kYXJkICovCQ0KKyNkZWZpbmUgSTJDX1NN QlVTX0kyQ19CTE9DS19NQVgJMzIJLyogTm90IHNwZWNpZmllZCBidXQgd2Ug dXNlIHNhbWUgc3RydWN0dXJlICovDQogdW5pb24gaTJjX3NtYnVzX2RhdGEg ew0KIAlfX3U4IGJ5dGU7DQogCV9fdTE2IHdvcmQ7DQotCV9fdTggYmxvY2tb MzNdOyAvKiBibG9ja1swXSBpcyB1c2VkIGZvciBsZW5ndGggKi8NCisJX191 OCBibG9ja1tJMkNfU01CVVNfQkxPQ0tfTUFYICsgM107IC8qIGJsb2NrWzBd IGlzIHVzZWQgZm9yIGxlbmd0aCAqLw0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogb25lIG1vcmUgZm9yIHJlYWQgbGVuZ3RoIGluIGJsb2NrIHBy b2Nlc3MgY2FsbCAqLw0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIGFuZCBvbmUgbW9yZSBmb3IgUEVDICovDQog fTsNCiANCiAvKiBzbWJ1c19hY2Nlc3MgcmVhZCBvciB3cml0ZSBtYXJrZXJz ICovDQpAQCAtNDQ5LDYgKzQ3MywxMSBAQA0KICNkZWZpbmUgSTJDX1NNQlVT X1BST0NfQ0FMTAkgICAgNA0KICNkZWZpbmUgSTJDX1NNQlVTX0JMT0NLX0RB VEEJICAgIDUNCiAjZGVmaW5lIEkyQ19TTUJVU19JMkNfQkxPQ0tfREFUQSAg ICA2DQorI2RlZmluZSBJMkNfU01CVVNfQkxPQ0tfUFJPQ19DQUxMICAgNwkJ LyogU01CdXMgMi4wICovDQorI2RlZmluZSBJMkNfU01CVVNfQkxPQ0tfREFU QV9QRUMgICAgOAkJLyogU01CdXMgMi4wICovDQorI2RlZmluZSBJMkNfU01C VVNfUFJPQ19DQUxMX1BFQyAgICAgOQkJLyogU01CdXMgMi4wICovDQorI2Rl ZmluZSBJMkNfU01CVVNfQkxPQ0tfUFJPQ19DQUxMX1BFQyAgMTAJLyogU01C dXMgMi4wICovDQorI2RlZmluZSBJMkNfU01CVVNfV09SRF9EQVRBX1BFQwkg ICAxMQkJLyogU01CdXMgMi4wICovDQogDQogDQogLyogLS0tLS0gY29tbWFu ZHMgZm9yIHRoZSBpb2N0bCBsaWtlIGkyY19jb21tYW5kIGNhbGw6DQpAQCAt NDc0LDYgKzUwMyw3IEBADQogDQogI2RlZmluZSBJMkNfRlVOQ1MJMHgwNzA1 CS8qIEdldCB0aGUgYWRhcHRlciBmdW5jdGlvbmFsaXR5ICovDQogI2RlZmlu ZSBJMkNfUkRXUgkweDA3MDcJLyogQ29tYmluZWQgUi9XIHRyYW5zZmVyIChv bmUgc3RvcCBvbmx5KSovDQorI2RlZmluZSBJMkNfUEVDCQkweDA3MDgJLyog IT0gMCBmb3IgU01CdXMgUEVDICAgICAgICAgICAgICAgICAgICovDQogI2lm IDANCiAjZGVmaW5lIEkyQ19BQ0tfVEVTVAkweDA3MTAJLyogU2VlIGlmIGEg c2xhdmUgaXMgYXQgYSBzcGVjaWZpYyBhZGRyZXNzICovDQogI2VuZGlmDQo= --0-1417588945-1030599362=:16793-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/