From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [RFC Design Doc v2] Add vNVDIMM support for Xen Date: Wed, 3 Aug 2016 17:25:48 -0400 Message-ID: <20160803212548.GA16869@char.us.oracle.com> References: <20160718002912.rva5n5jbrezdchwx@hz-desktop> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20160718002912.rva5n5jbrezdchwx@hz-desktop> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "xen-devel@lists.xen.org" , Jan Beulich , George Dunlap , Andrew Cooper , Ian Jackson , Stefano Stabellini , Juergen Gross , Wei Liu , "Tian, Kevin" , Xiao Guangrong , "Nakajima, Jun" List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBKdWwgMTgsIDIwMTYgYXQgMDg6Mjk6MTJBTSArMDgwMCwgSGFvemhvbmcgWmhhbmcg d3JvdGU6Cj4gSGksCj4gCgpIZXkhCgpUaGFua3MgZm9yIHBvc3RpbmchIFNvcnJ5IGZvciB0aGUg bGF0ZSByZXZpZXcuIEJlbG93IGFyZSBzb21lIG9mIG15CmNvbW1lbnQuCgo+IEZvbGxvd2luZyBp cyB2ZXJzaW9uIDIgb2YgdGhlIGRlc2lnbiBkb2MgZm9yIHN1cHBvcnRpbmcgdk5WRElNTSBpbgo+ IFhlbi4gSXQncyBiYXNpY2FsbHkgdGhlIHN1bW1hcnkgb2YgZGlzY3Vzc2lvbiBvbiBwcmV2aW91 cyB2MSBkZXNpZ24KPiAoaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1s L3hlbi1kZXZlbC8yMDE2LTAyL21zZzAwMDA2Lmh0bWwpLgo+IEFueSBjb21tZW50cyBhcmUgd2Vs Y29tZS4gVGhlIGNvcnJlc3BvbmRpbmcgcGF0Y2hlcyBhcmUgV0lQLgo+IAo+IFRoYW5rcywKPiBI YW96aG9uZwo+IAo+IAo+IAo+IHZOVkRJTU0gRGVzaWduIHYyCj4gCj4gQ2hhbmdlcyBpbiB2MjoK PiAgLSBSZXdyaXRlIHRoZSB0aGUgZGVzaWduIGRldGFpbHMgYmFzZWQgb24gcHJldmlvdXMgZGlz Y3Vzc2lvbiBbN10uCj4gIC0gQWRkIFNlY3Rpb24gMyBVc2FnZSBFeGFtcGxlIG9mIHZOVkRJTU0g aW4gWGVuLgo+ICAtIFJlbW92ZSBjb250ZW50IGFib3V0IHBjb21taXQgaW5zdHJ1Y3Rpb24gd2hp Y2ggaGFzIGJlZW4gZGVwcmVjYXRlZCBbOF0uCj4gCj4gQ29udGVudAo+ID09PT09PT0KPiAxLiBC YWNrZ3JvdW5kCj4gIDEuMSBBY2Nlc3MgTWVjaGFuaXNtczogUGVyc2lzdGVudCBNZW1vcnkgYW5k IEJsb2NrIFdpbmRvdwo+ICAxLjIgQUNQSSBTdXBwb3J0Cj4gICAxLjIuMSBORklUCj4gICAxLjIu MiBfRFNNIGFuZCBfRklUCj4gIDEuMyBOYW1lc3BhY2UKPiAgMS40IGNsd2IvY2xmbHVzaG9wdAo+ IDIuIE5WRElNTS92TlZESU1NIFN1cHBvcnQgaW4gTGludXggS2VybmVsL0tWTS9RRU1VCj4gIDIu MSBOVkRJTU0gRHJpdmVyIGluIExpbnV4IEtlcm5lbAo+ICAyLjIgdk5WRElNTSBJbXBsZW1lbnRh dGlvbiBpbiBLVk0vUUVNVQo+IDMuIFVzYWdlIEV4YW1wbGUgb2Ygdk5WRElNTSBpbiBYZW4KPiA0 LiBEZXNpZ24gb2Ygdk5WRElNTSBpbiBYZW4KPiAgNC4xIEd1ZXN0IGNsd2IvY2xmbHVzaG9wdCBF bmFibGluZwo+ICA0LjIgcG1lbSBBZGRyZXNzIE1hbmFnZW1lbnQKPiAgIDQuMi4xIFJlc2VydmUg U3RvcmFnZSBmb3IgTWFuYWdlbWVudCBTdHJ1Y3R1cmVzCj4gICA0LjIuMiBEZXRlY3Rpb24gb2Yg SG9zdCBwbWVtIERldmljZXMKPiAgIDQuMi4zIEdldCBIb3N0IE1hY2hpbmUgQWRkcmVzcyAoU1BB KSBvZiBIb3N0IHBtZW0gRmlsZXMKPiAgIDQuMi40IE1hcCBIb3N0IHBtZW0gdG8gR3Vlc3RzCj4g ICA0LjIuNSBNaXNjIDE6IFJBUwo+ICAgNC4yLjYgTWlzYyAyOiBob3RwbHVnCj4gIDQuMyBHdWVz dCBBQ1BJIEVtdWxhdGlvbgo+ICAgNC4zLjEgQnVpbGRpbmcgR3Vlc3QgQUNQSSBUYWJsZXMKPiAg IDQuMy4yIEVtdWxhdGluZyBHdWVzdCBfRFNNCj4gUmVmZXJlbmNlcwo+IAo+IAo+IE5vbi1Wb2xh dGlsZSBESU1NIG9yIE5WRElNTSBpcyBhIHR5cGUgb2YgUkFNIGRldmljZSB0aGF0IHByb3ZpZGVz Cj4gcGVyc2lzdGVudCBzdG9yYWdlIGFuZCByZXRhaW5zIGRhdGEgYWNyb3NzIHJlYm9vdCBhbmQg ZXZlbiBwb3dlcgo+IGZhaWx1cmVzLiBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZGVzaWdu IHRvIHByb3ZpZGUgdmlydHVhbCBOVkRJTU0KPiBkZXZpY2VzIG9yIHZOVkRJTU0gaW4gWGVuLgo+ IAo+IFRoZSByZXN0IG9mIHRoaXMgZG9jdW1lbnQgaXMgb3JnYW5pemVkIGFzIGJlbG93Lgo+ICAt IFNlY3Rpb24gMSBpbnRyb2R1Y2VzIHRoZSBiYWNrZ3JvdW5kIGtub3dsZWRnZSBvZiBOVkRJTU0g aGFyZHdhcmUsCj4gICAgd2hpY2ggaXMgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGlzIGRvY3Vt ZW50Lgo+IAo+ICAtIFNlY3Rpb24gMiBicmllZmx5IGludHJvZHVjZXMgdGhlIGN1cnJlbnQvZnV0 dXJlIE5WRElNTS92TlZESU1NCj4gICAgc3VwcG9ydCBpbiBMaW51eCBrZXJuZWwvS1ZNL1FFTVUu IFRoZXkgd2lsbCBhZmZlY3QgdGhlIHZOVkRJTU0KPiAgICBkZXNpZ24gaW4gWGVuLgo+IAo+ICAt IFNlY3Rpb24gMyBzaG93cyB0aGUgYmFzaWMgdXNhZ2UgZXhhbXBsZSBvZiB2TlZESU1NIGluIFhl bi4KPiAKPiAgLSBTZWN0aW9uIDQgcHJvcG9zZXMgZGVzaWduIGRldGFpbHMgb2Ygdk5WRElNTSBp biBYZW4uCj4gCj4gCj4gCj4gMS4gQmFja2dyb3VuZAo+IAo+IDEuMSBBY2Nlc3MgTWVjaGFuaXNt czogUGVyc2lzdGVudCBNZW1vcnkgYW5kIEJsb2NrIFdpbmRvdwo+IAo+ICBOVkRJTU0gcHJvdmlk ZXMgdHdvIGFjY2VzcyBtZWNoYW5pc21zOiBieXRlLWFkZHJlc3NhYmxlIHBlcnNpc3RlbnQKPiAg bWVtb3J5IChwbWVtKSBhbmQgYmxvY2sgd2luZG93IChwYmxrKS4gQW4gTlZESU1NIGNhbiBjb250 YWluIG11bHRpcGxlCj4gIHJhbmdlcyBhbmQgZWFjaCByYW5nZSBjYW4gYmUgYWNjZXNzZWQgdGhy b3VnaCBlaXRoZXIgcG1lbSBvciBwYmxrCj4gIChidXQgbm90IGJvdGgpLgo+IAo+ICBCeXRlLWFk ZHJlc3NhYmxlIHBlcnNpc3RlbnQgbWVtb3J5IG1lY2hhbmlzbSAocG1lbSkgbWFwcyBOVkRJTU0g b3IKPiAgcmFuZ2VzIG9mIE5WRElNTSBpbnRvIHRoZSBzeXN0ZW0gcGh5c2ljYWwgYWRkcmVzcyAo U1BBKSBzcGFjZSwgc28KPiAgdGhhdCBzb2Z0d2FyZSBjYW4gYWNjZXNzIE5WRElNTSB2aWEgbm9y bWFsIG1lbW9yeSBsb2FkcyBhbmQKPiAgc3RvcmVzLiBJZiB0aGUgdmlydHVhbCBhZGRyZXNzIGlz IHVzZWQsIHRoZW4gTU1VIHdpbGwgdHJhbnNsYXRlIGl0IHRvCj4gIHRoZSBwaHlzaWNhbCBhZGRy ZXNzLgo+IAo+ICBJbiB0aGUgdmlydHVhbGl6YXRpb24gY2lyY3Vtc3RhbmNlLCB3ZSBjYW4gcGFz cyB0aHJvdWdoIGEgcG1lbSByYW5nZQo+ICBvciBwYXJ0aWFsIG9mIGl0IHRvIGEgZ3Vlc3QgYnkg bWFwcGluZyBpdCBpbiBFUFQgKGkuZS4gbWFwcGluZyBndWVzdAo+ICB2TlZESU1NIHBoeXNpY2Fs IGFkZHJlc3MgdG8gaG9zdCBOVkRJTU0gcGh5c2ljYWwgYWRkcmVzcyksIHNvIHRoYXQKPiAgZ3Vl c3QgYWNjZXNzZXMgYXJlIGFwcGxpZWQgZGlyZWN0bHkgdG8gdGhlIGhvc3QgTlZESU1NIGRldmlj ZSB3aXRob3V0Cj4gIGh5cGVydmlzb3IncyBpbnRlcmNlcHRpb25zLgo+IAo+ICBCbG9jayB3aW5k b3cgbWVjaGFuaXNtIChwYmxrKSBwcm92aWRlcyBvbmUgb3IgbXVsdGlwbGUgYmxvY2sgd2luZG93 cwo+ICAoQlcpLiAgRWFjaCBCVyBpcyBjb21wb3NlZCBvZiBhIGNvbW1hbmQgcmVnaXN0ZXIsIGEg c3RhdHVzIHJlZ2lzdGVyCj4gIGFuZCBhIDggS2J5dGVzIGFwZXJ0dXJlIHJlZ2lzdGVyLiBTb2Z0 d2FyZSBmaWxscyB0aGUgZGlyZWN0aW9uIG9mIHRoZQo+ICB0cmFuc2ZlciAocmVhZC93cml0ZSks IHRoZSBzdGFydCBhZGRyZXNzIChMQkEpIGFuZCBzaXplIG9uIE5WRElNTSBpdAo+ICBpcyBnb2lu ZyB0byB0cmFuc2Zlci4gSWYgbm90aGluZyBnb2VzIHdyb25nLCB0aGUgdHJhbnNmZXJyZWQgZGF0 YSBjYW4KPiAgYmUgcmVhZC93cml0ZSB2aWEgdGhlIGFwZXJ0dXJlIHJlZ2lzdGVyLiBUaGUgc3Rh dHVzIGFuZCBlcnJvcnMgb2YgdGhlCj4gIHRyYW5zZmVyIGNhbiBiZSBnb3QgZnJvbSB0aGUgc3Rh dHVzIHJlZ2lzdGVyLiBPdGhlciB2ZW5kb3Itc3BlY2lmaWMKPiAgY29tbWFuZHMgYW5kIHN0YXR1 cyBjYW4gYmUgaW1wbGVtZW50ZWQgZm9yIEJXIGFzIHdlbGwuIERldGFpbHMgb2YgdGhlCj4gIGJs b2NrIHdpbmRvdyBhY2Nlc3MgbWVjaGFuaXNtIGNhbiBiZSBmb3VuZCBpbiBbM10uCj4gCj4gIElu IHRoZSB2aXJ0dWFsaXphdGlvbiBjaXJjdW1zdGFuY2UsIGRpZmZlcmVudCBwYmxrIHJlZ2lvbnMg b24gYQo+ICBzaW5nbGUgTlZESU1NIGRldmljZSBtYXkgYmUgYWNjZXNzZWQgYnkgZGlmZmVyZW50 IGd1ZXN0cywgc28gdGhlCj4gIGh5cGVydmlzb3IgbmVlZHMgdG8gZW11bGF0ZSBCVywgd2hpY2gg d291bGQgaW50cm9kdWNlIGEgaGlnaCBvdmVyaGVhZAo+ICBmb3IgSS9PIGludGVuc2l2ZSB3b3Jr bG9hZC4KPiAKPiAgVGhlcmVmb3JlLCB3ZSBhcmUgZ29pbmcgdG8gb25seSBpbXBsZW1lbnQgcG1l bSBmb3Igdk5WRElNTS4gVGhlIHJlc3QKPiAgb2YgdGhpcyBkb2N1bWVudCB3aWxsIG1vc3RseSBj b25jZW50cmF0ZSBvbiBwbWVtLgo+IAo+IAo+IDEuMiBBQ1BJIFN1cHBvcnQKPiAKPiAgQUNQSSBw cm92aWRlcyB0d28gZmFjdG9ycyBvZiBzdXBwb3J0IGZvciBOVkRJTU0uIEZpcnN0LCBOVkRJTU0K PiAgZGV2aWNlcyBhcmUgZGVzY3JpYmVkIGJ5IGZpcm13YXJlIChCSU9TL0VGSSkgdG8gT1Mgdmlh IEFDUEktZGVmaW5lZAo+ICBOVkRJTU0gRmlybXdhcmUgSW50ZXJmYWNlIFRhYmxlIChORklUKS4g U2Vjb25kLCBzZXZlcmFsIGZ1bmN0aW9ucyBvZgo+ICBOVkRJTU0sIGluY2x1ZGluZyBvcGVyYXRp b25zIG9uIG5hbWVzcGFjZSBsYWJlbHMsIFMuTS5BLlIuVCBhbmQKPiAgaG90cGx1ZywgYXJlIHBy b3ZpZGVkIGJ5IEFDUEkgbWV0aG9kcyAoX0RTTSBhbmQgX0ZJVCkuCj4gCj4gMS4yLjEgTkZJVAo+ IAo+ICBORklUIGlzIGEgbmV3IHN5c3RlbSBkZXNjcmlwdGlvbiB0YWJsZSBhZGRlZCBpbiBBQ1BJ IHY2IHdpdGgKPiAgc2lnbmF0dXJlICJORklUIi4gSXQgY29udGFpbnMgYSBzZXQgb2Ygc3RydWN0 dXJlcy4KPiAKPiAgLSBTeXN0ZW0gUGh5c2ljYWwgQWRkcmVzcyBSYW5nZSBTdHJ1Y3R1cmUKPiAg ICAoU1BBIFJhbmdlIFN0cnVjdHVyZSkKPiAKPiAgICBTUEEgcmFuZ2Ugc3RydWN0dXJlIGRlc2Ny aWJlcyBzeXN0ZW0gcGh5c2ljYWwgYWRkcmVzcyByYW5nZXMKPiAgICBvY2N1cGllZCBieSBOVkRJ TU1zIGFuZCB0eXBlcyBvZiByZWdpb25zLgo+IAo+ICAgIElmIEFkZHJlc3MgUmFuZ2UgVHlwZSBH VUlEIGZpZWxkIG9mIGEgU1BBIHJhbmdlIHN0cnVjdHVyZSBpcyAiQnl0ZQo+ICAgIEFkZHJlc3Nh YmxlIFBlcnNpc3RlbnQgTWVtb3J5IChQTSkgUmVnaW9uIiwgdGhlbiB0aGUgc3RydWN0dXJlCj4g ICAgZGVzY3JpYmVzIGEgTlZESU1NIHJlZ2lvbiB0aGF0IGlzIGFjY2Vzc2VkIHZpYSBwbWVtLiBU aGUgU3lzdGVtCj4gICAgUGh5c2ljYWwgQWRkcmVzcyBSYW5nZSBCYXNlIGFuZCBMZW5ndGggZmll bGRzIGRlc2NyaWJlIHRoZSBzdGFydAo+ICAgIHN5c3RlbSBwaHlzaWNhbCBhZGRyZXNzIGFuZCB0 aGUgbGVuZ3RoIHRoYXQgaXMgb2NjdXBpZWQgYnkgdGhhdAo+ICAgIE5WRElNTSByZWdpb24uCj4g Cj4gICAgQSBTUEEgcmFuZ2Ugc3RydWN0dXJlIGlzIGlkZW50aWZpZWQgYnkgYSBub24temVybyBT UEEgcmFuZ2UKPiAgICBzdHJ1Y3R1cmUgaW5kZXguCj4gCj4gICAgTm90ZTogWzFdIHJlc2VydmVz IEU4MjAgdHlwZSA3OiBPU1BNIG11c3QgY29tcHJlaGVuZCB0aGlzIG1lbW9yeSBhcwo+ICAgICAg ICAgIGhhdmluZyBub24tdm9sYXRpbGUgYXR0cmlidXRlcyBhbmQgaGFuZGxlIGRpc3RpbmN0IGZy b20KPiAgICAgICAgICBjb252ZW50aW9uYWwgdm9sYXRpbGUgbWVtb3J5IChpbiBUYWJsZSAxNS0z MTIgb2YgWzFdKS4gVGhlCj4gICAgICAgICAgbWVtb3J5IHJlZ2lvbiBzdXBwb3J0cyBieXRlLWFk ZHJlc3NhYmxlIG5vbi12b2xhdGlsaXR5LiBFODIwCj4gICAgICAgICAgdHlwZSAxMiAoT0VNIGRl ZmluZWQpIG1heSBiZSBhbHNvIHVzZWQgZm9yIGxlZ2FjeSBOVkRJTU0KPiAgICAgICAgICBwcmlv ciB0byBBQ1BJIHY2Lgo+IAo+ICAgIE5vdGU6IEJlc2lkZXMgT1MsIEVGSSBmaXJtd2FyZSBtYXkg YWxzbyBwYXJzZSBORklUIGZvciBib290aW5nCj4gICAgICAgICAgZHJpdmVzIChTZWN0aW9uIDku My42Ljkgb2YgWzVdKS4KPiAKPiAgLSBNZW1vcnkgRGV2aWNlIHRvIFN5c3RlbSBQaHlzaWNhbCBB ZGRyZXNzIFJhbmdlIE1hcHBpbmcgU3RydWN0dXJlCj4gICAgKFJhbmdlIE1hcHBpbmcgU3RydWN0 dXJlKQo+IAo+ICAgIEFuIE5WRElNTSByZWdpb24gZGVzY3JpYmVkIGJ5IGEgU1BBIHJhbmdlIHN0 cnVjdHVyZSBjYW4gYmUKPiAgICBpbnRlcmxlYXZlZCBhY3Jvc3MgbXVsdGlwbGUgTlZESU1NIGRl dmljZXMuIEEgcmFuZ2UgbWFwcGluZwo+ICAgIHN0cnVjdHVyZSBpcyB1c2VkIHRvIGRlc2NyaWJl IHRoZSBzaW5nbGUgbWFwcGluZyBvbiBlYWNoIE5WRElNTQo+ICAgIGRldmljZS4gSXQgZGVzY3Jp YmVzIHRoZSBzaXplIGFuZCB0aGUgb2Zmc2V0IGluIGEgU1BBIHJhbmdlIHRoYXQgYW4KPiAgICBO VkRJTU0gZGV2aWNlIG9jY3VwaWVzLiBJdCBtYXkgcmVmZXIgdG8gYW4gSW50ZXJsZWF2ZSBTdHJ1 Y3R1cmUKPiAgICB0aGF0IGNvbnRhaW5zIGRldGFpbHMgb2YgdGhlIGVudGlyZSBpbnRlcmxlYXZl IHNldC4gVGhvc2UKPiAgICBpbmZvcm1hdGlvbiBpcyB1c2VkIGluIHBibGsgYnkgdGhlIE5WRElN TSBkcml2ZXIgZm9yIGFkZHJlc3MKPiAgICB0cmFuc2xhdGlvbi4KPiAKPiAgICBUaGUgTlZESU1N IGRldmljZSBkZXNjcmliZWQgYnkgdGhlIHJhbmdlIG1hcHBpbmcgc3RydWN0dXJlIGlzCj4gICAg aWRlbnRpZmllZCBieSBhbiB1bmlxdWUgTkZJVCBEZXZpY2UgSGFuZGxlLgo+IAo+ICBEZXRhaWxz IG9mIE5GSVQgYW5kIG90aGVyIHN0cnVjdHVyZXMgY2FuIGJlIGZvdW5kIGluIFNlY3Rpb24gNS4y NSBpbiBbMV0uCj4gCj4gMS4yLjIgX0RTTSBhbmQgX0ZJVAo+IAo+ICBUaGUgQUNQSSBuYW1lc3Bh Y2UgZGV2aWNlIHVzZXMgX0hJRCBvZiBBQ1BJMDAxMiB0byBpZGVudGlmeSB0aGUgcm9vdAo+ICBO VkRJTU0gaW50ZXJmYWNlIGRldmljZS4gQW4gQUNQSSBuYW1lc3BhY2UgZGV2aWNlIGlzIGFsc28g cHJlc2VudAo+ICB1bmRlciB0aGUgcm9vdCBkZXZpY2UgRm9yIGVhY2ggTlZESU1NIGRldmljZS4g QWJvdmUgQUNQSSBuYW1lc3BhY2UKCnMvRm9yL2Zvci8KCj4gIGRldmljZXMgYXJlIGRlZmluZWQg aW4gU1NEVC4KPiAKPiAgX0RTTSBtZXRob2RzIGFyZSBwcmVzZW50IHVuZGVyIHRoZSByb290IGRl dmljZSBhbmQgZWFjaCBOVkRJTU0KPiAgZGV2aWNlLiBfRFNNIG1ldGhvZHMgYXJlIHVzZWQgYnkg ZHJpdmVycyB0byBhY2Nlc3MgdGhlIGxhYmVsIHN0b3JhZ2UKPiAgYXJlYSwgZ2V0IGhlYWx0aCBp bmZvcm1hdGlvbiwgcGVyZm9ybSB2ZW5kb3Itc3BlY2lmaWMgY29tbWFuZHMsCj4gIGV0Yy4gRGV0 YWlscyBvZiBhbGwgX0RTTSBtZXRob2RzIGNhbiBiZSBmb3VuZCBpbiBbNF0uCj4gCj4gIF9GSVQg bWV0aG9kIGlzIHVuZGVyIHRoZSByb290IGRldmljZSBhbmQgZXZhbHVhdGVkIGJ5IE9TUE0gdG8g Z2V0Cj4gIE5GSVQgb2YgaG90cGx1Z2dlZCBOVkRJTU0uIFRoZSBob3RwbHVnZ2VkIE5WRElNTSBp cyBpbmRpY2F0ZWQgdG8gT1MKPiAgdXNpbmcgQUNQSSBOYW1lc3BhY2UgZGV2aWNlIHdpdGggUE5Q SUQgb2YgUE5QMEM4MCBhbmQgdGhlIGRldmljZQo+ICBvYmplY3Qgbm90aWZpY2F0aW9uIHZhbHVl IGlzIDB4ODAuIERldGFpbHMgb2YgTlZESU1NIGhvdHBsdWcgY2FuIGJlCj4gIGZvdW5kIGluIFNl Y3Rpb24gOS4yMCBvZiBbMV0uCj4gCj4gCj4gMS4zIE5hbWVzcGFjZQo+IAo+ICBbMl0gZGVzY3Jp YmVzIGEgbWVjaGFuaXNtIHRvIHN1Yi1kaXZpZGUgTlZESU1NcyBpbnRvIG5hbWVzcGFjZXMsCj4g IHdoaWNoIGFyZSBsb2dpYyB1bml0cyBvZiBzdG9yYWdlIHNpbWlsYXIgdG8gU0NTSSBMVU5zIGFu ZCBOVk0gRXhwcmVzcwo+ICBuYW1lc3BhY2VzLgo+IAo+ICBUaGUgbmFtZXNwYWNlIGluZm9ybWF0 aW9uIGlzIGRlc2NyaWJlcyBieSBuYW1lc3BhY2UgbGFiZWxzIHN0b3JlZCBpbgo+ICB0aGUgcGVy c2lzdGVudCBsYWJlbCBzdG9yYWdlIGFyZWEgb24gZWFjaCBOVkRJTU0gZGV2aWNlLiBUaGUgbGFi ZWwKPiAgc3RvcmFnZSBhcmVhIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIHRoZSByYW5nZSBtYXBwZWQg YnkgdGhlIFNQQSByYW5nZQoKcy90aGUgdGhlL3RoZQoKPiAgc3RydWN0dXJlIGFuZCBjYW4gb25s eSBiZSBhY2Nlc3NlZCB2aWEgX0RTTSBtZXRob2RzLgo+IAo+ICBUaGVyZSBhcmUgdHdvIHR5cGVz IG9mIG5hbWVzcGFjZXMgZGVmaW5lZCBpbiBbMl06IHRoZSBwZXJzaXN0ZW50Cj4gIG1lbW9yeSBu YW1lc3BhY2UgYW5kIHRoZSBibG9jayBuYW1lc3BhY2VzLiBQZXJzaXN0ZW50IG1lbW9yeQo+ICBu YW1lc3BhY2VzIGlzIGJ1aWx0IGZvciBvbmx5IHBtZW0gTlZESU1NIHJlZ2lvbnMsIHdoaWxlIGJs b2NrCj4gIG5hbWVzcGFjZXMgb25seSBmb3IgcGJsay4gT25seSBvbmUgcGVyc2lzdGVudCBtZW1v cnkgbmFtZXNwYWNlIGlzCj4gIGFsbG93ZWQgZm9yIGEgcG1lbSBOVkRJTU0gcmVnaW9uLgo+IAo+ ICBCZXNpZGVzIGJlaW5nIGFjY2Vzc2VkIHZpYSBfRFNNLCBuYW1lc3BhY2VzIGFyZSBtYW5hZ2Vk IGFuZAo+ICBpbnRlcnByZXRlZCBieSBzb2Z0d2FyZS4gT1MgdmVuZG9ycyBtYXkgZGVjaWRlIHRv IG5vdCBmb2xsb3cgWzJdIGFuZAo+ICBzdG9yZSBvdGhlciB0eXBlcyBvZiBpbmZvcm1hdGlvbiBp biB0aGUgbGFiZWwgc3RvcmFnZSBhcmVhLgo+IAo+IAo+IDEuNCBjbHdiL2NsZmx1c2hvcHQKPiAK PiAgV3JpdGVzIHRvIE5WRElNTSBtYXkgYmUgY2FjaGVkIGJ5IGNhY2hlcywgc28gY2VydGFpbiBm bHVzaGluZwo+ICBvcGVyYXRpb25zIHNob3VsZCBiZSBwZXJmb3JtZWQgdG8gbWFrZSB0aGVtIHBl cnNpc3RlbnQgb24KPiAgTlZESU1NLiBjbHdiIGlzIHVzZWQgaW4gZmF2b3Igb2YgY2xmbHVzaG9w dCBhbmQgY2xmbHVzaCB0byBmbHVzaAo+ICB3cml0ZXMgZnJvbSBjYWNoZXMgdG8gbWVtb3J5Lgo+ IAo+ICBEZXRhaWxzIG9mIGNsd2IvY2xmbHVzaG9wdCBjYW4gYmUgZm91bmQgaW4gQ2hhcHRlciAx MCBvZiBbNl0uCgpEaWRuJ3QgdGhhdCBvcGNvZGUgZ2V0IGRyb3BwZWQgaW4gZmF2b3VyIG9mIHBv a2luZyBpbiBzb21lIHJlZ2lzdGVyPwo+IAo+IAo+IAo+IDIuIE5WRElNTS92TlZESU1NIFN1cHBv cnQgaW4gTGludXggS2VybmVsL0tWTS9RRU1VCj4gCj4gMi4xIE5WRElNTSBEcml2ZXIgaW4gTGlu dXggS2VybmVsCj4gCj4gIExpbnV4IGtlcm5lbCBzaW5jZSA0LjIgaGFzIGFkZGVkIHN1cHBvcnQg Zm9yIEFDUEktZGVmaW5lZCBOVkRJTU0KPiAgZGV2aWNlcy4KPiAKPiAgTlZESU1NIGRyaXZlciBp biBMaW51eCBwcm9iZXMgTlZESU1NIGRldmljZXMgdGhyb3VnaCBBQ1BJIChpLmUuIE5GSVQKPiAg YW5kIF9GSVQpLiBJdCBpcyBhbHNvIHJlc3BvbnNpYmxlIHRvIHBhcnNlIHRoZSBuYW1zZXBhY2Ug bGFiZWxzIG9uCgpzL25hbXNwYWNlL25hbWVzcGFjZS8KCj4gIGVhY2ggTlZESU1NIGRldmljZXMs IHJlY292ZXIgbmFtZXNwYWNlIGFmdGVyIHBvd2VyIGZhaWx1cmUgKGFzCj4gIGRlc2NyaWJlZCBp biBbMl0pIGFuZCBoYW5kbGUgTlZESU1NIGhvdHBsdWcuIFRoZXJlIGFyZSBhbHNvIHNvbWUKPiAg dmVuZG9yIGRyaXZlcnMgdG8gcGVyZm9ybSB2ZW5kb3Itc3BlY2lmaWMgb3BlcmF0aW9ucyBvbiBO VkRJTU1zCj4gIChlLmcuIHZpYSBfRFNNKS4KPiAKPiAgQ29tcGFyZWQgdG8gdGhlIG9yZGluYXJ5 IHJhbSwgTlZESU1NIGlzIHVzZWQgbW9yZSBsaWtlIGEgcGVyc2lzdGVudAoKcy9yYW0vUkFNLwo+ ICBzdG9yYWdlIGRyaXZlIGZvciBpdHMgcGVyc2lzdGVudCBhc3BlY3QuIEZvciBlYWNoIHBlcnNp c3RlbnQgbWVtb3J5Cj4gIG5hbWVzcGFjZSwgb3IgYSBsYWJlbC1sZXNzIHBtZW0gTlZESU1NIHJh bmdlLCBOVkRJTU0gZHJpdmVyCj4gIGltcGxlbWVudHMgYSBibG9jayBkZXZpY2UgaW50ZXJmYWNl ICgvZGV2L3BtZW1YKSBmb3IgaXQuCj4gCj4gIFVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgY2FuIG1t YXAoMikgdGhlIHdob2xlIHBtZW0gaW50byBpdHMgb3duCj4gIHZpcnR1YWwgYWRkcmVzcyBzcGFj ZS4gTGludXgga2VybmVsIG1hcHMgdGhlIHN5c3RlbSBwaHlzaWNhbCBhZGRyZXNzCj4gIHNwYWNl IHJhbmdlIG9jY3VwaWVkIGJ5IHBtZW0gaW50byB0aGUgdmlydHVhbCBhZGRyZXNzIHNwYWNlLCBz byB0aGF0IGV2ZXJ5Cj4gIG5vcm1hbCBtZW1vcnkgbG9hZHMvd3JpdGVzIHdpdGggcHJvcGVyIGZs dXNoaW5nIGluc3RydWN0aW9ucyBhcmUKPiAgYXBwbGllZCB0byB0aGUgdW5kZXJseWluZyBwbWVt IE5WRElNTSByZWdpb25zLgo+IAo+ICBBbHRlcm5hdGl2ZWx5LCBhIERBWCBmaWxlIHN5c3RlbSBj YW4gYmUgbWFkZSBvbiAvZGV2L3BtZW1YLiBGaWxlcyBvbgo+ICB0aGF0IGZpbGUgc3lzdGVtIGNh biBiZSB1c2VkIGluIHRoZSBzYW1lIHdheSBhcyBhYm92ZS4gQXMgTGludXgKPiAga2VybmVsIG1h cHMgdGhlIHN5c3RlbSBhZGRyZXNzIHNwYWNlIHJhbmdlIG9jY3VwaWVkIGJ5IHRob3NlIGZpbGVz IG9uCj4gIE5WRElNTSB0byB0aGUgdmlydHVhbCBhZGRyZXNzIHNwYWNlLCByZWFkcy93cml0ZXMg b24gdGhvc2UgZmlsZXMgYXJlCj4gIGFwcGxpZWQgdG8gdGhlIHVuZGVybHlpbmcgTlZESU1NIHJl Z2lvbnMgYXMgd2VsbC4KPiAKPiAyLjIgdk5WRElNTSBJbXBsZW1lbnRhdGlvbiBpbiBLVk0vUUVN VQo+IAo+ICBBbiBvdmVydmlldyBvZiB2TlZESU1NIGltcGxlbWVudGF0aW9uIGluIEtWTSAoTGlu dXgga2VybmVsIHY0LjIpIC8gUUVNVSAoY29tbWl0Cj4gIDcwZDFmYjkgYW5kIHBhdGNoZXMgaW4t cmV2aWV3L2Z1dHVyZSkgaXMgc2hvd2VkIGJ5IHRoZSBmb2xsb3dpbmcgZmlndXJlLgo+IAo+IAo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rCj4gIEd1ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH UEEgfCAgICAgICAgICAgICAgICAgICAgfCAvZGV2L3BtZW0wIHwKPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kwo+ICAgICAgICAgICAgcGFyc2UgICAgICAgIGV2YWx1YXRlICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4gICAgICAgICAgICBeCj4gICAgICAgICAgICAgQUNQSSAgICAgICAgICBfRFNNICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKPiAgICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgfAo+ICAtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLQo+ICAgICAgICAgICAgICAgViAgICAgICAgICAg IFYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8Cj4gICAgICAg ICAgICstLS0tLS0tKyAgICArLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwKPiAgUUVNVSAgICAgfCB2QUNQSSB8ICAgIHwgdl9EU00gfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+ICAgICAgICAgICArLS0tLS0tLSsgICAg Ky0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8Cj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgIHwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlYWQvV3JpdGUg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8Cj4g ICAgICAgICAgICsuLi4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLi4uKy0tLS0tLS0tLS0tKyAgICAg ICAgfCAgICAgICAgICAgIHwKPiAgICAgVkEgICAgfCAgIHwgTGFiZWwgU3RvcmFnZSBBcmVhIHwg ICB8ICAgIGJ1ZiAgICB8ICBLVk1fU0VUX1VTRVJfTUVNT1JZX1JFR0lPTihidWYpCj4gICAgICAg ICAgICsuLi4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLi4uKy0tLS0tLS0tLS0tKyAgICAgICAgfCAg ICAgICAgICAgIHwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeICBt bWFwKDIpICBeICAgICAgICB8ICAgICAgICAgICAgfAo+ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLQo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICstLS0t LS0tLX4tLS0tLS0tLS0tLS0rCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKPiAgTGludXgvS1ZNICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAg fAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICB8Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsuLi4uKy0tLS0tLS0tLS0tLSsKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUEEgICAgfCAgICB8IC9kZXYvcG1l bTAgfAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArLi4uListLS0tLS0tLS0tLS0rCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEhvc3QgTlZESU1NIERyaXZlcgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK PiAgSFcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKy0tLS0tLS0tLS0tLSsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIE5WRElNTSAgIHwKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0t LS0tLSsKPiAKPiAKCk5pY2UgcGljdHVyZSEKCj4gIEEgcGFydCBub3QgcHV0IGluIGFib3ZlIGZp Z3VyZSBpcyBlbmFibGluZyBndWVzdCBjbHdiL2NsZmx1c2hvcHQKPiAgd2hpY2ggZXhwb3NlcyB0 aG9zZSBpbnN0cnVjdGlvbnMgdG8gZ3Vlc3QgdmlhIGd1ZXN0IGNwdWlkLgoKQW5kIGFyZW4ndCB0 aG9zZSBkZXByZWNhdGVkPwo+IAo+ICBCZXNpZGVzIGluc3RydWN0aW9uIGVuYWJsaW5nLCB0aGVy ZSBhcmUgdHdvIHByaW1hcnkgcGFydHMgb2Ygdk5WRElNTQo+ICBpbXBsZW1lbnRhdGlvbiBpbiBL Vk0vUUVNVS4KPiAKPiAgKDEpIEFkZHJlc3MgTWFwcGluZwo+IAo+ICAgQXMgZGVzY3JpYmVkIGJl Zm9yZSwgdGhlIGhvc3QgTGludXggTlZESU1NIGRyaXZlciBwcm92aWRlcyBhIGJsb2NrCj4gICBk ZXZpY2UgaW50ZXJmYWNlICgvZGV2L3BtZW0wIGF0IHRoZSBib3R0b20pIGZvciBhIHBtZW0gTlZE SU1NCj4gICByZWdpb24uIFFFTVUgY2FuIHRoYW4gbW1hcCgyKSB0aGF0IGRldmljZSBpbnRvIGl0 cyB2aXJ0dWFsIGFkZHJlc3MKPiAgIHNwYWNlIChidWYpLiBRRU1VIGlzIHJlc3BvbnNpYmxlIHRv IGZpbmQgYSBwcm9wZXIgZ3Vlc3QgcGh5c2ljYWwKPiAgIGFkZHJlc3Mgc3BhY2UgcmFuZ2UgdGhh dCBpcyBsYXJnZSBlbm91Z2ggdG8gaG9sZCAvZGV2L3BtZW0wLiBUaGVuCj4gICBRRU1VIHBhc3Nl cyB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIG1tYXBwZWQgYnVmIHRvIGEgS1ZNIEFQSQo+ICAgS1ZN X1NFVF9VU0VSX01FTU9SWV9SRUdJT04gdGhhdCBtYXBzIGluIEVQVCB0aGUgaG9zdCBwaHlzaWNh bAo+ICAgYWRkcmVzcyByYW5nZSBvZiBidWYgdG8gdGhlIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3Mg c3BhY2UgcmFuZ2Ugd2hlcmUKPiAgIHRoZSB2aXJ0dWFsIHBtZW0gZGV2aWNlIHdpbGwgYmUuCj4g Cj4gICBJbiB0aGlzIHdheSwgYWxsIGd1ZXN0IHdyaXRlcy9yZWFkcyBvbiB0aGUgdmlydHVhbCBw bWVtIGRldmljZSBpcwo+ICAgYXBwbGllZCBkaXJlY3RseSB0byB0aGUgaG9zdCBvbmUuCj4gCj4g ICBCZXNpZGVzLCBhYm92ZSBpbXBsZW1lbnRhdGlvbiBhbHNvIGFsbG93cyB0byBiYWNrIGEgdmly dHVhbCBwbWVtCj4gICBkZXZpY2UgYnkgYSBtbWFwcGVkIHJlZ3VsYXIgZmlsZSBvciBhIHBpZWNl IG9mIG9yZGluYXJ5IHJhbS4KPiAKPiAgKDIpIEd1ZXN0IEFDUEkgRW11bGF0aW9uCj4gCj4gICBB cyBndWVzdCBzeXN0ZW0gcGh5c2ljYWwgYWRkcmVzcyBhbmQgdGhlIHNpemUgb2YgdGhlIHZpcnR1 YWwgcG1lbQo+ICAgZGV2aWNlIGFyZSBkZXRlcm1pbmVkIGJ5IFFFTVUsIFFFTVUgaXMgcmVzcG9u c2libGUgdG8gZW11bGF0ZSB0aGUKPiAgIGd1ZXN0IE5GSVQgYW5kIFNTRFQuIEJhc2ljYWxseSwg aXQgYnVpbGRzIHRoZSBndWVzdCBORklUIGFuZCBpdHMKPiAgIHN1Yi1zdHJ1Y3R1cmVzIHRoYXQg ZGVzY3JpYmVzIHRoZSB2aXJ0dWFsIE5WRElNTSB0b3BvbG9neSwgYW5kIGEKPiAgIGd1ZXN0IFNT RFQgdGhhdCBkZWZpbmVzIEFDUEkgbmFtZXNwYWNlIGRldmljZXMgb2YgdmlydHVhbCBOVkRJTU0g aW4KPiAgIGd1ZXN0IFNTRFQuCj4gCj4gICBBcyBhIHBvcnRpb24gb2YgaG9zdCBwbWVtIGRldmlj ZSBvciBhIHJlZ3VsYXIgZmlsZS9vcmRpbmFyeSBmaWxlIGNhbgo+ICAgYmUgdXNlZCB0byBiYWNr IHRoZSBndWVzdCBwbWVtIGRldmljZSwgdGhlIGxhYmVsIHN0b3JhZ2UgYXJlYSBvbgo+ICAgaG9z dCBwbWVtIGNhbm5vdCBhbHdheXMgYmUgcGFzc2VkIHRocm91Z2ggdG8gZ3Vlc3QuIFRoZXJlZm9y ZSwgdGhlCj4gICBndWVzdCByZWFkcy93cml0ZXMgb24gdGhlIGxhYmVsIHN0b3JhZ2UgYXJlYSBp cyBlbXVsYXRlZCBieSBRRU1VLiBBcwo+ICAgZGVzY3JpYmVkIGJlZm9yZSwgX0RTTSBtZXRob2Qg aXMgdXRpbGl6ZWQgYnkgT1NQTSB0byBhY2Nlc3MgdGhlCj4gICBsYWJlbCBzdG9yYWdlIGFyZWEs IGFuZCB0aGVyZWZvcmUgaXQgaXMgZW11bGF0ZWQgYnkgUUVNVS4gVGhlIF9EU00KPiAgIGJ1ZmZl ciBpcyByZWdpc3RlcmVkIGFzIE1NSU8sIGFuZCBpdHMgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBh bmQKPiAgIHNpemUgYXJlIGRlc2NyaWJlZCBpbiB0aGUgZ3Vlc3QgQUNQSS4gRXZlcnkgY29tbWFu ZC9zdGF0dXMKPiAgIHJlYWQvd3JpdGUgZnJvbSBndWVzdCBpcyB0cmFwcGVkIGFuZCBlbXVsYXRl ZCBieSBRRU1VLgo+CgoKQW5kIGlzIHRoZXJlIGFueSBuZWVkIGZvciB0aGUgRTgyMCB0eXBlIDcg dG8gYmUgZXhwb3NlZD8gSSBwcmVzdW1lCm5vdCBhcyB0aGUgQUNQSSBORklUIGlzIHN1ZmZpY2ll bnQ/CgoKPiAgIEd1ZXN0IF9GSVQgbWV0aG9kIHdpbGwgYmUgaW1wbGVtZW50ZWQgc2ltaWxhcmx5 IGluIHRoZSBmdXR1cmUuCj4gCj4gCj4gCj4gMy4gVXNhZ2UgRXhhbXBsZSBvZiB2TlZESU1NIGlu IFhlbgo+IAo+ICBPdXIgZGVzaWduIGlzIHRvIHByb3ZpZGUgdmlydHVhbCBwbWVtIGRldmljZXMg dG8gSFZNIGRvbWFpbnMuIFRoZQo+ICB2aXJ0dWFsIHBtZW0gZGV2aWNlcyBhcmUgYmFja2VkIGJ5 IGhvc3QgcG1lbSBkZXZpY2VzLgo+IAo+ICBEb20wIExpbnV4IGtlcm5lbCBjYW4gZGV0ZWN0IHRo ZSBob3N0IHBtZW0gZGV2aWNlcyBhbmQgY3JlYXRlCj4gIC9kZXYvcG1lbVhYIGZvciBlYWNoIGRl dGVjdGVkIGRldmljZXMuIFVzZXJzIGluIERvbTAgY2FuIHRoZW4gY3JlYXRlCj4gIERBWCBmaWxl IHN5c3RlbSBvbiAvZGV2L3BtZW1YWCBhbmQgY3JlYXRlIHNldmVyYWwgcHJlLWFsbG9jYXRlIGZp bGVzCj4gIGluIHRoZSBEQVggZmlsZSBzeXN0ZW0uCj4gCj4gIEFmdGVyIHNldHVwIHRoZSBmaWxl IHN5c3RlbSBvbiB0aGUgaG9zdCBwbWVtLCB1c2VycyBjYW4gYWRkIHRoZQo+ICBmb2xsb3dpbmcg bGluZXMgaW4gdGhlIHhsIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gYXNzaWduIHRoZSBob3N0IHBt ZW0KPiAgcmVnaW9ucyB0byBkb21haW5zOgo+ICAgICAgdm52ZGltbSA9IFsgJ2ZpbGU9L2Rldi9w bWVtMCcgXQo+ICBvcgo+ICAgICAgdm52ZGltbSA9IFsgJ2ZpbGU9L21udC9kYXgvcHJlX2FsbG9j YXRlZF9maWxlJyBdCj4gCj4gICBUaGUgZmlyc3QgdHlwZSBvZiBjb25maWd1cmF0aW9uIGFzc2ln bnMgdGhlIGVudGlyZSBwbWVtIGRldmljZQo+ICAgKC9kZXYvcG1lbTApIHRvIHRoZSBkb21haW4s IHdoaWxlIHRoZSBzZWNvbmQgYXNzaWducyB0aGUgc3BhY2UKPiAgIGFsbG9jYXRlZCB0byAvbW50 L2RheC9wcmVfYWxsb2NhdGVkX2ZpbGUgb24gdGhlIGhvc3QgcG1lbSBkZXZpY2UgdG8KPiAgIHRo ZSBkb21haW4uCj4gCj4gICBXaGVuIHRoZSBkb21haW4gc3RhcnRzLCBndWVzdCBjYW4gZGV0ZWN0 IHRoZSAodmlydHVhbCkgcG1lbSBkZXZpY2VzCj4gICB2aWEgQUNQSSBhbmQgZ3Vlc3QgcmVhZC93 cml0ZSBvbiB0aGUgdmlydHVhbCBwbWVtIGRldmljZXMgYXJlCj4gICBkaXJlY3RseSBhcHBsaWVk IG9uIHRoZWlyIGhvc3QgYmFja2VuZHMuCgpXb3VsZCBndWVzdCBuYW1lc3BhY2UgKDEyOGtiKSBi ZSB3cml0dGVuIGF0IG9mZnNldCAwIG9mIHNhaWQgZmlsZSAob3IgYmxvY2spPwpBbmQgb2YgY291 cnNlIHRoZSBndWVzdCBjYW4gb25seSBtYW5pcHVsYXRlIHRoaXMgdXNpbmcgQUNQSSBfRFNNIG1l dGhvZHM/Cgo+IAo+IAo+IAo+IDQuIERlc2lnbiBvZiB2TlZESU1NIGluIFhlbgo+IAo+ICBBcyBL Vk0vUUVNVSwgb3VyIGRlc2lnbiBjdXJyZW50bHkgb25seSBwcm92aWRlcyBwbWVtIHZOVkRJTU0u Cj4gCj4gIFNpbWlsYXJseSB0byB0aGF0IGluIEtWTS9RRU1VLCBlbmFibGluZyB2TlZESU1NIGlu IFhlbiBpcyBjb21wb3NlZCBvZgo+ICB0aHJlZSBwYXJ0czoKPiAgKDEpIEd1ZXN0IGNsd2IvY2xm bHVzaG9wdCBlbmFibGluZywKPiAgKDIpIHBtZW0gYWRkcmVzcyBtYW5hZ2VtZW50LCBhbmQKPiAg KDMpIEd1ZXN0IEFDUEkgZW11bGF0aW9uLgo+IAo+ICBUaGUgcmVzdCBvZiB0aGlzIHNlY3Rpb24g cHJlc2VudCB0aGUgZGVzaWduIG9mIGVhY2ggcGFydAo+ICByZXNwZWN0aXZlbHkuIFRoZSBiYXNp YyBkZXNpZ24gcHJpbmNpcGxlIHRvIHJldXNlIGV4aXN0aW5nIGNvZGUgaW4KPiAgTGludXggTlZE SU1NIGRyaXZlciwgUUVNVSBhbmQgWGVuIGFzIG11Y2ggYXMgcG9zc2libGUuCj4gCj4gCj4gNC4x IEd1ZXN0IGNsd2IvY2xmbHVzaG9wdCBFbmFibGluZwo+IAo+ICBUaGUgaW5zdHJ1Y3Rpb24gZW5h YmxpbmcgaXMgc2ltcGxlIGFuZCB3ZSBkbyB0aGUgc2FtZSB3b3JrIGFzIGluIEtWTS9RRU1VOgo+ ICAtIGNsd2IvY2xmbHVzaG9wdCBhcmUgZXhwb3NlZCB0byBndWVzdCB2aWEgZ3Vlc3QgY3B1aWQu Cj4gCgpBZ2FpbiwgaXNuJ3QgdGhhdCBkZXByZWNhdGVkIGFuZCB0aGUgbmV3IG1lY2hhbmlzbSAo cG9rbmcgYXQgc29tZSByZWdpc3RlcikKaGFzIHRvIGJlIHVzZWQ/Cj4gCj4gNC4yIHBtZW0gQWRk cmVzcyBNYW5hZ2VtZW50Cj4gCj4gIHBtZW0gYWRkcmVzcyBtYW5hZ2VtZW50IGlzIHByaW1hcmls eSBjb21wb3NlZCBvZiB0aHJlZSBwYXJ0czoKPiAgKDEpIGRldGVjdGlvbiBvZiBwbWVtIGRldmlj ZXMgYW5kIHRoZWlyIGFkZHJlc3MgcmFuZ2VzLCB3aGljaCBpcwo+ICAgICAgYWNjb21wbGlzaGVk IGJ5IERvbTAgTGludXggcG1lbSBkcml2ZXIgYW5kIFhlbiBoeXBlcnZpc29yOwo+ICAoMikgZ2V0 IFNQQSByYW5nZXMgb2YgYW4gcG1lbSBhcmVhIHRoYXQgd2lsbCBiZSBtYXBwZWQgdG8gZG9tYWlu Cj4gICAgICB3aGljaCBpcyBhY2NvbXBsaXNoZWQgYnkgeGw7Cj4gICgzKSBtYXAgdGhlIHBtZW0g YXJlYSB0byBhIGRvbWFpbiwgd2hpY2ggaXMgYWNjb21wbGlzaGVkIGJ5IHFlbXUgYW5kCnMvcWVt dS9RRU1VLwo+ICAgICAgWGVuIGh5cGVydmlzb3IuCj4gCj4gIE91ciBkZXNpZ24gaW50ZW5kcyB0 byByZXVzZSB0aGUgY3VycmVudCBtZW1vcnkgbWFuYWdlbWVudCBmb3Igbm9ybWFsCj4gIFJBTSBp biBYZW4gdG8gbWFuYWdlIHRoZSBtYXBwaW5nIG9mIHBtZW0uIFRoZW4gd2Ugd2lsbCBjb21lIGFj cm9zcyBhCj4gIHByb2JsZW06IHdoZXJlIHdlIHN0b3JlIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBk YXRhIHN0cnVjdHMgZm9yIHBtZW0uCgpzL3dlIHN0b3JlL3doZXJlIHRvLwo+IAo+ICBUaGUgcmVz dCBvZiB0aGlzIHNlY3Rpb24gYWRkcmVzc2VzIGFib3ZlIGFzcGVjdHMgcmVzcGVjdGl2ZWx5LgoK V2FpdC4gV2hhdCBhYm91dCBhbHRlcm5hdGl2ZXM/IFdoeSB0cmVhdCBpdCBhcyBhIFJBTSByZWdp b24gaW5zdGVhZCBvZgphcyBhbiBNTUlPIHJlZ2lvbj8KCj4gCj4gNC4yLjEgUmVzZXJ2ZSBTdG9y YWdlIGZvciBNYW5hZ2VtZW50IFN0cnVjdHVyZXMKPiAKPiAgQSBjb3JlIGRhdGEgc3RydWN0IGlu IFhlbiBtZW1vcnkgbWFuYWdlbWVudCBpcyAnc3RydWN0IHBhZ2VfaW5mbycuCj4gIEZvciBub3Jt YWwgcmFtLCBYZW4gY3JlYXRlcyBhIHBhZ2VfaW5mbyBzdHJ1Y3QgZm9yIGVhY2ggcGFnZS4gRm9y Cj4gIHBtZW0sIHdlIGFyZSBnb2luZyB0byBkbyB0aGUgc2FtZS4gSG93ZXZlciwgZm9yIGxhcmdl IGNhcGFjaXR5IHBtZW0KPiAgZGV2aWNlcyAoZS5nLiBzZXZlcmFsIHRlcmFieXRlcyBvciBldmVu IGxhcmdlciksIGEgbGFyZ2UgYW1vdW50IG9mCj4gIHBhZ2VfaW5mbyBzdHJ1Y3RzIHdpbGwgb2Nj dXB5IHRvbyBtdWNoIHN0b3JhZ2Ugc3BhY2UgdGhhdCBjYW5ub3QKPiAgZml0IGluIHRoZSBub3Jt YWwgcmFtLgo+IAo+ICBPdXIgc29sdXRpb24sIGFzIHVzZWQgYnkgTGludXgga2VybmVsLCBpcyB0 byByZXNlcnZlIGFuIGFyZWEgb24gcG1lbQo+ICBhbmQgcGxhY2UgcG1lbSdzIHBhZ2VfaW5mbyBz dHJ1Y3RzIGluIHRoYXQgcmVzZXJ2ZWQgYXJlYS4gVGhlcmVmb3JlLAo+ICB3ZSBjYW4gYWx3YXlz IGVuc3VyZSB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgZm9yIHBtZW0gcGFnZV9pbmZvCj4gIHN0cnVj dHMsIHRob3VnaCB0aGUgYWNjZXNzIHRvIHRoZW0gaXMgc2xvd2VyIHRoYW4gZGlyZWN0bHkgZnJv bSB0aGUKPiAgbm9ybWFsIHJhbS4KPiAKPiAgU3VjaCBhIHBtZW0gbmFtZXNwYWNlIGNhbiBiZSBj cmVhdGVkIHZpYSBhIHVzZXJzcGFjZSB0b29sIG5kY3RsIGFuZAo+ICB0aGVuIHJlY29nbml6ZWQg YnkgTGludXggTlZESU1NIGRyaXZlci4gSG93ZXZlciwgdGhleSBjdXJyZW50bHkgb25seQo+ICBy ZXNlcnZlIHNwYWNlIGZvciBMaW51eCBrZXJuZWwncyBwYWdlIHN0cnVjdHMuIFRoZXJlZm9yZSwg b3VyIGRlc2lnbgo+ICBuZWVkIHRvIGV4dGVuZCBib3RoIExpbnV4IE5WRElNTSBkcml2ZXIgYW5k IG5kY3RsIHRvIHJlc2VydmUKPiAgYXJiaXRyYXJ5IHNpemUuCgpUaGF0IHNlZW1zIC4uIGZyYWdp bGU/IFdoYXQgaWYgV2luZG93cyBvciBGcmVlQlNEIHdhbnQgdG8gdXNlIGl0CnRvbz8gV291bGQg dGhpcyAnc3RydWN0IHBhZ2UnIG9uIG9uIE5WRElNTSBiZSBnZW5lcmFsaXplZCBlbm91Z2gKdG8g d29yayB3aXRoIExpbnV4LFhlbiwgRnJlZUJTRCBhbmQgd2hhdCBub3Q/CgpBbmQgdGhpcyBuZGN0 bCBpcyBodHRwczovL2dpdGh1Yi5jb20vcG1lbS9uZGN0bCBJIHByZXN1bWU/CgpBbmQgaG93IGlz IHRoaXMgc3RydWN0dXJlIHJlc2VydmVkPyBJcyBpdCBhIHNlcGVyYXRlIG5hbWVzcGFjZSBlbnRy eT8KQW5kIFFFTVUga25vd3Mgbm90IHRvIGFjY2VzcyBpdD8gT3IgWGVuIG5lZWRzIHRvIG1ha2Ug c3VyZSBfbm9ib2R5XwpleGNlcHQgaXQgY2FuIGFjY2VzcyBpdD8gV2hpY2ggbWVhbnMgWGVuIG1h eSBuZWVkIHRvIGtub3cgdGhlIGZvcm1hdApvZiB0aGUgbmRjdGwgc3RydWN0dXJlcyB0aGF0IGFy ZSBsYWlkIG91dCBpbiB0aGUgTlZESU1NIHJlZ2lvbj8KCj4gCj4gNC4yLjIgRGV0ZWN0aW9uIG9m IEhvc3QgcG1lbSBEZXZpY2VzCj4gCj4gIFRoZSBkZXRlY3Rpb24gYW5kIGluaXRpYWxpemUgaG9z dCBwbWVtIGRldmljZXMgcmVxdWlyZSBhIG5vbi10cml2aWFsCj4gIGRyaXZlciB0byBpbnRlcmFj dCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIEFDUEkgbmFtZXNwYWNlIGRldmljZXMsCj4gIHBhcnNl IG5hbWVzcGFjZSBsYWJlbHMgYW5kIG1ha2UgbmVjZXNzYXJ5IHJlY292ZXJ5IGFjdGlvbnMuIElu c3RlYWQKPiAgb2YgZHVwbGljYXRpbmcgdGhlIGNvbXByZWhlbnNpdmUgTGludXggcG1lbSBkcml2 ZXIgaW4gWGVuIGh5cGVydmlzb3IsCj4gIG91ciBkZXNpZ25zIGxlYXZlcyBpdCB0byBEb20wIExp bnV4IGFuZCBsZXQgRG9tMCBMaW51eCByZXBvcnQKPiAgZGV0ZWN0ZWQgaG9zdCBwbWVtIGRldmlj ZXMgdG8gWGVuIGh5cGVydmlzb3IuCgpTbyBYZW4gd291bGQgaWdub3JlIGF0IGJvb3R1cCBBQ1BJ IE5GSVQgc3RydWN0dXJlcz8KPiAKPiAgT3VyIGRlc2lnbiB0YWtlcyBmb2xsb3dpbmcgc3RlcHMg dG8gZGV0ZWN0IGhvc3QgcG1lbSBkZXZpY2VzIHdoZW4gWGVuCj4gIGJvb3RzLgo+ICAoMSkgQXMg Ym9vdGluZyBvbiBiYXJlIG1ldGFsLCBob3N0IHBtZW0gZGV2aWNlcyBhcmUgZGV0ZWN0ZWQgYnkg RG9tMAo+ICAgICAgTGludXggTlZESU1NIGRyaXZlci4KPiAKPiAgKDIpIE91ciBkZXNpZ24gZXh0 ZW5kcyBMaW51eCBOVkRJTU0gZHJpdmVyIHRvIHJlcG9ydHMgU1BBJ3MgYW5kIHNpemVzCj4gICAg ICBvZiB0aGUgcG1lbSBkZXZpY2VzIGFuZCByZXNlcnZlZCBhcmVhcyB0byBYZW4gaHlwZXJ2aXNv ciB2aWEgYQo+ICAgICAgbmV3IGh5cGVyY2FsbC4KCnJlc2VydmVkIGFyZWFzPyBUaGF0IGlzIHRo ZSBuYW1lc3BhY2UgcmVnaW9uIGFuZCB0aGUgU1BBIDxzdGFydCxlbmQ+CmZvciB0aGUgbmRjdGwg YXJlYXM/IEFyZSB0aGUgbmRjdGwgYXJlYXMgZ3Vhcm5hdGVlZCB0byBiZSBjb250aW5nb3VzPwoK SXMgdGhlcmUgc29tZSBzcGVjIG9uIHRoZSBuZGN0bCBhbmQgaG93L3doZXJlIHRoZXkgYXJlIHN0 dWNrIGluIHRoZSBOVkRJTU0/Cgo+IAo+ICAoMykgWGVuIGh5cGVydmlzb3IgdGhlbiBjaGVja3MK PiAgICAgIC0gd2hldGhlciBTUEEgYW5kIHNpemUgb2YgdGhlIG5ld2x5IHJlcG9ydGVkIHBtZW0g ZGV2aWNlIGlzIG92ZXJsYXAKPiAgICAgICAgd2l0aCBhbnkgcHJldmlvdXNseSByZXBvcnRlZCBw bWVtIGRldmljZXM7CgpPciBub3JtYWwgUkFNPwoKPiAgICAgIC0gd2hldGhlciB0aGUgcmVzZXJ2 ZWQgYXJlYSBjYW4gZml0IGluIHRoZSBwbWVtIGRldmljZSBhbmQgaXMKPiAgICAgICAgbGFyZ2Ug ZW5vdWdoIHRvIGhvbGQgcGFnZV9pbmZvIHN0cnVjdHMgZm9yIGl0c2VsZi4KCkkgdGhpbmsgSSBr bm93IHdoYXQgeW91IG1lYW4gYnV0IGl0IHNvdW5kcyBvZGQuCgpQZXJoYXBzOgoKIGxhcmdlIGVu b3VnaCB0byBob2xkIHBhZ2VfaW5mbyBzdHJ1Y3QncyBmb3IgaXQncyBlbnRpcmUgcmFuZ2U/CgpO YXRpdmUgc3BlYWtlciwgbGlrZSBJYW4sIHdvdWxkIGtub3cgaG93IHRvIHNheSB0aGlzIHJpZ2h0 IEkgdGhpbmsuCgpBbnlob3csIHdvdWxkbid0IHRoaXMgJ3NpemVvZihzdHJ1Y3QgcGFnZV9pbmZv KScgZGVwZW5kIG9uIHRoZSBuZGN0bAp0b29sIGFuZCB3aGF0IHZlcnNpb24gd2FzIHVzZWQgdG8g Y3JlYXRlIHRoaXM/IFdoYXQgaWYgb25lIHZlcnNpb24KdXNlZCAzMi1ieXRlcyBmb3IgYSBQQUdF LCB3aGlsZSBhbm90aGVyIHVzZWQgNjQtYnl0ZXMgZm9yIGEgUEFHRSB0b28/Ckl0IHdvdWxkIGJl IGEgYml0IG9mIGNhdGNoaW5nIHVwIC4uIHdhaXQsIHRoaXMgc2FtZSBwcm9ibGVtIE1VU1QKYmUg d2l0aCBMaW51eD8gSG93IGRvZXMgaXQgZGVhbCB3aXRoIHRoaXM/Cgo+IAo+ICAgICAgSWYgYW55 IGNoZWNrcyBmYWlsLCB0aGUgcmVwb3J0ZWQgcG1lbSBkZXZpY2Ugd2lsbCBiZSBpZ25vcmVkIGJ5 Cj4gICAgICBYZW4gaHlwZXJ2aXNvciBhbmQgaGVuY2Ugd2lsbCBub3QgYmUgdXNlZCBieSBhbnkK CkkgaG9wZSB0aGlzIGh5cGVyY2FsbCByZXR1cm5zIGFuIGVycm9yIGNvZGUgdG9vPwoKPiAgICAg IGd1ZXN0cy4gT3RoZXJ3aXNlLCBYZW4gaHlwZXJ2aXNvciB3aWxsIHJlY29yZGVkIHRoZSByZXBv cnRlZApzL3JlY29yZGVkL3JlY29yZC8KPiAgICAgIHBhcmFtZXRlcnMgYW5kIGNyZWF0ZSBwYWdl X2luZm8gc3RydWN0cyBpbiB0aGUgcmVzZXJ2ZWQgYXJlYS4KCk9oaC4gWW91IGp1c3QgYmxhc3Qg aXQgYXdheT8gSSBndWVzcyBpdCBtYWtlcyBzZW5zZS4gVGhlbiB3aGF0IGlzIHRoZQpwdXJwb3Nl IG9mIHRoZSBuZGN0bD8gSnVzdCB0byBjYXJ2ZSBvdXQgYW4gbmFtZXNwYWNlIHJlZ2lvbiBmb3Ig dGhpcz8KCkFuZCB3aGF0IGlmIHRoZXJlIGlzIHNvbWV0aGluZyB0aGVyZSBmcm9tIHByZXZpb3Vz IE9TIChzYXkgTGludXgpPwpKdXN0IGJsYXN0IGl0IGF3YXk/IEJ1dCBjb3VsZCBMaW51eCBkZXBl bmQgb24gdGhpcyBjb250YWluaW5nIHNvbWUKcGVyc2lzdGVudCBpbmZvcm1hdGlvbj8gT3IgZG9l cyBpdCBhbHNvIGJsYXN0IGl0IGF3YXk/CgpCdXQgdGhvc2UgcmVnaW9ucyBtYXkgYmUgbm9uLWNv bnRpbmdvdXMgKG9yIG1heWJlIG5vdD8gSSBuZWVkIHRvIGNoZWNrCnRoZSBzcGVjIHRvIGRvdWJs ZS1jaGVjaykgc28gaG93IGRvIHlvdSBmaWd1cmUgb3V0IHRoaXMgJ3Jlc2VydmVkIGFyZWEnCmFz IGl0IG1heSBiZSBhbiBOIFNQQSdzIG9mIHRoZSA8c3RhcnQ+LDxlbmQ+IHR5cGU/Cgo+IAo+ICAo NCkgQmVjYXVzZSB0aGUgcmVzZXJ2ZWQgYXJlYSBpcyBub3cgdXNlZCBieSBYZW4gaHlwZXJ2aXNv ciwgaXQKPiAgICAgIHNob3VsZCBub3QgYmUgYWNjZXNzaWJsZSBieSBEb20wIGFueSBtb3JlLiBU aGVyZWZvcmUsIGlmIGEgaG9zdAo+ICAgICAgcG1lbSBkZXZpY2UgaXMgcmVjb3JkZWQgYnkgWGVu IGh5cGVydmlzb3IsIFhlbiB3aWxsIHVubWFwIGl0cwoKcy9yZWNvcmRlZC91c3VycGVkLz8gTWF5 YmUgbW9ub3BvbGl6ZWQ/IE93bmVkPyBBaCwgcG9zc2VzZWQhCgpzL2l0cy90aGlzLwo+ICAgICAg cmVzZXJ2ZWQgYXJlYSBmcm9tIERvbTAuIE91ciBkZXNpZ24gYWxzbyBuZWVkcyB0byBleHRlbmQg TGludXgKPiAgICAgIE5WRElNTSBkcml2ZXIgdG8gImJhbGxvb24gb3V0IiB0aGUgcmVzZXJ2ZWQg YXJlYSBhZnRlciBpdAo+ICAgICAgc3VjY2Vzc2Z1bGx5IHJlcG9ydHMgYSBwbWVtIGRldmljZSB0 byBYZW4gaHlwZXJ2aXNvci4KClRoaXMgImJhbGxvb24gb3V0IiBpcyBpbnRlcmVzdGluZy4gWW91 IGFyZSBlZmZlY3RpdmVseSB0ZWxsaW5nIExpbnV4CnRvIGlnbm9yZSBhIGNlcnRhaW4gcmFuZ2Ug b2YgJ3N0cnVjdCBwYWdlX2luZm8nLCBzbyB0aGF0IGlmIHNvbWVib2R5CnVzZXMgL3N5cy9kZWJ1 Zy9rZXJuZWwvcGFnZV93YWxrIGl0IHdvbid0IGJsb3cgdXA/IChBcyB0aGUga2VybmUKY2FuJ3Qg cmVhZCB0aGUgc3RydWN0IHBhZ2VfaW5mbyBhbnltb3JlKS4KCkhvdyB3b3VsZCB5b3UgZG8gdGhp cz8gU2ltdWxhdGUgYW4gTlZESU1NIHVucGx1Zz8KCkJ1dCBpZiB5b3UgZG8gdGhhdCBob3cgd2ls bCBTTUFSVCB0b29scyB3b3JrIGFueW1vcmU/IEFuZAp3aG8gd291bGQgZG8gdGhlIF9EU00gY2hl Y2tzIG9uIHRoZSBoZWFsdGggb2YgdGhlIE5WRElNTT8KCi9tZSBzY3JhdGNoZXMgaGlzIGhlYWQu IFBlcmhhcHMgdGhlIGFuc3dlcnMgYXJlIGxhdGVyIGluIHRoaXMKZGVzaWduLi4KCj4gCj4gNC4y LjMgR2V0IEhvc3QgTWFjaGluZSBBZGRyZXNzIChTUEEpIG9mIEhvc3QgcG1lbSBGaWxlcwo+IAo+ ICBCZWZvcmUgYSBwbWVtIGZpbGUgaXMgYXNzaWduZWQgdG8gYSBkb21haW4sIHdlIG5lZWQgdG8g a25vdyB0aGUgaG9zdAo+ICBTUEEgcmFuZ2VzIHRoYXQgYXJlIGFsbG9jYXRlZCB0byB0aGlzIGZp bGUuIFdlIGRvIHRoaXMgd29yayBpbiB4bC4KPiAKPiAgSWYgYSBwbWVtIGRldmljZSAvZGV2L3Bt ZW0wIGlzIGdpdmVuLCB4bCB3aWxsIHJlYWQKPiAgL3N5cy9ibG9jay9wbWVtMC9kZXZpY2Uve3Jl c291cmNlLHNpemV9IHJlc3BlY3RpdmVseSBmb3IgdGhlIHN0YXJ0Cj4gIFNQQSBhbmQgc2l6ZSBv ZiB0aGUgcG1lbSBkZXZpY2UuCgpPaCEgSG93IGNvbnZpZW50IQo+IAo+ICBJZiBhIHByZS1hbGxv Y2F0ZWQgZmlsZSAvbW50L2RheC9maWxlIGlzIGdpdmVuLAo+ICAoMSkgeGwgZmlyc3QgZmluZHMg dGhlIGhvc3QgcG1lbSBkZXZpY2Ugd2hlcmUgL21udC9kYXgvZmlsZSBpcy4gVGhlbgo+ICAgICAg aXQgdXNlcyB0aGUgbWV0aG9kIGFib3ZlIHRvIGdldCB0aGUgc3RhcnQgU1BBIG9mIHRoZSBob3N0 IHBtZW0KPiAgICAgIGRldmljZS4KPiAgKDIpIHhsIHRoZW4gdXNlcyBmaWVtYXAgaW9jdGwgdG8g Z2V0IHRoZSBleHRlbmQgbWFwcGluZ3Mgb2YKPiAgICAgIC9tbnQvZGF4L2ZpbGUsIGFuZCBhZGRz IHRoZSBjb3JyZXNwb25kaW5nIHBoeXNpY2FsIG9mZnNldHMgYW5kCj4gICAgICBsZW5ndGhzIGlu IGVhY2ggbWFwcGluZyBlbnRyaWVzIHRvIGFib3ZlIHN0YXJ0IFNQQSB0byBnZXQgdGhlIFNQQQo+ ICAgICAgcmFuZ2VzIHByZS1hbGxvY2F0ZWQgZm9yIHRoaXMgZmlsZS4KCk5pY2UgIQo+IAo+ICBU aGUgcmVzdWx0aW5nIGhvc3QgU1BBIHJhbmdlcyB3aWxsIGJlIHBhc3NlZCB0byBRRU1VIHdoaWNo IGFsbG9jYXRlcwo+ICBndWVzdCBhZGRyZXNzIHNwYWNlIGZvciB2TlZESU1NIGRldmljZXMgYW5k IGNhbGxzIFhlbiBoeXBlcnZpc29yIHRvCj4gIG1hcCB0aGUgZ3Vlc3QgYWRkcmVzcyB0byB0aGUg aG9zdCBTUEEgcmFuZ2VzLgo+IAo+IDQuMi40IE1hcCBIb3N0IHBtZW0gdG8gR3Vlc3RzCj4gCj4g IE91ciBkZXNpZ24gcmV1c2VzIHRoZSBleGlzdGluZyBhZGRyZXNzIG1hcHBpbmcgaW4gWGVuIGZv ciB0aGUgbm9ybWFsCj4gIHJhbSB0byBtYXAgcG1lbS4gV2Ugd2lsbCBzdGlsbCBpbml0aWF0ZSB0 aGUgbWFwcGluZyBmb3IgcG1lbSBmcm9tCj4gIFFFTVUsIGFuZCB0aGVyZSBpcyBvbmUgZGlmZmVy ZW5jZSBmcm9tIHRoZSBtYXBwaW5nIG9mIG5vcm1hbCByYW06Cj4gIC0gRm9yIHRoZSBub3JtYWwg cmFtLCBRRU1VIG9ubHkgbmVlZHMgdG8gcHJvdmlkZSBncGZuLCBhbmQgdGhlIGFjdHVhbAo+ICAg IGhvc3QgbWVtb3J5IHdoZXJlIGdwZm4gaXMgbWFwcGVkIGlzIGFsbG9jYXRlZCBieSBYZW4gaHlw ZXJ2aXNvci4KPiAgLSBGb3IgcG1lbSwgUUVNVSBwcm92aWRlcyBib3RoIGdwZm4gYW5kIG1mbiB3 aGVyZSBncGZuIGlzIGV4cGVjdGVkIHRvCj4gICAgYmUgbWFwcGVkIHRvLiBtZm4gaXMgcHJvdmlk ZWQgYnkgeGwgYXMgZGVzY3JpYmVkIGluIFNlY3Rpb24gNC4yLjMuCj4gCj4gIE91ciBkZXNpZ24g aW50cm9kdWNlIGEgbmV3IFhFTk1FTSBvcCBmb3IgdGhlIHBtZW0gbWFwcGluZywgd2hpY2gKPiAg ZmluYWxseSBjYWxscyBndWVzdF9waHlzbWFwX2FkZF9wYWdlKCkgdG8gYWRkIHRoZSBob3N0IHBt ZW0gcGFnZSB0byBhCj4gIGRvbWFpbidzIGFkZHJlc3Mgc3BhY2UuCj4gCj4gNC4yLjUgTWlzYyAx OiBSQVMKPiAKPiAgTWFjaGluZSBjaGVjayBjYW4gb2NjdXIgZnJvbSBOVkRJTU0gYXMgbm9ybWFs IHJhbSwgc28gdGhhdCB3ZSBmb2xsb3cKPiAgdGhlIGN1cnJlbnQgbWFjaGluZSBjaGVjayBoYW5k bGluZyBpbiBYZW4gZm9yIE1DIyBmcm9tIE5WRElNTS4KCk9LLCBzbyB0aGF0IGlzIG1jX21lbWVy cl9kaGFuZGxlci4gT0ssCgpJcyB0aGVyZSBlbm91Z2h0IHRlbGVtdHJ5IGluZm9ybWF0aW9uIGZv ciB0aGUgZ3Vlc3QgdG8ga25vdwppdCBpcyBOVkRJTU0gYW5kIGhhbmRsZSBpdCB2aWEgdGhlIE5W RElNTSAjTUNFIGVycm9yIGhhbmRsaW5nIHdoaWNoCmlzIGRpZmZlcmVudCB0aGFuIG5vcm1hbCAj TUNFPwoKSSBwcmVzdW1lIHRoaXMgbWVhbnMgYSBjZXJ0YWluIExpbnV4IGd1ZXN0IGRlcGVuZGVu Y3kgYXMgd2VsbApmb3IgdGhpcyB0byB3b3JrPwoKPiAKPiA0LjIuNiBNaXNjIDI6IGhvdHBsdWcK PiAKPiAgVGhlIGhvdHBsdWdnZWQgaG9zdCBOVkRJTU0gZGV2aWNlcyBpcyBkZXRlY3RlZCB2aWEg X0ZJVCBtZXRob2QgdW5kZXIKPiAgdGhlIHJvb3QgQUNQSSBuYW1lc3BhY2UgZGV2aWNlIGZvciBO VkRJTU0uIFdlIHJlbHkgb24gRG9tMCBMaW51eAo+ICBrZXJuZWwgdG8gZGlzY292ZXIgdGhlIGhv dHBsdWdnZWQgTlZESU1NIGRldmljZXMgYW5kIGZvbGxvdyBzdGVwcyBpbgo+ICBTZWN0aW9uIDQu Mi4yIHRvIHJlcG9ydCB0aGUgaG90cGx1Z2dlZCBkZXZpY2VzIHRvIFhlbiBoeXBlcnZpc29yLgo+ IAo+IAo+IDQuMyBHdWVzdCBBQ1BJIEVtdWxhdGlvbgo+IAo+ICBHdWVzdCBBQ1BJIGVtdWxhdGlv biBpcyBjb21wb3NlZCBvZiB0d28gcGFydHM6IGJ1aWxkaW5nIGd1ZXN0IE5GSVQKPiAgYW5kIFNT RFQgdGhhdCBkZWZpbmVzIEFDUEkgbmFtZXNwYWNlIGRldmljZXMgZm9yIE5WRElNTSwgYW5kCj4g IGVtdWxhdGluZyBndWVzdCBfRFNNLiBBcyBRRU1VIGhhcyBhbHJlYWR5IGltcGxlbWVudGVkIEFD UEkgc3VwcG9ydAo+ICBmb3Igdk5WRElNTSBvbiBLVk0sIG91ciBkZXNpZ24gaW50ZW5kcyB0byBy ZXVzZSBpdHMgaW1wbGVtZW50YXRpb24uCj4gCj4gNC4zLjEgQnVpbGRpbmcgR3Vlc3QgQUNQSSBU YWJsZXMKPiAKPiAgVHdvIHRhYmxlcyBmb3Igdk5WRElNTSBuZWVkIHRvIGJlIGJ1aWx0Ogo+ICAt IE5GSVQsIHdoaWNoIGRlZmluZXMgdGhlIGJhc2ljIHBhcmFtZXRlcnMgb2Ygdk5WRElNTSBkZXZp Y2VzIGFuZAo+ICAgIGRvZXMgbm90IGNvbnRhaW4gYW55IEFNTCBjb2RlLgo+ICAtIFNTRFQsIHdo aWNoIGRlZmluZXMgQUNQSSBuYW1lc3BhY2UgZGV2aWNlcyBmb3Igdk5WRElNTSBpbiBBTUwgY29k ZS4KPiAKPiAgVGhlIGNvbnRlbnRzIG9mIGJvdGggdGFibGVzIGFyZSBhZmZlY3RlZCBieSBzb21l IHBhcmFtZXRlcnMKPiAgKGUuZy4gYWRkcmVzcyBhbmQgc2l6ZSBvZiB2TlZESU1NIGRldmljZXMp IHRoYXQgY2Fubm90IGJlIGRldGVybWluZWQKPiAgdW50aWwgYSBndWVzdCBjb25maWd1cmF0aW9u IGlzIGdpdmVuLiBIb3dldmVyLCBhbGwgQU1MIGNvZGUgaW4gZ3Vlc3QKPiAgQUNQSSBhcmUgY3Vy cmVudGx5IGdlbmVyYXRlZCBhdCBjb21waWxlIHRpbWUgZnJvIHByZS1jcmFmdGVkIC5hc2wKCnMv ZnJvL2Zvci8KCj4gIGZpbGVzLCB3aGljaCBpcyBub3QgZmVhc2libGUgZm9yIEFDUEkgbmFtZXNw YWNlIGRldmljZXMgZm9yIHZOVkRJTU0uCj4gCj4gIFdlIGNvdWxkIGVpdGhlciBpbnRyb2R1Y2Ug YW4gQU1MIGJ1aWxkZXIgdG8gZ2VuZXJhdGUgQU1MIGNvZGUgYXQKPiAgcnVudGltZSBsaWtlIHdo YXQgUUVNVSBpcyBjdXJyZW50bHkgZG9pbmcsIG9yIHBhc3Mgdk5WRElNTSBBQ1BJCj4gIHRhYmxl cyBmcm9tIFFFTVUgdG8gWGVuLiBJbiBvcmRlciB0byByZWR1Y2UgdGhlIGR1cGxpY2F0ZWQgY29k ZSAodG8KCnMvdG8gWGVuL3RvIGh2bWxvYWRlci8gSSB0aGluaz8KCj4gIEFNTCBidWlsZGVyIGlu IFFFTVUpLCBvdXIgZGVzaWduIHRha2VzIHRoZSBsYXR0ZXIgYXBwcm9hY2guIEJhc2ljYWxseSwK PiAgb3VyIGRlc2lnbiB0YWtlcyB0aGUgZm9sbG93aW5nIHN0ZXBzOgo+ICAxKSBUaGUgY3VycmVu dCBRRU1VIGRvZXMgbm90IGJ1aWxkIGFueSBBQ1BJIHN0dWZmcyB3aGVuIGl0IHJ1bnMgYXMKPiAg ICAgdGhlIFhlbiBkZXZpY2UgbW9kZWwsIHNvIHdlIG5lZWQgdG8gcGF0Y2ggaXQgdG8gZ2VuZXJh dGUgTkZJVCBhbmQKPiAgICAgQU1MIGNvZGUgb2YgQUNQSSBuYW1lc3BhY2UgZGV2aWNlcyBmb3Ig dk5WRElNTS4KPiAKPiAgMikgUUVNVSB0aGVuIGNvcGllcyBhYm92ZSBORklUIGFuZCBBQ1BJIG5h bWVzcGFjZSBkZXZpY2VzIHRvIGFuIGFyZWEKPiAgICAgYXQgdGhlIGVuZCBvZiBndWVzdCBtZW1v cnkgYmVsb3cgNEcuIFRoZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzCj4gICAgIGFuZCBzaXplIG9m IHRoaXMgYXJlYSBhcmUgd3JpdHRlbiB0byB4ZW5zdG9yZSBrZXlzCj4gICAgICgvbG9jYWwvZG9t YWluL2RvbWlkL2h2bWxvYWRlci9kbS1hY3BpL3thZGRyZXNzLGxlbmd0aH0pIFRoZQo+ICAgICBk ZXRhaWxlZCBmb3JtYXQgb2YgZGF0YSBpbiB0aGlzIGFyZWEgaXMgZXhwbGFpbmVkIGxhdGVyLgo+ IAo+ICAzKSBodm1sb2FkZXIgcmVhZHMgYWJvdmUgeGVuc3RvcmUga2V5cyB0byBwcm9iZSB0aGUg cGFzc2VkLWluIEFDUEkKPiAgICAgdGFibGVzIGFuZCBBQ1BJIG5hbWVzcGFjZSBkZXZpY2VzLCBh bmQgZGV0ZWN0cyB0aGUgcG90ZW50aWFsCj4gICAgIGNvbGxpc2lvbnMgYXMgZXhwbGFpbmVkIGxh dGVyLgo+IAo+ICA0KSBJZiBubyBjb2xsaXNpb25zIGFyZSBmb3VuZCwgaHZtbG9hZGVyIHdpbGwK PiAgICAgKDEpIGFwcGVuZCB0aGUgcGFzc2VkLWluIEFDUEkgdGFibGVzIHRvIHRoZSBlbmQgb2Yg ZXhpc3RpbmcgZ3Vlc3QKPiAgICAgICAgIEFDUEkgdGFibGVzLCBsaWtlIHdoYXQgY3VycmVudCBj b25zdHJ1Y3RfcGFzc3Rocm91Z2hfdGFibGVzKCkKPiAgICAgICAgIGRvZXMuCj4gICAgICgyKSBj b25zdHJ1Y3QgYSBTU0RUIGZvciBlYWNoIHBhc3NlZC1pbiBBQ1BJIG5hbWVzcGFjZSBkZXZpY2Vz IGFuZAo+ICAgICAgICAgYXBwZW5kIHRvIHRoZSBlbmQgb2YgZXhpc3RpbmcgZ3Vlc3QgQUNQSSB0 YWJsZXMuCj4gCj4gIFBhc3NpbmcgYXJiaXRyYXJ5IEFDUEkgdGFibGVzIGFuZCBBTUwgY29kZSBm cm9tIFFFTVUgY291bGQKPiAgaW50cm9kdWNlIGF0IGxlYXN0IHR3byB0eXBlcyBvZiBjb2xsaXNp b25zOgo+ICAxKSBhIHBhc3NlZC1pbiB0YWJsZSBhbmQgYSBYZW4tYnVpbHQgdGFibGUgaGF2ZSB0 aGUgc2FtZSBzaWduYXR1cmUKPiAgMikgYSBwYXNzZWQtaW4gQUNQSSBuYW1lc3BhY2UgZGV2aWNl IGFuZCBhIFhlbi1idWlsdCBBQ1BJIG5hbWVzcGFjZQo+ICAgICBkZXZpY2UgaGF2ZSB0aGUgc2Ft ZSBkZXZpY2UgbmFtZS4KPiAKPiAgT3VyIGRlc2lnbiB0YWtlcyB0aGUgZm9sbG93aW5nIG1ldGhv ZCB0byBhdm9pZCBhbmQgZGV0ZWN0IGNvbGxpc2lvbnMuCj4gIDEpIFRoZSBkYXRhIGxheW91dCBv ZiBhcmVhIHdoZXJlIFFFTVUgY29waWVzIGl0cyBORklUIGFuZCBBQ1BJCj4gICAgIG5hbWVzcGFj ZSBkZXZpY2VzIGlzIG9yZ2FuaXplZCBhcyBiZWxvdzoKCldoeSBjYW4ndCB0aGlzIGJlIGV4cHJl c3NlZCBpbiBYZW5TdG9yZT8KCllvdSBjb3VsZCBoYXZlIC9sb2NhbC9kb21haW4vZG9taWQvaHZt bG9hZGVyL2RtLWFjcGkvPG5hbWU+L3thZGRyZXNzLGxlbmd0aCwgdHlwZX0KPwoKPiAKPiAgICAg IDEgYnl0ZSA0IGJ5dGVzICBsZW5ndGggYnl0ZXMKPiAgICAgKy0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0KPiAgICAgfCB0eXBlIHwg bGVuZ3RoIHwgZGF0YSBibG9iIHwgdHlwZSB8IGxlbmd0aCB8IGRhdGEgYmxvYiB8IC4uLgo+ICAg ICArLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLQo+IAo+ICAgICB0eXBlOiAwIC0gZGF0YSBibG9iIGNvbnRhaW5zIGEgY29tcGxldGUg QUNQSSB0YWJsZQo+ICAgICAgICAgICAxIC0gZGF0YSBibG9iIGNvbnRhaW5zIEFNTCBjb2RlIGZv ciBhbiBBQ1BJIG5hbWVzcGFjZSBkZXZpY2UKPiAKPiAgICAgbGVuZ3RoOiB0aGUgbnVtYmVyIG9m IGJ5dGVzIG9mIGRhdGEgYmxvYgo+IAo+ICAgICBkYXRhIGJsb2I6IHR5cGUgMCAtIGEgY29tcGxl dGUgQUNQSSB0YWJsZQo+ICAgICAgICAgICAgICAgIHR5cGUgMSAtIGNvbXBvc2VkIGFzIGJlbG93 Ogo+IAo+ICAgICAgICAgICAgICAgICAgICAgICAgICA0IGJ5dGVzICAgKGxlbmd0aCAtIDQpIGJ5 dGVzCj4gCSAgICAgICAgICAgICAgICArLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSsKPiAJ CQl8IG5hbWVbNF0gfCBBTUwgY29kZSBzbmlwcGV0IHwKPiAJCQkrLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSsKPiAKPiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lWzRdICAgICAgICAg OiBuYW1lIG9mIEFDUEkgbmFtZXNwYWNlIGRldmljZQo+IAkJCUFNTCBjb2RlIHNuaXBwZXQ6IEFN TCBjb2RlIGluc2lkZSAiRGV2aWNlKG5hbWVbNF0pIgo+IAo+ICAgICAgICAgICAgICAgIGUuZy4g Zm9yIGFuIEFDUEkgbmFtZXNwYWNlIGRldmljZSBkZWZpbmVkIGJ5Cj4gCSAgICAgICAgICAgICBE ZXZpY2UoTlZEUikKPiAJCSAgICAgewo+IAkJICAgICAgIE5hbWUgKF9ISUQsICJBQ1BJMDAxMiIp Cj4gCQkgICAgICAgLi4uCj4gCQkgICAgIH0KPiAJCSAgICBRRU1VIGJ1aWxkcyBhIGRhdGEgYmxv YiBsaWtlCj4gCQkgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsKPiAJCQl8ICdOJywgJ1YnLCAnRCcsICdSJyB8IE5hbWUgKF9ISUQsICJB Q1BJMDAxMiIpIC4uLiB8Cj4gCQkJKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKwo+IAo+ICAyKSBodm1sb2FkZXIgc3RvcmVzIHNpZ25hdHVyZXMgb2Yg aXRzIG93biBndWVzdCBBQ1BJIHRhYmxlcyBpbiBhbgo+ICAgICBhcnJheSBidWlsdGluX3RhYmxl X3NpZ3NbXSwgYW5kIG5hbWVzIG9mIGl0cyBvd24gZ3Vlc3QgQUNQSQo+ICAgICBuYW1lc3BhY2Ug ZGV2aWNlcyBpbiBhbiBhcnJheSBidWlsdGluX25kX25hbWVzW10uIEJlY2F1c2UgdGhlcmUKPiAg ICAgYXJlIG9ubHkgYSBmZXcgZ3Vlc3QgQUNQSSB0YWJsZXMgYW5kIG5hbWVzcGFjZSBkZXZpY2Vz IGJ1aWx0IGJ5Cj4gICAgIFhlbiwgd2UgY2FuIGhhcmRjb2RlIHRoZWlyIHNpZ25hdHVyZXMgb3Ig bmFtZXMgaW4gaHZtbG9hZGVyLgo+IAo+ICAzKSBXaGVuIGh2bWxvYWRlciBsb2FkcyBhIHR5cGUg MCBlbnRyeSwgaXQgZXh0cmFjdHMgdGhlIHNpZ25hdHVyZQoKcy90eXBlIDAvZGF0YSBibG9iLT50 eXBlIDAvID8KCj4gICAgIGZyb20gdGhlIGRhdGEgYmxvYiBhbmQgc2VhcmNoIGZvciBpdCBpbiBi dWlsdGluX3RhYmxlX3NpZ3NbXS4gIElmCj4gICAgIGZvdW5kIGFueW9uZSwgaHZtbG9hZGVyIHdp bGwgcmVwb3J0IGFuIGVycm9yIGFuZCBzdG9wLiBPdGhlcndpc2UsCj4gICAgIGl0IHdpbGwgYXBw ZW5kIGl0IHRvIHRoZSBlbmQgb2YgbG9hZGVkIGd1ZXN0IEFDUEkuCj4gCj4gIDQpIFdoZW4gaHZt bG9hZGVyIGxvYWRzIGEgdHlwZSAxIGVudHJ5LCBpdCBleHRyYWN0cyB0aGUgZGV2aWNlIG5hbWUK PiAgICAgZnJvbSB0aGUgZGF0YSBibG9iIGFuZCBzZWFyY2ggZm9yIGl0IGluIGJ1aWx0aW5fbmRf bmFtZXNbXS4gSWYKPiAgICAgZm91bmQgYW55b25lLCBodm1sb2FkZXIgd2lsbCByZXBvcnQgYW5k IGVycm9yIGFuZCBzdG9wLiBPdGhlcndpc2UsCj4gICAgIGl0IHdpbGwgd3JhcCB0aGUgQU1MIGNv ZGUgc25pcHBldCBieSAiRGV2aWNlIChuYW1lWzRdKSB7Li4ufSIgYW5kCj4gICAgIGluY2x1ZGUg aXQgaW4gYSBuZXcgU1NEVCB3aGljaCBpcyB0aGVuIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YKPiAg ICAgbG9hZGVkIGd1ZXN0IEFDUEkuCj4gCj4gNC4zLjIgRW11bGF0aW5nIEd1ZXN0IF9EU00KPiAK PiAgT3VyIGRlc2lnbiBsZWF2ZXMgdGhlIGVtdWxhdGlvbiBvZiBndWVzdCBfRFNNIHRvIFFFTVUu IEp1c3QgYXMgd2hhdAo+ICBpdCBkb2VzIHdpdGggS1ZNLCBRRU1VIHJlZ2lzdGVycyB0aGUgX0RT TSBidWZmZXIgYXMgTU1JTyByZWdpb24gd2l0aAo+ICBYZW4gYW5kIHRoZW4gYWxsIGd1ZXN0IGV2 YWx1YXRpb25zIG9mIF9EU00gYXJlIHRyYXBwZWQgYW5kIGVtdWxhdGVkCj4gIGJ5IFFFTVUuCgpT d2VldCEKClNvIG9uZSBxdWVzdGlvbiB0aGF0IEkgYW0gbm90IGlmIGl0IGhhcyBiZWVuIGFuc3dl cmVkLCB3aXRoIHRoZQonc3RydWN0IHBhZ2VfaW5mbycgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBk b20wIGhvdyB3aWxsIE9FTSBfRFNNIG1ldGhvZApvcGVyYXRpb24/IEZvciBleGFtcGxlIHNvbWUg b2YgdGhlIEFNTCBjb2RlIG1heSBhc2tpbmcgdG8gcG9rZQphdCBzcGVjaWZpYyBTUEFzLCBidXQg aG93IHdpbGwgTGludXggZG8gdGhpcyBwcm9wZXJseSB3aXRob3V0CidzdHJ1Y3QgcGFnZV9pbmZv JyBiZSBhdmFpbGFibGU/CgpUaGFua3MhCj4gCj4gCj4gUmVmZXJlbmNlczoKPiBbMV0gQUNQSSBT cGVjaWZpY2F0aW9uIHY2LAo+ICAgICBodHRwOi8vd3d3LnVlZmkub3JnL3NpdGVzL2RlZmF1bHQv ZmlsZXMvcmVzb3VyY2VzL0FDUElfNi4wLnBkZgo+IFsyXSBOVkRJTU0gTmFtZXNwYWNlIFNwZWNp ZmljYXRpb24sCj4gICAgIGh0dHA6Ly9wbWVtLmlvL2RvY3VtZW50cy9OVkRJTU1fTmFtZXNwYWNl X1NwZWMucGRmCj4gWzNdIE5WRElNTSBCbG9jayBXaW5kb3cgRHJpdmVyIFdyaXRlcidzIEd1aWRl LAo+ICAgICBodHRwOi8vcG1lbS5pby9kb2N1bWVudHMvTlZESU1NX0RyaXZlcl9Xcml0ZXJzX0d1 aWRlLnBkZgo+IFs0XSBOVkRJTU0gRFNNIEludGVyZmFjZSBFeGFtcGxlLAo+ICAgICBodHRwOi8v cG1lbS5pby9kb2N1bWVudHMvTlZESU1NX0RTTV9JbnRlcmZhY2VfRXhhbXBsZS5wZGYKPiBbNV0g VUVGSSBTcGVjaWZpY2F0aW9uIHYyLjYsCj4gICAgIGh0dHA6Ly93d3cudWVmaS5vcmcvc2l0ZXMv ZGVmYXVsdC9maWxlcy9yZXNvdXJjZXMvVUVGSSUyMFNwZWMlMjAyXzYucGRmCj4gWzZdIEludGVs IEFyY2hpdGVjdHVyZSBJbnN0cnVjdGlvbiBTZXQgRXh0ZW5zaW9ucyBQcm9ncmFtbWluZyBSZWZl cmVuY2UsCj4gICAgIGh0dHBzOi8vc29mdHdhcmUuaW50ZWwuY29tL3NpdGVzL2RlZmF1bHQvZmls ZXMvbWFuYWdlZC8wNy9iNy8zMTk0MzMtMDIzLnBkZgo+IFs3XSBodHRwczovL2xpc3RzLnhlbnBy b2plY3Qub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIwMTYtMDIvbXNnMDAwMDYuaHRtbAo+ IFs4XSBodHRwczovL2xpc3RzLnhlbi5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxNi0w Ni9tc2cwMDYwNi5odG1sCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK