From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maciej Purski Subject: [PATCH v2 1/2] drm/bridge: add Silicon Image SiI9234 driver Date: Thu, 31 Aug 2017 14:27:13 +0200 Message-ID: <1504182434-8201-2-git-send-email-m.purski@samsung.com> References: <1504182434-8201-1-git-send-email-m.purski@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1504182434-8201-1-git-send-email-m.purski@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org Cc: mark.rutland@arm.com, b.zolnierkie@samsung.com, krzk@kernel.org, Maciej Purski , robh+dt@kernel.org, Laurent.pinchart@ideasonboard.com List-Id: devicetree@vger.kernel.org U2lJOTIzNCB0cmFuc21pdHRlciBjb252ZXJ0cyBlVE1EUy9IRE1JIHNpZ25hbCB0byBNSEwgMS4w LgpJdCBpcyBjb250cm9sbGVkIHZpYSBJMkMgYnVzLiBJdHMgaW50ZXJhY3Rpb24gd2l0aCBvdGhl cgpkZXZpY2VzIGluIHZpZGVvIHBpcGVsaW5lIGlzIHBlcmZvcm1lZCBtYWlubHkgb24gSFcgbGV2 ZWwuClRoZSBvbmx5IGludGVyYWN0aW9uIGl0IGRvZXMgb24gZGV2aWNlIGRyaXZlciBsZXZlbCBp cwpmaWx0ZXJpbmctb3V0IHVuc3VwcG9ydGVkIHZpZGVvIG1vZGVzLCBpdCBleHBvc2VzIGRybV9i cmlkZ2UKaW50ZXJmYWNlIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24uCgpUaGlzIHBhdGNoIGlz IGJhc2VkIG9uIHRoZSBjb2RlIHJlZmFjdG9yZWQgYnkgVG9tYXN6IFN0YW5pc2xhd3NraQo8dC5z dGFuaXNsYXdzQHNhbXN1bmcuY29tPiwgd2hpY2ggd2FzIGluaXRpYWxseSBkZXZlbG9wZWQgYnk6 CkFkYW0gSGFtcHNvbiA8YWhhbXBzb25Ac3RhLnNhbXN1bmcuY29tPgpFcmlrIEdpbGxpbmcgPGtv bmtlcnNAYW5kcm9pZC5jb20+ClNoYW5rYXIgQmFuZGFsIDxzaGFua2FyLmJAc2Ftc3VuZy5jb20+ CkRoYXJhbSBLdW1hciA8ZGhhcmFtLmtyQHNhbXN1bmcuY29tPgoKU2lnbmVkLW9mZi1ieTogTWFj aWVqIFB1cnNraSA8bS5wdXJza2lAc2Ftc3VuZy5jb20+Ci0tLQpDaGFuZ2VzIGluIHYyOgotIHVz ZSBidWxrX3JlcXVsYXRvcnMgaW5zdGVhZCBvZiBzaW5nbGUgb25lCi0gc3Vic3RpdHV0ZSBzb21l IG9mIHRoZSBtYWdpYyB2YWx1ZXMgd2l0aCBtYWNyb3MKLSBpbXByb3ZlIGNvZGluZyBzdHlsZQot IGltcHJvdmVkIGVycm9yIGhhbmRsaW5nIGluIHNpaTkyMzRfcHJvYmUoKQotLS0KIC4uLi9kZXZp Y2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3NpaTkyMzQudHh0IHwgIDM0ICsKIGRyaXZl cnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgIHwgICA4ICsKIGRy aXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IGRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTIzNC5jICAgICAgICAgICAgICAgICAgIHwgOTkz ICsrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxMDM2IGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv ZGlzcGxheS9icmlkZ2Uvc2lpOTIzNC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vYnJpZGdlL3NpaTkyMzQuYwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNl dHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9zaWk5MjM0LnR4dCBiL0RvY3VtZW50YXRpb24v ZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9zaWk5MjM0LnR4dApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2U3NDEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9j dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3NpaTkyMzQudHh0 CkBAIC0wLDAgKzEsMzQgQEAKK1NpbGljb24gSW1hZ2UgU2lJOTIzNCBIRE1JL01ITCBicmlkZ2Ug YmluZGluZ3MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGUgOiAic2lsLHNp aTkyMzQiLgorCS0gcmVnIDogSTJDIGFkZHJlc3MgZm9yIFRQSSBpbnRlcmZhY2UsIHVzZSAweDM5 CisJLSBhdmNjMzMtc3VwcGx5IDogTUhML1VTQiBTd2l0Y2ggU3VwcGx5IFZvbHRhZ2UgKDMuM1Yp CisJLSBpb3ZjYzE4LXN1cHBseSA6IEkvTyBTdXBwbHkgVm9sdGFnZSAoMS44VikKKwktIGF2Y2Mx Mi1zdXBwbHkgOiBUTURTIEFuYWxvZyBTdXBwbHkgVm9sdGFnZSAoMS4yVikKKwktIGN2Y2MxMi1z dXBwbHkgOiBEaWdpdGFsIENvcmUgU3VwcGx5IFZvbHRhZ2UgKDEuMlYpCisJLSBpbnRlcnJ1cHRz LCBpbnRlcnJ1cHQtcGFyZW50OiBpbnRlcnJ1cHQgc3BlY2lmaWVyIG9mIElOVCBwaW4KKwktIHJl c2V0LWdwaW9zOiBncGlvIHNwZWNpZmllciBvZiBSRVNFVCBwaW4gKGFjdGl2ZSBsb3cpCisJLSB2 aWRlbyBpbnRlcmZhY2VzOiBEZXZpY2Ugbm9kZSBjYW4gY29udGFpbiB2aWRlbyBpbnRlcmZhY2Ug cG9ydAorCQkJICAgIG5vZGUgZm9yIEhETUkgZW5jb2RlciBhY2NvcmRpbmcgdG8gWzFdLgorCitb MV06IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS92aWRlby1pbnRlcmZh Y2VzLnR4dAorCitFeGFtcGxlOgorCXNpaTkyMzRAMzkgeworCQljb21wYXRpYmxlID0gInNpbCxz aWk5MjM0IjsKKwkJcmVnID0gPDB4Mzk+OworCQlhdmNjMzMtc3VwcGx5ID0gPCZ2Y2MzM21obD47 CisJCWlvdmNjMTgtc3VwcGx5ID0gPCZ2Y2MxOG1obD47CisJCWF2Y2MxMi1zdXBwbHkgPSA8JnZz aWwxMj47CisJCWN2Y2MxMi1zdXBwbHkgPSA8JnZzaWwxMj47CisJCXJlc2V0LWdwaW9zID0gPCZn cGYzIDQgR1BJT19BQ1RJVkVfTE9XPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BmMz47CisJ CWludGVycnVwdHMgPSA8NSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKworCQlwb3J0IHsKKwkJCW1o bF90b19oZG1pOiBlbmRwb2ludCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZoZG1pX3RvX21o bD47CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKaW5kZXggYWRmOWFlMC4u OWRiYTE2ZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZworKysg Yi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKQEAgLTg0LDYgKzg0LDE0IEBAIGNvbmZp ZyBEUk1fU0lJOTAyWAogCS0tLWhlbHAtLS0KIAkgIFNpbGljb24gSW1hZ2Ugc2lpOTAyeCBicmlk Z2UgY2hpcCBkcml2ZXIuCiAKK2NvbmZpZyBEUk1fU0lJOTIzNAorCXRyaXN0YXRlICJTaWxpY29u IEltYWdlIFNJSTkyMzQgSERNSS9NSEwgYnJpZGdlIgorCWRlcGVuZHMgb24gT0YKKwktLS1oZWxw LS0tCisJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHN1cHBvcnQgZm9yIHRoZSBNSEwgaW50ZXJm YWNlLgorCSAgSXQgaXMgYW4gSTJDIGRyaXZlciwgdGhhdCBkZXRlY3RzIGNvbm5lY3Rpb24gb2Yg TUhMIGJyaWRnZQorCSAgYW5kIHN0YXJ0cyBlbmNhcHN1bGF0aW9uIG9mIEhETUkgc2lnbmFsLgor CiBjb25maWcgRFJNX1RPU0hJQkFfVEMzNTg3NjcKIAl0cmlzdGF0ZSAiVG9zaGliYSBUQzM1ODc2 NyBlRFAgYnJpZGdlIgogCWRlcGVuZHMgb24gT0YKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCmluZGV4 IGRlZmNmMWUuLmUzZDVlYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFr ZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQpAQCAtNiw2ICs2LDcg QEAgb2JqLSQoQ09ORklHX0RSTV9OWFBfUFROMzQ2MCkgKz0gbnhwLXB0bjM0NjAubwogb2JqLSQo Q09ORklHX0RSTV9QQVJBREVfUFM4NjIyKSArPSBwYXJhZGUtcHM4NjIyLm8KIG9iai0kKENPTkZJ R19EUk1fU0lMX1NJSTg2MjApICs9IHNpbC1zaWk4NjIwLm8KIG9iai0kKENPTkZJR19EUk1fU0lJ OTAyWCkgKz0gc2lpOTAyeC5vCitvYmotJChDT05GSUdfRFJNX1NJSTkyMzQpICs9IHNpaTkyMzQu bwogb2JqLSQoQ09ORklHX0RSTV9UT1NISUJBX1RDMzU4NzY3KSArPSB0YzM1ODc2Ny5vCiBvYmot JChDT05GSUdfRFJNX0FOQUxPR0lYX0RQKSArPSBhbmFsb2dpeC8KIG9iai0kKENPTkZJR19EUk1f STJDX0FEVjc1MTEpICs9IGFkdjc1MTEvCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL3NpaTkyMzQuYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTIzNC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MGQ2OWEKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpaTkyMzQuYwpAQCAtMCwwICsxLDk5MyBAQAorLyoKKyAq IENvcHlyaWdodCAoQykgMjAxNyBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogQXV0aG9yczoK KyAqICAgIFRvbWFzeiBTdGFuaXNsYXdza2kgPHQuc3RhbmlzbGF3c0BzYW1zdW5nLmNvbT4KKyAq ICAgIE1hY2llaiBQdXJza2kgPG0ucHVyc2tpQHNhbXN1bmcuY29tPgorICoKKyAqIEJhc2VkIG9u IHNpaTkyMzQgZHJpdmVyIGNyZWF0ZWQgYnk6CisgKiAgICBBZGFtIEhhbXBzb24gPGFoYW1wc29u QHN0YS5zYW1zdW5nLmNvbT4KKyAqICAgIEVyaWsgR2lsbGluZyA8a29ua2Vyc0BhbmRyb2lkLmNv bT4KKyAqICAgIFNoYW5rYXIgQmFuZGFsIDxzaGFua2FyLmJAc2Ftc3VuZy5jb20+CisgKiAgICBE aGFyYW0gS3VtYXIgPGRoYXJhbS5rckBzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtCisgKgorICovCisjaW5jbHVkZSA8ZHJtL2JyaWRnZS9t aGwuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2VkaWQu aD4KKworI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZXJyLmg+Cisj aW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgor I2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2lycS5oPgorI2lu Y2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1 ZGUgPGxpbnV4L211dGV4Lmg+CisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+ CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorCisjZGVmaW5lIENCVVNfREVWQ0FQX09GRlNFVAkJ MHg4MAorCisjZGVmaW5lIFNJSTkyMzRfTUhMX1ZFUlNJT04JCTB4MTEKKyNkZWZpbmUgU0lJOTIz NF9TQ1JBVENIUEFEX1NJWkUJCTB4MTAKKyNkZWZpbmUgU0lJOTIzNF9JTlRfU1RBVF9TSVpFCQkw eDMzCisKKyNkZWZpbmUgQklUX1RNRFNfQ0NUUkxfVE1EU19PRQkJQklUKDQpCisjZGVmaW5lIE1I TF9IUERfT1VUX09WUl9FTgkJQklUKDQpCisjZGVmaW5lIE1ITF9IUERfT1VUX09WUl9WQUwJCUJJ VCg1KQorI2RlZmluZSBNSExfSU5JVF9USU1FT1VUCQkweDBDCisKKy8qIE1ITCBUeCByZWdpc3Rl cnMgYW5kIGJpdHMgKi8KKyNkZWZpbmUgTUhMX1RYX1NSU1QgICAgICAgICAgICAgICAgICAgICAw eDA1CisjZGVmaW5lIE1ITF9UWF9TWVNTVEFUX1JFRyAgICAgICAgICAgICAgMHgwOQorI2RlZmlu ZSBNSExfVFhfSU5UUjFfUkVHICAgICAgICAgICAgICAgIDB4NzEKKyNkZWZpbmUgTUhMX1RYX0lO VFI0X1JFRyAgICAgICAgICAgICAgICAweDc0CisjZGVmaW5lIE1ITF9UWF9JTlRSMV9FTkFCTEVf UkVHICAgICAgICAgMHg3NQorI2RlZmluZSBNSExfVFhfSU5UUjRfRU5BQkxFX1JFRyAgICAgICAg IDB4NzgKKyNkZWZpbmUgTUhMX1RYX0lOVF9DVFJMX1JFRyAgICAgICAgICAgICAweDc5CisjZGVm aW5lIE1ITF9UWF9UTURTX0NDVFJMICAgICAgICAgICAgICAgMHg4MAorI2RlZmluZSBNSExfVFhf RElTQ19DVFJMMV9SRUcgICAgICAgICAgIDB4OTAKKyNkZWZpbmUgTUhMX1RYX0RJU0NfQ1RSTDJf UkVHICAgICAgICAgICAweDkxCisjZGVmaW5lIE1ITF9UWF9ESVNDX0NUUkwzX1JFRyAgICAgICAg ICAgMHg5MgorI2RlZmluZSBNSExfVFhfRElTQ19DVFJMNF9SRUcJCTB4OTMKKyNkZWZpbmUgTUhM X1RYX0RJU0NfQ1RSTDVfUkVHICAgICAgICAgICAweDk0CisjZGVmaW5lIE1ITF9UWF9ESVNDX0NU Ukw2X1JFRyAgICAgICAgICAgMHg5NQorI2RlZmluZSBNSExfVFhfRElTQ19DVFJMN19SRUcgICAg ICAgICAgIDB4OTYKKyNkZWZpbmUgTUhMX1RYX0RJU0NfQ1RSTDhfUkVHCQkweDk3CisjZGVmaW5l IE1ITF9UWF9TVEFUMl9SRUcgICAgICAgICAgICAgICAgMHg5OQorI2RlZmluZSBNSExfVFhfTUhM VFhfQ1RMMV9SRUcgICAgICAgICAgIDB4QTAKKyNkZWZpbmUgTUhMX1RYX01ITFRYX0NUTDJfUkVH ICAgICAgICAgICAweEExCisjZGVmaW5lIE1ITF9UWF9NSExUWF9DVEw0X1JFRyAgICAgICAgICAg MHhBMworI2RlZmluZSBNSExfVFhfTUhMVFhfQ1RMNl9SRUcgICAgICAgICAgIDB4QTUKKyNkZWZp bmUgTUhMX1RYX01ITFRYX0NUTDdfUkVHICAgICAgICAgICAweEE2CisKKworI2RlZmluZSBSU0VO X1NUQVRVUwkJCUJJVCgyKQorI2RlZmluZSBIUERfQ0hBTkdFX0lOVAkJCUJJVCg2KQorI2RlZmlu ZSBSU0VOX0NIQU5HRV9JTlQJCQlCSVQoNSkKKyNkZWZpbmUgUkdORF9SRUFEWV9JTlQJCQlCSVQo NikKKyNkZWZpbmUgVkJVU19MT1dfSU5UCQkJQklUKDUpCisjZGVmaW5lIENCVVNfTEtPVVRfSU5U CQkJQklUKDQpCisjZGVmaW5lIE1ITF9ESVNDX0ZBSUxfSU5UCQlCSVQoMykKKyNkZWZpbmUgTUhM X0VTVF9JTlQJCQlCSVQoMikKKyNkZWZpbmUgSFBEX0NIQU5HRV9JTlRfTUFTSwkJQklUKDYpCisj ZGVmaW5lIFJTRU5fQ0hBTkdFX0lOVF9NQVNLCQlCSVQoNSkKKworI2RlZmluZSBSR05EX1JFQURZ X01BU0sJCQlCSVQoNikKKyNkZWZpbmUgQ0JVU19MS09VVF9NQVNLCQkJQklUKDQpCisjZGVmaW5l IE1ITF9ESVNDX0ZBSUxfTUFTSwkJQklUKDMpCisjZGVmaW5lIE1ITF9FU1RfTUFTSwkJCUJJVCgy KQorCisjZGVmaW5lIFNLSVBfR05ECQkJQklUKDYpCisKKyNkZWZpbmUgQVRUX1RIUkVTSF9TSElG VAkJMHgwNAorI2RlZmluZSBBVFRfVEhSRVNIX01BU0sJCQkoMHgwMyA8PCBBVFRfVEhSRVNIX1NI SUZUKQorI2RlZmluZSBVU0JfRF9PRU4JCQlCSVQoMykKKyNkZWZpbmUgREVHTElUQ0hfVElNRV9N QVNLCQkweDA3CisjZGVmaW5lIERFR0xJVENIX1RJTUVfMk1TCQkwCisjZGVmaW5lIERFR0xJVENI X1RJTUVfNE1TCQkxCisjZGVmaW5lIERFR0xJVENIX1RJTUVfOE1TCQkyCisjZGVmaW5lIERFR0xJ VENIX1RJTUVfMTZNUwkJMworI2RlZmluZSBERUdMSVRDSF9USU1FXzQwTVMJCTQKKyNkZWZpbmUg REVHTElUQ0hfVElNRV81ME1TCQk1CisjZGVmaW5lIERFR0xJVENIX1RJTUVfNjBNUwkJNgorI2Rl ZmluZSBERUdMSVRDSF9USU1FXzEyOE1TCQk3CisKKyNkZWZpbmUgVVNCX0RfT1ZSCQkJQklUKDcp CisjZGVmaW5lIFVTQl9JRF9PVlIJCQlCSVQoNikKKyNkZWZpbmUgRFZSRkxUX1NFTAkJCUJJVCg1 KQorI2RlZmluZSBCTE9DS19SR05EX0lOVAkJCUJJVCg0KQorI2RlZmluZSBTS0lQX0RFRwkJCUJJ VCgzKQorI2RlZmluZSBDSTJDQV9QT0wJCQlCSVQoMikKKyNkZWZpbmUgQ0kyQ0FfV0tVUAkJCUJJ VCgxKQorI2RlZmluZSBTSU5HTEVfQVRUCQkJQklUKDApCisKKyNkZWZpbmUgVVNCX0RfT0ROCQkJ QklUKDUpCisjZGVmaW5lIFZCVVNfQ0hFQ0sJCQlCSVQoMikKKyNkZWZpbmUgUkdORF9JTlRQX01B U0sJCQkweDAzCisjZGVmaW5lIFJHTkRfSU5UUF9PUEVOCQkJMAorI2RlZmluZSBSR05EX0lOVFBf MksJCQkxCisjZGVmaW5lIFJHTkRfSU5UUF8xSwkJCTIKKyNkZWZpbmUgUkdORF9JTlRQX1NIT1JU CQkJMworCisvKiBIRE1JIHJlZ2lzdGVycyAqLworI2RlZmluZSBIRE1JX1JYX1RNRFMwX0NDVFJM MV9SRUcJMHgxMAorI2RlZmluZSBIRE1JX1JYX1RNRFNfQ0xLX0VOX1JFRwkJMHgxMQorI2RlZmlu ZSBIRE1JX1JYX1RNRFNfQ0hfRU5fUkVHCQkweDEyCisjZGVmaW5lIEhETUlfUlhfUExMX0NBTFJF RlNFTF9SRUcJMHgxNworI2RlZmluZSBIRE1JX1JYX1BMTF9WQ09DQUxfUkVHCQkweDFBCisjZGVm aW5lIEhETUlfUlhfRVFfREFUQTBfUkVHCQkweDIyCisjZGVmaW5lIEhETUlfUlhfRVFfREFUQTFf UkVHCQkweDIzCisjZGVmaW5lIEhETUlfUlhfRVFfREFUQTJfUkVHCQkweDI0CisjZGVmaW5lIEhE TUlfUlhfRVFfREFUQTNfUkVHCQkweDI1CisjZGVmaW5lIEhETUlfUlhfRVFfREFUQTRfUkVHCQkw eDI2CisjZGVmaW5lIEhETUlfUlhfVE1EU19aT05FX0NUUkxfUkVHCTB4NEMKKyNkZWZpbmUgSERN SV9SWF9UTURTX01PREVfQ1RSTF9SRUcJMHg0RAorCisvKiBDQlVTIHJlZ2lzdGVycyAqLworI2Rl ZmluZSBDQlVTX0lOVF9TVEFUVVNfMV9SRUcJCTB4MDgKKyNkZWZpbmUgQ0JVU19JTlRSMV9FTkFC TEVfUkVHCQkweDA5CisjZGVmaW5lIENCVVNfTVNDX1JFUV9BQk9SVF9SRUFTT05fUkVHCTB4MEQK KyNkZWZpbmUgQ0JVU19JTlRfU1RBVFVTXzJfUkVHCQkweDFFCisjZGVmaW5lIENCVVNfSU5UUjJf RU5BQkxFX1JFRwkJMHgxRgorI2RlZmluZSBDQlVTX0xJTktfQ09OVFJPTF8yX1JFRwkJMHgzMQor I2RlZmluZSBDQlVTX01ITF9TVEFUVVNfUkVHXzAJCTB4QjAKKyNkZWZpbmUgQ0JVU19NSExfU1RB VFVTX1JFR18xCQkweEIxCisKKyNkZWZpbmUgQklUX0NCVVNfUkVTRVQJCQlCSVQoMykKKyNkZWZp bmUgU0VUX0hQRF9ET1dOU1RSRUFNCQlCSVQoNikKKworLyogVFBJIHJlZ2lzdGVycyAqLworI2Rl ZmluZSBUUElfRFBEX1JFRwkJCTB4M0QKKworLyogdGltZW91dHMgKi8KKyNkZWZpbmUgVF9TUkNf VkJVU19DQlVTX1RPX1NUQUJMRQkyMDAKKyNkZWZpbmUgVF9TUkNfQ0JVU19GTE9BVAkJMTAwCisj ZGVmaW5lIFRfU1JDX0NCVVNfREVHTElUQ0gJCTIKKyNkZWZpbmUgVF9TUkNfUlhTRU5TRV9ERUdM SVRDSAkJMTEwCisjZGVmaW5lIE1ITDFfTUFYX0NMSwkJCTc1MDAwCisKKy8qIEkyQyBhZGRyZXNz ZXMgKi8KKyNkZWZpbmUgSTJDX1RQSV9BRERSCQkJMHgzRAorI2RlZmluZSBJMkNfSERNSV9BRERS CQkJMHg0OQorI2RlZmluZSBJMkNfQ0JVU19BRERSCQkJMHg2NAorCitlbnVtIHNpaTkyMzRfc3Rh dGUgeworCVNUX09GRiwKKwlTVF9EMywKKwlTVF9SR05EX0lOSVQsCisJU1RfUkdORF8xSywKKwlT VF9SU0VOX0hJR0gsCisJU1RfTUhMX0VTVEFCTElTSEVELAorCVNUX0ZBSUxVUkVfRElTQ09WRVJZ LAorCVNUX0ZBSUxVUkUsCit9OworCitzdHJ1Y3Qgc2lpOTIzNCB7CisJc3RydWN0IGkyY19jbGll bnQgKmNsaWVudFs0XTsKKwlzdHJ1Y3QgZHJtX2JyaWRnZSBicmlkZ2U7CisJc3RydWN0IGRldmlj ZSAqZGV2OworCXN0cnVjdCBncGlvX2Rlc2MgKmdwaW9fcmVzZXQ7CisJaW50IGkyY19lcnJvcjsK KwlzdHJ1Y3QgcmVndWxhdG9yX2J1bGtfZGF0YSBzdXBwbGllc1s0XTsKKworCWVudW0gc2lpOTIz NF9zdGF0ZSBzdGF0ZTsKKwlzdHJ1Y3QgbXV0ZXggbG9jazsKK307CisKK2VudW0gc2lpOTIzNF9j bGllbnRfaWQgeworCUkyQ19NSEwsCisJSTJDX1RQSSwKKwlJMkNfSERNSSwKKwlJMkNfQ0JVUywK K307CisKK3N0YXRpYyBjaGFyICpzaWk5MjM0X2NsaWVudF9uYW1lW10gPSB7CisJW0kyQ19NSExd ID0gIk1ITCIsCisJW0kyQ19UUEldID0gIlRQSSIsCisJW0kyQ19IRE1JXSA9ICJIRE1JIiwKKwlb STJDX0NCVVNdID0gIkNCVVMiLAorfTsKKworc3RhdGljIGludCBzaWk5MjM0X3dyaXRlYihzdHJ1 Y3Qgc2lpOTIzNCAqY3R4LCBpbnQgaWQsIGludCBvZmZzZXQsCisJCQkgICAgaW50IHZhbHVlKQor eworCWludCByZXQ7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IGN0eC0+Y2xpZW50W2lk XTsKKworCWlmIChjdHgtPmkyY19lcnJvcikKKwkJcmV0dXJuIGN0eC0+aTJjX2Vycm9yOworCisJ cmV0ID0gaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIG9mZnNldCwgdmFsdWUpOwor CWlmIChyZXQgPCAwKQorCQlkZXZfZXJyKGN0eC0+ZGV2LCAid3JpdGViOiAlNHNbMHglMDJ4XSA8 LSAweCUwMnhcbiIsCisJCQlzaWk5MjM0X2NsaWVudF9uYW1lW2lkXSwgb2Zmc2V0LCB2YWx1ZSk7 CisJY3R4LT5pMmNfZXJyb3IgPSByZXQ7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50 IHNpaTkyMzRfd3JpdGVibShzdHJ1Y3Qgc2lpOTIzNCAqY3R4LCBpbnQgaWQsIGludCBvZmZzZXQs CisJCQkgICAgaW50IHZhbHVlLCBpbnQgbWFzaykKK3sKKwlpbnQgcmV0OworCXN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQgPSBjdHgtPmNsaWVudFtpZF07CisKKwlpZiAoY3R4LT5pMmNfZXJyb3Ip CisJCXJldHVybiBjdHgtPmkyY19lcnJvcjsKKworCXJldCA9IGkyY19zbWJ1c193cml0ZV9ieXRl KGNsaWVudCwgb2Zmc2V0KTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGN0eC0+ZGV2LCAi d3JpdGVibTogJTRzWzB4JTAyeF0gPC0gMHglMDJ4XG4iLAorCQkJc2lpOTIzNF9jbGllbnRfbmFt ZVtpZF0sIG9mZnNldCwgdmFsdWUpOworCQljdHgtPmkyY19lcnJvciA9IHJldDsKKwkJcmV0dXJu IHJldDsKKwl9CisKKwlyZXQgPSBpMmNfc21idXNfcmVhZF9ieXRlKGNsaWVudCk7CisJaWYgKHJl dCA8IDApIHsKKwkJZGV2X2VycihjdHgtPmRldiwgIndyaXRlYm06ICU0c1sweCUwMnhdIDwtIDB4 JTAyeFxuIiwKKwkJCXNpaTkyMzRfY2xpZW50X25hbWVbaWRdLCBvZmZzZXQsIHZhbHVlKTsKKwkJ Y3R4LT5pMmNfZXJyb3IgPSByZXQ7CisJCXJldHVybiByZXQ7CisJfQorCisJdmFsdWUgPSAodmFs dWUgJiBtYXNrKSB8IChyZXQgJiB+bWFzayk7CisKKwlyZXQgPSBpMmNfc21idXNfd3JpdGVfYnl0 ZV9kYXRhKGNsaWVudCwgb2Zmc2V0LCB2YWx1ZSk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2Vy cihjdHgtPmRldiwgIndyaXRlYm06ICU0c1sweCUwMnhdIDwtIDB4JTAyeFxuIiwKKwkJCXNpaTky MzRfY2xpZW50X25hbWVbaWRdLCBvZmZzZXQsIHZhbHVlKTsKKwkJY3R4LT5pMmNfZXJyb3IgPSBy ZXQ7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBzaWk5MjM0X3JlYWRiKHN0 cnVjdCBzaWk5MjM0ICpjdHgsIGludCBpZCwgaW50IG9mZnNldCkKK3sKKwlpbnQgcmV0OworCXN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBjdHgtPmNsaWVudFtpZF07CisKKwlpZiAoY3R4LT5p MmNfZXJyb3IpCisJCXJldHVybiBjdHgtPmkyY19lcnJvcjsKKworCXJldCA9IGkyY19zbWJ1c193 cml0ZV9ieXRlKGNsaWVudCwgb2Zmc2V0KTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGN0 eC0+ZGV2LCAicmVhZGI6ICU0c1sweCUwMnhdXG4iLAorCQkJc2lpOTIzNF9jbGllbnRfbmFtZVtp ZF0sIG9mZnNldCk7CisJCWN0eC0+aTJjX2Vycm9yID0gcmV0OworCQlyZXR1cm4gcmV0OworCX0K KworCXJldCA9IGkyY19zbWJ1c19yZWFkX2J5dGUoY2xpZW50KTsKKwlpZiAocmV0IDwgMCkgewor CQlkZXZfZXJyKGN0eC0+ZGV2LCAicmVhZGI6ICU0c1sweCUwMnhdXG4iLAorCQkJc2lpOTIzNF9j bGllbnRfbmFtZVtpZF0sIG9mZnNldCk7CisJCWN0eC0+aTJjX2Vycm9yID0gcmV0OworCX0KKwor CXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgc2lpOTIzNF9jbGVhcl9lcnJvcihzdHJ1Y3Qg c2lpOTIzNCAqY3R4KQoreworCWludCByZXQgPSBjdHgtPmkyY19lcnJvcjsKKworCWN0eC0+aTJj X2Vycm9yID0gMDsKKworCXJldHVybiByZXQ7Cit9CisKKyNkZWZpbmUgbWhsX3R4X3dyaXRlYihz aWk5MjM0LCBvZmZzZXQsIHZhbHVlKSBcCisJc2lpOTIzNF93cml0ZWIoc2lpOTIzNCwgSTJDX01I TCwgb2Zmc2V0LCB2YWx1ZSkKKyNkZWZpbmUgbWhsX3R4X3dyaXRlYm0oc2lpOTIzNCwgb2Zmc2V0 LCB2YWx1ZSwgbWFzaykgXAorCXNpaTkyMzRfd3JpdGVibShzaWk5MjM0LCBJMkNfTUhMLCBvZmZz ZXQsIHZhbHVlLCBtYXNrKQorI2RlZmluZSBtaGxfdHhfcmVhZGIoc2lpOTIzNCwgb2Zmc2V0KSBc CisJc2lpOTIzNF9yZWFkYihzaWk5MjM0LCBJMkNfTUhMLCBvZmZzZXQpCisjZGVmaW5lIGNidXNf d3JpdGViKHNpaTkyMzQsIG9mZnNldCwgdmFsdWUpIFwKKwlzaWk5MjM0X3dyaXRlYihzaWk5MjM0 LCBJMkNfQ0JVUywgb2Zmc2V0LCB2YWx1ZSkKKyNkZWZpbmUgY2J1c193cml0ZWJtKHNpaTkyMzQs IG9mZnNldCwgdmFsdWUsIG1hc2spIFwKKwlzaWk5MjM0X3dyaXRlYm0oc2lpOTIzNCwgSTJDX0NC VVMsIG9mZnNldCwgdmFsdWUsIG1hc2spCisjZGVmaW5lIGNidXNfcmVhZGIoc2lpOTIzNCwgb2Zm c2V0KSBcCisJc2lpOTIzNF9yZWFkYihzaWk5MjM0LCBJMkNfQ0JVUywgb2Zmc2V0KQorI2RlZmlu ZSBoZG1pX3dyaXRlYihzaWk5MjM0LCBvZmZzZXQsIHZhbHVlKSBcCisJc2lpOTIzNF93cml0ZWIo c2lpOTIzNCwgSTJDX0hETUksIG9mZnNldCwgdmFsdWUpCisjZGVmaW5lIGhkbWlfd3JpdGVibShz aWk5MjM0LCBvZmZzZXQsIHZhbHVlLCBtYXNrKSBcCisJc2lpOTIzNF93cml0ZWJtKHNpaTkyMzQs IEkyQ19IRE1JLCBvZmZzZXQsIHZhbHVlLCBtYXNrKQorI2RlZmluZSBoZG1pX3JlYWRiKHNpaTky MzQsIG9mZnNldCkgXAorCXNpaTkyMzRfcmVhZGIoc2lpOTIzNCwgSTJDX0hETUksIG9mZnNldCkK KyNkZWZpbmUgdHBpX3dyaXRlYihzaWk5MjM0LCBvZmZzZXQsIHZhbHVlKSBcCisJc2lpOTIzNF93 cml0ZWIoc2lpOTIzNCwgSTJDX1RQSSwgb2Zmc2V0LCB2YWx1ZSkKKyNkZWZpbmUgdHBpX3dyaXRl Ym0oc2lpOTIzNCwgb2Zmc2V0LCB2YWx1ZSwgbWFzaykgXAorCXNpaTkyMzRfd3JpdGVibShzaWk5 MjM0LCBJMkNfVFBJLCBvZmZzZXQsIHZhbHVlLCBtYXNrKQorI2RlZmluZSB0cGlfcmVhZGIoc2lp OTIzNCwgb2Zmc2V0KSBcCisJc2lpOTIzNF9yZWFkYihzaWk5MjM0LCBJMkNfVFBJLCBvZmZzZXQp CisKK3N0YXRpYyB1OCBzaWk5MjM0X3RtZHNfY29udHJvbChzdHJ1Y3Qgc2lpOTIzNCAqY3R4LCBi b29sIGVuYWJsZSkKK3sKKwltaGxfdHhfd3JpdGVibShjdHgsIE1ITF9UWF9UTURTX0NDVFJMLCBl bmFibGUgPyB+MCA6IDAsCisJCQkJCQlCSVRfVE1EU19DQ1RSTF9UTURTX09FKTsKKwltaGxfdHhf d3JpdGVibShjdHgsIE1ITF9UWF9JTlRfQ1RSTF9SRUcsIGVuYWJsZSA/IH4wIDogMCwKKwkJCQlN SExfSFBEX09VVF9PVlJfRU4gfCBNSExfSFBEX09VVF9PVlJfVkFMKTsKKwlyZXR1cm4gc2lpOTIz NF9jbGVhcl9lcnJvcihjdHgpOworfQorCitzdGF0aWMgaW50IHNpaTkyMzRfY2J1c19yZXNldChz dHJ1Y3Qgc2lpOTIzNCAqY3R4KQoreworCWludCBpOworCisJbWhsX3R4X3dyaXRlYm0oY3R4LCBN SExfVFhfU1JTVCwgfjAsIEJJVF9DQlVTX1JFU0VUKTsKKwltc2xlZXAoVF9TUkNfQ0JVU19ERUdM SVRDSCk7CisJbWhsX3R4X3dyaXRlYm0oY3R4LCBNSExfVFhfU1JTVCwgMCwgQklUX0NCVVNfUkVT RVQpOworCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQkvKiBFbmFibGUgV1JJVEVfU1RB VCBpbnRlcnJ1cHQgZm9yIHdyaXRlcyB0byBhbGwKKwkJICogNCBNU0MgU3RhdHVzIHJlZ2lzdGVy cy4KKwkJICovCisJCWNidXNfd3JpdGViKGN0eCwgMHhFMCArIGksIDB4RjIpOworCQkvKiBFbmFi bGUgU0VUX0lOVCBpbnRlcnJ1cHQgZm9yIHdyaXRlcyB0byBhbGwKKwkJICogNCBNU0MgSW50ZXJy dXB0IHJlZ2lzdGVycy4KKwkJICovCisJCWNidXNfd3JpdGViKGN0eCwgMHhGMCArIGksIDB4RjIp OworCX0KKworCXJldHVybiBzaWk5MjM0X2NsZWFyX2Vycm9yKGN0eCk7Cit9CisKKy8qIFJlcXVp cmUgdG8gY2hlayBtaGwgaW1mb3JtYXRpb24gb2Ygc2Ftc3VuZyBpbiBjYnVzX2luaXRfcmVnaXN0 ZXIgKi8KK3N0YXRpYyBpbnQgc2lpOTIzNF9jYnVzX2luaXQoc3RydWN0IHNpaTkyMzQgKmN0eCkK K3sKKwljYnVzX3dyaXRlYihjdHgsIDB4MDcsIDB4RjIpOworCWNidXNfd3JpdGViKGN0eCwgMHg0 MCwgMHgwMyk7CisJY2J1c193cml0ZWIoY3R4LCAweDQyLCAweDA2KTsKKwljYnVzX3dyaXRlYihj dHgsIDB4MzYsIDB4MEMpOworCWNidXNfd3JpdGViKGN0eCwgMHgzRCwgMHhGRCk7CisJY2J1c193 cml0ZWIoY3R4LCAweDFDLCAweDAxKTsKKwljYnVzX3dyaXRlYihjdHgsIDB4MUQsIDB4MEYpOwor CWNidXNfd3JpdGViKGN0eCwgMHg0NCwgMHgwMik7CisJLyogU2V0dXAgb3VyIGRldmNhcCAqLwor CWNidXNfd3JpdGViKGN0eCwgQ0JVU19ERVZDQVBfT0ZGU0VUICsgTUhMX0RDQVBfREVWX1NUQVRF LCAweDAwKTsKKwljYnVzX3dyaXRlYihjdHgsIENCVVNfREVWQ0FQX09GRlNFVCArIE1ITF9EQ0FQ X01ITF9WRVJTSU9OLAorCQkJCQkJCVNJSTkyMzRfTUhMX1ZFUlNJT04pOworCWNidXNfd3JpdGVi KGN0eCwgQ0JVU19ERVZDQVBfT0ZGU0VUICsgTUhMX0RDQVBfQ0FULAorCQkJCQkJCU1ITF9EQ0FQ X0NBVF9TT1VSQ0UpOworCWNidXNfd3JpdGViKGN0eCwgQ0JVU19ERVZDQVBfT0ZGU0VUICsgTUhM X0RDQVBfQURPUFRFUl9JRF9ILCAweDAxKTsKKwljYnVzX3dyaXRlYihjdHgsIENCVVNfREVWQ0FQ X09GRlNFVCArIE1ITF9EQ0FQX0FET1BURVJfSURfTCwgMHg0MSk7CisKKwljYnVzX3dyaXRlYihj dHgsIENCVVNfREVWQ0FQX09GRlNFVCArIE1ITF9EQ0FQX1ZJRF9MSU5LX01PREUsCisJCQlNSExf RENBUF9WSURfTElOS19SR0I0NDQgfCBNSExfRENBUF9WSURfTElOS19ZQ0JDUjQ0NCk7CisJY2J1 c193cml0ZWIoY3R4LCBDQlVTX0RFVkNBUF9PRkZTRVQgKyBNSExfRENBUF9WSURFT19UWVBFLAor CQkJCQkJCU1ITF9EQ0FQX1ZUX0dSQVBISUNTKTsKKwljYnVzX3dyaXRlYihjdHgsIENCVVNfREVW Q0FQX09GRlNFVCArIE1ITF9EQ0FQX0xPR19ERVZfTUFQLAorCQkJCQkJCU1ITF9EQ0FQX0xEX0dV SSk7CisJY2J1c193cml0ZWIoY3R4LCBDQlVTX0RFVkNBUF9PRkZTRVQgKyBNSExfRENBUF9CQU5E V0lEVEgsIDB4MEYpOworCWNidXNfd3JpdGViKGN0eCwgQ0JVU19ERVZDQVBfT0ZGU0VUICsgTUhM X0RDQVBfRkVBVFVSRV9GTEFHLAorCQkgICAgTUhMX0RDQVBfRkVBVFVSRV9SQ1BfU1VQUE9SVCB8 IE1ITF9EQ0FQX0ZFQVRVUkVfUkFQX1NVUFBPUlQKKwkJICAgfCBNSExfRENBUF9GRUFUVVJFX1NQ X1NVUFBPUlQpOworCWNidXNfd3JpdGViKGN0eCwgQ0JVU19ERVZDQVBfT0ZGU0VUICsgTUhMX0RD QVBfREVWSUNFX0lEX0gsIDB4MCk7CisJY2J1c193cml0ZWIoY3R4LCBDQlVTX0RFVkNBUF9PRkZT RVQgKyBNSExfRENBUF9ERVZJQ0VfSURfTCwgMHgwKTsKKwljYnVzX3dyaXRlYihjdHgsIENCVVNf REVWQ0FQX09GRlNFVCArIE1ITF9EQ0FQX1NDUkFUQ0hQQURfU0laRSwKKwkJCQkJCVNJSTkyMzRf U0NSQVRDSFBBRF9TSVpFKTsKKwljYnVzX3dyaXRlYihjdHgsIENCVVNfREVWQ0FQX09GRlNFVCAr IE1ITF9EQ0FQX0lOVF9TVEFUX1NJWkUsCisJCQkJCQlTSUk5MjM0X0lOVF9TVEFUX1NJWkUpOwor CWNidXNfd3JpdGViKGN0eCwgQ0JVU19ERVZDQVBfT0ZGU0VUICsgTUhMX0RDQVBfUkVTRVJWRUQs IDApOworCWNidXNfd3JpdGVibShjdHgsIDB4MzEsIDB4MEMsIDB4MEMpOworCWNidXNfd3JpdGVi KGN0eCwgMHgzMCwgMHgwMSk7CisJY2J1c193cml0ZWJtKGN0eCwgMHgzQywgMHgzMCwgMHgzOCk7 CisJY2J1c193cml0ZWJtKGN0eCwgMHgyMiwgMHgwRCwgMHgwRik7CisJY2J1c193cml0ZWJtKGN0 eCwgMHgyRSwgMHgxNSwgMHgxNSk7CisJY2J1c193cml0ZWIoY3R4LCBDQlVTX0lOVFIxX0VOQUJM RV9SRUcsIDApOworCWNidXNfd3JpdGViKGN0eCwgQ0JVU19JTlRSMl9FTkFCTEVfUkVHLCAwKTsK KworCXJldHVybiBzaWk5MjM0X2NsZWFyX2Vycm9yKGN0eCk7Cit9CisKK3N0YXRpYyB2b2lkIGZv cmNlX3VzYl9pZF9zd2l0Y2hfb3BlbihzdHJ1Y3Qgc2lpOTIzNCAqY3R4KQoreworCS8qIERpc2Fi bGUgQ0JVUyBkaXNjb3ZlcnkgKi8KKwltaGxfdHhfd3JpdGVibShjdHgsIE1ITF9UWF9ESVNDX0NU UkwxX1JFRywgMCwgMHgwMSk7CisJLyogRm9yY2UgVVNCIElEIHN3aXRjaCB0byBvcGVuICovCisJ bWhsX3R4X3dyaXRlYm0oY3R4LCBNSExfVFhfRElTQ19DVFJMNl9SRUcsIH4wLCBVU0JfSURfT1ZS KTsKKwltaGxfdHhfd3JpdGVibShjdHgsIE1ITF9UWF9ESVNDX0NUUkwzX1JFRywgfjAsIDB4ODYp OworCS8qIEZvcmNlIHVwc3RyZWFtIEhQRCB0byAwIHdoZW4gbm90IGluIE1ITCBtb2RlLiAqLwor CW1obF90eF93cml0ZWJtKGN0eCwgTUhMX1RYX0lOVF9DVFJMX1JFRywgMCwgMHgzMCk7Cit9CisK K3N0YXRpYyB2b2lkIHJlbGVhc2VfdXNiX2lkX3N3aXRjaF9vcGVuKHN0cnVjdCBzaWk5MjM0ICpj dHgpCit7CisJbXNsZWVwKFRfU1JDX0NCVVNfRkxPQVQpOworCS8qIENsZWFyIFVTQiBJRCBzd2l0 Y2ggdG8gb3BlbiAqLworCW1obF90eF93cml0ZWJtKGN0eCwgTUhMX1RYX0RJU0NfQ1RSTDZfUkVH LCAwLCBVU0JfSURfT1ZSKTsKKwkvKiBFbmFibGUgQ0JVUyBkaXNjb3ZlcnkgKi8KKwltaGxfdHhf d3JpdGVibShjdHgsIE1ITF9UWF9ESVNDX0NUUkwxX1JFRywgfjAsIDB4MDEpOworfQorCitzdGF0 aWMgaW50IHNpaTkyMzRfcG93ZXJfaW5pdChzdHJ1Y3Qgc2lpOTIzNCAqY3R4KQoreworCS8qIEZv cmNlIHRoZSBTaUk5MjM0IGludG8gdGhlIEQwIHN0YXRlLiAqLworCXRwaV93cml0ZWIoY3R4LCBU UElfRFBEX1JFRywgMHgzRik7CisJLyogRW5hYmxlIFR4UExMIENsb2NrICovCisJaGRtaV93cml0 ZWIoY3R4LCBIRE1JX1JYX1RNRFNfQ0xLX0VOX1JFRywgMHgwMSk7CisJLyogRW5hYmxlIFR4IENs b2NrIFBhdGggJiBFcXVhbGl6ZXIgKi8KKwloZG1pX3dyaXRlYihjdHgsIEhETUlfUlhfVE1EU19D SF9FTl9SRUcsIDB4MTUpOworCS8qIFBvd2VyIFVwIFRNRFMgKi8KKwltaGxfdHhfd3JpdGViKGN0 eCwgMHgwOCwgMHgzNSk7CisJcmV0dXJuIHNpaTkyMzRfY2xlYXJfZXJyb3IoY3R4KTsKK30KKwor c3RhdGljIGludCBzaWk5MjM0X2hkbWlfaW5pdChzdHJ1Y3Qgc2lpOTIzNCAqY3R4KQoreworCWhk bWlfd3JpdGViKGN0eCwgSERNSV9SWF9UTURTMF9DQ1RSTDFfUkVHLCAweEMxKTsKKwloZG1pX3dy aXRlYihjdHgsIEhETUlfUlhfUExMX0NBTFJFRlNFTF9SRUcsIDB4MDMpOworCWhkbWlfd3JpdGVi KGN0eCwgSERNSV9SWF9QTExfVkNPQ0FMX1JFRywgMHgyMCk7CisJaGRtaV93cml0ZWIoY3R4LCBI RE1JX1JYX0VRX0RBVEEwX1JFRywgMHg4QSk7CisJaGRtaV93cml0ZWIoY3R4LCBIRE1JX1JYX0VR X0RBVEExX1JFRywgMHg2QSk7CisJaGRtaV93cml0ZWIoY3R4LCBIRE1JX1JYX0VRX0RBVEEyX1JF RywgMHhBQSk7CisJaGRtaV93cml0ZWIoY3R4LCBIRE1JX1JYX0VRX0RBVEEzX1JFRywgMHhDQSk7 CisJaGRtaV93cml0ZWIoY3R4LCBIRE1JX1JYX0VRX0RBVEE0X1JFRywgMHhFQSk7CisJaGRtaV93 cml0ZWIoY3R4LCBIRE1JX1JYX1RNRFNfWk9ORV9DVFJMX1JFRywgMHhBMCk7CisJaGRtaV93cml0 ZWIoY3R4LCBIRE1JX1JYX1RNRFNfTU9ERV9DVFJMX1JFRywgMHgwMCk7CisJbWhsX3R4X3dyaXRl YihjdHgsIE1ITF9UWF9UTURTX0NDVFJMLCAweDM0KTsKKwloZG1pX3dyaXRlYihjdHgsIDB4NDUs IDB4NDQpOworCWhkbWlfd3JpdGViKGN0eCwgMHgzMSwgMHgwQSk7CisJaGRtaV93cml0ZWIoY3R4 LCBIRE1JX1JYX1RNRFMwX0NDVFJMMV9SRUcsIDB4QzEpOworCisJcmV0dXJuIHNpaTkyMzRfY2xl YXJfZXJyb3IoY3R4KTsKK30KKworc3RhdGljIGludCBzaWk5MjM0X21obF90eF9jdGxfaW50KHN0 cnVjdCBzaWk5MjM0ICpjdHgpCit7CisJbWhsX3R4X3dyaXRlYihjdHgsIE1ITF9UWF9NSExUWF9D VEwxX1JFRywgMHhEMCk7CisJbWhsX3R4X3dyaXRlYihjdHgsIE1ITF9UWF9NSExUWF9DVEwyX1JF RywgMHhGQyk7CisJbWhsX3R4X3dyaXRlYihjdHgsIE1ITF9UWF9NSExUWF9DVEw0X1JFRywgMHhF Qik7CisJbWhsX3R4X3dyaXRlYihjdHgsIE1ITF9UWF9NSExUWF9DVEw3X1JFRywgMHgwQyk7CisK KwlyZXR1cm4gc2lpOTIzNF9jbGVhcl9lcnJvcihjdHgpOworfQorCitzdGF0aWMgaW50IHNpaTky MzRfcmVzZXQoc3RydWN0IHNpaTkyMzQgKmN0eCkKK3sKKwlpbnQgcmV0OworCisJc2lpOTIzNF9j bGVhcl9lcnJvcihjdHgpOworCisJcmV0ID0gc2lpOTIzNF9wb3dlcl9pbml0KGN0eCk7CisJaWYg KHJldCA8IDApCisJCXJldHVybiByZXQ7CisJcmV0ID0gc2lpOTIzNF9jYnVzX3Jlc2V0KGN0eCk7 CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisJcmV0ID0gc2lpOTIzNF9oZG1pX2luaXQo Y3R4KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKwlyZXQgPSBzaWk5MjM0X21obF90 eF9jdGxfaW50KGN0eCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwkvKiBFbmFi bGUgSERDUCBDb21wbGlhbmNlIHNhZmV0eSAqLworCW1obF90eF93cml0ZWIoY3R4LCAweDJCLCAw eDAxKTsKKwkvKiBDQlVTIGRpc2NvdmVyeSBjeWNsZSB0aW1lIGZvciBlYWNoIGRyaXZlIGFuZCBm bG9hdCA9IDE1MHVzICovCisJbWhsX3R4X3dyaXRlYm0oY3R4LCBNSExfVFhfRElTQ19DVFJMMV9S RUcsIDB4MDQsIDB4MDYpOworCS8qIENsZWFyIGJpdCA2IChyZWdfc2tpcF9yZ25kKSAqLworCW1o bF90eF93cml0ZWIoY3R4LCBNSExfVFhfRElTQ19DVFJMMl9SRUcsICgxIDw8IDcpIC8qIFJlc2Vy dmVkICovCisJCXwgMiA8PCBBVFRfVEhSRVNIX1NISUZUIHwgREVHTElUQ0hfVElNRV81ME1TKTsK KwkvKiBDaGFuZ2VkIGZyb20gNjYgdG8gNjUgZm9yIDk0WzE6MF0gPSAwMSA9IDVrIHJlZ19jYnVz bWhsX3B1cF9zZWwKKwkgKiAxLjhWIENCVVMgVlRIICYgR05EIHRocmVzaG9sZAorCSAqIHRvIG1l ZXQgQ1RTIDMuMy43LjIgc3BlYworCSAqLworCW1obF90eF93cml0ZWIoY3R4LCBNSExfVFhfRElT Q19DVFJMNV9SRUcsIDB4NzcpOworCWNidXNfd3JpdGVibShjdHgsIENCVVNfTElOS19DT05UUk9M XzJfUkVHLCB+MCwgTUhMX0lOSVRfVElNRU9VVCk7CisJbWhsX3R4X3dyaXRlYihjdHgsIE1ITF9U WF9NSExUWF9DVEw2X1JFRywgMHhBMCk7CisJLyogUkdORCAmIHNpbmdsZSBkaXNjb3ZlcnkgYXR0 ZW1wdCAoUkdORCBibG9ja2luZykgKi8KKwltaGxfdHhfd3JpdGViKGN0eCwgTUhMX1RYX0RJU0Nf Q1RSTDZfUkVHLCBCTE9DS19SR05EX0lOVCB8CisJCQkgICAgICAgRFZSRkxUX1NFTCB8IFNJTkdM RV9BVFQpOworCS8qIFVzZSBWQlVTIHBhdGggb2YgZGlzY292ZXJ5IHN0YXRlIG1hY2hpbmUgKi8K KwltaGxfdHhfd3JpdGViKGN0eCwgTUhMX1RYX0RJU0NfQ1RSTDhfUkVHLCAwKTsKKwkvKiAweDky WzNdIHNldHMgdGhlIENCVVMgLyBJRCBzd2l0Y2ggKi8KKwltaGxfdHhfd3JpdGVibShjdHgsIE1I TF9UWF9ESVNDX0NUUkw2X1JFRywgfjAsIFVTQl9JRF9PVlIpOworCS8qIFRvIGFsbG93IFJHTkQg ZW5naW5lIHRvIG9wZXJhdGUgY29ycmVjdGx5LgorCSAqIFdoZW4gbW92aW5nIHRoZSBjaGlwIGZy b20gRDIgdG8gRDAgKHBvd2VyIHVwLCBpbml0IHJlZ3MpCisJICogdGhlIHZhbHVlcyBzaG91bGQg YmUKKwkgKiA5NFsxOjBdID0gMDEgIHJlZ19jYnVzbWhsX3B1cF9zZWxbMTowXSBzaG91bGQgYmUg c2V0IGZvciA1aworCSAqIDkzWzc6Nl0gPSAxMCAgcmVnX2NidXNkaXNjX3B1cF9zZWxbMTowXSBz aG91bGQgYmUKKwkgKiBzZXQgZm9yIDEwayAoZGVmYXVsdCkKKwkgKiA5M1s1OjRdID0gMDAgIHJl Z19jYnVzaWRsZV9wdXBfc2VsWzE6MF0gPSBvcGVuIChkZWZhdWx0KQorCSAqLworCW1obF90eF93 cml0ZWJtKGN0eCwgTUhMX1RYX0RJU0NfQ1RSTDNfUkVHLCB+MCwgMHg4Nik7CisJLyogQ2hhbmdl IGZyb20gQ0MgdG8gOEMgdG8gbWF0Y2ggNUsKKwkgKiB0byBtZWV0IENUUyAzLjMuNzIgc3BlYwor CSAqLworCW1obF90eF93cml0ZWJtKGN0eCwgTUhMX1RYX0RJU0NfQ1RSTDRfUkVHLCB+MCwgMHg4 Qyk7CisJLyogQ29uZmlndXJlIHRoZSBpbnRlcnJ1cHQgYXMgYWN0aXZlIGhpZ2ggKi8KKwltaGxf dHhfd3JpdGVibShjdHgsIE1ITF9UWF9JTlRfQ1RSTF9SRUcsIDAsIDB4MDYpOworCisJbXNsZWVw KDI1KTsKKworCS8qIFJlbGVhc2UgdXNiX2lkIHN3aXRjaCAqLworCW1obF90eF93cml0ZWJtKGN0 eCwgTUhMX1RYX0RJU0NfQ1RSTDZfUkVHLCAwLCAgVVNCX0lEX09WUik7CisJbWhsX3R4X3dyaXRl YihjdHgsIE1ITF9UWF9ESVNDX0NUUkwxX1JFRywgMHgyNyk7CisKKwlyZXQgPSBzaWk5MjM0X2Ns ZWFyX2Vycm9yKGN0eCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisJcmV0ID0gc2lp OTIzNF9jYnVzX2luaXQoY3R4KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCS8q IEVuYWJsZSBBdXRvIHNvZnQgcmVzZXQgb24gU0NEVCA9IDAgKi8KKwltaGxfdHhfd3JpdGViKGN0 eCwgMHgwNSwgMHgwNCk7CisJLyogSERNSSBUcmFuc2NvZGUgbW9kZSBlbmFibGUgKi8KKwltaGxf dHhfd3JpdGViKGN0eCwgMHgwRCwgMHgxQyk7CisJbWhsX3R4X3dyaXRlYihjdHgsIE1ITF9UWF9J TlRSNF9FTkFCTEVfUkVHLAorCQkJICAgICAgIFJHTkRfUkVBRFlfTUFTSyB8IENCVVNfTEtPVVRf TUFTSyB8CisJCQkgICAgICAgTUhMX0RJU0NfRkFJTF9NQVNLIHwgTUhMX0VTVF9NQVNLKTsKKwlt aGxfdHhfd3JpdGViKGN0eCwgTUhMX1RYX0lOVFIxX0VOQUJMRV9SRUcsIDB4NjApOworCisJLyog VGhpcyBwb2ludCBpcyB2ZXJ5IGltcG9ydGFudCBiZWZvcmUgbWVhc3VyZSBSR05EIGltcGVkYW5j ZSAqLworCWZvcmNlX3VzYl9pZF9zd2l0Y2hfb3BlbihjdHgpOworCW1obF90eF93cml0ZWJtKGN0 eCwgTUhMX1RYX0RJU0NfQ1RSTDRfUkVHLCAwLCAweEYwKTsKKwltaGxfdHhfd3JpdGVibShjdHgs IE1ITF9UWF9ESVNDX0NUUkw1X1JFRywgMCwgMHgwMyk7CisJcmVsZWFzZV91c2JfaWRfc3dpdGNo X29wZW4oY3R4KTsKKworCS8qIEZvcmNlIHVwc3RyZWFtIEhQRCB0byAwIHdoZW4gbm90IGluIE1I TCBtb2RlICovCisJbWhsX3R4X3dyaXRlYm0oY3R4LCBNSExfVFhfSU5UX0NUUkxfUkVHLCAwLCAx IDw8IDUpOworCW1obF90eF93cml0ZWJtKGN0eCwgTUhMX1RYX0lOVF9DVFJMX1JFRywgfjAsIDEg PDwgNCk7CisKKwlyZXR1cm4gc2lpOTIzNF9jbGVhcl9lcnJvcihjdHgpOworfQorCitzdGF0aWMg aW50IHNpaTkyMzRfZ290b19kMyhzdHJ1Y3Qgc2lpOTIzNCAqY3R4KQoreworCWludCByZXQ7CisK KwlkZXZfZGJnKGN0eC0+ZGV2LCAic2lpOTIzNDogZGV0ZWN0aW9uIHN0YXJ0ZWQgZDNcbiIpOwor CisJcmV0ID0gc2lpOTIzNF9yZXNldChjdHgpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGV4aXQ7 CisKKwloZG1pX3dyaXRlYihjdHgsIDB4MDEsIDB4MDMpOworCXRwaV93cml0ZWJtKGN0eCwgVFBJ X0RQRF9SRUcsIDAsIDEpOworCS8qIEkyQyBhYm92ZSBpcyBleHBlY3RlZCB0byBmYWlsIGJlY2F1 c2UgcG93ZXIgZ29lcyBkb3duICovCisJc2lpOTIzNF9jbGVhcl9lcnJvcihjdHgpOworCisJY3R4 LT5zdGF0ZSA9IFNUX0QzOworCisJcmV0dXJuIDA7CisgZXhpdDoKKwlkZXZfZXJyKGN0eC0+ZGV2 LCAiJXMgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CisJcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50 IHNpaTkyMzRfaHdfb24oc3RydWN0IHNpaTkyMzQgKmN0eCkKK3sKKwlyZXR1cm4gcmVndWxhdG9y X2J1bGtfZW5hYmxlKEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyksIGN0eC0+c3VwcGxpZXMpOwor fQorCitzdGF0aWMgdm9pZCBzaWk5MjM0X2h3X29mZihzdHJ1Y3Qgc2lpOTIzNCAqY3R4KQorewor CWdwaW9kX3NldF92YWx1ZShjdHgtPmdwaW9fcmVzZXQsIDEpOworCXVzbGVlcF9yYW5nZSgxMDAw MCwgMjAwMDApOworCXJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoQVJSQVlfU0laRShjdHgtPnN1cHBs aWVzKSwgY3R4LT5zdXBwbGllcyk7Cit9CisKK3N0YXRpYyB2b2lkIHNpaTkyMzRfaHdfcmVzZXQo c3RydWN0IHNpaTkyMzQgKmN0eCkKK3sKKwlncGlvZF9zZXRfdmFsdWUoY3R4LT5ncGlvX3Jlc2V0 LCAxKTsKKwl1c2xlZXBfcmFuZ2UoMTAwMDAsIDIwMDAwKTsKKwlncGlvZF9zZXRfdmFsdWUoY3R4 LT5ncGlvX3Jlc2V0LCAwKTsKK30KKworc3RhdGljIHZvaWQgc2lpOTIzNF9jYWJsZV9pbihzdHJ1 Y3Qgc2lpOTIzNCAqY3R4KQoreworCWludCByZXQ7CisKKwltdXRleF9sb2NrKCZjdHgtPmxvY2sp OworCWlmIChjdHgtPnN0YXRlICE9IFNUX09GRikKKwkJZ290byB1bmxvY2s7CisJcmV0ID0gc2lp OTIzNF9od19vbihjdHgpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIHVubG9jazsKKworCXNpaTky MzRfaHdfcmVzZXQoY3R4KTsKKwlzaWk5MjM0X2dvdG9fZDMoY3R4KTsKKwkvKiBUbyBhdm9pZCBp cnEgc3Rvcm0sIHdoZW4gaHcgaXMgaW4gbWV0YSBzdGF0ZSAqLworCWVuYWJsZV9pcnEodG9faTJj X2NsaWVudChjdHgtPmRldiktPmlycSk7CisKK3VubG9jazoKKwltdXRleF91bmxvY2soJmN0eC0+ bG9jayk7Cit9CisKK3N0YXRpYyB2b2lkIHNpaTkyMzRfY2FibGVfb3V0KHN0cnVjdCBzaWk5MjM0 ICpjdHgpCit7CisJbXV0ZXhfbG9jaygmY3R4LT5sb2NrKTsKKworCWlmIChjdHgtPnN0YXRlID09 IFNUX09GRikKKwkJZ290byB1bmxvY2s7CisKKwlkaXNhYmxlX2lycSh0b19pMmNfY2xpZW50KGN0 eC0+ZGV2KS0+aXJxKTsKKwl0cGlfd3JpdGViKGN0eCwgVFBJX0RQRF9SRUcsIDApOworCS8qIFR1 cm4gb24mb2ZmIGhwZCBmZXN0dXJlIGZvciBvbmx5IFFDVCBIRE1JICovCisJc2lpOTIzNF9od19v ZmYoY3R4KTsKKworCWN0eC0+c3RhdGUgPSBTVF9PRkY7CisKK3VubG9jazoKKwltdXRleF91bmxv Y2soJmN0eC0+bG9jayk7Cit9CisKK3N0YXRpYyBlbnVtIHNpaTkyMzRfc3RhdGUgc2lpOTIzNF9y Z25kX3JlYWR5X2lycShzdHJ1Y3Qgc2lpOTIzNCAqY3R4KQoreworCWludCB2YWx1ZTsKKworCWlm IChjdHgtPnN0YXRlID09IFNUX0QzKSB7CisJCWludCByZXQ7CisKKwkJZGV2X2RiZyhjdHgtPmRl diwgIlJHTkRfUkVBRFlfSU5UXG4iKTsKKwkJc2lpOTIzNF9od19yZXNldChjdHgpOworCisJCXJl dCA9IHNpaTkyMzRfcmVzZXQoY3R4KTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWRldl9lcnIoY3R4 LT5kZXYsICJzaWk5MjM0X3Jlc2V0KCkgZmFpbGVkXG4iKTsKKwkJCXJldHVybiBTVF9GQUlMVVJF OworCQl9CisKKwkJcmV0dXJuIFNUX1JHTkRfSU5JVDsKKwl9CisKKwkvKiBHb3QgaW50ZXJydXB0 IGluIGluYXBwcm9wcmlhdGUgc3RhdGUgKi8KKwlpZiAoY3R4LT5zdGF0ZSAhPSBTVF9SR05EX0lO SVQpCisJCXJldHVybiBTVF9GQUlMVVJFOworCisJdmFsdWUgPSBtaGxfdHhfcmVhZGIoY3R4LCBN SExfVFhfU1RBVDJfUkVHKTsKKwlpZiAoc2lpOTIzNF9jbGVhcl9lcnJvcihjdHgpKQorCQlyZXR1 cm4gU1RfRkFJTFVSRTsKKworCWlmICgodmFsdWUgJiBSR05EX0lOVFBfTUFTSykgIT0gUkdORF9J TlRQXzFLKSB7CisJCWRldl93YXJuKGN0eC0+ZGV2LCAiUkdORCBpcyBub3QgMWtcbiIpOworCQly ZXR1cm4gU1RfUkdORF9JTklUOworCX0KKwlkZXZfZGJnKGN0eC0+ZGV2LCAiUkdORCAxSyEhXG4i KTsKKwltaGxfdHhfd3JpdGVibShjdHgsIE1ITF9UWF9ESVNDX0NUUkw0X1JFRywgfjAsIDB4OEMp OworCW1obF90eF93cml0ZWIoY3R4LCBNSExfVFhfRElTQ19DVFJMNV9SRUcsIDB4NzcpOworCW1o bF90eF93cml0ZWJtKGN0eCwgTUhMX1RYX0RJU0NfQ1RSTDZfUkVHLCB+MCwgMHgwNSk7CisJaWYg KHNpaTkyMzRfY2xlYXJfZXJyb3IoY3R4KSkKKwkJcmV0dXJuIFNUX0ZBSUxVUkU7CisKKwl1c2xl ZXBfcmFuZ2UoVF9TUkNfVkJVU19DQlVTX1RPX1NUQUJMRSAqIFVTRUNfUEVSX01TRUMsCisJCSAg ICAgVF9TUkNfVkJVU19DQlVTX1RPX1NUQUJMRSAqIFVTRUNfUEVSX01TRUMpOworCisJcmV0dXJu IFNUX1JHTkRfMUs7Cit9CisKK3N0YXRpYyBlbnVtIHNpaTkyMzRfc3RhdGUgc2lpOTIzNF9taGxf ZXN0YWJsaXNoZWQoc3RydWN0IHNpaTkyMzQgKmN0eCkKK3sKKwlkZXZfZGJnKGN0eC0+ZGV2LCAi bWhsIGVzdCBpbnRlcnJ1cHRcbiIpOworCisJLyogRGlzY292ZXJ5IG92ZXJyaWRlICovCisJbWhs X3R4X3dyaXRlYihjdHgsIE1ITF9UWF9NSExUWF9DVEwxX1JFRywgMHgxMCk7CisJLyogSW5jcmVh c2UgRERDIHRyYW5zbGF0aW9uIGxheWVyIHRpbWVyIChieXRlIG1vZGUpICovCisJY2J1c193cml0 ZWIoY3R4LCAweDA3LCAweDMyKTsKKwljYnVzX3dyaXRlYm0oY3R4LCAweDQ0LCB+MCwgMSA8PCAx KTsKKwkvKiBLZWVwIHRoZSBkaXNjb3ZlcnkgZW5hYmxlZC4gTmVlZCBSR05EIGludGVycnVwdCAq LworCW1obF90eF93cml0ZWJtKGN0eCwgTUhMX1RYX0RJU0NfQ1RSTDFfUkVHLCB+MCwgMSk7CisJ bWhsX3R4X3dyaXRlYihjdHgsIE1ITF9UWF9JTlRSMV9FTkFCTEVfUkVHLAorCSAgICAgICBSU0VO X0NIQU5HRV9JTlRfTUFTSyB8IEhQRF9DSEFOR0VfSU5UX01BU0spOworCisJaWYgKHNpaTkyMzRf Y2xlYXJfZXJyb3IoY3R4KSkKKwkJcmV0dXJuIFNUX0ZBSUxVUkU7CisKKwlyZXR1cm4gU1RfTUhM X0VTVEFCTElTSEVEOworfQorCitzdGF0aWMgZW51bSBzaWk5MjM0X3N0YXRlIHNpaTkyMzRfaHBk X2NoYW5nZShzdHJ1Y3Qgc2lpOTIzNCAqY3R4KQoreworCWludCB2YWx1ZTsKKworCXZhbHVlID0g Y2J1c19yZWFkYihjdHgsIENCVVNfTVNDX1JFUV9BQk9SVF9SRUFTT05fUkVHKTsKKwlpZiAoc2lp OTIzNF9jbGVhcl9lcnJvcihjdHgpKQorCQlyZXR1cm4gU1RfRkFJTFVSRTsKKworCWlmICh2YWx1 ZSAmIFNFVF9IUERfRE9XTlNUUkVBTSkgeworCQkvKiBEb3duc3RyZWFtIEhQRCBIaWdoLCBFbmFi bGUgVE1EUyAqLworCQlzaWk5MjM0X3RtZHNfY29udHJvbChjdHgsIHRydWUpOworCX0gZWxzZSB7 CisJCS8qIERvd25zdHJlYW0gSFBEIExvdywgRGlzYWJsZSBUTURTICovCisJCXNpaTkyMzRfdG1k c19jb250cm9sKGN0eCwgZmFsc2UpOworCX0KKworCXJldHVybiBjdHgtPnN0YXRlOworfQorCitz dGF0aWMgZW51bSBzaWk5MjM0X3N0YXRlIHNpaTkyMzRfcnNlbl9jaGFuZ2Uoc3RydWN0IHNpaTky MzQgKmN0eCkKK3sKKwlpbnQgdmFsdWU7CisKKwkvKiBXb3JrX2Fyb3VuZCBjb2RlIHRvIGhhbmRs ZSB3cm9uZyBpbnRlcnJ1cHQgKi8KKwlpZiAoY3R4LT5zdGF0ZSAhPSBTVF9SR05EXzFLKSB7CisJ CWRldl9lcnIoY3R4LT5kZXYsICJSU0VOX0hJR0ggd2l0aG91dCBSR05EXzFLXG4iKTsKKwkJcmV0 dXJuIFNUX0ZBSUxVUkU7CisJfQorCXZhbHVlID0gbWhsX3R4X3JlYWRiKGN0eCwgTUhMX1RYX1NZ U1NUQVRfUkVHKTsKKwlpZiAodmFsdWUgPCAwKQorCQlyZXR1cm4gU1RfRkFJTFVSRTsKKworCWlm ICh2YWx1ZSAmIFJTRU5fU1RBVFVTKSB7CisJCWRldl9kYmcoY3R4LT5kZXYsICJNSEwgY2FibGUg Y29ubmVjdGVkLi4gUlNFTiBIaWdoXG4iKTsKKwkJcmV0dXJuIFNUX1JTRU5fSElHSDsKKwl9CisJ ZGV2X2RiZyhjdHgtPmRldiwgIlJTRU4gbG9zdFxuIik7CisJLyogT25jZSBSU0VOIGxvc3MgaXMg Y29uZmlybWVkLHdlIG5lZWQgdG8gY2hlY2sKKwkgKiBiYXNlZCBvbiBjYWJsZSBzdGF0dXMgYW5k IGNoaXAgcG93ZXIgc3RhdHVzLHdoZXRoZXIKKwkgKiBpdCBpcyBTSU5LIExvc3MoSERNSSBjYWJs ZSBub3QgY29ubmVjdGVkLCBUViBPZmYpCisJICogb3IgTUhMIGNhYmxlIGRpc2Nvbm5lY3Rpb24K KwkgKiBUT0RPOiBEZWZpbmUgdGhlIGJlbG93IG1obF9kaXNjb25uZWN0aW9uKCkKKwkgKi8KKwlt c2xlZXAoVF9TUkNfUlhTRU5TRV9ERUdMSVRDSCk7CisJdmFsdWUgPSBtaGxfdHhfcmVhZGIoY3R4 LCBNSExfVFhfU1lTU1RBVF9SRUcpOworCWlmICh2YWx1ZSA8IDApCisJCXJldHVybiBTVF9GQUlM VVJFOworCWRldl9kYmcoY3R4LT5kZXYsICJzeXNfc3RhdDogJXhcbiIsIHZhbHVlKTsKKworCWlm ICh2YWx1ZSAmIFJTRU5fU1RBVFVTKSB7CisJCWRldl9kYmcoY3R4LT5kZXYsICJSU0VOIHJlY292 ZXJ5XG4iKTsKKwkJcmV0dXJuIFNUX1JTRU5fSElHSDsKKwl9CisJZGV2X2RiZyhjdHgtPmRldiwg IlJTRU4gUmVhbGx5IExPV1xuIik7CisJLyogVG8gbWVldCBDVFMgMy4zLjIyLjIgc3BlYyAqLwor CXNpaTkyMzRfdG1kc19jb250cm9sKGN0eCwgZmFsc2UpOworCWZvcmNlX3VzYl9pZF9zd2l0Y2hf b3BlbihjdHgpOworCXJlbGVhc2VfdXNiX2lkX3N3aXRjaF9vcGVuKGN0eCk7CisKKwlyZXR1cm4g U1RfRkFJTFVSRTsKK30KKworc3RhdGljIGlycXJldHVybl90IHNpaTkyMzRfaXJxX3RocmVhZChp bnQgaXJxLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBzaWk5MjM0ICpjdHggPSBkYXRhOworCWlu dCBpbnRyMSwgaW50cjQ7CisJaW50IGludHIxX2VuLCBpbnRyNF9lbjsKKwlpbnQgY2J1c19pbnRy MSwgY2J1c19pbnRyMjsKKworCWRldl9kYmcoY3R4LT5kZXYsICIlc1xuIiwgX19mdW5jX18pOwor CisJbXV0ZXhfbG9jaygmY3R4LT5sb2NrKTsKKworCWludHIxID0gbWhsX3R4X3JlYWRiKGN0eCwg TUhMX1RYX0lOVFIxX1JFRyk7CisJaW50cjQgPSBtaGxfdHhfcmVhZGIoY3R4LCBNSExfVFhfSU5U UjRfUkVHKTsKKwlpbnRyMV9lbiA9IG1obF90eF9yZWFkYihjdHgsIE1ITF9UWF9JTlRSMV9FTkFC TEVfUkVHKTsKKwlpbnRyNF9lbiA9IG1obF90eF9yZWFkYihjdHgsIE1ITF9UWF9JTlRSNF9FTkFC TEVfUkVHKTsKKwljYnVzX2ludHIxID0gY2J1c19yZWFkYihjdHgsIENCVVNfSU5UX1NUQVRVU18x X1JFRyk7CisJY2J1c19pbnRyMiA9IGNidXNfcmVhZGIoY3R4LCBDQlVTX0lOVF9TVEFUVVNfMl9S RUcpOworCisJaWYgKHNpaTkyMzRfY2xlYXJfZXJyb3IoY3R4KSkKKwkJZ290byBkb25lOworCisJ ZGV2X2RiZyhjdHgtPmRldiwgImlycSAlMDJ4LyUwMnggJTAyeC8lMDJ4ICUwMngvJTAyeFxuIiwK KwkJIGludHIxLCBpbnRyMV9lbiwgaW50cjQsIGludHI0X2VuLCBjYnVzX2ludHIxLCBjYnVzX2lu dHIyKTsKKworCWlmIChpbnRyNCAmIFJHTkRfUkVBRFlfSU5UKQorCQljdHgtPnN0YXRlID0gc2lp OTIzNF9yZ25kX3JlYWR5X2lycShjdHgpOworCWlmIChpbnRyMSAmIFJTRU5fQ0hBTkdFX0lOVCkK KwkJY3R4LT5zdGF0ZSA9IHNpaTkyMzRfcnNlbl9jaGFuZ2UoY3R4KTsKKwlpZiAoaW50cjQgJiBN SExfRVNUX0lOVCkKKwkJY3R4LT5zdGF0ZSA9IHNpaTkyMzRfbWhsX2VzdGFibGlzaGVkKGN0eCk7 CisJaWYgKGludHIxICYgSFBEX0NIQU5HRV9JTlQpCisJCWN0eC0+c3RhdGUgPSBzaWk5MjM0X2hw ZF9jaGFuZ2UoY3R4KTsKKwlpZiAoaW50cjQgJiBDQlVTX0xLT1VUX0lOVCkKKwkJY3R4LT5zdGF0 ZSA9IFNUX0ZBSUxVUkU7CisJaWYgKGludHI0ICYgTUhMX0RJU0NfRkFJTF9JTlQpCisJCWN0eC0+ c3RhdGUgPSBTVF9GQUlMVVJFX0RJU0NPVkVSWTsKKworIGRvbmU6CisJLyogQ2xlYW4gaW50ZXJy dXB0IHN0YXR1cyBhbmQgcGVuZGluZyBmbGFncyAqLworCW1obF90eF93cml0ZWIoY3R4LCBNSExf VFhfSU5UUjFfUkVHLCBpbnRyMSk7CisJbWhsX3R4X3dyaXRlYihjdHgsIE1ITF9UWF9JTlRSNF9S RUcsIGludHI0KTsKKwljYnVzX3dyaXRlYihjdHgsIENCVVNfTUhMX1NUQVRVU19SRUdfMCwgMHhG Rik7CisJY2J1c193cml0ZWIoY3R4LCBDQlVTX01ITF9TVEFUVVNfUkVHXzEsIDB4RkYpOworCWNi dXNfd3JpdGViKGN0eCwgQ0JVU19JTlRfU1RBVFVTXzFfUkVHLCBjYnVzX2ludHIxKTsKKwljYnVz X3dyaXRlYihjdHgsIENCVVNfSU5UX1NUQVRVU18yX1JFRywgY2J1c19pbnRyMik7CisKKwlzaWk5 MjM0X2NsZWFyX2Vycm9yKGN0eCk7CisKKwlpZiAoY3R4LT5zdGF0ZSA9PSBTVF9GQUlMVVJFKSB7 CisJCWRldl9kYmcoY3R4LT5kZXYsICJ0cnkgdG8gcmVzZXQgYWZ0ZXIgZmFpbHVyZVxuIik7CisJ CXNpaTkyMzRfaHdfcmVzZXQoY3R4KTsKKwkJc2lpOTIzNF9nb3RvX2QzKGN0eCk7CisJfQorCisJ aWYgKGN0eC0+c3RhdGUgPT0gU1RfRkFJTFVSRV9ESVNDT1ZFUlkpIHsKKwkJZGV2X2VycihjdHgt PmRldiwgImRpc2NvdmVyeSBmYWlsZWQsIG5vIHBvd2VyIGZvciBNSEw/XG4iKTsKKwkJdHBpX3dy aXRlYm0oY3R4LCBUUElfRFBEX1JFRywgMCwgMSk7CisJCWN0eC0+c3RhdGUgPSBTVF9EMzsKKwl9 CisKKwltdXRleF91bmxvY2soJmN0eC0+bG9jayk7CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9 CisKKworc3RhdGljIGludCBzaWk5MjM0X2luaXRfcmVzb3VyY2VzKHN0cnVjdCBzaWk5MjM0ICpj dHgsCisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgaTJjX2FkYXB0ZXIg KmFkYXB0ZXIgPSB0b19pMmNfYWRhcHRlcihjbGllbnQtPmRldi5wYXJlbnQpOworCWludCByZXQ7 CisKKwlpZiAoIWN0eC0+ZGV2LT5vZl9ub2RlKSB7CisJCWRldl9lcnIoY3R4LT5kZXYsICJub3Qg RFQgZGV2aWNlXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJY3R4LT5ncGlvX3Jlc2V0 ID0gZGV2bV9ncGlvZF9nZXQoY3R4LT5kZXYsICJyZXNldCIsIEdQSU9EX09VVF9MT1cpOworCWlm IChJU19FUlIoY3R4LT5ncGlvX3Jlc2V0KSkgeworCQlkZXZfZXJyKGN0eC0+ZGV2LCAiZmFpbGVk IHRvIGdldCByZXNldCBncGlvIGZyb20gRFRcbiIpOworCQlyZXR1cm4gUFRSX0VSUihjdHgtPmdw aW9fcmVzZXQpOworCX0KKworCWN0eC0+c3VwcGxpZXNbMF0uc3VwcGx5ID0gImN2Y2MxMiI7CisJ Y3R4LT5zdXBwbGllc1sxXS5zdXBwbHkgPSAiYXZjYzMzIjsKKwljdHgtPnN1cHBsaWVzWzJdLnN1 cHBseSA9ICJpb3ZjYzE4IjsKKwljdHgtPnN1cHBsaWVzWzNdLnN1cHBseSA9ICJhdmNjMTIiOwor CXJldCA9IGRldm1fcmVndWxhdG9yX2J1bGtfZ2V0KGN0eC0+ZGV2LCA0LCBjdHgtPnN1cHBsaWVz KTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoY3R4LT5kZXYsICJyZWd1bGF0b3JfYnVsayBmYWls ZWRcbiIpOworCQlyZXR1cm4gcmV0OworCX0KKworCWN0eC0+Y2xpZW50W0kyQ19NSExdID0gY2xp ZW50OworCisJY3R4LT5jbGllbnRbSTJDX1RQSV0gPSBpMmNfbmV3X2R1bW15KGFkYXB0ZXIsIEky Q19UUElfQUREUik7CisJaWYgKCFjdHgtPmNsaWVudFtJMkNfVFBJXSkgeworCQlkZXZfZXJyKGN0 eC0+ZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBUUEkgY2xpZW50XG4iKTsKKwkJcmV0dXJuIC1FTk9E RVY7CisJfQorCisJY3R4LT5jbGllbnRbSTJDX0hETUldID0gaTJjX25ld19kdW1teShhZGFwdGVy LCBJMkNfSERNSV9BRERSKTsKKwlpZiAoIWN0eC0+Y2xpZW50W0kyQ19IRE1JXSkgeworCQlkZXZf ZXJyKGN0eC0+ZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBIRE1JIFJYIGNsaWVudFxuIik7CisJCWdv dG8gZmFpbF90cGk7CisJfQorCisJY3R4LT5jbGllbnRbSTJDX0NCVVNdID0gaTJjX25ld19kdW1t eShhZGFwdGVyLCBJMkNfQ0JVU19BRERSKTsKKwlpZiAoIWN0eC0+Y2xpZW50W0kyQ19DQlVTXSkg eworCQlkZXZfZXJyKGN0eC0+ZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBDQlVTIGNsaWVudFxuIik7 CisJCWdvdG8gZmFpbF9oZG1pOworCX0KKworCXJldHVybiAwOworCitmYWlsX2hkbWk6CisJaTJj X3VucmVnaXN0ZXJfZGV2aWNlKGN0eC0+Y2xpZW50W0kyQ19IRE1JXSk7CitmYWlsX3RwaToKKwlp MmNfdW5yZWdpc3Rlcl9kZXZpY2UoY3R4LT5jbGllbnRbSTJDX1RQSV0pOworCisJcmV0dXJuIC1F Tk9ERVY7Cit9CisKK3N0YXRpYyB2b2lkIHNpaTkyMzRfZGVpbml0X3Jlc291cmNlcyhzdHJ1Y3Qg c2lpOTIzNCAqY3R4KQoreworCWkyY191bnJlZ2lzdGVyX2RldmljZShjdHgtPmNsaWVudFtJMkNf Q0JVU10pOworCWkyY191bnJlZ2lzdGVyX2RldmljZShjdHgtPmNsaWVudFtJMkNfSERNSV0pOwor CWkyY191bnJlZ2lzdGVyX2RldmljZShjdHgtPmNsaWVudFtJMkNfVFBJXSk7Cit9CisKK3N0YXRp YyBpbmxpbmUgc3RydWN0IHNpaTkyMzQgKmJyaWRnZV90b19zaWk5MjM0KHN0cnVjdCBkcm1fYnJp ZGdlICpicmlkZ2UpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihicmlkZ2UsIHN0cnVjdCBzaWk5 MjM0LCBicmlkZ2UpOworfQorCitzdGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMgc2lpOTIzNF9t b2RlX3ZhbGlkKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCisJCQkJCWNvbnN0IHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCWlmIChtb2RlLT5jbG9jayA+IE1ITDFfTUFYX0NM SykKKwkJcmV0dXJuIE1PREVfQ0xPQ0tfSElHSDsKKworCXJldHVybiBNT0RFX09LOworfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3Mgc2lpOTIzNF9icmlkZ2VfZnVuY3Mg PSB7CisJLm1vZGVfdmFsaWQgPSBzaWk5MjM0X21vZGVfdmFsaWQsCit9OworCitzdGF0aWMgaW50 IHNpaTkyMzRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKKwkJCQkJICAgICAgY29u c3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQoreworCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRh cHRlciA9IHRvX2kyY19hZGFwdGVyKGNsaWVudC0+ZGV2LnBhcmVudCk7CisJc3RydWN0IHNpaTky MzQgKmN0eDsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmY2xpZW50LT5kZXY7CisJaW50IHJldDsK KworCWN0eCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7CisJ aWYgKCFjdHgpCisJCXJldHVybiAtRU5PTUVNOworCisJY3R4LT5kZXYgPSBkZXY7CisJbXV0ZXhf aW5pdCgmY3R4LT5sb2NrKTsKKworCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoYWRhcHRl ciwgSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBKSkgeworCQlkZXZfZXJyKGRldiwgIkkyQyBhZGFw dGVyIGxhY2tzIFNNQlVTIGZlYXR1cmVcbiIpOworCQlyZXR1cm4gLUVJTzsKKwl9CisKKwlpZiAo IWNsaWVudC0+aXJxKSB7CisJCWRldl9lcnIoZGV2LCAibm8gaXJxIHByb3ZpZGVkXG4iKTsKKwkJ cmV0dXJuIC1FSU5WQUw7CisJfQorCisJaXJxX3NldF9zdGF0dXNfZmxhZ3MoY2xpZW50LT5pcnEs IElSUV9OT0FVVE9FTik7CisJcmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShkZXYsIGNs aWVudC0+aXJxLCBOVUxMLAorCQkJCQlzaWk5MjM0X2lycV90aHJlYWQsCisJCQkJCUlSUUZfVFJJ R0dFUl9ISUdIIHwgSVJRRl9PTkVTSE9ULAorCQkJCQkic2lpOTIzNCIsIGN0eCk7CisJaWYgKHJl dCA8IDApIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gaW5zdGFsbCBJUlEgaGFuZGxlclxu Iik7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gc2lpOTIzNF9pbml0X3Jlc291cmNlcyhj dHgsIGNsaWVudCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlpMmNfc2V0X2Ns aWVudGRhdGEoY2xpZW50LCBjdHgpOworCisJY3R4LT5icmlkZ2UuZnVuY3MgPSAmc2lpOTIzNF9i cmlkZ2VfZnVuY3M7CisJY3R4LT5icmlkZ2Uub2Zfbm9kZSA9IGRldi0+b2Zfbm9kZTsKKwlkcm1f YnJpZGdlX2FkZCgmY3R4LT5icmlkZ2UpOworCisJc2lpOTIzNF9jYWJsZV9pbihjdHgpOworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2lpOTIzNF9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3Qgc2lpOTIzNCAqY3R4ID0gaTJjX2dldF9jbGllbnRkYXRh KGNsaWVudCk7CisKKwlzaWk5MjM0X2NhYmxlX291dChjdHgpOworCWRybV9icmlkZ2VfcmVtb3Zl KCZjdHgtPmJyaWRnZSk7CisJc2lpOTIzNF9kZWluaXRfcmVzb3VyY2VzKGN0eCk7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc2lpOTIzNF9kdF9t YXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAic2lsLHNpaTkyMzQiIH0sCisJeyB9LAorfTsK K01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHNpaTkyMzRfZHRfbWF0Y2gpOworCitzdGF0aWMgY29u c3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgc2lpOTIzNF9pZFtdID0geworCXsgIlNJSTkyMzQiLCAw IH0sCisJeyB9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBzaWk5MjM0X2lkKTsKKwor c3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHNpaTkyMzRfZHJpdmVyID0geworCS5kcml2ZXIgPSB7 CisJCS5uYW1lCT0gInNpaTkyMzQiLAorCQkub2ZfbWF0Y2hfdGFibGUgPSBzaWk5MjM0X2R0X21h dGNoLAorCX0sCisJLnByb2JlCQk9IHNpaTkyMzRfcHJvYmUsCisJLnJlbW92ZQkJPSBzaWk5MjM0 X3JlbW92ZSwKKwkuaWRfdGFibGUgPSBzaWk5MjM0X2lkLAorfTsKKworbW9kdWxlX2kyY19kcml2 ZXIoc2lpOTIzNF9kcml2ZXIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotLSAKMi43LjQKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=