From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: HVMLite / PVHv2 - using x86 EFI boot entry Date: Thu, 14 Apr 2016 15:56:53 -0400 Message-ID: <20160414195652.GC20459@localhost.localdomain> References: <5704D978.1050101@citrix.com> <20160408204032.GR1990@wotan.suse.de> <570B3228.90400@suse.com> <20160413182951.GW1990@wotan.suse.de> <20160413185629.GA7501@char.us.oracle.com> <20160413204055.GD1990@wotan.suse.de> <20160413210801.GC5962@char.us.oracle.com> <20160413222317.GH1990@wotan.suse.de> <20160414010131.GA21510@localhost.localdomain> <20160414184048.GM1990@wotan.suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aqnOx-0001VE-8n for xen-devel@lists.xenproject.org; Thu, 14 Apr 2016 19:58:07 +0000 Content-Disposition: inline In-Reply-To: <20160414184048.GM1990@wotan.suse.de> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "Luis R. Rodriguez" Cc: Matt Fleming , Michael Chang , linux-kernel@vger.kernel.org, Julien Grall , Jan Beulich , "H. Peter Anvin" , Daniel Kiper , x86@kernel.org, =?utf-8?Q?Vojt=C4=9Bch_Pavl=C3=ADk?= , Gary Lin , xen-devel@lists.xenproject.org, Jeffrey Cheung , Charles Arndol , Kees Cook , Stefano Stabellini , Josh Triplett , joeyli , Borislav Petkov , Boris Ostrovsky , Juergen Gross , Andrew Cooper , Jim Fehlig , Andy Lutomirski , David Vrabel List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBBcHIgMTQsIDIwMTYgYXQgMDg6NDA6NDhQTSArMDIwMCwgTHVpcyBSLiBSb2RyaWd1 ZXogd3JvdGU6Cj4gT24gV2VkLCBBcHIgMTMsIDIwMTYgYXQgMDk6MDE6MzJQTSAtMDQwMCwgS29u cmFkIFJ6ZXN6dXRlayBXaWxrIHdyb3RlOgo+ID4gT24gVGh1LCBBcHIgMTQsIDIwMTYgYXQgMTI6 MjM6MTdBTSArMDIwMCwgTHVpcyBSLiBSb2RyaWd1ZXogd3JvdGU6Cj4gPiA+IE9uIFdlZCwgQXBy IDEzLCAyMDE2IGF0IDA1OjA4OjAxUE0gLTA0MDAsIEtvbnJhZCBSemVzenV0ZWsgV2lsayB3cm90 ZToKPiA+ID4gPiBPbiBXZWQsIEFwciAxMywgMjAxNiBhdCAxMDo0MDo1NVBNICswMjAwLCBMdWlz IFIuIFJvZHJpZ3VleiB3cm90ZToKPiA+ID4gPiA+IE9uIFdlZCwgQXByIDEzLCAyMDE2IGF0IDAy OjU2OjI5UE0gLTA0MDAsIEtvbnJhZCBSemVzenV0ZWsgV2lsayB3cm90ZToKPiA+ID4gPiA+ID4g T24gV2VkLCBBcHIgMTMsIDIwMTYgYXQgMDg6Mjk6NTFQTSArMDIwMCwgTHVpcyBSLiBSb2RyaWd1 ZXogd3JvdGU6Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IGFuZCB3ZSBhbHNvIHdhbnQgdG8gYWRkcmVz cyBkZWFkIGNvZGUgaXNzdWVzIHdoaWNoIHB2b3BzIHNpbXBseSBmb2xkZWQKPiA+ID4gPiA+IHVu ZGVyIHRoZSBydWcuIFRoZSBkZWFkIGNvZGUgY29uY2VybnMgbWF5IGV4aXN0IHN0aWxsIGZvciBo dm1saXRlLCBzbwo+ID4gPiA+ID4gdW5sZXNzIHNvbWVvbmUgaXMgd2lsbGluZyB0byBtYWtlIGEg Ym9sZCBjbGFpbSB0aGVyZSBpcyBub25lLCBpdHMKPiA+ID4gPiA+IHNvbWV0aGluZyB0byBjb25z aWRlci4KPiA+ID4gPiAKPiA+ID4gPiBXaGF0IGlzIHRoaXMgZGVhZCBjb2RlIHlvdSBzcGVhayBv Zj8KPiA+ID4gCj4gPiA+IEthc2FuIGlzIGRlYWQgY29kZSB0byBYZW4uIElmIHlvdSBib290IHg4 NiBYZW4gd2l0aCBLYXNhbiBlbmFibGVkCj4gPiAKPiA+IEZvciBYZW4gUFYgZ3Vlc3RzLAo+IAo+ IFRoYXQncyByaWdodC4gRm9yIDUgeWVhcnMgdGhpcyB3aWxsIGJlIGEgYm9tYi4gVGhhdCB3ZW50 IHVubm90aWNlZAo+IGFuZCBJIGZlZWwgSSBoYXZlIHRvIHB1bGwgaGFpciBub3cgdG8gdHJ5IHRv IGdldCBmb2xrcyB0byBmaXggdGhpcy4KClNvbWV0aW1lcyB5b3UgaGF2ZSB0byByb2xsIHVwIHlv dXIgc2xlZXZlcyBhbmQgZG8gdGhlIHdvcmsgeW91cnNlbGYuCj4gCj4gSG93IG1hbnkgb3RoZXIg aXNzdWVzIHdpbGwgZ28gaW4gd2hpY2ggd2lsbCBleHBsb2RlIGR1cmluZyB0aGlzIDUgeWVhcgo+ IHRpbWUgbGluZT8gSG93IGNhbiB3ZSBwcm9hY3RpdmVseSBhZGRyZXNzIGEgc29sdXRpb24gdG8g dGhpcyBub3cgc28gd2UKPiBhdm9pZCB0aGlzIGluIGZ1dHVyZSA/Cj4gCj4gRG8geW91IGJlbGll dmUgbWUgbm93IGl0cyBhIHJlYWwgaXNzdWU/CgpJIG5ldmVyIHNhaWQgb3RoZXJ3aXNlLiBXaGF0 IEkgd2FzIGNvbmZ1c2VkIHdhcyB0aGF0IHlvdSBncm91cGVkCnRoaXMgd2l0aCBIVk1MaXRlIC0g d2hpY2ggd291bGQgbm90IGhhdmUgYSBwcm9ibGVtIGxpa2UgdGhpcy4KCj4gCj4gRm9ydHVuYXRl bHkgSSBoYXZlIGEgcHJvYWN0aXZlIHNvbHV0aW9uIGZvciBwdm9wcyBub3cgaW4gbXkgcGlwZWxp bmUgdGhhdAo+IHNob3VsZCBoZWxwIGF2b2lkIHVzIGhhdmluZyB0byBibG93IG1vcmUgdGhpbmdz IHVwIG9uIFhlbiBidXQgYWxzbyB0aGF0IHNob3VsZAo+IGNhdXNlIG5vIGhlYWRhY2hlcyBvbiBi ZWhhbGYgb2YgeDg2IGRldmVsb3BlcnMuIEJ1dCwgcmVhc29uIEkgaGF2ZSBiZWVuIHNvCj4gZW5n YWdlZCBvbiBIVk1MaXRlIGRlc2lnbiByZXZpZXcgaXMgSSB3YW50IHRvIGVuc3VyZSB3ZSB0YWtl IHRoZSBsZXNzb25zCj4gbGVhcm5lZCBmcm9tIHB2b3BzIGFuZCBhdm9pZCB0aGlzIGZvciBhbiBh cmNoaXRlY3R1cmUgdGhhdCB3aWxsIGJlIGRlZi1mYWN0bwo+IFhlbiBvbiBMaW51eCA1IHllYXJz IGZyb20gbm93Lgo+IAo+IE5vdCBicmluZ2luZyB0aGlzIHVwIG9yIGFkZHJlc3NpbmcgdGhpcyBu b3cgZm9yIEhWTUxpdGUgLyBQVkgyIHdvdWxkIHNpbXBseSBiZQo+IHNpbGx5LCBhbmQgc2luY2Ug aXQgd2Fzbid0IGFkZHJlc3NlZCBpbiBwdm9wcyBJIG9idmlvdXNseSBoYXZlIHRvIGVuc3VyZSBJ Cj4gY29udmluY2UgZW5vdWdoIHBlb3BsZSBpdCB3YXMgYSByZWFsIGlzc3VlIGFuZCBlbnN1cmUg dGhhdCB3ZSBoYXZlIGVub3VnaAo+IHNlbWFudGljcyBhdmFpbGFibGUgdG8gYWRkcmVzcyBpdC4K Ckthc2FuIGNhbWUgYWZ0ZXIgcHZvcHMsIHNvIG9mIGNvdXJzZSBpdCB3YXMgbm90IGFkZHJlc3Nl ZCBpbiBwdm9wcy4KCj4gCj4gUGFydCBvZiB0aGUgc2VtYW50aWNzIHF1ZXN0aW9uLCB3aGljaCBo YXMgbWFkZSBteSBxdWVzdCBoYXJkLCB3YXMgdGhlIHVzZSBvZgo+IHNlbWFudGljcyBmb3Igdmly dHVhbGl6YXRpb24gZm9yIGNvZGUgb24gZWFybHkgYm9vdCBhbmQgbGF0ZXIgaW4gYm9vdCBoYXMg YmVlbgo+IHJhdGhlciBzbG9wcHksIHNvIHdlIGhhdmUgcmVjZW50bHkgbmVlZGVkIHRvIGFkZHJl c3Mgc29tZSBvZiB0aGVzZSBnYXBzLiBTb21lCj4gb2YgdGhlc2UgZGlzY3Vzc2lvbnMgaGF2ZSBo b3dldmVyIGJlZW4gcHJvZHVjdGl2ZSwgYXMgSSdsbCBleHBsYWluIHRvIEdlb3JnZQo+IHNvb24g cmVnYXJkaW5nIGhpcyBEVCBxdWVzdGlvbnMuICBUaGUgZGlzY3Vzc2lvbiBpcyBub3Qgb3ZlciB0 aG91Z2ggYW5kIHdlIG5lZWQKPiB0byBlbnN1cmUgdGhhdCBpZiB3ZSBuZWVkIHNlbWFudGljcyBm b3IgSFZNTGl0ZSB3ZSdsbCBoYXZlIHRoZW0gYXZhaWxhYmxlIGluCj4gKmNsZWFuKiB3YXkuIE9u ZSBvZiB0aGUgdGhpbmdzIHdoZXJlIGVhcmx5IHNlbWFudGljcyBhbmQgZGVzaWduIHRvIGFkZHJl c3MKPiB0aGVzZSBpc3N1ZSBoZWxwIGluIGEgcHJvYWN0aXZlIG1hbm5lciBpcyB0byBhZGRyZXNz IGEgY2xlYW4gYm9vdCBlbnRyeSAtLSBhbmQKPiB0aGF0J3MgYWxzbyB3aHkgSSd2ZSBiZWVuIHNv IHBlZGFudGljIG92ZXIgcmV2aWV3IG9mIHRoZSBuZXcgSFZNbGl0ZSBib290Cj4gZW50cnkuCgpJ IG11c3QgaGF2ZSBtaXNzZWQgeW91ciByZXZpZXcgb2YgdGhlIHBhdGNoZXMuIFNvcnJ5IQo+IAo+ ID4gPiBYZW4gZXhwbG9kZXMuIFF1aWNrIHF1ZXN0aW9uLCB3aWxsIEthc2FuIG5vdCBleHBsb2Rl IHdpdGggSFZNTGl0ZSA/Cj4gPiAKPiA+IC4uIGJ1dCBmb3IgSFZNTGl0ZSBvZiBYZW4gSFZNIGd1 ZXN0IEthc2FuIHdpbGwgcnVuLgo+IAo+IEFyZSB5b3Ugc3VyZT8gU2hvdWxkIHRoYXQgbWVhbiB0 aGF0IFhlbiBIVk0gc2hvdWxkIGJlIGZpbmUgYXMgd2VsbC4gIERvZXMgdGhhdAo+IHdvcms/IEFy ZSB3ZSBzdXJlPwoKWWVzLCBhbmQgeWVzLgo+IAo+ID4gPiBNVFJSIHVzZWQgdG8gYmUgZGVhZCBj b2RlIGNvbmNlcm4gYnV0IHNpbmNlIHdlIGhhdmUgdmV0dGVkIG1vc3Qgb2YgdGhhdCBjb2RlCj4g PiA+IG5vdyB3ZSBhcmUgcHJldHR5IGNlcnRhaW4gdGhhdCBjb2RlIHNob3VsZCBuZXZlciBydW4g bm93Lgo+ID4gPiAKPiA+ID4gS0FTTFIgbWF5IGJlIC0tIG5vdCBzdXJlIGFzIEkgIGhhdmVuJ3Qg dmV0dGVkIHRoYXQsIGJ1dCBmcm9tCj4gPiA+IHdoYXQgSSBoYXZlIGxvb3NlbHkgaGVhcmQgbWF5 YmUuCj4gPiA+IAo+ID4gPiBWR0EgY29kZSB3aWxsIGJlIGRlYWQgY29kZSBmb3IgSFZNbGl0ZSBm b3Igc3VyZSBhcyB0aGUgZGVzaWduIGRvYwo+ID4gPiBzYXlzIGl0IHdpbGwgbm90IHJ1biBWR0Es IHRoZSBBQ1BJIGZsYWcgd2lsbCBiZSBzZXQgYnV0IHRoZSBjaGVjawo+ID4gPiBmb3IgdGhhdCBp cyBub3QgeWV0IG9uIExpbnV4LiBUaGF0IG1lYW5zIHRoZSBWR0EgTGludXggY29kZSB3aWxsCj4g PiA+IGJlIHRoZXJlIGJ1dCB3ZSBoYXZlIG5vIHdheSB0byBlbnN1cmUgaXQgd2lsbCBub3QgcnVu IG5vciB0aGF0Cj4gPiA+IGFueXRoaW5nIHdpbGwgbXVjayB3aXRoIGl0Lgo+ID4gCj4gPiA8c2hy dWdzPiBUaGUgd29yc3QgaXQgd2lsbCBkbyBpcyB0cnkgdG8gcmVhZCBub24tZXhpc3RlbnQgcmVn aXN0ZXJzLgo+IAo+IFJlYWxseSA/Cj4gCj4gSXMgdGhhdCB5b3VyIHBvc2l0aW9uIG9uIGFsbCBv dGhlciBwb3NzaWJsZSBkZWFkIGNvZGUgdGhhdCBtYXkgaGF2ZSBiZWVuCj4gcG9zc2libGUgb24g b2xkIFhlbiBQViBndWVzdHMgYXMgd2VsbCA/CgpUaGlzIGlzIG5vdCBqdXN0IHdpdGggWGVuIC0g aXQgd2l0aCBvdGhlciBkZXZpY2UgZHJpdmVycyB0aGF0IGFyZSBiZWluZwppbnZva2VkIG9uIGJh cmVtZXRhbCBhbmQgYXJlIG5vdCBwcmVzZW50IGluIGhhcmR3YXJlIGFueW1vcmUuCj4gCj4gQXMg SSBoaW50ZWQsIGFmdGVyIHRoaW5raW5nIGFib3V0IHRoaXMgZm9yIGEgd2hpbGUgSSByZWFsaXpl ZCB0aGF0IGRlYWQgY29kZSBpcwo+IGxpa2VseSBwcmVzZW50IG9uIGJhcmUgbWV0YWwgYXMgd2Vs bCBldmVuIHdpdGhvdXQgdmlydHVhbGl6YXRpb24sIHNwZWNpYWxseSBpZgoKWWVzIQo+IHlvdSBi dWlsZCBsYXJnZSBzaW5nbGUga2VybmVscyB0byBzdXBwb3J0IGEgd2lkZSBhcnJheSBvZiBmZWF0 dXJlcyB3aGljaCBvbmx5Cj4gbGF0ZSBhdCBydW4gdGltZSBjYW4gYmUgZGV0ZXJtaW5lZC4gVmly dHVhbGl6YXRpb24gYW5kIHRoZSBwdm9wcyBkZXNpZ24ganVzdAo+IG1ha2VzIHRoaXMgaXNzdWUg bXVjaCBtb3JlIHByb21pbmVudC4gSWYgdGhlcmUgYXJlIG90aGVyIGFyZWFzIG9mIGNvZGUgZXhw b3NlZAo+IHRoYXQgYWN0dWFsbHkgbWF5IHJ1biwgYnV0IHdlIGFyZSBub3Qgc3VyZSBtYXkgcnVu LCBJIGZpZ3VyZWQgc29tZSBvdGhlciBmb2xrcwo+IHdpdGggYSBiaXQgbW9yZSBzZWN1cml0eSBj b25zY2llbmNlIG1pbmRzIG1pZ2h0IGV2ZW4gc2ltcGx5IHRha2UgdGhlIHBvc2l0aW9uCj4gaXQg bWF5IGJlIGEgc2VjdXJpdHkgcmlzayB0byBsZWF2ZSB0aGF0IGNvZGUgZXhwb3NlZC4gU28gdG8g dGFrZSBhIHBvc2l0aW9uCj4gdGhhdCAndGhlIHdvcnN0IGl0IHdpbGwgZG8gaXMgdHJ5IHRvIHJl YWQgbm9uLWV4aXN0ZW50IHJlZ2lzdGVycycgLS0gc2VlbXMKPiByYXRoZXIgc2hvcnRzaWdodGVk IGhlcmUuCgpTZWN1cml0eSBjb25zY2lvdXMgcGVvcGxlIHRyaW0gdGhlaXIgQ09ORklHLgo+ICAK PiBBbnl3YXkgZm9yIG1vcmUgZGV0YWlscyBvbiB0aG91Z2h0cyBvbiB0aGlzIHJlZmVyIHRvIHRo ZSB0aGlzIHdpa2k6Cj4gCj4gaHR0cDovL2tlcm5lbG5ld2JpZXMub3JnL0tlcm5lbFByb2plY3Rz L2tlcm5lbC1zYW5kYm94aW5nCj4gCj4gU2luY2UgdGhpcyBpcyBub3cgZ2V0dGluZyBvZmYgdG9w aWMgcGxlYXNlIHNlbmQgbWUgeW91ciBmZWVkYmFjayBvbiBhbm90aGVyCj4gdGhyZWFkIGZvciB0 aGUgbm9uLXZpcnR1YWxpemF0aW9uIGFzcGVjdHMgb2YgdGhpcyBpZiB0aGF0IGludGVyZXN0cyB5 b3UuIE15Cj4gcG9pbnQgaGVyZSB3YXMgcmF0aGVyIHRvIGhpZ2hsaWdodCB0aGUgaW1wb3J0YW5j ZSBvZiBjbGVhciBzZW1hbnRpY3MgZHVlIHRvCj4gdmlydHVhbGl6YXRpb24gaW4gbGlnaHQgb2Yg cG9zc2libGUgZGVhZCBjb2RlLgoKVGhhbmsgeW91Lgo+IAo+ID4gVGhlIFZHQSBjb2RlIHNob3Vs ZCBiZSBhYmxlIHRvIGhhbmRsZSBmYWlsdXJlcyBsaWtlIHRoYXQgYW5kCj4gPiBub3QgaW5pdGlh bGl6ZSBpdHNlbGYgd2hlbiB0aGUgaGFyZHdhcmUgaXMgZGVhZCAob3Igbm9uLWV4aXN0ZW50KS4K PiAKPiBUaGF0J3MgcmlnaHQsIGl0cyB0aHJvdWdoIEFDUElfRkFEVF9OT19WR0EgYW5kIHNpbmNl IGl0cyBwYXJ0IG9mIHRoZSBIVk1MaXRlCj4gZGVzaWduIGRvYyB3ZSB3YW50IEhWTWxpdGUgZGVz aWduIHRvIGFkZHJlc3MgQUNQSV9GQURUX05PX1ZHQSBwcm9wZXJseS4gIEkndmUKPiBwYXZlZCB0 aGUgd2F5IGZvciB0aGlzIHRvIGJlIGRvbmUgY2xlYW5seSBhbmQgZWFzaWx5IG5vdywgYnV0IHRo YXQgY29kZSBzaG91bGQKPiBiZSBpbiBwbGFjZSBiZWZvcmUgSFZNTGl0ZSBjb2RlIGdldHMgbWVy Z2VkLgo+IAo+IERvZXMgZG9tVSBmb3Igb2xkIFhlbiBQViBhbHNvIHNldCBBQ1BJX0ZBRFRfTk9f VkdBIGFzIHdlbGwgPyAgU2hvdWxkIGl0ID8KCkl0IGRvZXMgbm90LiBOb3Qgc3VyZSAtIGl0IHNl ZW1zIHRvIGhhdmUgd29ya2VkIGZpbmUgZm9yIHRoZSBsYXN0IHRlbgp5ZWFycz8KPiAKPiA+ID4g VG8gYmUgY2xlYXIgLS0gZGVhZCBjb2RlIGNvbmNlcm5zIHN0aWxsIGV4aXN0IGV2ZW4gd2l0aG91 dAo+ID4gPiB2aXJ0dWFsaXphdGlvbiBzb2x1dGlvbnMsIGl0cyBqdXN0IHRoYXQgd2l0aCB2aXJ0 dWFsaXphdGlvbgo+ID4gPiB0aGlzIHN0dWZmIGNvbWVzIHVwIG1vcmUgYW5kIHRoZXJlIGhhcyBi ZWVuIG5vIHByb2FjdGl2ZQo+ID4gPiBtZWFzdXJlcyB0byBhZGRyZXNzIHRoaXMuIFRoZSBxdWVz dGlvbiBvZiBzZW1hbnRpY3MgaGVyZSBpcwo+ID4gPiB0byBzZWUgdG8gd2hhdCBleHRlbnQgd2Ug bmVlZCBlYXJsaWVyIGJvb3QgY29kZSBhbm5vdGF0aW9ucwo+ID4gPiB0byBlbnN1cmUgd2UgYWRk cmVzcyBzZW1hbnRpY3MgcHJvYWN0aXZlbHkuCj4gPiAKPiA+IEkgdGhpbmsgd2hhdCB5b3UgbWVh biBieSBkZWFkIGNvZGUgaXMgYW5vdGhlciB3b3JkIGZvcgo+ID4gaGFyZHdhcmUgdGVzdCBjb3Zl cmFnZT8KPiAKPiBObywgbm8sIGl0cyB2ZXJ5IGRpZmZlcmVudCBnaXZlbiB0aGF0IHdpdGggdmly dHVhbGl6YXRpb24gdGhlIHNjb3BlIG9mIHBvc3NpYmxlCj4gZGVhZCBjb2RlIGlzIHNpZ25pZmlj YW50IGFuZCBhdCBydW4gdGltZSB5b3UgYXJlIGNlcnRhaW4gYSBodWdlIHBvcnRpb24gb2YgY29k ZQo+IHNob3VsZCAqbmV2ZXIgZXZlciogcnVuLiBTbyBmb3IgaW5zdGFuY2Ugd2Uga25vdyBvbmNl IHdlIGJvb3QgYmFyZSBtZXRhbCBub25lCj4gb2YgdGhlIFhlbiBzdHVmZiBzaG91bGQgZXZlciBy dW4sIGxpa2V3aXNlIG9uIFhlbiBkb20wIHdlIGtub3cgbm9uZSBvZiB0aGUgS1ZNCj4gLyBiYXJl LW1ldGFsIG9ubHkgc3R1ZmYgc2hvdWxkIG5ldmVyIHJ1biwgd2hlbiBvbiBYZW4gZG9tVSwgbm9u ZSBvZiB0aGUgWGVuCgpXaGF0IGlzIHRoaXMgJ2JhcmUgbWV0YWwgb25seSBzdHVmZicgeW91IHNw ZWFrIG9mPyBPbiBYZW4gZG9tMCBtb3N0IG9mCnRoZSBiYXJlbWV0YWwgY29kZSBpcyBydW5uaW5n LiBJbiBmYWN0IHRoYXQgaXMgaG93IHRoZSBkZXZpY2UgZHJpdmVycwp3b3JrLiBPciBhcmUgeW91 IHRhbGtpbmcgYWJvdXQgbG93IGxldmVsIGJhcmVtZXRhbCBjb2RlPyBJZiBzbywgdGhlbgpQVkgv SFZNTGl0ZSBkb2VzIHRoYXQgLSBpdCBza2lwcyBwdm9wcyBzbyB0aGF0IGl0IGNhbiBydW4gdGhp cwonbG93LWxldmVsIGJhcmVtZXRhbCBjb2RlJwoKPiBkb21VLW9ubHkgc3R1ZmYgc2hvdWxkIGV2 ZXIgcnVuLgoKWW91IGZvcmdvdCBLVk0gZ3Vlc3Qgc3VwcG9ydCBvbiBiYXJlbWV0YWwuIFRoYXQg c2hvdWxkbid0IHJ1biBlaXRoZXIuCgo+IAo+ID4gPiA+IFRoZSBlbnRyYWNlIHBvaW50IGluIExp bnV4ICJwcm9wZXIiIGlzIHN0YXJ0dXBfMzIgb3Igc3RhcnR1cF82NCAtIHRoZSBzYW1lCj4gPiA+ ID4gcGF0aCB0aGF0IEVGSSB1c2VzLgo+ID4gPiA+IAo+ID4gPiA+IElmIHlvdSB3ZXJlIHRvIGRy YXcgdGhpcyAodmVyeSBzaW1wbGlmaWVkKToKPiA+ID4gPiAKPiA+ID4gPiBhKS0gR1JVQjIgLS0t LS0tLS0tLS0tLS0tLS0tLS0tXCAoY3JlYXRlcyBhbiBib290cGFyYW0gc3RydWN0dXJlKQo+ID4g PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICstLS0tIHN0YXJ0dXBfMzIgb3Igc3RhcnR1cF82NAo+ID4g PiA+IGIpIEVGSSAtPiBMaW51eCBFRkkgc3R1YiAtLS0tLS0tLwo+ID4gPiA+ICAgICAgICAoY3Jl YXRlcyBib290cGFybSkgICAgICAvCj4gPiA+ID4gYykgR1JVQjItRUZJICAtPiBMaW51eCBFRkkt LS0tLwo+ID4gPiA+ICAgICAgICAgICAgICAgIHN0dWIgICAgICAgICAvCj4gPiA+ID4gZCkgSFZN TGl0ZSAtLS0tLS0tLS0tLS0tLS0tLwo+ID4gPiA+ICAgICAgIChjcmVhdGVzIGJvb3RwYXJtKQo+ ID4gPiAKPiA+ID4gYikgYW5kIGQpIG1pZ2h0IGJlIGFibGUgdG8gc2hhcmUgcGF0aHMgdGhlcmUu Li4KPiA+IAo+ID4gTm8gaWRlYS4gWW91IHdvdWxkIGhhdmUgdG8gbG9vayBpbiB0aGUgYXNzZW1i bGVyIGNvZGUgdG8KPiA+IGZpZ3VyZSB0aGF0IG91dC4KPiAKPiBBbmQgdGhhdCdzIGEgcGFpbiwg SSBnZXQgaXQuCj4gCj4gSSBzcG90dGVkIG9uZSBwbGFjZSBhbHJlYWR5IC0tIHdpbGwgbm90ZSB0 byBCb3Jpcy4gSSB0aGluayBNYXR0IG1heSBoYXZlIG1vcmUKPiBpZGVhcyA7KQo+IAo+ID4gPiBk KSBzdGlsbCBoYXMgaXRzIG93biBlbnRyeSwgaXQgZG9lcyBtb3JlIHRoYW4gY3JlYXRlIGJvb3Qg cGFyYW1zLgo+ID4gCj4gPiBkKSBwdXJwb3NlIGlzIHRvIGNyZWF0ZSBib290IHBhcmFtcy4KPiAK PiBPSyBnb29kIHRvIGtub3cgdGhhdCdzIHRoZSBvbmx5IHRoaW5nIHdlIGFja25vd2xlZGdlIGl0 ICpzaG91bGQqIGRvLgoKQW5kIGIpLCBjKSBwdXJwb3NlIGlzIGZvciB0aGF0IHRvbyAtIGFtb25n dHMgcHJvdmlkaW5nIGFuIG1lY2hhbmlzbQp0byBjYWxsIGluIEVGSSBmaXJtd2FyZS4KCkFuZCBJ IHJlYWxpemVkIHRoYXQgZWFybHkgYmFyZW1ldGFsIGJvb3Qgb3B0aW9uIGFsc28gZW5kcyB1cCBj YWxsaW5nIEMgZHVyaW5nCml0cyBzdGFydHVwIChzZWUgbWFpbiBpbiBhcmNoL3g4Ni9ib290L21h aW4uYykgYW1vbmdzdCB0aGVuIHN3aXRjaGluZwpkaWZmZXJlbnQgbW9kZXMuCgo+IAo+ID4gIEl0 IG1heSBkbyBtb3JlIGFzIG5vYm9keSBsaWtlcyB0byBtdWNrIGluIGFzc2VtYmxlciBhbmQgbWFr ZSBib290cGFyYW1zIGZyb20KPiA+ICB3aXRoaW4gYXNzZW1ibGVyLgo+IAo+IE9LIC0tIGl0IGRv ZXMgZG8gbW9yZSBhbmQgdGhhdCdzIHdoZXJlIHdlJ2QgbGlrZSB0byBhdm9pZCBkdXBsaWNhdGlv biBpZgo+IHBvc3NpYmxlIGFuZCB5ZXQtYW5vdGhlci1lbnRyeSAoVE0pLgoKSXQgZG9lcyBtb3Jl PyBFRkkgc3R1YiBlbnRyeSBkb2VzIG1vcmUgdGhhbiB0aGUgR1JVQjIgZW50cnkuCgpJZiB5b3Ug aGF2ZSBzb21lIHBhdGNoZXMgdG8gdHJpbSB0aGUgY29kZSBkdXBsaWNhdGlvbiB3aXRoaW4KdGhv c2UgYm9vdCBwYXRocy0gcGxlYXNlIHBvc3QgaXQuCj4gCj4gPiA+ID4gKEkgYW0gbm90IHN1cmUg YWJvdXQgdGhlIGMpIC0gSSB3b3VsZCBoYXZlIHRvIGxvb2sgaW4gc291cmNlIHRvCj4gPiA+ID4g YmUgc291cmNlKS4gVGhlcmUgaXMgYWxzbyBMSUxPIGluIHRoaXMsIGJ1dCBJIGFtIG5vdCBldmVu IHN1cmUgaWYKPiA+ID4gPiB3b3JrcyBhbnltb3JlLgo+ID4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+ IFdoYXQgeW91IGhhdmUgaXMgdGhhdCBldmVyeSBlbnRyeSBwb2ludCBjcmVhdGVzIHRoZSBib290 cGFyYW1zCj4gPiA+ID4gYW5kIGVuZHMgdXAgY2FsbGluZyBzdGFydHVwX1guIFRoZSBzdGFydHVw XzY0IHRoZW4gaGl0IHRoZSByZXN0Cj4gPiA+ID4gb2YgdGhlIGtlcm5lbC4gVGhlIHN0YXJ0cF9Y IGNvZGUgaXMgdGhlIG9uZSB0aGF0IHdvdWxkIHNldHVwCj4gPiA+ID4gdGhlIGJhc2ljIHBhZ2V0 YWJsZXMsIHNlZ21lbnRzLCBldGMuCj4gPiA+IAo+ID4gPiBTdXJlLi4gYSBmdWxsIGRpYWdyYW0g c2hvdWxkIGluY2x1ZGUgYm90aCBzaWRlcyBhbmQgaG93IHdoZW4gdXNpbmcKPiA+ID4gYSBjdXN0 b20gZW50cnkgb25lIHJ1bnMgdGhlIHJpc2sgb2Ygc2tpcHBpbmcgYSBsb3Qgb2YgY29kZSBzZXR1 cC4KPiA+IAo+ID4gQnV0IGl0IGRvZXMgbm90IHNraXAgYSBsb3Qgb2YgY29kZSBzZXR1cC4gSXQg c3RhcnRzIGV4YWN0bHkKPiA+IGF0IHRoZSBzYW1lIGNvZGUgc3RhcnR1cCB0aGF0IF9hbGxfIGJv b3RzdHJhcGluZyBjb2RlIHN0YXJ0IGF0Lgo+IAo+IEl0cyBhIGZhaXIgcG9pbnQuCj4gCj4gPiA+ IFRoZXJlIGlzIHRoYXQgYW5kIGFzIG90aGVycyBoYXZlIHBvaW50ZWQgb3V0IGhvdyBjZXJ0YWlu IGd1ZXN0cyB0eXBlcwo+ID4gPiBhcmUgYXNzdW1lZCB0byBub3QgaGF2ZSBjZXJ0YWluIHBlcmlw aGVyYWxzLCBhbmQgd2UgaGF2ZSBubyBpZGVhCj4gPiA+IHRvIGVuc3VyZSBjZXJ0YWluIG9sZCBs ZWdhY3kgY29kZSBtYXkgbm90IGV2ZXIgcnVuIG9yIGJlIGFjY2Vzc2VkCj4gPiA+IGJ5IGRyaXZl cnMuCj4gPiAKPiA+IE9rLCBidXQgdGhhdCBpcyBub3QgYXQgY29kZSBzZXR1cC4gVGhhdCBpcyBs YXRlciAtIHdoZW4gZGV2aWNlCj4gPiBkcml2ZXJzIGFyZSBpbml0aWFsaXplZC4gVGhpcyBubyBk aWZmZXJlbnQgdGhhbiBib290aW5nIG9uCj4gPiBzb21lIGhhcmR3YXJlIHdpdGggbWlzc2luZyBm dW5jdGlvbmFsaXR5LiBBQ1BJLCBQQ0kgYW5kIFBuUAo+ID4gUG5QIGFyZSBzZXQgdGhlcmUgdG8g aGVscCBPU2VzIGRpc2NvdmVyIHRoaXMuCj4gCj4gVG8gYSBjZXJ0YWluIGV4dGVudCB0aGlzIGlz IHRydWUsIGJ1dCB0aGVyZSBtYXkgdGhpbmdzIHdoaWNoIGFyZSBtaXNzaW5nIHN0aWxsLgoKTGlr ZT8KPiAKPiBXZSByZWFsbHkgaGF2ZSBubyBpZGVhIHdoYXQgdGhlIGZ1bGwgbGlzdCBvZiB0aG9z ZSB0aGluZ3MgYXJlLgoKT2ssIGl0IHNvdW5kcyBsaWtlIHlvdSBoYXZlIHNvbWUgaG9tZXdvcmsu Cj4gCj4gSXQgbWF5IGJlIHRoYXQgdGhpbmdzIG1heSBoYXZlIGJlZW4gcnVubmluZyBmb3IgYWdl cyB3aXRob3V0IG5vdGljZSBvZiBhbiBpc3N1ZQo+IG9yIHRoYXQgb25seSB1bmRlciBjZXJ0YWlu IHNpdHVhdGlvbnMgd2lsbCBjZXJ0YWluIGlzc3VlcyBvciBidWdzIHRyaWdnZXIgYQo+IGZhaWx1 cmUuIEZvciBpbnN0YW5jZSwganVzdCB5ZXN0ZXJkYXkgSSB3YXMgQ2MnZCBvbiBhIGJyYW5kLXNw YW5raW5nIG5ldyBsZWdhY3kKPiBjb25mbGljdCBbMF0sIGNhdXNlZCBieSB1cHN0cmVhbSBjb21t aXQgOGMwNThiMGI5YzM0ZDhjICgieDg2L2lycTogUHJvYmUgZm9yCj4gUElDIHByZXNlbmNlIGJl Zm9yZSBhbGxvY2F0aW5nIGRlc2NzIGZvciBsZWdhY3kgSVJRcyIpIG1lcmdlZCBvbiB2NC40IHdo ZXJlCj4gc29tZSBuZXcgY29kZSB1c2VkIG5yX2xlZ2FjeV9pcnFzKCkgLS0gb25lIHByb3Bvc2Vk IHNvbHV0aW9uIHNlZW1zIHRvIGJlIHRoYXQKPiBmb3IgWGVuIGNvZGUgTlJfSVJRU19MRUdBQ1kg c2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBpcyBhcyBpdCBsYWNrcyBQQ0kgWzFdIGFuZAo+IGFub3Ro ZXIgd2FzIHRvIHBlZyB0aGUgbGVnYWN5IHJlcXVpcmVtZW50cyBhcyBhIHF1aXJrIG9uIHRoZSBu ZXcgeDg2IHBsYXRmb3JtCj4gbGVnYWN5IHF1aXJrIHN0dWZmIFsyXS4gQXJlIG90aGVyIHVzZXMg b2YgbnJfbGVnYWN5X2lycXMoKSBjb3JyZWN0ID8gQXJlCj4gd2Ugc3VyZSA/CgpBbmQgaG93IGlz IHRoaXMgZXhhbXBsZSByZWxhdGVkIHRvICdlYXJseSBib290dXAnIHBhdGg/CgpJdCBpcyBub3Qu CgpJdCBpcyBpbiBmYWN0IHJlbGF0ZWQgdG8gUFYgY29kZXBhdGhzIC0gd2hpY2ggUFZIL0hWTUxp dGUgYW5kIEhWTSBndWVzdHMKZG8gbm90IGV4ZXJjaXNlLgo+IAo+IFswXSBodHRwOi8vbGttbC5r ZXJuZWwub3JnL3IvNTcwRjkwREYuMTAyMDUwOEBvcmFjbGUuY29tCj4gWzFdIGh0dHBzOi8vbGtt bC5vcmcvbGttbC8yMDE2LzQvMTQvNTMyCj4gWzJdIGh0dHA6Ly9sa21sLmtlcm5lbC5vcmcvci8x NDYwNTkyMjg2LTMwMC0xLWdpdC1zZW5kLWVtYWlsLW1jZ3JvZkBrZXJuZWwub3JnCj4gCj4gPiA+ ID4gPiBIb3cgd2UgYWRkcmVzcyBzZW1hbnRpY3MgdGhlbiBpcyAqdmVyeSogaW1wb3J0YW50IHRv IG1lLgo+ID4gPiA+IAo+ID4gPiA+IFdoaWNoIHNlbWFudGljcz8gSG93IHRoZSBDUFUgaXMgZ29p bmcgdG8gYmUgYXQgc3RhcnR1cF9YID8gT3IKPiA+ID4gPiBob3cgdGhlIENQVSBpcyBnb2luZyB0 byBiZSB3aGVuIEVGSSBmaXJtd2FyZSBpbnZva2VzIHRoZSBFRkkgc3R1Yj8KPiA+ID4gPiBPciB3 aGVuIEdSVUIyIGxvYWRzIExpbnV4Pwo+ID4gPiAKPiA+ID4gV2hhdCBoeXBlcnZpc29yIGtpY2tl ZCBtZSBhbmQgd2hhdCBndWVzdCB0eXBlIEkgYW0uCj4gPiAKPiA+IGNwdWlkIHNvZnR3YXJlIGZs YWdzIGhhdmUgdGhhdCAtIGFuZCB0aGF0IHNlbWFudGljcyBoYXMgYmVlbiAKPiA+IHRoZXJlIGZv ciBlb25zLgo+IAo+IFdlIGNhbm5vdCB1c2UgY3B1aWQgZWFybHkgaW4gYXNtIGNvZGUsIEknbSBs b29raW5nIGZvciBzb21ldGhpbmcgd2UKCj8hIFdoeSE/Cj4gY2FuIGV2ZW4gdXNlIG9uIGFzbSBl YXJseSBpbiBib290IGNvZGUsIG9uIHg4NiB0aGUgYmVzdCBvcHRpb24gd2UKPiBoYXZlIGlzIHRo ZSBib290X3BhcmFtcywgYnV0IEkndmUgZXZlbiBoYXZlIGhhZCBpc3N1ZXMgd2l0aCB0aGF0Cj4g ZWFybHkgaW4gY29kZSwgYXMgSSBjYW4gb25seSBhY2Nlc3MgaXQgYWZ0ZXIgbG9hZF9pZHQoKSB3 aGVyZSBJCj4gZGVzY3JpYmVkIG15IGVmZm9ydCB0byB1bmlmeSBYZW4gUFYgYW5kIHg4Nl82NCBp bml0IHBhdGhzIFszXS4KCldlbGwsIFhlbiBQViBza2lwcyB4ODZfNjRfc3RhcnRfa2VybmVsLi4K PiAKPiBbM10gaHR0cDovL2xrbWwua2VybmVsLm9yZy9yL0NBQj1ORTZWVENSQ2F6Y05wQ2RKN3BO MWVEMz14X2ZjR09kSDM3TXpWcHhrS0VONWVzd0BtYWlsLmdtYWlsLmNvbQo+IAo+ID4gPiBMZXQg bWUgZWxhYm9yYXRlIG1vcmUgYmVsb3cuCj4gPiA+IAo+ID4gPiA+IFRoYXQgKHRob3NlIGJvb3Rs b2FkZXJzKSBpcyBjbGVhcmx5IGRlZmluZWQuIFRoZSBVUkwgSSBwcm92aWRlZAo+ID4gPiA+IG1l bnRpb25zIHRoZSBIVk1MaXRlIG9uZS4gVGhlIERvY3VtZW50YXRpb24veDg2L2Jvb3QuYyBtZW50 aW9ucwo+ID4gPiA+IHdoYXQgdGhlIHNlbWFudGljcyBhcmUgdG8gZXhwZWN0ZWQgd2hlbiBwcm92 aWRpbmcgYW4gYm9vdHN0cmFwCj4gPiA+ID4gKHdoaWNoIGlzIHdoYXQgSFZNTGl0ZWwgc3R1YiBj b2RlIGluIExpbnV4IHdvdWxkIHdyaXRlIGFnYWluc3QgLQo+ID4gPiA+IGFuZCB3aGF0IEVGSSBz dHViIGNvZGUgaGFkIGJlZW4gd3JpdHRlbiBhZ2FpbnN0IHRvbykuCj4gPiA+ID4gPiAKPiA+ID4g PiA+ID4gPiBJJ2xsIGVsYWJvcmF0ZSBvbiB0aGlzIGJ1dCBmaXJzdCBsZXQncyBjbGFyaWZ5IHdo eSBhIG5ldyBlbnRyeSBpcyB1c2VkIGZvcgo+ID4gPiA+ID4gPiA+IEhWTWxpdGUgdG8gc3RhcnQg b2Ygd2l0aDoKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiAgIDEpIFhlbiBBQkkgaGFzIGhp c3RvcmljYWxseSBub3Qgd2FudGVkIHRvIHNldCB1cCB0aGUgYm9vdCBwYXJhbXMgZm9yIExpbnV4 Cj4gPiA+ID4gPiA+ID4gICAgICBndWVzdHMsIGluc3RlYWQgaXQgaW5zaXN0cyBvbiBsZXR0aW5n IHRoZSBMaW51eCBrZXJuZWwgWGVuIGJvb3Qgc3R1YnMgZmlsbAo+ID4gPiA+ID4gPiA+ICAgICAg dGhhdCBvdXQgZm9yIGl0LiBUaGlzIHN0aWNraW5nIHBvaW50IG1lYW5zIGl0IGhhcyBpbXBsaWNh dGVkIGEgYm9vdCBzdHViLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFdo aWNoIGlzIGIvYyBpdCBoYXMgdG8gYmUgT1MgYWdub3N0aWMuIEl0IGhhcyBub3RoaW5nIHRvIGRv ICdub3Qgd2FudGluZycuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEl0IGNhbiBzdGlsbCBiZSBPUyBh Z25vc3RpYyBhbmQgcGFzcyBvbiB0eXBlIGFuZCBjdXN0b20gZGF0YSBwb2ludGVyLgo+ID4gPiA+ IAo+ID4gPiA+IFN1cmUuIEl0IGhhcyB0aGF0IChpdCBNVVNUIG90aGVyd2lzZSBob3cgZWxzZSB3 b3VsZCB5b3UgcGFzcyBkYXRhKS4KPiA+ID4gPiBJdCBpcyBkb2N1bWVudGVkIGFzIHdlbGwgaHR0 cDovL3hlbmJpdHMueGVuLm9yZy9kb2NzL3Vuc3RhYmxlL2h5cGVyY2FsbC94ODZfNjQvaW5jbHVk ZSxwdWJsaWMseGVuLmguaHRtbCNpbmNvbnRlbnRzX3N0YXJ0b2ZkYXkKPiA+ID4gPiAoc2VlICIg U3RhcnQgb2YgZGF5IHN0cnVjdHVyZSBwYXNzZWQgdG8gUFZIIGd1ZXN0cyBpbiAlZWJ4LiIpCj4g PiA+IAo+ID4gPiBUaGUgZGVzaWduIGRvYyBiZWdzIGZvciBhIGN1c3RvbSBPUyBlbnRyeSBwb2lu dCB0aG91Z2guCj4gPiAKPiA+IFRoYXQgaXMgd2hhdCB0aGUgRUxGIE5vdGUgaGFzLgo+IAo+IFJp Z2h0LCBidXQgSSdtIHNheWluZyB0aGF0IGl0cyByYXRoZXIgc2lsbHkgdG8gYmUgYWRkaW5nIGVu dHJ5IHBvaW50cyBpZgo+IGFsbCB3ZSB3YW50IHRoZSBjb2RlIHRvIGRvIGlzIGNvcHkgdGhlIGJv b3QgcGFyYW1zIGZvciB1cy4gVGhlIGRlc2lnbgo+IGRvYyByZXF1aXJlcyBhIG5ldyBlbnRyeSwg YW5kIGxpa2V3aXNlIHlvdSdkIG5lZWQgeWV0LWFub3RoZXItZW50cnkgaWYKPiBIVk1MaXRlIGlz IHRocm93biBvdXQgdGhlIHdpbmRvdyBhbmQgY29tZSBiYWNrIDUgeWVhcnMgbGF0ZXIgYWZ0ZXIg bmV3Cj4gaGFyZHdhcmUgc29sdXRpb25zIGFyZSBpbiBwbGFjZSBhbmQgbmVlZCB0byByZWRlc2ln biBIVk1MaXRlLiBLaW5kIG9mCgpXaHkgd291bGQgeW91IG5lZWQgdG8gcmVkZXNpZ24gSFZNTGl0 ZSBiYXNlZCBvbiBoYXJkd2FyZSBzb2x1dGlvbnM/ClRoZSBlbnRyYWNlIHBvaW50IGFuZCB0aGUg Q1BVIHN0YXRlIGFyZSBwcmV0dHkgd2VsbCBrbm93biAtIGl0IGlzIGFraW4KdG8gd2hhdCBHUlVC MiBib290bG9hZGVyIHBhdGggaXMgKHByb3RlY3RlZCBtb2RlKS4KPiB3aGVyZSB3ZSBhcmUgd2l0 aCBQVkggdG9kYXkuIExpa2V3aXNlIGlmIG90aGVyIHBhcmF2aXJ0dWFsaXphdGlvbgo+IGRldmVs b3BlcnMgd2FudCB0byBzdXBwb3J0IExpbnV4IGFuZCB3YW50IHRvIGNvcHkgeW91ciBzdHJhdGVn eSB0aGV5J2QKPiBhZGQgeWV0LWFub3RoZXItZW50cnktcG9pbnQgYXMgd2VsbC4KPiAKPiBUaGlz IGlzIGR1bWIuCgpZb3Ugc2F5aW5nIHRoZSBFRkkgZW50cnkgcG9pbnQgaXMgZHVtYj8gVGhhdCBp bnN0ZWFkIHRoZSBFRkkKZmlybXdhcmUgc2hvdWxkIHVuZGVyc3RhbmQgTGludXggYm9vdHBhcmFt cyBhbmQgYm9vdGVkIHRoYXQ/Cgo+IAo+ID4gPiBJZiB3ZSBoYWQgYSBzaW5nbGUgJ3R5cGUnIGFu ZCAnY3VzdG9tIGRhdGEnIHBhc3NlZCB0byB0aGUga2VybmVsIHRoYXQKPiA+ID4gc2hvdWxkIHN1 ZmZpY2UgZm9yIHRoZSBkZWZhdWx0IExpbnV4IGVudHJ5IHBvaW50IHRvIGp1c3QgcGl2b3Qgb2Zm Cj4gPiA+IG9mIHRoYXQgYW5kIGRvIHdoYXQgaXQgbmVlZHMgd2l0aG91dCBtb3JlIGVudHJ5IHBv aW50cy4gT25jZS4KPiA+IAo+ID4gQW5kIHdoYXQgYWJvdXQgcmFtZGlzaz8gV2hhdCBhYm91dCBt dWx0aXBsZSByYW1kaXNrcz8KPiA+IFdoYXQgYWJvdXQgY29tbWFuZCBsaW5lPyBBbGwgb2YgdGhh dCBpcyB3aGF0IGJvb3RwYXJhbXMKPiA+IHRyaWVzIHRvIHVuaWZ5IG9uIExpbnV4LiBCdXQgJ2Jv b3RwYXJhbXMnIGlzIHVuaXF1ZSB0byBMaW51eCwKPiA+IGl0IGRvZXMgbm90IGV4aXN0IG9uIEZy ZWVCU0QuIEhlbmNlIHNvbWUgc3R1YiBjb2RlIHRvIHRyYW5zcGxhbnQKPiA+IE9TLWFnbm9zdGlj IHNpbXBsZSBkYXRhIHRvIE9TLXNwZWNpZmljIGlzIG5lY2Nlc3NhcnkuCj4gCj4gSWYgd2UgaGFk IGEgWGVuIEFCSSBvcHRpb24gd2hlcmUgKmFsbCogdGhhdCBJJ20gYXNraW5nIGlzIHlvdSBwYXNz Cj4gZmlyc3Q6Cj4gCj4gICBhKSBoeXBlcnZpc29yIHR5cGUKCldoeSBjYW4ndCB5b3UgdXNlIGNw dWlkLgo+ICAgYikgY3VzdG9tIGRhdGEgcG9pbnRlcgoKV2hhdCBpcyB0aGlzIGN1c3RvbSBkYXRh IHBvaW50ZXIgeW91IHNwZWFrIG9mPwo+IAo+IFdlJ2QgYmUgYWJsZSB0byBhdm9pZCBhZGRpbmcg KmFueSogZW50cnkgcG9pbnQgYW5kIGp1c3QgYWRkcmVzcwo+IHRoZSByZXF1aXJlbWVudHMgYXMg SSBub3RlZCB3aXRoIHByZSAvIHBvc3Qgc3R1YnMgZm9yIHRoZSB0eXBlLgoKQnV0IHlvdSBuZWVk IHNvbWUgZW50cnkgcG9pbnQgdG8gY2FsbCBpbnRvIExpbnV4LiBBcmUgeW91CnN1Z2dlc3Rpbmcg dG8gdXNlIHRoZSBleGlzdGluZyBvbmVzPyBObywgdGhlIGV4aXN0aW5nIG9uZQp3b3VsZG4ndCB1 bmRlcnN0YW5kIHRoaXMuCgo+IFRoaXMgd291bGQgcmVxdWlyZSBhbiB4ODYgYm9vdCBwcm90b2Nv bCBidW1wLCBidXQgYWxsIHRoZSBpc3N1ZXMKPiBjcmVlcGluZyB1cCByYW5kb21seSBJIHRoaW5r IHRoYXQncyB3b3J0aCBwdXR0aW5nIG9uIHRoZSB0YWJsZSBub3cuCgpBYWFhaCwgc28geW91IGFy ZSBzYXlpbmcgZXhwYW5kIHRoZSBib290cGFyYW1zLiBJbiBvdGhlciB3b3JkcwptYWtlIFhlbiBB QkkgY2FsbCBpbnRvIExpbnV4IHVzaW5nIHRoZSBib290cGFyYW1zIHN0cnVjdHVyZSwgc2ltaWxh cgp0byBob3cgR1JVQjIgZG9lcyBpdC4KCkhvdyBpcyB0aGF0IE9TIGFnbm9zdGljPwo+IAo+IEFu ZCBtYXliZSB3ZSBkb24ndCB3YW50IGl0IHRvIGJlIGh5cGVydmlzb3Igc3BlY2lmaWMsIHBlcmhh cHMgdGhlcmUgYXJlIG90aGVyCj4gKm5lZWRzKiBmb3IgY3VzdG9tIHByZS1wb3N0IHN0YXJ0dXBf MzIoKS9zdGFydHVwXzY0KCkgc3R1YnMuCgpNdWx0aWJvb3Q/Cj4gCj4gVG8gYXZvaWQgZXh0ZW5k aW5nIGJvb3RfcGFyYW1zIGZ1cnRoZXIgSSBmaWd1cmVkIHBlcmhhcHMgd2UgY2FuIGxvb2sKPiBh dCBFRkkgYXMgYW5vdGhlciBvcHRpb24gaW5zdGVhZC4gSWYgd2UgYXJlIGdvaW5nIHRvIGRyb3Ag YWxsIGxlZ2FjeQoKQnV0IEVGSSBzdXBwb3J0IGlzIF9odWdlXy4KPiBQViBzdXBwb3J0IGZyb20g dGhlIGtlcm5lbCAobm90IHRoZSBoeXBlcnZpc29yKSBhbmQgcmVxdWlyZSBoYXJkd2FyZQo+IHZp cnR1YWxpemF0aW9uIDUgeWVhcnMgZnJvbSBub3cgb24gdGhlIExpbnV4IGtlcm5lbCwgaXQgZG9l c24ndCBzZWVtCj4gdG8gbWUgZmFyIGZldGNoZWQgdG8gYXQgdGhlIHZlcnkgbGVhc3QgY29uc2lk ZXIgdXNpbmcgYW4gRUZJIGVudHJ5Cj4gaW5zdGVhZCwgc3BlY2lhbGx5IHNpbmNlIGFsbCBpdCBk b2VzIGlzIHNldCBib290IHBhcmFtcyBhbmQgd2UgY2FuCj4gbWFrZSByZS11c2UgdGhpcyBmb3Ig SFZNTGl0ZSB0b28uCgpCdXQgdG8gbWFrZSB0aGF0IHdvcmsgeW91IGhhdmUgdG8gZW11bGF0ZSBF RkkgZmlybXdhcmUgaW4gdGhlCmh5cGVydmlzb3IuIElzIHRoYXQgd29yayB5b3UgYXJlIHNpZ25p bmcgdXAgZm9yPwo+IAo+ICAgTHVpcwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK