From mboxrd@z Thu Jan 1 00:00:00 1970 From: Inki Dae Subject: Re: [RFC PATCH] drm/exynos: Add DECON driver Date: Wed, 22 Oct 2014 23:56:43 +0900 Message-ID: <5447C5AB.9090900@samsung.com> References: <1412945316-26877-1-git-send-email-ajaykumar.rs@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1412945316-26877-1-git-send-email-ajaykumar.rs@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ajay Kumar Cc: devicetree@vger.kernel.org, kgene.kim@samsung.com, seanpaul@google.com, jg1.han@samsung.com, dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, cpgs@samsung.com, ajaynumb@gmail.com, Akshu Agrawal , prashanth.g@samsung.com List-Id: linux-samsung-soc@vger.kernel.org ClRoYW5rcyBmb3IgY29udHJpYnV0aW9uLgoKSXQgc2VlbXMgcmVhc29uYWJsZSB0aGF0IHlvdSBz ZXBhcmF0ZSBkZXZpY2UgZHJpdmVycyBpbnRvIEZJTUQgYW5kIERFQ09OCmJlY2F1c2UgbWFueSBy ZWdpc3RlcnMgb2YgdGhlbSBoYXZlIG1hbnkgZGlmZmVyZW50IG9mZnNldHMgYW5kIGZpZWxkcy4K SG93ZXZlciwgdGhlcmUgbWF5IGJlIGEgZ29vZCBzb2x1dGlvbiB0aGF0IHdlIGNhbiBjb21iaW5l IGNvbW1vbiBzZXRzIG9mCnRoZXNlIGRyaXZlcnMgbGF0ZXIuCgpCZWxvdyBhcmUgbXkgY29tbWVu dHMuCgpUaGFua3MsCklua2kgRGFlCgpPbiAyMDE064WEIDEw7JuUIDEw7J28IDIxOjQ4LCBBamF5 IEt1bWFyIHdyb3RlOgo+IFRoaXMgc2VyaWVzIGlzIGJhc2VkIG9uIGV4eW5vcy1kcm0tbmV4dCBi cmFuY2ggb2YgSW5raSBEYWUncyB0cmVlIGF0Ogo+IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9z Y20vbGludXgva2VybmVsL2dpdC9kYWVpbmtpL2RybS1leHlub3MuZ2l0Cj4KPiBERUNPTihEaXNw bGF5IGFuZCBFbmhhbmNlbWVudCBDb250cm9sbGVyKSBpcyB0aGUgbmV3IElQCj4gaW4gZXh5bm9z NyBTT0MgZm9yIGdlbmVyYXRpbmcgdmlkZW8gc2lnbmFscyB1c2luZyBwaXhlbCBkYXRhLgoKREVD T04gd2FzIHVzZWQgc2luY2UgRXh5bm9zNTQzMC4gQW5kIGlzIEV4eW5vczU0MzMgZGlmZmVyZW50 IGZyb20KRXh5bm9zNz8gSWYgc28sIGNvdWxkIEkgZ2V0IHRoZSBFeHlub3M3IHVzZXIgbWFudWFs IChUUk0pIGZvciByZXZpZXc/Cgo+Cj4gREVDT04gZHJpdmVyIGNhbiBiZSB1c2VkIHRvIGRyaXZl IDIgZGlmZmVyZW50IGludGVyZmFjZXMgb24gRXh5bm9zNzoKPiBERUNPTi1JTlQodmlkZW8gY29u dHJvbGxlcikgYW5kIERFQ09OLUVYVChNaXhlciBmb3IgSERNSSkKPgo+IFRoZSBleGlzdGluZyBG SU1EIGRyaXZlciBjb2RlIHdhcyB1c2VkIGFzIGEgdGVtcGxhdGUgdG8gY3JlYXRlCj4gREVDT04g ZHJpdmVyLiBPbmx5IERFQ09OLUlOVCBpcyBzdXBwb3J0ZWQgYXMgb2Ygbm93LCBhbmQKPiBERUNP Ti1FWFQgc3VwcG9ydCB3aWxsIGJlIGFkZGVkIGxhdGVyLgo+Cj4gU2lnbmVkLW9mZi1ieTogQWtz aHUgQWdyYXdhbCA8YWtzaHUuYUBzYW1zdW5nLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBBamF5IEt1 bWFyIDxhamF5a3VtYXIucnNAc2Ftc3VuZy5jb20+Cj4gLS0tCj4gIC4uLi9kZXZpY2V0cmVlL2Jp bmRpbmdzL3ZpZGVvL2V4eW5vcy1kZWNvbi50eHQgICAgIHwgICA2OCArKwo+ICBkcml2ZXJzL2dw dS9kcm0vZXh5bm9zL0tjb25maWcgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKy0KPiAgZHJp dmVycy9ncHUvZHJtL2V4eW5vcy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAgICAxICsK PiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RlY29uLmMgICAgICAgICAgfCAx MDg2CisrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9z X2RybV9kcnYuYyAgICAgICAgICAgIHwgICAxNyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vZXh5bm9z L2V4eW5vc19kcm1fZHJ2LmggICAgICAgICAgICB8ICAgMTEgKwo+ICBpbmNsdWRlL3ZpZGVvL3Nh bXN1bmdfZGVjb24uaCAgICAgICAgICAgICAgICAgICAgICB8ICAzNDYgKysrKysrKwo+ICA3IGZp bGVzIGNoYW5nZWQsIDE1MzcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiAgY3JlYXRl IG1vZGUgMTAwNjQ0CkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92aWRlby9leHlu b3MtZGVjb24udHh0Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZXh5bm9z L2V4eW5vc19kcm1fZGVjb24uYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS92aWRlby9z YW1zdW5nX2RlY29uLmgKPgo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUv YmluZGluZ3MvdmlkZW8vZXh5bm9zLWRlY29uLnR4dApiL0RvY3VtZW50YXRpb24vZGV2aWNldHJl ZS9iaW5kaW5ncy92aWRlby9leHlub3MtZGVjb24udHh0Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwLi5lODY1NjUwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL0RvY3VtZW50 YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92aWRlby9leHlub3MtZGVjb24udHh0Cj4gQEAgLTAs MCArMSw2OCBAQAo+ICtEZXZpY2UtVHJlZSBiaW5kaW5ncyBmb3IgU2Ftc3VuZyBFeHlub3M3IFNv QyBkaXNwbGF5IGNvbnRyb2xsZXIgKERFQ09OKQo+ICsKPiArREVDT04gKERpc3BsYXkgYW5kIEVu aGFuY2VtZW50IENvbnRyb2xsZXIpIGlzIHRoZSBEaXNwbGF5IENvbnRyb2xsZXIKZm9yIHRoZQo+ ICtFeHlub3M3IHNlcmllcyBvZiBTb0NzIHdoaWNoIHRyYW5zZmVycyB0aGUgaW1hZ2UgZGF0YSBm cm9tIGEgdmlkZW8gbWVtb3J5Cj4gK2J1ZmZlciB0byBhbiBleHRlcm5hbCBMQ0QgaW50ZXJmYWNl Lgo+ICsKPiArUmVxdWlyZWQgcHJvcGVydGllczoKPiArLSBjb21wYXRpYmxlOiB2YWx1ZSBzaG91 bGQgYmUgInNhbXN1bmcsZXh5bm9zNy1kZWNvbiI7CgpJZiBleHlub3M1NDMzIHdhcyBqdXN0IHJl bmFtZWQgdG8gZXh5bm9zNyB0aGVuLCBpdCBzaG91bGQgYmUgb25lIG9mIHRoZQpmb2xsb3dpbmc6 CgkoYSkgInNhbXN1bmcsZXh5bm9zNTQzMC1kZWNvbiIgZm9yIERpc3BsYXkgYW5kIGVuaGFuY2Vt ZW50IGNvbnRyb2xsZXIKSVAgZm9yIEV4eW5vczU0MzAKCShiKSAic2Ftc3VuZyxleHlub3M3IiBm b3IgRGlzcGxheSBhbmQgZW5oYW5jZW1lbnQgY29udHJvbGxlciBJUCBmb3IgRXh5bm9zNwoKT3Is CgkoYSkgInNhbXN1bmcsZXh5bm9zNTQzMC1kZWNvbiIgZm9yIERpc3BsYXkgYW5kIGVuaGFuY2Vt ZW50IGNvbnRyb2xsZXIKSVAgZm9yIEV4eW5vczU0MzAKCgkoYikgInNhbXN1bmcsZXh5bm9zNTQz My1kZWNvbiIgZm9yIERpc3BsYXkgYW5kIGVuaGFuY2VtZW50IGNvbnRyb2xsZXIKSVAgZm9yIEV4 eW5vczU0MzMKCShjKSAic2Ftc3VuZyxleHlub3M3IiBmb3IgRGlzcGxheSBhbmQgZW5oYW5jZW1l bnQgY29udHJvbGxlciBJUCBmb3IgRXh5bm9zNwoKCj4gKwo+ICstIHJlZzogcGh5c2ljYWwgYmFz ZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIERFQ09OIHJlZ2lzdGVycyBzZXQuCj4gKwo+ICst IGludGVycnVwdC1wYXJlbnQ6IHNob3VsZCBiZSB0aGUgcGhhbmRsZSBvZiB0aGUgZGVjb24gY29u dHJvbGxlcidzCj4gKwkJcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyLgo+ICsKPiArLSBpbnRl cnJ1cHRzOiBzaG91bGQgY29udGFpbiBhIGxpc3Qgb2YgYWxsIERFQ09OIElQIGJsb2NrIGludGVy cnVwdHMKaW4gdGhlCj4gKwkJIG9yZGVyOiBGSUZPIExldmVsLCBWU1lOQywgTENEX1NZU1RFTS4g VGhlIGludGVycnVwdCBzcGVjaWZpZXIKPiArCQkgZm9ybWF0IGRlcGVuZHMgb24gdGhlIGludGVy cnVwdCBjb250cm9sbGVyIHVzZWQuCj4gKwo+ICstIGludGVycnVwdC1uYW1lczogc2hvdWxkIGNv bnRhaW4gdGhlIGludGVycnVwdCBuYW1lczogImZpZm8iLCAidnN5bmMiLAo+ICsJImxjZF9zeXMi LCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGV5IHdlcmUgbGlzdGVkIGluIHRoZSBpbnRlcnJ1cHRz Cj4gKyAgICAgICAgcHJvcGVydHkuCj4gKwo+ICstIHBpbmN0cmwtMDogcGluIGNvbnRyb2wgZ3Jv dXAgdG8gYmUgdXNlZCBmb3IgdGhpcyBjb250cm9sbGVyLgo+ICsKPiArLSBwaW5jdHJsLW5hbWVz OiBtdXN0IGNvbnRhaW4gYSAiZGVmYXVsdCIgZW50cnkuCj4gKwo+ICstIGNsb2NrczogbXVzdCBp bmNsdWRlIGNsb2NrIHNwZWNpZmllcnMgY29ycmVzcG9uZGluZyB0byBlbnRyaWVzIGluIHRoZQo+ ICsgICAgICAgICBjbG9jay1uYW1lcyBwcm9wZXJ0eS4KPiArCj4gKy0gY2xvY2stbmFtZXM6IGxp c3Qgb2YgY2xvY2sgbmFtZXMgc29ydGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBjbG9ja3MK PiArICAgICAgICAgICAgICAgcHJvcGVydHkuIE11c3QgY29udGFpbiAicGNsa19kZWNvbjAiLCAi YWNsa19kZWNvbjAiLAo+ICsJICAgICAgICJkZWNvbjBfZWNsayIsICJkZWNvbjBfdmNsayIsICJz Y2xrX2RzZCIsIGFjbGtfbGhfZGlzcDAiLAo+ICsJICAgICAgICJhY2xrX2Rpc3AiLCAiYWNsa19s aF9kaXNwMSIuCgpTaG91bGQgREVDT04gZHJpdmVyIHJlYWxseSBjb250cm9sIGFib3ZlIGFsbCBj bG9ja3M/IEkgdGhpbmsgaXQncyBlbm91Z2gKdGhhdCBERUNPTiBkcml2ZXIgY29udHJvbHMgb25s eSBsY2QgYW5kIGJ1cyBjbG9ja3MsIGFuZCBvdGhlcnMgY291bGQgYmUKY29uZmlndXJlZCBieSBi b290LWxvYWRlciBvciBieSBjYWxsaW5nIGNsa19zZXRfcmF0ZS4KCj4gKwo+ICtPcHRpb25hbCBQ cm9wZXJ0aWVzOgo+ICstIHNhbXN1bmcscG93ZXItZG9tYWluOiBhIHBoYW5kbGUgdG8gREVDT04g cG93ZXIgZG9tYWluIG5vZGUuCgpZb3UgYXJlIG1pc3NpbmcgbWFueSBwcm9wZXJ0aWVzLAoJc2Ft c3VuZyxpbnZlcnQtdmRlbgoJc2Ftc3VuZyxpbnZlcnQtdmNsawoJZGlzcGxheS10aW1pbmdzCgku Li4KCnJlZmVyIHRvIGJlbG93IGRvY3VtZW50LApEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu ZGluZ3MvdmlkZW8vc2Ftc3VuZy1maW1kLnR4dAoKPiArCj4gK0V4YW1wbGU6Cj4gKwo+ICtTb0Mg c3BlY2lmaWMgRFQgZW50cnk6Cj4gKwo+ICsJZGVjb25AMTM5MzAwMDAgewo+ICsJCWNvbXBhdGli bGUgPSAic2Ftc3VuZyxleHlub3M3LWRlY29uIjsKPiArCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZj b21iaW5lcj47Cj4gKwkJcmVnID0gPDB4MTM5MzAwMDAgMHgxMDAwPjsKPiArCQlpbnRlcnJ1cHQt bmFtZXMgPSAibGNkX3N5cyIsICJ2c3luYyIsICJmaWZvIjsKPiArCQlpbnRlcnJ1cHRzID0gPDAg MTg4IDA+LCA8MCAxODkgMD4sIDwwIDE5MCAwPjsKPiArCQljbG9ja3MgPSA8JmNsb2NrX2Rpc3Ag UENMS19ERUNPTl9JTlQ+LAo+ICsJCQkgPCZjbG9ja19kaXNwIEFDTEtfREVDT05fSU5UPiwKPiAr CQkJIDwmY2xvY2tfZGlzcCBTQ0xLX0RFQ09OX0lOVF9FQ0xLPiwKPiArCQkJIDwmY2xvY2tfZGlz cCBTQ0xLX0RFQ09OX0lOVF9FWFRDTEtQTEw+LAo+ICsJCQkgPCZjbG9ja19kaXNwIFNDTEtfRFNE PiwKPiArCQkJIDwmY2xvY2tfYnVzMCBBQ0xLX0xIX0RJU1AwPiwKPiArCQkJIDwmY2xvY2tfZGlz cCBBQ0xLX0NQX0RJU1A+LAo+ICsJCQkgPCZjbG9ja19idXMwIEFDTEtfTEhfRElTUDE+Owo+ICsJ CWNsb2NrLW5hbWVzID0gInBjbGtfZGVjb24wIiwgImFjbGtfZGVjb24wIiwgImRlY29uMF9lY2xr IiwKPiArCQkJCSJkZWNvbjBfdmNsayIsICJzY2xrX2RzZCIsICJhY2xrX2xoX2Rpc3AwIiwKPiAr CQkJCSJhY2xrX2Rpc3AiLCAiYWNsa19saF9kaXNwMSI7Cj4gKwkJc3RhdHVzID0gImRpc2FibGVk IjsKPiArCX07Cj4gKwo+ICtCb2FyZCBzcGVjaWZpYyBEVCBlbnRyeToKPiArCj4gKwlkZWNvbkAx MzkzMDAwMCB7Cj4gKwkJcGluY3RybC0wID0gPCZsY2RfY2xrICZwd20xX291dD47Cj4gKwkJcGlu Y3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKPiArCQlzdGF0dXMgPSAib2theSI7Cj4gKwl9Owo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL0tjb25maWcKYi9kcml2ZXJzL2dwdS9k cm0vZXh5bm9zL0tjb25maWcKPiBpbmRleCBmZDFjMDcwLi44OTI3NWVhIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9leHlub3MvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9l eHlub3MvS2NvbmZpZwo+IEBAIC0zMSw2ICszMSwxMyBAQCBjb25maWcgRFJNX0VYWU5PU19GSU1E Cj4gIAloZWxwCj4gIAkgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byB1c2UgRXh5 bm9zIEZJTUQgZm9yIERSTS4KPgo+ICtjb25maWcgRFJNX0VYWU5PU19ERUNPTgo+ICsJYm9vbCAi RXh5bm9zIERSTSBERUNPTiIKPiArCWRlcGVuZHMgb24gRFJNX0VYWU5PUwo+ICsJc2VsZWN0IEZC X01PREVfSEVMUEVSUwo+ICsJaGVscAo+ICsJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IHdh bnQgdG8gdXNlIEV4eW5vcyBERUNPTiBmb3IgRFJNLgo+ICsKPiAgY29uZmlnIERSTV9FWFlOT1Nf RFBJCj4gIAlib29sICJFWFlOT1MgRFJNIHBhcmFsbGVsIG91dHB1dCBzdXBwb3J0Igo+ICAJZGVw ZW5kcyBvbiBEUk1fRVhZTk9TX0ZJTUQKPiBAQCAtNDEsNyArNDgsNyBAQCBjb25maWcgRFJNX0VY WU5PU19EUEkKPgo+ICBjb25maWcgRFJNX0VYWU5PU19EU0kKPiAgCWJvb2wgIkVYWU5PUyBEUk0g TUlQSS1EU0kgZHJpdmVyIHN1cHBvcnQiCj4gLQlkZXBlbmRzIG9uIERSTV9FWFlOT1NfRklNRAo+ ICsJZGVwZW5kcyBvbiAoRFJNX0VYWU5PU19GSU1EIHx8IERSTV9FWFlOT1NfREVDT04pCj4gIAlz ZWxlY3QgRFJNX01JUElfRFNJCj4gIAlzZWxlY3QgRFJNX1BBTkVMCj4gIAlkZWZhdWx0IG4KPiBA QCAtNTAsNyArNTcsNyBAQCBjb25maWcgRFJNX0VYWU5PU19EU0kKPgo+ICBjb25maWcgRFJNX0VY WU5PU19EUAo+ICAJYm9vbCAiRVhZTk9TIERSTSBEUCBkcml2ZXIgc3VwcG9ydCIKPiAtCWRlcGVu ZHMgb24gRFJNX0VYWU5PU19GSU1EICYmIEFSQ0hfRVhZTk9TICYmIChEUk1fUFROMzQ2MD1uIHx8 CkRSTV9QVE4zNDYwPXkgfHwgRFJNX1BUTjM0NjA9RFJNX0VYWU5PUykKPiArCWRlcGVuZHMgb24g KERSTV9FWFlOT1NfRklNRCB8fCBEUk1fRVhZTk9TX0RFQ09OKSAmJiBBUkNIX0VYWU5PUyAmJgoo RFJNX1BUTjM0NjA9biB8fCBEUk1fUFROMzQ2MD15IHx8IERSTV9QVE4zNDYwPURSTV9FWFlOT1Mp Cj4gIAlkZWZhdWx0IERSTV9FWFlOT1MKPiAgCXNlbGVjdCBEUk1fUEFORUwKPiAgCWhlbHAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9NYWtlZmlsZQpiL2RyaXZlcnMvZ3B1 L2RybS9leHlub3MvTWFrZWZpbGUKPiBpbmRleCAzM2FlMzY1Li5jMzI4MmFjIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vZXh5bm9zL01ha2VmaWxlCj4gQEAgLTExLDYgKzExLDcgQEAgZXh5bm9zZHJtLXkgOj0gZXh5 bm9zX2RybV9kcnYubyBleHlub3NfZHJtX2VuY29kZXIubyBcCj4gIGV4eW5vc2RybS0kKENPTkZJ R19EUk1fRVhZTk9TX0lPTU1VKSArPSBleHlub3NfZHJtX2lvbW11Lm8KPiAgZXh5bm9zZHJtLSQo Q09ORklHX0RSTV9FWFlOT1NfRE1BQlVGKSArPSBleHlub3NfZHJtX2RtYWJ1Zi5vCj4gIGV4eW5v c2RybS0kKENPTkZJR19EUk1fRVhZTk9TX0ZJTUQpCSs9IGV4eW5vc19kcm1fZmltZC5vCj4gK2V4 eW5vc2RybS0kKENPTkZJR19EUk1fRVhZTk9TX0RFQ09OKQkrPSBleHlub3NfZHJtX2RlY29uLm8K PiAgZXh5bm9zZHJtLSQoQ09ORklHX0RSTV9FWFlOT1NfRFBJKQkrPSBleHlub3NfZHJtX2RwaS5v Cj4gIGV4eW5vc2RybS0kKENPTkZJR19EUk1fRVhZTk9TX0RTSSkJKz0gZXh5bm9zX2RybV9kc2ku bwo+ICBleHlub3Nkcm0tJChDT05GSUdfRFJNX0VYWU5PU19EUCkJKz0gZXh5bm9zX2RwX2NvcmUu byBleHlub3NfZHBfcmVnLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9l eHlub3NfZHJtX2RlY29uLmMKYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZGVj b24uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNWFjNDU1Nwo+IC0t LSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZGVj b24uYwo+IEBAIC0wLDAgKzEsMTA4NiBAQAo+ICsvKiBleHlub3NfZHJtX2RlY29uLmMKPiArICoK PiArICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uTHRkCj4gKyAq IEF1dGhvcnM6Cj4gKyAqCUFrc2h1IEFnYXJ3YWwgPGFrc2h1LmFAc2Ftc3VuZy5jb20+Cj4gKyAq CUFqYXkgS3VtYXIgPGFqYXlrdW1hci5yc0BzYW1zdW5nLmNvbT4KPiArICoKPiArICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IK bW9kaWZ5IGl0Cj4gKyAqIHVuZGVyICB0aGUgdGVybXMgb2YgIHRoZSBHTlUgR2VuZXJhbCAgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCmJ5IHRoZQo+ICsgKiBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247ICBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSAgTGljZW5zZSwgb3IKKGF0IHlvdXIKPiAr ICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICovCj4gKyNpbmNsdWRlIDxk cm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2V4eW5vc19kcm0uaD4KPiArCj4gKyNpbmNsdWRl IDxsaW51eC9jbGsuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgo+ICsjaW5jbHVk ZSA8bGludXgva2VybmVsLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPgo+ICsjaW5jbHVkZSA8 bGludXgvb2ZfZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4K PiArI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KPiArCj4gKyNpbmNsdWRlIDx2aWRlby9v Zl9kaXNwbGF5X3RpbWluZy5oPgo+ICsjaW5jbHVkZSA8dmlkZW8vb2ZfdmlkZW9tb2RlLmg+Cj4g KyNpbmNsdWRlIDx2aWRlby9zYW1zdW5nX2RlY29uLmg+Cj4gKwo+ICsjaW5jbHVkZSAiZXh5bm9z X2RybV9jcnRjLmgiCj4gKyNpbmNsdWRlICJleHlub3NfZHJtX2Rydi5oIgo+ICsjaW5jbHVkZSAi ZXh5bm9zX2RybV9mYmRldi5oIgo+ICsjaW5jbHVkZSAiZXh5bm9zX2RybV9pb21tdS5oIgo+ICsK PiArLyoKPiArICogREVDT04gc3RhbmRzIGZvciBEaXNwbGF5IGFuZCBFbmhhbmNlbWVudCBjb250 cm9sbGVyLCBhbmQKPiArICogYXMgYSBkaXNwbGF5IGNvbnRyb2xsZXIsIGl0IHRyYW5zZmVycyBj b250ZW50cyBkcmF3biBvbiBtZW1vcnkKPiArICogdG8gYSBMQ0QgUGFuZWwgdGhyb3VnaCBEaXNw bGF5IEludGVyZmFjZXMgc3VjaCBhcyBSR0Igb3IKPiArICogQ1BVIEludGVyZmFjZS4KPiArICov Cj4gKwo+ICsjZGVmaW5lIERFQ09OX0RFRkFVTFRfRlJBTUVSQVRFIDYwCj4gKyNkZWZpbmUgUkVT RVRfVElNRU9VVCAyMDAKPiArI2RlZmluZSBNSU5fRkJfV0lEVEhfRk9SXzE2V09SRF9CVVJTVCAx MjgKPiArCj4gKyNkZWZpbmUgV0lORE9XU19OUgkyCgpJIGtub3cgdGhhdCBERUNPTiBzdXBwb3J0 cyBmaXZlIG92ZXJsYXlzLgoKPiArCj4gKyNkZWZpbmUgZ2V0X2RlY29uX21hbmFnZXIobWdyKQpw bGF0Zm9ybV9nZXRfZHJ2ZGF0YSh0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KSkKPiArCj4gK3N0cnVj dCBkZWNvbl93aW5fZGF0YSB7Cj4gKwl1bnNpZ25lZCBpbnQJCW92bF94Owo+ICsJdW5zaWduZWQg aW50CQlvdmxfeTsKPiArCXVuc2lnbmVkIGludAkJb2Zmc2V0X3g7Cj4gKwl1bnNpZ25lZCBpbnQJ CW9mZnNldF95Owo+ICsJdW5zaWduZWQgaW50CQlvdmxfd2lkdGg7Cj4gKwl1bnNpZ25lZCBpbnQJ CW92bF9oZWlnaHQ7Cj4gKwl1bnNpZ25lZCBpbnQJCWZiX3dpZHRoOwo+ICsJdW5zaWduZWQgaW50 CQlmYl9oZWlnaHQ7Cj4gKwl1bnNpZ25lZCBpbnQJCWJwcDsKPiArCXVuc2lnbmVkIGludAkJcGl4 ZWxfZm9ybWF0Owo+ICsJZG1hX2FkZHJfdAkJZG1hX2FkZHI7Cj4gKwlib29sCQkJZW5hYmxlZDsK PiArCWJvb2wJCQlyZXN1bWU7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgZGVjb25fY29udGV4dCB7Cj4g KwlzdHJ1Y3QgZGV2aWNlCQkJKmRldjsKPiArCXN0cnVjdCBkcm1fZGV2aWNlCQkqZHJtX2RldjsK PiArCXN0cnVjdCBjbGsJCQkqcGNsazsKPiArCXN0cnVjdCBjbGsJCQkqYWNsazsKPiArCXN0cnVj dCBjbGsJCQkqZWNsazsKPiArCXN0cnVjdCBjbGsJCQkqdmNsazsKPiArCXN0cnVjdCBjbGsJCQkq ZHNkOwo+ICsJc3RydWN0IGNsawkJCSpsaF9kaXNwMTsKPiArCXN0cnVjdCBjbGsJCQkqYWNsa19k aXNwOwo+ICsJc3RydWN0IGNsawkJCSpsaF9kaXNwMDsKPiArCXZvaWQgX19pb21lbQkJCSpyZWdz Owo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUJCW1vZGU7Cj4gKwlzdHJ1Y3QgZGVjb25fd2lu X2RhdGEJCXdpbl9kYXRhW1dJTkRPV1NfTlJdOwo+ICsJdW5zaWduZWQgaW50CQkJZGVmYXVsdF93 aW47Cj4gKwl1bnNpZ25lZCBsb25nCQkJaXJxX2ZsYWdzOwo+ICsJdTMyCQkJCXZpZGNvbjE7Cj4g Kwlib29sCQkJCXN1c3BlbmRlZDsKPiArCWludAkJCQlwaXBlOwo+ICsJd2FpdF9xdWV1ZV9oZWFk X3QJCXdhaXRfdnN5bmNfcXVldWU7Cj4gKwlhdG9taWNfdAkJCXdhaXRfdnN5bmNfZXZlbnQ7Cj4g Kwo+ICsJc3RydWN0IGV4eW5vc19kcm1fcGFuZWxfaW5mbyBwYW5lbDsKPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRlY29uX2RyaXZlcl9kdF9tYXRjaFtdID0g ewo+ICsJeyAuY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczctZGVjb24ifSwKCldBUk5JTkc6 IERUIGNvbXBhdGlibGUgc3RyaW5nICJzYW1zdW5nLGV4eW5vczctZGVjb24iIGFwcGVhcnMKdW4t ZG9jdW1lbnRlZCAtLSBjaGVjayAuL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy8K Cj4gKwl7fSwKPiArfTsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZGVjb25fZHJpdmVyX2R0 X21hdGNoKTsKPiArCj4gK3N0YXRpYyB2b2lkIGRlY29uX3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3Qg ZXh5bm9zX2RybV9tYW5hZ2VyICptZ3IpCj4gK3sKPiArCXN0cnVjdCBkZWNvbl9jb250ZXh0ICpj dHggPSBtZ3ItPmN0eDsKPiArCj4gKwlpZiAoY3R4LT5zdXNwZW5kZWQpCj4gKwkJcmV0dXJuOwo+ ICsKPiArCWF0b21pY19zZXQoJmN0eC0+d2FpdF92c3luY19ldmVudCwgMSk7Cj4gKwo+ICsJLyoK PiArCSAqIHdhaXQgZm9yIGRlY29uIHRvIHNpZ25hbCBWU1lOQyBpbnRlcnJ1cHQgb3IgcmV0dXJu IGFmdGVyCj4gKwkgKiB0aW1lb3V0IHdoaWNoIGlzIHNldCB0byA1MG1zIChyZWZyZXNoIHJhdGUg b2YgMjApLgo+ICsJICovCj4gKwlpZiAoIXdhaXRfZXZlbnRfdGltZW91dChjdHgtPndhaXRfdnN5 bmNfcXVldWUsCj4gKwkJCQkhYXRvbWljX3JlYWQoJmN0eC0+d2FpdF92c3luY19ldmVudCksCj4g KwkJCQlIWi8yMCkpCj4gKwkJRFJNX0RFQlVHX0tNUygidmJsYW5rIHdhaXQgdGltZWQgb3V0Llxu Iik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRlY29uX2NsZWFyX2NoYW5uZWwoc3RydWN0IGV4 eW5vc19kcm1fbWFuYWdlciAqbWdyKQo+ICt7Cj4gKwlzdHJ1Y3QgZGVjb25fY29udGV4dCAqY3R4 ID0gbWdyLT5jdHg7Cj4gKwlpbnQgd2luLCBjaF9lbmFibGVkID0gMDsKPiArCj4gKwlEUk1fREVC VUdfS01TKCIlc1xuIiwgX19GSUxFX18pOwo+ICsKPiArCS8qIENoZWNrIGlmIGFueSBjaGFubmVs IGlzIGVuYWJsZWQuICovCj4gKwlmb3IgKHdpbiA9IDA7IHdpbiA8IFdJTkRPV1NfTlI7IHdpbisr KSB7Cj4gKwkJdTMyIHZhbCA9IHJlYWRsKGN0eC0+cmVncyArIFdJTkNPTih3aW4pKTsKPiArCj4g KwkJaWYgKHZhbCAmIFdJTkNPTnhfRU5XSU4pIHsKPiArCQkJdmFsICY9IH5XSU5DT054X0VOV0lO Owo+ICsJCQl3cml0ZWwodmFsLCBjdHgtPnJlZ3MgKyBXSU5DT04od2luKSk7Cj4gKwkJCWNoX2Vu YWJsZWQgPSAxOwo+ICsJCX0KPiArCX0KPiArCj4gKwkvKiBXYWl0IGZvciB2c3luYywgYXMgZGlz YWJsZSBjaGFubmVsIHRha2VzIGVmZmVjdCBhdCBuZXh0IHZzeW5jICovCj4gKwlpZiAoY2hfZW5h YmxlZCkgewo+ICsJCXVuc2lnbmVkIGludCBzdGF0ZSA9IGN0eC0+c3VzcGVuZGVkOwo+ICsKPiAr CQljdHgtPnN1c3BlbmRlZCA9IDA7Cj4gKwkJZGVjb25fd2FpdF9mb3JfdmJsYW5rKG1ncik7Cj4g KwkJY3R4LT5zdXNwZW5kZWQgPSBzdGF0ZTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIGludCBk ZWNvbl9tZ3JfaW5pdGlhbGl6ZShzdHJ1Y3QgZXh5bm9zX2RybV9tYW5hZ2VyICptZ3IsCj4gKwkJ CXN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZGVjb25fY29udGV4 dCAqY3R4ID0gbWdyLT5jdHg7Cj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wcml2YXRlICpwcml2ID0g ZHJtX2Rldi0+ZGV2X3ByaXZhdGU7Cj4gKwo+ICsJbWdyLT5kcm1fZGV2ID0gY3R4LT5kcm1fZGV2 ID0gZHJtX2RldjsKPiArCW1nci0+cGlwZSA9IGN0eC0+cGlwZSA9IHByaXYtPnBpcGUrKzsKPiAr Cj4gKwkvKiBhdHRhY2ggdGhpcyBzdWIgZHJpdmVyIHRvIGlvbW11IG1hcHBpbmcgaWYgc3VwcG9y dGVkLiAqLwo+ICsJaWYgKGlzX2RybV9pb21tdV9zdXBwb3J0ZWQoY3R4LT5kcm1fZGV2KSkgewo+ ICsJCS8qCj4gKwkJICogSWYgYW55IGNoYW5uZWwgaXMgYWxyZWFkeSBhY3RpdmUsIGlvbW11IHdp bGwgdGhyb3cKPiArCQkgKiBhIFBBR0UgRkFVTFQgd2hlbiBlbmFibGVkLiBTbyBjbGVhciBhbnkg Y2hhbm5lbCBpZiBlbmFibGVkLgo+ICsJCSAqLwo+ICsJCWRlY29uX2NsZWFyX2NoYW5uZWwobWdy KTsKPiArCQlkcm1faW9tbXVfYXR0YWNoX2RldmljZShjdHgtPmRybV9kZXYsIGN0eC0+ZGV2KTsK PiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZGVjb25fbWdy X3JlbW92ZShzdHJ1Y3QgZXh5bm9zX2RybV9tYW5hZ2VyICptZ3IpCj4gK3sKPiArCXN0cnVjdCBk ZWNvbl9jb250ZXh0ICpjdHggPSBtZ3ItPmN0eDsKPiArCj4gKwkvKiBkZXRhY2ggdGhpcyBzdWIg ZHJpdmVyIGZyb20gaW9tbXUgbWFwcGluZyBpZiBzdXBwb3J0ZWQuICovCj4gKwlpZiAoaXNfZHJt X2lvbW11X3N1cHBvcnRlZChjdHgtPmRybV9kZXYpKQo+ICsJCWRybV9pb21tdV9kZXRhY2hfZGV2 aWNlKGN0eC0+ZHJtX2RldiwgY3R4LT5kZXYpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdTMyIGRlY29u X2NhbGNfY2xrZGl2KHN0cnVjdCBkZWNvbl9jb250ZXh0ICpjdHgsCj4gKwkJY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4gK3sKPiArCXVuc2lnbmVkIGxvbmcgaWRlYWxfY2xr ID0gbW9kZS0+aHRvdGFsICogbW9kZS0+dnRvdGFsICogbW9kZS0+dnJlZnJlc2g7Cj4gKwl1MzIg Y2xrZGl2Owo+ICsKPiArCS8qIEZpbmQgdGhlIGNsb2NrIGRpdmlkZXIgdmFsdWUgdGhhdCBnZXRz IHVzIGNsb3Nlc3QgdG8gaWRlYWxfY2xrICovCj4gKwljbGtkaXYgPSBESVZfUk9VTkRfVVAoY2xr X2dldF9yYXRlKGN0eC0+dmNsayksIGlkZWFsX2Nsayk7Cj4gKwo+ICsJcmV0dXJuIChjbGtkaXYg PCAweDEwMCkgPyBjbGtkaXYgOiAweGZmOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBkZWNvbl9t b2RlX2ZpeHVwKHN0cnVjdCBleHlub3NfZHJtX21hbmFnZXIgKm1nciwKPiArCQljb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiArCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq YWRqdXN0ZWRfbW9kZSkKPiArewo+ICsJaWYgKGFkanVzdGVkX21vZGUtPnZyZWZyZXNoID09IDAp Cj4gKwkJYWRqdXN0ZWRfbW9kZS0+dnJlZnJlc2ggPSBERUNPTl9ERUZBVUxUX0ZSQU1FUkFURTsK PiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZGVjb25fbW9kZV9z ZXQoc3RydWN0IGV4eW5vc19kcm1fbWFuYWdlciAqbWdyLAo+ICsJCWNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICppbl9tb2RlKQo+ICt7Cj4gKwlzdHJ1Y3QgZGVjb25fY29udGV4dCAqY3R4 ID0gbWdyLT5jdHg7Cj4gKwo+ICsJZHJtX21vZGVfY29weSgmY3R4LT5tb2RlLCBpbl9tb2RlKTsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgZGVjb25fY29tbWl0KHN0cnVjdCBleHlub3NfZHJtX21h bmFnZXIgKm1ncikKPiArewo+ICsJc3RydWN0IGRlY29uX2NvbnRleHQgKmN0eCA9IG1nci0+Y3R4 Owo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY3R4LT5tb2RlOwo+ICsJdTMy IHZhbCwgY2xrZGl2Owo+ICsJaW50IHZzeW5jX2xlbiwgdmJwZCwgdmZwZCwgaHN5bmNfbGVuLCBo YnBkLCBoZnBkOwo+ICsKPiArCWlmIChjdHgtPnN1c3BlbmRlZCkKPiArCQlyZXR1cm47Cj4gKwo+ ICsJLyogbm90aGluZyB0byBkbyBpZiB3ZSBoYXZlbid0IHNldCB0aGUgbW9kZSB5ZXQgKi8KPiAr CWlmIChtb2RlLT5odG90YWwgPT0gMCB8fCBtb2RlLT52dG90YWwgPT0gMCkKPiArCQlyZXR1cm47 Cj4gKwo+ICsgICAgICAvKiBzZXR1cCB2ZXJ0aWNhbCB0aW1pbmcgdmFsdWVzLiAqLwo+ICsJdnN5 bmNfbGVuID0gbW9kZS0+Y3J0Y192c3luY19lbmQgLSBtb2RlLT5jcnRjX3ZzeW5jX3N0YXJ0Owo+ ICsJdmJwZCA9IG1vZGUtPmNydGNfdnRvdGFsIC0gbW9kZS0+Y3J0Y192c3luY19lbmQ7Cj4gKwl2 ZnBkID0gbW9kZS0+Y3J0Y192c3luY19zdGFydCAtIG1vZGUtPmNydGNfdmRpc3BsYXk7Cj4gKwo+ ICsJdmFsID0gVklEVENPTjBfVkJQRCh2YnBkIC0gMSkgfCBWSURUQ09OMF9WRlBEKHZmcGQgLSAx KTsKPiArCXdyaXRlbCh2YWwsIGN0eC0+cmVncyArIFZJRFRDT04wKTsKCkNoZWNrIFZJRFRDT04w fjMgcmVnaXN0ZXJzLiBUaGVzZSByZWdpc3RlcnMgb2YgRXh5bm9zNTQzMyBhbmQgRXh5bm9zNTQz MApoYXZlIGRpZmZlcmVudCBvZmZzZXRzIHNvIHlvdSB3b3VsZCBuZWVkIHRvIGNvbnNpZGVyIHRo ZSBkaWZmZXJlbmNlcy4KCj4gKwo+ICsJdmFsID0gVklEVENPTjFfVlNQVyh2c3luY19sZW4gLSAx KTsKPiArCXdyaXRlbCh2YWwsIGN0eC0+cmVncyArIFZJRFRDT04xKTsKCkRpdHRvCgo+ICsKPiAr CS8qIHNldHVwIGhvcml6b250YWwgdGltaW5nIHZhbHVlcy4gICovCj4gKwloc3luY19sZW4gPSBt b2RlLT5jcnRjX2hzeW5jX2VuZCAtIG1vZGUtPmNydGNfaHN5bmNfc3RhcnQ7Cj4gKwloYnBkID0g bW9kZS0+Y3J0Y19odG90YWwgLSBtb2RlLT5jcnRjX2hzeW5jX2VuZDsKPiArCWhmcGQgPSBtb2Rl LT5jcnRjX2hzeW5jX3N0YXJ0IC0gbW9kZS0+Y3J0Y19oZGlzcGxheTsKPiArCj4gKwkvKiBzZXR1 cCBob3Jpem9udGFsIHRpbWluZyB2YWx1ZXMuICAqLwo+ICsJdmFsID0gVklEVENPTjJfSEJQRCho YnBkIC0gMSkgfCBWSURUQ09OMl9IRlBEKGhmcGQgLSAxKTsKPiArCXdyaXRlbCh2YWwsIGN0eC0+ cmVncyArIFZJRFRDT04yKTsKCkRpdHRvCgo+ICsKPiArCXZhbCA9IFZJRFRDT04zX0hTUFcoaHN5 bmNfbGVuIC0gMSk7Cj4gKwl3cml0ZWwodmFsLCBjdHgtPnJlZ3MgKyBWSURUQ09OMyk7CgpEaXR0 bwoKPiArCj4gKwkvKiBzZXR1cCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBkaXNwbGF5IHNpemUu ICovCj4gKwl2YWwgPSBWSURUQ09ONF9MSU5FVkFMKG1vZGUtPnZkaXNwbGF5IC0gMSkgfAo+ICsJ ICAgICAgIFZJRFRDT040X0hPWlZBTChtb2RlLT5oZGlzcGxheSAtIDEpOwo+ICsJd3JpdGVsKHZh bCwgY3R4LT5yZWdzICsgVklEVENPTjQpOwo+ICsKPiArCXdyaXRlbChtb2RlLT52ZGlzcGxheSAt IDEsIGN0eC0+cmVncyArIExJTkVDTlRfT1BfVEhSRVNIT0xEKTsKPiArCj4gKwkvKgo+ICsJICog ZmllbGRzIG9mIHJlZ2lzdGVyIHdpdGggcHJlZml4ICdfRicgd291bGQgYmUgdXBkYXRlZAo+ICsJ ICogYXQgdnN5bmMoc2FtZSBhcyBkbWEgc3RhcnQpCj4gKwkgKi8KPiArCXZhbCA9IFZJRENPTjBf RU5WSUQgfCBWSURDT04wX0VOVklEX0Y7Cj4gKwl3cml0ZWwodmFsLCBjdHgtPnJlZ3MgKyBWSURD T04wKTsKPiArCj4gKwljbGtkaXYgPSBkZWNvbl9jYWxjX2Nsa2RpdihjdHgsIG1vZGUpOwo+ICsJ aWYgKGNsa2RpdiA+IDEpIHsKPiArCQl2YWwgPSBWQ0xLQ09OMV9DTEtWQUxfTlVNX1ZDTEsoY2xr ZGl2IC0gMSk7Cj4gKwkJd3JpdGVsKHZhbCwgY3R4LT5yZWdzICsgVkNMS0NPTjEpOwo+ICsJCXdy aXRlbCh2YWwsIGN0eC0+cmVncyArIFZDTEtDT04yKTsKPiArCX0KPiArCj4gKwl2YWwgPSByZWFk bChjdHgtPnJlZ3MgKyBERUNPTl9VUERBVEUpOwo+ICsJdmFsIHw9IERFQ09OX1VQREFURV9TVEFO REFMT05FX0Y7Cj4gKwl3cml0ZWwodmFsLCBjdHgtPnJlZ3MgKyBERUNPTl9VUERBVEUpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IGRlY29uX2VuYWJsZV92Ymxhbmsoc3RydWN0IGV4eW5vc19kcm1f bWFuYWdlciAqbWdyKQo+ICt7Cj4gKwlzdHJ1Y3QgZGVjb25fY29udGV4dCAqY3R4ID0gbWdyLT5j dHg7Cj4gKwl1MzIgdmFsOwo+ICsKPiArCWlmIChjdHgtPnN1c3BlbmRlZCkKPiArCQlyZXR1cm4g LUVQRVJNOwo+ICsKPiArCWlmICghdGVzdF9hbmRfc2V0X2JpdCgwLCAmY3R4LT5pcnFfZmxhZ3Mp KSB7Cj4gKwkJdmFsID0gcmVhZGwoY3R4LT5yZWdzICsgVklESU5UQ09OMCk7Cj4gKwo+ICsJCXZh bCB8PSBWSURJTlRDT04wX0lOVF9FTkFCTEU7Cj4gKwkJdmFsIHw9IFZJRElOVENPTjBfSU5UX0ZS QU1FOwo+ICsKPiArCQl2YWwgJj0gflZJRElOVENPTjBfRlJBTUVTRUwwX01BU0s7Cj4gKwkJdmFs IHw9IFZJRElOVENPTjBfRlJBTUVTRUwwX1ZTWU5DOwo+ICsKPiArCQl3cml0ZWwodmFsLCBjdHgt PnJlZ3MgKyBWSURJTlRDT04wKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgZGVjb25fZGlzYWJsZV92Ymxhbmsoc3RydWN0IGV4eW5vc19kcm1fbWFuYWdl ciAqbWdyKQo+ICt7Cj4gKwlzdHJ1Y3QgZGVjb25fY29udGV4dCAqY3R4ID0gbWdyLT5jdHg7Cj4g Kwl1MzIgdmFsOwo+ICsKPiArCWlmIChjdHgtPnN1c3BlbmRlZCkKPiArCQlyZXR1cm47Cj4gKwo+ ICsJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdCgwLCAmY3R4LT5pcnFfZmxhZ3MpKSB7Cj4gKwkJdmFs ID0gcmVhZGwoY3R4LT5yZWdzICsgVklESU5UQ09OMCk7Cj4gKwo+ICsJCXZhbCAmPSB+VklESU5U Q09OMF9JTlRfRlJBTUU7Cj4gKwkJdmFsICY9IH5WSURJTlRDT04wX0lOVF9FTkFCTEU7Cj4gKwo+ ICsJCXdyaXRlbCh2YWwsIGN0eC0+cmVncyArIFZJRElOVENPTjApOwo+ICsJfQo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBkZWNvbl93aW5fbW9kZV9zZXQoc3RydWN0IGV4eW5vc19kcm1fbWFuYWdl ciAqbWdyLAo+ICsJCQlzdHJ1Y3QgZXh5bm9zX2RybV9vdmVybGF5ICpvdmVybGF5KQo+ICt7Cj4g KwlzdHJ1Y3QgZGVjb25fY29udGV4dCAqY3R4ID0gbWdyLT5jdHg7Cj4gKwlzdHJ1Y3QgZGVjb25f d2luX2RhdGEgKndpbl9kYXRhOwo+ICsJaW50IHdpbiwgcGFkZGluZzsKPiArCj4gKwlpZiAoIW92 ZXJsYXkpIHsKPiArCQlEUk1fRVJST1IoIm92ZXJsYXkgaXMgTlVMTFxuIik7Cj4gKwkJcmV0dXJu Owo+ICsJfQo+ICsKPiArCXdpbiA9IG92ZXJsYXktPnpwb3M7Cj4gKwlpZiAod2luID09IERFRkFV TFRfWlBPUykKPiArCQl3aW4gPSBjdHgtPmRlZmF1bHRfd2luOwo+ICsKPiArCWlmICh3aW4gPCAw IHx8IHdpbiA+PSBXSU5ET1dTX05SKQo+ICsJCXJldHVybjsKPiArCj4gKwo+ICsJd2luX2RhdGEg PSAmY3R4LT53aW5fZGF0YVt3aW5dOwo+ICsKPiArCXBhZGRpbmcgPSAob3ZlcmxheS0+cGl0Y2gg LyAob3ZlcmxheS0+YnBwID4+IDMpKSAtIG92ZXJsYXktPmZiX3dpZHRoOwo+ICsJd2luX2RhdGEt Pm9mZnNldF94ID0gb3ZlcmxheS0+ZmJfeDsKPiArCXdpbl9kYXRhLT5vZmZzZXRfeSA9IG92ZXJs YXktPmZiX3k7Cj4gKwl3aW5fZGF0YS0+ZmJfd2lkdGggPSBvdmVybGF5LT5mYl93aWR0aCArIHBh ZGRpbmc7Cj4gKwl3aW5fZGF0YS0+ZmJfaGVpZ2h0ID0gb3ZlcmxheS0+ZmJfaGVpZ2h0Owo+ICsJ d2luX2RhdGEtPm92bF94ID0gb3ZlcmxheS0+Y3J0Y194Owo+ICsJd2luX2RhdGEtPm92bF95ID0g b3ZlcmxheS0+Y3J0Y195Owo+ICsJd2luX2RhdGEtPm92bF93aWR0aCA9IG92ZXJsYXktPmNydGNf d2lkdGg7Cj4gKwl3aW5fZGF0YS0+b3ZsX2hlaWdodCA9IG92ZXJsYXktPmNydGNfaGVpZ2h0Owo+ ICsJd2luX2RhdGEtPmRtYV9hZGRyID0gb3ZlcmxheS0+ZG1hX2FkZHJbMF07Cj4gKwl3aW5fZGF0 YS0+YnBwID0gb3ZlcmxheS0+YnBwOwo+ICsJd2luX2RhdGEtPnBpeGVsX2Zvcm1hdCA9IG92ZXJs YXktPnBpeGVsX2Zvcm1hdDsKPiArCj4gKwlEUk1fREVCVUdfS01TKCJvZmZzZXRfeCA9ICVkLCBv ZmZzZXRfeSA9ICVkXG4iLAo+ICsJCQl3aW5fZGF0YS0+b2Zmc2V0X3gsIHdpbl9kYXRhLT5vZmZz ZXRfeSk7Cj4gKwlEUk1fREVCVUdfS01TKCJvdmxfd2lkdGggPSAlZCwgb3ZsX2hlaWdodCA9ICVk XG4iLAo+ICsJCQl3aW5fZGF0YS0+b3ZsX3dpZHRoLCB3aW5fZGF0YS0+b3ZsX2hlaWdodCk7Cj4g KwlEUk1fREVCVUdfS01TKCJwYWRkciA9IDB4JWx4XG4iLCAodW5zaWduZWQgbG9uZyl3aW5fZGF0 YS0+ZG1hX2FkZHIpOwo+ICsJRFJNX0RFQlVHX0tNUygiZmJfd2lkdGggPSAlZCwgY3J0Y193aWR0 aCA9ICVkXG4iLAo+ICsJCQlvdmVybGF5LT5mYl93aWR0aCwgb3ZlcmxheS0+Y3J0Y193aWR0aCk7 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRlY29uX3dpbl9zZXRfcGl4Zm10KHN0cnVjdCBkZWNv bl9jb250ZXh0ICpjdHgsIHVuc2lnbmVkCmludCB3aW4pCj4gK3sKPiArCXN0cnVjdCBkZWNvbl93 aW5fZGF0YSAqd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVt3aW5dOwo+ICsJdW5zaWduZWQgbG9u ZyB2YWw7Cj4gKwo+ICsJdmFsID0gcmVhZGwoY3R4LT5yZWdzICsgV0lOQ09OKHdpbikpOwo+ICsJ dmFsICY9IH5XSU5DT054X0JQUE1PREVfTUFTSzsKPiArCj4gKwlzd2l0Y2ggKHdpbl9kYXRhLT5w aXhlbF9mb3JtYXQpIHsKPiArCWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6Cj4gKwkJdmFsIHw9IFdJ TkNPTnhfQlBQTU9ERV8xNkJQUF81NjU7Cj4gKwkJdmFsIHw9IFdJTkNPTnhfQlVSU1RMRU5fMTZX T1JEOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4Ogo+ICsJCXZhbCB8 PSBXSU5DT054X0JQUE1PREVfMjRCUFBfeFJHQjsKPiArCQl2YWwgfD0gV0lOQ09OeF9CVVJTVExF Tl8xNldPUkQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6Cj4gKwkJ dmFsIHw9IFdJTkNPTnhfQlBQTU9ERV8yNEJQUF94QkdSOwo+ICsJCXZhbCB8PSBXSU5DT054X0JV UlNUTEVOXzE2V09SRDsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZPUk1BVF9SR0JYODg4ODoK PiArCQl2YWwgfD0gV0lOQ09OeF9CUFBNT0RFXzI0QlBQX1JHQng7Cj4gKwkJdmFsIHw9IFdJTkNP TnhfQlVSU1RMRU5fMTZXT1JEOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUlg4 ODg4Ogo+ICsJCXZhbCB8PSBXSU5DT054X0JQUE1PREVfMjRCUFBfQkdSeDsKPiArCQl2YWwgfD0g V0lOQ09OeF9CVVJTVExFTl8xNldPUkQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERSTV9GT1JNQVRf QVJHQjg4ODg6Cj4gKwkJdmFsIHw9IFdJTkNPTnhfQlBQTU9ERV8zMkJQUF9BUkdCIHwgV0lOQ09O eF9CTERfUElYIHwKPiArCQkJV0lOQ09OeF9BTFBIQV9TRUw7Cj4gKwkJdmFsIHw9IFdJTkNPTnhf QlVSU1RMRU5fMTZXT1JEOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4 Ogo+ICsJCXZhbCB8PSBXSU5DT054X0JQUE1PREVfMzJCUFBfQUJHUiB8IFdJTkNPTnhfQkxEX1BJ WCB8Cj4gKwkJCVdJTkNPTnhfQUxQSEFfU0VMOwo+ICsJCXZhbCB8PSBXSU5DT054X0JVUlNUTEVO XzE2V09SRDsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZPUk1BVF9SR0JBODg4ODoKPiArCQl2 YWwgfD0gV0lOQ09OeF9CUFBNT0RFXzMyQlBQX1JHQkEgfCBXSU5DT054X0JMRF9QSVggfAo+ICsJ CQlXSU5DT054X0FMUEhBX1NFTDsKPiArCQl2YWwgfD0gV0lOQ09OeF9CVVJTVExFTl8xNldPUkQ7 Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERSTV9GT1JNQVRfQkdSQTg4ODg6Cj4gKwkJdmFsIHw9IFdJ TkNPTnhfQlBQTU9ERV8zMkJQUF9CR1JBIHwgV0lOQ09OeF9CTERfUElYIHwKPiArCQkJV0lOQ09O eF9BTFBIQV9TRUw7Cj4gKwkJdmFsIHw9IFdJTkNPTnhfQlVSU1RMRU5fMTZXT1JEOwo+ICsJCWJy ZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlEUk1fREVCVUdfS01TKCJpbnZhbGlkIHBpeGVsIHNpemUg c28gdXNpbmcgdW5wYWNrZWQgMjRicHAuXG4iKTsKPiArCj4gKwkJdmFsIHw9IFdJTkNPTnhfQlBQ TU9ERV8yNEJQUF94UkdCOwo+ICsJCXZhbCB8PSBXSU5DT054X0JVUlNUTEVOXzE2V09SRDsKPiAr CQlicmVhazsKPiArCX0KPiArCj4gKwlEUk1fREVCVUdfS01TKCJicHAgPSAlZFxuIiwgd2luX2Rh dGEtPmJwcCk7Cj4gKwo+ICsJLyoKPiArCSAqIEluIGNhc2Ugb2YgZXh5bm9zLCBzZXR0aW5nIGRt YS1idXJzdCB0byAxNldvcmQgY2F1c2VzIHBlcm1hbmVudAo+ICsJICogdGVhcmluZyBmb3IgdmVy eSBzbWFsbCBidWZmZXJzLCBlLmcuIGN1cnNvciBidWZmZXIuIEJ1cnN0IE1vZGUKPiArCSAqIHN3 aXRjaGluZyB3aGljaCBpcyBiYXNlZCBvbiBvdmVybGF5IHNpemUgaXMgbm90IHJlY29tbWVuZGVk IGFzCj4gKwkgKiBvdmVybGF5IHNpemUgdmFyaWVzIGFsb3QgdG93YXJkcyB0aGUgZW5kIG9mIHRo ZSBzY3JlZW4gYW5kIHJhcGlkCgpXQVJOSU5HOiAnYWxvdCcgbWF5IGJlIG1pc3NwZWxsZWQgLSBw ZXJoYXBzICdhIGxvdCc/Cgo+ICsJICogbW92ZW1lbnQgY2F1c2VzIHVuc3RhYmxlIERNQSB3aGlj aCByZXN1bHRzIGludG8gaW9tbXUgY3Jhc2gvdGVhci4KPiArCSAqLwo+ICsKPiArCWlmICh3aW5f ZGF0YS0+ZmJfd2lkdGggPCBNSU5fRkJfV0lEVEhfRk9SXzE2V09SRF9CVVJTVCkgewo+ICsJCXZh bCAmPSB+V0lOQ09OeF9CVVJTVExFTl9NQVNLOwo+ICsJCXZhbCB8PSBXSU5DT054X0JVUlNUTEVO XzhXT1JEOwo+ICsJfQo+ICsKPiArCXdyaXRlbCh2YWwsIGN0eC0+cmVncyArIFdJTkNPTih3aW4p KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZGVjb25fd2luX3NldF9jb2xrZXkoc3RydWN0IGRl Y29uX2NvbnRleHQgKmN0eCwgdW5zaWduZWQKaW50IHdpbikKPiArewo+ICsJdW5zaWduZWQgaW50 IGtleWNvbjAgPSAwLCBrZXljb24xID0gMDsKPiArCj4gKwlrZXljb24wID0gfihXeEtFWUNPTjBf S0VZQkxfRU4gfCBXeEtFWUNPTjBfS0VZRU5fRiB8Cj4gKwkJCVd4S0VZQ09OMF9ESVJDT04pIHwg V3hLRVlDT04wX0NPTVBLRVkoMCk7Cj4gKwo+ICsJa2V5Y29uMSA9IFd4S0VZQ09OMV9DT0xWQUwo MHhmZmZmZmZmZik7Cj4gKwo+ICsJd3JpdGVsKGtleWNvbjAsIGN0eC0+cmVncyArIFdLRVlDT04w X0JBU0Uod2luKSk7Cj4gKwl3cml0ZWwoa2V5Y29uMSwgY3R4LT5yZWdzICsgV0tFWUNPTjFfQkFT RSh3aW4pKTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIHNoYWRvd19wcm90ZWN0X3dpbigpIC0gZGlz YWJsZSB1cGRhdGluZyB2YWx1ZXMgZnJvbSBzaGFkb3cKcmVnaXN0ZXJzIGF0IHZzeW5jCj4gKyAq Cj4gKyAqIEB3aW46IHdpbmRvdyB0byBwcm90ZWN0IHJlZ2lzdGVycyBmb3IKPiArICogQHByb3Rl Y3Q6IDEgdG8gcHJvdGVjdCAoZGlzYWJsZSB1cGRhdGVzKQo+ICsgKi8KPiArc3RhdGljIHZvaWQg ZGVjb25fc2hhZG93X3Byb3RlY3Rfd2luKHN0cnVjdCBkZWNvbl9jb250ZXh0ICpjdHgsCj4gKwkJ CQkJCQlpbnQgd2luLCBib29sIHByb3RlY3QpCj4gK3sKPiArCXUzMiByZWcsIGJpdHMsIHZhbDsK PiArCj4gKwlyZWcgPSBTSEFET1dDT047Cj4gKwliaXRzID0gU0hBRE9XQ09OX1dJTnhfUFJPVEVD VCh3aW4pOwo+ICsKPiArCXZhbCA9IHJlYWRsKGN0eC0+cmVncyArIHJlZyk7Cj4gKwlpZiAocHJv dGVjdCkKPiArCQl2YWwgfD0gYml0czsKPiArCWVsc2UKPiArCQl2YWwgJj0gfmJpdHM7Cj4gKwl3 cml0ZWwodmFsLCBjdHgtPnJlZ3MgKyByZWcpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBkZWNv bl93aW5fY29tbWl0KHN0cnVjdCBleHlub3NfZHJtX21hbmFnZXIgKm1nciwgaW50IHpwb3MpCj4g K3sKPiArCXN0cnVjdCBkZWNvbl9jb250ZXh0ICpjdHggPSBtZ3ItPmN0eDsKPiArCXN0cnVjdCBk ZWNvbl93aW5fZGF0YSAqd2luX2RhdGE7Cj4gKwlpbnQgd2luID0genBvczsKPiArCXVuc2lnbmVk IGxvbmcgdmFsLCBhbHBoYSwgYmxlbmRlcTsKPiArCXVuc2lnbmVkIGludCBsYXN0X3g7Cj4gKwl1 bnNpZ25lZCBpbnQgbGFzdF95Owo+ICsKPiArCWlmIChjdHgtPnN1c3BlbmRlZCkKPiArCQlyZXR1 cm47Cj4gKwo+ICsJaWYgKHdpbiA9PSBERUZBVUxUX1pQT1MpCj4gKwkJd2luID0gY3R4LT5kZWZh dWx0X3dpbjsKPiArCj4gKwlpZiAod2luIDwgMCB8fCB3aW4gPj0gV0lORE9XU19OUikKPiArCQly ZXR1cm47Cj4gKwo+ICsJd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVt3aW5dOwo+ICsKPiArCS8q IElmIHN1c3BlbmRlZCwgZW5hYmxlIHRoaXMgb24gcmVzdW1lICovCj4gKwlpZiAoY3R4LT5zdXNw ZW5kZWQpIHsKPiArCQl3aW5fZGF0YS0+cmVzdW1lID0gdHJ1ZTsKPiArCQlyZXR1cm47Cj4gKwl9 Cj4gKwo+ICsJLyoKPiArCSAqIFNIQURPV0NPTi9QUlRDT04gcmVnaXN0ZXIgaXMgdXNlZCBmb3Ig ZW5hYmxpbmcgdGltaW5nLgo+ICsJICoKPiArCSAqIGZvciBleGFtcGxlLCBvbmNlIG9ubHkgd2lk dGggdmFsdWUgb2YgYSByZWdpc3RlciBpcyBzZXQsCj4gKwkgKiBpZiB0aGUgZG1hIGlzIHN0YXJ0 ZWQgdGhlbiBkZWNvbiBoYXJkd2FyZSBjb3VsZCBtYWxmdW5jdGlvbiBzbwo+ICsJICogd2l0aCBw cm90ZWN0IHdpbmRvdyBzZXR0aW5nLCB0aGUgcmVnaXN0ZXIgZmllbGRzIHdpdGggcHJlZml4ICdf RicKPiArCSAqIHdvdWxkbid0IGJlIHVwZGF0ZWQgYXQgdnN5bmMgYWxzbyBidXQgdXBkYXRlZCBv bmNlIHVucHJvdGVjdCB3aW5kb3cKPiArCSAqIGlzIHNldC4KPiArCSAqLwo+ICsKPiArCS8qIHBy b3RlY3Qgd2luZG93cyAqLwo+ICsJZGVjb25fc2hhZG93X3Byb3RlY3Rfd2luKGN0eCwgd2luLCB0 cnVlKTsKPiArCj4gKwkvKiBidWZmZXIgc3RhcnQgYWRkcmVzcyAqLwo+ICsJdmFsID0gKHVuc2ln bmVkIGxvbmcpd2luX2RhdGEtPmRtYV9hZGRyOwo+ICsJd3JpdGVsKHZhbCwgY3R4LT5yZWdzICsg VklEV19CVUZfU1RBUlQod2luKSk7Cj4gKwo+ICsJLyogYnVmZmVyIHNpemUgKi8KPiArCXdyaXRl bCh3aW5fZGF0YS0+ZmJfd2lkdGgsIGN0eC0+cmVncyArIFZJRFdfV0hPTEVfWCh3aW4pKTsKPiAr CXdyaXRlbCh3aW5fZGF0YS0+ZmJfaGVpZ2h0LCBjdHgtPnJlZ3MgKyBWSURXX1dIT0xFX1kod2lu KSk7Cj4gKwo+ICsJLyogb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgcmVhZCAq Lwo+ICsJd3JpdGVsKHdpbl9kYXRhLT5vZmZzZXRfeCwgY3R4LT5yZWdzICsgVklEV19PRkZTRVRf WCh3aW4pKTsKPiArCXdyaXRlbCh3aW5fZGF0YS0+b2Zmc2V0X3ksIGN0eC0+cmVncyArIFZJRFdf T0ZGU0VUX1kod2luKSk7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygic3RhcnQgYWRkciA9IDB4JWx4 XG4iLAo+ICsJCQkodW5zaWduZWQgbG9uZyl3aW5fZGF0YS0+ZG1hX2FkZHIpOwo+ICsJRFJNX0RF QlVHX0tNUygib3ZsX3dpZHRoID0gJWQsIG92bF9oZWlnaHQgPSAlZFxuIiwKPiArCQkJd2luX2Rh dGEtPm92bF93aWR0aCwgd2luX2RhdGEtPm92bF9oZWlnaHQpOwo+ICsKPiArCS8qIE9TRCBwb3Np dGlvbiAqLwo+ICsJdmFsID0gVklET1NEeEFfVE9QTEVGVF9YKHdpbl9kYXRhLT5vdmxfeCkgfAo+ ICsJCVZJRE9TRHhBX1RPUExFRlRfWSh3aW5fZGF0YS0+b3ZsX3kpOwo+ICsJd3JpdGVsKHZhbCwg Y3R4LT5yZWdzICsgVklET1NEX0Eod2luKSk7Cj4gKwo+ICsJbGFzdF94ID0gd2luX2RhdGEtPm92 bF94ICsgd2luX2RhdGEtPm92bF93aWR0aDsKPiArCWlmIChsYXN0X3gpCj4gKwkJbGFzdF94LS07 Cj4gKwlsYXN0X3kgPSB3aW5fZGF0YS0+b3ZsX3kgKyB3aW5fZGF0YS0+b3ZsX2hlaWdodDsKPiAr CWlmIChsYXN0X3kpCj4gKwkJbGFzdF95LS07Cj4gKwo+ICsJdmFsID0gVklET1NEeEJfQk9UUklH SFRfWChsYXN0X3gpIHwgVklET1NEeEJfQk9UUklHSFRfWShsYXN0X3kpOwo+ICsKPiArCXdyaXRl bCh2YWwsIGN0eC0+cmVncyArIFZJRE9TRF9CKHdpbikpOwo+ICsKPiArCURSTV9ERUJVR19LTVMo Im9zZCBwb3M6IHR4ID0gJWQsIHR5ID0gJWQsIGJ4ID0gJWQsIGJ5ID0gJWRcbiIsCj4gKwkJCXdp bl9kYXRhLT5vdmxfeCwgd2luX2RhdGEtPm92bF95LCBsYXN0X3gsIGxhc3RfeSk7Cj4gKwo+ICsJ CS8qIE9TRCBhbHBoYSAqLwo+ICsJCWFscGhhID0gVklET1NEeENfQUxQSEEwX1JfRigweDApIHwK PiArCQkJCVZJRE9TRHhDX0FMUEhBMF9HX0YoMHgwKSB8Cj4gKwkJCQlWSURPU0R4Q19BTFBIQTBf Ql9GKDB4MCk7Cj4gKwo+ICsJCXdyaXRlbChhbHBoYSwgY3R4LT5yZWdzICsgVklET1NEX0Mod2lu KSk7Cj4gKwo+ICsJCWFscGhhID0gVklET1NEeERfQUxQSEExX1JfRigweGZmKSB8Cj4gKwkJCQlW SURPU0R4RF9BTFBIQTFfR19GKDB4ZmYpIHwKPiArCQkJCVZJRE9TRHhEX0FMUEhBMV9CX0YoMHhm Zik7Cj4gKwo+ICsJCXdyaXRlbChhbHBoYSwgY3R4LT5yZWdzICsgVklET1NEX0Qod2luKSk7Cj4g Kwo+ICsJaWYgKHdpbiAhPSAwKSB7Cj4gKwkJYmxlbmRlcSA9IEJMRU5ERV9BX0ZVTkMoQkxFTkRF X0NPRUZfT05FKSB8Cj4gKwkJCUJMRU5ERV9CX0ZVTkMoQkxFTkRFX0NPRUZfWkVSTykgfAo+ICsJ CQlCTEVOREVfUF9GVU5DKEJMRU5ERV9DT0VGX1pFUk8pIHwKPiArCQkJQkxFTkRFX1FfRlVOQyhC TEVOREVfQ09FRl9aRVJPKTsKPiArCj4gKwkJd3JpdGVsKGJsZW5kZXEsIGN0eC0+cmVncyArIEJM RU5ERSh3aW4gLSAxKSk7Cj4gKwl9Cj4gKwo+ICsJZGVjb25fd2luX3NldF9waXhmbXQoY3R4LCB3 aW4pOwo+ICsKPiArCS8qIGhhcmR3YXJlIHdpbmRvdyAwIGRvZXNuJ3Qgc3VwcG9ydCBjb2xvciBr ZXkuICovCj4gKwlpZiAod2luICE9IDApCj4gKwkJZGVjb25fd2luX3NldF9jb2xrZXkoY3R4LCB3 aW4pOwo+ICsKPiArCS8qIHdpbmNvbiAqLwo+ICsJdmFsID0gcmVhZGwoY3R4LT5yZWdzICsgV0lO Q09OKHdpbikpOwo+ICsJdmFsIHw9IFdJTkNPTnhfVFJJUExFX0JVRl9NT0RFOwo+ICsJdmFsIHw9 IFdJTkNPTnhfRU5XSU47Cj4gKwl3cml0ZWwodmFsLCBjdHgtPnJlZ3MgKyBXSU5DT04od2luKSk7 Cj4gKwo+ICsJLyogRW5hYmxlIERNQSBjaGFubmVsIGFuZCB1bnByb3RlY3Qgd2luZG93cyAqLwo+ ICsJZGVjb25fc2hhZG93X3Byb3RlY3Rfd2luKGN0eCwgd2luLCBmYWxzZSk7Cj4gKwo+ICsJdmFs ID0gcmVhZGwoY3R4LT5yZWdzICsgREVDT05fVVBEQVRFKTsKPiArCXZhbCB8PSBERUNPTl9VUERB VEVfU1RBTkRBTE9ORV9GOwo+ICsJd3JpdGVsKHZhbCwgY3R4LT5yZWdzICsgREVDT05fVVBEQVRF KTsKPiArCj4gKwl3aW5fZGF0YS0+ZW5hYmxlZCA9IHRydWU7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkIGRlY29uX3dpbl9kaXNhYmxlKHN0cnVjdCBleHlub3NfZHJtX21hbmFnZXIgKm1nciwgaW50 IHpwb3MpCj4gK3sKPiArCXN0cnVjdCBkZWNvbl9jb250ZXh0ICpjdHggPSBtZ3ItPmN0eDsKPiAr CXN0cnVjdCBkZWNvbl93aW5fZGF0YSAqd2luX2RhdGE7Cj4gKwlpbnQgd2luID0genBvczsKPiAr CXUzMiB2YWw7Cj4gKwo+ICsJaWYgKHdpbiA9PSBERUZBVUxUX1pQT1MpCj4gKwkJd2luID0gY3R4 LT5kZWZhdWx0X3dpbjsKPiArCj4gKwlpZiAod2luIDwgMCB8fCB3aW4gPj0gV0lORE9XU19OUikK PiArCQlyZXR1cm47Cj4gKwo+ICsJd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVt3aW5dOwo+ICsK PiArCWlmIChjdHgtPnN1c3BlbmRlZCkgewo+ICsJCS8qIGRvIG5vdCByZXN1bWUgdGhpcyB3aW5k b3cqLwo+ICsJCXdpbl9kYXRhLT5yZXN1bWUgPSBmYWxzZTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4g Kwo+ICsJLyogcHJvdGVjdCB3aW5kb3dzICovCj4gKwlkZWNvbl9zaGFkb3dfcHJvdGVjdF93aW4o Y3R4LCB3aW4sIHRydWUpOwo+ICsKPiArCS8qIHdpbmNvbiAqLwo+ICsJdmFsID0gcmVhZGwoY3R4 LT5yZWdzICsgV0lOQ09OKHdpbikpOwo+ICsJdmFsICY9IH5XSU5DT054X0VOV0lOOwo+ICsJd3Jp dGVsKHZhbCwgY3R4LT5yZWdzICsgV0lOQ09OKHdpbikpOwo+ICsKPiArCWRlY29uX3NoYWRvd19w cm90ZWN0X3dpbihjdHgsIHdpbiwgZmFsc2UpOwo+ICsKPiArCXdpbl9kYXRhLT5lbmFibGVkID0g ZmFsc2U7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRlY29uX3dpbmRvd19zdXNwZW5kKHN0cnVj dCBleHlub3NfZHJtX21hbmFnZXIgKm1ncikKPiArewo+ICsJc3RydWN0IGRlY29uX2NvbnRleHQg KmN0eCA9IG1nci0+Y3R4Owo+ICsJc3RydWN0IGRlY29uX3dpbl9kYXRhICp3aW5fZGF0YTsKPiAr CWludCBpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBXSU5ET1dTX05SOyBpKyspIHsKPiArCQl3 aW5fZGF0YSA9ICZjdHgtPndpbl9kYXRhW2ldOwo+ICsJCXdpbl9kYXRhLT5yZXN1bWUgPSB3aW5f ZGF0YS0+ZW5hYmxlZDsKPiArCQlpZiAod2luX2RhdGEtPmVuYWJsZWQpCj4gKwkJCWRlY29uX3dp bl9kaXNhYmxlKG1nciwgaSk7Cj4gKwl9Cj4gKwlkZWNvbl93YWl0X2Zvcl92YmxhbmsobWdyKTsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgZGVjb25fd2luZG93X3Jlc3VtZShzdHJ1Y3QgZXh5bm9z X2RybV9tYW5hZ2VyICptZ3IpCj4gK3sKPiArCXN0cnVjdCBkZWNvbl9jb250ZXh0ICpjdHggPSBt Z3ItPmN0eDsKPiArCXN0cnVjdCBkZWNvbl93aW5fZGF0YSAqd2luX2RhdGE7Cj4gKwlpbnQgaTsK PiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgV0lORE9XU19OUjsgaSsrKSB7Cj4gKwkJd2luX2RhdGEg PSAmY3R4LT53aW5fZGF0YVtpXTsKPiArCQl3aW5fZGF0YS0+ZW5hYmxlZCA9IHdpbl9kYXRhLT5y ZXN1bWU7Cj4gKwkJd2luX2RhdGEtPnJlc3VtZSA9IGZhbHNlOwo+ICsJfQo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBkZWNvbl9hcHBseShzdHJ1Y3QgZXh5bm9zX2RybV9tYW5hZ2VyICptZ3IpCj4g K3sKPiArCXN0cnVjdCBkZWNvbl9jb250ZXh0ICpjdHggPSBtZ3ItPmN0eDsKPiArCXN0cnVjdCBk ZWNvbl93aW5fZGF0YSAqd2luX2RhdGE7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBp IDwgV0lORE9XU19OUjsgaSsrKSB7Cj4gKwkJd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVtpXTsK PiArCQlpZiAod2luX2RhdGEtPmVuYWJsZWQpCj4gKwkJCWRlY29uX3dpbl9jb21taXQobWdyLCBp KTsKPiArCQllbHNlCj4gKwkJCWRlY29uX3dpbl9kaXNhYmxlKG1nciwgaSk7Cj4gKwl9Cj4gKwo+ ICsJZGVjb25fY29tbWl0KG1ncik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZGVjb25fcmVnX3Jl c2V0KHN0cnVjdCBkZWNvbl9jb250ZXh0ICpjdHgpCj4gK3sKPiArCWludCB0cmllcyA9IFJFU0VU X1RJTUVPVVQ7Cj4gKwo+ICsJd3JpdGVsKFZJRENPTjBfU1dSRVNFVCwgY3R4LT5yZWdzICsgVklE Q09OMCk7Cj4gKwo+ICsJd2hpbGUgKHRyaWVzKSB7Cj4gKwkJaWYgKCEocmVhZGwoY3R4LT5yZWdz ICsgVklEQ09OMCkgJiBWSURDT04wX1NXUkVTRVQpKQo+ICsJCQlicmVhazsKPiArCQl1ZGVsYXko MTApOwo+ICsJCXRyaWVzLS07Cj4gKwl9Cj4gKwo+ICsJaWYgKCF0cmllcykgewo+ICsJCURSTV9F UlJPUigiRmFpbGVkIHRvIHJlc2V0IGRlY29uXG4iKTsKPiArCQlyZXR1cm4gLUVCVVNZOwo+ICsJ fQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBkZWNvbl9jbXVfZW5h YmxlKHN0cnVjdCBkZWNvbl9jb250ZXh0ICpjdHgpCj4gK3sKPiArCXdyaXRlbCh+REVDT05fQ01V X0FMTF9DTEtHQVRFX0VOQUJMRSwgY3R4LT5yZWdzICsgREVDT05fQ01VKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgZGVjb25fYmxlbmRfYWxwaGFfYml0cyhzdHJ1Y3QgZGVjb25fY29udGV4dCAq Y3R4KQo+ICt7Cj4gKwl3cml0ZWwoQkxFTkRDT05fTkVXXzhCSVRfQUxQSEFfVkFMVUUsIGN0eC0+ cmVncyArIEJMRU5EQ09OKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZGVjb25fc2V0X3ZpZG91 dChzdHJ1Y3QgZGVjb25fY29udGV4dCAqY3R4KQo+ICt7Cj4gKwl3cml0ZWwoVklET1VUQ09OMF9M Q0RfT04gfCBWSURPVVRDT04wX1JHQklGLCBjdHgtPnJlZ3MgKyBWSURPVVRDT04wKTsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgZGVjb25fc2V0X2NyYyhzdHJ1Y3QgZGVjb25fY29udGV4dCAqY3R4 KQo+ICt7Cj4gKwl1MzIgdmFsID0gcmVhZGwoY3R4LT5yZWdzICsgQ1JDQ1RSTCk7Cj4gKwo+ICsJ d3JpdGVsKHZhbCAmIH4oQ1JDQ1RSTF9DUkNDTEtFTiB8IENSQ0NUUkxfQ1JDRU4gfCBDUkNDVFJM X0NSQ1NUQVJUX0YpLAo+ICsJCQkJCQkJY3R4LT5yZWdzICsgQ1JDQ1RSTCk7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIGRlY29uX3NldF9jbGt2YWwoc3RydWN0IGRlY29uX2NvbnRleHQgKmN0eCkK PiArewo+ICsJd3JpdGVsKFZDTEtDT04wX0NMS1ZBTFVQIHwgVkNMS0NPTjBfVkNMS0ZSRUUsIGN0 eC0+cmVncyArIFZDTEtDT04wKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZGVjb25fc2V0X2Zp eHZjbGsoc3RydWN0IGRlY29uX2NvbnRleHQgKmN0eCkKPiArewo+ICsJd3JpdGVsKGN0eC0+dmlk Y29uMSwgY3R4LT5yZWdzICsgVklEQ09OMSgwKSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZGVj b25fcG93ZXJvbihzdHJ1Y3QgZXh5bm9zX2RybV9tYW5hZ2VyICptZ3IpCj4gK3sKPiArCXN0cnVj dCBkZWNvbl9jb250ZXh0ICpjdHggPSBtZ3ItPmN0eDsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYg KCFjdHgtPnN1c3BlbmRlZCkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwljdHgtPnN1c3BlbmRlZCA9 IGZhbHNlOwo+ICsKPiArCXBtX3J1bnRpbWVfZ2V0X3N5bmMoY3R4LT5kZXYpOwo+ICsKPiArCXJl dCA9IGNsa19wcmVwYXJlX2VuYWJsZShjdHgtPnBjbGspOwo+ICsJaWYgKHJldCA8IDApIHsKPiAr CQlEUk1fRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlX2VuYWJsZSB0aGUgcGNsayBbJWRdXG4iLCBy ZXQpOwo+ICsJCWdvdG8gcGNsa19lcnI7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY2xrX3ByZXBhcmVf ZW5hYmxlKGN0eC0+YWNsayk7Cj4gKwlpZiAgKHJldCA8IDApIHsKPiArCQlEUk1fRVJST1IoIkZh aWxlZCB0byBwcmVwYXJlX2VuYWJsZSB0aGUgYWNsayBbJWRdXG4iLCByZXQpOwo+ICsJCWdvdG8g YWNsa19lcnI7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGN0eC0+ZWNs ayk7Cj4gKwlpZiAgKHJldCA8IDApIHsKPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBwcmVwYXJl X2VuYWJsZSB0aGUgZWNsayBbJWRdXG4iLCByZXQpOwo+ICsJCWdvdG8gZWNsa19lcnI7Cj4gKwl9 Cj4gKwo+ICsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGN0eC0+dmNsayk7Cj4gKwlpZiAgKHJl dCA8IDApIHsKPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlX2VuYWJsZSB0aGUgdmNs ayBbJWRdXG4iLCByZXQpOwo+ICsJCWdvdG8gdmNsa19lcnI7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0g Y2xrX3ByZXBhcmVfZW5hYmxlKGN0eC0+ZHNkKTsKPiArCWlmICAocmV0IDwgMCkgewo+ICsJCURS TV9FUlJPUigiRmFpbGVkIHRvIHByZXBhcmVfZW5hYmxlIHRoZSBkc2QgWyVkXVxuIiwgcmV0KTsK PiArCQlnb3RvIGRzZF9lcnI7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxl KGN0eC0+bGhfZGlzcDEpOwo+ICsJaWYgIChyZXQgPCAwKSB7Cj4gKwkJRFJNX0VSUk9SKCJGYWls ZWQgdG8gcHJlcGFyZV9lbmFibGUgdGhlIGxoX2Rpc3AxIFslZF1cbiIsIHJldCk7Cj4gKwkJZ290 byBsaF9kaXNwMV9lcnI7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGN0 eC0+YWNsa19kaXNwKTsKPiArCWlmICAocmV0IDwgMCkgewo+ICsJCURSTV9FUlJPUigiRmFpbGVk IHRvIHByZXBhcmVfZW5hYmxlIHRoZSBhY2xrX2Rpc3AgWyVkXVxuIiwgcmV0KTsKPiArCQlnb3Rv IGFjbGtfZGlzcF9lcnI7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGN0 eC0+bGhfZGlzcDApOwo+ICsJaWYgIChyZXQgPCAwKSB7Cj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gcHJlcGFyZV9lbmFibGUgdGhlIGxoX2Rpc3AwIFslZF1cbiIsIHJldCk7Cj4gKwkJZ290byBs aF9kaXNwMF9lcnI7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gZGVjb25fcmVnX3Jlc2V0KG1nci0+Y3R4 KTsKPiArCWlmICAocmV0IDwgMCkgewo+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJlc2V0IGRl Y29uIFslZF1cbiIsIHJldCk7Cj4gKwkJZ290byBsaF9kaXNwMF9lcnI7Cj4gKwl9Cj4gKwo+ICsJ ZGVjb25fY211X2VuYWJsZShtZ3ItPmN0eCk7Cj4gKwlkZWNvbl9ibGVuZF9hbHBoYV9iaXRzKG1n ci0+Y3R4KTsKPiArCWRlY29uX3NldF92aWRvdXQobWdyLT5jdHgpOwo+ICsJZGVjb25fc2V0X2Ny YyhtZ3ItPmN0eCk7Cj4gKwlkZWNvbl9zZXRfZml4dmNsayhtZ3ItPmN0eCk7Cj4gKwlkZWNvbl9z ZXRfY2xrdmFsKG1nci0+Y3R4KTsKPiArCj4gKwkvKiBpZiB2Ymxhbmsgd2FzIGVuYWJsZWQgc3Rh dHVzLCBlbmFibGUgaXQgYWdhaW4uICovCj4gKwlpZiAodGVzdF9hbmRfY2xlYXJfYml0KDAsICZj dHgtPmlycV9mbGFncykpIHsKPiArCQlyZXQgPSBkZWNvbl9lbmFibGVfdmJsYW5rKG1ncik7Cj4g KwkJaWYgKHJldCkgewo+ICsJCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZS1lbmFibGUgdmJsYW5r IFslZF1cbiIsIHJldCk7Cj4gKwkJCWdvdG8gZW5hYmxlX3ZibGFua19lcnI7Cj4gKwkJfQo+ICsJ fQo+ICsKPiArCWRlY29uX3dpbmRvd19yZXN1bWUobWdyKTsKPiArCj4gKwlkZWNvbl9hcHBseSht Z3IpOwo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZW5hYmxlX3ZibGFua19lcnI6Cj4gKwljbGtf ZGlzYWJsZV91bnByZXBhcmUoY3R4LT5saF9kaXNwMCk7Cj4gK2xoX2Rpc3AwX2VycjoKPiArCWNs a19kaXNhYmxlX3VucHJlcGFyZShjdHgtPmFjbGtfZGlzcCk7Cj4gK2FjbGtfZGlzcF9lcnI6Cj4g KwljbGtfZGlzYWJsZV91bnByZXBhcmUoY3R4LT5saF9kaXNwMSk7Cj4gK2xoX2Rpc3AxX2VycjoK PiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShjdHgtPmRzZCk7Cj4gK2RzZF9lcnI6Cj4gKwljbGtf ZGlzYWJsZV91bnByZXBhcmUoY3R4LT52Y2xrKTsKPiArdmNsa19lcnI6Cj4gKwljbGtfZGlzYWJs ZV91bnByZXBhcmUoY3R4LT5lY2xrKTsKPiArZWNsa19lcnI6Cj4gKwljbGtfZGlzYWJsZV91bnBy ZXBhcmUoY3R4LT5hY2xrKTsKPiArYWNsa19lcnI6Cj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUo Y3R4LT5wY2xrKTsKPiArcGNsa19lcnI6Cj4gKwljdHgtPnN1c3BlbmRlZCA9IHRydWU7Cj4gKwly ZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGRlY29uX3Bvd2Vyb2ZmKHN0cnVjdCBl eHlub3NfZHJtX21hbmFnZXIgKm1ncikKPiArewo+ICsJc3RydWN0IGRlY29uX2NvbnRleHQgKmN0 eCA9IG1nci0+Y3R4Owo+ICsKPiArCWlmIChjdHgtPnN1c3BlbmRlZCkKPiArCQlyZXR1cm4gMDsK PiArCj4gKwkvKgo+ICsJICogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgd2luZG93cyBh cmUgZGlzYWJsZWQgYmVmb3JlIHdlCj4gKwkgKiBzdXNwZW5kIHRoYXQgY29ubmVjdG9yLiBPdGhl cndpc2Ugd2UgbWlnaHQgdHJ5IHRvIHNjYW4gZnJvbQo+ICsJICogYSBkZXN0cm95ZWQgYnVmZmVy IGxhdGVyLgo+ICsJICovCj4gKwlkZWNvbl93aW5kb3dfc3VzcGVuZChtZ3IpOwo+ICsKPiArCWNs a19kaXNhYmxlX3VucHJlcGFyZShjdHgtPnBjbGspOwo+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJl KGN0eC0+YWNsayk7Cj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoY3R4LT5lY2xrKTsKPiArCWNs a19kaXNhYmxlX3VucHJlcGFyZShjdHgtPnZjbGspOwo+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJl KGN0eC0+ZHNkKTsKPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShjdHgtPmxoX2Rpc3AxKTsKPiAr CWNsa19kaXNhYmxlX3VucHJlcGFyZShjdHgtPmFjbGtfZGlzcCk7Cj4gKwljbGtfZGlzYWJsZV91 bnByZXBhcmUoY3R4LT5saF9kaXNwMCk7Cj4gKwo+ICsJcG1fcnVudGltZV9wdXRfc3luYyhjdHgt PmRldik7Cj4gKwo+ICsJY3R4LT5zdXNwZW5kZWQgPSB0cnVlOwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGRlY29uX2RwbXMoc3RydWN0IGV4eW5vc19kcm1fbWFuYWdlciAq bWdyLCBpbnQgbW9kZSkKPiArewo+ICsJRFJNX0RFQlVHX0tNUygiJXMsICVkXG4iLCBfX0ZJTEVf XywgbW9kZSk7Cj4gKwo+ICsJc3dpdGNoIChtb2RlKSB7Cj4gKwljYXNlIERSTV9NT0RFX0RQTVNf T046Cj4gKwkJZGVjb25fcG93ZXJvbihtZ3IpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fTU9E RV9EUE1TX1NUQU5EQlk6Cj4gKwljYXNlIERSTV9NT0RFX0RQTVNfU1VTUEVORDoKPiArCWNhc2Ug RFJNX01PREVfRFBNU19PRkY6Cj4gKwkJZGVjb25fcG93ZXJvZmYobWdyKTsKPiArCQlicmVhazsK PiArCWRlZmF1bHQ6Cj4gKwkJRFJNX0RFQlVHX0tNUygidW5zcGVjaWZpZWQgbW9kZSAlZFxuIiwg bW9kZSk7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZXh5bm9z X2RybV9tYW5hZ2VyX29wcyBkZWNvbl9tYW5hZ2VyX29wcyA9IHsKPiArCS5kcG1zID0gZGVjb25f ZHBtcywKPiArCS5tb2RlX2ZpeHVwID0gZGVjb25fbW9kZV9maXh1cCwKPiArCS5tb2RlX3NldCA9 IGRlY29uX21vZGVfc2V0LAo+ICsJLmNvbW1pdCA9IGRlY29uX2NvbW1pdCwKPiArCS5lbmFibGVf dmJsYW5rID0gZGVjb25fZW5hYmxlX3ZibGFuaywKPiArCS5kaXNhYmxlX3ZibGFuayA9IGRlY29u X2Rpc2FibGVfdmJsYW5rLAo+ICsJLndhaXRfZm9yX3ZibGFuayA9IGRlY29uX3dhaXRfZm9yX3Zi bGFuaywKPiArCS53aW5fbW9kZV9zZXQgPSBkZWNvbl93aW5fbW9kZV9zZXQsCj4gKwkud2luX2Nv bW1pdCA9IGRlY29uX3dpbl9jb21taXQsCj4gKwkud2luX2Rpc2FibGUgPSBkZWNvbl93aW5fZGlz YWJsZSwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZXh5bm9zX2RybV9tYW5hZ2VyIGRlY29u X21hbmFnZXIgPSB7Cj4gKwkudHlwZSA9IEVYWU5PU19ESVNQTEFZX1RZUEVfTENELAo+ICsJLm9w cyA9ICZkZWNvbl9tYW5hZ2VyX29wcywKPiArfTsKPiArCj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBk ZWNvbl9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCj4gK3sKPiArCXN0cnVjdCBk ZWNvbl9jb250ZXh0ICpjdHggPSAoc3RydWN0IGRlY29uX2NvbnRleHQgKilkZXZfaWQ7Cj4gKwl1 MzIgdmFsOwo+ICsKPiArCXZhbCA9IHJlYWRsKGN0eC0+cmVncyArIFZJRElOVENPTjEpOwo+ICsK PiArCWlmICh2YWwgJiBWSURJTlRDT04xX0lOVF9GUkFNRSkKPiArCQkvKiBWU1lOQyBpbnRlcnJ1 cHQgKi8KPiArCQl3cml0ZWwoVklESU5UQ09OMV9JTlRfRlJBTUUsIGN0eC0+cmVncyArIFZJRElO VENPTjEpOwo+ICsKPiArCS8qIGNoZWNrIHRoZSBjcnRjIGlzIGRldGFjaGVkIGFscmVhZHkgZnJv bSBlbmNvZGVyICovCj4gKwlpZiAoY3R4LT5waXBlIDwgMCB8fCAhY3R4LT5kcm1fZGV2KQo+ICsJ CWdvdG8gb3V0Owo+ICsKPiArCWRybV9oYW5kbGVfdmJsYW5rKGN0eC0+ZHJtX2RldiwgY3R4LT5w aXBlKTsKPiArCWV4eW5vc19kcm1fY3J0Y19maW5pc2hfcGFnZWZsaXAoY3R4LT5kcm1fZGV2LCBj dHgtPnBpcGUpOwo+ICsKPiArCS8qIHNldCB3YWl0IHZzeW5jIGV2ZW50IHRvIHplcm8gYW5kIHdh a2UgdXAgcXVldWUuICovCj4gKwlpZiAoYXRvbWljX3JlYWQoJmN0eC0+d2FpdF92c3luY19ldmVu dCkpIHsKPiArCQlhdG9taWNfc2V0KCZjdHgtPndhaXRfdnN5bmNfZXZlbnQsIDApOwo+ICsJCXdh a2VfdXAoJmN0eC0+d2FpdF92c3luY19xdWV1ZSk7Cj4gKwl9Cj4gK291dDoKPiArCXJldHVybiBJ UlFfSEFORExFRDsKPiArfQo+ICsKPiArc3RhdGljIGludCBkZWNvbl9iaW5kKHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkCipkYXRhKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9IGRhdGE7Cj4gKwo+ICsJZGVjb25fbWdyX2luaXRpYWxp emUoJmRlY29uX21hbmFnZXIsIGRybV9kZXYpOwo+ICsJZXh5bm9zX2RybV9jcnRjX2NyZWF0ZSgm ZGVjb25fbWFuYWdlcik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBkZWNvbl91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0 ZXIsCj4gKwkJCXZvaWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBleHlub3NfZHJtX21hbmFnZXIg Km1nciA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArCWRlY29uX2RwbXMobWdyLCBEUk1f TU9ERV9EUE1TX09GRik7Cj4gKwlkZWNvbl9tZ3JfcmVtb3ZlKG1ncik7Cj4gK30KPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBkZWNvbl9jb21wb25lbnRfb3BzID0gewo+ ICsJLmJpbmQJPSBkZWNvbl9iaW5kLAo+ICsJLnVuYmluZCA9IGRlY29uX3VuYmluZCwKPiArfTsK PiArCj4gK3N0YXRpYyBpbnQgZGVjb25fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKPiArewo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiArCXN0cnVjdCBk ZWNvbl9jb250ZXh0ICpjdHg7Cj4gKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKPiArCWludCByZXQg PSAtRUlOVkFMOwo+ICsKPiArCXJldCA9IGV4eW5vc19kcm1fY29tcG9uZW50X2FkZCgmcGRldi0+ ZGV2LCBFWFlOT1NfREVWSUNFX1RZUEVfQ1JUQywKPiArCQkJCQlkZWNvbl9tYW5hZ2VyLnR5cGUp Owo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWlmICghZGV2LT5vZl9ub2Rl KSB7Cj4gKwkJcmV0ID0gLUVOT0RFVjsKPiArCQlnb3RvIGVycl9kZWxfY29tcG9uZW50Owo+ICsJ fQo+ICsKPiArCWN0eCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY3R4KSwgR0ZQX0tFUk5F TCk7Cj4gKwlpZiAoIWN0eCkgewo+ICsJCXJldCA9IC1FTk9NRU07Cj4gKwkJZ290byBlcnJfZGVs X2NvbXBvbmVudDsKPiArCX0KPiArCj4gKwljdHgtPmRldiA9IGRldjsKPiArCWN0eC0+c3VzcGVu ZGVkID0gdHJ1ZTsKPiArCgpZb3Ugd291bGQgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRvIGNvbmZp Z3VyZSBEU0RfQ0ZHX01VWCByZWdpc3RlciB1c2luZwptZmQvc3lzY29uIGludGVyZmFjZXMuCgo+ ICsJY3R4LT5wY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgInBjbGtfZGVjb24wIik7Cj4gKwlpZiAo SVNfRVJSKGN0eC0+cGNsaykpIHsKPiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgYnVz IGNsb2NrXG4iKTsKPiArCQlyZXQgPSBQVFJfRVJSKGN0eC0+cGNsayk7Cj4gKwkJZ290byBlcnJf ZGVsX2NvbXBvbmVudDsKPiArCX0KPiArCj4gKwljdHgtPmFjbGsgPSBkZXZtX2Nsa19nZXQoZGV2 LCAiYWNsa19kZWNvbjAiKTsKPiArCWlmIChJU19FUlIoY3R4LT5hY2xrKSkgewo+ICsJCWRldl9l cnIoZGV2LCAiZmFpbGVkIHRvIGdldCBhY2xvY2tcbiIpOwo+ICsJCXJldCA9IFBUUl9FUlIoY3R4 LT5hY2xrKTsKPiArCQlnb3RvIGVycl9kZWxfY29tcG9uZW50Owo+ICsJfQo+ICsKPiArCWN0eC0+ ZWNsayA9IGRldm1fY2xrX2dldChkZXYsICJkZWNvbjBfZWNsayIpOwo+ICsJaWYgKElTX0VSUihj dHgtPmVjbGspKSB7Cj4gKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IGVjbG9ja1xuIik7 Cj4gKwkJcmV0ID0gUFRSX0VSUihjdHgtPmVjbGspOwo+ICsJCWdvdG8gZXJyX2RlbF9jb21wb25l bnQ7Cj4gKwl9Cj4gKwo+ICsJY3R4LT52Y2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImRlY29uMF92 Y2xrIik7Cj4gKwlpZiAoSVNfRVJSKGN0eC0+dmNsaykpIHsKPiArCQlkZXZfZXJyKGRldiwgImZh aWxlZCB0byBnZXQgdmNsb2NrXG4iKTsKPiArCQlyZXQgPSBQVFJfRVJSKGN0eC0+dmNsayk7Cj4g KwkJZ290byBlcnJfZGVsX2NvbXBvbmVudDsKPiArCX0KPiArCj4gKwljdHgtPmRzZCA9IGRldm1f Y2xrX2dldChkZXYsICJzY2xrX2RzZCIpOwo+ICsJaWYgKElTX0VSUihjdHgtPmRzZCkpIHsKPiAr CQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgZHNkIGNsb2NrXG4iKTsKPiArCQlyZXQgPSBQ VFJfRVJSKGN0eC0+ZHNkKTsKPiArCQlnb3RvIGVycl9kZWxfY29tcG9uZW50Owo+ICsJfQo+ICsK PiArCWN0eC0+bGhfZGlzcDEgPSBkZXZtX2Nsa19nZXQoZGV2LCAiYWNsa19saF9kaXNwMSIpOwo+ ICsJaWYgKElTX0VSUihjdHgtPmxoX2Rpc3AxKSkgewo+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVk IHRvIGdldCBsaF9kaXNwMSBjbG9ja1xuIik7Cj4gKwkJcmV0ID0gUFRSX0VSUihjdHgtPmxoX2Rp c3AxKTsKPiArCQlnb3RvIGVycl9kZWxfY29tcG9uZW50Owo+ICsJfQo+ICsKPiArCWN0eC0+YWNs a19kaXNwID0gZGV2bV9jbGtfZ2V0KGRldiwgImFjbGtfZGlzcCIpOwo+ICsJaWYgKElTX0VSUihj dHgtPmFjbGtfZGlzcCkpIHsKPiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgYWNsa19k aXNwIGNsb2NrXG4iKTsKPiArCQlyZXQgPSBQVFJfRVJSKGN0eC0+YWNsa19kaXNwKTsKPiArCQln b3RvIGVycl9kZWxfY29tcG9uZW50Owo+ICsJfQo+ICsKPiArCWN0eC0+bGhfZGlzcDAgPSBkZXZt X2Nsa19nZXQoZGV2LCAiYWNsa19saF9kaXNwMCIpOwo+ICsJaWYgKElTX0VSUihjdHgtPmxoX2Rp c3AwKSkgewo+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBsaF9kaXNwMCBjbG9ja1xu Iik7Cj4gKwkJcmV0ID0gUFRSX0VSUihjdHgtPmxoX2Rpc3AwKTsKPiArCQlnb3RvIGVycl9kZWxf Y29tcG9uZW50Owo+ICsJfQo+ICsKPiArCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2 LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4gKwo+ICsJY3R4LT5yZWdzID0gZGV2bV9pb3JlbWFwX3Jl c291cmNlKGRldiwgcmVzKTsKPiArCWlmIChJU19FUlIoY3R4LT5yZWdzKSkgewo+ICsJCXJldCA9 IFBUUl9FUlIoY3R4LT5yZWdzKTsKPiArCQlnb3RvIGVycl9kZWxfY29tcG9uZW50Owo+ICsJfQo+ ICsKPiArCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRldiwgSU9SRVNPVVJD RV9JUlEsICJ2c3luYyIpOwo+ICsJaWYgKCFyZXMpIHsKPiArCQlkZXZfZXJyKGRldiwgImlycSBy ZXF1ZXN0IGZhaWxlZC5cbiIpOwo+ICsJCXJldCA9IC1FTlhJTzsKPiArCQlnb3RvIGVycl9kZWxf Y29tcG9uZW50Owo+ICsJfQo+ICsKPiArCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LCByZXMt PnN0YXJ0LCBkZWNvbl9pcnFfaGFuZGxlciwKPiArCQkJCQkJCTAsICJkcm1fZGVjb24iLCBjdHgp Owo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAiaXJxIHJlcXVlc3QgZmFpbGVkLlxu Iik7Cj4gKwkJZ290byBlcnJfZGVsX2NvbXBvbmVudDsKPiArCX0KPiArCj4gKwlpbml0X3dhaXRx dWV1ZV9oZWFkKCZjdHgtPndhaXRfdnN5bmNfcXVldWUpOwo+ICsJYXRvbWljX3NldCgmY3R4LT53 YWl0X3ZzeW5jX2V2ZW50LCAwKTsKPiArCj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCAm ZGVjb25fbWFuYWdlcik7Cj4gKwo+ICsJZGVjb25fbWFuYWdlci5jdHggPSBjdHg7Cj4gKwo+ICsJ cG1fcnVudGltZV9lbmFibGUoJnBkZXYtPmRldik7Cj4gKwo+ICsJcmV0ID0gY29tcG9uZW50X2Fk ZCgmcGRldi0+ZGV2LCAmZGVjb25fY29tcG9uZW50X29wcyk7Cj4gKwlpZiAocmV0KQo+ICsJCWdv dG8gZXJyX2Rpc2FibGVfcG1fcnVudGltZTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICsKPiArZXJy X2Rpc2FibGVfcG1fcnVudGltZToKPiArCXBtX3J1bnRpbWVfZGlzYWJsZSgmcGRldi0+ZGV2KTsK PiArCj4gK2Vycl9kZWxfY29tcG9uZW50Ogo+ICsJZXh5bm9zX2RybV9jb21wb25lbnRfZGVsKCZw ZGV2LT5kZXYsIEVYWU5PU19ERVZJQ0VfVFlQRV9DUlRDKTsKPiArCXJldHVybiByZXQ7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgZGVjb25fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCj4gK3sKPiArCXBtX3J1bnRpbWVfZGlzYWJsZSgmcGRldi0+ZGV2KTsKPiArCj4gKwljb21w b25lbnRfZGVsKCZwZGV2LT5kZXYsICZkZWNvbl9jb21wb25lbnRfb3BzKTsKPiArCWV4eW5vc19k cm1fY29tcG9uZW50X2RlbCgmcGRldi0+ZGV2LCBFWFlOT1NfREVWSUNFX1RZUEVfQ1JUQyk7Cj4g Kwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZGVjb25f ZHJpdmVyID0gewo+ICsJLnByb2JlCQk9IGRlY29uX3Byb2JlLAo+ICsJLnJlbW92ZQkJPSBkZWNv bl9yZW1vdmUsCj4gKwkuZHJpdmVyCQk9IHsKPiArCQkubmFtZQk9ICJleHlub3MtZGVjb24iLAo+ ICsJCS5vd25lcgk9IFRISVNfTU9EVUxFLAo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IGRlY29uX2Ry aXZlcl9kdF9tYXRjaCwKPiArCX0sCj4gK307Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9leHlub3MvZXh5bm9zX2RybV9kcnYuYwpiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9z X2RybV9kcnYuYwo+IGluZGV4IDQ0M2EyMDYuLjQ0YmRjNDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2V4eW5vcy9leHlub3NfZHJtX2Rydi5jCj4gQEAgLTU1NywxMCArNTU3LDE2IEBAIHN0YXRpYyBp bnQgZXh5bm9zX2RybV9wbGF0Zm9ybV9wcm9iZShzdHJ1Y3QKcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQo+ICAJCXJldHVybiByZXQ7Cj4gICNlbmRpZgo+Cj4gKyNpZmRlZiBDT05GSUdfRFJNX0VYWU5P U19ERUNPTgo+ICsJcmV0ID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZkZWNvbl9kcml2ZXIp Owo+ICsJaWYgKHJldCA8IDApCj4gKwkJZ290byBlcnJfdW5yZWdpc3Rlcl9maW1kX2RydjsKPiAr I2VuZGlmCj4gKwo+ICAjaWZkZWYgQ09ORklHX0RSTV9FWFlOT1NfRFAKPiAgCXJldCA9IHBsYXRm b3JtX2RyaXZlcl9yZWdpc3RlcigmZHBfZHJpdmVyKTsKPiAgCWlmIChyZXQgPCAwKQo+IC0JCWdv dG8gZXJyX3VucmVnaXN0ZXJfZmltZF9kcnY7Cj4gKwkJZ290byBlcnJfdW5yZWdpc3Rlcl9kZWNv bl9kcnY7Cj4gICNlbmRpZgo+Cj4gICNpZmRlZiBDT05GSUdfRFJNX0VYWU5PU19EU0kKPiBAQCAt NjY4LDYgKzY3NCwxMSBAQCBlcnJfdW5yZWdpc3Rlcl9kcF9kcnY6Cj4KPiAgI2lmZGVmIENPTkZJ R19EUk1fRVhZTk9TX0RQCj4gIAlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmZHBfZHJpdmVy KTsKPiArZXJyX3VucmVnaXN0ZXJfZGVjb25fZHJ2Ogo+ICsjZW5kaWYKPiArCj4gKyNpZmRlZiBD T05GSUdfRFJNX0VYWU5PU19ERUNPTgo+ICsJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmRl Y29uX2RyaXZlcik7Cj4gIGVycl91bnJlZ2lzdGVyX2ZpbWRfZHJ2Ogo+ICAjZW5kaWYKPgo+IEBA IC03MDksNiArNzIwLDEwIEBAIHN0YXRpYyBpbnQgZXh5bm9zX2RybV9wbGF0Zm9ybV9yZW1vdmUo c3RydWN0CnBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lz dGVyKCZmaW1kX2RyaXZlcik7Cj4gICNlbmRpZgo+Cj4gKyNpZmRlZiBDT05GSUdfRFJNX0VYWU5P U19ERUNPTgo+ICsJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmRlY29uX2RyaXZlcik7Cj4g KyNlbmRpZgo+ICsKPiAgI2lmZGVmIENPTkZJR19EUk1fRVhZTk9TX0RTSQo+ICAJcGxhdGZvcm1f ZHJpdmVyX3VucmVnaXN0ZXIoJmRzaV9kcml2ZXIpOwo+ICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oCmIvZHJpdmVycy9ncHUvZHJt L2V4eW5vcy9leHlub3NfZHJtX2Rydi5oCj4gaW5kZXggZDIyZTY0MC4uMjVmNzUwZCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmgKPiBAQCAtMzUyLDYgKzM1Miwx NiBAQCBpbnQgZXh5bm9zX2RybV9wcm9iZV92aWRpKHZvaWQpOwo+ICAgKi8KPiAgdm9pZCBleHlu b3NfZHJtX3JlbW92ZV92aWRpKHZvaWQpOwo+Cj4gKy8qCj4gKyAqIHRoaXMgZnVuY3Rpb24gcmVn aXN0ZXJzIGV4eW5vcyBkcm0gZGVjb24gcGxhdGZvcm0gZGV2aWNlL2RyaXZlci4KPiArICovCj4g K2ludCBleHlub3NfZHJtX3Byb2JlX2RlY29uKHZvaWQpOwo+ICsKPiArLyoKPiArICogdGhpcyBm dW5jdGlvbiB1bnJlZ2lzdGVyIGV4eW5vcyBkcm0gZGVjb24gcGxhdGZvcm0gZGV2aWNlL2RyaXZl ci4KPiArICovCj4gK3ZvaWQgZXh5bm9zX2RybV9yZW1vdmVfZGVjb24odm9pZCk7Cj4gKwo+ICAv KiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBlbmNvZGVyIGFuZCBhIGNvbm5lY3RvciwgYW5kIGlu aXRpYWxpemVzCnRoZW0uICovCj4gIGludCBleHlub3NfZHJtX2NyZWF0ZV9lbmNfY29ubihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJc3RydWN0IGV4eW5vc19kcm1fZGlzcGxheSAqZGlz cGxheSk7Cj4gQEAgLTM2NCw2ICszNzQsNyBAQCB2b2lkIGV4eW5vc19kcm1fY29tcG9uZW50X2Rl bChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gIAkJCQllbnVtIGV4eW5vc19kcm1fZGV2aWNlX3R5cGUg ZGV2X3R5cGUpOwo+Cj4gIGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZpbWRfZHJpdmVy Owo+ICtleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkZWNvbl9kcml2ZXI7Cj4gIGV4dGVy biBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGRwX2RyaXZlcjsKPiAgZXh0ZXJuIHN0cnVjdCBwbGF0 Zm9ybV9kcml2ZXIgZHNpX2RyaXZlcjsKPiAgZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIg bWl4ZXJfZHJpdmVyOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3ZpZGVvL3NhbXN1bmdfZGVjb24u aCBiL2luY2x1ZGUvdmlkZW8vc2Ftc3VuZ19kZWNvbi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwLi44ODM5MTIwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUv dmlkZW8vc2Ftc3VuZ19kZWNvbi5oCj4gQEAgLTAsMCArMSwzNDYgQEAKPiArLyogaW5jbHVkZS92 aWRlby9leHlub3NfZHJtX2RlY29uLmgKPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE0IFNh bXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCj4gKyAqIEF1dGhvcjogQWpheSBLdW1hciA8YWph eWt1bWFyLnJzQHNhbXN1bmcuY29tPgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgIGl0IGFuZC9vcgptb2RpZnkgaXQKPiArICog dW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQKYnkgdGhlCj4gKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBvcgooYXQgeW91cgo+ICsgKiBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgo+ICsgKi8KPiArCj4gKy8qIFZJRENPTjAgKi8KPiArI2RlZmluZSBWSURD T04wCQkJCQkoMHgwMCkKPiArCj4gKyNkZWZpbmUgVklEQ09OMF9TV1JFU0VUCQkJCSgxIDw8IDI4 KQo+ICsjZGVmaW5lIFZJRENPTjBfREVDT05fU1RPUF9TVEFUVVMJCSgxIDw8IDIpCj4gKyNkZWZp bmUgVklEQ09OMF9FTlZJRAkJCQkoMSA8PCAxKQo+ICsjZGVmaW5lIFZJRENPTjBfRU5WSURfRgkJ CQkoMSA8PCAwKQo+ICsKPiArLyogVklET1VUQ09OMCAqLwo+ICsjZGVmaW5lIFZJRE9VVENPTjAJ CQkJKDB4NCkKPiArCj4gKyNkZWZpbmUgVklET1VUQ09OMF9MQ0RfT04JCQkoMHgxIDw8IDI0KQo+ ICsjZGVmaW5lIFZJRE9VVENPTjBfTENEX09GRgkJCSgweDAgPDwgMjQpCj4gKyNkZWZpbmUgVklE T1VUQ09OMF9JRl9TSElGVAkJCSgyMykKPiArI2RlZmluZSBWSURPVVRDT04wX0lGX01BU0sJCQko MHgxIDw8IDIzKQo+ICsjZGVmaW5lIFZJRE9VVENPTjBfUkdCSUYJCQkoMHgwIDw8IDIzKQo+ICsj ZGVmaW5lIFZJRE9VVENPTjBfSTgwSUYJCQkoMHgxIDw8IDIzKQo+ICsKPiArLyogVklEQ09OMyAq Lwo+ICsjZGVmaW5lIFZJRENPTjMJCQkJCSgweDgpCj4gKwo+ICsvKiBWSURDT040ICovCj4gKyNk ZWZpbmUgVklEQ09ONAkJCQkJKDB4QykKPiArI2RlZmluZSBWSURDT040X0ZJRk9DTlRfU1RBUlRf RU4JCSgxIDw8IDApCj4gKwo+ICsvKiBWQ0xLQ09OMCAqLwo+ICsjZGVmaW5lIFZDTEtDT04wCQkJ CTB4MTAKPiArI2RlZmluZSBWQ0xLQ09OMF9DTEtWQUxVUAkJCSgxIDw8IDgpCj4gKyNkZWZpbmUg VkNMS0NPTjBfVkNMS0ZSRUUJCQkoMSA8PCAwKQo+ICsKPiArLyogVkNMS0NPTiAqLwo+ICsjZGVm aW5lIFZDTEtDT04xCQkJCTB4MTQKPiArI2RlZmluZSBWQ0xLQ09OMV9DTEtWQUxfTlVNX1ZDTEso dmFsKQkJKCgodmFsKSAmIDB4ZmYpIDw8IDApCj4gKyNkZWZpbmUgVkNMS0NPTjIJCQkJMHgxOAo+ ICsKPiArLyogU0hBRE9XQ09OICovCj4gKyNkZWZpbmUgU0hBRE9XQ09OCQkJCSgweDMwKQo+ICsK PiArI2RlZmluZSBTSEFET1dDT05fV0lOeF9QUk9URUNUKF93aW4pCQkoMSA8PCAoMTAgKyAoX3dp bikpKQo+ICsKPiArLyogV0lOQ09OeCAqLwo+ICsjZGVmaW5lIFdJTkNPTihfd2luKQkJCQkoMHg1 MCArICgoX3dpbikgKiA0KSkKPiArCj4gKyNkZWZpbmUgV0lOQ09OeF9CVUZTVEFUVVMJCQkoMHgz IDw8IDMwKQo+ICsjZGVmaW5lIFdJTkNPTnhfQlVGU0VMX01BU0sJCQkoMHgzIDw8IDI4KQo+ICsj ZGVmaW5lIFdJTkNPTnhfQlVGU0VMX1NISUZUCQkJKDI4KQo+ICsjZGVmaW5lIFdJTkNPTnhfVFJJ UExFX0JVRl9NT0RFCQkJKDB4MSA8PCAxOCkKPiArI2RlZmluZSBXSU5DT054X0RPVUJMRV9CVUZf TU9ERQkJCSgweDAgPDwgMTgpCj4gKyNkZWZpbmUgV0lOQ09OeF9CVVJTVExFTl8xNldPUkQJCQko MHgwIDw8IDExKQo+ICsjZGVmaW5lIFdJTkNPTnhfQlVSU1RMRU5fOFdPUkQJCQkoMHgxIDw8IDEx KQo+ICsjZGVmaW5lIFdJTkNPTnhfQlVSU1RMRU5fTUFTSwkJCSgweDEgPDwgMTEpCj4gKyNkZWZp bmUgV0lOQ09OeF9CVVJTVExFTl9TSElGVAkJCSgxMSkKPiArI2RlZmluZSBXSU5DT054X0JMRF9Q TEFORQkJCSgwIDw8IDgpCj4gKyNkZWZpbmUgV0lOQ09OeF9CTERfUElYCQkJCSgxIDw8IDgpCj4g KyNkZWZpbmUgV0lOQ09OeF9BTFBIQV9NVUwJCQkoMSA8PCA3KQo+ICsKPiArI2RlZmluZSBXSU5D T054X0JQUE1PREVfTUFTSwkJCSgweGYgPDwgMikKPiArI2RlZmluZSBXSU5DT054X0JQUE1PREVf U0hJRlQJCQkoMikKPiArI2RlZmluZSBXSU5DT054X0JQUE1PREVfMTZCUFBfNTY1CQkoMHg4IDw8 IDIpCj4gKyNkZWZpbmUgV0lOQ09OeF9CUFBNT0RFXzI0QlBQX0JHUngJCSgweDcgPDwgMikKPiAr I2RlZmluZSBXSU5DT054X0JQUE1PREVfMjRCUFBfUkdCeAkJKDB4NiA8PCAyKQo+ICsjZGVmaW5l IFdJTkNPTnhfQlBQTU9ERV8yNEJQUF94QkdSCQkoMHg1IDw8IDIpCj4gKyNkZWZpbmUgV0lOQ09O eF9CUFBNT0RFXzI0QlBQX3hSR0IJCSgweDQgPDwgMikKPiArI2RlZmluZSBXSU5DT054X0JQUE1P REVfMzJCUFBfQkdSQQkJKDB4MyA8PCAyKQo+ICsjZGVmaW5lIFdJTkNPTnhfQlBQTU9ERV8zMkJQ UF9SR0JBCQkoMHgyIDw8IDIpCj4gKyNkZWZpbmUgV0lOQ09OeF9CUFBNT0RFXzMyQlBQX0FCR1IJ CSgweDEgPDwgMikKPiArI2RlZmluZSBXSU5DT054X0JQUE1PREVfMzJCUFBfQVJHQgkJKDB4MCA8 PCAyKQo+ICsjZGVmaW5lIFdJTkNPTnhfQUxQSEFfU0VMCQkJKDEgPDwgMSkKPiArI2RlZmluZSBX SU5DT054X0VOV0lOCQkJCSgxIDw8IDApCj4gKwo+ICsjZGVmaW5lIFdJTkNPTjFfQUxQSEFfTVVM X0YJCQkoMSA8PCA3KQo+ICsjZGVmaW5lIFdJTkNPTjJfQUxQSEFfTVVMX0YJCQkoMSA8PCA3KQo+ ICsjZGVmaW5lIFdJTkNPTjNfQUxQSEFfTVVMX0YJCQkoMSA8PCA3KQo+ICsjZGVmaW5lIFdJTkNP TjRfQUxQSEFfTVVMX0YJCQkoMSA8PCA3KQo+ICsKPiArLyogIFZJRE9TRHhIOiBUaGUgaGVpZ2h0 IGZvciB0aGUgT1NEIGltYWdlKFJFQUQgT05MWSkqLwo+ICsjZGVmaW5lIFZJRE9TRF9IKF94KQkJ CQkoMHg4MCArICgoX3gpICogNCkpCj4gKwo+ICsvKiBGcmFtZSBidWZmZXIgc3RhcnQgYWRkcmVz c2VzOiBWSURXeHhBREQwbiAqLwo+ICsjZGVmaW5lIFZJRFdfQlVGX1NUQVJUKF93aW4pCQkJKDB4 ODAgKyAoKF93aW4pICogMHgxMCkpCj4gKyNkZWZpbmUgVklEV19CVUZfU1RBUlQxKF93aW4pCQkJ KDB4ODQgKyAoKF93aW4pICogMHgxMCkpCj4gKyNkZWZpbmUgVklEV19CVUZfU1RBUlQyKF93aW4p CQkJKDB4ODggKyAoKF93aW4pICogMHgxMCkpCj4gKwo+ICsjZGVmaW5lIFZJRFdfV0hPTEVfWChf d2luKQkJCSgweDAxMzAgKyAoKF93aW4pICogOCkpCj4gKyNkZWZpbmUgVklEV19XSE9MRV9ZKF93 aW4pCQkJKDB4MDEzNCArICgoX3dpbikgKiA4KSkKPiArI2RlZmluZSBWSURXX09GRlNFVF9YKF93 aW4pCQkJKDB4MDE3MCArICgoX3dpbikgKiA4KSkKPiArI2RlZmluZSBWSURXX09GRlNFVF9ZKF93 aW4pCQkJKDB4MDE3NCArICgoX3dpbikgKiA4KSkKPiArI2RlZmluZSBWSURXX0JMS09GRlNFVChf d2luKQkJCSgweDAxQjAgKyAoKF93aW4pICogNCkpCj4gKyNkZWZpbmUgVklEV19CTEtTSVpFKHdp bikJCQkoMHgwMjAwICsgKChfd2luKSAqIDQpKQo+ICsKPiArLyogSW50ZXJydXB0IGNvbnRyb2xz IHJlZ2lzdGVyICovCj4gKyNkZWZpbmUgVklESU5UQ09OMgkJCQkoMHgyMjgpCj4gKwo+ICsjZGVm aW5lIFZJRElOVENPTjFfSU5URVhUUkExX0VOCQkJKDEgPDwgMSkKPiArI2RlZmluZSBWSURJTlRD T04xX0lOVEVYVFJBMF9FTgkJCSgxIDw8IDApCj4gKwo+ICsvKiBJbnRlcnJ1cHQgY29udHJvbHMg YW5kIHN0YXR1cyByZWdpc3RlciAqLwo+ICsjZGVmaW5lIFZJRElOVENPTjMJCQkJKDB4MjJDKQo+ ICsKPiArI2RlZmluZSBWSURJTlRDT04xX0lOVEVYVFJBMV9QRU5ECQkoMSA8PCAxKQo+ICsjZGVm aW5lIFZJRElOVENPTjFfSU5URVhUUkEwX1BFTkQJCSgxIDw8IDApCj4gKwo+ICsvKiBWSURPU0R4 QSB+IFZJRE9TRHhFICovCj4gKyNkZWZpbmUgVklET1NEX0JBU0UJCQkJKDB4MjMwKQo+ICsKPiAr I2RlZmluZSBPU0RfU1RSSURFCQkJCSgweDIwKQo+ICsKPiArI2RlZmluZSBWSURPU0RfQShfd2lu KQkJCQkoVklET1NEX0JBU0UgKyBcCj4gKwkJCQkJCSgoX3dpbikgKiBPU0RfU1RSSURFKSArIDB4 MDApCj4gKyNkZWZpbmUgVklET1NEX0IoX3dpbikJCQkJKFZJRE9TRF9CQVNFICsgXAo+ICsJCQkJ CQkoKF93aW4pICogT1NEX1NUUklERSkgKyAweDA0KQo+ICsjZGVmaW5lIFZJRE9TRF9DKF93aW4p CQkJCShWSURPU0RfQkFTRSArIFwKPiArCQkJCQkJKChfd2luKSAqIE9TRF9TVFJJREUpICsgMHgw OCkKPiArI2RlZmluZSBWSURPU0RfRChfd2luKQkJCQkoVklET1NEX0JBU0UgKyBcCj4gKwkJCQkJ CSgoX3dpbikgKiBPU0RfU1RSSURFKSArIDB4MEMpCj4gKyNkZWZpbmUgVklET1NEX0UoX3dpbikJ CQkJKFZJRE9TRF9CQVNFICsgXAo+ICsJCQkJCQkoKF93aW4pICogT1NEX1NUUklERSkgKyAweDEw KQo+ICsKPiArI2RlZmluZSBWSURPU0R4QV9UT1BMRUZUX1hfTUFTSwkJCSgweDFmZmYgPDwgMTMp Cj4gKyNkZWZpbmUgVklET1NEeEFfVE9QTEVGVF9YX1NISUZUCQkoMTMpCj4gKyNkZWZpbmUgVklE T1NEeEFfVE9QTEVGVF9YX0xJTUlUCQkoMHgxZmZmKQo+ICsjZGVmaW5lIFZJRE9TRHhBX1RPUExF RlRfWChfeCkJCQkoKChfeCkgJiAweDFmZmYpIDw8IDEzKQo+ICsKPiArI2RlZmluZSBWSURPU0R4 QV9UT1BMRUZUX1lfTUFTSwkJCSgweDFmZmYgPDwgMCkKPiArI2RlZmluZSBWSURPU0R4QV9UT1BM RUZUX1lfU0hJRlQJCSgwKQo+ICsjZGVmaW5lIFZJRE9TRHhBX1RPUExFRlRfWV9MSU1JVAkJKDB4 MWZmZikKPiArI2RlZmluZSBWSURPU0R4QV9UT1BMRUZUX1koX3gpCQkJKCgoX3gpICYgMHgxZmZm KSA8PCAwKQo+ICsKPiArI2RlZmluZSBWSURPU0R4Ql9CT1RSSUdIVF9YX01BU0sJCSgweDFmZmYg PDwgMTMpCj4gKyNkZWZpbmUgVklET1NEeEJfQk9UUklHSFRfWF9TSElGVAkJKDEzKQo+ICsjZGVm aW5lIFZJRE9TRHhCX0JPVFJJR0hUX1hfTElNSVQJCSgweDFmZmYpCj4gKyNkZWZpbmUgVklET1NE eEJfQk9UUklHSFRfWChfeCkJCQkoKChfeCkgJiAweDFmZmYpIDw8IDEzKQo+ICsKPiArI2RlZmlu ZSBWSURPU0R4Ql9CT1RSSUdIVF9ZX01BU0sJCSgweDFmZmYgPDwgMCkKPiArI2RlZmluZSBWSURP U0R4Ql9CT1RSSUdIVF9ZX1NISUZUCQkoMCkKPiArI2RlZmluZSBWSURPU0R4Ql9CT1RSSUdIVF9Z X0xJTUlUCQkoMHgxZmZmKQo+ICsjZGVmaW5lIFZJRE9TRHhCX0JPVFJJR0hUX1koX3gpCQkJKCgo X3gpICYgMHgxZmZmKSA8PCAwKQo+ICsKPiArI2RlZmluZSBWSURPU0R4Q19BTFBIQTBfUl9GKF94 KQkJCSgoKF94KSAmIDB4RkYpIDw8IDE2KQo+ICsjZGVmaW5lIFZJRE9TRHhDX0FMUEhBMF9HX0Yo X3gpCQkJKCgoX3gpICYgMHhGRikgPDwgOCkKPiArI2RlZmluZSBWSURPU0R4Q19BTFBIQTBfQl9G KF94KQkJCSgoKF94KSAmIDB4RkYpIDw8IDApCj4gKwo+ICsjZGVmaW5lIFZJRE9TRHhEX0FMUEhB MV9SX0YoX3gpCQkJKCgoX3gpICYgMHhGRikgPDwgMTYpCj4gKyNkZWZpbmUgVklET1NEeERfQUxQ SEExX0dfRihfeCkJCQkoKChfeCkgJiAweEZGKSA8PCA4KQo+ICsjZGVmaW5lIFZJRE9TRHhEX0FM UEhBMV9CX0YoX3gpCQkJKCgoX3gpICYgMHhGRikgPj4gMCkKPiArCj4gKy8qIFdpbmRvdyBNQVAg KENvbG9yIG1hcCkgKi8KPiArI2RlZmluZSBXSU54TUFQKF93aW4pCQkJCSgweDM0MCArICgoX3dp bikgKiA0KSkKPiArCj4gKyNkZWZpbmUgV0lOeE1BUF9NQVAJCQkJKDEgPDwgMjQpCj4gKyNkZWZp bmUgV0lOeE1BUF9NQVBfQ09MT1VSX01BU0sJCQkoMHhmZmZmZmYgPDwgMCkKPiArI2RlZmluZSBX SU54TUFQX01BUF9DT0xPVVJfU0hJRlQJCSgwKQo+ICsjZGVmaW5lIFdJTnhNQVBfTUFQX0NPTE9V Ul9MSU1JVAkJKDB4ZmZmZmZmKQo+ICsjZGVmaW5lIFdJTnhNQVBfTUFQX0NPTE9VUihfeCkJCQko KF94KSA8PCAwKQo+ICsKPiArLyogV2luZG93IGNvbG91ci1rZXkgY29udHJvbCByZWdpc3RlcnMg Ki8KPiArI2RlZmluZSBXS0VZQ09OCQkJCQkoMHgzNzApCj4gKwo+ICsjZGVmaW5lIFdLRVlDT04w CQkJCSgweDAwKQo+ICsjZGVmaW5lIFdLRVlDT04xCQkJCSgweDA0KQo+ICsjZGVmaW5lIFd4S0VZ Q09OMF9LRVlCTF9FTgkJCSgxIDw8IDI2KQo+ICsjZGVmaW5lIFd4S0VZQ09OMF9LRVlFTl9GCQkJ KDEgPDwgMjUpCj4gKyNkZWZpbmUgV3hLRVlDT04wX0RJUkNPTgkJCSgxIDw8IDI0KQo+ICsjZGVm aW5lIFd4S0VZQ09OMF9DT01QS0VZX01BU0sJCQkoMHhmZmZmZmYgPDwgMCkKPiArI2RlZmluZSBX eEtFWUNPTjBfQ09NUEtFWV9TSElGVAkJCSgwKQo+ICsjZGVmaW5lIFd4S0VZQ09OMF9DT01QS0VZ X0xJTUlUCQkJKDB4ZmZmZmZmKQo+ICsjZGVmaW5lIFd4S0VZQ09OMF9DT01QS0VZKF94KQkJCSgo X3gpIDw8IDApCj4gKyNkZWZpbmUgV3hLRVlDT04xX0NPTFZBTF9NQVNLCQkJKDB4ZmZmZmZmIDw8 IDApCj4gKyNkZWZpbmUgV3hLRVlDT04xX0NPTFZBTF9TSElGVAkJCSgwKQo+ICsjZGVmaW5lIFd4 S0VZQ09OMV9DT0xWQUxfTElNSVQJCQkoMHhmZmZmZmYpCj4gKyNkZWZpbmUgV3hLRVlDT04xX0NP TFZBTChfeCkJCQkoKF94KSA8PCAwKQo+ICsKPiArLyogY29sb3Iga2V5IGNvbnRyb2wgcmVnaXN0 ZXIgZm9yIGhhcmR3YXJlIHdpbmRvdyAxIH4gNC4gKi8KPiArI2RlZmluZSBXS0VZQ09OMF9CQVNF KHgpCQkoKFdLRVlDT04gKyBXS0VZQ09OMCkgKyAoKHggLSAxKSAqIDgpKQo+ICsvKiBjb2xvciBr ZXkgdmFsdWUgcmVnaXN0ZXIgZm9yIGhhcmR3YXJlIHdpbmRvdyAxIH4gNC4gKi8KPiArI2RlZmlu ZSBXS0VZQ09OMV9CQVNFKHgpCQkoKFdLRVlDT04gKyBXS0VZQ09OMSkgKyAoKHggLSAxKSAqIDgp KQo+ICsKPiArLyogV2luZG93IEtFWSBBbHBoYSB2YWx1ZSAqLwo+ICsjZGVmaW5lIFd4S0VZQUxQ SEEoX3dpbikJCQkoMHgzQTAgKyAoKChfd2luKSAtIDEpICogMHg0KSkKPiArCj4gKyNkZWZpbmUg V3hfS0VZQUxQSEFfUl9GX1NISUZUCQkJKDE2KQo+ICsjZGVmaW5lIFd4X0tFWUFMUEhBX0dfRl9T SElGVAkJCSg4KQo+ICsjZGVmaW5lIFd4X0tFWUFMUEhBX0JfRl9TSElGVAkJCSgwKQo+ICsKPiAr LyogQmxlbmRpbmcgZXF1YXRpb24gKi8KPiArI2RlZmluZSBCTEVOREUoX3dpbikJCQkJKDB4MDND MCArICgoX3dpbikgKiA0KSkKPiArI2RlZmluZSBCTEVOREVfQ09FRl9aRVJPCQkJMHgwCj4gKyNk ZWZpbmUgQkxFTkRFX0NPRUZfT05FCQkJCTB4MQo+ICsjZGVmaW5lIEJMRU5ERV9DT0VGX0FMUEhB X0EJCQkweDIKPiArI2RlZmluZSBCTEVOREVfQ09FRl9PTkVfTUlOVVNfQUxQSEFfQQkJMHgzCj4g KyNkZWZpbmUgQkxFTkRFX0NPRUZfQUxQSEFfQgkJCTB4NAo+ICsjZGVmaW5lIEJMRU5ERV9DT0VG X09ORV9NSU5VU19BTFBIQV9CCQkweDUKPiArI2RlZmluZSBCTEVOREVfQ09FRl9BTFBIQTAJCQkw eDYKPiArI2RlZmluZSBCTEVOREVfQ09FRl9BCQkJCTB4QQo+ICsjZGVmaW5lIEJMRU5ERV9DT0VG X09ORV9NSU5VU19BCQkJMHhCCj4gKyNkZWZpbmUgQkxFTkRFX0NPRUZfQgkJCQkweEMKPiArI2Rl ZmluZSBCTEVOREVfQ09FRl9PTkVfTUlOVVNfQgkJCTB4RAo+ICsjZGVmaW5lIEJMRU5ERV9RX0ZV TkMoX3YpCQkJKChfdikgPDwgMTgpCj4gKyNkZWZpbmUgQkxFTkRFX1BfRlVOQyhfdikJCQkoKF92 KSA8PCAxMikKPiArI2RlZmluZSBCTEVOREVfQl9GVU5DKF92KQkJCSgoX3YpIDw8IDYpCj4gKyNk ZWZpbmUgQkxFTkRFX0FfRlVOQyhfdikJCQkoKF92KSA8PCAwKQo+ICsKPiArLyogQmxlbmRpbmcg ZXF1YXRpb24gY29udHJvbCAqLwo+ICsjZGVmaW5lIEJMRU5EQ09OCQkJCSgweDNEOCkKPiArI2Rl ZmluZSBCTEVORENPTl9ORVdfTUFTSwkJCSgxIDw8IDApCj4gKyNkZWZpbmUgQkxFTkRDT05fTkVX XzhCSVRfQUxQSEFfVkFMVUUJCSgxIDw8IDApCj4gKyNkZWZpbmUgQkxFTkRDT05fTkVXXzRCSVRf QUxQSEFfVkFMVUUJCSgwIDw8IDApCj4gKwo+ICsvKiBJbnRlcnJ1cHQgY29udHJvbCByZWdpc3Rl ciAqLwo+ICsjZGVmaW5lIFZJRElOVENPTjAJCQkJKDB4NTAwKQo+ICsKPiArI2RlZmluZSBWSURJ TlRDT04wX1dBS0VVUF9NQVNLCQkJKDB4M2YgPDwgMjYpCj4gKyNkZWZpbmUgVklESU5UQ09OMF9J TlRFWFRSQUVOCQkJKDEgPDwgMjEpCj4gKwo+ICsjZGVmaW5lIFZJRElOVENPTjBfRlJBTUVTRUww X1NISUZUCQkoMTUpCj4gKyNkZWZpbmUgVklESU5UQ09OMF9GUkFNRVNFTDBfTUFTSwkJKDB4MyA8 PCAxNSkKPiArI2RlZmluZSBWSURJTlRDT04wX0ZSQU1FU0VMMF9CQUNLUE9SQ0gJCSgweDAgPDwg MTUpCj4gKyNkZWZpbmUgVklESU5UQ09OMF9GUkFNRVNFTDBfVlNZTkMJCSgweDEgPDwgMTUpCj4g KyNkZWZpbmUgVklESU5UQ09OMF9GUkFNRVNFTDBfQUNUSVZFCQkoMHgyIDw8IDE1KQo+ICsjZGVm aW5lIFZJRElOVENPTjBfRlJBTUVTRUwwX0ZST05UUE9SQ0gJCSgweDMgPDwgMTUpCj4gKwo+ICsj ZGVmaW5lIFZJRElOVENPTjBfSU5UX0ZSQU1FCQkJKDEgPDwgMTEpCj4gKwo+ICsjZGVmaW5lIFZJ RElOVENPTjBfRklGT0xFVkVMX01BU0sJCSgweDcgPDwgMykKPiArI2RlZmluZSBWSURJTlRDT04w X0ZJRk9MRVZFTF9TSElGVAkJKDMpCj4gKyNkZWZpbmUgVklESU5UQ09OMF9GSUZPTEVWRUxfRU1Q VFkJCSgweDAgPDwgMykKPiArI2RlZmluZSBWSURJTlRDT04wX0ZJRk9MRVZFTF9UTzI1UEMJCSgw eDEgPDwgMykKPiArI2RlZmluZSBWSURJTlRDT04wX0ZJRk9MRVZFTF9UTzUwUEMJCSgweDIgPDwg MykKPiArI2RlZmluZSBWSURJTlRDT04wX0ZJRk9MRVZFTF9GVUxMCQkoMHg0IDw8IDMpCj4gKwo+ ICsjZGVmaW5lIFZJRElOVENPTjBfRklGT1NFTF9NQUlOX0VOCQkoMSA8PCAxKQo+ICsjZGVmaW5l IFZJRElOVENPTjBfSU5UX0ZJRk8JCQkoMSA8PCAxKQo+ICsKPiArI2RlZmluZSBWSURJTlRDT04w X0lOVF9FTkFCTEUJCQkoMSA8PCAwKQo+ICsKPiArLyogSW50ZXJydXB0IGNvbnRyb2xzIGFuZCBz dGF0dXMgcmVnaXN0ZXIgKi8KPiArI2RlZmluZSBWSURJTlRDT04xCQkJCSgweDUwNCkKPiArCj4g KyNkZWZpbmUgVklESU5UQ09OMV9JTlRfRVhUUkEJCQkoMSA8PCAzKQo+ICsjZGVmaW5lIFZJRElO VENPTjFfSU5UX0k4MAkJCSgxIDw8IDIpCj4gKyNkZWZpbmUgVklESU5UQ09OMV9JTlRfRlJBTUUJ CQkoMSA8PCAxKQo+ICsjZGVmaW5lIFZJRElOVENPTjFfSU5UX0ZJRk8JCQkoMSA8PCAwKQo+ICsK PiArLyogVklEQ09OMSAqLwo+ICsjZGVmaW5lIFZJRENPTjEoX3gpCQkJCSgweDA2MDAgKyAoKF94 KSAqIDB4NTApKQo+ICsjZGVmaW5lIFZJRENPTjFfTElORUNOVF9HRVQoX3YpCQkJKCgoX3YpID4+ IDE3KSAmIDB4MWZmZikKPiArI2RlZmluZSBWSURDT04xX1ZDTEtfTUFTSwkJCSgweDMgPDwgOSkK PiArI2RlZmluZSBWSURDT04xX1ZDTEtfSE9MRAkJCSgweDAgPDwgOSkKPiArI2RlZmluZSBWSURD T04xX1ZDTEtfUlVOCQkJKDB4MSA8PCA5KQo+ICsjZGVmaW5lIFZJRENPTjFfVkNMS19SVU5fVkRF Tl9ESVNBQkxFCQkoMHgzIDw8IDkpCj4gKyNkZWZpbmUgVklEQ09OMV9SR0JfT1JERVJfT19NQVNL CQkoMHg3IDw8IDQpCj4gKyNkZWZpbmUgVklEQ09OMV9SR0JfT1JERVJfT19SR0IJCQkoMHgwIDw8 IDQpCj4gKyNkZWZpbmUgVklEQ09OMV9SR0JfT1JERVJfT19HQlIJCQkoMHgxIDw8IDQpCj4gKyNk ZWZpbmUgVklEQ09OMV9SR0JfT1JERVJfT19CUkcJCQkoMHgyIDw8IDQpCj4gKyNkZWZpbmUgVklE Q09OMV9SR0JfT1JERVJfT19CR1IJCQkoMHg0IDw8IDQpCj4gKyNkZWZpbmUgVklEQ09OMV9SR0Jf T1JERVJfT19SQkcJCQkoMHg1IDw8IDQpCj4gKyNkZWZpbmUgVklEQ09OMV9SR0JfT1JERVJfT19H UkIJCQkoMHg2IDw8IDQpCj4gKwo+ICsvKiBWSURUQ09OMCAqLwo+ICsjZGVmaW5lIFZJRFRDT04w CQkJCSgweDYxMCkKPiArCj4gKyNkZWZpbmUgVklEVENPTjBfVkJQRF9NQVNLCQkJKDB4ZmZmZiA8 PCAxNikKPiArI2RlZmluZSBWSURUQ09OMF9WQlBEX1NISUZUCQkJKDE2KQo+ICsjZGVmaW5lIFZJ RFRDT04wX1ZCUERfTElNSVQJCQkoMHhmZmZmKQo+ICsjZGVmaW5lIFZJRFRDT04wX1ZCUEQoX3gp CQkJKChfeCkgPDwgMTYpCj4gKwo+ICsjZGVmaW5lIFZJRFRDT04wX1ZGUERfTUFTSwkJCSgweGZm ZmYgPDwgMCkKPiArI2RlZmluZSBWSURUQ09OMF9WRlBEX1NISUZUCQkJKDApCj4gKyNkZWZpbmUg VklEVENPTjBfVkZQRF9MSU1JVAkJCSgweGZmZmYpCj4gKyNkZWZpbmUgVklEVENPTjBfVkZQRChf eCkJCQkoKF94KSA8PCAwKQo+ICsKPiArLyogVklEVENPTjEgKi8KPiArI2RlZmluZSBWSURUQ09O MQkJCQkoMHg2MTQpCj4gKwo+ICsjZGVmaW5lIFZJRFRDT04xX1ZTUFdfTUFTSwkJCSgweGZmZmYg PDwgMTYpCj4gKyNkZWZpbmUgVklEVENPTjFfVlNQV19TSElGVAkJCSgxNikKPiArI2RlZmluZSBW SURUQ09OMV9WU1BXX0xJTUlUCQkJKDB4ZmZmZikKPiArI2RlZmluZSBWSURUQ09OMV9WU1BXKF94 KQkJCSgoX3gpIDw8IDE2KQo+ICsKPiArLyogVklEVENPTjIgKi8KPiArI2RlZmluZSBWSURUQ09O MgkJCQkoMHg2MTgpCj4gKwo+ICsjZGVmaW5lIFZJRFRDT04yX0hCUERfTUFTSwkJCSgweGZmZmYg PDwgMTYpCj4gKyNkZWZpbmUgVklEVENPTjJfSEJQRF9TSElGVAkJCSgxNikKPiArI2RlZmluZSBW SURUQ09OMl9IQlBEX0xJTUlUCQkJKDB4ZmZmZikKPiArI2RlZmluZSBWSURUQ09OMl9IQlBEKF94 KQkJCSgoX3gpIDw8IDE2KQo+ICsKPiArI2RlZmluZSBWSURUQ09OMl9IRlBEX01BU0sJCQkoMHhm ZmZmIDw8IDApCj4gKyNkZWZpbmUgVklEVENPTjJfSEZQRF9TSElGVAkJCSgwKQo+ICsjZGVmaW5l IFZJRFRDT04yX0hGUERfTElNSVQJCQkoMHhmZmZmKQo+ICsjZGVmaW5lIFZJRFRDT04yX0hGUEQo X3gpCQkJKChfeCkgPDwgMCkKPiArCj4gKy8qIFZJRFRDT04zICovCj4gKyNkZWZpbmUgVklEVENP TjMJCQkJKDB4NjFDKQo+ICsKPiArI2RlZmluZSBWSURUQ09OM19IU1BXX01BU0sJCQkoMHhmZmZm IDw8IDE2KQo+ICsjZGVmaW5lIFZJRFRDT04zX0hTUFdfU0hJRlQJCQkoMTYpCj4gKyNkZWZpbmUg VklEVENPTjNfSFNQV19MSU1JVAkJCSgweGZmZmYpCj4gKyNkZWZpbmUgVklEVENPTjNfSFNQVyhf eCkJCQkoKF94KSA8PCAxNikKPiArCj4gKy8qIFZJRFRDT040ICovCj4gKyNkZWZpbmUgVklEVENP TjQJCQkJKDB4NjIwKQo+ICsKPiArI2RlZmluZSBWSURUQ09ONF9MSU5FVkFMX01BU0sJCQkoMHhm ZmYgPDwgMTYpCj4gKyNkZWZpbmUgVklEVENPTjRfTElORVZBTF9TSElGVAkJCSgxNikKPiArI2Rl ZmluZSBWSURUQ09ONF9MSU5FVkFMX0xJTUlUCQkJKDB4ZmZmKQo+ICsjZGVmaW5lIFZJRFRDT040 X0xJTkVWQUwoX3gpCQkJKCgoX3gpICYgMHhmZmYpIDw8IDE2KQo+ICsKPiArI2RlZmluZSBWSURU Q09ONF9IT1pWQUxfTUFTSwkJCSgweGZmZiA8PCAwKQo+ICsjZGVmaW5lIFZJRFRDT040X0hPWlZB TF9TSElGVAkJCSgwKQo+ICsjZGVmaW5lIFZJRFRDT040X0hPWlZBTF9MSU1JVAkJCSgweGZmZikK PiArI2RlZmluZSBWSURUQ09ONF9IT1pWQUwoX3gpCQkJKCgoX3gpICYgMHhmZmYpIDw8IDApCj4g Kwo+ICsvKiBMSU5FQ05UIE9QIFRIUlNIT0xEKi8KPiArI2RlZmluZSBMSU5FQ05UX09QX1RIUkVT SE9MRAkJCSgweDYzMCkKPiArCj4gKy8qIENSQ0NUUkwgKi8KPiArI2RlZmluZSBDUkNDVFJMCQkJ CQkoMHg2QzgpCj4gKyNkZWZpbmUgQ1JDQ1RSTF9DUkNDTEtFTgkJCSgweDEgPDwgMikKPiArI2Rl ZmluZSBDUkNDVFJMX0NSQ1NUQVJUX0YJCQkoMHgxIDw8IDEpCj4gKyNkZWZpbmUgQ1JDQ1RSTF9D UkNFTgkJCQkoMHgxIDw8IDApCj4gKwo+ICsvKiBERUNPTl9DTVUgKi8KPiArI2RlZmluZSBERUNP Tl9DTVUJCQkJKDB4NzA0KQo+ICsKPiArI2RlZmluZSBERUNPTl9DTVVfQUxMX0NMS0dBVEVfRU5B QkxFCQkoMHgzKQo+ICsjZGVmaW5lIERFQ09OX0NNVV9TRV9DTEtHQVRFX0VOQUJMRQkJKDB4MSA8 PCAyKQo+ICsjZGVmaW5lIERFQ09OX0NNVV9TRlJfQ0xLR0FURV9FTkFCTEUJCSgweDEgPDwgMSkK PiArI2RlZmluZSBERUNPTl9DTVVfTUVNX0NMS0dBVEVfRU5BQkxFCQkoMHgxIDw8IDApCj4gKwo+ ICsvKiBERUNPTl9VUERBVEUgKi8KPiArI2RlZmluZSBERUNPTl9VUERBVEUJCQkJKDB4NzEwKQo+ ICsKPiArI2RlZmluZSBERUNPTl9VUERBVEVfU0xBVkVfU1lOQwkJCSgxIDw8IDQpCj4gKyNkZWZp bmUgREVDT05fVVBEQVRFX1NUQU5EQUxPTkVfRgkJKDEgPDwgMCkKPgoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==