From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail.kymetacorp.com ([192.81.58.21]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1aGYDZ-0004q3-0e for barebox@lists.infradead.org; Tue, 05 Jan 2016 20:28:34 +0000 From: Trent Piepho Date: Tue, 5 Jan 2016 20:28:07 +0000 Message-ID: <1452025697.4474.40.camel@rtred1test09.kymeta.local> References: <1451981463-23604-1-git-send-email-mkl@pengutronix.de> <1451981463-23604-4-git-send-email-mkl@pengutronix.de> In-Reply-To: <1451981463-23604-4-git-send-email-mkl@pengutronix.de> Content-Language: en-US Content-ID: <134A64A611B5FB489B8716C23584540D@kymetacorp.com> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: Re: [PATCH 3/3] bootm: add initial FIT support To: Marc Kleine-Budde Cc: "barebox@lists.infradead.org" , "kernel@pengutronix.de" T24gVHVlLCAyMDE2LTAxLTA1IGF0IDA5OjExICswMTAwLCBNYXJjIEtsZWluZS1CdWRkZSB3cm90 ZToNCj4gK3N0YXRpYyBpbnQgZG9fYm9vdG1fYXJtX2ZpdChzdHJ1Y3QgaW1hZ2VfZGF0YSAqZGF0 YSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZml0X2hhbmRsZSAqaGFuZGxlOw0KPiArCWludCByZXQ7DQo+ ICsJdW5zaWduZWQgbG9uZyBtZW1fZnJlZTsNCj4gKwl1bnNpZ25lZCBsb25nIG1lbV9zdGFydCwg bWVtX3NpemU7DQo+ICsNCj4gKwloYW5kbGUgPSBmaXRfb3BlbihkYXRhLT5vc19maWxlLCBkYXRh LT5vc19udW0sIGRhdGEtPnZlcmJvc2UpOw0KPiArCWlmICghaGFuZGxlKQ0KPiArCQlyZXR1cm4g LUVJTlZBTDsNCj4gKw0KPiArCXJldCA9IHNkcmFtX3N0YXJ0X2FuZF9zaXplKCZtZW1fc3RhcnQs ICZtZW1fc2l6ZSk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCS8q IG5vIHN1cHBvcnQgZm9yIGN1c3RvbSBsb2FkIGFkZHJlc3MgKi8NCj4gKwlkYXRhLT5vc19hZGRy ZXNzID0gbWVtX3N0YXJ0ICsgUEFHRV9BTElHTihoYW5kbGUtPmtlcm5lbF9zaXplICogNCk7DQo+ ICsJZGF0YS0+b3NfcmVzID0gcmVxdWVzdF9zZHJhbV9yZWdpb24oImZpdC1rZXJuZWwiLCBkYXRh LT5vc19hZGRyZXNzLCBoYW5kbGUtPmtlcm5lbF9zaXplKTsNCj4gKwlpZiAoIWRhdGEtPm9zX3Jl cykgew0KPiArCQlwcl9lcnIoIkNhbm5vdCByZXF1ZXN0IHJlZ2lvbiAweCUwOGx4IC0gMHglMDhs eFxuIiwNCj4gKwkJCQlkYXRhLT5vc19hZGRyZXNzLCBoYW5kbGUtPmtlcm5lbF9zaXplKTsNCj4g KwkJcmV0ID0gLUVOT01FTTsNCj4gKwkJZ290byBlcnJfb3V0Ow0KPiArCX0NCj4gKwltZW1jcHko KHZvaWQgKilkYXRhLT5vc19yZXMtPnN0YXJ0LCBoYW5kbGUtPmtlcm5lbCwgaGFuZGxlLT5rZXJu ZWxfc2l6ZSk7DQo+ICsNCj4gKwkvKg0KPiArCSAqIFB1dCBvZnRyZWUvaW5pdHJkIGNsb3NlIGJl aGluZCBjb21wcmVzc2VkIGtlcm5lbCBpbWFnZSB0byBhdm9pZA0KPiArCSAqIHBsYWNpbmcgaXQg b3V0c2lkZSBvZiB0aGUga2VybmVscyBsb3dtZW0uDQo+ICsJICovDQo+ICsJaWYgKGhhbmRsZS0+ aW5pdHJkX3NpemUpIHsNCj4gKwkJZGF0YS0+aW5pdHJkX2FkZHJlc3MgPSBQQUdFX0FMSUdOKGRh dGEtPm9zX3Jlcy0+ZW5kICsgU1pfMU0pOw0KPiArCQlkYXRhLT5pbml0cmRfcmVzID0gcmVxdWVz dF9zZHJhbV9yZWdpb24oImZpdC1pbml0cmQiLCBkYXRhLT5pbml0cmRfYWRkcmVzcywgaGFuZGxl LT5pbml0cmRfc2l6ZSk7DQo+ICsJCWlmICghZGF0YS0+aW5pdHJkX3Jlcykgew0KPiArCQkJcmV0 ID0gLUVOT01FTTsNCj4gKwkJCWdvdG8gZXJyX291dDsNCj4gKwkJfQ0KPiArCQltZW1jcHkoKHZv aWQgKilkYXRhLT5pbml0cmRfcmVzLT5zdGFydCwgaGFuZGxlLT5pbml0cmQsIGhhbmRsZS0+aW5p dHJkX3NpemUpOw0KPiArCX0NCj4gKw0KPiArCWRhdGEtPm9mX3Jvb3Rfbm9kZSA9IG9mX3VuZmxh dHRlbl9kdGIoaGFuZGxlLT5vZnRyZWUpOw0KPiArCWlmICghZGF0YS0+b2Zfcm9vdF9ub2RlKSB7 DQo+ICsJCXByX2VycigidW5hYmxlIHRvIHVuZmxhdHRlbiBkZXZpY2V0cmVlXG4iKTsNCj4gKwkJ cmV0ID0gLUVJTlZBTDsNCj4gKwkJZ290byBlcnJfb3V0Ow0KPiArCX0NCj4gKw0KPiArCS8qDQo+ ICsJICogUHV0IGRldmljZXRyZWUgcmlnaHQgYWZ0ZXIgaW5pdHJkIGlmIHByZXNlbnQgb3IgYWZ0 ZXIgdGhlIGtlcm5lbA0KPiArCSAqIGlmIG5vdC4NCj4gKwkgKi8NCj4gKwlpZiAoZGF0YS0+aW5p dHJkX3JlcykNCj4gKwkJbWVtX2ZyZWUgPSBQQUdFX0FMSUdOKGRhdGEtPmluaXRyZF9yZXMtPmVu ZCk7DQo+ICsJZWxzZQ0KPiArCQltZW1fZnJlZSA9IFBBR0VfQUxJR04oZGF0YS0+b3NfcmVzLT5l bmQgKyBTWl8xTSk7DQpXaHkgdGhlIGV4dHJhIDFNPw0KPiArDQo+ICsJcmV0dXJuIF9fZG9fYm9v dG1fbGludXgoZGF0YSwgbWVtX2ZyZWUsIDApOw0KPiArDQo+ICtlcnJfb3V0Og0KPiArCWlmICho YW5kbGUpDQo+ICsJCWZpdF9jbG9zZShoYW5kbGUpOw0KDQpoYW5kbGUgY2FuJ3QgYmUgTlVMTCwg aXQncyBiZWVuIGRlcmVmZXJlbmNlZCBpbiBldmVyeSBwYXRoIHRoYXQgZ2V0cw0KdGhlcmUuDQoN Cj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgc3RydWN0IGltYWdlX2hhbmRs ZXIgYXJtX2ZpdF9oYW5kbGVyID0gew0KDQpDYW4gdGhpcyBiZSBjb25zdD8NCg0KPiArICAgICAg ICAubmFtZSA9ICJGSVQgaW1hZ2UiLA0KPiArICAgICAgICAuYm9vdG0gPSBkb19ib290bV9hcm1f Zml0LA0KPiArICAgICAgICAuZmlsZXR5cGUgPSBmaWxldHlwZV9vZnRyZWUsDQo+ICt9Ow0KPiAr DQo+ICBzdGF0aWMgc3RydWN0IGJpbmZtdF9ob29rIGJpbmZtdF9haW1hZ2VfaG9vayA9IHsNCj4g IAkudHlwZSA9IGZpbGV0eXBlX2FpbWFnZSwNCj4gIAkuZXhlYyA9ICJib290bSIsDQo+IEBAIC01 NzgsNiArNjUwLDggQEAgc3RhdGljIGludCBhcm1saW51eF9yZWdpc3Rlcl9pbWFnZV9oYW5kbGVy KHZvaWQpDQo+ICAJCXJlZ2lzdGVyX2ltYWdlX2hhbmRsZXIoJmFpbWFnZV9oYW5kbGVyKTsNCj4g IAkJYmluZm10X3JlZ2lzdGVyKCZiaW5mbXRfYWltYWdlX2hvb2spOw0KPiAgCX0NCj4gKwlpZiAo SVNfQlVJTFRJTihDT05GSUdfQ01EX0JPT1RNX0ZJVElNQUdFKSkNCj4gKwkgICAgICAgIHJlZ2lz dGVyX2ltYWdlX2hhbmRsZXIoJmFybV9maXRfaGFuZGxlcik7DQo+ICAJYmluZm10X3JlZ2lzdGVy KCZiaW5mbXRfYXJtX3ppbWFnZV9ob29rKTsNCj4gIAliaW5mbXRfcmVnaXN0ZXIoJmJpbmZtdF9i YXJlYm94X2hvb2spOw0KPiAgDQo+IGRpZmYgLS1naXQgYS9jb21tYW5kcy9LY29uZmlnIGIvY29t bWFuZHMvS2NvbmZpZw0KPiBpbmRleCAxNzQzNjcwZWQzM2MuLmI4OTYyNzIwOWY1YSAxMDA2NDQN Cj4gLS0tIGEvY29tbWFuZHMvS2NvbmZpZw0KPiArKysgYi9jb21tYW5kcy9LY29uZmlnDQo+IEBA IC00MTgsNiArNDE4LDE0IEBAIGNvbmZpZyBDTURfQk9PVE1fQUlNQUdFDQo+ICAJaGVscA0KPiAg CSAgU3VwcG9ydCB1c2luZyBBbmRyb2lkIEltYWdlcy4NCj4gIA0KPiArY29uZmlnIENNRF9CT09U TV9GSVRJTUFHRQ0KPiArCWJvb2wNCj4gKwlwcm9tcHQgIkZJVCBpbWFnZSBzdXBwb3J0Ig0KPiAr CXNlbGVjdCBGSVRJTUFHRQ0KPiArCWRlcGVuZHMgb24gQ01EX0JPT1RNICYmIEFSTQ0KPiArCWhl bHANCj4gKwkgIFN1cHBvcnQgdXNpbmcgRklUIEltYWdlcy4NCg0KUGVyaGFwcyBhIGxpbmsgYWJv dXQgRklUIGltYWdlcyBvciBhIHBvaW50ZXIgdG8gYSBmaWxlIGluIERvY3VtZW50YXRpb24NCmNv dWxkIGdvIGhlcmU/DQoNCg0KPiArLyoNCj4gKyAqIFRoZSBjb25zaXN0ZW5jeSBvZiB0aGUgRlRE IHN0cnVjdHVyZSB3YXMgYWxyZWFkeSBjaGVja2VkIGJ5IG9mX3VuZmxhdHRlbl9kdGIoKQ0KPiAr ICovDQo+ICtzdGF0aWMgaW50IGZpdF92ZXJpZnlfc2lnbmF0dXJlKHN0cnVjdCBkZXZpY2Vfbm9k ZSAqc2lnX25vZGUsIHZvaWQgKmZpdCkNCj4gK3sNCj4gKwl1aW50MzJfdCBoYXNoZWRfc3RyaW5n c19zdGFydCwgaGFzaGVkX3N0cmluZ3Nfc2l6ZTsNCj4gKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgaW5j X25vZGVzLCBleGNfcHJvcHM7DQo+ICsJc3RydWN0IHJzYV9wdWJsaWNfa2V5IGtleSA9IHt9Ow0K PiArCXN0cnVjdCBkaWdlc3QgKmRpZ2VzdDsNCj4gKwlpbnQgc2lnX2xlbjsNCj4gKwljb25zdCBj aGFyICphbGdvX25hbWUsICprZXlfbmFtZSwgKnNpZ192YWx1ZTsNCj4gKwljaGFyICprZXlfcGF0 aDsNCj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmtleV9ub2RlOw0KPiArCWVudW0gaGFzaF9hbGdv IGFsZ287DQo+ICsJdm9pZCAqaGFzaDsNCj4gKwlpbnQgcmV0Ow0KPiArDQo+ICsJaWYgKG9mX3By b3BlcnR5X3JlYWRfc3RyaW5nKHNpZ19ub2RlLCAiYWxnbyIsICZhbGdvX25hbWUpKSB7DQo+ICsJ CXByX2VycigiYWxnbyBub3QgZm91bmRcbiIpOw0KPiArCQlyZXQgPSAtRUlOVkFMOw0KPiArCQln b3RvIG91dDsNCj4gKwl9DQo+ICsJaWYgKHN0cmNtcChhbGdvX25hbWUsICJzaGExLHJzYTIwNDgi KSA9PSAwKSB7DQo+ICsJCWFsZ28gPSBIQVNIX0FMR09fU0hBMTsNCj4gKwl9IGVsc2UgaWYgKHN0 cmNtcChhbGdvX25hbWUsICJzaGEyNTYscnNhNDA5NiIpID09IDApIHsNCj4gKwkJYWxnbyA9IEhB U0hfQUxHT19TSEEyNTY7DQo+ICsJfSBlbHNlCXsNCj4gKwkJcHJfZXJyKCJ1bmtub3duIGFsZ28g JXNcbiIsIGFsZ29fbmFtZSk7DQo+ICsJCXJldCA9IC1FSU5WQUw7DQo+ICsJCWdvdG8gb3V0Ow0K PiArCX0NCj4gKwlkaWdlc3QgPSBkaWdlc3RfYWxsb2NfYnlfYWxnbyhhbGdvKTsNCj4gKwlpZiAo IWRpZ2VzdCkgew0KPiArCQlwcl9lcnIoInVuc3VwcG9ydGVkIGFsZ28gJXNcbiIsIGFsZ29fbmFt ZSk7DQo+ICsJCXJldCA9IC1FSU5WQUw7DQo+ICsJCWdvdG8gb3V0Ow0KPiArCX0NCj4gKw0KPiAr CXNpZ192YWx1ZSA9IG9mX2dldF9wcm9wZXJ0eShzaWdfbm9kZSwgInZhbHVlIiwgJnNpZ19sZW4p Ow0KPiArCWlmICghc2lnX3ZhbHVlKSB7DQo+ICsJCXByX2Vycigic2lnbmF0dXJlIHZhbHVlIG5v dCBmb3VuZFxuIik7DQo+ICsJCXJldCA9IC1FSU5WQUw7DQo+ICsJCWdvdG8gb3V0X2ZyZWVfZGln ZXN0Ow0KPiArCX0NCj4gKw0KPiArCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZyhzaWdfbm9k ZSwgImtleS1uYW1lLWhpbnQiLCAma2V5X25hbWUpKSB7DQo+ICsJCXByX2Vycigia2V5IG5hbWUg bm90IGZvdW5kXG4iKTsNCj4gKwkJcmV0ID0gLUVJTlZBTDsNCj4gKwkJZ290byBvdXRfZnJlZV9k aWdlc3Q7DQo+ICsJfQ0KPiArCWtleV9wYXRoID0gYXNwcmludGYoIi9zaWduYXR1cmUva2V5LSVz Iiwga2V5X25hbWUpOw0KDQpJZiBJIHVuZGVyc3RhbmQgdGhpcyBjb3JyZWN0bHksIG9uZSBjb21w dXRlcyBhIGhhc2ggb2YgcGFydCBvZiB0aGUNCmRldmljZSB0cmVlIGFuZCB0aGVuIHZlcmlmaWVz IGl0IGFnYWluc3QgYSBzaWduYXR1cmUsIGFsc28gaW4gdGhlIGRldmljZQ0KdHJlZSwgdXNpbmcg YW4gUlNBIGtleSwgYWxzbyBpbiB0aGUgZGV2aWNlIHRyZWUuDQoNCldoYXQncyB0aGUgcG9pbnQg b2YgdGhhdD8gIElzbid0IGl0IGJhc2ljYWxseSBhIGNvbXBsZXggQ1JDIGNoZWNrIGZvcg0KaW50 ZXJuYWwgY29uc2lzdGVuY3k/DQoNCj4gKwlpZiAoIWtleV9uYW1lKSB7DQo+ICsJCXJldCA9IC1F Tk9NRU07DQo+ICsJCWdvdG8gb3V0X2ZyZWVfZGlnZXN0Ow0KPiArCX0NCj4gKwlrZXlfbm9kZSA9 IG9mX2ZpbmRfbm9kZV9ieV9wYXRoKGtleV9wYXRoKTsNCj4gKwlmcmVlKGtleV9wYXRoKTsNCj4g KwlpZiAoIWtleV9ub2RlKSB7DQo+ICsJCXByX2luZm8oImZhaWxlZCB0byBmaW5kIGtleSBub2Rl XG4iKTsNCj4gKwkJcmV0ID0gLUVOT0VOVDsNCj4gKwkJZ290byBvdXRfZnJlZV9kaWdlc3Q7DQo+ ICsJfQ0KPiArDQo+ICsJcmV0ID0gcnNhX29mX3JlYWRfa2V5KGtleV9ub2RlLCAma2V5KTsNCj4g KwlpZiAocmV0KSB7DQo+ICsJCXByX2luZm8oImZhaWxlZCB0byByZWFkIGtleVxuIik7DQo+ICsJ CXJldCA9IC1FTk9FTlQ7DQo+ICsJCWdvdG8gb3V0X2ZyZWVfZGlnZXN0Ow0KPiArCX0NCj4gKw0K PiArCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMl9pbmRleChzaWdfbm9kZSwgImhhc2hlZC1zdHJp bmdzIiwgMCwgJmhhc2hlZF9zdHJpbmdzX3N0YXJ0KSkgew0KPiArCQlwcl9lcnIoIiVzOiBoYXNo ZWQtc3RyaW5ncyBzdGFydCBub3QgZm91bmRcbiIsIF9fZnVuY19fKTsNCj4gKwkJcmV0ID0gLUVJ TlZBTDsNCj4gKwkJZ290byBvdXRfZnJlZV9kaWdlc3Q7DQo+ICsJfQ0KPiArCWlmIChvZl9wcm9w ZXJ0eV9yZWFkX3UzMl9pbmRleChzaWdfbm9kZSwgImhhc2hlZC1zdHJpbmdzIiwgMSwgJmhhc2hl ZF9zdHJpbmdzX3NpemUpKSB7DQo+ICsJCXByX2VycigiJXM6IGhhc2hlZC1zdHJpbmdzIHNpemUg bm90IGZvdW5kXG4iLCBfX2Z1bmNfXyk7DQo+ICsJCXJldCA9IC1FSU5WQUw7DQo+ICsJCWdvdG8g b3V0X2ZyZWVfZGlnZXN0Ow0KPiArCX0NCj4gKw0KPiArCXN0cmluZ19saXN0X2luaXQoJmluY19u b2Rlcyk7DQo+ICsJc3RyaW5nX2xpc3RfaW5pdCgmZXhjX3Byb3BzKTsNCj4gKw0KPiArCWlmIChv Zl9yZWFkX3N0cmluZ19saXN0KHNpZ19ub2RlLCAiaGFzaGVkLW5vZGVzIiwgJmluY19ub2Rlcykp IHsNCj4gKwkJcHJfZXJyKCIlczogaGFzaGVkLW5vZGVzIGludmFsaWRcbiIsIF9fZnVuY19fKTsN Cj4gKwkJcmV0ID0gLUVJTlZBTDsNCj4gKwkJZ290byBvdXRfc2w7DQo+ICsJfQ0KPiArDQo+ICsJ c3RyaW5nX2xpc3RfYWRkKCZleGNfcHJvcHMsICJkYXRhIik7DQo+ICsNCj4gKwlkaWdlc3RfaW5p dChkaWdlc3QpOw0KPiArCXJldCA9IGZpdF9kaWdlc3QoZml0LCBkaWdlc3QsICZpbmNfbm9kZXMs ICZleGNfcHJvcHMsIGhhc2hlZF9zdHJpbmdzX3N0YXJ0LCBoYXNoZWRfc3RyaW5nc19zaXplKTsN Cj4gKwloYXNoID0geHphbGxvYyhkaWdlc3RfbGVuZ3RoKGRpZ2VzdCkpOw0KPiArCWRpZ2VzdF9m aW5hbChkaWdlc3QsIGhhc2gpOw0KPiArDQo+ICsJcmV0ID0gcnNhX3ZlcmlmeSgma2V5LCBzaWdf dmFsdWUsIHNpZ19sZW4sIGhhc2gsIGFsZ28pOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJcHJfaW5m bygic2lnIEJBRFxuIik7DQo+ICsJCXJldCA9IENIRUNLX0xFVkVMX05PTkU7DQoNCkluZm8gbGV2 ZWwgbWVzc2FnZSBzaG91bGQgbWF5YmUgYmUgYSBiaXQgbW9yZSBkZXNjcmlwdGl2ZS4NCg0KPiAr CX0gZWxzZSB7DQo+ICsJCXByX2luZm8oInNpZyBPS1xuIik7DQo+ICsJCXJldCA9IENIRUNLX0xF VkVMX1NJRzsNCj4gKwl9DQo+ICsNCj4gKwlmcmVlKGhhc2gpOw0KPiArIG91dF9zbDoNCj4gKwlz dHJpbmdfbGlzdF9mcmVlKCZpbmNfbm9kZXMpOw0KPiArCXN0cmluZ19saXN0X2ZyZWUoJmV4Y19w cm9wcyk7DQo+ICsgb3V0X2ZyZWVfZGlnZXN0Og0KPiArCWRpZ2VzdF9mcmVlKGRpZ2VzdCk7DQo+ ICsgb3V0Og0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZml0X3Zl cmlmeV9oYXNoKHN0cnVjdCBkZXZpY2Vfbm9kZSAqaGFzaCwgY29uc3Qgdm9pZCAqZGF0YSwgaW50 IGRhdGFfbGVuKQ0KPiArew0KPiArCXN0cnVjdCBkaWdlc3QgKmQ7DQo+ICsJY29uc3QgY2hhciAq YWxnbzsNCj4gKwljb25zdCBjaGFyICp2YWx1ZV9yZWFkOw0KPiArCWNoYXIgKnZhbHVlX2NhbGM7 DQo+ICsJaW50IGhhc2hfbGVuOw0KPiArDQo+ICsJdmFsdWVfcmVhZCA9IG9mX2dldF9wcm9wZXJ0 eShoYXNoLCAidmFsdWUiLCAmaGFzaF9sZW4pOw0KPiArCWlmICghdmFsdWVfcmVhZCkgew0KPiAr CQlwcl9lcnIoInZhbHVlIG5vdCBmb3VuZFxuIik7DQo+ICsJCXJldHVybiBDSEVDS19MRVZFTF9O T05FOw0KDQpTdWdnZXN0IGFkZGluZyBub2RlIHBhdGggdG8gZXJyb3IgbWVzc2FnZXMuICAidmFs dWUgbm90IGZvdW5kIiByZWFsbHkNCmRvZXNuJ3QgdGVsbCBhbnlvbmUgYW55dGhpbmcuDQoNClRo aXMgaXMgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IHJldHVybnMgQ0hFQ0tfTEVWRUxfTk9ORS4gIFdo aWxlIGxhdGVyLi4uDQoNCj4gKw0KPiArCWlmIChtZW1jbXAodmFsdWVfcmVhZCwgdmFsdWVfY2Fs YywgaGFzaF9sZW4pKSB7DQo+ICsJCXByX2luZm8oImhhc2ggQkFEXG4iKTsNCj4gKwkJZGlnZXN0 X2ZyZWUoZCk7DQo+ICsJCXJldHVybiBDSEVDS19MRVZFTF9OT05FOw0KDQpOb3cgaXQncyBhbiBp bmZvIG1lc3NhZ2UgYW5kIHJldHVybnMgQ0hFQ0tfTEVWRUxfTk9ORS4gIFNlZW1zIHdyb25nIHRv DQpyZXR1cm4gdGhlIHNhbWUgdmFsdWUgZm9yIGFuIGVycm9yIGFuZCBhIG5vbi1lcnJvci4NCg0K PiArCX0gZWxzZSB7DQo+ICsJCXByX2luZm8oImhhc2ggT0tcbiIpOw0KPiArCQlkaWdlc3RfZnJl ZShkKTsNCj4gKwkJcmV0dXJuIENIRUNLX0xFVkVMX0hBU0g7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgaW50IGZpdF9vcGVuX2ltYWdlKHN0cnVjdCBmaXRfaGFuZGxlICpoYW5kbGUsIGNv bnN0IGNoYXIqIHVuaXQpDQo+ICt7DQo+ICsJc3RydWN0IGRldmljZV9ub2RlICppbWFnZSA9IE5V TEwsICpoYXNoOw0KPiArCWNvbnN0IGNoYXIgKnR5cGUgPSBOVUxMLCAqZGVzYzsNCj4gKwljb25z dCB2b2lkICpkYXRhOw0KPiArCWludCBkYXRhX2xlbjsNCj4gKwlpbnQgcmV0LCBsZXZlbDsNCj4g Kw0KPiArCWltYWdlID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUoaGFuZGxlLT5yb290LCAiaW1hZ2Vz Iik7DQo+ICsJaWYgKCFpbWFnZSkNCj4gKwkJcmV0dXJuIC1FTk9FTlQ7DQo+ICsNCj4gKwlpbWFn ZSA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKGltYWdlLCB1bml0KTsNCj4gKwlpZiAoIWltYWdlKQ0K PiArCQlyZXR1cm4gLUVOT0VOVDsNCj4gKw0KPiArCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3N0cmlu ZyhpbWFnZSwgImRlc2NyaXB0aW9uIiwgJmRlc2MpKSB7DQpIZXJlIHlvdSBjaGVjayB0aGUgcmV0 dXJuIHZhbHVlIG9mIG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKCkNCj4gKwkJcHJfaW5mbygiRklU IGltYWdlICclcycgKG5vIGRlc2NyaXB0aW9uKVxuIiwgdW5pdCk7DQo+ICsJfSBlbHNlIHsNCj4g KwkJcHJfaW5mbygiRklUIGltYWdlICclcyc6ICclcydcbiIsIHVuaXQsIGRlc2MpOw0KPiArCX0N Cg0KU3VnZ2VzdDoNCiAgICAgICAgIGRlc2MgPSAiKG5vIGRlc2NyaXB0aW9uKSI7DQogICAgICAg ICBvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZyhpbWFnZSwgImRlc2NyaXB0aW9uIiwgJmRlc2MpOw0K ICAgICAgICAgcHJfaW5mbygiRklUIGltYWdlICclcyc6ICclcydcbiIsIHVuaXQsIGRlc2MpOw0K ICAgICAgICAgLyogZGVzYyBoYXMgdmFsaWQgdmFsdWUgaWYgYW55b25lIHVzZXMgaXQgYWdhaW4s IGluc3RlYWQgb2YNCiAgICAgICAgICAgIGJlaW5nIHVuaW5pdGlhbGl6ZWQgKi8NCj4gKw0KPiAr CW9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGltYWdlLCAidHlwZSIsICZ0eXBlKTsNCj4gKwlpZiAo IXR5cGUpDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KDQpCdXQgaGVyZSB5b3UgY2hlY2sgdGhhdCB0 eXBlIGlzIG5vbi1OVUxMLg0KDQo+ICsNCj4gKwlkYXRhID0gb2ZfZ2V0X3Byb3BlcnR5KGltYWdl LCAiZGF0YSIsICZkYXRhX2xlbik7DQo+ICsJaWYgKCFkYXRhKSB7DQo+ICsJCXByX2VycigiZGF0 YSBub3QgZm91bmRcbiIpOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsNCj4gKwls ZXZlbCA9IENIRUNLX0xFVkVMX01BWDsNCj4gKwlmb3JfZWFjaF9jaGlsZF9vZl9ub2RlKGltYWdl LCBoYXNoKSB7DQo+ICsJCWlmIChoYW5kbGUtPnZlcmJvc2UpDQo+ICsJCQlvZl9wcmludF9ub2Rl cyhoYXNoLCAwKTsNCj4gKwkJcmV0ID0gZml0X3ZlcmlmeV9oYXNoKGhhc2gsIGRhdGEsIGRhdGFf bGVuKTsNCj4gKwkJaWYgKHJldCA8IDApDQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArCQlsZXZlbCA9 IG1pbihsZXZlbCwgcmV0KTsNCj4gKwl9DQo+ICsJaWYgKGxldmVsID09IENIRUNLX0xFVkVMX01B WCkgew0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQpJbmNvbnNpc3RlbnQgdXNlIG9mIHt9 IGZvciBvbmUgc3RhdGVtZW50IHRoZW4gY2xhdXNlLg0KDQo+ICsNCj4gKwlpZiAobGV2ZWwgPT0g Q0hFQ0tfTEVWRUxfSEFTSCkgew0KPiArCQlpZiAoc3RyY21wKHR5cGUsICJrZXJuZWwiKSA9PSAw IHx8DQo+ICsJCSAgICBzdHJjbXAodHlwZSwgImtlcm5lbF9ub2xvYWQiKSA9PSAwKSB7DQo+ICsJ CQloYW5kbGUtPmtlcm5lbCA9IGRhdGE7DQo+ICsJCQloYW5kbGUtPmtlcm5lbF9zaXplID0gZGF0 YV9sZW47DQo+ICsJCX0gZWxzZSBpZiAoc3RyY21wKHR5cGUsICJmbGF0X2R0IikgPT0gMCkgew0K PiArCQkJaGFuZGxlLT5vZnRyZWUgPSBkYXRhOw0KPiArCQkJaGFuZGxlLT5vZnRyZWVfc2l6ZSA9 IGRhdGFfbGVuOw0KPiArCQl9IGVsc2UgaWYgKHN0cmNtcCh0eXBlLCAicmFtZGlzayIpID09IDAp IHsNCj4gKwkJCWhhbmRsZS0+aW5pdHJkID0gZGF0YTsNCj4gKwkJCWhhbmRsZS0+aW5pdHJkX3Np emUgPSBkYXRhX2xlbjsNCj4gKwkJfSBlbHNlIHsNCj4gKwkJCXByX2luZm8oInVua25vd24gaW1h Z2UgdHlwZSAlcywgaWdub3JpbmdcbiIsIHR5cGUpOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJ cmV0dXJuIGxldmVsOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGZpdF9vcGVuX2NvbmZpZ3Vy YXRpb24oc3RydWN0IGZpdF9oYW5kbGUgKmhhbmRsZSwgaW50IG51bSkNCj4gK3sNCj4gKwlzdHJ1 Y3QgZGV2aWNlX25vZGUgKmNvbmZfbm9kZSA9IE5VTEwsICpzaWdfbm9kZTsNCj4gKwljaGFyIHVu aXRfbmFtZVsxMF07DQo+ICsJY29uc3QgY2hhciAqdW5pdCwgKmRlc2M7DQo+ICsJaW50IHJldCwg bGV2ZWw7DQo+ICsNCj4gKwljb25mX25vZGUgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShoYW5kbGUt PnJvb3QsICJjb25maWd1cmF0aW9ucyIpOw0KPiArCWlmICghY29uZl9ub2RlKQ0KPiArCQlyZXR1 cm4gLUVOT0VOVDsNCj4gKw0KPiArCWlmIChudW0pIHsNCj4gKwkJc25wcmludGYodW5pdF9uYW1l LCBzaXplb2YodW5pdF9uYW1lKSwgImNvbmZAJWQiLCBudW0pOw0KPiArCQl1bml0ID0gdW5pdF9u YW1lOw0KPiArCX0gZWxzZSBpZiAob2ZfcHJvcGVydHlfcmVhZF9zdHJpbmcoY29uZl9ub2RlLCAi ZGVmYXVsdCIsICZ1bml0KSkgew0KPiArCQl1bml0ID0gImNvbmZAMSI7DQo+ICsJfQ0KPiArDQo+ ICsJY29uZl9ub2RlID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUoY29uZl9ub2RlLCB1bml0KTsNCj4g KwlpZiAoIWNvbmZfbm9kZSkgew0KPiArCQlwcl9lcnIoIkZJVCBjb25maWd1cmF0aW9uICclcycg bm90IGZvdW5kXG4iLCB1bml0KTsNCj4gKwkJcmV0dXJuIC1FTk9FTlQ7DQo+ICsJfQ0KPiArDQo+ ICsJaWYgKG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGNvbmZfbm9kZSwgImRlc2NyaXB0aW9uIiwg JmRlc2MpKSB7DQo+ICsJCXByX2luZm8oIkZJVCBjb25maWd1cmF0aW9uICclcycgKG5vIGRlc2Ny aXB0aW9uKVxuIiwgdW5pdCk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJcHJfaW5mbygiRklUIGNvbmZp Z3VyYXRpb24gJyVzJzogJyVzJ1xuIiwgdW5pdCwgZGVzYyk7DQo+ICsJfQ0KPiArDQo+ICsJbGV2 ZWwgPSBDSEVDS19MRVZFTF9NQVg7DQo+ICsJZm9yX2VhY2hfY2hpbGRfb2Zfbm9kZShjb25mX25v ZGUsIHNpZ19ub2RlKSB7DQo+ICsJCWlmIChoYW5kbGUtPnZlcmJvc2UpDQo+ICsJCQlvZl9wcmlu dF9ub2RlcyhzaWdfbm9kZSwgMCk7DQo+ICsJCXJldCA9IGZpdF92ZXJpZnlfc2lnbmF0dXJlKHNp Z19ub2RlLCBoYW5kbGUtPmZpdCk7DQo+ICsJCWlmIChyZXQgPCAwKQ0KPiArCQkJcmV0dXJuIHJl dDsNCj4gKwkJbGV2ZWwgPSBtaW4obGV2ZWwsIHJldCk7DQo+ICsJfQ0KPiArCWlmIChsZXZlbCA9 PSBDSEVDS19MRVZFTF9NQVgpDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KDQpUaGlzIGZ1bmN0aW9u IHVwIHRvIGhlcmUgc2VlbXMgdmVyeSBzaW1pbGFyIHRvIGZpdF9vcGVuX2ltYWdlKCkuICBDb3Vs ZA0KdGhleSBiZSByZWZhY3RvcmVkLCBJZS4gX2ZpdF9vcGVuKGhhbmRsZSwgImltYWdlcyIsIHVu aXQpIHZzDQpfZml0X29wZW4oaGFuZGxlLCAiY29uZmlndXJhdGlvbnMiLCAiY29uZkAxIikuDQoN Cj4gKw0KPiArCWlmIChsZXZlbCAhPSBDSEVDS19MRVZFTF9TSUcpDQo+ICsJCXJldHVybiAtRUlO VkFMOw0KPiArDQo+ICsJaWYgKG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGNvbmZfbm9kZSwgImtl cm5lbCIsICZ1bml0KSA9PSAwKQ0KPiArCQlsZXZlbCA9IG1pbihsZXZlbCwgZml0X29wZW5faW1h Z2UoaGFuZGxlLCB1bml0KSk7DQo+ICsJZWxzZQ0KPiArCQlyZXR1cm4gLUVOT0VOVDsNCj4gKw0K PiArCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZyhjb25mX25vZGUsICJmZHQiLCAmdW5pdCkg PT0gMCkNCj4gKwkJbGV2ZWwgPSBtaW4obGV2ZWwsIGZpdF9vcGVuX2ltYWdlKGhhbmRsZSwgdW5p dCkpOw0KPiArDQo+ICsJaWYgKG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGNvbmZfbm9kZSwgInJh bWRpc2siLCAmdW5pdCkgPT0gMCkNCj4gKwkJbGV2ZWwgPSBtaW4obGV2ZWwsIGZpdF9vcGVuX2lt YWdlKGhhbmRsZSwgdW5pdCkpOw0KPiArDQo+ICsJaWYgKGxldmVsICE9IENIRUNLX0xFVkVMX0hB U0gpDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsN Cj4gK3N0cnVjdCBmaXRfaGFuZGxlICpmaXRfb3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50 IG51bSwgYm9vbCB2ZXJib3NlKQ0KPiArew0KPiArCXN0cnVjdCBmaXRfaGFuZGxlICpoYW5kbGUg PSBOVUxMOw0KPiArCWNvbnN0IGNoYXIgKmRlc2M7DQo+ICsNCj4gKwloYW5kbGUgPSB4emFsbG9j KHNpemVvZihzdHJ1Y3QgZml0X2hhbmRsZSkpOw0KPiArDQo+ICsJaGFuZGxlLT52ZXJib3NlID0g dmVyYm9zZTsNCj4gKw0KPiArCWhhbmRsZS0+Zml0ID0gcmVhZF9maWxlKGZpbGVuYW1lLCAmaGFu ZGxlLT5zaXplKTsNCj4gKwlpZiAoIWhhbmRsZS0+Zml0KSB7DQo+ICsJCXByX2VycigidW5hYmxl IHRvIHJlYWQgJXM6ICVzXG4iLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsNCj4gKwkJZ290 byBlcnI7DQo+ICsJfQ0KPiArDQo+ICsJaGFuZGxlLT5yb290ID0gb2ZfdW5mbGF0dGVuX2R0Yiho YW5kbGUtPmZpdCk7DQo+ICsJaWYgKElTX0VSUihoYW5kbGUtPnJvb3QpKSB7DQo+ICsJCWdvdG8g ZXJyOw0KPiArCX0NClVzZSBvZiB7fSBmb3Igb25lIHN0YXRlbWVudCBpZiBjbGF1c2VzIGlzIGlu Y29uc2lzdGVudCBpbiB0aGlzIGZ1bmN0aW9uLg0KDQo+ICsNCj4gKwlpZiAob2ZfcHJvcGVydHlf cmVhZF9zdHJpbmcoaGFuZGxlLT5yb290LCAiZGVzY3JpcHRpb24iLCAmZGVzYykpIHsNCj4gKwkJ cHJfaW5mbygiRklUICclcycgKG5vIGRlc2NyaXB0aW9uKVxuIiwgZmlsZW5hbWUpOw0KPiArCX0g ZWxzZSB7DQo+ICsJCXByX2luZm8oIkZJVCAnJXMnOiAnJXMnXG4iLCBmaWxlbmFtZSwgZGVzYyk7 DQo+ICsJfQ0KPiArDQo+ICsJaWYgKGZpdF9vcGVuX2NvbmZpZ3VyYXRpb24oaGFuZGxlLCBudW0p KQ0KPiArCQlnb3RvIGVycjsNCj4gKw0KPiArCXJldHVybiBoYW5kbGU7DQo+ICsgZXJyOg0KPiAr CWlmIChoYW5kbGUtPnJvb3QpDQo+ICsJCW9mX2RlbGV0ZV9ub2RlKGhhbmRsZS0+cm9vdCk7DQo+ ICsJaWYgKGhhbmRsZS0+Zml0KQ0KPiArCQlmcmVlKGhhbmRsZS0+Zml0KTsNCj4gKwlmcmVlKGhh bmRsZSk7DQo+ICsNCj4gKwlyZXR1cm4gTlVMTDsNCj4gK30NCj4gKw0KPiArdm9pZCBmaXRfY2xv c2Uoc3RydWN0IGZpdF9oYW5kbGUgKmhhbmRsZSkNCj4gK3sNCj4gKwlpZiAoaGFuZGxlLT5yb290 KQ0KPiArCQlvZl9kZWxldGVfbm9kZShoYW5kbGUtPnJvb3QpOw0KPiArCWlmIChoYW5kbGUtPmZp dCkNCj4gKwkJZnJlZShoYW5kbGUtPmZpdCk7DQoNCklzbid0IGZyZWUoTlVMTCkgYWxsb3dlZCBp biBCYXJlYm94PyAgSW4gdGhlIGtlcm5lbCBpdCdzIGRlZmluZWQgdGhhdA0Ka2ZyZWUoKSB3aWxs IGNoZWNrIGZvciBOVUxMIGFuZCBjb2RlIHNob3VsZCBub3QgY2hlY2sgYmVmb3JlIGNhbGxpbmcg aXQuDQoNCj4gKwlmcmVlKGhhbmRsZSk7DQo+ICt9DQo+ICsNCj4gKyNpZmRlZiBDT05GSUdfU0FO REJPWA0KPiArc3RhdGljIGludCBkb19ib290bV9zYW5kYm94X2ZpdChzdHJ1Y3QgaW1hZ2VfZGF0 YSAqZGF0YSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZml0X2hhbmRsZSAqaGFuZGxlOw0KPiArCWhhbmRs ZSA9IGZpdF9vcGVuKGRhdGEtPm9zX2ZpbGUsIGRhdGEtPm9zX251bSwgZGF0YS0+dmVyYm9zZSk7 DQo+ICsJaWYgKGhhbmRsZSkNCj4gKwkJZml0X2Nsb3NlKGhhbmRsZSk7DQo+ICsJcmV0dXJuIDA7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgaW1hZ2VfaGFuZGxlciBzYW5kYm94X2ZpdF9o YW5kbGVyID0gew0KPiArCS5uYW1lID0gIkZJVCBpbWFnZSIsDQo+ICsJLmJvb3RtID0gZG9fYm9v dG1fc2FuZGJveF9maXQsDQo+ICsJLmZpbGV0eXBlID0gZmlsZXR5cGVfb2Z0cmVlLA0KPiArfTsN Cj4gKw0KPiArc3RhdGljIGludCBzYW5kYm94X2ZpdF9yZWdpc3Rlcih2b2lkKQ0KPiArew0KPiAr CXJldHVybiByZWdpc3Rlcl9pbWFnZV9oYW5kbGVyKCZzYW5kYm94X2ZpdF9oYW5kbGVyKTsNCj4g K30NCj4gK2xhdGVfaW5pdGNhbGwoc2FuZGJveF9maXRfcmVnaXN0ZXIpOw0KPiArI2VuZGlmDQo+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL2ltYWdlLWZpdC5oIGIvaW5jbHVkZS9pbWFnZS1maXQuaA0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmJjYmM4NTllYWQz Nw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2luY2x1ZGUvaW1hZ2UtZml0LmgNCj4gQEAgLTAs MCArMSw0MiBAQA0KPiArLyoNCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQo+ICsgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0K PiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3INCj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u DQo+ICsgKg0KPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KPiArICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KPiArICogR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCj4gKyAqDQo+ICsgKiBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQ0KPiArICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4NCj4gKyAqDQo+ICsgKiBDb3B5cmlnaHQgKEMpIEph biBMw7xiYmUsIDIwMTQNCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9fSU1BR0VfRklUX0hfXw0K PiArI2RlZmluZSBfX0lNQUdFX0ZJVF9IX18NCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVz Lmg+DQo+ICsNCj4gK3N0cnVjdCBmaXRfaGFuZGxlIHsNCj4gKwl2b2lkICpmaXQ7DQo+ICsJc2l6 ZV90IHNpemU7DQo+ICsNCj4gKwlib29sIHZlcmJvc2U7DQo+ICsNCj4gKwlzdHJ1Y3QgZGV2aWNl X25vZGUgKnJvb3Q7DQo+ICsNCj4gKwljb25zdCB2b2lkICprZXJuZWw7DQo+ICsJdW5zaWduZWQg bG9uZyBrZXJuZWxfc2l6ZTsNCj4gKwljb25zdCB2b2lkICpvZnRyZWU7DQo+ICsJdW5zaWduZWQg bG9uZyBvZnRyZWVfc2l6ZTsNCj4gKwljb25zdCB2b2lkICppbml0cmQ7DQo+ICsJdW5zaWduZWQg bG9uZyBpbml0cmRfc2l6ZTsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBmaXRfaGFuZGxlICpmaXRf b3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IG51bSwgYm9vbCB2ZXJib3NlKTsNCj4gK3Zv aWQgZml0X2Nsb3NlKHN0cnVjdCBmaXRfaGFuZGxlICpoYW5kbGUpOw0KPiArDQo+ICsjZW5kaWYJ LyogX19JTUFHRV9GSVRfSF9fICovDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmJhcmVib3ggbWFpbGluZyBsaXN0CmJhcmVib3hAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2JhcmVi b3gK