From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sam Ravnborg Subject: Re: [PATCH 2/3] drm/bridge: add it6505 driver Date: Wed, 8 May 2019 23:07:31 +0200 Message-ID: <20190508210731.GA19781@ravnborg.org> References: <1557301722-20827-1-git-send-email-allen.chen@ite.com.tw> <1557301722-20827-3-git-send-email-allen.chen@ite.com.tw> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from asavdk3.altibox.net (asavdk3.altibox.net [109.247.116.14]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7DC52892FF for ; Wed, 8 May 2019 21:07:37 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1557301722-20827-3-git-send-email-allen.chen@ite.com.tw> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: allen Cc: Archit Taneja , Jitao Shi , Yilun Lin , open list , "open list:DRM DRIVERS" , David Airlie , "moderated list:ARM/Mediatek SoC support" , Laurent Pinchart , Pi-Hsun Shih , Matthias Brugger , "moderated list:ARM/Mediatek SoC support" List-Id: dri-devel@lists.freedesktop.org SGkgYWxsZW4uCgpUaGFua3MgZm9yIHRoaXMgZmluZSBwYXRjaC4KQSBmZXcgY29tbWVudHMgZm9s bG93cy4KCkNvbnNpZGVyIHRvIHVzZSBEUk1fREVWX0VSUk9SIGFuZCBmcmllbmRzLgpUaGVuIHlv dSBnZXQgdGhlIGRldmljZW5hbWUgaW5jbHVkZWQgaW4gbG9nZ2luZwphbmQgdGhpcyBtYWtlcyBp dCBtdWNoIGVhc2llciB0byBmaW5kIHJlbGV2YW50IGVudHJpZXMuCgpPbiBXZWQsIE1heSAwOCwg MjAxOSBhdCAwMzo0ODo0MVBNICswODAwLCBhbGxlbiB3cm90ZToKPiBGcm9tOiBBbGxlbiBDaGVu IDxhbGxlbi5jaGVuQGl0ZS5jb20udHc+Cj4gCj4gVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSBp VEUgSVQ2NTA1Lgo+IFRoaXMgZGV2aWNlIGNhbiBjb252ZXJ0IERQSSBzaWduYWwgdG8gRFAgb3V0 cHV0Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IEppdGFvIFNoaSA8aml0YW8uc2hpQG1lZGlhdGVrLmNv bT4KPiBTaWduZWQtb2ZmLWJ5OiBZaWx1biBMaW4gPHlsbGluQGdvb2dsZS5jb20+Cj4gU2lnbmVk LW9mZi1ieTogQWxsZW4gQ2hlbiA8YWxsZW4uY2hlbkBpdGUuY29tLnR3Pgo+IC0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcgICAgICB8ICAgMjIgKwo+ICBkcml2ZXJzL2dwdS9k cm0vYnJpZGdlL01ha2VmaWxlICAgICB8ICAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdl L2l0ZS1pdDY1MDUuYyB8IDI2MzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiAgMyBmaWxlcyBjaGFuZ2VkLCAyNjYwIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvaXRlLWl0NjUwNS5jCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv S2NvbmZpZwo+IGluZGV4IDljOWM0ZGYuLmQxMmU0OGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29u ZmlnCj4gQEAgLTQzLDYgKzQzLDI4IEBAIGNvbmZpZyBEUk1fRFVNQl9WR0FfREFDCj4gIAkgIFN1 cHBvcnQgZm9yIG5vbi1wcm9ncmFtbWFibGUgUkdCIHRvIFZHQSBEQUMgYnJpZGdlcywgc3VjaCBh cyBBREkKPiAgCSAgQURWNzEyMywgVEkgVEhTODEzNCBhbmQgVEhTODEzNSBvciBwYXNzaXZlIHJl c2lzdG9yIGxhZGRlciBEQUNzLgo+ICAKPiArY29uZmlnIERSTV9JVEVfSVQ2NTA1Cj4gKwl0cmlz dGF0ZSAiSVRFIElUNjUwNSBEUCBicmlkZ2UiCj4gKwlkZXBlbmRzIG9uIE9GCj4gKwlzZWxlY3Qg RFJNX0tNU19IRUxQRVIKPiArCWhlbHAKPiArCSAgSVRFIElUNjUwNSBEUCBicmlkZ2UgY2hpcCBk cml2ZXIuCgpXaHkgaXMgaXQgcmVsZXZhbnQgdG8gaGF2ZSB0aGVzZSBmZWF0dXJlcyBhcyBmZWF0 dXJlcwp0aGF0IGNhbiBiZSBlbmFiZWQvZGlzYWJsZWQgb24gS2NvbmZpZyBsZXZlbD8KSXQgaXMg bGlrZWx5IG1vcmUgZmxleGlibGUgdG8gZG8gaXQgcnVuLXRpbWUKaWYgbmVlZGVkIHRvIHR1cm4g dGhlbSBvZmYuCkFuZCBpdCB3b3VsZCBzaW1wbGlmeSB0aGUgY29kZS4KCj4gKwo+ICtjb25maWcg RFJNX0lURV9JVDY1MDVfRU5IRENQCj4gKwl0cmlzdGF0ZSAiRW5hYmxlIElUNjUwNSBIRENQIGZ1 bmN0aW9uIgo+ICsJZGVwZW5kcyBvbiBEUk1fSVRFX0lUNjUwNQo+ICsJZGVmYXVsdCB5Cj4gKwo+ ICtjb25maWcgRFJNX0lURV9JVDY1MDVfRU5BVUQKPiArICAgICAgICB0cmlzdGF0ZSAiRW5hYmxl IElUNjUwNSBhdWRpbyBmdW5jdGlvbiIKPiArICAgICAgICBkZXBlbmRzIG9uIERSTV9JVEVfSVQ2 NTA1Cj4gKyAgICAgICAgZGVmYXVsdCB5Cj4gKwo+ICtjb25maWcgRFJNX0lURV9JVDY1MDVfRU5Q V1JPTk9GRgo+ICsgICAgICAgIHRyaXN0YXRlICJFbmFibGUgSVQ2NTA1IHBvd2VyIG9uL29mZiBm dW5jdGlvbiIKPiArICAgICAgICBkZXBlbmRzIG9uIERSTV9JVEVfSVQ2NTA1Cj4gKyAgICAgICAg ZGVmYXVsdCB5Cj4gKwo+ICBjb25maWcgRFJNX0xWRFNfRU5DT0RFUgo+ICAJdHJpc3RhdGUgIlRy YW5zcGFyZW50IHBhcmFsbGVsIHRvIExWRFMgZW5jb2RlciBzdXBwb3J0Igo+ICAJZGVwZW5kcyBv biBPRgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQo+IGluZGV4IDQ5MzRmY2YuLmY1YWJjYTUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKPiBAQCAtMiw2ICsyLDcgQEAKPiAgb2JqLSQoQ09O RklHX0RSTV9BTkFMT0dJWF9BTlg3OFhYKSArPSBhbmFsb2dpeC1hbng3OHh4Lm8KPiAgb2JqLSQo Q09ORklHX0RSTV9DRE5TX0RTSSkgKz0gY2Rucy1kc2kubwo+ICBvYmotJChDT05GSUdfRFJNX0RV TUJfVkdBX0RBQykgKz0gZHVtYi12Z2EtZGFjLm8KPiArb2JqLSQoQ09ORklHX0RSTV9JVEVfSVQ2 NTA1KSArPSBpdGUtaXQ2NTA1Lm8KPiAgb2JqLSQoQ09ORklHX0RSTV9MVkRTX0VOQ09ERVIpICs9 IGx2ZHMtZW5jb2Rlci5vCj4gIG9iai0kKENPTkZJR19EUk1fTUVHQUNISVBTX1NURFBYWFhYX0dF X0I4NTBWM19GVykgKz0gbWVnYWNoaXBzLXN0ZHB4eHh4LWdlLWI4NTB2My1mdy5vCj4gIG9iai0k KENPTkZJR19EUk1fTlhQX1BUTjM0NjApICs9IG54cC1wdG4zNDYwLm8KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9pdGUtaXQ2NTA1LmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL2l0ZS1pdDY1MDUuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4u MTMwNzlhOAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2l0 ZS1pdDY1MDUuYwo+IEBAIC0wLDAgKzEsMjYzNyBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIFRoZSBMaW51eCBG b3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKi8KPiArI2luY2x1ZGUgPGxpbnV4 L2JpdHMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9k ZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+ICsjaW5jbHVkZSA8bGludXgvZXh0 Y29uLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9mcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvZ3Bpby9j b25zdW1lci5oPgo+ICsjaW5jbHVkZSA8bGludXgvaTJjLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9p bnRlcnJ1cHQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPiArI2luY2x1ZGUgPGxp bnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2VtYXBob3JlLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsjaW5jbHVkZSA8Y3J5cHRvL2hhc2guaD4K PiArI2luY2x1ZGUgPGNyeXB0by9zaGEuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNp bmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0 Yy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJt L2RybV9kcF9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZWRpZC5oPgpQbGVhc2UgcHV0 IGEgYmxhbmsgbGluZSBiZXR3ZWVuIHRoZSBpbmRpdmlkdWFsIGJsb2NrcwpvZiBpbmNsdWRlIGZp bGVzLgpTbyBhbGwgI2luY2x1ZGUgPGxpbnV4Ly4uLiBjb21lbnMgZmlyc3QKClRoZW4gI2luY2x1 ZGUgPGNyeXB0by8uLi4KCkFuZCBmaW5hbGx5ICNpbmNsdWRlIDxkcm0vLi4uCgpVc2Ugb2YgZHJt UC5oIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBkbyBub3QgdXNlIGl0LgpZb3UgbmVlZCB0byBhZGQg Zm9yd2FyZHMgb3IgaW5jbHVkZXMgdG8gYXZvaWRzLgoKCj4gKwo+ICsjZGVmaW5lIEFYIDAKPiAr I2RlZmluZSBCWCAxCj4gKyNkZWZpbmUgQVVEU0VMIEkyUwo+ICsjZGVmaW5lIEFVRFRZUEUgTFBD TQo+ICsjZGVmaW5lIEFVREZTIEFVRDQ4Swo+ICsjZGVmaW5lIEFVRENIIDIKPiArLyogMDogU3Rh bmRhcmQgSTJTOzE6IDMyYml0IEkyUyAqLwo+ICsjZGVmaW5lIEkyU0lOUFVURk1UIDEKPiArLyog MDogTGVmdC1qdXN0aWZpZWQ7MTogUmlnaHQtanVzdGlmaWVkICovCj4gKyNkZWZpbmUgSTJTSlVT VElGSUVEIDAKPiArLyogMDogRGF0YSBkZWxheSAxVCBjb3JyZXNwb25kIHRvIFdTOzE6IE5vIGRh dGEgZGVsYXkgY29ycmVzcG9uZCB0byBXUyAqLwo+ICsjZGVmaW5lIEkyU0RBVEFERUxBWSAwCj4g Ky8qIDA6IGlzIGxlZnQgY2hhbm5lbDsxOiBpcyByaWdodCBjaGFubmVsICovCj4gKyNkZWZpbmUg STJTV1NDSEFOTkVMIDAKPiArLyogMDogTVNCIHNoaWZ0IGZpcnN0OzE6IExTQiBzaGlmdCBmaXJz dCAqLwo+ICsjZGVmaW5lIEkyU0RBVEFTRVEgMAo+ICsKPiArI2RlZmluZSBMQU5FU1dBUCAwCj4g KyNkZWZpbmUgTEFORSA0Cj4gKyNkZWZpbmUgX0hCUiAxCj4gKyNkZWZpbmUgRU5IRlJBTUUgMQo+ ICsjZGVmaW5lIEVOU1NDIDEKPiArCj4gKyNkZWZpbmUgRkxBR1RSQUlORE9XTiAxMDAKPiArI2Rl ZmluZSBUUkFJTkZBSUxDTlQgNQo+ICsjZGVmaW5lIEFVWF9XQUlUX1RJTUVPVVRfTVMgMTUKPiAr I2RlZmluZSBQQ0xLX0RFTEFZIDEKPiArI2RlZmluZSBQQ0xLX0lOViAwCj4gKyNkZWZpbmUgRURJ RFJFVFJZVElNRSA1Cj4gKyNkZWZpbmUgU0hPV1ZJREVPVElNSU5HIDIKPiArI2RlZmluZSBQV1JP RkZSRVRSWVRJTUUgNQo+ICsKPiArLyogQVggb3IgQlggKi8KPiArI2RlZmluZSBDSElQX1ZFUlNJ T04gQlgKCklmIHRoaXMgZHJpdmVyIGlzIGZvciBCWCBvbmx5IHRoZW4gZHJvcCB0aGUgQVggcmVs ZWF0ZWQgY29kZS4KVGhpcyB3b3VsZCBzaW1wbGlmeSB0aGUgZHJpdmVyLgoKSWYgdGhpcyBpcyBy ZWFsbHkgbmVlZGVkIHRoZW4gcHJvdmlkZSBhbiBlbXB0eSB2YXJpYW50IG9mCml0NjUwNV90ZXJt aW5hdGlvbigpIGZvciBBWCwgdG8gc2ltcGxpZnkgdGhlIGNhbGwgc2l0ZXMuCgpBbmQgaXQ2NTA1 X3Rlcm1pbmF0aW9uKCkgY2FsbHMgZm9yIHR3byBmdW5jdGlvbnMgc28gd2UKdm9pZCBhIGJvb2wg cGFyYW1ldGVyIHRoYXQgbWFrZXMgdGhlIGZ1bmN0aW9uIGRvIHR3bwpkaWZmZXJlbnQgdGhpbmdz LgoKPiArCj4gKy8qIGlmIHVzZSB0aGlzIGRlZmluZSB3aWxsIHBvd2VyIG9uIGluIHByb2JlICov Cj4gKy8qICNkZWZpbmUgVEVTVF9NT0RFICovCj4gKwo+ICsvKiBpZiB1c2UgdGhpcyBkZWZpbmUg d2lsbCBlbmFibGUgQVVYIGRlYnVnIG9wdGlvbiAqLwo+ICsvKiAjZGVmaW5lIEVOQVVYX1RSQU5T RkVSX0RFQlVHICovCj4gKwo+ICsvKiBpZiB1c2UgdGhpcyBkZWZpbmUgd2lsbCBlbmFibGUgU0hB IGRlYnVnICovCj4gKy8qICNkZWZpbmUgU0hBX0RFQlVHICovCkNvbnNpZGVyIGhvdyBtdWNoIG9m IHRoaXMgcmVhbGx5IGJlbG9uZ3MgaW4gYSBwcm9kdWN0aW9uIGRyaXZlci4KSWYgcmVsZXZhbnQg Y29uc2lkZXIgdG8gYWRkIHNvbWUgd2F5IHRvIGVuYWJsZSB0aGlzIHJ1bnRpbWUuCj4gKwo+ICtl bnVtIHN5c19zdGF0dXMgewo+ICsJU1lTX1VOUExVRyA9IDAsCj4gKwlTWVNfSFBELAo+ICsJU1lT X0FVVE9UUkFJTiwKPiArCVNZU19XQUlULAo+ICsJU1lTX1RSQUlORkFJTCwKPiArCVNZU19SZUhE Q1AsCj4gKwlTWVNfUFdSRE4sCj4gKwlTWVNfTk9ST1AsCj4gKwlTWVNfVW5rbm93biwKPiArfTsK PiArCj4gK2VudW0gaXQ2NTA1X2F1ZF9zZWwgewo+ICsJSTJTID0gMCwKPiArCVNQRElGLAo+ICt9 Owo+ICsKPiArZW51bSBpdDY1MDVfYXVkX2ZzIHsKPiArCUFVRDI0SyA9IDB4NiwKPiArCUFVRDMy SyA9IDB4MywKPiArCUFVRDQ4SyA9IDB4MiwKPiArCUFVRDk2SyA9IDB4QSwKPiArCUFVRDE5Mksg PSAweEUsCj4gKwlBVUQ0NFAxSyA9IDB4MCwKPiArCUFVRDg4UDJLID0gMHg4LAo+ICsJQVVEMTc2 UDRLID0gMHhDLAo+ICt9Owo+ICsKPiArZW51bSBpdDY1MDVfYXVkX3R5cGUgewo+ICsJTFBDTSA9 IDAsCj4gKwlOTFBDTSwKPiArCURTUywKPiArCUhCUiwKPiArfTsKPiArCj4gK2VudW0gYXVkX3dv cmRfbGVuZ3RoIHsKPiArCUFVRDE2QklUID0gMCwKPiArCUFVRDE4QklULAo+ICsJQVVEMjBCSVQs Cj4gKwlBVUQyNEJJVCwKPiArfTsKPiArCj4gKy8qIEF1ZGlvIFNhbXBsZSBXb3JkIExlbmd0aDog QVVEMTZCSVQsIEFVRDE4QklULCBBVUQyMEJJVCwgQVVEMjRCSVQgKi8KPiArI2RlZmluZSBBVURX T1JETEVOR1RIIEFVRDI0QklUCj4gKwo+ICtzdHJ1Y3QgaXQ2NTA1X3BsYXRmb3JtX2RhdGEgewo+ ICsJc3RydWN0IHJlZ3VsYXRvciAqcHdyMTg7Cj4gKwlzdHJ1Y3QgcmVndWxhdG9yICpvdmRkOwo+ ICsJc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2RfaHBkOwo+ICsJc3RydWN0IGdwaW9fZGVzYyAqZ3Bp b2RfcGQ7CgpncGlvZF9wZCBpcyBub3QgdXNlZCBhbmQgY2FuIGJlIGRlbGV0ZWQuCgo+ICsJc3Ry dWN0IGdwaW9fZGVzYyAqZ3Bpb2RfcmVzZXQ7Cj4gKwo+ICsJaW50IGhwZF9pcnE7Cj4gKwlpbnQg aW50cF9pcnE7CmhwZF9pcnEgYW5kIGludHBfaXJxIGFyZSBvbmx5IHVzZWQgaW4gb25lIGZ1bmN0 aW9uLgpEcm9wIHRoZW0gZnJvbSBpdDY1MDVfcGxhdGZvcm1fZGF0YSBhbmQgdXNlIGxvY2FsIHZh cmlhYmxlcy4KCj4gK307Cj4gKwo+ICtzdHJ1Y3QgaXQ2NTA1X2RwX3BvcnQgewo+ICsJc3RydWN0 IGl0NjUwNSAqaXQ2NTA1X2RwOwo+ICsJc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGV2ZW50X25iOwo+ ICsJc3RydWN0IGV4dGNvbl9kZXYgKmV4dGNvbjsKPiArCXN0cnVjdCB3b3JrX3N0cnVjdCBleHRj b25fd3E7Cj4gKwl1OCBpZDsKSXQgZGlkIG5vdCBzZWUgdGhpcyB1c2VkLCBvbmx5IGFzc2lnbmVk LiBNYXliZSBJIG1pc3NlZCBzb21ldGhpbmc/Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgaXQ2NTA1IHsK PiArCXN0cnVjdCBkcm1fZHBfYXV4IGF1eDsKPiArCXN0cnVjdCBkcm1fYnJpZGdlIGJyaWRnZTsK PiArCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7Cj4gKwlzdHJ1Y3QgZWRpZCAqZWRpZDsKPiAr CXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsKPiArCXN0cnVjdCBkcm1fZHBfbGluayBs aW5rOwo+ICsJc3RydWN0IGl0NjUwNV9wbGF0Zm9ybV9kYXRhIHBkYXRhOwo+ICsJc3RydWN0IG11 dGV4IGxvY2s7Ckkgd291bGQgYmUgaGVscGZ1bGwgd2l0aCBhIGNvbW1lbnQgd2hhdCB0aGUgbG9j ayBwcm90ZWN0cy4KCj4gKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7Cj4gKwlzdHJ1Y3QgaXQ2NTA1 X2RwX3BvcnQgKnBvcnQ7Cj4gKwkvKiB0aHJlYWQgc2VxdWVuY2UgY29udHJvbCAqLwo+ICsJc3Ry dWN0IHNlbWFwaG9yZSBzZW1fbm90aWZpZXI7Cj4gKwo+ICsJdTggZHBjZFtEUF9SRUNFSVZFUl9D QVBfU0laRV07Cj4gKwllbnVtIHN5c19zdGF0dXMgc3RhdHVzOwo+ICsJdTggZHVtcGRwY2RbMzBd Owo+ICsJdTggZHBjZF9yZXY7CmRwY2RfcmV2IGlzIG9ubHkgdXNlZCBpbiBvbmUgZnVuY3Rpb24u CkRyb3AgaXQgYW5kIHVzZSBsb2NhbCB2YXJpYWJlbC4KCkkgZGlkIG5vdCBjaGVjayBmdXJ0aGVy IC0gcGxlYXNlIHZlcmlmeSB0aGF0IGFsbAptZW1iZXJzIGFyZSB1c2VkIGFuZCBhcmUgcmVsZXZh bnQgdG8gaGF2ZSBpbiB0aGlzCnN0cnVjdC4KCj4gKwlib29sIGhicjsKPiArCXU4IGxhbmU7Cj4g Kwl1OCBlbl9zc2M7Cj4gKwlib29sIGVuX2hmcmFtZTsKPiArCWJvb2wgbGFuZXN3YXA7Cj4gKwo+ ICsJZW51bSBpdDY1MDVfYXVkX3NlbCBhdWRfc2VsOwo+ICsJZW51bSBpdDY1MDVfYXVkX2ZzIGF1 ZF9mczsKPiArCWVudW0gaXQ2NTA1X2F1ZF90eXBlIGF1ZF90eXBlOwo+ICsJdTggYXVkX2NoOwo+ ICsJdTggaTJzX2lucHV0X2ZtdDsKPiArCXU4IGkyc19qdXN0aWZpZWQ7Cj4gKwl1OCBpMnNfZGF0 YV9kZWxheTsKPiArCXU4IGkyc193c19jaGFubmVsOwo+ICsJdTggaTJzX2RhdGFfc2VxOwo+ICsJ dTggdmlkc3RhYmxlX2RvbmU7Cj4gKwllbnVtIGF1ZF93b3JkX2xlbmd0aCBhdWR3b3JkbGVuZ3Ro Owo+ICsJdTggY250ZnNtOwo+ICsJYm9vbCBjcF9yZWFkeTsKPiArCXVuc2lnbmVkIGludCBic3Rh dHVzOwo+ICsJYm9vbCBjcF9kb25lOwo+ICsJdTggZG93bnN0cmVhbV9yZXBlYXRlcjsKPiArCXU4 IGFtMFs4XTsKPiArCXU4IGJpbmZvWzJdOwo+ICsJdTgga3N2bGlzdFs1ICogMTJdOwo+ICsJdW5z aWduZWQgaW50IHNoYVs1XTsKPiArCXVuc2lnbmVkIGludCB3WzgwXTsKPiArCXU4IHNoYWlucHV0 WzY0XTsKPiArCXU4IGF2WzVdWzRdOwo+ICsJdTggYnZbNV1bNF07Cj4gKwl1OCBwYXNzc2hhOwo+ ICsJYm9vbCBwb3dlcmVkOwo+ICsJLyogaXQ2NTA1IGRyaXZlciBob2xkIG9wdGlvbiAqLwo+ICsJ dW5zaWduZWQgaW50IGl0NjUwNV9kcnZfaG9sZDsKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgaXQ2 NTA1X3Bvd2Vyb24oc3RydWN0IGl0NjUwNSAqaXQ2NTA1KTsKPiArI2lmZGVmIENPTkZJR19EUk1f SVRFX0lUNjUwNV9FTlBXUk9OT0ZGCj4gK3N0YXRpYyBpbnQgaXQ2NTA1X3Bvd2Vyb2ZmKHN0cnVj dCBpdDY1MDUgKml0NjUwNSk7Cj4gKyNlbmRpZgo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBy ZWdtYXBfcmFuZ2UgaXQ2NTA1X2JyaWRnZV92b2xhdGlsZV9yYW5nZXNbXSA9IHsKPiArCXsgLnJh bmdlX21pbiA9IDAsIC5yYW5nZV9tYXggPSAweEZGIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHJlZ21hcF9hY2Nlc3NfdGFibGUgaXQ2NTA1X2JyaWRnZV92b2xhdGlsZV90YWJs ZSA9IHsKPiArCS55ZXNfcmFuZ2VzID0gaXQ2NTA1X2JyaWRnZV92b2xhdGlsZV9yYW5nZXMsCj4g Kwkubl95ZXNfcmFuZ2VzID0gQVJSQVlfU0laRShpdDY1MDVfYnJpZGdlX3ZvbGF0aWxlX3Jhbmdl cyksCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgaXQ2NTA1 X2JyaWRnZV9yZWdtYXBfY29uZmlnID0gewo+ICsJLnJlZ19iaXRzID0gOCwKPiArCS52YWxfYml0 cyA9IDgsCj4gKwkudm9sYXRpbGVfdGFibGUgPSAmaXQ2NTA1X2JyaWRnZV92b2xhdGlsZV90YWJs ZSwKPiArCS5jYWNoZV90eXBlID0gUkVHQ0FDSEVfTk9ORSwKPiArfTsKPiArCj4gK3N0YXRpYyBp bnQgZHB0eHJkKHN0cnVjdCBpdDY1MDUgKml0NjUwNSwgdW5zaWduZWQgaW50IHJlZ19hZGRyLAo+ ICsJCSAgdW5zaWduZWQgaW50ICp2YWx1ZSkKPiArewo+ICsJaW50IGVycjsKPiArCj4gKwllcnIg PSByZWdtYXBfcmVhZChpdDY1MDUtPnJlZ21hcCwgcmVnX2FkZHIsIHZhbHVlKTsKPiArCWlmIChl cnIgPCAwKSB7Cj4gKwkJRFJNX0VSUk9SKCIlcyByZWFkIGZhaWwgZXJyIHJlZ19hZGRyWzB4JXhd IGVycjolZFxuIiwKPiArCQkJICBfX2Z1bmNfXywgcmVnX2FkZHIsIGVycik7Cj4gKwkJcmV0dXJu IGVycjsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaXQ2 NTA1X2R1bXAoc3RydWN0IGl0NjUwNSAqaXQ2NTA1KQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgdmFs dWUsIGk7Cj4gKwo+ICsJRFJNX0RFQlVHX0RSSVZFUigiXG4tLS0tLS0tLS0tJXMgc3RhcnQtLS0t LS0tLS0tXG4iLCBfX2Z1bmNfXyk7Cj4gKwlmb3IgKGkgPSAwOyBpIDw9IDB4ZmY7IGkrKykgewo+ ICsJCWRwdHhyZChpdDY1MDUsIGksICZ2YWx1ZSk7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiJXNb MHgleF0gPSAweCV4XG4iLCBfX2Z1bmNfXywgaSwgdmFsdWUpOwo+ICsJfQo+ICsJRFJNX0RFQlVH X0RSSVZFUigiXG4tLS0tLS0tLS0tJXMgZW5kLS0tLS0tLS0tLVxuXG4iLCBfX2Z1bmNfXyk7Cj4g K30KQXJlIHRoZXNlIGhlYWRlcnMgcmVhbGx5IG5lZWRlZCBpbiBhIHByb2R1Y3Rpb24gZHJpdmVy PwoKPiArCj4gK3N0YXRpYyBpbnQgZHB0eHdyKHN0cnVjdCBpdDY1MDUgKml0NjUwNSwgdW5zaWdu ZWQgaW50IHJlZ19hZGRyLAo+ICsJCSAgdW5zaWduZWQgaW50IHJlZ192YWwpCj4gK3sKPiArCWlu dCBlcnI7Cj4gKwo+ICsJZXJyID0gcmVnbWFwX3dyaXRlKGl0NjUwNS0+cmVnbWFwLCByZWdfYWRk ciwgcmVnX3ZhbCk7Cj4gKwo+ICsJaWYgKGVyciA8IDApIHsKPiArCQlEUk1fRVJST1IoIiVzIHdy aXRlIGZhaWwgZXJyIHJlZ1sweCV4XSA9IDB4JXggZXJyID0gJWRcbiIsCj4gKwkJCV9fZnVuY19f LCByZWdfYWRkciwgcmVnX3ZhbCwgZXJyKTsKPiArCQlyZXR1cm4gZXJyOwo+ICsJfQo+ICsKPiAr CXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGRwdHhzZXQoc3RydWN0IGl0NjUwNSAq aXQ2NTA1LCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgbWFzaywKPiArCQkgICB1bnNp Z25lZCBpbnQgdmFsdWUpCj4gK3sKPiArCWludCBlcnI7Cj4gKwo+ICsJZXJyID0gcmVnbWFwX3Vw ZGF0ZV9iaXRzKGl0NjUwNS0+cmVnbWFwLCByZWcsIG1hc2ssIHZhbHVlKTsKPiArCWlmIChlcnIg PCAwKSB7Cj4gKwkJRFJNX0VSUk9SKCIlcyB3cml0ZSBmYWlsIGVyciAlZFxuIiwgX19mdW5jX18s IGVycik7Cj4gKwkJcmV0dXJuIGVycjsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaXQ2NTA1ICpjb25uZWN0b3JfdG9faXQ2NTA1KHN0cnVj dCBkcm1fY29ubmVjdG9yICpjKQo+ICt7Cj4gKwlyZXR1cm4gY29udGFpbmVyX29mKGMsIHN0cnVj dCBpdDY1MDUsIGNvbm5lY3Rvcik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGl0 NjUwNSAqYnJpZGdlX3RvX2l0NjUwNShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICt7Cj4g KwlyZXR1cm4gY29udGFpbmVyX29mKGJyaWRnZSwgc3RydWN0IGl0NjUwNSwgYnJpZGdlKTsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgaXQ2NTA1X2luaXRfZnNtKHN0cnVjdCBpdDY1MDUgKml0NjUw NSkKPiArewo+ICsJaXQ2NTA1LT5hdWRfc2VsID0gQVVEU0VMOwo+ICsJaXQ2NTA1LT5hdWRfZnMg PSBBVURGUzsKPiArCWl0NjUwNS0+YXVkX2NoID0gQVVEQ0g7Cj4gKwlpdDY1MDUtPmF1ZF90eXBl ID0gQVVEVFlQRTsKPiArCWl0NjUwNS0+aTJzX2lucHV0X2ZtdCA9IEkyU0lOUFVURk1UOwo+ICsJ aXQ2NTA1LT5pMnNfanVzdGlmaWVkID0gSTJTSlVTVElGSUVEOwo+ICsJaXQ2NTA1LT5pMnNfZGF0 YV9kZWxheSA9IEkyU0RBVEFERUxBWTsKPiArCWl0NjUwNS0+aTJzX3dzX2NoYW5uZWwgPSBJMlNX U0NIQU5ORUw7Cj4gKwlpdDY1MDUtPmkyc19kYXRhX3NlcSA9IEkyU0RBVEFTRVE7Cj4gKwlpdDY1 MDUtPmF1ZHdvcmRsZW5ndGggPSBBVURXT1JETEVOR1RIOwo+ICsKPiArCWl0NjUwNS0+c3RhdHVz ID0gU1lTX1Vua25vd247Cj4gKwlpdDY1MDUtPmhiciA9IF9IQlI7Cj4gKwlpdDY1MDUtPmxhbmUg PSBMQU5FOwo+ICsJaXQ2NTA1LT5lbl9zc2MgPSBFTlNTQzsKPiArCWl0NjUwNS0+ZW5faGZyYW1l ID0gRU5IRlJBTUU7Cj4gKwlpdDY1MDUtPmxhbmVzd2FwID0gTEFORVNXQVA7Cj4gKwlpdDY1MDUt PnZpZHN0YWJsZV9kb25lID0gMDsKPiArfQo+ICsKPiArI2lmIChDSElQX1ZFUlNJT04gPT0gQlgp Cj4gK3N0YXRpYyB2b2lkIGl0NjUwNV90ZXJtaW5hdGlvbihzdHJ1Y3QgaXQ2NTA1ICppdDY1MDUs IGJvb2wgcykKPiArewo+ICsJRFJNX0RFQlVHX0RSSVZFUigiJXMgc3dpdGNoISFcbiIsIF9fZnVu Y19fKTsKPiArCWlmIChzKSB7Cj4gKwkJZHB0eHNldChpdDY1MDUsIDB4NUQsIDB4ODAsIDB4MDAp Owo+ICsJCWRwdHhzZXQoaXQ2NTA1LCAweDVFLCAweDAyLCAweDAyKTsKPiArCQlEUk1fREVCVUdf RFJJVkVSKCIlcyBPTiEhXG4iLCBfX2Z1bmNfXyk7Cj4gKwl9IGVsc2Ugewo+ICsJCWRwdHhzZXQo aXQ2NTA1LCAweDVELCAweDgwLCAweDgwKTsKPiArCQlkcHR4c2V0KGl0NjUwNSwgMHg1RSwgMHgw MiwgMHgwMCk7Cj4gKwkJZHB0eHNldChpdDY1MDUsIDB4NUMsIDB4RjAsIDB4MDApOwo+ICsJCURS TV9ERUJVR19EUklWRVIoIiVzIE9GRiEhXG4iLCBfX2Z1bmNfXyk7Cj4gKwl9Cj4gK30KPiArI2Vu ZGlmCj4gKwo+ICtzdGF0aWMgYm9vbCBkcHR4X2dldHNpbmtocGQoc3RydWN0IGl0NjUwNSAqaXQ2 NTA1KQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgdmFsdWU7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJl dCA9IGRwdHhyZChpdDY1MDUsIDB4MEQsICZ2YWx1ZSk7Cj4gKwo+ICsJaWYgKHJldCA8IDApCj4g KwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCXJldHVybiAodmFsdWUgJiAyKSA9PSAyOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBzaG93X3ZpZF9pbmZvKHN0cnVjdCBpdDY1MDUgKml0NjUwNSkKPiAr ewo+ICsJaW50IGhzeW5jX3BvbCwgdnN5bmNfcG9sLCBpbnRlcmxhY2VkOwo+ICsJaW50IGh0b3Rh bCwgaGRlcywgaGRldywgaGZwaCwgaHN5bmN3Owo+ICsJaW50IHZ0b3RhbCwgdmRlcywgdmRldywg dmZwaCwgdnN5bmN3Owo+ICsJaW50IHJkZGF0YSwgcmRkYXRhMSwgaTsKPiArCWludCBwY2xrLCBz dW07Cj4gKwo+ICsJdXNsZWVwX3JhbmdlKDEwMDAwLCAxNTAwMCk7Cj4gKwlkcHR4d3IoaXQ2NTA1 LCAweDBGLCAweDAwKTsKPiArCWRwdHhyZChpdDY1MDUsIDB4YTAsICZyZGRhdGEpOwo+ICsJaHN5 bmNfcG9sID0gcmRkYXRhICYgQklUKDApOwo+ICsJdnN5bmNfcG9sID0gKHJkZGF0YSAmIEJJVCgy KSkgPj4gMjsKPiArCWludGVybGFjZWQgPSAocmRkYXRhICYgQklUKDQpKSA+PiA0Owo+ICsKPiAr CWRwdHhyZChpdDY1MDUsIDB4YTEsICZyZGRhdGEpOwo+ICsJZHB0eHJkKGl0NjUwNSwgMHhhMiwg JnJkZGF0YTEpOwo+ICsJaHRvdGFsID0gKChyZGRhdGExICYgMHgxRikgPDwgOCkgKyByZGRhdGE7 Cj4gKwo+ICsJZHB0eHJkKGl0NjUwNSwgMHhhMywgJnJkZGF0YSk7Cj4gKwlkcHR4cmQoaXQ2NTA1 LCAweGE0LCAmcmRkYXRhMSk7Cj4gKwo+ICsJaGRlcyA9ICgocmRkYXRhMSAmIDB4MUYpIDw8IDgp ICsgcmRkYXRhOwo+ICsKPiArCWRwdHhyZChpdDY1MDUsIDB4YTUsICZyZGRhdGEpOwo+ICsJZHB0 eHJkKGl0NjUwNSwgMHhhNiwgJnJkZGF0YTEpOwo+ICsKPiArCWhkZXcgPSAoKHJkZGF0YTEgJiAw eDFGKSA8PCA4KSArIHJkZGF0YTsKPiArCj4gKwlkcHR4cmQoaXQ2NTA1LCAweGE3LCAmcmRkYXRh KTsKPiArCWRwdHhyZChpdDY1MDUsIDB4YTgsICZyZGRhdGExKTsKPiArCj4gKwloZnBoID0gKChy ZGRhdGExICYgMHgxRikgPDwgOCkgKyByZGRhdGE7Cj4gKwo+ICsJZHB0eHJkKGl0NjUwNSwgMHhh OSwgJnJkZGF0YSk7Cj4gKwlkcHR4cmQoaXQ2NTA1LCAweGFhLCAmcmRkYXRhMSk7Cj4gKwo+ICsJ aHN5bmN3ID0gKChyZGRhdGExICYgMHgxRikgPDwgOCkgKyByZGRhdGE7Cj4gKwo+ICsJZHB0eHJk KGl0NjUwNSwgMHhhYiwgJnJkZGF0YSk7Cj4gKwlkcHR4cmQoaXQ2NTA1LCAweGFjLCAmcmRkYXRh MSk7Cj4gKwl2dG90YWwgPSAoKHJkZGF0YTEgJiAweDBGKSA8PCA4KSArIHJkZGF0YTsKPiArCj4g KwlkcHR4cmQoaXQ2NTA1LCAweGFkLCAmcmRkYXRhKTsKPiArCWRwdHhyZChpdDY1MDUsIDB4YWUs ICZyZGRhdGExKTsKPiArCXZkZXMgPSAoKHJkZGF0YTEgJiAweDBGKSA8PCA4KSArIHJkZGF0YTsK PiArCj4gKwlkcHR4cmQoaXQ2NTA1LCAweGFmLCAmcmRkYXRhKTsKPiArCWRwdHhyZChpdDY1MDUs IDB4YjAsICZyZGRhdGExKTsKPiArCXZkZXcgPSAoKHJkZGF0YTEgJiAweDBGKSA8PCA4KSArIHJk ZGF0YTsKPiArCj4gKwlkcHR4cmQoaXQ2NTA1LCAweGIxLCAmcmRkYXRhKTsKPiArCWRwdHhyZChp dDY1MDUsIDB4YjIsICZyZGRhdGExKTsKPiArCXZmcGggPSAoKHJkZGF0YTEgJiAweDBGKSA8PCA4 KSArIHJkZGF0YTsKPiArCj4gKwlkcHR4cmQoaXQ2NTA1LCAweGIzLCAmcmRkYXRhKTsKPiArCWRw dHhyZChpdDY1MDUsIDB4YjQsICZyZGRhdGExKTsKPiArCXZzeW5jdyA9ICgocmRkYXRhMSAmIDB4 MEYpIDw8IDgpICsgcmRkYXRhOwo+ICsKPiArCXN1bSA9IDA7Cj4gKwlmb3IgKGkgPSAwOyBpIDwg MTAwOyBpKyspIHsKPiArCQlkcHR4c2V0KGl0NjUwNSwgMHgxMiwgMHg4MCwgMHg4MCk7Cj4gKwkJ dXNsZWVwX3JhbmdlKDEwMDAwLCAxNTAwMCk7Cj4gKwkJZHB0eHNldChpdDY1MDUsIDB4MTIsIDB4 ODAsIDB4MDApOwo+ICsKPiArCQlkcHR4cmQoaXQ2NTA1LCAweDEzLCAmcmRkYXRhKTsKPiArCQlk cHR4cmQoaXQ2NTA1LCAweDE0LCAmcmRkYXRhMSk7Cj4gKwkJcmRkYXRhID0gKChyZGRhdGExICYg MHgwRikgPDwgOCkgKyByZGRhdGE7Cj4gKwo+ICsJCXN1bSArPSByZGRhdGE7Cj4gKwl9Cj4gKwo+ ICsJc3VtIC89IDEwMDsKPiArCXBjbGsgPSAxMzUwMCAqIDIwNDggLyBzdW07Cj4gKwo+ICsJRFJN X0RFQlVHX0RSSVZFUigiXG4tLS0tLS0tLS0tVmlkZW8gSW5wdXQgVGltaW5nLS0tLS0tLS0tLVxu Iik7Cj4gKwlEUk1fREVCVUdfRFJJVkVSKCJQQ0xLID0gJWQuJWRNSHpcbiIsIHBjbGsgLyAxMDAw LCBwY2xrICUgMTAwMCk7Cj4gKwlEUk1fREVCVUdfRFJJVkVSKCJIVG90YWwgPSAlZFxuIiwgaHRv dGFsKTsKPiArCURSTV9ERUJVR19EUklWRVIoIkhBY3RpdmUgPSAlZFxuIiwgaGRldyk7Cj4gKwlE Uk1fREVCVUdfRFJJVkVSKCJIRnJvbnRQb3JjaCA9ICVkXG4iLCBoZnBoKTsKPiArCURSTV9ERUJV R19EUklWRVIoIkhTeW5jV2lkdGggPSAlZFxuIiwgaHN5bmN3KTsKPiArCURSTV9ERUJVR19EUklW RVIoIkhCYWNrUG9yY2ggPSAlZFxuIiwgaHRvdGFsIC0gaGRldyAtIGhmcGggLSBoc3luY3cpOwo+ ICsJRFJNX0RFQlVHX0RSSVZFUigiVlRvdGFsID0gJWRcbiIsIHZ0b3RhbCk7Cj4gKwlEUk1fREVC VUdfRFJJVkVSKCJWQWN0aXZlID0gJWRcbiIsIHZkZXcpOwo+ICsJRFJNX0RFQlVHX0RSSVZFUigi VkZyb250UG9yY2ggPSAlZFxuIiwgdmZwaCk7Cj4gKwlEUk1fREVCVUdfRFJJVkVSKCJWU3luY1dp ZHRoID0gJWRcbiIsIHZzeW5jdyk7Cj4gKwlEUk1fREVCVUdfRFJJVkVSKCJWQmFja1BvcmNoID0g JWRcbiIsIHZ0b3RhbCAtIHZkZXcgLSB2ZnBoIC0gdnN5bmN3KTsKCkNhbiBEUk1fTU9ERV9GTVQg YW5kIERSTV9NT0RFX0FSRyBiZSB1c2VkIGhlcmU/Cgo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBk cHR4X3N5c19jaGcoc3RydWN0IGl0NjUwNSAqaXQ2NTA1LCBlbnVtIHN5c19zdGF0dXMgbmV3c3Rh dGUpCj4gK3sKPiArCXVuc2lnbmVkIGludCBpID0gMDsKPiArCXVuc2lnbmVkIGludCByZWcwNiwg cmVnMDcsIHJlZzA4LCByZWcwZCwgcmVnMGU7Cj4gKwo+ICsJZHB0eHJkKGl0NjUwNSwgMHgwNiwg JnJlZzA2KTsKPiArCWRwdHhyZChpdDY1MDUsIDB4MDcsICZyZWcwNyk7Cj4gKwlkcHR4cmQoaXQ2 NTA1LCAweDA4LCAmcmVnMDgpOwo+ICsJZHB0eHJkKGl0NjUwNSwgMHgwZCwgJnJlZzBkKTsKPiAr CWRwdHhyZChpdDY1MDUsIDB4MGUsICZyZWcwZSk7Cj4gKwo+ICsJRFJNX0RFQlVHX0RSSVZFUigi WyVzXXJlZzA2ID0gMHgleFxuIiwgX19mdW5jX18sIHJlZzA2KTsKPiArCURSTV9ERUJVR19EUklW RVIoIlslc11yZWcwNyA9IDB4JXhcbiIsIF9fZnVuY19fLCByZWcwNyk7Cj4gKwlEUk1fREVCVUdf RFJJVkVSKCJbJXNdcmVnMDggPSAweCV4XG4iLCBfX2Z1bmNfXywgcmVnMDgpOwo+ICsJRFJNX0RF QlVHX0RSSVZFUigiWyVzXXJlZzBkID0gMHgleFxuIiwgX19mdW5jX18sIHJlZzBkKTsKPiArCURS TV9ERUJVR19EUklWRVIoIlslc11yZWcwZSA9IDB4JXhcbiIsIF9fZnVuY19fLCByZWcwZSk7Ckxv b2tzIGxpa2UgZGVidWdnaW5nIGFydGlmYWN0cyB0aGF0IGFyZSBub3QgcmVsZXZhbnQgaW4gYSBw cm9kdWN0aW9uCmRyaXZlci4KCj4gKwo+ICsJaWYgKG5ld3N0YXRlICE9IFNZU19VTlBMVUcpIHsK PiArCQlpZiAoIWRwdHhfZ2V0c2lua2hwZChpdDY1MDUpKQo+ICsJCQluZXdzdGF0ZSA9IFNZU19V TlBMVUc7Cj4gKwl9Cj4gKwo+ICsJaXQ2NTA1LT5zdGF0dXMgPSBuZXdzdGF0ZTsKPiArCj4gKwlz d2l0Y2ggKGl0NjUwNS0+c3RhdHVzKSB7Cj4gKwljYXNlIFNZU19VTlBMVUc6Cj4gKwkJRFJNX0RF QlVHX0RSSVZFUigic3lzX3N0YXRlIGlzIGNoYW5naW5nIHRvIFNZU19VTlBMVUchIik7Cj4gKwkJ a2ZyZWUoaXQ2NTA1LT5lZGlkKTsKPiArCQlpdDY1MDUtPmVkaWQgPSBOVUxMOwo+ICsJCURSTV9E RUJVR19EUklWRVIoIkZyZWUgaXQ2NTA1IEVESUQgbWVtb3J5ISIpOwo+ICsjaWYgKENISVBfVkVS U0lPTiA9PSBCWCkKPiArCQlpdDY1MDVfdGVybWluYXRpb24oaXQ2NTA1LCBmYWxzZSk7Cj4gKyNl bmRpZgo+ICsJCWJyZWFrOwo+ICsJY2FzZSBTWVNfSFBEOgo+ICsJCURSTV9ERUJVR19EUklWRVIo InN5c19zdGF0ZSBpcyBjaGFuZ2luZyB0byBTWVNfSFBEISIpOwo+ICsjaWYgKENISVBfVkVSU0lP TiA9PSBCWCkKPiArCQlpdDY1MDVfdGVybWluYXRpb24oaXQ2NTA1LCB0cnVlKTsKPiArI2VuZGlm Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIFNZU19BVVRPVFJBSU46Cj4gKwkJRFJNX0RFQlVHX0RSSVZF Uigic3lzX3N0YXRlIGlzIGNoYW5naW5nIHRvIFNZU19BVVRPVFJBSU4hIik7Cj4gKwkJYnJlYWs7 Cj4gKwljYXNlIFNZU19XQUlUOgo+ICsJCURSTV9ERUJVR19EUklWRVIoInN5c19zdGF0ZSBpcyBj aGFuZ2luZyB0byBTWVNfV0FJVCEiKTsKPiArCQlicmVhazsKPiArI2lmZGVmIENPTkZJR19EUk1f SVRFX0lUNjUwNV9FTkhEQ1AKPiArCWNhc2UgU1lTX1JlSERDUDoKPiArCQlEUk1fREVCVUdfRFJJ VkVSKCJzeXNfc3RhdGUgaXMgY2hhbmdpbmcgdG8gU1lTX1JlSERDUCEiKTsKPiArCQlicmVhazsK PiArI2VuZGlmCj4gKwljYXNlIFNZU19OT1JPUDoKPiArCQlEUk1fREVCVUdfRFJJVkVSKCJzeXNf c3RhdGUgaXMgY2hhbmdpbmcgdG8gU1lTX05PUk9QISIpOwo+ICsJCWZvciAoaSA9IDA7IGkgPCBT SE9XVklERU9USU1JTkc7IGkrKykKPiArCQkJc2hvd192aWRfaW5mbyhpdDY1MDUpOwo+ICsjaWZk ZWYgVEVTVF9NT0RFCj4gKwkJaXQ2NTA1LT5pdDY1MDVfZHJ2X2hvbGQgPSAxOwo+ICsJCURSTV9E RUJVR19EUklWRVIoInNldCBpdDY1MDVfZHJ2X2hvbGQ6JWQiLAo+ICsJCQkJaXQ2NTA1LT5pdDY1 MDVfZHJ2X2hvbGQpOwo+ICsjZW5kaWYKPiArCQlicmVhazsKPiArCWNhc2UgU1lTX1BXUkROOgo+ ICsJCURSTV9ERUJVR19EUklWRVIoInN5c19zdGF0ZSBpcyBjaGFuZ2luZyB0byBTWVNfUFdSRE4h Iik7Cj4gKwkJLyogUmVzZXQgYW5kIFB3ckRuIEFGRSAqLwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVs dDoKPiArCQlEUk1fREVCVUdfRFJJVkVSKCJzeXNfc3RhdGUgaXMgY2hhbmdpbmcgdG8gU1lTX1VO S05PV04hIik7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gK30KCkkgYnJvd3NlZCB0aGUgZHJpdmVyIGFu ZCBkaWQgbm90IGZpbmQgYW55dGhpbmcgb3RoZXIKdGhhbiBpc3N1ZXMgdGhhdCBhcmUgYWxyZWFk eSByZXBvcnRlZCBhYm92ZS4KCkFzIEkgaGF2ZSBubyBleHBlcmllbmNlIHdpdGggYSBicmlkZ2Ug ZHJpdmVyIGFzIHN1Y2ggdGhlIGZ1bmN0aW9uYWxpdHkKd2FzIG5vdCBsb29rZWQgYXQuCgoJU2Ft Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==