From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/4] drm/mcde: Add new driver for ST-Ericsson MCDE Date: Thu, 7 Feb 2019 23:22:39 +0100 Message-ID: <20190207222239.GC23159@phenom.ffwll.local> References: <20190207083647.20615-1-linus.walleij@linaro.org> <20190207083647.20615-4-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 31E7F6ED22 for ; Thu, 7 Feb 2019 22:22:45 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id b17so1235769eds.2 for ; Thu, 07 Feb 2019 14:22:45 -0800 (PST) Content-Disposition: inline In-Reply-To: <20190207083647.20615-4-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: David Airlie , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBGZWIgMDcsIDIwMTkgYXQgMDk6MzY6NDZBTSArMDEwMCwgTGludXMgV2FsbGVpaiB3 cm90ZToKPiBUaGlzIGFkZHMgYSBuZXcgRFJNIGRyaXZlciBmb3IgdGhlIFNULUVyaWNzc29uIE11 bHRpIENoYW5uZWwKPiBEaXNwbGF5IEVuZ2luZSwgTUNERSBkaXNwbGF5IGNvbnRyb2xsZXIuCj4g Cj4gVGhpcyBoYXJkd2FyZSBoYXMgdGhyZWUgaW5kZXBlbmRlbnQgRFNJIGhvc3RzIGFuZCBjYW4g Y29tcG9zaXQKPiBhbmQgZGlzcGxheSBzZXZlcmFsIG1lbW9yeSBidWZmZXJzIG9udG8gYW4gTENE IGRpc3BsYXkuIEl0Cj4gd2FzIGRldmVsb3BlZCBmb3Igc2V2ZXJhbCB5ZWFycyBpbnNpZGUgb2Yg U1QtRXJpY3Nzb24gYW5kCj4gc2hpcHBlZCB3aXRoIGEgZmV3IG1pbGxpb24gbW9iaWxlIHBob25l cyBmcm9tIFNvbnkgYW5kIFNhbXN1bmcsCj4gYXMgd2VsbCBhcyB3aXRoIHRoZSBTbm93YmFsbCBj b21tdW5pdHkgZGV2ZWxvcG1lbnQgYm9hcmQuCj4gCj4gVGhlIGRyaXZlciBpcyBjdXJyZW50bHkg cHJldHR5IHJ1ZGltZW50YXJ5IGJ1dCBzdXBwb3J0cyBhCj4gc2ltcGxlIGZyYW1lYnVmZmVyIHNv IHdlIGNhbiBnZXQgcGVuZ3VpbnMgYW5kIGdyYXBoaWNzIHdoZW4KPiB1c2luZyB0aGVzZSBTb0Nz Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IExpbnVzIFdhbGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJv Lm9yZz4KClNjcm9sbGVkIHRocm91Z2ggYSBiaXQsIGJ1bmNoIG9mIGNvbW1lbnRzIGFib3V0IGxh dGVzdCBkcm0gZXZvbHV0aW9uIGFuZAp3aGF0IHdvdWxkIHNpbXBsaWZ5IHRoZSBjb2RlIChhc3N1 bWluZyBJIGFjdHVhbGx5IHVuZGVyc3RhbmQgaXQpIGJlbG93LgoKQ2hlZXJzLCBEYW5pZWwKCj4g LS0tCj4gIERvY3VtZW50YXRpb24vZ3B1L2RyaXZlcnMucnN0ICAgICAgIHwgICAgMSArCj4gIERv Y3VtZW50YXRpb24vZ3B1L21jZGUucnN0ICAgICAgICAgIHwgICAgOCArCj4gIE1BSU5UQUlORVJT ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNyArCj4gIGRyaXZlcnMvZ3B1L2RybS9LY29u ZmlnICAgICAgICAgICAgIHwgICAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAg ICAgICAgIHwgICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9tY2RlL0tjb25maWcgICAgICAgIHwg ICAxOCArCj4gIGRyaXZlcnMvZ3B1L2RybS9tY2RlL01ha2VmaWxlICAgICAgIHwgICAgMyArCj4g IGRyaXZlcnMvZ3B1L2RybS9tY2RlL21jZGVfZGlzcGxheS5jIHwgMTI4NCArKysrKysrKysrKysr KysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9tY2RlL21jZGVfZHJtLmggICAgIHwgICA1 MiArCj4gIGRyaXZlcnMvZ3B1L2RybS9tY2RlL21jZGVfZHJ2LmMgICAgIHwgIDU0MCArKysrKysr KysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2RzaS5jICAgICB8IDEzNzQgKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gIDExIGZpbGVzIGNoYW5nZWQsIDMyOTAgaW5zZXJ0aW9u cygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ncHUvbWNkZS5yc3QKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tY2RlL0tjb25maWcKPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tY2RlL01ha2VmaWxlCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2Rpc3BsYXkuYwo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21jZGUvbWNkZV9kcm0uaAo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL21jZGUvbWNkZV9kcnYuYwo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL21jZGUvbWNkZV9kc2kuYwo+IAo+IGRpZmYgLS1naXQgYS9Eb2N1 bWVudGF0aW9uL2dwdS9kcml2ZXJzLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RyaXZlcnMucnN0 Cj4gaW5kZXggN2MxNjcyMTE4YTczLi40YjllYzUwNjAxZjIgMTAwNjQ0Cj4gLS0tIGEvRG9jdW1l bnRhdGlvbi9ncHUvZHJpdmVycy5yc3QKPiArKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcml2ZXJz LnJzdAo+IEBAIC03LDYgKzcsNyBAQCBHUFUgRHJpdmVyIERvY3VtZW50YXRpb24KPiAgICAgYW1k Z3B1Cj4gICAgIGFtZGdwdS1kYwo+ICAgICBpOTE1Cj4gKyAgIG1jZGUKPiAgICAgbWVzb24KPiAg ICAgcGwxMTEKPiAgICAgdGVncmEKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvbWNk ZS5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9tY2RlLnJzdAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5jNjllOTc3ZGVmZGEKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvRG9jdW1lbnRhdGlvbi9ncHUvbWNkZS5yc3QKPiBAQCAtMCwwICsxLDggQEAKPiArLi4gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArCj4gKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiArIGRybS9tY2RlIFNULUVyaWNz c29uIE1DREUgTXVsdGktY2hhbm5lbCBkaXNwbGF5IGVuZ2luZQo+ICs9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gKwo+ICsuLiBrZXJuZWwt ZG9jOjogZHJpdmVycy9ncHUvZHJtL21jZGUvbWNkZV9kcnYuYwo+ICsgICA6ZG9jOiBTVC1Fcmlj c3NvbiBNQ0RFIERSTSBEcml2ZXIKPiBkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJ TkVSUwo+IGluZGV4IDMyZDQ0NDQ3NmE5MC4uMzAzOGM1MTkzNDBkIDEwMDY0NAo+IC0tLSBhL01B SU5UQUlORVJTCj4gKysrIGIvTUFJTlRBSU5FUlMKPiBAQCAtNDkwNSw2ICs0OTA1LDEzIEBAIFM6 CU1haW50YWluZWQKPiAgRjoJZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vc3Q3NzM1ci5jCj4gIEY6 CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3NpdHJvbml4LHN0Nzcz NXIudHh0Cj4gIAo+ICtEUk0gRFJJVkVSIEZPUiBTVC1FUklDU1NPTiBNQ0RFCj4gK006CUxpbnVz IFdhbGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4KPiArVDoJZ2l0IGdpdDovL2Fub25n aXQuZnJlZWRlc2t0b3Aub3JnL2RybS9kcm0tbWlzYwo+ICtTOglNYWludGFpbmVkCj4gK0Y6CWRy aXZlcnMvZ3B1L2RybS9tY2RlLwo+ICtGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu Z3MvZGlzcGxheS9zdGUsbWNkZS50eHQKPiArCj4gIERSTSBEUklWRVIgRk9SIFRERlggVklERU8g Q0FSRFMKPiAgUzoJT3JwaGFuIC8gT2Jzb2xldGUKPiAgRjoJZHJpdmVycy9ncHUvZHJtL3RkZngv Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJt L0tjb25maWcKPiBpbmRleCA0Mzg1ZjAwZTFkMDUuLjg2ODllYTQ2YzNiYyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmln Cj4gQEAgLTMzMyw2ICszMzMsOCBAQCBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS90dmUyMDAvS2Nv bmZpZyIKPiAgCj4gIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL3hlbi9LY29uZmlnIgo+ICAKPiAr c291cmNlICJkcml2ZXJzL2dwdS9kcm0vbWNkZS9LY29uZmlnIgo+ICsKPiAgIyBLZWVwIGxlZ2Fj eSBkcml2ZXJzIGxhc3QKPiAgCj4gIG1lbnVjb25maWcgRFJNX0xFR0FDWQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiBp bmRleCBjZThkMWQzODQzMTkuLmViYzQ0ODkzYjEzYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiBAQCAtMTA5 LDMgKzEwOSw0IEBAIG9iai0kKENPTkZJR19EUk1fVElOWURSTSkgKz0gdGlueWRybS8KPiAgb2Jq LSQoQ09ORklHX0RSTV9QTDExMSkgKz0gcGwxMTEvCj4gIG9iai0kKENPTkZJR19EUk1fVFZFMjAw KSArPSB0dmUyMDAvCj4gIG9iai0kKENPTkZJR19EUk1fWEVOKSArPSB4ZW4vCj4gK29iai0kKENP TkZJR19EUk1fTUNERSkgKz0gbWNkZS8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21j ZGUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9tY2RlL0tjb25maWcKPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYjM5OTAxMjY1NjJjCj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tY2RlL0tjb25maWcKPiBAQCAtMCwwICsxLDE4IEBA Cj4gK2NvbmZpZyBEUk1fTUNERQo+ICsJdHJpc3RhdGUgIkRSTSBTdXBwb3J0IGZvciBTVC1Fcmlj c3NvbiBNQ0RFIChNdWx0aWNoYW5uZWwgRGlzcGxheSBFbmdpbmUpIgo+ICsJZGVwZW5kcyBvbiBE Uk0KPiArCWRlcGVuZHMgb24gQ01BCj4gKwlkZXBlbmRzIG9uIEFSTSB8fCBDT01QSUxFX1RFU1QK PiArCWRlcGVuZHMgb24gT0YKPiArCXNlbGVjdCBNRkRfU1lTQ09OCj4gKwlzZWxlY3QgRFJNX01J UElfRFNJCj4gKwlzZWxlY3QgRFJNX0JSSURHRQo+ICsJc2VsZWN0IERSTV9QQU5FTF9CUklER0UK PiArCXNlbGVjdCBEUk1fS01TX0hFTFBFUgo+ICsJc2VsZWN0IERSTV9LTVNfQ01BX0hFTFBFUgo+ ICsJc2VsZWN0IERSTV9HRU1fQ01BX0hFTFBFUgo+ICsJc2VsZWN0IFZUX0hXX0NPTlNPTEVfQklO RElORyBpZiBGUkFNRUJVRkZFUl9DT05TT0xFCj4gKwloZWxwCj4gKwkgIENob29zZSB0aGlzIG9w dGlvbiBmb3IgRFJNIHN1cHBvcnQgZm9yIHRoZSBTVC1Fcmljc3NvbiBNQ0RFCj4gKwkgIE11bHRp LUNoYW5uZWwgRGlzcGxheSBFbmdpbmUuCj4gKwkgIElmIE0gaXMgc2VsZWN0ZWQgdGhlIG1vZHVs ZSB3aWxsIGJlIGNhbGxlZCBtY2RlX2RybS4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21jZGUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vbWNkZS9NYWtlZmlsZQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5mZTI4ZjRlMGZlNDYKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21jZGUvTWFrZWZpbGUKPiBAQCAtMCwwICsx LDMgQEAKPiArbWNkZV9kcm0teSArPQltY2RlX2Rydi5vIG1jZGVfZHNpLm8gbWNkZV9kaXNwbGF5 Lm8KPiArCj4gK29iai0kKENPTkZJR19EUk1fTUNERSkgKz0gbWNkZV9kcm0ubwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9tY2RlL21jZGVfZGlzcGxheS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMDAwMDAuLmVmYTRjMWM3NTJhOAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vbWNkZS9tY2RlX2Rpc3BsYXkuYwo+IEBAIC0wLDAgKzEsMTI4NCBAQAo+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MTggTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgo+ICsgKiBQYXJ0cyBv ZiB0aGlzIGZpbGUgd2VyZSBiYXNlZCBvbiB0aGUgTUNERSBkcml2ZXIgYnkgTWFyY3VzIExvcmVu dHpvbgo+ICsgKiAoQykgU1QtRXJpY3Nzb24gU0EgMjAxMwo+ICsgKi8KPiArI2luY2x1ZGUgPGxp bnV4L2Nsay5oPgo+ICsjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvZG1hLWJ1Zi5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4KPiArCj4gKyNpbmNs dWRlIDxkcm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgo+ ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmg+Cj4gKyNpbmNsdWRl IDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fc2ltcGxlX2tt c19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fbWlwaV9kc2kuaD4KPiArI2luY2x1ZGUg PHZpZGVvL21pcGlfZGlzcGxheS5oPgo+ICsKPiArI2luY2x1ZGUgIm1jZGVfZHJtLmgiCj4gKwo+ ICsvKiBQUCAocGl4ZWwgcHJvY2Vzc29yKSBpbnRlcnJ1cHRzICovCj4gKyNkZWZpbmUgTUNERV9J TVNDUFAgMHgwMDAwMDEwNAo+ICsjZGVmaW5lIE1DREVfUklTUFAgMHgwMDAwMDExNAo+ICsjZGVm aW5lIE1DREVfTUlTUFAgMHgwMDAwMDEyNAo+ICsjZGVmaW5lIE1DREVfU0lTUFAgMHgwMDAwMDEz NAo+ICsKPiArI2RlZmluZSBNQ0RFX1BQX1ZDTVBBIEJJVCgwKQo+ICsjZGVmaW5lIE1DREVfUFBf VkNNUEIgQklUKDEpCj4gKyNkZWZpbmUgTUNERV9QUF9WU0NDMCBCSVQoMikKPiArI2RlZmluZSBN Q0RFX1BQX1ZTQ0MxIEJJVCgzKQo+ICsjZGVmaW5lIE1DREVfUFBfVkNNUEMwIEJJVCg0KQo+ICsj ZGVmaW5lIE1DREVfUFBfVkNNUEMxIEJJVCg1KQo+ICsjZGVmaW5lIE1DREVfUFBfUk9URkRfQSBC SVQoNikKPiArI2RlZmluZSBNQ0RFX1BQX1JPVEZEX0IgQklUKDcpCj4gKwo+ICsvKiBPdmVybGF5 IGludGVycnVwdHMgKi8KPiArI2RlZmluZSBNQ0RFX0lNU0NPVkwgMHgwMDAwMDEwOAo+ICsjZGVm aW5lIE1DREVfUklTT1ZMIDB4MDAwMDAxMTgKPiArI2RlZmluZSBNQ0RFX01JU09WTCAweDAwMDAw MTI4Cj4gKyNkZWZpbmUgTUNERV9TSVNPVkwgMHgwMDAwMDEzOAo+ICsKPiArLyogQ2hhbm5lbCBp bnRlcnJ1cHRzICovCj4gKyNkZWZpbmUgTUNERV9JTVNDQ0hOTCAweDAwMDAwMTBDCj4gKyNkZWZp bmUgTUNERV9SSVNDSE5MIDB4MDAwMDAxMUMKPiArI2RlZmluZSBNQ0RFX01JU0NITkwgMHgwMDAw MDEyQwo+ICsjZGVmaW5lIE1DREVfU0lTQ0hOTCAweDAwMDAwMTNDCj4gKwo+ICsvKiBYID0gMC4u OSAqLwo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWEEwIDB4MDAwMDAyMDAKPiArI2RlZmluZSBNQ0RF X0VYVFNSQ1hBMF9HUk9VUE9GRlNFVCAweDIwCj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQTBfQkFT RUFERFJFU1MwX1NISUZUIDMKPiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hBMF9CQVNFQUREUkVTUzBf TUFTSyAweEZGRkZGRkY4Cj4gKwo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWEExIDB4MDAwMDAyMDQK PiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hBMV9HUk9VUE9GRlNFVCAweDIwCj4gKyNkZWZpbmUgTUNE RV9FWFRTUkNYQTFfQkFTRUFERFJFU1MxX1NISUZUIDMKPiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hB MV9CQVNFQUREUkVTUzFfTUFTSyAweEZGRkZGRkY4Cj4gKwo+ICsvKiBFeHRlcm5hbCBzb3VyY2Vz IDAuLjkgKi8KPiArI2RlZmluZSBNQ0RFX0VYVFNSQzBDT05GIDB4MDAwMDAyMEMKPiArI2RlZmlu ZSBNQ0RFX0VYVFNSQzFDT05GIDB4MDAwMDAyMkMKPiArI2RlZmluZSBNQ0RFX0VYVFNSQzJDT05G IDB4MDAwMDAyNEMKPiArI2RlZmluZSBNQ0RFX0VYVFNSQzNDT05GIDB4MDAwMDAyNkMKPiArI2Rl ZmluZSBNQ0RFX0VYVFNSQzRDT05GIDB4MDAwMDAyOEMKPiArI2RlZmluZSBNQ0RFX0VYVFNSQzVD T05GIDB4MDAwMDAyQUMKPiArI2RlZmluZSBNQ0RFX0VYVFNSQzZDT05GIDB4MDAwMDAyQ0MKPiAr I2RlZmluZSBNQ0RFX0VYVFNSQzdDT05GIDB4MDAwMDAyRUMKPiArI2RlZmluZSBNQ0RFX0VYVFNS QzhDT05GIDB4MDAwMDAzMEMKPiArI2RlZmluZSBNQ0RFX0VYVFNSQzlDT05GIDB4MDAwMDAzMkMK PiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hDT05GX0dST1VQT0ZGU0VUIDB4MjAKPiArI2RlZmluZSBN Q0RFX0VYVFNSQ1hDT05GX0JVRl9JRF9TSElGVCAwCj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQ09O Rl9CVUZfSURfTUFTSyAweDAwMDAwMDAzCj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQ09ORl9CVUZf TkJfU0hJRlQgMgo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWENPTkZfQlVGX05CX01BU0sgMHgwMDAw MDAwQwo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWENPTkZfUFJJX09WTElEX1NISUZUIDQKPiArI2Rl ZmluZSBNQ0RFX0VYVFNSQ1hDT05GX1BSSV9PVkxJRF9NQVNLIDB4MDAwMDAwRjAKPiArI2RlZmlu ZSBNQ0RFX0VYVFNSQ1hDT05GX0JQUF9TSElGVCA4Cj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQ09O Rl9CUFBfTUFTSyAweDAwMDAwRjAwCj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQ09ORl9CUFBfMUJQ UF9QQUwgMAo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWENPTkZfQlBQXzJCUFBfUEFMIDEKPiArI2Rl ZmluZSBNQ0RFX0VYVFNSQ1hDT05GX0JQUF80QlBQX1BBTCAyCj4gKyNkZWZpbmUgTUNERV9FWFRT UkNYQ09ORl9CUFBfOEJQUF9QQUwgMwo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWENPTkZfQlBQX1JH QjQ0NCA0Cj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQ09ORl9CUFBfQVJHQjQ0NDQgNQo+ICsjZGVm aW5lIE1DREVfRVhUU1JDWENPTkZfQlBQX0lSR0IxNTU1IDYKPiArI2RlZmluZSBNQ0RFX0VYVFNS Q1hDT05GX0JQUF9SR0I1NjUgNwo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWENPTkZfQlBQX1JHQjg4 OCA4Cj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQ09ORl9CUFBfWFJHQjg4ODggOQo+ICsjZGVmaW5l IE1DREVfRVhUU1JDWENPTkZfQlBQX0FSR0I4ODg4IDEwCj4gKyNkZWZpbmUgTUNERV9FWFRTUkNY Q09ORl9CUFBfWUNCQ1I0MjIgMTEKPiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hDT05GX0JHUiBCSVQo MTIpCj4gKyNkZWZpbmUgTUNERV9FWFRTUkNYQ09ORl9CRUJPIEJJVCgxMykKPiArI2RlZmluZSBN Q0RFX0VYVFNSQ1hDT05GX0JFUE8gQklUKDE0KQo+ICsjZGVmaW5lIE1DREVfRVhUU1JDWENPTkZf VFVOTkVMSU5HX0JVRkZFUl9IRUlHSFRfU0hJRlQgMTYKPiArI2RlZmluZSBNQ0RFX0VYVFNSQ1hD T05GX1RVTk5FTElOR19CVUZGRVJfSEVJR0hUX01BU0sgMHgwRkZGMDAwMAo+ICsKPiArLyogRXh0 ZXJuYWwgc291cmNlcyAwLi45ICovCj4gKyNkZWZpbmUgTUNERV9FWFRTUkMwQ1IgMHgwMDAwMDIx MAo+ICsjZGVmaW5lIE1DREVfRVhUU1JDMUNSIDB4MDAwMDAyMzAKPiArI2RlZmluZSBNQ0RFX0VY VFNSQzJDUiAweDAwMDAwMjUwCj4gKyNkZWZpbmUgTUNERV9FWFRTUkMzQ1IgMHgwMDAwMDI3MAo+ ICsjZGVmaW5lIE1DREVfRVhUU1JDNENSIDB4MDAwMDAyOTAKPiArI2RlZmluZSBNQ0RFX0VYVFNS QzVDUiAweDAwMDAwMkIwCj4gKyNkZWZpbmUgTUNERV9FWFRTUkM2Q1IgMHgwMDAwMDJEMAo+ICsj ZGVmaW5lIE1DREVfRVhUU1JDN0NSIDB4MDAwMDAyRjAKPiArI2RlZmluZSBNQ0RFX0VYVFNSQzhD UiAweDAwMDAwMzEwCj4gKyNkZWZpbmUgTUNERV9FWFRTUkM5Q1IgMHgwMDAwMDMzMAo+ICsjZGVm aW5lIE1DREVfRVhUU1JDMENSX1NFTF9NT0RfU0hJRlQgMAo+ICsjZGVmaW5lIE1DREVfRVhUU1JD MENSX1NFTF9NT0RfTUFTSyAweDAwMDAwMDAzCj4gKyNkZWZpbmUgTUNERV9FWFRTUkMwQ1JfU0VM X01PRF9FWFRFUk5BTF9TRUwgMAo+ICsjZGVmaW5lIE1DREVfRVhUU1JDMENSX1NFTF9NT0RfQVVU T19UT0dHTEUgMQo+ICsjZGVmaW5lIE1DREVfRVhUU1JDMENSX1NFTF9NT0RfU09GVFdBUkVfU0VM IDIKPiArI2RlZmluZSBNQ0RFX0VYVFNSQzBDUl9NVUxUSU9WTF9DVFJMX1BSSU1BUlkgQklUKDIp IC8qIDAgPSBhbGwgKi8KPiArI2RlZmluZSBNQ0RFX0VYVFNSQzBDUl9GU19ESVZfRElTQUJMRSBC SVQoMykKPiArI2RlZmluZSBNQ0RFX0VYVFNSQzBDUl9GT1JDRV9GU19ESVYgQklUKDQpCj4gKwo+ ICsvKiBPbmx5IGV4dGVybmFsIHNvdXJjZSA2IGhhcyBhIHNlY29uZCBhZGRyZXNzIHJlZ2lzdGVy ICovCj4gKyNkZWZpbmUgTUNERV9FWFRTUkM2QTIgMHgwMDAwMDJDOAo+ICsKPiArLyogNiBvdmVy bGF5cyAqLwo+ICsjZGVmaW5lIE1DREVfT1ZMMENSIDB4MDAwMDA0MDAKPiArI2RlZmluZSBNQ0RF X09WTDFDUiAweDAwMDAwNDIwCj4gKyNkZWZpbmUgTUNERV9PVkwyQ1IgMHgwMDAwMDQ0MAo+ICsj ZGVmaW5lIE1DREVfT1ZMM0NSIDB4MDAwMDA0NjAKPiArI2RlZmluZSBNQ0RFX09WTDRDUiAweDAw MDAwNDgwCj4gKyNkZWZpbmUgTUNERV9PVkw1Q1IgMHgwMDAwMDRBMAo+ICsjZGVmaW5lIE1DREVf T1ZMWENSX09WTEVOIEJJVCgwKQo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX0NPTENDVFJMX0RJU0FC TEVEIDAKPiArI2RlZmluZSBNQ0RFX09WTFhDUl9DT0xDQ1RSTF9FTkFCTEVEX05PX1NBVCAoMSA8 PCAxKQo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX0NPTENDVFJMX0VOQUJMRURfU0FUICgyIDw8IDEp Cj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfQ0tFWUdFTiBCSVQoMykKPiArI2RlZmluZSBNQ0RFX09W TFhDUl9BTFBIQVBNRU4gQklUKDQpCj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfT1ZMRiBCSVQoNSkK PiArI2RlZmluZSBNQ0RFX09WTFhDUl9PVkxSIEJJVCg2KQo+ICsjZGVmaW5lIE1DREVfT1ZMWENS X09WTEIgQklUKDcpCj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfRkVUQ0hfUk9QQ19TSElGVCA4Cj4g KyNkZWZpbmUgTUNERV9PVkxYQ1JfRkVUQ0hfUk9QQ19NQVNLIDB4MDAwMEZGMDAKPiArI2RlZmlu ZSBNQ0RFX09WTFhDUl9TVEJQUklPX1NISUZUIDE2Cj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfU1RC UFJJT19NQVNLIDB4MDAwRjAwMDAKPiArI2RlZmluZSBNQ0RFX09WTFhDUl9CVVJTVFNJWkVfU0hJ RlQgMjAKPiArI2RlZmluZSBNQ0RFX09WTFhDUl9CVVJTVFNJWkVfTUFTSyAweDAwRjAwMDAwCj4g KyNkZWZpbmUgTUNERV9PVkxYQ1JfQlVSU1RTSVpFXzFXIDAKPiArI2RlZmluZSBNQ0RFX09WTFhD Ul9CVVJTVFNJWkVfMlcgMQo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX0JVUlNUU0laRV80VyAyCj4g KyNkZWZpbmUgTUNERV9PVkxYQ1JfQlVSU1RTSVpFXzhXIDMKPiArI2RlZmluZSBNQ0RFX09WTFhD Ul9CVVJTVFNJWkVfMTZXIDQKPiArI2RlZmluZSBNQ0RFX09WTFhDUl9CVVJTVFNJWkVfSFdfMVcg OAo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX0JVUlNUU0laRV9IV18yVyA5Cj4gKyNkZWZpbmUgTUNE RV9PVkxYQ1JfQlVSU1RTSVpFX0hXXzRXIDEwCj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfQlVSU1RT SVpFX0hXXzhXIDExCj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfQlVSU1RTSVpFX0hXXzE2VyAxMgo+ ICsjZGVmaW5lIE1DREVfT1ZMWENSX01BWE9VVFNUQU5ESU5HX1NISUZUIDI0Cj4gKyNkZWZpbmUg TUNERV9PVkxYQ1JfTUFYT1VUU1RBTkRJTkdfTUFTSyAweDBGMDAwMDAwCj4gKyNkZWZpbmUgTUNE RV9PVkxYQ1JfTUFYT1VUU1RBTkRJTkdfMV9SRVEgMAo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX01B WE9VVFNUQU5ESU5HXzJfUkVRIDEKPiArI2RlZmluZSBNQ0RFX09WTFhDUl9NQVhPVVRTVEFORElO R180X1JFUSAyCj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfTUFYT1VUU1RBTkRJTkdfOF9SRVEgMwo+ ICsjZGVmaW5lIE1DREVfT1ZMWENSX01BWE9VVFNUQU5ESU5HXzE2X1JFUSA0Cj4gKyNkZWZpbmUg TUNERV9PVkxYQ1JfUk9UQlVSU1RTSVpFX1NISUZUIDI4Cj4gKyNkZWZpbmUgTUNERV9PVkxYQ1Jf Uk9UQlVSU1RTSVpFX01BU0sgMHhGMDAwMDAwMAo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX1JPVEJV UlNUU0laRV8xVyAwCj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfUk9UQlVSU1RTSVpFXzJXIDEKPiAr I2RlZmluZSBNQ0RFX09WTFhDUl9ST1RCVVJTVFNJWkVfNFcgMgo+ICsjZGVmaW5lIE1DREVfT1ZM WENSX1JPVEJVUlNUU0laRV84VyAzCj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfUk9UQlVSU1RTSVpF XzE2VyA0Cj4gKyNkZWZpbmUgTUNERV9PVkxYQ1JfUk9UQlVSU1RTSVpFX0hXXzFXIDgKPiArI2Rl ZmluZSBNQ0RFX09WTFhDUl9ST1RCVVJTVFNJWkVfSFdfMlcgOQo+ICsjZGVmaW5lIE1DREVfT1ZM WENSX1JPVEJVUlNUU0laRV9IV180VyAxMAo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX1JPVEJVUlNU U0laRV9IV184VyAxMQo+ICsjZGVmaW5lIE1DREVfT1ZMWENSX1JPVEJVUlNUU0laRV9IV18xNlcg MTIKPiArCj4gKyNkZWZpbmUgTUNERV9PVkwwQ09ORiAweDAwMDAwNDA0Cj4gKyNkZWZpbmUgTUNE RV9PVkwxQ09ORiAweDAwMDAwNDI0Cj4gKyNkZWZpbmUgTUNERV9PVkwyQ09ORiAweDAwMDAwNDQ0 Cj4gKyNkZWZpbmUgTUNERV9PVkwzQ09ORiAweDAwMDAwNDY0Cj4gKyNkZWZpbmUgTUNERV9PVkw0 Q09ORiAweDAwMDAwNDg0Cj4gKyNkZWZpbmUgTUNERV9PVkw1Q09ORiAweDAwMDAwNEE0Cj4gKyNk ZWZpbmUgTUNERV9PVkxYQ09ORl9QUExfU0hJRlQgMAo+ICsjZGVmaW5lIE1DREVfT1ZMWENPTkZf UFBMX01BU0sgMHgwMDAwMDdGRgo+ICsjZGVmaW5lIE1DREVfT1ZMWENPTkZfRVhUU1JDX0lEX1NI SUZUIDExCj4gKyNkZWZpbmUgTUNERV9PVkxYQ09ORl9FWFRTUkNfSURfTUFTSyAweDAwMDA3ODAw Cj4gKyNkZWZpbmUgTUNERV9PVkxYQ09ORl9MUEZfU0hJRlQgMTYKPiArI2RlZmluZSBNQ0RFX09W TFhDT05GX0xQRl9NQVNLIDB4MDdGRjAwMDAKPiArCj4gKyNkZWZpbmUgTUNERV9PVkwwQ09ORjIg MHgwMDAwMDQwOAo+ICsjZGVmaW5lIE1DREVfT1ZMMUNPTkYyIDB4MDAwMDA0MjgKPiArI2RlZmlu ZSBNQ0RFX09WTDJDT05GMiAweDAwMDAwNDQ4Cj4gKyNkZWZpbmUgTUNERV9PVkwzQ09ORjIgMHgw MDAwMDQ2OAo+ICsjZGVmaW5lIE1DREVfT1ZMNENPTkYyIDB4MDAwMDA0ODgKPiArI2RlZmluZSBN Q0RFX09WTDVDT05GMiAweDAwMDAwNEE4Cj4gKyNkZWZpbmUgTUNERV9PVkxYQ09ORjJfQlBfUEVS X1BJWEVMX0FMUEhBIDAKPiArI2RlZmluZSBNQ0RFX09WTFhDT05GMl9CUF9DT05TVEFOVF9BTFBI QSBCSVQoMCkKPiArI2RlZmluZSBNQ0RFX09WTFhDT05GMl9BTFBIQVZBTFVFX1NISUZUIDEKPiAr I2RlZmluZSBNQ0RFX09WTFhDT05GMl9BTFBIQVZBTFVFX01BU0sgMHgwMDAwMDFGRQo+ICsjZGVm aW5lIE1DREVfT1ZMWENPTkYyX09QUSBCSVQoOSkKPiArI2RlZmluZSBNQ0RFX09WTFhDT05GMl9Q SVhPRkZfU0hJRlQgMTAKPiArI2RlZmluZSBNQ0RFX09WTFhDT05GMl9QSVhPRkZfTUFTSyAweDAw MDBGQzAwCj4gKyNkZWZpbmUgTUNERV9PVkxYQ09ORjJfUElYRUxGRVRDSEVSV0FURVJNQVJLTEVW RUxfU0hJRlQgMTYKPiArI2RlZmluZSBNQ0RFX09WTFhDT05GMl9QSVhFTEZFVENIRVJXQVRFUk1B UktMRVZFTF9NQVNLIDB4MUZGRjAwMDAKPiArCj4gKyNkZWZpbmUgTUNERV9PVkwwTEpJTkMgMHgw MDAwMDQwQwo+ICsjZGVmaW5lIE1DREVfT1ZMMUxKSU5DIDB4MDAwMDA0MkMKPiArI2RlZmluZSBN Q0RFX09WTDJMSklOQyAweDAwMDAwNDRDCj4gKyNkZWZpbmUgTUNERV9PVkwzTEpJTkMgMHgwMDAw MDQ2Qwo+ICsjZGVmaW5lIE1DREVfT1ZMNExKSU5DIDB4MDAwMDA0OEMKPiArI2RlZmluZSBNQ0RF X09WTDVMSklOQyAweDAwMDAwNEFDCj4gKwo+ICsjZGVmaW5lIE1DREVfT1ZMMENST1AgMHgwMDAw MDQxMAo+ICsjZGVmaW5lIE1DREVfT1ZMMUNST1AgMHgwMDAwMDQzMAo+ICsjZGVmaW5lIE1DREVf T1ZMMkNST1AgMHgwMDAwMDQ1MAo+ICsjZGVmaW5lIE1DREVfT1ZMM0NST1AgMHgwMDAwMDQ3MAo+ ICsjZGVmaW5lIE1DREVfT1ZMNENST1AgMHgwMDAwMDQ5MAo+ICsjZGVmaW5lIE1DREVfT1ZMNUNS T1AgMHgwMDAwMDRCMAo+ICsjZGVmaW5lIE1DREVfT1ZMWENST1BfVE1SR05fU0hJRlQgMAo+ICsj ZGVmaW5lIE1DREVfT1ZMWENST1BfVE1SR05fTUFTSyAweDAwM0ZGRkZGCj4gKyNkZWZpbmUgTUNE RV9PVkxYQ1JPUF9MTVJHTl9TSElGVCAyMgo+ICsjZGVmaW5lIE1DREVfT1ZMWENST1BfTE1SR05f TUFTSyAweEZGQzAwMDAwCj4gKwo+ICsjZGVmaW5lIE1DREVfT1ZMMENPTVAgMHgwMDAwMDQxNAo+ ICsjZGVmaW5lIE1DREVfT1ZMMUNPTVAgMHgwMDAwMDQzNAo+ICsjZGVmaW5lIE1DREVfT1ZMMkNP TVAgMHgwMDAwMDQ1NAo+ICsjZGVmaW5lIE1DREVfT1ZMM0NPTVAgMHgwMDAwMDQ3NAo+ICsjZGVm aW5lIE1DREVfT1ZMNENPTVAgMHgwMDAwMDQ5NAo+ICsjZGVmaW5lIE1DREVfT1ZMNUNPTVAgMHgw MDAwMDRCNAo+ICsjZGVmaW5lIE1DREVfT1ZMWENPTVBfWFBPU19TSElGVCAwCj4gKyNkZWZpbmUg TUNERV9PVkxYQ09NUF9YUE9TX01BU0sgMHgwMDAwMDdGRgo+ICsjZGVmaW5lIE1DREVfT1ZMWENP TVBfQ0hfSURfU0hJRlQgMTEKPiArI2RlZmluZSBNQ0RFX09WTFhDT01QX0NIX0lEX01BU0sgMHgw MDAwNzgwMAo+ICsjZGVmaW5lIE1DREVfT1ZMWENPTVBfWVBPU19TSElGVCAxNgo+ICsjZGVmaW5l IE1DREVfT1ZMWENPTVBfWVBPU19NQVNLIDB4MDdGRjAwMDAKPiArI2RlZmluZSBNQ0RFX09WTFhD T01QX1pfU0hJRlQgMjcKPiArI2RlZmluZSBNQ0RFX09WTFhDT01QX1pfTUFTSyAweDc4MDAwMDAw Cj4gKwo+ICsjZGVmaW5lIE1DREVfQ1JDIDB4MDAwMDBDMDAKPiArI2RlZmluZSBNQ0RFX0NSQ19D MUVOIEJJVCgyKQo+ICsjZGVmaW5lIE1DREVfQ1JDX0MyRU4gQklUKDMpCj4gKyNkZWZpbmUgTUNE RV9DUkNfU1lDRU4wIEJJVCg3KQo+ICsjZGVmaW5lIE1DREVfQ1JDX1NZQ0VOMSBCSVQoOCkKPiAr I2RlZmluZSBNQ0RFX0NSQ19TSVpFMSBCSVQoOSkKPiArI2RlZmluZSBNQ0RFX0NSQ19TSVpFMiBC SVQoMTApCj4gKyNkZWZpbmUgTUNERV9DUkNfWVVWQ09OVkMxRU4gQklUKDE1KQo+ICsjZGVmaW5l IE1DREVfQ1JDX0NTMUVOIEJJVCgxNikKPiArI2RlZmluZSBNQ0RFX0NSQ19DUzJFTiBCSVQoMTcp Cj4gKyNkZWZpbmUgTUNERV9DUkNfQ1MxUE9MIEJJVCgxOSkKPiArI2RlZmluZSBNQ0RFX0NSQ19D UzJQT0wgQklUKDIwKQo+ICsjZGVmaW5lIE1DREVfQ1JDX0NEMVBPTCBCSVQoMjEpCj4gKyNkZWZp bmUgTUNERV9DUkNfQ0QyUE9MIEJJVCgyMikKPiArI2RlZmluZSBNQ0RFX0NSQ19XUjFQT0wgQklU KDIzKQo+ICsjZGVmaW5lIE1DREVfQ1JDX1dSMlBPTCBCSVQoMjQpCj4gKyNkZWZpbmUgTUNERV9D UkNfUkQxUE9MIEJJVCgyNSkKPiArI2RlZmluZSBNQ0RFX0NSQ19SRDJQT0wgQklUKDI2KQo+ICsj ZGVmaW5lIE1DREVfQ1JDX1NZTkNDVFJMX1NISUZUIDI5Cj4gKyNkZWZpbmUgTUNERV9DUkNfU1lO Q0NUUkxfTUFTSyAweDYwMDAwMDAwCj4gKyNkZWZpbmUgTUNERV9DUkNfU1lOQ0NUUkxfTk9fU1lO QyAwCj4gKyNkZWZpbmUgTUNERV9DUkNfU1lOQ0NUUkxfREJJMCAxCj4gKyNkZWZpbmUgTUNERV9D UkNfU1lOQ0NUUkxfREJJMSAyCj4gKyNkZWZpbmUgTUNERV9DUkNfU1lOQ0NUUkxfUElOR19QT05H IDMKPiArI2RlZmluZSBNQ0RFX0NSQ19DTEFNUEMxRU4gQklUKDMxKQo+ICsKPiArI2RlZmluZSBN Q0RFX1ZTQ1JDMCAweDAwMDAwQzVDCj4gKyNkZWZpbmUgTUNERV9WU0NSQzEgMHgwMDAwMEM2MAo+ ICsjZGVmaW5lIE1DREVfVlNDUkNfVlNQTUlOX01BU0sgMHgwMDAwMEZGRgo+ICsjZGVmaW5lIE1D REVfVlNDUkNfVlNQTUFYX1NISUZUIDEyCj4gKyNkZWZpbmUgTUNERV9WU0NSQ19WU1BNQVhfTUFT SyAweDAwRkZGMDAwCj4gKyNkZWZpbmUgTUNERV9WU0NSQ19WU1BESVZfU0hJRlQgMjQKPiArI2Rl ZmluZSBNQ0RFX1ZTQ1JDX1ZTUERJVl9NQVNLIDB4MDcwMDAwMDAKPiArI2RlZmluZSBNQ0RFX1ZT Q1JDX1ZTUERJVl9NQ0RFQ0xLX0RJVl8xIDAKPiArI2RlZmluZSBNQ0RFX1ZTQ1JDX1ZTUERJVl9N Q0RFQ0xLX0RJVl8yIDEKPiArI2RlZmluZSBNQ0RFX1ZTQ1JDX1ZTUERJVl9NQ0RFQ0xLX0RJVl80 IDIKPiArI2RlZmluZSBNQ0RFX1ZTQ1JDX1ZTUERJVl9NQ0RFQ0xLX0RJVl84IDMKPiArI2RlZmlu ZSBNQ0RFX1ZTQ1JDX1ZTUERJVl9NQ0RFQ0xLX0RJVl8xNiA0Cj4gKyNkZWZpbmUgTUNERV9WU0NS Q19WU1BESVZfTUNERUNMS19ESVZfMzIgNQo+ICsjZGVmaW5lIE1DREVfVlNDUkNfVlNQRElWX01D REVDTEtfRElWXzY0IDYKPiArI2RlZmluZSBNQ0RFX1ZTQ1JDX1ZTUERJVl9NQ0RFQ0xLX0RJVl8x MjggNwo+ICsjZGVmaW5lIE1DREVfVlNDUkNfVlNQT0wgQklUKDI3KSAvKiAwIGFjdGl2ZSBoaWdo LCAxIGFjdGl2ZSBsb3cgKi8KPiArI2RlZmluZSBNQ0RFX1ZTQ1JDX1ZTU0VMIEJJVCgyOCkgLyog MCBWU1lOQzAsIDEgVlNZTkMxICovCj4gKyNkZWZpbmUgTUNERV9WU0NSQ19WU0RCTCBCSVQoMjkp Cj4gKwo+ICsvKiBDaGFubmVsIGNvbmZpZyAwLi4zICovCj4gKyNkZWZpbmUgTUNERV9DSE5MMENP TkYgMHgwMDAwMDYwMAo+ICsjZGVmaW5lIE1DREVfQ0hOTDFDT05GIDB4MDAwMDA2MjAKPiArI2Rl ZmluZSBNQ0RFX0NITkwyQ09ORiAweDAwMDAwNjQwCj4gKyNkZWZpbmUgTUNERV9DSE5MM0NPTkYg MHgwMDAwMDY2MAo+ICsjZGVmaW5lIE1DREVfQ0hOTFhDT05GX1BQTF9TSElGVCAwCj4gKyNkZWZp bmUgTUNERV9DSE5MWENPTkZfUFBMX01BU0sgMHgwMDAwMDdGRgo+ICsjZGVmaW5lIE1DREVfQ0hO TFhDT05GX0xQRl9TSElGVCAxNgo+ICsjZGVmaW5lIE1DREVfQ0hOTFhDT05GX0xQRl9NQVNLIDB4 MDdGRjAwMDAKPiArI2RlZmluZSBNQ0RFX01BWF9XSURUSCAyMDQ4Cj4gKwo+ICsvKiBDaGFubmVs IHN0YXR1cyAwLi4zICovCj4gKyNkZWZpbmUgTUNERV9DSE5MMFNUQVQgMHgwMDAwMDYwNAo+ICsj ZGVmaW5lIE1DREVfQ0hOTDFTVEFUIDB4MDAwMDA2MjQKPiArI2RlZmluZSBNQ0RFX0NITkwyU1RB VCAweDAwMDAwNjQ0Cj4gKyNkZWZpbmUgTUNERV9DSE5MM1NUQVQgMHgwMDAwMDY2NAo+ICsjZGVm aW5lIE1DREVfQ0hOTFhTVEFUX0NITkxSRCBCSVQoMCkKPiArI2RlZmluZSBNQ0RFX0NITkxYU1RB VF9DSE5MQSBCSVQoMSkKPiArI2RlZmluZSBNQ0RFX0NITkxYU1RBVF9DSE5MQkxCQ0tHTkRfRU4g QklUKDE2KQo+ICsjZGVmaW5lIE1DREVfQ0hOTFhTVEFUX1BQTFgyX1Y0MjIgQklUKDE3KQo+ICsj ZGVmaW5lIE1DREVfQ0hOTFhTVEFUX0xQRlgyX1Y0MjIgQklUKDE4KQo+ICsKPiArLyogU3luYyBz ZXR0aW5ncyBmb3IgY2hhbm5lbCAwLi4zICovCj4gKyNkZWZpbmUgTUNERV9DSE5MMFNZTkNITU9E IDB4MDAwMDA2MDgKPiArI2RlZmluZSBNQ0RFX0NITkwxU1lOQ0hNT0QgMHgwMDAwMDYyOAo+ICsj ZGVmaW5lIE1DREVfQ0hOTDJTWU5DSE1PRCAweDAwMDAwNjQ4Cj4gKyNkZWZpbmUgTUNERV9DSE5M M1NZTkNITU9EIDB4MDAwMDA2NjgKPiArCj4gKyNkZWZpbmUgTUNERV9DSE5MWFNZTkNITU9EX1NS Q19TWU5DSF9TSElGVCAwCj4gKyNkZWZpbmUgTUNERV9DSE5MWFNZTkNITU9EX1NSQ19TWU5DSF9N QVNLIDB4MDAwMDAwMDMKPiArI2RlZmluZSBNQ0RFX0NITkxYU1lOQ0hNT0RfU1JDX1NZTkNIX0hB UkRXQVJFIDAKPiArI2RlZmluZSBNQ0RFX0NITkxYU1lOQ0hNT0RfU1JDX1NZTkNIX05PX1NZTkNI IDEKPiArI2RlZmluZSBNQ0RFX0NITkxYU1lOQ0hNT0RfU1JDX1NZTkNIX1NPRlRXQVJFIDIKPiAr I2RlZmluZSBNQ0RFX0NITkxYU1lOQ0hNT0RfT1VUX1NZTkNIX1NSQ19TSElGVCAyCj4gKyNkZWZp bmUgTUNERV9DSE5MWFNZTkNITU9EX09VVF9TWU5DSF9TUkNfTUFTSyAweDAwMDAwMDFDCj4gKyNk ZWZpbmUgTUNERV9DSE5MWFNZTkNITU9EX09VVF9TWU5DSF9TUkNfRk9STUFUVEVSIDAKPiArI2Rl ZmluZSBNQ0RFX0NITkxYU1lOQ0hNT0RfT1VUX1NZTkNIX1NSQ19URTAgMQo+ICsjZGVmaW5lIE1D REVfQ0hOTFhTWU5DSE1PRF9PVVRfU1lOQ0hfU1JDX1RFMSAyCj4gKwo+ICsvKiBTb2Z0d2FyZSBz eW5jIHRyaWdnZXJzIGZvciBjaGFubmVsIDAuLjMgKi8KPiArI2RlZmluZSBNQ0RFX0NITkwwU1lO Q0hTVyAweDAwMDAwNjBDCj4gKyNkZWZpbmUgTUNERV9DSE5MMVNZTkNIU1cgMHgwMDAwMDYyQwo+ ICsjZGVmaW5lIE1DREVfQ0hOTDJTWU5DSFNXIDB4MDAwMDA2NEMKPiArI2RlZmluZSBNQ0RFX0NI TkwzU1lOQ0hTVyAweDAwMDAwNjZDCj4gKyNkZWZpbmUgTUNERV9DSE5MWFNZTkNIU1dfU1dfVFJJ RyBCSVQoMCkKPiArCj4gKyNkZWZpbmUgTUNERV9DSE5MMEJDS0dORENPTCAweDAwMDAwNjEwCj4g KyNkZWZpbmUgTUNERV9DSE5MMUJDS0dORENPTCAweDAwMDAwNjMwCj4gKyNkZWZpbmUgTUNERV9D SE5MMkJDS0dORENPTCAweDAwMDAwNjUwCj4gKyNkZWZpbmUgTUNERV9DSE5MM0JDS0dORENPTCAw eDAwMDAwNjcwCj4gKyNkZWZpbmUgTUNERV9DSE5MWEJDS0dORENPTF9CX1NISUZUIDAKPiArI2Rl ZmluZSBNQ0RFX0NITkxYQkNLR05EQ09MX0JfTUFTSyAweDAwMDAwMEZGCj4gKyNkZWZpbmUgTUNE RV9DSE5MWEJDS0dORENPTF9HX1NISUZUIDgKPiArI2RlZmluZSBNQ0RFX0NITkxYQkNLR05EQ09M X0dfTUFTSyAweDAwMDBGRjAwCj4gKyNkZWZpbmUgTUNERV9DSE5MWEJDS0dORENPTF9SX1NISUZU IDE2Cj4gKyNkZWZpbmUgTUNERV9DSE5MWEJDS0dORENPTF9SX01BU0sgMHgwMEZGMDAwMAo+ICsK PiArI2RlZmluZSBNQ0RFX0NITkwwTVVYSU5HIDB4MDAwMDA2MTQKPiArI2RlZmluZSBNQ0RFX0NI TkwxTVVYSU5HIDB4MDAwMDA2MzQKPiArI2RlZmluZSBNQ0RFX0NITkwyTVVYSU5HIDB4MDAwMDA2 NTQKPiArI2RlZmluZSBNQ0RFX0NITkwzTVVYSU5HIDB4MDAwMDA2NzQKPiArI2RlZmluZSBNQ0RF X0NITkxYTVVYSU5HX0ZJRk9fSURfRklGT19BIDAKPiArI2RlZmluZSBNQ0RFX0NITkxYTVVYSU5H X0ZJRk9fSURfRklGT19CIDEKPiArI2RlZmluZSBNQ0RFX0NITkxYTVVYSU5HX0ZJRk9fSURfRklG T19DMCAyCj4gKyNkZWZpbmUgTUNERV9DSE5MWE1VWElOR19GSUZPX0lEX0ZJRk9fQzEgMwo+ICsK PiArLyogUGl4ZWwgcHJvY2Vzc2luZyBjb250cm9sIHJlZ2lzdGVycyBmb3IgY2hhbm5lbCBBIEIs ICAqLwo+ICsjZGVmaW5lIE1DREVfQ1JBMCAweDAwMDAwODAwCj4gKyNkZWZpbmUgTUNERV9DUkIw IDB4MDAwMDBBMDAKPiArI2RlZmluZSBNQ0RFX0NSWDBfRkxPRU4gQklUKDApCj4gKyNkZWZpbmUg TUNERV9DUlgwX1BPV0VSRU4gQklUKDEpCj4gKyNkZWZpbmUgTUNERV9DUlgwX0JMRU5ERU4gQklU KDIpCj4gKyNkZWZpbmUgTUNERV9DUlgwX0FGTElDS0VOIEJJVCgzKQo+ICsjZGVmaW5lIE1DREVf Q1JYMF9QQUxFTiBCSVQoNCkKPiArI2RlZmluZSBNQ0RFX0NSWDBfRElUSEVOIEJJVCg1KQo+ICsj ZGVmaW5lIE1DREVfQ1JYMF9HQU1FTiBCSVQoNikKPiArI2RlZmluZSBNQ0RFX0NSWDBfS0VZQ1RS TF9TSElGVCA3Cj4gKyNkZWZpbmUgTUNERV9DUlgwX0tFWUNUUkxfTUFTSyAweDAwMDAwMzgwCj4g KyNkZWZpbmUgTUNERV9DUlgwX0tFWUNUUkxfT0ZGIDAKPiArI2RlZmluZSBNQ0RFX0NSWDBfS0VZ Q1RSTF9BTFBIQV9SR0IgMQo+ICsjZGVmaW5lIE1DREVfQ1JYMF9LRVlDVFJMX1JHQiAyCj4gKyNk ZWZpbmUgTUNERV9DUlgwX0tFWUNUUkxfRkFMUEhBX0ZSR0IgNAo+ICsjZGVmaW5lIE1DREVfQ1JY MF9LRVlDVFJMX0ZSR0IgNQo+ICsjZGVmaW5lIE1DREVfQ1JYMF9CTEVORENUUkwgQklUKDEwKQo+ ICsjZGVmaW5lIE1DREVfQ1JYMF9GTElDS01PREVfU0hJRlQgMTEKPiArI2RlZmluZSBNQ0RFX0NS WDBfRkxJQ0tNT0RFX01BU0sgMHgwMDAwMTgwMAo+ICsjZGVmaW5lIE1DREVfQ1JYMF9GTElDS01P REVfRk9SQ0VfRklMVEVSXzAgMAo+ICsjZGVmaW5lIE1DREVfQ1JYMF9GTElDS01PREVfQURBUFRJ VkUgMQo+ICsjZGVmaW5lIE1DREVfQ1JYMF9GTElDS01PREVfVEVTVF9NT0RFIDIKPiArI2RlZmlu ZSBNQ0RFX0NSWDBfRkxPQ0tGT1JNQVRfUkdCIEJJVCgxMykgLyogMCA9IFlDVkNSICovCj4gKyNk ZWZpbmUgTUNERV9DUlgwX1BBTE1PREVfR0FNTUEgQklUKDE0KSAvKiAwID0gcGFsZXR0ZSAqLwo+ ICsjZGVmaW5lIE1DREVfQ1JYMF9PTEVERU4gQklUKDE1KQo+ICsjZGVmaW5lIE1DREVfQ1JYMF9B TFBIQUJMRU5EX1NISUZUIDE2Cj4gKyNkZWZpbmUgTUNERV9DUlgwX0FMUEhBQkxFTkRfTUFTSyAw eDAwRkYwMDAwCj4gKyNkZWZpbmUgTUNERV9DUlgwX1JPVEVOIEJJVCgyNCkKPiArCj4gKyNkZWZp bmUgTUNERV9DUkExIDB4MDAwMDA4MDQKPiArI2RlZmluZSBNQ0RFX0NSQjEgMHgwMDAwMEEwNAo+ ICsjZGVmaW5lIE1DREVfQ1JYMV9QQ0RfU0hJRlQgMAo+ICsjZGVmaW5lIE1DREVfQ1JYMV9QQ0Rf TUFTSyAweDAwMDAwM0ZGCj4gKyNkZWZpbmUgTUNERV9DUlgxX0NMS1NFTF9TSElGVCAxMAo+ICsj ZGVmaW5lIE1DREVfQ1JYMV9DTEtTRUxfTUFTSyAweDAwMDAxQzAwCj4gKyNkZWZpbmUgTUNERV9D UlgxX0NMS1NFTF9DTEtQTEw3MiAwCj4gKyNkZWZpbmUgTUNERV9DUlgxX0NMS1NFTF9DTEtQTEwy NyAyCj4gKyNkZWZpbmUgTUNERV9DUlgxX0NMS1NFTF9UVjFDTEsgMwo+ICsjZGVmaW5lIE1DREVf Q1JYMV9DTEtTRUxfVFYyQ0xLIDQKPiArI2RlZmluZSBNQ0RFX0NSWDFfQ0xLU0VMX01DREVDTEsg NQo+ICsjZGVmaW5lIE1DREVfQ1JYMV9DRFdJTl9TSElGVCAxMwo+ICsjZGVmaW5lIE1DREVfQ1JY MV9DRFdJTl9NQVNLIDB4MDAwMUUwMDAKPiArI2RlZmluZSBNQ0RFX0NSWDFfQ0RXSU5fOEJQUF9D MSAwCj4gKyNkZWZpbmUgTUNERV9DUlgxX0NEV0lOXzEyQlBQX0MxIDEKPiArI2RlZmluZSBNQ0RF X0NSWDFfQ0RXSU5fMTJCUFBfQzIgMgo+ICsjZGVmaW5lIE1DREVfQ1JYMV9DRFdJTl8xNkJQUF9D MSAzCj4gKyNkZWZpbmUgTUNERV9DUlgxX0NEV0lOXzE2QlBQX0MyIDQKPiArI2RlZmluZSBNQ0RF X0NSWDFfQ0RXSU5fMTZCUFBfQzMgNQo+ICsjZGVmaW5lIE1DREVfQ1JYMV9DRFdJTl8xOEJQUF9D MSA2Cj4gKyNkZWZpbmUgTUNERV9DUlgxX0NEV0lOXzE4QlBQX0MyIDcKPiArI2RlZmluZSBNQ0RF X0NSWDFfQ0RXSU5fMjRCUFAgOAo+ICsjZGVmaW5lIE1DREVfQ1JYMV9PVVRCUFBfU0hJRlQgMjUK PiArI2RlZmluZSBNQ0RFX0NSWDFfT1VUQlBQX01BU0sgMHgxRTAwMDAwMAo+ICsjZGVmaW5lIE1D REVfQ1JYMV9PVVRCUFBfTU9OTzEgMAo+ICsjZGVmaW5lIE1DREVfQ1JYMV9PVVRCUFBfTU9OTzIg MQo+ICsjZGVmaW5lIE1DREVfQ1JYMV9PVVRCUFBfTU9OTzQgMgo+ICsjZGVmaW5lIE1DREVfQ1JY MV9PVVRCUFBfTU9OTzggMwo+ICsjZGVmaW5lIE1DREVfQ1JYMV9PVVRCUFBfOEJQUCA0Cj4gKyNk ZWZpbmUgTUNERV9DUlgxX09VVEJQUF8xMkJQUCA1Cj4gKyNkZWZpbmUgTUNERV9DUlgxX09VVEJQ UF8xNUJQUCA2Cj4gKyNkZWZpbmUgTUNERV9DUlgxX09VVEJQUF8xNkJQUCA3Cj4gKyNkZWZpbmUg TUNERV9DUlgxX09VVEJQUF8xOEJQUCA4Cj4gKyNkZWZpbmUgTUNERV9DUlgxX09VVEJQUF8yNEJQ UCA5Cj4gKyNkZWZpbmUgTUNERV9DUlgxX0JDRCBCSVQoMjkpCj4gKyNkZWZpbmUgTUNERV9DUkEx X0NMS1RZUEVfVFZYQ0xLU0VMMSBCSVQoMzApIC8qIDAgPSBUVlhDTEtTRUwxICovCj4gKwo+ICsj ZGVmaW5lIE1DREVfQ09MS0VZQSAweDAwMDAwODA4Cj4gKyNkZWZpbmUgTUNERV9DT0xLRVlCIDB4 MDAwMDBBMDgKPiArCj4gKyNkZWZpbmUgTUNERV9GQ09MS0VZQSAweDAwMDAwODBDCj4gKyNkZWZp bmUgTUNERV9GQ09MS0VZQiAweDAwMDAwQTBDCj4gKwo+ICsjZGVmaW5lIE1DREVfUkdCQ09OVjFB IDB4MDAwMDA4MTAKPiArI2RlZmluZSBNQ0RFX1JHQkNPTlYxQiAweDAwMDAwQTEwCj4gKwo+ICsj ZGVmaW5lIE1DREVfUkdCQ09OVjJBIDB4MDAwMDA4MTQKPiArI2RlZmluZSBNQ0RFX1JHQkNPTlYy QiAweDAwMDAwQTE0Cj4gKwo+ICsjZGVmaW5lIE1DREVfUkdCQ09OVjNBIDB4MDAwMDA4MTgKPiAr I2RlZmluZSBNQ0RFX1JHQkNPTlYzQiAweDAwMDAwQTE4Cj4gKwo+ICsjZGVmaW5lIE1DREVfUkdC Q09OVjRBIDB4MDAwMDA4MUMKPiArI2RlZmluZSBNQ0RFX1JHQkNPTlY0QiAweDAwMDAwQTFDCj4g Kwo+ICsjZGVmaW5lIE1DREVfUkdCQ09OVjVBIDB4MDAwMDA4MjAKPiArI2RlZmluZSBNQ0RFX1JH QkNPTlY1QiAweDAwMDAwQTIwCj4gKwo+ICsjZGVmaW5lIE1DREVfUkdCQ09OVjZBIDB4MDAwMDA4 MjQKPiArI2RlZmluZSBNQ0RFX1JHQkNPTlY2QiAweDAwMDAwQTI0Cj4gKwo+ICsvKiBSb3RhdGlv biAqLwo+ICsjZGVmaW5lIE1DREVfUk9UQUNPTkYgMHgwMDAwMDg3Qwo+ICsjZGVmaW5lIE1DREVf Uk9UQkNPTkYgMHgwMDAwMEE3Qwo+ICsKPiArI2RlZmluZSBNQ0RFX1NZTkNIQ09ORkEgMHgwMDAw MDg4MAo+ICsjZGVmaW5lIE1DREVfU1lOQ0hDT05GQiAweDAwMDAwQTgwCj4gKwo+ICsvKiBDaGFu bmVsIEErQiBjb250cm9sIHJlZ2lzdGVycyAqLwo+ICsjZGVmaW5lIE1DREVfQ1RSTEEgMHgwMDAw MDg4NAo+ICsjZGVmaW5lIE1DREVfQ1RSTEIgMHgwMDAwMEE4NAo+ICsjZGVmaW5lIE1DREVfQ1RS TFhfRklGT1dUUk1SS19TSElGVCAwCj4gKyNkZWZpbmUgTUNERV9DVFJMWF9GSUZPV1RSTVJLX01B U0sgMHgwMDAwMDNGRgo+ICsjZGVmaW5lIE1DREVfQ1RSTFhfRklGT0VNUFRZIEJJVCgxMikKPiAr I2RlZmluZSBNQ0RFX0NUUkxYX0ZJRk9GVUxMIEJJVCgxMykKPiArI2RlZmluZSBNQ0RFX0NUUkxY X0ZPUk1JRF9TSElGVCAxNgo+ICsjZGVmaW5lIE1DREVfQ1RSTFhfRk9STUlEX01BU0sgMHgwMDA3 MDAwMAo+ICsjZGVmaW5lIE1DREVfQ1RSTFhfRk9STUlEX0RTSTBWSUQgMAo+ICsjZGVmaW5lIE1D REVfQ1RSTFhfRk9STUlEX0RTSTBDTUQgMQo+ICsjZGVmaW5lIE1DREVfQ1RSTFhfRk9STUlEX0RT STFWSUQgMgo+ICsjZGVmaW5lIE1DREVfQ1RSTFhfRk9STUlEX0RTSTFDTUQgMwo+ICsjZGVmaW5l IE1DREVfQ1RSTFhfRk9STUlEX0RTSTJWSUQgNAo+ICsjZGVmaW5lIE1DREVfQ1RSTFhfRk9STUlE X0RTSTJDTUQgNQo+ICsjZGVmaW5lIE1DREVfQ1RSTFhfRk9STUlEX0RQSUEgMAo+ICsjZGVmaW5l IE1DREVfQ1RSTFhfRk9STUlEX0RQSUIgMQo+ICsjZGVmaW5lIE1DREVfQ1RSTFhfRk9STVRZUEVf U0hJRlQgMjAKPiArI2RlZmluZSBNQ0RFX0NUUkxYX0ZPUk1UWVBFX01BU0sgMHgwMDcwMDAwMAo+ ICsjZGVmaW5lIE1DREVfQ1RSTFhfRk9STVRZUEVfRFBJVFYgMAo+ICsjZGVmaW5lIE1DREVfQ1RS TFhfRk9STVRZUEVfREJJIDEKPiArI2RlZmluZSBNQ0RFX0NUUkxYX0ZPUk1UWVBFX0RTSSAyCj4g Kwo+ICsjZGVmaW5lIE1DREVfRFNJVklEMENPTkYwIDB4MDAwMDBFMDAKPiArI2RlZmluZSBNQ0RF X0RTSUNNRDBDT05GMCAweDAwMDAwRTIwCj4gKyNkZWZpbmUgTUNERV9EU0lWSUQxQ09ORjAgMHgw MDAwMEU0MAo+ICsjZGVmaW5lIE1DREVfRFNJQ01EMUNPTkYwIDB4MDAwMDBFNjAKPiArI2RlZmlu ZSBNQ0RFX0RTSVZJRDJDT05GMCAweDAwMDAwRTgwCj4gKyNkZWZpbmUgTUNERV9EU0lDTUQyQ09O RjAgMHgwMDAwMEVBMAo+ICsjZGVmaW5lIE1DREVfRFNJQ09ORjBfQkxBTktJTkdfU0hJRlQgMAo+ ICsjZGVmaW5lIE1DREVfRFNJQ09ORjBfQkxBTktJTkdfTUFTSyAweDAwMDAwMEZGCj4gKyNkZWZp bmUgTUNERV9EU0lDT05GMF9WSURfTU9ERV9DTUQgMAo+ICsjZGVmaW5lIE1DREVfRFNJQ09ORjBf VklEX01PREVfVklEIEJJVCgxMikKPiArI2RlZmluZSBNQ0RFX0RTSUNPTkYwX0NNRDggQklUKDEz KQo+ICsjZGVmaW5lIE1DREVfRFNJQ09ORjBfQklUX1NXQVAgQklUKDE2KQo+ICsjZGVmaW5lIE1D REVfRFNJQ09ORjBfQllURV9TV0FQIEJJVCgxNykKPiArI2RlZmluZSBNQ0RFX0RTSUNPTkYwX0RD U1ZJRF9OT1RHRU4gQklUKDE4KQo+ICsjZGVmaW5lIE1DREVfRFNJQ09ORjBfUEFDS0lOR19TSElG VCAyMAo+ICsjZGVmaW5lIE1DREVfRFNJQ09ORjBfUEFDS0lOR19NQVNLIDB4MDA3MDAwMDAKPiAr I2RlZmluZSBNQ0RFX0RTSUNPTkYwX1BBQ0tJTkdfUkdCNTY1IDAKPiArI2RlZmluZSBNQ0RFX0RT SUNPTkYwX1BBQ0tJTkdfUkdCNjY2IDEKPiArI2RlZmluZSBNQ0RFX0RTSUNPTkYwX1BBQ0tJTkdf UkdCNjY2X1BBQ0tFRCAyCj4gKyNkZWZpbmUgTUNERV9EU0lDT05GMF9QQUNLSU5HX1JHQjg4OCAz Cj4gKyNkZWZpbmUgTUNERV9EU0lDT05GMF9QQUNLSU5HX0hEVFYgNAo+ICsKPiArI2RlZmluZSBN Q0RFX0RTSVZJRDBGUkFNRSAweDAwMDAwRTA0Cj4gKyNkZWZpbmUgTUNERV9EU0lDTUQwRlJBTUUg MHgwMDAwMEUyNAo+ICsjZGVmaW5lIE1DREVfRFNJVklEMUZSQU1FIDB4MDAwMDBFNDQKPiArI2Rl ZmluZSBNQ0RFX0RTSUNNRDFGUkFNRSAweDAwMDAwRTY0Cj4gKyNkZWZpbmUgTUNERV9EU0lWSUQy RlJBTUUgMHgwMDAwMEU4NAo+ICsjZGVmaW5lIE1DREVfRFNJQ01EMkZSQU1FIDB4MDAwMDBFQTQK PiArCj4gKyNkZWZpbmUgTUNERV9EU0lWSUQwUEtUIDB4MDAwMDBFMDgKPiArI2RlZmluZSBNQ0RF X0RTSUNNRDBQS1QgMHgwMDAwMEUyOAo+ICsjZGVmaW5lIE1DREVfRFNJVklEMVBLVCAweDAwMDAw RTQ4Cj4gKyNkZWZpbmUgTUNERV9EU0lDTUQxUEtUIDB4MDAwMDBFNjgKPiArI2RlZmluZSBNQ0RF X0RTSVZJRDJQS1QgMHgwMDAwMEU4OAo+ICsjZGVmaW5lIE1DREVfRFNJQ01EMlBLVCAweDAwMDAw RUE4Cj4gKwo+ICsjZGVmaW5lIE1DREVfRFNJVklEMFNZTkMgMHgwMDAwMEUwQwo+ICsjZGVmaW5l IE1DREVfRFNJQ01EMFNZTkMgMHgwMDAwMEUyQwo+ICsjZGVmaW5lIE1DREVfRFNJVklEMVNZTkMg MHgwMDAwMEU0Qwo+ICsjZGVmaW5lIE1DREVfRFNJQ01EMVNZTkMgMHgwMDAwMEU2Qwo+ICsjZGVm aW5lIE1DREVfRFNJVklEMlNZTkMgMHgwMDAwMEU4Qwo+ICsjZGVmaW5lIE1DREVfRFNJQ01EMlNZ TkMgMHgwMDAwMEVBQwo+ICsKPiArI2RlZmluZSBNQ0RFX0RTSVZJRDBDTURXIDB4MDAwMDBFMTAK PiArI2RlZmluZSBNQ0RFX0RTSUNNRDBDTURXIDB4MDAwMDBFMzAKPiArI2RlZmluZSBNQ0RFX0RT SVZJRDFDTURXIDB4MDAwMDBFNTAKPiArI2RlZmluZSBNQ0RFX0RTSUNNRDFDTURXIDB4MDAwMDBF NzAKPiArI2RlZmluZSBNQ0RFX0RTSVZJRDJDTURXIDB4MDAwMDBFOTAKPiArI2RlZmluZSBNQ0RF X0RTSUNNRDJDTURXIDB4MDAwMDBFQjAKPiArI2RlZmluZSBNQ0RFX0RTSVZJRFhDTURXX0NNRFdf Q09OVElOVUVfU0hJRlQgMAo+ICsjZGVmaW5lIE1DREVfRFNJVklEWENNRFdfQ01EV19DT05USU5V RV9NQVNLIDB4MDAwMEZGRkYKPiArI2RlZmluZSBNQ0RFX0RTSVZJRFhDTURXX0NNRFdfU1RBUlRf U0hJRlQgMTYKPiArI2RlZmluZSBNQ0RFX0RTSVZJRFhDTURXX0NNRFdfU1RBUlRfTUFTSyAweEZG RkYwMDAwCj4gKwo+ICsjZGVmaW5lIE1DREVfRFNJVklEMERFTEFZMCAweDAwMDAwRTE0Cj4gKyNk ZWZpbmUgTUNERV9EU0lDTUQwREVMQVkwIDB4MDAwMDBFMzQKPiArI2RlZmluZSBNQ0RFX0RTSVZJ RDFERUxBWTAgMHgwMDAwMEU1NAo+ICsjZGVmaW5lIE1DREVfRFNJQ01EMURFTEFZMCAweDAwMDAw RTc0Cj4gKyNkZWZpbmUgTUNERV9EU0lWSUQyREVMQVkwIDB4MDAwMDBFOTQKPiArI2RlZmluZSBN Q0RFX0RTSUNNRDJERUxBWTAgMHgwMDAwMEVCNAo+ICsKPiArI2RlZmluZSBNQ0RFX0RTSVZJRDBE RUxBWTEgMHgwMDAwMEUxOAo+ICsjZGVmaW5lIE1DREVfRFNJQ01EMERFTEFZMSAweDAwMDAwRTM4 Cj4gKyNkZWZpbmUgTUNERV9EU0lWSUQxREVMQVkxIDB4MDAwMDBFNTgKPiArI2RlZmluZSBNQ0RF X0RTSUNNRDFERUxBWTEgMHgwMDAwMEU3OAo+ICsjZGVmaW5lIE1DREVfRFNJVklEMkRFTEFZMSAw eDAwMDAwRTk4Cj4gKyNkZWZpbmUgTUNERV9EU0lDTUQyREVMQVkxIDB4MDAwMDBFQjgKPiArCj4g K3ZvaWQgbWNkZV9kaXNwbGF5X2lycShzdHJ1Y3QgbWNkZSAqbWNkZSkKPiArewo+ICsJdTMyIG1p c3BwLCBtaXNvdmwsIG1pc2Nobmw7Cj4gKwlib29sIHZibGFuazsKPiArCj4gKwkvKiBIYW5kbGUg ZGlzcGxheSBJUlFzICovCj4gKwltaXNwcCA9IHJlYWRsKG1jZGUtPnJlZ3MgKyBNQ0RFX01JU1BQ KTsKPiArCW1pc292bCA9IHJlYWRsKG1jZGUtPnJlZ3MgKyBNQ0RFX01JU09WTCk7Cj4gKwltaXNj aG5sID0gcmVhZGwobWNkZS0+cmVncyArIE1DREVfTUlTQ0hOTCk7Cj4gKwo+ICsJLyoKPiArCSAq IEhhbmRsZSBJUlFzIGZyb20gdGhlIERTSSBsaW5rLiBBbGwgSVJRcyBmcm9tIHRoZSBEU0kgbGlu a3MKPiArCSAqIGFyZSBqdXN0IGxhdGNoZWQgb250byB0aGUgTUNERSBJUlEgbGluZSwgc28gd2Ug bmVlZCB0byB0cmF2ZXJzZQo+ICsJICogYW55IGFjdGl2ZSBEU0kgbWFzdGVycyBhbmQgY2hlY2sg aWYgYW4gSVJRIGlzIG9yaWdpbmF0aW5nIGZyb20KPiArCSAqIHRoZW0uCj4gKwkgKgo+ICsJICog RklYTUU6IEN1cnJlbnRseSBvbmx5IG9uZSBEU0kgbGluayBpcyBzdXBwb3J0ZWQuCgpJZiBpdCdz IHBvc3NpYmxlIHRvIGhhdmUgbW9yZSB5b3UgbWlnaHQgYmUgb3V0IG9mIHNjb3BlIGZvciB0aGUg c2ltcGxlIGttcwpoZWxwZXJzIC4uLiBidXQgaWYgdGhlcmUncyBvbmx5IGV2ZXIgYSBmaXhlZCBy b3V0aW5nLCB0aGVuIGl0IHdvdWxkIHN0aWxsCmZpdCwgeW91IGNhbiBoYXZlIGEgYnVuY2ggb2Yg c2ltcGxlIGRpc3BsYXkgcGlwZXMgaW4gb24gZHJpdmVyLgoKPiArCSAqLwo+ICsJaWYgKG1jZGVf ZHNpX2lycShtY2RlLT5tZHNpKSkgewo+ICsJCXUzMiB2YWw7Cj4gKwo+ICsJCS8qCj4gKwkJICog SW4gb25lc2hvdCBtb2RlIHdlIGRvIG5vdCBzZW5kIGNvbnRpbnVvdXMgdXBkYXRlcwo+ICsJCSAq IHRvIHRoZSBkaXNwbGF5LCBpbnN0ZWFkIHdlIG9ubHkgcHVzaCBvdXQgdXBkYXRlcyB3aGVuCj4g KwkJICogdGhlIHVwZGF0ZSBmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZW4gd2UgZGlzYWJsZSB0aGUK PiArCQkgKiBmbG93IG9uIHRoZSBjaGFubmVsIG9uY2Ugd2UgZ2V0IHRoZSBURSBJUlEuCj4gKwkJ ICovCj4gKwkJaWYgKG1jZGUtPm9uZXNob3RfbW9kZSkgewo+ICsJCQlzcGluX2xvY2soJm1jZGUt PmZsb3dfbG9jayk7Cj4gKwkJCWlmICgtLW1jZGUtPmZsb3dfYWN0aXZlID09IDApIHsKPiArCQkJ CWRldl9kYmcobWNkZS0+ZGV2LCAiVEUwIElSUVxuIik7Cj4gKwkJCQkvKiBEaXNhYmxlIEZJRk8g QSBmbG93ICovCj4gKwkJCQl2YWwgPSByZWFkbChtY2RlLT5yZWdzICsgTUNERV9DUkEwKTsKPiAr CQkJCXZhbCAmPSB+TUNERV9DUlgwX0ZMT0VOOwo+ICsJCQkJd3JpdGVsKHZhbCwgbWNkZS0+cmVn cyArIE1DREVfQ1JBMCk7Cj4gKwkJCX0KPiArCQkJc3Bpbl91bmxvY2soJm1jZGUtPmZsb3dfbG9j ayk7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCS8qIFZibGFuayBmcm9tIG9uZSBvZiB0aGUgY2hhbm5l bHMgKi8KPiArCWlmIChtaXNwcCAmIE1DREVfUFBfVkNNUEEpIHsKPiArCQlkZXZfZGJnKG1jZGUt PmRldiwgImNobmwgQSB2YmxhbmsgSVJRXG4iKTsKPiArCQl2YmxhbmsgPSB0cnVlOwo+ICsJfQo+ ICsJaWYgKG1pc3BwICYgTUNERV9QUF9WQ01QQikgewo+ICsJCWRldl9kYmcobWNkZS0+ZGV2LCAi Y2hubCBCIHZibGFuayBJUlFcbiIpOwo+ICsJCXZibGFuayA9IHRydWU7Cj4gKwl9Cj4gKwlpZiAo bWlzcHAgJiBNQ0RFX1BQX1ZDTVBDMCkKPiArCQlkZXZfZGJnKG1jZGUtPmRldiwgImNobmwgQzAg dmJsYW5rIElSUVxuIik7Cj4gKwlpZiAobWlzcHAgJiBNQ0RFX1BQX1ZDTVBDMSkKPiArCQlkZXZf ZGJnKG1jZGUtPmRldiwgImNobmwgQzEgdmJsYW5rIElSUVxuIik7Cj4gKwlpZiAobWlzcHAgJiBN Q0RFX1BQX1ZTQ0MwKQo+ICsJCWRldl9kYmcobWNkZS0+ZGV2LCAiY2hubCBDMCBURSBJUlFcbiIp Owo+ICsJaWYgKG1pc3BwICYgTUNERV9QUF9WU0NDMSkKPiArCQlkZXZfZGJnKG1jZGUtPmRldiwg ImNobmwgQzEgVEUgSVJRXG4iKTsKPiArCXdyaXRlbChtaXNwcCwgbWNkZS0+cmVncyArIE1DREVf UklTUFApOwo+ICsKPiArCWlmICh2YmxhbmspCj4gKwkJZHJtX2NydGNfaGFuZGxlX3ZibGFuaygm bWNkZS0+cGlwZS5jcnRjKTsKPiArCj4gKwlpZiAobWlzb3ZsKQo+ICsJCWRldl9pbmZvKG1jZGUt PmRldiwgInNvbWUgc3RyYXkgb3ZlcmxheSBJUlEgJTA4eFxuIiwgbWlzb3ZsKTsKPiArCXdyaXRl bChtaXNvdmwsIG1jZGUtPnJlZ3MgKyBNQ0RFX1JJU09WTCk7Cj4gKwo+ICsJaWYgKG1pc2Nobmwp Cj4gKwkJZGV2X2luZm8obWNkZS0+ZGV2LCAic29tZSBzdHJheSBjaGFubmVsIGVycm9yIElSUSAl MDh4XG4iLAo+ICsJCQkgbWlzY2hubCk7Cj4gKwl3cml0ZWwobWlzY2hubCwgbWNkZS0+cmVncyAr IE1DREVfUklTQ0hOTCk7Cj4gK30KPiArCj4gK3ZvaWQgbWNkZV9kaXNwbGF5X2Rpc2FibGVfaXJx cyhzdHJ1Y3QgbWNkZSAqbWNkZSkKPiArewo+ICsJLyogRGlzYWJsZSBhbGwgSVJRcyAqLwo+ICsJ d3JpdGVsKDAsIG1jZGUtPnJlZ3MgKyBNQ0RFX0lNU0NQUCk7Cj4gKwl3cml0ZWwoMCwgbWNkZS0+ cmVncyArIE1DREVfSU1TQ09WTCk7Cj4gKwl3cml0ZWwoMCwgbWNkZS0+cmVncyArIE1DREVfSU1T Q0NITkwpOwo+ICsKPiArCS8qIENsZWFyIGFueSBwZW5kaW5nIElSUXMgKi8KPiArCXdyaXRlbCgw eEZGRkZGRkZGLCBtY2RlLT5yZWdzICsgTUNERV9SSVNQUCk7Cj4gKwl3cml0ZWwoMHhGRkZGRkZG RiwgbWNkZS0+cmVncyArIE1DREVfUklTT1ZMKTsKPiArCXdyaXRlbCgweEZGRkZGRkZGLCBtY2Rl LT5yZWdzICsgTUNERV9SSVNDSE5MKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBtY2RlX2Rpc3Bs YXlfY2hlY2soc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAo+ICsJCQkgICAg ICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlLAo+ICsJCQkgICAgICAgc3RydWN0IGRy bV9jcnRjX3N0YXRlICpjc3RhdGUpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlID0gJmNzdGF0ZS0+bW9kZTsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9s ZF9mYiA9IHBpcGUtPnBsYW5lLnN0YXRlLT5mYjsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiID0gcHN0YXRlLT5mYjsKPiArCj4gKwlpZiAoZmIpIHsKPiArCQl1MzIgb2Zmc2V0ID0gZHJt X2ZiX2NtYV9nZXRfZ2VtX2FkZHIoZmIsIHBzdGF0ZSwgMCk7Cj4gKwo+ICsJCS8qIEZCIGJhc2Ug YWRkcmVzcyBtdXN0IGJlIGR3b3JkIGFsaWduZWQuICovCj4gKwkJaWYgKG9mZnNldCAmIDMpIHsK PiArCQkJRFJNX0RFQlVHX0tNUygiRkIgbm90IDMyLWJpdCBhbGlnbmVkXG4iKTsKPiArCQkJcmV0 dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsKPiArCQkvKgo+ICsJCSAqIFRoZXJlJ3Mgbm8gcGl0Y2gg cmVnaXN0ZXIsIHRoZSBtb2RlJ3MgaGRpc3BsYXkKPiArCQkgKiBjb250cm9scyB0aGlzLgo+ICsJ CSAqLwo+ICsJCWlmIChmYi0+cGl0Y2hlc1swXSAhPSBtb2RlLT5oZGlzcGxheSAqIGZiLT5mb3Jt YXQtPmNwcFswXSkgewo+ICsJCQlEUk1fREVCVUdfS01TKCJjYW4ndCBoYW5kbGUgcGl0Y2hlc1xu Iik7Cj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCj4gKwkJLyoKPiArCQkgKiBXZSBj YW4ndCBjaGFuZ2UgdGhlIEZCIGZvcm1hdCBpbiBhIGZsaWNrZXItZnJlZQo+ICsJCSAqIG1hbm5l ciAoYW5kIG9ubHkgdXBkYXRlIGl0IGR1cmluZyBDUlRDIGVuYWJsZSkuCj4gKwkJICovCj4gKwkJ aWYgKG9sZF9mYiAmJiBvbGRfZmItPmZvcm1hdCAhPSBmYi0+Zm9ybWF0KQo+ICsJCQljc3RhdGUt Pm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgbWNkZV9kc2lfZ2V0X3BrdF9kaXYoaW50IHBwbCwgaW50IGZpZm9fc2l6ZSkK PiArewo+ICsJLyoKPiArCSAqIERTSSBjb21tYW5kIG1vZGUgbGluZSBwYWNrZXRzIHNob3VsZCBi ZSBzcGxpdCBpbnRvIGFuIGV2ZW4gbnVtYmVyIG9mCj4gKwkgKiBwYWNrZXRzIHNtYWxsZXIgdGhh biBvciBlcXVhbCB0byB0aGUgZmlmbyBzaXplLgo+ICsJICovCj4gKwlpbnQgZGl2Owo+ICsJY29u c3QgaW50IG1heF9kaXYgPSBESVZfUk9VTkRfVVAoTUNERV9NQVhfV0lEVEgsIGZpZm9fc2l6ZSk7 Cj4gKwo+ICsJZm9yIChkaXYgPSAxOyBkaXYgPCBtYXhfZGl2OyBkaXYrKykKPiArCQlpZiAocHBs ICUgZGl2ID09IDAgJiYgcHBsIC8gZGl2IDw9IGZpZm9fc2l6ZSkKPiArCQkJcmV0dXJuIGRpdjsK PiArCXJldHVybiAxOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtY2RlX2Rpc3BsYXlfZW5hYmxl KHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKPiArCQkJCXN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICsJCQkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZwaXBlLT5jcnRjOwo+ICsJ c3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSAmcGlwZS0+cGxhbmU7Cj4gKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IG1jZGUgKm1jZGUgPSBkcm0tPmRldl9w cml2YXRlOwo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY3N0YXRl LT5tb2RlOwo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZS0+c3RhdGUtPmZi Owo+ICsJdTMyIGZvcm1hdCA9IGZiLT5mb3JtYXQtPmZvcm1hdDsKPiArCXUzMiBmb3JtYXR0ZXJf cHBsID0gbW9kZS0+aGRpc3BsYXk7IC8qIHBpeGVscyBwZXIgbGluZSAqLwo+ICsJdTMyIGZvcm1h dHRlcl9scGYgPSBtb2RlLT52ZGlzcGxheTsgLyogbGluZXMgcGVyIGZyYW1lICovCj4gKwlpbnQg cGt0X3NpemUsIGZpZm9fd3RybXJrOwo+ICsJaW50IGNwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3Bw KGZvcm1hdCwgMCk7Cj4gKwlpbnQgZm9ybWF0dGVyX2NwcDsKPiArCXN0cnVjdCBkcm1fZm9ybWF0 X25hbWVfYnVmIHRtcDsKPiArCXUzMiBmb3JtYXR0ZXJfZnJhbWU7Cj4gKwl1MzIgcGt0X2RpdjsK PiArCXUzMiB2YWw7Cj4gKwo+ICsJZGV2X2luZm8oZHJtLT5kZXYsICJlbmFibGUgTUNERSwgJWQg eCAlZCBmb3JtYXQgJXNcbiIsCj4gKwkJIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwK PiArCQkgZHJtX2dldF9mb3JtYXRfbmFtZShmb3JtYXQsICZ0bXApKTsKPiArCWlmICghbWNkZS0+ bWRzaSkgewo+ICsJCS8qIFRPRE86IGRlYWwgd2l0aCB0aGlzIGZvciBub24tRFNJIG91dHB1dCAq Lwo+ICsJCWRldl9lcnIoZHJtLT5kZXYsICJubyBEU0kgbWFzdGVyIGF0dGFjaGVkIVxuIik7Cj4g KwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCWRldl9pbmZvKGRybS0+ZGV2LCAib3V0cHV0IGluICVz IG1vZGUsIGZvcm1hdCAlZGJwcFxuIiwKPiArCQkgKG1jZGUtPm1kc2ktPm1vZGVfZmxhZ3MgJiBN SVBJX0RTSV9NT0RFX1ZJREVPKSA/Cj4gKwkJICJWSURFTyIgOiAiQ01EIiwKPiArCQkgbWlwaV9k c2lfcGl4ZWxfZm9ybWF0X3RvX2JwcChtY2RlLT5tZHNpLT5mb3JtYXQpKTsKPiArCWZvcm1hdHRl cl9jcHAgPQo+ICsJCW1pcGlfZHNpX3BpeGVsX2Zvcm1hdF90b19icHAobWNkZS0+bWRzaS0+Zm9y bWF0KSAvIDg7Cj4gKwlkZXZfaW5mbyhkcm0tPmRldiwgIm92ZXJsYXkgQ1BQICVkIGJ5dGVzLCBE U0kgQ1BQICVkIGJ5dGVzXG4iLAo+ICsJCSBjcHAsCj4gKwkJIGZvcm1hdHRlcl9jcHApOwo+ICsK PiArCS8qIENhbGN1bGF0aW9ucyBmcm9tIG1jZGVfZm10cl9kc2kuYywgZm10cl9kc2lfZW5hYmxl X3ZpZGVvKCkgKi8KPiArCj4gKwkvKgo+ICsJICogU2V0IHVwIEZJRk8gQSB3YXRlcm1hcmsgbGV2 ZWw6Cj4gKwkgKiAxMjggZm9yIExDRCAzMmJwcCB2aWRlbyBtb2RlCj4gKwkgKiA0OCAgZm9yIExD RCAzMmJwcCBjb21tYW5kIG1vZGUKPiArCSAqIDEyOCBmb3IgTENEIDE2YnBwIHZpZGVvIG1vZGUK PiArCSAqIDY0ICBmb3IgTENEIDE2YnBwIGNvbW1hbmQgbW9kZQo+ICsJICogMTI4IGZvciBIRE1J IDMyYnBwCj4gKwkgKiAxOTIgZm9yIEhETUkgMTZicHAKPiArCSAqLwo+ICsJZmlmb193dHJtcmsg PSBtb2RlLT5oZGlzcGxheTsKPiArCWlmIChtY2RlLT5tZHNpLT5tb2RlX2ZsYWdzICYgTUlQSV9E U0lfTU9ERV9WSURFTykgewo+ICsJCWZpZm9fd3RybXJrID0gbWluKGZpZm9fd3RybXJrLCAxMjgp Owo+ICsJCXBrdF9kaXYgPSAxOwo+ICsJfSBlbHNlIHsKPiArCQlmaWZvX3d0cm1yayA9IG1pbihm aWZvX3d0cm1yaywgNDgpOwo+ICsJCS8qIFRoZSBGSUZPIGlzIDY0MCBlbnRyaWVzIGRlZXAgb24g dGhpcyB2MyBoYXJkd2FyZSAqLwo+ICsJCXBrdF9kaXYgPSBtY2RlX2RzaV9nZXRfcGt0X2Rpdiht b2RlLT5oZGlzcGxheSwgNjQwKTsKPiArCX0KPiArCWRldl9kYmcoZHJtLT5kZXYsICJGSUZPIHdh dGVybWFyayBhZnRlciBmbG9vcmluZzogJWQgYnl0ZXNcbiIsCj4gKwkJIGZpZm9fd3RybXJrKTsK PiArCWRldl9kYmcoZHJtLT5kZXYsICJQYWNrZXQgZGl2aXNvcjogJWQgYnl0ZXNcbiIsIHBrdF9k aXYpOwo+ICsKPiArCj4gKwkvKiBOT1RFOiBwa3RfZGl2IGlzIDEgZm9yIHZpZGVvIG1vZGUgKi8K PiArCXBrdF9zaXplID0gKGZvcm1hdHRlcl9wcGwgKiBmb3JtYXR0ZXJfY3BwKSAvIHBrdF9kaXY7 Cj4gKwkvKiBDb21tYW5kcyBDTUQ4IG5lZWQgb25lIGV4dHJhIGJ5dGUgKi8KPiArCWlmICghKG1j ZGUtPm1kc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJREVPKSkKPiArCQlwa3Rfc2l6 ZSsrOwo+ICsKPiArCWRldl9kYmcoZHJtLT5kZXYsICJEU0kgcGFja2V0IHNpemU6ICVkICogJWQg Ynl0ZXMgcGVyIGxpbmVcbiIsCj4gKwkJcGt0X3NpemUsIHBrdF9kaXYpOwo+ICsJZGV2X2RiZyhk cm0tPmRldiwgIk92ZXJsYXkgZnJhbWUgc2l6ZTogJXUgYnl0ZXNcbiIsCj4gKwkJbW9kZS0+aGRp c3BsYXkgKiBtb2RlLT52ZGlzcGxheSAqIGNwcCk7Cj4gKwltY2RlLT5zdHJpZGUgPSBtb2RlLT5o ZGlzcGxheSAqIGNwcDsKPiArCWRldl9kYmcoZHJtLT5kZXYsICJPdmVybGF5IGxpbmUgc3RyaWRl OiAldSBieXRlc1xuIiwKPiArCQltY2RlLT5zdHJpZGUpOwo+ICsJLyogTk9URTogcGt0X2RpdiBp cyAxIGZvciB2aWRlbyBtb2RlICovCj4gKwlmb3JtYXR0ZXJfZnJhbWUgPSBwa3Rfc2l6ZSAqIHBr dF9kaXYgKiBmb3JtYXR0ZXJfbHBmOwo+ICsJZGV2X2RiZyhkcm0tPmRldiwgIkZvcm1hdHRlciBm cmFtZSBzaXplOiAldSBieXRlc1xuIiwgZm9ybWF0dGVyX2ZyYW1lKTsKPiArCj4gKwkvKiBDaGVj ayB0aGF0IHRoZSBoYXJkd2FyZSBvbiBjaGFubmVsIEEgaXMgaW4gYSBzYW5lIHN0YXRlICovCj4g Kwl2YWwgPSByZWFkbChtY2RlLT5yZWdzICsgTUNERV9DVFJMQSk7Cj4gKwlpZiAoISh2YWwgJiBN Q0RFX0NUUkxYX0ZJRk9FTVBUWSkpIHsKPiArCQlpbnQgdGltZW91dCA9IDEwMDsKPiArCj4gKwkJ ZGV2X2Vycihkcm0tPmRldiwgIkNoYW5uZWwgQSBGSUZPIG5vdCBlbXB0eSAoaGFuZG92ZXIpXG4i KTsKPiArCQkvKiBBdHRlbXB0IHRvIGNsZWFyIHRoZSBGSUZPICovCj4gKwkJLyogRW5hYmxlIEZJ Rk8gQSBmbG93ICovCj4gKwkJdmFsID0gcmVhZGwobWNkZS0+cmVncyArIE1DREVfQ1JBMCk7Cj4g KwkJdmFsIHw9IE1DREVfQ1JYMF9GTE9FTjsKPiArCQl3cml0ZWwodmFsLCBtY2RlLT5yZWdzICsg TUNERV9DUkEwKTsKPiArCQkvKiBUcmlnZ2VyIGEgc29mdHdhcmUgc3luYyBvdXQgb24gY2hhbm5l bCAwICovCj4gKwkJd3JpdGVsKE1DREVfQ0hOTFhTWU5DSFNXX1NXX1RSSUcsCj4gKwkJICAgICAg IG1jZGUtPnJlZ3MgKyBNQ0RFX0NITkwwU1lOQ0hTVyk7Cj4gKwkJLyogRGlzYWJsZSBGSUZPIEEg ZmxvdyBhZ2FpbiAqLwo+ICsJCXZhbCA9IHJlYWRsKG1jZGUtPnJlZ3MgKyBNQ0RFX0NSQTApOwo+ ICsJCXZhbCAmPSB+TUNERV9DUlgwX0ZMT0VOOwo+ICsJCXdyaXRlbCh2YWwsIG1jZGUtPnJlZ3Mg KyBNQ0RFX0NSQTApOwo+ICsJCXdoaWxlIChyZWFkbChtY2RlLT5yZWdzICsgTUNERV9DUkEwKSAm IE1DREVfQ1JYMF9GTE9FTikgewo+ICsJCQl1c2xlZXBfcmFuZ2UoMTAwMCwgMTUwMCk7Cj4gKwkJ CWlmICghLS10aW1lb3V0KSB7Cj4gKwkJCQlkZXZfZXJyKGRybS0+ZGV2LAo+ICsJCQkJCSJGSUZP IEEgdGltZW91dCB3aGlsZSBjbGVhcmluZ1xuIik7Cj4gKwkJCQlicmVhazsKPiArCQkJfQo+ICsJ CX0KPiArCX0KPiArCj4gKwkvKiBTZXQgdXAgRklGTyBBIGFuZCBjaGFubmVsIDAgKGJhc2VkIG9u IGNobmxfdXBkYXRlX3JlZ2lzdGVycygpKSAqLwo+ICsKPiArCWlmIChtY2RlLT50ZV9zeW5jKSB7 Cj4gKwkJLyoKPiArCQkgKiBUdXJuIG9uIGhhcmR3YXJlIFRFMCBzeW5jaHJvbml6YXRpb24KPiAr CQkgKi8KPiArCQl2YWwgPSBNQ0RFX0NITkxYU1lOQ0hNT0RfU1JDX1NZTkNIX0hBUkRXQVJFCj4g KwkJCTw8IE1DREVfQ0hOTFhTWU5DSE1PRF9TUkNfU1lOQ0hfU0hJRlQ7Cj4gKwkJdmFsIHw9IE1D REVfQ0hOTFhTWU5DSE1PRF9PVVRfU1lOQ0hfU1JDX1RFMAo+ICsJCQk8PCBNQ0RFX0NITkxYU1lO Q0hNT0RfT1VUX1NZTkNIX1NSQ19TSElGVDsKPiArCX0gZWxzZSB7Cj4gKwkJLyoKPiArCQkgKiBT ZXQgdXAgc3luYyBzb3VyY2UgdG8gc29mdHdhcmUsIG91dCBzeW5jIGZvcm1hdHRlcgo+ICsJCSAq IENvZGUgbW9zdGx5IGZyb20gbWNkZV9ody5jIGNobmxfdXBkYXRlX3JlZ2lzdGVycygpCj4gKwkJ ICovCj4gKwkJdmFsID0gTUNERV9DSE5MWFNZTkNITU9EX1NSQ19TWU5DSF9TT0ZUV0FSRQo+ICsJ CQk8PCBNQ0RFX0NITkxYU1lOQ0hNT0RfU1JDX1NZTkNIX1NISUZUOwo+ICsJCXZhbCB8PSBNQ0RF X0NITkxYU1lOQ0hNT0RfT1VUX1NZTkNIX1NSQ19GT1JNQVRURVIKPiArCQkJPDwgTUNERV9DSE5M WFNZTkNITU9EX09VVF9TWU5DSF9TUkNfU0hJRlQ7Cj4gKwl9Cj4gKwl3cml0ZWwodmFsLCBtY2Rl LT5yZWdzICsgTUNERV9DSE5MMFNZTkNITU9EKTsKPiArCj4gKwkvKiBTZXQgdXAgRklGTyBmb3Ig Y2hhbm5lbCBBICovCj4gKwl2YWwgPSBmaWZvX3d0cm1yayA8PCBNQ0RFX0NUUkxYX0ZJRk9XVFJN UktfU0hJRlQ7Cj4gKwkvKiBXZSBvbmx5IHN1cHBvcnQgRFNJIGZvcm1hdHRpbmcgZm9yIG5vdyAq Lwo+ICsJdmFsIHw9IE1DREVfQ1RSTFhfRk9STVRZUEVfRFNJIDw8Cj4gKwkJTUNERV9DVFJMWF9G T1JNVFlQRV9TSElGVDsKPiArCS8qIFVzZSBmb3JtYXR0ZXIgMCBmb3IgRklGTyBBICovCj4gKwl2 YWwgfD0gMCA8PCBNQ0RFX0NUUkxYX0ZPUk1JRF9TSElGVDsKPiArCXdyaXRlbCh2YWwsIG1jZGUt PnJlZ3MgKyBNQ0RFX0NUUkxBKTsKPiArCj4gKwkvKiBTZXQgdXAgbXV4aW5nOiBjb25uZWN0IGNo YW5uZWwgMCB0byBGSUZPIEEgKi8KPiArCXdyaXRlbChNQ0RFX0NITkxYTVVYSU5HX0ZJRk9fSURf RklGT19BLAo+ICsJICAgICAgIG1jZGUtPnJlZ3MgKyBNQ0RFX0NITkwwTVVYSU5HKTsKPiArCj4g KwkvKiBQaXhlbC1wZXItbGluZSBhbmQgbGluZS1wZXItZnJhbWUgc2V0LXVwIGZvciB0aGUgY2hh bm5lbCAqLwo+ICsJdmFsID0gKG1vZGUtPmhkaXNwbGF5IC0gMSkgPDwgTUNERV9DSE5MWENPTkZf UFBMX1NISUZUOwo+ICsJdmFsIHw9IChtb2RlLT52ZGlzcGxheSAtIDEpIDw8IE1DREVfQ0hOTFhD T05GX0xQRl9TSElGVDsKPiArCXdyaXRlbCh2YWwsIG1jZGUtPnJlZ3MgKyBNQ0RFX0NITkwwQ09O Rik7Cj4gKwo+ICsJLyoKPiArCSAqIE5vcm1hbGl6ZSBjb2xvciBjb252ZXJzaW9uOgo+ICsJICog YmxhY2sgYmFja2dyb3VuZCwgT0xFRCBjb252ZXJzaW9uIGRpc2FibGUgb24gY2hhbm5lbCAwCj4g KwkgKiBGSUZPIEEsIG5vIHJvdGF0aW9uLgo+ICsJICovCj4gKwl2YWwgPSBNQ0RFX0NITkxYU1RB VF9DSE5MQkxCQ0tHTkRfRU4gfAo+ICsJCU1DREVfQ0hOTFhTVEFUX0NITkxSRDsKPiArCXdyaXRl bCh2YWwsIG1jZGUtPnJlZ3MgKyBNQ0RFX0NITkwwU1RBVCk7Cj4gKwl3cml0ZWwoMCwgbWNkZS0+ cmVncyArIE1DREVfQ0hOTDBCQ0tHTkRDT0wpOwo+ICsJLyogQmxlbmQgc291cmNlIHdpdGggQWxw aGEgMHhmZiBvbiBGSUZPIEEgKi8KPiArCXZhbCA9IE1DREVfQ1JYMF9CTEVOREVOIHwKPiArCQkw eGZmIDw8IE1DREVfQ1JYMF9BTFBIQUJMRU5EX1NISUZUOwo+ICsJd3JpdGVsKHZhbCwgbWNkZS0+ cmVncyArIE1DREVfQ1JBMCk7Cj4gKwo+ICsJLyoKPiArCSAqIENvbmZpZ3VyZSBleHRlcm5hbCBz b3VyY2UgMCBvbmUgYnVmZmVyIChidWZmZXIgMCkKPiArCSAqIHByaW1hcnkgb3ZlcmxheSBJRCAw Lgo+ICsJICogRnJvbSBtY2RlX2h3LmMgb3ZseV91cGRhdGVfcmVnaXN0ZXJzKCkgaW4gdGhlIHZl bmRvciB0cmVlCj4gKwkgKi8KPiArCXZhbCA9IDAgPDwgTUNERV9FWFRTUkNYQ09ORl9CVUZfSURf U0hJRlQ7Cj4gKwl2YWwgfD0gMSA8PCBNQ0RFX0VYVFNSQ1hDT05GX0JVRl9OQl9TSElGVDsKPiAr CXZhbCB8PSAwIDw8IE1DREVfRVhUU1JDWENPTkZfUFJJX09WTElEX1NISUZUOwo+ICsJLyoKPiAr CSAqIE1DREUgaGFzIGludmVyc2Ugc2VtYW50aWNzIGZyb20gRFJNIG9uIFJCRy9CR1Igd2hpY2gg aXMgd2h5Cj4gKwkgKiBhbGwgdGhlIG1vZGVzIGFyZSBpbnZlcnNlZCBoZXJlLgo+ICsJICovCj4g Kwlzd2l0Y2ggKGZvcm1hdCkgewo+ICsJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4Ogo+ICsJCXZh bCB8PSBNQ0RFX0VYVFNSQ1hDT05GX0JQUF9BUkdCODg4OCA8PAo+ICsJCQlNQ0RFX0VYVFNSQ1hD T05GX0JQUF9TSElGVDsKPiArCQl2YWwgfD0gTUNERV9FWFRTUkNYQ09ORl9CR1I7Cj4gKwkJYnJl YWs7Cj4gKwljYXNlIERSTV9GT1JNQVRfQUJHUjg4ODg6Cj4gKwkJdmFsIHw9IE1DREVfRVhUU1JD WENPTkZfQlBQX0FSR0I4ODg4IDw8Cj4gKwkJCU1DREVfRVhUU1JDWENPTkZfQlBQX1NISUZUOwo+ ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4Ogo+ICsJCXZhbCB8PSBNQ0RF X0VYVFNSQ1hDT05GX0JQUF9YUkdCODg4OCA8PAo+ICsJCQlNQ0RFX0VYVFNSQ1hDT05GX0JQUF9T SElGVDsKPiArCQl2YWwgfD0gTUNERV9FWFRTUkNYQ09ORl9CR1I7Cj4gKwkJYnJlYWs7Cj4gKwlj YXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6Cj4gKwkJdmFsIHw9IE1DREVfRVhUU1JDWENPTkZfQlBQ X1hSR0I4ODg4IDw8Cj4gKwkJCU1DREVfRVhUU1JDWENPTkZfQlBQX1NISUZUOwo+ICsJCWJyZWFr Owo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQjg4ODoKPiArCQl2YWwgfD0gTUNERV9FWFRTUkNYQ09O Rl9CUFBfUkdCODg4IDw8Cj4gKwkJCU1DREVfRVhUU1JDWENPTkZfQlBQX1NISUZUOwo+ICsJCXZh bCB8PSBNQ0RFX0VYVFNSQ1hDT05GX0JHUjsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZPUk1B VF9CR1I4ODg6Cj4gKwkJdmFsIHw9IE1DREVfRVhUU1JDWENPTkZfQlBQX1JHQjg4OCA8PAo+ICsJ CQlNQ0RFX0VYVFNSQ1hDT05GX0JQUF9TSElGVDsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZP Uk1BVF9BUkdCNDQ0NDoKPiArCQl2YWwgfD0gTUNERV9FWFRTUkNYQ09ORl9CUFBfQVJHQjQ0NDQg PDwKPiArCQkJTUNERV9FWFRTUkNYQ09ORl9CUFBfU0hJRlQ7Cj4gKwkJdmFsIHw9IE1DREVfRVhU U1JDWENPTkZfQkdSOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I0NDQ0Ogo+ ICsJCXZhbCB8PSBNQ0RFX0VYVFNSQ1hDT05GX0JQUF9BUkdCNDQ0NCA8PAo+ICsJCQlNQ0RFX0VY VFNSQ1hDT05GX0JQUF9TSElGVDsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZPUk1BVF9YUkdC NDQ0NDoKPiArCQl2YWwgfD0gTUNERV9FWFRTUkNYQ09ORl9CUFBfUkdCNDQ0IDw8Cj4gKwkJCU1D REVfRVhUU1JDWENPTkZfQlBQX1NISUZUOwo+ICsJCXZhbCB8PSBNQ0RFX0VYVFNSQ1hDT05GX0JH UjsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZPUk1BVF9YQkdSNDQ0NDoKPiArCQl2YWwgfD0g TUNERV9FWFRTUkNYQ09ORl9CUFBfUkdCNDQ0IDw8Cj4gKwkJCU1DREVfRVhUU1JDWENPTkZfQlBQ X1NISUZUOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0IxNTU1Ogo+ICsJCXZh bCB8PSBNQ0RFX0VYVFNSQ1hDT05GX0JQUF9JUkdCMTU1NSA8PAo+ICsJCQlNQ0RFX0VYVFNSQ1hD T05GX0JQUF9TSElGVDsKPiArCQl2YWwgfD0gTUNERV9FWFRTUkNYQ09ORl9CR1I7Cj4gKwkJYnJl YWs7Cj4gKwljYXNlIERSTV9GT1JNQVRfWEJHUjE1NTU6Cj4gKwkJdmFsIHw9IE1DREVfRVhUU1JD WENPTkZfQlBQX0lSR0IxNTU1IDw8Cj4gKwkJCU1DREVfRVhUU1JDWENPTkZfQlBQX1NISUZUOwo+ ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKPiArCQl2YWwgfD0gTUNERV9F WFRTUkNYQ09ORl9CUFBfUkdCNTY1IDw8Cj4gKwkJCU1DREVfRVhUU1JDWENPTkZfQlBQX1NISUZU Owo+ICsJCXZhbCB8PSBNQ0RFX0VYVFNSQ1hDT05GX0JHUjsKPiArCQlicmVhazsKPiArCWNhc2Ug RFJNX0ZPUk1BVF9CR1I1NjU6Cj4gKwkJdmFsIHw9IE1DREVfRVhUU1JDWENPTkZfQlBQX1JHQjU2 NSA8PAo+ICsJCQlNQ0RFX0VYVFNSQ1hDT05GX0JQUF9TSElGVDsKPiArCQlicmVhazsKPiArCWNh c2UgRFJNX0ZPUk1BVF9ZVVY0MjI6Cj4gKwkJdmFsIHw9IE1DREVfRVhUU1JDWENPTkZfQlBQX1lD QkNSNDIyIDw8Cj4gKwkJCU1DREVfRVhUU1JDWENPTkZfQlBQX1NISUZUOwo+ICsJCWJyZWFrOwo+ ICsJZGVmYXVsdDoKPiArCQlkZXZfZXJyKGRybS0+ZGV2LCAiVW5rbm93biBwaXhlbCBmb3JtYXQg MHglMDh4XG4iLAo+ICsJCQlmYi0+Zm9ybWF0LT5mb3JtYXQpOwo+ICsJCWJyZWFrOwo+ICsJfQo+ ICsJd3JpdGVsKHZhbCwgbWNkZS0+cmVncyArIE1DREVfRVhUU1JDMENPTkYpOwo+ICsJLyogU29m dHdhcmUgc2VsZWN0LCBwcmltYXJ5ICovCj4gKwl2YWwgPSBNQ0RFX0VYVFNSQzBDUl9TRUxfTU9E X1NPRlRXQVJFX1NFTDsKPiArCXZhbCB8PSBNQ0RFX0VYVFNSQzBDUl9NVUxUSU9WTF9DVFJMX1BS SU1BUlk7Cj4gKwl3cml0ZWwodmFsLCBtY2RlLT5yZWdzICsgTUNERV9FWFRTUkMwQ1IpOwo+ICsK PiArCS8qIENvbmZpZ3VyZSBvdmVybGF5IDAgKi8KCklzIHRoZXJlIG1vcmUgdGhhbiBvdmVybGF5 IDA/IE11bHRpcGxlIHBsYW5lcyBvbiBvbmUgb3V0cHV0IGlzIGRlZmluaXRlbHkKb3V0IG9mIHNj b3BlIGZvciB0aGUgc2ltcGxlIGhlbHBlcnMuCgo+ICsJdmFsID0gbW9kZS0+aGRpc3BsYXkgPDwg TUNERV9PVkxYQ09ORl9QUExfU0hJRlQ7Cj4gKwl2YWwgfD0gbW9kZS0+dmRpc3BsYXkgPDwgTUNE RV9PVkxYQ09ORl9MUEZfU0hJRlQ7Cj4gKwkvKiBVc2UgZXh0ZXJuYWwgc291cmNlIDAgdGhhdCB3 ZSBqdXN0IGNvbmZpZ3VyZWQgKi8KPiArCXZhbCB8PSAwIDw8IE1DREVfT1ZMWENPTkZfRVhUU1JD X0lEX1NISUZUOwo+ICsJd3JpdGVsKHZhbCwgbWNkZS0+cmVncyArIE1DREVfT1ZMMENPTkYpOwo+ ICsKPiArCXZhbCA9IE1DREVfT1ZMWENPTkYyX0JQX1BFUl9QSVhFTF9BTFBIQTsKPiArCXZhbCB8 PSAweGZmIDw8IE1DREVfT1ZMWENPTkYyX0FMUEhBVkFMVUVfU0hJRlQ7Cj4gKwkvKiBPUFE6IG92 ZXJsYXkgaXMgb3BhcXVlICovCj4gKwlzd2l0Y2ggKGZvcm1hdCkgewo+ICsJY2FzZSBEUk1fRk9S TUFUX0FSR0I4ODg4Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+ICsJY2FzZSBEUk1f Rk9STUFUX0FSR0I0NDQ0Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I0NDQ0Ogo+ICsJY2FzZSBE Uk1fRk9STUFUX1hSR0IxNTU1Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1hCR1IxNTU1Ogo+ICsJCS8q IE5vIE9QUSAqLwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4Ogo+ICsJ Y2FzZSBEUk1fRk9STUFUX1hCR1I4ODg4Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQjg4ODoKPiAr CWNhc2UgRFJNX0ZPUk1BVF9CR1I4ODg6Cj4gKwljYXNlIERSTV9GT1JNQVRfUkdCNTY1Ogo+ICsJ Y2FzZSBEUk1fRk9STUFUX0JHUjU2NToKPiArCWNhc2UgRFJNX0ZPUk1BVF9ZVVY0MjI6Cj4gKwkJ dmFsIHw9IE1DREVfT1ZMWENPTkYyX09QUTsKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJ ZGV2X2Vycihkcm0tPmRldiwgIlVua25vd24gcGl4ZWwgZm9ybWF0IDB4JTA4eFxuIiwKPiArCQkJ ZmItPmZvcm1hdC0+Zm9ybWF0KTsKPiArCQlicmVhazsKPiArCX0KPiArCS8qIFRoZSBkZWZhdWx0 IHdhdGVybWFyayBsZXZlbCBmb3Igb3ZlcmxheSAwIGlzIDQ4ICovCj4gKwl2YWwgfD0gNDggPDwg TUNERV9PVkxYQ09ORjJfUElYRUxGRVRDSEVSV0FURVJNQVJLTEVWRUxfU0hJRlQ7Cj4gKwl3cml0 ZWwodmFsLCBtY2RlLT5yZWdzICsgTUNERV9PVkwwQ09ORjIpOwo+ICsKPiArCS8qIE51bWJlciBv ZiBieXRlcyB0byBmZXRjaCBwZXIgbGluZSAqLwo+ICsJd3JpdGVsKG1jZGUtPnN0cmlkZSwgbWNk ZS0+cmVncyArIE1DREVfT1ZMMExKSU5DKTsKPiArCS8qIE5vIGNyb3BwaW5nICovCj4gKwl3cml0 ZWwoMCwgbWNkZS0+cmVncyArIE1DREVfT1ZMMENST1ApOwo+ICsKPiArCS8qIFNldCB1cCBvdmVy bGF5IGNvbnRyb2wgcmVnaXN0ZXIgKi8KPiArCXZhbCA9IE1DREVfT1ZMWENSX09WTEVOOwo+ICsJ dmFsIHw9IE1DREVfT1ZMWENSX0NPTENDVFJMX0RJU0FCTEVEOwo+ICsJdmFsIHw9IE1DREVfT1ZM WENSX0JVUlNUU0laRV84VyA8PAo+ICsJCU1DREVfT1ZMWENSX0JVUlNUU0laRV9TSElGVDsKPiAr CXZhbCB8PSBNQ0RFX09WTFhDUl9NQVhPVVRTVEFORElOR184X1JFUSA8PAo+ICsJCU1DREVfT1ZM WENSX01BWE9VVFNUQU5ESU5HX1NISUZUOwo+ICsJLyogTm90IHVzaW5nIHJvdGF0aW9uIGJ1dCBz ZXQgaXQgdXAgYW55d2F5cyAqLwo+ICsJdmFsIHw9IE1DREVfT1ZMWENSX1JPVEJVUlNUU0laRV84 VyA8PAo+ICsJCU1DREVfT1ZMWENSX1JPVEJVUlNUU0laRV9TSElGVDsKPiArCXdyaXRlbCh2YWws IG1jZGUtPnJlZ3MgKyBNQ0RFX09WTDBDUik7Cj4gKwo+ICsJLyogU2V0LXVwIGZyb20gbWNkZV9m bXRyX2RzaS5jLCBmbXRyX2RzaV9lbmFibGVfdmlkZW8oKSAqLwo+ICsKPiArCS8qIENoYW5uZWwg Zm9ybWF0dGVyIHNldC11cCBmb3IgY2hhbm5lbCBBICovCj4gKwl2YWwgPSBNQ0RFX0NSWDFfQ0xL U0VMX01DREVDTEsgPDwgTUNERV9DUlgxX0NMS1NFTF9TSElGVDsKPiArCS8qIEZJWE1FOiB3aGVu IGFkZGluZyBEUEkgc3VwcG9ydCBhZGQgT1VUQlBQIGV0YyBoZXJlICovCj4gKwl3cml0ZWwodmFs LCBtY2RlLT5yZWdzICsgTUNERV9DUkExKTsKPiArCj4gKwkvKgo+ICsJICogRW5hYmxlIGZvcm1h dHRlcgo+ICsJICogOCBiaXQgY29tbWFuZHMgYW5kIERDUyBjb21tYW5kcyAobm90Z2VuID0gbm90 IGdlbmVyaWMpCj4gKwkgKi8KPiArCXZhbCA9IE1DREVfRFNJQ09ORjBfQ01EOCB8IE1DREVfRFNJ Q09ORjBfRENTVklEX05PVEdFTjsKPiArCWlmIChtY2RlLT5tZHNpLT5tb2RlX2ZsYWdzICYgTUlQ SV9EU0lfTU9ERV9WSURFTykKPiArCQl2YWwgfD0gTUNERV9EU0lDT05GMF9WSURfTU9ERV9WSUQ7 Cj4gKwlzd2l0Y2ggKG1jZGUtPm1kc2ktPmZvcm1hdCkgewo+ICsJY2FzZSBNSVBJX0RTSV9GTVRf UkdCODg4Ogo+ICsJCXZhbCB8PSBNQ0RFX0RTSUNPTkYwX1BBQ0tJTkdfUkdCODg4IDw8Cj4gKwkJ CU1DREVfRFNJQ09ORjBfUEFDS0lOR19TSElGVDsKPiArCQlicmVhazsKPiArCWNhc2UgTUlQSV9E U0lfRk1UX1JHQjY2NjoKPiArCQl2YWwgfD0gTUNERV9EU0lDT05GMF9QQUNLSU5HX1JHQjY2NiA8 PAo+ICsJCQlNQ0RFX0RTSUNPTkYwX1BBQ0tJTkdfU0hJRlQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNl IE1JUElfRFNJX0ZNVF9SR0I2NjZfUEFDS0VEOgo+ICsJCXZhbCB8PSBNQ0RFX0RTSUNPTkYwX1BB Q0tJTkdfUkdCNjY2X1BBQ0tFRCA8PAo+ICsJCQlNQ0RFX0RTSUNPTkYwX1BBQ0tJTkdfU0hJRlQ7 Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIE1JUElfRFNJX0ZNVF9SR0I1NjU6Cj4gKwkJdmFsIHw9IE1D REVfRFNJQ09ORjBfUEFDS0lOR19SR0I1NjUgPDwKPiArCQkJTUNERV9EU0lDT05GMF9QQUNLSU5H X1NISUZUOwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlkZXZfZXJyKGRybS0+ZGV2LCAi dW5rbm93biBEU0kgZm9ybWF0XG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwl3cml0ZWwodmFs LCBtY2RlLT5yZWdzICsgTUNERV9EU0lWSUQwQ09ORjApOwo+ICsKPiArCXdyaXRlbChmb3JtYXR0 ZXJfZnJhbWUsIG1jZGUtPnJlZ3MgKyBNQ0RFX0RTSVZJRDBGUkFNRSk7Cj4gKwl3cml0ZWwocGt0 X3NpemUsIG1jZGUtPnJlZ3MgKyBNQ0RFX0RTSVZJRDBQS1QpOwo+ICsJd3JpdGVsKDAsIG1jZGUt PnJlZ3MgKyBNQ0RFX0RTSVZJRDBTWU5DKTsKPiArCS8qIERlZmluZSB0aGUgTUlQSSBjb21tYW5k OiB3ZSB3YW50IHRvIHdyaXRlIGludG8gZGlzcGxheSBtZW1vcnkgKi8KPiArCXZhbCA9IE1JUElf RENTX1dSSVRFX01FTU9SWV9DT05USU5VRSA8PAo+ICsJCU1DREVfRFNJVklEWENNRFdfQ01EV19D T05USU5VRV9TSElGVDsKPiArCXZhbCB8PSBNSVBJX0RDU19XUklURV9NRU1PUllfU1RBUlQgPDwK PiArCQlNQ0RFX0RTSVZJRFhDTURXX0NNRFdfU1RBUlRfU0hJRlQ7Cj4gKwl3cml0ZWwodmFsLCBt Y2RlLT5yZWdzICsgTUNERV9EU0lWSUQwQ01EVyk7Cj4gKwkvKgo+ICsJICogRklYTUU6IHRoZSB2 ZW5kb3IgZHJpdmVyIGhhcyBzb21lIGhhY2sgYXJvdW5kIHRoaXMgdmFsdWUgaW4KPiArCSAqIENN RCBtb2RlIHdpdGggYXV0b3RyaWcuCj4gKwkgKi8KPiArCXdyaXRlbCgwLCBtY2RlLT5yZWdzICsg TUNERV9EU0lWSUQwREVMQVkwKTsKPiArCXdyaXRlbCgwLCBtY2RlLT5yZWdzICsgTUNERV9EU0lW SUQwREVMQVkxKTsKPiArCj4gKwlpZiAobWNkZS0+dGVfc3luYykgewo+ICsJCWlmIChtb2RlLT5m bGFncyAmIERSTV9NT0RFX0ZMQUdfTlZTWU5DKQo+ICsJCQl2YWwgPSBNQ0RFX1ZTQ1JDX1ZTUE9M Owo+ICsJCWVsc2UKPiArCQkJdmFsID0gMDsKPiArCQl3cml0ZWwodmFsLCBtY2RlLT5yZWdzICsg TUNERV9WU0NSQzApOwo+ICsJCS8qIEVuYWJsZSBWU1lOQyBjYXB0dXJlIG9uIFRFMCAqLwo+ICsJ CXZhbCA9IHJlYWRsKG1jZGUtPnJlZ3MgKyBNQ0RFX0NSQyk7Cj4gKwkJdmFsIHw9IE1DREVfQ1JD X1NZQ0VOMDsKPiArCQl3cml0ZWwodmFsLCBtY2RlLT5yZWdzICsgTUNERV9DUkMpOwo+ICsJCWRy bV9jcnRjX3ZibGFua19vbihjcnRjKTsKPiArCX0KPiArCj4gKwlkZXZfaW5mbyhkcm0tPmRldiwg Ik1DREUgZGlzcGxheSBpcyBlbmFibGVkXG4iKTsKPiArCW1jZGUtPmVuYWJsZWQgPSB0cnVlOwoK VGhpcyBraW5kIG9mIHRyYWNraW5nIHNob3VsZG4ndCBiZSBuZWVkZWQsIHNpbmNlIHlvdSdyZSBl c3NlbnRpYWxseQpmaWdodGluZyB0aGUgaGVscGVyLCB3aGljaCBzaG91bGQgYmUgaGVscGluZywg bm90IG1ha2luZyB0aGluZ3Mgd29yc2UuCgpJZiB5b3UgdXNlIGRybV9hdG9taWNfaGVscGVyX2Nv bW1pdF90YWlsX3JwbSBhcyB5b3VyCmRybV9tb2RlX2NvbmZpZ19oZWxwZXJfZnVuY3MuYXRvbWlj X2NvbW1pdF90YWlsIGhvb2sgdGhlbiBJIHRoaW5rIHRoZXJlCnNob3VsZG4ndCBiZSBhIG5lZWQg Zm9yIHRoaXMuIFRoaXMgc2hvdWxkIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlCmttcyBo ZWxwZXJzIHN0aWxsLgoKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbWNkZV9kaXNwbGF5X2Rpc2Fi bGUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMgPSAmcGlwZS0+Y3J0YzsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0g PSBjcnRjLT5kZXY7Cj4gKwlzdHJ1Y3QgbWNkZSAqbWNkZSA9IGRybS0+ZGV2X3ByaXZhdGU7Cj4g KwlpbnQgdGltZW91dCA9IDEwMDsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJLyogU3RvcHMgZnJhbWVi dWZmZXIgdXBkYXRlcyAqLwo+ICsJbWNkZS0+ZW5hYmxlZCA9IGZhbHNlOwo+ICsKPiArCWlmICht Y2RlLT50ZV9zeW5jKQo+ICsJCWRybV9jcnRjX3ZibGFua19vZmYoY3J0Yyk7Cj4gKwo+ICsJLyog RGlzYWJsZSBGSUZPIEEgZmxvdyAqLwo+ICsJdmFsID0gcmVhZGwobWNkZS0+cmVncyArIE1DREVf Q1JBMCk7Cj4gKwl2YWwgJj0gfk1DREVfQ1JYMF9GTE9FTjsKPiArCXdyaXRlbCh2YWwsIG1jZGUt PnJlZ3MgKyBNQ0RFX0NSQTApOwo+ICsJd2hpbGUgKHJlYWRsKG1jZGUtPnJlZ3MgKyBNQ0RFX0NS QTApICYgTUNERV9DUlgwX0ZMT0VOKSB7Cj4gKwkJdXNsZWVwX3JhbmdlKDEwMDAsIDE1MDApOwo+ ICsJCWlmICghLS10aW1lb3V0KSB7Cj4gKwkJCWRldl9lcnIoZHJtLT5kZXYsCj4gKwkJCQkiRklG TyBBIHRpbWVvdXQgd2hpbGUgc3RvcHBpbmdcbiIpOwo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwl9 Cj4gKwlzcGluX2xvY2soJm1jZGUtPmZsb3dfbG9jayk7Cj4gKwltY2RlLT5mbG93X2FjdGl2ZSA9 IDA7Cj4gKwlzcGluX3VubG9jaygmbWNkZS0+Zmxvd19sb2NrKTsKPiArCj4gKwlkZXZfaW5mbyhk cm0tPmRldiwgIk1DREUgZGlzcGxheSBpcyBkaXNhYmxlZFxuIik7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIG1jZGVfZGlzcGxheV9zZW5kX29uZV9mcmFtZShzdHJ1Y3QgbWNkZSAqbWNkZSkKPiAr ewo+ICsJaW50IHRpbWVvdXQgPSAxMDA7Cj4gKwl1MzIgdmFsOwo+ICsKPiArCS8qIFJlcXVlc3Qg YSBURSBBQ0sgKi8KPiArCWlmIChtY2RlLT50ZV9zeW5jKQo+ICsJCW1jZGVfZHNpX3RlX3JlcXVl c3QobWNkZS0+bWRzaSk7Cj4gKwo+ICsJLyogRW5hYmxlIEZJRk8gQSBmbG93ICovCj4gKwlzcGlu X2xvY2soJm1jZGUtPmZsb3dfbG9jayk7Cj4gKwl2YWwgPSByZWFkbChtY2RlLT5yZWdzICsgTUNE RV9DUkEwKTsKPiArCXZhbCB8PSBNQ0RFX0NSWDBfRkxPRU47Cj4gKwl3cml0ZWwodmFsLCBtY2Rl LT5yZWdzICsgTUNERV9DUkEwKTsKPiArCW1jZGUtPmZsb3dfYWN0aXZlKys7Cj4gKwlzcGluX3Vu bG9jaygmbWNkZS0+Zmxvd19sb2NrKTsKPiArCj4gKwlpZiAobWNkZS0+dGVfc3luYykgewo+ICsJ CS8qCj4gKwkJICogSWYgb25lc2hvdCBtb2RlIGlzIGVuYWJsZWQsIHRoZSBmbG93IHdpbGwgYmUg ZGlzYWJsZWQKPiArCQkgKiB3aGVuIHRoZSBURTAgSVJRIGFycml2ZXMgaW4gdGhlIGludGVycnVw dCBoYW5kbGVyLiBPdGhlcndpc2UKPiArCQkgKiB1cGRhdGVzIGFyZSBjb250aW51b3VzbHkgc3Ry ZWFtZWQgdG8gdGhlIGRpc3BsYXkgYWZ0ZXIgdGhpcwo+ICsJCSAqIHBvaW50Lgo+ICsJCSAqLwo+ ICsJCWRldl9kYmcobWNkZS0+ZGV2LCAic2VudCBURTAgZnJhbWVidWZmZXIgdXBkYXRlXG4iKTsK PiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJLyogVHJpZ2dlciBhIHNvZnR3YXJlIHN5bmMgb3V0 IG9uIGNoYW5uZWwgMCAqLwo+ICsJd3JpdGVsKE1DREVfQ0hOTFhTWU5DSFNXX1NXX1RSSUcsCj4g KwkgICAgICAgbWNkZS0+cmVncyArIE1DREVfQ0hOTDBTWU5DSFNXKTsKPiArCS8qIERpc2FibGUg RklGTyBBIGZsb3cgYWdhaW4gKi8KPiArCXNwaW5fbG9jaygmbWNkZS0+Zmxvd19sb2NrKTsKPiAr CXZhbCA9IHJlYWRsKG1jZGUtPnJlZ3MgKyBNQ0RFX0NSQTApOwo+ICsJdmFsICY9IH5NQ0RFX0NS WDBfRkxPRU47Cj4gKwl3cml0ZWwodmFsLCBtY2RlLT5yZWdzICsgTUNERV9DUkEwKTsKPiArCW1j ZGUtPmZsb3dfYWN0aXZlID0gMDsKPiArCXNwaW5fdW5sb2NrKCZtY2RlLT5mbG93X2xvY2spOwo+ ICsKPiArCS8qCj4gKwkgKiBBdCB0aGlzIHBvaW50IHRoZSBEU0kgbGluayBzaG91bGQgYmUgcnVu bmluZyBhCj4gKwkgKiBmcmFtZSB1cGRhdGUuCj4gKwkgKi8KPiArCXdoaWxlIChyZWFkbChtY2Rl LT5yZWdzICsgTUNERV9DUkEwKSAmIE1DREVfQ1JYMF9GTE9FTikgewo+ICsJCXVzbGVlcF9yYW5n ZSgxMDAwLCAxNTAwKTsKPiArCQlpZiAoIS0tdGltZW91dCkgewo+ICsJCQlkZXZfZXJyKG1jZGUt PmRldiwgIkZJRk8gQSB0aW1lb3V0XG4iKTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfQo+ICsJ ZGV2X2RiZyhtY2RlLT5kZXYsICJzZW50IFNXIGZyYW1lYnVmZmVyIHVwZGF0ZVxuIik7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIG1jZGVfZGlzcGxheV91cGRhdGUoc3RydWN0IGRybV9zaW1wbGVf ZGlzcGxheV9waXBlICpwaXBlLAo+ICsJCQkJIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9w c3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZwaXBlLT5jcnRjOwo+ICsJ c3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBtY2RlICptY2Rl ID0gZHJtLT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQg KmV2ZW50ID0gY3J0Yy0+c3RhdGUtPmV2ZW50Owo+ICsJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUg PSAmcGlwZS0+cGxhbmU7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUgPSBwbGFu ZS0+c3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBzdGF0ZS0+ZmI7Cj4g Kwo+ICsJLyoKPiArCSAqIFdlIGRvIG5vdCBzdGFydCBzZW5kaW5nIGZyYW1lYnVmZmVyIHVwZGF0 ZXMgYmVmb3JlIHRoZQo+ICsJICogZGlzcGxheSBpcyBlbmFibGVkLiBVcGRhdGUgZXZlbnRzIHdp bGwgaG93ZXZlciBiZSBkaXNwYXRjaGVkCj4gKwkgKiBmcm9tIHRoZSBEUk0gY29yZSBiZWZvcmUg dGhlIGRpc3BsYXkgaXMgZW5hYmxlZC4KPiArCSAqLwo+ICsJaWYgKGZiICYmIG1jZGUtPmVuYWJs ZWQpIHsKCldpdGggdGhlIGNvbW1pdF90YWlsX3JwbSBjaGFuZ2UgYm90aCBvZiB0aGVzZSBjaGVj a3Mgc2hvdWxkbid0IGJlIG5lZWRlZC4KCj4gKwkJLyogV3JpdGUgYml0bWFwIGJhc2UgYWRkcmVz cyB0byByZWdpc3RlciAqLwo+ICsJCS8qIFNldCB0byAweDEwMDAwMCB0byBkaXNwbGF5IHJhbmRv bSBqdW5rICovCj4gKwkJd3JpdGVsKGRybV9mYl9jbWFfZ2V0X2dlbV9hZGRyKGZiLCBwc3RhdGUs IDApLAo+ICsJCSAgICAgICBtY2RlLT5yZWdzICsgTUNERV9FWFRTUkNYQTApOwo+ICsJCS8qCj4g KwkJICogQmFzZSBhZGRyZXNzIGZvciBuZXh0IGxpbmUgdGhpcyBpcyBwcm9iYWJseSBvbmx5IHVz ZWQKPiArCQkgKiBpbiBpbnRlcmxhY2UgbW9kZXMuCj4gKwkJICovCj4gKwkJd3JpdGVsKGRybV9m Yl9jbWFfZ2V0X2dlbV9hZGRyKGZiLCBwc3RhdGUsIDApICsgbWNkZS0+c3RyaWRlLAo+ICsJCSAg ICAgICBtY2RlLT5yZWdzICsgTUNERV9FWFRTUkNYQTEpOwo+ICsKPiArCQkvKiBTZXQgdXAgb3Zl cmxheSAwIGNvbXBvc2l0b3Igcm91dGUgdG8gY2hhbm5lbCBBICovCj4gKwkJd3JpdGVsKDAsIG1j ZGUtPnJlZ3MgKyBNQ0RFX09WTDBDT01QKTsKPiArCj4gKwkJLyogU2VuZCBhIHNpbmdsZSBmcmFt ZSB1c2luZyBzb2Z0d2FyZSBzeW5jICovCj4gKwkJbWNkZV9kaXNwbGF5X3NlbmRfb25lX2ZyYW1l KG1jZGUpOwo+ICsJfQo+ICsKPiArCS8qIEhhbmRsZSBhbnkgcGVuZGluZyBldmVudCAqLwo+ICsJ aWYgKGV2ZW50KSB7Cj4gKwkJY3J0Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsKPiArCj4gKwkJc3Bp bl9sb2NrX2lycSgmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrKTsKPiArCQkvKgo+ICsJCSAqIEhhcmR3 YXJlIG11c3QgYmUgb24gYmVmb3JlIHdlIGNhbiBhcm0gYW55IHZibGFuayBldmVudCwKPiArCQkg KiB0aGlzIGlzIG5vdCBhIHNjYW5vdXQgY29udHJvbGxlciB3aGVyZSB0aGVyZSBpcyBhbHdheXMK PiArCQkgKiBzb21lIHBlcmlvZGljIHVwZGF0ZSBnb2luZyBvbiwgaXQgaXMgY29tcGxldGVseSBm cm96ZW4KPiArCQkgKiB1bnRpbCB3ZSBnZXQgYW4gdXBkYXRlLiBJZiBNQ0RFIG91dHB1dCBpc24n dCB5ZXQgZW5hYmxlZCwKPiArCQkgKiB3ZSBqdXN0IHNlbmQgYSB2YmxhbmsgZHVtbXkgZXZlbnQg YmFjay4KPiArCQkgKi8KPiArCQlpZiAobWNkZS0+ZW5hYmxlZCAmJiBjcnRjLT5zdGF0ZS0+YWN0 aXZlICYmCj4gKwkJICAgIGRybV9jcnRjX3ZibGFua19nZXQoY3J0YykgPT0gMCAmJiAhbWNkZS0+ dmJsYW5rX2lycV9vbikgewoKLT52YmxhbmtfaXJxX29uIGlzIGd1YXJhbnRlZWQgdG8gYmUgc2V0 IGlmIGRybV9jcnRjX3ZibGFua19nZXQgc3VjY2VlZHMuCkFuZCBJIGRvbid0IHNlZSBhbnkgb3Ro ZXIgcmVhc29uIHdoeSB5b3UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBzYW1lCnRoaW5nIHRo ZSBkcm1fdmJsYW5rIGNvZGUgYWxyZWFkeSBrZWVwcyB0cmFjayBvZiwgYmVzdCB0byByZW1vdmU/ Cgo+ICsJCQlkZXZfZGJnKG1jZGUtPmRldiwgImFybSB2YmxhbmsgZXZlbnRcbiIpOwo+ICsJCQlk cm1fY3J0Y19hcm1fdmJsYW5rX2V2ZW50KGNydGMsIGV2ZW50KTsKPiArCQl9IGVsc2Ugewo+ICsJ CQlkZXZfZGJnKG1jZGUtPmRldiwgImluc2VydCBmYWtlIHZibGFuayBldmVudFxuIik7Cj4gKwkJ CWRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KGNydGMsIGV2ZW50KTsKPiArCQl9Cj4gKwo+ICsJ CXNwaW5fdW5sb2NrX2lycSgmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrKTsKPiArCX0KPiArfQo+ICsK PiArc3RhdGljIGludCBtY2RlX2Rpc3BsYXlfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX3NpbXBs ZV9kaXNwbGF5X3BpcGUgKnBpcGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZw aXBlLT5jcnRjOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGNydGMtPmRldjsKPiArCXN0 cnVjdCBtY2RlICptY2RlID0gZHJtLT5kZXZfcHJpdmF0ZTsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJ LyogRW5hYmxlIGFsbCBWQkxBTksgSVJRcyAqLwo+ICsJdmFsID0gTUNERV9QUF9WQ01QQSB8Cj4g KwkJTUNERV9QUF9WQ01QQiB8Cj4gKwkJTUNERV9QUF9WU0NDMCB8Cj4gKwkJTUNERV9QUF9WU0ND MSB8Cj4gKwkJTUNERV9QUF9WQ01QQzAgfAo+ICsJCU1DREVfUFBfVkNNUEMxOwo+ICsJd3JpdGVs KHZhbCwgbWNkZS0+cmVncyArIE1DREVfSU1TQ1BQKTsKPiArCW1jZGUtPnZibGFua19pcnFfb24g PSB0cnVlOwo+ICsKPiArCXJldHVybiAwOwo+ICt9CgpXb3VsZCBiZSBpbnRlcmVzdGluZyB0byBy dW4ga21zX2ZsaXAgZnJvbSBpZ3Qgb24gdGhpcyBhbmQgc2VlIHdobyBtdWNoIHRoZQp0ZXN0Y2Fz ZSBpcyB1bmhhcHB5IGFib3V0IHlvdXIgdmJsYW5rIGludGVycnVwdHMuIENvbXBvc2l0b3JzIGRv IGV4cGVjdAppbnRlcnJ1cHRzIHRvIHdvcmsgaWYgeW91IGFkdmVydGlzZSB0aGVtICh0aHJvdWdo IGRybV92YmxhbmtfaW5pdCksIGJ1dAptb3N0IGFyZSB0b3RhbGx5IGZpbmUgaWYgdGhleSdyZSBp bmFjY3VyYXRlLgoKPiArCj4gK3N0YXRpYyB2b2lkIG1jZGVfZGlzcGxheV9kaXNhYmxlX3ZibGFu ayhzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUpCj4gK3sKPiArCXN0cnVjdCBk cm1fY3J0YyAqY3J0YyA9ICZwaXBlLT5jcnRjOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9 IGNydGMtPmRldjsKPiArCXN0cnVjdCBtY2RlICptY2RlID0gZHJtLT5kZXZfcHJpdmF0ZTsKPiAr Cj4gKwkvKiBEaXNhYmxlIGFsbCBWQkxBTksgSVJRcyAqLwo+ICsJd3JpdGVsKDAsIG1jZGUtPnJl Z3MgKyBNQ0RFX0lNU0NQUCk7Cj4gKwkvKiBDbGVhciBhbnkgcGVuZGluZyBJUlFzICovCj4gKwl3 cml0ZWwoMHhGRkZGRkZGRiwgbWNkZS0+cmVncyArIE1DREVfUklTUFApOwo+ICsJbWNkZS0+dmJs YW5rX2lycV9vbiA9IGZhbHNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG1jZGVfZGlzcGxheV9w cmVwYXJlX2ZiKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKPiArCQkJCSAg ICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiArewo+ICsJcmV0dXJuIGRy bV9nZW1fZmJfcHJlcGFyZV9mYigmcGlwZS0+cGxhbmUsIHBsYW5lX3N0YXRlKTsKPiArfQoKZHJt X2dlbV9mYl9zaW1wbGVfZGlzcGxheV9waXBlX3ByZXBhcmVfZmIoKQoKPiArCj4gK3N0YXRpYyBz dHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfZnVuY3MgbWNkZV9kaXNwbGF5X2Z1bmNzID0g ewo+ICsJLmNoZWNrID0gbWNkZV9kaXNwbGF5X2NoZWNrLAo+ICsJLmVuYWJsZSA9IG1jZGVfZGlz cGxheV9lbmFibGUsCj4gKwkuZGlzYWJsZSA9IG1jZGVfZGlzcGxheV9kaXNhYmxlLAo+ICsJLnVw ZGF0ZSA9IG1jZGVfZGlzcGxheV91cGRhdGUsCj4gKwkucHJlcGFyZV9mYiA9IG1jZGVfZGlzcGxh eV9wcmVwYXJlX2ZiLAo+ICt9Owo+ICsKPiAraW50IG1jZGVfZGlzcGxheV9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkcm0pCj4gK3sKPiArCXN0cnVjdCBtY2RlICptY2RlID0gZHJtLT5kZXZfcHJp dmF0ZTsKPiArCWludCByZXQ7Cj4gKwlzdGF0aWMgY29uc3QgdTMyIGZvcm1hdHNbXSA9IHsKPiAr CQlEUk1fRk9STUFUX0FSR0I4ODg4LAo+ICsJCURSTV9GT1JNQVRfQUJHUjg4ODgsCj4gKwkJRFJN X0ZPUk1BVF9YUkdCODg4OCwKPiArCQlEUk1fRk9STUFUX1hCR1I4ODg4LAo+ICsJCURSTV9GT1JN QVRfUkdCODg4LAo+ICsJCURSTV9GT1JNQVRfQkdSODg4LAo+ICsJCURSTV9GT1JNQVRfQVJHQjQ0 NDQsCj4gKwkJRFJNX0ZPUk1BVF9BQkdSNDQ0NCwKPiArCQlEUk1fRk9STUFUX1hSR0I0NDQ0LAo+ ICsJCURSTV9GT1JNQVRfWEJHUjQ0NDQsCj4gKwkJLyogVGhlc2UgYXJlIGFjdHVhbGx5IElSR0Ix NTU1IHNvIGludGVuc2l0eSBiaXQgaXMgbG9zdCAqLwo+ICsJCURSTV9GT1JNQVRfWFJHQjE1NTUs Cj4gKwkJRFJNX0ZPUk1BVF9YQkdSMTU1NSwKPiArCQlEUk1fRk9STUFUX1JHQjU2NSwKPiArCQlE Uk1fRk9STUFUX0JHUjU2NSwKPiArCQlEUk1fRk9STUFUX1lVVjQyMiwKPiArCX07Cj4gKwo+ICsJ LyogUHJvdmlkZSB2Ymxhbmsgb25seSB3aGVuIHdlIGhhdmUgVEUgZW5hYmxlZCAqLwo+ICsJaWYg KG1jZGUtPnRlX3N5bmMpIHsKPiArCQltY2RlX2Rpc3BsYXlfZnVuY3MuZW5hYmxlX3ZibGFuayA9 IG1jZGVfZGlzcGxheV9lbmFibGVfdmJsYW5rOwo+ICsJCW1jZGVfZGlzcGxheV9mdW5jcy5kaXNh YmxlX3ZibGFuayA9IG1jZGVfZGlzcGxheV9kaXNhYmxlX3ZibGFuazsKPiArCX0KPiArCj4gKwly ZXQgPSBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9pbml0KGRybSwgJm1jZGUtPnBpcGUsCj4gKwkJ CQkJICAgJm1jZGVfZGlzcGxheV9mdW5jcywKPiArCQkJCQkgICBmb3JtYXRzLCBBUlJBWV9TSVpF KGZvcm1hdHMpLAo+ICsJCQkJCSAgIE5VTEwsCj4gKwkJCQkJICAgbWNkZS0+Y29ubmVjdG9yKTsK PiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICtF WFBPUlRfU1lNQk9MX0dQTChtY2RlX2Rpc3BsYXlfaW5pdCk7Cj4gKwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2RybS5oIGIvZHJpdmVycy9ncHUvZHJtL21jZGUvbWNk ZV9kcm0uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5lZWE2 ZGMyMzQzNmEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21jZGUvbWNk ZV9kcm0uaAo+IEBAIC0wLDAgKzEsNTIgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjArICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAxOCBMaW51cyBXYWxsZWlq IDxsaW51cy53YWxsZWlqQGxpbmFyby5vcmc+Cj4gKyAqIFBhcnRzIG9mIHRoaXMgZmlsZSB3ZXJl IGJhc2VkIG9uIHRoZSBNQ0RFIGRyaXZlciBieSBNYXJjdXMgTG9yZW50em9uCj4gKyAqIChDKSBT VC1Fcmljc3NvbiBTQSAyMDEzCj4gKyAqLwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9zaW1wbGVfa21z X2hlbHBlci5oPgo+ICsKPiArI2lmbmRlZiBfTUNERV9EUk1fSF8KPiArI2RlZmluZSBfTUNERV9E Uk1fSF8KPiArCj4gK3N0cnVjdCBtY2RlIHsKPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKClRoZSBj b29sIHRoaW5nIG5vd2FkYXlzIGlzIGVtYmVkZGluZyBhbmQgZHJtX2Rldl9pbml0KCkuCgo+ICsK PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07Cj4gKwlzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbDsK PiArCXN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2U7CgpCcmlkZ2VzIGNhbiBiZSBzdGFja2VkLCBz ZWUgZHJtX2JyaWRnZS5uZXh0IGFuZCBkcm1fYnJpZGdlX2F0dGFjaC4gSSdtIGEKYml0IGxvc3Qg b24gd2h5IHlvdSBuZWVkIGFsbCB0aGUgcG9pbnRlcnMgaGVyZSwgSSdkIHNvbWVob3cgYXNzdW1l IHdpdGgKYWxsIHRoZXNlIG9mIHBvaW50ZXJzIGFuZCBkcml2ZXJfcHJpdmF0ZSBpdCBzaG91bGQg YmUgcG9zc2libGUgdG8gZ2V0IGF0CmFsbCB0aGUgcmlnaHQgYml0cy4KCj4gKwlzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICsJc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBl IHBpcGU7Cj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICptZHNpOwo+ICsJczE2IHN0cmlkZTsK PiArCWJvb2wgZW5hYmxlZDsKPiArCWJvb2wgdmJsYW5rX2lycV9vbjsKPiArCWJvb2wgdGVfc3lu YzsKPiArCWJvb2wgb25lc2hvdF9tb2RlOwo+ICsJdW5zaWduZWQgaW50IGZsb3dfYWN0aXZlOwo+ ICsJc3BpbmxvY2tfdCBmbG93X2xvY2s7IC8qIExvY2tzIHRoZSBjaGFubmVsIGZsb3cgY29udHJv bCAqLwo+ICsKPiArCXZvaWQgX19pb21lbSAqcmVnczsKPiArCj4gKwlzdHJ1Y3QgY2xrICptY2Rl X2NsazsKPiArCXN0cnVjdCBjbGsgKmxjZF9jbGs7Cj4gKwlzdHJ1Y3QgY2xrICpoZG1pX2NsazsK PiArCXN0cnVjdCBjbGsgKmRzaTBfY2xrOwo+ICsJc3RydWN0IGNsayAqZHNpMV9jbGs7Cj4gKwlz dHJ1Y3QgY2xrICpkc2kwZXNfY2xrOwo+ICsJc3RydWN0IGNsayAqZHNpMWVzX2NsazsKPiArCXN0 cnVjdCBjbGsgKmRzaTJlc19jbGs7Cj4gKwo+ICsJc3RydWN0IHJlZ3VsYXRvciAqZXBvZDsKPiAr CXN0cnVjdCByZWd1bGF0b3IgKnZhbmE7Cj4gK307Cj4gKwo+ICtib29sIG1jZGVfZHNpX2lycShz dHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICptZHNpKTsKPiArdm9pZCBtY2RlX2RzaV90ZV9yZXF1ZXN0 KHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKm1kc2kpOwo+ICtleHRlcm4gc3RydWN0IHBsYXRmb3Jt X2RyaXZlciBtY2RlX2RzaV9kcml2ZXI7Cj4gKwo+ICt2b2lkIG1jZGVfZGlzcGxheV9pcnEoc3Ry dWN0IG1jZGUgKm1jZGUpOwo+ICt2b2lkIG1jZGVfZGlzcGxheV9kaXNhYmxlX2lycXMoc3RydWN0 IG1jZGUgKm1jZGUpOwo+ICtpbnQgbWNkZV9kaXNwbGF5X2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRybSk7Cj4gKwo+ICsjZW5kaWYgLyogX01DREVfRFJNX0hfICovCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9tY2RlL21jZGVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2Rl X2Rydi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmNiNjU2 MDlhYzgxMgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2Rl X2Rydi5jCj4gQEAgLTAsMCArMSw1NDAgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDE4IExpbnVzIFdhbGxlaWogPGxp bnVzLndhbGxlaWpAbGluYXJvLm9yZz4KPiArICogUGFydHMgb2YgdGhpcyBmaWxlIHdlcmUgYmFz ZWQgb24gdGhlIE1DREUgZHJpdmVyIGJ5IE1hcmN1cyBMb3JlbnR6b24KPiArICogKEMpIFNULUVy aWNzc29uIFNBIDIwMTMKPiArICovCj4gKwo+ICsvKioKPiArICogRE9DOiBTVC1Fcmljc3NvbiBN Q0RFIERyaXZlcgo+ICsgKgo+ICsgKiBUaGUgTUNERSAoc2hvcnQgZm9yIE11bHRpLWNoYW5uZWwg ZGlzcGxheSBlbmdpbmUpIGlzIGEgZ3JhcGhpY3MKPiArICogY29udHJvbGxlciBmb3VuZCBpbiB0 aGUgVXg1MDAgY2hpcHNldHMsIHN1Y2ggYXMgTm92YVRob3IgVTg1MDAuCj4gKyAqIEl0IHdhcyBp bml0aWFsbHkgY29uY2VwdHVhbGl6ZWQgYnkgU1QgTWljcm9lbGVjdHJvbmljcyBmb3IgdGhlCj4g KyAqIHN1Y2Nlc3NvciBvZiB0aGUgTm9tYWRpayBsaW5lLCBTVG44NTAwIGJ1dCBwcm9kdWN0aWZp ZWQgaW4gdGhlCj4gKyAqIFNULUVyaWNzc29uIFU4NTAwIHdoZXJlIGlzIHdhcyB1c2VkIGZvciBt YXNzLW1hcmtldCBkZXBsb3ltZW50cwo+ICsgKiBpbiBBbmRyb2lkIHBob25lcyBmcm9tIFNhbXN1 bmcgYW5kIFNvbnkgRXJpY3Nzb24uCj4gKyAqCj4gKyAqIEl0IGNhbiBkbyAxMDgwcDMwIG9uIFNE VFYgQ0NJUjY1NiwgRFBJLTIsIERCSS0yIG9yIERTSSBmb3IKPiArICogcGFuZWxzIHdpdGggb3Ig d2l0aG91dCBmcmFtZSBidWZmZXJpbmcgYW5kIGNhbiBjb252ZXJ0IG1vc3QKPiArICogaW5wdXQg Zm9ybWF0cyBpbmNsdWRpbmcgbW9zdCB2YXJpYW50cyBvZiBSR0IgYW5kIFlVVi4KPiArICoKPiAr ICogVGhlIGhhcmR3YXJlIGhhcyBmb3VyIGRpc3BsYXkgcGlwZXMsIGFuZCB0aGUgbGF5b3V0IGlz IGEgbGl0dGxlCj4gKyAqIGJpdCBsaWtlIHRoaXM6Cj4gKyAqCj4gKyAqIE1lbW9yeSAgICAgLT4g NiBjaGFubmVscyAtPiA1IGZvcm1hdHRlcnMgLT4gRFNJL0RQSSAtPiBMQ0QvSERNSQo+ICsgKiAx MCBzb3VyY2VzICAgIChvdmVybGF5cykgICAgICAgICAgICAgICAgICAgIDMgeCBEU0kKPiArICoK PiArICogVGhlIG1lbW9yeSBoYXMgNSBpbnB1dCBjaGFubmVscyAobWVtb3J5IHBvcnRzKToKPiAr ICogMiBjaGFubmVsIEEgKExDRC9UVikKPiArICogMiBjaGFubmVsIEIgKExDRC9UVikKPiArICog MSBjaGFubmVsIENPL0MxIChQYW5lbCB3aXRoIGVtYmVkZGVkIGJ1ZmZlcikKPiArICoKPiArICog MyBvZiB0aGUgZm9ybWF0dGVycyBhcmUgZm9yIERTSQo+ICsgKiAyIG9mIHRoZSBmb3JtYXR0ZXJz IGFyZSBmb3IgRFBJCj4gKyAqCj4gKyAqIEJlaGluZCB0aGUgZm9ybWF0dGVycyBhcmUgdGhlIERT SSBvciBEUEkgcG9ydHMsIHRoYXQgcm91dGUgdG8KPiArICogdGhlIGV4dGVybmFsIHBpbnMgb2Yg dGhlIGNoaXAuIEFzIHRoZXJlIGFyZSAzIERTSSBwb3J0cyBhbmQgb25lCj4gKyAqIERQSSBwb3J0 LCBpdCBpcyBwb3NzaWJsZSB0byBjb25maWd1cmUgdXAgdG8gNCBkaXNwbGF5IHBpcGVsaW5lcy4K ClllYWggdGhpcydsbCBiZSBvdXRncm93aW5nIHNpbXBsZSBwaXBlIGhlbHBlciByZWFsIGZhc3Qg SSB0aGluay4gSWYgeW91CmhhdmUgYW55IGludGVudGlvbnMgb2Ygc3VwcG9ydGluZyBhbGwgdGhp cyBzdHVmZiBhdCBsZWFzdC4KCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9kbWEtYnVmLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pcnEuaD4KPiArI2luY2x1ZGUgPGxpbnV4 L2lvLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgo+ICsK PiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxw ZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRy bS9kcm1fZ2VtLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+Cj4gKyNp bmNsdWRlIDxkcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRy bS9kcm1fZmJfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4K PiArI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fb2YuaD4K PiArI2luY2x1ZGUgPGRybS9kcm1fYnJpZGdlLmg+Cj4gKwo+ICsjaW5jbHVkZSAibWNkZV9kcm0u aCIKPiArCj4gKyNkZWZpbmUgRFJJVkVSX0RFU0MJIkRSTSBtb2R1bGUgZm9yIE1DREUiCj4gKwo+ ICsjZGVmaW5lIE1DREVfQ1IgMHgwMDAwMDAwMAo+ICsjZGVmaW5lIE1DREVfQ1JfSUZJRk9FTVBU WUxJTkVDT1VOVF9WNDIyX1NISUZUIDAKPiArI2RlZmluZSBNQ0RFX0NSX0lGSUZPRU1QVFlMSU5F Q09VTlRfVjQyMl9NQVNLIDB4MDAwMDAwM0YKPiArI2RlZmluZSBNQ0RFX0NSX0lGSUZPQ1RSTEVO IEJJVCgxNSkKPiArI2RlZmluZSBNQ0RFX0NSX1VGUkVDT1ZFUllfTU9ERV9WNDIyIEJJVCgxNikK PiArI2RlZmluZSBNQ0RFX0NSX1dSQVBfTU9ERV9WNDIyX1NISUZUIEJJVCgxNykKPiArI2RlZmlu ZSBNQ0RFX0NSX0FVVE9DTEtHX0VOIEJJVCgzMCkKPiArI2RlZmluZSBNQ0RFX0NSX01DREVFTiBC SVQoMzEpCj4gKwo+ICsjZGVmaW5lIE1DREVfQ09ORjAgMHgwMDAwMDAwNAo+ICsjZGVmaW5lIE1D REVfQ09ORjBfU1lOQ01VWDAgQklUKDApCj4gKyNkZWZpbmUgTUNERV9DT05GMF9TWU5DTVVYMSBC SVQoMSkKPiArI2RlZmluZSBNQ0RFX0NPTkYwX1NZTkNNVVgyIEJJVCgyKQo+ICsjZGVmaW5lIE1D REVfQ09ORjBfU1lOQ01VWDMgQklUKDMpCj4gKyNkZWZpbmUgTUNERV9DT05GMF9TWU5DTVVYNCBC SVQoNCkKPiArI2RlZmluZSBNQ0RFX0NPTkYwX1NZTkNNVVg1IEJJVCg1KQo+ICsjZGVmaW5lIE1D REVfQ09ORjBfU1lOQ01VWDYgQklUKDYpCj4gKyNkZWZpbmUgTUNERV9DT05GMF9TWU5DTVVYNyBC SVQoNykKPiArI2RlZmluZSBNQ0RFX0NPTkYwX0lGSUZPQ1RSTFdUUk1SS0xWTF9TSElGVCAxMgo+ ICsjZGVmaW5lIE1DREVfQ09ORjBfSUZJRk9DVFJMV1RSTVJLTFZMX01BU0sgMHgwMDAwNzAwMAo+ ICsjZGVmaW5lIE1DREVfQ09ORjBfT1VUTVVYMF9TSElGVCAxNgo+ICsjZGVmaW5lIE1DREVfQ09O RjBfT1VUTVVYMF9NQVNLIDB4MDAwNzAwMDAKPiArI2RlZmluZSBNQ0RFX0NPTkYwX09VVE1VWDFf U0hJRlQgMTkKPiArI2RlZmluZSBNQ0RFX0NPTkYwX09VVE1VWDFfTUFTSyAweDAwMzgwMDAwCj4g KyNkZWZpbmUgTUNERV9DT05GMF9PVVRNVVgyX1NISUZUIDIyCj4gKyNkZWZpbmUgTUNERV9DT05G MF9PVVRNVVgyX01BU0sgMHgwMUMwMDAwMAo+ICsjZGVmaW5lIE1DREVfQ09ORjBfT1VUTVVYM19T SElGVCAyNQo+ICsjZGVmaW5lIE1DREVfQ09ORjBfT1VUTVVYM19NQVNLIDB4MEUwMDAwMDAKPiAr I2RlZmluZSBNQ0RFX0NPTkYwX09VVE1VWDRfU0hJRlQgMjgKPiArI2RlZmluZSBNQ0RFX0NPTkYw X09VVE1VWDRfTUFTSyAweDcwMDAwMDAwCj4gKwo+ICsjZGVmaW5lIE1DREVfU1NQIDB4MDAwMDAw MDgKPiArI2RlZmluZSBNQ0RFX0FJUyAweDAwMDAwMTAwCj4gKyNkZWZpbmUgTUNERV9JTVNDRVJS IDB4MDAwMDAxMTAKPiArI2RlZmluZSBNQ0RFX1JJU0VSUiAweDAwMDAwMTIwCj4gKyNkZWZpbmUg TUNERV9NSVNFUlIgMHgwMDAwMDEzMAo+ICsjZGVmaW5lIE1DREVfU0lTRVJSIDB4MDAwMDAxNDAK PiArCj4gKyNkZWZpbmUgTUNERV9QSUQgMHgwMDAwMDFGQwo+ICsjZGVmaW5lIE1DREVfUElEX01F VEFMRklYX1ZFUlNJT05fU0hJRlQgMAo+ICsjZGVmaW5lIE1DREVfUElEX01FVEFMRklYX1ZFUlNJ T05fTUFTSyAweDAwMDAwMEZGCj4gKyNkZWZpbmUgTUNERV9QSURfREVWRUxPUE1FTlRfVkVSU0lP Tl9TSElGVCA4Cj4gKyNkZWZpbmUgTUNERV9QSURfREVWRUxPUE1FTlRfVkVSU0lPTl9NQVNLIDB4 MDAwMEZGMDAKPiArI2RlZmluZSBNQ0RFX1BJRF9NSU5PUl9WRVJTSU9OX1NISUZUIDE2Cj4gKyNk ZWZpbmUgTUNERV9QSURfTUlOT1JfVkVSU0lPTl9NQVNLIDB4MDBGRjAwMDAKPiArI2RlZmluZSBN Q0RFX1BJRF9NQUpPUl9WRVJTSU9OX1NISUZUIDI0Cj4gKyNkZWZpbmUgTUNERV9QSURfTUFKT1Jf VkVSU0lPTl9NQVNLIDB4RkYwMDAwMDAKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21v ZGVfY29uZmlnX2Z1bmNzIG1vZGVfY29uZmlnX2Z1bmNzID0gewo+ICsJLmZiX2NyZWF0ZSA9IGRy bV9nZW1fZmJfY3JlYXRlLAoKWW91IG5lZWQgZHJtX2dlbV9mYl9jcmVhdGVfd2l0aF9kaXJ0eSBo ZXJlIGJlY2F1c2UgeW91IGhhdmUgYSBtYW51YWwKdXBsb2FkIHNjcmVlbi4gQWxzbyBtaWdodCBo ZWFkIHRoZSBhZHZpY2UgZnJvbSB0aGUga2VybmVsZG9jIGFuZCBjaGVjawp5b3VyIGJ1ZmZlciBh bGlnbm1lbnQgY29uc3RyYWludHMgaGVyZSBpbnN0ZWFkIG9mIGluIHRoZSBjaGVjayBjYWxsYmFj ay4KQnV0IEkgZ3Vlc3MgZWl0aGVyIHdvcmtzLCBiZXN0IHdvdWxkIGJlIGlmIGR1bWJfY3JlYXRl IHdvdWxkIGFsaWduIHN0dWZmCmNvcnJlY3RseSAod2hpY2ggaXQgc2hvdWxkKSwgYnV0IHNpbmNl IHRoaXMgaXMgc3VwZXIgdGhlb3JldGljYWwgKHVzdWFsbHkKbW9kZXMgYXJlIGV2ZW4gZW5vdWdo KSwgd2hvIGNhcmVzIDotKQoKPiArCS5hdG9taWNfY2hlY2sgPSBkcm1fYXRvbWljX2hlbHBlcl9j aGVjaywKPiArCS5hdG9taWNfY29tbWl0ID0gZHJtX2F0b21pY19oZWxwZXJfY29tbWl0LAo+ICt9 Owo+ICsKPiArc3RhdGljIGlycXJldHVybl90IG1jZGVfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEp Cj4gK3sKPiArCXN0cnVjdCBtY2RlICptY2RlID0gZGF0YTsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJ dmFsID0gcmVhZGwobWNkZS0+cmVncyArIE1DREVfTUlTRVJSKTsKPiArCj4gKwltY2RlX2Rpc3Bs YXlfaXJxKG1jZGUpOwo+ICsKPiArCWlmICh2YWwpCj4gKwkJZGV2X2luZm8obWNkZS0+ZGV2LCAi c29tZSBlcnJvciBJUlFcbiIpOwo+ICsJd3JpdGVsKHZhbCwgbWNkZS0+cmVncyArIE1DREVfUklT RVJSKTsKPiArCj4gKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg bWNkZV9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKPiArewo+ICsJc3RydWN0 IGRybV9tb2RlX2NvbmZpZyAqbW9kZV9jb25maWc7Cj4gKwlzdHJ1Y3QgbWNkZSAqbWNkZSA9IGRy bS0+ZGV2X3ByaXZhdGU7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCW1vZGVfY29uZmlnID0gJmRybS0+ bW9kZV9jb25maWc7Cj4gKwltb2RlX2NvbmZpZy0+ZnVuY3MgPSAmbW9kZV9jb25maWdfZnVuY3M7 Cj4gKwkvKiBUaGlzIGhhcmR3YXJlIGNhbiBkbyAxMDgwcCAqLwo+ICsJbW9kZV9jb25maWctPm1p bl93aWR0aCA9IDE7Cj4gKwltb2RlX2NvbmZpZy0+bWF4X3dpZHRoID0gMTkyMDsKPiArCW1vZGVf Y29uZmlnLT5taW5faGVpZ2h0ID0gMTsKPiArCW1vZGVfY29uZmlnLT5tYXhfaGVpZ2h0ID0gMTA4 MDsKPiArCj4gKwlpZiAobWNkZS0+dGVfc3luYykgewo+ICsJCXJldCA9IGRybV92YmxhbmtfaW5p dChkcm0sIDEpOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJZGV2X2Vycihkcm0tPmRldiwgImZhaWxl ZCB0byBpbml0IHZibGFua1xuIik7Cj4gKwkJCWdvdG8gb3V0X2NvbmZpZzsKPiArCQl9Cj4gKwl9 Cj4gKwo+ICsJcmV0ID0gbWNkZV9kaXNwbGF5X2luaXQoZHJtKTsKPiArCWlmIChyZXQpIHsKPiAr CQlkZXZfZXJyKGRybS0+ZGV2LCAiZmFpbGVkIHRvIGluaXQgZGlzcGxheVxuIik7Cj4gKwkJZ290 byBvdXRfY29uZmlnOwo+ICsJfQo+ICsKPiArCWRybV9tb2RlX2NvbmZpZ19yZXNldChkcm0pOwo+ ICsJZHJtX2ZiX2NtYV9mYmRldl9pbml0KGRybSwgMzIsIDApOwoKVGhpcyBpcyBnb25lLCBJIHRo aW5rIE5vcmFsZidzIGZhbmN5IHJlcGxhY2VtZW50IGlzCmRybV9mYmRldl9nZW5lcmljX3NldHVw KCkuCgo+ICsJZHJtX2ttc19oZWxwZXJfcG9sbF9pbml0KGRybSk7Cj4gKwo+ICsJcmV0dXJuIDA7 Cj4gKwo+ICtvdXRfY29uZmlnOgo+ICsJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKPiAr CXJldHVybiByZXQ7Cj4gK30KPiArCj4gK0RFRklORV9EUk1fR0VNX0NNQV9GT1BTKGRybV9mb3Bz KTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBtY2RlX2RybV9kcml2ZXIgPSB7Cj4g KwkuZHJpdmVyX2ZlYXR1cmVzID0KPiArCQlEUklWRVJfTU9ERVNFVCB8IERSSVZFUl9HRU0gfCBE UklWRVJfUFJJTUUgfCBEUklWRVJfQVRPTUlDLAo+ICsJLmxhc3RjbG9zZSA9IGRybV9mYl9oZWxw ZXJfbGFzdGNsb3NlLAo+ICsJLmlvY3RscyA9IE5VTEwsCj4gKwkuZm9wcyA9ICZkcm1fZm9wcywK PiArCS5uYW1lID0gIm1jZGUiLAo+ICsJLmRlc2MgPSBEUklWRVJfREVTQywKPiArCS5kYXRlID0g IjIwMTgwNTI5IiwKPiArCS5tYWpvciA9IDEsCj4gKwkubWlub3IgPSAwLAo+ICsJLnBhdGNobGV2 ZWwgPSAwLAo+ICsJLmR1bWJfY3JlYXRlID0gZHJtX2dlbV9jbWFfZHVtYl9jcmVhdGUsCj4gKwku Z2VtX2ZyZWVfb2JqZWN0X3VubG9ja2VkID0gZHJtX2dlbV9jbWFfZnJlZV9vYmplY3QsCj4gKwku Z2VtX3ZtX29wcyA9ICZkcm1fZ2VtX2NtYV92bV9vcHMsCj4gKwo+ICsJLnByaW1lX2hhbmRsZV90 b19mZCA9IGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2ZkLAo+ICsJLnByaW1lX2ZkX3RvX2hhbmRs ZSA9IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlLAo+ICsJLmdlbV9wcmltZV9pbXBvcnQgPSBk cm1fZ2VtX3ByaW1lX2ltcG9ydCwKPiArCS5nZW1fcHJpbWVfZXhwb3J0ID0gZHJtX2dlbV9wcmlt ZV9leHBvcnQsCj4gKwkuZ2VtX3ByaW1lX2dldF9zZ190YWJsZQk9IGRybV9nZW1fY21hX3ByaW1l X2dldF9zZ190YWJsZSwKPiArCS5nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlID0gZHJtX2dlbV9j bWFfcHJpbWVfaW1wb3J0X3NnX3RhYmxlLAo+ICsJLmdlbV9wcmltZV92bWFwID0gZHJtX2dlbV9j bWFfcHJpbWVfdm1hcCwKPiArCS5nZW1fcHJpbWVfdnVubWFwID0gZHJtX2dlbV9jbWFfcHJpbWVf dnVubWFwLAo+ICsJLmdlbV9wcmltZV9tbWFwID0gZHJtX2dlbV9jbWFfcHJpbWVfbW1hcCwKPiAr fTsKPiArCj4gK3N0YXRpYyBpbnQgbWNkZV9kcm1fYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4g K3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiAr CWludCByZXQ7Cj4gKwo+ICsJZHJtX21vZGVfY29uZmlnX2luaXQoZHJtKTsKPiArCj4gKwlyZXQg PSBjb21wb25lbnRfYmluZF9hbGwoZHJtLT5kZXYsIGRybSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJ ZGV2X2VycihkZXYsICJjYW4ndCBiaW5kIGNvbXBvbmVudCBkZXZpY2VzXG4iKTsKPiArCQlyZXR1 cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldCA9IG1jZGVfbW9kZXNldF9pbml0KGRybSk7Cj4gKwlp ZiAocmV0KQo+ICsJCWdvdG8gdW5iaW5kOwo+ICsKPiArCXJldCA9IGRybV9kZXZfcmVnaXN0ZXIo ZHJtLCAwKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCWdvdG8gdW5iaW5kOwo+ICsKPiArCXJldHVy biAwOwo+ICsKPiArdW5iaW5kOgo+ICsJY29tcG9uZW50X3VuYmluZF9hbGwoZHJtLT5kZXYsIGRy bSk7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtY2RlX2RybV91bmJp bmQoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0g ZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJZHJtX2Rldl91bnJlZ2lzdGVyKGRybSk7Cj4g Kwljb21wb25lbnRfdW5iaW5kX2FsbChkcm0tPmRldiwgZHJtKTsKClByb2JhYmx5IHdhbnQgYW4g ZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24gaGVyZSB0b28gc29tZXdoZXJlLgoKPiArCWRybV9t b2RlX2NvbmZpZ19jbGVhbnVwKGRybSk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg Y29tcG9uZW50X21hc3Rlcl9vcHMgbWNkZV9kcm1fY29tcF9vcHMgPSB7Cj4gKwkuYmluZCA9IG1j ZGVfZHJtX2JpbmQsCj4gKwkudW5iaW5kID0gbWNkZV9kcm1fdW5iaW5kLAo+ICt9Owo+ICsKPiAr c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmNvbnN0IG1jZGVfY29tcG9uZW50X2RyaXZl cnNbXSA9IHsKPiArCSZtY2RlX2RzaV9kcml2ZXIsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IG1j ZGVfY29tcGFyZV9kZXYoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKQo+ICt7Cj4gKwly ZXR1cm4gZGV2ID09IGRhdGE7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbWNkZV9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAm cGRldi0+ZGV2Owo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybTsKPiArCXN0cnVjdCBtY2RlICpt Y2RlOwo+ICsJc3RydWN0IGNvbXBvbmVudF9tYXRjaCAqbWF0Y2g7Cj4gKwlzdHJ1Y3QgcmVzb3Vy Y2UgKnJlczsKPiArCXUzMiBwaWQ7Cj4gKwl1MzIgdmFsOwo+ICsJaW50IGlycTsKPiArCWludCBy ZXQ7Cj4gKwlpbnQgaTsKPiArCj4gKwltY2RlID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpt Y2RlKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIW1jZGUpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4g KwltY2RlLT5kZXYgPSBkZXY7Cj4gKwo+ICsJZHJtID0gZHJtX2Rldl9hbGxvYygmbWNkZV9kcm1f ZHJpdmVyLCBkZXYpOwo+ICsJaWYgKElTX0VSUihkcm0pKQo+ICsJCXJldHVybiBQVFJfRVJSKGRy bSk7Cj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkcm0pOwo+ICsJbWNkZS0+ZHJtID0g ZHJtOwo+ICsJLyogRW5hYmxlIHVzZSBvZiB0aGUgVEUgc2lnbmFsIGFuZCBpbnRlcnJ1cHQgKi8K PiArCW1jZGUtPnRlX3N5bmMgPSB0cnVlOwo+ICsJLyogRW5hYmxlIGNvbnRpbnVvdXMgdXBkYXRl czogdGhpcyBpcyB3aGF0IExpbnV4JyBmcmFtZWJ1ZmZlciBleHBlY3RzICovCj4gKwltY2RlLT5v bmVzaG90X21vZGUgPSBmYWxzZTsKPiArCWRybS0+ZGV2X3ByaXZhdGUgPSBtY2RlOwo+ICsKPiAr CS8qIEZpcnN0IG9idGFpbiBhbmQgdHVybiBvbiB0aGUgbWFpbiBwb3dlciAqLwo+ICsJbWNkZS0+ ZXBvZCA9IGRldm1fcmVndWxhdG9yX2dldChkZXYsICJlcG9kIik7Cj4gKwlpZiAoSVNfRVJSKG1j ZGUtPmVwb2QpKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUihtY2RlLT5lcG9kKTsKPiArCQlkZXZfZXJy KGRldiwgImNhbid0IGdldCBFUE9EIHJlZ3VsYXRvclxuIik7Cj4gKwkJZ290byBkZXZfdW5yZWY7 Cj4gKwl9Cj4gKwlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKG1jZGUtPmVwb2QpOwo+ICsJaWYgKHJl dCkgewo+ICsJCWRldl9lcnIoZGV2LCAiY2FuJ3QgZW5hYmxlIEVQT0QgcmVndWxhdG9yXG4iKTsK PiArCQlnb3RvIGRldl91bnJlZjsKPiArCX0KPiArCW1jZGUtPnZhbmEgPSBkZXZtX3JlZ3VsYXRv cl9nZXQoZGV2LCAidmFuYSIpOwo+ICsJaWYgKElTX0VSUihtY2RlLT52YW5hKSkgewo+ICsJCXJl dCA9IFBUUl9FUlIobWNkZS0+dmFuYSk7Cj4gKwkJZGV2X2VycihkZXYsICJjYW4ndCBnZXQgVkFO QSByZWd1bGF0b3JcbiIpOwo+ICsJCWdvdG8gcmVndWxhdG9yX2Vwb2Rfb2ZmOwo+ICsJfQo+ICsJ cmV0ID0gcmVndWxhdG9yX2VuYWJsZShtY2RlLT52YW5hKTsKPiArCWlmIChyZXQpIHsKPiArCQlk ZXZfZXJyKGRldiwgImNhbid0IGVuYWJsZSBWQU5BIHJlZ3VsYXRvclxuIik7Cj4gKwkJZ290byBy ZWd1bGF0b3JfZXBvZF9vZmY7Cj4gKwl9Cj4gKwkvKiBWZW5kb3IgY29kZSB1c2VzIHYtZXNyYW0z NCBidXQgd2UgZG9uJ3QsIHlldCAqLwo+ICsKPiArCS8qIENsb2NrIHRoZSBzaWxpY29uIHNvIHdl IGNhbiBhY2Nlc3MgdGhlIHJlZ2lzdGVycyAqLwo+ICsJbWNkZS0+bWNkZV9jbGsgPSBkZXZtX2Ns a19nZXQoZGV2LCAibWNkZSIpOwo+ICsJaWYgKElTX0VSUihtY2RlLT5tY2RlX2NsaykpIHsKPiAr CQlkZXZfZXJyKGRldiwgInVuYWJsZSB0byBnZXQgTUNERSBtYWluIGNsb2NrXG4iKTsKPiArCQly ZXQgPSBQVFJfRVJSKG1jZGUtPm1jZGVfY2xrKTsKPiArCQlnb3RvIHJlZ3VsYXRvcl9vZmY7Cj4g Kwl9Cj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUobWNkZS0+bWNkZV9jbGspOwo+ICsJaWYg KHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBNQ0RFIG1haW4gY2xv Y2tcbiIpOwo+ICsJCWdvdG8gcmVndWxhdG9yX29mZjsKPiArCX0KPiArCWRldl9pbmZvKGRldiwg Ik1DREUgY2xrIHJhdGUgJWx1IEh6XG4iLCBjbGtfZ2V0X3JhdGUobWNkZS0+bWNkZV9jbGspKTsK PiArCj4gKwkvKiBBbHNvIHJldHJpZXZlIHRoZSBhZGRpdGlvbmFsIGNsb2NrcyAqLwo+ICsJbWNk ZS0+ZHNpMF9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAiZHNpMCIpOwo+ICsJaWYgKElTX0VSUiht Y2RlLT5kc2kwX2NsaykpIHsKPiArCQlkZXZfZXJyKGRldiwgInVuYWJsZSB0byBnZXQgRFNJMCBj bG9ja1xuIik7Cj4gKwkJcmV0ID0gUFRSX0VSUihtY2RlLT5kc2kwX2Nsayk7Cj4gKwkJZ290byBj bGtfZGlzYWJsZTsKPiArCX0KPiArCW1jZGUtPmRzaTFfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwg ImRzaTEiKTsKPiArCWlmIChJU19FUlIobWNkZS0+ZHNpMV9jbGspKSB7Cj4gKwkJZGV2X2Vycihk ZXYsICJ1bmFibGUgdG8gZ2V0IERTSTEgY2xvY2tcbiIpOwo+ICsJCXJldCA9IFBUUl9FUlIobWNk ZS0+ZHNpMV9jbGspOwo+ICsJCWdvdG8gY2xrX2Rpc2FibGU7Cj4gKwl9Cj4gKwkvKgo+ICsJICog RVMgPSBFbmVyZ3kgU2F2ZSwgb3IgTFAgPSBMb3cgUG93ZXIgY2xvY2tzCj4gKwkgKiBUaGVzZSBj bG9ja3MgYXJlIGFsc28gdXNlZCBmb3IgVFYgb3V0Lgo+ICsJICovCj4gKwltY2RlLT5kc2kwZXNf Y2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImRzaTBlcyIpOwo+ICsJaWYgKElTX0VSUihtY2RlLT5k c2kwZXNfY2xrKSkgewo+ICsJCWRldl9lcnIoZGV2LCAidW5hYmxlIHRvIGdldCBEU0kwRVMgY2xv Y2tcbiIpOwo+ICsJCXJldCA9IFBUUl9FUlIobWNkZS0+ZHNpMGVzX2Nsayk7Cj4gKwkJZ290byBj bGtfZGlzYWJsZTsKPiArCX0KPiArCW1jZGUtPmRzaTFlc19jbGsgPSBkZXZtX2Nsa19nZXQoZGV2 LCAiZHNpMWVzIik7Cj4gKwlpZiAoSVNfRVJSKG1jZGUtPmRzaTFlc19jbGspKSB7Cj4gKwkJZGV2 X2VycihkZXYsICJ1bmFibGUgdG8gZ2V0IERTSTFFUyBjbG9ja1xuIik7Cj4gKwkJcmV0ID0gUFRS X0VSUihtY2RlLT5kc2kxZXNfY2xrKTsKPiArCQlnb3RvIGNsa19kaXNhYmxlOwo+ICsJfQo+ICsJ bWNkZS0+ZHNpMmVzX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJkc2kyZXMiKTsKPiArCWlmIChJ U19FUlIobWNkZS0+ZHNpMmVzX2NsaykpIHsKPiArCQlkZXZfZXJyKGRldiwgInVuYWJsZSB0byBn ZXQgRFNJMkVTIGNsb2NrXG4iKTsKPiArCQlyZXQgPSBQVFJfRVJSKG1jZGUtPmRzaTJlc19jbGsp Owo+ICsJCWdvdG8gY2xrX2Rpc2FibGU7Cj4gKwl9Cj4gKwltY2RlLT5sY2RfY2xrID0gZGV2bV9j bGtfZ2V0KGRldiwgImxjZCIpOwo+ICsJaWYgKElTX0VSUihtY2RlLT5sY2RfY2xrKSkgewo+ICsJ CWRldl9lcnIoZGV2LCAidW5hYmxlIHRvIGdldCBMQ0QgY2xvY2tcbiIpOwo+ICsJCXJldCA9IFBU Ul9FUlIobWNkZS0+bGNkX2Nsayk7Cj4gKwkJZ290byBjbGtfZGlzYWJsZTsKPiArCX0KPiArCW1j ZGUtPmhkbWlfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImhkbWkiKTsKPiArCWlmIChJU19FUlIo bWNkZS0+aGRtaV9jbGspKSB7Cj4gKwkJZGV2X2VycihkZXYsICJ1bmFibGUgdG8gZ2V0IEhETUkg Y2xvY2tcbiIpOwo+ICsJCXJldCA9IFBUUl9FUlIobWNkZS0+aGRtaV9jbGspOwo+ICsJCWdvdG8g Y2xrX2Rpc2FibGU7Cj4gKwl9Cj4gKwo+ICsJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBk ZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiArCW1jZGUtPnJlZ3MgPSBkZXZtX2lvcmVtYXBfcmVz b3VyY2UoZGV2LCByZXMpOwo+ICsJaWYgKElTX0VSUihtY2RlLT5yZWdzKSkgewo+ICsJCWRldl9l cnIoZGV2LCAibm8gTUNERSByZWdzXG4iKTsKPiArCQlyZXQgPSAtRUlOVkFMOwo+ICsJCWdvdG8g Y2xrX2Rpc2FibGU7Cj4gKwl9Cj4gKwo+ICsJaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAw KTsKPiArCWlmICghaXJxKSB7Cj4gKwkJcmV0ID0gLUVJTlZBTDsKPiArCQlnb3RvIGNsa19kaXNh YmxlOwo+ICsJfQo+ICsKPiArCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LCBpcnEsIG1jZGVf aXJxLCAwLCAibWNkZSIsIG1jZGUpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAi ZmFpbGVkIHRvIHJlcXVlc3QgaXJxICVkXG4iLCByZXQpOwo+ICsJCWdvdG8gY2xrX2Rpc2FibGU7 Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIENoZWNrIGhhcmR3YXJlIHJldmlzaW9uLCB3ZSBvbmx5 IHN1cHBvcnQgVTg1MDB2MiB2ZXJzaW9uCj4gKwkgKiBhcyB0aGlzIHdhcyB0aGUgb25seSB2ZXJz aW9uIHVzZWQgZm9yIG1hc3MgbWFya2V0IGRlcGxveW1lbnQsCj4gKwkgKiBidXQgc3VyZWx5IHlv dSBjYW4gYWRkIG1vcmUgdmVyc2lvbnMgaWYgeW91IGhhdmUgdGhlbSBhbmQKPiArCSAqIG5lZWQg dGhlbS4KPiArCSAqLwo+ICsJcGlkID0gcmVhZGwobWNkZS0+cmVncyArIE1DREVfUElEKTsKPiAr CWRldl9pbmZvKGRldiwgImZvdW5kIE1DREUgSFcgcmV2aXNpb24gJWQuJWQgKGRldiAlZCwgbWV0 YWwgZml4ICVkKVxuIiwKPiArCQkgKHBpZCAmIE1DREVfUElEX01BSk9SX1ZFUlNJT05fTUFTSykK PiArCQkgPj4gTUNERV9QSURfTUFKT1JfVkVSU0lPTl9TSElGVCwKPiArCQkgKHBpZCAmIE1DREVf UElEX01JTk9SX1ZFUlNJT05fTUFTSykKPiArCQkgPj4gTUNERV9QSURfTUlOT1JfVkVSU0lPTl9T SElGVCwKPiArCQkgKHBpZCAmIE1DREVfUElEX0RFVkVMT1BNRU5UX1ZFUlNJT05fTUFTSykKPiAr CQkgPj4gTUNERV9QSURfREVWRUxPUE1FTlRfVkVSU0lPTl9TSElGVCwKPiArCQkgKHBpZCAmIE1D REVfUElEX01FVEFMRklYX1ZFUlNJT05fTUFTSykKPiArCQkgPj4gTUNERV9QSURfTUVUQUxGSVhf VkVSU0lPTl9TSElGVCk7Cj4gKwlpZiAocGlkICE9IDB4MDMwMDA4MDApIHsKPiArCQlkZXZfZXJy KGRldiwgInVuc3VwcG9ydGVkIGhhcmR3YXJlIHJldmlzaW9uXG4iKTsKPiArCQlyZXQgPSAtRU5P REVWOwo+ICsJCWdvdG8gY2xrX2Rpc2FibGU7Cj4gKwl9Cj4gKwo+ICsJLyogU2V0IHVwIHRoZSBt YWluIGNvbnRyb2wsIHdhdGVybWFyayBsZXZlbCBhdCA3ICovCj4gKwl2YWwgPSA3IDw8IE1DREVf Q09ORjBfSUZJRk9DVFJMV1RSTVJLTFZMX1NISUZUOwo+ICsJLyogMjQgYml0cyBEUEk6IGNvbm5l Y3QgTFNCIENoIEIgdG8gRFswOjddICovCj4gKwl2YWwgfD0gMyA8PCBNQ0RFX0NPTkYwX09VVE1V WDBfU0hJRlQ7Cj4gKwkvKiBUViBvdXQ6IGNvbm5lY3QgTFNCIENoIEIgdG8gRFs4OjE1XSAqLwo+ ICsJdmFsIHw9IDMgPDwgTUNERV9DT05GMF9PVVRNVVgxX1NISUZUOwo+ICsJLyogRG9uJ3QgY2Fy ZSBhYm91dCB0aGlzIG11eGluZyAqLwo+ICsJdmFsIHw9IDAgPDwgTUNERV9DT05GMF9PVVRNVVgy X1NISUZUOwo+ICsJLyogMjQgYml0cyBEUEk6IGNvbm5lY3QgTUlEIENoIEIgdG8gRFsyNDozMV0g Ki8KPiArCXZhbCB8PSA0IDw8IE1DREVfQ09ORjBfT1VUTVVYM19TSElGVDsKPiArCS8qIDU6IDI0 IGJpdHMgRFBJOiBjb25uZWN0IE1TQiBDaCBCIHRvIERbMzI6MzldICovCj4gKwl2YWwgfD0gNSA8 PCBNQ0RFX0NPTkYwX09VVE1VWDRfU0hJRlQ7Cj4gKwkvKiBTeW5jbXV4IGJpdHMgemVybzogRFBJ IGNoYW5uZWwgQSBhbmQgQiBvbiBvdXRwdXQgcGlucyBBIGFuZCBCIHJlc3AgKi8KPiArCXdyaXRl bCh2YWwsIG1jZGUtPnJlZ3MgKyBNQ0RFX0NPTkYwKTsKPiArCj4gKwkvKiBFbmFibGUgYXV0b21h dGljIGNsb2NrIGdhdGluZyAqLwo+ICsJdmFsID0gcmVhZGwobWNkZS0+cmVncyArIE1DREVfQ1Ip Owo+ICsJdmFsIHw9IE1DREVfQ1JfTUNERUVOIHwgTUNERV9DUl9BVVRPQ0xLR19FTjsKPiArCXdy aXRlbCh2YWwsIG1jZGUtPnJlZ3MgKyBNQ0RFX0NSKTsKPiArCj4gKwkvKiBDbGVhciBhbnkgcGVu ZGluZyBpbnRlcnJ1cHRzICovCj4gKwltY2RlX2Rpc3BsYXlfZGlzYWJsZV9pcnFzKG1jZGUpOwo+ ICsJd3JpdGVsKDAsIG1jZGUtPnJlZ3MgKyBNQ0RFX0lNU0NFUlIpOwo+ICsJd3JpdGVsKDB4RkZG RkZGRkYsIG1jZGUtPnJlZ3MgKyBNQ0RFX1JJU0VSUik7Cj4gKwo+ICsJLyogU3Bhd24gY2hpbGQg ZGV2aWNlcyBmb3IgdGhlIERTSSBwb3J0cyAqLwo+ICsJZGV2bV9vZl9wbGF0Zm9ybV9wb3B1bGF0 ZShkZXYpOwo+ICsKPiArCS8qIENyZWF0ZSBzb21ldGhpbmcgdGhhdCB3aWxsIG1hdGNoIHRoZSBz dWJkcml2ZXJzIHdoZW4gd2UgYmluZCAqLwo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo bWNkZV9jb21wb25lbnRfZHJpdmVycyk7IGkrKykgewo+ICsJCXN0cnVjdCBkZXZpY2VfZHJpdmVy ICpkcnYgPSAmbWNkZV9jb21wb25lbnRfZHJpdmVyc1tpXS0+ZHJpdmVyOwo+ICsJCXN0cnVjdCBk ZXZpY2UgKnAgPSBOVUxMLCAqZDsKPiArCj4gKwkJd2hpbGUgKChkID0gYnVzX2ZpbmRfZGV2aWNl KCZwbGF0Zm9ybV9idXNfdHlwZSwgcCwgZHJ2LAo+ICsJCQkJCSAgICAodm9pZCAqKXBsYXRmb3Jt X2J1c190eXBlLm1hdGNoKSkpIHsKPiArCQkJcHV0X2RldmljZShwKTsKPiArCQkJY29tcG9uZW50 X21hdGNoX2FkZChkZXYsICZtYXRjaCwgbWNkZV9jb21wYXJlX2RldiwgZCk7Cj4gKwkJCXAgPSBk Owo+ICsJCX0KPiArCQlwdXRfZGV2aWNlKHApOwo+ICsJfQo+ICsJaWYgKElTX0VSUihtYXRjaCkp IHsKPiArCQlkZXZfZXJyKGRldiwgImNvdWxkIG5vdCBjcmVhdGUgY29tcG9uZW50IG1hdGNoXG4i KTsKPiArCQlyZXQgPSBQVFJfRVJSKG1hdGNoKTsKPiArCQlnb3RvIGNsa19kaXNhYmxlOwo+ICsJ fQo+ICsJcmV0ID0gY29tcG9uZW50X21hc3Rlcl9hZGRfd2l0aF9tYXRjaCgmcGRldi0+ZGV2LCAm bWNkZV9kcm1fY29tcF9vcHMsCj4gKwkJCQkJICAgICAgbWF0Y2gpOwo+ICsJaWYgKHJldCkgewo+ ICsJCWRldl9lcnIoZGV2LCAiZmF1bGUgdG8gYWRkIGNvbXBvbmVudCBtYXN0ZXJcbiIpOwo+ICsJ CWdvdG8gY2xrX2Rpc2FibGU7Cj4gKwl9Cj4gKwlyZXR1cm4gMDsKPiArCj4gK2Nsa19kaXNhYmxl Ogo+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1jZGUtPm1jZGVfY2xrKTsKPiArcmVndWxhdG9y X29mZjoKPiArCXJlZ3VsYXRvcl9kaXNhYmxlKG1jZGUtPnZhbmEpOwo+ICtyZWd1bGF0b3JfZXBv ZF9vZmY6Cj4gKwlyZWd1bGF0b3JfZGlzYWJsZShtY2RlLT5lcG9kKTsKPiArZGV2X3VucmVmOgo+ ICsJZHJtX2Rldl9wdXQoZHJtKTsKPiArCXJldHVybiByZXQ7Cj4gKwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IG1jZGVfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiAr CXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiAr CXN0cnVjdCBtY2RlICptY2RlID0gZHJtLT5kZXZfcHJpdmF0ZTsKPiArCj4gKwljb21wb25lbnRf bWFzdGVyX2RlbCgmcGRldi0+ZGV2LCAmbWNkZV9kcm1fY29tcF9vcHMpOwo+ICsJY2xrX2Rpc2Fi bGVfdW5wcmVwYXJlKG1jZGUtPm1jZGVfY2xrKTsKPiArCXJlZ3VsYXRvcl9kaXNhYmxlKG1jZGUt PnZhbmEpOwo+ICsJcmVndWxhdG9yX2Rpc2FibGUobWNkZS0+ZXBvZCk7Cj4gKwlkcm1fZGV2X3B1 dChkcm0pOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBtY2RlX29mX21hdGNoW10gPSB7Cj4gKwl7Cj4gKwkJLmNvbXBhdGlibGUg PSAic3RlLG1jZGUiLAo+ICsJfSwKPiArCXt9LAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBw bGF0Zm9ybV9kcml2ZXIgbWNkZV9kcml2ZXIgPSB7Cj4gKwkuZHJpdmVyID0gewo+ICsJCS5uYW1l ICAgICAgICAgICA9ICJtY2RlIiwKPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIo bWNkZV9vZl9tYXRjaCksCj4gKwl9LAo+ICsJLnByb2JlID0gbWNkZV9wcm9iZSwKPiArCS5yZW1v dmUgPSBtY2RlX3JlbW92ZSwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJp dmVyICpjb25zdCBjb21wb25lbnRfZHJpdmVyc1tdID0gewo+ICsJJm1jZGVfZHNpX2RyaXZlciwK PiArfTsKPiArCj4gK3N0YXRpYyBpbnQgX19pbml0IG1jZGVfZHJtX3JlZ2lzdGVyKHZvaWQpCj4g K3sKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gcGxhdGZvcm1fcmVnaXN0ZXJfZHJpdmVycyhj b21wb25lbnRfZHJpdmVycywKPiArCQkJCQlBUlJBWV9TSVpFKGNvbXBvbmVudF9kcml2ZXJzKSk7 Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIHBsYXRmb3JtX2Ry aXZlcl9yZWdpc3RlcigmbWNkZV9kcml2ZXIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX2V4 aXQgbWNkZV9kcm1fdW5yZWdpc3Rlcih2b2lkKQo+ICt7Cj4gKwlwbGF0Zm9ybV91bnJlZ2lzdGVy X2RyaXZlcnMoY29tcG9uZW50X2RyaXZlcnMsCj4gKwkJCQkgICAgQVJSQVlfU0laRShjb21wb25l bnRfZHJpdmVycykpOwo+ICsJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJm1jZGVfZHJpdmVy KTsKPiArfQo+ICsKPiArbW9kdWxlX2luaXQobWNkZV9kcm1fcmVnaXN0ZXIpOwo+ICttb2R1bGVf ZXhpdChtY2RlX2RybV91bnJlZ2lzdGVyKTsKPiArCj4gK01PRFVMRV9BTElBUygicGxhdGZvcm06 bWNkZS1kcm0iKTsKPiArTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVNDKTsKPiArTU9EVUxF X0FVVEhPUigiTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPiIpOwo+ICtN T0RVTEVfTElDRU5TRSgiR1BMIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tY2Rl L21jZGVfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2RzaS5jCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmRlNjJlOWU5NzI5OAo+IC0tLSAvZGV2 L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWNkZS9tY2RlX2RzaS5jCj4gQEAgLTAsMCAr MSwxMzc0IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKwo+ICsjaW5j bHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9y L2NvbnN1bWVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+ICsjaW5jbHVkZSA8bGludXgv ZGVsYXkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvb2YuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KPiArI2luY2x1ZGUgPGxp bnV4L3JlZ21hcC5oPgo+ICsjaW5jbHVkZSA8dmlkZW8vbWlwaV9kaXNwbGF5Lmg+Cj4gKwo+ICsj aW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5o Pgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9tb2Rlc2V0X2hlbHBlcl92dGFibGVzLmg+Cj4gKyNpbmNs dWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIu aD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9k cm1fbWlwaV9kc2kuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiArI2luY2x1ZGUg PGRybS9kcm1fYnJpZGdlLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX29mLmg+Cj4gKwo+ICsjaW5j bHVkZSAibWNkZV9kcm0uaCIKPiArCj4gKyNkZWZpbmUgRFNJX0RFRkFVTFRfTFBfRlJFUV9IWgkx OTIwMDAwMAo+ICsjZGVmaW5lIERTSV9ERUZBVUxUX0hTX0ZSRVFfSFoJNDIwMTYwMDAwCj4gKwo+ ICsjZGVmaW5lIERTSV9NQ1RMX0lOVEVHUkFUSU9OX01PREUgMHgwMDAwMDAwMAo+ICsKPiArI2Rl ZmluZSBEU0lfTUNUTF9NQUlOX0RBVEFfQ1RMIDB4MDAwMDAwMDQKPiArI2RlZmluZSBEU0lfTUNU TF9NQUlOX0RBVEFfQ1RMX0xJTktfRU4gQklUKDApCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9E QVRBX0NUTF9JRjFfTU9ERSBCSVQoMSkKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX0RBVEFfQ1RM X1ZJRF9FTiBCSVQoMikKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX0RBVEFfQ1RMX1RWR19TRUwg QklUKDMpCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9EQVRBX0NUTF9UQkdfU0VMIEJJVCg0KQo+ ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fREFUQV9DVExfSUYxX1RFX0VOIEJJVCg1KQo+ICsjZGVm aW5lIERTSV9NQ1RMX01BSU5fREFUQV9DVExfSUYyX1RFX0VOIEJJVCg2KQo+ICsjZGVmaW5lIERT SV9NQ1RMX01BSU5fREFUQV9DVExfUkVHX1RFX0VOIEJJVCg3KQo+ICsjZGVmaW5lIERTSV9NQ1RM X01BSU5fREFUQV9DVExfUkVBRF9FTiBCSVQoOCkKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX0RB VEFfQ1RMX0JUQV9FTiBCSVQoOSkKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX0RBVEFfQ1RMX0RJ U1BfR0VOX0VDQyBCSVQoMTApCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9EQVRBX0NUTF9ESVNQ X0dFTl9DSEVDS1NVTSBCSVQoMTEpCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9EQVRBX0NUTF9I T1NUX0VPVF9HRU4gQklUKDEyKQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fREFUQV9DVExfRElT UF9FT1RfR0VOIEJJVCgxMykKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX0RBVEFfQ1RMX0RMWF9S RU1BUF9FTiBCSVQoMTQpCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9EQVRBX0NUTF9URV9QT0xM SU5HX0VOIEJJVCgxNSkKPiArCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9QSFlfQ1RMIDB4MDAw MDAwMDgKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX1BIWV9DVExfTEFORTJfRU4gQklUKDApCj4g KyNkZWZpbmUgRFNJX01DVExfTUFJTl9QSFlfQ1RMX0ZPUkNFX1NUT1BfTU9ERSBCSVQoMSkKPiAr I2RlZmluZSBEU0lfTUNUTF9NQUlOX1BIWV9DVExfQ0xLX0NPTlRJTlVPVVMgQklUKDIpCj4gKyNk ZWZpbmUgRFNJX01DVExfTUFJTl9QSFlfQ1RMX0NMS19VTFBNX0VOIEJJVCgzKQo+ICsjZGVmaW5l IERTSV9NQ1RMX01BSU5fUEhZX0NUTF9EQVQxX1VMUE1fRU4gQklUKDQpCj4gKyNkZWZpbmUgRFNJ X01DVExfTUFJTl9QSFlfQ1RMX0RBVDJfVUxQTV9FTiBCSVQoNSkKPiArI2RlZmluZSBEU0lfTUNU TF9NQUlOX1BIWV9DVExfV0FJVF9CVVJTVF9USU1FX1NISUZUIDYKPiArI2RlZmluZSBEU0lfTUNU TF9NQUlOX1BIWV9DVExfV0FJVF9CVVJTVF9USU1FX01BU0sgMHgwMDAwMDNDMAo+ICsjZGVmaW5l IERTSV9NQ1RMX01BSU5fUEhZX0NUTF9DTE9DS19GT1JDRV9TVE9QX01PREUgQklUKDEwKQo+ICsK PiArI2RlZmluZSBEU0lfTUNUTF9QTExfQ1RMIDB4MDAwMDAwMEMKPiArI2RlZmluZSBEU0lfTUNU TF9MQU5FX1NUUyAweDAwMDAwMDEwCj4gKwo+ICsjZGVmaW5lIERTSV9NQ1RMX0RQSFlfVElNRU9V VCAweDAwMDAwMDE0Cj4gKyNkZWZpbmUgRFNJX01DVExfRFBIWV9USU1FT1VUX0NMS19ESVZfU0hJ RlQgMAo+ICsjZGVmaW5lIERTSV9NQ1RMX0RQSFlfVElNRU9VVF9DTEtfRElWX01BU0sgMHgwMDAw MDAwRgo+ICsjZGVmaW5lIERTSV9NQ1RMX0RQSFlfVElNRU9VVF9IU1RYX1RPX1ZBTF9TSElGVCA0 Cj4gKyNkZWZpbmUgRFNJX01DVExfRFBIWV9USU1FT1VUX0hTVFhfVE9fVkFMX01BU0sgMHgwMDAz RkZGMAo+ICsjZGVmaW5lIERTSV9NQ1RMX0RQSFlfVElNRU9VVF9MUFJYX1RPX1ZBTF9TSElGVCAx OAo+ICsjZGVmaW5lIERTSV9NQ1RMX0RQSFlfVElNRU9VVF9MUFJYX1RPX1ZBTF9NQVNLIDB4RkZG QzAwMDAKPiArCj4gKyNkZWZpbmUgRFNJX01DVExfVUxQT1VUX1RJTUUgMHgwMDAwMDAxOAo+ICsj ZGVmaW5lIERTSV9NQ1RMX1VMUE9VVF9USU1FX0NLTEFORV9VTFBPVVRfVElNRV9TSElGVCAwCj4g KyNkZWZpbmUgRFNJX01DVExfVUxQT1VUX1RJTUVfQ0tMQU5FX1VMUE9VVF9USU1FX01BU0sgMHgw MDAwMDFGRgo+ICsjZGVmaW5lIERTSV9NQ1RMX1VMUE9VVF9USU1FX0RBVEFfVUxQT1VUX1RJTUVf U0hJRlQgOQo+ICsjZGVmaW5lIERTSV9NQ1RMX1VMUE9VVF9USU1FX0RBVEFfVUxQT1VUX1RJTUVf TUFTSyAweDAwMDNGRTAwCj4gKwo+ICsjZGVmaW5lIERTSV9NQ1RMX0RQSFlfU1RBVElDIDB4MDAw MDAwMUMKPiArI2RlZmluZSBEU0lfTUNUTF9EUEhZX1NUQVRJQ19TV0FQX1BJTlNfQ0xLIEJJVCgw KQo+ICsjZGVmaW5lIERTSV9NQ1RMX0RQSFlfU1RBVElDX0hTX0lOVkVSVF9DTEsgQklUKDEpCj4g KyNkZWZpbmUgRFNJX01DVExfRFBIWV9TVEFUSUNfU1dBUF9QSU5TX0RBVDEgQklUKDIpCj4gKyNk ZWZpbmUgRFNJX01DVExfRFBIWV9TVEFUSUNfSFNfSU5WRVJUX0RBVDEgQklUKDMpCj4gKyNkZWZp bmUgRFNJX01DVExfRFBIWV9TVEFUSUNfU1dBUF9QSU5TX0RBVDIgQklUKDQpCj4gKyNkZWZpbmUg RFNJX01DVExfRFBIWV9TVEFUSUNfSFNfSU5WRVJUX0RBVDIgQklUKDUpCj4gKyNkZWZpbmUgRFNJ X01DVExfRFBIWV9TVEFUSUNfVUlfWDRfU0hJRlQgNgo+ICsjZGVmaW5lIERTSV9NQ1RMX0RQSFlf U1RBVElDX1VJX1g0X01BU0sgMHgwMDAwMEZDMAo+ICsKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlO X0VOIDB4MDAwMDAwMjAKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX0VOX1BMTF9TVEFSVCBCSVQo MCkKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX0VOX0NLTEFORV9FTiBCSVQoMykKPiArI2RlZmlu ZSBEU0lfTUNUTF9NQUlOX0VOX0RBVDFfRU4gQklUKDQpCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJ Tl9FTl9EQVQyX0VOIEJJVCg1KQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fRU5fQ0xLTEFORV9V TFBNX1JFUSBCSVQoNikKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX0VOX0RBVDFfVUxQTV9SRVEg QklUKDcpCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9FTl9EQVQyX1VMUE1fUkVRIEJJVCg4KQo+ ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fRU5fSUYxX0VOIEJJVCg5KQo+ICsjZGVmaW5lIERTSV9N Q1RMX01BSU5fRU5fSUYyX0VOIEJJVCgxMCkKPiArCj4gKyNkZWZpbmUgRFNJX01DVExfTUFJTl9T VFMgMHgwMDAwMDAyNAo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fU1RTX1BMTF9MT0NLIEJJVCgw KQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fU1RTX0NMS0xBTkVfUkVBRFkgQklUKDEpCj4gKyNk ZWZpbmUgRFNJX01DVExfTUFJTl9TVFNfREFUMV9SRUFEWSBCSVQoMikKPiArI2RlZmluZSBEU0lf TUNUTF9NQUlOX1NUU19EQVQyX1JFQURZIEJJVCgzKQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5f U1RTX0hTVFhfVE9fRVJSIEJJVCg0KQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fU1RTX0xQUlhf VE9fRVJSIEJJVCg1KQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fU1RTX0NSU19VTlRFUk1fUENL IEJJVCg2KQo+ICsjZGVmaW5lIERTSV9NQ1RMX01BSU5fU1RTX1ZSU19VTlRFUk1fUENLIEJJVCg3 KQo+ICsKPiArI2RlZmluZSBEU0lfTUNUTF9EUEhZX0VSUiAweDAwMDAwMDI4Cj4gKyNkZWZpbmUg RFNJX0lOVF9WSURfUkREQVRBIDB4MDAwMDAwMzAKPiArI2RlZmluZSBEU0lfSU5UX1ZJRF9HTlQg MHgwMDAwMDAzNAo+ICsjZGVmaW5lIERTSV9JTlRfQ01EX1JEREFUQSAweDAwMDAwMDM4Cj4gKyNk ZWZpbmUgRFNJX0lOVF9DTURfR05UIDB4MDAwMDAwM0MKPiArI2RlZmluZSBEU0lfSU5UX0lOVEVS UlVQVF9DVEwgMHgwMDAwMDA0MAo+ICsKPiArI2RlZmluZSBEU0lfQ01EX01PREVfQ1RMIDB4MDAw MDAwNTAKPiArI2RlZmluZSBEU0lfQ01EX01PREVfQ1RMX0lGMV9JRF9TSElGVCAwCj4gKyNkZWZp bmUgRFNJX0NNRF9NT0RFX0NUTF9JRjFfSURfTUFTSyAweDAwMDAwMDAzCj4gKyNkZWZpbmUgRFNJ X0NNRF9NT0RFX0NUTF9JRjJfSURfU0hJRlQgMgo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9DVExf SUYyX0lEX01BU0sgMHgwMDAwMDAwQwo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9DVExfSUYxX0xQ X0VOIEJJVCg0KQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9DVExfSUYyX0xQX0VOIEJJVCg1KQo+ ICsjZGVmaW5lIERTSV9DTURfTU9ERV9DVExfQVJCX01PREUgQklUKDYpCj4gKyNkZWZpbmUgRFNJ X0NNRF9NT0RFX0NUTF9BUkJfUFJJIEJJVCg3KQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9DVExf RklMX1ZBTFVFX1NISUZUIDgKPiArI2RlZmluZSBEU0lfQ01EX01PREVfQ1RMX0ZJTF9WQUxVRV9N QVNLIDB4MDAwMEZGMDAKPiArI2RlZmluZSBEU0lfQ01EX01PREVfQ1RMX1RFX1RJTUVPVVRfU0hJ RlQgMTYKPiArI2RlZmluZSBEU0lfQ01EX01PREVfQ1RMX1RFX1RJTUVPVVRfTUFTSyAweDAzRkYw MDAwCj4gKwo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9TVFMgMHgwMDAwMDA1NAo+ICsjZGVmaW5l IERTSV9DTURfTU9ERV9TVFNfRVJSX05PX1RFIEJJVCgwKQo+ICsjZGVmaW5lIERTSV9DTURfTU9E RV9TVFNfRVJSX1RFX01JU1MgQklUKDEpCj4gKyNkZWZpbmUgRFNJX0NNRF9NT0RFX1NUU19FUlJf U0RJMV9VTkRFUlJVTiBCSVQoMikKPiArI2RlZmluZSBEU0lfQ01EX01PREVfU1RTX0VSUl9TREky X1VOREVSUlVOIEJJVCgzKQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9TVFNfRVJSX1VOV0FOVEVE X1JEIEJJVCg0KQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9TVFNfQ1NNX1JVTk5JTkcgQklUKDUp Cj4gKwo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NFTkQgMHgwMDAwMDA2MAo+ICsKPiArI2Rl ZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTIDB4MDAwMDAwNjQKPiArI2RlZmluZSBE U0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9OQVRfU0hJRlQgMAo+ICsjZGVmaW5lIERT SV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX05BVF9NQVNLIDB4MDAwMDAwMDcKPiArI2Rl ZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9OQVRfV1JJVEUgMAo+ICsjZGVm aW5lIERTSV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX05BVF9SRUFEIDEKPiArI2RlZmlu ZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9OQVRfVEVfUkVRIDQKPiArI2RlZmlu ZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9OQVRfVFJJR19SRVEgNQo+ICsjZGVm aW5lIERTSV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX05BVF9CVEFfUkVRIDYKPiArI2Rl ZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9MT05HTk9UU0hPUlQgQklUKDMp Cj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfTUFJTl9TRVRUSU5HU19DTURfSEVBRF9TSElGVCA4 Cj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfTUFJTl9TRVRUSU5HU19DTURfSEVBRF9NQVNLIDB4 MDAwMDNGMDAKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9IRUFE X1RVUk5fT05fUEVSSVBIRVJBTCA1MAo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX01BSU5fU0VU VElOR1NfQ01EX0hFQURfU0hVVF9ET1dOX1BFUklQSEVSQUwgMzQKPiArI2RlZmluZSBEU0lfRElS RUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9IRUFEX0dFTkVSSUNfU0hPUlRfV1JJVEVfMCAzCj4g KyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfTUFJTl9TRVRUSU5HU19DTURfSEVBRF9HRU5FUklDX1NI T1JUX1dSSVRFXzEgMTkKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NN RF9IRUFEX0dFTkVSSUNfU0hPUlRfV1JJVEVfMiAzNQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01E X01BSU5fU0VUVElOR1NfQ01EX0hFQURfR0VORVJJQ19MT05HX1dSSVRFIDQxCj4gKyNkZWZpbmUg RFNJX0RJUkVDVF9DTURfTUFJTl9TRVRUSU5HU19DTURfSEVBRF9EQ1NfU0hPUlRfV1JJVEVfMCA1 Cj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfTUFJTl9TRVRUSU5HU19DTURfSEVBRF9EQ1NfU0hP UlRfV1JJVEVfMSAyMQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01E X0hFQURfRENTX0xPTkdfV1JJVEUgNTcKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9NQUlOX1NF VFRJTkdTX0NNRF9IRUFEX0RDU19SRUFEIDYKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9NQUlO X1NFVFRJTkdTX0NNRF9IRUFEX1NFVF9NQVhfUEtUX1NJWkUgNTUKPiArI2RlZmluZSBEU0lfRElS RUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9JRF9TSElGVCAxNAo+ICsjZGVmaW5lIERTSV9ESVJF Q1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX1NJWkVfU0hJRlQgMTYKPiArI2RlZmluZSBEU0lfRElS RUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9MUF9FTiBCSVQoMjEpCj4gKyNkZWZpbmUgRFNJX0RJ UkVDVF9DTURfTUFJTl9TRVRUSU5HU19UUklHR0VSX1ZBTF9TSElGVCAyNAo+ICsjZGVmaW5lIERT SV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfVFJJR0dFUl9WQUxfTUFTSyAweDBGMDAwMDAwCj4g Kwo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NUUyAweDAwMDAwMDY4Cj4gKyNkZWZpbmUgRFNJ X0RJUkVDVF9DTURfU1RTX0NNRF9UUkFOU01JU1NJT04gQklUKDApCj4gKyNkZWZpbmUgRFNJX0RJ UkVDVF9DTURfU1RTX1dSSVRFX0NPTVBMRVRFRCBCSVQoMSkKPiArI2RlZmluZSBEU0lfRElSRUNU X0NNRF9TVFNfVFJJR0dFUl9DT01QTEVURUQgQklUKDIpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9D TURfU1RTX1JFQURfQ09NUExFVEVEIEJJVCgzKQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NU U19BQ0tOT1dMRURHRV9SRUNFSVZFRF9TSElGVCBCSVQoNCkKPiArI2RlZmluZSBEU0lfRElSRUNU X0NNRF9TVFNfQUNLTk9XTEVER0VfV0lUSF9FUlJfUkVDRUlWRUQgQklUKDUpCj4gKyNkZWZpbmUg RFNJX0RJUkVDVF9DTURfU1RTX1RSSUdHRVJfUkVDRUlWRUQgQklUKDYpCj4gKyNkZWZpbmUgRFNJ X0RJUkVDVF9DTURfU1RTX1RFX1JFQ0VJVkVEIEJJVCg3KQo+ICsjZGVmaW5lIERTSV9ESVJFQ1Rf Q01EX1NUU19CVEFfQ09NUExFVEVEIEJJVCg4KQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NU U19CVEFfRklOSVNIRUQgQklUKDkpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX1JFQURf Q09NUExFVEVEX1dJVEhfRVJSIEJJVCgxMCkKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9TVFNf VFJJR0dFUl9WQUxfTUFTSyAweDAwMDA3ODAwCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RT X1RSSUdHRVJfVkFMX1NISUZUIDExCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0FDS19W QUxfU0hJRlQgMTYKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9TVFNfQUNLX1ZBTF9NQVNLIDB4 RkZGRjAwMDAKPiArCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfUkRfSU5JVCAweDAwMDAwMDZD Cj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfUkRfSU5JVF9SRVNFVF9TSElGVCAwCj4gKyNkZWZp bmUgRFNJX0RJUkVDVF9DTURfUkRfSU5JVF9SRVNFVF9NQVNLIDB4RkZGRkZGRkYKPiArCj4gKyNk ZWZpbmUgRFNJX0RJUkVDVF9DTURfV1JEQVQwIDB4MDAwMDAwNzAKPiArI2RlZmluZSBEU0lfRElS RUNUX0NNRF9XUkRBVDEgMHgwMDAwMDA3NAo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1dSREFU MiAweDAwMDAwMDc4Cj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfV1JEQVQzIDB4MDAwMDAwN0MK PiArCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfUkREQVQgMHgwMDAwMDA4MAo+ICsKPiArI2Rl ZmluZSBEU0lfRElSRUNUX0NNRF9SRF9QUk9QRVJUWSAweDAwMDAwMDg0Cj4gKyNkZWZpbmUgRFNJ X0RJUkVDVF9DTURfUkRfUFJPUEVSVFlfUkRfU0laRV9TSElGVCAwCj4gKyNkZWZpbmUgRFNJX0RJ UkVDVF9DTURfUkRfUFJPUEVSVFlfUkRfU0laRV9NQVNLIDB4MDAwMEZGRkYKPiArI2RlZmluZSBE U0lfRElSRUNUX0NNRF9SRF9QUk9QRVJUWV9SRF9JRF9TSElGVCAxNgo+ICsjZGVmaW5lIERTSV9E SVJFQ1RfQ01EX1JEX1BST1BFUlRZX1JEX0lEX01BU0sgMHgwMDAzMDAwMAo+ICsjZGVmaW5lIERT SV9ESVJFQ1RfQ01EX1JEX1BST1BFUlRZX1JEX0RDU05PVEdFTkVSSUNfU0hJRlQgMTgKPiArI2Rl ZmluZSBEU0lfRElSRUNUX0NNRF9SRF9QUk9QRVJUWV9SRF9EQ1NOT1RHRU5FUklDX01BU0sgMHgw MDA0MDAwMAo+ICsKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9SRF9TVFMgMHgwMDAwMDA4OAo+ ICsKPiArI2RlZmluZSBEU0lfVklEX01BSU5fQ1RMIDB4MDAwMDAwOTAKPiArI2RlZmluZSBEU0lf VklEX01BSU5fQ1RMX1NUQVJUX01PREVfU0hJRlQgMAo+ICsjZGVmaW5lIERTSV9WSURfTUFJTl9D VExfU1RBUlRfTU9ERV9NQVNLIDB4MDAwMDAwMDMKPiArI2RlZmluZSBEU0lfVklEX01BSU5fQ1RM X1NUT1BfTU9ERV9TSElGVCAyCj4gKyNkZWZpbmUgRFNJX1ZJRF9NQUlOX0NUTF9TVE9QX01PREVf TUFTSyAweDAwMDAwMDBDCj4gKyNkZWZpbmUgRFNJX1ZJRF9NQUlOX0NUTF9WSURfSURfU0hJRlQg NAo+ICsjZGVmaW5lIERTSV9WSURfTUFJTl9DVExfVklEX0lEX01BU0sgMHgwMDAwMDAzMAo+ICsj ZGVmaW5lIERTSV9WSURfTUFJTl9DVExfSEVBREVSX1NISUZUIDYKPiArI2RlZmluZSBEU0lfVklE X01BSU5fQ1RMX0hFQURFUl9NQVNLIDB4MDAwMDBGQzAKPiArI2RlZmluZSBEU0lfVklEX01BSU5f Q1RMX1ZJRF9QSVhFTF9NT0RFXzE2QklUUyAwCj4gKyNkZWZpbmUgRFNJX1ZJRF9NQUlOX0NUTF9W SURfUElYRUxfTU9ERV8xOEJJVFMgQklUKDEyKQo+ICsjZGVmaW5lIERTSV9WSURfTUFJTl9DVExf VklEX1BJWEVMX01PREVfMThCSVRTX0xPT1NFIEJJVCgxMykKPiArI2RlZmluZSBEU0lfVklEX01B SU5fQ1RMX1ZJRF9QSVhFTF9NT0RFXzI0QklUUyAoQklUKDEyKSB8IEJJVCgxMykpCj4gKyNkZWZp bmUgRFNJX1ZJRF9NQUlOX0NUTF9CVVJTVF9NT0RFIEJJVCgxNCkKPiArI2RlZmluZSBEU0lfVklE X01BSU5fQ1RMX1NZTkNfUFVMU0VfQUNUSVZFIEJJVCgxNSkKPiArI2RlZmluZSBEU0lfVklEX01B SU5fQ1RMX1NZTkNfUFVMU0VfSE9SSVpPTlRBTCBCSVQoMTYpCj4gKyNkZWZpbmUgRFNJX1ZJRF9N QUlOX0NUTF9SRUdfQkxLTElORV9NT0RFX05VTEwgMAo+ICsjZGVmaW5lIERTSV9WSURfTUFJTl9D VExfUkVHX0JMS0xJTkVfTU9ERV9CTEFOS0lORyBCSVQoMTcpCj4gKyNkZWZpbmUgRFNJX1ZJRF9N QUlOX0NUTF9SRUdfQkxLTElORV9NT0RFX0xQXzAgQklUKDE4KQo+ICsjZGVmaW5lIERTSV9WSURf TUFJTl9DVExfUkVHX0JMS0xJTkVfTU9ERV9MUF8xIChCSVQoMTcpIHwgQklUKDE4KSkKPiArI2Rl ZmluZSBEU0lfVklEX01BSU5fQ1RMX1JFR19CTEtFT0xfTU9ERV9OVUxMIDAKPiArI2RlZmluZSBE U0lfVklEX01BSU5fQ1RMX1JFR19CTEtFT0xfTU9ERV9CTEFOS0lORyBCSVQoMTkpCj4gKyNkZWZp bmUgRFNJX1ZJRF9NQUlOX0NUTF9SRUdfQkxLRU9MX01PREVfTFBfMCBCSVQoMjApCj4gKyNkZWZp bmUgRFNJX1ZJRF9NQUlOX0NUTF9SRUdfQkxLRU9MX01PREVfTFBfMSAoQklUKDE5KSB8IEJJVCgy MCkpCj4gKyNkZWZpbmUgRFNJX1ZJRF9NQUlOX0NUTF9SRUNPVkVSWV9NT0RFX1NISUZUIDIxCj4g KyNkZWZpbmUgRFNJX1ZJRF9NQUlOX0NUTF9SRUNPVkVSWV9NT0RFX01BU0sgMHgwMDYwMDAwMAo+ ICsKPiArI2RlZmluZSBEU0lfVklEX1ZTSVpFIDB4MDAwMDAwOTQKPiArI2RlZmluZSBEU0lfVklE X1ZTSVpFX1ZTQV9MRU5HVEhfU0hJRlQgMAo+ICsjZGVmaW5lIERTSV9WSURfVlNJWkVfVlNBX0xF TkdUSF9NQVNLIDB4MDAwMDAwM0YKPiArI2RlZmluZSBEU0lfVklEX1ZTSVpFX1ZCUF9MRU5HVEhf U0hJRlQgNgo+ICsjZGVmaW5lIERTSV9WSURfVlNJWkVfVkJQX0xFTkdUSF9NQVNLIDB4MDAwMDBG QzAKPiArI2RlZmluZSBEU0lfVklEX1ZTSVpFX1ZGUF9MRU5HVEhfU0hJRlQgMTIKPiArI2RlZmlu ZSBEU0lfVklEX1ZTSVpFX1ZGUF9MRU5HVEhfTUFTSyAweDAwMEZGMDAwCj4gKyNkZWZpbmUgRFNJ X1ZJRF9WU0laRV9WQUNUX0xFTkdUSF9TSElGVCAyMAo+ICsjZGVmaW5lIERTSV9WSURfVlNJWkVf VkFDVF9MRU5HVEhfTUFTSyAweDdGRjAwMDAwCj4gKwo+ICsjZGVmaW5lIERTSV9WSURfSFNJWkUx IDB4MDAwMDAwOTgKPiArI2RlZmluZSBEU0lfVklEX0hTSVpFMV9IU0FfTEVOR1RIX1NISUZUIDAK PiArI2RlZmluZSBEU0lfVklEX0hTSVpFMV9IU0FfTEVOR1RIX01BU0sgMHgwMDAwMDNGRgo+ICsj ZGVmaW5lIERTSV9WSURfSFNJWkUxX0hCUF9MRU5HVEhfU0hJRlQgMTAKPiArI2RlZmluZSBEU0lf VklEX0hTSVpFMV9IQlBfTEVOR1RIX01BU0sgMHgwMDBGRkMwMAo+ICsjZGVmaW5lIERTSV9WSURf SFNJWkUxX0hGUF9MRU5HVEhfU0hJRlQgMjAKPiArI2RlZmluZSBEU0lfVklEX0hTSVpFMV9IRlBf TEVOR1RIX01BU0sgMHg3RkYwMDAwMAo+ICsKPiArI2RlZmluZSBEU0lfVklEX0hTSVpFMiAweDAw MDAwMDlDCj4gKyNkZWZpbmUgRFNJX1ZJRF9IU0laRTJfUkdCX1NJWkVfU0hJRlQgMAo+ICsjZGVm aW5lIERTSV9WSURfSFNJWkUyX1JHQl9TSVpFX01BU0sgMHgwMDAwMUZGRgo+ICsKPiArI2RlZmlu ZSBEU0lfVklEX0JMS1NJWkUxIDB4MDAwMDAwQTAKPiArI2RlZmluZSBEU0lfVklEX0JMS1NJWkUx X0JMS0xJTkVfRVZFTlRfUENLX1NISUZUIDAKPiArI2RlZmluZSBEU0lfVklEX0JMS1NJWkUxX0JM S0xJTkVfRVZFTlRfUENLX01BU0sgMHgwMDAwMUZGRgo+ICsjZGVmaW5lIERTSV9WSURfQkxLU0la RTFfQkxLRU9MX1BDS19TSElGVCAxMwo+ICsjZGVmaW5lIERTSV9WSURfQkxLU0laRTFfQkxLRU9M X1BDS19NQVNLIDB4MDNGRkUwMDAKPiArCj4gKyNkZWZpbmUgRFNJX1ZJRF9CTEtTSVpFMiAweDAw MDAwMEE0Cj4gKyNkZWZpbmUgRFNJX1ZJRF9CTEtTSVpFMl9CTEtMSU5FX1BVTFNFX1BDS19TSElG VCAwCj4gKyNkZWZpbmUgRFNJX1ZJRF9CTEtTSVpFMl9CTEtMSU5FX1BVTFNFX1BDS19NQVNLIDB4 MDAwMDFGRkYKPiArCj4gKyNkZWZpbmUgRFNJX1ZJRF9QQ0tfVElNRSAweDAwMDAwMEE4Cj4gKyNk ZWZpbmUgRFNJX1ZJRF9QQ0tfVElNRV9CTEtFT0xfRFVSQVRJT05fU0hJRlQgMAo+ICsKPiArI2Rl ZmluZSBEU0lfVklEX0RQSFlfVElNRSAweDAwMDAwMEFDCj4gKyNkZWZpbmUgRFNJX1ZJRF9EUEhZ X1RJTUVfUkVHX0xJTkVfRFVSQVRJT05fU0hJRlQgMAo+ICsjZGVmaW5lIERTSV9WSURfRFBIWV9U SU1FX1JFR19MSU5FX0RVUkFUSU9OX01BU0sgMHgwMDAwMUZGRgo+ICsjZGVmaW5lIERTSV9WSURf RFBIWV9USU1FX1JFR19XQUtFVVBfVElNRV9TSElGVCAxMwo+ICsjZGVmaW5lIERTSV9WSURfRFBI WV9USU1FX1JFR19XQUtFVVBfVElNRV9NQVNLIDB4MDBGRkUwMDAKPiArCj4gKyNkZWZpbmUgRFNJ X1ZJRF9NT0RFX1NUUyAweDAwMDAwMEJDCj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NUU19WU0df UlVOTklORyBCSVQoMCkKPiArCj4gKyNkZWZpbmUgRFNJX1ZJRF9WQ0FfU0VUVElORzEgMHgwMDAw MDBDMAo+ICsjZGVmaW5lIERTSV9WSURfVkNBX1NFVFRJTkcxX01BWF9CVVJTVF9MSU1JVF9TSElG VCAwCj4gKyNkZWZpbmUgRFNJX1ZJRF9WQ0FfU0VUVElORzFfTUFYX0JVUlNUX0xJTUlUX01BU0sg MHgwMDAwRkZGRgo+ICsjZGVmaW5lIERTSV9WSURfVkNBX1NFVFRJTkcxX0JVUlNUX0xQIEJJVCgx NikKPiArCj4gKyNkZWZpbmUgRFNJX1ZJRF9WQ0FfU0VUVElORzIgMHgwMDAwMDBDNAo+ICsjZGVm aW5lIERTSV9WSURfVkNBX1NFVFRJTkcyX0VYQUNUX0JVUlNUX0xJTUlUX1NISUZUIDAKPiArI2Rl ZmluZSBEU0lfVklEX1ZDQV9TRVRUSU5HMl9FWEFDVF9CVVJTVF9MSU1JVF9NQVNLIDB4MDAwMEZG RkYKPiArI2RlZmluZSBEU0lfVklEX1ZDQV9TRVRUSU5HMl9NQVhfTElORV9MSU1JVF9TSElGVCAx Ngo+ICsjZGVmaW5lIERTSV9WSURfVkNBX1NFVFRJTkcyX01BWF9MSU5FX0xJTUlUX01BU0sgMHhG RkZGMDAwMAo+ICsKPiArI2RlZmluZSBEU0lfQ01EX01PREVfU1RTX0NUTCAweDAwMDAwMEY0Cj4g KyNkZWZpbmUgRFNJX0NNRF9NT0RFX1NUU19DVExfRVJSX05PX1RFX0VOIEJJVCgwKQo+ICsjZGVm aW5lIERTSV9DTURfTU9ERV9TVFNfQ1RMX0VSUl9URV9NSVNTX0VOIEJJVCgxKQo+ICsjZGVmaW5l IERTSV9DTURfTU9ERV9TVFNfQ1RMX0VSUl9TREkxX1VOREVSUlVOX0VOIEJJVCgyKQo+ICsjZGVm aW5lIERTSV9DTURfTU9ERV9TVFNfQ1RMX0VSUl9TREkyX1VOREVSUlVOX0VOIEJJVCgzKQo+ICsj ZGVmaW5lIERTSV9DTURfTU9ERV9TVFNfQ1RMX0VSUl9VTldBTlRFRF9SRF9FTiBCSVQoNCkKPiAr I2RlZmluZSBEU0lfQ01EX01PREVfU1RTX0NUTF9DU01fUlVOTklOR19FTiBCSVQoNSkKPiArI2Rl ZmluZSBEU0lfQ01EX01PREVfU1RTX0NUTF9FUlJfTk9fVEVfRURHRSBCSVQoMTYpCj4gKyNkZWZp bmUgRFNJX0NNRF9NT0RFX1NUU19DVExfRVJSX1RFX01JU1NfRURHRSBCSVQoMTcpCj4gKyNkZWZp bmUgRFNJX0NNRF9NT0RFX1NUU19DVExfRVJSX1NESTFfVU5ERVJSVU5fRURHRSBCSVQoMTgpCj4g KyNkZWZpbmUgRFNJX0NNRF9NT0RFX1NUU19DVExfRVJSX1NESTJfVU5ERVJSVU5fRURHRSBCSVQo MTkpCj4gKyNkZWZpbmUgRFNJX0NNRF9NT0RFX1NUU19DVExfRVJSX1VOV0FOVEVEX1JEX0VER0Ug QklUKDIwKQo+ICsjZGVmaW5lIERTSV9DTURfTU9ERV9TVFNfQ1RMX0NTTV9SVU5OSU5HX0VER0Ug QklUKDIxKQo+ICsKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9TVFNfQ1RMIDB4MDAwMDAwRjgK PiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9TVFNfQ1RMX0NNRF9UUkFOU01JU1NJT05fRU4gQklU KDApCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NUTF9XUklURV9DT01QTEVURURfRU4g QklUKDEpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NUTF9UUklHR0VSX0NPTVBMRVRF RF9FTiBCSVQoMikKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9TVFNfQ1RMX1JFQURfQ09NUExF VEVEX0VOIEJJVCgzKQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NUU19DVExfQUNLTk9XTEVE R0VfUkVDRUlWRURfRU4gQklUKDQpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NUTF9B Q0tOT1dMRURHRV9XSVRIX0VSUl9FTiBCSVQoNSkKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9T VFNfQ1RMX1RSSUdHRVJfUkVDRUlWRURfRU4gQklUKDYpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9D TURfU1RTX0NUTF9URV9SRUNFSVZFRF9FTiBCSVQoNykKPiArI2RlZmluZSBEU0lfRElSRUNUX0NN RF9TVFNfQ1RMX0JUQV9DT01QTEVURURfRU4gQklUKDgpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9D TURfU1RTX0NUTF9CVEFfRklOSVNIRURfRU4gQklUKDkpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9D TURfU1RTX0NUTF9SRUFEX0NPTVBMRVRFRF9XSVRIX0VSUl9FTiBCSVQoMTApCj4gKyNkZWZpbmUg RFNJX0RJUkVDVF9DTURfU1RTX0NUTF9DTURfVFJBTlNNSVNTSU9OX0VER0UgQklUKDE2KQo+ICsj ZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NUU19DVExfV1JJVEVfQ09NUExFVEVEX0VER0UgQklUKDE3 KQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NUU19DVExfVFJJR0dFUl9DT01QTEVURURfRURH RSBCSVQoMTgpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NUTF9SRUFEX0NPTVBMRVRF RF9FREdFIEJJVCgxOSkKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9TVFNfQ1RMX0FDS05PV0xF REdFX1JFQ0VJVkVEX0VER0UgQklUKDIwKQo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NUU19D VExfQUNLTk9XTEVER0VfV0lUSF9FUlJfRURHRSBCSVQoMjEpCj4gKyNkZWZpbmUgRFNJX0RJUkVD VF9DTURfU1RTX0NUTF9UUklHR0VSX1JFQ0VJVkVEX0VER0UgQklUKDIyKQo+ICsjZGVmaW5lIERT SV9ESVJFQ1RfQ01EX1NUU19DVExfVEVfUkVDRUlWRURfRURHRSBCSVQoMjMpCj4gKyNkZWZpbmUg RFNJX0RJUkVDVF9DTURfU1RTX0NUTF9CVEFfQ09NUExFVEVEX0VER0UgQklUKDI0KQo+ICsjZGVm aW5lIERTSV9ESVJFQ1RfQ01EX1NUU19DVExfQlRBX0ZJTklTSEVEX0VER0UgQklUKDI1KQo+ICsj ZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NUU19DVExfUkVBRF9DT01QTEVURURfV0lUSF9FUlJfRURH RSBCSVQoMjYpCj4gKwo+ICsjZGVmaW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMIDB4MDAwMDAxMDAK PiArI2RlZmluZSBEU0lfVklEX01PREVfU1RTX0NUTF9WU0dfUlVOTklORyBCSVQoMCkKPiArI2Rl ZmluZSBEU0lfVklEX01PREVfU1RTX0NUTF9FUlJfTUlTU0lOR19EQVRBIEJJVCgxKQo+ICsjZGVm aW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX0VSUl9NSVNTSU5HX0hTWU5DIEJJVCgyKQo+ICsjZGVm aW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX0VSUl9NSVNTSU5HX1ZTWU5DIEJJVCgzKQo+ICsjZGVm aW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX1JFR19FUlJfU01BTExfTEVOR1RIIEJJVCg0KQo+ICsj ZGVmaW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX1JFR19FUlJfU01BTExfSEVJR0hUIEJJVCg1KQo+ ICsjZGVmaW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX0VSUl9CVVJTVFdSSVRFIEJJVCg2KQo+ICsj ZGVmaW5lIERTSV9WSURfTU9ERV9TVFNfQ1RMX0VSUl9MT05HV1JJVEUgQklUKDcpCj4gKyNkZWZp bmUgRFNJX1ZJRF9NT0RFX1NUU19DVExfRVJSX0xPTkdSRUFEIEJJVCg4KQo+ICsjZGVmaW5lIERT SV9WSURfTU9ERV9TVFNfQ1RMX0VSUl9WUlNfV1JPTkdfTEVOR1RIIEJJVCg5KQo+ICsjZGVmaW5l IERTSV9WSURfTU9ERV9TVFNfQ1RMX1ZTR19SVU5OSU5HX0VER0UgQklUKDE2KQo+ICsjZGVmaW5l IERTSV9WSURfTU9ERV9TVFNfQ1RMX0VSUl9NSVNTSU5HX0RBVEFfRURHRSBCSVQoMTcpCj4gKyNk ZWZpbmUgRFNJX1ZJRF9NT0RFX1NUU19DVExfRVJSX01JU1NJTkdfSFNZTkNfRURHRSBCSVQoMTgp Cj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NUU19DVExfRVJSX01JU1NJTkdfVlNZTkNfRURHRSBC SVQoMTkpCj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NUU19DVExfUkVHX0VSUl9TTUFMTF9MRU5H VEhfRURHRSBCSVQoMjApCj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NUU19DVExfUkVHX0VSUl9T TUFMTF9IRUlHSFRfRURHRSBCSVQoMjEpCj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NUU19DVExf RVJSX0JVUlNUV1JJVEVfRURHRSBCSVQoMjIpCj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NUU19D VExfRVJSX0xPTkdXUklURV9FREdFIEJJVCgyMykKPiArI2RlZmluZSBEU0lfVklEX01PREVfU1RT X0NUTF9FUlJfTE9OR1JFQURfRURHRSBCSVQoMjQpCj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NU U19DVExfRVJSX1ZSU19XUk9OR19MRU5HVEhfRURHRSBCSVQoMjUpCj4gKyNkZWZpbmUgRFNJX1ZJ RF9NT0RFX1NUU19DVExfVlNHX1JFQ09WRVJZX0VER0UgQklUKDI2KQo+ICsKPiArI2RlZmluZSBE U0lfVEdfU1RTX0NUTCAweDAwMDAwMTA0Cj4gKyNkZWZpbmUgRFNJX01DVExfREhQWV9FUlJfQ1RM IDB4MDAwMDAxMDgKPiArI2RlZmluZSBEU0lfTUNUTF9NQUlOX1NUU19DTFIgMHgwMDAwMDExMAo+ ICsKPiArI2RlZmluZSBEU0lfQ01EX01PREVfU1RTX0NMUiAweDAwMDAwMTE0Cj4gKyNkZWZpbmUg RFNJX0NNRF9NT0RFX1NUU19DTFJfRVJSX05PX1RFX0NMUiBCSVQoMCkKPiArI2RlZmluZSBEU0lf Q01EX01PREVfU1RTX0NMUl9FUlJfVEVfTUlTU19DTFIgQklUKDEpCj4gKyNkZWZpbmUgRFNJX0NN RF9NT0RFX1NUU19DTFJfRVJSX1NESTFfVU5ERVJSVU5fQ0xSIEJJVCgyKQo+ICsjZGVmaW5lIERT SV9DTURfTU9ERV9TVFNfQ0xSX0VSUl9TREkyX1VOREVSUlVOX0NMUiBCSVQoMykKPiArI2RlZmlu ZSBEU0lfQ01EX01PREVfU1RTX0NMUl9FUlJfVU5XQU5URURfUkRfQ0xSIEJJVCg0KQo+ICsjZGVm aW5lIERTSV9DTURfTU9ERV9TVFNfQ0xSX0NTTV9SVU5OSU5HX0NMUiBCSVQoNSkKPiArCj4gKyNk ZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NMUiAweDAwMDAwMTE4Cj4gKyNkZWZpbmUgRFNJX0RJ UkVDVF9DTURfU1RTX0NMUl9DTURfVFJBTlNNSVNTSU9OX0NMUiBCSVQoMCkKPiArI2RlZmluZSBE U0lfRElSRUNUX0NNRF9TVFNfQ0xSX1dSSVRFX0NPTVBMRVRFRF9DTFIgQklUKDEpCj4gKyNkZWZp bmUgRFNJX0RJUkVDVF9DTURfU1RTX0NMUl9UUklHR0VSX0NPTVBMRVRFRF9DTFIgQklUKDIpCj4g KyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NMUl9SRUFEX0NPTVBMRVRFRF9DTFIgQklUKDMp Cj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NMUl9BQ0tOT1dMRURHRV9SRUNFSVZFRF9D TFIgQklUKDQpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RTX0NMUl9BQ0tOT1dMRURHRV9X SVRIX0VSUl9SRUNFSVZFRF9DTFIgQklUKDUpCj4gKyNkZWZpbmUgRFNJX0RJUkVDVF9DTURfU1RT X0NMUl9UUklHR0VSX1JFQ0VJVkVEX0NMUiBCSVQoNikKPiArI2RlZmluZSBEU0lfRElSRUNUX0NN RF9TVFNfQ0xSX1RFX1JFQ0VJVkVEX0NMUiBCSVQoNykKPiArI2RlZmluZSBEU0lfRElSRUNUX0NN RF9TVFNfQ0xSX0JUQV9DT01QTEVURURfQ0xSIEJJVCg4KQo+ICsjZGVmaW5lIERTSV9ESVJFQ1Rf Q01EX1NUU19DTFJfQlRBX0ZJTklTSEVEX0NMUiBCSVQoOSkKPiArI2RlZmluZSBEU0lfRElSRUNU X0NNRF9TVFNfQ0xSX1JFQURfQ09NUExFVEVEX1dJVEhfRVJSX0NMUiBCSVQoMTApCj4gKwo+ICsj ZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1JEX1NUU19DTFIgMHgwMDAwMDExQwo+ICsjZGVmaW5lIERT SV9WSURfTU9ERV9TVFNfQ0xSIDB4MDAwMDAxMjAKPiArI2RlZmluZSBEU0lfVEdfU1RTX0NMUiAw eDAwMDAwMTI0Cj4gKyNkZWZpbmUgRFNJX01DVExfRFBIWV9FUlJfQ0xSIDB4MDAwMDAxMjgKPiAr I2RlZmluZSBEU0lfTUNUTF9NQUlOX1NUU19GTEFHIDB4MDAwMDAxMzAKPiArI2RlZmluZSBEU0lf Q01EX01PREVfU1RTX0ZMQUcgMHgwMDAwMDEzNAo+ICsjZGVmaW5lIERTSV9ESVJFQ1RfQ01EX1NU U19GTEFHIDB4MDAwMDAxMzgKPiArI2RlZmluZSBEU0lfRElSRUNUX0NNRF9SRF9TVFNfRkxBRyAw eDAwMDAwMTNDCj4gKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX1NUU19GTEFHIDB4MDAwMDAxNDAKPiAr I2RlZmluZSBEU0lfVEdfU1RTX0ZMQUcgMHgwMDAwMDE0NAo+ICsKPiArI2RlZmluZSBEU0lfRFBI WV9MQU5FU19UUklNIDB4MDAwMDAxNTAKPiArI2RlZmluZSBEU0lfRFBIWV9MQU5FU19UUklNX0RQ SFlfU0tFV19EQVQxX1NISUZUIDAKPiArI2RlZmluZSBEU0lfRFBIWV9MQU5FU19UUklNX0RQSFlf U0tFV19EQVQxX01BU0sgMHgwMDAwMDAwMwo+ICsjZGVmaW5lIERTSV9EUEhZX0xBTkVTX1RSSU1f RFBIWV9DRF9PRkZfREFUMSBCSVQoMikKPiArI2RlZmluZSBEU0lfRFBIWV9MQU5FU19UUklNX0RQ SFlfSFNUWF9TTEVXUkFURV9VUF9EQVQxIEJJVCgzKQo+ICsjZGVmaW5lIERTSV9EUEhZX0xBTkVT X1RSSU1fRFBIWV9IU1RYX1NMRVdSQVRFX0RPV05fREFUMSBCSVQoNCkKPiArI2RlZmluZSBEU0lf RFBIWV9MQU5FU19UUklNX0RQSFlfVEVTVF9SRVNFUlZFRF8xX0RBVDEgQklUKDUpCj4gKyNkZWZp bmUgRFNJX0RQSFlfTEFORVNfVFJJTV9EUEhZX1NLRVdfQ0xLX1NISUZUIDYKPiArI2RlZmluZSBE U0lfRFBIWV9MQU5FU19UUklNX0RQSFlfU0tFV19DTEtfTUFTSyAweDAwMDAwMEMwCj4gKyNkZWZp bmUgRFNJX0RQSFlfTEFORVNfVFJJTV9EUEhZX0xQX1JYX1ZJTF9DTEtfU0hJRlQgOAo+ICsjZGVm aW5lIERTSV9EUEhZX0xBTkVTX1RSSU1fRFBIWV9MUF9SWF9WSUxfQ0xLX01BU0sgMHgwMDAwMDMw MAo+ICsjZGVmaW5lIERTSV9EUEhZX0xBTkVTX1RSSU1fRFBIWV9MUF9UWF9TTEVXUkFURV9DTEtf U0hJRlQgMTAKPiArI2RlZmluZSBEU0lfRFBIWV9MQU5FU19UUklNX0RQSFlfTFBfVFhfU0xFV1JB VEVfQ0xLX01BU0sgMHgwMDAwMEMwMAo+ICsjZGVmaW5lIERTSV9EUEhZX0xBTkVTX1RSSU1fRFBI WV9TUEVDU185MF84MUJfMF84MSAwCj4gKyNkZWZpbmUgRFNJX0RQSFlfTEFORVNfVFJJTV9EUEhZ X1NQRUNTXzkwXzgxQl8wXzkwIEJJVCgxMikKPiArI2RlZmluZSBEU0lfRFBIWV9MQU5FU19UUklN X0RQSFlfSFNUWF9TTEVXUkFURV9VUF9DTEsgQklUKDEzKQo+ICsjZGVmaW5lIERTSV9EUEhZX0xB TkVTX1RSSU1fRFBIWV9IU1RYX1NMRVdSQVRFX0RPV05fQ0xLIEJJVCgxNCkKPiArI2RlZmluZSBE U0lfRFBIWV9MQU5FU19UUklNX0RQSFlfVEVTVF9SRVNFUlZFRF8xX0NMSyBCSVQoMTUpCj4gKyNk ZWZpbmUgRFNJX0RQSFlfTEFORVNfVFJJTV9EUEhZX1NLRVdfREFUMiBCSVQoMTYpCj4gKyNkZWZp bmUgRFNJX0RQSFlfTEFORVNfVFJJTV9EUEhZX0hTVFhfU0xFV1JBVEVfVVBfREFUMiBCSVQoMTgp Cj4gKyNkZWZpbmUgRFNJX0RQSFlfTEFORVNfVFJJTV9EUEhZX0hTVFhfU0xFV1JBVEVfRE9XTl9E QVQyIEJJVCgxOSkKPiArI2RlZmluZSBEU0lfRFBIWV9MQU5FU19UUklNX0RQSFlfVEVTVF9SRVNF UlZFRF8xX0RBVDIgQklUKDIwKQo+ICsKPiArI2RlZmluZSBEU0lfSURfUkVHCTB4MDAwMDBGRjAK PiArCj4gKy8qIFBSQ01VIERTSSByZXNldCByZWdpc3RlcnMgKi8KPiArI2RlZmluZSBQUkNNX0RT SV9TV19SRVNFVCAweDMyNAo+ICsjZGVmaW5lIFBSQ01fRFNJX1NXX1JFU0VUX0RTSTBfU1dfUkVT RVROIEJJVCgwKQo+ICsjZGVmaW5lIFBSQ01fRFNJX1NXX1JFU0VUX0RTSTFfU1dfUkVTRVROIEJJ VCgxKQo+ICsjZGVmaW5lIFBSQ01fRFNJX1NXX1JFU0VUX0RTSTJfU1dfUkVTRVROIEJJVCgyKQo+ ICsKPiArc3RydWN0IG1jZGVfZHNpIHsKPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiArCXN0cnVj dCBtY2RlICptY2RlOwo+ICsJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7Cj4gKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbDsKPiAr CXN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2U7Cj4gKwlzdHJ1Y3QgbWlwaV9kc2lfaG9zdCBkc2lf aG9zdDsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKm1kc2k7Cj4gKwl1bnNpZ25lZCBsb25n IGhzX2ZyZXE7Cj4gKwl1bnNpZ25lZCBsb25nIGxwX2ZyZXE7Cj4gKwlib29sIHVudXNlZDsKPiAr Cj4gKwl2b2lkIF9faW9tZW0gKnJlZ3M7Cj4gKwlzdHJ1Y3QgcmVnbWFwICpwcmNtdTsKPiArfTsK PiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IG1jZGVfZHNpICplbmNvZGVyX3RvX21jZGVfZHNp KHN0cnVjdCBkcm1fZW5jb2RlciAqZSkKPiArewo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihlLCBz dHJ1Y3QgbWNkZV9kc2ksIGVuY29kZXIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVj dCBtY2RlX2RzaSAqaG9zdF90b19tY2RlX2RzaShzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaCkKPiAr ewo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihoLCBzdHJ1Y3QgbWNkZV9kc2ksIGRzaV9ob3N0KTsK PiArfQo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgbWNkZV9kc2kgKmNvbm5lY3Rvcl90b19t Y2RlX2RzaShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqYykKPiArewo+ICsJcmV0dXJuIGNvbnRhaW5l cl9vZihjLCBzdHJ1Y3QgbWNkZV9kc2ksIGNvbm5lY3Rvcik7Cj4gK30KPiArCj4gK2Jvb2wgbWNk ZV9kc2lfaXJxKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKm1kc2kpCj4gK3sKPiArCXN0cnVjdCBt Y2RlX2RzaSAqZDsKPiArCXUzMiB2YWw7Cj4gKwlib29sIHRlX3JlY2VpdmVkID0gZmFsc2U7Cj4g Kwo+ICsJZCA9IGhvc3RfdG9fbWNkZV9kc2kobWRzaS0+aG9zdCk7Cj4gKwo+ICsJZGV2X2RiZyhk LT5kZXYsICIlcyBjYWxsZWRcbiIsIF9fZnVuY19fKTsKPiArCj4gKwl2YWwgPSByZWFkbChkLT5y ZWdzICsgRFNJX0RJUkVDVF9DTURfU1RTX0ZMQUcpOwo+ICsJaWYgKHZhbCkKPiArCQlkZXZfZGJn KGQtPmRldiwgIkRTSV9ESVJFQ1RfQ01EX1NUU19GTEFHID0gJTA4eFxuIiwgdmFsKTsKPiArCWlm ICh2YWwgJiBEU0lfRElSRUNUX0NNRF9TVFNfV1JJVEVfQ09NUExFVEVEKQo+ICsJCWRldl9kYmco ZC0+ZGV2LCAiZGlyZWN0IGNvbW1hbmQgd3JpdGUgY29tcGxldGVkXG4iKTsKPiArCWlmICh2YWwg JiBEU0lfRElSRUNUX0NNRF9TVFNfVEVfUkVDRUlWRUQpIHsKPiArCQl0ZV9yZWNlaXZlZCA9IHRy dWU7Cj4gKwkJZGV2X2RiZyhkLT5kZXYsICJkaXJlY3QgY29tbWFuZCBURSByZWNlaXZlZFxuIik7 Cj4gKwl9Cj4gKwlpZiAodmFsICYgRFNJX0RJUkVDVF9DTURfU1RTX0FDS05PV0xFREdFX1dJVEhf RVJSX1JFQ0VJVkVEKQo+ICsJCWRldl9lcnIoZC0+ZGV2LCAiZGlyZWN0IGNvbW1hbmQgQUNLIEVS UiByZWNlaXZlZFxuIik7Cj4gKwlpZiAodmFsICYgRFNJX0RJUkVDVF9DTURfU1RTX1JFQURfQ09N UExFVEVEX1dJVEhfRVJSKQo+ICsJCWRldl9lcnIoZC0+ZGV2LCAiZGlyZWN0IGNvbW1hbmQgcmVh ZCBFUlIgcmVjZWl2ZWRcbiIpOwo+ICsJLyogTWFzayBvZmYgdGhlIEFDSyB2YWx1ZSBhbmQgY2xl YXIgc3RhdHVzICovCj4gKwl3cml0ZWwodmFsLCBkLT5yZWdzICsgRFNJX0RJUkVDVF9DTURfU1RT X0NMUik7Cj4gKwo+ICsJdmFsID0gcmVhZGwoZC0+cmVncyArIERTSV9DTURfTU9ERV9TVFNfRkxB Ryk7Cj4gKwlpZiAodmFsKQo+ICsJCWRldl9kYmcoZC0+ZGV2LCAiRFNJX0NNRF9NT0RFX1NUU19G TEFHID0gJTA4eFxuIiwgdmFsKTsKPiArCWlmICh2YWwgJiBEU0lfQ01EX01PREVfU1RTX0VSUl9O T19URSkKPiArCQkvKiBUaGlzIGhhcHBlbnMgYWxsIHRoZSB0aW1lIChzYWZlIHRvIGlnbm9yZSkg Ki8KPiArCQlkZXZfZGJnKGQtPmRldiwgIkNNRCBtb2RlIG5vIFRFXG4iKTsKPiArCWlmICh2YWwg JiBEU0lfQ01EX01PREVfU1RTX0VSUl9URV9NSVNTKQo+ICsJCS8qIFRoaXMgaGFwcGVucyBhbGwg dGhlIHRpbWUgKHNhZmUgdG8gaWdub3JlKSAqLwo+ICsJCWRldl9kYmcoZC0+ZGV2LCAiQ01EIG1v ZGUgVEUgbWlzc1xuIik7Cj4gKwlpZiAodmFsICYgRFNJX0NNRF9NT0RFX1NUU19FUlJfU0RJMV9V TkRFUlJVTikKPiArCQlkZXZfZXJyKGQtPmRldiwgIkNNRCBtb2RlIFNEMSB1bmRlcnJ1blxuIik7 Cj4gKwlpZiAodmFsICYgRFNJX0NNRF9NT0RFX1NUU19FUlJfU0RJMl9VTkRFUlJVTikKPiArCQlk ZXZfZXJyKGQtPmRldiwgIkNNRCBtb2RlIFNEMiB1bmRlcnJ1blxuIik7Cj4gKwlpZiAodmFsICYg RFNJX0NNRF9NT0RFX1NUU19FUlJfVU5XQU5URURfUkQpCj4gKwkJZGV2X2VycihkLT5kZXYsICJD TUQgbW9kZSB1bndhbnRlZCBSRFxuIik7Cj4gKwl3cml0ZWwodmFsLCBkLT5yZWdzICsgRFNJX0NN RF9NT0RFX1NUU19DTFIpOwo+ICsKPiArCXZhbCA9IHJlYWRsKGQtPnJlZ3MgKyBEU0lfRElSRUNU X0NNRF9SRF9TVFNfRkxBRyk7Cj4gKwlpZiAodmFsKQo+ICsJCWRldl9kYmcoZC0+ZGV2LCAiRFNJ X0RJUkVDVF9DTURfUkRfU1RTX0ZMQUcgPSAlMDh4XG4iLCB2YWwpOwo+ICsJd3JpdGVsKHZhbCwg ZC0+cmVncyArIERTSV9ESVJFQ1RfQ01EX1JEX1NUU19DTFIpOwo+ICsKPiArCXZhbCA9IHJlYWRs KGQtPnJlZ3MgKyBEU0lfVEdfU1RTX0ZMQUcpOwo+ICsJaWYgKHZhbCkKPiArCQlkZXZfZGJnKGQt PmRldiwgIkRTSV9UR19TVFNfRkxBRyA9ICUwOHhcbiIsIHZhbCk7Cj4gKwl3cml0ZWwodmFsLCBk LT5yZWdzICsgRFNJX1RHX1NUU19DTFIpOwo+ICsKPiArCXZhbCA9IHJlYWRsKGQtPnJlZ3MgKyBE U0lfVklEX01PREVfU1RTX0ZMQUcpOwo+ICsJaWYgKHZhbCkKPiArCQlkZXZfZXJyKGQtPmRldiwg InNvbWUgdmlkZW8gbW9kZSBlcnJvciBzdGF0dXNcbiIpOwo+ICsJd3JpdGVsKHZhbCwgZC0+cmVn cyArIERTSV9WSURfTU9ERV9TVFNfQ0xSKTsKPiArCj4gKwlyZXR1cm4gdGVfcmVjZWl2ZWQ7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgbWNkZV9kc2lfaG9zdF9hdHRhY2goc3RydWN0IG1pcGlfZHNp X2hvc3QgKmhvc3QsCj4gKwkJCQlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICptZHNpKQo+ICt7Cj4g KwlzdHJ1Y3QgbWNkZV9kc2kgKmQgPSBob3N0X3RvX21jZGVfZHNpKGhvc3QpOwo+ICsKPiArCWlm IChtZHNpLT5sYW5lcyA8IDEgfHwgbWRzaS0+bGFuZXMgPiAyKSB7Cj4gKwkJRFJNX0VSUk9SKCJk c2kgZGV2aWNlIHBhcmFtcyBpbnZhbGlkLCAxIG9yIDIgbGFuZXMgc3VwcG9ydGVkXG4iKTsKPiAr CQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlkZXZfaW5mbyhkLT5kZXYsICJhdHRhY2hl ZCBEU0kgZGV2aWNlIHdpdGggJWQgbGFuZXNcbiIsIG1kc2ktPmxhbmVzKTsKPiArCS8qIE1JUElf RFNJX0ZNVF9SR0I4OCBldGMgKi8KPiArCWRldl9pbmZvKGQtPmRldiwgImZvcm1hdCAlMDh4LCAl ZGJwcFxuIiwgbWRzaS0+Zm9ybWF0LAo+ICsJCSBtaXBpX2RzaV9waXhlbF9mb3JtYXRfdG9fYnBw KG1kc2ktPmZvcm1hdCkpOwo+ICsJZGV2X2luZm8oZC0+ZGV2LCAibW9kZSBmbGFnczogJTA4bHhc biIsIG1kc2ktPm1vZGVfZmxhZ3MpOwo+ICsKPiArCWQtPm1kc2kgPSBtZHNpOwo+ICsJaWYgKGQt Pm1jZGUpCj4gKwkJZC0+bWNkZS0+bWRzaSA9IG1kc2k7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgbWNkZV9kc2lfaG9zdF9kZXRhY2goc3RydWN0IG1pcGlfZHNpX2hv c3QgKmhvc3QsCj4gKwkJCQlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICptZHNpKQo+ICt7Cj4gKwlz dHJ1Y3QgbWNkZV9kc2kgKmQgPSBob3N0X3RvX21jZGVfZHNpKGhvc3QpOwo+ICsKPiArCWQtPm1k c2kgPSBOVUxMOwo+ICsJaWYgKGQtPm1jZGUpCj4gKwkJZC0+bWNkZS0+bWRzaSA9IE5VTEw7Cj4g Kwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gKyNkZWZpbmUgTUNERV9EU0lfSE9TVF9JU19SRUFE KHR5cGUpCQkJICAgIFwKPiArCSgodHlwZSA9PSBNSVBJX0RTSV9HRU5FUklDX1JFQURfUkVRVUVT VF8wX1BBUkFNKSB8fCBcCj4gKwkgKHR5cGUgPT0gTUlQSV9EU0lfR0VORVJJQ19SRUFEX1JFUVVF U1RfMV9QQVJBTSkgfHwgXAo+ICsJICh0eXBlID09IE1JUElfRFNJX0dFTkVSSUNfUkVBRF9SRVFV RVNUXzJfUEFSQU0pIHx8IFwKPiArCSAodHlwZSA9PSBNSVBJX0RTSV9EQ1NfUkVBRCkpCj4gKwo+ ICtzdGF0aWMgc3NpemVfdCBtY2RlX2RzaV9ob3N0X3RyYW5zZmVyKHN0cnVjdCBtaXBpX2RzaV9o b3N0ICpob3N0LAo+ICsJCQkJICAgICAgY29uc3Qgc3RydWN0IG1pcGlfZHNpX21zZyAqbXNnKQo+ ICt7Cj4gKwlzdHJ1Y3QgbWNkZV9kc2kgKmQgPSBob3N0X3RvX21jZGVfZHNpKGhvc3QpOwo+ICsJ Y29uc3QgdTMyIGxvb3BfZGVsYXlfdXMgPSAxMDsgLyogdXMgKi8KPiArCWNvbnN0IHU4ICp0eCA9 IG1zZy0+dHhfYnVmOwo+ICsJdTMyIGxvb3BfY291bnRlcjsKPiArCXNpemVfdCB0eGxlbjsKPiAr CXUzMiB2YWw7Cj4gKwlpbnQgcmV0Owo+ICsJaW50IGk7Cj4gKwo+ICsJdHhsZW4gPSBtc2ctPnR4 X2xlbjsKPiArCWlmICh0eGxlbiA+IDEyKSB7Cj4gKwkJZGV2X2VycihkLT5kZXYsCj4gKwkJCSJk dW5ubyBob3cgdG8gd3JpdGUgbW9yZSB0aGFuIDEyIGJ5dGVzIHlldFxuIik7Cj4gKwkJcmV0dXJu IC1FSU87Cj4gKwl9Cj4gKwo+ICsJZGV2X2RiZyhkLT5kZXYsCj4gKwkJIm1lc3NhZ2UgdG8gY2hh bm5lbCAlZCwgJXUgYnl0ZXMiLAo+ICsJCW1zZy0+Y2hhbm5lbCwKPiArCQl0eGxlbik7Cj4gKwo+ ICsJLyogQ29tbWFuZCAibmF0dXJlIiAqLwo+ICsJaWYgKE1DREVfRFNJX0hPU1RfSVNfUkVBRCht c2ctPnR5cGUpKQo+ICsJCS8qIE1DVExfTUFJTl9EQVRBX0NUTCBhbHJlYWR5IHNldCB1cCAqLwo+ ICsJCXZhbCA9IERTSV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX05BVF9SRUFEOwo+ICsJ ZWxzZQo+ICsJCXZhbCA9IERTSV9ESVJFQ1RfQ01EX01BSU5fU0VUVElOR1NfQ01EX05BVF9XUklU RTsKPiArCS8qCj4gKwkgKiBNb3JlIHRoYW4gMiBieXRlcyB3aWxsIG5vdCBmaXQgaW4gYSBzaW5n bGUgcGFja2V0LCBzbyBpdCdzCj4gKwkgKiB0aW1lIHRvIHNldCB0aGUgImxvbmcgbm90IHNob3J0 IiBiaXQuIE9uZSBieXRlIGlzIHVzZWQgYnkKPiArCSAqIHRoZSBNSVBJIERDUyBjb21tYW5kIGxl YXZpbmcganVzdCBvbmUgYnl0ZSBmb3IgdGhlIHBheWxvYWQKPiArCSAqIGluIGEgc2hvcnQgcGFj a2FnZS4KPiArCSAqLwo+ICsJaWYgKG1pcGlfZHNpX3BhY2tldF9mb3JtYXRfaXNfbG9uZyhtc2ct PnR5cGUpKQo+ICsJCXZhbCB8PSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NNRF9MT05H Tk9UU0hPUlQ7Cj4gKwl2YWwgfD0gMCA8PCBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTX0NN RF9JRF9TSElGVDsKPiArCS8qIEFkZCBvbmUgdG8gdGhlIGxlbmd0aCBmb3IgdGhlIE1JUEkgRENT IGNvbW1hbmQgKi8KPiArCXZhbCB8PSB0eGxlbgo+ICsJCTw8IERTSV9ESVJFQ1RfQ01EX01BSU5f U0VUVElOR1NfQ01EX1NJWkVfU0hJRlQ7Cj4gKwl2YWwgfD0gRFNJX0RJUkVDVF9DTURfTUFJTl9T RVRUSU5HU19DTURfTFBfRU47Cj4gKwl2YWwgfD0gbXNnLT50eXBlIDw8IERTSV9ESVJFQ1RfQ01E X01BSU5fU0VUVElOR1NfQ01EX0hFQURfU0hJRlQ7Cj4gKwl3cml0ZWwodmFsLCBkLT5yZWdzICsg RFNJX0RJUkVDVF9DTURfTUFJTl9TRVRUSU5HUyk7Cj4gKwo+ICsJLyogTUlQSSBEQ1MgY29tbWFu ZCBpcyBwYXJ0IG9mIHRoZSBkYXRhICovCj4gKwlpZiAodHhsZW4gPiAwKSB7Cj4gKwkJdmFsID0g MDsKPiArCQlmb3IgKGkgPSAwOyBpIDwgNCAmJiBpIDwgdHhsZW47IGkrKykKPiArCQkJdmFsIHw9 IHR4W2ldIDw8IChpICYgMykgKiA4Owo+ICsJfQo+ICsJd3JpdGVsKHZhbCwgZC0+cmVncyArIERT SV9ESVJFQ1RfQ01EX1dSREFUMCk7Cj4gKwlpZiAodHhsZW4gPiA0KSB7Cj4gKwkJdmFsID0gMDsK PiArCQlmb3IgKGkgPSAwOyBpIDwgNCAmJiAoaSArIDQpIDwgdHhsZW47IGkrKykKPiArCQkJdmFs IHw9IHR4W2kgKyA0XSA8PCAoaSAmIDMpICogODsKPiArCQl3cml0ZWwodmFsLCBkLT5yZWdzICsg RFNJX0RJUkVDVF9DTURfV1JEQVQxKTsKPiArCX0KPiArCWlmICh0eGxlbiA+IDgpIHsKPiArCQl2 YWwgPSAwOwo+ICsJCWZvciAoaSA9IDA7IGkgPCA0ICYmIChpICsgOCkgPCB0eGxlbjsgaSsrKQo+ ICsJCQl2YWwgfD0gdHhbaSArIDhdIDw8IChpICYgMykgKiA4Owo+ICsJCXdyaXRlbCh2YWwsIGQt PnJlZ3MgKyBEU0lfRElSRUNUX0NNRF9XUkRBVDIpOwo+ICsJfQo+ICsJaWYgKHR4bGVuID4gMTIp IHsKPiArCQl2YWwgPSAwOwo+ICsJCWZvciAoaSA9IDA7IGkgPCA0ICYmIChpICsgMTIpIDwgdHhs ZW47IGkrKykKPiArCQkJdmFsIHw9IHR4W2kgKyAxMl0gPDwgKGkgJiAzKSAqIDg7Cj4gKwkJd3Jp dGVsKHZhbCwgZC0+cmVncyArIERTSV9ESVJFQ1RfQ01EX1dSREFUMyk7Cj4gKwl9Cj4gKwo+ICsJ d3JpdGVsKH4wLCBkLT5yZWdzICsgRFNJX0RJUkVDVF9DTURfU1RTX0NMUik7Cj4gKwl3cml0ZWwo fjAsIGQtPnJlZ3MgKyBEU0lfQ01EX01PREVfU1RTX0NMUik7Cj4gKwkvKiBTZW5kIGNvbW1hbmQg Ki8KPiArCXdyaXRlbCgxLCBkLT5yZWdzICsgRFNJX0RJUkVDVF9DTURfU0VORCk7Cj4gKwo+ICsJ bG9vcF9jb3VudGVyID0gMTAwMCAqIDEwMDAgLyBsb29wX2RlbGF5X3VzOwo+ICsJd2hpbGUgKCEo cmVhZGwoZC0+cmVncyArIERTSV9ESVJFQ1RfQ01EX1NUUykgJgo+ICsJCSBEU0lfRElSRUNUX0NN RF9TVFNfV1JJVEVfQ09NUExFVEVEKQo+ICsJICAgICAgICYmIC0tbG9vcF9jb3VudGVyKQo+ICsJ CXVzbGVlcF9yYW5nZShsb29wX2RlbGF5X3VzLCAobG9vcF9kZWxheV91cyAqIDMpIC8gMik7Cj4g Kwo+ICsJaWYgKCFsb29wX2NvdW50ZXIpIHsKPiArCQlkZXZfZXJyKGQtPmRldiwgIkRTSSB3cml0 ZSB0aW1lb3V0IVxuIik7Cj4gKwkJcmV0dXJuIC1FVElNRTsKPiArCX0KPiArCj4gKwl2YWwgPSBy ZWFkbChkLT5yZWdzICsgRFNJX0RJUkVDVF9DTURfU1RTKTsKPiArCWlmICh2YWwgJiBEU0lfRElS RUNUX0NNRF9TVFNfQUNLTk9XTEVER0VfV0lUSF9FUlJfUkVDRUlWRUQpIHsKPiArCQl2YWwgPj49 IERTSV9ESVJFQ1RfQ01EX1NUU19BQ0tfVkFMX1NISUZUOwo+ICsJCWRldl9lcnIoZC0+ZGV2LCAi ZXJyb3IgZHVyaW5nIHRyYW5zbWlzc2lvbjogJTA0eFxuIiwKPiArCQkJdmFsKTsKPiArCQlyZXR1 cm4gLUVJTzsKPiArCX0KPiArCj4gKwlpZiAoIU1DREVfRFNJX0hPU1RfSVNfUkVBRChtc2ctPnR5 cGUpKSB7Cj4gKwkJLyogUmV0dXJuIG51bWJlciBvZiBieXRlcyB3cml0dGVuICovCj4gKwkJaWYg KG1pcGlfZHNpX3BhY2tldF9mb3JtYXRfaXNfbG9uZyhtc2ctPnR5cGUpKQo+ICsJCQlyZXQgPSA0 ICsgdHhsZW47Cj4gKwkJZWxzZQo+ICsJCQlyZXQgPSA0Owo+ICsJfSBlbHNlIHsKPiArCQkvKiBP SyB0aGlzIGlzIGEgcmVhZCBjb21tYW5kLCBnZXQgdGhlIHJlc3BvbnNlICovCj4gKwkJdTMyIHJk c3o7Cj4gKwkJdTMyIHJkZGF0Owo+ICsJCXU4ICpyeCA9IG1zZy0+cnhfYnVmOwo+ICsKPiArCQly ZHN6ID0gcmVhZGwoZC0+cmVncyArIERTSV9ESVJFQ1RfQ01EX1JEX1BST1BFUlRZKTsKPiArCQly ZHN6ICY9IERTSV9ESVJFQ1RfQ01EX1JEX1BST1BFUlRZX1JEX1NJWkVfTUFTSzsKPiArCQlyZGRh dCA9IHJlYWRsKGQtPnJlZ3MgKyBEU0lfRElSRUNUX0NNRF9SRERBVCk7Cj4gKwkJZm9yIChpID0g MDsgaSA8IDQgJiYgaSA8IHJkc3o7IGkrKykKPiArCQkJcnhbaV0gPSAocmRkYXQgPj4gKGkgKiA4 KSkgJiAweGZmOwo+ICsJCXJldCA9IHJkc3o7Cj4gKwl9Cj4gKwo+ICsJd3JpdGVsKH4wLCBkLT5y ZWdzICsgRFNJX0RJUkVDVF9DTURfU1RTX0NMUik7Cj4gKwl3cml0ZWwofjAsIGQtPnJlZ3MgKyBE U0lfQ01EX01PREVfU1RTX0NMUik7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBtaXBpX2RzaV9ob3N0X29wcyBtY2RlX2RzaV9ob3N0X29wcyA9IHsK PiArCS5hdHRhY2ggPSBtY2RlX2RzaV9ob3N0X2F0dGFjaCwKPiArCS5kZXRhY2ggPSBtY2RlX2Rz aV9ob3N0X2RldGFjaCwKPiArCS50cmFuc2ZlciA9IG1jZGVfZHNpX2hvc3RfdHJhbnNmZXIsCj4g K307Cj4gKwo+ICsvKiBUaGlzIHNlbmRzIGEgZGlyZWN0IChzaG9ydCkgY29tbWFuZCB0byByZXF1 ZXN0IFRFICovCj4gK3ZvaWQgbWNkZV9kc2lfdGVfcmVxdWVzdChzdHJ1Y3QgbWlwaV9kc2lfZGV2 aWNlICptZHNpKQo+ICt7Cj4gKwlzdHJ1Y3QgbWNkZV9kc2kgKmQ7Cj4gKwl1MzIgdmFsOwo+ICsK PiArCWQgPSBob3N0X3RvX21jZGVfZHNpKG1kc2ktPmhvc3QpOwo+ICsKPiArCS8qIENvbW1hbmQg Im5hdHVyZSIgVEUgcmVxdWVzdCAqLwo+ICsJdmFsID0gRFNJX0RJUkVDVF9DTURfTUFJTl9TRVRU SU5HU19DTURfTkFUX1RFX1JFUTsKPiArCXZhbCB8PSAwIDw8IERTSV9ESVJFQ1RfQ01EX01BSU5f U0VUVElOR1NfQ01EX0lEX1NISUZUOwo+ICsJdmFsIHw9IDIgPDwgRFNJX0RJUkVDVF9DTURfTUFJ Tl9TRVRUSU5HU19DTURfU0laRV9TSElGVDsKPiArCXZhbCB8PSBEU0lfRElSRUNUX0NNRF9NQUlO X1NFVFRJTkdTX0NNRF9MUF9FTjsKPiArCXZhbCB8PSBEU0lfRElSRUNUX0NNRF9NQUlOX1NFVFRJ TkdTX0NNRF9IRUFEX0RDU19TSE9SVF9XUklURV8xIDw8Cj4gKwkJRFNJX0RJUkVDVF9DTURfTUFJ Tl9TRVRUSU5HU19DTURfSEVBRF9TSElGVDsKPiArCXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lf RElSRUNUX0NNRF9NQUlOX1NFVFRJTkdTKTsKPiArCj4gKwkvKiBDbGVhciBURSByZXZlaXZlZCBh bmQgZXJyb3Igc3RhdHVzIGJpdHMgYW5kIGVuYWJsZXMgdGhlbSAqLwo+ICsJd3JpdGVsKERTSV9E SVJFQ1RfQ01EX1NUU19DTFJfVEVfUkVDRUlWRURfQ0xSIHwKPiArCSAgICAgICBEU0lfRElSRUNU X0NNRF9TVFNfQ0xSX0FDS05PV0xFREdFX1dJVEhfRVJSX1JFQ0VJVkVEX0NMUiwKPiArCSAgICAg ICBkLT5yZWdzICsgRFNJX0RJUkVDVF9DTURfU1RTX0NMUik7Cj4gKwl2YWwgPSByZWFkbChkLT5y ZWdzICsgRFNJX0RJUkVDVF9DTURfU1RTX0NUTCk7Cj4gKwl2YWwgfD0gRFNJX0RJUkVDVF9DTURf U1RTX0NUTF9URV9SRUNFSVZFRF9FTjsKPiArCXZhbCB8PSBEU0lfRElSRUNUX0NNRF9TVFNfQ1RM X0FDS05PV0xFREdFX1dJVEhfRVJSX0VOOwo+ICsJd3JpdGVsKHZhbCwgZC0+cmVncyArIERTSV9E SVJFQ1RfQ01EX1NUU19DVEwpOwo+ICsKPiArCS8qIENsZWFyIGFuZCBlbmFibGUgbm8gVEUgb3Ig VEUgbWlzc2luZyBzdGF0dXMgKi8KPiArCXdyaXRlbChEU0lfQ01EX01PREVfU1RTX0NMUl9FUlJf Tk9fVEVfQ0xSIHwKPiArCSAgICAgICBEU0lfQ01EX01PREVfU1RTX0NMUl9FUlJfVEVfTUlTU19D TFIsCj4gKwkgICAgICAgZC0+cmVncyArIERTSV9DTURfTU9ERV9TVFNfQ0xSKTsKPiArCXZhbCA9 IHJlYWRsKGQtPnJlZ3MgKyBEU0lfQ01EX01PREVfU1RTX0NUTCk7Cj4gKwl2YWwgfD0gRFNJX0NN RF9NT0RFX1NUU19DVExfRVJSX05PX1RFX0VOOwo+ICsJdmFsIHw9IERTSV9DTURfTU9ERV9TVFNf Q1RMX0VSUl9URV9NSVNTX0VOOwo+ICsJd3JpdGVsKHZhbCwgZC0+cmVncyArIERTSV9DTURfTU9E RV9TVFNfQ1RMKTsKPiArCj4gKwkvKiBTZW5kIHRoaXMgVEUgcmVxdWVzdCBjb21tYW5kICovCj4g Kwl3cml0ZWwoMSwgZC0+cmVncyArIERTSV9ESVJFQ1RfQ01EX1NFTkQpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBtY2RlX2RzaV9zZXR1cF92aWRlb19tb2RlKHN0cnVjdCBtY2RlX2RzaSAqZCwK PiArCQkJCSAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+ICt7Cj4gKwl1OCBi cHAgPSBtaXBpX2RzaV9waXhlbF9mb3JtYXRfdG9fYnBwKGQtPm1kc2ktPmZvcm1hdCk7Cj4gKwl1 NjQgYnBsOwo+ICsJdTMyIGhmcDsKPiArCXUzMiBoYnA7Cj4gKwl1MzIgaHNhOwo+ICsJdTMyIGJs a2xpbmVfcGNrLCBsaW5lX2R1cmF0aW9uOwo+ICsJdTMyIGJsa2VvbF9wY2ssIGJsa2VvbF9kdXJh dGlvbjsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJdmFsID0gMDsKPiArCWlmIChkLT5tZHNpLT5tb2Rl X2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9WSURFT19CVVJTVCkKPiArCQl2YWwgfD0gRFNJX1ZJRF9N QUlOX0NUTF9CVVJTVF9NT0RFOwo+ICsJaWYgKGQtPm1kc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RT SV9NT0RFX1ZJREVPX1NZTkNfUFVMU0UpIHsKPiArCQl2YWwgfD0gRFNJX1ZJRF9NQUlOX0NUTF9T WU5DX1BVTFNFX0FDVElWRTsKPiArCQl2YWwgfD0gRFNJX1ZJRF9NQUlOX0NUTF9TWU5DX1BVTFNF X0hPUklaT05UQUw7Cj4gKwl9Cj4gKwkvKiBSR0IgaGVhZGVyIGFuZCBwaXhlbCBtb2RlICovCj4g Kwlzd2l0Y2ggKGQtPm1kc2ktPmZvcm1hdCkgewo+ICsJY2FzZSBNSVBJX0RTSV9GTVRfUkdCNTY1 Ogo+ICsJCXZhbCB8PSBNSVBJX0RTSV9QQUNLRURfUElYRUxfU1RSRUFNXzE2IDw8Cj4gKwkJCURT SV9WSURfTUFJTl9DVExfSEVBREVSX1NISUZUOwo+ICsJCXZhbCB8PSBEU0lfVklEX01BSU5fQ1RM X1ZJRF9QSVhFTF9NT0RFXzE2QklUUzsKPiArCQlicmVhazsKPiArCWNhc2UgTUlQSV9EU0lfRk1U X1JHQjY2Nl9QQUNLRUQ6Cj4gKwkJdmFsIHw9IE1JUElfRFNJX1BBQ0tFRF9QSVhFTF9TVFJFQU1f MTggPDwKPiArCQkJRFNJX1ZJRF9NQUlOX0NUTF9IRUFERVJfU0hJRlQ7Cj4gKwkJdmFsIHw9IERT SV9WSURfTUFJTl9DVExfVklEX1BJWEVMX01PREVfMThCSVRTOwo+ICsJCWJyZWFrOwo+ICsJY2Fz ZSBNSVBJX0RTSV9GTVRfUkdCNjY2Ogo+ICsJCXZhbCB8PSBNSVBJX0RTSV9QSVhFTF9TVFJFQU1f M0JZVEVfMTgKPiArCQkJPDwgRFNJX1ZJRF9NQUlOX0NUTF9IRUFERVJfU0hJRlQ7Cj4gKwkJdmFs IHw9IERTSV9WSURfTUFJTl9DVExfVklEX1BJWEVMX01PREVfMThCSVRTX0xPT1NFOwo+ICsJCWJy ZWFrOwo+ICsJY2FzZSBNSVBJX0RTSV9GTVRfUkdCODg4Ogo+ICsJCXZhbCB8PSBNSVBJX0RTSV9Q QUNLRURfUElYRUxfU1RSRUFNXzI0IDw8Cj4gKwkJCURTSV9WSURfTUFJTl9DVExfSEVBREVSX1NI SUZUOwo+ICsJCXZhbCB8PSBEU0lfVklEX01BSU5fQ1RMX1ZJRF9QSVhFTF9NT0RFXzI0QklUUzsK PiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJZGV2X2VycihkLT5kZXYsICJ1bmtub3duIHBp eGVsIG1vZGVcbiIpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwkvKiBGSVhNRTogVFZHIGNv dWxkIGJlIGVuYWJsZWQgaGVyZSAqLwo+ICsKPiArCS8qIFNlbmQgYmxhbmtpbmcgcGFja2V0ICov Cj4gKwl2YWwgfD0gRFNJX1ZJRF9NQUlOX0NUTF9SRUdfQkxLTElORV9NT0RFX0xQXzA7Cj4gKwkv KiBTZW5kIEVPTCBwYWNrZXQgKi8KPiArCXZhbCB8PSBEU0lfVklEX01BSU5fQ1RMX1JFR19CTEtF T0xfTU9ERV9MUF8wOwo+ICsJLyogUmVjb3ZlcnkgbW9kZSAxICovCj4gKwl2YWwgfD0gMSA8PCBE U0lfVklEX01BSU5fQ1RMX1JFQ09WRVJZX01PREVfU0hJRlQ7Cj4gKwkvKiBBbGwgb3RoZXIgZmll bGRzIHplcm8gKi8KPiArCXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lfVklEX01BSU5fQ1RMKTsK PiArCj4gKwkvKiBWZXJ0aWNhbCBmcmFtZSBwYXJhbWV0ZXJzIGFyZSBwcmV0dHkgc3RyYWlnaHQt Zm9yd2FyZCAqLwo+ICsJdmFsID0gbW9kZS0+dmRpc3BsYXkgPDwgRFNJX1ZJRF9WU0laRV9WU0Ff TEVOR1RIX1NISUZUOwo+ICsJLyogdmVydGljYWwgZnJvbnQgcG9yY2ggKi8KPiArCXZhbCB8PSAo bW9kZS0+dnN5bmNfc3RhcnQgLSBtb2RlLT52ZGlzcGxheSkKPiArCQk8PCBEU0lfVklEX1ZTSVpF X1ZGUF9MRU5HVEhfU0hJRlQ7Cj4gKwkvKiB2ZXJ0aWNhbCBzeW5jIGFjdGl2ZSAqLwo+ICsJdmFs IHw9IChtb2RlLT52c3luY19lbmQgLSBtb2RlLT52c3luY19zdGFydCkKPiArCQk8PCBEU0lfVklE X1ZTSVpFX1ZBQ1RfTEVOR1RIX1NISUZUOwo+ICsJLyogdmVydGljYWwgYmFjayBwb3JjaCAqLwo+ ICsJdmFsIHw9IChtb2RlLT52dG90YWwgLSBtb2RlLT52c3luY19lbmQpCj4gKwkJPDwgRFNJX1ZJ RF9WU0laRV9WQlBfTEVOR1RIX1NISUZUOwo+ICsJd3JpdGVsKHZhbCwgZC0+cmVncyArIERTSV9W SURfVlNJWkUpOwo+ICsKPiArCS8qCj4gKwkgKiBIb3Jpem9udGFsIGZyYW1lIHBhcmFtZXRlcnM6 Cj4gKwkgKiBob3Jpem9udGFsIHJlc29sdXRpb24gaXMgZ2l2ZW4gaW4gcGl4ZWxzIGFuZCBtdXN0 IGJlIHJlLWNhbGN1bGF0ZWQKPiArCSAqIGludG8gYnl0ZXMgc2luY2UgdGhpcyBpcyB3aGF0IHRo ZSBoYXJkd2FyZSBleHBlY3RzLgo+ICsJICoKPiArCSAqIDYgKyAyIGlzIEhGUCBoZWFkZXIgKyBj aGVja3N1bQo+ICsJICovCj4gKwloZnAgPSAobW9kZS0+aHN5bmNfc3RhcnQgLSBtb2RlLT5oZGlz cGxheSkgKiBicHAgLSA2IC0gMjsKPiArCWlmIChkLT5tZHNpLT5tb2RlX2ZsYWdzICYgTUlQSV9E U0lfTU9ERV9WSURFT19TWU5DX1BVTFNFKSB7Cj4gKwkJLyoKPiArCQkgKiA2IGlzIEhCUCBoZWFk ZXIgKyBjaGVja3N1bQo+ICsJCSAqIDQgaXMgUkdCIGhlYWRlciArIGNoZWNrc3VtCj4gKwkJICov Cj4gKwkJaGJwID0gKG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhzeW5jX2VuZCkgKiBicHAgLSA0IC0g NjsKPiArCQkvKgo+ICsJCSAqIDYgaXMgSEJQIGhlYWRlciArIGNoZWNrc3VtCj4gKwkJICogNCBp cyBIU1cgcGFja2V0IGJ5dGVzCj4gKwkJICogNCBpcyBSR0IgaGVhZGVyICsgY2hlY2tzdW0KPiAr CQkgKi8KPiArCQloc2EgPSAobW9kZS0+aHN5bmNfZW5kIC0gbW9kZS0+aHN5bmNfc3RhcnQpICog YnBwIC0gNCAtIDQgLSA2Owo+ICsJfSBlbHNlIHsKPiArCQkvKgo+ICsJCSAqIEhCUCBpbmNsdWRl cyBib3RoIGJhY2sgcG9yY2ggYW5kIHN5bmMKPiArCQkgKiA2IGlzIEhCUCBoZWFkZXIgKyBjaGVj a3N1bQo+ICsJCSAqIDQgaXMgSFNXIHBhY2tldCBieXRlcwo+ICsJCSAqIDQgaXMgUkdCIGhlYWRl ciArIGNoZWNrc3VtCj4gKwkJICovCj4gKwkJaGJwID0gKG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhz eW5jX3N0YXJ0KSAqIGJwcCAtIDQgLSA0IC0gNjsKPiArCQkvKiBIU0EgaXMgbm90IGNvbnNpZGVy ZWQgaW4gdGhpcyBtb2RlIGFuZCBzZXQgdG8gMCAqLwo+ICsJCWhzYSA9IDA7Cj4gKwl9Cj4gKwlk ZXZfZGJnKGQtPmRldiwgImhmcDogJXUsIGhicDogJXUsIGhzYTogJXVcbiIsCj4gKwkJaGZwLCBo YnAsIGhzYSk7Cj4gKwo+ICsJLyogRnJhbWUgcGFyYW1ldGVyczogaG9yaXpvbnRhbCBzeW5jIGFj dGl2ZSAqLwo+ICsJdmFsID0gaHNhIDw8IERTSV9WSURfSFNJWkUxX0hTQV9MRU5HVEhfU0hJRlQ7 Cj4gKwkvKiBob3Jpem9udGFsIGJhY2sgcG9yY2ggKi8KPiArCXZhbCB8PSBoYnAgPDwgRFNJX1ZJ RF9IU0laRTFfSEJQX0xFTkdUSF9TSElGVDsKPiArCS8qIGhvcml6b250YWwgZnJvbnQgcG9yY2gg Ki8KPiArCXZhbCB8PSBoZnAgPDwgRFNJX1ZJRF9IU0laRTFfSEZQX0xFTkdUSF9TSElGVDsKPiAr CXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lfVklEX0hTSVpFMSk7Cj4gKwo+ICsJLyogUkdCIGRh dGEgbGVuZ3RoIChieXRlcyBvbiBvbmUgc2NhbmxpbmUpICovCj4gKwl2YWwgPSBtb2RlLT5oZGlz cGxheSAqIChicHAgLyA4KTsKPiArCXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lfVklEX0hTSVpF Mik7Cj4gKwo+ICsJLyogVE9ETzogZnVydGhlciBhZGp1c3RtZW50cyBmb3IgVFZHIG1vZGUgaGVy ZSAqLwo+ICsKPiArCS8qCj4gKwkgKiBFT0wgcGFja2V0IGxlbmd0aCBmcm9tIGJpdHMgcGVyIGxp bmUgY2FsY3VsYXRpb25zOiBwaXhlbCBjbG9jawo+ICsJICogaXMgZ2l2ZW4gaW4ga0h6LCBjYWxj dWxhdGUgdGhlIHRpbWUgYmV0d2VlbiB0d28gcGl4ZWxzIGluCj4gKwkgKiBwaWNvc2Vjb25kcy4K PiArCSAqLwo+ICsJYnBsID0gbW9kZS0+Y2xvY2sgKiBtb2RlLT5odG90YWw7Cj4gKwlicGwgKj0g KGQtPmhzX2ZyZXEgLyA4KTsKPiArCWRvX2RpdihicGwsIDEwMDAwMDApOyAvKiBtaWNyb3NlY29u ZHMgKi8KPiArCWRvX2RpdihicGwsIDEwMDAwMDApOyAvKiBzZWNvbmRzICovCj4gKwlicGwgKj0g ZC0+bWRzaS0+bGFuZXM7Cj4gKwlkZXZfZGJnKGQtPmRldiwgImNhbGN1bGF0ZWQgYnl0ZXMgcGVy IGxpbmU6ICVsbHVcbiIsIGJwbCk7Cj4gKwkvKgo+ICsJICogNiBpcyBoZWFkZXIgKyBjaGVja3N1 bSwgaGVhZGVyID0gNCBieXRlcywgY2hlY2tzdW0gPSAyIGJ5dGVzCj4gKwkgKiA0IGlzIHNob3J0 IHBhY2tldCBmb3IgdnN5bmMvaHN5bmMKPiArCSAqLwo+ICsJaWYgKGQtPm1kc2ktPm1vZGVfZmxh Z3MgJiBNSVBJX0RTSV9NT0RFX1ZJREVPX1NZTkNfUFVMU0UpIHsKPiArCQkvKiBGaXhtZTogaXNu J3QgdGhlIGhzeW5jIHdpZHRoIGluIHBpeGVscz8gKi8KPiArCQlibGtsaW5lX3BjayA9IGJwbCAt IChtb2RlLT5oc3luY19lbmQgLSBtb2RlLT5oc3luY19zdGFydCkgLSA2Owo+ICsJCXZhbCA9IGJs a2xpbmVfcGNrIDw8IERTSV9WSURfQkxLU0laRTJfQkxLTElORV9QVUxTRV9QQ0tfU0hJRlQ7Cj4g KwkJd3JpdGVsKHZhbCwgZC0+cmVncyArIERTSV9WSURfQkxLU0laRTIpOwo+ICsJfSBlbHNlIHsK PiArCQlibGtsaW5lX3BjayA9IGJwbCAtIDQgLSA2Owo+ICsJCXZhbCA9IGJsa2xpbmVfcGNrIDw8 IERTSV9WSURfQkxLU0laRTFfQkxLTElORV9FVkVOVF9QQ0tfU0hJRlQ7Cj4gKwkJd3JpdGVsKHZh bCwgZC0+cmVncyArIERTSV9WSURfQkxLU0laRTEpOwo+ICsJfQo+ICsKPiArCWxpbmVfZHVyYXRp b24gPSAoYmxrbGluZV9wY2sgKyA2KSAvIGQtPm1kc2ktPmxhbmVzOwo+ICsJZGV2X2RiZyhkLT5k ZXYsICJsaW5lIGR1cmF0aW9uICV1XG4iLCBsaW5lX2R1cmF0aW9uKTsKPiArCXZhbCA9IGxpbmVf ZHVyYXRpb24gPDwgRFNJX1ZJRF9EUEhZX1RJTUVfUkVHX0xJTkVfRFVSQVRJT05fU0hJRlQ7Cj4g KwkvKgo+ICsJICogVGhpcyBpcyB0aGUgdGltZSB0byBwZXJmb3JtIExQLT5IUyBvbiBELVBIWQo+ ICsJICogRklYTUU6IG5vd2hlcmUgdG8gZ2V0IHRoaXMgZnJvbTogRFQgcHJvcGVydHkgb24gdGhl IERTST8KPiArCSAqLwo+ICsJdmFsIHw9IDAgPDwgRFNJX1ZJRF9EUEhZX1RJTUVfUkVHX1dBS0VV UF9USU1FX1NISUZUOwo+ICsJd3JpdGVsKHZhbCwgZC0+cmVncyArIERTSV9WSURfRFBIWV9USU1F KTsKPiArCj4gKwkvKiBDYWxjdWxhdGUgYmxvY2sgZW5kIG9mIGxpbmUgKi8KPiArCWJsa2VvbF9w Y2sgPSBicGwgLSBtb2RlLT5oZGlzcGxheSAqIGJwcCAtIDY7Cj4gKwlibGtlb2xfZHVyYXRpb24g PSAoYmxrZW9sX3BjayArIDYpIC8gZC0+bWRzaS0+bGFuZXM7Cj4gKwlkZXZfZGJnKGQtPmRldiwg ImJsa2VvbCBwY2s6ICV1LCBkdXJhdGlvbjogJXVcbiIsCj4gKwkJIGJsa2VvbF9wY2ssIGJsa2Vv bF9kdXJhdGlvbik7Cj4gKwo+ICsJaWYgKGQtPm1kc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9N T0RFX1ZJREVPX0JVUlNUKSB7Cj4gKwkJLyogU2V0IHVwIEVPTCBjbG9jayBmb3IgYnVyc3QgbW9k ZSAqLwo+ICsJCXZhbCA9IHJlYWRsKGQtPnJlZ3MgKyBEU0lfVklEX0JMS1NJWkUxKTsKPiArCQl2 YWwgfD0gYmxrZW9sX3BjayA8PCBEU0lfVklEX0JMS1NJWkUxX0JMS0VPTF9QQ0tfU0hJRlQ7Cj4g KwkJd3JpdGVsKHZhbCwgZC0+cmVncyArIERTSV9WSURfQkxLU0laRTEpOwo+ICsJCXdyaXRlbChi bGtlb2xfcGNrLCBkLT5yZWdzICsgRFNJX1ZJRF9WQ0FfU0VUVElORzIpOwo+ICsKPiArCQl3cml0 ZWwoYmxrZW9sX2R1cmF0aW9uLCBkLT5yZWdzICsgRFNJX1ZJRF9QQ0tfVElNRSk7Cj4gKwkJd3Jp dGVsKGJsa2VvbF9kdXJhdGlvbiAtIDYsIGQtPnJlZ3MgKyBEU0lfVklEX1ZDQV9TRVRUSU5HMSk7 Cj4gKwl9Cj4gKwo+ICsJLyogTWF4aW11bSBsaW5lIGxpbWl0ICovCj4gKwl2YWwgPSByZWFkbChk LT5yZWdzICsgRFNJX1ZJRF9WQ0FfU0VUVElORzIpOwo+ICsJdmFsIHw9IGJsa2xpbmVfcGNrIDw8 Cj4gKwkJRFNJX1ZJRF9WQ0FfU0VUVElORzJfRVhBQ1RfQlVSU1RfTElNSVRfU0hJRlQ7Cj4gKwl3 cml0ZWwodmFsLCBkLT5yZWdzICsgRFNJX1ZJRF9WQ0FfU0VUVElORzIpOwo+ICsKPiArCS8qIFB1 dCBJRjEgaW50byB2aWRlbyBtb2RlICovCj4gKwl2YWwgPSByZWFkbChkLT5yZWdzICsgRFNJX01D VExfTUFJTl9EQVRBX0NUTCk7Cj4gKwl2YWwgfD0gRFNJX01DVExfTUFJTl9EQVRBX0NUTF9JRjFf TU9ERTsKPiArCXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lfTUNUTF9NQUlOX0RBVEFfQ1RMKTsK PiArCj4gKwkvKiBEaXNhYmxlIGNvbW1hbmQgbW9kZSBvbiBJRjEgKi8KPiArCXZhbCA9IHJlYWRs KGQtPnJlZ3MgKyBEU0lfQ01EX01PREVfQ1RMKTsKPiArCXZhbCAmPSB+RFNJX0NNRF9NT0RFX0NU TF9JRjFfTFBfRU47Cj4gKwl3cml0ZWwodmFsLCBkLT5yZWdzICsgRFNJX0NNRF9NT0RFX0NUTCk7 Cj4gKwo+ICsJLyogRW5hYmxlIHNvbWUgZXJyb3IgaW50ZXJydXB0cyAqLwo+ICsJdmFsID0gcmVh ZGwoZC0+cmVncyArIERTSV9WSURfTU9ERV9TVFNfQ1RMKTsKPiArCXZhbCB8PSBEU0lfVklEX01P REVfU1RTX0NUTF9FUlJfTUlTU0lOR19WU1lOQzsKPiArCXZhbCB8PSBEU0lfVklEX01PREVfU1RT X0NUTF9FUlJfTUlTU0lOR19EQVRBOwo+ICsJd3JpdGVsKHZhbCwgZC0+cmVncyArIERTSV9WSURf TU9ERV9TVFNfQ1RMKTsKPiArCj4gKwkvKiBFbmFibGUgdmlkZW8gbW9kZSAqLwo+ICsJdmFsID0g cmVhZGwoZC0+cmVncyArIERTSV9NQ1RMX01BSU5fREFUQV9DVEwpOwo+ICsJdmFsIHw9IERTSV9N Q1RMX01BSU5fREFUQV9DVExfVklEX0VOOwo+ICsJd3JpdGVsKHZhbCwgZC0+cmVncyArIERTSV9N Q1RMX01BSU5fREFUQV9DVEwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtY2RlX2RzaV9zdGFy dChzdHJ1Y3QgbWNkZV9kc2kgKmQpCj4gK3sKPiArCXVuc2lnbmVkIGxvbmcgaHNfZnJlcTsKPiAr CXUzMiB2YWw7Cj4gKwlpbnQgaTsKPiArCj4gKwkvKiBObyBpbnRlZ3JhdGlvbiBtb2RlICovCj4g Kwl3cml0ZWwoMCwgZC0+cmVncyArIERTSV9NQ1RMX0lOVEVHUkFUSU9OX01PREUpOwo+ICsKPiAr CS8qIEVuYWJsZSB0aGUgRFNJIHBvcnQsIGZyb20gZHJpdmVycy92aWRlby9tY2RlL2RzaWxpbmtf djIuYyAqLwo+ICsJdmFsID0gRFNJX01DVExfTUFJTl9EQVRBX0NUTF9MSU5LX0VOIHwKPiArCQlE U0lfTUNUTF9NQUlOX0RBVEFfQ1RMX0JUQV9FTiB8Cj4gKwkJRFNJX01DVExfTUFJTl9EQVRBX0NU TF9SRUFEX0VOIHwKPiArCQlEU0lfTUNUTF9NQUlOX0RBVEFfQ1RMX1JFR19URV9FTjsKPiArCWlm IChkLT5tZHNpLT5tb2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9FT1RfUEFDS0VUKQo+ICsJCXZh bCB8PSBEU0lfTUNUTF9NQUlOX0RBVEFfQ1RMX0hPU1RfRU9UX0dFTjsKPiArCXdyaXRlbCh2YWws IGQtPnJlZ3MgKyBEU0lfTUNUTF9NQUlOX0RBVEFfQ1RMKTsKPiArCj4gKwkvKiBTZXQgYSBoaWdo IGNvbW1hbmQgdGltZW91dCwgY2xlYXIgb3RoZXIgZmllbGRzICovCj4gKwl2YWwgPSAweDNmZiA8 PCBEU0lfQ01EX01PREVfQ1RMX1RFX1RJTUVPVVRfU0hJRlQ7Cj4gKwl3cml0ZWwodmFsLCBkLT5y ZWdzICsgRFNJX0NNRF9NT0RFX0NUTCk7Cj4gKwo+ICsJLyoKPiArCSAqIFVJX1g0IGlzIGRlc2Ny aWJlZCBhcyAidW5pdCBpbnRlcnZhbCB0aW1lcyBmb3VyIgo+ICsJICogSSBndWVzcyBzaW5jZSBE U0kgcGFja2V0cyBhcmUgNCBieXRlcyB3aWRlLCBvbmUgdW5pdAo+ICsJICogaXMgb25lIGJ5dGUu Cj4gKwkgKi8KPiArCWhzX2ZyZXEgPSBjbGtfZ2V0X3JhdGUoZC0+bWNkZS0+ZHNpMF9jbGspOwo+ ICsJaHNfZnJlcSAvPSAxMDAwMDAwOyAvKiBNSHogKi8KPiArCXZhbCA9IDQwMDAgLyBoc19mcmVx Owo+ICsJZGV2X2RiZyhkLT5kZXYsICJVSSB2YWx1ZTogJWRcbiIsIHZhbCk7Cj4gKwl2YWwgPDw9 IERTSV9NQ1RMX0RQSFlfU1RBVElDX1VJX1g0X1NISUZUOwo+ICsJdmFsICY9IERTSV9NQ1RMX0RQ SFlfU1RBVElDX1VJX1g0X01BU0s7Cj4gKwl3cml0ZWwodmFsLCBkLT5yZWdzICsgRFNJX01DVExf RFBIWV9TVEFUSUMpOwo+ICsKPiArCS8qCj4gKwkgKiBFbmFibGUgY2xvY2tpbmc6IDB4MGYgKHNv bWV0aGluZz8pIGJldHdlZW4gZWFjaCBidXJzdCwKPiArCSAqIGVuYWJsZSB0aGUgc2Vjb25kIGxh bmUgaWYgbmVlZGVkLCBlbmFibGUgY29udGludW91cyBjbG9jayBpZgo+ICsJICogbmVlZGVkLCBl bmFibGUgc3dpdGNoIGludG8gVUxQTSAodWx0cmEtbG93IHBvd2VyIG1vZGUpIG9uCj4gKwkgKiBh bGwgdGhlIGxpbmVzLgo+ICsJICovCj4gKwl2YWwgPSAweDBmIDw8IERTSV9NQ1RMX01BSU5fUEhZ X0NUTF9XQUlUX0JVUlNUX1RJTUVfU0hJRlQ7Cj4gKwlpZiAoZC0+bWRzaS0+bGFuZXMgPT0gMikK PiArCQl2YWwgfD0gRFNJX01DVExfTUFJTl9QSFlfQ1RMX0xBTkUyX0VOOwo+ICsJaWYgKCEoZC0+ bWRzaS0+bW9kZV9mbGFncyAmIE1JUElfRFNJX0NMT0NLX05PTl9DT05USU5VT1VTKSkKPiArCQl2 YWwgfD0gRFNJX01DVExfTUFJTl9QSFlfQ1RMX0NMS19DT05USU5VT1VTOwo+ICsJdmFsIHw9IERT SV9NQ1RMX01BSU5fUEhZX0NUTF9DTEtfVUxQTV9FTiB8Cj4gKwkJRFNJX01DVExfTUFJTl9QSFlf Q1RMX0RBVDFfVUxQTV9FTiB8Cj4gKwkJRFNJX01DVExfTUFJTl9QSFlfQ1RMX0RBVDJfVUxQTV9F TjsKPiArCXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lfTUNUTF9NQUlOX1BIWV9DVEwpOwo+ICsK PiArCXZhbCA9ICgxIDw8IERTSV9NQ1RMX1VMUE9VVF9USU1FX0NLTEFORV9VTFBPVVRfVElNRV9T SElGVCkgfAo+ICsJCSgxIDw8IERTSV9NQ1RMX1VMUE9VVF9USU1FX0RBVEFfVUxQT1VUX1RJTUVf U0hJRlQpOwo+ICsJd3JpdGVsKHZhbCwgZC0+cmVncyArIERTSV9NQ1RMX1VMUE9VVF9USU1FKTsK PiArCj4gKwl3cml0ZWwoRFNJX0RQSFlfTEFORVNfVFJJTV9EUEhZX1NQRUNTXzkwXzgxQl8wXzkw LAo+ICsJICAgICAgIGQtPnJlZ3MgKyBEU0lfRFBIWV9MQU5FU19UUklNKTsKPiArCj4gKwkvKiBI aWdoIFBIWSB0aW1lb3V0ICovCj4gKwl2YWwgPSAoMHgwZiA8PCBEU0lfTUNUTF9EUEhZX1RJTUVP VVRfQ0xLX0RJVl9TSElGVCkgfAo+ICsJCSgweDNmZmYgPDwgRFNJX01DVExfRFBIWV9USU1FT1VU X0hTVFhfVE9fVkFMX1NISUZUKSB8Cj4gKwkJKDB4M2ZmZiA8PCBEU0lfTUNUTF9EUEhZX1RJTUVP VVRfTFBSWF9UT19WQUxfU0hJRlQpOwo+ICsJd3JpdGVsKHZhbCwgZC0+cmVncyArIERTSV9NQ1RM X0RQSFlfVElNRU9VVCk7Cj4gKwo+ICsJdmFsID0gRFNJX01DVExfTUFJTl9FTl9QTExfU1RBUlQg fAo+ICsJCURTSV9NQ1RMX01BSU5fRU5fQ0tMQU5FX0VOIHwKPiArCQlEU0lfTUNUTF9NQUlOX0VO X0RBVDFfRU4gfAo+ICsJCURTSV9NQ1RMX01BSU5fRU5fSUYxX0VOOwo+ICsJaWYgKGQtPm1kc2kt PmxhbmVzID09IDIpCj4gKwkJdmFsIHw9IERTSV9NQ1RMX01BSU5fRU5fREFUMl9FTjsKPiArCXdy aXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lfTUNUTF9NQUlOX0VOKTsKPiArCj4gKwkvKiBXYWl0IGZv ciB0aGUgUExMIHRvIGxvY2sgYW5kIHRoZSBjbG9jayBhbmQgZGF0YSBsaW5lcyB0byBjb21lIHVw ICovCj4gKwlpID0gMDsKPiArCXZhbCA9IERTSV9NQ1RMX01BSU5fU1RTX1BMTF9MT0NLIHwKPiAr CQlEU0lfTUNUTF9NQUlOX1NUU19DTEtMQU5FX1JFQURZIHwKPiArCQlEU0lfTUNUTF9NQUlOX1NU U19EQVQxX1JFQURZOwo+ICsJaWYgKGQtPm1kc2ktPmxhbmVzID09IDIpCj4gKwkJdmFsIHw9IERT SV9NQ1RMX01BSU5fU1RTX0RBVDJfUkVBRFk7Cj4gKwl3aGlsZSAoKHJlYWRsKGQtPnJlZ3MgKyBE U0lfTUNUTF9NQUlOX1NUUykgJiB2YWwpICE9IHZhbCkgewo+ICsJCS8qIFNsZWVwIGZvciBhIG1p bGxpc2Vjb25kICovCj4gKwkJdXNsZWVwX3JhbmdlKDEwMDAsIDE1MDApOwo+ICsJCWlmIChpKysg PT0gMTAwKSB7Cj4gKwkJCWRldl93YXJuKGQtPmRldiwgIkRTSSBsYW5lcyBkaWQgbm90IHN0YXJ0 IHVwXG4iKTsKPiArCQkJcmV0dXJuOwo+ICsJCX0KPiArCX0KPiArCj4gKwkvKiBUT0RPIG5lZWRl ZD8gKi8KPiArCj4gKwkvKiBDb21tYW5kIG1vZGUsIGNsZWFyIElGMSBJRCAqLwo+ICsJdmFsID0g cmVhZGwoZC0+cmVncyArIERTSV9DTURfTU9ERV9DVEwpOwo+ICsJLyogRklYTUU6IGVuYWJsZSBs b3ctcG93ZXIgbW9kZT8gKi8KPiArCS8vIHZhbCB8PSBEU0lfQ01EX01PREVfQ1RMX0lGMV9MUF9F TjsKPiArCXZhbCAmPSB+RFNJX0NNRF9NT0RFX0NUTF9JRjFfSURfTUFTSzsKPiArCXdyaXRlbCh2 YWwsIGQtPnJlZ3MgKyBEU0lfQ01EX01PREVfQ1RMKTsKPiArCj4gKwkvKiBXYWl0IGZvciBEU0kg UEhZIHRvIGluaXRpYWxpemUgKi8KPiArCXVzbGVlcF9yYW5nZSgxMDAsIDIwMCk7Cj4gKwlkZXZf aW5mbyhkLT5kZXYsICJEU0kgbGluayBlbmFibGVkXG4iKTsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgbWNkZV9kc2lfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiArewo+ICsJ c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmZW5jb2Rlci0+Y3J0Yy0+c3RhdGUtPmFk anVzdGVkX21vZGU7Cj4gKwlzdHJ1Y3QgbWNkZV9kc2kgKmQgPSBlbmNvZGVyX3RvX21jZGVfZHNp KGVuY29kZXIpOwo+ICsJdW5zaWduZWQgbG9uZyBwaXhlbF9jbG9ja19oeiA9IG1vZGUtPmNsb2Nr ICogMTAwMDsKPiArCXVuc2lnbmVkIGxvbmcgaHNfZnJlcSwgbHBfZnJlcTsKPiArCXUzMiB2YWw7 Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmICghZC0+bWRzaSkgewo+ICsJCWRldl9lcnIoZC0+ZGV2 LCAibm8gRFNJIGRldmljZSBhdHRhY2hlZCB0byBlbmNvZGVyIVxuIik7Cj4gKwkJcmV0dXJuOwo+ ICsJfQo+ICsKPiArCWRldl9pbmZvKGQtPmRldiwgImVuYWJsZSBEU0kgbWFzdGVyIGZvciAlZHgl ZCAlbHUgSHogJXMgbW9kZVxuIiwKPiArCQkgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5 LCBwaXhlbF9jbG9ja19oeiwKPiArCQkgKGQtPm1kc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9N T0RFX1ZJREVPKSA/ICJWSURFTyIgOiAiQ01EIgo+ICsJCSk7Cj4gKwo+ICsJLyogQ29weSBtYXhp bXVtIGNsb2NrIGZyZXF1ZW5jaWVzICovCj4gKwlpZiAoZC0+bWRzaS0+bHBfcmF0ZSkKPiArCQls cF9mcmVxID0gZC0+bWRzaS0+bHBfcmF0ZTsKPiArCWVsc2UKPiArCQlscF9mcmVxID0gRFNJX0RF RkFVTFRfTFBfRlJFUV9IWjsKPiArCWlmIChkLT5tZHNpLT5oc19yYXRlKQo+ICsJCWhzX2ZyZXEg PSBkLT5tZHNpLT5oc19yYXRlOwo+ICsJZWxzZQo+ICsJCWhzX2ZyZXEgPSBEU0lfREVGQVVMVF9I U19GUkVRX0haOwo+ICsKPiArCS8qIEVuYWJsZSBMUCAoTG93IFBvd2VyLCBFbmVyZ3kgU2F2ZSwg RVMpIGFuZCBIUyAoSGlnaCBTcGVlZCkgY2xvY2tzICovCj4gKwlkLT5scF9mcmVxID0gY2xrX3Jv dW5kX3JhdGUoZC0+bWNkZS0+ZHNpMGVzX2NsaywgbHBfZnJlcSk7Cj4gKwlyZXQgPSBjbGtfc2V0 X3JhdGUoZC0+bWNkZS0+ZHNpMGVzX2NsaywgZC0+bHBfZnJlcSk7Cj4gKwlpZiAocmV0KQo+ICsJ CWRldl9lcnIoZC0+ZGV2LCAiZmFpbGVkIHRvIHNldCBMUCBjbG9jayByYXRlICVsdSBIelxuIiwK PiArCQkJZC0+bHBfZnJlcSk7Cj4gKwo+ICsJZC0+aHNfZnJlcSA9IGNsa19yb3VuZF9yYXRlKGQt Pm1jZGUtPmRzaTBfY2xrLCBoc19mcmVxKTsKPiArCXJldCA9IGNsa19zZXRfcmF0ZShkLT5tY2Rl LT5kc2kwX2NsaywgZC0+aHNfZnJlcSk7Cj4gKwlpZiAocmV0KQo+ICsJCWRldl9lcnIoZC0+ZGV2 LCAiZmFpbGVkIHRvIHNldCBIUyBjbG9jayByYXRlICVsdSBIelxuIiwKPiArCQkJZC0+aHNfZnJl cSk7Cj4gKwo+ICsJLyogU3RhcnQgY2xvY2tzICovCj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFi bGUoZC0+bWNkZS0+ZHNpMGVzX2Nsayk7Cj4gKwlpZiAocmV0KQo+ICsJCWRldl9lcnIoZC0+ZGV2 LCAiZmFpbGVkIHRvIGVuYWJsZSBMUCBjbG9ja1xuIik7Cj4gKwllbHNlCj4gKwkJZGV2X2luZm8o ZC0+ZGV2LCAiRFNJIExQIGNsb2NrIHJhdGUgJWx1IEh6XG4iLAo+ICsJCQkgZC0+bHBfZnJlcSk7 Cj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZC0+bWNkZS0+ZHNpMF9jbGspOwo+ICsJaWYg KHJldCkKPiArCQlkZXZfZXJyKGQtPmRldiwgImZhaWxlZCB0byBlbmFibGUgSFMgY2xvY2tcbiIp Owo+ICsJZWxzZQo+ICsJCWRldl9pbmZvKGQtPmRldiwgIkRTSSBIUyBjbG9jayByYXRlICVsdSBI elxuIiwKPiArCQkJIGQtPmhzX2ZyZXEpOwo+ICsKPiArCWlmIChkLT5tZHNpLT5tb2RlX2ZsYWdz ICYgTUlQSV9EU0lfTU9ERV9WSURFTykgewo+ICsJCW1jZGVfZHNpX3NldHVwX3ZpZGVvX21vZGUo ZCwgbW9kZSk7Cj4gKwl9IGVsc2Ugewo+ICsJCS8qIENvbW1hbmQgbW9kZSwgY2xlYXIgSUYxIElE ICovCj4gKwkJdmFsID0gcmVhZGwoZC0+cmVncyArIERTSV9DTURfTU9ERV9DVEwpOwo+ICsJCS8q IEZJWE1FOiBlbmFibGUgbG93LXBvd2VyIG1vZGU/ICovCj4gKwkJLy8gdmFsIHw9IERTSV9DTURf TU9ERV9DVExfSUYxX0xQX0VOOwo+ICsJCXZhbCAmPSB+RFNJX0NNRF9NT0RFX0NUTF9JRjFfSURf TUFTSzsKPiArCQl3cml0ZWwodmFsLCBkLT5yZWdzICsgRFNJX0NNRF9NT0RFX0NUTCk7Cj4gKwl9 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG1jZGVfZHNpX3dhaXRfZm9yX2NvbW1hbmRfbW9kZV9z dG9wKHN0cnVjdCBtY2RlX2RzaSAqZCkKPiArewo+ICsJdTMyIHZhbDsKPiArCWludCBpOwo+ICsK PiArCS8qCj4gKwkgKiBXYWl0IHVudGlsIHdlIGdldCBvdXQgb2YgY29tbWFuZCBtb2RlCj4gKwkg KiBDU00gPSBDb21tYW5kIFN0YXRlIE1hY2hpbmUKPiArCSAqLwo+ICsJaSA9IDA7Cj4gKwl2YWwg PSBEU0lfQ01EX01PREVfU1RTX0NTTV9SVU5OSU5HOwo+ICsJd2hpbGUgKChyZWFkbChkLT5yZWdz ICsgRFNJX0NNRF9NT0RFX1NUUykgJiB2YWwpID09IHZhbCkgewo+ICsJCS8qIFNsZWVwIGZvciBh IG1pbGxpc2Vjb25kICovCj4gKwkJdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOwo+ICsJCWlmIChp KysgPT0gMTAwKSB7Cj4gKwkJCWRldl93YXJuKGQtPmRldiwKPiArCQkJCSAiY291bGQgbm90IGdl dCBvdXQgb2YgY29tbWFuZCBtb2RlXG4iKTsKPiArCQkJcmV0dXJuOwo+ICsJCX0KPiArCX0KPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgbWNkZV9kc2lfd2FpdF9mb3JfdmlkZW9fbW9kZV9zdG9wKHN0 cnVjdCBtY2RlX2RzaSAqZCkKPiArewo+ICsJdTMyIHZhbDsKPiArCWludCBpOwo+ICsKPiArCS8q IFdhaXQgdW50aWwgd2UgZ2V0IG91dCBvZyB2aWRlbyBtb2RlICovCj4gKwlpID0gMDsKPiArCXZh bCA9IERTSV9WSURfTU9ERV9TVFNfVlNHX1JVTk5JTkc7Cj4gKwl3aGlsZSAoKHJlYWRsKGQtPnJl Z3MgKyBEU0lfVklEX01PREVfU1RTKSAmIHZhbCkgPT0gdmFsKSB7Cj4gKwkJLyogU2xlZXAgZm9y IGEgbWlsbGlzZWNvbmQgKi8KPiArCQl1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7Cj4gKwkJaWYg KGkrKyA9PSAxMDApIHsKPiArCQkJZGV2X3dhcm4oZC0+ZGV2LAo+ICsJCQkJICJjb3VsZCBub3Qg Z2V0IG91dCBvZiB2aWRlbyBtb2RlXG4iKTsKPiArCQkJcmV0dXJuOwo+ICsJCX0KPiArCX0KPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgbWNkZV9kc2lfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIpCj4gK3sKPiArCXN0cnVjdCBtY2RlX2RzaSAqZCA9IGVuY29kZXJfdG9fbWNkZV9k c2koZW5jb2Rlcik7Cj4gKwl1MzIgdmFsOwo+ICsKPiArCS8qIERpc2FibGUgYWxsIGVycm9yIGlu dGVycnVwdHMgKi8KPiArCXdyaXRlbCgwLCBkLT5yZWdzICsgRFNJX1ZJRF9NT0RFX1NUU19DVEwp Owo+ICsKPiArCWlmIChkLT5tZHNpLT5tb2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9WSURFTykg ewo+ICsJCS8qIFN0b3AgdmlkZW8gbW9kZSAqLwo+ICsJCXZhbCA9IHJlYWRsKGQtPnJlZ3MgKyBE U0lfTUNUTF9NQUlOX0RBVEFfQ1RMKTsKPiArCQl2YWwgJj0gfkRTSV9NQ1RMX01BSU5fREFUQV9D VExfVklEX0VOOwo+ICsJCXdyaXRlbCh2YWwsIGQtPnJlZ3MgKyBEU0lfTUNUTF9NQUlOX0RBVEFf Q1RMKTsKPiArCQltY2RlX2RzaV93YWl0X2Zvcl92aWRlb19tb2RlX3N0b3AoZCk7Cj4gKwl9IGVs c2Ugewo+ICsJCS8qIFN0b3AgY29tbWFuZCBtb2RlICovCj4gKwkJbWNkZV9kc2lfd2FpdF9mb3Jf Y29tbWFuZF9tb2RlX3N0b3AoZCk7Cj4gKwl9Cj4gKwo+ICsJLyogU3RvcCBjbG9ja3MgKi8KPiAr CWNsa19kaXNhYmxlX3VucHJlcGFyZShkLT5tY2RlLT5kc2kwX2Nsayk7Cj4gKwljbGtfZGlzYWJs ZV91bnByZXBhcmUoZC0+bWNkZS0+ZHNpMGVzX2Nsayk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIG1jZGVfZHNpX2VuY29kZXJfaGVscGVy X2Z1bmNzID0gewo+ICsJLmVuYWJsZSA9IG1jZGVfZHNpX2VuYWJsZSwKPiArCS5kaXNhYmxlID0g bWNkZV9kc2lfZGlzYWJsZSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Vu Y29kZXJfZnVuY3MgbWNkZV9kc2lfZW5jb2Rlcl9mdW5jcyA9IHsKPiArCS5kZXN0cm95ID0gZHJt X2VuY29kZXJfY2xlYW51cCwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nv bm5lY3Rvcl9mdW5jcyBtY2RlX2RzaV9jb25uZWN0b3JfZnVuY3MgPSB7Cj4gKwkucmVzZXQgPSBk cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsCj4gKwkuZmlsbF9tb2RlcyA9IGRybV9o ZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKPiArCS5kZXN0cm95ID0gZHJtX2Nv bm5lY3Rvcl9jbGVhbnVwLAo+ICsJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWlj X2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAo+ICsJLmF0b21pY19kZXN0cm95X3N0 YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsCj4gK307Cj4g Kwo+ICtzdGF0aWMgaW50IG1jZGVfZHNpX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3QgbWNkZV9kc2kgKmQgPSBjb25uZWN0b3JfdG9fbWNk ZV9kc2koY29ubmVjdG9yKTsKPiArCj4gKwlpZiAoZC0+cGFuZWwpCj4gKwkJcmV0dXJuIGRybV9w YW5lbF9nZXRfbW9kZXMoZC0+cGFuZWwpOwo+ICsKPiArCS8qIFRPRE86IGRlYWwgd2l0aCBicmlk Z2VzICovCj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MKPiArbWNkZV9kc2lfY29ubmVjdG9yX2hlbHBlcl9m dW5jcyA9IHsKPiArCS5nZXRfbW9kZXMgPSBtY2RlX2RzaV9nZXRfbW9kZXMsCj4gK307Cj4gKwo+ ICtzdGF0aWMgaW50IG1jZGVfZHNpX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2 aWNlICptYXN0ZXIsCj4gKwkJCSB2b2lkICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZHJtID0gZGF0YTsKPiArCXN0cnVjdCBtY2RlICptY2RlID0gZHJtLT5kZXZfcHJpdmF0ZTsK PiArCXN0cnVjdCBtY2RlX2RzaSAqZCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmQtPmVuY29kZXI7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yID0gJmQtPmNvbm5lY3RvcjsKPiArCXN0cnVjdCBkcm1fcGFuZWwgKnBh bmVsOwo+ICsJc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZTsKPiArCWludCByZXQ7Cj4gKwo+ICsJ aWYgKCFvZl9nZXRfYXZhaWxhYmxlX2NoaWxkX2NvdW50KGRldi0+b2Zfbm9kZSkpIHsKPiArCQlk ZXZfaW5mbyhkZXYsICJ1bnVzZWQgRFNJIGludGVyZmFjZVxuIik7Cj4gKwkJZC0+dW51c2VkID0g dHJ1ZTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCWQtPm1jZGUgPSBtY2RlOwo+ICsJLyogSWYg dGhlIGRpc3BsYXkgYXR0YWNoZWQgYmVmb3JlIGJpbmRpbmcsIHNldCB0aGlzIHVwICovCj4gKwlp ZiAoZC0+bWRzaSkKPiArCQlkLT5tY2RlLT5tZHNpID0gZC0+bWRzaTsKPiArCj4gKwkvKiBBc3Nl cnQgUkVTRVQgdGhyb3VnaCB0aGUgUFJDTVUsIGFjdGl2ZSBsb3cgKi8KPiArCS8qIEZJWE1FOiB3 aGljaCBEU0kgYmxvY2s/ICovCj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMoZC0+cHJjbXUsIFBSQ01f RFNJX1NXX1JFU0VULAo+ICsJCQkgICBQUkNNX0RTSV9TV19SRVNFVF9EU0kwX1NXX1JFU0VUTiwg MCk7Cj4gKwo+ICsJdXNsZWVwX3JhbmdlKDEwMCwgMjAwKTsKPiArCj4gKwkvKiBEZS1hc3NlcnQg UkVTRVQgYWdhaW4gKi8KPiArCXJlZ21hcF91cGRhdGVfYml0cyhkLT5wcmNtdSwgUFJDTV9EU0lf U1dfUkVTRVQsCj4gKwkJCSAgIFBSQ01fRFNJX1NXX1JFU0VUX0RTSTBfU1dfUkVTRVROLAo+ICsJ CQkgICBQUkNNX0RTSV9TV19SRVNFVF9EU0kwX1NXX1JFU0VUTik7Cj4gKwo+ICsJLyogU3RhcnQg dXAgdGhlIGhhcmR3YXJlICovCj4gKwltY2RlX2RzaV9zdGFydChkKTsKPiArCj4gKwkvKiBDcmVh dGUgYW4gZW5jb2RlciBhbmQgYXR0YWNoIHRoZSBkaXNwbGF5IGJyaWRnZSB0byBpdCAqLwo+ICsJ ZHJtX2VuY29kZXJfaW5pdChkcm0sIGVuY29kZXIsICZtY2RlX2RzaV9lbmNvZGVyX2Z1bmNzLAo+ ICsJCQkgRFJNX01PREVfRU5DT0RFUl9EU0ksIE5VTEwpOwo+ICsJZHJtX2VuY29kZXJfaGVscGVy X2FkZChlbmNvZGVyLCAmbWNkZV9kc2lfZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOwo+ICsKPiArCS8q IENyZWF0ZSBhIGNvbm5lY3RvciBhbmQgYXR0YWNoIHRoZSBlbmNvZGVyIHRvIGl0ICovCj4gKwlj b25uZWN0b3ItPnBvbGxlZCA9IERSTV9DT05ORUNUT1JfUE9MTF9IUEQ7Cj4gKwlyZXQgPSBkcm1f Y29ubmVjdG9yX2luaXQoZW5jb2Rlci0+ZGV2LCBjb25uZWN0b3IsCj4gKwkJCQkgJm1jZGVfZHNp X2Nvbm5lY3Rvcl9mdW5jcywKPiArCQkJCSBEUk1fTU9ERV9DT05ORUNUT1JfRFNJKTsKPiArCWlm IChyZXQpIHsKPiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBpbml0aWFsaXplIGNvbm5lY3Rv clxuIik7Cj4gKwkJZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKPiArCQlyZXR1cm4gcmV0 Owo+ICsJfQo+ICsJY29ubmVjdG9yLT5zdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5l Y3RlZDsKPiArCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3IsICZtY2RlX2RzaV9j b25uZWN0b3JfaGVscGVyX2Z1bmNzKTsKPiArCWRybV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIo Y29ubmVjdG9yLCBlbmNvZGVyKTsKPiArCWRybV9jb25uZWN0b3JfcmVnaXN0ZXIoY29ubmVjdG9y KTsKPiArCj4gKwlkZXZfaW5mbyhkZXYsICJpbml0aWFsaXplZCBlbmNvZGVyIGFuZCBjb25uZWN0 b3JcbiIpOwo+ICsKPiArCS8qIFRoZSBEU0kgZW5jb2RlciBjb25uZWN0cyB0byBhIHBhbmVsIG9y IG90aGVyIGJyaWRnZSAqLwo+ICsJcmV0ID0gZHJtX29mX2ZpbmRfcGFuZWxfb3JfYnJpZGdlKGRl di0+b2Zfbm9kZSwKPiArCQkJCQkgIDAsIDAsICZwYW5lbCwgJmJyaWRnZSk7Cj4gKwlpZiAocmV0 ICYmIHJldCAhPSAtRU5PREVWKSB7Cj4gKwkJZGV2X2VycihkZXYsICJubyBwYW5lbCBvciBicmlk Z2UgJWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCWlmIChwYW5lbCkgewo+ ICsJCWJyaWRnZSA9IGRybV9wYW5lbF9icmlkZ2VfYWRkKHBhbmVsLAo+ICsJCQkJCSAgICAgIERS TV9NT0RFX0NPTk5FQ1RPUl9EU0kpOwo+ICsJCWlmIChJU19FUlIoYnJpZGdlKSkgewo+ICsJCQlk ZXZfZXJyKGRldiwgImVycm9yIGFkZGluZyBwYW5lbCBicmlkZ2VcbiIpOwo+ICsJCQlyZXR1cm4g UFRSX0VSUihicmlkZ2UpOwo+ICsJCX0KPiArCQlkZXZfaW5mbyhkZXYsICJjb25uZWN0ZWQgdG8g cGFuZWxcbiIpOwo+ICsJCWQtPnBhbmVsID0gcGFuZWw7Cj4gKwl9IGVsc2UgaWYgKGJyaWRnZSkg ewo+ICsJCS8qIEZJWE1FOiBBVjgxMDAgSERNSSBlbmNvZGVyIGdvZXMgaGVyZSBmb3IgZXhhbXBs ZSAqLwo+ICsJCWRldl9pbmZvKGRldiwgImNvbm5lY3RlZCB0byBub24tcGFuZWwgYnJpZGdlICh1 bnN1cHBvcnRlZClcbiIpOwo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsJfSBlbHNlIHsKPiArCQlk ZXZfZXJyKGRldiwgIm5vIHBhbmVsIG9yIGJyaWRnZVxuIik7Cj4gKwkJcmV0dXJuIC1FTk9ERVY7 Cj4gKwl9Cj4gKwo+ICsJZC0+YnJpZGdlID0gYnJpZGdlOwo+ICsJZC0+Y29ubmVjdG9yLnN0YXR1 cyA9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOwo+ICsKPiArCXJldCA9IGRybV9icmlkZ2Vf YXR0YWNoKGVuY29kZXIsIGJyaWRnZSwgTlVMTCk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2Vy cihkZXYsICJicmlkZ2UgYXR0YWNoIGZhaWxlZDogJWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJuIHJl dDsKPiArCX0KPiArCj4gKwkvKiBGSVhNRTogZmlyc3QgY29tZSBmaXJzdCBzZXJ2ZSwgdXNlIGEg bGlzdCAqLwo+ICsJbWNkZS0+Y29ubmVjdG9yID0gY29ubmVjdG9yOwo+ICsJbWNkZS0+YnJpZGdl ID0gYnJpZGdlOwo+ICsJZGV2X2luZm8oZGV2LCAic2V0IHVwIERTSSBjb25uZWN0b3IgYW5kIHBh bmVsIGJyaWRnZVxuIik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IG1jZGVfZHNpX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rl ciwKPiArCQkJICAgIHZvaWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBtY2RlX2RzaSAqZCA9IGRl dl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArCXJlZ21hcF91cGRhdGVfYml0cyhkLT5wcmNtdSwg UFJDTV9EU0lfU1dfUkVTRVQsCj4gKwkJCSAgIFBSQ01fRFNJX1NXX1JFU0VUX0RTSTBfU1dfUkVT RVROLCAwKTsKPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShkLT5tY2RlLT5kc2kwX2Nsayk7Cj4g KwljbGtfZGlzYWJsZV91bnByZXBhcmUoZC0+bWNkZS0+ZHNpMGVzX2Nsayk7Cj4gK30KPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBtY2RlX2RzaV9jb21wb25lbnRfb3Bz ID0gewo+ICsJLmJpbmQgICA9IG1jZGVfZHNpX2JpbmQsCj4gKwkudW5iaW5kID0gbWNkZV9kc2lf dW5iaW5kLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBtY2RlX2RzaV9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ ZGV2Owo+ICsJc3RydWN0IG1jZGVfZHNpICpkOwo+ICsJc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhv c3Q7Cj4gKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKPiArCXUzMiBkc2lfaWQ7Cj4gKwlpbnQgcmV0 Owo+ICsKPiArCWQgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmQpLCBHRlBfS0VSTkVMKTsK PiArCWlmICghZCkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCWQtPmRldiA9IGRldjsKPiArCXBs YXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGQpOwo+ICsKPiArCS8qIEdldCBhIGhhbmRsZSBvbiB0 aGUgUFJDTVUgc28gd2UgY2FuIGRvIHJlc2V0ICovCj4gKwlkLT5wcmNtdSA9Cj4gKwkJc3lzY29u X3JlZ21hcF9sb29rdXBfYnlfY29tcGF0aWJsZSgic3Rlcmljc3NvbixkYjg1MDAtcHJjbXUiKTsK PiArCWlmIChJU19FUlIoZC0+cHJjbXUpKSB7Cj4gKwkJZGV2X2VycihkZXYsICJubyBQUkNNVSBy ZWdtYXBcbiIpOwo+ICsJCXJldHVybiBQVFJfRVJSKGQtPnByY211KTsKPiArCX0KPiArCj4gKwly ZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwo+ICsJ ZC0+cmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7Cj4gKwlpZiAoSVNfRVJS KGQtPnJlZ3MpKSB7Cj4gKwkJZGV2X2VycihkZXYsICJubyBEU0kgcmVnc1xuIik7Cj4gKwkJcmV0 dXJuIFBUUl9FUlIoZC0+cmVncyk7Cj4gKwl9Cj4gKwo+ICsJZHNpX2lkID0gcmVhZGwoZC0+cmVn cyArIERTSV9JRF9SRUcpOwo+ICsJZGV2X2luZm8oZGV2LCAiSFcgcmV2aXNpb24gMHglMDh4XG4i LCBkc2lfaWQpOwo+ICsKPiArCWhvc3QgPSAmZC0+ZHNpX2hvc3Q7Cj4gKwlob3N0LT5kZXYgPSBk ZXY7Cj4gKwlob3N0LT5vcHMgPSAmbWNkZV9kc2lfaG9zdF9vcHM7Cj4gKwlyZXQgPSBtaXBpX2Rz aV9ob3N0X3JlZ2lzdGVyKGhvc3QpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlkZXZfZXJyKGRl diwgImZhaWxlZCB0byByZWdpc3RlciBEU0kgaG9zdDogJWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJu IHJldDsKPiArCX0KPiArCWRldl9pbmZvKGRldiwgInJlZ2lzdGVyZWQgRFNJIGhvc3RcbiIpOwo+ ICsKPiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGQpOwo+ICsJcmV0dXJuIGNvbXBvbmVu dF9hZGQoZGV2LCAmbWNkZV9kc2lfY29tcG9uZW50X29wcyk7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgbWNkZV9kc2lfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiAr CXN0cnVjdCBtY2RlX2RzaSAqZCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+ICsKPiAr CWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJm1jZGVfZHNpX2NvbXBvbmVudF9vcHMpOwo+ICsJ bWNkZV9kc2lfZGlzYWJsZSgmZC0+ZW5jb2Rlcik7Cj4gKwltaXBpX2RzaV9ob3N0X3VucmVnaXN0 ZXIoJmQtPmRzaV9ob3N0KTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWNkZV9kc2lfb2ZfbWF0Y2hbXSA9IHsKPiArCXsKPiAr CQkuY29tcGF0aWJsZSA9ICJzdGUsbWNkZS1kc2kiLAo+ICsJfSwKPiArCXt9LAo+ICt9Owo+ICsK PiArc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtY2RlX2RzaV9kcml2ZXIgPSB7Cj4gKwkuZHJpdmVy ID0gewo+ICsJCS5uYW1lICAgICAgICAgICA9ICJtY2RlLWRzaSIsCj4gKwkJLm9mX21hdGNoX3Rh YmxlID0gb2ZfbWF0Y2hfcHRyKG1jZGVfZHNpX29mX21hdGNoKSwKPiArCX0sCj4gKwkucHJvYmUg PSBtY2RlX2RzaV9wcm9iZSwKPiArCS5yZW1vdmUgPSBtY2RlX2RzaV9yZW1vdmUsCj4gK307Cj4g LS0gCj4gMi4yMC4xCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50 ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==