From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3] drm/mcde: Add new driver for ST-Ericsson MCDE Date: Wed, 22 May 2019 10:08:44 +0200 Message-ID: <20190522080844.GS21222@phenom.ffwll.local> References: <20190522072153.13727-1-linus.walleij@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3FB3F8949C for ; Wed, 22 May 2019 08:08:50 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id m4so2477230edd.8 for ; Wed, 22 May 2019 01:08:50 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190522072153.13727-1-linus.walleij@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Linus Walleij Cc: Maxime Ripard , Sean Paul , linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBNYXkgMjIsIDIwMTkgYXQgMDk6MjE6NTNBTSArMDIwMCwgTGludXMgV2FsbGVpaiB3 cm90ZToKPiBUaGlzIGFkZHMgYSBuZXcgRFJNIGRyaXZlciBmb3IgdGhlIFNULUVyaWNzc29uIE11 bHRpIENoYW5uZWwKPiBEaXNwbGF5IEVuZ2luZSwgTUNERSBkaXNwbGF5IGNvbnRyb2xsZXIuCj4g Cj4gVGhpcyBoYXJkd2FyZSBoYXMgdGhyZWUgaW5kZXBlbmRlbnQgRFNJIGhvc3RzIGFuZCBjYW4g Y29tcG9zaXQKPiBhbmQgZGlzcGxheSBzZXZlcmFsIG1lbW9yeSBidWZmZXJzIG9udG8gYW4gTENE IGRpc3BsYXkuIEl0Cj4gd2FzIGRldmVsb3BlZCBmb3Igc2V2ZXJhbCB5ZWFycyBpbnNpZGUgb2Yg U1QtRXJpY3Nzb24gYW5kCj4gc2hpcHBlZCB3aXRoIGEgZmV3IG1pbGxpb24gbW9iaWxlIHBob25l cyBmcm9tIFNvbnkgYW5kIFNhbXN1bmcsCj4gYXMgd2VsbCBhcyB3aXRoIHRoZSBTbm93YmFsbCBj b21tdW5pdHkgZGV2ZWxvcG1lbnQgYm9hcmQuCj4gCj4gVGhlIGRyaXZlciBpcyBjdXJyZW50bHkg cHJldHR5IHJ1ZGltZW50YXJ5IGJ1dCBzdXBwb3J0cyBhCj4gc2ltcGxlIGZyYW1lYnVmZmVyIHNv IHdlIGNhbiBnZXQgcGVuZ3VpbnMgYW5kIGdyYXBoaWNzIHdoZW4KPiB1c2luZyB0aGVzZSBTb0Nz Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IExpbnVzIFdhbGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJv Lm9yZz4KPiAtLS0KPiBDaGFuZ2VMb2cgdjItPnYzOgo+IC0gQnJlYWsgb3V0IGZ1bmN0aW9ucyBm b3IgZW5hYmxpbmcgYW5kIGRpc2FibGluZyB0aGUKPiAgIGRpc3BsYXkgcGlwZWxpbmUsIHVzZSBh YnN0cmFjdCBlbnVtcyB0byBpbmRpY2F0ZQo+ICAgRklGT3MsIGNoYW5uZWxzLCBleHRlcm5hbCBz b3VyY2VzLCBmb3JtYXR0ZXJzIGFuZAo+ICAgb3ZlcmxheXMuCj4gLSBCcmVhayBvdXQgZnVuY3Rp b25zIHRvIGNvbmZpZ3VyZSBjaGFubmVsLCBGSUZPLCBleHRlcm5hbAo+ICAgc291cmNlcywgZm9y bWF0dGVyIGFuZCBvdmVybGF5cy4gIFRoaXMgbWFrZXMgaXQgbW9yZSBjbGVhcgo+ICAgaG93IHRo ZSBkaXNwbGF5IHBpcGVsaW5lIGlzIGFjdHVhbGx5IHNldCB1cC4KPiAtIFNwbGl0IG91dCB0aGUg cmVnaXN0ZXJzIHRvIHNlcGFyYXRlIGluY2x1ZGUgZmlsZXMgZm9yIHRoZQo+ICAgbWNkZV9kaXNw bGF5LmMgYW5kIG1jZGVfZHNpLmMgZHJpdmVyIGZpbGVzLiBLZWVwIHRoZSBmZXcKPiAgIHJlZ2lz dGVycyBpbiBtY2RlX2Rydi5jIGxvY2FsbHkuCj4gLSBTd2l0Y2ggZXZlbnQgaGFuZGxpbmcgYW5k IGRpc3BsYXkgdXBkYXRlIGluIHRoZSAudXBkYXRlKCkKPiAgIGNhbGxiYWNrIHNvIHRoYXQgd2Ug YXJtIHRoZSB2YmxhbmsgSVJRIGJlZm9yZSB3ZQo+ICAgc2VuZCB0aGUgZGlzcGxheSB1cGRhdGUs IHNvIHRoZXJlIGlzIG5vIHJpc2sgb2YgbWlzc2luZwo+ICAgdGhlIHZibGFuayBJUlEuCj4gLSBV c2UgZHJtX2dlbV9mYl9zaW1wbGVfZGlzcGxheV9waXBlX3ByZXBhcmVfZmIoKQo+IC0gVXNlICBk cm1fZ2VtX2ZiX2NyZWF0ZV93aXRoX2RpcnR5KCkgYW5kIHdlIHN0YXJ0IHRvIGdldAo+ICAgYmV0 dGVyIGV4cGxpY2l0IGNvbW1pdHMgb2YgdGhlIGRpcnR5IGZyYW1lYnVmZmVycywKPiAgIHdpdGgg dGhlIGNvcmUgZW5hYmxpbmcgYW5kIHVzaW5nIHRoZSB2YmxhbmssIGludGVycnVwdAo+ICAgY291 bnQgZ29pbmcgdXAuCj4gLSBHZXQgcmlkIG9mIHRoZSBoZWxwZXIgdmFyaWFibGVzICJlbmFibGVk IiBhbmQgInZibGFua19pcnFfb24iCj4gICB0aGF0IHdlcmUgY29tcGV0aW5nIHdpdGggYXRvbWlj IHVwZGF0ZXMuIEluc3RlYWQgY2FsbCB0aGUKPiAgIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF90 YWlsX3JwbSgpIGZyb20gdGhlIG1vZGUgY29uZmlnCj4gICBoZWxwZXJzIC5hdG9taWNfY29tbWl0 X3RhaWwoKSBzbyB0aGF0IHRoZSBDUlRDIGlzIGFsd2F5cwo+ICAgZW5hYmxlZCBiZWZvcmUgc2Vu ZGluZyBhbiB1cGRhdGUgYW5kIHZvaWxhIGl0IG1hZ2ljYWxseQo+ICAgd29ya3MuCj4gLSBPcmRl ciBpbmNsdWRlcyBhbHBoYWJldGljYWxseS4KPiAtIEdldCByaWQgb2YgPGRybS9kcm1QLmg+Cj4g LSBNb3ZlIHRvIHVzaW5nIGFuIGVtYmVkZGVkIHN0cnVjdCBkcm1fZGV2aWNlIGFuZCB1c2luZwo+ ICAgZHJtX2Rldl9pbml0KCkKClByZXR0eSBzdXJlIEkgc21hc2hlZCBhbiBhY2sgb24gdGhpcyBh bHJlYWR5LCBhbmQgd2l0aCB0aGUgbGlzdCBvZiBwb2xpc2gKYWJvdmUgdGhhdCdzIGRlZmluaXRl bHkgc3RpbGwgdmFsaWQsIHNvIGhlcmUgeW91IGFnYWluIDotKQoKQWNrZWQtYnk6IERhbmllbCBW ZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+CgpJbW8gZ2V0IHRoaXMgbWVyZ2VkLCBhbmQg aWYgdGhlcmUncyBmdXJ0aGVyIHBvbGlzaCwgcG9saXNoIGluLXRyZWUuCi1EYW5pZWwKCj4gQ2hh bmdlTG9nIHYxLT52MjoKPiAtIFJlcGxhY2UgdGhlIHF1aXJreSBjdXN0b20gZW5jb2RlciBzdHJ1 Y3R1cmUgYW5kIGhhY2tzIGluCj4gICB0aGUgRkJERVYgY29yZSB3aXRoIGEgc3RyYWlnaHQtZm9y d2FyZCBpbnRlcm5hbCBEU0kgYnJpZGdlCj4gICB3aGljaCBpcyBpbiB0dXJuIGNvbm5lY3RlZCB0 byB0aGUgcGFuZWwgYnJpZGdlLiBJdCB3b3Jrcwo+ICAgbGlrZSBhIGNoYXJtLCBtdWNoIHRvIG15 IHN1cnByaXNlLgo+IC0gRHJvcCB0aGUgcGFuZWwgcG9ydCBncmFwaCBwYXJzaW5nIGZvciB0aGUg RFNJIGhvc3QKPiAgIHRvIHBhbmVsczogdGhlIHBhbmVscyBhcmUgY2hpbGRyZW4gb2YgdGhlIERT SSBub2RlLAo+ICAgc28ganVzdCBzcGluIG92ZXIgdGhlIGNoaWxkcmVuIGFuZCB0YWtlIHRoZSBm aXJzdAo+ICAgd29ya2luZyBwYW5lbC4KPiAtIE1vdmUgY2xvY2sgbG9va3VwIGFuZCBoYW5kbGlu ZyBmb3IgdGhlIERTSSBIUyBhbmQKPiAgIExQIGNsb2NrcyB0byB0aGUgRFNJIGRyaXZlciBmaWxl IGFzIHRoaXMgaXMgbm93Cj4gICBjbGVhbmx5IGFzc29jaWF0ZWQgd2l0aCByZXNwZWN0aXZlIERT SSBwb3J0Lgo+IC0tLQo+ICBEb2N1bWVudGF0aW9uL2dwdS9kcml2ZXJzLnJzdCAgICAgICAgICAg IHwgICAgMSArCj4gIERvY3VtZW50YXRpb24vZ3B1L21jZGUucnN0ICAgICAgICAgICAgICAgfCAg ICA4ICsKPiAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcg Kwo+ICBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICAgICAgICAgICAgIHwgICAgMiArCj4g IGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgZHJp dmVycy9ncHUvZHJtL21jZGUvS2NvbmZpZyAgICAgICAgICAgICB8ICAgMTggKwo+ICBkcml2ZXJz L2dwdS9kcm0vbWNkZS9NYWtlZmlsZSAgICAgICAgICAgIHwgICAgMyArCj4gIGRyaXZlcnMvZ3B1 L2RybS9tY2RlL21jZGVfZGlzcGxheS5jICAgICAgfCAxMTQ1ICsrKysrKysrKysrKysrKysrKysr KysKPiAgZHJpdmVycy9ncHUvZHJtL21jZGUvbWNkZV9kaXNwbGF5X3JlZ3MuaCB8ICA1MTggKysr KysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2RybS5oICAgICAgICAgIHwgICA0 NCArCj4gIGRyaXZlcnMvZ3B1L2RybS9tY2RlL21jZGVfZHJ2LmMgICAgICAgICAgfCAgNTcyICsr KysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9tY2RlL21jZGVfZHNpLmMgICAgICAgICAgfCAx MDQ0ICsrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9tY2RlL21jZGVfZHNp X3JlZ3MuaCAgICAgfCAgMzg1ICsrKysrKysrCj4gIDEzIGZpbGVzIGNoYW5nZWQsIDM3NDggaW5z ZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ncHUvbWNkZS5y c3QKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tY2RlL0tjb25maWcKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tY2RlL01ha2VmaWxlCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2Rpc3BsYXkuYwo+ICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21jZGUvbWNkZV9kaXNwbGF5X3JlZ3MuaAo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21jZGUvbWNkZV9kcm0uaAo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21jZGUvbWNkZV9kcnYuYwo+ICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21jZGUvbWNkZV9kc2kuYwo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21jZGUvbWNkZV9kc2lfcmVncy5oCj4gCj4gZGlm ZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RyaXZlcnMucnN0IGIvRG9jdW1lbnRhdGlvbi9n cHUvZHJpdmVycy5yc3QKPiBpbmRleCAwNDRhNzAyNTQ3N2MuLjRiZmI3MDY4ZTlmNyAxMDA2NDQK PiAtLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcml2ZXJzLnJzdAo+ICsrKyBiL0RvY3VtZW50YXRp b24vZ3B1L2RyaXZlcnMucnN0Cj4gQEAgLTcsNiArNyw3IEBAIEdQVSBEcml2ZXIgRG9jdW1lbnRh dGlvbgo+ICAgICBhbWRncHUKPiAgICAgYW1kZ3B1LWRjCj4gICAgIGk5MTUKPiArICAgbWNkZQo+ ICAgICBtZXNvbgo+ICAgICBwbDExMQo+ICAgICB0ZWdyYQo+IGRpZmYgLS1naXQgYS9Eb2N1bWVu dGF0aW9uL2dwdS9tY2RlLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L21jZGUucnN0Cj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmM2OWU5NzdkZWZkYQo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9tY2RlLnJzdAo+IEBAIC0wLDAgKzEs OCBAQAo+ICsuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsKPiArPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ICsgZHJt L21jZGUgU1QtRXJpY3Nzb24gTUNERSBNdWx0aS1jaGFubmVsIGRpc3BsYXkgZW5naW5lCj4gKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiAr Cj4gKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2Rydi5jCj4gKyAg IDpkb2M6IFNULUVyaWNzc29uIE1DREUgRFJNIERyaXZlcgo+IGRpZmYgLS1naXQgYS9NQUlOVEFJ TkVSUyBiL01BSU5UQUlORVJTCj4gaW5kZXggNWNmYmVhNGNlNTc1Li41NmNiYzg3ODA1MDcgMTAw NjQ0Cj4gLS0tIGEvTUFJTlRBSU5FUlMKPiArKysgYi9NQUlOVEFJTkVSUwo+IEBAIC01MTI4LDYg KzUxMjgsMTMgQEAgUzoJTWFpbnRhaW5lZAo+ICBGOglkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9z dDc3MzVyLmMKPiAgRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkv c2l0cm9uaXgsc3Q3NzM1ci50eHQKPiAgCj4gK0RSTSBEUklWRVIgRk9SIFNULUVSSUNTU09OIE1D REUKPiArTToJTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgo+ICtUOgln aXQgZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZHJtL2RybS1taXNjCj4gK1M6CU1haW50 YWluZWQKPiArRjoJZHJpdmVycy9ncHUvZHJtL21jZGUvCj4gK0Y6CURvY3VtZW50YXRpb24vZGV2 aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3N0ZSxtY2RlLnR4dAo+ICsKPiAgRFJNIERSSVZFUiBG T1IgVERGWCBWSURFTyBDQVJEUwo+ICBTOglPcnBoYW4gLyBPYnNvbGV0ZQo+ICBGOglkcml2ZXJz L2dwdS9kcm0vdGRmeC8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9k cml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+IGluZGV4IGUzNjBhNGExMzFlMS4uMGZlMWQ1OWU0NDc5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL0tjb25maWcKPiBAQCAtMzQyLDYgKzM0Miw4IEBAIHNvdXJjZSAiZHJpdmVycy9ncHUv ZHJtL3BhbmZyb3N0L0tjb25maWciCj4gIAo+ICBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9hc3Bl ZWQvS2NvbmZpZyIKPiAgCj4gK3NvdXJjZSAiZHJpdmVycy9ncHUvZHJtL21jZGUvS2NvbmZpZyIK PiArCj4gICMgS2VlcCBsZWdhY3kgZHJpdmVycyBsYXN0Cj4gIAo+ICBtZW51Y29uZmlnIERSTV9M RUdBQ1kKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9n cHUvZHJtL01ha2VmaWxlCj4gaW5kZXggNzJmNTAzNmQ5YmZhLi4xNWU0ODQxZmU0Y2QgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlCj4gQEAgLTExMywzICsxMTMsNCBAQCBvYmotJChDT05GSUdfRFJNX1ZCT1hWSURF TykgKz0gdmJveHZpZGVvLwo+ICBvYmotJChDT05GSUdfRFJNX0xJTUEpICArPSBsaW1hLwo+ICBv YmotJChDT05GSUdfRFJNX1BBTkZST1NUKSArPSBwYW5mcm9zdC8KPiAgb2JqLSQoQ09ORklHX0RS TV9BU1BFRURfR0ZYKSArPSBhc3BlZWQvCj4gK29iai0kKENPTkZJR19EUk1fTUNERSkgKz0gbWNk ZS8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21jZGUvS2NvbmZpZyBiL2RyaXZlcnMv Z3B1L2RybS9tY2RlL0tjb25maWcKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAwMDAwMC4uYjM5OTAxMjY1NjJjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tY2RlL0tjb25maWcKPiBAQCAtMCwwICsxLDE4IEBACj4gK2NvbmZpZyBEUk1fTUNERQo+ ICsJdHJpc3RhdGUgIkRSTSBTdXBwb3J0IGZvciBTVC1Fcmljc3NvbiBNQ0RFIChNdWx0aWNoYW5u ZWwgRGlzcGxheSBFbmdpbmUpIgo+ICsJZGVwZW5kcyBvbiBEUk0KPiArCWRlcGVuZHMgb24gQ01B Cj4gKwlkZXBlbmRzIG9uIEFSTSB8fCBDT01QSUxFX1RFU1QKPiArCWRlcGVuZHMgb24gT0YKPiAr CXNlbGVjdCBNRkRfU1lTQ09OCj4gKwlzZWxlY3QgRFJNX01JUElfRFNJCj4gKwlzZWxlY3QgRFJN X0JSSURHRQo+ICsJc2VsZWN0IERSTV9QQU5FTF9CUklER0UKPiArCXNlbGVjdCBEUk1fS01TX0hF TFBFUgo+ICsJc2VsZWN0IERSTV9LTVNfQ01BX0hFTFBFUgo+ICsJc2VsZWN0IERSTV9HRU1fQ01B X0hFTFBFUgo+ICsJc2VsZWN0IFZUX0hXX0NPTlNPTEVfQklORElORyBpZiBGUkFNRUJVRkZFUl9D T05TT0xFCj4gKwloZWxwCj4gKwkgIENob29zZSB0aGlzIG9wdGlvbiBmb3IgRFJNIHN1cHBvcnQg Zm9yIHRoZSBTVC1Fcmljc3NvbiBNQ0RFCj4gKwkgIE11bHRpLUNoYW5uZWwgRGlzcGxheSBFbmdp bmUuCj4gKwkgIElmIE0gaXMgc2VsZWN0ZWQgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBtY2Rl X2RybS4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21jZGUvTWFrZWZpbGUgYi9kcml2 ZXJzL2dwdS9kcm0vbWNkZS9NYWtlZmlsZQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAwMDAwLi5mZTI4ZjRlMGZlNDYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL21jZGUvTWFrZWZpbGUKPiBAQCAtMCwwICsxLDMgQEAKPiArbWNkZV9kcm0teSAr PQltY2RlX2Rydi5vIG1jZGVfZHNpLm8gbWNkZV9kaXNwbGF5Lm8KPiArCj4gK29iai0kKENPTkZJ R19EUk1fTUNERSkgKz0gbWNkZV9kcm0ubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bWNkZS9tY2RlX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9tY2RlL21jZGVfZGlzcGxheS5j Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmYzMTIyMWEyMzAx Mgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2Rpc3Bs YXkuYwo+IEBAIC0wLDAgKzEsMTE0NSBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTggTGludXMgV2FsbGVpaiA8bGlu dXMud2FsbGVpakBsaW5hcm8ub3JnPgo+ICsgKiBQYXJ0cyBvZiB0aGlzIGZpbGUgd2VyZSBiYXNl ZCBvbiB0aGUgTUNERSBkcml2ZXIgYnkgTWFyY3VzIExvcmVudHpvbgo+ICsgKiAoQykgU1QtRXJp Y3Nzb24gU0EgMjAxMwo+ICsgKi8KPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVk ZSA8bGludXgvZGVsYXkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KPiArCj4gKyNp bmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVs cGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9nZW1fY21hX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJf aGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX21pcGlfZHNpLmg+Cj4gKyNpbmNsdWRlIDxk cm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3ZibGFuay5o Pgo+ICsjaW5jbHVkZSA8dmlkZW8vbWlwaV9kaXNwbGF5Lmg+Cj4gKwo+ICsjaW5jbHVkZSAibWNk ZV9kcm0uaCIKPiArI2luY2x1ZGUgIm1jZGVfZGlzcGxheV9yZWdzLmgiCj4gKwo+ICtlbnVtIG1j ZGVfZmlmbyB7Cj4gKwlNQ0RFX0ZJRk9fQSwKPiArCU1DREVfRklGT19CLAo+ICsJLyogVE9ETzog aW1wbGVtZW50IEZJRk8gQzAgYW5kIEZJRk8gQzEgKi8KPiArfTsKPiArCj4gK2VudW0gbWNkZV9j aGFubmVsIHsKPiArCU1DREVfQ0hBTk5FTF8wID0gMCwKPiArCU1DREVfQ0hBTk5FTF8xLAo+ICsJ TUNERV9DSEFOTkVMXzIsCj4gKwlNQ0RFX0NIQU5ORUxfMywKPiArfTsKPiArCj4gK2VudW0gbWNk ZV9leHRzcmMgewo+ICsJTUNERV9FWFRTUkNfMCA9IDAsCj4gKwlNQ0RFX0VYVFNSQ18xLAo+ICsJ TUNERV9FWFRTUkNfMiwKPiArCU1DREVfRVhUU1JDXzMsCj4gKwlNQ0RFX0VYVFNSQ180LAo+ICsJ TUNERV9FWFRTUkNfNSwKPiArCU1DREVfRVhUU1JDXzYsCj4gKwlNQ0RFX0VYVFNSQ183LAo+ICsJ TUNERV9FWFRTUkNfOCwKPiArCU1DREVfRVhUU1JDXzksCj4gK307Cj4gKwo+ICtlbnVtIG1jZGVf b3ZlcmxheSB7Cj4gKwlNQ0RFX09WRVJMQVlfMCA9IDAsCj4gKwlNQ0RFX09WRVJMQVlfMSwKPiAr CU1DREVfT1ZFUkxBWV8yLAo+ICsJTUNERV9PVkVSTEFZXzMsCj4gKwlNQ0RFX09WRVJMQVlfNCwK PiArCU1DREVfT1ZFUkxBWV81LAo+ICt9Owo+ICsKPiArZW51bSBtY2RlX2RzaV9mb3JtYXR0ZXIg ewo+ICsJTUNERV9EU0lfRk9STUFUVEVSXzAgPSAwLAo+ICsJTUNERV9EU0lfRk9STUFUVEVSXzEs Cj4gKwlNQ0RFX0RTSV9GT1JNQVRURVJfMiwKPiArfTsKPiArCj4gK3ZvaWQgbWNkZV9kaXNwbGF5 X2lycShzdHJ1Y3QgbWNkZSAqbWNkZSkKPiArewo+ICsJdTMyIG1pc3BwLCBtaXNvdmwsIG1pc2No bmw7Cj4gKwlib29sIHZibGFuazsKPiArCj4gKwkvKiBIYW5kbGUgZGlzcGxheSBJUlFzICovCj4g KwltaXNwcCA9IHJlYWRsKG1jZGUtPnJlZ3MgKyBNQ0RFX01JU1BQKTsKPiArCW1pc292bCA9IHJl YWRsKG1jZGUtPnJlZ3MgKyBNQ0RFX01JU09WTCk7Cj4gKwltaXNjaG5sID0gcmVhZGwobWNkZS0+ cmVncyArIE1DREVfTUlTQ0hOTCk7Cj4gKwo+ICsJLyoKPiArCSAqIEhhbmRsZSBJUlFzIGZyb20g dGhlIERTSSBsaW5rLiBBbGwgSVJRcyBmcm9tIHRoZSBEU0kgbGlua3MKPiArCSAqIGFyZSBqdXN0 IGxhdGNoZWQgb250byB0aGUgTUNERSBJUlEgbGluZSwgc28gd2UgbmVlZCB0byB0cmF2ZXJzZQo+ ICsJICogYW55IGFjdGl2ZSBEU0kgbWFzdGVycyBhbmQgY2hlY2sgaWYgYW4gSVJRIGlzIG9yaWdp bmF0aW5nIGZyb20KPiArCSAqIHRoZW0uCj4gKwkgKgo+ICsJICogVE9ETzogQ3VycmVudGx5IG9u bHkgb25lIERTSSBsaW5rIGlzIHN1cHBvcnRlZC4KPiArCSAqLwo+ICsJaWYgKG1jZGVfZHNpX2ly cShtY2RlLT5tZHNpKSkgewo+ICsJCXUzMiB2YWw7Cj4gKwo+ICsJCS8qCj4gKwkJICogSW4gb25l c2hvdCBtb2RlIHdlIGRvIG5vdCBzZW5kIGNvbnRpbnVvdXMgdXBkYXRlcwo+ICsJCSAqIHRvIHRo ZSBkaXNwbGF5LCBpbnN0ZWFkIHdlIG9ubHkgcHVzaCBvdXQgdXBkYXRlcyB3aGVuCj4gKwkJICog dGhlIHVwZGF0ZSBmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZW4gd2UgZGlzYWJsZSB0aGUKPiArCQkg KiBmbG93IG9uIHRoZSBjaGFubmVsIG9uY2Ugd2UgZ2V0IHRoZSBURSBJUlEuCj4gKwkJICovCj4g KwkJaWYgKG1jZGUtPm9uZXNob3RfbW9kZSkgewo+ICsJCQlzcGluX2xvY2soJm1jZGUtPmZsb3df bG9jayk7Cj4gKwkJCWlmICgtLW1jZGUtPmZsb3dfYWN0aXZlID09IDApIHsKPiArCQkJCWRldl9k YmcobWNkZS0+ZGV2LCAiVEUwIElSUVxuIik7Cj4gKwkJCQkvKiBEaXNhYmxlIEZJRk8gQSBmbG93 ICovCj4gKwkJCQl2YWwgPSByZWFkbChtY2RlLT5yZWdzICsgTUNERV9DUkEwKTsKPiArCQkJCXZh bCAmPSB+TUNERV9DUlgwX0ZMT0VOOwo+ICsJCQkJd3JpdGVsKHZhbCwgbWNkZS0+cmVncyArIE1D REVfQ1JBMCk7Cj4gKwkJCX0KPiArCQkJc3Bpbl91bmxvY2soJm1jZGUtPmZsb3dfbG9jayk7Cj4g KwkJfQo+ICsJfQo+ICsKPiArCS8qIFZibGFuayBmcm9tIG9uZSBvZiB0aGUgY2hhbm5lbHMgKi8K PiArCWlmIChtaXNwcCAmIE1DREVfUFBfVkNNUEEpIHsKPiArCQlkZXZfZGJnKG1jZGUtPmRldiwg ImNobmwgQSB2YmxhbmsgSVJRXG4iKTsKPiArCQl2YmxhbmsgPSB0cnVlOwo+ICsJfQo+ICsJaWYg KG1pc3BwICYgTUNERV9QUF9WQ01QQikgewo+ICsJCWRldl9kYmcobWNkZS0+ZGV2LCAiY2hubCBC IHZibGFuayBJUlFcbiIpOwo+ICsJCXZibGFuayA9IHRydWU7Cj4gKwl9Cj4gKwlpZiAobWlzcHAg JiBNQ0RFX1BQX1ZDTVBDMCkKPiArCQlkZXZfZGJnKG1jZGUtPmRldiwgImNobmwgQzAgdmJsYW5r IElSUVxuIik7Cj4gKwlpZiAobWlzcHAgJiBNQ0RFX1BQX1ZDTVBDMSkKPiArCQlkZXZfZGJnKG1j ZGUtPmRldiwgImNobmwgQzEgdmJsYW5rIElSUVxuIik7Cj4gKwlpZiAobWlzcHAgJiBNQ0RFX1BQ X1ZTQ0MwKQo+ICsJCWRldl9kYmcobWNkZS0+ZGV2LCAiY2hubCBDMCBURSBJUlFcbiIpOwo+ICsJ aWYgKG1pc3BwICYgTUNERV9QUF9WU0NDMSkKPiArCQlkZXZfZGJnKG1jZGUtPmRldiwgImNobmwg QzEgVEUgSVJRXG4iKTsKPiArCXdyaXRlbChtaXNwcCwgbWNkZS0+cmVncyArIE1DREVfUklTUFAp Owo+ICsKPiArCWlmICh2YmxhbmspCj4gKwkJZHJtX2NydGNfaGFuZGxlX3ZibGFuaygmbWNkZS0+ cGlwZS5jcnRjKTsKPiArCj4gKwlpZiAobWlzb3ZsKQo+ICsJCWRldl9pbmZvKG1jZGUtPmRldiwg InNvbWUgc3RyYXkgb3ZlcmxheSBJUlEgJTA4eFxuIiwgbWlzb3ZsKTsKPiArCXdyaXRlbChtaXNv dmwsIG1jZGUtPnJlZ3MgKyBNQ0RFX1JJU09WTCk7Cj4gKwo+ICsJaWYgKG1pc2NobmwpCj4gKwkJ ZGV2X2luZm8obWNkZS0+ZGV2LCAic29tZSBzdHJheSBjaGFubmVsIGVycm9yIElSUSAlMDh4XG4i LAo+ICsJCQkgbWlzY2hubCk7Cj4gKwl3cml0ZWwobWlzY2hubCwgbWNkZS0+cmVncyArIE1DREVf UklTQ0hOTCk7Cj4gK30KPiArCj4gK3ZvaWQgbWNkZV9kaXNwbGF5X2Rpc2FibGVfaXJxcyhzdHJ1 Y3QgbWNkZSAqbWNkZSkKPiArewo+ICsJLyogRGlzYWJsZSBhbGwgSVJRcyAqLwo+ICsJd3JpdGVs KDAsIG1jZGUtPnJlZ3MgKyBNQ0RFX0lNU0NQUCk7Cj4gKwl3cml0ZWwoMCwgbWNkZS0+cmVncyAr IE1DREVfSU1TQ09WTCk7Cj4gKwl3cml0ZWwoMCwgbWNkZS0+cmVncyArIE1DREVfSU1TQ0NITkwp Owo+ICsKPiArCS8qIENsZWFyIGFueSBwZW5kaW5nIElSUXMgKi8KPiArCXdyaXRlbCgweEZGRkZG RkZGLCBtY2RlLT5yZWdzICsgTUNERV9SSVNQUCk7Cj4gKwl3cml0ZWwoMHhGRkZGRkZGRiwgbWNk ZS0+cmVncyArIE1DREVfUklTT1ZMKTsKPiArCXdyaXRlbCgweEZGRkZGRkZGLCBtY2RlLT5yZWdz ICsgTUNERV9SSVNDSE5MKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBtY2RlX2Rpc3BsYXlfY2hl Y2soc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAo+ICsJCQkgICAgICAgc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlLAo+ICsJCQkgICAgICAgc3RydWN0IGRybV9jcnRj X3N0YXRlICpjc3RhdGUpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpt b2RlID0gJmNzdGF0ZS0+bW9kZTsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYiA9 IHBpcGUtPnBsYW5lLnN0YXRlLT5mYjsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g cHN0YXRlLT5mYjsKPiArCj4gKwlpZiAoZmIpIHsKPiArCQl1MzIgb2Zmc2V0ID0gZHJtX2ZiX2Nt YV9nZXRfZ2VtX2FkZHIoZmIsIHBzdGF0ZSwgMCk7Cj4gKwo+ICsJCS8qIEZCIGJhc2UgYWRkcmVz cyBtdXN0IGJlIGR3b3JkIGFsaWduZWQuICovCj4gKwkJaWYgKG9mZnNldCAmIDMpIHsKPiArCQkJ RFJNX0RFQlVHX0tNUygiRkIgbm90IDMyLWJpdCBhbGlnbmVkXG4iKTsKPiArCQkJcmV0dXJuIC1F SU5WQUw7Cj4gKwkJfQo+ICsKPiArCQkvKgo+ICsJCSAqIFRoZXJlJ3Mgbm8gcGl0Y2ggcmVnaXN0 ZXIsIHRoZSBtb2RlJ3MgaGRpc3BsYXkKPiArCQkgKiBjb250cm9scyB0aGlzLgo+ICsJCSAqLwo+ ICsJCWlmIChmYi0+cGl0Y2hlc1swXSAhPSBtb2RlLT5oZGlzcGxheSAqIGZiLT5mb3JtYXQtPmNw cFswXSkgewo+ICsJCQlEUk1fREVCVUdfS01TKCJjYW4ndCBoYW5kbGUgcGl0Y2hlc1xuIik7Cj4g KwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCj4gKwkJLyoKPiArCQkgKiBXZSBjYW4ndCBj aGFuZ2UgdGhlIEZCIGZvcm1hdCBpbiBhIGZsaWNrZXItZnJlZQo+ICsJCSAqIG1hbm5lciAoYW5k IG9ubHkgdXBkYXRlIGl0IGR1cmluZyBDUlRDIGVuYWJsZSkuCj4gKwkJICovCj4gKwkJaWYgKG9s ZF9mYiAmJiBvbGRfZmItPmZvcm1hdCAhPSBmYi0+Zm9ybWF0KQo+ICsJCQljc3RhdGUtPm1vZGVf Y2hhbmdlZCA9IHRydWU7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgbWNkZV9jb25maWd1cmVfZXh0c3JjKHN0cnVjdCBtY2RlICptY2RlLCBlbnVtIG1jZGVf ZXh0c3JjIHNyYywKPiArCQkJCSB1MzIgZm9ybWF0KQo+ICt7Cj4gKwl1MzIgdmFsOwo+ICsJdTMy IGNvbmY7Cj4gKwl1MzIgY3I7Cj4gKwo+ICsJc3dpdGNoIChzcmMpIHsKPiArCWNhc2UgTUNERV9F WFRTUkNfMDoKPiArCQljb25mID0gTUNERV9FWFRTUkMwQ09ORjsKPiArCQljciA9IE1DREVfRVhU U1JDMENSOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBNQ0RFX0VYVFNSQ18xOgo+ICsJCWNvbmYgPSBN Q0RFX0VYVFNSQzFDT05GOwo+ICsJCWNyID0gTUNERV9FWFRTUkMxQ1I7Cj4gKwkJYnJlYWs7Cj4g KwljYXNlIE1DREVfRVhUU1JDXzI6Cj4gKwkJY29uZiA9IE1DREVfRVhUU1JDMkNPTkY7Cj4gKwkJ Y3IgPSBNQ0RFX0VYVFNSQzJDUjsKPiArCQlicmVhazsKPiArCWNhc2UgTUNERV9FWFRTUkNfMzoK PiArCQljb25mID0gTUNERV9FWFRTUkMzQ09ORjsKPiArCQljciA9IE1DREVfRVhUU1JDM0NSOwo+ ICsJCWJyZWFrOwo+ICsJY2FzZSBNQ0RFX0VYVFNSQ180Ogo+ICsJCWNvbmYgPSBNQ0RFX0VYVFNS QzRDT05GOwo+ICsJCWNyID0gTUNERV9FWFRTUkM0Q1I7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIE1D REVfRVhUU1JDXzU6Cj4gKwkJY29uZiA9IE1DREVfRVhUU1JDNUNPTkY7Cj4gKwkJY3IgPSBNQ0RF X0VYVFNSQzVDUjsKPiArCQlicmVhazsKPiArCWNhc2UgTUNERV9FWFRTUkNfNjoKPiArCQljb25m ID0gTUNERV9FWFRTUkM2Q09ORjsKPiArCQljciA9IE1DREVfRVhUU1JDNkNSOwo+ICsJCWJyZWFr Owo+ICsJY2FzZSBNQ0RFX0VYVFNSQ183Ogo+ICsJCWNvbmYgPSBNQ0RFX0VYVFNSQzdDT05GOwo+ ICsJCWNyID0gTUNERV9FWFRTUkM3Q1I7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIE1DREVfRVhUU1JD Xzg6Cj4gKwkJY29uZiA9IE1DREVfRVhUU1JDOENPTkY7Cj4gKwkJY3IgPSBNQ0RFX0VYVFNSQzhD UjsKPiArCQlicmVhazsKPiArCWNhc2UgTUNERV9FWFRTUkNfOToKPiArCQljb25mID0gTUNERV9F WFRTUkM5Q09ORjsKPiArCQljciA9IE1DREVfRVhUU1JDOUNSOwo+ICsJCWJyZWFrOwo+ICsJfTsK PiArCj4gKwkvKgo+ICsJICogQ29uZmlndXJlIGV4dGVybmFsIHNvdXJjZSAwIG9uZSBidWZmZXIg KGJ1ZmZlciAwKQo+ICsJICogcHJpbWFyeSBvdmVybGF5IElEIDAuCj4gKwkgKiBGcm9tIG1jZGVf aHcuYyBvdmx5X3VwZGF0ZV9yZWdpc3RlcnMoKSBpbiB0aGUgdmVuZG9yIHRyZWUKPiArCSAqLwo+ ICsJdmFsID0gMCA8PCBNQ0RFX0VYVFNSQ1hDT05GX0JVRl9JRF9TSElGVDsKPiArCXZhbCB8PSAx IDw8IE1DREVfRVhUU1JDWENPTkZfQlVGX05CX1NISUZUOwo+ICsJdmFsIHw9IDAgPDwgTUNERV9F WFRTUkNYQ09ORl9QUklfT1ZMSURfU0hJRlQ7Cj4gKwkvKgo+ICsJICogTUNERSBoYXMgaW52ZXJz ZSBzZW1hbnRpY3MgZnJvbSBEUk0gb24gUkJHL0JHUiB3aGljaCBpcyB3aHkKPiArCSAqIGFsbCB0 aGUgbW9kZXMgYXJlIGludmVyc2VkIGhlcmUuCj4gKwkgKi8KPiArCXN3aXRjaCAoZm9ybWF0KSB7 Cj4gKwljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6Cj4gKwkJdmFsIHw9IE1DREVfRVhUU1JDWENP TkZfQlBQX0FSR0I4ODg4IDw8Cj4gKwkJCU1DREVfRVhUU1JDWENPTkZfQlBQX1NISUZUOwo+ICsJ CXZhbCB8PSBNQ0RFX0VYVFNSQ1hDT05GX0JHUjsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZP Uk1BVF9BQkdSODg4ODoKPiArCQl2YWwgfD0gTUNERV9FWFRTUkNYQ09ORl9CUFBfQVJHQjg4ODgg PDwKPiArCQkJTUNERV9FWFRTUkNYQ09ORl9CUFBfU0hJRlQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNl IERSTV9GT1JNQVRfWFJHQjg4ODg6Cj4gKwkJdmFsIHw9IE1DREVfRVhUU1JDWENPTkZfQlBQX1hS R0I4ODg4IDw8Cj4gKwkJCU1DREVfRVhUU1JDWENPTkZfQlBQX1NISUZUOwo+ICsJCXZhbCB8PSBN Q0RFX0VYVFNSQ1hDT05GX0JHUjsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZPUk1BVF9YQkdS ODg4ODoKPiArCQl2YWwgfD0gTUNERV9FWFRTUkNYQ09ORl9CUFBfWFJHQjg4ODggPDwKPiArCQkJ TUNERV9FWFRTUkNYQ09ORl9CUFBfU0hJRlQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERSTV9GT1JN QVRfUkdCODg4Ogo+ICsJCXZhbCB8PSBNQ0RFX0VYVFNSQ1hDT05GX0JQUF9SR0I4ODggPDwKPiAr CQkJTUNERV9FWFRTUkNYQ09ORl9CUFBfU0hJRlQ7Cj4gKwkJdmFsIHw9IE1DREVfRVhUU1JDWENP TkZfQkdSOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUjg4ODoKPiArCQl2YWwg fD0gTUNERV9FWFRTUkNYQ09ORl9CUFBfUkdCODg4IDw8Cj4gKwkJCU1DREVfRVhUU1JDWENPTkZf QlBQX1NISUZUOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX0FSR0I0NDQ0Ogo+ICsJ CXZhbCB8PSBNQ0RFX0VYVFNSQ1hDT05GX0JQUF9BUkdCNDQ0NCA8PAo+ICsJCQlNQ0RFX0VYVFNS Q1hDT05GX0JQUF9TSElGVDsKPiArCQl2YWwgfD0gTUNERV9FWFRTUkNYQ09ORl9CR1I7Cj4gKwkJ YnJlYWs7Cj4gKwljYXNlIERSTV9GT1JNQVRfQUJHUjQ0NDQ6Cj4gKwkJdmFsIHw9IE1DREVfRVhU U1JDWENPTkZfQlBQX0FSR0I0NDQ0IDw8Cj4gKwkJCU1DREVfRVhUU1JDWENPTkZfQlBQX1NISUZU Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0I0NDQ0Ogo+ICsJCXZhbCB8PSBN Q0RFX0VYVFNSQ1hDT05GX0JQUF9SR0I0NDQgPDwKPiArCQkJTUNERV9FWFRTUkNYQ09ORl9CUFBf U0hJRlQ7Cj4gKwkJdmFsIHw9IE1DREVfRVhUU1JDWENPTkZfQkdSOwo+ICsJCWJyZWFrOwo+ICsJ Y2FzZSBEUk1fRk9STUFUX1hCR1I0NDQ0Ogo+ICsJCXZhbCB8PSBNQ0RFX0VYVFNSQ1hDT05GX0JQ UF9SR0I0NDQgPDwKPiArCQkJTUNERV9FWFRTUkNYQ09ORl9CUFBfU0hJRlQ7Cj4gKwkJYnJlYWs7 Cj4gKwljYXNlIERSTV9GT1JNQVRfWFJHQjE1NTU6Cj4gKwkJdmFsIHw9IE1DREVfRVhUU1JDWENP TkZfQlBQX0lSR0IxNTU1IDw8Cj4gKwkJCU1DREVfRVhUU1JDWENPTkZfQlBQX1NISUZUOwo+ICsJ CXZhbCB8PSBNQ0RFX0VYVFNSQ1hDT05GX0JHUjsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZP Uk1BVF9YQkdSMTU1NToKPiArCQl2YWwgfD0gTUNERV9FWFRTUkNYQ09ORl9CUFBfSVJHQjE1NTUg PDwKPiArCQkJTUNERV9FWFRTUkNYQ09ORl9CUFBfU0hJRlQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNl IERSTV9GT1JNQVRfUkdCNTY1Ogo+ICsJCXZhbCB8PSBNQ0RFX0VYVFNSQ1hDT05GX0JQUF9SR0I1 NjUgPDwKPiArCQkJTUNERV9FWFRTUkNYQ09ORl9CUFBfU0hJRlQ7Cj4gKwkJdmFsIHw9IE1DREVf RVhUU1JDWENPTkZfQkdSOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUjU2NToK PiArCQl2YWwgfD0gTUNERV9FWFRTUkNYQ09ORl9CUFBfUkdCNTY1IDw8Cj4gKwkJCU1DREVfRVhU U1JDWENPTkZfQlBQX1NISUZUOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX1lVVjQy MjoKPiArCQl2YWwgfD0gTUNERV9FWFRTUkNYQ09ORl9CUFBfWUNCQ1I0MjIgPDwKPiArCQkJTUNE RV9FWFRTUkNYQ09ORl9CUFBfU0hJRlQ7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCWRl dl9lcnIobWNkZS0+ZGV2LCAiVW5rbm93biBwaXhlbCBmb3JtYXQgMHglMDh4XG4iLAo+ICsJCQlm b3JtYXQpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsJd3JpdGVsKHZhbCwgbWNkZS0+ cmVncyArIGNvbmYpOwo+ICsKPiArCS8qIFNvZnR3YXJlIHNlbGVjdCwgcHJpbWFyeSAqLwo+ICsJ dmFsID0gTUNERV9FWFRTUkNYQ1JfU0VMX01PRF9TT0ZUV0FSRV9TRUw7Cj4gKwl2YWwgfD0gTUNE RV9FWFRTUkNYQ1JfTVVMVElPVkxfQ1RSTF9QUklNQVJZOwo+ICsJd3JpdGVsKHZhbCwgbWNkZS0+ cmVncyArIGNyKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbWNk ZV9jb25maWd1cmVfb3ZlcmxheShzdHJ1Y3QgbWNkZSAqbWNkZSwgZW51bSBtY2RlX292ZXJsYXkg b3ZsLAo+ICsJCQkJICAgZW51bSBtY2RlX2V4dHNyYyBzcmMsCj4gKwkJCQkgICBlbnVtIG1jZGVf Y2hhbm5lbCBjaCwKPiArCQkJCSAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl LAo+ICsJCQkJICAgdTMyIGZvcm1hdCkKPiArewo+ICsJdTMyIHZhbDsKPiArCXUzMiBjb25mMTsK PiArCXUzMiBjb25mMjsKPiArCXUzMiBjcm9wOwo+ICsJdTMyIGxqaW5jOwo+ICsJdTMyIGNyOwo+ ICsJdTMyIGNvbXA7Cj4gKwo+ICsJc3dpdGNoIChvdmwpIHsKPiArCWNhc2UgTUNERV9PVkVSTEFZ XzA6Cj4gKwkJY29uZjEgPSBNQ0RFX09WTDBDT05GOwo+ICsJCWNvbmYyID0gTUNERV9PVkwwQ09O RjI7Cj4gKwkJY3JvcCA9IE1DREVfT1ZMMENST1A7Cj4gKwkJbGppbmMgPSBNQ0RFX09WTDBMSklO QzsKPiArCQljciA9IE1DREVfT1ZMMENSOwo+ICsJCWNvbXAgPSBNQ0RFX09WTDBDT01QOwo+ICsJ CWJyZWFrOwo+ICsJY2FzZSBNQ0RFX09WRVJMQVlfMToKPiArCQljb25mMSA9IE1DREVfT1ZMMUNP TkY7Cj4gKwkJY29uZjIgPSBNQ0RFX09WTDFDT05GMjsKPiArCQljcm9wID0gTUNERV9PVkwxQ1JP UDsKPiArCQlsamluYyA9IE1DREVfT1ZMMUxKSU5DOwo+ICsJCWNyID0gTUNERV9PVkwxQ1I7Cj4g KwkJY29tcCA9IE1DREVfT1ZMMUNPTVA7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIE1DREVfT1ZFUkxB WV8yOgo+ICsJCWNvbmYxID0gTUNERV9PVkwyQ09ORjsKPiArCQljb25mMiA9IE1DREVfT1ZMMkNP TkYyOwo+ICsJCWNyb3AgPSBNQ0RFX09WTDJDUk9QOwo+ICsJCWxqaW5jID0gTUNERV9PVkwyTEpJ TkM7Cj4gKwkJY3IgPSBNQ0RFX09WTDJDUjsKPiArCQljb21wID0gTUNERV9PVkwyQ09NUDsKPiAr CQlicmVhazsKPiArCWNhc2UgTUNERV9PVkVSTEFZXzM6Cj4gKwkJY29uZjEgPSBNQ0RFX09WTDND T05GOwo+ICsJCWNvbmYyID0gTUNERV9PVkwzQ09ORjI7Cj4gKwkJY3JvcCA9IE1DREVfT1ZMM0NS T1A7Cj4gKwkJbGppbmMgPSBNQ0RFX09WTDNMSklOQzsKPiArCQljciA9IE1DREVfT1ZMM0NSOwo+ ICsJCWNvbXAgPSBNQ0RFX09WTDNDT01QOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBNQ0RFX09WRVJM QVlfNDoKPiArCQljb25mMSA9IE1DREVfT1ZMNENPTkY7Cj4gKwkJY29uZjIgPSBNQ0RFX09WTDRD T05GMjsKPiArCQljcm9wID0gTUNERV9PVkw0Q1JPUDsKPiArCQlsamluYyA9IE1DREVfT1ZMNExK SU5DOwo+ICsJCWNyID0gTUNERV9PVkw0Q1I7Cj4gKwkJY29tcCA9IE1DREVfT1ZMNENPTVA7Cj4g KwkJYnJlYWs7Cj4gKwljYXNlIE1DREVfT1ZFUkxBWV81Ogo+ICsJCWNvbmYxID0gTUNERV9PVkw1 Q09ORjsKPiArCQljb25mMiA9IE1DREVfT1ZMNUNPTkYyOwo+ICsJCWNyb3AgPSBNQ0RFX09WTDVD Uk9QOwo+ICsJCWxqaW5jID0gTUNERV9PVkw1TEpJTkM7Cj4gKwkJY3IgPSBNQ0RFX09WTDVDUjsK PiArCQljb21wID0gTUNERV9PVkw1Q09NUDsKPiArCQlicmVhazsKPiArCX07Cj4gKwo+ICsJdmFs ID0gbW9kZS0+aGRpc3BsYXkgPDwgTUNERV9PVkxYQ09ORl9QUExfU0hJRlQ7Cj4gKwl2YWwgfD0g bW9kZS0+dmRpc3BsYXkgPDwgTUNERV9PVkxYQ09ORl9MUEZfU0hJRlQ7Cj4gKwkvKiBVc2UgZXh0 ZXJuYWwgc291cmNlIDAgdGhhdCB3ZSBqdXN0IGNvbmZpZ3VyZWQgKi8KPiArCXZhbCB8PSBzcmMg PDwgTUNERV9PVkxYQ09ORl9FWFRTUkNfSURfU0hJRlQ7Cj4gKwl3cml0ZWwodmFsLCBtY2RlLT5y ZWdzICsgY29uZjEpOwo+ICsKPiArCXZhbCA9IE1DREVfT1ZMWENPTkYyX0JQX1BFUl9QSVhFTF9B TFBIQTsKPiArCXZhbCB8PSAweGZmIDw8IE1DREVfT1ZMWENPTkYyX0FMUEhBVkFMVUVfU0hJRlQ7 Cj4gKwkvKiBPUFE6IG92ZXJsYXkgaXMgb3BhcXVlICovCj4gKwlzd2l0Y2ggKGZvcm1hdCkgewo+ ICsJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4 Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0FSR0I0NDQ0Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I0 NDQ0Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0IxNTU1Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1hC R1IxNTU1Ogo+ICsJCS8qIE5vIE9QUSAqLwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFU X1hSR0I4ODg4Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1hCR1I4ODg4Ogo+ICsJY2FzZSBEUk1fRk9S TUFUX1JHQjg4ODoKPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1I4ODg6Cj4gKwljYXNlIERSTV9GT1JN QVRfUkdCNTY1Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUjU2NToKPiArCWNhc2UgRFJNX0ZPUk1B VF9ZVVY0MjI6Cj4gKwkJdmFsIHw9IE1DREVfT1ZMWENPTkYyX09QUTsKPiArCQlicmVhazsKPiAr CWRlZmF1bHQ6Cj4gKwkJZGV2X2VycihtY2RlLT5kZXYsICJVbmtub3duIHBpeGVsIGZvcm1hdCAw eCUwOHhcbiIsCj4gKwkJCWZvcm1hdCk7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwkvKiBUaGUgZGVm YXVsdCB3YXRlcm1hcmsgbGV2ZWwgZm9yIG92ZXJsYXkgMCBpcyA0OCAqLwo+ICsJdmFsIHw9IDQ4 IDw8IE1DREVfT1ZMWENPTkYyX1BJWEVMRkVUQ0hFUldBVEVSTUFSS0xFVkVMX1NISUZUOwo+ICsJ d3JpdGVsKHZhbCwgbWNkZS0+cmVncyArIGNvbmYyKTsKPiArCj4gKwkvKiBOdW1iZXIgb2YgYnl0 ZXMgdG8gZmV0Y2ggcGVyIGxpbmUgKi8KPiArCXdyaXRlbChtY2RlLT5zdHJpZGUsIG1jZGUtPnJl Z3MgKyBsamluYyk7Cj4gKwkvKiBObyBjcm9wcGluZyAqLwo+ICsJd3JpdGVsKDAsIG1jZGUtPnJl Z3MgKyBjcm9wKTsKPiArCj4gKwkvKiBTZXQgdXAgb3ZlcmxheSBjb250cm9sIHJlZ2lzdGVyICov Cj4gKwl2YWwgPSBNQ0RFX09WTFhDUl9PVkxFTjsKPiArCXZhbCB8PSBNQ0RFX09WTFhDUl9DT0xD Q1RSTF9ESVNBQkxFRDsKPiArCXZhbCB8PSBNQ0RFX09WTFhDUl9CVVJTVFNJWkVfOFcgPDwKPiAr CQlNQ0RFX09WTFhDUl9CVVJTVFNJWkVfU0hJRlQ7Cj4gKwl2YWwgfD0gTUNERV9PVkxYQ1JfTUFY T1VUU1RBTkRJTkdfOF9SRVEgPDwKPiArCQlNQ0RFX09WTFhDUl9NQVhPVVRTVEFORElOR19TSElG VDsKPiArCS8qIE5vdCB1c2luZyByb3RhdGlvbiBidXQgc2V0IGl0IHVwIGFueXdheXMgKi8KPiAr CXZhbCB8PSBNQ0RFX09WTFhDUl9ST1RCVVJTVFNJWkVfOFcgPDwKPiArCQlNQ0RFX09WTFhDUl9S T1RCVVJTVFNJWkVfU0hJRlQ7Cj4gKwl3cml0ZWwodmFsLCBtY2RlLT5yZWdzICsgY3IpOwo+ICsK PiArCS8qCj4gKwkgKiBTZXQgdXAgdGhlIG92ZXJsYXkgY29tcG9zaXRvciB0byByb3V0ZSB0aGUg b3ZlcmxheSBvdXQgdG8KPiArCSAqIHRoZSBkZXNpcmVkIGNoYW5uZWwKPiArCSAqLwo+ICsJdmFs ID0gY2ggPDwgTUNERV9PVkxYQ09NUF9DSF9JRF9TSElGVDsKPiArCXdyaXRlbCh2YWwsIG1jZGUt PnJlZ3MgKyBjb21wKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbWNkZV9jb25maWd1cmVfY2hh bm5lbChzdHJ1Y3QgbWNkZSAqbWNkZSwgZW51bSBtY2RlX2NoYW5uZWwgY2gsCj4gKwkJCQkgICBl bnVtIG1jZGVfZmlmbyBmaWZvLAo+ICsJCQkJICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUpCj4gK3sKPiArCXUzMiB2YWw7Cj4gKwl1MzIgY29uZjsKPiArCXUzMiBzeW5jOwo+ ICsJdTMyIHN0YXQ7Cj4gKwl1MzIgYmdjb2w7Cj4gKwl1MzIgbXV4Owo+ICsKPiArCXN3aXRjaCAo Y2gpIHsKPiArCWNhc2UgTUNERV9DSEFOTkVMXzA6Cj4gKwkJY29uZiA9IE1DREVfQ0hOTDBDT05G Owo+ICsJCXN5bmMgPSBNQ0RFX0NITkwwU1lOQ0hNT0Q7Cj4gKwkJc3RhdCA9IE1DREVfQ0hOTDBT VEFUOwo+ICsJCWJnY29sID0gTUNERV9DSE5MMEJDS0dORENPTDsKPiArCQltdXggPSBNQ0RFX0NI TkwwTVVYSU5HOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBNQ0RFX0NIQU5ORUxfMToKPiArCQljb25m ID0gTUNERV9DSE5MMUNPTkY7Cj4gKwkJc3luYyA9IE1DREVfQ0hOTDFTWU5DSE1PRDsKPiArCQlz dGF0ID0gTUNERV9DSE5MMVNUQVQ7Cj4gKwkJYmdjb2wgPSBNQ0RFX0NITkwxQkNLR05EQ09MOwo+ ICsJCW11eCA9IE1DREVfQ0hOTDFNVVhJTkc7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIE1DREVfQ0hB Tk5FTF8yOgo+ICsJCWNvbmYgPSBNQ0RFX0NITkwyQ09ORjsKPiArCQlzeW5jID0gTUNERV9DSE5M MlNZTkNITU9EOwo+ICsJCXN0YXQgPSBNQ0RFX0NITkwyU1RBVDsKPiArCQliZ2NvbCA9IE1DREVf Q0hOTDJCQ0tHTkRDT0w7Cj4gKwkJbXV4ID0gTUNERV9DSE5MMk1VWElORzsKPiArCQlicmVhazsK PiArCWNhc2UgTUNERV9DSEFOTkVMXzM6Cj4gKwkJY29uZiA9IE1DREVfQ0hOTDNDT05GOwo+ICsJ CXN5bmMgPSBNQ0RFX0NITkwzU1lOQ0hNT0Q7Cj4gKwkJc3RhdCA9IE1DREVfQ0hOTDNTVEFUOwo+ ICsJCWJnY29sID0gTUNERV9DSE5MM0JDS0dORENPTDsKPiArCQltdXggPSBNQ0RFX0NITkwzTVVY SU5HOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwkvKiBTZXQgdXAgY2hhbm5lbCAwIHN5bmMg KGJhc2VkIG9uIGNobmxfdXBkYXRlX3JlZ2lzdGVycygpKSAqLwo+ICsJaWYgKG1jZGUtPnRlX3N5 bmMpIHsKPiArCQkvKgo+ICsJCSAqIFR1cm4gb24gaGFyZHdhcmUgVEUwIHN5bmNocm9uaXphdGlv bgo+ICsJCSAqLwo+ICsJCXZhbCA9IE1DREVfQ0hOTFhTWU5DSE1PRF9TUkNfU1lOQ0hfSEFSRFdB UkUKPiArCQkJPDwgTUNERV9DSE5MWFNZTkNITU9EX1NSQ19TWU5DSF9TSElGVDsKPiArCQl2YWwg fD0gTUNERV9DSE5MWFNZTkNITU9EX09VVF9TWU5DSF9TUkNfVEUwCj4gKwkJCTw8IE1DREVfQ0hO TFhTWU5DSE1PRF9PVVRfU1lOQ0hfU1JDX1NISUZUOwo+ICsJfSBlbHNlIHsKPiArCQkvKgo+ICsJ CSAqIFNldCB1cCBzeW5jIHNvdXJjZSB0byBzb2Z0d2FyZSwgb3V0IHN5bmMgZm9ybWF0dGVyCj4g KwkJICogQ29kZSBtb3N0bHkgZnJvbSBtY2RlX2h3LmMgY2hubF91cGRhdGVfcmVnaXN0ZXJzKCkK PiArCQkgKi8KPiArCQl2YWwgPSBNQ0RFX0NITkxYU1lOQ0hNT0RfU1JDX1NZTkNIX1NPRlRXQVJF Cj4gKwkJCTw8IE1DREVfQ0hOTFhTWU5DSE1PRF9TUkNfU1lOQ0hfU0hJRlQ7Cj4gKwkJdmFsIHw9 IE1DREVfQ0hOTFhTWU5DSE1PRF9PVVRfU1lOQ0hfU1JDX0ZPUk1BVFRFUgo+ICsJCQk8PCBNQ0RF X0NITkxYU1lOQ0hNT0RfT1VUX1NZTkNIX1NSQ19TSElGVDsKPiArCX0KPiArCXdyaXRlbCh2YWws IG1jZGUtPnJlZ3MgKyBzeW5jKTsKPiArCj4gKwkvKiBTZXQgdXAgcGl4ZWxzIHBlciBsaW5lIGFu ZCBsaW5lcyBwZXIgZnJhbWUgKi8KPiArCXZhbCA9IChtb2RlLT5oZGlzcGxheSAtIDEpIDw8IE1D REVfQ0hOTFhDT05GX1BQTF9TSElGVDsKPiArCXZhbCB8PSAobW9kZS0+dmRpc3BsYXkgLSAxKSA8 PCBNQ0RFX0NITkxYQ09ORl9MUEZfU0hJRlQ7Cj4gKwl3cml0ZWwodmFsLCBtY2RlLT5yZWdzICsg Y29uZik7Cj4gKwo+ICsJLyoKPiArCSAqIE5vcm1hbGl6ZSBjb2xvciBjb252ZXJzaW9uOgo+ICsJ ICogYmxhY2sgYmFja2dyb3VuZCwgT0xFRCBjb252ZXJzaW9uIGRpc2FibGUgb24gY2hhbm5lbAo+ ICsJICovCj4gKwl2YWwgPSBNQ0RFX0NITkxYU1RBVF9DSE5MQkxCQ0tHTkRfRU4gfAo+ICsJCU1D REVfQ0hOTFhTVEFUX0NITkxSRDsKPiArCXdyaXRlbCh2YWwsIG1jZGUtPnJlZ3MgKyBzdGF0KTsK PiArCXdyaXRlbCgwLCBtY2RlLT5yZWdzICsgYmdjb2wpOwo+ICsKPiArCS8qIFNldCB1cCBtdXhp bmc6IGNvbm5lY3QgdGhlIGNoYW5uZWwgdG8gdGhlIGRlc2lyZWQgRklGTyAqLwo+ICsJc3dpdGNo IChmaWZvKSB7Cj4gKwljYXNlIE1DREVfRklGT19BOgo+ICsJCXdyaXRlbChNQ0RFX0NITkxYTVVY SU5HX0ZJRk9fSURfRklGT19BLAo+ICsJCSAgICAgICBtY2RlLT5yZWdzICsgbXV4KTsKPiArCQli cmVhazsKPiArCWNhc2UgTUNERV9GSUZPX0I6Cj4gKwkJd3JpdGVsKE1DREVfQ0hOTFhNVVhJTkdf RklGT19JRF9GSUZPX0IsCj4gKwkJICAgICAgIG1jZGUtPnJlZ3MgKyBtdXgpOwo+ICsJCWJyZWFr Owo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtY2RlX2NvbmZpZ3VyZV9maWZvKHN0cnVj dCBtY2RlICptY2RlLCBlbnVtIG1jZGVfZmlmbyBmaWZvLAo+ICsJCQkJZW51bSBtY2RlX2RzaV9m b3JtYXR0ZXIgZm10LAo+ICsJCQkJaW50IGZpZm9fd3RybXJrKQo+ICt7Cj4gKwl1MzIgdmFsOwo+ ICsJdTMyIGN0cmw7Cj4gKwl1MzIgY3IwLCBjcjE7Cj4gKwo+ICsJc3dpdGNoIChmaWZvKSB7Cj4g KwljYXNlIE1DREVfRklGT19BOgo+ICsJCWN0cmwgPSBNQ0RFX0NUUkxBOwo+ICsJCWNyMCA9IE1D REVfQ1JBMDsKPiArCQljcjEgPSBNQ0RFX0NSQTE7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIE1DREVf RklGT19COgo+ICsJCWN0cmwgPSBNQ0RFX0NUUkxCOwo+ICsJCWNyMCA9IE1DREVfQ1JCMDsKPiAr CQljcjEgPSBNQ0RFX0NSQjE7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJdmFsID0gZmlmb193 dHJtcmsgPDwgTUNERV9DVFJMWF9GSUZPV1RSTVJLX1NISUZUOwo+ICsJLyogV2Ugb25seSBzdXBw b3J0IERTSSBmb3JtYXR0aW5nIGZvciBub3cgKi8KPiArCXZhbCB8PSBNQ0RFX0NUUkxYX0ZPUk1U WVBFX0RTSSA8PAo+ICsJCU1DREVfQ1RSTFhfRk9STVRZUEVfU0hJRlQ7Cj4gKwo+ICsJLyogU2Vs ZWN0IHRoZSBmb3JtYXR0ZXIgdG8gdXNlIGZvciB0aGlzIEZJRk8gKi8KPiArCXZhbCB8PSBmbXQg PDwgTUNERV9DVFJMWF9GT1JNSURfU0hJRlQ7Cj4gKwl3cml0ZWwodmFsLCBtY2RlLT5yZWdzICsg Y3RybCk7Cj4gKwo+ICsJLyogQmxlbmQgc291cmNlIHdpdGggQWxwaGEgMHhmZiBvbiBGSUZPICov Cj4gKwl2YWwgPSBNQ0RFX0NSWDBfQkxFTkRFTiB8Cj4gKwkJMHhmZiA8PCBNQ0RFX0NSWDBfQUxQ SEFCTEVORF9TSElGVDsKPiArCXdyaXRlbCh2YWwsIG1jZGUtPnJlZ3MgKyBjcjApOwo+ICsKPiAr Cj4gKwkvKiBTZXQtdXAgZnJvbSBtY2RlX2ZtdHJfZHNpLmMsIGZtdHJfZHNpX2VuYWJsZV92aWRl bygpICovCj4gKwo+ICsJLyogVXNlIHRoZSBNQ0RFIGNsb2NrIGZvciB0aGlzIEZJRk8gKi8KPiAr CXZhbCA9IE1DREVfQ1JYMV9DTEtTRUxfTUNERUNMSyA8PCBNQ0RFX0NSWDFfQ0xLU0VMX1NISUZU Owo+ICsKPiArCS8qIFRPRE86IHdoZW4gYWRkaW5nIERQSSBzdXBwb3J0IGFkZCBPVVRCUFAgZXRj IGhlcmUgKi8KPiArCXdyaXRlbCh2YWwsIG1jZGUtPnJlZ3MgKyBjcjEpOwo+ICt9Owo+ICsKPiAr c3RhdGljIHZvaWQgbWNkZV9jb25maWd1cmVfZHNpX2Zvcm1hdHRlcihzdHJ1Y3QgbWNkZSAqbWNk ZSwKPiArCQkJCQkgZW51bSBtY2RlX2RzaV9mb3JtYXR0ZXIgZm10LAo+ICsJCQkJCSB1MzIgZm9y bWF0dGVyX2ZyYW1lLAo+ICsJCQkJCSBpbnQgcGt0X3NpemUpCj4gK3sKPiArCXUzMiB2YWw7Cj4g Kwl1MzIgY29uZjA7Cj4gKwl1MzIgZnJhbWU7Cj4gKwl1MzIgcGt0Owo+ICsJdTMyIHN5bmM7Cj4g Kwl1MzIgY21kdzsKPiArCXUzMiBkZWxheTAsIGRlbGF5MTsKPiArCj4gKwlzd2l0Y2ggKGZtdCkg ewo+ICsJY2FzZSBNQ0RFX0RTSV9GT1JNQVRURVJfMDoKPiArCQljb25mMCA9IE1DREVfRFNJVklE MENPTkYwOwo+ICsJCWZyYW1lID0gTUNERV9EU0lWSUQwRlJBTUU7Cj4gKwkJcGt0ID0gTUNERV9E U0lWSUQwUEtUOwo+ICsJCXN5bmMgPSBNQ0RFX0RTSVZJRDBTWU5DOwo+ICsJCWNtZHcgPSBNQ0RF X0RTSVZJRDBDTURXOwo+ICsJCWRlbGF5MCA9IE1DREVfRFNJVklEMERFTEFZMDsKPiArCQlkZWxh eTEgPSBNQ0RFX0RTSVZJRDBERUxBWTE7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIE1DREVfRFNJX0ZP Uk1BVFRFUl8xOgo+ICsJCWNvbmYwID0gTUNERV9EU0lWSUQxQ09ORjA7Cj4gKwkJZnJhbWUgPSBN Q0RFX0RTSVZJRDFGUkFNRTsKPiArCQlwa3QgPSBNQ0RFX0RTSVZJRDFQS1Q7Cj4gKwkJc3luYyA9 IE1DREVfRFNJVklEMVNZTkM7Cj4gKwkJY21kdyA9IE1DREVfRFNJVklEMUNNRFc7Cj4gKwkJZGVs YXkwID0gTUNERV9EU0lWSUQxREVMQVkwOwo+ICsJCWRlbGF5MSA9IE1DREVfRFNJVklEMURFTEFZ MTsKPiArCQlicmVhazsKPiArCWNhc2UgTUNERV9EU0lfRk9STUFUVEVSXzI6Cj4gKwkJY29uZjAg PSBNQ0RFX0RTSVZJRDJDT05GMDsKPiArCQlmcmFtZSA9IE1DREVfRFNJVklEMkZSQU1FOwo+ICsJ CXBrdCA9IE1DREVfRFNJVklEMlBLVDsKPiArCQlzeW5jID0gTUNERV9EU0lWSUQyU1lOQzsKPiAr CQljbWR3ID0gTUNERV9EU0lWSUQyQ01EVzsKPiArCQlkZWxheTAgPSBNQ0RFX0RTSVZJRDJERUxB WTA7Cj4gKwkJZGVsYXkxID0gTUNERV9EU0lWSUQyREVMQVkxOwo+ICsJCWJyZWFrOwo+ICsJfTsK PiArCj4gKwkvKgo+ICsJICogRW5hYmxlIGZvcm1hdHRlcgo+ICsJICogOCBiaXQgY29tbWFuZHMg YW5kIERDUyBjb21tYW5kcyAobm90Z2VuID0gbm90IGdlbmVyaWMpCj4gKwkgKi8KPiArCXZhbCA9 IE1DREVfRFNJQ09ORjBfQ01EOCB8IE1DREVfRFNJQ09ORjBfRENTVklEX05PVEdFTjsKPiArCWlm IChtY2RlLT5tZHNpLT5tb2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9WSURFTykKPiArCQl2YWwg fD0gTUNERV9EU0lDT05GMF9WSURfTU9ERV9WSUQ7Cj4gKwlzd2l0Y2ggKG1jZGUtPm1kc2ktPmZv cm1hdCkgewo+ICsJY2FzZSBNSVBJX0RTSV9GTVRfUkdCODg4Ogo+ICsJCXZhbCB8PSBNQ0RFX0RT SUNPTkYwX1BBQ0tJTkdfUkdCODg4IDw8Cj4gKwkJCU1DREVfRFNJQ09ORjBfUEFDS0lOR19TSElG VDsKPiArCQlicmVhazsKPiArCWNhc2UgTUlQSV9EU0lfRk1UX1JHQjY2NjoKPiArCQl2YWwgfD0g TUNERV9EU0lDT05GMF9QQUNLSU5HX1JHQjY2NiA8PAo+ICsJCQlNQ0RFX0RTSUNPTkYwX1BBQ0tJ TkdfU0hJRlQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIE1JUElfRFNJX0ZNVF9SR0I2NjZfUEFDS0VE Ogo+ICsJCXZhbCB8PSBNQ0RFX0RTSUNPTkYwX1BBQ0tJTkdfUkdCNjY2X1BBQ0tFRCA8PAo+ICsJ CQlNQ0RFX0RTSUNPTkYwX1BBQ0tJTkdfU0hJRlQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIE1JUElf RFNJX0ZNVF9SR0I1NjU6Cj4gKwkJdmFsIHw9IE1DREVfRFNJQ09ORjBfUEFDS0lOR19SR0I1NjUg PDwKPiArCQkJTUNERV9EU0lDT05GMF9QQUNLSU5HX1NISUZUOwo+ICsJCWJyZWFrOwo+ICsJZGVm YXVsdDoKPiArCQlkZXZfZXJyKG1jZGUtPmRldiwgInVua25vd24gRFNJIGZvcm1hdFxuIik7Cj4g KwkJcmV0dXJuOwo+ICsJfQo+ICsJd3JpdGVsKHZhbCwgbWNkZS0+cmVncyArIGNvbmYwKTsKPiAr Cj4gKwl3cml0ZWwoZm9ybWF0dGVyX2ZyYW1lLCBtY2RlLT5yZWdzICsgZnJhbWUpOwo+ICsJd3Jp dGVsKHBrdF9zaXplLCBtY2RlLT5yZWdzICsgcGt0KTsKPiArCXdyaXRlbCgwLCBtY2RlLT5yZWdz ICsgc3luYyk7Cj4gKwkvKiBEZWZpbmUgdGhlIE1JUEkgY29tbWFuZDogd2Ugd2FudCB0byB3cml0 ZSBpbnRvIGRpc3BsYXkgbWVtb3J5ICovCj4gKwl2YWwgPSBNSVBJX0RDU19XUklURV9NRU1PUllf Q09OVElOVUUgPDwKPiArCQlNQ0RFX0RTSVZJRFhDTURXX0NNRFdfQ09OVElOVUVfU0hJRlQ7Cj4g Kwl2YWwgfD0gTUlQSV9EQ1NfV1JJVEVfTUVNT1JZX1NUQVJUIDw8Cj4gKwkJTUNERV9EU0lWSURY Q01EV19DTURXX1NUQVJUX1NISUZUOwo+ICsJd3JpdGVsKHZhbCwgbWNkZS0+cmVncyArIGNtZHcp Owo+ICsKPiArCS8qCj4gKwkgKiBGSVhNRTogdGhlIHZlbmRvciBkcml2ZXIgaGFzIHNvbWUgaGFj ayBhcm91bmQgdGhpcyB2YWx1ZSBpbgo+ICsJICogQ01EIG1vZGUgd2l0aCBhdXRvdHJpZy4KPiAr CSAqLwo+ICsJd3JpdGVsKDAsIG1jZGUtPnJlZ3MgKyBkZWxheTApOwo+ICsJd3JpdGVsKDAsIG1j ZGUtPnJlZ3MgKyBkZWxheTEpOwo+ICt9Cj4gKwo+ICsKPiArc3RhdGljIHZvaWQgbWNkZV9lbmFi bGVfZmlmbyhzdHJ1Y3QgbWNkZSAqbWNkZSwgZW51bSBtY2RlX2ZpZm8gZmlmbykKPiArewo+ICsJ dTMyIHZhbDsKPiArCXUzMiBjcjsKPiArCj4gKwlzd2l0Y2ggKGZpZm8pIHsKPiArCWNhc2UgTUNE RV9GSUZPX0E6Cj4gKwkJY3IgPSBNQ0RFX0NSQTA7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIE1DREVf RklGT19COgo+ICsJCWNyID0gTUNERV9DUkIwOwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiAr CQlkZXZfZXJyKG1jZGUtPmRldiwgImNhbm5vdCBlbmFibGUgRklGTyAlY1xuIiwKPiArCQkJJ0En ICsgZmlmbyk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCXNwaW5fbG9jaygmbWNkZS0+Zmxv d19sb2NrKTsKPiArCXZhbCA9IHJlYWRsKG1jZGUtPnJlZ3MgKyBjcik7Cj4gKwl2YWwgfD0gTUNE RV9DUlgwX0ZMT0VOOwo+ICsJd3JpdGVsKHZhbCwgbWNkZS0+cmVncyArIGNyKTsKPiArCW1jZGUt PmZsb3dfYWN0aXZlKys7Cj4gKwlzcGluX3VubG9jaygmbWNkZS0+Zmxvd19sb2NrKTsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgbWNkZV9kaXNhYmxlX2ZpZm8oc3RydWN0IG1jZGUgKm1jZGUsIGVu dW0gbWNkZV9maWZvIGZpZm8sCj4gKwkJCSAgICAgIGJvb2wgd2FpdF9mb3JfZHJhaW4pCj4gK3sK PiArCWludCB0aW1lb3V0ID0gMTAwOwo+ICsJdTMyIHZhbDsKPiArCXUzMiBjcjsKPiArCj4gKwlz d2l0Y2ggKGZpZm8pIHsKPiArCWNhc2UgTUNERV9GSUZPX0E6Cj4gKwkJY3IgPSBNQ0RFX0NSQTA7 Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIE1DREVfRklGT19COgo+ICsJCWNyID0gTUNERV9DUkIwOwo+ ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlkZXZfZXJyKG1jZGUtPmRldiwgImNhbm5vdCBk aXNhYmxlIEZJRk8gJWNcbiIsCj4gKwkJCSdBJyArIGZpZm8pOwo+ICsJCXJldHVybjsKPiArCX0K PiArCj4gKwlzcGluX2xvY2soJm1jZGUtPmZsb3dfbG9jayk7Cj4gKwl2YWwgPSByZWFkbChtY2Rl LT5yZWdzICsgY3IpOwo+ICsJdmFsICY9IH5NQ0RFX0NSWDBfRkxPRU47Cj4gKwl3cml0ZWwodmFs LCBtY2RlLT5yZWdzICsgY3IpOwo+ICsJbWNkZS0+Zmxvd19hY3RpdmUgPSAwOwo+ICsJc3Bpbl91 bmxvY2soJm1jZGUtPmZsb3dfbG9jayk7Cj4gKwo+ICsJaWYgKCF3YWl0X2Zvcl9kcmFpbikKPiAr CQlyZXR1cm47Cj4gKwo+ICsJLyogQ2hlY2sgdGhhdCB3ZSByZWFsbHkgZHJhaW5lZCBhbmQgc3Rv cHBlZCB0aGUgZmxvdyAqLwo+ICsJd2hpbGUgKHJlYWRsKG1jZGUtPnJlZ3MgKyBjcikgJiBNQ0RF X0NSWDBfRkxPRU4pIHsKPiArCQl1c2xlZXBfcmFuZ2UoMTAwMCwgMTUwMCk7Cj4gKwkJaWYgKCEt LXRpbWVvdXQpIHsKPiArCQkJZGV2X2VycihtY2RlLT5kZXYsCj4gKwkJCQkiRklGTyB0aW1lb3V0 IHdoaWxlIGNsZWFyaW5nIEZJRk8gJWNcbiIsCj4gKwkJCQknQScgKyBmaWZvKTsKPiArCQkJcmV0 dXJuOwo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiArLyoKPiArICogVGhpcyBkcmFpbnMgYSBwaXBl IGkuZS4gYSBGSUZPIGNvbm5lY3RlZCB0byBhIGNlcnRhaW4gY2hhbm5lbAo+ICsgKi8KPiArc3Rh dGljIHZvaWQgbWNkZV9kcmFpbl9waXBlKHN0cnVjdCBtY2RlICptY2RlLCBlbnVtIG1jZGVfZmlm byBmaWZvLAo+ICsJCQkgICAgZW51bSBtY2RlX2NoYW5uZWwgY2gpCj4gK3sKPiArCXUzMiB2YWw7 Cj4gKwl1MzIgY3RybDsKPiArCXUzMiBzeW5zdzsKPiArCj4gKwlzd2l0Y2ggKGZpZm8pIHsKPiAr CWNhc2UgTUNERV9GSUZPX0E6Cj4gKwkJY3RybCA9IE1DREVfQ1RSTEE7Cj4gKwkJYnJlYWs7Cj4g KwljYXNlIE1DREVfRklGT19COgo+ICsJCWN0cmwgPSBNQ0RFX0NUUkxCOwo+ICsJCWJyZWFrOwo+ ICsJfQo+ICsKPiArCXN3aXRjaCAoY2gpIHsKPiArCWNhc2UgTUNERV9DSEFOTkVMXzA6Cj4gKwkJ c3luc3cgPSBNQ0RFX0NITkwwU1lOQ0hTVzsKPiArCQlicmVhazsKPiArCWNhc2UgTUNERV9DSEFO TkVMXzE6Cj4gKwkJc3luc3cgPSBNQ0RFX0NITkwxU1lOQ0hTVzsKPiArCQlicmVhazsKPiArCWNh c2UgTUNERV9DSEFOTkVMXzI6Cj4gKwkJc3luc3cgPSBNQ0RFX0NITkwyU1lOQ0hTVzsKPiArCQli cmVhazsKPiArCWNhc2UgTUNERV9DSEFOTkVMXzM6Cj4gKwkJc3luc3cgPSBNQ0RFX0NITkwzU1lO Q0hTVzsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJdmFsID0gcmVhZGwobWNkZS0+cmVncyAr IGN0cmwpOwo+ICsJaWYgKCEodmFsICYgTUNERV9DVFJMWF9GSUZPRU1QVFkpKSB7Cj4gKwkJZGV2 X2VycihtY2RlLT5kZXYsICJDaGFubmVsIEEgRklGTyBub3QgZW1wdHkgKGhhbmRvdmVyKVxuIik7 Cj4gKwkJLyogQXR0ZW1wdCB0byBjbGVhciB0aGUgRklGTyAqLwo+ICsJCW1jZGVfZW5hYmxlX2Zp Zm8obWNkZSwgZmlmbyk7Cj4gKwkJLyogVHJpZ2dlciBhIHNvZnR3YXJlIHN5bmMgb3V0IG9uIHJl c3BlY3RpdmUgY2hhbm5lbCAoMC0zKSAqLwo+ICsJCXdyaXRlbChNQ0RFX0NITkxYU1lOQ0hTV19T V19UUklHLCBtY2RlLT5yZWdzICsgc3luc3cpOwo+ICsJCS8qIERpc2FibGUgRklGTyBBIGZsb3cg YWdhaW4gKi8KPiArCQltY2RlX2Rpc2FibGVfZmlmbyhtY2RlLCBmaWZvLCB0cnVlKTsKPiArCX0K PiArfQo+ICsKPiArc3RhdGljIGludCBtY2RlX2RzaV9nZXRfcGt0X2RpdihpbnQgcHBsLCBpbnQg Zmlmb19zaXplKQo+ICt7Cj4gKwkvKgo+ICsJICogRFNJIGNvbW1hbmQgbW9kZSBsaW5lIHBhY2tl dHMgc2hvdWxkIGJlIHNwbGl0IGludG8gYW4gZXZlbiBudW1iZXIgb2YKPiArCSAqIHBhY2tldHMg c21hbGxlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBmaWZvIHNpemUuCj4gKwkgKi8KPiArCWludCBk aXY7Cj4gKwljb25zdCBpbnQgbWF4X2RpdiA9IERJVl9ST1VORF9VUChNQ0RFX01BWF9XSURUSCwg Zmlmb19zaXplKTsKPiArCj4gKwlmb3IgKGRpdiA9IDE7IGRpdiA8IG1heF9kaXY7IGRpdisrKQo+ ICsJCWlmIChwcGwgJSBkaXYgPT0gMCAmJiBwcGwgLyBkaXYgPD0gZmlmb19zaXplKQo+ICsJCQly ZXR1cm4gZGl2Owo+ICsJcmV0dXJuIDE7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG1jZGVfZGlz cGxheV9lbmFibGUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAo+ICsJCQkJ c3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGUsCj4gKwkJCQlzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSkKPiArewo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gJnBpcGUt PmNydGM7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9ICZwaXBlLT5wbGFuZTsKPiArCXN0 cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBjcnRjLT5kZXY7Cj4gKwlzdHJ1Y3QgbWNkZSAqbWNkZSA9 IGRybS0+ZGV2X3ByaXZhdGU7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSA9ICZjc3RhdGUtPm1vZGU7Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5l LT5zdGF0ZS0+ZmI7Cj4gKwl1MzIgZm9ybWF0ID0gZmItPmZvcm1hdC0+Zm9ybWF0Owo+ICsJdTMy IGZvcm1hdHRlcl9wcGwgPSBtb2RlLT5oZGlzcGxheTsgLyogcGl4ZWxzIHBlciBsaW5lICovCj4g Kwl1MzIgZm9ybWF0dGVyX2xwZiA9IG1vZGUtPnZkaXNwbGF5OyAvKiBsaW5lcyBwZXIgZnJhbWUg Ki8KPiArCWludCBwa3Rfc2l6ZSwgZmlmb193dHJtcms7Cj4gKwlpbnQgY3BwID0gZHJtX2Zvcm1h dF9wbGFuZV9jcHAoZm9ybWF0LCAwKTsKPiArCWludCBmb3JtYXR0ZXJfY3BwOwo+ICsJc3RydWN0 IGRybV9mb3JtYXRfbmFtZV9idWYgdG1wOwo+ICsJdTMyIGZvcm1hdHRlcl9mcmFtZTsKPiArCXUz MiBwa3RfZGl2Owo+ICsJdTMyIHZhbDsKPiArCj4gKwlkZXZfaW5mbyhkcm0tPmRldiwgImVuYWJs ZSBNQ0RFLCAlZCB4ICVkIGZvcm1hdCAlc1xuIiwKPiArCQkgbW9kZS0+aGRpc3BsYXksIG1vZGUt PnZkaXNwbGF5LAo+ICsJCSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZvcm1hdCwgJnRtcCkpOwo+ICsJ aWYgKCFtY2RlLT5tZHNpKSB7Cj4gKwkJLyogVE9ETzogZGVhbCB3aXRoIHRoaXMgZm9yIG5vbi1E U0kgb3V0cHV0ICovCj4gKwkJZGV2X2Vycihkcm0tPmRldiwgIm5vIERTSSBtYXN0ZXIgYXR0YWNo ZWQhXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJZGV2X2luZm8oZHJtLT5kZXYsICJv dXRwdXQgaW4gJXMgbW9kZSwgZm9ybWF0ICVkYnBwXG4iLAo+ICsJCSAobWNkZS0+bWRzaS0+bW9k ZV9mbGFncyAmIE1JUElfRFNJX01PREVfVklERU8pID8KPiArCQkgIlZJREVPIiA6ICJDTUQiLAo+ ICsJCSBtaXBpX2RzaV9waXhlbF9mb3JtYXRfdG9fYnBwKG1jZGUtPm1kc2ktPmZvcm1hdCkpOwo+ ICsJZm9ybWF0dGVyX2NwcCA9Cj4gKwkJbWlwaV9kc2lfcGl4ZWxfZm9ybWF0X3RvX2JwcChtY2Rl LT5tZHNpLT5mb3JtYXQpIC8gODsKPiArCWRldl9pbmZvKGRybS0+ZGV2LCAib3ZlcmxheSBDUFAg JWQgYnl0ZXMsIERTSSBDUFAgJWQgYnl0ZXNcbiIsCj4gKwkJIGNwcCwKPiArCQkgZm9ybWF0dGVy X2NwcCk7Cj4gKwo+ICsJLyogQ2FsY3VsYXRpb25zIGZyb20gbWNkZV9mbXRyX2RzaS5jLCBmbXRy X2RzaV9lbmFibGVfdmlkZW8oKSAqLwo+ICsKPiArCS8qCj4gKwkgKiBTZXQgdXAgRklGTyBBIHdh dGVybWFyayBsZXZlbDoKPiArCSAqIDEyOCBmb3IgTENEIDMyYnBwIHZpZGVvIG1vZGUKPiArCSAq IDQ4ICBmb3IgTENEIDMyYnBwIGNvbW1hbmQgbW9kZQo+ICsJICogMTI4IGZvciBMQ0QgMTZicHAg dmlkZW8gbW9kZQo+ICsJICogNjQgIGZvciBMQ0QgMTZicHAgY29tbWFuZCBtb2RlCj4gKwkgKiAx MjggZm9yIEhETUkgMzJicHAKPiArCSAqIDE5MiBmb3IgSERNSSAxNmJwcAo+ICsJICovCj4gKwlm aWZvX3d0cm1yayA9IG1vZGUtPmhkaXNwbGF5Owo+ICsJaWYgKG1jZGUtPm1kc2ktPm1vZGVfZmxh Z3MgJiBNSVBJX0RTSV9NT0RFX1ZJREVPKSB7Cj4gKwkJZmlmb193dHJtcmsgPSBtaW4oZmlmb193 dHJtcmssIDEyOCk7Cj4gKwkJcGt0X2RpdiA9IDE7Cj4gKwl9IGVsc2Ugewo+ICsJCWZpZm9fd3Ry bXJrID0gbWluKGZpZm9fd3RybXJrLCA0OCk7Cj4gKwkJLyogVGhlIEZJRk8gaXMgNjQwIGVudHJp ZXMgZGVlcCBvbiB0aGlzIHYzIGhhcmR3YXJlICovCj4gKwkJcGt0X2RpdiA9IG1jZGVfZHNpX2dl dF9wa3RfZGl2KG1vZGUtPmhkaXNwbGF5LCA2NDApOwo+ICsJfQo+ICsJZGV2X2RiZyhkcm0tPmRl diwgIkZJRk8gd2F0ZXJtYXJrIGFmdGVyIGZsb29yaW5nOiAlZCBieXRlc1xuIiwKPiArCQkgZmlm b193dHJtcmspOwo+ICsJZGV2X2RiZyhkcm0tPmRldiwgIlBhY2tldCBkaXZpc29yOiAlZCBieXRl c1xuIiwgcGt0X2Rpdik7Cj4gKwo+ICsKPiArCS8qIE5PVEU6IHBrdF9kaXYgaXMgMSBmb3Igdmlk ZW8gbW9kZSAqLwo+ICsJcGt0X3NpemUgPSAoZm9ybWF0dGVyX3BwbCAqIGZvcm1hdHRlcl9jcHAp IC8gcGt0X2RpdjsKPiArCS8qIENvbW1hbmRzIENNRDggbmVlZCBvbmUgZXh0cmEgYnl0ZSAqLwo+ ICsJaWYgKCEobWNkZS0+bWRzaS0+bW9kZV9mbGFncyAmIE1JUElfRFNJX01PREVfVklERU8pKQo+ ICsJCXBrdF9zaXplKys7Cj4gKwo+ICsJZGV2X2RiZyhkcm0tPmRldiwgIkRTSSBwYWNrZXQgc2l6 ZTogJWQgKiAlZCBieXRlcyBwZXIgbGluZVxuIiwKPiArCQlwa3Rfc2l6ZSwgcGt0X2Rpdik7Cj4g KwlkZXZfZGJnKGRybS0+ZGV2LCAiT3ZlcmxheSBmcmFtZSBzaXplOiAldSBieXRlc1xuIiwKPiAr CQltb2RlLT5oZGlzcGxheSAqIG1vZGUtPnZkaXNwbGF5ICogY3BwKTsKPiArCW1jZGUtPnN0cmlk ZSA9IG1vZGUtPmhkaXNwbGF5ICogY3BwOwo+ICsJZGV2X2RiZyhkcm0tPmRldiwgIk92ZXJsYXkg bGluZSBzdHJpZGU6ICV1IGJ5dGVzXG4iLAo+ICsJCW1jZGUtPnN0cmlkZSk7Cj4gKwkvKiBOT1RF OiBwa3RfZGl2IGlzIDEgZm9yIHZpZGVvIG1vZGUgKi8KPiArCWZvcm1hdHRlcl9mcmFtZSA9IHBr dF9zaXplICogcGt0X2RpdiAqIGZvcm1hdHRlcl9scGY7Cj4gKwlkZXZfZGJnKGRybS0+ZGV2LCAi Rm9ybWF0dGVyIGZyYW1lIHNpemU6ICV1IGJ5dGVzXG4iLCBmb3JtYXR0ZXJfZnJhbWUpOwo+ICsK PiArCS8qIERyYWluIHRoZSBGSUZPIEEgKyBjaGFubmVsIDAgcGlwZSBzbyB3ZSBoYXZlIGEgY2xl YW4gc2xhdGUgKi8KPiArCW1jZGVfZHJhaW5fcGlwZShtY2RlLCBNQ0RFX0ZJRk9fQSwgTUNERV9D SEFOTkVMXzApOwo+ICsKPiArCS8qCj4gKwkgKiBXZSBzZXQgdXAgb3VyIGRpc3BsYXkgcGlwZWxp bmU6Cj4gKwkgKiBFWFRTUkMgMCAtPiBPVkVSTEFZIDAgLT4gQ0hBTk5FTCAwIC0+IEZJRk8gQSAt PiBEU0kgRk9STUFUVEVSIDAKPiArCSAqCj4gKwkgKiBGaXJzdCBjb25maWd1cmUgdGhlIGV4dGVy bmFsIHNvdXJjZSAobWVtb3J5KSBvbiBleHRlcm5hbCBzb3VyY2UgMAo+ICsJICogdXNpbmcgdGhl IGRlc2lyZWQgYml0c3RyZWFtL2JpdG1hcCBmb3JtYXQKPiArCSAqLwo+ICsJbWNkZV9jb25maWd1 cmVfZXh0c3JjKG1jZGUsIE1DREVfRVhUU1JDXzAsIGZvcm1hdCk7Cj4gKwo+ICsJLyoKPiArCSAq IENvbmZpZ3VyZSBvdmVybGF5IDAgYWNjb3JkaW5nIHRvIGZvcm1hdCBhbmQgbW9kZSBhbmQgdGFr ZSBpbnB1dAo+ICsJICogZnJvbSBleHRlcm5hbCBzb3VyY2UgMCBhbmQgcm91dGUgdGhlIG91dHB1 dCBvZiB0aGlzIG92ZXJsYXkgdG8KPiArCSAqIGNoYW5uZWwgMAo+ICsJICovCj4gKwltY2RlX2Nv bmZpZ3VyZV9vdmVybGF5KG1jZGUsIE1DREVfT1ZFUkxBWV8wLCBNQ0RFX0VYVFNSQ18wLAo+ICsJ CQkgICAgICAgTUNERV9DSEFOTkVMXzAsIG1vZGUsIGZvcm1hdCk7Cj4gKwo+ICsJLyoKPiArCSAq IENvbmZpZ3VyZSBwaXhlbC1wZXItbGluZSBhbmQgbGluZS1wZXItZnJhbWUgZm9yIGNoYW5uZWwg MCBhbmQgdGhlbgo+ICsJICogcm91dGUgY2hhbm5lbCAwIHRvIEZJRk8gQQo+ICsJICovCj4gKwlt Y2RlX2NvbmZpZ3VyZV9jaGFubmVsKG1jZGUsIE1DREVfQ0hBTk5FTF8wLCBNQ0RFX0ZJRk9fQSwg bW9kZSk7Cj4gKwo+ICsJLyogQ29uZmlndXJlIEZJRk8gQSB0byB1c2UgRFNJIGZvcm1hdHRlciAw ICovCj4gKwltY2RlX2NvbmZpZ3VyZV9maWZvKG1jZGUsIE1DREVfRklGT19BLCBNQ0RFX0RTSV9G T1JNQVRURVJfMCwKPiArCQkJICAgIGZpZm9fd3RybXJrKTsKPiArCj4gKwkvKiBDb25maWd1cmUg dGhlIERTSSBmb3JtYXR0ZXIgMCBmb3IgdGhlIERTSSBwYW5lbCBvdXRwdXQgKi8KPiArCW1jZGVf Y29uZmlndXJlX2RzaV9mb3JtYXR0ZXIobWNkZSwgTUNERV9EU0lfRk9STUFUVEVSXzAsCj4gKwkJ CQkgICAgIGZvcm1hdHRlcl9mcmFtZSwgcGt0X3NpemUpOwo+ICsKPiArCWlmIChtY2RlLT50ZV9z eW5jKSB7Cj4gKwkJaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19OVlNZTkMpCj4gKwkJ CXZhbCA9IE1DREVfVlNDUkNfVlNQT0w7Cj4gKwkJZWxzZQo+ICsJCQl2YWwgPSAwOwo+ICsJCXdy aXRlbCh2YWwsIG1jZGUtPnJlZ3MgKyBNQ0RFX1ZTQ1JDMCk7Cj4gKwkJLyogRW5hYmxlIFZTWU5D IGNhcHR1cmUgb24gVEUwICovCj4gKwkJdmFsID0gcmVhZGwobWNkZS0+cmVncyArIE1DREVfQ1JD KTsKPiArCQl2YWwgfD0gTUNERV9DUkNfU1lDRU4wOwo+ICsJCXdyaXRlbCh2YWwsIG1jZGUtPnJl Z3MgKyBNQ0RFX0NSQyk7Cj4gKwo+ICsJCWRybV9jcnRjX3ZibGFua19vbihjcnRjKTsKPiArCX0K PiArCj4gKwlkZXZfaW5mbyhkcm0tPmRldiwgIk1DREUgZGlzcGxheSBpcyBlbmFibGVkXG4iKTsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgbWNkZV9kaXNwbGF5X2Rpc2FibGUoc3RydWN0IGRybV9z aW1wbGVfZGlzcGxheV9waXBlICpwaXBlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMg PSAmcGlwZS0+Y3J0YzsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBjcnRjLT5kZXY7Cj4g KwlzdHJ1Y3QgbWNkZSAqbWNkZSA9IGRybS0+ZGV2X3ByaXZhdGU7Cj4gKwo+ICsJaWYgKG1jZGUt PnRlX3N5bmMpCj4gKwkJZHJtX2NydGNfdmJsYW5rX29mZihjcnRjKTsKPiArCj4gKwkvKiBEaXNh YmxlIEZJRk8gQSBmbG93ICovCj4gKwltY2RlX2Rpc2FibGVfZmlmbyhtY2RlLCBNQ0RFX0ZJRk9f QSwgdHJ1ZSk7Cj4gKwo+ICsJZGV2X2luZm8oZHJtLT5kZXYsICJNQ0RFIGRpc3BsYXkgaXMgZGlz YWJsZWRcbiIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtY2RlX2Rpc3BsYXlfc2VuZF9vbmVf ZnJhbWUoc3RydWN0IG1jZGUgKm1jZGUpCj4gK3sKPiArCS8qIFJlcXVlc3QgYSBURSBBQ0sgKi8K PiArCWlmIChtY2RlLT50ZV9zeW5jKQo+ICsJCW1jZGVfZHNpX3RlX3JlcXVlc3QobWNkZS0+bWRz aSk7Cj4gKwo+ICsJLyogRW5hYmxlIEZJRk8gQSBmbG93ICovCj4gKwltY2RlX2VuYWJsZV9maWZv KG1jZGUsIE1DREVfRklGT19BKTsKPiArCj4gKwlpZiAobWNkZS0+dGVfc3luYykgewo+ICsJCS8q Cj4gKwkJICogSWYgb25lc2hvdCBtb2RlIGlzIGVuYWJsZWQsIHRoZSBmbG93IHdpbGwgYmUgZGlz YWJsZWQKPiArCQkgKiB3aGVuIHRoZSBURTAgSVJRIGFycml2ZXMgaW4gdGhlIGludGVycnVwdCBo YW5kbGVyLiBPdGhlcndpc2UKPiArCQkgKiB1cGRhdGVzIGFyZSBjb250aW51b3VzbHkgc3RyZWFt ZWQgdG8gdGhlIGRpc3BsYXkgYWZ0ZXIgdGhpcwo+ICsJCSAqIHBvaW50Lgo+ICsJCSAqLwo+ICsJ CWRldl9kYmcobWNkZS0+ZGV2LCAic2VudCBURTAgZnJhbWVidWZmZXIgdXBkYXRlXG4iKTsKPiAr CQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJLyogVHJpZ2dlciBhIHNvZnR3YXJlIHN5bmMgb3V0IG9u IGNoYW5uZWwgMCAqLwo+ICsJd3JpdGVsKE1DREVfQ0hOTFhTWU5DSFNXX1NXX1RSSUcsCj4gKwkg ICAgICAgbWNkZS0+cmVncyArIE1DREVfQ0hOTDBTWU5DSFNXKTsKPiArCj4gKwkvKgo+ICsJICog RGlzYWJsZSBGSUZPIEEgZmxvdyBhZ2Fpbjogc2luY2Ugd2UgYXJlIHVzaW5nIFRFIHN5bmMgd2UK PiArCSAqIG5lZWQgdG8gd2FpdCBmb3IgdGhlIEZJRk8gdG8gZHJhaW4gYmVmb3JlIHdlIGNvbnRp bnVlCj4gKwkgKiBzbyByZXBlYXRlZCBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IGNh dXNlIGEgbWVzcwo+ICsJICogaW4gdGhlIGhhcmR3YXJlIGJ5IHB1c2hpbmcgdXBkYXRlcyB3aWxs IHVwZGF0ZXMgYXJlIGdvaW5nCj4gKwkgKiBvbiBhbHJlYWR5Lgo+ICsJICovCj4gKwltY2RlX2Rp c2FibGVfZmlmbyhtY2RlLCBNQ0RFX0ZJRk9fQSwgdHJ1ZSk7Cj4gKwo+ICsJZGV2X2RiZyhtY2Rl LT5kZXYsICJzZW50IFNXIGZyYW1lYnVmZmVyIHVwZGF0ZVxuIik7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIG1jZGVfc2V0X2V4dHNyYyhzdHJ1Y3QgbWNkZSAqbWNkZSwgdTMyIGJ1ZmZlcl9hZGRy ZXNzKQo+ICt7Cj4gKwkvKiBXcml0ZSBiaXRtYXAgYmFzZSBhZGRyZXNzIHRvIHJlZ2lzdGVyICov Cj4gKwl3cml0ZWwoYnVmZmVyX2FkZHJlc3MsIG1jZGUtPnJlZ3MgKyBNQ0RFX0VYVFNSQ1hBMCk7 Cj4gKwkvKgo+ICsJICogQmFzZSBhZGRyZXNzIGZvciBuZXh0IGxpbmUgdGhpcyBpcyBwcm9iYWJs eSBvbmx5IHVzZWQKPiArCSAqIGluIGludGVybGFjZSBtb2Rlcy4KPiArCSAqLwo+ICsJd3JpdGVs KGJ1ZmZlcl9hZGRyZXNzICsgbWNkZS0+c3RyaWRlLCBtY2RlLT5yZWdzICsgTUNERV9FWFRTUkNY QTEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtY2RlX2Rpc3BsYXlfdXBkYXRlKHN0cnVjdCBk cm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKPiArCQkJCSBzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlICpvbGRfcHN0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmcGlwZS0+ Y3J0YzsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBjcnRjLT5kZXY7Cj4gKwlzdHJ1Y3Qg bWNkZSAqbWNkZSA9IGRybS0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJs YW5rX2V2ZW50ICpldmVudCA9IGNydGMtPnN0YXRlLT5ldmVudDsKPiArCXN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lID0gJnBpcGUtPnBsYW5lOwo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0 YXRlID0gcGxhbmUtPnN0YXRlOwo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwc3Rh dGUtPmZiOwo+ICsKPiArCS8qCj4gKwkgKiBIYW5kbGUgYW55IHBlbmRpbmcgZXZlbnQgZmlyc3Qs IHdlIG5lZWQgdG8gYXJtIHRoZSB2YmxhbmsKPiArCSAqIGludGVycnVwdCBiZWZvcmUgc2VuZGlu ZyBhbnkgdXBkYXRlIHRvIHRoZSBkaXNwbGF5IHNvIHdlIGRvbid0Cj4gKwkgKiBtaXNzIHRoZSBp bnRlcnJ1cHQuCj4gKwkgKi8KPiArCWlmIChldmVudCkgewo+ICsJCWNydGMtPnN0YXRlLT5ldmVu dCA9IE5VTEw7Cj4gKwo+ICsJCXNwaW5fbG9ja19pcnEoJmNydGMtPmRldi0+ZXZlbnRfbG9jayk7 Cj4gKwkJLyoKPiArCQkgKiBIYXJkd2FyZSBtdXN0IGJlIG9uIGJlZm9yZSB3ZSBjYW4gYXJtIGFu eSB2YmxhbmsgZXZlbnQsCj4gKwkJICogdGhpcyBpcyBub3QgYSBzY2Fub3V0IGNvbnRyb2xsZXIg d2hlcmUgdGhlcmUgaXMgYWx3YXlzCj4gKwkJICogc29tZSBwZXJpb2RpYyB1cGRhdGUgZ29pbmcg b24sIGl0IGlzIGNvbXBsZXRlbHkgZnJvemVuCj4gKwkJICogdW50aWwgd2UgZ2V0IGFuIHVwZGF0 ZS4gSWYgTUNERSBvdXRwdXQgaXNuJ3QgeWV0IGVuYWJsZWQsCj4gKwkJICogd2UganVzdCBzZW5k IGEgdmJsYW5rIGR1bW15IGV2ZW50IGJhY2suCj4gKwkJICovCj4gKwkJaWYgKGNydGMtPnN0YXRl LT5hY3RpdmUgJiYgZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKSA9PSAwKSB7Cj4gKwkJCWRldl9k YmcobWNkZS0+ZGV2LCAiYXJtIHZibGFuayBldmVudFxuIik7Cj4gKwkJCWRybV9jcnRjX2FybV92 YmxhbmtfZXZlbnQoY3J0YywgZXZlbnQpOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCWRldl9kYmcobWNk ZS0+ZGV2LCAiaW5zZXJ0IGZha2UgdmJsYW5rIGV2ZW50XG4iKTsKPiArCQkJZHJtX2NydGNfc2Vu ZF92YmxhbmtfZXZlbnQoY3J0YywgZXZlbnQpOwo+ICsJCX0KPiArCj4gKwkJc3Bpbl91bmxvY2tf aXJxKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2spOwo+ICsJfQo+ICsKPiArCS8qCj4gKwkgKiBXZSBk byBub3Qgc3RhcnQgc2VuZGluZyBmcmFtZWJ1ZmZlciB1cGRhdGVzIGJlZm9yZSB0aGUKPiArCSAq IGRpc3BsYXkgaXMgZW5hYmxlZC4gVXBkYXRlIGV2ZW50cyB3aWxsIGhvd2V2ZXIgYmUgZGlzcGF0 Y2hlZAo+ICsJICogZnJvbSB0aGUgRFJNIGNvcmUgYmVmb3JlIHRoZSBkaXNwbGF5IGlzIGVuYWJs ZWQuCj4gKwkgKi8KPiArCWlmIChmYikgewo+ICsJCW1jZGVfc2V0X2V4dHNyYyhtY2RlLCBkcm1f ZmJfY21hX2dldF9nZW1fYWRkcihmYiwgcHN0YXRlLCAwKSk7Cj4gKwkJLyogU2VuZCBhIHNpbmds ZSBmcmFtZSB1c2luZyBzb2Z0d2FyZSBzeW5jICovCj4gKwkJbWNkZV9kaXNwbGF5X3NlbmRfb25l X2ZyYW1lKG1jZGUpOwo+ICsJCWRldl9pbmZvX29uY2UobWNkZS0+ZGV2LCAic2VudCBmaXJzdCBk aXNwbGF5IHVwZGF0ZVxuIik7Cj4gKwl9IGVsc2Ugewo+ICsJCS8qCj4gKwkJICogSWYgYW4gdXBk YXRlIGlzIHJlY2VpZXZlZCBiZWZvcmUgdGhlIE1DREUgaXMgZW5hYmxlZAo+ICsJCSAqIChiZWZv cmUgbWNkZV9kaXNwbGF5X2VuYWJsZSgpIGlzIGNhbGxlZCkgd2UgY2FuJ3QgcmVhbGx5Cj4gKwkJ ICogZG8gbXVjaCB3aXRoIHRoYXQgYnVmZmVyLgo+ICsJCSAqLwo+ICsJCWRldl9pbmZvKG1jZGUt PmRldiwgImlnbm9yZWQgYSBkaXNwbGF5IHVwZGF0ZVxuIik7Cj4gKwl9Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgbWNkZV9kaXNwbGF5X2VuYWJsZV92Ymxhbmsoc3RydWN0IGRybV9zaW1wbGVfZGlz cGxheV9waXBlICpwaXBlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmcGlwZS0+ Y3J0YzsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBjcnRjLT5kZXY7Cj4gKwlzdHJ1Y3Qg bWNkZSAqbWNkZSA9IGRybS0+ZGV2X3ByaXZhdGU7Cj4gKwl1MzIgdmFsOwo+ICsKPiArCS8qIEVu YWJsZSBhbGwgVkJMQU5LIElSUXMgKi8KPiArCXZhbCA9IE1DREVfUFBfVkNNUEEgfAo+ICsJCU1D REVfUFBfVkNNUEIgfAo+ICsJCU1DREVfUFBfVlNDQzAgfAo+ICsJCU1DREVfUFBfVlNDQzEgfAo+ ICsJCU1DREVfUFBfVkNNUEMwIHwKPiArCQlNQ0RFX1BQX1ZDTVBDMTsKPiArCXdyaXRlbCh2YWws IG1jZGUtPnJlZ3MgKyBNQ0RFX0lNU0NQUCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIG1jZGVfZGlzcGxheV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX3NpbXBs ZV9kaXNwbGF5X3BpcGUgKnBpcGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZw aXBlLT5jcnRjOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGNydGMtPmRldjsKPiArCXN0 cnVjdCBtY2RlICptY2RlID0gZHJtLT5kZXZfcHJpdmF0ZTsKPiArCj4gKwkvKiBEaXNhYmxlIGFs bCBWQkxBTksgSVJRcyAqLwo+ICsJd3JpdGVsKDAsIG1jZGUtPnJlZ3MgKyBNQ0RFX0lNU0NQUCk7 Cj4gKwkvKiBDbGVhciBhbnkgcGVuZGluZyBJUlFzICovCj4gKwl3cml0ZWwoMHhGRkZGRkZGRiwg bWNkZS0+cmVncyArIE1DREVfUklTUFApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRybV9z aW1wbGVfZGlzcGxheV9waXBlX2Z1bmNzIG1jZGVfZGlzcGxheV9mdW5jcyA9IHsKPiArCS5jaGVj ayA9IG1jZGVfZGlzcGxheV9jaGVjaywKPiArCS5lbmFibGUgPSBtY2RlX2Rpc3BsYXlfZW5hYmxl LAo+ICsJLmRpc2FibGUgPSBtY2RlX2Rpc3BsYXlfZGlzYWJsZSwKPiArCS51cGRhdGUgPSBtY2Rl X2Rpc3BsYXlfdXBkYXRlLAo+ICsJLnByZXBhcmVfZmIgPSBkcm1fZ2VtX2ZiX3NpbXBsZV9kaXNw bGF5X3BpcGVfcHJlcGFyZV9mYiwKPiArfTsKPiArCj4gK2ludCBtY2RlX2Rpc3BsYXlfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZHJtKQo+ICt7Cj4gKwlzdHJ1Y3QgbWNkZSAqbWNkZSA9IGRybS0+ ZGV2X3ByaXZhdGU7Cj4gKwlpbnQgcmV0Owo+ICsJc3RhdGljIGNvbnN0IHUzMiBmb3JtYXRzW10g PSB7Cj4gKwkJRFJNX0ZPUk1BVF9BUkdCODg4OCwKPiArCQlEUk1fRk9STUFUX0FCR1I4ODg4LAo+ ICsJCURSTV9GT1JNQVRfWFJHQjg4ODgsCj4gKwkJRFJNX0ZPUk1BVF9YQkdSODg4OCwKPiArCQlE Uk1fRk9STUFUX1JHQjg4OCwKPiArCQlEUk1fRk9STUFUX0JHUjg4OCwKPiArCQlEUk1fRk9STUFU X0FSR0I0NDQ0LAo+ICsJCURSTV9GT1JNQVRfQUJHUjQ0NDQsCj4gKwkJRFJNX0ZPUk1BVF9YUkdC NDQ0NCwKPiArCQlEUk1fRk9STUFUX1hCR1I0NDQ0LAo+ICsJCS8qIFRoZXNlIGFyZSBhY3R1YWxs eSBJUkdCMTU1NSBzbyBpbnRlbnNpdHkgYml0IGlzIGxvc3QgKi8KPiArCQlEUk1fRk9STUFUX1hS R0IxNTU1LAo+ICsJCURSTV9GT1JNQVRfWEJHUjE1NTUsCj4gKwkJRFJNX0ZPUk1BVF9SR0I1NjUs Cj4gKwkJRFJNX0ZPUk1BVF9CR1I1NjUsCj4gKwkJRFJNX0ZPUk1BVF9ZVVY0MjIsCj4gKwl9Owo+ ICsKPiArCS8qIFByb3ZpZGUgdmJsYW5rIG9ubHkgd2hlbiB3ZSBoYXZlIFRFIGVuYWJsZWQgKi8K PiArCWlmIChtY2RlLT50ZV9zeW5jKSB7Cj4gKwkJbWNkZV9kaXNwbGF5X2Z1bmNzLmVuYWJsZV92 YmxhbmsgPSBtY2RlX2Rpc3BsYXlfZW5hYmxlX3ZibGFuazsKPiArCQltY2RlX2Rpc3BsYXlfZnVu Y3MuZGlzYWJsZV92YmxhbmsgPSBtY2RlX2Rpc3BsYXlfZGlzYWJsZV92Ymxhbms7Cj4gKwl9Cj4g Kwo+ICsJcmV0ID0gZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfaW5pdChkcm0sICZtY2RlLT5waXBl LAo+ICsJCQkJCSAgICZtY2RlX2Rpc3BsYXlfZnVuY3MsCj4gKwkJCQkJICAgZm9ybWF0cywgQVJS QVlfU0laRShmb3JtYXRzKSwKPiArCQkJCQkgICBOVUxMLAo+ICsJCQkJCSAgIG1jZGUtPmNvbm5l Y3Rvcik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4g K30KPiArRVhQT1JUX1NZTUJPTF9HUEwobWNkZV9kaXNwbGF5X2luaXQpOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2Rpc3BsYXlfcmVncy5oIGIvZHJpdmVycy9ncHUv ZHJtL21jZGUvbWNkZV9kaXNwbGF5X3JlZ3MuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMDAwMDAwLi5kM2FjN2VmNWZmOWEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21jZGUvbWNkZV9kaXNwbGF5X3JlZ3MuaAo+IEBAIC0wLDAgKzEsNTE4IEBA Cj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCj4gKyNpZm5kZWYgX19E Uk1fTUNERV9ESVNQTEFZX1JFR1MKPiArI2RlZmluZSBfX0RSTV9NQ0RFX0RJU1BMQVlfUkVHUwo+ ICsKPiArLyogUFAgKHBpeGVsIHByb2Nlc3NvcikgaW50ZXJydXB0cyAqLwo+ICsjZGVmaW5lIE1D REVfSU1TQ1BQIDB4MDAwMDAxMDQKPiArI2RlZmluZSBNQ0RFX1JJU1BQIDB4MDAwMDAxMTQKPiAr I2RlZmluZSBNQ0RFX01JU1BQIDB4MDAwMDAxMjQKPiArI2RlZmluZSBNQ0RFX1NJU1BQIDB4MDAw MDAxMzQKPiArCj4gKyNkZWZpbmUgTUNERV9QUF9WQ01QQSBCSVQoMCkKPiArI2RlZmluZSBNQ0RF X1BQX1ZDTVBCIEJJVCgxKQo+ICsjZGVmaW5lIE1DREVfUFBfVlNDQzAgQklUKDIpCj4gKyNkZWZp bmUgTUNERV9QUF9WU0NDMSBCSVQoMykKPiArI2RlZmluZSBNQ0RFX1BQX1ZDTVBDMCBCSVQoNCkK PiArI2RlZmluZSBNQ0RFX1BQX1ZDTVBDMSBCSVQoNSkKPiArI2RlZmluZSBNQ0RFX1BQX1JPVEZE X0EgQklUKDYpCj4gKyNkZWZpbmUgTUNERV9QUF9ST1RGRF9CIEJJVCg3KQo+ICsKPiArLyogT3Zl cmxheSBpbnRlcnJ1cHRzICovCj4gKyNkZWZpbmUgTUNERV9JTVNDT1ZMIDB4MDAwMDAxMDgKPiAr I2RlZmluZSBNQ0RFX1JJU09WTCAweDAwMDAwMTE4Cj4gKyNkZWZpbmUgTUNERV9NSVNPVkwgMHgw MDAwMDEyOAo+ICsjZGVmaW5lIE1DREVfU0lTT1ZMIDB4MDAwMDAxMzgKPiArCj4gKy8qIENoYW5u ZWwgaW50ZXJydXB0cyAqLwo+ICsjZGVmaW5lIE1DREVfSU1TQ0NITkwgMHgwMDAwMDEwQwo+ICsj ZGVmaW5lIE1DREVfUklTQ0hOTCAweDAwMDAwMTFDCj4gKyNkZWZpbmUgTUNERV9NSVNDSE5MIDB4 MDAwMDAxMkMKPiArI2RlZmluZSBNQ0RFX1NJU0NITkwgMHgwMDAwMDEzQwo+ICsKPiArLyogWCA9 IDAuLjkgKi8KPiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hBMCAweDAwMDAwMjAwCj4gKyNkZWZpbmUg TUNERV9FWFRTUkNYQTBfR1JPVVBPRkZTRVQgMHgyMAo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWEEw X0JBU0VBRERSRVNTMF9TSElGVCAzCj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQTBfQkFTRUFERFJF U1MwX01BU0sgMHhGRkZGRkZGOAo+ICsKPiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hBMSAweDAwMDAw MjA0Cj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQTFfR1JPVVBPRkZTRVQgMHgyMAo+ICsjZGVmaW5l IE1DREVfRVhUU1JDWEExX0JBU0VBRERSRVNTMV9TSElGVCAzCj4gKyNkZWZpbmUgTUNERV9FWFRT UkNYQTFfQkFTRUFERFJFU1MxX01BU0sgMHhGRkZGRkZGOAo+ICsKPiArLyogRXh0ZXJuYWwgc291 cmNlcyAwLi45ICovCj4gKyNkZWZpbmUgTUNERV9FWFRTUkMwQ09ORiAweDAwMDAwMjBDCj4gKyNk ZWZpbmUgTUNERV9FWFRTUkMxQ09ORiAweDAwMDAwMjJDCj4gKyNkZWZpbmUgTUNERV9FWFRTUkMy Q09ORiAweDAwMDAwMjRDCj4gKyNkZWZpbmUgTUNERV9FWFRTUkMzQ09ORiAweDAwMDAwMjZDCj4g KyNkZWZpbmUgTUNERV9FWFRTUkM0Q09ORiAweDAwMDAwMjhDCj4gKyNkZWZpbmUgTUNERV9FWFRT UkM1Q09ORiAweDAwMDAwMkFDCj4gKyNkZWZpbmUgTUNERV9FWFRTUkM2Q09ORiAweDAwMDAwMkND Cj4gKyNkZWZpbmUgTUNERV9FWFRTUkM3Q09ORiAweDAwMDAwMkVDCj4gKyNkZWZpbmUgTUNERV9F WFRTUkM4Q09ORiAweDAwMDAwMzBDCj4gKyNkZWZpbmUgTUNERV9FWFRTUkM5Q09ORiAweDAwMDAw MzJDCj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQ09ORl9HUk9VUE9GRlNFVCAweDIwCj4gKyNkZWZp bmUgTUNERV9FWFRTUkNYQ09ORl9CVUZfSURfU0hJRlQgMAo+ICsjZGVmaW5lIE1DREVfRVhUU1JD WENPTkZfQlVGX0lEX01BU0sgMHgwMDAwMDAwMwo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWENPTkZf QlVGX05CX1NISUZUIDIKPiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hDT05GX0JVRl9OQl9NQVNLIDB4 MDAwMDAwMEMKPiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hDT05GX1BSSV9PVkxJRF9TSElGVCA0Cj4g KyNkZWZpbmUgTUNERV9FWFRTUkNYQ09ORl9QUklfT1ZMSURfTUFTSyAweDAwMDAwMEYwCj4gKyNk ZWZpbmUgTUNERV9FWFRTUkNYQ09ORl9CUFBfU0hJRlQgOAo+ICsjZGVmaW5lIE1DREVfRVhUU1JD WENPTkZfQlBQX01BU0sgMHgwMDAwMEYwMAo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWENPTkZfQlBQ XzFCUFBfUEFMIDAKPiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hDT05GX0JQUF8yQlBQX1BBTCAxCj4g KyNkZWZpbmUgTUNERV9FWFRTUkNYQ09ORl9CUFBfNEJQUF9QQUwgMgo+ICsjZGVmaW5lIE1DREVf RVhUU1JDWENPTkZfQlBQXzhCUFBfUEFMIDMKPiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hDT05GX0JQ UF9SR0I0NDQgNAo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWENPTkZfQlBQX0FSR0I0NDQ0IDUKPiAr I2RlZmluZSBNQ0RFX0VYVFNSQ1hDT05GX0JQUF9JUkdCMTU1NSA2Cj4gKyNkZWZpbmUgTUNERV9F WFRTUkNYQ09ORl9CUFBfUkdCNTY1IDcKPiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hDT05GX0JQUF9S R0I4ODggOAo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWENPTkZfQlBQX1hSR0I4ODg4IDkKPiArI2Rl ZmluZSBNQ0RFX0VYVFNSQ1hDT05GX0JQUF9BUkdCODg4OCAxMAo+ICsjZGVmaW5lIE1DREVfRVhU U1JDWENPTkZfQlBQX1lDQkNSNDIyIDExCj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQ09ORl9CR1Ig QklUKDEyKQo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWENPTkZfQkVCTyBCSVQoMTMpCj4gKyNkZWZp bmUgTUNERV9FWFRTUkNYQ09ORl9CRVBPIEJJVCgxNCkKPiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hD T05GX1RVTk5FTElOR19CVUZGRVJfSEVJR0hUX1NISUZUIDE2Cj4gKyNkZWZpbmUgTUNERV9FWFRT UkNYQ09ORl9UVU5ORUxJTkdfQlVGRkVSX0hFSUdIVF9NQVNLIDB4MEZGRjAwMDAKPiArCj4gKy8q IEV4dGVybmFsIHNvdXJjZXMgMC4uOSAqLwo+ICsjZGVmaW5lIE1DREVfRVhUU1JDMENSIDB4MDAw MDAyMTAKPiArI2RlZmluZSBNQ0RFX0VYVFNSQzFDUiAweDAwMDAwMjMwCj4gKyNkZWZpbmUgTUNE RV9FWFRTUkMyQ1IgMHgwMDAwMDI1MAo+ICsjZGVmaW5lIE1DREVfRVhUU1JDM0NSIDB4MDAwMDAy NzAKPiArI2RlZmluZSBNQ0RFX0VYVFNSQzRDUiAweDAwMDAwMjkwCj4gKyNkZWZpbmUgTUNERV9F WFRTUkM1Q1IgMHgwMDAwMDJCMAo+ICsjZGVmaW5lIE1DREVfRVhUU1JDNkNSIDB4MDAwMDAyRDAK PiArI2RlZmluZSBNQ0RFX0VYVFNSQzdDUiAweDAwMDAwMkYwCj4gKyNkZWZpbmUgTUNERV9FWFRT UkM4Q1IgMHgwMDAwMDMxMAo+ICsjZGVmaW5lIE1DREVfRVhUU1JDOUNSIDB4MDAwMDAzMzAKPiAr I2RlZmluZSBNQ0RFX0VYVFNSQ1hDUl9TRUxfTU9EX1NISUZUIDAKPiArI2RlZmluZSBNQ0RFX0VY VFNSQ1hDUl9TRUxfTU9EX01BU0sgMHgwMDAwMDAwMwo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWENS X1NFTF9NT0RfRVhURVJOQUxfU0VMIDAKPiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hDUl9TRUxfTU9E X0FVVE9fVE9HR0xFIDEKPiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hDUl9TRUxfTU9EX1NPRlRXQVJF X1NFTCAyCj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQ1JfTVVMVElPVkxfQ1RSTF9QUklNQVJZIEJJ VCgyKSAvKiAwID0gYWxsICovCj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQ1JfRlNfRElWX0RJU0FC TEUgQklUKDMpCj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQ1JfRk9SQ0VfRlNfRElWIEJJVCg0KQo+ ICsKPiArLyogT25seSBleHRlcm5hbCBzb3VyY2UgNiBoYXMgYSBzZWNvbmQgYWRkcmVzcyByZWdp c3RlciAqLwo+ICsjZGVmaW5lIE1DREVfRVhUU1JDNkEyIDB4MDAwMDAyQzgKPiArCj4gKy8qIDYg b3ZlcmxheXMgKi8KPiArI2RlZmluZSBNQ0RFX09WTDBDUiAweDAwMDAwNDAwCj4gKyNkZWZpbmUg TUNERV9PVkwxQ1IgMHgwMDAwMDQyMAo+ICsjZGVmaW5lIE1DREVfT1ZMMkNSIDB4MDAwMDA0NDAK PiArI2RlZmluZSBNQ0RFX09WTDNDUiAweDAwMDAwNDYwCj4gKyNkZWZpbmUgTUNERV9PVkw0Q1Ig MHgwMDAwMDQ4MAo+ICsjZGVmaW5lIE1DREVfT1ZMNUNSIDB4MDAwMDA0QTAKPiArI2RlZmluZSBN Q0RFX09WTFhDUl9PVkxFTiBCSVQoMCkKPiArI2RlZmluZSBNQ0RFX09WTFhDUl9DT0xDQ1RSTF9E SVNBQkxFRCAwCj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfQ09MQ0NUUkxfRU5BQkxFRF9OT19TQVQg KDEgPDwgMSkKPiArI2RlZmluZSBNQ0RFX09WTFhDUl9DT0xDQ1RSTF9FTkFCTEVEX1NBVCAoMiA8 PCAxKQo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX0NLRVlHRU4gQklUKDMpCj4gKyNkZWZpbmUgTUNE RV9PVkxYQ1JfQUxQSEFQTUVOIEJJVCg0KQo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX09WTEYgQklU KDUpCj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfT1ZMUiBCSVQoNikKPiArI2RlZmluZSBNQ0RFX09W TFhDUl9PVkxCIEJJVCg3KQo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX0ZFVENIX1JPUENfU0hJRlQg OAo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX0ZFVENIX1JPUENfTUFTSyAweDAwMDBGRjAwCj4gKyNk ZWZpbmUgTUNERV9PVkxYQ1JfU1RCUFJJT19TSElGVCAxNgo+ICsjZGVmaW5lIE1DREVfT1ZMWENS X1NUQlBSSU9fTUFTSyAweDAwMEYwMDAwCj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfQlVSU1RTSVpF X1NISUZUIDIwCj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfQlVSU1RTSVpFX01BU0sgMHgwMEYwMDAw MAo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX0JVUlNUU0laRV8xVyAwCj4gKyNkZWZpbmUgTUNERV9P VkxYQ1JfQlVSU1RTSVpFXzJXIDEKPiArI2RlZmluZSBNQ0RFX09WTFhDUl9CVVJTVFNJWkVfNFcg Mgo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX0JVUlNUU0laRV84VyAzCj4gKyNkZWZpbmUgTUNERV9P VkxYQ1JfQlVSU1RTSVpFXzE2VyA0Cj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfQlVSU1RTSVpFX0hX XzFXIDgKPiArI2RlZmluZSBNQ0RFX09WTFhDUl9CVVJTVFNJWkVfSFdfMlcgOQo+ICsjZGVmaW5l IE1DREVfT1ZMWENSX0JVUlNUU0laRV9IV180VyAxMAo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX0JV UlNUU0laRV9IV184VyAxMQo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX0JVUlNUU0laRV9IV18xNlcg MTIKPiArI2RlZmluZSBNQ0RFX09WTFhDUl9NQVhPVVRTVEFORElOR19TSElGVCAyNAo+ICsjZGVm aW5lIE1DREVfT1ZMWENSX01BWE9VVFNUQU5ESU5HX01BU0sgMHgwRjAwMDAwMAo+ICsjZGVmaW5l IE1DREVfT1ZMWENSX01BWE9VVFNUQU5ESU5HXzFfUkVRIDAKPiArI2RlZmluZSBNQ0RFX09WTFhD Ul9NQVhPVVRTVEFORElOR18yX1JFUSAxCj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfTUFYT1VUU1RB TkRJTkdfNF9SRVEgMgo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX01BWE9VVFNUQU5ESU5HXzhfUkVR IDMKPiArI2RlZmluZSBNQ0RFX09WTFhDUl9NQVhPVVRTVEFORElOR18xNl9SRVEgNAo+ICsjZGVm aW5lIE1DREVfT1ZMWENSX1JPVEJVUlNUU0laRV9TSElGVCAyOAo+ICsjZGVmaW5lIE1DREVfT1ZM WENSX1JPVEJVUlNUU0laRV9NQVNLIDB4RjAwMDAwMDAKPiArI2RlZmluZSBNQ0RFX09WTFhDUl9S T1RCVVJTVFNJWkVfMVcgMAo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX1JPVEJVUlNUU0laRV8yVyAx Cj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfUk9UQlVSU1RTSVpFXzRXIDIKPiArI2RlZmluZSBNQ0RF X09WTFhDUl9ST1RCVVJTVFNJWkVfOFcgMwo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX1JPVEJVUlNU U0laRV8xNlcgNAo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX1JPVEJVUlNUU0laRV9IV18xVyA4Cj4g KyNkZWZpbmUgTUNERV9PVkxYQ1JfUk9UQlVSU1RTSVpFX0hXXzJXIDkKPiArI2RlZmluZSBNQ0RF X09WTFhDUl9ST1RCVVJTVFNJWkVfSFdfNFcgMTAKPiArI2RlZmluZSBNQ0RFX09WTFhDUl9ST1RC VVJTVFNJWkVfSFdfOFcgMTEKPiArI2RlZmluZSBNQ0RFX09WTFhDUl9ST1RCVVJTVFNJWkVfSFdf MTZXIDEyCj4gKwo+ICsjZGVmaW5lIE1DREVfT1ZMMENPTkYgMHgwMDAwMDQwNAo+ICsjZGVmaW5l IE1DREVfT1ZMMUNPTkYgMHgwMDAwMDQyNAo+ICsjZGVmaW5lIE1DREVfT1ZMMkNPTkYgMHgwMDAw MDQ0NAo+ICsjZGVmaW5lIE1DREVfT1ZMM0NPTkYgMHgwMDAwMDQ2NAo+ICsjZGVmaW5lIE1DREVf T1ZMNENPTkYgMHgwMDAwMDQ4NAo+ICsjZGVmaW5lIE1DREVfT1ZMNUNPTkYgMHgwMDAwMDRBNAo+ ICsjZGVmaW5lIE1DREVfT1ZMWENPTkZfUFBMX1NISUZUIDAKPiArI2RlZmluZSBNQ0RFX09WTFhD T05GX1BQTF9NQVNLIDB4MDAwMDA3RkYKPiArI2RlZmluZSBNQ0RFX09WTFhDT05GX0VYVFNSQ19J RF9TSElGVCAxMQo+ICsjZGVmaW5lIE1DREVfT1ZMWENPTkZfRVhUU1JDX0lEX01BU0sgMHgwMDAw NzgwMAo+ICsjZGVmaW5lIE1DREVfT1ZMWENPTkZfTFBGX1NISUZUIDE2Cj4gKyNkZWZpbmUgTUNE RV9PVkxYQ09ORl9MUEZfTUFTSyAweDA3RkYwMDAwCj4gKwo+ICsjZGVmaW5lIE1DREVfT1ZMMENP TkYyIDB4MDAwMDA0MDgKPiArI2RlZmluZSBNQ0RFX09WTDFDT05GMiAweDAwMDAwNDI4Cj4gKyNk ZWZpbmUgTUNERV9PVkwyQ09ORjIgMHgwMDAwMDQ0OAo+ICsjZGVmaW5lIE1DREVfT1ZMM0NPTkYy IDB4MDAwMDA0NjgKPiArI2RlZmluZSBNQ0RFX09WTDRDT05GMiAweDAwMDAwNDg4Cj4gKyNkZWZp bmUgTUNERV9PVkw1Q09ORjIgMHgwMDAwMDRBOAo+ICsjZGVmaW5lIE1DREVfT1ZMWENPTkYyX0JQ X1BFUl9QSVhFTF9BTFBIQSAwCj4gKyNkZWZpbmUgTUNERV9PVkxYQ09ORjJfQlBfQ09OU1RBTlRf QUxQSEEgQklUKDApCj4gKyNkZWZpbmUgTUNERV9PVkxYQ09ORjJfQUxQSEFWQUxVRV9TSElGVCAx Cj4gKyNkZWZpbmUgTUNERV9PVkxYQ09ORjJfQUxQSEFWQUxVRV9NQVNLIDB4MDAwMDAxRkUKPiAr I2RlZmluZSBNQ0RFX09WTFhDT05GMl9PUFEgQklUKDkpCj4gKyNkZWZpbmUgTUNERV9PVkxYQ09O RjJfUElYT0ZGX1NISUZUIDEwCj4gKyNkZWZpbmUgTUNERV9PVkxYQ09ORjJfUElYT0ZGX01BU0sg MHgwMDAwRkMwMAo+ICsjZGVmaW5lIE1DREVfT1ZMWENPTkYyX1BJWEVMRkVUQ0hFUldBVEVSTUFS S0xFVkVMX1NISUZUIDE2Cj4gKyNkZWZpbmUgTUNERV9PVkxYQ09ORjJfUElYRUxGRVRDSEVSV0FU RVJNQVJLTEVWRUxfTUFTSyAweDFGRkYwMDAwCj4gKwo+ICsjZGVmaW5lIE1DREVfT1ZMMExKSU5D IDB4MDAwMDA0MEMKPiArI2RlZmluZSBNQ0RFX09WTDFMSklOQyAweDAwMDAwNDJDCj4gKyNkZWZp bmUgTUNERV9PVkwyTEpJTkMgMHgwMDAwMDQ0Qwo+ICsjZGVmaW5lIE1DREVfT1ZMM0xKSU5DIDB4 MDAwMDA0NkMKPiArI2RlZmluZSBNQ0RFX09WTDRMSklOQyAweDAwMDAwNDhDCj4gKyNkZWZpbmUg TUNERV9PVkw1TEpJTkMgMHgwMDAwMDRBQwo+ICsKPiArI2RlZmluZSBNQ0RFX09WTDBDUk9QIDB4 MDAwMDA0MTAKPiArI2RlZmluZSBNQ0RFX09WTDFDUk9QIDB4MDAwMDA0MzAKPiArI2RlZmluZSBN Q0RFX09WTDJDUk9QIDB4MDAwMDA0NTAKPiArI2RlZmluZSBNQ0RFX09WTDNDUk9QIDB4MDAwMDA0 NzAKPiArI2RlZmluZSBNQ0RFX09WTDRDUk9QIDB4MDAwMDA0OTAKPiArI2RlZmluZSBNQ0RFX09W TDVDUk9QIDB4MDAwMDA0QjAKPiArI2RlZmluZSBNQ0RFX09WTFhDUk9QX1RNUkdOX1NISUZUIDAK PiArI2RlZmluZSBNQ0RFX09WTFhDUk9QX1RNUkdOX01BU0sgMHgwMDNGRkZGRgo+ICsjZGVmaW5l IE1DREVfT1ZMWENST1BfTE1SR05fU0hJRlQgMjIKPiArI2RlZmluZSBNQ0RFX09WTFhDUk9QX0xN UkdOX01BU0sgMHhGRkMwMDAwMAo+ICsKPiArI2RlZmluZSBNQ0RFX09WTDBDT01QIDB4MDAwMDA0 MTQKPiArI2RlZmluZSBNQ0RFX09WTDFDT01QIDB4MDAwMDA0MzQKPiArI2RlZmluZSBNQ0RFX09W TDJDT01QIDB4MDAwMDA0NTQKPiArI2RlZmluZSBNQ0RFX09WTDNDT01QIDB4MDAwMDA0NzQKPiAr I2RlZmluZSBNQ0RFX09WTDRDT01QIDB4MDAwMDA0OTQKPiArI2RlZmluZSBNQ0RFX09WTDVDT01Q IDB4MDAwMDA0QjQKPiArI2RlZmluZSBNQ0RFX09WTFhDT01QX1hQT1NfU0hJRlQgMAo+ICsjZGVm aW5lIE1DREVfT1ZMWENPTVBfWFBPU19NQVNLIDB4MDAwMDA3RkYKPiArI2RlZmluZSBNQ0RFX09W TFhDT01QX0NIX0lEX1NISUZUIDExCj4gKyNkZWZpbmUgTUNERV9PVkxYQ09NUF9DSF9JRF9NQVNL IDB4MDAwMDc4MDAKPiArI2RlZmluZSBNQ0RFX09WTFhDT01QX1lQT1NfU0hJRlQgMTYKPiArI2Rl ZmluZSBNQ0RFX09WTFhDT01QX1lQT1NfTUFTSyAweDA3RkYwMDAwCj4gKyNkZWZpbmUgTUNERV9P VkxYQ09NUF9aX1NISUZUIDI3Cj4gKyNkZWZpbmUgTUNERV9PVkxYQ09NUF9aX01BU0sgMHg3ODAw MDAwMAo+ICsKPiArI2RlZmluZSBNQ0RFX0NSQyAweDAwMDAwQzAwCj4gKyNkZWZpbmUgTUNERV9D UkNfQzFFTiBCSVQoMikKPiArI2RlZmluZSBNQ0RFX0NSQ19DMkVOIEJJVCgzKQo+ICsjZGVmaW5l IE1DREVfQ1JDX1NZQ0VOMCBCSVQoNykKPiArI2RlZmluZSBNQ0RFX0NSQ19TWUNFTjEgQklUKDgp Cj4gKyNkZWZpbmUgTUNERV9DUkNfU0laRTEgQklUKDkpCj4gKyNkZWZpbmUgTUNERV9DUkNfU0la RTIgQklUKDEwKQo+ICsjZGVmaW5lIE1DREVfQ1JDX1lVVkNPTlZDMUVOIEJJVCgxNSkKPiArI2Rl ZmluZSBNQ0RFX0NSQ19DUzFFTiBCSVQoMTYpCj4gKyNkZWZpbmUgTUNERV9DUkNfQ1MyRU4gQklU KDE3KQo+ICsjZGVmaW5lIE1DREVfQ1JDX0NTMVBPTCBCSVQoMTkpCj4gKyNkZWZpbmUgTUNERV9D UkNfQ1MyUE9MIEJJVCgyMCkKPiArI2RlZmluZSBNQ0RFX0NSQ19DRDFQT0wgQklUKDIxKQo+ICsj ZGVmaW5lIE1DREVfQ1JDX0NEMlBPTCBCSVQoMjIpCj4gKyNkZWZpbmUgTUNERV9DUkNfV1IxUE9M IEJJVCgyMykKPiArI2RlZmluZSBNQ0RFX0NSQ19XUjJQT0wgQklUKDI0KQo+ICsjZGVmaW5lIE1D REVfQ1JDX1JEMVBPTCBCSVQoMjUpCj4gKyNkZWZpbmUgTUNERV9DUkNfUkQyUE9MIEJJVCgyNikK PiArI2RlZmluZSBNQ0RFX0NSQ19TWU5DQ1RSTF9TSElGVCAyOQo+ICsjZGVmaW5lIE1DREVfQ1JD X1NZTkNDVFJMX01BU0sgMHg2MDAwMDAwMAo+ICsjZGVmaW5lIE1DREVfQ1JDX1NZTkNDVFJMX05P X1NZTkMgMAo+ICsjZGVmaW5lIE1DREVfQ1JDX1NZTkNDVFJMX0RCSTAgMQo+ICsjZGVmaW5lIE1D REVfQ1JDX1NZTkNDVFJMX0RCSTEgMgo+ICsjZGVmaW5lIE1DREVfQ1JDX1NZTkNDVFJMX1BJTkdf UE9ORyAzCj4gKyNkZWZpbmUgTUNERV9DUkNfQ0xBTVBDMUVOIEJJVCgzMSkKPiArCj4gKyNkZWZp bmUgTUNERV9WU0NSQzAgMHgwMDAwMEM1Qwo+ICsjZGVmaW5lIE1DREVfVlNDUkMxIDB4MDAwMDBD NjAKPiArI2RlZmluZSBNQ0RFX1ZTQ1JDX1ZTUE1JTl9NQVNLIDB4MDAwMDBGRkYKPiArI2RlZmlu ZSBNQ0RFX1ZTQ1JDX1ZTUE1BWF9TSElGVCAxMgo+ICsjZGVmaW5lIE1DREVfVlNDUkNfVlNQTUFY X01BU0sgMHgwMEZGRjAwMAo+ICsjZGVmaW5lIE1DREVfVlNDUkNfVlNQRElWX1NISUZUIDI0Cj4g KyNkZWZpbmUgTUNERV9WU0NSQ19WU1BESVZfTUFTSyAweDA3MDAwMDAwCj4gKyNkZWZpbmUgTUNE RV9WU0NSQ19WU1BESVZfTUNERUNMS19ESVZfMSAwCj4gKyNkZWZpbmUgTUNERV9WU0NSQ19WU1BE SVZfTUNERUNMS19ESVZfMiAxCj4gKyNkZWZpbmUgTUNERV9WU0NSQ19WU1BESVZfTUNERUNMS19E SVZfNCAyCj4gKyNkZWZpbmUgTUNERV9WU0NSQ19WU1BESVZfTUNERUNMS19ESVZfOCAzCj4gKyNk ZWZpbmUgTUNERV9WU0NSQ19WU1BESVZfTUNERUNMS19ESVZfMTYgNAo+ICsjZGVmaW5lIE1DREVf VlNDUkNfVlNQRElWX01DREVDTEtfRElWXzMyIDUKPiArI2RlZmluZSBNQ0RFX1ZTQ1JDX1ZTUERJ Vl9NQ0RFQ0xLX0RJVl82NCA2Cj4gKyNkZWZpbmUgTUNERV9WU0NSQ19WU1BESVZfTUNERUNMS19E SVZfMTI4IDcKPiArI2RlZmluZSBNQ0RFX1ZTQ1JDX1ZTUE9MIEJJVCgyNykgLyogMCBhY3RpdmUg aGlnaCwgMSBhY3RpdmUgbG93ICovCj4gKyNkZWZpbmUgTUNERV9WU0NSQ19WU1NFTCBCSVQoMjgp IC8qIDAgVlNZTkMwLCAxIFZTWU5DMSAqLwo+ICsjZGVmaW5lIE1DREVfVlNDUkNfVlNEQkwgQklU KDI5KQo+ICsKPiArLyogQ2hhbm5lbCBjb25maWcgMC4uMyAqLwo+ICsjZGVmaW5lIE1DREVfQ0hO TDBDT05GIDB4MDAwMDA2MDAKPiArI2RlZmluZSBNQ0RFX0NITkwxQ09ORiAweDAwMDAwNjIwCj4g KyNkZWZpbmUgTUNERV9DSE5MMkNPTkYgMHgwMDAwMDY0MAo+ICsjZGVmaW5lIE1DREVfQ0hOTDND T05GIDB4MDAwMDA2NjAKPiArI2RlZmluZSBNQ0RFX0NITkxYQ09ORl9QUExfU0hJRlQgMAo+ICsj ZGVmaW5lIE1DREVfQ0hOTFhDT05GX1BQTF9NQVNLIDB4MDAwMDA3RkYKPiArI2RlZmluZSBNQ0RF X0NITkxYQ09ORl9MUEZfU0hJRlQgMTYKPiArI2RlZmluZSBNQ0RFX0NITkxYQ09ORl9MUEZfTUFT SyAweDA3RkYwMDAwCj4gKyNkZWZpbmUgTUNERV9NQVhfV0lEVEggMjA0OAo+ICsKPiArLyogQ2hh bm5lbCBzdGF0dXMgMC4uMyAqLwo+ICsjZGVmaW5lIE1DREVfQ0hOTDBTVEFUIDB4MDAwMDA2MDQK PiArI2RlZmluZSBNQ0RFX0NITkwxU1RBVCAweDAwMDAwNjI0Cj4gKyNkZWZpbmUgTUNERV9DSE5M MlNUQVQgMHgwMDAwMDY0NAo+ICsjZGVmaW5lIE1DREVfQ0hOTDNTVEFUIDB4MDAwMDA2NjQKPiAr I2RlZmluZSBNQ0RFX0NITkxYU1RBVF9DSE5MUkQgQklUKDApCj4gKyNkZWZpbmUgTUNERV9DSE5M WFNUQVRfQ0hOTEEgQklUKDEpCj4gKyNkZWZpbmUgTUNERV9DSE5MWFNUQVRfQ0hOTEJMQkNLR05E X0VOIEJJVCgxNikKPiArI2RlZmluZSBNQ0RFX0NITkxYU1RBVF9QUExYMl9WNDIyIEJJVCgxNykK PiArI2RlZmluZSBNQ0RFX0NITkxYU1RBVF9MUEZYMl9WNDIyIEJJVCgxOCkKPiArCj4gKy8qIFN5 bmMgc2V0dGluZ3MgZm9yIGNoYW5uZWwgMC4uMyAqLwo+ICsjZGVmaW5lIE1DREVfQ0hOTDBTWU5D SE1PRCAweDAwMDAwNjA4Cj4gKyNkZWZpbmUgTUNERV9DSE5MMVNZTkNITU9EIDB4MDAwMDA2MjgK PiArI2RlZmluZSBNQ0RFX0NITkwyU1lOQ0hNT0QgMHgwMDAwMDY0OAo+ICsjZGVmaW5lIE1DREVf Q0hOTDNTWU5DSE1PRCAweDAwMDAwNjY4Cj4gKwo+ICsjZGVmaW5lIE1DREVfQ0hOTFhTWU5DSE1P RF9TUkNfU1lOQ0hfU0hJRlQgMAo+ICsjZGVmaW5lIE1DREVfQ0hOTFhTWU5DSE1PRF9TUkNfU1lO Q0hfTUFTSyAweDAwMDAwMDAzCj4gKyNkZWZpbmUgTUNERV9DSE5MWFNZTkNITU9EX1NSQ19TWU5D SF9IQVJEV0FSRSAwCj4gKyNkZWZpbmUgTUNERV9DSE5MWFNZTkNITU9EX1NSQ19TWU5DSF9OT19T WU5DSCAxCj4gKyNkZWZpbmUgTUNERV9DSE5MWFNZTkNITU9EX1NSQ19TWU5DSF9TT0ZUV0FSRSAy Cj4gKyNkZWZpbmUgTUNERV9DSE5MWFNZTkNITU9EX09VVF9TWU5DSF9TUkNfU0hJRlQgMgo+ICsj ZGVmaW5lIE1DREVfQ0hOTFhTWU5DSE1PRF9PVVRfU1lOQ0hfU1JDX01BU0sgMHgwMDAwMDAxQwo+ ICsjZGVmaW5lIE1DREVfQ0hOTFhTWU5DSE1PRF9PVVRfU1lOQ0hfU1JDX0ZPUk1BVFRFUiAwCj4g KyNkZWZpbmUgTUNERV9DSE5MWFNZTkNITU9EX09VVF9TWU5DSF9TUkNfVEUwIDEKPiArI2RlZmlu ZSBNQ0RFX0NITkxYU1lOQ0hNT0RfT1VUX1NZTkNIX1NSQ19URTEgMgo+ICsKPiArLyogU29mdHdh cmUgc3luYyB0cmlnZ2VycyBmb3IgY2hhbm5lbCAwLi4zICovCj4gKyNkZWZpbmUgTUNERV9DSE5M MFNZTkNIU1cgMHgwMDAwMDYwQwo+ICsjZGVmaW5lIE1DREVfQ0hOTDFTWU5DSFNXIDB4MDAwMDA2 MkMKPiArI2RlZmluZSBNQ0RFX0NITkwyU1lOQ0hTVyAweDAwMDAwNjRDCj4gKyNkZWZpbmUgTUNE RV9DSE5MM1NZTkNIU1cgMHgwMDAwMDY2Qwo+ICsjZGVmaW5lIE1DREVfQ0hOTFhTWU5DSFNXX1NX X1RSSUcgQklUKDApCj4gKwo+ICsjZGVmaW5lIE1DREVfQ0hOTDBCQ0tHTkRDT0wgMHgwMDAwMDYx MAo+ICsjZGVmaW5lIE1DREVfQ0hOTDFCQ0tHTkRDT0wgMHgwMDAwMDYzMAo+ICsjZGVmaW5lIE1D REVfQ0hOTDJCQ0tHTkRDT0wgMHgwMDAwMDY1MAo+ICsjZGVmaW5lIE1DREVfQ0hOTDNCQ0tHTkRD T0wgMHgwMDAwMDY3MAo+ICsjZGVmaW5lIE1DREVfQ0hOTFhCQ0tHTkRDT0xfQl9TSElGVCAwCj4g KyNkZWZpbmUgTUNERV9DSE5MWEJDS0dORENPTF9CX01BU0sgMHgwMDAwMDBGRgo+ICsjZGVmaW5l IE1DREVfQ0hOTFhCQ0tHTkRDT0xfR19TSElGVCA4Cj4gKyNkZWZpbmUgTUNERV9DSE5MWEJDS0dO RENPTF9HX01BU0sgMHgwMDAwRkYwMAo+ICsjZGVmaW5lIE1DREVfQ0hOTFhCQ0tHTkRDT0xfUl9T SElGVCAxNgo+ICsjZGVmaW5lIE1DREVfQ0hOTFhCQ0tHTkRDT0xfUl9NQVNLIDB4MDBGRjAwMDAK PiArCj4gKyNkZWZpbmUgTUNERV9DSE5MME1VWElORyAweDAwMDAwNjE0Cj4gKyNkZWZpbmUgTUNE RV9DSE5MMU1VWElORyAweDAwMDAwNjM0Cj4gKyNkZWZpbmUgTUNERV9DSE5MMk1VWElORyAweDAw MDAwNjU0Cj4gKyNkZWZpbmUgTUNERV9DSE5MM01VWElORyAweDAwMDAwNjc0Cj4gKyNkZWZpbmUg TUNERV9DSE5MWE1VWElOR19GSUZPX0lEX0ZJRk9fQSAwCj4gKyNkZWZpbmUgTUNERV9DSE5MWE1V WElOR19GSUZPX0lEX0ZJRk9fQiAxCj4gKyNkZWZpbmUgTUNERV9DSE5MWE1VWElOR19GSUZPX0lE X0ZJRk9fQzAgMgo+ICsjZGVmaW5lIE1DREVfQ0hOTFhNVVhJTkdfRklGT19JRF9GSUZPX0MxIDMK PiArCj4gKy8qIFBpeGVsIHByb2Nlc3NpbmcgY29udHJvbCByZWdpc3RlcnMgZm9yIGNoYW5uZWwg QSBCLCAgKi8KPiArI2RlZmluZSBNQ0RFX0NSQTAgMHgwMDAwMDgwMAo+ICsjZGVmaW5lIE1DREVf Q1JCMCAweDAwMDAwQTAwCj4gKyNkZWZpbmUgTUNERV9DUlgwX0ZMT0VOIEJJVCgwKQo+ICsjZGVm aW5lIE1DREVfQ1JYMF9QT1dFUkVOIEJJVCgxKQo+ICsjZGVmaW5lIE1DREVfQ1JYMF9CTEVOREVO IEJJVCgyKQo+ICsjZGVmaW5lIE1DREVfQ1JYMF9BRkxJQ0tFTiBCSVQoMykKPiArI2RlZmluZSBN Q0RFX0NSWDBfUEFMRU4gQklUKDQpCj4gKyNkZWZpbmUgTUNERV9DUlgwX0RJVEhFTiBCSVQoNSkK PiArI2RlZmluZSBNQ0RFX0NSWDBfR0FNRU4gQklUKDYpCj4gKyNkZWZpbmUgTUNERV9DUlgwX0tF WUNUUkxfU0hJRlQgNwo+ICsjZGVmaW5lIE1DREVfQ1JYMF9LRVlDVFJMX01BU0sgMHgwMDAwMDM4 MAo+ICsjZGVmaW5lIE1DREVfQ1JYMF9LRVlDVFJMX09GRiAwCj4gKyNkZWZpbmUgTUNERV9DUlgw X0tFWUNUUkxfQUxQSEFfUkdCIDEKPiArI2RlZmluZSBNQ0RFX0NSWDBfS0VZQ1RSTF9SR0IgMgo+ ICsjZGVmaW5lIE1DREVfQ1JYMF9LRVlDVFJMX0ZBTFBIQV9GUkdCIDQKPiArI2RlZmluZSBNQ0RF X0NSWDBfS0VZQ1RSTF9GUkdCIDUKPiArI2RlZmluZSBNQ0RFX0NSWDBfQkxFTkRDVFJMIEJJVCgx MCkKPiArI2RlZmluZSBNQ0RFX0NSWDBfRkxJQ0tNT0RFX1NISUZUIDExCj4gKyNkZWZpbmUgTUNE RV9DUlgwX0ZMSUNLTU9ERV9NQVNLIDB4MDAwMDE4MDAKPiArI2RlZmluZSBNQ0RFX0NSWDBfRkxJ Q0tNT0RFX0ZPUkNFX0ZJTFRFUl8wIDAKPiArI2RlZmluZSBNQ0RFX0NSWDBfRkxJQ0tNT0RFX0FE QVBUSVZFIDEKPiArI2RlZmluZSBNQ0RFX0NSWDBfRkxJQ0tNT0RFX1RFU1RfTU9ERSAyCj4gKyNk ZWZpbmUgTUNERV9DUlgwX0ZMT0NLRk9STUFUX1JHQiBCSVQoMTMpIC8qIDAgPSBZQ1ZDUiAqLwo+ ICsjZGVmaW5lIE1DREVfQ1JYMF9QQUxNT0RFX0dBTU1BIEJJVCgxNCkgLyogMCA9IHBhbGV0dGUg Ki8KPiArI2RlZmluZSBNQ0RFX0NSWDBfT0xFREVOIEJJVCgxNSkKPiArI2RlZmluZSBNQ0RFX0NS WDBfQUxQSEFCTEVORF9TSElGVCAxNgo+ICsjZGVmaW5lIE1DREVfQ1JYMF9BTFBIQUJMRU5EX01B U0sgMHgwMEZGMDAwMAo+ICsjZGVmaW5lIE1DREVfQ1JYMF9ST1RFTiBCSVQoMjQpCj4gKwo+ICsj ZGVmaW5lIE1DREVfQ1JBMSAweDAwMDAwODA0Cj4gKyNkZWZpbmUgTUNERV9DUkIxIDB4MDAwMDBB MDQKPiArI2RlZmluZSBNQ0RFX0NSWDFfUENEX1NISUZUIDAKPiArI2RlZmluZSBNQ0RFX0NSWDFf UENEX01BU0sgMHgwMDAwMDNGRgo+ICsjZGVmaW5lIE1DREVfQ1JYMV9DTEtTRUxfU0hJRlQgMTAK PiArI2RlZmluZSBNQ0RFX0NSWDFfQ0xLU0VMX01BU0sgMHgwMDAwMUMwMAo+ICsjZGVmaW5lIE1D REVfQ1JYMV9DTEtTRUxfQ0xLUExMNzIgMAo+ICsjZGVmaW5lIE1DREVfQ1JYMV9DTEtTRUxfQ0xL UExMMjcgMgo+ICsjZGVmaW5lIE1DREVfQ1JYMV9DTEtTRUxfVFYxQ0xLIDMKPiArI2RlZmluZSBN Q0RFX0NSWDFfQ0xLU0VMX1RWMkNMSyA0Cj4gKyNkZWZpbmUgTUNERV9DUlgxX0NMS1NFTF9NQ0RF Q0xLIDUKPiArI2RlZmluZSBNQ0RFX0NSWDFfQ0RXSU5fU0hJRlQgMTMKPiArI2RlZmluZSBNQ0RF X0NSWDFfQ0RXSU5fTUFTSyAweDAwMDFFMDAwCj4gKyNkZWZpbmUgTUNERV9DUlgxX0NEV0lOXzhC UFBfQzEgMAo+ICsjZGVmaW5lIE1DREVfQ1JYMV9DRFdJTl8xMkJQUF9DMSAxCj4gKyNkZWZpbmUg TUNERV9DUlgxX0NEV0lOXzEyQlBQX0MyIDIKPiArI2RlZmluZSBNQ0RFX0NSWDFfQ0RXSU5fMTZC UFBfQzEgMwo+ICsjZGVmaW5lIE1DREVfQ1JYMV9DRFdJTl8xNkJQUF9DMiA0Cj4gKyNkZWZpbmUg TUNERV9DUlgxX0NEV0lOXzE2QlBQX0MzIDUKPiArI2RlZmluZSBNQ0RFX0NSWDFfQ0RXSU5fMThC UFBfQzEgNgo+ICsjZGVmaW5lIE1DREVfQ1JYMV9DRFdJTl8xOEJQUF9DMiA3Cj4gKyNkZWZpbmUg TUNERV9DUlgxX0NEV0lOXzI0QlBQIDgKPiArI2RlZmluZSBNQ0RFX0NSWDFfT1VUQlBQX1NISUZU IDI1Cj4gKyNkZWZpbmUgTUNERV9DUlgxX09VVEJQUF9NQVNLIDB4MUUwMDAwMDAKPiArI2RlZmlu ZSBNQ0RFX0NSWDFfT1VUQlBQX01PTk8xIDAKPiArI2RlZmluZSBNQ0RFX0NSWDFfT1VUQlBQX01P Tk8yIDEKPiArI2RlZmluZSBNQ0RFX0NSWDFfT1VUQlBQX01PTk80IDIKPiArI2RlZmluZSBNQ0RF X0NSWDFfT1VUQlBQX01PTk84IDMKPiArI2RlZmluZSBNQ0RFX0NSWDFfT1VUQlBQXzhCUFAgNAo+ ICsjZGVmaW5lIE1DREVfQ1JYMV9PVVRCUFBfMTJCUFAgNQo+ICsjZGVmaW5lIE1DREVfQ1JYMV9P VVRCUFBfMTVCUFAgNgo+ICsjZGVmaW5lIE1DREVfQ1JYMV9PVVRCUFBfMTZCUFAgNwo+ICsjZGVm aW5lIE1DREVfQ1JYMV9PVVRCUFBfMThCUFAgOAo+ICsjZGVmaW5lIE1DREVfQ1JYMV9PVVRCUFBf MjRCUFAgOQo+ICsjZGVmaW5lIE1DREVfQ1JYMV9CQ0QgQklUKDI5KQo+ICsjZGVmaW5lIE1DREVf Q1JBMV9DTEtUWVBFX1RWWENMS1NFTDEgQklUKDMwKSAvKiAwID0gVFZYQ0xLU0VMMSAqLwo+ICsK PiArI2RlZmluZSBNQ0RFX0NPTEtFWUEgMHgwMDAwMDgwOAo+ICsjZGVmaW5lIE1DREVfQ09MS0VZ QiAweDAwMDAwQTA4Cj4gKwo+ICsjZGVmaW5lIE1DREVfRkNPTEtFWUEgMHgwMDAwMDgwQwo+ICsj ZGVmaW5lIE1DREVfRkNPTEtFWUIgMHgwMDAwMEEwQwo+ICsKPiArI2RlZmluZSBNQ0RFX1JHQkNP TlYxQSAweDAwMDAwODEwCj4gKyNkZWZpbmUgTUNERV9SR0JDT05WMUIgMHgwMDAwMEExMAo+ICsK PiArI2RlZmluZSBNQ0RFX1JHQkNPTlYyQSAweDAwMDAwODE0Cj4gKyNkZWZpbmUgTUNERV9SR0JD T05WMkIgMHgwMDAwMEExNAo+ICsKPiArI2RlZmluZSBNQ0RFX1JHQkNPTlYzQSAweDAwMDAwODE4 Cj4gKyNkZWZpbmUgTUNERV9SR0JDT05WM0IgMHgwMDAwMEExOAo+ICsKPiArI2RlZmluZSBNQ0RF X1JHQkNPTlY0QSAweDAwMDAwODFDCj4gKyNkZWZpbmUgTUNERV9SR0JDT05WNEIgMHgwMDAwMEEx Qwo+ICsKPiArI2RlZmluZSBNQ0RFX1JHQkNPTlY1QSAweDAwMDAwODIwCj4gKyNkZWZpbmUgTUNE RV9SR0JDT05WNUIgMHgwMDAwMEEyMAo+ICsKPiArI2RlZmluZSBNQ0RFX1JHQkNPTlY2QSAweDAw MDAwODI0Cj4gKyNkZWZpbmUgTUNERV9SR0JDT05WNkIgMHgwMDAwMEEyNAo+ICsKPiArLyogUm90 YXRpb24gKi8KPiArI2RlZmluZSBNQ0RFX1JPVEFDT05GIDB4MDAwMDA4N0MKPiArI2RlZmluZSBN Q0RFX1JPVEJDT05GIDB4MDAwMDBBN0MKPiArCj4gKyNkZWZpbmUgTUNERV9TWU5DSENPTkZBIDB4 MDAwMDA4ODAKPiArI2RlZmluZSBNQ0RFX1NZTkNIQ09ORkIgMHgwMDAwMEE4MAo+ICsKPiArLyog Q2hhbm5lbCBBK0IgY29udHJvbCByZWdpc3RlcnMgKi8KPiArI2RlZmluZSBNQ0RFX0NUUkxBIDB4 MDAwMDA4ODQKPiArI2RlZmluZSBNQ0RFX0NUUkxCIDB4MDAwMDBBODQKPiArI2RlZmluZSBNQ0RF X0NUUkxYX0ZJRk9XVFJNUktfU0hJRlQgMAo+ICsjZGVmaW5lIE1DREVfQ1RSTFhfRklGT1dUUk1S S19NQVNLIDB4MDAwMDAzRkYKPiArI2RlZmluZSBNQ0RFX0NUUkxYX0ZJRk9FTVBUWSBCSVQoMTIp Cj4gKyNkZWZpbmUgTUNERV9DVFJMWF9GSUZPRlVMTCBCSVQoMTMpCj4gKyNkZWZpbmUgTUNERV9D VFJMWF9GT1JNSURfU0hJRlQgMTYKPiArI2RlZmluZSBNQ0RFX0NUUkxYX0ZPUk1JRF9NQVNLIDB4 MDAwNzAwMDAKPiArI2RlZmluZSBNQ0RFX0NUUkxYX0ZPUk1JRF9EU0kwVklEIDAKPiArI2RlZmlu ZSBNQ0RFX0NUUkxYX0ZPUk1JRF9EU0kwQ01EIDEKPiArI2RlZmluZSBNQ0RFX0NUUkxYX0ZPUk1J RF9EU0kxVklEIDIKPiArI2RlZmluZSBNQ0RFX0NUUkxYX0ZPUk1JRF9EU0kxQ01EIDMKPiArI2Rl ZmluZSBNQ0RFX0NUUkxYX0ZPUk1JRF9EU0kyVklEIDQKPiArI2RlZmluZSBNQ0RFX0NUUkxYX0ZP Uk1JRF9EU0kyQ01EIDUKPiArI2RlZmluZSBNQ0RFX0NUUkxYX0ZPUk1JRF9EUElBIDAKPiArI2Rl ZmluZSBNQ0RFX0NUUkxYX0ZPUk1JRF9EUElCIDEKPiArI2RlZmluZSBNQ0RFX0NUUkxYX0ZPUk1U WVBFX1NISUZUIDIwCj4gKyNkZWZpbmUgTUNERV9DVFJMWF9GT1JNVFlQRV9NQVNLIDB4MDA3MDAw MDAKPiArI2RlZmluZSBNQ0RFX0NUUkxYX0ZPUk1UWVBFX0RQSVRWIDAKPiArI2RlZmluZSBNQ0RF X0NUUkxYX0ZPUk1UWVBFX0RCSSAxCj4gKyNkZWZpbmUgTUNERV9DVFJMWF9GT1JNVFlQRV9EU0kg Mgo+ICsKPiArI2RlZmluZSBNQ0RFX0RTSVZJRDBDT05GMCAweDAwMDAwRTAwCj4gKyNkZWZpbmUg TUNERV9EU0lDTUQwQ09ORjAgMHgwMDAwMEUyMAo+ICsjZGVmaW5lIE1DREVfRFNJVklEMUNPTkYw IDB4MDAwMDBFNDAKPiArI2RlZmluZSBNQ0RFX0RTSUNNRDFDT05GMCAweDAwMDAwRTYwCj4gKyNk ZWZpbmUgTUNERV9EU0lWSUQyQ09ORjAgMHgwMDAwMEU4MAo+ICsjZGVmaW5lIE1DREVfRFNJQ01E MkNPTkYwIDB4MDAwMDBFQTAKPiArI2RlZmluZSBNQ0RFX0RTSUNPTkYwX0JMQU5LSU5HX1NISUZU IDAKPiArI2RlZmluZSBNQ0RFX0RTSUNPTkYwX0JMQU5LSU5HX01BU0sgMHgwMDAwMDBGRgo+ICsj ZGVmaW5lIE1DREVfRFNJQ09ORjBfVklEX01PREVfQ01EIDAKPiArI2RlZmluZSBNQ0RFX0RTSUNP TkYwX1ZJRF9NT0RFX1ZJRCBCSVQoMTIpCj4gKyNkZWZpbmUgTUNERV9EU0lDT05GMF9DTUQ4IEJJ VCgxMykKPiArI2RlZmluZSBNQ0RFX0RTSUNPTkYwX0JJVF9TV0FQIEJJVCgxNikKPiArI2RlZmlu ZSBNQ0RFX0RTSUNPTkYwX0JZVEVfU1dBUCBCSVQoMTcpCj4gKyNkZWZpbmUgTUNERV9EU0lDT05G MF9EQ1NWSURfTk9UR0VOIEJJVCgxOCkKPiArI2RlZmluZSBNQ0RFX0RTSUNPTkYwX1BBQ0tJTkdf U0hJRlQgMjAKPiArI2RlZmluZSBNQ0RFX0RTSUNPTkYwX1BBQ0tJTkdfTUFTSyAweDAwNzAwMDAw Cj4gKyNkZWZpbmUgTUNERV9EU0lDT05GMF9QQUNLSU5HX1JHQjU2NSAwCj4gKyNkZWZpbmUgTUNE RV9EU0lDT05GMF9QQUNLSU5HX1JHQjY2NiAxCj4gKyNkZWZpbmUgTUNERV9EU0lDT05GMF9QQUNL SU5HX1JHQjY2Nl9QQUNLRUQgMgo+ICsjZGVmaW5lIE1DREVfRFNJQ09ORjBfUEFDS0lOR19SR0I4 ODggMwo+ICsjZGVmaW5lIE1DREVfRFNJQ09ORjBfUEFDS0lOR19IRFRWIDQKPiArCj4gKyNkZWZp bmUgTUNERV9EU0lWSUQwRlJBTUUgMHgwMDAwMEUwNAo+ICsjZGVmaW5lIE1DREVfRFNJQ01EMEZS QU1FIDB4MDAwMDBFMjQKPiArI2RlZmluZSBNQ0RFX0RTSVZJRDFGUkFNRSAweDAwMDAwRTQ0Cj4g KyNkZWZpbmUgTUNERV9EU0lDTUQxRlJBTUUgMHgwMDAwMEU2NAo+ICsjZGVmaW5lIE1DREVfRFNJ VklEMkZSQU1FIDB4MDAwMDBFODQKPiArI2RlZmluZSBNQ0RFX0RTSUNNRDJGUkFNRSAweDAwMDAw RUE0Cj4gKwo+ICsjZGVmaW5lIE1DREVfRFNJVklEMFBLVCAweDAwMDAwRTA4Cj4gKyNkZWZpbmUg TUNERV9EU0lDTUQwUEtUIDB4MDAwMDBFMjgKPiArI2RlZmluZSBNQ0RFX0RTSVZJRDFQS1QgMHgw MDAwMEU0OAo+ICsjZGVmaW5lIE1DREVfRFNJQ01EMVBLVCAweDAwMDAwRTY4Cj4gKyNkZWZpbmUg TUNERV9EU0lWSUQyUEtUIDB4MDAwMDBFODgKPiArI2RlZmluZSBNQ0RFX0RTSUNNRDJQS1QgMHgw MDAwMEVBOAo+ICsKPiArI2RlZmluZSBNQ0RFX0RTSVZJRDBTWU5DIDB4MDAwMDBFMEMKPiArI2Rl ZmluZSBNQ0RFX0RTSUNNRDBTWU5DIDB4MDAwMDBFMkMKPiArI2RlZmluZSBNQ0RFX0RTSVZJRDFT WU5DIDB4MDAwMDBFNEMKPiArI2RlZmluZSBNQ0RFX0RTSUNNRDFTWU5DIDB4MDAwMDBFNkMKPiAr I2RlZmluZSBNQ0RFX0RTSVZJRDJTWU5DIDB4MDAwMDBFOEMKPiArI2RlZmluZSBNQ0RFX0RTSUNN RDJTWU5DIDB4MDAwMDBFQUMKPiArCj4gKyNkZWZpbmUgTUNERV9EU0lWSUQwQ01EVyAweDAwMDAw RTEwCj4gKyNkZWZpbmUgTUNERV9EU0lDTUQwQ01EVyAweDAwMDAwRTMwCj4gKyNkZWZpbmUgTUNE RV9EU0lWSUQxQ01EVyAweDAwMDAwRTUwCj4gKyNkZWZpbmUgTUNERV9EU0lDTUQxQ01EVyAweDAw MDAwRTcwCj4gKyNkZWZpbmUgTUNERV9EU0lWSUQyQ01EVyAweDAwMDAwRTkwCj4gKyNkZWZpbmUg TUNERV9EU0lDTUQyQ01EVyAweDAwMDAwRUIwCj4gKyNkZWZpbmUgTUNERV9EU0lWSURYQ01EV19D TURXX0NPTlRJTlVFX1NISUZUIDAKPiArI2RlZmluZSBNQ0RFX0RTSVZJRFhDTURXX0NNRFdfQ09O VElOVUVfTUFTSyAweDAwMDBGRkZGCj4gKyNkZWZpbmUgTUNERV9EU0lWSURYQ01EV19DTURXX1NU QVJUX1NISUZUIDE2Cj4gKyNkZWZpbmUgTUNERV9EU0lWSURYQ01EV19DTURXX1NUQVJUX01BU0sg MHhGRkZGMDAwMAo+ICsKPiArI2RlZmluZSBNQ0RFX0RTSVZJRDBERUxBWTAgMHgwMDAwMEUxNAo+ ICsjZGVmaW5lIE1DREVfRFNJQ01EMERFTEFZMCAweDAwMDAwRTM0Cj4gKyNkZWZpbmUgTUNERV9E U0lWSUQxREVMQVkwIDB4MDAwMDBFNTQKPiArI2RlZmluZSBNQ0RFX0RTSUNNRDFERUxBWTAgMHgw MDAwMEU3NAo+ICsjZGVmaW5lIE1DREVfRFNJVklEMkRFTEFZMCAweDAwMDAwRTk0Cj4gKyNkZWZp bmUgTUNERV9EU0lDTUQyREVMQVkwIDB4MDAwMDBFQjQKPiArCj4gKyNkZWZpbmUgTUNERV9EU0lW SUQwREVMQVkxIDB4MDAwMDBFMTgKPiArI2RlZmluZSBNQ0RFX0RTSUNNRDBERUxBWTEgMHgwMDAw MEUzOAo+ICsjZGVmaW5lIE1DREVfRFNJVklEMURFTEFZMSAweDAwMDAwRTU4Cj4gKyNkZWZpbmUg TUNERV9EU0lDTUQxREVMQVkxIDB4MDAwMDBFNzgKPiArI2RlZmluZSBNQ0RFX0RTSVZJRDJERUxB WTEgMHgwMDAwMEU5OAo+ICsjZGVmaW5lIE1DREVfRFNJQ01EMkRFTEFZMSAweDAwMDAwRUI4Cj4g Kwo+ICsjZW5kaWYgLyogX19EUk1fTUNERV9ESVNQTEFZX1JFR1MgKi8KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21jZGUvbWNkZV9kcm0uaCBiL2RyaXZlcnMvZ3B1L2RybS9tY2RlL21j ZGVfZHJtLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZGFi NGRiMDIxMjMxCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tY2RlL21j ZGVfZHJtLmgKPiBAQCAtMCwwICsxLDQ0IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wKyAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTggTGludXMgV2FsbGVp aiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgo+ICsgKiBQYXJ0cyBvZiB0aGlzIGZpbGUgd2Vy ZSBiYXNlZCBvbiB0aGUgTUNERSBkcml2ZXIgYnkgTWFyY3VzIExvcmVudHpvbgo+ICsgKiAoQykg U1QtRXJpY3Nzb24gU0EgMjAxMwo+ICsgKi8KPiArI2luY2x1ZGUgPGRybS9kcm1fc2ltcGxlX2tt c19oZWxwZXIuaD4KPiArCj4gKyNpZm5kZWYgX01DREVfRFJNX0hfCj4gKyNkZWZpbmUgX01DREVf RFJNX0hfCj4gKwo+ICtzdHJ1Y3QgbWNkZSB7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSBkcm07Cj4g KwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gKwlzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbDsKPiArCXN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2U7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yOwo+ICsJc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlIHBpcGU7Cj4gKwlzdHJ1Y3Qg bWlwaV9kc2lfZGV2aWNlICptZHNpOwo+ICsJczE2IHN0cmlkZTsKPiArCWJvb2wgdGVfc3luYzsK PiArCWJvb2wgb25lc2hvdF9tb2RlOwo+ICsJdW5zaWduZWQgaW50IGZsb3dfYWN0aXZlOwo+ICsJ c3BpbmxvY2tfdCBmbG93X2xvY2s7IC8qIExvY2tzIHRoZSBjaGFubmVsIGZsb3cgY29udHJvbCAq Lwo+ICsKPiArCXZvaWQgX19pb21lbSAqcmVnczsKPiArCj4gKwlzdHJ1Y3QgY2xrICptY2RlX2Ns azsKPiArCXN0cnVjdCBjbGsgKmxjZF9jbGs7Cj4gKwlzdHJ1Y3QgY2xrICpoZG1pX2NsazsKPiAr Cj4gKwlzdHJ1Y3QgcmVndWxhdG9yICplcG9kOwo+ICsJc3RydWN0IHJlZ3VsYXRvciAqdmFuYTsK PiArfTsKPiArCj4gK2Jvb2wgbWNkZV9kc2lfaXJxKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKm1k c2kpOwo+ICt2b2lkIG1jZGVfZHNpX3RlX3JlcXVlc3Qoc3RydWN0IG1pcGlfZHNpX2RldmljZSAq bWRzaSk7Cj4gK2V4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1jZGVfZHNpX2RyaXZlcjsK PiArCj4gK3ZvaWQgbWNkZV9kaXNwbGF5X2lycShzdHJ1Y3QgbWNkZSAqbWNkZSk7Cj4gK3ZvaWQg bWNkZV9kaXNwbGF5X2Rpc2FibGVfaXJxcyhzdHJ1Y3QgbWNkZSAqbWNkZSk7Cj4gK2ludCBtY2Rl X2Rpc3BsYXlfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKTsKPiArCj4gKyNlbmRpZiAvKiBf TUNERV9EUk1fSF8gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21jZGUvbWNkZV9k cnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tY2RlL21jZGVfZHJ2LmMKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYmFmNjNmYjY4NTBhCj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tY2RlL21jZGVfZHJ2LmMKPiBAQCAtMCwwICsxLDU3MiBA QAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBDb3B5 cmlnaHQgKEMpIDIwMTggTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgo+ ICsgKiBQYXJ0cyBvZiB0aGlzIGZpbGUgd2VyZSBiYXNlZCBvbiB0aGUgTUNERSBkcml2ZXIgYnkg TWFyY3VzIExvcmVudHpvbgo+ICsgKiAoQykgU1QtRXJpY3Nzb24gU0EgMjAxMwo+ICsgKi8KPiAr Cj4gKy8qKgo+ICsgKiBET0M6IFNULUVyaWNzc29uIE1DREUgRHJpdmVyCj4gKyAqCj4gKyAqIFRo ZSBNQ0RFIChzaG9ydCBmb3IgbXVsdGktY2hhbm5lbCBkaXNwbGF5IGVuZ2luZSkgaXMgYSBncmFw aGljcwo+ICsgKiBjb250cm9sbGVyIGZvdW5kIGluIHRoZSBVeDUwMCBjaGlwc2V0cywgc3VjaCBh cyBOb3ZhVGhvciBVODUwMC4KPiArICogSXQgd2FzIGluaXRpYWxseSBjb25jZXB0dWFsaXplZCBi eSBTVCBNaWNyb2VsZWN0cm9uaWNzIGZvciB0aGUKPiArICogc3VjY2Vzc29yIG9mIHRoZSBOb21h ZGlrIGxpbmUsIFNUbjg1MDAgYnV0IHByb2R1Y3RpZmllZCBpbiB0aGUKPiArICogU1QtRXJpY3Nz b24gVTg1MDAgd2hlcmUgaXMgd2FzIHVzZWQgZm9yIG1hc3MtbWFya2V0IGRlcGxveW1lbnRzCj4g KyAqIGluIEFuZHJvaWQgcGhvbmVzIGZyb20gU2Ftc3VuZyBhbmQgU29ueSBFcmljc3Nvbi4KPiAr ICoKPiArICogSXQgY2FuIGRvIDEwODBwMzAgb24gU0RUViBDQ0lSNjU2LCBEUEktMiwgREJJLTIg b3IgRFNJIGZvcgo+ICsgKiBwYW5lbHMgd2l0aCBvciB3aXRob3V0IGZyYW1lIGJ1ZmZlcmluZyBh bmQgY2FuIGNvbnZlcnQgbW9zdAo+ICsgKiBpbnB1dCBmb3JtYXRzIGluY2x1ZGluZyBtb3N0IHZh cmlhbnRzIG9mIFJHQiBhbmQgWVVWLgo+ICsgKgo+ICsgKiBUaGUgaGFyZHdhcmUgaGFzIGZvdXIg ZGlzcGxheSBwaXBlcywgYW5kIHRoZSBsYXlvdXQgaXMgYSBsaXR0bGUKPiArICogYml0IGxpa2Ug dGhpczoKPiArICoKPiArICogTWVtb3J5ICAgICAtPiBPdmVybGF5IC0+IENoYW5uZWwgLT4gRklG TyAtPiA1IGZvcm1hdHRlcnMgLT4gRFNJL0RQSQo+ICsgKiBFeHRlcm5hbCAgICAgIDAuLjUgICAg ICAgMC4uMyAgICAgICBBLEIsICAgIDMgeCBEU0kgICAgICAgICBicmlkZ2UKPiArICogc291cmNl IDAuLjkgICAgICAgICAgICAgICAgICAgICAgICAgQzAsQzEgICAyIHggRFBJCj4gKyAqCj4gKyAq IEZJRk9zIEEgYW5kIEIgYXJlIGZvciBMQ0QgYW5kIEhETUkgd2hpbGUgRklGTyBDTy9DMSBhcmUg Zm9yCj4gKyAqIHBhbmVscyB3aXRoIGVtYmVkZGVkIGJ1ZmZlci4KPiArICogMyBvZiB0aGUgZm9y bWF0dGVycyBhcmUgZm9yIERTSS4KPiArICogMiBvZiB0aGUgZm9ybWF0dGVycyBhcmUgZm9yIERQ SS4KPiArICoKPiArICogQmVoaW5kIHRoZSBmb3JtYXR0ZXJzIGFyZSB0aGUgRFNJIG9yIERQSSBw b3J0cyB0aGF0IHJvdXRlIHRvCj4gKyAqIHRoZSBleHRlcm5hbCBwaW5zIG9mIHRoZSBjaGlwLiBB cyB0aGVyZSBhcmUgMyBEU0kgcG9ydHMgYW5kIG9uZQo+ICsgKiBEUEkgcG9ydCwgaXQgaXMgcG9z c2libGUgdG8gY29uZmlndXJlIHVwIHRvIDQgZGlzcGxheSBwaXBlbGluZXMKPiArICogKGVmZmVj dGl2ZWx5IHVzaW5nIGNoYW5uZWxzIDAuLjMpIGZvciBjb25jdXJyZW50IHVzZS4KPiArICoKPiAr ICogSW4gdGhlIGN1cnJlbnQgRFJNL0tNUyBzZXR1cCwgd2UgdXNlIG9uZSBleHRlcm5hbCBzb3Vy Y2UsIG9uZSBvdmVybGF5LAo+ICsgKiBvbmUgRklGTyBhbmQgb25lIGZvcm1hdHRlciB3aGljaCB3 ZSBjb25uZWN0IHRvIHRoZSBzaW1wbGUgQ01BIGZyYW1lYnVmZmVyCj4gKyAqIGhlbHBlcnMuIFdl IHRoZW4gcHJvdmlkZSBhIGJyaWRnZSB0byB0aGUgRFNJIHBvcnQsIGFuZCBvbiB0aGUgRFNJIHBv cnQKPiArICogYnJpZGdlIHdlIGNvbm5lY3QgaGFuZyBhIHBhbmVsIGJyaWRnZSBvciBvdGhlciBi cmlkZ2UuIFRoaXMgbWF5IGJlIHN1YmplY3QKPiArICogdG8gY2hhbmdlIGFzIHdlIGV4cGxvaXQg bW9yZSBvZiB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLgo+ICsgKgo+ICsgKiBUT0RPOgo+ICsg KiAtIEVuYWJsZWQgZGFtYWdlZCByZWN0YW5nbGVzIHVzaW5nIGRybV9wbGFuZV9lbmFibGVfZmJf ZGFtYWdlX2NsaXBzKCkKPiArICogICBzbyB3ZSBjYW4gc2VsZWN0aXZlbHkganVzdCB0cmFuc21p dCB0aGUgZGFtYWdlZCBhcmVhIHRvIGEKPiArICogICBjb21tYW5kLW9ubHkgZGlzcGxheS4KPiAr ICogLSBFbmFibGUgbWl4aW5nIG9mIG1vcmUgcGxhbmVzLCBwb3NzaWJseSBhdCB0aGUgY29zdCBv ZiBtb3ZpbmcgYXdheQo+ICsgKiAgIGZyb20gdXNpbmcgdGhlIHNpbXBsZSBmcmFtZWJ1ZmZlciBw aXBlbGluZS4KPiArICogLSBFbmFibGUgb3V0cHV0IHRvIGJyaWRnZXMgc3VjaCBhcyB0aGUgQVY4 MTAwIEhETUkgZW5jb2RlciBmcm9tCj4gKyAqICAgdGhlIERTSSBicmlkZ2UuCj4gKyAqLwo+ICsK PiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVkZSA8bGludXgvY29tcG9uZW50Lmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pcnEuaD4K PiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9y bV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgo+ICsj aW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hl bHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9icmlkZ2UuaD4KPiArI2luY2x1ZGUgPGRybS9k cm1fZHJ2Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KPiArI2luY2x1 ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbS5oPgo+ICsj aW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9n ZW1fZnJhbWVidWZmZXJfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX29mLmg+Cj4gKyNp bmNsdWRlIDxkcm0vZHJtX3Byb2JlX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9wYW5l bC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV92YmxhbmsuaD4KPiArCj4gKyNpbmNsdWRlICJtY2Rl X2RybS5oIgo+ICsKPiArI2RlZmluZSBEUklWRVJfREVTQwkiRFJNIG1vZHVsZSBmb3IgTUNERSIK PiArCj4gKyNkZWZpbmUgTUNERV9DUiAweDAwMDAwMDAwCj4gKyNkZWZpbmUgTUNERV9DUl9JRklG T0VNUFRZTElORUNPVU5UX1Y0MjJfU0hJRlQgMAo+ICsjZGVmaW5lIE1DREVfQ1JfSUZJRk9FTVBU WUxJTkVDT1VOVF9WNDIyX01BU0sgMHgwMDAwMDAzRgo+ICsjZGVmaW5lIE1DREVfQ1JfSUZJRk9D VFJMRU4gQklUKDE1KQo+ICsjZGVmaW5lIE1DREVfQ1JfVUZSRUNPVkVSWV9NT0RFX1Y0MjIgQklU KDE2KQo+ICsjZGVmaW5lIE1DREVfQ1JfV1JBUF9NT0RFX1Y0MjJfU0hJRlQgQklUKDE3KQo+ICsj ZGVmaW5lIE1DREVfQ1JfQVVUT0NMS0dfRU4gQklUKDMwKQo+ICsjZGVmaW5lIE1DREVfQ1JfTUNE RUVOIEJJVCgzMSkKPiArCj4gKyNkZWZpbmUgTUNERV9DT05GMCAweDAwMDAwMDA0Cj4gKyNkZWZp bmUgTUNERV9DT05GMF9TWU5DTVVYMCBCSVQoMCkKPiArI2RlZmluZSBNQ0RFX0NPTkYwX1NZTkNN VVgxIEJJVCgxKQo+ICsjZGVmaW5lIE1DREVfQ09ORjBfU1lOQ01VWDIgQklUKDIpCj4gKyNkZWZp bmUgTUNERV9DT05GMF9TWU5DTVVYMyBCSVQoMykKPiArI2RlZmluZSBNQ0RFX0NPTkYwX1NZTkNN VVg0IEJJVCg0KQo+ICsjZGVmaW5lIE1DREVfQ09ORjBfU1lOQ01VWDUgQklUKDUpCj4gKyNkZWZp bmUgTUNERV9DT05GMF9TWU5DTVVYNiBCSVQoNikKPiArI2RlZmluZSBNQ0RFX0NPTkYwX1NZTkNN VVg3IEJJVCg3KQo+ICsjZGVmaW5lIE1DREVfQ09ORjBfSUZJRk9DVFJMV1RSTVJLTFZMX1NISUZU IDEyCj4gKyNkZWZpbmUgTUNERV9DT05GMF9JRklGT0NUUkxXVFJNUktMVkxfTUFTSyAweDAwMDA3 MDAwCj4gKyNkZWZpbmUgTUNERV9DT05GMF9PVVRNVVgwX1NISUZUIDE2Cj4gKyNkZWZpbmUgTUNE RV9DT05GMF9PVVRNVVgwX01BU0sgMHgwMDA3MDAwMAo+ICsjZGVmaW5lIE1DREVfQ09ORjBfT1VU TVVYMV9TSElGVCAxOQo+ICsjZGVmaW5lIE1DREVfQ09ORjBfT1VUTVVYMV9NQVNLIDB4MDAzODAw MDAKPiArI2RlZmluZSBNQ0RFX0NPTkYwX09VVE1VWDJfU0hJRlQgMjIKPiArI2RlZmluZSBNQ0RF X0NPTkYwX09VVE1VWDJfTUFTSyAweDAxQzAwMDAwCj4gKyNkZWZpbmUgTUNERV9DT05GMF9PVVRN VVgzX1NISUZUIDI1Cj4gKyNkZWZpbmUgTUNERV9DT05GMF9PVVRNVVgzX01BU0sgMHgwRTAwMDAw MAo+ICsjZGVmaW5lIE1DREVfQ09ORjBfT1VUTVVYNF9TSElGVCAyOAo+ICsjZGVmaW5lIE1DREVf Q09ORjBfT1VUTVVYNF9NQVNLIDB4NzAwMDAwMDAKPiArCj4gKyNkZWZpbmUgTUNERV9TU1AgMHgw MDAwMDAwOAo+ICsjZGVmaW5lIE1DREVfQUlTIDB4MDAwMDAxMDAKPiArI2RlZmluZSBNQ0RFX0lN U0NFUlIgMHgwMDAwMDExMAo+ICsjZGVmaW5lIE1DREVfUklTRVJSIDB4MDAwMDAxMjAKPiArI2Rl ZmluZSBNQ0RFX01JU0VSUiAweDAwMDAwMTMwCj4gKyNkZWZpbmUgTUNERV9TSVNFUlIgMHgwMDAw MDE0MAo+ICsKPiArI2RlZmluZSBNQ0RFX1BJRCAweDAwMDAwMUZDCj4gKyNkZWZpbmUgTUNERV9Q SURfTUVUQUxGSVhfVkVSU0lPTl9TSElGVCAwCj4gKyNkZWZpbmUgTUNERV9QSURfTUVUQUxGSVhf VkVSU0lPTl9NQVNLIDB4MDAwMDAwRkYKPiArI2RlZmluZSBNQ0RFX1BJRF9ERVZFTE9QTUVOVF9W RVJTSU9OX1NISUZUIDgKPiArI2RlZmluZSBNQ0RFX1BJRF9ERVZFTE9QTUVOVF9WRVJTSU9OX01B U0sgMHgwMDAwRkYwMAo+ICsjZGVmaW5lIE1DREVfUElEX01JTk9SX1ZFUlNJT05fU0hJRlQgMTYK PiArI2RlZmluZSBNQ0RFX1BJRF9NSU5PUl9WRVJTSU9OX01BU0sgMHgwMEZGMDAwMAo+ICsjZGVm aW5lIE1DREVfUElEX01BSk9SX1ZFUlNJT05fU0hJRlQgMjQKPiArI2RlZmluZSBNQ0RFX1BJRF9N QUpPUl9WRVJTSU9OX01BU0sgMHhGRjAwMDAwMAo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fbW9kZV9jb25maWdfZnVuY3MgbWNkZV9tb2RlX2NvbmZpZ19mdW5jcyA9IHsKPiArCS5mYl9j cmVhdGUgPSBkcm1fZ2VtX2ZiX2NyZWF0ZV93aXRoX2RpcnR5LAo+ICsJLmF0b21pY19jaGVjayA9 IGRybV9hdG9taWNfaGVscGVyX2NoZWNrLAo+ICsJLmF0b21pY19jb21taXQgPSBkcm1fYXRvbWlj X2hlbHBlcl9jb21taXQsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2Rl X2NvbmZpZ19oZWxwZXJfZnVuY3MgbWNkZV9tb2RlX2NvbmZpZ19oZWxwZXJzID0gewo+ICsJLyoK PiArCSAqIFVzaW5nIHRoaXMgZnVuY3Rpb24gaXMgbmVjZXNzYXJ5IHRvIGNvbW1pdCBhdG9taWMg dXBkYXRlcwo+ICsJICogdGhhdCBuZWVkIHRoZSBDUlRDIHRvIGJlIGVuYWJsZWQgYmVmb3JlIGEg Y29tbWl0LCBhcyBpcwo+ICsJICogdGhlIGNhc2Ugd2l0aCBlLmcuIERTSSBkaXNwbGF5cy4KPiAr CSAqLwo+ICsJLmF0b21pY19jb21taXRfdGFpbCA9IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF90 YWlsX3JwbSwKPiArfTsKPiArCj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBtY2RlX2lycShpbnQgaXJx LCB2b2lkICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgbWNkZSAqbWNkZSA9IGRhdGE7Cj4gKwl1MzIg dmFsOwo+ICsKPiArCXZhbCA9IHJlYWRsKG1jZGUtPnJlZ3MgKyBNQ0RFX01JU0VSUik7Cj4gKwo+ ICsJbWNkZV9kaXNwbGF5X2lycShtY2RlKTsKPiArCj4gKwlpZiAodmFsKQo+ICsJCWRldl9pbmZv KG1jZGUtPmRldiwgInNvbWUgZXJyb3IgSVJRXG4iKTsKPiArCXdyaXRlbCh2YWwsIG1jZGUtPnJl Z3MgKyBNQ0RFX1JJU0VSUik7Cj4gKwo+ICsJcmV0dXJuIElSUV9IQU5ETEVEOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IG1jZGVfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pCj4g K3sKPiArCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKm1vZGVfY29uZmlnOwo+ICsJc3RydWN0IG1j ZGUgKm1jZGUgPSBkcm0tPmRldl9wcml2YXRlOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIW1j ZGUtPmJyaWRnZSkgewo+ICsJCWRldl9lcnIoZHJtLT5kZXYsICJubyBkaXNwbGF5IG91dHB1dCBi cmlkZ2UgeWV0XG4iKTsKPiArCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsKPiArCX0KPiArCj4gKwlt b2RlX2NvbmZpZyA9ICZkcm0tPm1vZGVfY29uZmlnOwo+ICsJbW9kZV9jb25maWctPmZ1bmNzID0g Jm1jZGVfbW9kZV9jb25maWdfZnVuY3M7Cj4gKwltb2RlX2NvbmZpZy0+aGVscGVyX3ByaXZhdGUg PSAmbWNkZV9tb2RlX2NvbmZpZ19oZWxwZXJzOwo+ICsJLyogVGhpcyBoYXJkd2FyZSBjYW4gZG8g MTA4MHAgKi8KPiArCW1vZGVfY29uZmlnLT5taW5fd2lkdGggPSAxOwo+ICsJbW9kZV9jb25maWct Pm1heF93aWR0aCA9IDE5MjA7Cj4gKwltb2RlX2NvbmZpZy0+bWluX2hlaWdodCA9IDE7Cj4gKwlt b2RlX2NvbmZpZy0+bWF4X2hlaWdodCA9IDEwODA7Cj4gKwo+ICsJLyoKPiArCSAqIEN1cnJlbnRs eSB3ZSBvbmx5IHN1cHBvcnQgdmJsYW5rIGhhbmRsaW5nIG9uIHRoZSBEU0kgYnJpZGdlLCB1c2lu Zwo+ICsJICogVEUgc3luY2hyb25pemF0aW9uLiBJZiBURSBzeW5jIGlzIG5vdCBzZXQgdXAsIGl0 IGlzIHN0aWxsIHBvc3NpYmxlCj4gKwkgKiB0byBwdXNoIG91dCBhIHNpbmdsZSB1cGRhdGUgb24g ZGVtYW5kLCBidXQgdGhpcyBpcyBoYXJkIGZvciBEUk0gdG8KPiArCSAqIGV4cGxvaXQuCj4gKwkg Ki8KPiArCWlmIChtY2RlLT50ZV9zeW5jKSB7Cj4gKwkJcmV0ID0gZHJtX3ZibGFua19pbml0KGRy bSwgMSk7Cj4gKwkJaWYgKHJldCkgewo+ICsJCQlkZXZfZXJyKGRybS0+ZGV2LCAiZmFpbGVkIHRv IGluaXQgdmJsYW5rXG4iKTsKPiArCQkJZ290byBvdXRfY29uZmlnOwo+ICsJCX0KPiArCX0KPiAr Cj4gKwlyZXQgPSBtY2RlX2Rpc3BsYXlfaW5pdChkcm0pOwo+ICsJaWYgKHJldCkgewo+ICsJCWRl dl9lcnIoZHJtLT5kZXYsICJmYWlsZWQgdG8gaW5pdCBkaXNwbGF5XG4iKTsKPiArCQlnb3RvIG91 dF9jb25maWc7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIEF0dGFjaCB0aGUgRFNJIGJyaWRnZQo+ ICsJICoKPiArCSAqIFRPRE86IHdoZW4gYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBEUEkgYnJpZGdl IG9yIHNldmVyYWwgRFNJIGJyaWRnZXMsCj4gKwkgKiB3ZSBzZWxlY3RpdmVseSBjb25uZWN0IHRo ZSBicmlkZ2UocykgaGVyZSBpbnN0ZWFkIG9mIHRoaXMgc2ltcGxlCj4gKwkgKiBhdHRhY2htZW50 Lgo+ICsJICovCj4gKwlyZXQgPSBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9hdHRhY2hfYnJpZGdl KCZtY2RlLT5waXBlLAo+ICsJCQkJCQkgICAgbWNkZS0+YnJpZGdlKTsKPiArCWlmIChyZXQpIHsK PiArCQlkZXZfZXJyKGRybS0+ZGV2LCAiZmFpbGVkIHRvIGF0dGFjaCBkaXNwbGF5IG91dHB1dCBi cmlkZ2VcbiIpOwo+ICsJCWdvdG8gb3V0X2NvbmZpZzsKPiArCX0KPiArCj4gKwlkcm1fbW9kZV9j b25maWdfcmVzZXQoZHJtKTsKPiArCWRybV9rbXNfaGVscGVyX3BvbGxfaW5pdChkcm0pOwo+ICsJ ZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXAoZHJtLCAzMik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ ICtvdXRfY29uZmlnOgo+ICsJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKPiArCXJldHVy biByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG1jZGVfcmVsZWFzZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtKQo+ICt7Cj4gKwlzdHJ1Y3QgbWNkZSAqbWNkZSA9IGRybS0+ZGV2X3ByaXZhdGU7 Cj4gKwo+ICsJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKPiArCWRybV9kZXZfZmluaShk cm0pOwo+ICsJa2ZyZWUobWNkZSk7Cj4gK30KPiArCj4gK0RFRklORV9EUk1fR0VNX0NNQV9GT1BT KGRybV9mb3BzKTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBtY2RlX2RybV9kcml2 ZXIgPSB7Cj4gKwkuZHJpdmVyX2ZlYXR1cmVzID0KPiArCQlEUklWRVJfTU9ERVNFVCB8IERSSVZF Ul9HRU0gfCBEUklWRVJfUFJJTUUgfCBEUklWRVJfQVRPTUlDLAo+ICsJLnJlbGVhc2UgPSBtY2Rl X3JlbGVhc2UsCj4gKwkubGFzdGNsb3NlID0gZHJtX2ZiX2hlbHBlcl9sYXN0Y2xvc2UsCj4gKwku aW9jdGxzID0gTlVMTCwKPiArCS5mb3BzID0gJmRybV9mb3BzLAo+ICsJLm5hbWUgPSAibWNkZSIs Cj4gKwkuZGVzYyA9IERSSVZFUl9ERVNDLAo+ICsJLmRhdGUgPSAiMjAxODA1MjkiLAo+ICsJLm1h am9yID0gMSwKPiArCS5taW5vciA9IDAsCj4gKwkucGF0Y2hsZXZlbCA9IDAsCj4gKwkuZHVtYl9j cmVhdGUgPSBkcm1fZ2VtX2NtYV9kdW1iX2NyZWF0ZSwKPiArCS5nZW1fZnJlZV9vYmplY3RfdW5s b2NrZWQgPSBkcm1fZ2VtX2NtYV9mcmVlX29iamVjdCwKPiArCS5nZW1fdm1fb3BzID0gJmRybV9n ZW1fY21hX3ZtX29wcywKPiArCj4gKwkucHJpbWVfaGFuZGxlX3RvX2ZkID0gZHJtX2dlbV9wcmlt ZV9oYW5kbGVfdG9fZmQsCj4gKwkucHJpbWVfZmRfdG9faGFuZGxlID0gZHJtX2dlbV9wcmltZV9m ZF90b19oYW5kbGUsCj4gKwkuZ2VtX3ByaW1lX2ltcG9ydCA9IGRybV9nZW1fcHJpbWVfaW1wb3J0 LAo+ICsJLmdlbV9wcmltZV9leHBvcnQgPSBkcm1fZ2VtX3ByaW1lX2V4cG9ydCwKPiArCS5nZW1f cHJpbWVfZ2V0X3NnX3RhYmxlCT0gZHJtX2dlbV9jbWFfcHJpbWVfZ2V0X3NnX3RhYmxlLAo+ICsJ LmdlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUgPSBkcm1fZ2VtX2NtYV9wcmltZV9pbXBvcnRfc2df dGFibGUsCj4gKwkuZ2VtX3ByaW1lX3ZtYXAgPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAo+ICsJ LmdlbV9wcmltZV92dW5tYXAgPSBkcm1fZ2VtX2NtYV9wcmltZV92dW5tYXAsCj4gKwkuZ2VtX3By aW1lX21tYXAgPSBkcm1fZ2VtX2NtYV9wcmltZV9tbWFwLAo+ICt9Owo+ICsKPiArc3RhdGljIGlu dCBtY2RlX2RybV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGRybV9k ZXZpY2UgKmRybSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJaW50IHJldDsKPiArCj4gKwlk cm1fbW9kZV9jb25maWdfaW5pdChkcm0pOwo+ICsKPiArCXJldCA9IGNvbXBvbmVudF9iaW5kX2Fs bChkcm0tPmRldiwgZHJtKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGRldiwgImNhbid0 IGJpbmQgY29tcG9uZW50IGRldmljZXNcbiIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ ICsJcmV0ID0gbWNkZV9tb2Rlc2V0X2luaXQoZHJtKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byB1 bmJpbmQ7Cj4gKwo+ICsJcmV0ID0gZHJtX2Rldl9yZWdpc3Rlcihkcm0sIDApOwo+ICsJaWYgKHJl dCA8IDApCj4gKwkJZ290byB1bmJpbmQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICt1bmJpbmQ6 Cj4gKwljb21wb25lbnRfdW5iaW5kX2FsbChkcm0tPmRldiwgZHJtKTsKPiArCXJldHVybiByZXQ7 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG1jZGVfZHJtX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpk ZXYpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsKPiArCj4gKwlkcm1fZGV2X3VucmVnaXN0ZXIoZHJtKTsKPiArCWRybV9hdG9taWNfaGVscGVy X3NodXRkb3duKGRybSk7Cj4gKwljb21wb25lbnRfdW5iaW5kX2FsbChkcm0tPmRldiwgZHJtKTsK PiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25lbnRfbWFzdGVyX29wcyBtY2Rl X2RybV9jb21wX29wcyA9IHsKPiArCS5iaW5kID0gbWNkZV9kcm1fYmluZCwKPiArCS51bmJpbmQg PSBtY2RlX2RybV91bmJpbmQsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2Ry aXZlciAqY29uc3QgbWNkZV9jb21wb25lbnRfZHJpdmVyc1tdID0gewo+ICsJJm1jZGVfZHNpX2Ry aXZlciwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgbWNkZV9jb21wYXJlX2RldihzdHJ1Y3QgZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEpCj4gK3sKPiArCXJldHVybiBkZXYgPT0gZGF0YTsKPiArfQo+ ICsKPiArc3RhdGljIGludCBtY2RlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4gKwlzdHJ1Y3QgZHJt X2RldmljZSAqZHJtOwo+ICsJc3RydWN0IG1jZGUgKm1jZGU7Cj4gKwlzdHJ1Y3QgY29tcG9uZW50 X21hdGNoICptYXRjaDsKPiArCXN0cnVjdCByZXNvdXJjZSAqcmVzOwo+ICsJdTMyIHBpZDsKPiAr CXUzMiB2YWw7Cj4gKwlpbnQgaXJxOwo+ICsJaW50IHJldDsKPiArCWludCBpOwo+ICsKPiArCW1j ZGUgPSBremFsbG9jKHNpemVvZigqbWNkZSksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFtY2RlKQo+ ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJbWNkZS0+ZGV2ID0gZGV2Owo+ICsKPiArCXJldCA9IGRy bV9kZXZfaW5pdCgmbWNkZS0+ZHJtLCAmbWNkZV9kcm1fZHJpdmVyLCBkZXYpOwo+ICsJaWYgKHJl dCkgewo+ICsJCWtmcmVlKG1jZGUpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwlkcm0gPSAm bWNkZS0+ZHJtOwo+ICsJZHJtLT5kZXZfcHJpdmF0ZSA9IG1jZGU7Cj4gKwlwbGF0Zm9ybV9zZXRf ZHJ2ZGF0YShwZGV2LCBkcm0pOwo+ICsKPiArCS8qIEVuYWJsZSB1c2Ugb2YgdGhlIFRFIHNpZ25h bCBhbmQgaW50ZXJydXB0ICovCj4gKwltY2RlLT50ZV9zeW5jID0gdHJ1ZTsKPiArCS8qIEVuYWJs ZSBjb250aW51b3VzIHVwZGF0ZXM6IHRoaXMgaXMgd2hhdCBMaW51eCcgZnJhbWVidWZmZXIgZXhw ZWN0cyAqLwo+ICsJbWNkZS0+b25lc2hvdF9tb2RlID0gZmFsc2U7Cj4gKwlkcm0tPmRldl9wcml2 YXRlID0gbWNkZTsKPiArCj4gKwkvKiBGaXJzdCBvYnRhaW4gYW5kIHR1cm4gb24gdGhlIG1haW4g cG93ZXIgKi8KPiArCW1jZGUtPmVwb2QgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAiZXBvZCIp Owo+ICsJaWYgKElTX0VSUihtY2RlLT5lcG9kKSkgewo+ICsJCXJldCA9IFBUUl9FUlIobWNkZS0+ ZXBvZCk7Cj4gKwkJZGV2X2VycihkZXYsICJjYW4ndCBnZXQgRVBPRCByZWd1bGF0b3JcbiIpOwo+ ICsJCWdvdG8gZGV2X3VucmVmOwo+ICsJfQo+ICsJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShtY2Rl LT5lcG9kKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGRldiwgImNhbid0IGVuYWJsZSBF UE9EIHJlZ3VsYXRvclxuIik7Cj4gKwkJZ290byBkZXZfdW5yZWY7Cj4gKwl9Cj4gKwltY2RlLT52 YW5hID0gZGV2bV9yZWd1bGF0b3JfZ2V0KGRldiwgInZhbmEiKTsKPiArCWlmIChJU19FUlIobWNk ZS0+dmFuYSkpIHsKPiArCQlyZXQgPSBQVFJfRVJSKG1jZGUtPnZhbmEpOwo+ICsJCWRldl9lcnIo ZGV2LCAiY2FuJ3QgZ2V0IFZBTkEgcmVndWxhdG9yXG4iKTsKPiArCQlnb3RvIHJlZ3VsYXRvcl9l cG9kX29mZjsKPiArCX0KPiArCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUobWNkZS0+dmFuYSk7Cj4g KwlpZiAocmV0KSB7Cj4gKwkJZGV2X2VycihkZXYsICJjYW4ndCBlbmFibGUgVkFOQSByZWd1bGF0 b3JcbiIpOwo+ICsJCWdvdG8gcmVndWxhdG9yX2Vwb2Rfb2ZmOwo+ICsJfQo+ICsJLyoKPiArCSAq IFRoZSB2ZW5kb3IgY29kZSB1c2VzIEVTUkFNIChvbmNoaXAgUkFNKSBhbmQgbmVlZCB0byBhY3Rp dmF0ZQo+ICsJICogdGhlIHYtZXNyYW0zNCByZWd1bGF0b3IsIGJ1dCB3ZSBkb24ndCB1c2UgdGhh dCB5ZXQKPiArCSAqLwo+ICsKPiArCS8qIENsb2NrIHRoZSBzaWxpY29uIHNvIHdlIGNhbiBhY2Nl c3MgdGhlIHJlZ2lzdGVycyAqLwo+ICsJbWNkZS0+bWNkZV9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2 LCAibWNkZSIpOwo+ICsJaWYgKElTX0VSUihtY2RlLT5tY2RlX2NsaykpIHsKPiArCQlkZXZfZXJy KGRldiwgInVuYWJsZSB0byBnZXQgTUNERSBtYWluIGNsb2NrXG4iKTsKPiArCQlyZXQgPSBQVFJf RVJSKG1jZGUtPm1jZGVfY2xrKTsKPiArCQlnb3RvIHJlZ3VsYXRvcl9vZmY7Cj4gKwl9Cj4gKwly ZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUobWNkZS0+bWNkZV9jbGspOwo+ICsJaWYgKHJldCkgewo+ ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBNQ0RFIG1haW4gY2xvY2tcbiIpOwo+ ICsJCWdvdG8gcmVndWxhdG9yX29mZjsKPiArCX0KPiArCWRldl9pbmZvKGRldiwgIk1DREUgY2xr IHJhdGUgJWx1IEh6XG4iLCBjbGtfZ2V0X3JhdGUobWNkZS0+bWNkZV9jbGspKTsKPiArCj4gKwlt Y2RlLT5sY2RfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImxjZCIpOwo+ICsJaWYgKElTX0VSUiht Y2RlLT5sY2RfY2xrKSkgewo+ICsJCWRldl9lcnIoZGV2LCAidW5hYmxlIHRvIGdldCBMQ0QgY2xv Y2tcbiIpOwo+ICsJCXJldCA9IFBUUl9FUlIobWNkZS0+bGNkX2Nsayk7Cj4gKwkJZ290byBjbGtf ZGlzYWJsZTsKPiArCX0KPiArCW1jZGUtPmhkbWlfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImhk bWkiKTsKPiArCWlmIChJU19FUlIobWNkZS0+aGRtaV9jbGspKSB7Cj4gKwkJZGV2X2VycihkZXYs ICJ1bmFibGUgdG8gZ2V0IEhETUkgY2xvY2tcbiIpOwo+ICsJCXJldCA9IFBUUl9FUlIobWNkZS0+ aGRtaV9jbGspOwo+ICsJCWdvdG8gY2xrX2Rpc2FibGU7Cj4gKwl9Cj4gKwo+ICsJcmVzID0gcGxh dGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiArCW1jZGUtPnJl Z3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOwo+ICsJaWYgKElTX0VSUihtY2Rl LT5yZWdzKSkgewo+ICsJCWRldl9lcnIoZGV2LCAibm8gTUNERSByZWdzXG4iKTsKPiArCQlyZXQg PSAtRUlOVkFMOwo+ICsJCWdvdG8gY2xrX2Rpc2FibGU7Cj4gKwl9Cj4gKwo+ICsJaXJxID0gcGxh dGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKPiArCWlmICghaXJxKSB7Cj4gKwkJcmV0ID0gLUVJTlZB TDsKPiArCQlnb3RvIGNsa19kaXNhYmxlOwo+ICsJfQo+ICsKPiArCXJldCA9IGRldm1fcmVxdWVz dF9pcnEoZGV2LCBpcnEsIG1jZGVfaXJxLCAwLCAibWNkZSIsIG1jZGUpOwo+ICsJaWYgKHJldCkg ewo+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIHJlcXVlc3QgaXJxICVkXG4iLCByZXQpOwo+ ICsJCWdvdG8gY2xrX2Rpc2FibGU7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIENoZWNrIGhhcmR3 YXJlIHJldmlzaW9uLCB3ZSBvbmx5IHN1cHBvcnQgVTg1MDB2MiB2ZXJzaW9uCj4gKwkgKiBhcyB0 aGlzIHdhcyB0aGUgb25seSB2ZXJzaW9uIHVzZWQgZm9yIG1hc3MgbWFya2V0IGRlcGxveW1lbnQs Cj4gKwkgKiBidXQgc3VyZWx5IHlvdSBjYW4gYWRkIG1vcmUgdmVyc2lvbnMgaWYgeW91IGhhdmUg dGhlbSBhbmQKPiArCSAqIG5lZWQgdGhlbS4KPiArCSAqLwo+ICsJcGlkID0gcmVhZGwobWNkZS0+ cmVncyArIE1DREVfUElEKTsKPiArCWRldl9pbmZvKGRldiwgImZvdW5kIE1DREUgSFcgcmV2aXNp b24gJWQuJWQgKGRldiAlZCwgbWV0YWwgZml4ICVkKVxuIiwKPiArCQkgKHBpZCAmIE1DREVfUElE X01BSk9SX1ZFUlNJT05fTUFTSykKPiArCQkgPj4gTUNERV9QSURfTUFKT1JfVkVSU0lPTl9TSElG VCwKPiArCQkgKHBpZCAmIE1DREVfUElEX01JTk9SX1ZFUlNJT05fTUFTSykKPiArCQkgPj4gTUNE RV9QSURfTUlOT1JfVkVSU0lPTl9TSElGVCwKPiArCQkgKHBpZCAmIE1DREVfUElEX0RFVkVMT1BN RU5UX1ZFUlNJT05fTUFTSykKPiArCQkgPj4gTUNERV9QSURfREVWRUxPUE1FTlRfVkVSU0lPTl9T SElGVCwKPiArCQkgKHBpZCAmIE1DREVfUElEX01FVEFMRklYX1ZFUlNJT05fTUFTSykKPiArCQkg Pj4gTUNERV9QSURfTUVUQUxGSVhfVkVSU0lPTl9TSElGVCk7Cj4gKwlpZiAocGlkICE9IDB4MDMw MDA4MDApIHsKPiArCQlkZXZfZXJyKGRldiwgInVuc3VwcG9ydGVkIGhhcmR3YXJlIHJldmlzaW9u XG4iKTsKPiArCQlyZXQgPSAtRU5PREVWOwo+ICsJCWdvdG8gY2xrX2Rpc2FibGU7Cj4gKwl9Cj4g Kwo+ICsJLyogU2V0IHVwIHRoZSBtYWluIGNvbnRyb2wsIHdhdGVybWFyayBsZXZlbCBhdCA3ICov Cj4gKwl2YWwgPSA3IDw8IE1DREVfQ09ORjBfSUZJRk9DVFJMV1RSTVJLTFZMX1NISUZUOwo+ICsJ LyogMjQgYml0cyBEUEk6IGNvbm5lY3QgTFNCIENoIEIgdG8gRFswOjddICovCj4gKwl2YWwgfD0g MyA8PCBNQ0RFX0NPTkYwX09VVE1VWDBfU0hJRlQ7Cj4gKwkvKiBUViBvdXQ6IGNvbm5lY3QgTFNC IENoIEIgdG8gRFs4OjE1XSAqLwo+ICsJdmFsIHw9IDMgPDwgTUNERV9DT05GMF9PVVRNVVgxX1NI SUZUOwo+ICsJLyogRG9uJ3QgY2FyZSBhYm91dCB0aGlzIG11eGluZyAqLwo+ICsJdmFsIHw9IDAg PDwgTUNERV9DT05GMF9PVVRNVVgyX1NISUZUOwo+ICsJLyogMjQgYml0cyBEUEk6IGNvbm5lY3Qg TUlEIENoIEIgdG8gRFsyNDozMV0gKi8KPiArCXZhbCB8PSA0IDw8IE1DREVfQ09ORjBfT1VUTVVY M19TSElGVDsKPiArCS8qIDU6IDI0IGJpdHMgRFBJOiBjb25uZWN0IE1TQiBDaCBCIHRvIERbMzI6 MzldICovCj4gKwl2YWwgfD0gNSA8PCBNQ0RFX0NPTkYwX09VVE1VWDRfU0hJRlQ7Cj4gKwkvKiBT eW5jbXV4IGJpdHMgemVybzogRFBJIGNoYW5uZWwgQSBhbmQgQiBvbiBvdXRwdXQgcGlucyBBIGFu ZCBCIHJlc3AgKi8KPiArCXdyaXRlbCh2YWwsIG1jZGUtPnJlZ3MgKyBNQ0RFX0NPTkYwKTsKPiAr Cj4gKwkvKiBFbmFibGUgYXV0b21hdGljIGNsb2NrIGdhdGluZyAqLwo+ICsJdmFsID0gcmVhZGwo bWNkZS0+cmVncyArIE1DREVfQ1IpOwo+ICsJdmFsIHw9IE1DREVfQ1JfTUNERUVOIHwgTUNERV9D Ul9BVVRPQ0xLR19FTjsKPiArCXdyaXRlbCh2YWwsIG1jZGUtPnJlZ3MgKyBNQ0RFX0NSKTsKPiAr Cj4gKwkvKiBDbGVhciBhbnkgcGVuZGluZyBpbnRlcnJ1cHRzICovCj4gKwltY2RlX2Rpc3BsYXlf ZGlzYWJsZV9pcnFzKG1jZGUpOwo+ICsJd3JpdGVsKDAsIG1jZGUtPnJlZ3MgKyBNQ0RFX0lNU0NF UlIpOwo+ICsJd3JpdGVsKDB4RkZGRkZGRkYsIG1jZGUtPnJlZ3MgKyBNQ0RFX1JJU0VSUik7Cj4g Kwo+ICsJLyogU3Bhd24gY2hpbGQgZGV2aWNlcyBmb3IgdGhlIERTSSBwb3J0cyAqLwo+ICsJZGV2 bV9vZl9wbGF0Zm9ybV9wb3B1bGF0ZShkZXYpOwo+ICsKPiArCS8qIENyZWF0ZSBzb21ldGhpbmcg dGhhdCB3aWxsIG1hdGNoIHRoZSBzdWJkcml2ZXJzIHdoZW4gd2UgYmluZCAqLwo+ICsJZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUobWNkZV9jb21wb25lbnRfZHJpdmVycyk7IGkrKykgewo+ICsJ CXN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYgPSAmbWNkZV9jb21wb25lbnRfZHJpdmVyc1tpXS0+ ZHJpdmVyOwo+ICsJCXN0cnVjdCBkZXZpY2UgKnAgPSBOVUxMLCAqZDsKPiArCj4gKwkJd2hpbGUg KChkID0gYnVzX2ZpbmRfZGV2aWNlKCZwbGF0Zm9ybV9idXNfdHlwZSwgcCwgZHJ2LAo+ICsJCQkJ CSAgICAodm9pZCAqKXBsYXRmb3JtX2J1c190eXBlLm1hdGNoKSkpIHsKPiArCQkJcHV0X2Rldmlj ZShwKTsKPiArCQkJY29tcG9uZW50X21hdGNoX2FkZChkZXYsICZtYXRjaCwgbWNkZV9jb21wYXJl X2RldiwgZCk7Cj4gKwkJCXAgPSBkOwo+ICsJCX0KPiArCQlwdXRfZGV2aWNlKHApOwo+ICsJfQo+ ICsJaWYgKElTX0VSUihtYXRjaCkpIHsKPiArCQlkZXZfZXJyKGRldiwgImNvdWxkIG5vdCBjcmVh dGUgY29tcG9uZW50IG1hdGNoXG4iKTsKPiArCQlyZXQgPSBQVFJfRVJSKG1hdGNoKTsKPiArCQln b3RvIGNsa19kaXNhYmxlOwo+ICsJfQo+ICsJcmV0ID0gY29tcG9uZW50X21hc3Rlcl9hZGRfd2l0 aF9tYXRjaCgmcGRldi0+ZGV2LCAmbWNkZV9kcm1fY29tcF9vcHMsCj4gKwkJCQkJICAgICAgbWF0 Y2gpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGFkZCBjb21w b25lbnQgbWFzdGVyXG4iKTsKPiArCQlnb3RvIGNsa19kaXNhYmxlOwo+ICsJfQo+ICsJcmV0dXJu IDA7Cj4gKwo+ICtjbGtfZGlzYWJsZToKPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShtY2RlLT5t Y2RlX2Nsayk7Cj4gK3JlZ3VsYXRvcl9vZmY6Cj4gKwlyZWd1bGF0b3JfZGlzYWJsZShtY2RlLT52 YW5hKTsKPiArcmVndWxhdG9yX2Vwb2Rfb2ZmOgo+ICsJcmVndWxhdG9yX2Rpc2FibGUobWNkZS0+ ZXBvZCk7Cj4gK2Rldl91bnJlZjoKPiArCWRybV9kZXZfcHV0KGRybSk7Cj4gKwlyZXR1cm4gcmV0 Owo+ICsKPiArfQo+ICsKPiArc3RhdGljIGludCBtY2RlX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gcGxhdGZvcm1f Z2V0X2RydmRhdGEocGRldik7Cj4gKwlzdHJ1Y3QgbWNkZSAqbWNkZSA9IGRybS0+ZGV2X3ByaXZh dGU7Cj4gKwo+ICsJY29tcG9uZW50X21hc3Rlcl9kZWwoJnBkZXYtPmRldiwgJm1jZGVfZHJtX2Nv bXBfb3BzKTsKPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShtY2RlLT5tY2RlX2Nsayk7Cj4gKwly ZWd1bGF0b3JfZGlzYWJsZShtY2RlLT52YW5hKTsKPiArCXJlZ3VsYXRvcl9kaXNhYmxlKG1jZGUt PmVwb2QpOwo+ICsJZHJtX2Rldl9wdXQoZHJtKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWNkZV9vZl9tYXRjaFtdID0gewo+ ICsJewo+ICsJCS5jb21wYXRpYmxlID0gInN0ZSxtY2RlIiwKPiArCX0sCj4gKwl7fSwKPiArfTsK PiArCj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1jZGVfZHJpdmVyID0gewo+ICsJ LmRyaXZlciA9IHsKPiArCQkubmFtZSAgICAgICAgICAgPSAibWNkZSIsCj4gKwkJLm9mX21hdGNo X3RhYmxlID0gb2ZfbWF0Y2hfcHRyKG1jZGVfb2ZfbWF0Y2gpLAo+ICsJfSwKPiArCS5wcm9iZSA9 IG1jZGVfcHJvYmUsCj4gKwkucmVtb3ZlID0gbWNkZV9yZW1vdmUsCj4gK307Cj4gKwo+ICtzdGF0 aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciAqY29uc3QgY29tcG9uZW50X2RyaXZlcnNbXSA9IHsK PiArCSZtY2RlX2RzaV9kcml2ZXIsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IF9faW5pdCBtY2Rl X2RybV9yZWdpc3Rlcih2b2lkKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IHBsYXRm b3JtX3JlZ2lzdGVyX2RyaXZlcnMoY29tcG9uZW50X2RyaXZlcnMsCj4gKwkJCQkJQVJSQVlfU0la RShjb21wb25lbnRfZHJpdmVycykpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsK PiArCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJm1jZGVfZHJpdmVyKTsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgX19leGl0IG1jZGVfZHJtX3VucmVnaXN0ZXIodm9pZCkKPiArewo+ ICsJcGxhdGZvcm1fdW5yZWdpc3Rlcl9kcml2ZXJzKGNvbXBvbmVudF9kcml2ZXJzLAo+ICsJCQkJ ICAgIEFSUkFZX1NJWkUoY29tcG9uZW50X2RyaXZlcnMpKTsKPiArCXBsYXRmb3JtX2RyaXZlcl91 bnJlZ2lzdGVyKCZtY2RlX2RyaXZlcik7Cj4gK30KPiArCj4gK21vZHVsZV9pbml0KG1jZGVfZHJt X3JlZ2lzdGVyKTsKPiArbW9kdWxlX2V4aXQobWNkZV9kcm1fdW5yZWdpc3Rlcik7Cj4gKwo+ICtN T0RVTEVfQUxJQVMoInBsYXRmb3JtOm1jZGUtZHJtIik7Cj4gK01PRFVMRV9ERVNDUklQVElPTihE UklWRVJfREVTQyk7Cj4gK01PRFVMRV9BVVRIT1IoIkxpbnVzIFdhbGxlaWogPGxpbnVzLndhbGxl aWpAbGluYXJvLm9yZz4iKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2RzaS5jIGIvZHJpdmVycy9ncHUvZHJtL21jZGUv bWNkZV9kc2kuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi40 NTZiNDM0ODI0NDgKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21jZGUv bWNkZV9kc2kuYwo+IEBAIC0wLDAgKzEsMTA0NCBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMCsKPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvY29tcG9uZW50Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ICsjaW5jbHVkZSA8 bGludXgvaW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KPiArI2luY2x1ZGUg PGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KPiArI2luY2x1ZGUgPGxp bnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPiArI2luY2x1ZGUgPHZpZGVvL21p cGlfZGlzcGxheS5oPgo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ ICsjaW5jbHVkZSA8ZHJtL2RybV9icmlkZ2UuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNl Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Rydi5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9lbmNv ZGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX21pcGlfZHNpLmg+Cj4gKyNpbmNsdWRlIDxkcm0v ZHJtX21vZGVzZXRfaGVscGVyX3Z0YWJsZXMuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fb2YuaD4K PiArI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQu aD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcHJvYmVfaGVscGVyLmg+Cj4gKwo+ICsjaW5jbHVkZSAi bWNkZV9kcm0uaCIKPiArI2luY2x1ZGUgIm1jZGVfZHNpX3JlZ3MuaCIKPiArCj4gKyNkZWZpbmUg RFNJX0RFRkFVTFRfTFBfRlJFUV9IWgkxOTIwMDAwMAo+ICsjZGVmaW5lIERTSV9ERUZBVUxUX0hT X0ZSRVFfSFoJNDIwMTYwMDAwCj4gKwo+ICsvKiBQUkNNVSBEU0kgcmVzZXQgcmVnaXN0ZXJzICov Cj4gKyNkZWZpbmUgUFJDTV9EU0lfU1dfUkVTRVQgMHgzMjQKPiArI2RlZmluZSBQUkNNX0RTSV9T V19SRVNFVF9EU0kwX1NXX1JFU0VUTiBCSVQoMCkKPiArI2RlZmluZSBQUkNNX0RTSV9TV19SRVNF VF9EU0kxX1NXX1JFU0VUTiBCSVQoMSkKPiArI2RlZmluZSBQUkNNX0RTSV9TV19SRVNFVF9EU0ky X1NXX1JFU0VUTiBCSVQoMikKPiArCj4gK3N0cnVjdCBtY2RlX2RzaSB7Cj4gKwlzdHJ1Y3QgZGV2 aWNlICpkZXY7Cj4gKwlzdHJ1Y3QgbWNkZSAqbWNkZTsKPiArCXN0cnVjdCBkcm1fYnJpZGdlIGJy aWRnZTsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsKPiArCXN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsOwo+ICsJc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZV9vdXQ7Cj4gKwlzdHJ1 Y3QgbWlwaV9kc2lfaG9zdCBkc2lfaG9zdDsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKm1k c2k7Cj4gKwlzdHJ1Y3QgY2xrICpoc19jbGs7Cj4gKwlzdHJ1Y3QgY2xrICpscF9jbGs7Cj4gKwl1 bnNpZ25lZCBsb25nIGhzX2ZyZXE7Cj4gKwl1bnNpZ25lZCBsb25nIGxwX2ZyZXE7Cj4gKwlib29s IHVudXNlZDsKPiArCj4gKwl2b2lkIF9faW9tZW0gKnJlZ3M7Cj4gKwlzdHJ1Y3QgcmVnbWFwICpw cmNtdTsKPiArfTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IG1jZGVfZHNpICpicmlkZ2Vf dG9fbWNkZV9kc2koc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiArewo+ICsJcmV0dXJuIGNv bnRhaW5lcl9vZihicmlkZ2UsIHN0cnVjdCBtY2RlX2RzaSwgYnJpZGdlKTsKPiArfQo+ICsKPiAr c3RhdGljIGlubGluZSBzdHJ1Y3QgbWNkZV9kc2kgKmhvc3RfdG9fbWNkZV9kc2koc3RydWN0IG1p cGlfZHNpX2hvc3QgKmgpCj4gK3sKPiArCXJldHVybiBjb250YWluZXJfb2YoaCwgc3RydWN0IG1j ZGVfZHNpLCBkc2lfaG9zdCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IG1jZGVf ZHNpICpjb25uZWN0b3JfdG9fbWNkZV9kc2koc3RydWN0IGRybV9jb25uZWN0b3IgKmMpCj4gK3sK PiArCXJldHVybiBjb250YWluZXJfb2YoYywgc3RydWN0IG1jZGVfZHNpLCBjb25uZWN0b3IpOwo+ ICt9Cj4gKwo+ICtib29sIG1jZGVfZHNpX2lycShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICptZHNp KQo+ICt7Cj4gKwlzdHJ1Y3QgbWNkZV9kc2kgKmQ7Cj4gKwl1MzIgdmFsOwo+ICsJYm9vbCB0ZV9y ZWNlaXZlZCA9IGZhbHNlOwo+ICsKPiArCWQgPSBob3N0X3RvX21jZGVfZHNpKG1kc2ktPmhvc3Qp Owo+ICsKPiArCWRldl9kYmcoZC0+ZGV2LCAiJXMgY2FsbGVkXG4iLCBfX2Z1bmNfXyk7Cj4gKwo+ ICsJdmFsID0gcmVhZGwoZC0+cmVncyArIERTSV9ESVJFQ1RfQ01EX1NUU19GTEFHKTsKPiArCWlm ICh2YWwpCj4gKwkJZGV2X2RiZyhkLT5kZXYsICJEU0lfRElSRUNUX0NNRF9TVFNfRkxBRyA9ICUw OHhcbiIsIHZhbCk7Cj4gKwlpZiAodmFsICYgRFNJX0RJUkVDVF9DTURfU1RTX1dSSVRFX0NPTVBM RVRFRCkKPiArCQlkZXZfZGJnKGQtPmRldiwgImRpcmVjdCBjb21tYW5kIHdyaXRlIGNvbXBsZXRl ZFxuIik7Cj4gKwlpZiAodmFsICYgRFNJX0RJUkVDVF9DTURfU1RTX1RFX1JFQ0VJVkVEKSB7Cj4g KwkJdGVfcmVjZWl2ZWQgPSB0cnVlOwo+ICsJCWRldl9kYmcoZC0+ZGV2LCAiZGlyZWN0IGNvbW1h bmQgVEUgcmVjZWl2ZWRcbiIpOwo+ICsJfQo+ICsJaWYgKHZhbCAmIERTSV9ESVJFQ1RfQ01EX1NU U19BQ0tOT1dMRURHRV9XSVRIX0VSUl9SRUNFSVZFRCkKPiArCQlkZXZfZXJyKGQtPmRldiwgImRp cmVjdCBjb21tYW5kIEFDSyBFUlIgcmVjZWl2ZWRcbiIpOwo+ICsJaWYgKHZhbCAmIERTSV9ESVJF Q1RfQ01EX1NUU19SRUFEX0NPTVBMRVRFRF9XSVRIX0VSUikKPiArCQlkZXZfZXJyKGQtPmRldiwg ImRpcmVjdCBjb21tYW5kIHJlYWQgRVJSIHJlY2VpdmVkXG4iKTsKPiArCS8qIE1hc2sgb2ZmIHRo ZSBBQ0sgdmFsdWUgYW5kIGNsZWFyIHN0YXR1cyAqLwo+ICsJd3JpdGVsKHZhbCwgZC0+cmVncyAr IERTSV9ESVJFQ1RfQ01EX1NUU19DTFIpOwo+ICsKPiArCXZhbCA9IHJlYWRsKGQtPnJlZ3MgKyBE U0lfQ01EX01PREVfU1RTX0ZMQUcpOwo+ICsJaWYgKHZhbCkKPiArCQlkZXZfZGJnKGQtPmRldiwg IkRTSV9DTURfTU9ERV9TVFNfRkxBRyA9ICUwOHhcbiIsIHZhbCk7Cj4gKwlpZiAodmFsICYgRFNJ X0NNRF9NT0RFX1NUU19FUlJfTk9fVEUpCj4gKwkJLyogVGhpcyBoYXBwZW5zIGFsbCB0aGUgdGlt ZSAoc2FmZSB0byBpZ25vcmUpICovCj4gKwkJZGV2X2RiZyhkLT5kZXYsICJDTUQgbW9kZSBubyBU RVxuIik7Cj4gKwlpZiAodmFsICYgRFNJX0NNRF9NT0RFX1NUU19FUlJfVEVfTUlTUykKPiArCQkv KiBUaGlzIGhhcHBlbnMgYWxsIHRoZSB0aW1lIChzYWZlIHRvIGlnbm9yZSkgKi8KPiArCQlkZXZf ZGJnKGQtPmRldiwgIkNNRCBtb2RlIFRFIG1pc3NcbiIpOwo+ICsJaWYgKHZhbCAmIERTSV9DTURf TU9ERV9TVFNfRVJSX1NESTFfVU5ERVJSVU4pCj4gKwkJZGV2X2VycihkLT5kZXYsICJDTUQgbW9k ZSBTRDEgdW5kZXJydW5cbiIpOwo+ICsJaWYgKHZhbCAmIERTSV9DTURfTU9ERV9TVFNfRVJSX1NE STJfVU5ERVJSVU4pCj4gKwkJZGV2X2VycihkLT5kZXYsICJDTUQgbW9kZSBTRDIgdW5kZXJydW5c biIpOwo+ICsJaWYgKHZhbCAmIERTSV9DTURfTU9ERV9TVFNfRVJSX1VOV0FOVEVEX1JEKQo+ICsJ CWRldl9lcnIoZC0+ZGV2LCAiQ01EIG1vZGUgdW53YW50ZWQgUkRcbiIpOwo+ICsJd3JpdGVsKHZh bCwgZC0+cmVncyArIERTSV9DTURfTU9ERV9TVFNfQ0xSKTsKPiArCj4gKwl2YWwgPSByZWFkbChk LT5yZWdzICsgRFNJX0RJUkVDVF9DTURfUkRfU1RTX0ZMQUcpOwo+ICsJaWYgKHZhbCkKPiArCQlk ZXZfZGJnKGQtPmRldiwgIkRTSV9ESVJFQ1RfQ01EX1JEX1NUU19GTEFHID0gJTA4eFxuIiwgdmFs KTsKPiArCXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lfRElSRUNUX0NNRF9SRF9TVFNfQ0xSKTsK PiArCj4gKwl2YWwgPSByZWFkbChkLT5yZWdzICsgRFNJX1RHX1NUU19GTEFHKTsKPiArCWlmICh2 YWwpCj4gKwkJZGV2X2RiZyhkLT5kZXYsICJEU0lfVEdfU1RTX0ZMQUcgPSAlMDh4XG4iLCB2YWwp Owo+ICsJd3JpdGVsKHZhbCwgZC0+cmVncyArIERTSV9UR19TVFNfQ0xSKTsKPiArCj4gKwl2YWwg PSByZWFkbChkLT5yZWdzICsgRFNJX1ZJRF9NT0RFX1NUU19GTEFHKTsKPiArCWlmICh2YWwpCj4g KwkJZGV2X2VycihkLT5kZXYsICJzb21lIHZpZGVvIG1vZGUgZXJyb3Igc3RhdHVzXG4iKTsKPiAr CXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lfVklEX01PREVfU1RTX0NMUik7Cj4gKwo+ICsJcmV0 dXJuIHRlX3JlY2VpdmVkOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG1jZGVfZHNpX2hvc3RfYXR0 YWNoKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAo+ICsJCQkJc3RydWN0IG1pcGlfZHNpX2Rl dmljZSAqbWRzaSkKPiArewo+ICsJc3RydWN0IG1jZGVfZHNpICpkID0gaG9zdF90b19tY2RlX2Rz aShob3N0KTsKPiArCj4gKwlpZiAobWRzaS0+bGFuZXMgPCAxIHx8IG1kc2ktPmxhbmVzID4gMikg ewo+ICsJCURSTV9FUlJPUigiZHNpIGRldmljZSBwYXJhbXMgaW52YWxpZCwgMSBvciAyIGxhbmVz IHN1cHBvcnRlZFxuIik7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJZGV2X2lu Zm8oZC0+ZGV2LCAiYXR0YWNoZWQgRFNJIGRldmljZSB3aXRoICVkIGxhbmVzXG4iLCBtZHNpLT5s YW5lcyk7Cj4gKwkvKiBNSVBJX0RTSV9GTVRfUkdCODggZXRjICovCj4gKwlkZXZfaW5mbyhkLT5k ZXYsICJmb3JtYXQgJTA4eCwgJWRicHBcbiIsIG1kc2ktPmZvcm1hdCwKPiArCQkgbWlwaV9kc2lf cGl4ZWxfZm9ybWF0X3RvX2JwcChtZHNpLT5mb3JtYXQpKTsKPiArCWRldl9pbmZvKGQtPmRldiwg Im1vZGUgZmxhZ3M6ICUwOGx4XG4iLCBtZHNpLT5tb2RlX2ZsYWdzKTsKPiArCj4gKwlkLT5tZHNp ID0gbWRzaTsKPiArCWlmIChkLT5tY2RlKQo+ICsJCWQtPm1jZGUtPm1kc2kgPSBtZHNpOwo+ICsK PiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG1jZGVfZHNpX2hvc3RfZGV0YWNo KHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAo+ICsJCQkJc3RydWN0IG1pcGlfZHNpX2Rldmlj ZSAqbWRzaSkKPiArewo+ICsJc3RydWN0IG1jZGVfZHNpICpkID0gaG9zdF90b19tY2RlX2RzaSho b3N0KTsKPiArCj4gKwlkLT5tZHNpID0gTlVMTDsKPiArCWlmIChkLT5tY2RlKQo+ICsJCWQtPm1j ZGUtPm1kc2kgPSBOVUxMOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICsjZGVmaW5lIE1D REVfRFNJX0hPU1RfSVNfUkVBRCh0eXBlKQkJCSAgICBcCj4gKwkoKHR5cGUgPT0gTUlQSV9EU0lf R0VORVJJQ19SRUFEX1JFUVVFU1RfMF9QQVJBTSkgfHwgXAo+ICsJICh0eXBlID09IE1JUElfRFNJ X0dFTkVSSUNfUkVBRF9SRVFVRVNUXzFfUEFSQU0pIHx8IFwKPiArCSAodHlwZSA9PSBNSVBJX0RT SV9HRU5FUklDX1JFQURfUkVRVUVTVF8yX1BBUkFNKSB8fCBcCj4gKwkgKHR5cGUgPT0gTUlQSV9E U0lfRENTX1JFQUQpKQo+ICsKPiArc3RhdGljIHNzaXplX3QgbWNkZV9kc2lfaG9zdF90cmFuc2Zl cihzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKPiArCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBt aXBpX2RzaV9tc2cgKm1zZykKPiArewo+ICsJc3RydWN0IG1jZGVfZHNpICpkID0gaG9zdF90b19t Y2RlX2RzaShob3N0KTsKPiArCWNvbnN0IHUzMiBsb29wX2RlbGF5X3VzID0gMTA7IC8qIHVzICov Cj4gKwljb25zdCB1OCAqdHggPSBtc2ctPnR4X2J1ZjsKPiArCXUzMiBsb29wX2NvdW50ZXI7Cj4g KwlzaXplX3QgdHhsZW47Cj4gKwl1MzIgdmFsOwo+ICsJaW50IHJldDsKPiArCWludCBpOwo+ICsK PiArCXR4bGVuID0gbXNnLT50eF9sZW47Cj4gKwlpZiAodHhsZW4gPiAxMikgewo+ICsJCWRldl9l cnIoZC0+ZGV2LAo+ICsJCQkiZHVubm8gaG93IHRvIHdyaXRlIG1vcmUgdGhhbiAxMiBieXRlcyB5 ZXRcbiIpOwo+ICsJCXJldHVybiAtRUlPOwo+ICsJfQo+ICsKPiArCWRldl9kYmcoZC0+ZGV2LAo+ ICsJCSJtZXNzYWdlIHRvIGNoYW5uZWwgJWQsICV1IGJ5dGVzIiwKPiArCQltc2ctPmNoYW5uZWws Cj4gKwkJdHhsZW4pOwo+ICsKPiArCS8qIENvbW1hbmQgIm5hdHVyZSIgKi8KPiArCWlmIChNQ0RF X0RTSV9IT1NUX0lTX1JFQUQobXNnLT50eXBlKSkKPiArCQkvKiBNQ1RMX01BSU5fREFUQV9DVEwg YWxyZWFkeSBzZXQgdXAgKi8KPiArCQl2YWwgPSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdT X0NNRF9OQVRfUkVBRDsKPiArCWVsc2UKPiArCQl2YWwgPSBEU0lfRElSRUNUX0NNRF9NQUlOX1NF VFRJTkdTX0NNRF9OQVRfV1JJVEU7Cj4gKwkvKgo+ICsJICogTW9yZSB0aGFuIDIgYnl0ZXMgd2ls bCBub3QgZml0IGluIGEgc2luZ2xlIHBhY2tldCwgc28gaXQncwo+ICsJICogdGltZSB0byBzZXQg dGhlICJsb25nIG5vdCBzaG9ydCIgYml0LiBPbmUgYnl0ZSBpcyB1c2VkIGJ5Cj4gKwkgKiB0aGUg TUlQSSBEQ1MgY29tbWFuZCBsZWF2aW5nIGp1c3Qgb25lIGJ5dGUgZm9yIHRoZSBwYXlsb2FkCj4g KwkgKiBpbiBhIHNob3J0IHBhY2thZ2UuCj4gKwkgKi8KPiArCWlmIChtaXBpX2RzaV9wYWNrZXRf Zm9ybWF0X2lzX2xvbmcobXNnLT50eXBlKSkKPiArCQl2YWwgfD0gRFNJX0RJUkVDVF9DTURfTUFJ Tl9TRVRUSU5HU19DTURfTE9OR05PVFNIT1JUOwo+ICsJdmFsIHw9IDAgPDwgRFNJX0RJUkVDVF9D TURfTUFJTl9TRVRUSU5HU19DTURfSURfU0hJRlQ7Cj4gKwkvKiBBZGQgb25lIHRvIHRoZSBsZW5n dGggZm9yIHRoZSBNSVBJIERDUyBjb21tYW5kICovCj4gKwl2YWwgfD0gdHhsZW4KPiArCQk8PCBE U0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9TSVpFX1NISUZUOwo+ICsJdmFsIHw9IERT SV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX0xQX0VOOwo+ICsJdmFsIHw9IG1zZy0+dHlw ZSA8PCBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9IRUFEX1NISUZUOwo+ICsJd3Jp dGVsKHZhbCwgZC0+cmVncyArIERTSV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1MpOwo+ICsKPiAr CS8qIE1JUEkgRENTIGNvbW1hbmQgaXMgcGFydCBvZiB0aGUgZGF0YSAqLwo+ICsJaWYgKHR4bGVu ID4gMCkgewo+ICsJCXZhbCA9IDA7Cj4gKwkJZm9yIChpID0gMDsgaSA8IDQgJiYgaSA8IHR4bGVu OyBpKyspCj4gKwkJCXZhbCB8PSB0eFtpXSA8PCAoaSAmIDMpICogODsKPiArCX0KPiArCXdyaXRl bCh2YWwsIGQtPnJlZ3MgKyBEU0lfRElSRUNUX0NNRF9XUkRBVDApOwo+ICsJaWYgKHR4bGVuID4g NCkgewo+ICsJCXZhbCA9IDA7Cj4gKwkJZm9yIChpID0gMDsgaSA8IDQgJiYgKGkgKyA0KSA8IHR4 bGVuOyBpKyspCj4gKwkJCXZhbCB8PSB0eFtpICsgNF0gPDwgKGkgJiAzKSAqIDg7Cj4gKwkJd3Jp dGVsKHZhbCwgZC0+cmVncyArIERTSV9ESVJFQ1RfQ01EX1dSREFUMSk7Cj4gKwl9Cj4gKwlpZiAo dHhsZW4gPiA4KSB7Cj4gKwkJdmFsID0gMDsKPiArCQlmb3IgKGkgPSAwOyBpIDwgNCAmJiAoaSAr IDgpIDwgdHhsZW47IGkrKykKPiArCQkJdmFsIHw9IHR4W2kgKyA4XSA8PCAoaSAmIDMpICogODsK PiArCQl3cml0ZWwodmFsLCBkLT5yZWdzICsgRFNJX0RJUkVDVF9DTURfV1JEQVQyKTsKPiArCX0K PiArCWlmICh0eGxlbiA+IDEyKSB7Cj4gKwkJdmFsID0gMDsKPiArCQlmb3IgKGkgPSAwOyBpIDwg NCAmJiAoaSArIDEyKSA8IHR4bGVuOyBpKyspCj4gKwkJCXZhbCB8PSB0eFtpICsgMTJdIDw8IChp ICYgMykgKiA4Owo+ICsJCXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lfRElSRUNUX0NNRF9XUkRB VDMpOwo+ICsJfQo+ICsKPiArCXdyaXRlbCh+MCwgZC0+cmVncyArIERTSV9ESVJFQ1RfQ01EX1NU U19DTFIpOwo+ICsJd3JpdGVsKH4wLCBkLT5yZWdzICsgRFNJX0NNRF9NT0RFX1NUU19DTFIpOwo+ ICsJLyogU2VuZCBjb21tYW5kICovCj4gKwl3cml0ZWwoMSwgZC0+cmVncyArIERTSV9ESVJFQ1Rf Q01EX1NFTkQpOwo+ICsKPiArCWxvb3BfY291bnRlciA9IDEwMDAgKiAxMDAwIC8gbG9vcF9kZWxh eV91czsKPiArCXdoaWxlICghKHJlYWRsKGQtPnJlZ3MgKyBEU0lfRElSRUNUX0NNRF9TVFMpICYK PiArCQkgRFNJX0RJUkVDVF9DTURfU1RTX1dSSVRFX0NPTVBMRVRFRCkKPiArCSAgICAgICAmJiAt LWxvb3BfY291bnRlcikKPiArCQl1c2xlZXBfcmFuZ2UobG9vcF9kZWxheV91cywgKGxvb3BfZGVs YXlfdXMgKiAzKSAvIDIpOwo+ICsKPiArCWlmICghbG9vcF9jb3VudGVyKSB7Cj4gKwkJZGV2X2Vy cihkLT5kZXYsICJEU0kgd3JpdGUgdGltZW91dCFcbiIpOwo+ICsJCXJldHVybiAtRVRJTUU7Cj4g Kwl9Cj4gKwo+ICsJdmFsID0gcmVhZGwoZC0+cmVncyArIERTSV9ESVJFQ1RfQ01EX1NUUyk7Cj4g KwlpZiAodmFsICYgRFNJX0RJUkVDVF9DTURfU1RTX0FDS05PV0xFREdFX1dJVEhfRVJSX1JFQ0VJ VkVEKSB7Cj4gKwkJdmFsID4+PSBEU0lfRElSRUNUX0NNRF9TVFNfQUNLX1ZBTF9TSElGVDsKPiAr CQlkZXZfZXJyKGQtPmRldiwgImVycm9yIGR1cmluZyB0cmFuc21pc3Npb246ICUwNHhcbiIsCj4g KwkJCXZhbCk7Cj4gKwkJcmV0dXJuIC1FSU87Cj4gKwl9Cj4gKwo+ICsJaWYgKCFNQ0RFX0RTSV9I T1NUX0lTX1JFQUQobXNnLT50eXBlKSkgewo+ICsJCS8qIFJldHVybiBudW1iZXIgb2YgYnl0ZXMg d3JpdHRlbiAqLwo+ICsJCWlmIChtaXBpX2RzaV9wYWNrZXRfZm9ybWF0X2lzX2xvbmcobXNnLT50 eXBlKSkKPiArCQkJcmV0ID0gNCArIHR4bGVuOwo+ICsJCWVsc2UKPiArCQkJcmV0ID0gNDsKPiAr CX0gZWxzZSB7Cj4gKwkJLyogT0sgdGhpcyBpcyBhIHJlYWQgY29tbWFuZCwgZ2V0IHRoZSByZXNw b25zZSAqLwo+ICsJCXUzMiByZHN6Owo+ICsJCXUzMiByZGRhdDsKPiArCQl1OCAqcnggPSBtc2ct PnJ4X2J1ZjsKPiArCj4gKwkJcmRzeiA9IHJlYWRsKGQtPnJlZ3MgKyBEU0lfRElSRUNUX0NNRF9S RF9QUk9QRVJUWSk7Cj4gKwkJcmRzeiAmPSBEU0lfRElSRUNUX0NNRF9SRF9QUk9QRVJUWV9SRF9T SVpFX01BU0s7Cj4gKwkJcmRkYXQgPSByZWFkbChkLT5yZWdzICsgRFNJX0RJUkVDVF9DTURfUkRE QVQpOwo+ICsJCWZvciAoaSA9IDA7IGkgPCA0ICYmIGkgPCByZHN6OyBpKyspCj4gKwkJCXJ4W2ld ID0gKHJkZGF0ID4+IChpICogOCkpICYgMHhmZjsKPiArCQlyZXQgPSByZHN6Owo+ICsJfQo+ICsK PiArCXdyaXRlbCh+MCwgZC0+cmVncyArIERTSV9ESVJFQ1RfQ01EX1NUU19DTFIpOwo+ICsJd3Jp dGVsKH4wLCBkLT5yZWdzICsgRFNJX0NNRF9NT0RFX1NUU19DTFIpOwo+ICsKPiArCXJldHVybiBy ZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwaV9kc2lfaG9zdF9vcHMgbWNk ZV9kc2lfaG9zdF9vcHMgPSB7Cj4gKwkuYXR0YWNoID0gbWNkZV9kc2lfaG9zdF9hdHRhY2gsCj4g KwkuZGV0YWNoID0gbWNkZV9kc2lfaG9zdF9kZXRhY2gsCj4gKwkudHJhbnNmZXIgPSBtY2RlX2Rz aV9ob3N0X3RyYW5zZmVyLAo+ICt9Owo+ICsKPiArLyogVGhpcyBzZW5kcyBhIGRpcmVjdCAoc2hv cnQpIGNvbW1hbmQgdG8gcmVxdWVzdCBURSAqLwo+ICt2b2lkIG1jZGVfZHNpX3RlX3JlcXVlc3Qo c3RydWN0IG1pcGlfZHNpX2RldmljZSAqbWRzaSkKPiArewo+ICsJc3RydWN0IG1jZGVfZHNpICpk Owo+ICsJdTMyIHZhbDsKPiArCj4gKwlkID0gaG9zdF90b19tY2RlX2RzaShtZHNpLT5ob3N0KTsK PiArCj4gKwkvKiBDb21tYW5kICJuYXR1cmUiIFRFIHJlcXVlc3QgKi8KPiArCXZhbCA9IERTSV9E SVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX05BVF9URV9SRVE7Cj4gKwl2YWwgfD0gMCA8PCBE U0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9JRF9TSElGVDsKPiArCXZhbCB8PSAyIDw8 IERTSV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX1NJWkVfU0hJRlQ7Cj4gKwl2YWwgfD0g RFNJX0RJUkVDVF9DTURfTUFJTl9TRVRUSU5HU19DTURfTFBfRU47Cj4gKwl2YWwgfD0gRFNJX0RJ UkVDVF9DTURfTUFJTl9TRVRUSU5HU19DTURfSEVBRF9EQ1NfU0hPUlRfV1JJVEVfMSA8PAo+ICsJ CURTSV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX0hFQURfU0hJRlQ7Cj4gKwl3cml0ZWwo dmFsLCBkLT5yZWdzICsgRFNJX0RJUkVDVF9DTURfTUFJTl9TRVRUSU5HUyk7Cj4gKwo+ICsJLyog Q2xlYXIgVEUgcmV2ZWl2ZWQgYW5kIGVycm9yIHN0YXR1cyBiaXRzIGFuZCBlbmFibGVzIHRoZW0g Ki8KPiArCXdyaXRlbChEU0lfRElSRUNUX0NNRF9TVFNfQ0xSX1RFX1JFQ0VJVkVEX0NMUiB8Cj4g KwkgICAgICAgRFNJX0RJUkVDVF9DTURfU1RTX0NMUl9BQ0tOT1dMRURHRV9XSVRIX0VSUl9SRUNF SVZFRF9DTFIsCj4gKwkgICAgICAgZC0+cmVncyArIERTSV9ESVJFQ1RfQ01EX1NUU19DTFIpOwo+ ICsJdmFsID0gcmVhZGwoZC0+cmVncyArIERTSV9ESVJFQ1RfQ01EX1NUU19DVEwpOwo+ICsJdmFs IHw9IERTSV9ESVJFQ1RfQ01EX1NUU19DVExfVEVfUkVDRUlWRURfRU47Cj4gKwl2YWwgfD0gRFNJ X0RJUkVDVF9DTURfU1RTX0NUTF9BQ0tOT1dMRURHRV9XSVRIX0VSUl9FTjsKPiArCXdyaXRlbCh2 YWwsIGQtPnJlZ3MgKyBEU0lfRElSRUNUX0NNRF9TVFNfQ1RMKTsKPiArCj4gKwkvKiBDbGVhciBh bmQgZW5hYmxlIG5vIFRFIG9yIFRFIG1pc3Npbmcgc3RhdHVzICovCj4gKwl3cml0ZWwoRFNJX0NN RF9NT0RFX1NUU19DTFJfRVJSX05PX1RFX0NMUiB8Cj4gKwkgICAgICAgRFNJX0NNRF9NT0RFX1NU U19DTFJfRVJSX1RFX01JU1NfQ0xSLAo+ICsJICAgICAgIGQtPnJlZ3MgKyBEU0lfQ01EX01PREVf U1RTX0NMUik7Cj4gKwl2YWwgPSByZWFkbChkLT5yZWdzICsgRFNJX0NNRF9NT0RFX1NUU19DVEwp Owo+ICsJdmFsIHw9IERTSV9DTURfTU9ERV9TVFNfQ1RMX0VSUl9OT19URV9FTjsKPiArCXZhbCB8 PSBEU0lfQ01EX01PREVfU1RTX0NUTF9FUlJfVEVfTUlTU19FTjsKPiArCXdyaXRlbCh2YWwsIGQt PnJlZ3MgKyBEU0lfQ01EX01PREVfU1RTX0NUTCk7Cj4gKwo+ICsJLyogU2VuZCB0aGlzIFRFIHJl cXVlc3QgY29tbWFuZCAqLwo+ICsJd3JpdGVsKDEsIGQtPnJlZ3MgKyBEU0lfRElSRUNUX0NNRF9T RU5EKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbWNkZV9kc2lfc2V0dXBfdmlkZW9fbW9kZShz dHJ1Y3QgbWNkZV9kc2kgKmQsCj4gKwkJCQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSkKPiArewo+ICsJdTggYnBwID0gbWlwaV9kc2lfcGl4ZWxfZm9ybWF0X3RvX2Jw cChkLT5tZHNpLT5mb3JtYXQpOwo+ICsJdTY0IGJwbDsKPiArCXUzMiBoZnA7Cj4gKwl1MzIgaGJw Owo+ICsJdTMyIGhzYTsKPiArCXUzMiBibGtsaW5lX3BjaywgbGluZV9kdXJhdGlvbjsKPiArCXUz MiBibGtlb2xfcGNrLCBibGtlb2xfZHVyYXRpb247Cj4gKwl1MzIgdmFsOwo+ICsKPiArCXZhbCA9 IDA7Cj4gKwlpZiAoZC0+bWRzaS0+bW9kZV9mbGFncyAmIE1JUElfRFNJX01PREVfVklERU9fQlVS U1QpCj4gKwkJdmFsIHw9IERTSV9WSURfTUFJTl9DVExfQlVSU1RfTU9ERTsKPiArCWlmIChkLT5t ZHNpLT5tb2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9WSURFT19TWU5DX1BVTFNFKSB7Cj4gKwkJ dmFsIHw9IERTSV9WSURfTUFJTl9DVExfU1lOQ19QVUxTRV9BQ1RJVkU7Cj4gKwkJdmFsIHw9IERT SV9WSURfTUFJTl9DVExfU1lOQ19QVUxTRV9IT1JJWk9OVEFMOwo+ICsJfQo+ICsJLyogUkdCIGhl YWRlciBhbmQgcGl4ZWwgbW9kZSAqLwo+ICsJc3dpdGNoIChkLT5tZHNpLT5mb3JtYXQpIHsKPiAr CWNhc2UgTUlQSV9EU0lfRk1UX1JHQjU2NToKPiArCQl2YWwgfD0gTUlQSV9EU0lfUEFDS0VEX1BJ WEVMX1NUUkVBTV8xNiA8PAo+ICsJCQlEU0lfVklEX01BSU5fQ1RMX0hFQURFUl9TSElGVDsKPiAr CQl2YWwgfD0gRFNJX1ZJRF9NQUlOX0NUTF9WSURfUElYRUxfTU9ERV8xNkJJVFM7Cj4gKwkJYnJl YWs7Cj4gKwljYXNlIE1JUElfRFNJX0ZNVF9SR0I2NjZfUEFDS0VEOgo+ICsJCXZhbCB8PSBNSVBJ X0RTSV9QQUNLRURfUElYRUxfU1RSRUFNXzE4IDw8Cj4gKwkJCURTSV9WSURfTUFJTl9DVExfSEVB REVSX1NISUZUOwo+ICsJCXZhbCB8PSBEU0lfVklEX01BSU5fQ1RMX1ZJRF9QSVhFTF9NT0RFXzE4 QklUUzsKPiArCQlicmVhazsKPiArCWNhc2UgTUlQSV9EU0lfRk1UX1JHQjY2NjoKPiArCQl2YWwg fD0gTUlQSV9EU0lfUElYRUxfU1RSRUFNXzNCWVRFXzE4Cj4gKwkJCTw8IERTSV9WSURfTUFJTl9D VExfSEVBREVSX1NISUZUOwo+ICsJCXZhbCB8PSBEU0lfVklEX01BSU5fQ1RMX1ZJRF9QSVhFTF9N T0RFXzE4QklUU19MT09TRTsKPiArCQlicmVhazsKPiArCWNhc2UgTUlQSV9EU0lfRk1UX1JHQjg4 ODoKPiArCQl2YWwgfD0gTUlQSV9EU0lfUEFDS0VEX1BJWEVMX1NUUkVBTV8yNCA8PAo+ICsJCQlE U0lfVklEX01BSU5fQ1RMX0hFQURFUl9TSElGVDsKPiArCQl2YWwgfD0gRFNJX1ZJRF9NQUlOX0NU TF9WSURfUElYRUxfTU9ERV8yNEJJVFM7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCWRl dl9lcnIoZC0+ZGV2LCAidW5rbm93biBwaXhlbCBtb2RlXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9 Cj4gKwo+ICsJLyogVE9ETzogVFZHIGNvdWxkIGJlIGVuYWJsZWQgaGVyZSAqLwo+ICsKPiArCS8q IFNlbmQgYmxhbmtpbmcgcGFja2V0ICovCj4gKwl2YWwgfD0gRFNJX1ZJRF9NQUlOX0NUTF9SRUdf QkxLTElORV9NT0RFX0xQXzA7Cj4gKwkvKiBTZW5kIEVPTCBwYWNrZXQgKi8KPiArCXZhbCB8PSBE U0lfVklEX01BSU5fQ1RMX1JFR19CTEtFT0xfTU9ERV9MUF8wOwo+ICsJLyogUmVjb3ZlcnkgbW9k ZSAxICovCj4gKwl2YWwgfD0gMSA8PCBEU0lfVklEX01BSU5fQ1RMX1JFQ09WRVJZX01PREVfU0hJ RlQ7Cj4gKwkvKiBBbGwgb3RoZXIgZmllbGRzIHplcm8gKi8KPiArCXdyaXRlbCh2YWwsIGQtPnJl Z3MgKyBEU0lfVklEX01BSU5fQ1RMKTsKPiArCj4gKwkvKiBWZXJ0aWNhbCBmcmFtZSBwYXJhbWV0 ZXJzIGFyZSBwcmV0dHkgc3RyYWlnaHQtZm9yd2FyZCAqLwo+ICsJdmFsID0gbW9kZS0+dmRpc3Bs YXkgPDwgRFNJX1ZJRF9WU0laRV9WU0FfTEVOR1RIX1NISUZUOwo+ICsJLyogdmVydGljYWwgZnJv bnQgcG9yY2ggKi8KPiArCXZhbCB8PSAobW9kZS0+dnN5bmNfc3RhcnQgLSBtb2RlLT52ZGlzcGxh eSkKPiArCQk8PCBEU0lfVklEX1ZTSVpFX1ZGUF9MRU5HVEhfU0hJRlQ7Cj4gKwkvKiB2ZXJ0aWNh bCBzeW5jIGFjdGl2ZSAqLwo+ICsJdmFsIHw9IChtb2RlLT52c3luY19lbmQgLSBtb2RlLT52c3lu Y19zdGFydCkKPiArCQk8PCBEU0lfVklEX1ZTSVpFX1ZBQ1RfTEVOR1RIX1NISUZUOwo+ICsJLyog dmVydGljYWwgYmFjayBwb3JjaCAqLwo+ICsJdmFsIHw9IChtb2RlLT52dG90YWwgLSBtb2RlLT52 c3luY19lbmQpCj4gKwkJPDwgRFNJX1ZJRF9WU0laRV9WQlBfTEVOR1RIX1NISUZUOwo+ICsJd3Jp dGVsKHZhbCwgZC0+cmVncyArIERTSV9WSURfVlNJWkUpOwo+ICsKPiArCS8qCj4gKwkgKiBIb3Jp em9udGFsIGZyYW1lIHBhcmFtZXRlcnM6Cj4gKwkgKiBob3Jpem9udGFsIHJlc29sdXRpb24gaXMg Z2l2ZW4gaW4gcGl4ZWxzIGFuZCBtdXN0IGJlIHJlLWNhbGN1bGF0ZWQKPiArCSAqIGludG8gYnl0 ZXMgc2luY2UgdGhpcyBpcyB3aGF0IHRoZSBoYXJkd2FyZSBleHBlY3RzLgo+ICsJICoKPiArCSAq IDYgKyAyIGlzIEhGUCBoZWFkZXIgKyBjaGVja3N1bQo+ICsJICovCj4gKwloZnAgPSAobW9kZS0+ aHN5bmNfc3RhcnQgLSBtb2RlLT5oZGlzcGxheSkgKiBicHAgLSA2IC0gMjsKPiArCWlmIChkLT5t ZHNpLT5tb2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9WSURFT19TWU5DX1BVTFNFKSB7Cj4gKwkJ LyoKPiArCQkgKiA2IGlzIEhCUCBoZWFkZXIgKyBjaGVja3N1bQo+ICsJCSAqIDQgaXMgUkdCIGhl YWRlciArIGNoZWNrc3VtCj4gKwkJICovCj4gKwkJaGJwID0gKG1vZGUtPmh0b3RhbCAtIG1vZGUt PmhzeW5jX2VuZCkgKiBicHAgLSA0IC0gNjsKPiArCQkvKgo+ICsJCSAqIDYgaXMgSEJQIGhlYWRl ciArIGNoZWNrc3VtCj4gKwkJICogNCBpcyBIU1cgcGFja2V0IGJ5dGVzCj4gKwkJICogNCBpcyBS R0IgaGVhZGVyICsgY2hlY2tzdW0KPiArCQkgKi8KPiArCQloc2EgPSAobW9kZS0+aHN5bmNfZW5k IC0gbW9kZS0+aHN5bmNfc3RhcnQpICogYnBwIC0gNCAtIDQgLSA2Owo+ICsJfSBlbHNlIHsKPiAr CQkvKgo+ICsJCSAqIEhCUCBpbmNsdWRlcyBib3RoIGJhY2sgcG9yY2ggYW5kIHN5bmMKPiArCQkg KiA2IGlzIEhCUCBoZWFkZXIgKyBjaGVja3N1bQo+ICsJCSAqIDQgaXMgSFNXIHBhY2tldCBieXRl cwo+ICsJCSAqIDQgaXMgUkdCIGhlYWRlciArIGNoZWNrc3VtCj4gKwkJICovCj4gKwkJaGJwID0g KG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhzeW5jX3N0YXJ0KSAqIGJwcCAtIDQgLSA0IC0gNjsKPiAr CQkvKiBIU0EgaXMgbm90IGNvbnNpZGVyZWQgaW4gdGhpcyBtb2RlIGFuZCBzZXQgdG8gMCAqLwo+ ICsJCWhzYSA9IDA7Cj4gKwl9Cj4gKwlkZXZfZGJnKGQtPmRldiwgImhmcDogJXUsIGhicDogJXUs IGhzYTogJXVcbiIsCj4gKwkJaGZwLCBoYnAsIGhzYSk7Cj4gKwo+ICsJLyogRnJhbWUgcGFyYW1l dGVyczogaG9yaXpvbnRhbCBzeW5jIGFjdGl2ZSAqLwo+ICsJdmFsID0gaHNhIDw8IERTSV9WSURf SFNJWkUxX0hTQV9MRU5HVEhfU0hJRlQ7Cj4gKwkvKiBob3Jpem9udGFsIGJhY2sgcG9yY2ggKi8K PiArCXZhbCB8PSBoYnAgPDwgRFNJX1ZJRF9IU0laRTFfSEJQX0xFTkdUSF9TSElGVDsKPiArCS8q IGhvcml6b250YWwgZnJvbnQgcG9yY2ggKi8KPiArCXZhbCB8PSBoZnAgPDwgRFNJX1ZJRF9IU0la RTFfSEZQX0xFTkdUSF9TSElGVDsKPiArCXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lfVklEX0hT SVpFMSk7Cj4gKwo+ICsJLyogUkdCIGRhdGEgbGVuZ3RoIChieXRlcyBvbiBvbmUgc2NhbmxpbmUp ICovCj4gKwl2YWwgPSBtb2RlLT5oZGlzcGxheSAqIChicHAgLyA4KTsKPiArCXdyaXRlbCh2YWws IGQtPnJlZ3MgKyBEU0lfVklEX0hTSVpFMik7Cj4gKwo+ICsJLyogVE9ETzogZnVydGhlciBhZGp1 c3RtZW50cyBmb3IgVFZHIG1vZGUgaGVyZSAqLwo+ICsKPiArCS8qCj4gKwkgKiBFT0wgcGFja2V0 IGxlbmd0aCBmcm9tIGJpdHMgcGVyIGxpbmUgY2FsY3VsYXRpb25zOiBwaXhlbCBjbG9jawo+ICsJ ICogaXMgZ2l2ZW4gaW4ga0h6LCBjYWxjdWxhdGUgdGhlIHRpbWUgYmV0d2VlbiB0d28gcGl4ZWxz IGluCj4gKwkgKiBwaWNvc2Vjb25kcy4KPiArCSAqLwo+ICsJYnBsID0gbW9kZS0+Y2xvY2sgKiBt b2RlLT5odG90YWw7Cj4gKwlicGwgKj0gKGQtPmhzX2ZyZXEgLyA4KTsKPiArCWRvX2RpdihicGws IDEwMDAwMDApOyAvKiBtaWNyb3NlY29uZHMgKi8KPiArCWRvX2RpdihicGwsIDEwMDAwMDApOyAv KiBzZWNvbmRzICovCj4gKwlicGwgKj0gZC0+bWRzaS0+bGFuZXM7Cj4gKwlkZXZfZGJnKGQtPmRl diwgImNhbGN1bGF0ZWQgYnl0ZXMgcGVyIGxpbmU6ICVsbHVcbiIsIGJwbCk7Cj4gKwkvKgo+ICsJ ICogNiBpcyBoZWFkZXIgKyBjaGVja3N1bSwgaGVhZGVyID0gNCBieXRlcywgY2hlY2tzdW0gPSAy IGJ5dGVzCj4gKwkgKiA0IGlzIHNob3J0IHBhY2tldCBmb3IgdnN5bmMvaHN5bmMKPiArCSAqLwo+ ICsJaWYgKGQtPm1kc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJREVPX1NZTkNfUFVM U0UpIHsKPiArCQkvKiBGaXhtZTogaXNuJ3QgdGhlIGhzeW5jIHdpZHRoIGluIHBpeGVscz8gKi8K PiArCQlibGtsaW5lX3BjayA9IGJwbCAtIChtb2RlLT5oc3luY19lbmQgLSBtb2RlLT5oc3luY19z dGFydCkgLSA2Owo+ICsJCXZhbCA9IGJsa2xpbmVfcGNrIDw8IERTSV9WSURfQkxLU0laRTJfQkxL TElORV9QVUxTRV9QQ0tfU0hJRlQ7Cj4gKwkJd3JpdGVsKHZhbCwgZC0+cmVncyArIERTSV9WSURf QkxLU0laRTIpOwo+ICsJfSBlbHNlIHsKPiArCQlibGtsaW5lX3BjayA9IGJwbCAtIDQgLSA2Owo+ ICsJCXZhbCA9IGJsa2xpbmVfcGNrIDw8IERTSV9WSURfQkxLU0laRTFfQkxLTElORV9FVkVOVF9Q Q0tfU0hJRlQ7Cj4gKwkJd3JpdGVsKHZhbCwgZC0+cmVncyArIERTSV9WSURfQkxLU0laRTEpOwo+ ICsJfQo+ICsKPiArCWxpbmVfZHVyYXRpb24gPSAoYmxrbGluZV9wY2sgKyA2KSAvIGQtPm1kc2kt PmxhbmVzOwo+ICsJZGV2X2RiZyhkLT5kZXYsICJsaW5lIGR1cmF0aW9uICV1XG4iLCBsaW5lX2R1 cmF0aW9uKTsKPiArCXZhbCA9IGxpbmVfZHVyYXRpb24gPDwgRFNJX1ZJRF9EUEhZX1RJTUVfUkVH X0xJTkVfRFVSQVRJT05fU0hJRlQ7Cj4gKwkvKgo+ICsJICogVGhpcyBpcyB0aGUgdGltZSB0byBw ZXJmb3JtIExQLT5IUyBvbiBELVBIWQo+ICsJICogRklYTUU6IG5vd2hlcmUgdG8gZ2V0IHRoaXMg ZnJvbTogRFQgcHJvcGVydHkgb24gdGhlIERTST8KPiArCSAqLwo+ICsJdmFsIHw9IDAgPDwgRFNJ X1ZJRF9EUEhZX1RJTUVfUkVHX1dBS0VVUF9USU1FX1NISUZUOwo+ICsJd3JpdGVsKHZhbCwgZC0+ cmVncyArIERTSV9WSURfRFBIWV9USU1FKTsKPiArCj4gKwkvKiBDYWxjdWxhdGUgYmxvY2sgZW5k IG9mIGxpbmUgKi8KPiArCWJsa2VvbF9wY2sgPSBicGwgLSBtb2RlLT5oZGlzcGxheSAqIGJwcCAt IDY7Cj4gKwlibGtlb2xfZHVyYXRpb24gPSAoYmxrZW9sX3BjayArIDYpIC8gZC0+bWRzaS0+bGFu ZXM7Cj4gKwlkZXZfZGJnKGQtPmRldiwgImJsa2VvbCBwY2s6ICV1LCBkdXJhdGlvbjogJXVcbiIs Cj4gKwkJIGJsa2VvbF9wY2ssIGJsa2VvbF9kdXJhdGlvbik7Cj4gKwo+ICsJaWYgKGQtPm1kc2kt Pm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJREVPX0JVUlNUKSB7Cj4gKwkJLyogU2V0IHVw IEVPTCBjbG9jayBmb3IgYnVyc3QgbW9kZSAqLwo+ICsJCXZhbCA9IHJlYWRsKGQtPnJlZ3MgKyBE U0lfVklEX0JMS1NJWkUxKTsKPiArCQl2YWwgfD0gYmxrZW9sX3BjayA8PCBEU0lfVklEX0JMS1NJ WkUxX0JMS0VPTF9QQ0tfU0hJRlQ7Cj4gKwkJd3JpdGVsKHZhbCwgZC0+cmVncyArIERTSV9WSURf QkxLU0laRTEpOwo+ICsJCXdyaXRlbChibGtlb2xfcGNrLCBkLT5yZWdzICsgRFNJX1ZJRF9WQ0Ff U0VUVElORzIpOwo+ICsKPiArCQl3cml0ZWwoYmxrZW9sX2R1cmF0aW9uLCBkLT5yZWdzICsgRFNJ X1ZJRF9QQ0tfVElNRSk7Cj4gKwkJd3JpdGVsKGJsa2VvbF9kdXJhdGlvbiAtIDYsIGQtPnJlZ3Mg KyBEU0lfVklEX1ZDQV9TRVRUSU5HMSk7Cj4gKwl9Cj4gKwo+ICsJLyogTWF4aW11bSBsaW5lIGxp bWl0ICovCj4gKwl2YWwgPSByZWFkbChkLT5yZWdzICsgRFNJX1ZJRF9WQ0FfU0VUVElORzIpOwo+ ICsJdmFsIHw9IGJsa2xpbmVfcGNrIDw8Cj4gKwkJRFNJX1ZJRF9WQ0FfU0VUVElORzJfRVhBQ1Rf QlVSU1RfTElNSVRfU0hJRlQ7Cj4gKwl3cml0ZWwodmFsLCBkLT5yZWdzICsgRFNJX1ZJRF9WQ0Ff U0VUVElORzIpOwo+ICsKPiArCS8qIFB1dCBJRjEgaW50byB2aWRlbyBtb2RlICovCj4gKwl2YWwg PSByZWFkbChkLT5yZWdzICsgRFNJX01DVExfTUFJTl9EQVRBX0NUTCk7Cj4gKwl2YWwgfD0gRFNJ X01DVExfTUFJTl9EQVRBX0NUTF9JRjFfTU9ERTsKPiArCXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBE U0lfTUNUTF9NQUlOX0RBVEFfQ1RMKTsKPiArCj4gKwkvKiBEaXNhYmxlIGNvbW1hbmQgbW9kZSBv biBJRjEgKi8KPiArCXZhbCA9IHJlYWRsKGQtPnJlZ3MgKyBEU0lfQ01EX01PREVfQ1RMKTsKPiAr CXZhbCAmPSB+RFNJX0NNRF9NT0RFX0NUTF9JRjFfTFBfRU47Cj4gKwl3cml0ZWwodmFsLCBkLT5y ZWdzICsgRFNJX0NNRF9NT0RFX0NUTCk7Cj4gKwo+ICsJLyogRW5hYmxlIHNvbWUgZXJyb3IgaW50 ZXJydXB0cyAqLwo+ICsJdmFsID0gcmVhZGwoZC0+cmVncyArIERTSV9WSURfTU9ERV9TVFNfQ1RM KTsKPiArCXZhbCB8PSBEU0lfVklEX01PREVfU1RTX0NUTF9FUlJfTUlTU0lOR19WU1lOQzsKPiAr CXZhbCB8PSBEU0lfVklEX01PREVfU1RTX0NUTF9FUlJfTUlTU0lOR19EQVRBOwo+ICsJd3JpdGVs KHZhbCwgZC0+cmVncyArIERTSV9WSURfTU9ERV9TVFNfQ1RMKTsKPiArCj4gKwkvKiBFbmFibGUg dmlkZW8gbW9kZSAqLwo+ICsJdmFsID0gcmVhZGwoZC0+cmVncyArIERTSV9NQ1RMX01BSU5fREFU QV9DVEwpOwo+ICsJdmFsIHw9IERTSV9NQ1RMX01BSU5fREFUQV9DVExfVklEX0VOOwo+ICsJd3Jp dGVsKHZhbCwgZC0+cmVncyArIERTSV9NQ1RMX01BSU5fREFUQV9DVEwpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBtY2RlX2RzaV9zdGFydChzdHJ1Y3QgbWNkZV9kc2kgKmQpCj4gK3sKPiArCXVu c2lnbmVkIGxvbmcgaHNfZnJlcTsKPiArCXUzMiB2YWw7Cj4gKwlpbnQgaTsKPiArCj4gKwkvKiBO byBpbnRlZ3JhdGlvbiBtb2RlICovCj4gKwl3cml0ZWwoMCwgZC0+cmVncyArIERTSV9NQ1RMX0lO VEVHUkFUSU9OX01PREUpOwo+ICsKPiArCS8qIEVuYWJsZSB0aGUgRFNJIHBvcnQsIGZyb20gZHJp dmVycy92aWRlby9tY2RlL2RzaWxpbmtfdjIuYyAqLwo+ICsJdmFsID0gRFNJX01DVExfTUFJTl9E QVRBX0NUTF9MSU5LX0VOIHwKPiArCQlEU0lfTUNUTF9NQUlOX0RBVEFfQ1RMX0JUQV9FTiB8Cj4g KwkJRFNJX01DVExfTUFJTl9EQVRBX0NUTF9SRUFEX0VOIHwKPiArCQlEU0lfTUNUTF9NQUlOX0RB VEFfQ1RMX1JFR19URV9FTjsKPiArCWlmIChkLT5tZHNpLT5tb2RlX2ZsYWdzICYgTUlQSV9EU0lf TU9ERV9FT1RfUEFDS0VUKQo+ICsJCXZhbCB8PSBEU0lfTUNUTF9NQUlOX0RBVEFfQ1RMX0hPU1Rf RU9UX0dFTjsKPiArCXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lfTUNUTF9NQUlOX0RBVEFfQ1RM KTsKPiArCj4gKwkvKiBTZXQgYSBoaWdoIGNvbW1hbmQgdGltZW91dCwgY2xlYXIgb3RoZXIgZmll bGRzICovCj4gKwl2YWwgPSAweDNmZiA8PCBEU0lfQ01EX01PREVfQ1RMX1RFX1RJTUVPVVRfU0hJ RlQ7Cj4gKwl3cml0ZWwodmFsLCBkLT5yZWdzICsgRFNJX0NNRF9NT0RFX0NUTCk7Cj4gKwo+ICsJ LyoKPiArCSAqIFVJX1g0IGlzIGRlc2NyaWJlZCBhcyAidW5pdCBpbnRlcnZhbCB0aW1lcyBmb3Vy Igo+ICsJICogSSBndWVzcyBzaW5jZSBEU0kgcGFja2V0cyBhcmUgNCBieXRlcyB3aWRlLCBvbmUg dW5pdAo+ICsJICogaXMgb25lIGJ5dGUuCj4gKwkgKi8KPiArCWhzX2ZyZXEgPSBjbGtfZ2V0X3Jh dGUoZC0+aHNfY2xrKTsKPiArCWhzX2ZyZXEgLz0gMTAwMDAwMDsgLyogTUh6ICovCj4gKwl2YWwg PSA0MDAwIC8gaHNfZnJlcTsKPiArCWRldl9kYmcoZC0+ZGV2LCAiVUkgdmFsdWU6ICVkXG4iLCB2 YWwpOwo+ICsJdmFsIDw8PSBEU0lfTUNUTF9EUEhZX1NUQVRJQ19VSV9YNF9TSElGVDsKPiArCXZh bCAmPSBEU0lfTUNUTF9EUEhZX1NUQVRJQ19VSV9YNF9NQVNLOwo+ICsJd3JpdGVsKHZhbCwgZC0+ cmVncyArIERTSV9NQ1RMX0RQSFlfU1RBVElDKTsKPiArCj4gKwkvKgo+ICsJICogRW5hYmxlIGNs b2NraW5nOiAweDBmIChzb21ldGhpbmc/KSBiZXR3ZWVuIGVhY2ggYnVyc3QsCj4gKwkgKiBlbmFi bGUgdGhlIHNlY29uZCBsYW5lIGlmIG5lZWRlZCwgZW5hYmxlIGNvbnRpbnVvdXMgY2xvY2sgaWYK PiArCSAqIG5lZWRlZCwgZW5hYmxlIHN3aXRjaCBpbnRvIFVMUE0gKHVsdHJhLWxvdyBwb3dlciBt b2RlKSBvbgo+ICsJICogYWxsIHRoZSBsaW5lcy4KPiArCSAqLwo+ICsJdmFsID0gMHgwZiA8PCBE U0lfTUNUTF9NQUlOX1BIWV9DVExfV0FJVF9CVVJTVF9USU1FX1NISUZUOwo+ICsJaWYgKGQtPm1k c2ktPmxhbmVzID09IDIpCj4gKwkJdmFsIHw9IERTSV9NQ1RMX01BSU5fUEhZX0NUTF9MQU5FMl9F TjsKPiArCWlmICghKGQtPm1kc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9DTE9DS19OT05fQ09O VElOVU9VUykpCj4gKwkJdmFsIHw9IERTSV9NQ1RMX01BSU5fUEhZX0NUTF9DTEtfQ09OVElOVU9V UzsKPiArCXZhbCB8PSBEU0lfTUNUTF9NQUlOX1BIWV9DVExfQ0xLX1VMUE1fRU4gfAo+ICsJCURT SV9NQ1RMX01BSU5fUEhZX0NUTF9EQVQxX1VMUE1fRU4gfAo+ICsJCURTSV9NQ1RMX01BSU5fUEhZ X0NUTF9EQVQyX1VMUE1fRU47Cj4gKwl3cml0ZWwodmFsLCBkLT5yZWdzICsgRFNJX01DVExfTUFJ Tl9QSFlfQ1RMKTsKPiArCj4gKwl2YWwgPSAoMSA8PCBEU0lfTUNUTF9VTFBPVVRfVElNRV9DS0xB TkVfVUxQT1VUX1RJTUVfU0hJRlQpIHwKPiArCQkoMSA8PCBEU0lfTUNUTF9VTFBPVVRfVElNRV9E QVRBX1VMUE9VVF9USU1FX1NISUZUKTsKPiArCXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lfTUNU TF9VTFBPVVRfVElNRSk7Cj4gKwo+ICsJd3JpdGVsKERTSV9EUEhZX0xBTkVTX1RSSU1fRFBIWV9T UEVDU185MF84MUJfMF85MCwKPiArCSAgICAgICBkLT5yZWdzICsgRFNJX0RQSFlfTEFORVNfVFJJ TSk7Cj4gKwo+ICsJLyogSGlnaCBQSFkgdGltZW91dCAqLwo+ICsJdmFsID0gKDB4MGYgPDwgRFNJ X01DVExfRFBIWV9USU1FT1VUX0NMS19ESVZfU0hJRlQpIHwKPiArCQkoMHgzZmZmIDw8IERTSV9N Q1RMX0RQSFlfVElNRU9VVF9IU1RYX1RPX1ZBTF9TSElGVCkgfAo+ICsJCSgweDNmZmYgPDwgRFNJ X01DVExfRFBIWV9USU1FT1VUX0xQUlhfVE9fVkFMX1NISUZUKTsKPiArCXdyaXRlbCh2YWwsIGQt PnJlZ3MgKyBEU0lfTUNUTF9EUEhZX1RJTUVPVVQpOwo+ICsKPiArCXZhbCA9IERTSV9NQ1RMX01B SU5fRU5fUExMX1NUQVJUIHwKPiArCQlEU0lfTUNUTF9NQUlOX0VOX0NLTEFORV9FTiB8Cj4gKwkJ RFNJX01DVExfTUFJTl9FTl9EQVQxX0VOIHwKPiArCQlEU0lfTUNUTF9NQUlOX0VOX0lGMV9FTjsK PiArCWlmIChkLT5tZHNpLT5sYW5lcyA9PSAyKQo+ICsJCXZhbCB8PSBEU0lfTUNUTF9NQUlOX0VO X0RBVDJfRU47Cj4gKwl3cml0ZWwodmFsLCBkLT5yZWdzICsgRFNJX01DVExfTUFJTl9FTik7Cj4g Kwo+ICsJLyogV2FpdCBmb3IgdGhlIFBMTCB0byBsb2NrIGFuZCB0aGUgY2xvY2sgYW5kIGRhdGEg bGluZXMgdG8gY29tZSB1cCAqLwo+ICsJaSA9IDA7Cj4gKwl2YWwgPSBEU0lfTUNUTF9NQUlOX1NU U19QTExfTE9DSyB8Cj4gKwkJRFNJX01DVExfTUFJTl9TVFNfQ0xLTEFORV9SRUFEWSB8Cj4gKwkJ RFNJX01DVExfTUFJTl9TVFNfREFUMV9SRUFEWTsKPiArCWlmIChkLT5tZHNpLT5sYW5lcyA9PSAy KQo+ICsJCXZhbCB8PSBEU0lfTUNUTF9NQUlOX1NUU19EQVQyX1JFQURZOwo+ICsJd2hpbGUgKChy ZWFkbChkLT5yZWdzICsgRFNJX01DVExfTUFJTl9TVFMpICYgdmFsKSAhPSB2YWwpIHsKPiArCQkv KiBTbGVlcCBmb3IgYSBtaWxsaXNlY29uZCAqLwo+ICsJCXVzbGVlcF9yYW5nZSgxMDAwLCAxNTAw KTsKPiArCQlpZiAoaSsrID09IDEwMCkgewo+ICsJCQlkZXZfd2FybihkLT5kZXYsICJEU0kgbGFu ZXMgZGlkIG5vdCBzdGFydCB1cFxuIik7Cj4gKwkJCXJldHVybjsKPiArCQl9Cj4gKwl9Cj4gKwo+ ICsJLyogVE9ETyBuZWVkZWQ/ICovCj4gKwo+ICsJLyogQ29tbWFuZCBtb2RlLCBjbGVhciBJRjEg SUQgKi8KPiArCXZhbCA9IHJlYWRsKGQtPnJlZ3MgKyBEU0lfQ01EX01PREVfQ1RMKTsKPiArCS8q Cj4gKwkgKiBJZiB3ZSBlbmFibGUgbG93LXBvd2VyIG1vZGUgaGVyZSwgd2l0aAo+ICsJICogdmFs IHw9IERTSV9DTURfTU9ERV9DVExfSUYxX0xQX0VOCj4gKwkgKiB0aGVuIGRpc3BsYXkgdXBkYXRl cyBiZWNvbWUgcmVhbGx5IHNsb3cuCj4gKwkgKi8KPiArCXZhbCAmPSB+RFNJX0NNRF9NT0RFX0NU TF9JRjFfSURfTUFTSzsKPiArCXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lfQ01EX01PREVfQ1RM KTsKPiArCj4gKwkvKiBXYWl0IGZvciBEU0kgUEhZIHRvIGluaXRpYWxpemUgKi8KPiArCXVzbGVl cF9yYW5nZSgxMDAsIDIwMCk7Cj4gKwlkZXZfaW5mbyhkLT5kZXYsICJEU0kgbGluayBlbmFibGVk XG4iKTsKPiArfQo+ICsKPiArCj4gK3N0YXRpYyB2b2lkIG1jZGVfZHNpX2JyaWRnZV9lbmFibGUo c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiArewo+ICsJc3RydWN0IG1jZGVfZHNpICpkID0g YnJpZGdlX3RvX21jZGVfZHNpKGJyaWRnZSk7Cj4gKwo+ICsJZGV2X2luZm8oZC0+ZGV2LCAiZW5h YmxlIERTSSBtYXN0ZXJcbiIpOwo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQgbWNkZV9kc2lfYnJp ZGdlX21vZGVfc2V0KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gKwkJCQkgICAgIGNvbnN0 IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ICsJCQkJICAgICBjb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqKQo+ICt7Cj4gKwlzdHJ1Y3QgbWNkZV9kc2kgKmQgPSBicmlk Z2VfdG9fbWNkZV9kc2koYnJpZGdlKTsKPiArCXVuc2lnbmVkIGxvbmcgcGl4ZWxfY2xvY2tfaHog PSBtb2RlLT5jbG9jayAqIDEwMDA7Cj4gKwl1bnNpZ25lZCBsb25nIGhzX2ZyZXEsIGxwX2ZyZXE7 Cj4gKwl1MzIgdmFsOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIWQtPm1kc2kpIHsKPiArCQlk ZXZfZXJyKGQtPmRldiwgIm5vIERTSSBkZXZpY2UgYXR0YWNoZWQgdG8gZW5jb2RlciFcbiIpOwo+ ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwlkZXZfaW5mbyhkLT5kZXYsICJzZXQgRFNJIG1hc3Rl ciB0byAlZHglZCAlbHUgSHogJXMgbW9kZVxuIiwKPiArCQkgbW9kZS0+aGRpc3BsYXksIG1vZGUt PnZkaXNwbGF5LCBwaXhlbF9jbG9ja19oeiwKPiArCQkgKGQtPm1kc2ktPm1vZGVfZmxhZ3MgJiBN SVBJX0RTSV9NT0RFX1ZJREVPKSA/ICJWSURFTyIgOiAiQ01EIgo+ICsJCSk7Cj4gKwo+ICsJLyog Q29weSBtYXhpbXVtIGNsb2NrIGZyZXF1ZW5jaWVzICovCj4gKwlpZiAoZC0+bWRzaS0+bHBfcmF0 ZSkKPiArCQlscF9mcmVxID0gZC0+bWRzaS0+bHBfcmF0ZTsKPiArCWVsc2UKPiArCQlscF9mcmVx ID0gRFNJX0RFRkFVTFRfTFBfRlJFUV9IWjsKPiArCWlmIChkLT5tZHNpLT5oc19yYXRlKQo+ICsJ CWhzX2ZyZXEgPSBkLT5tZHNpLT5oc19yYXRlOwo+ICsJZWxzZQo+ICsJCWhzX2ZyZXEgPSBEU0lf REVGQVVMVF9IU19GUkVRX0haOwo+ICsKPiArCS8qIEVuYWJsZSBMUCAoTG93IFBvd2VyLCBFbmVy Z3kgU2F2ZSwgRVMpIGFuZCBIUyAoSGlnaCBTcGVlZCkgY2xvY2tzICovCj4gKwlkLT5scF9mcmVx ID0gY2xrX3JvdW5kX3JhdGUoZC0+bHBfY2xrLCBscF9mcmVxKTsKPiArCXJldCA9IGNsa19zZXRf cmF0ZShkLT5scF9jbGssIGQtPmxwX2ZyZXEpOwo+ICsJaWYgKHJldCkKPiArCQlkZXZfZXJyKGQt PmRldiwgImZhaWxlZCB0byBzZXQgTFAgY2xvY2sgcmF0ZSAlbHUgSHpcbiIsCj4gKwkJCWQtPmxw X2ZyZXEpOwo+ICsKPiArCWQtPmhzX2ZyZXEgPSBjbGtfcm91bmRfcmF0ZShkLT5oc19jbGssIGhz X2ZyZXEpOwo+ICsJcmV0ID0gY2xrX3NldF9yYXRlKGQtPmhzX2NsaywgZC0+aHNfZnJlcSk7Cj4g KwlpZiAocmV0KQo+ICsJCWRldl9lcnIoZC0+ZGV2LCAiZmFpbGVkIHRvIHNldCBIUyBjbG9jayBy YXRlICVsdSBIelxuIiwKPiArCQkJZC0+aHNfZnJlcSk7Cj4gKwo+ICsJLyogU3RhcnQgY2xvY2tz ICovCj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZC0+bHBfY2xrKTsKPiArCWlmIChyZXQp Cj4gKwkJZGV2X2VycihkLT5kZXYsICJmYWlsZWQgdG8gZW5hYmxlIExQIGNsb2NrXG4iKTsKPiAr CWVsc2UKPiArCQlkZXZfaW5mbyhkLT5kZXYsICJEU0kgTFAgY2xvY2sgcmF0ZSAlbHUgSHpcbiIs Cj4gKwkJCSBkLT5scF9mcmVxKTsKPiArCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShkLT5oc19j bGspOwo+ICsJaWYgKHJldCkKPiArCQlkZXZfZXJyKGQtPmRldiwgImZhaWxlZCB0byBlbmFibGUg SFMgY2xvY2tcbiIpOwo+ICsJZWxzZQo+ICsJCWRldl9pbmZvKGQtPmRldiwgIkRTSSBIUyBjbG9j ayByYXRlICVsdSBIelxuIiwKPiArCQkJIGQtPmhzX2ZyZXEpOwo+ICsKPiArCWlmIChkLT5tZHNp LT5tb2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9WSURFTykgewo+ICsJCW1jZGVfZHNpX3NldHVw X3ZpZGVvX21vZGUoZCwgbW9kZSk7Cj4gKwl9IGVsc2Ugewo+ICsJCS8qIENvbW1hbmQgbW9kZSwg Y2xlYXIgSUYxIElEICovCj4gKwkJdmFsID0gcmVhZGwoZC0+cmVncyArIERTSV9DTURfTU9ERV9D VEwpOwo+ICsJCS8qCj4gKwkJICogSWYgd2UgZW5hYmxlIGxvdy1wb3dlciBtb2RlIGhlcmUgd2l0 aAo+ICsJCSAqIHZhbCB8PSBEU0lfQ01EX01PREVfQ1RMX0lGMV9MUF9FTgo+ICsJCSAqIHRoZSBk aXNwbGF5IHVwZGF0ZXMgYmVjb21lIHJlYWxseSBzbG93Lgo+ICsJCSAqLwo+ICsJCXZhbCAmPSB+ RFNJX0NNRF9NT0RFX0NUTF9JRjFfSURfTUFTSzsKPiArCQl3cml0ZWwodmFsLCBkLT5yZWdzICsg RFNJX0NNRF9NT0RFX0NUTCk7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG1jZGVfZHNp X3dhaXRfZm9yX2NvbW1hbmRfbW9kZV9zdG9wKHN0cnVjdCBtY2RlX2RzaSAqZCkKPiArewo+ICsJ dTMyIHZhbDsKPiArCWludCBpOwo+ICsKPiArCS8qCj4gKwkgKiBXYWl0IHVudGlsIHdlIGdldCBv dXQgb2YgY29tbWFuZCBtb2RlCj4gKwkgKiBDU00gPSBDb21tYW5kIFN0YXRlIE1hY2hpbmUKPiAr CSAqLwo+ICsJaSA9IDA7Cj4gKwl2YWwgPSBEU0lfQ01EX01PREVfU1RTX0NTTV9SVU5OSU5HOwo+ ICsJd2hpbGUgKChyZWFkbChkLT5yZWdzICsgRFNJX0NNRF9NT0RFX1NUUykgJiB2YWwpID09IHZh bCkgewo+ICsJCS8qIFNsZWVwIGZvciBhIG1pbGxpc2Vjb25kICovCj4gKwkJdXNsZWVwX3Jhbmdl KDEwMDAsIDIwMDApOwo+ICsJCWlmIChpKysgPT0gMTAwKSB7Cj4gKwkJCWRldl93YXJuKGQtPmRl diwKPiArCQkJCSAiY291bGQgbm90IGdldCBvdXQgb2YgY29tbWFuZCBtb2RlXG4iKTsKPiArCQkJ cmV0dXJuOwo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbWNkZV9kc2lfd2Fp dF9mb3JfdmlkZW9fbW9kZV9zdG9wKHN0cnVjdCBtY2RlX2RzaSAqZCkKPiArewo+ICsJdTMyIHZh bDsKPiArCWludCBpOwo+ICsKPiArCS8qIFdhaXQgdW50aWwgd2UgZ2V0IG91dCBvZyB2aWRlbyBt b2RlICovCj4gKwlpID0gMDsKPiArCXZhbCA9IERTSV9WSURfTU9ERV9TVFNfVlNHX1JVTk5JTkc7 Cj4gKwl3aGlsZSAoKHJlYWRsKGQtPnJlZ3MgKyBEU0lfVklEX01PREVfU1RTKSAmIHZhbCkgPT0g dmFsKSB7Cj4gKwkJLyogU2xlZXAgZm9yIGEgbWlsbGlzZWNvbmQgKi8KPiArCQl1c2xlZXBfcmFu Z2UoMTAwMCwgMjAwMCk7Cj4gKwkJaWYgKGkrKyA9PSAxMDApIHsKPiArCQkJZGV2X3dhcm4oZC0+ ZGV2LAo+ICsJCQkJICJjb3VsZCBub3QgZ2V0IG91dCBvZiB2aWRlbyBtb2RlXG4iKTsKPiArCQkJ cmV0dXJuOwo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbWNkZV9kc2lfYnJp ZGdlX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiArewo+ICsJc3RydWN0IG1j ZGVfZHNpICpkID0gYnJpZGdlX3RvX21jZGVfZHNpKGJyaWRnZSk7Cj4gKwl1MzIgdmFsOwo+ICsK PiArCS8qIERpc2FibGUgYWxsIGVycm9yIGludGVycnVwdHMgKi8KPiArCXdyaXRlbCgwLCBkLT5y ZWdzICsgRFNJX1ZJRF9NT0RFX1NUU19DVEwpOwo+ICsKPiArCWlmIChkLT5tZHNpLT5tb2RlX2Zs YWdzICYgTUlQSV9EU0lfTU9ERV9WSURFTykgewo+ICsJCS8qIFN0b3AgdmlkZW8gbW9kZSAqLwo+ ICsJCXZhbCA9IHJlYWRsKGQtPnJlZ3MgKyBEU0lfTUNUTF9NQUlOX0RBVEFfQ1RMKTsKPiArCQl2 YWwgJj0gfkRTSV9NQ1RMX01BSU5fREFUQV9DVExfVklEX0VOOwo+ICsJCXdyaXRlbCh2YWwsIGQt PnJlZ3MgKyBEU0lfTUNUTF9NQUlOX0RBVEFfQ1RMKTsKPiArCQltY2RlX2RzaV93YWl0X2Zvcl92 aWRlb19tb2RlX3N0b3AoZCk7Cj4gKwl9IGVsc2Ugewo+ICsJCS8qIFN0b3AgY29tbWFuZCBtb2Rl ICovCj4gKwkJbWNkZV9kc2lfd2FpdF9mb3JfY29tbWFuZF9tb2RlX3N0b3AoZCk7Cj4gKwl9Cj4g Kwo+ICsJLyogU3RvcCBjbG9ja3MgKi8KPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShkLT5oc19j bGspOwo+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGQtPmxwX2Nsayk7Cj4gK30KPiArCj4gKy8q Cj4gKyAqIFRoaXMgY29ubmVjdG9yIG5lZWRzIG5vIHNwZWNpYWwgaGFuZGxpbmcsIGp1c3QgdXNl IHRoZSBkZWZhdWx0Cj4gKyAqIGhlbHBlcnMgZm9yIGV2ZXJ5dGhpbmcuIEl0J3MgcHJldHR5IGR1 bW15Lgo+ICsgKi8KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIG1j ZGVfZHNpX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKPiArCS5yZXNldCA9IGRybV9hdG9taWNfaGVscGVy X2Nvbm5lY3Rvcl9yZXNldCwKPiArCS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5n bGVfY29ubmVjdG9yX21vZGVzLAo+ICsJLmRlc3Ryb3kgPSBkcm1fY29ubmVjdG9yX2NsZWFudXAs Cj4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rv cl9kdXBsaWNhdGVfc3RhdGUsCj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWlj X2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQg bWNkZV9kc2lfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sK PiArCXN0cnVjdCBtY2RlX2RzaSAqZCA9IGNvbm5lY3Rvcl90b19tY2RlX2RzaShjb25uZWN0b3Ip Owo+ICsKPiArCS8qIEp1c3QgcGFzcyB0aGUgcXVlc3Rpb24gdG8gdGhlIHBhbmVsICovCj4gKwlp ZiAoZC0+cGFuZWwpCj4gKwkJcmV0dXJuIGRybV9wYW5lbF9nZXRfbW9kZXMoZC0+cGFuZWwpOwo+ ICsKPiArCS8qIFRPRE86IGRlYWwgd2l0aCBicmlkZ2VzICovCj4gKwo+ICsJcmV0dXJuIDA7Cj4g K30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MK PiArbWNkZV9kc2lfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKPiArCS5nZXRfbW9kZXMgPSBt Y2RlX2RzaV9nZXRfbW9kZXMsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IG1jZGVfZHNpX2JyaWRn ZV9hdHRhY2goc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiArewo+ICsJc3RydWN0IG1jZGVf ZHNpICpkID0gYnJpZGdlX3RvX21jZGVfZHNpKGJyaWRnZSk7Cj4gKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZHJtID0gYnJpZGdlLT5kZXY7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWRybV9jb25uZWN0b3Jf aGVscGVyX2FkZCgmZC0+Y29ubmVjdG9yLAo+ICsJCQkJICZtY2RlX2RzaV9jb25uZWN0b3JfaGVs cGVyX2Z1bmNzKTsKPiArCj4gKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZHJtLCBEUklW RVJfQVRPTUlDKSkgewo+ICsJCWRldl9lcnIoZC0+ZGV2LCAid2UgbmVlZCBhdG9taWMgdXBkYXRl c1xuIik7Cj4gKwkJcmV0dXJuIC1FTk9UU1VQUDsKPiArCX0KPiArCj4gKwlyZXQgPSBkcm1fY29u bmVjdG9yX2luaXQoZHJtLCAmZC0+Y29ubmVjdG9yLAo+ICsJCQkJICZtY2RlX2RzaV9jb25uZWN0 b3JfZnVuY3MsCj4gKwkJCQkgRFJNX01PREVfQ09OTkVDVE9SX0RTSSk7Cj4gKwlpZiAocmV0KSB7 Cj4gKwkJZGV2X2VycihkLT5kZXYsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEU0kgYnJpZGdlIGNv bm5lY3RvclxuIik7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCWQtPmNvbm5lY3Rvci5wb2xs ZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExfQ09OTkVDVDsKPiArCS8qIFRoZSBlbmNvZGVyIGluIHRo ZSBicmlkZ2UgYXR0YWNoZWQgdG8gdGhlIERTSSBicmlkZ2UgKi8KPiArCWRybV9jb25uZWN0b3Jf YXR0YWNoX2VuY29kZXIoJmQtPmNvbm5lY3RvciwgYnJpZGdlLT5lbmNvZGVyKTsKPiArCS8qIFRo ZW4gd2UgYXR0YWNoIHRoZSBEU0kgYnJpZGdlIHRvIHRoZSBvdXRwdXQgKHBhbmVsIGV0YykgYnJp ZGdlICovCj4gKwlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChicmlkZ2UtPmVuY29kZXIsIGQtPmJy aWRnZV9vdXQsIGJyaWRnZSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2VycihkLT5kZXYsICJm YWlsZWQgdG8gYXR0YWNoIHRoZSBEU0kgYnJpZGdlXG4iKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJ fQo+ICsJZC0+Y29ubmVjdG9yLnN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOwo+ ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9icmlk Z2VfZnVuY3MgbWNkZV9kc2lfYnJpZGdlX2Z1bmNzID0gewo+ICsJLmF0dGFjaCA9IG1jZGVfZHNp X2JyaWRnZV9hdHRhY2gsCj4gKwkubW9kZV9zZXQgPSBtY2RlX2RzaV9icmlkZ2VfbW9kZV9zZXQs Cj4gKwkuZGlzYWJsZSA9IG1jZGVfZHNpX2JyaWRnZV9kaXNhYmxlLAo+ICsJLmVuYWJsZSA9IG1j ZGVfZHNpX2JyaWRnZV9lbmFibGUsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IG1jZGVfZHNpX2Jp bmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCj4gKwkJCSB2b2lk ICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gZGF0YTsKPiArCXN0cnVj dCBtY2RlICptY2RlID0gZHJtLT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBtY2RlX2RzaSAqZCA9 IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3RydWN0IGRldmljZV9ub2RlICpjaGlsZDsKPiAr CXN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsID0gTlVMTDsKPiArCXN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UgPSBOVUxMOwo+ICsKPiArCWlmICghb2ZfZ2V0X2F2YWlsYWJsZV9jaGlsZF9jb3VudChk ZXYtPm9mX25vZGUpKSB7Cj4gKwkJZGV2X2luZm8oZGV2LCAidW51c2VkIERTSSBpbnRlcmZhY2Vc biIpOwo+ICsJCWQtPnVudXNlZCA9IHRydWU7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwlkLT5t Y2RlID0gbWNkZTsKPiArCS8qIElmIHRoZSBkaXNwbGF5IGF0dGFjaGVkIGJlZm9yZSBiaW5kaW5n LCBzZXQgdGhpcyB1cCAqLwo+ICsJaWYgKGQtPm1kc2kpCj4gKwkJZC0+bWNkZS0+bWRzaSA9IGQt Pm1kc2k7Cj4gKwo+ICsJLyogT2J0YWluIHRoZSBjbG9ja3MgKi8KPiArCWQtPmhzX2NsayA9IGRl dm1fY2xrX2dldChkZXYsICJocyIpOwo+ICsJaWYgKElTX0VSUihkLT5oc19jbGspKSB7Cj4gKwkJ ZGV2X2VycihkZXYsICJ1bmFibGUgdG8gZ2V0IEhTIGNsb2NrXG4iKTsKPiArCQlyZXR1cm4gUFRS X0VSUihkLT5oc19jbGspOwo+ICsJfQo+ICsKPiArCWQtPmxwX2NsayA9IGRldm1fY2xrX2dldChk ZXYsICJscCIpOwo+ICsJaWYgKElTX0VSUihkLT5scF9jbGspKSB7Cj4gKwkJZGV2X2VycihkZXYs ICJ1bmFibGUgdG8gZ2V0IExQIGNsb2NrXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihkLT5scF9j bGspOwo+ICsJfQo+ICsKPiArCS8qIEFzc2VydCBSRVNFVCB0aHJvdWdoIHRoZSBQUkNNVSwgYWN0 aXZlIGxvdyAqLwo+ICsJLyogRklYTUU6IHdoaWNoIERTSSBibG9jaz8gKi8KPiArCXJlZ21hcF91 cGRhdGVfYml0cyhkLT5wcmNtdSwgUFJDTV9EU0lfU1dfUkVTRVQsCj4gKwkJCSAgIFBSQ01fRFNJ X1NXX1JFU0VUX0RTSTBfU1dfUkVTRVROLCAwKTsKPiArCj4gKwl1c2xlZXBfcmFuZ2UoMTAwLCAy MDApOwo+ICsKPiArCS8qIERlLWFzc2VydCBSRVNFVCBhZ2FpbiAqLwo+ICsJcmVnbWFwX3VwZGF0 ZV9iaXRzKGQtPnByY211LCBQUkNNX0RTSV9TV19SRVNFVCwKPiArCQkJICAgUFJDTV9EU0lfU1df UkVTRVRfRFNJMF9TV19SRVNFVE4sCj4gKwkJCSAgIFBSQ01fRFNJX1NXX1JFU0VUX0RTSTBfU1df UkVTRVROKTsKPiArCj4gKwkvKiBTdGFydCB1cCB0aGUgaGFyZHdhcmUgKi8KPiArCW1jZGVfZHNp X3N0YXJ0KGQpOwo+ICsKPiArCS8qIExvb2sgZm9yIGEgcGFuZWwgYXMgYSBjaGlsZCB0byB0aGlz IG5vZGUgKi8KPiArCWZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKGRldi0+b2Zfbm9k ZSwgY2hpbGQpIHsKPiArCQlwYW5lbCA9IG9mX2RybV9maW5kX3BhbmVsKGNoaWxkKTsKPiArCQlp ZiAoSVNfRVJSKHBhbmVsKSkgewo+ICsJCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBmaW5kIHBh bmVsIHRyeSBicmlkZ2UgKCVsdSlcbiIsCj4gKwkJCQlQVFJfRVJSKHBhbmVsKSk7Cj4gKwkJCWJy aWRnZSA9IG9mX2RybV9maW5kX2JyaWRnZShjaGlsZCk7Cj4gKwkJCWlmIChJU19FUlIoYnJpZGdl KSkgewo+ICsJCQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZmluZCBicmlkZ2UgKCVsdSlcbiIs Cj4gKwkJCQkJUFRSX0VSUihicmlkZ2UpKTsKPiArCQkJCXJldHVybiBQVFJfRVJSKGJyaWRnZSk7 Cj4gKwkJCX0KPiArCQl9Cj4gKwl9Cj4gKwlpZiAocGFuZWwpIHsKPiArCQlicmlkZ2UgPSBkcm1f cGFuZWxfYnJpZGdlX2FkZChwYW5lbCwKPiArCQkJCQkgICAgICBEUk1fTU9ERV9DT05ORUNUT1Jf RFNJKTsKPiArCQlpZiAoSVNfRVJSKGJyaWRnZSkpIHsKPiArCQkJZGV2X2VycihkZXYsICJlcnJv ciBhZGRpbmcgcGFuZWwgYnJpZGdlXG4iKTsKPiArCQkJcmV0dXJuIFBUUl9FUlIoYnJpZGdlKTsK PiArCQl9Cj4gKwkJZGV2X2luZm8oZGV2LCAiY29ubmVjdGVkIHRvIHBhbmVsXG4iKTsKPiArCQlk LT5wYW5lbCA9IHBhbmVsOwo+ICsJfSBlbHNlIGlmIChicmlkZ2UpIHsKPiArCQkvKiBUT0RPOiBB VjgxMDAgSERNSSBlbmNvZGVyIGdvZXMgaGVyZSBmb3IgZXhhbXBsZSAqLwo+ICsJCWRldl9pbmZv KGRldiwgImNvbm5lY3RlZCB0byBub24tcGFuZWwgYnJpZGdlICh1bnN1cHBvcnRlZClcbiIpOwo+ ICsJCXJldHVybiAtRU5PREVWOwo+ICsJfSBlbHNlIHsKPiArCQlkZXZfZXJyKGRldiwgIm5vIHBh bmVsIG9yIGJyaWRnZVxuIik7Cj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwl9Cj4gKwo+ICsJZC0+ YnJpZGdlX291dCA9IGJyaWRnZTsKPiArCj4gKwkvKiBDcmVhdGUgYSBicmlkZ2UgZm9yIHRoaXMg RFNJIGNoYW5uZWwgKi8KPiArCWQtPmJyaWRnZS5mdW5jcyA9ICZtY2RlX2RzaV9icmlkZ2VfZnVu Y3M7Cj4gKwlkLT5icmlkZ2Uub2Zfbm9kZSA9IGRldi0+b2Zfbm9kZTsKPiArCWRybV9icmlkZ2Vf YWRkKCZkLT5icmlkZ2UpOwo+ICsKPiArCS8qIFRPRE86IGZpcnN0IGNvbWUgZmlyc3Qgc2VydmUs IHVzZSBhIGxpc3QgKi8KPiArCW1jZGUtPmJyaWRnZSA9ICZkLT5icmlkZ2U7Cj4gKwo+ICsJZGV2 X2luZm8oZGV2LCAiaW5pdGlhbGl6ZWQgTUNERSBEU0kgYnJpZGdlXG4iKTsKPiArCj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbWNkZV9kc2lfdW5iaW5kKHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAo+ICsJCQkgICAgdm9pZCAqZGF0YSkKPiAr ewo+ICsJc3RydWN0IG1jZGVfZHNpICpkID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJ aWYgKGQtPnBhbmVsKQo+ICsJCWRybV9wYW5lbF9icmlkZ2VfcmVtb3ZlKGQtPmJyaWRnZV9vdXQp Owo+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKGQtPnByY211LCBQUkNNX0RTSV9TV19SRVNFVCwKPiAr CQkJICAgUFJDTV9EU0lfU1dfUkVTRVRfRFNJMF9TV19SRVNFVE4sIDApOwo+ICt9Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgbWNkZV9kc2lfY29tcG9uZW50X29wcyA9 IHsKPiArCS5iaW5kICAgPSBtY2RlX2RzaV9iaW5kLAo+ICsJLnVuYmluZCA9IG1jZGVfZHNpX3Vu YmluZCwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgbWNkZV9kc2lfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKPiArewo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRl djsKPiArCXN0cnVjdCBtY2RlX2RzaSAqZDsKPiArCXN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0 Owo+ICsJc3RydWN0IHJlc291cmNlICpyZXM7Cj4gKwl1MzIgZHNpX2lkOwo+ICsJaW50IHJldDsK PiArCj4gKwlkID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpkKSwgR0ZQX0tFUk5FTCk7Cj4g KwlpZiAoIWQpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwlkLT5kZXYgPSBkZXY7Cj4gKwlwbGF0 Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkKTsKPiArCj4gKwkvKiBHZXQgYSBoYW5kbGUgb24gdGhl IFBSQ01VIHNvIHdlIGNhbiBkbyByZXNldCAqLwo+ICsJZC0+cHJjbXUgPQo+ICsJCXN5c2Nvbl9y ZWdtYXBfbG9va3VwX2J5X2NvbXBhdGlibGUoInN0ZXJpY3Nzb24sZGI4NTAwLXByY211Iik7Cj4g KwlpZiAoSVNfRVJSKGQtPnByY211KSkgewo+ICsJCWRldl9lcnIoZGV2LCAibm8gUFJDTVUgcmVn bWFwXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihkLT5wcmNtdSk7Cj4gKwl9Cj4gKwo+ICsJcmVz ID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiArCWQt PnJlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOwo+ICsJaWYgKElTX0VSUihk LT5yZWdzKSkgewo+ICsJCWRldl9lcnIoZGV2LCAibm8gRFNJIHJlZ3NcbiIpOwo+ICsJCXJldHVy biBQVFJfRVJSKGQtPnJlZ3MpOwo+ICsJfQo+ICsKPiArCWRzaV9pZCA9IHJlYWRsKGQtPnJlZ3Mg KyBEU0lfSURfUkVHKTsKPiArCWRldl9pbmZvKGRldiwgIkhXIHJldmlzaW9uIDB4JTA4eFxuIiwg ZHNpX2lkKTsKPiArCj4gKwlob3N0ID0gJmQtPmRzaV9ob3N0Owo+ICsJaG9zdC0+ZGV2ID0gZGV2 Owo+ICsJaG9zdC0+b3BzID0gJm1jZGVfZHNpX2hvc3Rfb3BzOwo+ICsJcmV0ID0gbWlwaV9kc2lf aG9zdF9yZWdpc3Rlcihob3N0KTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJZGV2X2VycihkZXYs ICJmYWlsZWQgdG8gcmVnaXN0ZXIgRFNJIGhvc3Q6ICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiBy ZXQ7Cj4gKwl9Cj4gKwlkZXZfaW5mbyhkZXYsICJyZWdpc3RlcmVkIERTSSBob3N0XG4iKTsKPiAr Cj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkKTsKPiArCXJldHVybiBjb21wb25lbnRf YWRkKGRldiwgJm1jZGVfZHNpX2NvbXBvbmVudF9vcHMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IG1jZGVfZHNpX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlz dHJ1Y3QgbWNkZV9kc2kgKmQgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiArCj4gKwlj b21wb25lbnRfZGVsKCZwZGV2LT5kZXYsICZtY2RlX2RzaV9jb21wb25lbnRfb3BzKTsKPiArCW1p cGlfZHNpX2hvc3RfdW5yZWdpc3RlcigmZC0+ZHNpX2hvc3QpOwo+ICsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtY2RlX2RzaV9vZl9t YXRjaFtdID0gewo+ICsJewo+ICsJCS5jb21wYXRpYmxlID0gInN0ZSxtY2RlLWRzaSIsCj4gKwl9 LAo+ICsJe30sCj4gK307Cj4gKwo+ICtzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1jZGVfZHNpX2Ry aXZlciA9IHsKPiArCS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUgICAgICAgICAgID0gIm1jZGUtZHNp IiwKPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIobWNkZV9kc2lfb2ZfbWF0Y2gp LAo+ICsJfSwKPiArCS5wcm9iZSA9IG1jZGVfZHNpX3Byb2JlLAo+ICsJLnJlbW92ZSA9IG1jZGVf ZHNpX3JlbW92ZSwKPiArfTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21jZGUvbWNk ZV9kc2lfcmVncy5oIGIvZHJpdmVycy9ncHUvZHJtL21jZGUvbWNkZV9kc2lfcmVncy5oCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmM5MjUzMzIxYTNiZQo+IC0t LSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2RzaV9yZWdzLmgK PiBAQCAtMCwwICsxLDM4NSBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MCAqLwo+ICsjaWZuZGVmIF9fRFJNX01DREVfRFNJX1JFR1MKPiArI2RlZmluZSBfX0RSTV9NQ0RF X0RTSV9SRUdTCj4gKwo+ICsjZGVmaW5lIERTSV9NQ1RMX0lOVEVHUkFUSU9OX01PREUgMHgwMDAw MDAwMAo+ICsKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX0RBVEFfQ1RMIDB4MDAwMDAwMDQKPiAr I2RlZmluZSBEU0lfTUNUTF9NQUlOX0RBVEFfQ1RMX0xJTktfRU4gQklUKDApCj4gKyNkZWZpbmUg RFNJX01DVExfTUFJTl9EQVRBX0NUTF9JRjFfTU9ERSBCSVQoMSkKPiArI2RlZmluZSBEU0lfTUNU TF9NQUlOX0RBVEFfQ1RMX1ZJRF9FTiBCSVQoMikKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX0RB VEFfQ1RMX1RWR19TRUwgQklUKDMpCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9EQVRBX0NUTF9U QkdfU0VMIEJJVCg0KQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fREFUQV9DVExfSUYxX1RFX0VO IEJJVCg1KQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fREFUQV9DVExfSUYyX1RFX0VOIEJJVCg2 KQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fREFUQV9DVExfUkVHX1RFX0VOIEJJVCg3KQo+ICsj ZGVmaW5lIERTSV9NQ1RMX01BSU5fREFUQV9DVExfUkVBRF9FTiBCSVQoOCkKPiArI2RlZmluZSBE U0lfTUNUTF9NQUlOX0RBVEFfQ1RMX0JUQV9FTiBCSVQoOSkKPiArI2RlZmluZSBEU0lfTUNUTF9N QUlOX0RBVEFfQ1RMX0RJU1BfR0VOX0VDQyBCSVQoMTApCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJ Tl9EQVRBX0NUTF9ESVNQX0dFTl9DSEVDS1NVTSBCSVQoMTEpCj4gKyNkZWZpbmUgRFNJX01DVExf TUFJTl9EQVRBX0NUTF9IT1NUX0VPVF9HRU4gQklUKDEyKQo+ICsjZGVmaW5lIERTSV9NQ1RMX01B SU5fREFUQV9DVExfRElTUF9FT1RfR0VOIEJJVCgxMykKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlO X0RBVEFfQ1RMX0RMWF9SRU1BUF9FTiBCSVQoMTQpCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9E QVRBX0NUTF9URV9QT0xMSU5HX0VOIEJJVCgxNSkKPiArCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJ Tl9QSFlfQ1RMIDB4MDAwMDAwMDgKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX1BIWV9DVExfTEFO RTJfRU4gQklUKDApCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9QSFlfQ1RMX0ZPUkNFX1NUT1Bf TU9ERSBCSVQoMSkKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX1BIWV9DVExfQ0xLX0NPTlRJTlVP VVMgQklUKDIpCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9QSFlfQ1RMX0NMS19VTFBNX0VOIEJJ VCgzKQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fUEhZX0NUTF9EQVQxX1VMUE1fRU4gQklUKDQp Cj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9QSFlfQ1RMX0RBVDJfVUxQTV9FTiBCSVQoNSkKPiAr I2RlZmluZSBEU0lfTUNUTF9NQUlOX1BIWV9DVExfV0FJVF9CVVJTVF9USU1FX1NISUZUIDYKPiAr I2RlZmluZSBEU0lfTUNUTF9NQUlOX1BIWV9DVExfV0FJVF9CVVJTVF9USU1FX01BU0sgMHgwMDAw MDNDMAo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fUEhZX0NUTF9DTE9DS19GT1JDRV9TVE9QX01P REUgQklUKDEwKQo+ICsKPiArI2RlZmluZSBEU0lfTUNUTF9QTExfQ1RMIDB4MDAwMDAwMEMKPiAr I2RlZmluZSBEU0lfTUNUTF9MQU5FX1NUUyAweDAwMDAwMDEwCj4gKwo+ICsjZGVmaW5lIERTSV9N Q1RMX0RQSFlfVElNRU9VVCAweDAwMDAwMDE0Cj4gKyNkZWZpbmUgRFNJX01DVExfRFBIWV9USU1F T1VUX0NMS19ESVZfU0hJRlQgMAo+ICsjZGVmaW5lIERTSV9NQ1RMX0RQSFlfVElNRU9VVF9DTEtf RElWX01BU0sgMHgwMDAwMDAwRgo+ICsjZGVmaW5lIERTSV9NQ1RMX0RQSFlfVElNRU9VVF9IU1RY X1RPX1ZBTF9TSElGVCA0Cj4gKyNkZWZpbmUgRFNJX01DVExfRFBIWV9USU1FT1VUX0hTVFhfVE9f VkFMX01BU0sgMHgwMDAzRkZGMAo+ICsjZGVmaW5lIERTSV9NQ1RMX0RQSFlfVElNRU9VVF9MUFJY X1RPX1ZBTF9TSElGVCAxOAo+ICsjZGVmaW5lIERTSV9NQ1RMX0RQSFlfVElNRU9VVF9MUFJYX1RP X1ZBTF9NQVNLIDB4RkZGQzAwMDAKPiArCj4gKyNkZWZpbmUgRFNJX01DVExfVUxQT1VUX1RJTUUg MHgwMDAwMDAxOAo+ICsjZGVmaW5lIERTSV9NQ1RMX1VMUE9VVF9USU1FX0NLTEFORV9VTFBPVVRf VElNRV9TSElGVCAwCj4gKyNkZWZpbmUgRFNJX01DVExfVUxQT1VUX1RJTUVfQ0tMQU5FX1VMUE9V VF9USU1FX01BU0sgMHgwMDAwMDFGRgo+ICsjZGVmaW5lIERTSV9NQ1RMX1VMUE9VVF9USU1FX0RB VEFfVUxQT1VUX1RJTUVfU0hJRlQgOQo+ICsjZGVmaW5lIERTSV9NQ1RMX1VMUE9VVF9USU1FX0RB VEFfVUxQT1VUX1RJTUVfTUFTSyAweDAwMDNGRTAwCj4gKwo+ICsjZGVmaW5lIERTSV9NQ1RMX0RQ SFlfU1RBVElDIDB4MDAwMDAwMUMKPiArI2RlZmluZSBEU0lfTUNUTF9EUEhZX1NUQVRJQ19TV0FQ X1BJTlNfQ0xLIEJJVCgwKQo+ICsjZGVmaW5lIERTSV9NQ1RMX0RQSFlfU1RBVElDX0hTX0lOVkVS VF9DTEsgQklUKDEpCj4gKyNkZWZpbmUgRFNJX01DVExfRFBIWV9TVEFUSUNfU1dBUF9QSU5TX0RB VDEgQklUKDIpCj4gKyNkZWZpbmUgRFNJX01DVExfRFBIWV9TVEFUSUNfSFNfSU5WRVJUX0RBVDEg QklUKDMpCj4gKyNkZWZpbmUgRFNJX01DVExfRFBIWV9TVEFUSUNfU1dBUF9QSU5TX0RBVDIgQklU KDQpCj4gKyNkZWZpbmUgRFNJX01DVExfRFBIWV9TVEFUSUNfSFNfSU5WRVJUX0RBVDIgQklUKDUp Cj4gKyNkZWZpbmUgRFNJX01DVExfRFBIWV9TVEFUSUNfVUlfWDRfU0hJRlQgNgo+ICsjZGVmaW5l IERTSV9NQ1RMX0RQSFlfU1RBVElDX1VJX1g0X01BU0sgMHgwMDAwMEZDMAo+ICsKPiArI2RlZmlu ZSBEU0lfTUNUTF9NQUlOX0VOIDB4MDAwMDAwMjAKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX0VO X1BMTF9TVEFSVCBCSVQoMCkKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX0VOX0NLTEFORV9FTiBC SVQoMykKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX0VOX0RBVDFfRU4gQklUKDQpCj4gKyNkZWZp bmUgRFNJX01DVExfTUFJTl9FTl9EQVQyX0VOIEJJVCg1KQo+ICsjZGVmaW5lIERTSV9NQ1RMX01B SU5fRU5fQ0xLTEFORV9VTFBNX1JFUSBCSVQoNikKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX0VO X0RBVDFfVUxQTV9SRVEgQklUKDcpCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9FTl9EQVQyX1VM UE1fUkVRIEJJVCg4KQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fRU5fSUYxX0VOIEJJVCg5KQo+ ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fRU5fSUYyX0VOIEJJVCgxMCkKPiArCj4gKyNkZWZpbmUg RFNJX01DVExfTUFJTl9TVFMgMHgwMDAwMDAyNAo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fU1RT X1BMTF9MT0NLIEJJVCgwKQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fU1RTX0NMS0xBTkVfUkVB RFkgQklUKDEpCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9TVFNfREFUMV9SRUFEWSBCSVQoMikK PiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX1NUU19EQVQyX1JFQURZIEJJVCgzKQo+ICsjZGVmaW5l IERTSV9NQ1RMX01BSU5fU1RTX0hTVFhfVE9fRVJSIEJJVCg0KQo+ICsjZGVmaW5lIERTSV9NQ1RM X01BSU5fU1RTX0xQUlhfVE9fRVJSIEJJVCg1KQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fU1RT X0NSU19VTlRFUk1fUENLIEJJVCg2KQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fU1RTX1ZSU19V TlRFUk1fUENLIEJJVCg3KQo+ICsKPiArI2RlZmluZSBEU0lfTUNUTF9EUEhZX0VSUiAweDAwMDAw MDI4Cj4gKyNkZWZpbmUgRFNJX0lOVF9WSURfUkREQVRBIDB4MDAwMDAwMzAKPiArI2RlZmluZSBE U0lfSU5UX1ZJRF9HTlQgMHgwMDAwMDAzNAo+ICsjZGVmaW5lIERTSV9JTlRfQ01EX1JEREFUQSAw eDAwMDAwMDM4Cj4gKyNkZWZpbmUgRFNJX0lOVF9DTURfR05UIDB4MDAwMDAwM0MKPiArI2RlZmlu ZSBEU0lfSU5UX0lOVEVSUlVQVF9DVEwgMHgwMDAwMDA0MAo+ICsKPiArI2RlZmluZSBEU0lfQ01E X01PREVfQ1RMIDB4MDAwMDAwNTAKPiArI2RlZmluZSBEU0lfQ01EX01PREVfQ1RMX0lGMV9JRF9T SElGVCAwCj4gKyNkZWZpbmUgRFNJX0NNRF9NT0RFX0NUTF9JRjFfSURfTUFTSyAweDAwMDAwMDAz Cj4gKyNkZWZpbmUgRFNJX0NNRF9NT0RFX0NUTF9JRjJfSURfU0hJRlQgMgo+ICsjZGVmaW5lIERT SV9DTURfTU9ERV9DVExfSUYyX0lEX01BU0sgMHgwMDAwMDAwQwo+ICsjZGVmaW5lIERTSV9DTURf TU9ERV9DVExfSUYxX0xQX0VOIEJJVCg0KQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9DVExfSUYy X0xQX0VOIEJJVCg1KQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9DVExfQVJCX01PREUgQklUKDYp Cj4gKyNkZWZpbmUgRFNJX0NNRF9NT0RFX0NUTF9BUkJfUFJJIEJJVCg3KQo+ICsjZGVmaW5lIERT SV9DTURfTU9ERV9DVExfRklMX1ZBTFVFX1NISUZUIDgKPiArI2RlZmluZSBEU0lfQ01EX01PREVf Q1RMX0ZJTF9WQUxVRV9NQVNLIDB4MDAwMEZGMDAKPiArI2RlZmluZSBEU0lfQ01EX01PREVfQ1RM X1RFX1RJTUVPVVRfU0hJRlQgMTYKPiArI2RlZmluZSBEU0lfQ01EX01PREVfQ1RMX1RFX1RJTUVP VVRfTUFTSyAweDAzRkYwMDAwCj4gKwo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9TVFMgMHgwMDAw MDA1NAo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9TVFNfRVJSX05PX1RFIEJJVCgwKQo+ICsjZGVm aW5lIERTSV9DTURfTU9ERV9TVFNfRVJSX1RFX01JU1MgQklUKDEpCj4gKyNkZWZpbmUgRFNJX0NN RF9NT0RFX1NUU19FUlJfU0RJMV9VTkRFUlJVTiBCSVQoMikKPiArI2RlZmluZSBEU0lfQ01EX01P REVfU1RTX0VSUl9TREkyX1VOREVSUlVOIEJJVCgzKQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9T VFNfRVJSX1VOV0FOVEVEX1JEIEJJVCg0KQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9TVFNfQ1NN X1JVTk5JTkcgQklUKDUpCj4gKwo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NFTkQgMHgwMDAw MDA2MAo+ICsKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTIDB4MDAwMDAw NjQKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9OQVRfU0hJRlQg MAo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX05BVF9NQVNLIDB4 MDAwMDAwMDcKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9OQVRf V1JJVEUgMAo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX05BVF9S RUFEIDEKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9OQVRfVEVf UkVRIDQKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9OQVRfVFJJ R19SRVEgNQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX05BVF9C VEFfUkVRIDYKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9MT05H Tk9UU0hPUlQgQklUKDMpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfTUFJTl9TRVRUSU5HU19D TURfSEVBRF9TSElGVCA4Cj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfTUFJTl9TRVRUSU5HU19D TURfSEVBRF9NQVNLIDB4MDAwMDNGMDAKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NF VFRJTkdTX0NNRF9IRUFEX1RVUk5fT05fUEVSSVBIRVJBTCA1MAo+ICsjZGVmaW5lIERTSV9ESVJF Q1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX0hFQURfU0hVVF9ET1dOX1BFUklQSEVSQUwgMzQKPiAr I2RlZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9IRUFEX0dFTkVSSUNfU0hP UlRfV1JJVEVfMCAzCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfTUFJTl9TRVRUSU5HU19DTURf SEVBRF9HRU5FUklDX1NIT1JUX1dSSVRFXzEgMTkKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9N QUlOX1NFVFRJTkdTX0NNRF9IRUFEX0dFTkVSSUNfU0hPUlRfV1JJVEVfMiAzNQo+ICsjZGVmaW5l IERTSV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX0hFQURfR0VORVJJQ19MT05HX1dSSVRF IDQxCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfTUFJTl9TRVRUSU5HU19DTURfSEVBRF9EQ1Nf U0hPUlRfV1JJVEVfMCA1Cj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfTUFJTl9TRVRUSU5HU19D TURfSEVBRF9EQ1NfU0hPUlRfV1JJVEVfMSAyMQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX01B SU5fU0VUVElOR1NfQ01EX0hFQURfRENTX0xPTkdfV1JJVEUgNTcKPiArI2RlZmluZSBEU0lfRElS RUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9IRUFEX0RDU19SRUFEIDYKPiArI2RlZmluZSBEU0lf RElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9IRUFEX1NFVF9NQVhfUEtUX1NJWkUgNTUKPiAr I2RlZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9JRF9TSElGVCAxNAo+ICsj ZGVmaW5lIERTSV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX1NJWkVfU0hJRlQgMTYKPiAr I2RlZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9MUF9FTiBCSVQoMjEpCj4g KyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfTUFJTl9TRVRUSU5HU19UUklHR0VSX1ZBTF9TSElGVCAy NAo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfVFJJR0dFUl9WQUxfTUFT SyAweDBGMDAwMDAwCj4gKwo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NUUyAweDAwMDAwMDY4 Cj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NNRF9UUkFOU01JU1NJT04gQklUKDApCj4g KyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX1dSSVRFX0NPTVBMRVRFRCBCSVQoMSkKPiArI2Rl ZmluZSBEU0lfRElSRUNUX0NNRF9TVFNfVFJJR0dFUl9DT01QTEVURUQgQklUKDIpCj4gKyNkZWZp bmUgRFNJX0RJUkVDVF9DTURfU1RTX1JFQURfQ09NUExFVEVEIEJJVCgzKQo+ICsjZGVmaW5lIERT SV9ESVJFQ1RfQ01EX1NUU19BQ0tOT1dMRURHRV9SRUNFSVZFRF9TSElGVCBCSVQoNCkKPiArI2Rl ZmluZSBEU0lfRElSRUNUX0NNRF9TVFNfQUNLTk9XTEVER0VfV0lUSF9FUlJfUkVDRUlWRUQgQklU KDUpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX1RSSUdHRVJfUkVDRUlWRUQgQklUKDYp Cj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX1RFX1JFQ0VJVkVEIEJJVCg3KQo+ICsjZGVm aW5lIERTSV9ESVJFQ1RfQ01EX1NUU19CVEFfQ09NUExFVEVEIEJJVCg4KQo+ICsjZGVmaW5lIERT SV9ESVJFQ1RfQ01EX1NUU19CVEFfRklOSVNIRUQgQklUKDkpCj4gKyNkZWZpbmUgRFNJX0RJUkVD VF9DTURfU1RTX1JFQURfQ09NUExFVEVEX1dJVEhfRVJSIEJJVCgxMCkKPiArI2RlZmluZSBEU0lf RElSRUNUX0NNRF9TVFNfVFJJR0dFUl9WQUxfTUFTSyAweDAwMDA3ODAwCj4gKyNkZWZpbmUgRFNJ X0RJUkVDVF9DTURfU1RTX1RSSUdHRVJfVkFMX1NISUZUIDExCj4gKyNkZWZpbmUgRFNJX0RJUkVD VF9DTURfU1RTX0FDS19WQUxfU0hJRlQgMTYKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9TVFNf QUNLX1ZBTF9NQVNLIDB4RkZGRjAwMDAKPiArCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfUkRf SU5JVCAweDAwMDAwMDZDCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfUkRfSU5JVF9SRVNFVF9T SElGVCAwCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfUkRfSU5JVF9SRVNFVF9NQVNLIDB4RkZG RkZGRkYKPiArCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfV1JEQVQwIDB4MDAwMDAwNzAKPiAr I2RlZmluZSBEU0lfRElSRUNUX0NNRF9XUkRBVDEgMHgwMDAwMDA3NAo+ICsjZGVmaW5lIERTSV9E SVJFQ1RfQ01EX1dSREFUMiAweDAwMDAwMDc4Cj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfV1JE QVQzIDB4MDAwMDAwN0MKPiArCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfUkREQVQgMHgwMDAw MDA4MAo+ICsKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9SRF9QUk9QRVJUWSAweDAwMDAwMDg0 Cj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfUkRfUFJPUEVSVFlfUkRfU0laRV9TSElGVCAwCj4g KyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfUkRfUFJPUEVSVFlfUkRfU0laRV9NQVNLIDB4MDAwMEZG RkYKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9SRF9QUk9QRVJUWV9SRF9JRF9TSElGVCAxNgo+ ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1JEX1BST1BFUlRZX1JEX0lEX01BU0sgMHgwMDAzMDAw MAo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1JEX1BST1BFUlRZX1JEX0RDU05PVEdFTkVSSUNf U0hJRlQgMTgKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9SRF9QUk9QRVJUWV9SRF9EQ1NOT1RH RU5FUklDX01BU0sgMHgwMDA0MDAwMAo+ICsKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9SRF9T VFMgMHgwMDAwMDA4OAo+ICsKPiArI2RlZmluZSBEU0lfVklEX01BSU5fQ1RMIDB4MDAwMDAwOTAK PiArI2RlZmluZSBEU0lfVklEX01BSU5fQ1RMX1NUQVJUX01PREVfU0hJRlQgMAo+ICsjZGVmaW5l IERTSV9WSURfTUFJTl9DVExfU1RBUlRfTU9ERV9NQVNLIDB4MDAwMDAwMDMKPiArI2RlZmluZSBE U0lfVklEX01BSU5fQ1RMX1NUT1BfTU9ERV9TSElGVCAyCj4gKyNkZWZpbmUgRFNJX1ZJRF9NQUlO X0NUTF9TVE9QX01PREVfTUFTSyAweDAwMDAwMDBDCj4gKyNkZWZpbmUgRFNJX1ZJRF9NQUlOX0NU TF9WSURfSURfU0hJRlQgNAo+ICsjZGVmaW5lIERTSV9WSURfTUFJTl9DVExfVklEX0lEX01BU0sg MHgwMDAwMDAzMAo+ICsjZGVmaW5lIERTSV9WSURfTUFJTl9DVExfSEVBREVSX1NISUZUIDYKPiAr I2RlZmluZSBEU0lfVklEX01BSU5fQ1RMX0hFQURFUl9NQVNLIDB4MDAwMDBGQzAKPiArI2RlZmlu ZSBEU0lfVklEX01BSU5fQ1RMX1ZJRF9QSVhFTF9NT0RFXzE2QklUUyAwCj4gKyNkZWZpbmUgRFNJ X1ZJRF9NQUlOX0NUTF9WSURfUElYRUxfTU9ERV8xOEJJVFMgQklUKDEyKQo+ICsjZGVmaW5lIERT SV9WSURfTUFJTl9DVExfVklEX1BJWEVMX01PREVfMThCSVRTX0xPT1NFIEJJVCgxMykKPiArI2Rl ZmluZSBEU0lfVklEX01BSU5fQ1RMX1ZJRF9QSVhFTF9NT0RFXzI0QklUUyAoQklUKDEyKSB8IEJJ VCgxMykpCj4gKyNkZWZpbmUgRFNJX1ZJRF9NQUlOX0NUTF9CVVJTVF9NT0RFIEJJVCgxNCkKPiAr I2RlZmluZSBEU0lfVklEX01BSU5fQ1RMX1NZTkNfUFVMU0VfQUNUSVZFIEJJVCgxNSkKPiArI2Rl ZmluZSBEU0lfVklEX01BSU5fQ1RMX1NZTkNfUFVMU0VfSE9SSVpPTlRBTCBCSVQoMTYpCj4gKyNk ZWZpbmUgRFNJX1ZJRF9NQUlOX0NUTF9SRUdfQkxLTElORV9NT0RFX05VTEwgMAo+ICsjZGVmaW5l IERTSV9WSURfTUFJTl9DVExfUkVHX0JMS0xJTkVfTU9ERV9CTEFOS0lORyBCSVQoMTcpCj4gKyNk ZWZpbmUgRFNJX1ZJRF9NQUlOX0NUTF9SRUdfQkxLTElORV9NT0RFX0xQXzAgQklUKDE4KQo+ICsj ZGVmaW5lIERTSV9WSURfTUFJTl9DVExfUkVHX0JMS0xJTkVfTU9ERV9MUF8xIChCSVQoMTcpIHwg QklUKDE4KSkKPiArI2RlZmluZSBEU0lfVklEX01BSU5fQ1RMX1JFR19CTEtFT0xfTU9ERV9OVUxM IDAKPiArI2RlZmluZSBEU0lfVklEX01BSU5fQ1RMX1JFR19CTEtFT0xfTU9ERV9CTEFOS0lORyBC SVQoMTkpCj4gKyNkZWZpbmUgRFNJX1ZJRF9NQUlOX0NUTF9SRUdfQkxLRU9MX01PREVfTFBfMCBC SVQoMjApCj4gKyNkZWZpbmUgRFNJX1ZJRF9NQUlOX0NUTF9SRUdfQkxLRU9MX01PREVfTFBfMSAo QklUKDE5KSB8IEJJVCgyMCkpCj4gKyNkZWZpbmUgRFNJX1ZJRF9NQUlOX0NUTF9SRUNPVkVSWV9N T0RFX1NISUZUIDIxCj4gKyNkZWZpbmUgRFNJX1ZJRF9NQUlOX0NUTF9SRUNPVkVSWV9NT0RFX01B U0sgMHgwMDYwMDAwMAo+ICsKPiArI2RlZmluZSBEU0lfVklEX1ZTSVpFIDB4MDAwMDAwOTQKPiAr I2RlZmluZSBEU0lfVklEX1ZTSVpFX1ZTQV9MRU5HVEhfU0hJRlQgMAo+ICsjZGVmaW5lIERTSV9W SURfVlNJWkVfVlNBX0xFTkdUSF9NQVNLIDB4MDAwMDAwM0YKPiArI2RlZmluZSBEU0lfVklEX1ZT SVpFX1ZCUF9MRU5HVEhfU0hJRlQgNgo+ICsjZGVmaW5lIERTSV9WSURfVlNJWkVfVkJQX0xFTkdU SF9NQVNLIDB4MDAwMDBGQzAKPiArI2RlZmluZSBEU0lfVklEX1ZTSVpFX1ZGUF9MRU5HVEhfU0hJ RlQgMTIKPiArI2RlZmluZSBEU0lfVklEX1ZTSVpFX1ZGUF9MRU5HVEhfTUFTSyAweDAwMEZGMDAw Cj4gKyNkZWZpbmUgRFNJX1ZJRF9WU0laRV9WQUNUX0xFTkdUSF9TSElGVCAyMAo+ICsjZGVmaW5l IERTSV9WSURfVlNJWkVfVkFDVF9MRU5HVEhfTUFTSyAweDdGRjAwMDAwCj4gKwo+ICsjZGVmaW5l IERTSV9WSURfSFNJWkUxIDB4MDAwMDAwOTgKPiArI2RlZmluZSBEU0lfVklEX0hTSVpFMV9IU0Ff TEVOR1RIX1NISUZUIDAKPiArI2RlZmluZSBEU0lfVklEX0hTSVpFMV9IU0FfTEVOR1RIX01BU0sg MHgwMDAwMDNGRgo+ICsjZGVmaW5lIERTSV9WSURfSFNJWkUxX0hCUF9MRU5HVEhfU0hJRlQgMTAK PiArI2RlZmluZSBEU0lfVklEX0hTSVpFMV9IQlBfTEVOR1RIX01BU0sgMHgwMDBGRkMwMAo+ICsj ZGVmaW5lIERTSV9WSURfSFNJWkUxX0hGUF9MRU5HVEhfU0hJRlQgMjAKPiArI2RlZmluZSBEU0lf VklEX0hTSVpFMV9IRlBfTEVOR1RIX01BU0sgMHg3RkYwMDAwMAo+ICsKPiArI2RlZmluZSBEU0lf VklEX0hTSVpFMiAweDAwMDAwMDlDCj4gKyNkZWZpbmUgRFNJX1ZJRF9IU0laRTJfUkdCX1NJWkVf U0hJRlQgMAo+ICsjZGVmaW5lIERTSV9WSURfSFNJWkUyX1JHQl9TSVpFX01BU0sgMHgwMDAwMUZG Rgo+ICsKPiArI2RlZmluZSBEU0lfVklEX0JMS1NJWkUxIDB4MDAwMDAwQTAKPiArI2RlZmluZSBE U0lfVklEX0JMS1NJWkUxX0JMS0xJTkVfRVZFTlRfUENLX1NISUZUIDAKPiArI2RlZmluZSBEU0lf VklEX0JMS1NJWkUxX0JMS0xJTkVfRVZFTlRfUENLX01BU0sgMHgwMDAwMUZGRgo+ICsjZGVmaW5l IERTSV9WSURfQkxLU0laRTFfQkxLRU9MX1BDS19TSElGVCAxMwo+ICsjZGVmaW5lIERTSV9WSURf QkxLU0laRTFfQkxLRU9MX1BDS19NQVNLIDB4MDNGRkUwMDAKPiArCj4gKyNkZWZpbmUgRFNJX1ZJ RF9CTEtTSVpFMiAweDAwMDAwMEE0Cj4gKyNkZWZpbmUgRFNJX1ZJRF9CTEtTSVpFMl9CTEtMSU5F X1BVTFNFX1BDS19TSElGVCAwCj4gKyNkZWZpbmUgRFNJX1ZJRF9CTEtTSVpFMl9CTEtMSU5FX1BV TFNFX1BDS19NQVNLIDB4MDAwMDFGRkYKPiArCj4gKyNkZWZpbmUgRFNJX1ZJRF9QQ0tfVElNRSAw eDAwMDAwMEE4Cj4gKyNkZWZpbmUgRFNJX1ZJRF9QQ0tfVElNRV9CTEtFT0xfRFVSQVRJT05fU0hJ RlQgMAo+ICsKPiArI2RlZmluZSBEU0lfVklEX0RQSFlfVElNRSAweDAwMDAwMEFDCj4gKyNkZWZp bmUgRFNJX1ZJRF9EUEhZX1RJTUVfUkVHX0xJTkVfRFVSQVRJT05fU0hJRlQgMAo+ICsjZGVmaW5l IERTSV9WSURfRFBIWV9USU1FX1JFR19MSU5FX0RVUkFUSU9OX01BU0sgMHgwMDAwMUZGRgo+ICsj ZGVmaW5lIERTSV9WSURfRFBIWV9USU1FX1JFR19XQUtFVVBfVElNRV9TSElGVCAxMwo+ICsjZGVm aW5lIERTSV9WSURfRFBIWV9USU1FX1JFR19XQUtFVVBfVElNRV9NQVNLIDB4MDBGRkUwMDAKPiAr Cj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NUUyAweDAwMDAwMEJDCj4gKyNkZWZpbmUgRFNJX1ZJ RF9NT0RFX1NUU19WU0dfUlVOTklORyBCSVQoMCkKPiArCj4gKyNkZWZpbmUgRFNJX1ZJRF9WQ0Ff U0VUVElORzEgMHgwMDAwMDBDMAo+ICsjZGVmaW5lIERTSV9WSURfVkNBX1NFVFRJTkcxX01BWF9C VVJTVF9MSU1JVF9TSElGVCAwCj4gKyNkZWZpbmUgRFNJX1ZJRF9WQ0FfU0VUVElORzFfTUFYX0JV UlNUX0xJTUlUX01BU0sgMHgwMDAwRkZGRgo+ICsjZGVmaW5lIERTSV9WSURfVkNBX1NFVFRJTkcx X0JVUlNUX0xQIEJJVCgxNikKPiArCj4gKyNkZWZpbmUgRFNJX1ZJRF9WQ0FfU0VUVElORzIgMHgw MDAwMDBDNAo+ICsjZGVmaW5lIERTSV9WSURfVkNBX1NFVFRJTkcyX0VYQUNUX0JVUlNUX0xJTUlU X1NISUZUIDAKPiArI2RlZmluZSBEU0lfVklEX1ZDQV9TRVRUSU5HMl9FWEFDVF9CVVJTVF9MSU1J VF9NQVNLIDB4MDAwMEZGRkYKPiArI2RlZmluZSBEU0lfVklEX1ZDQV9TRVRUSU5HMl9NQVhfTElO RV9MSU1JVF9TSElGVCAxNgo+ICsjZGVmaW5lIERTSV9WSURfVkNBX1NFVFRJTkcyX01BWF9MSU5F X0xJTUlUX01BU0sgMHhGRkZGMDAwMAo+ICsKPiArI2RlZmluZSBEU0lfQ01EX01PREVfU1RTX0NU TCAweDAwMDAwMEY0Cj4gKyNkZWZpbmUgRFNJX0NNRF9NT0RFX1NUU19DVExfRVJSX05PX1RFX0VO IEJJVCgwKQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9TVFNfQ1RMX0VSUl9URV9NSVNTX0VOIEJJ VCgxKQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9TVFNfQ1RMX0VSUl9TREkxX1VOREVSUlVOX0VO IEJJVCgyKQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9TVFNfQ1RMX0VSUl9TREkyX1VOREVSUlVO X0VOIEJJVCgzKQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9TVFNfQ1RMX0VSUl9VTldBTlRFRF9S RF9FTiBCSVQoNCkKPiArI2RlZmluZSBEU0lfQ01EX01PREVfU1RTX0NUTF9DU01fUlVOTklOR19F TiBCSVQoNSkKPiArI2RlZmluZSBEU0lfQ01EX01PREVfU1RTX0NUTF9FUlJfTk9fVEVfRURHRSBC SVQoMTYpCj4gKyNkZWZpbmUgRFNJX0NNRF9NT0RFX1NUU19DVExfRVJSX1RFX01JU1NfRURHRSBC SVQoMTcpCj4gKyNkZWZpbmUgRFNJX0NNRF9NT0RFX1NUU19DVExfRVJSX1NESTFfVU5ERVJSVU5f RURHRSBCSVQoMTgpCj4gKyNkZWZpbmUgRFNJX0NNRF9NT0RFX1NUU19DVExfRVJSX1NESTJfVU5E RVJSVU5fRURHRSBCSVQoMTkpCj4gKyNkZWZpbmUgRFNJX0NNRF9NT0RFX1NUU19DVExfRVJSX1VO V0FOVEVEX1JEX0VER0UgQklUKDIwKQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9TVFNfQ1RMX0NT TV9SVU5OSU5HX0VER0UgQklUKDIxKQo+ICsKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9TVFNf Q1RMIDB4MDAwMDAwRjgKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9TVFNfQ1RMX0NNRF9UUkFO U01JU1NJT05fRU4gQklUKDApCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NUTF9XUklU RV9DT01QTEVURURfRU4gQklUKDEpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NUTF9U UklHR0VSX0NPTVBMRVRFRF9FTiBCSVQoMikKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9TVFNf Q1RMX1JFQURfQ09NUExFVEVEX0VOIEJJVCgzKQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NU U19DVExfQUNLTk9XTEVER0VfUkVDRUlWRURfRU4gQklUKDQpCj4gKyNkZWZpbmUgRFNJX0RJUkVD VF9DTURfU1RTX0NUTF9BQ0tOT1dMRURHRV9XSVRIX0VSUl9FTiBCSVQoNSkKPiArI2RlZmluZSBE U0lfRElSRUNUX0NNRF9TVFNfQ1RMX1RSSUdHRVJfUkVDRUlWRURfRU4gQklUKDYpCj4gKyNkZWZp bmUgRFNJX0RJUkVDVF9DTURfU1RTX0NUTF9URV9SRUNFSVZFRF9FTiBCSVQoNykKPiArI2RlZmlu ZSBEU0lfRElSRUNUX0NNRF9TVFNfQ1RMX0JUQV9DT01QTEVURURfRU4gQklUKDgpCj4gKyNkZWZp bmUgRFNJX0RJUkVDVF9DTURfU1RTX0NUTF9CVEFfRklOSVNIRURfRU4gQklUKDkpCj4gKyNkZWZp bmUgRFNJX0RJUkVDVF9DTURfU1RTX0NUTF9SRUFEX0NPTVBMRVRFRF9XSVRIX0VSUl9FTiBCSVQo MTApCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NUTF9DTURfVFJBTlNNSVNTSU9OX0VE R0UgQklUKDE2KQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NUU19DVExfV1JJVEVfQ09NUExF VEVEX0VER0UgQklUKDE3KQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NUU19DVExfVFJJR0dF Ul9DT01QTEVURURfRURHRSBCSVQoMTgpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NU TF9SRUFEX0NPTVBMRVRFRF9FREdFIEJJVCgxOSkKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9T VFNfQ1RMX0FDS05PV0xFREdFX1JFQ0VJVkVEX0VER0UgQklUKDIwKQo+ICsjZGVmaW5lIERTSV9E SVJFQ1RfQ01EX1NUU19DVExfQUNLTk9XTEVER0VfV0lUSF9FUlJfRURHRSBCSVQoMjEpCj4gKyNk ZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NUTF9UUklHR0VSX1JFQ0VJVkVEX0VER0UgQklUKDIy KQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NUU19DVExfVEVfUkVDRUlWRURfRURHRSBCSVQo MjMpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NUTF9CVEFfQ09NUExFVEVEX0VER0Ug QklUKDI0KQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NUU19DVExfQlRBX0ZJTklTSEVEX0VE R0UgQklUKDI1KQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NUU19DVExfUkVBRF9DT01QTEVU RURfV0lUSF9FUlJfRURHRSBCSVQoMjYpCj4gKwo+ICsjZGVmaW5lIERTSV9WSURfTU9ERV9TVFNf Q1RMIDB4MDAwMDAxMDAKPiArI2RlZmluZSBEU0lfVklEX01PREVfU1RTX0NUTF9WU0dfUlVOTklO RyBCSVQoMCkKPiArI2RlZmluZSBEU0lfVklEX01PREVfU1RTX0NUTF9FUlJfTUlTU0lOR19EQVRB IEJJVCgxKQo+ICsjZGVmaW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX0VSUl9NSVNTSU5HX0hTWU5D IEJJVCgyKQo+ICsjZGVmaW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX0VSUl9NSVNTSU5HX1ZTWU5D IEJJVCgzKQo+ICsjZGVmaW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX1JFR19FUlJfU01BTExfTEVO R1RIIEJJVCg0KQo+ICsjZGVmaW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX1JFR19FUlJfU01BTExf SEVJR0hUIEJJVCg1KQo+ICsjZGVmaW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX0VSUl9CVVJTVFdS SVRFIEJJVCg2KQo+ICsjZGVmaW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX0VSUl9MT05HV1JJVEUg QklUKDcpCj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NUU19DVExfRVJSX0xPTkdSRUFEIEJJVCg4 KQo+ICsjZGVmaW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX0VSUl9WUlNfV1JPTkdfTEVOR1RIIEJJ VCg5KQo+ICsjZGVmaW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX1ZTR19SVU5OSU5HX0VER0UgQklU KDE2KQo+ICsjZGVmaW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX0VSUl9NSVNTSU5HX0RBVEFfRURH RSBCSVQoMTcpCj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NUU19DVExfRVJSX01JU1NJTkdfSFNZ TkNfRURHRSBCSVQoMTgpCj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NUU19DVExfRVJSX01JU1NJ TkdfVlNZTkNfRURHRSBCSVQoMTkpCj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NUU19DVExfUkVH X0VSUl9TTUFMTF9MRU5HVEhfRURHRSBCSVQoMjApCj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NU U19DVExfUkVHX0VSUl9TTUFMTF9IRUlHSFRfRURHRSBCSVQoMjEpCj4gKyNkZWZpbmUgRFNJX1ZJ RF9NT0RFX1NUU19DVExfRVJSX0JVUlNUV1JJVEVfRURHRSBCSVQoMjIpCj4gKyNkZWZpbmUgRFNJ X1ZJRF9NT0RFX1NUU19DVExfRVJSX0xPTkdXUklURV9FREdFIEJJVCgyMykKPiArI2RlZmluZSBE U0lfVklEX01PREVfU1RTX0NUTF9FUlJfTE9OR1JFQURfRURHRSBCSVQoMjQpCj4gKyNkZWZpbmUg RFNJX1ZJRF9NT0RFX1NUU19DVExfRVJSX1ZSU19XUk9OR19MRU5HVEhfRURHRSBCSVQoMjUpCj4g KyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NUU19DVExfVlNHX1JFQ09WRVJZX0VER0UgQklUKDI2KQo+ ICsKPiArI2RlZmluZSBEU0lfVEdfU1RTX0NUTCAweDAwMDAwMTA0Cj4gKyNkZWZpbmUgRFNJX01D VExfREhQWV9FUlJfQ1RMIDB4MDAwMDAxMDgKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX1NUU19D TFIgMHgwMDAwMDExMAo+ICsKPiArI2RlZmluZSBEU0lfQ01EX01PREVfU1RTX0NMUiAweDAwMDAw MTE0Cj4gKyNkZWZpbmUgRFNJX0NNRF9NT0RFX1NUU19DTFJfRVJSX05PX1RFX0NMUiBCSVQoMCkK PiArI2RlZmluZSBEU0lfQ01EX01PREVfU1RTX0NMUl9FUlJfVEVfTUlTU19DTFIgQklUKDEpCj4g KyNkZWZpbmUgRFNJX0NNRF9NT0RFX1NUU19DTFJfRVJSX1NESTFfVU5ERVJSVU5fQ0xSIEJJVCgy KQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9TVFNfQ0xSX0VSUl9TREkyX1VOREVSUlVOX0NMUiBC SVQoMykKPiArI2RlZmluZSBEU0lfQ01EX01PREVfU1RTX0NMUl9FUlJfVU5XQU5URURfUkRfQ0xS IEJJVCg0KQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9TVFNfQ0xSX0NTTV9SVU5OSU5HX0NMUiBC SVQoNSkKPiArCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NMUiAweDAwMDAwMTE4Cj4g KyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NMUl9DTURfVFJBTlNNSVNTSU9OX0NMUiBCSVQo MCkKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9TVFNfQ0xSX1dSSVRFX0NPTVBMRVRFRF9DTFIg QklUKDEpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NMUl9UUklHR0VSX0NPTVBMRVRF RF9DTFIgQklUKDIpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NMUl9SRUFEX0NPTVBM RVRFRF9DTFIgQklUKDMpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NMUl9BQ0tOT1dM RURHRV9SRUNFSVZFRF9DTFIgQklUKDQpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NM Ul9BQ0tOT1dMRURHRV9XSVRIX0VSUl9SRUNFSVZFRF9DTFIgQklUKDUpCj4gKyNkZWZpbmUgRFNJ X0RJUkVDVF9DTURfU1RTX0NMUl9UUklHR0VSX1JFQ0VJVkVEX0NMUiBCSVQoNikKPiArI2RlZmlu ZSBEU0lfRElSRUNUX0NNRF9TVFNfQ0xSX1RFX1JFQ0VJVkVEX0NMUiBCSVQoNykKPiArI2RlZmlu ZSBEU0lfRElSRUNUX0NNRF9TVFNfQ0xSX0JUQV9DT01QTEVURURfQ0xSIEJJVCg4KQo+ICsjZGVm aW5lIERTSV9ESVJFQ1RfQ01EX1NUU19DTFJfQlRBX0ZJTklTSEVEX0NMUiBCSVQoOSkKPiArI2Rl ZmluZSBEU0lfRElSRUNUX0NNRF9TVFNfQ0xSX1JFQURfQ09NUExFVEVEX1dJVEhfRVJSX0NMUiBC SVQoMTApCj4gKwo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1JEX1NUU19DTFIgMHgwMDAwMDEx Qwo+ICsjZGVmaW5lIERTSV9WSURfTU9ERV9TVFNfQ0xSIDB4MDAwMDAxMjAKPiArI2RlZmluZSBE U0lfVEdfU1RTX0NMUiAweDAwMDAwMTI0Cj4gKyNkZWZpbmUgRFNJX01DVExfRFBIWV9FUlJfQ0xS IDB4MDAwMDAxMjgKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX1NUU19GTEFHIDB4MDAwMDAxMzAK PiArI2RlZmluZSBEU0lfQ01EX01PREVfU1RTX0ZMQUcgMHgwMDAwMDEzNAo+ICsjZGVmaW5lIERT SV9ESVJFQ1RfQ01EX1NUU19GTEFHIDB4MDAwMDAxMzgKPiArI2RlZmluZSBEU0lfRElSRUNUX0NN RF9SRF9TVFNfRkxBRyAweDAwMDAwMTNDCj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NUU19GTEFH IDB4MDAwMDAxNDAKPiArI2RlZmluZSBEU0lfVEdfU1RTX0ZMQUcgMHgwMDAwMDE0NAo+ICsKPiAr I2RlZmluZSBEU0lfRFBIWV9MQU5FU19UUklNIDB4MDAwMDAxNTAKPiArI2RlZmluZSBEU0lfRFBI WV9MQU5FU19UUklNX0RQSFlfU0tFV19EQVQxX1NISUZUIDAKPiArI2RlZmluZSBEU0lfRFBIWV9M QU5FU19UUklNX0RQSFlfU0tFV19EQVQxX01BU0sgMHgwMDAwMDAwMwo+ICsjZGVmaW5lIERTSV9E UEhZX0xBTkVTX1RSSU1fRFBIWV9DRF9PRkZfREFUMSBCSVQoMikKPiArI2RlZmluZSBEU0lfRFBI WV9MQU5FU19UUklNX0RQSFlfSFNUWF9TTEVXUkFURV9VUF9EQVQxIEJJVCgzKQo+ICsjZGVmaW5l IERTSV9EUEhZX0xBTkVTX1RSSU1fRFBIWV9IU1RYX1NMRVdSQVRFX0RPV05fREFUMSBCSVQoNCkK PiArI2RlZmluZSBEU0lfRFBIWV9MQU5FU19UUklNX0RQSFlfVEVTVF9SRVNFUlZFRF8xX0RBVDEg QklUKDUpCj4gKyNkZWZpbmUgRFNJX0RQSFlfTEFORVNfVFJJTV9EUEhZX1NLRVdfQ0xLX1NISUZU IDYKPiArI2RlZmluZSBEU0lfRFBIWV9MQU5FU19UUklNX0RQSFlfU0tFV19DTEtfTUFTSyAweDAw MDAwMEMwCj4gKyNkZWZpbmUgRFNJX0RQSFlfTEFORVNfVFJJTV9EUEhZX0xQX1JYX1ZJTF9DTEtf U0hJRlQgOAo+ICsjZGVmaW5lIERTSV9EUEhZX0xBTkVTX1RSSU1fRFBIWV9MUF9SWF9WSUxfQ0xL X01BU0sgMHgwMDAwMDMwMAo+ICsjZGVmaW5lIERTSV9EUEhZX0xBTkVTX1RSSU1fRFBIWV9MUF9U WF9TTEVXUkFURV9DTEtfU0hJRlQgMTAKPiArI2RlZmluZSBEU0lfRFBIWV9MQU5FU19UUklNX0RQ SFlfTFBfVFhfU0xFV1JBVEVfQ0xLX01BU0sgMHgwMDAwMEMwMAo+ICsjZGVmaW5lIERTSV9EUEhZ X0xBTkVTX1RSSU1fRFBIWV9TUEVDU185MF84MUJfMF84MSAwCj4gKyNkZWZpbmUgRFNJX0RQSFlf TEFORVNfVFJJTV9EUEhZX1NQRUNTXzkwXzgxQl8wXzkwIEJJVCgxMikKPiArI2RlZmluZSBEU0lf RFBIWV9MQU5FU19UUklNX0RQSFlfSFNUWF9TTEVXUkFURV9VUF9DTEsgQklUKDEzKQo+ICsjZGVm aW5lIERTSV9EUEhZX0xBTkVTX1RSSU1fRFBIWV9IU1RYX1NMRVdSQVRFX0RPV05fQ0xLIEJJVCgx NCkKPiArI2RlZmluZSBEU0lfRFBIWV9MQU5FU19UUklNX0RQSFlfVEVTVF9SRVNFUlZFRF8xX0NM SyBCSVQoMTUpCj4gKyNkZWZpbmUgRFNJX0RQSFlfTEFORVNfVFJJTV9EUEhZX1NLRVdfREFUMiBC SVQoMTYpCj4gKyNkZWZpbmUgRFNJX0RQSFlfTEFORVNfVFJJTV9EUEhZX0hTVFhfU0xFV1JBVEVf VVBfREFUMiBCSVQoMTgpCj4gKyNkZWZpbmUgRFNJX0RQSFlfTEFORVNfVFJJTV9EUEhZX0hTVFhf U0xFV1JBVEVfRE9XTl9EQVQyIEJJVCgxOSkKPiArI2RlZmluZSBEU0lfRFBIWV9MQU5FU19UUklN X0RQSFlfVEVTVF9SRVNFUlZFRF8xX0RBVDIgQklUKDIwKQo+ICsKPiArI2RlZmluZSBEU0lfSURf UkVHCTB4MDAwMDBGRjAKPiArCj4gKyNlbmRpZiAvKiBfX0RSTV9NQ0RFX0RTSV9SRUdTICovCj4g LS0gCj4gMi4yMC4xCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwg Q29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVs