From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 084A4CA9EAF for ; Thu, 24 Oct 2019 08:15:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id BD09720856 for ; Thu, 24 Oct 2019 08:15:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726632AbfJXIPy (ORCPT ); Thu, 24 Oct 2019 04:15:54 -0400 Received: from mailgate1.rohmeurope.com ([178.15.145.194]:49580 "EHLO mailgate1.rohmeurope.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726395AbfJXIPx (ORCPT ); Thu, 24 Oct 2019 04:15:53 -0400 X-AuditID: c0a8fbf4-183ff70000001fa6-d6-5db15db6ca10 Received: from smtp.reu.rohmeu.com (will-cas001.reu.rohmeu.com [192.168.251.177]) by mailgate1.rohmeurope.com (Symantec Messaging Gateway) with SMTP id 73.C1.08102.6BD51BD5; Thu, 24 Oct 2019 10:15:50 +0200 (CEST) Received: from WILL-MAIL002.REu.RohmEu.com ([fe80::e0c3:e88c:5f22:d174]) by WILL-CAS001.REu.RohmEu.com ([fe80::d57e:33d0:7a5d:f0a6%16]) with mapi id 14.03.0439.000; Thu, 24 Oct 2019 10:15:45 +0200 From: "Vaittinen, Matti" To: "mazziesaccount@gmail.com" , "dmurphy@ti.com" , "jacek.anaszewski@gmail.com" CC: "linux-leds@vger.kernel.org" , "linux-rtc@vger.kernel.org" , "linux-gpio@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "alexandre.belloni@bootlin.com" , "mturquette@baylibre.com" , "lgirdwood@gmail.com" , "devicetree@vger.kernel.org" , "linus.walleij@linaro.org" , "a.zummo@towertech.it" , "mark.rutland@arm.com" , "robh+dt@kernel.org" , "bgolaszewski@baylibre.com" , "linux-clk@vger.kernel.org" , "lee.jones@linaro.org" , "pavel@ucw.cz" , "broonie@kernel.org" , "sboyd@kernel.org" Subject: Re: [RFC PATCH 11/13] led: bd71828: Support LED outputs on ROHM BD71828 PMIC Thread-Topic: [RFC PATCH 11/13] led: bd71828: Support LED outputs on ROHM BD71828 PMIC Thread-Index: AQHVhNDGb/Fi3H2tI0CugiKcGY+PyKdevIMAgAXjkICAALrQAIABJcIAgABTx4CAAPqlgIAA3/yAgACsP4A= Date: Thu, 24 Oct 2019 08:15:45 +0000 Message-ID: References: <4570db9c-7bc8-f131-269a-248b87e25e38@gmail.com> <201df0f7319b94eb581a040a2b1b07dbfed12e94.camel@fi.rohmeurope.com> <8974a3974377d0623ed968563b035e701191440e.camel@fi.rohmeurope.com> In-Reply-To: Accept-Language: en-US, de-DE Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [213.255.186.46] Content-Type: text/plain; charset="utf-8" Content-ID: <87041B6204AD2F4D9043989AB44C6DA2@de.rohmeurope.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA02Tf0xTVxTHve831aeXWtZrVZK9TY1LppDsj/sHmorRPP9ZjCZuOhp4yLNl Qltfi1H5QwwxCBJTE3XQANUGBgFECyITwR8VkBUzh3MFo2gquABhGgUxRKJ7r53CP/eee77n ez7nj3M5Uj/KmLhsu1tW7FKOwOioW3XvA99etQQsSeHuRFzd/zeLi17+yuKpyhCFz0ZGGOzr +oPGJ/uu0Phx62UKP3vbDfD0wxMEPjNbS+DXpU9p3OKbBfiv9goGt040AdzT8JDBNQP9BK6o 6aVwf2gLHgp1M/h4ZxeLP4QDlDlBbKxqBOKrweOsWNWYL17zDrFic30xIz4JdzDi3cE2Qvyl aoYQ6xreseJkc+J23Z6FKZmS++DObKt9/caMhbYbnWan308c8lw7BwrAqJcoAXEcgt+h6ob7 bAnQcXoYBqi+5zmjCXrYC1DgyeoSwHEMTEElj6I1BlgOUHv3RVp7kLCDRWXVIaAZlsIf0KT3 FavFBvgj6rl8itTMBpiJXgyatDQFVyHfg6loOQ+/R56xs3QMHKRQuPxqFBwHN6ArtU3RPgCu RMUFL6OTktCImv95R8emhqi64z4ZixPQ2PCH//MC6pyJUBqXhGvRpfb1MasZDXvuUbH4S3Tm ZISNzRCPfi8foTzgC+88gnfO7Z3n9s5ze+e5zwO6HqBcKTvHKrnl5HWKnLdOcdhy1WuvI7cZ xHZm6jfwMbgtCAgOBMEyjhAS+CwQsOgXZzqyDtskly1dycuRXUGAOFIw8NdXqxqfJR0+IiuO T9JyjhKM/JrIaYseaqz9suyUlU/qCo4TEF+YphrjFdkqH9qXneOekwkuTmuuMxlcsj1LVqQ8 ty1dW5B0l7ohmrRI5eosGtfllHLVbMwaAsmcZ6zST3ItlTXq2aWdesrusMsmIz+g8aBmsOXZ P+PGgZEDwlL+zk+qukj9Pp+7jasgQgUlLrmkgdzSnGQqANL4wR0vehrW1g5dSJodTgqf0o3s ntiwyfjVnto3KWnOvr7psf6CyAkfn3rOnv+mcJS+k3H9dmFpRXBTUevWf3eltp3/M4P3HS22 bl7gyZ+8TTjTDaX+Bz+37G9LO3bA3HvviNxUFl+aerNignlW1D45Y30kTA+Y/Y7tXw9uo48u KRMol01K/oZUXNJ/D9eWAvsDAAA= Sender: linux-leds-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-leds@vger.kernel.org SGVsbG8gSmFjZWssDQoNCk9uIFdlZCwgMjAxOS0xMC0yMyBhdCAyMzo1OSArMDIwMCwgSmFjZWsg QW5hc3pld3NraSB3cm90ZToNCj4gT24gMTAvMjMvMTkgMTA6MzcgQU0sIFZhaXR0aW5lbiwgTWF0 dGkgd3JvdGU6DQo+ID4gT24gVHVlLCAyMDE5LTEwLTIyIGF0IDE5OjQwICswMjAwLCBKYWNlayBB bmFzemV3c2tpIHdyb3RlOg0KPiA+ID4gT24gMTAvMjIvMTkgMjo0MCBQTSwgVmFpdHRpbmVuLCBN YXR0aSB3cm90ZToNCj4gPiA+ID4gT24gTW9uLCAyMDE5LTEwLTIxIGF0IDIxOjA5ICswMjAwLCBK YWNlayBBbmFzemV3c2tpIHdyb3RlOg0KPiA+ID4gPiA+IE9uIDEwLzIxLzE5IDEwOjAwIEFNLCBW YWl0dGluZW4sIE1hdHRpIHdyb3RlOg0KPiA+ID4gPiA+ID4gSGVsbG8gRGFuLA0KPiA+ID4gPiA+ ID4gDQo+ID4gPiA+ID4gPiBUaGFua3MgZm9yIHRha2luZyB0aGUgdGltZSB0byBjaGVjayBteSBk cml2ZXIgOikgSSB0cnVseQ0KPiA+ID4gPiA+ID4gYXBwcmVjaWF0ZQ0KPiA+ID4gPiA+ID4gYWxs DQo+ID4gPiA+ID4gPiB0aGUgaGVscCENCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gQSAiZnVu ZGFtZW50YWwgcXVlc3Rpb24iIHJlZ2FyZGluZyB0aGVzZSByZXZpZXcgY29tbWVudHMgaXMNCj4g PiA+ID4gPiA+IHdoZXRoZXINCj4gPiA+ID4gPiA+IEkNCj4gPiA+ID4gPiA+IHNob3VsZCBhZGQg RFQgZW50cmllcyBmb3IgdGhlc2UgTEVEcyBvciBub3QuIEkgdGhvdWdodCBJDQo+ID4gPiA+ID4g PiBzaG91bGRuJ3QNCj4gPiA+ID4gPiA+IGJ1dA0KPiA+ID4gPiA+ID4gSSB3b3VsZCBsaWtlIHRv IGdldCBhIGNvbW1lbnQgZnJvbSBSb2IgcmVnYXJkaW5nIGl0Lg0KPiA+ID4gPiA+IA0KPiA+ID4g PiA+IElmIHRoZSBMRUQgY29udHJvbGxlciBpcyBhIHBhcnQgb2YgTUZEIGRldmljZSBwcm9iZWQg ZnJvbSBEVA0KPiA+ID4gPiA+IHRoZW4NCj4gPiA+ID4gPiB0aGVyZSBpcyBubyBkb3VidCBpdCBz aG91bGQgaGF2ZSBjb3JyZXNwb25kaW5nIERUIHN1Yi1ub2RlLg0KPiA+ID4gPiANCj4gPiA+ID4g U29ycnkgYnV0IEkgc3RpbGwgc2VlIG5vIG11Y2ggYmVuZWZpdCBmcm9tIGFkZGluZyB0aGlzDQo+ ID4gPiA+IGluZm9ybWF0aW9uDQo+ID4gPiA+IGluDQo+ID4gPiA+IERULiBXaHkgc2hvdWxkIGl0 IGhhdmUgY29ycmVzcG9uZGluZyBEVC1ub2RlIGlmIHRoZSBMRUQNCj4gPiA+ID4gcHJvcGVydGll cw0KPiA+ID4gPiBhcmUNCj4gPiA+ID4gZml4ZWQgYW5kIGlmIHdlIG9ubHkgd2lzaCB0byBhbGxv dyB1c2VyLXNwYWNlIGNvbnRyb2wgYW5kIGhhdmUNCj4gPiA+ID4gbm8NCj4gPiA+ID4gZGVwZW5k ZW5jaWVzIHRvIG90aGVyIGRldmljZXMgaW4gRFQ/IA0KPiA+ID4gPiANCj4gPiA+ID4gSW4gdGhp cyBzcGVjaWZpYyBjYXNlIHRoZSBpbmZvcm1hdGlvbiB3ZSBjYW4gcHJvdmlkZSBmcm9tIERUIGlz DQo+ID4gPiA+IHN1cHBvc2VkIHRvIGJlIGZpeGVkLiBObyBib2FyZCBiYXNlZCB2YXJpYXRpb24u IEZ1cnRoZXJtb3JlLA0KPiA+ID4gPiB0aGVyZQ0KPiA+ID4gPiBpcw0KPiA+ID4gPiBub3QgbXVj aCBnZW5lcmljIGRyaXZlci9sZWQgY29yZSBmdW5jdGlvbmFsaXR5IHdoaWNoIHdvdWxkIGJlDQo+ ID4gPiA+IGFibGUNCj4gPiA+ID4gdG8NCj4gPiA+ID4gcGFyc2UgYW5kIHV0aWxpemUgcmVsZXZh bnQgaW5mb3JtYXRpb24gZnJvbSBEVC4gSSB0aGluayB3ZSBjYW4NCj4gPiA+ID4gb25seQ0KPiA+ ID4gPiBnaXZlIHRoZSBuYW1lIChmdW5jdGlvbikgYW5kIGNvbG91ci4gQW5kIHRoZXkgYXJlIHN1 cHBvc2VkIHRvDQo+ID4gPiA+IGJlDQo+ID4gPiA+IGZpeGVkDQo+ID4gPiA+IGFuZCB0aHVzIGNv dWxkIGJlIGp1c3QgaGFyZC1jb2RlZCBpbiBkcml2ZXIuIEhhcmQtY29kaW5nIHRoZXNlDQo+ID4g PiA+IHdvdWxkIGJlDQo+ID4gPiA+IHNpbXBsZXIgYW5kIGxlc3MgZXJyb3IgcHJvbmUgZm9yIHVz ZXJzIChubyBEVCBiaW5kaW5ncyB0bw0KPiA+ID4gPiB3cml0ZSkNCj4gPiA+ID4gYW5kDQo+ID4g PiA+IHNpbXBsZXIgdG8gY3JlYXRlIGFuZCBwcm9iYWJseSBhbHNvIHRvIG1haW50YWluIChubyBz ZXBhcmF0ZQ0KPiA+ID4gPiBiaW5kaW5nDQo+ID4gPiA+IGRvY3VtZW50cyBuZWVkZWQgZm9yIExF RHMpLg0KPiA+ID4gDQo+ID4gPiBBRkFJQ1MgaXQgaXMgcG9zc2libGUgdG8gY29ubmVjdCBMRUQg b2YgYXJiaXRyYXJ5IGNvbG9yIHRvIHRoZQ0KPiA+ID4gaW91dHMNCj4gPiA+IG9mIHRoaXMgZGV2 aWNlLiBJZiB0aGlzIGlzIHRoZSBjYXNlIHRoZW4gaXQgaXMganVzdGlmaWVkIHRvIGhhdmUNCj4g PiA+IERUDQo+ID4gPiBub2RlIG9ubHkgdG8gYWxsb3cgZm9yIExFRCBuYW1lIGN1c3RvbWl6YXRp b24uDQo+ID4gDQo+ID4gSW4gdGhlb3J5LCB5ZXMuIEluIHByYWN0aWNlIChpZiBJIHVuZGVyc3Rh bmQgaXQgY29ycmVjdGx5KSB0aGUNCj4gPiBjb2xvciBpbg0KPiA+IHRoaXMgY2FzZSBpcyBvbmx5 IHZpc2libGUgaW4gc3lzZnMgcGF0aCBuYW1lLiBJIGFtIG5vdCBhdCBhbGwgc3VyZQ0KPiA+IHRo YXQNCj4gPiByZWZsZWN0aW5nIHRoZSAodW5saWtlbHkpIGNvbG9yIGNoYW5nZSBpbiBwYXRoIG5h bWUgaXMgd29ydGggdGhlDQo+ID4gaGFzc2xlLiBCZXNpZGVzIC0gaWYgdGhpcyBoYXBwZW5zLCB0 aGVuIHRoZSBkcml2ZXIgYW5kIERUIGNhbiBiZQ0KPiA+IGNoYW5nZWQuDQo+IA0KPiBEcml2ZXIg c2hvdWxkIG5vdCBiZSBjaGFuZ2VkLiBXZSBoYXZlIERUIGZvciBjb252ZXlpbmcgYm9hcmQgc3Bl Y2lmaWMNCj4gcGFyYW1ldGVycy4NCg0KRHJpdmVyIG5lZWRzIHRvIGJlIGNoYW5nZWQgaWYgd2Ug YWRkIG5ldyBmZWF0dXJlIHRvIGl0LiBJdCBpcyB3YXN0ZSB0bw0KZGV2ZWxvcCBmZWF0dXJlcyB0 aGF0IGFyZSBuZXZlciBuZWVkZWQuIERUIHN1cHBvcnQgaGVyZSBtYXkgYmUgc3VjaC4gU28NCkkn ZCBzdWdnZXN0IHdlIGFkZCBEVCBzdXBwb3J0IGxhdGVyIGlmIGl0IGlzIG5lZWRlZC4NCg0KPiA+ IEl0IGlzIGVhc2llciB0byBhZGQgRFQgZW50cmllcyB0aGFuIHJlbW92ZSB0aGVtLiBJZiB5b3Ug c2VlDQo+ID4gdGhlIGNvbG9yIGNoYW5nZSBzdXBwb3J0IGFzIHJlYWxseSBjcnVjaWFsIC0gdGhl biBJIGNvdWxkIGV2ZW4NCj4gPiBjb25zaWRlcg0KPiA+IGRlZmF1bHRpbmcgdGhlIGNvbG91cnMg dG8gYW1iZXIgYW5kIGdyZWVuIGlmIG5vIGNvbG91ciBwcm9wZXJ0eSBpcw0KPiA+IHByZXNlbnQg aW4gRFQuDQo+IA0KPiBZb3UgZG9uJ3QgbmVlZCB0byBkZWZhdWx0IHRvIGFueXRoaW5nLiBUaGUg Y29sb3Igc2VjdGlvbiB3aWxsIGJlIGxlZnQNCj4gZW1wdHkgaWYgdGhlIHByb3BlcnR5IGlzIG5v dCBwcm92aWRlZC4NCg0KVGhhbmtzIGZvciB0aGlzIGluZm8gOikgSXQgbWFrZXMgc2Vuc2UuDQoN CkFuZCBubyBuZWVkIHRvIGV4cGxhaW4gbWUgdGhpcyBpZiB5b3UgYXJlIGJ1c3kgLSBidXQgSSBk b24ndCByZWFsbHkgc2VlDQp3aHkgd2UgaGF2ZSBsZWQgY29sb3VyIGluIHN5c2ZzIHBhdGg/IEkg YWRtaXQgSSBhbSBub3QgdG9vIGRlZXAgaW4gdGhlDQp3b3JsZCBvZiBMRURzIChzbyBJIGFtIHN1 cmUgdGhlcmUgaXMganVzdCBzb21ldGhpbmcgSSBoYXZlbid0IGJlZW4gDQp0aGlua2luZyBhYm91 dCkgYnV0IGl0IGludHVpdGl2ZWx5IGZlZWxzIHRlcnJpYmx5IHdyb25nLiBJZiBJIHdhcw0Kd3Jp dGluZyBhcHBsaWNhdGlvbiB0byBjb250cm9sIC0gbGV0J3Mgc2F5IGEgY2hhcmdlciBMRUQgLSBJ IHdvdWxkDQpkZWZpbml0ZWx5IHByZWZlciB0byBhbHdheXMgaGF2ZSB0aGUgY2hhcmdlciBsZWQg Y29udHJvbCBpbiBzYW1lIHN5c2ZzDQpwYXRoIC0gbm8gbWF0dGVyIHdoYXQgdGhlIGNvbG9yIGlz LiBJZiBteSBhcHBsaWNhdGlvbiB3YXMgaW50ZXJlc3RlZCBpbg0Ka25vd2luZyB0aGUgY29sb3Vy LCB0aGVuIEkgaG9wZWQgdG8gYmUgYWJsZSB0byByZWFkIC8gY2hhbmdlIGl0IHZpYQ0KZmlsZSAi Y29sb3VyIiB3aGljaCByZXNpZGVzIGluIHRoZSBjaGFyZ2VyIHN5c2ZzIHBhdGguIChBbmQgeWVz LCBpZiBJDQpoYWQgYnVuY2ggb2YgUkdCIGxlZHMsIEkgd291bGQgX2RlZmluaXRlbHlfIHdhbnQg dG8gY2hhbmdlIHRoZQ0KJ2Fic3RyYWN0JyBjb2xvciAtIG5vdCBicmlnaHRuZXMgb2YgcmVkLCBn cmVlbiBhbmQgYmx1ZSBMRURzKS4gQnV0IGFsbA0KdGhpcyBpcyBvZmYtdG9waWMgYW5kIG5vdCBy ZWxhdGVkIHRvIHRoaXMgZGlzY3Vzc2lvbiAtIEkgd2FzIGp1c3QNCmN1cmlvdXMgYXMgbXkgbGlt aXRlZCBicmFpbnMgZG9uJ3Qgc2VlIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgOikNCg0KPiA+ IEkgc2VlIG5vIHBvaW50IGluIF9yZXF1aXJpbmdfIHRoZSBEVCBlbnRyeSB0byBiZSB0aGVyZS4N Cj4gDQo+IEknbSByZWZlcnJpbmcgdG8gdGhpcyBsYXRlciBpbiB0aGlzIG1lc3NhZ2UuDQo+IA0K PiA+IElmIHdlIGxpa2UgYmVpbmcgcHJlcGFyZWQgZm9yIHRoZSB0aGVvcmV0aWNhbCBwb3NzaWJp bGl0aWVzIC0gd2hhdA0KPiA+IGlmDQo+ID4geDg2IGlzIHVzZWQgdG8gY29udHJvbCB0aGlzIFBN SUM/IEkgZ3Vlc3Mgd2Ugd291bGRuJ3QgaGF2ZSBEVCB0aGVyZQ0KPiA+IHRoZW4gKEFuZCBubyAt IEkgZG9uJ3Qgc2VlIHN1Y2ggdXNlLWNhc2UpLg0KPiANCj4gV2UgaGF2ZSBmd25vZGUgYWJzdHJh Y3Rpb24gZm9yIHRoYXQuIFlvdSBjYW4gYWxzbyBjaGVjazoNCj4gRG9jdW1lbnRhdGlvbi9maXJt d2FyZS1ndWlkZS9hY3BpL2RzZC9sZWRzLnJzdC4NCj4gDQo+ID4gPiA+IEJ1dCBhc3N1bWluZyB0 aGlzIGlzIE9rIHRvIERULWZvbGtzIGFuZCBpZiB5b3UgaW5zaXN0IC0gSSB3aWxsDQo+ID4gPiA+ IGFkZA0KPiA+ID4gPiBMRUQNCj4gPiA+ID4gaW5mb3JtYXRpb24gdG8gRFQgZm9yIHRoZSBuZXh0 IHBhdGNoZXMuIEhvcGVmdWxseSB0aGlzIGV4dHJhDQo+ID4gPiA+IGNvbXBsZXhpdHkNCj4gPiA+ ID4gaGVscHMgaW4gc29tZSBvZGRiYWxsIHVzZS1jYXNlIHdoaWNoIEkgY2FuJ3QgZm9yZXNlZSA9 KQ0KPiA+ID4gPiANCj4gPiA+ID4gVGhlbiB3aGF0IGNvbWVzIHRvIHRoZSBEVCBmb3JtYXQuDQo+ ID4gPiA+IA0KPiA+ID4gPiBEbyB5b3UgdGhpbmsgTEVEIHN1YnN5c3RlbSBzaG91bGQgdHJ5IHRv IGZvbGxvdyB0aGUgY29udmVudGlvbg0KPiA+ID4gPiB3aXRoDQo+ID4gPiA+IG90aGVyIHN1Yi1z eXN0ZW1zIGFuZCBub3QgaW50cm9kdWNlIG11bHRpcGxlIGNvbXBhdGlibGVzIGZvcg0KPiA+ID4g PiBzaW5nbGUNCj4gPiA+ID4gZGV2aWNlPyBNRkQgY2FuIGhhbmRsZSBpbnN0YW50aWF0aW5nIHRo ZSBzdWItZGV2aWNlcyBqdXN0IGZpbmUNCj4gPiA+ID4gZXZlbg0KPiA+ID4gPiB3aGVuIHN1Yi1k ZXZpY2VzIGhhdmUgbm8gb3duIGNvbXBhdGlibGUgcHJvcGVydHkgb3Igb2ZfbWF0Y2guDQo+ID4g PiA+IE1heWJlDQo+ID4gPiA+IHdlDQo+ID4gPiA+IHNob3VsZCBhbHNvIGF2b2lkIHVubmVjZXNz YXJ5IHN1Yi1ub2RlcyB3aGVuIHRoZXkgYXJlIG5vdA0KPiA+ID4gPiByZWFsbHkNCj4gPiA+ID4g cmVxdWlyZWQuDQo+ID4gPiANCj4gPiA+IFRoaXMgaXMgYmV5b25kIG15IHNjb3BlIG9mIHJlc3Bv bnNpYmlsaXR5LiBJdCBpcyBNRkQgc3Vic3lzdGVtDQo+ID4gPiB0aGluZw0KPiA+ID4gdG8NCj4g PiA+IGNob29zZSB0aGUgd2F5IG9mIExFRCBjbGFzcyBkcml2ZXIgaW5zdGFudGlhdGlvbi4gV2hl biBpdCBjb21lcw0KPiA+ID4gdG8NCj4gPiA+IExFRCBzdWJzeXN0ZW0gLSBpdCBleHBlY3RzIHNp bmdsZSBjb21wYXRpYmxlIHBlcnRhaW5pbmcgdG8gYQ0KPiA+ID4gcGh5c2ljYWwNCj4gPiA+IGRl dmljZS4NCj4gPiANCj4gPiBTb3JyeSBidXQgSSBkb24ndCBxdWl0ZSBmb2xsb3cuIFdoYXQgdGhl IExFRCBzdWJzeXN0ZW0gZG9lcyB3aXRoDQo+ID4gdGhlDQo+ID4gY29tcGF0aWJsZSBwcm9wZXJ0 eT8gSG93IGRvZXMgaXQgZXhwZWN0IHRoaXM/DQo+IA0KPiBJbiBjYXNlIG9mIERUIGJhc2VkIE1G RCBjZWxsIHByb2JpbmcgeW91IG11c3QgaW5pdGlhbGl6ZQ0KPiBvZl9jb21wYXRpYmxlDQo+IHBy b3BlcnR5IG9mIHN0cnVjdCBtZmRfY2VsbCBlbGVtZW50IHdoaWNoIHdpbGwgdGhlbiBiZSBtYXRj aGVkDQo+IHdpdGggc3RydWN0IHBsYXRmb3JtX2RyaXZlciAtPiBkcml2ZXIgLT4gb2ZfbWF0Y2hf dGFibGUgaW4gdGhlIExFRA0KPiBjbGFzcyBkcml2ZXIuIEJhc2luZyBvbiB0aGF0IGEgcmVsZXZh bnQgcGxhdGZvcm1fZGV2aWNlIGlzIHBhc3NlZA0KPiB0byB0aGUgcHJvYmUgZnVuY3Rpb24uIEl0 cyBjaGlsZCBzdHJ1Y3QgZGV2aWNlJ3Mgb2Zfbm9kZSBwcm9wZXJ0eQ0KPiBjb21lcw0KPiBhbHJl YWR5IGluaXRpYWxpemVkIHRvIHRoZSBwb2ludGVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIGNoaWxk IG5vZGUNCj4gaW4gTUZEIG5vZGUuDQoNCkkga25vdy4gSSBkaWQgdGhpcyBhdCBmaXJzdCB3aXRo IHRoZSBCRDcxODM3IC0gYW5kIEkgd2FzIHRvbGQgdG8gbm90IGRvDQp0aGF0LiBUaGUgZGlmZmVy ZW5jZSB3aGVuIHdlIGRvbid0IHVzZSBvZl9jb21wYXRpYmxlIGlzIHRoYXQgdGhlDQpvZl9ub2Rl IHBvaW50ZXIgaW4gc3ViLWRldmljZSAoTEVEcykgaXMgbm90IHBvcHVsYXRlZC4gQnV0IHdoZW4g d2UgaGF2ZQ0KcHVyZSBNRkQgc3ViLWRldmljZSAobGlrZSBMRURzIG9uIEJENzE4MjgpLCB0aGUg c3ViLWRldmljZSBrbm93cyBpdCBpcw0KaW5zdGFudGlhdGVkIGJ5IE1GRCAocGFyZW50KSBhbmQg aXQgY2FuIGdldCB0aGUgcmVsZXZhbnQgRFQgZGF0YSBmcm9tDQpwYXJlbnQncyBvZl9ub2RlIC0g d2hpY2gga2luZCBvZiBtYWtlcyBzZW5zZSBhcyB0aGVyZSByZWFsbHkgaXMgb25seQ0Kb25lIHBo eXNpY2FsIGRldmljZSAodGhlIE1GRCkuIEJ1dCBJIHNlZSB5b3UgbGlrZSB0byBnZXQgb3Bpbmlv biBmcm9tDQpMZWUgYW5kL29yIFJvYiAtIGxldCdzIGhvcGUgdGhleSBoZWxwIHVzIHRvIGFsaWdu IG91ciB2aWV3cy4gKEl0IGlzDQphbHNvIGRlZmluaXRlbHkgYSBnb29kIGlkZWEgdG8gY29ycmVj dCBteSB1bmRlcnN0YW5kaW5nIGlmIEkgaGF2ZQ0KbWlzdW5kZXJzdG9vZCB0aGlzISkNCg0KPiA+ ID4gTm9uZXRoZWxlc3MsIHNvIGZhciB3ZSB1c2VkIHRvIGhhdmUgc2VwYXJhdGUgY29tcGF0aWJs ZXMgZm9yDQo+ID4gPiBkcml2ZXJzDQo+ID4gPiBvZg0KPiA+ID4gTUZEIGRldmljZXMnIExFRCBj ZWxscy4gSWYgd2UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGF0IEknZCBsaWtlDQo+ID4gPiB0bw0K PiA+ID4gc2VlDQo+ID4gPiBleHBsaWNpdCBEVCBtYWludGFpbmVyJ3Mgc3RhdGVtZW50IGNvbmZp cm1pbmcgdGhhdC4NCj4gPiANCj4gPiBJIGRvbid0IGV4cGVjdCB0aGF0IGV4aXN0aW5nIERUcyB3 b3VsZCBiZSBjaGFuZ2VkLiANCj4gDQo+IEkgZGlkbid0IHN1Z2dlc3QgdGhhdC4NCj4gDQo+ID4g QnV0IGFzIEkgc2FpZCwgdGhlDQo+ID4gY29uc2Vuc3VzIGFtb25nc3QgbW9zdCBvZiB0aGUgc3Vi c3lzdGVubSBtYWludGFpbmVycyBhbmQgRFQNCj4gPiBtYWludGFpbmVycw0KPiA+IHNlZW1zIHRv IGJlIHRoYXQgc3ViLWRldmljZXMgc2hvdWxkIG5vdCBoYXZlIG93biBjb21wYXRpYmxlcy4gSQ0K PiA+IGhvcGUNCj4gPiBSb2IgYWNrcyB0aGlzIGhlcmUgLSBidXQga25vd2luZyBoZSBpcyBhIGJ1 c3kgZ3V5IEkgYWRkIHNvbWUgb2xkDQo+ID4gZGlzY3Vzc2lvbnMgZnJvbSB3aGljaCBJIGhhdmUg Z2F0aGVyZWQgbXkgdW5kZXJzdGFuZGluZzoNCj4gPiANCj4gPiBCRDcxODM3IC0gZmlyc3QgcGF0 Y2ggd2hlcmUgcmVndWxhdG9ycyBoYWQgY29tcGF0aWJsZSAtIE1hcmsNCj4gPiAocmVndWxhdG9y DQo+ID4gbWFpbnRhaW5lciBpbnN0cnVjdGVkIG1lIHRvIGRyb3AgaXQpOg0KPiA+IGh0dHBzOi8v bG9yZS5rZXJuZWwub3JnL2xpbnV4LWNsay8yMDE4MDUyNDE0MDExOC5HUzQ4MjhAc2lyZW5hLm9y Zy51ay8NCj4gPiANCj4gPiBBbmQgaGVyZSBTdGVwaGVuICh0aGUgY2xrIHN1YnN5c3RlbSBtYWlu dGFpbmVyKSB0b2xkIG1lIHRvIGRyb3ANCj4gPiB3aG9sZQ0KPiA+IGNsb2NrcyBzdWItbm9kZSAo aW5jbHVkaW5nIHRoZSBjb21wYXRpYmxlKToNCj4gPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9s aW51eC1jbGsvMTUyNzc3ODY3MzkyLjE0NDAzOC4xODE4ODQ1MjM4OTk3MjgzNDY4OUBzd2JveWQu bXR2LmNvcnAuZ29vZ2xlLmNvbS8NCj4gDQo+IFN0aWxsLCB0aGVyZSBhcmUgTUZEIGRyaXZlcnMg dXNpbmcgb2ZfY29tcGF0aWJsZSBmb3IgbWF0Y2hpbmcgY2VsbA0KPiBkcml2ZXJzLiBJIGRvbid0 IGZvbGxvdyBjdXJyZW50IHRyZW5kcyBvbiBNRkQgc3Vic3lzdGVtIHNpZGUuDQo+IFlvdSd2ZSBn b3QgdG8gd2FpdCBmb3IgcmV2aWV3IGZlZWRiYWNrIGZyb20gTGVlIEpvbmVzIGFueXdheQ0KPiB0 byBmaW5kIG91dCBob3cgdG8gcHJvY2VlZCB3aXRoIE1GRCBiaW5kaW5ncy4NCg0KU3VyZS4gQW5k IGFzIHRoZSBzdWJqZWN0IHN0YXRlcywgdGhpcyB3aG9sZSBzZXJpZXMgaXMgc3RpbGwgUkZDLiBJ IGFtDQpub3QgZXhwZWN0aW5nIHRoZSByZWd1bGF0b3IgcnVuLWxldmVsIGNvbnRyb2wgdG8gYmUg YWNjZXB0ZWQgYXMgc3VjaCAtDQpJIGFtIGhvcGluZyB0byBnZXQgYSBwdXNoIHRvIHJpZ2h0IGRp cmVjdGlvbiAtIGFsdGhvdWdoIHRoZSBiYXNpYw0KcmVndWxhdG9yIGNvbnRyb2wgbWlnaHQgZ28g aW4gd2l0aG91dCBiaWcgY2hhbmdlcy4gU28gbXkgY2FzZSBkb2VzIG5vdA0KcmVxdWlyZSBzdXBl ciBmYXN0IGRlY2lzaW9uIC0gYnV0IEkgdGhpbmsgdGhhdCBpZiB0aGUgZ2VuZXJhbCBkaXJlY3Rp b24NCnNob3VsZCBiZSBtb3JlIHRvd2FyZHMgZHJvcHBpbmcgb3duIGNvbXBhdGlibGVzIGZyb20g TUZEIHN1Yi1kZXZpY2VzLA0KdGhlbiBpdCBtaWdodCBiZSBnb29kIGlkZWEgdG8gZ2V0IHRoaXMg c29ydGVkIHNvb25lciB0aGFuIGxhdGVyIDopDQoNCj4gPiA+IEFuZCBvbmUgYmVuZWZpdCBvZiBo YXZpbmcgc2VwYXJhdGUgbm9kZXMgcGVyIE1GRCBjZWxscyBpcyB0aGF0IHdlDQo+ID4gPiBjYW4N Cj4gPiA+IGVhc2lseSBkaXNjZXJuIHRoZSBzdXBwb3J0IGZvciB3aGljaCBjZWxscyBpcyB0byBi ZSB0dXJuZWQgb24uDQo+ID4gDQo+ID4gV2UgZG9uJ3Qgd2FudCB0byBkbyBEVCBtb2RpZmljYXRp b25zIHRvIGRyb3Agc29tZSBzdWItZGV2aWNlDQo+ID4gc3VwcG9ydA0KPiA+IG91dC4gVGhlIERU IGlzIEhXIGRlc2NyaXB0aW9uIGFuZCBzdWItYmxvY2tzIGFyZSBzdGlsbCB0aGVyZS4gV2UNCj4g PiBkcm9wDQo+ID4gdGhlIHN1cHBvcnQgYnkgS0NvbmZpZy4gDQo+IA0KPiBIb3cgd291bGQgeW91 IGRlc2NyaWJlIHRoZSBwdXJwb3NlIG9mICdzdGF0dXMgPSAiZGlzYWJsZWQiJyBEVA0KPiBhc3Np Z25tZW50IHRoZW4/DQo+IA0KPiBBbnl3YXksIEkgZW50aXJlbHkgZGlzYWdyZWUgaGVyZSAtIGl0 IGlzIHBlcmZlY3RseSBwcm9wZXIgYXBwcm9hY2gNCj4gdG8gZGVmaW5lIHBsYXRmb3JtIGNhcGFi aWxpdGllcyBieSBtb2RpZnlpbmcgZHRzIGZpbGUgYWxvbmUuDQo+IFRoaXMgd2F5IHlvdSBjYW4g ZWFzaWx5IGNyZWF0ZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBwbGF0Zm9ybQ0KPiBjb25maWd1cmF0 aW9ucy4gSXQgbWF5IGJlIG9mdGVuIGltcHJhY3RpY2FsIHRvIGVuYWJsZSBhbGwgYXZhaWxhYmxl DQo+IHBsYXRmb3JtIGZlYXR1cmVzLCBhdCBsZWFzdCBmcm9tIGJ1c2luZXNzIHBvaW50IG9mIHZp ZXcuIEFuZA0KPiByZWNvbXBpbGluZw0KPiBkdHMgaXMgbGlnaHR3ZWlnaHQgb3BlcmF0aW9uIGlu IGNvbXBhcmlzb24gdG8ga2VybmVsIGNvbXBpbGF0aW9uLg0KDQpJIGd1ZXNzIHdlIGhhdmUgZGlm ZmVyZW50IGJhY2tncm91bmRzIGhlcmUgPSkgRm9yIHF1aXRlIGEgbG9uZyB0aW1lIEkNCndhcyB3 b3JraW5nIHdpdGggZGV2aWNlcyB0aGF0IGhhZCByZWFsbHkgbG9uZyBsaWZlLXNwYW4uIFRoZXkg cmVjZWl2ZWQNCm11bHRpcGxlIFNXIHVwZGF0ZXMgLSBidXQgY2hhbmdpbmcgYSBEVCB3YXMgcmFy ZS4gRm9yIHNvbWUgb2YgdGhlDQpwcm9kdWN0cyBEVCBjaGFuZ2VzIHdlcmUgaW1wb3NzaWJsZSBh ZnRlciB0aGUgcHJvZHVjdCB3YXMgb3V0IG9mIHRoZQ0KZmFjdG9yeS4gRm9yIHNvbWUgb2YgdGhl IHByb2R1Y3RzIERUIGNoYW5nZXMgd2VyZSBwb3NzaWJsZSAtIGJ1dCByYXJlIC0NCmFuZCBkdXJp bmcgdGhlIHVwZGF0ZSB0aGUgc3lzdGVtIG9mdGVuIGJvb3RlZCB1cCBpbiBhIHN0YXRlIHdoZXJl IGl0DQpoYWQgZWl0aGVyIG5ldyBTVyBidXQgb2xkIERULiBJbiBTVyBmYWxsLWJhY2sgc2NlbmFy aW9zIHN5c3RlbSBvZnRlbg0KaGFkIG9sZCBTVyBhbmQgbmV3IERULiBBbmQgYXQgdGltZXMgdGhl cmUgd2VyZSBzeXN0ZW1zIHJ1bm5pbmcgbmV3IFNXDQpidXQgeWVhcnMgb2xkIERUIC0gZXNwZWNp YWxseSBmb3IgdGhvc2Ugc3lzdGVtcyB3aGVyZSBEVCB3YXMgbm90DQp1cGRhdGVkIGFmdGVyIHRo ZSBwcm9kdWN0IGxlZnQgZmFjdG9yeS4uLg0KDQpJbiB0aGF0IGVudmlyb25tZW50IGFsbCB0aGUg RFQgdXBkYXRlcyB3ZXJlIGEgbmlnaHRtYXJlLg0KDQo+IE5vdCBzYXlpbmcgdGhhdCBpbiBzb21l IGNhc2VzIHRoZXJlIGFyZSBzZWNyZXQga2V5cyByZXF1aXJlZCBmb3INCj4gZW5jcnlwdGluZyBr ZXJuZWwgaW1hZ2VzLCB0aGF0IG1heSBub3QgYWx3YXlzIGJlIGF0IGhhbmQuDQo+IA0KPiA+IE9u bHkgJ2NvbmZpZ3VyYXRpb24nIHdlIGNvdWxkIGJyaW5nIGZyb20gRFQgaXMNCj4gPiB0aGUgYW1v dW50IG9mIGNvbm5lY3RlZCBMRURzIChhcyB5b3Ugc2FpZCkuIEJ1dCBvbiB0aGUgb3RoZXIgaGFu ZCAtDQo+ID4gd2hldGhlciBwcmVwYXJpbmcgZm9yIHN1Y2ggdW5saWtlbHkgZGVzaWduIGlzIHJl YXNvbmFibGUgKG9yDQo+ID4gbmVlZGVkKSBpcw0KPiA+IHF1ZXN0aW9uYWJsZS4NCj4gDQo+IExF RCBuYW1pbmcgcmVsYXRlZCBkYXRhIGlzIHZpdGFsIGFzIHdlbGwuDQoNClN1cmUuIEJ1dCBJIGRv bid0IHRoaW5rIHRoZSBMRUQgbmFtZXMgbmVlZCB0byBiZSBjaGFuZ2VkLiBPbiB0aGUNCmNvbnRy YXJ5IC0gSSBleHBlY3QgdGhlIHVzZXItc3BhY2UgdG8gaG9wZSB0aGUgbmFtZXMgc3RheSBjb25z dGFudC4NCk1heWJlIEkganVzdCBkb24ndCB1bmRlcnN0YW5kIHNvbWV0aGluZyBoZXJlIDopDQoN Cj4gPiA+ID4gCXBtaWM6IHBtaWNANGIgew0KPiA+ID4gPiAJCWNvbXBhdGlibGUgPSAicm9obSxi ZDcxODI4IjsNCj4gPiA+ID4gCQlyZWcgPSA8MHg0Yj47DQo+ID4gPiA+IAkJaW50ZXJydXB0LXBh cmVudCA9IDwmZ3BpbzE+Ow0KPiA+ID4gPiAJCWludGVycnVwdHMgPSA8MjkgR1BJT19BQ1RJVkVf TE9XPjsNCj4gPiA+ID4gCQljbG9ja3MgPSA8Jm9zYyAwPjsNCj4gPiA+ID4gCQkjY2xvY2stY2Vs bHMgPSA8MD47DQo+ID4gPiA+IAkJY2xvY2stb3V0cHV0LW5hbWVzID0gImJkNzE4MjgtMzJrLW91 dCI7DQo+ID4gPiA+IAkJZ3Bpby1jb250cm9sbGVyOw0KPiA+ID4gPiAJCSNncGlvLWNlbGxzID0g PDI+Ow0KPiA+ID4gPiAJCW5ncGlvcyA9IDw0PjsNCj4gPiA+ID4gCQlncGlvLXJlc2VydmVkLXJh bmdlcyA9IDwwIDEgMiAxPjsNCj4gPiA+ID4gCQlncGlvLWxpbmUtbmFtZXMgPSAiRVBERU4iOw0K PiA+ID4gPiAJCXJvaG0sZHZzLXZzZWwtZ3Bpb3MgPSA8JmdwaW8xIDEyIDA+LA0KPiA+ID4gPiAJ CQkJICAgICAgPCZncGlvMSAxMyAwPjsNCj4gPiA+ID4gCQlyZWd1bGF0b3JzIHsNCj4gPiA+ID4g CQkJLi4uDQo+ID4gPiA+IAkJfTsNCj4gPiA+ID4gCQkNCj4gPiA+ID4gCQljaGctbGVkIHsNCj4g PiA+ID4gCQkJZnVuY3Rpb24gPSBMRURfRlVOQ1RJT05fQ0hBUkdJTkc7DQo+ID4gPiA+IAkJCWNv bG9yID0gTEVEX0NPTE9SX0lEX0FNQkVSOw0KPiA+ID4gPiAJCX07DQo+ID4gPiA+IA0KPiA+ID4g PiAJCXB3ci1sZWQgew0KPiA+ID4gPiAJCQlmdW5jdGlvbiA9IExFRF9GVU5DVElPTl9QT1dFUjsN Cj4gPiA+ID4gCQkJY29sb3IgPSBMRURfQ09MT1JfSURfR1JFRU47DQo+ID4gPiA+IAkJfTsNCj4g PiA+IA0KPiA+ID4gVGhpcyB3YXkgeW91IHdvdWxkIHByb2JhYmx5IG5lZWQgdG8gcHJvYmUgTEVE IGNsYXNzIGRyaXZlciB0d2ljZSwNCj4gPiA+IGluc3RlYWQgb2YgbGV0dGluZyBpdCBiZWhhdmUg aW4gYSBzdGFuZGFyZCB3YXkgYW5kIHBhcnNlIGNoaWxkDQo+ID4gPiBMRUQNCj4gPiA+IG5vZGVz Lg0KPiA+IA0KPiA+IE5vLiBQbGVhc2Ugbm90ZSB0aGF0IHByb2JpbmcgdGhlIE1GRCBzdWItZHJp dmVycyBpcyBfbm90XyBib3VuZCB0bw0KPiA+IGRldmljZS10cmVlIG5vZGVzLiBNRkQgc3ViLWRl dmljZXMgY2FuIGJlIHByb2JlZCBqdXN0IGZpbmUgZXZlbiBpZg0KPiA+IHRoZXkNCj4gPiBoYXZl IG5vIERUIGVudHJpZXMuIFdoZW4gd2UgYWRkIE1GRCBjZWxsIGZvciBMRUQgZHJpdmVyLCB0aGUN Cj4gPiBjb3JyZXNwb25kaW5nIExFRCBkcml2ZXIgaXMgcHJvYmVkLiBObyBEVCBtYWdpYyBuZWVk ZWQgZm9yIHRoaXMuDQo+ID4gDQo+ID4gV2hhdCB0aGUgTEVEIGRyaXZlciAoYXMgb3RoZXIgc3Vi LWRldmljZSBkcml2ZXJzKSBpcyByZXF1aXJlZCB0byBkbw0KPiA+IGlzDQo+ID4gdG8gb2J0YWlu IHRoZSBwb2ludGVyIHRvIHBhcmVudCBkZXZpY2UncyBEVCBub2RlIGFuZCBmaW5kDQo+ID4gaW5m b3JtYXRpb24NCj4gPiB3aGljaCBpcyByZWxldmFudCBmb3IgaXQuIElkZWFsbHksIHRoZSBzdWJz eXN0ZW0gZnJhbWV3b3JrIGNhbg0KPiA+IGV4dHJhY3QNCj4gPiB0aGUgcHJvcGVydGllcyB3aGlj aCBhcmUgY29tbW9uIGZvciB3aG9sZSBzdWJzeXN0ZW0gKGxpa2UgY29sb3IgYW5kDQo+ID4gZnVu Y3Rpb24gaW4gY2FzZSBvZiBMRURzKSBhbmQgZHJpdmVyIG9ubHkgcGFyc2VzIHRoZSBEVCBpZiBp dCBoYXMNCj4gPiBzb21lDQo+ID4gY3VzdG9tIHByb3BlcnRpZXMuIEFnYWluLCBpZGVhbGx5IHRo ZSBkcml2ZXIgaGFzIHNhbmUgZGVmYXVsdHMgLSBvcg0KPiA+IHNvbWUgb3RoZXIgJ3BsYXRmb3Jt IGRhdGEnIG1lY2hhbmlzbSBpZiBubyBEVCBpbmZvcm1hdGlvbiBpcyBmb3VuZC4NCj4gPiBUaGVy ZSBpcyBhcmNoaXRlY3R1cmVzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IERULg0KPiANCj4gTEVEIGNv bW1vbiBiaW5kaW5ncyBkZWZpbmUgdGhhdCBlYWNoIExFRCBzaG91bGQgYmUgZGVzY3JpYmVkDQo+ IHVzaW5nIGNoaWxkIG5vZGUuIEFuZCB3ZSd2ZSBlbmZvcmNlZCBzdGlja2luZyB0byB0aGlzIHN0 YW5kYXJkDQo+IGZvciBsYXN0IHR3byB5ZWFycyBzdHJpY3RseS4NCg0KSSBhbSBub3QgYWdhaW5z dCB0aGF0LiBJZiBEVCBpcyB1c2VkLCB0aGVuIGl0IGlzIGZpbmUgZm9yIG1lIHRvIGhhdmUNCnBy b3BlcnRpZXMgb2Ygb25lIExFRCBpbiBvd24gbm9kZS4gQnV0IEkgZG9uJ3QgdGhpbmsgdGhlIERU IHNob3VsZCBiZQ0KY29tcHVsc29yeSBhdCBhbGwgZm9yIGNhc2VzIHdoZXJlIHRoZSBMRUQgaW5m b3JtYXRpb24gc3RheXMgc3RhdGljLg0KDQo+IExFRCBjb3JlIG1lY2hhbmlzbSBmb3IgTEVEIG5h bWUgY29tcG9zaXRpb24gYWxzbyByZWxpZXMgb24gdGhpcw0KPiBEVCBkZXNpZ24gLSBpdCBleHBl Y3RzIHNpbmdsZSAnY29sb3InIGFuZCAnZnVuY3Rpb24nIHByb3BlcnRpZXMgdG8NCj4gYmUgcHJl c2VudCBpbiB0aGUgcGFzc2VkIGZ3bm9kZS4NCg0KSSBhbSBub3QgYWdhaW5zdCB0aGlzIGVpdGhl ciAtIGFsdGhvdWdoIEkgZG9uJ3QgZnVsbHkgdW5kZXJzdGFuZCB0aGlzDQphcyBJIHNhaWQgYWJv dmUuIEkgYmVsaWV2ZSB0aGF0IHNldCBvZiB3ZWxsIGRlZmluZWQgTEVEIG5hbWVzIGlzIGEgZ29v ZA0KdGhpbmcuIEFuZCBMRUQgQVBJcyBzaG91bGQgaW5kZWVkIGZvcmNlIHRoZSBuYW1lIHRvIGZv bGxvdyBzcGVjaWZpYw0KZm9ybWF0LiBCdXQgSSBkb24ndCB0aGluayB0aGF0IHRoZSBEVCBzaG91 bGQgYmUgb25seSBtZWNoYW5pc20gZm9yDQpicmluZ2luZyB0aGUgZnVuY3Rpb24gYW5kIGNvbG91 ci4gSSB0aGluayB3ZSBzaG91bGQgYWxsb3cgTEVEIG5hbWUNCmNvbXBvc2l0aW9uIGZvciBleGFt cGxlIGJ5IHNwZWNpZnlpbmcgdGhlIGNvbG91ciBhbmQgZnVuY3Rpb24gaW4gTEVEDQpjbGFzcyBy ZWdpc3RyYXRpb24gQVBJIGluIGNhc2VzIHdoZXJlIGZ3bm9kZSBpcyBub3QgbmVlZGVkLg0KDQo+ IExFRCBjbGFzcyByZWdpc3RyYXRpb24gZnVuY3Rpb24gcmVnaXN0ZXJzIHNpbmdsZSBMRUQgYW5k IGl0IGhhcyBiZWVuDQo+IGFsd2F5cyBMRUQgY2xhc3MgZHJpdmVyJ3MgcmVzcG9uc2liaWxpdHkg dG8gY2FsbCBpdCBmb3IgZXZlcnkgTEVEDQo+IGNvbm5lY3RlZCB0byB0aGUgTEVEIGNvbnRyb2xs ZXIgaW91dHMuDQoNClRoaXMgaXMgZmluZSBmb3IgbWUgdG9vIChlc3BlY2lhbGx5IHdoZW4gRFQg aXMgbm90IHVzZWQpLiBBbmQgbXkgZHJpdmVyDQpkcmFmdCBkaWQgdGhpcywgcmlnaHQ/IEJ1dCBJ IHNlZSB0aGF0IGxvdHMgb2YgY29kZSBkdXBsaWNhdGlvbiBpbg0KZHJpdmVycyBjb3VsZCBiZSBh dm9pZGVkIGlmIHRoZSBMRUQgZnJhbWV3b3JrIHByb3ZpZGVkIGZ1bmN0aW9uIHdoaWNoDQpjb3Vs ZCBleHRyYWN0IGFsbCBMRURzIGZyb20gYSAoTUZEKSBkZXZpY2UtdHJlZSBub2RlIGFuZCBkaWQg cmVnaXN0ZXINCm1vcmUgdGhhbiBvbmUgb2YgdGhlbS4gVGhlIHR5cGljYWwgImZvcl9lYWNoX2No aWxkX29mX25vZGUiIGNvdWxkIGJlIGluDQpMRUQgY29yZS4gQnV0IHRoaXMgaXMgY3VycmVudGx5 IHNvbWUgd2hhdCBpcnJlbGV2YW50IC0gbGV0J3MgZmlyc3Qgc2VlDQpob3cgdGhlICJjb21wYXRp YmxlIiBkaXNjdXNzaW9uIGZvciBzdWItZGV2aWNlcyB0dXJucyBvdXQgOykNCg0KPiANCj4gPiBJ biBjYXNlIG9mIEJENzE4MjggTEVEcyBteSBmaXJzdCBpZGVhIHdhcyB0byBnbyB3aXRoIG9ubHkg dGhlICdzYW5lDQo+ID4gZGVmYXVsdHMnIG9wdGlvbiBhcyBJIHNhdyBubyBtdWNoIGNvbmZpZ3Vy YWJpbGl0eS4gVGhlIERUIHNuaXBwZXQNCj4gPiBhYm92ZQ0KPiA+IGNvbnRhaW5zIExFRCBpbmZv cm1hdGlvbiBhcyBwZXIgeW91ciBzdWdnZXN0aW9uLg0KPiA+IA0KPiA+IFdoYXQgdGhlIExFRCBz dWIgZHJpdmVyIGZvciBCRDcxODI4IHdvdWxkIG5vdyBkbyBpcyBjYWxsaW5nIA0KPiA+IGRldm1f bGVkX2NsYXNzZGV2X3JlZ2lzdGVyX2V4dCB3aXRoIHRoZSBEVCBpbmZvcm1hdGlvbiBvZiBCRDcx ODI4DQo+ID4gZGV2aWNlLiBFZywgaXQgc2hvdWxkIHVzZSB0aGUgTUZEIGR0IG5vZGUgKGJlY2F1 c2UgdGhpcyBpcyB0aGUgcmVhbA0KPiA+IGRldmljZSkgYW5kIG5vdCBqdXN0IHBhcnQgb2YgaXQu IGRldm1fbGVkX2NsYXNzZGV2X3JlZ2lzdGVyX2V4dA0KPiA+IHNob3VsZA0KPiA+IHRoZW4gZXh0 cmFjdCB0aGUgTEVEIHNwZWNpZmljIGluZm9ybWF0aW9uLiBJIGhhdmUgbm90IGNoZWNrZWQgdGhl DQo+ID4gaW1wbGVtZW50YXRpb24gb2YgZGV2bV9sZWRfY2xhc3NkZXZfcmVnaXN0ZXJfZXh0IGlu IGRldGFpbHMgLSBidXQNCj4gPiBpdA0KPiA+IHNob3VsZCBpZ25vcmUgbm9uIGxlZCBwcm9wZXJ0 aWVzIGFuZCBqdXN0IHdhbGsgdGhyb3VnaCB0aGUgTEVEDQo+ID4gaW5mb3JtYXRpb24gYW5kIGNy ZWF0ZSB0aGUgc3lzZnMgaW50ZXJmYWNlcyBldGMuIGZvciBhbGwgTEVEcyBpdA0KPiA+IGZpbmRz Lg0KPiANCj4gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCB3b3JrIGxpa2UgdGhhdCwgYXMgZXhwbGFp bmVkIGFib3ZlLg0KPiBQbGVhc2UgZmlyc3QgZ2V0IGFjcXVhaW50ZWQgd2l0aCB0aGUgd2F5IGhv dyBleGlzdGluZyBMRUQgY2xhc3MNCj4gZHJpdmVycw0KPiBhcHByb2FjaCBMRUQgcmVnaXN0cmF0 aW9uLiBCZWNhdXNlIG90aGVyd2lzZSB3ZSdyZSB3YXN0aW5nIGVhY2gNCj4gb3RoZXJzJyB0aW1l Lg0KDQpSaWdodC4gSSBzZWUuIFNvIGVhY2ggTEVEIGRyaXZlciBtdXN0IGZpcnN0IHBhcnNlIHRo ZSBEVCBpbmZvcm1hdGlvbiBpbg0Kb3JkZXIgdG8gZmluZCB0aGUgTEVEIG5vZGUgLSBvciBlYWNo IExFRCBub2RlIG11c3QgYmUgaWRlbnRpZmllZCBieQ0Kd2hhdC1ldmVyIG1lY2hhbmlzbSBpcyBp bnZva2luZyB0aGUgTEVEIGRyaXZlci4uLiBJIHNlZSB0aGlzIGNvdWxkIGJlDQppbXByb3ZlZCBp biB0aGUgZnV0dXJlIGJ5IGFkZGluZyBMRUQgZnJhbWV3b3JrIGEgbWVjaGFuaXNtIHRvIGlkZW50 aWZ5DQpMRUQgbm9kZXMuIEJ1dCB0aGF0IGRpc2N1c3Npb24gaXMgKHByb2JhYmx5KSBvdXQgb2Yg dGhlIHNjb3BlIG9mIHRoaXMNCmRyaXZlci4gVGhhbmtzIGZvciBwb2ludGluZyB0aGF0IG91dC4N Cg0KPiA+IChJbiBteSBleGFtcGxlIHRoaXMgaXMgdGhlIGNoZy1sZWQgYW5kIHB3ci1sZWQgc3Vi LW5vZGVzKS4NCj4gPiBGdXJ0aGVybW9yZSwNCj4gPiBpZiBubyBMRUQgaW5mb3JtYXRpb24gaXMg Zm91bmQgZnJvbSBEVCBJIHdvdWxkIGV4cGVjdA0KPiA+IGRldm1fbGVkX2NsYXNzZGV2X3JlZ2lz dGVyX2V4dCB0byBmYWlsIHdpdGggd2VsbC1kZWZpbmVkIHJldHVybg0KPiA+IHZhbHVlDQo+ID4g c28gdGhhdCB0aGUgZHJpdmVyIGNvdWxkIGRvIHdoYXQgaXQgbm93IGRvZXMgLSBFZywgdXNlICJz YW5lDQo+ID4gZGVmYXVsdHMiDQo+ID4gdG8gcmVnaXN0ZXIgdGhlIGRlZmF1bHQgY2xhc3MtZGV2 aWNlcyBmb3IgZ3JlZW4gYW5kIGFtYmVyIExFRHMuIFRoZQ0KPiA+IGRlZmF1bHQgbGVkIGNsYXNz IGRldiBuYW1pbmcgc2hvdWxkIG9mIGNvdXJzZSBiZSBzYW1lIGZvcm1hdCBhcyBpdA0KPiA+IHdv dWxkIGJlIGlmIERUIHdhcyBwb3B1bGF0ZWQgd2l0aCBncmVlbiBhbmQgYW1iZXIgbGVkIGluZm9y bWF0aW9uLiANCj4gDQo+IFBsZWFzZSBnbyB0aHJvdWdoIDUuNC1yYzEgcGF0Y2hlcyByZWxhdGVk IHRvIExFRCBuYW1pbmcgaW1wcm92ZW1lbnRzDQo+IFlvdSBjYW4gYWxzbyByZWZlciB0byBEb2N1 bWVudGF0aW9uL2xlZHMvbGVkcy1jbGFzcy5yc3QsDQo+ICJMRUQgRGV2aWNlIE5hbWluZyIgc2Vj dGlvbiBmb3Igc3RhcnRlci4NCg0KSSB3aWxsLiBUaGUgbmFtaW5nIHNob3VsZCBiZSBjb2hlcmVu dCAtIGFuZCBuYW1lcyBpbiBteSBjdXJyZW50IGRyYWZ0DQp3ZXJlIGp1c3QgcHVsbGVkIG9mZiBm cm9tIG15IGhhdC4gVGhhbmtzLg0KDQo+ID4gPiA+IAl9Ow0KPiA+ID4gPiANCj4gPiA+ID4gSG93 IGRvIHlvdSBzZWUgdGhpcz8gT3IgZG8geW91IHJlYWxseSB3aXNoIHRvIGhhdmUgdGhpcyBvbmUN Cj4gPiA+ID4gZXh0cmENCj4gPiA+ID4gbm9kZToNCj4gPiA+ID4gDQo+ID4gPiA+IAlwbWljOiBw bWljQDRiIHsNCj4gPiA+ID4gCQljb21wYXRpYmxlID0gInJvaG0sYmQ3MTgyOCI7DQo+ID4gPiA+ IAkJDQo+ID4gPiA+IHJlZyA9IDwweDRiPjsNCj4gPiA+ID4gCQlpbnRlcnJ1cHQtcGFyZW50ID0g PCZncGlvMT47DQo+ID4gPiA+IAkJaW50ZXJydQ0KPiA+ID4gPiBwdHMgPSA8MjkgR1BJT19BQ1RJ VkVfTE9XPjsNCj4gPiA+ID4gCQljbG9ja3MgPSA8Jm9zYyAwPjsNCj4gPiA+ID4gCQkNCj4gPiA+ ID4gI2Nsb2NrLWNlbGxzID0gPDA+Ow0KPiA+ID4gPiAJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJi ZDcxODI4LTMyay1vdXQiOw0KPiA+ID4gPiAJCWdwaW8tY29udHJvbGxlcjsNCj4gPiA+ID4gCQkj Z3Bpby1jZWxscyA9IDwyPjsNCj4gPiA+ID4gCQ0KPiA+ID4gPiAJbmdwaW9zID0gPDQ+Ow0KPiA+ ID4gPiAJCWdwaW8tcmVzZXJ2ZWQtcmFuZ2VzID0gPDAgMSAyIDE+Ow0KPiA+ID4gPiAJDQo+ID4g PiA+IAlncGlvLWxpbmUtbmFtZXMgPSAiRVBERU4iOw0KPiA+ID4gPiAJCXJvaG0sZHZzLXZzZWwt Z3Bpb3MgPQ0KPiA+ID4gPiA8JmdwaW8xIDEyIDA+LA0KPiA+ID4gPiAJCQkJICAgICAgPCZncGlv MSAxMyAwPjsNCj4gPiA+ID4gCQkNCj4gPiA+ID4gcmVndWxhdG9ycyB7DQo+ID4gPiA+IAkJCS4u Lg0KPiA+ID4gPiAJCX07DQo+ID4gPiA+IAkJDQo+ID4gPiA+IAkJbGVkcy1kdW1teSB7DQo+ID4g PiANCj4gPiA+IFdoeSBsZWRzLWR1bW15ID8NCj4gPiANCj4gPiBCZWNhdXNlIHRoZXJlIGlzIG5v IHJlYWwgbGVkIGNvbnRyb2xsZXIgZGV2aWNlIGluIGFueSAiTUZEIGJ1cyIuIEl0DQo+ID4gaXMN Cj4gPiBqdXN0IG9uZSBNRkQgZGV2aWNlIHdpdGggY29udHJvbHMgZm9yIHR3byBMRURzLiANCj4g PiANCj4gPiA+IFRoZSBjb252ZW50aW9uIGlzIHRvIGhhdmUgbGVkLWNvbnRyb2xsZXJAdW5pdC1h ZGRyZXNzIGFzIHRoZQ0KPiA+ID4gcGFyZW50DQo+ID4gPiBMRUQNCj4gPiA+IGNvbnRyb2xsZXIg bm9kZS4NCj4gPiANCj4gPiBXaGF0IGlzIHRoZSB1bml0IGFkZHJlc3MgaGVyZT8gMHg0YiBpcyB0 aGUgSTJDIHNsYXZlIGFkZHJlc3MgYW5kIGl0DQo+ID4gaXMNCj4gPiB0aGUgTUZEIG5vZGUgYWRk cmVzcy4gVGhlcmUgaXMgbm8gYWRkcmVzc2luZyBmb3IgTEVEIGNvbnRyb2xsZXIgYXMNCj4gPiB0 aGVyZSBpcyBubyBzZXBhcmF0ZSBMRUQgY29udHJvbGxlciBkZXZpY2UuIFRoZXJlIGlzIG9ubHkg b25lDQo+ID4gZGV2aWNlLA0KPiA+IHRoZSBQTUlDIHdoaWNoIGlzIE1GRCBkZXZpY2UgYXMgaXQg aGFzIG11bHRpcGxlIGZ1bmN0aW9ucyBtZWxkIGluLg0KPiA+IE9uZQ0KPiA+IG9mIHRoZXNlIGZ1 bmN0aW9ucyBpcyBMRUQgY29udHJvbCBhbmQgcmVxdWlyZXMgTEVEIGRyaXZlci4NCj4gDQo+IEZv ciBNRkQgY2VsbCB5b3UgY2FuIGhhdmUganVzdCAibGVkIi4NCj4gDQo+ID4gPiA+IAkJCWNoZy1s ZWQgew0KPiA+ID4gcy9jaGctbGVkL2xlZDAvDQo+ID4gPiANCj4gPiA+ID4gCQkJCWZ1bmN0aW9u ID0NCj4gPiA+ID4gTEVEX0ZVTkNUSU9OX0NIQVJHSU5HOw0KPiA+ID4gPiAJCQkJY29sb3IgPSBM RURfQ09MT1JfSURfQU1CRVI7DQo+ID4gPiA+IAkJCX07DQo+ID4gPiA+IA0KPiA+ID4gPiAJCQlw d3ItbGVkIHsNCj4gPiA+IA0KPiA+ID4gcy9wd3ItbGVkL2xlZDEvDQo+ID4gPiANCj4gPiA+IFRo aXMgaXMgZVBBUFIgcmVxdWlyZW1lbnQgdGhhdCBEVCBub2RlIG5hbWUgc2hvdWxkIGRlc2NyaWJl IHRoZQ0KPiA+ID4gZ2VuZXJhbCBjbGFzcyBvZiBkZXZpY2UuDQo+ID4gDQo+ID4gVGhhbmtzLiBJ IGhhZCBzb21lIHByb2JsZW1zIHdpdGggdGhlc2Ugbm9kZSBuYW1lcyBhcyBJIHdhbnRlZCB0bw0K PiA+IG1ha2UNCj4gPiB0aGVtIGdlbmVyaWMgKGxlZCkgYnV0IGFsc28gdG8gaW5jbHVkZSBzb21l IGluZm9ybWF0aW9uIHdoYXQgbGVkcw0KPiA+IHRoZXkNCj4gPiBhcmUuIEEgYml0IHNhbWUgaWRl YSBhcyBJIHNlZSBpbiBub2RlIG5hbWVzIGxpa2UgImNoYW4xIiBhbmQNCj4gPiAiY2hhbjM0NSIN Cj4gPiB0aGF0IGFyZSB1c2VkIGluIHRpLWxtdSBiaW5kaW5ncyBJIGNoZWNrZWQgZm9yIHRoZSBl eGFtcGxlLiBCdXQgSQ0KPiA+IGFtDQo+ID4gZmluZSB3aXRoIHJlbmFtaW5nIHRoZW0gaW4gdGhp cyBleGFtcGxlISBJIGp1c3QgZG9uJ3QgdGhpbmsgd2UNCj4gPiBzaG91bGQNCj4gPiBoYXZlIHRo aXMgZXh0cmEgbm9kZSBhcyBJIG1lbnRpb25lZC4NCj4gDQo+IEkgd29uZGVyIHdoYXQgUm9iIGFu ZCBMZWUgd2lsbCBzYXkgaGVyZS4gSSBwZXJzb25hbGx5IHdvdWxkDQo+IGxpa2UgdG8gc3RpY2sg dG8gTEVEIGNvbW1vbiBiaW5kaW5ncyBhbmQgaGF2ZSB0aGlzIGV4dHJhIG5vZGUuDQo+IFdlIGRl ZmluZSBzdGFuZGFyZHMgZm9yIGEgcmVhc29uIGFmdGVyIGFsbC4NCg0KSSBkb24ndCB1bmRlcnN0 YW5kIHdoYXQgbWFrZXMgeW91IHRoaW5rIHdlIHNob3VsZG4ndCBzdGljayBMRUQgY29tbW9uDQpi aW5kaW5ncz8gV2UgZGVmaW5pdGVseSB3YW50IHRvIGhhdmUgY29tbW9uIGJpbmRpbmdzIGFuZCBp bmNyZWFzZQ0KYW1vdW50IG9mIGJpbmRpbmdzIGhhbmRsZWQgYnkgY29yZSBpbnN0ZWFkIG9mIGhh bmRsaW5nIHRoZSBiaW5kaW5ncyBpbg0KYWxsIG9mIHRoZSBMRUQgZHJpdmVycy4gSXQgd2FzIGp1 c3Qgc3RyYW5nZSB0byBtZSB0aGF0IExFRCBzdWJzeXN0ZW0NCnVzZXMgdGhpcyAiZXh0cmEgbm9k ZSIgYW5kICJleHRyYSBjb21wYXRpYmxlIiBpbnNpZGUgTUZEIHdoZXJlYXMgKEkNCmhhdmUgdW5k ZXJzdG9vZCB0aGF0KSBvdGhlciBzdWJzeXN0ZW1zIHNlZW0gdG8gYmUgZ2l2aW5nIHVwIG9uIHRo YXQuDQpCdXQgbWF5YmUgSSBhbSBtaXN0YWtlbiBvbiB0aGF0IC0gd291bGRuJ3QgYmUgZmlyc3Qg dGltZSAtIGxldCdzIHNlZSA6KQ0KDQo+ID4gPiA+IAkJCQlmdW5jdGlvbiA9IExFRF9GVU5DVElP Tl9QT1dFUjsNCj4gPiA+ID4gCQkJCWNvbG9yID0gTEVEX0NPTE9SX0lEX0dSRUVOOw0KPiA+ID4g PiAJCQl9Ow0KPiA+ID4gDQo+ID4gPiBDb21tb24gTEVEIGJpbmRpbmdzIHNheSB0aGlzIGlzIHRo ZSBwcm9wZXIgd2F5IHRvIGdvLiBIb3dldmVyIHlvdQ0KPiA+ID4gd291bGQgbmVlZCBjb21wYXRp YmxlIHRvIHByb2JlIExFRCBjbGFzcyBkcml2ZXIgaW4gRFQgYmFzZWQgd2F5Lg0KPiA+IA0KPiA+ IE5vLiBJIGRvbid0LiBNRkQgd2lsbCBwcm9iZSB0aGUgTEVEIGNsYXNzIGRyaXZlciBhcyBsb25n IGFzIHRoZQ0KPiA+IG5hbWUgb2YNCj4gPiB0aGUgZHJpdmVyIG1hdGNoZXMgdG8gTUZEIGNlbGwg bmFtZS4gDQo+IA0KPiBJZiB5b3UgaW5pdGlhbGl6ZSBvbmx5IG9mX2NvbXBhdGlibGUgaW4gc3Ry dWN0IG1mZF9jZWxsIGVsZW1lbnQgdGhlbg0KPiBpdA0KPiB3aWxsIHVzZSBvbmx5IHRoYXQgZm9y IG1hdGNoaW5nLiBJIGJldCBJIHdhcyBjaGVja2luZyB0aGF0IGZpdmUgeWVhcnMNCj4gYWdvIHdo aWxlIHdvcmtpbmcgb24gbGVkcy1tYXg3NzY5MyBkcml2ZXIuDQoNClllcy4gSXQgc3VyZSB1c2Vz IG9mX2NvbXBhdGlibGUgZm9yIG1hdGNoaW5nIGFuZCBwb3B1bGF0aW5nIHRoZSBkdA0Kbm9kZS4g VGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBwcm9iaW5nIHRob3VnaC4gU3ViLWRldmljZSBpcyBwcm9i ZWQganVzdA0KZmluZSBldmVuIHdoZW4gdGhlcmUgaXMgbm8gY29tcGF0aWJsZSBmb3IgaW4gRFQg LSBpZiB0aGUgbmFtZSBtYXRjaGVzLg0KV2hhdCBjaGFuZ2VzIGlzIHRoYXQgdGhlIG9mX25vZGUg d29uJ3QgYmUgcG9wdWxhdGVkIGFuZCBzdWIgZHJpdmVyDQpuZWVkcyB0byBmaWd1cmUgaXQgb3V0 LiBTbyBib3RoIGFwcHJvYWNoZXMgKndvcmsqIC0gd2hpY2ggaXMgY29uc2lkZXJlZA0KYXMgInJp Z2h0IHRoaW5nIHRvIGRvIih0bSkgbmVlZHMgdG8gYmUgZmlndXJlZCBvdXQuIEkgaGF2ZSBubyBm dXJ0aGVyDQppbnNpZ2h0IGFzIHRvIHdoeSB0aGUgY29tcGF0aWJsZSBzaG91bGQgb3Igc2hvdWxk IG5vdCBiZSB1c2VkIGZvciBNRkQNCnN1Yi1kZXZpY2VzIC0gSSB3YXMganVzdCB0b2xkIHRvIGF2 b2lkIHRoYXQgaW4gdGhlIHBhc3QuIEJ1dCBsZXQncyBzZWUNCmlmIHdlIGdldCBSb2IncyBvciBM ZWUncyBhdHRlbnRpb24gOikNCg0KPiA+IFNvIHdlIG9ubHkgbmVlZCBNRkQgZHJpdmVyIHRvIGJl DQo+ID4gcHJvYmVkIGJhc2VkIG9uIHRoZSBjb21wYXRpYmxlLiBSZXN0IG9mIHRoZSBzdWItZGV2 aWNlIGRyaXZlcnMgd2lsbA0KPiA+IGJlDQo+ID4gcHJvYmVkIGJ5IE1GRC4gV2hhdCBJIGFtIG1p c3NpbmcgaXMgTU9EVUxFX0FMSUFTIGluIExFRCBkcml2ZXIgZm9yDQo+ID4gbG9hZGluZyB0aGUg bW9kdWxlIHdoZW4gTUZEIGlzIHNlYXJjaGluZyBmb3IgaXQgaWYgaXQgaXMgbm90DQo+ID4gbW9k cHJvYmVkDQo+ID4gdmlhIHNjcmlwdHMgb3IgYnVpbHQgaW4ta2VybmVsLiBJIGhhdmUgdW5kZXJz dG9vZCB0aGlzIGlzIHRoZQ0KPiA+IHN0YW5kYXJkDQo+ID4gd2F5IHdpdGggTUZEIG5vd2FkYXlz IC0gSSBhbSBwb3NpdGl2ZSBMZWUgd2lsbCBraWNrIG1lIGlmIEkgYW0NCj4gPiB3cm9uZyA7KQ0K PiA+IChJIHRoaW5rIEkgaGF2ZSBidWxsaWVkIGhpbSB0aGF0IG11Y2ggaW4gdGhlIHBhc3QgOi8g KQ0KPiANCj4gTGFzdCBzZW50ZW5jZSBjb25maXJtcyBteSBvYnNlcnZhdGlvbiB0aGF0IHlvdSdy ZSBzdHJvbmdseSBpbmNsaW5lZA0KPiB0byBjb250ZXN0IHN0YXR1cyBxdW8gOi0pDQoNCkxldCdz IGp1c3Qgc2F5IHRoYXQgSSBoYXZlIGhhZCBteSBtb21lbnRzIC0gYm90aCBpbiBnb29kIGFuZCBp biBiYWQgOikNCkkgYW0gcHJvYmFibHkgbm90IHRoZSBlYXNpZXN0IGd1eSB0byB3b3JrIHdpdGgg YnV0IG5vdCB0aGUgd29yc3QNCmVpdGhlci4gQWN0dWFsbHksIHByb2JsZW1zIHRlbmQgdG8gc3Rh cnQgd2hlbiBJIHRyeSB0byBiZSBmdW5ueQ0KOnJvbGxleWVzOiBJIHNob3VsZCBsZWFybiB3aGVu IHRvIHN0b3AuDQoNCj4gPiA+IElmIHlvdSBwbGFuIHRvIGRvIGl0IG90aGVyd2lzZSB0aGVuIGl0 IG1ha2VzIG5vIHNlbnNlIHRvIGhhdmUNCj4gPiA+IERUIG5vZGVzIGZvciBMRURzLg0KPiA+IA0K PiA+IFRoYXQgd2FzIG15IHBvaW50LiBUaGlzIGlzIHdoeSBJIGRpZCBub3QgaGF2ZSBMRURzIGlu IERUIGluIGZpcnN0DQo+ID4gcGxhY2UuIEJ1dCBhcyBJIHNhaWQgYWJvdmUgLSBhcyBhIHJlc3Vs dCBvZiB0aGlzIGRpc2N1c3Npb24gSSBoYXZlDQo+ID4gc3RhcnRlZCB0aGlua2luZyB0aGF0IG1h eWJlIEkgY291bGQgY2hlY2sgaWYgSSBjYW4gZWFzaWx5IGFkZA0KPiA+IHN1cHBvcnQNCj4gPiBm b3IgcHJvdmlkaW5nIExFRCBpbmZvcm1hdGlvbiBhbHNvIHZpYSBEVCBhbmQgZmFsbCBiYWNrIHRv IGRlZmF1bHRzDQo+ID4gaWYNCj4gPiBubyBMRUQgaW5mb3JtYXRpb24gaXMgZm91bmQuICh0byBh bGxvdyBjb2xvciBjaGFuZ2Ugb3IgdG8gb21pdCBvbmUNCj4gPiBvZg0KPiA+IHRoZSBMRURzIGFz IHlvdSBzdWdnZXN0ZWQpDQoNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gKwli ZDcxODI4ID0gZGV2X2dldF9kcnZkYXRhKHBkZXYtPmRldi5wYXJlbnQpOw0KPiA+ID4gPiA+ID4g PiA+ICsJbCA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKmwpLA0KPiA+ID4gPiA+ ID4gPiA+IEdGUF9LRVJORUwpOw0KPiA+ID4gPiA+ID4gPiA+ICsJaWYgKCFsKQ0KPiA+ID4gPiA+ ID4gPiA+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+ID4gPiA+ID4gPiA+ICsJbC0+YmQ3MTgyOCA9 IGJkNzE4Mjg7DQo+ID4gPiA+ID4gPiA+ID4gKwlhID0gJmwtPmFtYmVyOw0KPiA+ID4gPiA+ID4g PiA+ICsJZyA9ICZsLT5ncmVlbjsNCj4gPiA+ID4gPiA+ID4gPiArCWEtPmlkID0gSURfQU1CRVJf TEVEOw0KPiA+ID4gPiA+ID4gPiA+ICsJZy0+aWQgPSBJRF9HUkVFTl9MRUQ7DQo+ID4gPiA+ID4g PiA+ID4gKwlhLT5mb3JjZV9tYXNrID0gQkQ3MTgyOF9NQVNLX0xFRF9BTUJFUjsNCj4gPiA+ID4g PiA+ID4gPiArCWctPmZvcmNlX21hc2sgPSBCRDcxODI4X01BU0tfTEVEX0dSRUVOOw0KPiA+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArCWEtPmwubmFtZSA9IEFOQU1FOw0KPiA+ID4g PiA+ID4gPiA+ICsJZy0+bC5uYW1lID0gR05BTUU7DQo+ID4gPiA+ID4gPiA+ID4gKwlhLT5sLmJy aWdodG5lc3Nfc2V0X2Jsb2NraW5nID0NCj4gPiA+ID4gPiA+ID4gPiBiZDcxODI4X2xlZF9icmln aHRuZXNzX3NldDsNCj4gPiA+ID4gPiA+ID4gPiArCWctPmwuYnJpZ2h0bmVzc19zZXRfYmxvY2tp bmcgPQ0KPiA+ID4gPiA+ID4gPiA+IGJkNzE4MjhfbGVkX2JyaWdodG5lc3Nfc2V0Ow0KPiA+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArCXJldCA9IGRldm1fbGVkX2NsYXNzZGV2X3Jl Z2lzdGVyKCZwZGV2LT5kZXYsDQo+ID4gPiA+ID4gPiA+ID4gJmctPmwpOw0KPiA+ID4gPiA+ID4g PiA+ICsJaWYgKHJldCkNCj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ID4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArCXJldHVybiBkZXZtX2xlZF9jbGFzc2Rldl9yZWdp c3RlcigmcGRldi0+ZGV2LA0KPiA+ID4gPiA+ID4gPiA+ICZhLT5sKTsNCj4gPiA+ID4gPiANCj4g PiA+ID4gPiBUaGlzIHdheSB5b3UgZm9yY2UgdXNlcnMgdG8gYWx3YXlzIHJlZ2lzdGVyIHR3byBM RUQgY2xhc3MNCj4gPiA+ID4gPiBkZXZpY2VzDQo+ID4gPiA+ID4gd2hlcmVhcyB0aGV5IG1pZ2h0 IG5lZWQgb25seSBvbmUuIFBsZWFzZSBjb21wYXJlIGhvdyBvdGhlcg0KPiA+ID4gPiA+IExFRA0K PiA+ID4gPiA+IGNsYXNzDQo+ID4gPiA+ID4gZHJpdmVycyBoYW5kbGUgRFQgcGFyc2luZyBhbmQg TEVEIGNsYXNzIGRldmljZSByZWdpc3RyYXRpb24uDQo+ID4gPiA+IA0KPiA+ID4gPiBJIGFtIG5v dCBzdXJlIGlmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHkgd2hhdCB5b3UgbWVhbiBieSB1c2luZw0K PiA+ID4gPiBvbmx5DQo+ID4gPiA+IG9uZQ0KPiA+ID4gPiBjbGFzcyBkZXZpY2UuIEFzIEkgKGhv cGVmdWxseSkgc29tZXdoZXJlIHNhaWQgLSB1c2VycyBjYW4ndA0KPiA+ID4gPiBjb250cm9sDQo+ ID4gPiA+IG9ubHkgb25lIG9mIHRoZXNlIExFRHMuIElmIHRoZXkgZGVjaWRlIHRvIGVuYWJsZSBv bmUgbGVkIGJ5IFNXLA0KPiA+ID4gPiB0aGVuDQo+ID4gPiA+IHRoZXkgaW5ldml0YWJseSBjb250 cm9sIGFsc28gdGhlIG90aGVyLiBUaHVzIGl0IGlzIGJldHRlciB0aGF0DQo+ID4gPiA+IHVzZXIN Cj4gPiA+ID4gZ2V0cyBjb250cm9sIHRvIGJvdGggb2YgdGhlIExFRHMgaWYgdGhleSB0YWtlIHRo ZSBjb250cm9sIGZvcg0KPiA+ID4gPiBvbmUuDQo+ID4gPiA+IA0KPiA+ID4gPiBPciBkbyB5b3Ug bWVhbiBJIGNvdWxkIGFjaGlldmUgdGhlIGNvbnRyb2wgZm9yIGJvdGggb2YgdGhlc2UNCj4gPiA+ ID4gTEVEcw0KPiA+ID4gPiB2aWENCj4gPiA+ID4gb25seSBvbmUgY2xhc3MgZGV2aWNlPw0KPiA+ ID4gDQo+ID4gPiBBRkFJVSB0aGUgTEVEcywgd2hlbiBpbiBTVyBtb2RlLCBjYW4gYmUgY29udHJv bGxlZCBpbmRlcGVuZGVudGx5LA0KPiA+ID4gcmlnaHQ/DQo+ID4gDQo+ID4gWWVzIGFuZCBuby4g Qm90aCBvZiB0aGUgTEVEcyBjYW4gYmUgZm9yY2VkIG9uL29mZiBpbmRpdmlkdWFsbHkgLSBhcw0K PiA+IGxvbmcgYXMgb25lIG9mIHRoZW0gaXMgZm9yY2VkIE9OLiBJZiBib3RoIExFRHMgYXJlIHRy aWVkIHRvIGJlDQo+ID4gZm9yY2VkDQo+ID4gT0ZGIC0gdGhlbiBib3RoIExFRHMgYXJlIGNvbnRy b2xsZWQgYnkgSFcuIElmIGJvdGggYXJlIGNvbnRyb2xsZWQNCj4gPiBieSBIVw0KPiA+IGFuZCB0 aGVuIG9uZSBpcyBmb3JjZWQgT04gLSB0aGUgb3RoZXIgaXMgYWxzbyBubyBsb25nZXIgY29udHJv bGxlZA0KPiA+IGJ5DQo+ID4gSFcgYW5kIGlzIGZvcmNlZCBPRkYuDQo+ID4gDQo+ID4gRWcsIGJp dHMgMHg4MCBhbmQgMHg0MCBhcmUgY29ucm9scyBmb3IgdGhlc2UgTEVEcy4gMHg4MCBmb3Igb25l LA0KPiA+IDB4NDANCj4gPiBmb3IgdGhlIG90aGVyLiBTZXR0aW5nIGJpdCBtZWFucyBMRUQgaXMg b24sIGNsZWFyaW5nIG1lYW5zIExFRCBpcw0KPiA+IG9mZiAtDQo+ID4gd2l0aCB0aGUgSFcgY29u dHJvbCB0d2lzdC4uLiBJZiBlaXRoZXIgb2YgdGhlIGJpdHMgaXMgc2V0IC0gdGhlbg0KPiA+IGJv dGgNCj4gPiBsZWRzIGFyZSBjb250cm9sbGVkIGJ5IHRoZXNlIGJpdHMgKFNXIGNvbnRyb2wpLiBJ ZiBib3RoIGJpdHMgYXJlDQo+ID4gY2xlYXJlZCwgdGhlbiBMRURzIGFyZSBjb250cm9sbGVkIGJ5 IEhXIChsaWtlbHkgdG8gYmUgb2ZmIGJ1dCBub3QNCj4gPiBmb3INCj4gPiBzdXJlKS4NCj4gDQo+ IFRoYW5rIHlvdSBmb3IgdGhlIGV4cGxhbmF0aW9uLiBTbyB0aGV5IGNhbiBiZSByZXByZXNlbnRl ZCBieSBzZXBhcmF0ZQ0KPiBMRUQgY2xhc3MgZGV2aWNlcy4gRHJpdmVyIGxvZ2ljIHdpbGwganVz dCBuZWVkIHRvIHVwZGF0ZSB0aGUgc3RhdGUgb2YNCj4gdGhlIHNpYmxpbmcgTEVEIGlmIGl0IHdp bGwgYmUgYWZmZWN0ZWQuDQoNClJpZ2h0LiBPciBhdCBmaXJzdCBpdCBtaWdodCBiZSBlbm91Z2gg KGFuZCBzaW1wbGVzdCkgdG8gYXNzdW1lIHRoYXQgaWYNCkxFRHMgYXJlIHVzZWQgdmlhIHRoaXMg ZHJpdmVyLCB0aGVuIGNvbG91ciBmb3IgYm90aCBMRURzIGlzIHNldA0KZXhwbGljaXRseSBieSB1 c2VyLXNwYWNlLiBJIHdvdWxkbid0IHRyeSBndWVzc2luZyBpZiBzaWJsaW5nIExFRCBzdGF0ZQ0K Y2hhbmdlcyB0byBPRkYgd2hlbiBvbmUgTEVEIGlzIHR1cm5lZCBPTiAtIG9yIGlmIExFRCBzdGF0 ZXMgY2hhbmdlIHRvDQpPTiBpZiBib3RoIGFyZSB0dXJuZWQgT0ZGLiBUaGlzIHdvdWxkIHJlcXVp cmUgZXhwb3J0aW5nIGludGVyZmFjZXMgZnJvbQ0KcG93ZXItc3VwcGx5IGRyaXZlciAtIGFuZCBp dCB3b3VsZCBzdGlsbCBiZSByYWN5LiBUaGUgdGhpbmcgaXMgdGhhdA0Kd2hlbiBib3RoIExFRHMg YXJlIG9uIGJvYXJkIHRoZXkgYXJlIGJvdGggZWl0aGVyIHVuZGVyIEhXIG9yIFNXDQpjb250cm9s LiBTbyBpdCBtYWtlcyBubyBzZW5zZSB0byBjb250cm9sIG9ubHkgb25lIExFRCBpbiBzdWNoIGNh c2UuDQpUaHVzIEkgdGhpbmsgaXQgaXMgT2sgaWYgdGhpcyBMRUQgZHJpdmVyIGlzIHJlZ2lzdGVy aW5nIGJvdGggY2xhc3MNCmRldmljZXMgYXQgb25lIHByb2JlLiBObyBuZWVkIHRvIGluc3RhbnRp YXRlIG93biBwbGF0Zm9ybSBkZXZpY2VzIGZvcg0KYm90aCBvZiB0aGUgTEVEcy4NCg0KPiA+ID4g QmVjYXVzZSBpZiBub3QgdGhlbiB0aGVyZSBpcyBubyBwb2ludCBpbiBoYXZpbmcgc2VwYXJhdGUg TEVEDQo+ID4gPiBjbGFzcw0KPiA+ID4gZGV2aWNlcy4NCj4gPiA+IA0KPiA+ID4gQnV0IGlmIEkg Z2V0IGl0IHJpZ2h0LCB0aGVuIGFsbG93aW5nIGZvciByZWdpc3RlcmluZyBvbmx5IG9uZSBMRUQN Cj4gPiA+IGNsYXNzDQo+ID4gPiBkZXZpY2UgaXMgZW50aXJlbHkganVzdGlmaWFibGUgLSB0aGlu ayBvZiBhIHNpdHVhdGlvbiB3aGVuIHRoZQ0KPiA+ID4gaW91dA0KPiA+ID4gcmVtYWlucyBub3Qg Y29ubmVjdGVkIG9uIHRoZSBib2FyZC4NCj4gPiANCj4gPiBZZXMuIFRoaXMgbWlnaHQgYmUgdW5s aWtlbHkgLSBidXQgdGhpcyBpcyB0aGUgcmVhc29uIHdoeSBJIGNvbnNpZGVyDQo+ID4gYWRkaW5n IHRoZSBEVCBzdXBwb3J0LiBJIGp1c3QgYW0gbm90IHN1cmUgaWYgY292ZXJpbmcgdGhpcyBzY2Vu YXJpbw0KPiA+IG5vdw0KPiA+IGlzIHdvcnRoIHRoZSBoYXNzbGUuIEkgdGVuZCB0byB0aGluayB3 ZSBzaG91bGQgb25seSBhZGQgdGhlIERUDQo+ID4gc3VwcG9ydA0KPiA+IGlmIHNvbWVvbmUgYWN0 dWFsbHkgcHJvZHVjZXMgYSBib2FyZCB3aGVyZSB0aGlzIExFRCBpcyBub3QNCj4gPiBjb25uZWN0 ZWQuDQo+IA0KPiBDb3VsZCB5b3Ugc2hhcmUgd2hhdCBib2FyZCB5b3UncmUgd29ya2luZyB3aXRo Pw0KDQpVbmZvcnR1bmF0ZWx5IEkgY2FuJ3QgOiggSSBhbSB3b3JraW5nIGZvciBhIGNvbXBvbmVu dCB2ZW5kb3IgYW5kIGFsbA0KY3VzdG9tZXIgcmVsYXRlZCBpbmZvcm1hdGlvbiBpcyB1c3VhbGx5 IHN0cmljdGx5IGNvbmZpZGVudGFsIC0gZXZlbiBpbg0KY2FzZXMgd2hlcmUgaXQgY2FuIGJlIGd1 ZXNzZWQuLi4NCg0KDQoNCg==