From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3677E89F85 for ; Tue, 7 May 2019 09:14:25 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id e56so17993949ede.7 for ; Tue, 07 May 2019 02:14:25 -0700 (PDT) Date: Tue, 7 May 2019 11:14:20 +0200 From: Daniel Vetter Message-ID: <20190507091420.GN17751@phenom.ffwll.local> References: <20190430112915.16889-1-janusz.krzysztofik@linux.intel.com> <6087541.rnYAh7yUL0@jkrzyszt-desk.ger.corp.intel.com> <20190506092158.GF17751@phenom.ffwll.local> <2917733.FBDs9Wezqy@jkrzyszt-desk.ger.corp.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <2917733.FBDs9Wezqy@jkrzyszt-desk.ger.corp.intel.com> Subject: Re: [igt-dev] [PATCH v8 1/1 i-g-t] tests: Add a new test for driver/device hot reload List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Janusz Krzysztofik Cc: igt-dev@lists.freedesktop.org, Petri Latvala , Daniel Vetter List-ID: T24gVHVlLCBNYXkgMDcsIDIwMTkgYXQgMDg6MjQ6MzBBTSArMDIwMCwgSmFudXN6IEtyenlzenRv ZmlrIHdyb3RlOgo+IE9uIE1vbmRheSwgTWF5IDYsIDIwMTkgMTE6MjE6NTggQU0gQ0VTVCBEYW5p ZWwgVmV0dGVyIHdyb3RlOgo+ID4gT24gTW9uLCBNYXkgMDYsIDIwMTkgYXQgMTA6NDQ6MTFBTSAr MDIwMCwgSmFudXN6IEtyenlzenRvZmlrIHdyb3RlOgo+ID4gPiBIaSBEYW5pZWwsCj4gPiA+IAo+ ID4gPiBPbiBUdWVzZGF5LCBBcHJpbCAzMCwgMjAxOSA1OjA1OjQ4IFBNIENFU1QgRGFuaWVsIFZl dHRlciB3cm90ZToKPiA+ID4gPiBPbiBUdWUsIEFwciAzMCwgMjAxOSBhdCAwMToyOToxNVBNICsw MjAwLCBKYW51c3ogS3J6eXN6dG9maWsgd3JvdGU6Cj4gPiA+ID4gPiBGcm9tOiBKYW51c3ogS3J6 eXN6dG9maWsgPGphbnVzei5rcnp5c3p0b2Zpa0BpbnRlbC5jb20+Cj4gPiA+ID4gPiAKPiA+ID4g PiA+IFB1dCBzb21lIHdvcmtsb2FkIG9uIGEgZGV2aWNlLCB0aGVuIHRyeSB0byBlaXRoZXIgcmVt b3ZlICh1bnBsdWcpIHRoZQo+ID4gPiA+ID4gZGV2aWNlIGZyb20gaXRzIGJ1cywgb3IgdW5iaW5k IHRoZSBkZXZpY2UncyBkcml2ZXIgZnJvbSBpdCwgcG9zc2libHkKPiA+ID4gPiA+IGZvbGxvd2Vk IGJ5IG1vZHVsZSB1bmxvYWQsIGRlcGVuZGluZyBvbiB3aGljaCBzcGVjaWZpYyBzdWJ0ZXN0IGhh cyBiZWVuCj4gPiA+ID4gPiBzZWxlY3RlZC4gIElmIHN1Y2NlZWRlZCwgcmVzY2FuIHRoZSBkZXZp Y2UncyBidXMgaWYgbmVlZGVkIGFuZCBwZXJmb3JtCj4gPiA+ID4gPiBoZWFsdGggY2hlY2tzIG9u IHRoZSBkZXZpY2Ugd2l0aCB0aGUgZHJpdmVyIHBvc3NpYmx5IGxvYWRlZCBiYWNrLgo+ID4gPiA+ ID4gCj4gPiA+ID4gPiBJZiBtb2R1bGUgdW5sb2FkIGlzIHJlcXVlc3RlZCwgdGhlIHdvcmtsb2Fk IGlzIHJ1biBpbiBhIHN1Yi1wcm9jZXNzLAo+ID4gPiA+ID4gbm90IGRpcmVjdGx5IGZyb20gdGhl IHRlc3QsIGFzIGl0IGlzIGV4cGVjdGVkIHRvIGNyYXNoIHdoaWxlIHN0aWxsCj4gPiA+ID4gPiBr ZWVwaW5nIHRoZSBkZXZpY2Ugb3BlbiBmb3IgYXMgbG9uZyBhcyBpdHMgcHJvY2VzcyBoYXMgbm90 IGV4aXRlZC4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gVGhlIGRyaXZlciBob3QgdW5iaW5kIC8gZGV2 aWNlIGhvdCB1bnBsdWcgb3BlcmF0aW9uIGlzIGV4cGVjdGVkIHRvCj4gPiA+ID4gPiBzdWNjZWVk IGFuZCB0aGUgYmFja2dyb3VuZCB3b3JrbG9hZCBzdWItcHJvY2VzcyB0byBjcmFzaCBpbiBhCj4g PiA+ID4gPiByZWFzb25hYmxlIHRpbWUsIGhvd2V2ZXIgbG9uZyB0aW1lb3V0cyBhcmUgdXNlZCB0 byBsZXQga2VybmVsIGxldmVsCj4gPiA+ID4gPiB0aW1lb3V0cyBwb3AgdXAgZmlyc3QgaWYgaGl0 IGJ5IGEgYnVnLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBUaGUgZHJpdmVyIGlzIHJlYWR5IGZvciBl eHRlbmRpbmcgaXQgd2l0aCBhbiBhcmJpdHJhcnkgd29ya2xvYWQKPiA+ID4gPiA+IGZ1bmN0aW9u cyBhcyBuZWVkZWQuICBGb3Igbm93LCBhIHdvcmtsb2FkIGJhc2VkIG9uIGlndF9kdW1teWxvYWQg aXMKPiA+ID4gPiA+IGltcGxlbWVudGVkLCBoZW5jZSBzdWJ0ZXN0cyB3b3JrIG9ubHkgb24gaTkx NSBkcml2ZXIgYW5kIGFyZSBza2lwcGVkIG9uCj4gPiA+ID4gPiBvdGhlciBoYXJkd2FyZSwgdW5s ZXNzIHRoZXkgcHJvdmlkZSB0aGVpciBpbXBsZW1lbnRhdGlvbiBvZgo+ID4gPiA+ID4gaWd0X3Nw aW5fbmV3KCkgYW5kIGZyaWVuZHMsIG9yIG90aGVyIHdvcmtsb2FkcyBhcmUgaW1wbGVtZW50ZWQu Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEphbnVzeiBLcnp5c3p0b2ZpayA8 amFudXN6LmtyenlzenRvZmlrQGludGVsLmNvbT4KPiA+ID4gPiAKPiA+ID4gPiBIaWdoIGxldmVs IGNvbW1lbnRzIGFuZCBhcG9sb2dpZXMgdGhhdCBJIGRpZG4ndCBsb29rIGF0IHYyLXY3IGluIGJl dHdlZW4uCj4gCj4gdjEtdjMgd2VyZSBzdWJtaXR0ZWQgaW50ZXJuYWxseSwgc28geW91IGFjdHVh bGx5IGpvaW5lZCBhbmQgY29tbWVudGVkIGZpcnN0IG9uIAo+IGZpcnN0IHB1YmxpYyBzdWJtaXNz aW9uIHdoaWNoIEkgc2hvdWxkIGhhdmUgaGFkIG1hcmtlZCBhcyB2NCAoSSBoYWRuJ3QsIAo+IHNv cnJ5KS4KPiAKPiA+ID4gPiAKPiA+ID4gPiBUaGlzIGFsbCBzZWVtcyBleHRyZW1lbHkgY29tcGxl eCBmb3IgYSBzaW1wbGUgYmF0Y2ggc3Bpbm5lciBzdWJ0ZXN0IC4uLgo+ID4gPiAKPiA+ID4gTXkg aW5pdGlhbCBpbnRlbnRpb24gd2FzIHRvIGJ1aWxkIGEgc2ltcGxlIGhvdCB1bnBsdWcvdW5iaW5k IG9ubHkgdGVzdC4gSSAKPiA+ID4gcHJvcG9zZWQgdG8gdXNlIGFuIGFyYml0cmFyeSBleHRlcm5h bCBjb21tYW5kIGFzIGEgd29ya2xvYWQuICBUaGVuLCBvbiAKPiA+ID4gQW50b25pbydzIGFkdmlj ZSwgSSBzd2l0Y2hlZCB0byB0aGUgc3Bpbm5lciBiYXNlZCBpbnRlcm5hbCB3b3JrbG9hZCBhbmQg SSAKPiA+ID4gYWdyZWUgdGhhdCB3YXMgYSBnb29kIG1vdmUuICBUaGVuLCBQZXRyaSBhbmQgeW91 LCBEYW5pZWwsIHJlcXVlc3RlZCB0byBleHRlbmQgCj4gPiA+IHRoZSBzY29wZSBvZiB0aGUgdGVz dCB3aXRoIGRldmljZSByZWNvdmVyeSBhbmQgaGVhbHRoIGNoZWNraW5nLiAgQWxzbywgYSBmZXcg Cj4gPiA+IHBlb3BsZSwgaW5jbHVkaW5nIHlvdSwgRGFuaWVsLCByZXF1ZXN0ZWQgYXZhaWxhYmls aXR5IG9mIG1vcmUgd29ya2xvYWQgdHlwZSAKPiA+ID4gb3B0aW9ucy4gIEFzIGEgcmVzdWx0LCBJ J3ZlIGRlY2lkZWQgdG8gYnVpbGQgYSAqZnJhbWV3b3JrKiBmb3IgdGVzdGluZyBkcml2ZXIgCj4g PiA+IHVuYmluZCArIHJlYmluZCAvIGRldmljZSB1bnBsdWcgKyBidXMgcmVzY2FuIGJlaGF2aW9y IHVuZGVyIGRpZmZlcmVudCB3b3JrbG9hZCAKPiA+ID4gdHlwZXMsIGVhc2lseSBleHRlbmRhYmxl IHdpdGggbW9yZSB3b3JrbG9hZCBvcHRpb25zIGFzIG5lZWRlZCwgd2l0aCBvbmUgCj4gPiA+IGV4 YW1wbGUgd29ya2xvYWQgdHlwZSAtIGR1bW15IGxvYWQgb3Igc3BpbiBiYXRjaCAtIGluaXRpYWxs eSBpbXBsZW1lbnRlZC4gIAo+ID4gPiBUaGF0IHdhcyBhdCBsZWFzdCBteSBpbnRlbnRpb24gZm9y IHY2LTguICBJIHdvdWxkbid0IGNhbGwgaXQgYSBzaW1wbGUgYmF0Y2ggCj4gPiA+IHNwaW5uZXIg c3VidGVzdCBhbnkgbG9uZ2VyLgo+ID4gCj4gPiBNYXliZSBteSByZXZpZXcgZ290IHdyb25nLCBi dXQgSSBqdXN0IG1lYW50IHRoYXQgdGhlcmUncyBtb3JlIHRlc3RzIHRvCj4gPiB3cml0ZSBoZXJl Lgo+IAo+IFRoYXQgd2FzIGNsZWFyIGZvciBtZSwgaG93ZXZlciBJIHByb2JhYmx5IG1pc3VuZGVy c3Rvb2QgeW91ciBpbnRlbnRpb25zIGluIAo+IHJlZ2FyZCB0byBkZXZpY2UvZHJpdmVyIHJlY292 ZXJ5IGFmdGVyIHN1Y2Nlc3NmdWwgdW5wbHVnL3VuYmluZC4KPiAKPiA+IEdlbmVyYWxseSBJIHRo aW5rIGhhdmluZyB0aGUgZnJhbWV3b3JrL2dlbmVyaWMgc29sdXRpb24gYmVmb3JlCj4gPiB5b3Ug aGF2ZSBhbGwgdGhlIGFwcGxpY2F0aW9ucyBpcyB0aGUgd3Jvbmcgd2F5IHRvIGJ1aWxkIHNvbWV0 aGluZy4gVXN1YWxseQo+ID4gaXQgcmVzdWx0cyBpbiBzb21ldGhpbmcgd2hpY2ggaXMgZ2VuZXJp YyBpbiBhbGwgdGhlIHdyb25nIHdheXMsIGJ1dCBub3QgaW4KPiA+IHRoZSBvbmVzIHlvdSB3aWxs IGFjdHVhbGx5IG5lZWQuIFNvIGNvbXBsZXhpdHkgd2l0aCBubyBnYWluLiBCZXR0ZXIgdG8KPiA+ IC0gYWRkIGEgZmV3IHRlc3RzIGZpcnN0IHdpdGggY29weXBhc3RpbmcvbWluaW1hbCBjaGFuZ2Vz Cj4gPiAtIHJlZmFjdG9yIGhlbHBlcnMgb25jZSB5b3Ugc2VlIHRoZSByZWFsIHBhdHRlcm5zCj4g PiAtIG5vIGZyYW1ld29yaywgdGhhdCdzIHRoZSBtaWRsYXllciBtaXN0YWtlLCBzZWUKPiA+ICAg aHR0cHM6Ly9ibG9nLmZmd2xsLmNoLzIwMTYvMTIvbWlkbGF5ZXJzLW9uY2UtbW9yZS13aXRoLWZl ZWxpbmcuaHRtbCBhbmQKPiA+ICAgYWxsIHRoZSBhcnRpY2xlcyBsaW5rZWQgZnJvbSB0aGVyZS4K PiAKPiBPSywgdGhhbmtzIGZvciB5b3VyIHJlY29tbWVuZGF0aW9ucyBhbmQgdGhlIHJlZmVyZW5j ZXMuCj4gCj4gPiA+ID4gZG8gd2UgcmVhbGx5IG5lZWQgYWxsIHRoYXQgY29tcGxleGl0eSB3aXRo IDJuZCBwcm9jZXNzIAo+ID4gPiAKPiA+ID4gSWYgd2UgZHJvcCBtb2R1bGUgdW5sb2FkIG9wdGlv biB0aGVuIG5vLCB3ZSBkb24ndCBuZWVkIDJuZCBwcm9jZXNzLiAgCj4gPiAKPiA+IFdoeSBkb2Vz IG1vZHVsZSB1bmxvYWQgcmVxdWlyZSBhIDJuZCBwcm9jZXNzPyBXZSBkb24ndCBuZWVkIGEgMm5k IHByb2Nlc3MKPiA+IGluIG91ciBvdGhlciBtb2R1bGUgdW5sb2FkIHRlc3RzIGVpdGhlci4KPiAK PiBUaGF0J3Mgbm90IGxvbmdlciB0aGUgcHJvYmxlbSBhcyB3ZSdyZSBnb2luZyB0byBkcm9wIHRo ZSBtb2R1bGUgdW5sb2FkIHN0ZXAsIAo+IGJ1dCBqdXN0IHRvIHByb3ZpZGUgeW91IHdpdGggYW4g ZXhwbGFuYXRpb24gb2YgbXkgYXBwcm9hY2g6Cj4gSW4gY2FzZSBvZiB0aGUgc3BpbiB3b3JrbG9h ZCwgcmVmZXJlbmNlcyBhcmUgaGVsZCBhZnRlciB0aGUgd29ya2xvYWQgY3Jhc2hlcyAKPiBhbmQg aXQncyBub3QgcG9zc2libGUgdG8gdW5sb2FkIHRoZSBtb2R1bGUgdW5sZXNzIHdlIHB1dCB0aGVt LiAgIFNpbmNlIHRob3NlIAo+IHJlZmVyZW5jZXMgYXJlIGludGVybmFsIHRvIElHVCBsaWJyYXJp ZXMgYW5kIG5vdCBleHBvc2VkIHRvIGEgdXNlciwgcHV0dGluZyAKPiB0aGVtIGlzIG9ubHkgcG9z c2libGUgd2l0aCBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgSUdULiAgVGhvc2UgZnVuY3Rpb25zIGFy ZSAKPiBmdWxsIG9mIGNoZWNrcyBhZmZlY3Rpbmcgc3VidGVzdCByZXN1bHRzIGFuZCB1c2luZyB0 aGVtIHRvIGNsZWFuIHVwIHJlc291cmNlcyAKPiByZWxhdGVkIHRvIGEgbm8gbG9uZ2VyIGV4aXN0 aW5nIGRldmljZSB3b3VsZCByZXN1bHQgaW4gYSBzdWJ0ZXN0IGZhaWx1cmUgb3IgCj4gc2tpcCBh dCBsZWFzdC4gIFRoZSBtb3N0IHNpbXBsZSB3YXkgdG8gZ2V0IHJpZCBvZiB0aG9zZSBpc3N1ZXMg aXMgdG8gZW5jbG9zZSAKPiB0aG9zZSByZWZlcmVuY2VzIGluIGEgc3VicHJvY2VzcyBhbmQgd2Fp dCBmb3IgdGhlaXIgYXV0b21hdGljIHJlbGVhc2Ugb24gaXRzIAo+IGNvbXBsZXRpb24uCgoKSG0g d2hpY2ggcmVmZXJlbmNlcz8gQ2xvc2luZyB0aGUgZmlsZSBkZXNjcmlwdG9ycyBpcyBhbGwgd2Ug c2hvdWxkIG5lZWQgdG8KYmUgZG9pbmcgdG8gbWFrZSB0aGUgbW9kdWxlIHVubG9hZGFibGUuIEkg dGhpbmsgYW4gZXhwbGljaXQgaGVscGVyCmZ1bmN0aW9uIHRvIGRvIHRoYXQgKGV4cG9ydGVkIGZy b20gY29yZSBsaWIpIGlzIG11Y2ggYmV0dGVyIHRoYW4ga2lsbGluZyBhCnByb2Nlc3MgKG9yIHdh aXRpbmcgZm9yIHRoYXQgcHJvY2VzcyB0byBkaWUpLiBJdCdzIG1vcmUgZXhwbGljaXQgY29kZSBh dApsZWFzdCAoYW5kIHRoYXQncyBnZW5lcmFsbHkgYmV0dGVyIGZvciB0ZXN0Y2FzZXMpLgoKPiA+ ID4gPiBhbmQgd2F0Y2hlcnMgCj4gPiA+IAo+ID4gPiBUaGF0IHdhcyBwcmltYXJpbHkgbmVlZGVk IGZvciBzdWNjZXNzZnVsIG1vZHVsZSB1bmxvYWQuICBJZiB3ZSBkcm9wIHRoYXQgCj4gPiA+IG9w dGlvbiBhbmQgeW91IHRoaW5rIGRyaXZlciByZWJpbmQgLyBidXMgcmVzY2FuIG9wZXJhdGlvbnMg Y2FuIGJlIHBlcmZvcm1lZCAKPiA+ID4gYmxpbmRseSwgd2l0aG91dCBjaGVja2luZyBmb3IgY29t cGxldGlvbiBvZiBiYWNrZ3JvdW5kIHdvcmtsb2FkLCB0aGVuIEkgY2FuIAo+ID4gPiBkcm9wIHRo ZSB3YXRjaGVycy4KPiA+IAo+ID4gV2VsbCB3ZSBfaGF2ZV8gdG8gZG8gdW5iaW5kcyB3aXRob3V0 IGNoZWNraW5nIHRoZSBiYWNrZ3JvdW5kIHdvcmtsb2FkIGhhcwo+ID4gY29tcGxldGVkLiBUaGF0 J3MgdGhlIGVudGlyZSBwb2ludCBvZiB0ZXN0aW5nIGhvdHVucGx1Zy4gCj4gCj4gSSBhZ3JlZSwg YW5kIHRoZSB0ZXN0IHBlcmZvcm1zIGFsbCB1bmJpbmRzIHRoYXQgd2F5LCBpLmUuLCB3aXRob3V0 IGNoZWNraW5nIAo+IHRoZSBiYWNrZ3JvdW5kIHdvcmtsb2FkIGhhcyBjb21wbGV0ZWQuICBXYWl0 aW5nIGZvciBiYWNrZ3JvdW5kIHdvcmtsb2FkIAo+IGNvbXBsZXRpb24gYXBwbGllcyBvbmx5IHRv IHdoYXQgSSdtIGNvbnNpZGVyaW5nIGEgZGV2aWNlIHJlY292ZXJ5IHBoYXNlLCBhbmQgCj4gbm90 IHRvIHRoZSAibWFpbiIgdW5iaW5kL3VucGx1ZyB0ZXN0IHBoYXNlIGluIGFueSB3YXkuCgpBaCBv ay4gQXQgbGVhc3QgZm9yIHJlc2NhbiBJIHRoaW5rIHdvdWxkIGFsc28gbWFrZSBzZW5zZSB0byBu b3Qgd2FpdCwKdGhhdCdzIGFub3RoZXIgaW50ZXJlc3RpbmcgKGFuZCBldmVuIG1vcmUgZXZpbCkg dGVzdGNhc2UuIFRoaXMgd291bGQgY2hlY2sKZm9yIGlzc3VlcyBhcm91bmQgYXNzaWduaW5nIGRl dmljZSBub2RlIG1pbm9yIG51bWJlcnMuIFdlJ2Qgb25seSBuZWVkIG9uZQpzdWNoIGNhc2UsIGFu ZCBhbGwgaXQgbmVlZHMgdG8gZG8gcmVhbGx5IGlzIGtlZXAgdGhlIGRybSBkZXZpY2UgZmQgb3Bl bi4KCj4gPiBJdCdzIGFsc28gd2h5Cj4gPiB0aGVyZSdzIGxvdHMgb2Ygd29yayB0byBkbyBoZXJl LCBiZWNhdXNlIHRoZSBrZXJuZWwgaXMgdG90YWxseSBub3QgcmVhZHkKPiA+IGZvciB0aGlzLgo+ ID4gCj4gPiBGaXJzdCBzdG9wcGluZyBldmVyeXRoaW5nIGFuZCB0aGVuIHVubG9hZGluZyBpc24n dCBhbiBpbnRlcmVzdGluZyB0ZXN0LAo+IAo+IFNpbmNlIGl0cyBpbnRyb2R1Y3Rpb24sIHRoZSBt b2R1bGUgdW5sb2FkIHN0ZXAgd2FzIGludGVuZGVkIGFzIGEgcGFydCBvZiBhIAo+IHBvc3Qtc3Vi dGVzdCBkZXZpY2UgcmVjb3ZlcnkgcGhhc2UsIG5vdCB0aGUgc3VidGVzdCBtZXJpdC4gIEkgYWRk ZWQgdGhhdCBzdGVwIAo+IGJlY2F1c2UgSSB0aG91Z2h0IHRoYXQgd291bGQgYmUgdGhlIG1vc3Qg cmVsaWFibGUgd2F5IG9mIHNhdGlzZnlpbmcgdGhlIENJIAo+IHJlcXVpcmVtZW50IG9uIHJlc3Rv cmluZyB0aGUgZGV2aWNlIHRvIHRoZSBzdGF0ZSByZWFkeSBmb3IgbmV4dCB0ZXN0cyB3aXRob3V0 IAo+IHJlYm9vdCBvciByZWFsIGRldmljZSBwb3dlci1vbiByZXNldCBvbiByZWFsIGhhcmR3YXJl IGJ1cyByZXBsdWcuCgpZZXMgSSB1bmRlcnN0YW5kIHRoYXQuIEJ1dCB3aGF0IGFyZSB5b3UgdHJ5 aW5nIHRvIHJlY292ZXIgZnJvbSB3aXRoIGEKbW9kdWxlIHJlbG9hZD8gSnVzdCBjb2RlIHNoYXJp bmcgYXMgeW91IGV4cGxhaW4gYmVsb3csIG9yIG90aGVyIHJlYXNvbnM/Cgo+ID4gdGhhdCdzIG1v cmUgb3IgbGVzcyBleGFjdGx5IHdoYXQgb3VyIHZhcmlvdXMgbW9kdWxlIHVubG9hZCB0ZXN0cyBh cmUKPiA+IGRvaW5nIGFscmVhZHkuCj4gCj4gWWVzLCBhbmQgaW4gdjUtdjcgSSB3YXMgZXZlbiB1 c2luZyB0aGUgZXhpc3RpbmcgaTkxNV9tb2R1bGVfbG9hZCB0ZXN0IGFzIGFuIAo+IGV4dGVybmFs IGhlbHBlciBjb21tYW5kIHBlcmZvcm1pbmcgZGV2aWNlIHJlY292ZXJ5IGFuZCBoZWFsdGhjaGVj ayBwaGFzZXMgaW4gCj4gb3JkZXIgdG8gYXZvaWQgcmVpbXBsZW1lbnRpbmcgaXRzIGNvZGUgaGVy ZS4KPiAKPiA+ID4gPiBhbmQgYSBidW5jaCBvZiBjYWxsYmFja3MgYW5kIGV2ZXJ5dGhpbmcsIGp1 c3QgZG8gdG8gYSBob3RyZW1vdmUgdGVzdGNhc2U/Cj4gPiA+IAo+ID4gPiBJIGNhbiBzdGlsbCBk cm9wIHRoZSBmcmFtZXdvcmsgYW5kIHN3aXRjaCBiYWNrIHRvIHRoZSBpbml0aWFsIHNpbXBsZSBz dHJ1Y3R1cmUgCj4gPiA+IHdpdGggb25lIG9yIHR3byBmaXhlZCBzdWJ0ZXN0cyBpZiB5b3UgZG9u J3QgbGlrZSBteSBzdHJ1Y3R1cmFsIGFwcHJvYWNoLgo+ID4gCj4gPiBTZWUgYWJvdmUgZm9yIHdo eSwgSSB0aGluayB0aGF0IHdpbGwgcmVzdWx0IGluIGJldHRlciBjb2RlIGluIHRoZSBlbmQuCj4g Cj4gT0suCj4gCj4gPiA+ID4gVmVyeSBmaXJzdCBwYXRjaCBsb29rZWQgbXVjaCBtb3JlIHJlYXNv bmFibGUsIGFzaWRlIGZyb20gdGhhdCBpdCBicm9rZSBDSQo+ID4gPiA+IHNpbmNlIGl0IGRpZG4n dCByZWJpbmQgdGhlIGRyaXZlci4gCj4gPiA+IAo+ID4gPiBTb3JyeSwgbXkgdW5kZXJzdGFuZGlu ZyBvZiB5b3VyIGFuZCBQZXRyaSdzIGNvbW1lbnRzIHdhcyBhIGJpdCBkaWZmZXJlbnQsIEkgCj4g PiA+IHRob3VnaHQgdGhhdCBieSBtb3JlIHRoYW4gYmVzdCBlZmZvcnQgeW91IG1lYW50IGRvaW5n IGV2ZXJ5dGhpbmcgcG9zc2libGUgdG8gCj4gPiA+IHJlc3RvcmUgdGhlIGRldmljZSB0byBiZSBy ZWFkeSBmb3IgbmV4dCB0ZXN0IHdpdGhvdXQgcmVib290LCBhbmQgbW9kdWxlIHVubG9hZCAKPiA+ ID4gYW5kIHJlbG9hZCBzZWVtZWQgdGhlIG1vc3QgcmVsaWFibGUgb3B0aW9uIHRvIG1lLiAgTm93 IEkgY2FuIHNlZSB0aGF0IHRoZXJlIAo+ID4gPiB3ZXJlIHByb2JhYmx5IHR3byBkaWZmZXJlbnQg cmVxdWlyZW1lbnRzLiAgWW91IHdlcmUgY29uc2lkZXJpbmcgdGhlIHRlc3QgCj4gPiA+IGluY29t cGxldGUgYmVjYXVzZSBpdCB3YXMgcGVyZm9ybWluZyBvbmx5IHRoZSB1bmJpbmQvdW5wbHVnIHBh cnQgYW5kIG5vdCAKPiA+ID4gcmViaW5kL3Jlc2Nhbiwgd2hpbGUgUGV0cmkgd2FzIHByb2JhYmx5 IGludGVyZXN0ZWQgbW9zdGx5IGluIHRoZSBkZXZpY2UgYmVpbmcgCj4gPiA+IHJlYWR5IGZvciBu ZXh0IHRlc3RzIHdpdGhvdXQgcmVib290LCBubyBtYXR0ZXIgd2hpY2ggd2F5Lgo+ID4gCj4gPiBX ZWxsIGl0J3MgdGhlIHNhbWUgcmVxdWVzdCwgYW5kIHJlYmluZC9yZXNjYW4gL3Nob3VsZC8gcmVz dWx0IGluIGEgd29ya2luZwo+ID4gZGV2aWNlIGFnYWluLiBJZiBub3QsIHRoZW4gSSBndWVzcyB3 ZSBhbHNvIGhhdmUgYSBidWcgb24gb3VyIGhvdHJlcGx1Zwo+ID4gY29kZS4gV2hpY2ggYWdhaW4g aXMgd29ydGggdGVzdGluZyBmb3IuCj4gPiAKPiA+ID4gPiBXZSBjYW4gYWx3YXlzIGFkZCBjb21w bGV4aXR5IGxhdGVyIG9uCj4gPiA+ID4gb25jZSB3ZSBoYXZlIGRtYS1idWYvZG1hLWZlbmNlL2tt cy93aGF0ZXZlciBlbHNlIHN1YnN0ZXN0cyBoZXJlLgo+ID4gPiAKPiA+ID4gT0ssIGFzIHlvdSB3 aXNoLgo+ID4gPiAKPiA+ID4gPiBBbHNvLCBJIHRoaW5rIHdlIHNob3VsZCBoYXZlIGF0IGxlYXN0 IG9uZSBob3RyZW1vdmUtb25seS1ub3RoaW5nLXNwZWNpYWwKPiA+ID4gPiBzdWJ0ZXN0IGhlcmUs IGkuZS4gd2l0aG91dCBldmVuIHRoZSBidXN5IGJhdGNoLgo+ID4gPiAKPiA+ID4gVGhhdCBzZWVt cyB0cml2aWFsIHRvIGFkanVzdCB0aGUgZnJhbWV3b3JrIHNvIGl0IGFjY2VwdGVkIE5VTEwgd29y a2xvYWQsIGlmIAo+ID4gPiB0aGUgZnJhbWV3b3JrIHN1cnZpdmVkLiBBbnl3YXksIEknbGwgZG8g dGhhdC4gIFNob3VsZCBJIHB1dCBpdCBpbiBhIHNlcGFyYXRlIAo+ID4gPiBOVUxMIHdvcmtsb2Fk IHN1YnRlc3QgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZyb20gaWd0X21haW4/ICBPciBhZGQgaXQg dG8gdGhlIAo+ID4gPiBzcGluIHdvcmtsb2FkIHN1YnRlc3QgZnVuY3Rpb24gc3BlY2lmaWNhbGx5 IGFzIGFuIG9wdGlvbj8KPiA+IAo+ID4gU2VwYXJhdGUgdGVzdCBhcyB0aGUgZmlyc3Qgc3VidGVz dC4KPiAKPiBPSy4KPiAKPiA+IE1heWJlIGV2ZW4gaW5jbHVkZSB0aGUgInNodXQKPiA+IGV2ZXJ5 dGhpbmcgb2ZmIGZpcnN0IiBsb2dpYyBmcm9tIG1vZHVsZSB1bmxvYWQsCj4gCj4gRG8geW91IG1l YW4gaTkxNV9tb2R1bGVfbG9hZC5jPwoKT24gMm5kIHRob3VnaHQsIGZvciBhIGhvdHVucGx1ZyB3 ZSBzaG91bGRuJ3QgbmVlZCBhbnkgb2YgdGhhdC4gVGhvc2UgInNodXQKZXZlcnl0aGluZyBvZmYg Zmlyc3QiIHN0ZXBzIGFyZSBqdXN0IHRvIGxvd2VyIHRoZSBtb2R1bGUgdXNlIGNvdW50LCBzbwp3 ZSdyZSBhbGxvd2VkIHRvIHVubG9hZCB0aGUgbW9kdWxlLiBUaGUgdW5wbHVnIGNvZGUgd2UgcnVu IHNob3VsZCB0YWtlCmNhcmUgb2YgYWxsIHRoYXQgYWxyZWFkeSBmb3IgdXMgZm9yIGEgKGZha2Up IGhvdHVucGx1Zy4gU28gbW9kdWxlIHJlbG9hZApzaG91bGQganVzdCB3b3JrLiBCdXQgdGhlbiBJ IHN0aWxsIGRvbid0IHVuZGVyc3RhbmQgd2hlcmUgeW91IHNlZSB0aGUKYmVuZWZpdCBpbiB1bmxv YWRpbmcvcmVsb2FkaW5nIHRoZSBtb2R1bGUuCgo+ID4gdG8gaGF2ZSB0aGUgbW9zdCBiYXNlbGlu ZSB0ZXN0IHBvc3NpYmxlLgo+ID4gCj4gPiA+ID4gSSdtIGFsc28gbm90IHN1cmUgd2h5IHdlIGFs c28gcHV0IG1vZHVsZSB1bmxvYWQgdGVzdHMgaW4gdGhlcmUuIAo+ID4gPiAKPiA+ID4gQXMgSSB0 cmllZCB0byBleHBsYWluIGFib3ZlLCBJIGludHJvZHVjZWQgbW9kdWxlIHVubG9hZCBpbiBvcmRl ciB0byBzYXRpc2Z5IAo+ID4gPiB0aGUgQ0kgcmVxdWlyZW1lbnQgb24gdGhlIGRldmljZSBiZWlu ZyByZWFkeSBmb3IgbmV4dCB0ZXN0IHdpdGhvdXQgcmVib290IGFzIAo+ID4gPiBtdWNoIGFzIHBv c3NpYmxlLgo+ID4gCj4gPiBIbSwgYnV0IHdoeT8gV2hhdCBkb2VzIG1vZHVsZSByZWxvYWQgaGVs cCBpbiB0aGlzIHJlZ2FyZCB0aGF0IGEgcmViaW5kCj4gPiBjYW4ndCBkbz8gQXNpZGUgZnJvbSB0 ZXN0aW5nIG1vZHVsZSByZWxvYWQsIHdoaWNoIGlzIGEgZGV2ZWxvcGVyIGZlYXR1cmUKPiA+IGFu ZCBhbHJlYWR5IHRlc3RlZCBlbHNld2hlcmUuCj4gCj4gQXMgSSBzYWlkLCBJIGRlY2lkZWQgdG8g dXNlIG1vZHVsZSB1bmxvYWQgYXMgSSB0aG91Z2h0IGl0IHdvdWxkIGJlIHRoZSBtb3N0IAo+IHJl bGlhYmxlIHdheSBvZiBkZXZpY2UgcmVjb3ZlcnkgZnJvbSBzaW11bGF0ZWQgdW5wbHVnIGluIGNh c2Ugbm8gcmVhbCBwb3dlci1vbiAKPiByZXNldCBpcyBwZXJmb3JtZWQuICBJIGRpZG4ndCBpbnNp c3Qgb24ga2VlcGluZyBpdCB0aGVyZSBhdCBhbGwsIEkgb25seSB0cmllZCAKPiB0byBleHBsYWlu IHdoeSBJIGRpZCB0aGF0LiAgQXMgdGhhdCBjYW4ndCBoZWxwIGluIGFueSB3YXkgdG8gcmVjb3Zl ciB0aGUgCj4gZGV2aWNlIHNvIGl0IGlzIHJlYWR5IGZvciBuZXh0IHRlc3RzIGFzIENJIHJlcXVl c3RlZCB0aGVuIEknbGwgYmUgaGFwcHkgdG8gCj4gcmVtb3ZlIGl0IGFuZCBzdGljayB0byBwdXJl IGRyaXZlciByZWJpbmQgLyBidXMgcmVzY2FuIG9wZXJhdGlvbnMuCj4gCj4gPiBJJ20gYWxzbyBu b3Qgc2VlaW5nIG11Y2ggaW50ZXJhY3Rpb25zIGJldHdlZW4gaG90dW5wbHVnIGFuZCBtb2R1bGUg dW5sb2FkLgo+ID4gCj4gPiBUaGUgb25lIGludGVyZXN0aW5nIHRlc3RjYXNlIEkgc2VlIGlzIHRy eWluZyB0byB1bmxvYWQgdGhlIG1vZHVsZSBhZnRlciB3ZQo+ID4gaG90dW5wbHVnZ2VkLCB3aGls ZSB0aGUgZHJpdmVyIGlzIHN0aWxsIGluIHVzZSBzb21ld2hlcmUgKG9wZW4gZHJtIGZkLAo+ID4g b3BlbiBkbWEtYnVmIGZkLCBvcGVuIGRtYS1mZW5jZSBmZCkuIFRoYXQgc2hvdWxkIHJlc3VsdCBp biBhIGZhaWx1cmUsIGFuZAo+ID4gaXQncyB1c2VmdWwgdG8gdmFsaWRhdGUgdGhhdCB0aGUga2Vy bmVsIGlzIGhhbmRsaW5nIHRoZSBtb2R1bGUgcmVmY291bnRpbmcKPiA+IGNvcnJlY3RseSBpbiBh bGwgdGhlc2UgY2FzZXMuIEJ1dCB0aGF0J3MgYSBzcGVjaWZpYyBuZWdhdGl2ZSB0ZXN0Y2FzZSAo YW5kCj4gPiBhY3R1YWxseSBiZWluZyBhYmxlIHRvIHVubG9hZCB3b3VsZCBiZSBhIGZhaWx1cmUg YW5kIGxpa2VseSByZXN1bHQgaW4gYQo+ID4ga2VybmVsIG9vcHMpLCBJJ20gbm90IHNlZWluZyB0 aGUgYmVuZWZpdCBvZiByZWxvYWRpbmcgdGhlIG1vZHVsZS4KPiAKPiBUaGF0J3MgcGVyZmVjdGx5 IGNsZWFyIGZvciBtZSwgdGhlIG9wdGlvbmFsIG1vZHVsZSB1bmxvYWQgc3RlcCB3aWxsIG5vdCBi ZSAKPiB0aGVyZSBvbiBuZXh0IGl0ZXJhdGlvbi4KClRoYXQgbWlnaHQgYmUgb3ZlcnNob290aW5n IHNsaWdodGx5LiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgaW50ZXJlc3RpbmcKaG90dW5wbHVnIHRl c3RjYXNlIGludm9sdmluZyBtb2R1bGUgdW5sb2FkLiBCdXQgaXQncyBtb3JlIGEgc3BlY2lhbCBj YXNlLApub3Qgc29tZXRoaW5nIHdlIG5lZWQgdG8gZG8gZm9yIGFsbCBzdWJ0ZXN0cy4KPiAKPiA+ ID4gPiBDb21wYXJlZAo+ID4gPiA+IHRvIGhvdHVucGx1ZyBvZiBhIGRpc2NyZXRlIGdmeCBjYXJk IChleHRlcm5hbCBvbmUgb3ZlciB1c2Igb3IgdGh1bmRlcmJvbHQKPiA+ID4gPiBvciB3aGF0ZXZl ciksIHdoaWNoIGlzIHNvbWV0aGluZyB1c2VycyBjYW4gZG8sIG1vZHVsZSB1bmxvYWQgaXMgZXhw bGljaXRseSBhIAo+ID4gPiA+IGRldmVsb3BlciBvbmx5IGZlYXR1cmUuCj4gPiA+IAo+ID4gPiBN eSBhcHByb2FjaCB3YXMgdG8gYmUgYWJsZSB0byB0ZXN0IGRyaXZlciBiZWhhdmlvciB1bmRlciBh bnkgaG90IHVubG9hZCAKPiA+ID4gb3BlcmF0aW9uIGF2YWlsYWJsZSB0byBhIHVzZXIsIG5vIG1h dHRlciBpZiBkZXZlbG9wZXIgb3JpZW50ZWQgb3Igbm90LCBzbyB3ZSAKPiA+ID4gY2FuIG1ha2Ug dGhlIGRyaXZlciByZXNpc3RhbnQgdG8gdXNlcnMgcGVyZm9ybWluZyBwb3RlbnRpYWxseSBkYW5n ZXJvdXMgaG90IAo+ID4gPiB1bmJpbmQvdW5wbHVnIG9wZXJhdGlvbnMgYXZhaWxhYmxlIHRvIHRo ZW0sIGludGVudGlvbmFsbHkgb3Igbm90Lgo+ID4gCj4gPiBZZXMgSSBhZ3JlZSB3aXRoIHRoYXQs IHdlIG5lZWQgdG8gdGVzdCBob3R1bnBsdWcuCj4gPiAKPiA+IGJ0dyB0aGUgcmVhbCBmdW4gaXNu J3QgdGhlIHVuYmluZCBpbiBzeXNmcywgYnV0IHBoeXNpY2FsbHkgdW5wbHVnZ2luZyBhCj4gPiBw Y2ktZSBvciB0aHVuZGVyYm9sdC91c2ItYyBnZnggY2FyZC4gSW1vIHRoYXQncyB3aHkgd2UgbmVl ZCB0byBoYXZlIHRoaXMsCj4gPiBhbmQgdGhlIGJlc3Qgd2F5IHRvIHRlc3QgdGhhdCBob3R1bnBs dWcgaXMgdGhyb3VnaCB0aGUgc3lzZnMgdW5iaW5kCj4gPiBzdXBwb3J0IChpdCdzIG5vdCBleGFj dGx5IHRoZSBzYW1lIHNpbmNlIHRoaXMgd2F5IHdlJ2xsIG5ldmVyIHNlZSBmYWlsaW5nCj4gPiBw Y2kgdHJhbnNhY3Rpb25zLCB3aGljaCBhcmUgYW4gZW50aXJlbHkgZGlmZmVyZW50IGtpbmQgb2Yg ZnVuKS4KPiAKPiBJIGZ1bGx5IGFncmVlLCBob3dldmVyIHBsZWFzZSBub3RlIHRoYXQgd2hhdCBJ J20gY2FsbGluZyBkZXZpY2UgaG90IHVucGx1ZyBpcyAKPiBwcm9iYWJseSBzdGlsbCBhbiBpbnRl cmVzdGluZyBzeXNmcyBvcHRpb24gYXNpZGUgZHJpdmVyIGhvdCB1bmJpbmQuCj4gCj4gPiA+ID4g V2UgZG8gbm90IGV4cGVjdCBtb2R1bGUgdW5sb2FkIHRvIHdvcmsgdW5kZXIgYWxsCj4gPiA+ID4g cG9zc2libGUgY29uZGl0aW9ucyAoaXQgZG9lc24ndCkuIAo+ID4gPiAKPiA+ID4gRG8geW91IHRo aW5rIHRoYXQgZHJpdmVyIHJlYmluZCBvcGVyYXRpb24gaGFzIG1vcmUgY2hhbmNlcyB0byBzdWNj ZWVkLCAKPiA+ID4gZXNwZWNpYWxseSBvbiBhIGRldmljZSBvbiB3aGljaCBhIGJ1cyB1bnBsdWcg b3BlcmF0aW9uIHdhcyBub3QgYWN0dWFsbHkgCj4gPiA+IHBlcmZvcm1lZCBidXQgb25seSBzaW11 bGF0ZWQgdmlhIHN5c2ZzLCBvbiBhIGRldmljZSB3aGljaCB0aGVuIGhhcyBiZWVuIGxlZnQgCj4g PiA+IGluIGFuIHVucHJlZGljdGFibGUgc3RhdGUgYW5kIGhhc24ndCB1bmRlcmdvbmUgYSBoYXJk d2FyZSBwb3dlci1vbiByZXNldCBvbiAKPiA+ID4gcGh5c2ljYWwgYnVzIHJlLXBsdWc/Cj4gPiAK PiA+IFRoZXJlJ3MgZGVmaW5pdGVseSBwb3RlbnRpYWwgZm9yIGJ1Z3MsIGJ1dCBJIGRvbid0IHNl ZSBob3cgbW9kdWxlIHJlbG9hZAo+ID4gaGVscHMuIE1vZHVsZSByZWxvYWQgaXMgZXNzZW50aWFs bHk6Cj4gPiAKPiA+IC0gdW5iaW5kIGRldmljZXMKPiA+IC0gdW5sb2FkIG1vZHVsZQo+ID4gLSBy ZWxvYWQgbW9kdWxlCj4gPiAtIHJlYmluZCBhbGwgZGV2aWNlcwo+ID4gCj4gPiBUaGUgb25seSBh ZGRpdGlvbmFsIG1hZ2ljIHRoYXQgbW9kdWxlIHVubG9hZCBjYW4gcGFwZXIgb3ZlciBpcyB0aGF0 IGl0J3MKPiA+IGRpc2FsbG93ZWQgd2hpbGUgYW55b25lIGlzIHN0aWxsIHVzaW5nIGFueSBkZXZp Y2VzIChhc3N1bWluZyB0aGUgbW9kdWxlCj4gPiByZWZjb3VudCBjb2RlIGlzIGNvcnJlY3QpLiBU aGF0J3Mgbm90IHRoZSBjYXNlIGZvciB1bmJpbmQvaG90dW5wbHVnLiBCdXQKPiA+IHRoYXQncyBp dCwgdGhlcmUncyBubyBhZGRpdGlvbmFsIG1hZ2ljIGNvZGUgYmVpbmcgcnVuIHdoZW4geW91IHVu bG9hZCB0aGUKPiA+IG1vZHVsZS4gSGVuY2Ugd2h5IEkgZG9uJ3QgdW5kZXJzdGFuZCB3aHkgeW91 IHdhbnQgdG8gZG8gdGhhdC4KPiAKPiBOb3QgYW55IGxvbmdlciA6LSkKPiAKPiA+ID4gPiBJJ2Qg ZHJvcCB0aGF0IHBhcnQgYW5kIGZvY3VzIGNvbXBsZXRlbHkKPiA+ID4gPiBvbiB0aGUgaG90cmVt b3ZlL3VuYmluZCB0ZXN0Y2FzZSBoZXJlLgo+ID4gPiAKPiA+ID4gRHJpdmVyIHVuYmluZCAvIGRl dmljZSB1bnBsdWcgdmlhIHN5c2ZzIGNhbiBhbHNvIGJlIGNvbnNpZGVyZWQgZGV2ZWxvcGVyIG9u bHkgCj4gPiA+IGZlYXR1cmVzLiBEbyB5b3UgdGhpbmsgd2Ugc2hvdWxkIGRyb3AgZHJpdmVyIHVu YmluZCBvcHRpb24sIGxlYXZpbmcgb25seSAKPiA+ID4gZGV2aWNlIHVucGx1ZyB2aWEgc3lzZnMg Zm9yIHdoaWNoIHdlIG1heSBoYXZlIG5vIGdvb2Qgbm9uLWRldmVsb3BlciAKPiA+ID4gYWx0ZXJu YXRpdmU/Cj4gPiAKPiA+IFlhbmtpbmcgdGhlIGNhYmxlIGZvciBlLmcuIHVzYi1jL3RodW5kZXJi b2x0IGV4dGVybmFsIGdwdSBpcyB2ZXJ5IG11Y2ggYQo+ID4gdXNlciBhY3Rpb24uIFRoYXQncyB3 aHkgd2UgY2FyZS4KPiA+IAo+ID4gV2UgZGlkbid0IGNhcmUgZm9yIHVuYmluZCAoSSB3b250Zml4 IGNsb3NlZCBhbGwgdGhlIGJ1Z3MgbXlzZWxmKSB3aGlsZQo+ID4gaW50ZWwgb25seSBjcmVhdGVk IGJ1aWx0LWluIGdwdXMgYmVjYXVzZSBpdCdzIGluZGVlZCBmYWlybHkgcG9pbnRsZXNzIHRvCj4g PiB1bmJpbmQgdGhlc2UuCj4gPiAKPiA+IE90aGVyIGJpdCBJIGRvbid0IHF1aXRlIGdldDogV2hh dCdzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdW5iaW5kIGFuZAo+ID4gdW5wbHVnPwo+IAo+IEkn bSBub3Qgc3VyZSB3aGF0IGluZm9ybWF0aW9uIHlvdSBhcmUgbWlzc2luZy4gIFdoYXQgdGhlIHRl c3QgaXMgZG9pbmcgaXM6Cj4gCj4gZHJpdmVyIHVuYmluZDogZWNobyAiPGRldmljZSBidXMnIGFk ZHJlc3M+IiA+L3N5cy9idXMvPGJ1cz4vZHJpdmVycy88ZHJpdmVyPi91bmJpbmQKPiB2cy4KPiB2 aXJ0dWFsIGRldmljZSB1bnBsdWc6IGVjaG8gMSA+L3N5cy9idXMvPGJ1cz4vZGV2aWNlcy88ZGV2 aWNlPi9yZW1vdmUKCkkgd2FzIG1pc3NpbmcgdGhlIGFib3ZlIEkgZ3Vlc3MuCgpTbyBsb29raW5n IGF0IGtlcm5lbCBjb2RlIHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgd2hlbiB3ZSB1bmJpbmQgdGhl IGVudGlyZQpkcml2ZXIsIHdlIGxvb3Agb3ZlciBhbGwgY3VycnJlbnRseSBib3VuZCBkZXZpY2Vz IGFuZCBkbyB0aGUgc2FtZSBhcyB0aGUKcmVtb3ZlIHN5c2ZzIGZpbGUuIFNvIGtpbmRhIHJlZHVu ZGFudCwgSSdkIGRyb3AgdGhlIGRyaXZlciB1bmJpbmQKdGVzdGNhc2UuCgpBbHNvLCBhcmUgeW91 IGRpZ2dpbmcgYXJvdW5kIGluIHRoZSBrZXJuZWwgYWxyZWFkeSBhbmQgdHJ5aW5nIHRvCnVuZGVy c3RhbmQgd2hhdCdzIGdvaW5nIG9uIGFuZCBob3cgaXQgYWxsIHRpZXMgdG9nZXRoZXI/IEFuZCBo YXZlIHlvdQpzdGFydGVkIHRvIGxvb2sgYXQgdGhlIGJ1Z3MgdGhpcyB1bmNvdmVycyBpbiB0aGUg a2VybmVsLCBvciB3aG8ncyBzdXBwb3NlZAp0byB3b3JrIG9uIHRoYXQgc2lkZSBvZiB0aGlzIGVm Zm9ydD8KCkJvbnVzIHBvaW50cyBpZiB3ZSB1bmJpbmQgdGhlIHNhbWUgZGV2aWNlIGFzIHdlJ2Qg cGljayBmb3IgdGhlIGRybSBmZAoodGhlcmUncyBzb21lIHNlbGVjdGlvbiBsb2dpYywgYW5kIGlm IHlvdSBnbyB0aHJvdWdoIC9zeXMvY2xhc3MvZHJtIHlvdQpzaG91bGQgZmluZCB0aGUgcmlnaHQg ZGV2aWNlKS4gVGhpcyBpcyByZWxldmFudCBmb3IgZGlzY3JldGUvbXVsdGktZ3B1CnN5c3RlbXMu Cgo+IFBhbmljIGNhbGwgdHJhY2VzIGxvb2sgYSBiaXQgZGlmZmVyZW50LCB5b3UgbWF5IHdhbnQg dG8gY29tcGFyZSB0aGUgZm9sbG93aW5nIHR3bzoKPiBodHRwczovL2ludGVsLWdmeC1jaS4wMS5v cmcvdHJlZS9kcm0tdGlwL1RyeWJvdElHVF8xNC9zaGFyZC1pY2xiMS9pZ3RAY29yZV9ob3RfcmVs b2FkQHNwaW4tdW5iaW5kLmh0bWwKPiBodHRwczovL2ludGVsLWdmeC1jaS4wMS5vcmcvdHJlZS9k cm0tdGlwL1RyeWJvdElHVF8xNC9zaGFyZC1pY2xiNC9pZ3RAY29yZV9ob3RfcmVsb2FkQHNwaW4t dW5wbHVnLmh0bWwKCkhtIEkgdGhpbmsgd2UgYWxzbyBuZWVkIGEgaG90dW5wbHVnIHRlc3RjYXNl IHRoYXQgZG9lcyBhYnNvbHV0ZWx5IG5vdGhpbmcKZmlyc3QsIGkuZS4gbm8gc3BpbiBiYXRjaGVz LCBubyBvcGVuIGRybSBmaWxlcywgbm90aGluZyBlbHNlLgoKPiByZWJpbmQ6IGVjaG8gIjxkZXZp Y2UgYnVzJyBhZGRyZXNzPiIgPi9zeXMvYnVzLzxidXM+L2RyaXZlcnMvPGRyaXZlcj4vYmluZAo+ IHZzLgo+IHJlcGx1ZzogZWNobyAxID4vc3lzL2J1cy88YnVzPi9yZXNjYW4KPiAKPiBXaXRoIG5v IHBhbmljcyBhY2NvbXBhbnlpbmcgZHJpdmVyIHVuYmluZCAvIGRldmljZSB1bnBsdWcgdW5kZXIg YWN0aXZlIHNwaW4gCj4gd29ya2xvYWQgb24gb2xkZXIgaGFyZHdhcmUsIHRoZSByZWNvdmVyeSBw aGFzZSBpcyBob3dldmVyIHN0aWxsIGdpdmluZyBhIAo+IGRpZmZlcmVudCByZXN1bHQgZm9yIGVh Y2ggb2YgdGhvc2UgdHdvIG1ldGhvZHM6Cj4gaHR0cHM6Ly9pbnRlbC1nZngtY2kuMDEub3JnL3Ry ZWUvZHJtLXRpcC9Ucnlib3RJR1RfMTQvc2hhcmQtaHN3MS9pZ3RAY29yZV9ob3RfcmVsb2FkQHNw aW4tdW5iaW5kLmh0bWwKPiBodHRwczovL2ludGVsLWdmeC1jaS4wMS5vcmcvdHJlZS9kcm0tdGlw L1RyeWJvdElHVF8xNC9zaGFyZC1oc3c1L2lndEBjb3JlX2hvdF9yZWxvYWRAc3Bpbi11bnBsdWcu aHRtbAoKU2hvdWxkbid0IHJlYWxseSBiZSBhIGRpZmZlcmVuY2UsIGJ1dCBtYXliZSB0aGVyZSdz IHRpbWluZyBjaGFuZ2VzIHRoYXQKc2xpZ2h0bHkgaW5mbHVlbmNlIHRoZSBvdXRjb21lLgoKPiBC VFcsIHRyeWJvdCByZXN1bHRzIGNvbmZpcm0gdGhhdCBtb2R1bGUgdW5sb2FkIHJlYWxseSBkb2Vz bid0IGhlbHA6Cj4gaHR0cHM6Ly9pbnRlbC1nZngtY2kuMDEub3JnL3RyZWUvZHJtLXRpcC9Ucnli b3RJR1RfMTQvc2hhcmQtaHN3OC9pZ3RAY29yZV9ob3RfcmVsb2FkQHNwaW4tdW5wbHVnLXVubG9h ZC5odG1sCgpZZWFoIHdvcnN0IGNhc2Ugd2UgaGF2ZSBhbiBhZGRpdGlvbmFsIG1vZHVsZSByZWZj b3VudCBidWcgYW5kIHRoZW4gbW9kdWxlCnVubG9hZCB3aWxsIG1ha2UgdGhpbmdzIHdvcnNlLiBJ IGNhbid0IGNvbWUgdXAgd2l0aCBhIHNjZW5hcmlvIHdoZXJlCm1vZHVsZSB1bmxvYWQgd291bGQg aGVscCAodGhlcmUncyByZWFzb25zIGl0J3MgYSBkZXZlbG9wZXItb25seSB0aGluZywKaXQncyBy ZWFsbHkgaGFyZCB0byBnZXQgcmlnaHQpLgoKQ2hlZXJzLCBEYW5pZWwKCgo+IAo+IFRoYW5rcywK PiBKYW51c3oKPiAKPiAKPiA+IC1EYW5pZWwKPiA+IAo+ID4gPiAKPiA+ID4gVGhhbmtzLAo+ID4g PiBKYW51c3oKPiA+ID4gCj4gPiA+IAo+ID4gPiA+IC1EYW5pZWwKPiA+ID4gPiAKPiA+ID4gPiA+ IC0tLQo+ID4gPiA+ID4gIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgIHwgICAxICsKPiA+ID4gPiA+ ICB0ZXN0cy9jb3JlX2hvdF9yZWxvYWQuYyB8IDQwOCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4gPiA+ID4gPiAgdGVzdHMvbWVzb24uYnVpbGQgICAgICAgfCAgIDEg Kwo+ID4gPiA+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNDEwIGluc2VydGlvbnMoKykKPiA+ID4gPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvY29yZV9ob3RfcmVsb2FkLmMKPiA+ID4gPiA+IAo+ ID4gPiA+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtl ZmlsZS5zb3VyY2VzCj4gPiA+ID4gPiBpbmRleCA3ZjkyMWY2Yy4uNDUyZDhlZDcgMTAwNjQ0Cj4g PiA+ID4gPiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gPiA+ID4gPiArKysgYi90ZXN0 cy9NYWtlZmlsZS5zb3VyY2VzCj4gPiA+ID4gPiBAQCAtMTYsNiArMTYsNyBAQCBURVNUU19wcm9n cyA9IFwKPiA+ID4gPiA+ICAJY29yZV9nZXRjbGllbnQgXAo+ID4gPiA+ID4gIAljb3JlX2dldHN0 YXRzIFwKPiA+ID4gPiA+ICAJY29yZV9nZXR2ZXJzaW9uIFwKPiA+ID4gPiA+ICsJY29yZV9ob3Rf cmVsb2FkIFwKPiA+ID4gPiA+ICAJY29yZV9zZXRtYXN0ZXJfdnNfYXV0aCBcCj4gPiA+ID4gPiAg CWRlYnVnZnNfdGVzdCBcCj4gPiA+ID4gPiAgCWRybV9pbXBvcnRfZXhwb3J0IFwKPiA+ID4gPiA+ IGRpZmYgLS1naXQgYS90ZXN0cy9jb3JlX2hvdF9yZWxvYWQuYyBiL3Rlc3RzL2NvcmVfaG90X3Jl bG9hZC5jCj4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiA+ID4gaW5kZXggMDAw MDAwMDAuLjY2NzNmNTVjCj4gPiA+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ID4gPiArKysgYi90 ZXN0cy9jb3JlX2hvdF9yZWxvYWQuYwo+ID4gPiA+ID4gQEAgLTAsMCArMSw0MDggQEAKPiA+ID4g PiA+ICsvKgo+ID4gPiA+ID4gKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9u Cj4gPiA+ID4gPiArICoKPiA+ID4gPiA+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgCj4gPiA+IGEKPiA+ID4g PiA+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlIAo+ID4gPiAiU29mdHdhcmUiKSwKPiA+ID4gPiA+ICsgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCAKPiA+ ID4gbGltaXRhdGlvbgo+ID4gPiA+ID4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCAKPiA+ID4gc3VibGljZW5zZSwKPiA+ID4g PiA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiA+ID4gPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4gPiA+ID4g KyAqCj4gPiA+ID4gPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgCj4gPiA+IG5leHQKPiA+ID4gPiA+ICsgKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgCj4gPiA+IHRoZQo+ID4gPiA+ID4gKyAqIFNvZnR3YXJlLgo+ID4gPiA+ID4g KyAqCj4gPiA+ID4gPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIAo+ID4gPiBFWFBSRVNTIE9SCj4gPiA+ID4gPiArICog SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAK PiA+ID4gTUVSQ0hBTlRBQklMSVRZLAo+ID4gPiA+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCAKPiA+ID4gU0hB TEwKPiA+ID4gPiA+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiAKPiA+ID4gT1RIRVIKPiA+ID4gPiA+ICsgKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgCj4gPiA+IEFSSVNJTkcKPiA+ID4gPiA+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIAo+ID4gPiBERUFM SU5HUwo+ID4gPiA+ID4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiA+ID4gPiA+ICsgKi8KPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsjaW5jbHVkZSAiaWd0LmgiCj4gPiA+ID4gPiArI2luY2x1ZGUgImln dF9kZXZpY2UuaCIKPiA+ID4gPiA+ICsjaW5jbHVkZSAiaWd0X2R1bW15bG9hZC5oIgo+ID4gPiA+ ID4gKyNpbmNsdWRlICJpZ3Rfa21vZC5oIgo+ID4gPiA+ID4gKyNpbmNsdWRlICJpZ3Rfc3lzZnMu aCIKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsjaW5jbHVkZSA8Z2V0b3B0Lmg+Cj4gPiA+ID4gPiAr I2luY2x1ZGUgPGxpbWl0cy5oPgo+ID4gPiA+ID4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiA+ID4g PiA+ICsjaW5jbHVkZSA8dW5pc3RkLmg+Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArI2luY2x1ZGUg PHN5cy90eXBlcy5oPgo+ID4gPiA+ID4gKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgo+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gKy8qKgo+ID4gPiA+ID4gKyAqIEEgcG9zdC1hY3Rpb24gZGV2aWNlIHJlY292 ZXJ5IGZ1bmN0aW9uOgo+ID4gPiA+ID4gKyAqIEBwcml2OiBhIHBvaW50ZXIgdG8gcHJpdmF0ZSBk YXRhIHJlcXVpcmVkIGZvciBkZXZpY2UgcmVjb3ZlcnkKPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4g KyAqIE1ha2UgdGhlIGRldmljZSByZS1hcHBlYXIKPiA+ID4gPiA+ICsgKi8KPiA+ID4gPiA+ICt0 eXBlZGVmIHZvaWQgKCpyZWNvdmVyX3QpKGNvbnN0IHZvaWQgKnByaXYpOwo+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gKy8qKgo+ID4gPiA+ID4gKyAqIEEgdGVzdCBhY3Rpb24gZnVuY3Rpb246Cj4gPiA+ ID4gPiArICogQGRpcjogZmlsZSBkZXNjcmlwdG9yIG9mIGFuIG9wZW4gZGV2aWNlIHN5c2ZzIGRp cmVjdG9yeQo+ID4gPiA+ID4gKyAqIEBtb2R1bGU6IG1vZHVsZSBuYW1lLCBub24tTlVMTCBpbmRp Y2F0ZXMgcG9zdC1hY3Rpb24gbW9kdWxlIHVubG9hZCAKPiA+ID4gcmVxdWVzdGVkCj4gPiA+ID4g PiArICogQHJlY292ZXI6IGZvciByZXR1cm5pbmcgYSBwb2ludGVyIHRvIGEgcG9zdC1hY3Rpb24g ZGV2aWNlIHJlY292ZXJ5IAo+ID4gPiBmdW5jdGlvbgo+ID4gPiA+ID4gKyAqIEBwcml2OiBmb3Ig cmV0dXJuaW5nIGEgcG9pbnRlciB0byBkYXRhIHRvIGJlIHBhc3NlZCB0byBAcmVjb3Zlcgo+ID4g PiA+ID4gKyAqCj4gPiA+ID4gPiArICogTWFrZSB0aGUgZGV2aWNlIGRpc2FwcGVhcgo+ID4gPiA+ ID4gKyAqLwo+ID4gPiA+ID4gK3R5cGVkZWYgdm9pZCAoKmFjdGlvbl90KShpbnQgZGV2aWNlLCBj b25zdCBjaGFyICptb2R1bGUsCj4gPiA+ID4gPiArCQkJIHJlY292ZXJfdCAqcmVjb3ZlciwgY29u c3Qgdm9pZCAqKnByaXYpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKy8qKgo+ID4gPiA+ID4gKyAq IEEgd29ya2xvYWQgY29tcGxldGlvbiB3YWl0IGZ1bmN0aW9uOgo+ID4gPiA+ID4gKyAqIEBkZXZp Y2U6IG9wZW4gZGV2aWNlIGZpbGUgZGVzY3JpcHRvcgo+ID4gPiA+ID4gKyAqIEBwcml2OiBhIHBv aW50ZXIgdG8gcHJpdmF0ZSBkYXRhIHJlcXVpcmVkIGJ5IHRoZSB3YWl0IGZ1bmN0aW9uCj4gPiA+ ID4gPiArICoKPiA+ID4gPiA+ICsgKiBXYWl0IGZvciBjb21wbGV0aW9uIG9mIGJhY2tncm91bmQg d29ya2xvYWQKPiA+ID4gPiA+ICsgKi8KPiA+ID4gPiA+ICt0eXBlZGVmIHZvaWQgKCp3b3JrbG9h ZF93YWl0X3QpKGludCBkZXZpY2UsIHZvaWQgKnByaXYpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g Ky8qKgo+ID4gPiA+ID4gKyAqIEEgd29ya2xvYWQgZnVuY3Rpb246Cj4gPiA+ID4gPiArICogQGRl dmljZTogb3BlbiBkZXZpY2UgZmlsZSBkZXNjcmlwdG9yCj4gPiA+ID4gPiArICogQGFyZzogYSBv cHRpb25hbCBzdHJpbmcgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSB3b3JrbG9hZCBmdW5jdGlvbgo+ ID4gPiA+ID4gKyAqIEB3b3JrbG9hZF93YWl0OiBmb3IgcmV0dXJuaW5nIGEgcG9pbnRlciB0byB3 b3JrbG9hZCBjb21wbGV0aW9uIHdhaXQgCj4gPiA+IGZ1bmN0aW9uCj4gPiA+ID4gPiArICogQHBy aXY6IGZvciByZXR1cm5pbmcgYSBwb2ludGVyIHRvIGRhdGEgdG8gYmUgcGFzc2VkIHRvIEB3b3Jr bG9hZF93YWl0Cj4gPiA+ID4gPiArICoKPiA+ID4gPiA+ICsgKiBQdXQgc29tZSBsb25nIGxhc3Rp bmcgbG9hZCBvbiB0aGUgZGV2aWNlCj4gPiA+ID4gPiArICovCj4gPiA+ID4gPiArdHlwZWRlZiB2 b2lkICgqd29ya2xvYWRfdCkoaW50IGRldmljZSwgY29uc3QgY2hhciAqYXJnLAo+ID4gPiA+ID4g KwkJCSAgIHdvcmtsb2FkX3dhaXRfdCAqd29ya2xvYWRfd2FpdCwgdm9pZCAKPiA+ID4gKipwcml2 KTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsvKioKPiA+ID4gPiA+ICsgKiBQYWlycyBvZiB0ZXN0 IGFjdGlvbiAvIGRldmljZSByZWNvdmVyeSBmdW5jdGlvbnMKPiA+ID4gPiA+ICsgKi8KPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsvKiBVbmJpbmQgLyByZS1iaW5kICovCj4gPiA+ID4gPiArCj4gPiA+ ID4gPiArc3RydWN0IHJlYmluZF9kYXRhIHsKPiA+ID4gPiA+ICsJaW50IGRyaXZlcjsJLyogb3Bl biBmaWxlIGRlc2NyaXB0b3Igb2YgZHJpdmVyIHN5c2ZzIGRpcmVjdG9yeSAqLwo+ID4gPiA+ID4g KwljaGFyICpkZXZpY2U7CS8qIGJ1cyBzcGVjaWZpYyBkZXZpY2UgYWRkcmVzcyBhcyBzdHJpbmcg Ki8KPiA+ID4gPiA+ICt9Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKy8qIFJlLWJpbmQgdGhlIGRy aXZlciB0byB0aGUgZGV2aWNlICovCj4gPiA+ID4gPiArc3RhdGljIHZvaWQgZHJpdmVyX2JpbmQo Y29uc3Qgdm9pZCAqcHJpdikKPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiArCWNvbnN0IHN0cnVjdCBy ZWJpbmRfZGF0YSAqZGF0YSA9IHByaXY7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWlndF9zZXRf dGltZW91dCg2MCwgIkRyaXZlciByZS1iaW5kIHRpbWVvdXQhIik7Cj4gPiA+ID4gPiArCWlndF9z eXNmc19zZXQoZGF0YS0+ZHJpdmVyLCAiYmluZCIsIGRhdGEtPmRldmljZSk7Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArCWNsb3NlKGRhdGEtPmRyaXZlcik7Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gKy8qIFVuYmluZCB0aGUgZHJpdmVyIGZyb20gdGhlIGRldmljZSAqLwo+ID4g PiA+ID4gK3N0YXRpYyB2b2lkIGRyaXZlcl91bmJpbmQoaW50IGRldmljZSwgY29uc3QgY2hhciAq bW9kdWxlLAo+ID4gPiA+ID4gKwkJCSAgcmVjb3Zlcl90ICpyZWNvdmVyLCBjb25zdCB2b2lkICoq cHJpdikKPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiArCXN0YXRpYyBjaGFyIHBhdGhbUEFUSF9NQVhd Owo+ID4gPiA+ID4gKwlzdGF0aWMgc3RydWN0IHJlYmluZF9kYXRhIGRhdGE7Cj4gPiA+ID4gPiAr CWludCBsZW47Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCS8qIGNvbGxlY3QgaW5mb3JtYXRpb24g cmVxdWlyZWQgZm9yIGRyaXZlciBiaW5kL3VuYmluZCAqLwo+ID4gPiA+ID4gKwlkYXRhLmRyaXZl ciA9IG9wZW5hdChkZXZpY2UsICJkZXZpY2UvZHJpdmVyIiwgT19ESVJFQ1RPUlkpOwo+ID4gPiA+ ID4gKwlpZ3RfYXNzZXJ0KGRhdGEuZHJpdmVyID49IDApOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g KwlsZW4gPSByZWFkbGlua2F0KGRldmljZSwgImRldmljZSIsIHBhdGgsIHNpemVvZihwYXRoKSAt IDEpOwo+ID4gPiA+ID4gKwlwYXRoW2xlbl0gPSAnXDAnOwo+ID4gPiA+ID4gKwlkYXRhLmRldmlj ZSA9IHN0cnJjaHIocGF0aCwgJy8nKSArIDE7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCS8qIHVu YmluZCB0aGUgZHJpdmVyICovCj4gPiA+ID4gPiArCWlndF9zZXRfdGltZW91dCg2MCwgIkRyaXZl ciB1bmJpbmQgdGltZW91dCEiKTsKPiA+ID4gPiA+ICsJaWd0X3N5c2ZzX3NldChkYXRhLmRyaXZl ciwgInVuYmluZCIsIGRhdGEuZGV2aWNlKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJLyogcGFz cyBiYWNrIGluZm8gb24gaG93IHRvIHJlY292ZXIgdGhlIGRldmljZSAqLwo+ID4gPiA+ID4gKwlp ZiAobW9kdWxlKSB7Cj4gPiA+ID4gPiArCQkvKiBkb24ndCB0cnkgdG8gcmViaW5kIGlmIG1vZHVs ZSB3aWxsIGJlIHVubG9hZGVkICovCj4gPiA+ID4gPiArCQkqcmVjb3ZlciA9IE5VTEw7Cj4gPiA+ ID4gPiArCX0gZWxzZSB7Cj4gPiA+ID4gPiArCQkqcmVjb3ZlciA9IGRyaXZlcl9iaW5kOwo+ID4g PiA+ID4gKwkJKnByaXYgPSAmZGF0YTsKPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gK30KPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsvKiBVbnBsdWcgLyByZS1wbHVnICovCj4gPiA+ID4gPiArCj4gPiA+ ID4gPiArLyogUmUtZGlzY292ZXIgdGhlIGRldmljZSBieSByZXNjYW5uaW5nIGl0cyBidXMgKi8K PiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBidXNfcmVzY2FuKGNvbnN0IHZvaWQgKnByaXYpCj4gPiA+ ID4gPiArewo+ID4gPiA+ID4gKwljb25zdCBpbnQgKmJ1cyA9IHByaXY7Cj4gPiA+ID4gPiArCj4g PiA+ID4gPiArCWlndF9zZXRfdGltZW91dCg2MCwgIkJ1cyByZXNjYW4gdGltZW91dCEiKTsKPiA+ ID4gPiA+ICsJaWd0X3N5c2ZzX3NldCgqYnVzLCAicmVzY2FuIiwgIjEiKTsKPiA+ID4gPiA+ICsK PiA+ID4gPiA+ICsJY2xvc2UoKmJ1cyk7Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gKy8qIFJlbW92ZSAodmlydHVhbGx5IHVucGx1ZykgdGhlIGRldmljZSBmcm9tIGl0cyBidXMg Ki8KPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBkZXZpY2VfdW5wbHVnKGludCBkZXZpY2UsIGNvbnN0 IGNoYXIgKm1vZHVsZSwKPiA+ID4gPiA+ICsJCQkgIHJlY292ZXJfdCAqcmVjb3ZlciwgY29uc3Qg dm9pZCAqKnByaXYpCj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKwlzdGF0aWMgaW50IGJ1czsKPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICsJLyogY29sbGVjdCBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3Ig YnVzIHJlc2NhbiAqLwo+ID4gPiA+ID4gKwlidXMgPSBvcGVuYXQoZGV2aWNlLCAiZGV2aWNlL3N1 YnN5c3RlbSIsIE9fRElSRUNUT1JZKTsKPiA+ID4gPiA+ICsJaWd0X2Fzc2VydChidXMgPj0gMCk7 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCS8qIHJlbW92ZSB0aGUgZGV2aWNlICovCj4gPiA+ID4g PiArCWlndF9zZXRfdGltZW91dCg2MCwgIkRldmljZSB1bnBsdWcgdGltZW91dCEiKTsKPiA+ID4g PiA+ICsJaWd0X3N5c2ZzX3NldChkZXZpY2UsICJkZXZpY2UvcmVtb3ZlIiwgIjEiKTsKPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsJLyogcGFzcyBiYWNrIGluZm8gb24gaG93IHRvIHJlY292ZXIgdGhl IGRldmljZSAqLwo+ID4gPiA+ID4gKwkqcmVjb3ZlciA9IGJ1c19yZXNjYW47Cj4gPiA+ID4gPiAr CSpwcml2ID0gJmJ1czsKPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArLyogRWFj aCB0ZXN0IGFjdGlvbiBmdW5jdGlvbiBtdXN0IGJlIHJlZ2lzdGVyZWQgaW4gdGhlIGZvbGxvd2lu ZyB0YWJsZSAqLwo+ID4gPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+ID4gPiA+ID4gKwlj b25zdCBjaGFyICpuYW1lOwkvKiB1bmlxdWUgdGVzdCBhY3Rpb24gbmFtZSB1c2VkIGluIHRlc3Qg Cj4gPiA+IG5hbWVzICovCj4gPiA+ID4gPiArCWFjdGlvbl90IGZ1bmN0aW9uOwkvKiB0ZXN0IGFj dGlvbiBmdW5jdGlvbiBwb2ludGVyICovCj4gPiA+ID4gPiArfSBhY3Rpb25zW10gPSB7Cj4gPiA+ ID4gPiArCXsgInVuYmluZCIsIGRyaXZlcl91bmJpbmQsIH0sCj4gPiA+ID4gPiArCXsgInVucGx1 ZyIsIGRldmljZV91bnBsdWcsIH0sCj4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICsvKioKPiA+ID4gPiA+ICsgKiBQYWlycyBvZiB3b3JrbG9hZCAvIHdhaXQgY29tcGxldGlvbiBm dW5jdGlvbnMKPiA+ID4gPiA+ICsgKi8KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsvKiBBIHdvcmts b2FkIHVzaW5nIGlndF9zcGluX3J1bigpICovCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArLyogV2Fp dCBmb3IgY29tcGxldGFpb24gb2YgZHVtbXkgbG9hZCAqLwo+ID4gPiA+ID4gK3N0YXRpYyB2b2lk IGR1bW15X3dhaXQoaW50IGRldmljZSwgdm9pZCAqcHJpdikKPiA+ID4gPiA+ICt7Cj4gPiA+ID4g PiArCWlndF9zcGluX3QgKnNwaW4gPSBwcml2Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkvKiB3 YWl0IHVudGlsIHRoZSBzcGluIG5vIGxvbmdlciBydW5zLCBkb24ndCBmYWlsIG9uIGVycm9yICov Cj4gPiA+ID4gPiArCWlmIChnZW1fd2FpdChkZXZpY2UsIHNwaW4tPmhhbmRsZSwgTlVMTCkpCj4g PiA+ID4gPiArCQlfX2dlbV9zZXRfZG9tYWluKGRldmljZSwgc3Bpbi0+aGFuZGxlLAo+ID4gPiA+ ID4gKwkJCQkgSTkxNV9HRU1fRE9NQUlOX0dUVCwgCj4gPiA+IEk5MTVfR0VNX0RPTUFJTl9HVFQp Owo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsvKiBSdW4gZHVtbXkgbG9hZCAq Lwo+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIGR1bW15X2xvYWQoaW50IGRldmljZSwgY29uc3QgY2hh ciAqYXJnLAo+ID4gPiA+ID4gKwkJICAgICAgIHdvcmtsb2FkX3dhaXRfdCAqd29ya2xvYWRfd2Fp dCwgdm9pZCAqKnByaXYpCj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKwlpZ3Rfc3Bpbl90ICpzcGlu Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkvKiBzdWJtaXQgYSBqb2IgKi8KPiA+ID4gPiA+ICsJ c3BpbiA9IGlndF9zcGluX25ldyhkZXZpY2UpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkqd29y a2xvYWRfd2FpdCA9IGR1bW15X3dhaXQ7Cj4gPiA+ID4gPiArCSpwcml2ID0gc3BpbjsKPiA+ID4g PiA+ICt9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArLyoqCj4gPiA+ID4gPiArICogRWFjaCB3b3Jr bG9hZCBmdW5jdGlvbiBtdXN0IGJlIHJlZ2lzdGVyZWQgaW4gdGhlIGZvbGxvd2luZyB0YWJsZS4K PiA+ID4gPiA+ICsgKiBBIGZ1bmN0aW9uIG1heSBiZSByZWdpc3RlcmVkIG1vcmUgdGhhbiBvbmNl IHVuZGVyIGRpZmZlcmVudCB3b3JrbG9hZCAKPiA+ID4gbmFtZXMsCj4gPiA+ID4gPiArICogdGhh dCBtYWtlcyBzZW5zZSBhcyBsb25nIGFzIGEgZGlmZmVyZW50IGFyZ3VtZW50IGlzIHNwZWNpZmll ZCBmb3IgZWFjaCAKPiA+ID4gbmFtZS4KPiA+ID4gPiA+ICsgKi8KPiA+ID4gPiA+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IHsKPiA+ID4gPiA+ICsJY29uc3QgY2hhciAqbmFtZTsJLyogdW5pcXVlIHdv cmtsb2FkIG5hbWUgdXNlZCBpbiB0ZXN0IG5hbWVzIAo+ID4gPiAqLwo+ID4gPiA+ID4gKwl3b3Jr bG9hZF90IGZ1bmN0aW9uOwkvKiB3b3JrbG9hZCBmdW5jdGlvbiBwb2ludGVyICovCj4gPiA+ID4g PiArCWNvbnN0IGNoYXIgKmFyZzsJLyogb3B0aW9uYWwgY29uc3RhbnQgc3RyaW5nIGFyZ3VtZW50 ICovCj4gPiA+ID4gPiArfSB3b3JrbG9hZHNbXSA9IHsKPiA+ID4gPiA+ICsJeyAic3BpbiIsIGR1 bW15X2xvYWQsIE5VTEwsIH0sCj4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsv KioKPiA+ID4gPiA+ICsgKiBGcmFtZXdvcmsKPiA+ID4gPiA+ICsgKi8KPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ICtzdGF0aWMgdm9pZCBoZWFsdGhjaGVjayhpbnQgY2hpcHNldCkKPiA+ID4gPiA+ICt7 Cj4gPiA+ID4gPiArCWludCBkZXZpY2U7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWRldmljZSA9 IF9fZHJtX29wZW5fZHJpdmVyKGNoaXBzZXQpOwo+ID4gPiA+ID4gKwlpZ3RfYXNzZXJ0KGRldmlj ZSA+PSAwKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJaWYgKGNoaXBzZXQgPT0gRFJJVkVSX0lO VEVMKQo+ID4gPiA+ID4gKwkJZ2VtX3Rlc3RfZW5naW5lKGRldmljZSwgQUxMX0VOR0lORVMpOwo+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwljbG9zZShkZXZpY2UpOwo+ID4gPiA+ID4gK30KPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBtb2R1bGVfdW5sb2FkKGludCBjaGlwc2V0LCBj b25zdCBjaGFyICptb2R1bGUpCj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKwlpZiAoY2hpcHNldCA9 PSBEUklWRVJfSU5URUwpCj4gPiA+ID4gPiArCQlpZ3RfYXNzZXJ0KGlndF9pOTE1X2RyaXZlcl91 bmxvYWQoKSA9PSAKPiA+ID4gSUdUX0VYSVRfU1VDQ0VTUyk7Cj4gPiA+ID4gPiArCWVsc2UKPiA+ ID4gPiA+ICsJCWlndF9hc3NlcnQoaWd0X2ttb2RfdW5sb2FkKG1vZHVsZSwgMCkgPT0gMCk7Cj4g PiA+ID4gPiArfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHJ1bl9hY3Rpb24o aW50IGRldmljZSwgYWN0aW9uX3QgYWN0aW9uLCBjb25zdCBjaGFyICptb2R1bGUsCj4gPiA+ID4g PiArCQkgICAgICByZWNvdmVyX3QgKnJlY292ZXIsIGNvbnN0IHZvaWQgKipwcml2KQo+ID4gPiA+ ID4gK3sKPiA+ID4gPiA+ICsJaW50IGRpcjsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJZGlyID0g aWd0X3N5c2ZzX29wZW4oZGV2aWNlKTsKPiA+ID4gPiA+ICsJaWd0X2Fzc2VydChkaXIgPj0gMCk7 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWFjdGlvbihkaXIsIG1vZHVsZSwgcmVjb3ZlciwgcHJp dik7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWNsb3NlKGRpcik7Cj4gPiA+ID4gPiArfQo+ID4g PiA+ID4gKwo+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHdhaXRfaGVscGVyKGludCBkZXZpY2UsIHZv aWQgKnByaXYpCj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKwlzdHJ1Y3QgaWd0X2hlbHBlcl9wcm9j ZXNzICpwcm9jID0gcHJpdjsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJLyogd2FpdCB1bnRpbCB0 aGUgd29ya2xvYWQgc3VicHJvY2VzcyBoYXMgY29tcGxldGVkICovCj4gPiA+ID4gPiArCWlndF9p Z25vcmVfd2FybihpZ3Rfd2FpdF9oZWxwZXIocHJvYykpOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBydW5fd29ya2xvYWQoaW50IGRldmljZSwgd29ya2xv YWRfdCB3b3JrbG9hZCwgY29uc3QgY2hhciAKPiA+ID4gKmFyZywKPiA+ID4gPiA+ICsJCQkgY29u c3QgY2hhciAqbW9kdWxlLCB3b3JrbG9hZF93YWl0X3QgCj4gPiA+ICp3b3JrbG9hZF93YWl0LAo+ ID4gPiA+ID4gKwkJCSB2b2lkICoqcHJpdikKPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiArCWlmICht b2R1bGUpIHsKPiA+ID4gPiA+ICsJCS8qIHJ1biB3b3JrbG9hZCBpbiBhIHN1YnByb2Nlc3Mgc28g dGhlIG1vZHVsZSBpcyBwdXQgb24gCj4gPiA+IGNyYXNoICovCj4gPiA+ID4gPiArCQlzdGF0aWMg c3RydWN0IGlndF9oZWxwZXJfcHJvY2VzcyBwcm9jOwo+ID4gPiA+ID4gKwkJaW50IHdzdGF0dXMs IHJldDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJCWJ6ZXJvKCZwcm9jLCBzaXplb2YocHJvYykp Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkJaWd0X2ZvcmtfaGVscGVyKCZwcm9jKSB7Cj4gPiA+ ID4gPiArCQkJLyogc3VwcHJlc3MgaWd0X2xvZyBtZXNzYWdlcyAqLwo+ID4gPiA+ID4gKwkJCWln dF9sb2dfbGV2ZWwgPSBJR1RfTE9HX05PTkU7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCQkJLyog aW50ZXJjZXB0IGlndF9mYWlsL3NraXAoKSBsb25nIGp1bXBzICovCj4gPiA+ID4gPiArCQkJaWYg KHNpZ3NldGptcChpZ3Rfc3VidGVzdF9qbXBidWYsIDEpID09IDApIAo+ID4gPiB7Cj4gPiA+ID4g PiArCQkJCXdvcmtsb2FkKGRldmljZSwgYXJnLCAKPiA+ID4gd29ya2xvYWRfd2FpdCwgcHJpdik7 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCQkJCSgqd29ya2xvYWRfd2FpdCkoZGV2aWNlLCAKPiA+ ID4gKnByaXYpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkJCQkvKiBzdWNjZXNzIGlmIG5vdCBk aXZlcnRlZCBieSAKPiA+ID4gaWd0X2ZhaWwvc2tpcCgpICovCj4gPiA+ID4gPiArCQkJCWlndF9z dWNjZXNzKCk7Cj4gPiA+ID4gPiArCQkJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkJCS8qIHBh c3MgZXhpdCBjb2RlIGJhY2sgdG8gdGhlIGNhbGxlciAqLwo+ID4gPiA+ID4gKwkJCWlndF9leGl0 KCk7Cj4gPiA+ID4gPiArCQl9Cj4gPiA+ID4gPiArCQkvKiBsZXQgdGhlIGJhY2tncm91bmQgcHJv Y2VzcyBzdGFydCBkb2luZyBpdHMgam9iIG9yIAo+ID4gPiBmYWlsICovCj4gPiA+ID4gPiArCQlz bGVlcCgyKTsKPiA+ID4gPiA+ICsJCS8qIGZhaWwgb3Igc2tpcCBvbiB3b3JrbG9hZCBwcmVtYXR1 cmUgY29tcGxldGlvbiAqLwo+ID4gPiA+ID4gKwkJcmV0ID0gd2FpdHBpZChwcm9jLnBpZCwgJndz dGF0dXMsIFdOT0hBTkcpOwo+ID4gPiA+ID4gKwkJaWYgKHJldCA8IDApCj4gPiA+ID4gPiArCQkJ aWd0X2ZhaWwoSUdUX0VYSVRfSU5WQUxJRCk7Cj4gPiA+ID4gPiArCQlpZiAocmV0KSB7Cj4gPiA+ ID4gPiArCQkJaWYgKCFXSUZFWElURUQod3N0YXR1cykpCj4gPiA+ID4gPiArCQkJCWlndF9mYWls KElHVF9FWElUX0lOVkFMSUQpOwo+ID4gPiA+ID4gKwkJCWlmIChXRVhJVFNUQVRVUyh3c3RhdHVz KSA9PSAKPiA+ID4gSUdUX0VYSVRfU1VDQ0VTUykKPiA+ID4gPiA+ICsJCQkJaWd0X2ZhaWwoSUdU X0VYSVRfSU5WQUxJRCk7Cj4gPiA+ID4gPiArCQkJaWYgKFdFWElUU1RBVFVTKHdzdGF0dXMpID09 IElHVF9FWElUX1NLSVApCj4gPiA+ID4gPiArCQkJCWlndF9za2lwKE5VTEwpOwo+ID4gPiA+ID4g KwkJCWlndF9mYWlsKFdFWElUU1RBVFVTKHdzdGF0dXMpKTsKPiA+ID4gPiA+ICsJCX0KPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsJCS8qIHBhc3MgYmFjayBpbmZvIG9uIGhvdyB0byB3YWl0IGZvciBo ZWxwZXIgY29tcGxldGlvbiAKPiA+ID4gKi8KPiA+ID4gPiA+ICsJCSp3b3JrbG9hZF93YWl0ID0g d2FpdF9oZWxwZXI7Cj4gPiA+ID4gPiArCQkqcHJpdiA9ICZwcm9jOwo+ID4gPiA+ID4gKwl9IGVs c2Ugewo+ID4gPiA+ID4gKwkJLyogcnVuIHRoZSByZXF1ZXN0ZWQgd29ya2xvYWQgZGlyZWN0bHkg Ki8KPiA+ID4gPiA+ICsJCXdvcmtsb2FkKGRldmljZSwgYXJnLCB3b3JrbG9hZF93YWl0LCBwcml2 KTsKPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0 aWMgdm9pZCBydW5fc3VidGVzdChpbnQgY2hpcHNldCwgaW50IHdvcmtsb2FkLCBpbnQgYWN0aW9u LAo+ID4gPiA+ID4gKwkJCWNvbnN0IGNoYXIgKm1vZHVsZSkKPiA+ID4gPiA+ICt7Cj4gPiA+ID4g PiArCXdvcmtsb2FkX3dhaXRfdCB3b3JrbG9hZF93YWl0Owo+ID4gPiA+ID4gKwl2b2lkICp3b3Jr bG9hZF9wcml2Owo+ID4gPiA+ID4gKwlyZWNvdmVyX3QgcmVjb3ZlcjsKPiA+ID4gPiA+ICsJY29u c3Qgdm9pZCAqcmVjb3Zlcl9wcml2Owo+ID4gPiA+ID4gKwlpbnQgZGV2aWNlOwo+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gKwlpZ3Rfc3VidGVzdF9mKCIlcy0lcyVzIiwgd29ya2xvYWRzW3dvcmtsb2Fk XS5uYW1lLCAKPiA+ID4gYWN0aW9uc1thY3Rpb25dLm5hbWUsCj4gPiA+ID4gPiArCQkgICAgICBt b2R1bGUgPyAiLXVubG9hZCIgOiAiIikgewo+ID4gPiA+ID4gKwkJZGV2aWNlID0gX19kcm1fb3Bl bl9kcml2ZXIoY2hpcHNldCk7Cj4gPiA+ID4gPiArCQlpZ3RfYXNzZXJ0KGRldmljZSA+PSAwKTsK PiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJCS8qIHNwYXduIHRoZSByZXF1ZXN0ZWQgd29ya2xvYWQg Ki8KPiA+ID4gPiA+ICsJCWlndF9kZWJ1Zygic3Bhd25pbmcgYmFja2dyb3VuZCB3b3JrbG9hZFxu Iik7Cj4gPiA+ID4gPiArCQlydW5fd29ya2xvYWQoZGV2aWNlLCB3b3JrbG9hZHNbd29ya2xvYWRd LmZ1bmN0aW9uLAo+ID4gPiA+ID4gKwkJCSAgICAgd29ya2xvYWRzW3dvcmtsb2FkXS5hcmcsIG1v ZHVsZSwKPiA+ID4gPiA+ICsJCQkgICAgICZ3b3JrbG9hZF93YWl0LCAmd29ya2xvYWRfcHJpdik7 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCQkvKiBydW4gdGhlIHJlcXVlc3RlZCB0ZXN0IGFjdGlv biAqLwo+ID4gPiA+ID4gKwkJaWd0X2RlYnVnKCJydW5uaW5nIHRlc3QgYWN0aW9uXG4iKTsKPiA+ ID4gPiA+ICsJCXJ1bl9hY3Rpb24oZGV2aWNlLCBhY3Rpb25zW2FjdGlvbl0uZnVuY3Rpb24sIG1v ZHVsZSwKPiA+ID4gPiA+ICsJCQkgICAmcmVjb3ZlciwgJnJlY292ZXJfcHJpdik7Cj4gPiA+ID4g PiArCj4gPiA+ID4gPiArCQlpZiAod29ya2xvYWRfd2FpdCkgewo+ID4gPiA+ID4gKwkJCWlndF9k ZWJ1Zygid2FpdGluZyBmb3Igd29ya2xvYWQgCj4gPiA+IGNvbXBsZXRpb25cbiIpOwo+ID4gPiA+ ID4gKwkJCXdvcmtsb2FkX3dhaXQoZGV2aWNlLCB3b3JrbG9hZF9wcml2KTsKPiA+ID4gPiA+ICsJ CX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJCWNsb3NlKGRldmljZSk7Cj4gPiA+ID4gPiArCj4g PiA+ID4gPiArCQlpZiAobW9kdWxlKSB7Cj4gPiA+ID4gPiArCQkJaWd0X2RlYnVnKCJ1bmxvYWRp bmcgJXNcbiIsIG1vZHVsZSk7Cj4gPiA+ID4gPiArCQkJbW9kdWxlX3VubG9hZChjaGlwc2V0LCBt b2R1bGUpOwo+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkJaWYgKHJlY292 ZXIpIHsKPiA+ID4gPiA+ICsJCQlpZ3RfZGVidWcoInJlY292ZXJpbmcgZGV2aWNlXG4iKTsKPiA+ ID4gPiA+ICsJCQlyZWNvdmVyKHJlY292ZXJfcHJpdik7Cj4gPiA+ID4gPiArCQkJaWd0X3Jlc2V0 X3RpbWVvdXQoKTsKPiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJCWlndF9k ZWJ1ZygicnVubmluZyBoZWFsdGhjaGVja1xuIik7Cj4gPiA+ID4gPiArCQloZWFsdGhjaGVjayhj aGlwc2V0KTsKPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICtpZ3RfbWFpbiB7Cj4gPiA+ID4gPiArCWludCBkZXZpY2UsIGNoaXBzZXQ7Cj4gPiA+ID4gPiAr CWNoYXIgKm1vZHVsZTsKPiA+ID4gPiA+ICsJaW50IGksIGo7Cj4gPiA+ID4gPiArCj4gPiA+ID4g PiArCWlndF9maXh0dXJlIHsKPiA+ID4gPiA+ICsJCWNoYXIgcGF0aFtQQVRIX01BWF07Cj4gPiA+ ID4gPiArCQlpbnQgZGlyLCBsZW47Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCQkvKioKPiA+ID4g PiA+ICsJCSAqIFNpbmNlIHNvbWUgc3VidGVzdHMgZGVwZW5kIG9uIHN1Y2Nlc3NmdWwgdW5sb2Fk IG9mIGEgCj4gPiA+IGRyaXZlcgo+ID4gPiA+ID4gKwkJICogbW9kdWxlLCBkb24ndCB1c2UgZHJt X29wZW5fZHJpdmVyKCkgYXMgaXQga2VlcHMgYSAKPiA+ID4gZGV2aWNlIGZpbGUKPiA+ID4gPiA+ ICsJCSAqIGRlc2NyaXB0b3Igb3BlbiBmb3IgZXhpdCBoYW5kbGVyIHVzZSBhbmQgdGhhdCAKPiA+ ID4gZWZmZWN0aXZlbHkKPiA+ID4gPiA+ICsJCSAqIHByZXZlbnRzIHRoZSBtb2R1bGUgZnJvbSBi ZWluZyB1bmxvYWRlZC4KPiA+ID4gPiA+ICsJCSAqLwo+ID4gPiA+ID4gKwkJZGV2aWNlID0gX19k cm1fb3Blbl9kcml2ZXIoRFJJVkVSX0FOWSk7Cj4gPiA+ID4gPiArCQlpZ3RfYXNzZXJ0KGRldmlj ZSA+PSAwKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJCWlmIChpc19pOTE1X2RldmljZShkZXZp Y2UpKSB7Cj4gPiA+ID4gPiArCQkJY2hpcHNldCA9IERSSVZFUl9JTlRFTDsKPiA+ID4gPiA+ICsJ CQltb2R1bGUgPSBzdHJkdXAoImk5MTUiKTsKPiA+ID4gPiA+ICsJCX0gZWxzZSB7Cj4gPiA+ID4g PiArCQkJY2hpcHNldCA9IERSSVZFUl9BTlk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCQkJLyog Q2FwdHVyZSBtb2R1bGUgbmFtZSB0byBiZSB1bmxvYWRlZCAqLwo+ID4gPiA+ID4gKwkJCWRpciA9 IGlndF9zeXNmc19vcGVuKGRldmljZSk7Cj4gPiA+ID4gPiArCQkJbGVuID0gcmVhZGxpbmthdChk aXIsICJkZXZpY2UvZHJpdmVyLwo+ID4gPiBtb2R1bGUiLCBwYXRoLAo+ID4gPiA+ID4gKwkJCQkJ IHNpemVvZihwYXRoKSAtIDEpOwo+ID4gPiA+ID4gKwkJCWNsb3NlKGRpcik7Cj4gPiA+ID4gPiAr CQkJcGF0aFtsZW5dID0gJ1wwJzsKPiA+ID4gPiA+ICsJCQltb2R1bGUgPSBzdHJkdXAoc3RycmNo cihwYXRoLCAnLycpICsgMSk7Cj4gPiA+ID4gPiArCQl9Cj4gPiA+ID4gPiArCQljbG9zZShkZXZp Y2UpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkJaWd0X2luZm8oIlJ1bm5pbmcgdGhlIHRlc3Qg b24gZHJpdmVyIFwiJXNcIiwgY2hpcHNldCAKPiA+ID4gbWFzayAlIzB4XG4iLAo+ID4gPiA+ID4g KwkJCSBtb2R1bGUsIGNoaXBzZXQpOwo+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiArCj4gPiA+ID4g PiArCWZvciAoaSA9IDA7IGkgPCBzaXplb2Yod29ya2xvYWRzKSAvIHNpemVvZigqd29ya2xvYWRz KTsgaSsrKSB7Cj4gPiA+ID4gPiArCQlmb3IgKGogPSAwOyBqIDwgc2l6ZW9mKGFjdGlvbnMpIC8g c2l6ZW9mKCphY3Rpb25zKTsgaisKPiA+ID4gKykgewo+ID4gPiA+ID4gKwkJCS8qIHdpdGggbW9k dWxlIHVubG9hZCAqLwo+ID4gPiA+ID4gKwkJCXJ1bl9zdWJ0ZXN0KGNoaXBzZXQsIGksIGosIG1v ZHVsZSk7Cj4gPiA+ID4gPiArCQkJLyogd2l0aG91dCBtb2R1bGUgdW5sb2FkICovCj4gPiA+ID4g PiArCQkJcnVuX3N1YnRlc3QoY2hpcHNldCwgaSwgaiwgTlVMTCk7Cj4gPiA+ID4gPiArCQl9Cj4g PiA+ID4gPiArCX0KPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMvbWVz b24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAo+ID4gPiA+ID4gaW5kZXggNzExOTc5YjQuLjBk NDE4MDM1IDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKPiA+ID4gPiA+ ICsrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCj4gPiA+ID4gPiBAQCAtMyw2ICszLDcgQEAgdGVzdF9w cm9ncyA9IFsKPiA+ID4gPiA+ICAJJ2NvcmVfZ2V0Y2xpZW50JywKPiA+ID4gPiA+ICAJJ2NvcmVf Z2V0c3RhdHMnLAo+ID4gPiA+ID4gIAknY29yZV9nZXR2ZXJzaW9uJywKPiA+ID4gPiA+ICsJJ2Nv cmVfaG90X3JlbG9hZCcsCj4gPiA+ID4gPiAgCSdjb3JlX3NldG1hc3Rlcl92c19hdXRoJywKPiA+ ID4gPiA+ICAJJ2RlYnVnZnNfdGVzdCcsCj4gPiA+ID4gPiAgCSdkcm1faW1wb3J0X2V4cG9ydCcs Cj4gPiA+ID4gCj4gPiA+ID4gCj4gPiA+IAo+ID4gPiAKPiA+ID4gCj4gPiA+IAo+ID4gCj4gPiAK PiAKPiAKPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IGlndC1kZXYgbWFpbGluZyBsaXN0Cj4gaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1k ZXYKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlv bgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ln dC1kZXY=