From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mirela Simonovic Subject: Re: [RFC v2] xen/arm: Suspend to RAM Support in Xen for ARM Date: Thu, 12 Apr 2018 16:13:00 +0200 Message-ID: References: <20171222174137.30076-1-mirela.simonovic@aggios.com> <20180326114249.GH26265@toto> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Peng Fan Cc: "Edgar E. Iglesias" , "sstabellini@kernel.org" , "julien.grall@linaro.org" , "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org SGkgUGVuZywKClNvcnJ5IGZvciBsYXRlIHJlc3BvbnNlLCB0aGlzIGVtYWlsIGdvdCBidXJpZWQg YW5kIEkgYWNjaWRlbnRhbGx5IHNhdyBpdCBub3cuCgpPbiBUaHUsIEFwciAxMiwgMjAxOCBhdCA0 OjI2IEFNLCBQZW5nIEZhbiA8cGVuZy5mYW5AbnhwLmNvbT4gd3JvdGU6Cj4gSGkgRWRnYXIsCj4K Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4gRnJvbTogRWRnYXIgRS4gSWdsZXNpYXMg W21haWx0bzplZGdhci5pZ2xlc2lhc0B4aWxpbnguY29tXQo+PiBTZW50OiAyMDE45bm0M+aciDI2 5pelIDE5OjQzCj4+IFRvOiBQZW5nIEZhbiA8cGVuZy5mYW5AbnhwLmNvbT4KPj4gQ2M6IE1pcmVs YSBTaW1vbm92aWMgPG1pcmVsYS5zaW1vbm92aWNAYWdnaW9zLmNvbT47IHhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnOwo+PiBzc3RhYmVsbGluaUBrZXJuZWwub3JnOyBqdWxpZW4uZ3JhbGxAbGluYXJv Lm9yZwo+PiBTdWJqZWN0OiBSZTogW1hlbi1kZXZlbF0gW1JGQyB2Ml0geGVuL2FybTogU3VzcGVu ZCB0byBSQU0gU3VwcG9ydCBpbiBYZW4gZm9yCj4+IEFSTQo+Pgo+PiBPbiBNb24sIE1hciAyNiwg MjAxOCBhdCAwOTo1MTo0MEFNICswMDAwLCBQZW5nIEZhbiB3cm90ZToKPj4gPiBIaSBNaXJlbGEs Cj4+ID4KPj4gPiBHb29kIHRvIGtub3cgdGhhdCB5b3UgYXJlIHdvcmtpbmcgc3VzcGVuZC9yZXN1 bWUgc3VwcG9ydC4gQ3VycmVudGx5IHdlCj4+ID4gYXJlIGFsc28gdHJ5aW5nIHRvIHN1cHBvcnQg dGhpcyBvbiBpLk1YOCwganVzdCB3b25kZXIgZG8geW91IGhhdmUgYW55Cj4+ID4gb3BlbiBzb3Vy Y2UgYXZhaWxhYmxlIHRvIHN1cHBvcnQgc3VzcGVuZCB0byByYW0/Cj4+ID4KCldlIGRvbid0IGhh dmUgc3VzcGVuZCB0byBSQU0gc3VwcG9ydCBhdmFpbGFibGUgaW4gb3BlbiBzb3VyY2UgeWV0LgpI b3dldmVyLCB3ZSBhcmUgc3RhcnRpbmcgdGhlIHVwc3RyZWFtIChqdXN0IHRoZSBmaXJzdCBzZXJp ZXMgY292ZXJpbmcKQ1BVIGhvdHBsdWcgaXMgc3VibWl0dGVkIHNvIGZhcikuCgo+PiA+ID4gKwo+ PiA+ID4gK1N1c3BlbmQgdG8gUkFNIChpbiB0aGUgZm9sbG93aW5nIHRleHQgJ3N1c3BlbmQnKSBm b3IgQVJNIGluIFhlbgo+PiA+ID4gK3Nob3VsZCBiZSBjb29yZGluYXRlZCB1c2luZyBBUk0gUFND SSBzdGFuZGFyZCBbMV0uCj4+ID4gPiArCj4+ID4gPiArSWRlYWxseSwgRUwxLzIgc2hvdWxkIHN1 c3BlbmQgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoKPj4gPiA+ICsxKSBVbnByaXZpbGVnZWQgZ3Vl c3RzIChEb21Vcykgc3VzcGVuZAo+PiA+ID4gKzIpIFByaXZpbGVnZWQgZ3Vlc3QgKERvbTApIHN1 c3BlbmRzCj4+ID4gPiArMykgWGVuIHN1c3BlbmRzCj4+ID4gPiArCj4+ID4gPiArSG93ZXZlciwg c3VzcGVuZGluZyB1bnByaXZpbGVnZWQgZ3Vlc3RzIGlzIG5vdCBtYW5kYXRvcnkgZm9yCj4+ID4g PiArc3VzcGVuZGluZwo+PiA+ID4gK0RvbTAgYW5kIFhlbi4gU3lzdGVtIHN1c3BlbmQgaW5pdGlh dGVkIGJ5IERvbTAgKHN0ZXAgMikgaXMKPj4gPiA+ICtjb25zaWRlcmVkIHRvIGJlIGFuIHVsdGlt YXRlIGRlY2lzaW9uIHRvIHN1c3BlbmQgdGhlIHBoeXNpY2FsCj4+ID4gPiArbWFjaGluZS4gU3Vz cGVuZGluZyBvZiBYZW4gKHN0ZXAgMykgaXMgdHJpZ2dlcmVkIHdoZW5ldmVyIERvbTAKPj4gPiA+ ICtjb21wbGV0ZXMgc3VzcGVuZC4gWGVuIHN1c3BlbmQgbGVhZHMgdG8gdGhlIGZ1bGwgc3VzcGVu ZCBvZiBFTDIuCj4+ID4gPiArCj4+ID4gPiArSWYgYW4gdW5wcml2aWxlZ2VkIGd1ZXN0IGlzIG5v dCBzdXNwZW5kZWQgYXQgdGhlIG1vbWVudCB3aGVuIERvbTAKPj4gPiA+ICtpbml0aWF0ZXMgaXRz IG93biBzdXNwZW5kLCB0aGUgZ3Vlc3Qgd2lsbCBiZSBwYXVzZWQgb24gWGVuJ3MKPj4gPiA+ICtz dXNwZW5kIGFuZCB1bnBhdXNlZCBvbiBYZW4ncyByZXN1bWUuIFRoYXQgd2F5LCBhIGd1ZXN0IHdo aWNoCj4+ID4gPiArZG9lc24ndCBoYXZlIHBvd2VyIG1hbmFnZW1lbnQgc3VwcG9ydCBjYW5ub3Qg cHJldmVudCB0aGUgcGh5c2ljYWwKPj4gPiA+ICtzeXN0ZW0gZnJvbSBzdXNwZW5kaW5nIHdoZW4g dGhlIGRlY2lzaW9uIHRvIHN1c3BlbmQgaXMgbWFkZSBieQo+PiA+ID4gK3ByaXZpbGVnZWQgc29m dHdhcmUKPj4gPiA+IChEb20wKS4KPj4gPiA+ICsKPj4gPiA+ICtFYWNoIGd1ZXN0IGluIHRoZSBz eXN0ZW0gaXMgcmVzcG9uc2libGUgZm9yIHN1c3BlbmRpbmcgdGhlIGRldmljZXMgaXQgb3ducy4K Pj4gPiA+ICtJZiBhIGd1ZXN0IGRvZXMgbm90IHN1c3BlbmQgYSBkZXZpY2UsIHRoZSBkZXZpY2Ug d2lsbCBjb250aW51ZSB0bwo+PiA+ID4gK29wZXJhdGUgYXMgaXQgaXMgY29uZmlndXJlZCBhdCB0 aGUgbW9tZW50IHdoZW4gdGhlIHN5c3RlbSBzdXNwZW5kcy4KPj4gPiA+ICtJZiBhIGRldmljZSB0 cmlnZ2VycyBhbiBpbnRlcnJ1cHQgd2hpbGUgdGhlIHBoeXNpY2FsIHN5c3RlbSBpcwo+PiA+ID4g K3N1c3BlbmRlZCwgdGhlCj4+ID4gPiBzeXN0ZW0gd2lsbCByZXN1bWUuCj4+ID4gPiArCj4+ID4g PiArSXQgaXMgcmVjb21tZW5kZWQgZm9yIGFuIHVucHJpdmlsZWdlZCBndWVzdCB0byBwYXJ0aWNp cGF0ZSBpbiBwb3dlcgo+PiA+ID4gK21hbmFnZW1lbnQgaW4gdGhlIGZvbGxvd2luZyBzY2VuYXJp bzoKPj4gPiA+ICtBc3N1bWUgdW5wcml2aWxlZ2VkIGd1ZXN0IG93bnMgYSBkZXZpY2Ugd2hpY2gg d2lsbCB0cmlnZ2VyCj4+ID4gPiAraW50ZXJydXB0IGF0IHNvbWUgcG9pbnQuIFRoaXMgaW50ZXJy dXB0IHdpbGwgd2FrZS11cCB0aGUgc3lzdGVtLiBJZgo+PiA+ID4gK3N1Y2ggYSBiZWhhdmlvciBp cyBub3Qgd2FudGVkLCBjb29yZGluYXRpb24gYmV0d2VlbiBEb20wIGFuZCB0aGUKPj4gPiA+ICtn dWVzdCBpcyByZXF1aXJlZCBpbiBvcmRlciB0byBpbmZvcm0gdGhlIGd1ZXN0IGFib3V0IHRoZSBp bnRlbmRlZCBwaHlzaWNhbAo+PiBzeXN0ZW0gc3VzcGVuZC4KPj4gPiA+ICtUaGVuLCB0aGUgZ3Vl c3Qgd2lsbCBoYXZlIGEgY2hhbmNlIHRvIHN1c3BlbmQgdGhlIGRldmljZSBvciByZXNwb25kCj4+ ID4gPiArdG8gdGhlCj4+ID4gPiByZXF1ZXN0IGluIGFuIGFib3J0IGZhc2hpb24uCj4+ID4gPiAr Cj4+ID4gPiArU2luY2UgdGhpcyBwcm9wb3NhbCBpcyBmb2N1c2VkIG9uIGltcGxlbWVudGluZyBQ U0NJLWJhc2VkIHN1c3BlbmQKPj4gPiA+ICttZWNoYW5pc21zIGluIFhlbiwgY29tbXVuaWNhdGlv biB3aXRoIG9yIGFtb25nIHRoZSBndWVzdHMgaXMgbm90Cj4+ID4gPiArY292ZXJlZCBieQo+PiA+ ID4gdGhpcyBkb2N1bWVudC4KPj4gPiA+ICtUaGUgb3JkZXIgb2Ygc3VzcGVuZGluZyB0aGUgZ3Vl c3RzIGlzIGFzc3VtZWQgdG8gYmUgZ3VhcmFudGVlZCBieQo+PiA+ID4gK3RoZSBzb2Z0d2FyZSBy dW5uaW5nIGluIEVMMS4KPj4gPiA+ICsKPj4gPiA+ICtUaGlzIGRvY3VtZW50IGNvdmVycyB0aGUg Zm9sbG93aW5nOgo+PiA+ID4gKzEpIE1lY2hhbmlzbSBmb3Igc3VzcGVuZGluZy9yZXN1bWluZyBh IGd1ZXN0Ogo+PiA+ID4gKyAxLjEpIFN1c3BlbmQgaXMgaW5pdGlhdGVkIGJ5IHRoZSBndWVzdAo+ PiA+ID4gKyAxLjIpIFJlc3VtZSBpcyBpbml0aWF0ZWQgYnkgYSBkZXZpY2UgaW50ZXJydXB0Cj4+ ID4gPiArMikgTWVjaGFuaXNtIGZvciBwYXVzaW5nL3VucGF1c2luZyBydW5uaW5nIGd1ZXN0cyB3 aGVuIERvbTAKPj4gPiA+ICtzdXNwZW5kcwo+PiA+Cj4+ID4gV2lsbCB0aGlzIHRha2UgY2FyZSBv ZiBwYXNzdGhyb3VnaGVkIGRldmljZXMgZm9yIERvbVU/Cj4+Cj4KPiBUaGFua3MgZm9yIHlvdXIg cmVwbHkuIFNvcnJ5IGZvciBsYXRlIHJlcGx5Cj4KPj4gSGkgUGVuZywKPj4KPj4gVGhlIFp5bnFN UCB1c2VzIHRoZSBFRU1JIEZpcm13YXJlIGludGVyZmFjZSB0byBkbyBwb3dlci1tYW5hZ2VtZW50 Lgo+PiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJs PWh0dHBzJTNBJTJGJTJGd3d3LngKPj4gaWxpbnguY29tJTJGc3VwcG9ydCUyRmRvY3VtZW50YXRp b24lMkZ1c2VyX2d1aWRlcyUyRnVnMTIwMC1lZW1pLWFwaS5wCj4+IGRmJmRhdGE9MDIlN0MwMSU3 Q3BlbmcuZmFuJTQwbnhwLmNvbSU3QzAyMTMwN2EyNDUzOTRlOTQ1Y2JmMDhkNTkKPj4gMzBlYmIz YyU3QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDk5YzVjMzAxNjM1JTdDMCU3QzElN0M2MzY1NzY2MTM4 Cj4+IDQ2NDc2MTQwJnNkYXRhPXh3eWlsMWFyN1ZYWFlQSmIyeVh4WVBXSnZSNW1WRWI2d29rZ2dk dDBaSDQlM0QmcmUKPj4gc2VydmVkPTAKPgo+IFllcy4gSSBzZWUuCj4KPj4KPj4gSW4gb3VyIGNh c2UsIHdlJ3ZlIGltcGxlbWVudGVkIGFuIEVFTUkgbWVkaWF0b3IgaW4gWGVuIHRoYXQgdHJhcHMg RUVNSQo+PiByZXF1ZXN0cyBmcm9tIGRvbVUncyBhbmQgbWFrZXMgc3VyZSB0aGF0IHRoZSBndWVz dCBvd25zIHRoZSBkZXZpY2UgaXQgaXMgdHJ5aW5nCj4+IHRvIG9wZXJhdGUgb24uCj4+IGh0dHBz Oi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cHMlM0El MkYlMkZnaXRodWIuCj4+IGNvbSUyRlhpbGlueCUyRnhlbiUyRmJsb2IlMkZ4aWxpbnglMkZzdGFi bGUtNC45JTJGeGVuJTJGYXJjaCUyRmFybSUKPj4gMkZwbGF0Zm9ybXMlMkZ4aWxpbngtenlucW1w LWVlbWkuYyZkYXRhPTAyJTdDMDElN0NwZW5nLmZhbiU0MG54cC5jb20KPj4gJTdDMDIxMzA3YTI0 NTM5NGU5NDVjYmYwOGQ1OTMwZWJiM2MlN0M2ODZlYTFkM2JjMmI0YzZmYTkyY2Q5OWM1YzMKPj4g MDE2MzUlN0MwJTdDMCU3QzYzNjU3NjYxMzg0NjQ3NjE0MCZzZGF0YT0zM0FkQ3lCTHhVWUlSNmgl MkJ0Wnp4Cj4+IFRybllwT1o4NklNRnlTbWpIQTIlMkZpdHMlM0QmcmVzZXJ2ZWQ9MAo+Pgo+PiBT byBkb21VIHdpbGwgZmlyc3QgaXNzdWUgdGhlIHVzdWFsIEVFTUkgY2FsbHMgYXMgaXQgd291bGQg aW4gYSBub24tdmlydHVhbGl6ZWQgY2FzZQo+PiB0byBzdXNwZW5kIGFsbCBpdCdzIGRldmljZXMu IE9uY2UgdGhhdCBoYXMgaGFwcGVuZWQsIHRoZSBndWVzdCB3aWxsIGlzc3VlIFBTQ0kgY2FsbHMK Pj4gdG8gc3VzcGVuZCB0aGUgVk0uIFNvLCBNaXJlbGEgcGxlYXNlIHNoaW0gaW4gaWYgSSBtaXNz ZWQgc29tZXRoaW5nLgo+Pgo+PiBUaGUgRUVNSSBtZWRpYXRvciBoYXMgYmVlbiBwb3N0ZWQgdG8g dGhlIE1MIGJ1dCBpcyBjdXJyZW50bHkgc2l0dGluZyBpbiBvdXIgdHJlZQo+PiB3YWl0aW5nIGZv ciB1cyB0byBnbyB0aHJvdWdoIHRoZSB1cHN0cmVhbWluZyBlZmZvcnQuCj4KPiBTbyBpZiBEb20w IGFuZCBEb21VIGJvdGggcnVubmluZyBMaW51eCwgaW4gRG9tVSwgImVjaG8gbWVtID4vc3lzL3Bv d2VyL3N0YXRlIiB0byBzdXNwZW5kCj4gRG9tVSwgdGhlbiBpbiBEb20wICJlY2hvIG1lbSA+L3N5 cy9wb3dlci9zdGF0ZSIgdG8gc3VzcGVuZCBEb20wPwoKVGhhdCBpcyBjb3JyZWN0LiBYZW4gc3Vz cGVuZCB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIERvbTAgY29tcGxldGVzIHN1c3BlbmQuCgo+Cj4g VGhhbmtzLAo+IFBlbmcuCj4KPj4KPj4gQ2hlZXJzLAo+PiBFZGdhcgo+Pgo+Pgo+Pgo+Pgo+PiA+ Cj4+ID4gVGhhbmtzLAo+PiA+IFBlbmcuCj4+ID4KPj4gPiA+ICszKSBNZWNoYW5pc20gZm9yIHN1 c3BlbmRpbmcvcmVzdW1pbmcgWGVuIHdoZW4gRG9tMCBjb21wbGV0ZXMKPj4gPiA+ICtzdXNwZW5k Cj4+ID4gPiArNCkgUmVzdW1pbmcgZnJvbSBhbnkgc3RhdGUgb24gYSB3YWtlLXVwIGV2ZW50IChk ZXZpY2UgaW50ZXJydXB0KToKPj4gPiA+ICsgNC4xKSBSZXN1bWUgRG9tVSBvbiB3YWtlLXVwIGV2 ZW50IHdoZW4gRG9tMCBpcyBzdGlsbCBydW5uaW5nCj4+ID4gPiArIDQuMikgUmVzdW1lIERvbVUg b24gd2FrZS11cCBldmVudCB3aGVuIFhlbiBpcyBzdXNwZW5kZWQKPj4gPiA+ICsgNC4zKSBSZXN1 bWUgRG9tMCBvbiB3YWtlLXVwIGV2ZW50Cj4+ID4gPiArCj4+ID4gPiArTWVjaGFuaXNtcyBlbnVt ZXJhdGVkIGFib3ZlIHdpbGwgYWxsb3cgZGlmZmVyZW50IGtpbmQgb2YgcG9saWNpZXMKPj4gPiA+ ICthbmQgY29vcmRpbmF0aW9uIGFtb25nIGd1ZXN0cyB0byBiZSBpbXBsZW1lbnRlZCBpbiBFTDEu IFRoYXQgaXMgb3V0Cj4+ID4gPiArb2YgdGhlIHNjb3BlIG9mIHRoaXMgZG9jdW1lbnQuCj4+ID4g PiArCj4+ID4gPiArLS0tLS0tLS0tLS0tLS0tLS0KPj4gPiA+ICtTdXNwZW5kaW5nIEd1ZXN0cwo+ PiA+ID4gKy0tLS0tLS0tLS0tLS0tLS0tCj4+ID4gPiArCj4+ID4gPiArU3VzcGVuZCBwcm9jZWR1 cmUgZm9yIGEgZ3Vlc3QgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZzoKPj4gPiA+ICsxKSBTdXNw ZW5kaW5nIGRldmljZXMKPj4gPiA+ICsyKSBTdXNwZW5kaW5nIG5vbi1ib290IENQVXMgKGJhc2Vk IG9uIGhvdHBsdWcvUFNDSSkKPj4gPiA+ICszKSBTeXN0ZW0gc3VzcGVuZCwgcGVyZm9ybWVkIGJ5 IHRoZSBib290IENQVQo+PiA+ID4gKwo+PiA+ID4gK0VhY2ggZ3Vlc3Qgc2hvdWxkIHN1c3BlbmQg dGhlIGRldmljZXMgaXQgb3ducyBqdXN0IGxpa2UgaXQgd291bGQKPj4gPiA+ICt3aGVuIHJ1bm5p bmcgd2l0aG91dCBYZW4uCj4+ID4gPiArCj4+ID4gPiArR3Vlc3RzIHNob3VsZCBzdXNwZW5kIHRo ZWlyIG5vbi1ib290IHZDUFVzIHVzaW5nIHRoZSBob3RwbHVnIG1lY2hhbmlzbS4KPj4gPiA+ICtW aXJ0dWFsIENQVXMgc2hvdWxkIGJlIHB1dCBvZmZsaW5lIHVzaW5nIHRoZSBhbHJlYWR5IGltcGxl bWVudGVkCj4+ID4gPiArUFNDSSB2Q1BVX09GRiBjYWxsIChwcmVmaXggJ3YnIGlzIGFkZGVkIHRv IGRpc3Rpbmd1aXNoIFBTQ0kgY2FsbHMKPj4gPiA+ICttYWRlIGJ5IGd1ZXN0cyB0byBYZW4sIHdo aWNoIGFmZmVjdCB2aXJ0dWFsIG1hY2hpbmVzOyBhcyBvcHBvc2VkIHRvCj4+ID4gPiArUFNDSSBj YWxscyBtYWRlIGJ5IFhlbiB0byB0aGUgRUwzLCB3aGljaCBjYW4gYWZmZWN0IHBvd2VyIHN0YXRl IG9mCj4+ID4gPiArdGhlIHBoeXNpY2FsCj4+ID4gPiBtYWNoaW5lKS4KPj4gPiA+ICsKPj4gPiA+ ICtBZnRlciBzdXNwZW5kaW5nIGl0cyBub24tYm9vdCB2Q1BVcyBhIGd1ZXN0IHNob3VsZCBmaW5h bGl6ZSB0aGUKPj4gPiA+ICtzdXNwZW5kIGJ5IG1ha2luZyB0aGUgdlNZU1RFTV9TVVNQRU5EIFBT Q0kgY2FsbC4gVGhlIHJlc3VtZSBhZGRyZXNzCj4+ID4gPiAraXMgc3BlY2lmaWVkIGJ5IHRoZSBn dWVzdCB2aWEgdGhlIHZTWVNURU1fU1VTUEVORAo+PiA+ID4gK2VudHJ5X3BvaW50X2FkZHJlc3Mg YXJndW1lbnQuIFRoZSB2U1lTVEVNX1NVU1BFTkQgY2FsbCBpcyBjdXJyZW50bHkKPj4gbm90IGlt cGxlbWVudGVkIGluIFhlbi4KPj4gPiA+ICsKPj4gPiA+ICtJdCBpcyBleHBlY3RlZCB0aGF0IGEg Z3Vlc3QgbGVhdmVzIGVuYWJsZWQgYWxsIGludGVycnVwdHMgdGhhdAo+PiA+ID4gK3Nob3VsZCB3 YWtlIGl0IHVwLiBPdGhlciBpbnRlcnJ1cHRzIHNob3VsZCBiZSBkaXNhYmxlZCBieSB0aGUgZ3Vl c3QKPj4gPiA+ICtwcmlvciB0byBjYWxsaW5nIHZTWVNURU1fU1VTUEVORC4KPj4gPiA+ICsKPj4g PiA+ICtBZnRlciBhbiB1bnByaXZpbGVnZWQgZ3Vlc3Qgc3VzcGVuZHMsIFhlbiB3aWxsIG5vdCBz dXNwZW5kLiBYZW4KPj4gPiA+ICt3b3VsZCBzdXNwZW5kIG9ubHkgYWZ0ZXIgdGhlIERvbTAgY29t cGxldGVzIHRoZSBzeXN0ZW0gc3VzcGVuZC4KPj4gPiA+ICsKPj4gPiA+ICstLS0tLS0tLS0tLS0t LQo+PiA+ID4gK1N1c3BlbmRpbmcgWGVuCj4+ID4gPiArLS0tLS0tLS0tLS0tLS0KPj4gPiA+ICsK Pj4gPiA+ICtYZW4gc2hvdWxkIHN0YXJ0IHN1c3BlbmRpbmcgaXRzZWxmIHVwb24gcmVjZWl2aW5n IHRoZQo+PiA+ID4gK3ZTWVNURU1fU1VTUEVORCBjYWxsIGZyb20gdGhlIGxhc3QgcnVubmluZyBn dWVzdCAoRG9tMCkuIEF0IHRoYXQKPj4gPiA+ICttb21lbnQgYWxsIHBoeXNpY2FsIENQVXMgYXJl IHN0aWxsIG9ubGluZSAodGFraW5nIG9mZmxpbmUgYSB2Q1BVIG9yCj4+ID4gPiArc3VzcGVuZGlu ZyBhIFZNIGRvZXMgbm90IGFmZmVjdAo+PiA+ID4gcGh5c2ljYWwgQ1BVcykuCj4+ID4gPiArWGVu IHNoYWxsIG5vdyBwdXQgb2ZmbGluZSB0aGUgbm9uLWJvb3QgcENQVXMgYnkgbWFraW5nIHRoZSBD UFVfT0ZGCj4+ID4gPiArUFNDSSBjYWxsIHRvIEVMMy4gVGhlIENQVV9PRkYgUFNDSSBmdW5jdGlv biBpcyBjdXJyZW50bHkgbm90IGltcGxlbWVudGVkIGluCj4+IFhlbi4KPj4gPiA+ICsKPj4gPiA+ ICtBZnRlciBwdXR0aW5nIG9mZmxpbmUgdGhlIG5vbi1ib290IGNvcmVzIFhlbiBtdXN0IHNhdmUg dGhlIGNvbnRleHQKPj4gPiA+ICthbmQgZmluYWxpemUgc3VzcGVuZCBieSBpbnZva2luZyBTWVNU RU1fU1VTUEVORCBQU0NJIGNhbGwsIHdoaWNoIGlzCj4+IHBhc3NlZCB0byBFTDMuCj4+ID4gPiAr VGhlIHJlc3VtZSBwb2ludCBvZiBYZW4gaXMgc3BlY2lmaWVkIGJ5IHRoZSBlbnRyeV9wb2ludF9h ZGRyZXNzCj4+ID4gPiArYXJndW1lbnQgb2YgdGhlIFNZU1RFTV9TVVNQRU5EIGNhbGwuIFRoZSBT WVNURU1fU1VTUEVORCBmdW5jdGlvbgo+PiA+ID4gK2FuZCBjb250ZXh0IHNhdmluZyBpcyBub3Qg aW1wbGVtZW50ZWQgaW4gWGVuIGZvciBBUk0gdG9kYXkuCj4+ID4gPiArCj4+ID4gPiArLS0tLS0t LS0tLS0tCj4+ID4gPiArUmVzdW1pbmcgWGVuCj4+ID4gPiArLS0tLS0tLS0tLS0tCj4+ID4gPiAr Cj4+ID4gPiArWGVuIG11c3QgYmUgcmVzdW1lZCBwcmlvciB0byBhbnkgc29mdHdhcmUgcnVubmlu ZyBpbiBFTDEuIFN0YXJ0aW5nCj4+ID4gPiArZnJvbSB0aGUgcmVzdW1lIHBvaW50LCBYZW4gc2hv dWxkIHJlc3RvcmUgdGhlIGNvbnRleHQgYW5kIHJlc3VtZQo+PiA+ID4gK0RvbTAuIERvbTAgc2hh bGwgYWx3YXlzIGJlIHJlc3VtZWQgd2hlbmV2ZXIgWGVuIHJlc3VtZXMuCj4+ID4gPiArCj4+ID4g PiArLS0tLS0tLS0tLS0tLS0tCj4+ID4gPiArUmVzdW1pbmcgR3Vlc3RzCj4+ID4gPiArLS0tLS0t LS0tLS0tLS0tCj4+ID4gPiArCj4+ID4gPiArUmVzdW1lIG9mIHRoZSBwcml2aWxlZ2VkIGd1ZXN0 IChEb20wKSBpcyBhbHdheXMgZm9sbG93aW5nIHRoZSBYZW4gcmVzdW1lLgo+PiA+ID4gKwo+PiA+ ID4gK0FuIHVucHJpdmlsZWdlZCBndWVzdCBzaGFsbCByZXN1bWUgb25jZSBhIGRldmljZSBpdCBv d25zIHRyaWdnZXJzIGEKPj4gPiA+ICt3YWtlLXVwIGludGVycnVwdCwgcmVnYXJkbGVzcyBvZiB3 aGV0aGVyIFhlbiB3YXMgc3VzcGVuZGVkIHdoZW4gdGhlCj4+ID4gPiArd2FrZS11cCBpbnRlcnJ1 cHQgd2FzIHRyaWdnZXJlZC4gSWYgWGVuIHdhcyBzdXNwZW5kZWQsIGl0IGlzCj4+ID4gPiArYXNz dW1lZCB0aGF0IERvbTAgd2lsbCBiZSBydW5uaW5nIGJlZm9yZSB0aGUgRG9tVSBndWVzdCBzdGFy dHMgdG8KPj4gPiA+ICtyZXN1bWUuIFRoZSBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtIHRvIGVu Zm9yY2UgdGhlIGFzc3VtZWQgY29uZGl0aW9uCj4+IGlzIFRCRC4KPj4gPiA+ICsKPj4gPiA+ICtJ ZiB0aGUgQVJNJ3MgR0lDIHdhcyBwb3dlcmVkIGRvd24gYWZ0ZXIgdGhlIEFSTSBzdWJzeXN0ZW0K Pj4gPiA+ICtzdXNwZW5kZWQsIGl0IGlzIGFzc3VtZWQgdGhhdCBYZW4gbmVlZHMgdG8gcmVzdG9y ZSB0aGUgR0lDCj4+ID4gPiAraW50ZXJmYWNlIGZvciBhIFZNIHByaW9yIHRvIGhhbmRpbmcgb3Zl ciBjb250cm9sIHRvIHRoZSBndWVzdC4KPj4gPiA+ICtIb3dldmVyLCB0aGUgZ3Vlc3Qgc2hvdWxk IHJlc3RvcmUgaXRzIG93biBjb250ZXh0IHVwb24gZW50ZXJpbmcgdGhlCj4+ID4gPiArcmVzdW1l IHBvaW50LCBqdXN0IGxpa2UgaXQgd291bGQgd2hlbgo+PiA+ID4gcnVubmluZyB3aXRob3V0IFhl bi4KPj4gPiA+ICsKPj4gPiA+ICs9PT09PT09PT09PT09PT0KPj4gPiA+ICtJbXBsZW1lbnRhdGlv bgo+PiA+ID4gKz09PT09PT09PT09PT09PQo+PiA+ID4gKwo+PiA+ID4gKy0tLS0tLS0tCj4+ID4g PiArT3ZlcnZpZXcKPj4gPiA+ICstLS0tLS0tLQo+PiA+ID4gKwo+PiA+ID4gK0luIG9yZGVyIHRv IGVuYWJsZSB0aGUgc3VzcGVuZC9yZXN1bWUgb2YgVk1zIGFuZCBYZW4gaXRzZWxmLCB0aGUKPj4g PiA+ICtmb2xsb3dpbmcgUFNDSSBjYWxscyBoYXZlIHRvIGJlIGltcGxlbWVudGVkIGFuZCBpbnRl Z3JhdGVkIGluIFhlbjoKPj4gPiA+ICsxKSB2U1lTVEVNX1NVU1BFTkQKPj4gPiA+ICsyKSBDUFVf T0ZGCj4+ID4gPiArMykgU1lTVEVNX1NVU1BFTkQKPj4gPiA+ICsKPj4gPiA+ICtJbiBhZGRpdGlv biwgdGhlIGZvbGxvd2luZyBoYXZlIHRvIGJlIGltcGxlbWVudGVkOgo+PiA+ID4gKyogU3VzcGVu ZC9yZXN1bWUgdkNQVSAodHJpZ2dlcmVkIGJ5IHZTWVNURU1fU1VTUEVORCBjYWxsKQo+PiA+ID4g KyogU3VzcGVuZC9yZXN1bWUgWGVuICh0cmlnZ2VyZWQgYnkgdlNZU1RFTV9TVVNQRU5EIGNhbGxl ZCBieSBEb20wKSwKPj4gPiA+IGluY2x1ZGluZzoKPj4gPiA+ICsgKiBEaXNhYmxlIHdhdGhkb2cg b24gc3VzcGVuZCwgZW5hYmxlIGl0IG9uIHJlc3VtZQo+PiA+ID4gKyAqIFBhdXNlIGRvbWFpbnMg b24gc3VzcGVuZCwgdW5wYXVzZSB0aGVtIG9uIHJlc3VtZQo+PiA+ID4gKyAqIERpc2FibGUgbm9u LWJvb3QgcENQVXMgb24gc3VzcGVuZCwgZW5hYmxlIHRoZW0gb24gcmVzdW1lCj4+ID4gPiArICog U2F2ZS9yZXN0b3JlIG9mIEdJQyBjb25maWd1cmF0aW9uCj4+ID4gPiArICogU3VzcGVuZC9yZXN1 bWUgdGltZXIKPj4gPiA+ICsgKiBTYXZlL3Jlc3RvcmUgb2YgRUwyIGNvbnRleHQKPj4gPiA+ICsg KiBJbXBsZW1lbnQgcmVzdW1lIGVudHJ5IHBvaW50IGluIFhlbiwgaW5jbHVkaW5nIE1NVSBjb25m aWd1cmF0aW9uCj4+ID4gPiArCj4+ID4gPiArSW1wbGVtZW50YXRpb24gZGV0YWlscyBhcmUgcHJv dmlkZWQgaW4gdGhlIHNlY3Rpb25zIGJlbG93LiBGdW5jdGlvbgo+PiA+ID4gK25hbWVzIGFuZCBw YXRocyB1c2VkIGJlbG93IGFyZSBjb25zaXN0ZW50IHdpdGhpbiB0aGUgZG9jdW1lbnQgYnV0Cj4+ ID4gPiArbWF5IG5vdCBhbHdheXMgbWF0Y2ggdGhlIG5hbWVzIHVzZWQgaW4gZnV0dXJlIGltcGxl bWVudGF0aW9uLgo+PiA+ID4gK0V4aXN0aW5nIGZ1bmN0aW9ucyBhbmQgcGF0aHMgYXJlIG5hbWVk IGFzIGluIFhlbiBzb3VyY2UgdHJlZS4KPj4gPiA+ICsKPj4gPiA+ICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ID4gPiArU3VzcGVuZC9SZXN1bWUgSW1wbGVtZW50YXRp b24gRGV0YWlscwo+PiA+ID4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Pj4gPiA+ICsKPj4gPiA+ICtQU0NJIEltcGxlbWVudGF0aW9uIGFuZCBJbnRlZ3JhdGlvbgo+PiA+ ID4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ID4gPiArdlNZU1RFTV9T VVNQRU5ECj4+ID4gPiArLS0tLS0tLS0tLS0tLS0tCj4+ID4gPiArdlNZU1RFTV9TVVNQRU5EIHNo YWxsIGJlIGltcGxlbWVudGVkIGluCj4+ID4gPiArKiBkb19wc2NpX3N5c3RlbV9zdXNwZW5kKCkg aW4gYXJjaC9hcm0vdnBzY2kuYwo+PiA+ID4gKyogQ29kZSBpbmRlcGVuZGVudCBmcm9tIFBTQ0kg aW50ZXJmYWNlIHdpbGwgYmUgYWRkZWQgaW4KPj4gPiA+ICthcmNoL2FybS9zdXNwZW5kLmMKPj4g PiA+ICsKPj4gPiA+ICtUaGUgaW1wbGVtZW50YXRpb24gc2hhbGwgaW5jbHVkZSB0aGUgZm9sbG93 aW5nIHN0ZXBzOgo+PiA+ID4gKyogU3VzcGVuZCB0aGUgY3VycmVudCAoY2FsbGluZykgdkNQVS4g Q29uc2lzdHMgb2YgMiBtYWpvciBzdGVwczoKPj4gPiA+ICsxKSBSZXNldCBjb250ZXh0IG9mIHZD UFUgYW5kIHNhdmUgZW50cnkgcG9pbnQgaW50byBQQyBhbmQgY29udGV4dAo+PiA+ID4gK0lEIGlu dG8gWDAgKGVudHJ5IHBvaW50IGFuZCBjb250ZXh0IElEIGFyZSBwcm92aWRlZCB2aWEKPj4gPiA+ ICt2U1lTVEVNX1NVU1BFTkQKPj4gPiA+ICthcmd1bWVudHMpCj4+ID4gPiArMikgQmxvY2sgdkNQ VSB0byBlbnN1cmUgdGhhdCBpdCBpcyBub3Qgc2NoZWR1bGVkIHVudGlsIGl0IGlzCj4+ID4gPiAr dW5ibG9ja2VkIGJ5IGFuIGludGVycnVwdC4KPj4gPiA+ICtJbiBzdGVwIDEpIGFib3ZlLCB0aGUg Y29udGV4dCBpcyByZXNldCBpbiBvcmRlciB0byBwcmVwYXJlIHRoZSB2Q1BVCj4+ID4gPiArZm9y IHJlc3VtZSwgaS5lLiB0byBzYXZlIHZDUFUgY29udGV4dCB0aGF0IG1hdGNoZXMgcmVzZXQgdmFs dWVzIGFzCj4+ID4gPiArZXhwZWN0ZWQgYnkgc29mdHdhcmUgb24gcmVzdW1lLiBUaGlzIGRvZXNu J3QgaG9sZCBmb3IgUEMgYW5kIFgwLAo+PiA+ID4gK3NpbmNlIHRoZSBQQyBjb250YWlucyByZXN1 bWUgZW50cnkgcG9pbnQgYW5kIFgwIGNvbnRhaW5zIGNvbnRleHQgSUQsIGFzCj4+IGRlZmluZWQg YnkgUFNDSS4KPj4gPiA+ICsqIElmIHRoZSBoYXJkd2FyZSBkb21haW4gbWFkZSB0aGUgY2FsbCB0 cmlnZ2VyIFhlbiBzdXNwZW5kLCBpLmUuCj4+ID4gPiArICBjYWxsIG1hY2hpbmVfc3VzcGVuZCgp IHdoaWNoIHdpbGwgYmUgaW1wbGVtZW50ZWQgaW4KPj4gPiA+ICthcmNoL2FybS9zdXNwZW5kLmMg IChzaW1pbGFyIGFzIHRoZSBtYWNoaW5lX3Jlc3RhcnQoKSBpcwo+PiA+ID4gK2ltcGxlbWVudGVk IGluCj4+ID4gPiArYXJjaC9hcm0vc2h1dGRvd24uYykKPj4gPiA+ICsKPj4gPiA+ICtUaGUgZnVu Y3Rpb24gZG9fcHNjaV9zeXN0ZW1fc3VzcGVuZCgpIHNoYWxsIGJlIGNhbGxlZCBmcm9tCj4+ID4g PiArKiBkb190cmFwX3BzY2koKSBpbiBhcmNoL2FybS90cmFwcy5jCj4+ID4gPiArCj4+ID4gPiAr Q1BVX09GRiAocGh5c2ljYWwgQ1BVcykKPj4gPiA+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ PiA+ID4gK1RoZSBDUFVfT0ZGIGZ1bmN0aW9uIHNoYWxsIGJlIGltcGxlbWVudGVkIGluCj4+ID4g PiArKiBjYWxsX3BzY2lfY3B1X29mZigpIGluIGFyY2gvYXJtL3BzY2kuYwo+PiA+ID4gKwo+PiA+ ID4gK1RoZSBpbXBsZW1lbnRhdGlvbiBzaGFsbCBjb25zaXN0IGp1c3Qgb2YgbWFraW5nIHRoZSBT TUMgY2FsbCB0byBFTDMuCj4+ID4gPiArCj4+ID4gPiArVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBi ZSBjYWxsZWQgd2hlbiBYZW4gZ2VuZXJpYyBjb2RlIGRpc2FibGVzIGEKPj4gPiA+ICtub24tYm9v dAo+PiA+ID4gQ1BVLgo+PiA+ID4gK1doZW4gYSBDUFUgaXMgZGlzYWJsZWQgaXQgd2lsbCBsb29w IGZvcmV2ZXIgaW4gd2hpbGUgbG9vcAo+PiA+ID4gKyhzdG9wX2NwdSgpIGZ1bmN0aW9uIHdoaWNo IGlzIGFscmVhZHkgaW1wbGVtZW50ZWQgaW4KPj4gPiA+ICt4ZW4vYXJjaC9hcm0vc21wYm9vdC5j KS4gQ2FsbCB0bwo+PiA+ID4gK2NhbGxfcHNjaV9jcHVfb2ZmKCkgc2hhbGwgYmUgbWFkZSBiZWZv cmUgdGhlIENQVSBlbnRlcnMgaW5maW5pdGUgbG9vcC4KPj4gPiA+ICsKPj4gPiA+ICtTWVNURU1f U1VTUEVORCAocGh5c2ljYWwpCj4+ID4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiA+ ID4gK1RoZSBTWVNURU1fU1VTUEVORCBmdW5jdGlvbiBzaGFsbCBiZSBpbXBsZW1lbnRlZCBpbgo+ PiA+ID4gKyogY2FsbF9wc2NpX3N5c3RlbV9zdXNwZW5kKCkgaW4gYXJjaC9hcm0vcHNjaS5jCj4+ ID4gPiArCj4+ID4gPiArVGhlIGltcGxlbWVudGF0aW9uIHNoYWxsIGNvbnNpc3QganVzdCBvZiBt YWtpbmcgdGhlIFNNQyBjYWxsIHRvIEVMMy4KPj4gPiA+ICtUaGUgZW50cnlfcG9pbnRfYWRkcmVz cyBhcmd1bWVudCBvZiB0aGUgU01DIGNhbGwgbmVlZHMgdG8gYmUgYW4gQVJNCj4+ID4gPiArYXJj aGl0ZWN0dXJlIHJlc3VtZSBhZGRyZXNzLCB3aGljaCBzaGFsbCBiZSBpbXBsZW1lbnRlZCwgZS5n LiBhcwo+PiA+ID4gK2h5cF9yZXN1bWUoKSBpbiBhcmNoL2FybS9hcm02NC9lbnRyeS5TLiBUaGUK Pj4gPiA+ICtjYWxsX3BzY2lfc3lzdGVtX3N1c3BlbmQoKQo+PiA+ID4gZnVuY3Rpb24gZG9lcyBu b3QgcmV0dXJuLgo+PiA+ID4gK09uIHRoZSByZXN1bWUsIHRoZSBleGVjdXRpb24gZmxvdyBjb250 aW51ZXMgZnJvbSBoeXBfcmVzdW1lLgo+PiA+ID4gKwo+PiA+ID4gK1RoZSBmdW5jdGlvbiBuZWVk cyB0byBiZSBjYWxsZWQgZnJvbSBtYWNoaW5lX3N1c3BlbmQoKSB0byBmaW5hbGl6ZQo+PiA+ID4g K3RoZSBzdXNwZW5kIHByb2NlZHVyZS4KPj4gPiA+ICsKPj4gPiA+ICstLS0tLS0tLS0tLS0tLS0t LS0KPj4gPiA+ICtBZGRpdGlvbmFsIENoYW5nZXMKPj4gPiA+ICstLS0tLS0tLS0tLS0tLS0tLS0K Pj4gPiA+ICsKPj4gPiA+ICtTdXNwZW5kIEZsb3cKPj4gPiA+ICstLS0tLS0tLS0tLS0KPj4gPiA+ ICtUaGUgc3VzcGVuZCBwcm9jZWR1cmUgc2hhbGwgYmUgaW1wbGVtZW50ZWQgaW4KPj4gPiA+ICsq IG1hY2hpbmVfc3VzcGVuZCgpIGluIGFyY2gvYXJtL3N1c3BlbmQuYwo+PiA+ID4gKwo+PiA+ID4g K1RoZSBpbXBsZW1lbnRhdGlvbiBzaGFsbCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6Cj4+ ID4gPiArKiBNb3ZlIHRoZSBleGVjdXRpb24gdG8gYm9vdCBwQ1BVCj4+ID4gPiArKiBTZXQgdGhl IHN5c3RlbV9zdGF0ZSB2YXJpYWJsZSB0byBTWVNfU1RBVEVfc3VzcGVuZAo+PiA+ID4gKyogRGlz YWJsZSB3YXRjaGRvZwo+PiA+ID4gKyogRnJlZXplIGRvbWFpbnMgYnkgY2FsbGluZyBkb21haW5f cGF1c2UoKSBmb3IgZWFjaCBkb21haW4KPj4gPiA+ICsqIERpc2FibGUgbm9uLWJvb3QgQ1BVcyBi eSBjYWxsaW5nIGRpc2FibGVfbm9uYm9vdF9jcHVzKCkKPj4gPiA+ICsqIERpc2FibGUgaW50ZXJy dXB0cwo+PiA+ID4gKyogU3VzcGVuZCB0aW1lcgo+PiA+ID4gKyogU2F2ZSBHSUMgY29udGV4dC4g U2hhbGwgYmUgaW1wbGVtZW50ZWQgaW4gYXJjaC9hcm0vZ2ljLmMsCj4+ID4gPiArICBpbmNsdWRl L2FzbS1hcm0vZ2ljLmggYW5kIGFyY2gvYXJtL2dpYy12Mi5jIChvbmx5IEdJQ3YyIHdpbGwgYmUK Pj4gc3VwcG9ydGVkKS4KPj4gPiA+ICsqIFNhdmUgQ1BVIGNvbnRleHQuIFRoaXMgc2hhbGwgYmUg aW1wbGVtZW50ZWQgaW4gYXNzZW1ibHksIGluCj4+ID4gPiAraHlwX3N1c3BlbmQoKQo+PiA+ID4g KyAgaW4gYXJjaC9hcm0vYXJtNjQvZW50cnkuUy4gVGhlIGNvbnRleHQgY29uc2lzdHMgb2YgY2Fs bGVlLXNhdmVkCj4+ID4gPiArZ2VuZXJhbAo+PiA+ID4gKyAgcHVycG9zZSByZWdpc3RlcnMsIGFz IHdlbGwgYXMgZmV3IHN5c3RlbSByZWdpc3RlcnMuIENvbnRleHQgb2YKPj4gPiA+ICtyZWdpc3Rl cnMgc2hhbGwKPj4gPiA+ICsgIGJlIHNhdmVkIGluIGEgc3RhdGljYWxseSBhbGxvY2F0ZWQgc3Ry dWN0dXJlLgo+PiA+ID4gKyogRmluYWxpemUgdGhlIHN1c3BlbmQgYnkgY2FsbGluZyBjYWxsX3Bz Y2lfc3lzdGVtX3N1c3BlbmQoKQo+PiA+ID4gKwo+PiA+ID4gK1Jlc3VtZSBGbG93Cj4+ID4gPiAr LS0tLS0tLS0tLS0tCj4+ID4gPiArVGhlIHJlc3VtZSBlbnRyeSBwb2ludCBzaGFsbCBiZSBpbXBs ZW1lbnRlZCBpbgo+PiA+ID4gKyogaHlwX3Jlc3VtZSgpIGluIGFyY2gvYXJtL2FybTY0L2VudHJ5 LlMgVGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZQo+PiA+ID4gK3Jlc3VtZSBwcm9jZWR1cmUgaGFz IHRvIGJlIGltcGxlbWVudGVkIGluIGFzc2VtYmx5Lgo+PiA+ID4gK0l0IHNoYWxsIGNvbnRhaW4g dGhlIGZvbGxvd2luZzoKPj4gPiA+ICsqIEVuYWJsZSB0aGUgTU1VIHNvIHRoYXQgdGhlIHN0cnVj dHVyZSBjb250YWluaW5nIENQVSBjb250ZXh0IHdoaWNoCj4+ID4gPiArd2FzIHNhdmVkIG9uIHN1 c3BlbmQgY2FuIGJlIGFjY2Vzc2VkCj4+ID4gPiArKiBSZXN0b3JlIENQVSBjb250ZXh0ICh0byBt YXRjaCB0aGUgdmFsdWVzIHNhdmVkIG9uIHN1c3BlbmQpIGFuZAo+PiA+ID4gK3JldHVybiBpbnRv IEMKPj4gPiA+ICsqIFNldCB0aGUgc3lzdGVtX3N0YXRlIHZhcmlhYmxlIHRvIFNZU19TVEFURV9y ZXN1bWUKPj4gPiA+ICsqIFJlc3RvcmUgR0lDIGNvbnRleHQKPj4gPiA+ICsqIFJlc3VtZSB0aW1l cgo+PiA+ID4gKyogRW5hYmxlIGludGVycnVwdHMKPj4gPiA+ICsqIEVuYWJsZSBub24tYm9vdCBD UFVzIGJ5IGNhbGxpbmcgZW5hYmxlX25vbmJvb3RfY3B1cygpCj4+ID4gPiArKiBUaGF3IGRvbWFp bnMgYnkgY2FsbGluZyBkb21haW5fdW5wYXVzZSgpIGZvciBlYWNoIGRvbWFpbgo+PiA+ID4gKyog RW5hYmxlIHdhdGNoZG9nCj4+ID4gPiArKiBTZXQgdGhlIHN5c3RlbV9zdGF0ZSB2YXJpYWJsZSB0 byBTWVNfU1RBVEVfYWN0aXZlCj4+ID4gPiArKiBSZXN1bWUgRG9tMAo+PiA+ID4gKwo+PiA+ID4g Kz09PT09PT09PT0KPj4gPiA+ICtSZWZlcmVuY2VzCj4+ID4gPiArPT09PT09PT09PQo+PiA+ID4g Kwo+PiA+ID4gK1sxXSBQb3dlciBTdGF0ZSBDb29yZGluYXRpb24gSW50ZXJmYWNlIChBUk0pOgo+ PiA+ID4gK2h0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91 cmw9aHR0cCUzQSUyRiUyRmkKPj4gPiA+ICtuZm9jCj4+ID4gPgo+PiArZW50ZXIuYXJtLmNvbSUy RmhlbHAlMkZ0b3BpYyUyRmNvbS5hcm0uZG9jLmRlbjAwMjJkJTJGUG93ZXJfU3RhdGUKPj4gPiA+ IF9Db29yZAo+PiA+ID4KPj4gK2luYXRpb25fSW50ZXJmYWNlX1BERF92MV8xX0RFTjAwMjJELnBk ZiZkYXRhPTAyJTdDMDElN0NwZW5nLmZhbiU0Cj4+ID4gPiAwbnhwLmMKPj4gPiA+Cj4+ICtvbSU3 Q2IzNDNkMTI4OTMwZDQ0YzkwZjVkMDhkNTQ5NjM4MDdiJTdDNjg2ZWExZDNiYzJiNGM2ZmE5MmNk OTkKPj4gPiA+IGM1YzMwMTYzCj4+ID4gPgo+PiArNSU3QzAlN0MxJTdDNjM2NDk1NjE0MDc0ODg1 OTQwJnNkYXRhPTN5Y3FFWlI5WGdjcWR2cm1KS1k4NmF1a3QKPj4gPiA+ICUyQlF2JTJCUwo+PiA+ ID4gK0JTWk14YkNycHJhRVklM0QmcmVzZXJ2ZWQ9MAo+PiA+ID4gLS0KPj4gPiA+IDIuMTMuMAo+ PiA+ID4KPj4gPiA+Cj4+ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+PiA+ID4gWGVuLWRldmVsIG1haWxpbmcgbGlzdAo+PiA+ID4gWGVuLWRldmVs QGxpc3RzLnhlbnByb2plY3Qub3JnCj4+ID4gPiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJv dGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHBzJTNBJTJGJTJGbAo+PiA+ID4gaXN0cy54ZQo+ PiA+ID4KPj4gbnByb2plY3Qub3JnJTJGbWFpbG1hbiUyRmxpc3RpbmZvJTJGeGVuLWRldmVsJmRh dGE9MDIlN0MwMSU3Q3BlbmcuZmEKPj4gPiA+Cj4+IG4gJTQwbnhwLmNvbSU3Q2IzNDNkMTI4OTMw ZDQ0YzkwZjVkMDhkNTQ5NjM4MDdiJTdDNjg2ZWExZDNiYzJiNGMKPj4gNmYKPj4gPiA+Cj4+IGE5 MmNkOTljNWMzMDE2MzUlN0MwJTdDMCU3QzYzNjQ5NTYxNDA3NDg4NTk0MCZzZGF0YT1ZTHVKaGJ4 JTJCMQo+PiA+ID4gdER2YmxZYmd0T1paQmhzRzM2JTJCVWhwUmM0VnBTcEhITSUyRlUlM0QmcmVz ZXJ2ZWQ9MAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0 cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==