From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC] GuC firmware versioning change Date: Fri, 19 Oct 2018 10:19:26 +0200 Message-ID: <20181019081926.GS31561@phenom.ffwll.local> References: <20181012202430.GB21521@jeffdesk> <20181012205143.GS10727@intel.com> <20181012213326.GE21521@jeffdesk> <20181012214605.GF21521@jeffdesk> <20181018173237.GG21521@jeffdesk> <20181018181221.GA2285@intel.com> <20181018224804.GH21521@jeffdesk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id 40BBE6E13F for ; Fri, 19 Oct 2018 08:19:30 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id r1-v6so30668501edd.7 for ; Fri, 19 Oct 2018 01:19:30 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20181018224804.GH21521@jeffdesk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jeff McGee Cc: intel-gfx , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMTgsIDIwMTggYXQgMDM6NDg6MDRQTSAtMDcwMCwgSmVmZiBNY0dlZSB3cm90 ZToKPiBPbiBUaHUsIE9jdCAxOCwgMjAxOCBhdCAxMToxMjoyMUFNIC0wNzAwLCBSb2RyaWdvIFZp dmkgd3JvdGU6Cj4gPiBPbiBUaHUsIE9jdCAxOCwgMjAxOCBhdCAxMDozMjozN0FNIC0wNzAwLCBK ZWZmIE1jR2VlIHdyb3RlOgo+ID4gPiBPbiBUaHUsIE9jdCAxOCwgMjAxOCBhdCAxMTo1NzowNkFN ICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiA+IE9uIEZyaSwgT2N0IDEyLCAyMDE4 IGF0IDExOjQ1IFBNIEplZmYgTWNHZWUgPGplZmYubWNnZWVAaW50ZWwuY29tPiB3cm90ZToKPiA+ ID4gPiA+Cj4gPiA+ID4gPiBPbiBGcmksIE9jdCAxMiwgMjAxOCBhdCAwMjozMzoyNlBNIC0wNzAw LCBKZWZmIE1jR2VlIHdyb3RlOgo+ID4gPiA+ID4gPiBPbiBGcmksIE9jdCAxMiwgMjAxOCBhdCAw MTo1MTo0NlBNIC0wNzAwLCBSb2RyaWdvIFZpdmkgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gT24gRnJp LCBPY3QgMTIsIDIwMTggYXQgMDE6MjQ6MzBQTSAtMDcwMCwgSmVmZiBNY0dlZSB3cm90ZToKPiA+ ID4gPiA+ID4gPiA+IFRoZSBHdUMgZmlybXdhcmUgdGVhbSBpcyBwcm9wb3NpbmcgYSBjaGFuZ2Ug dG8gdGhlIGZpcm13YXJlIHZlcnNpb25pbmcgc2NoZW1lLgo+ID4gPiA+ID4gPiA+ID4gVGhlIGdv YWwgaXMgdG8gbW9yZSBhY2N1cmF0ZWx5IHRyYWNrIHRoZSBmaXJtd2FyZSBpbnRlcmZhY2UgdG8g aGVscCB1c2Vycwo+ID4gPiA+ID4gPiA+ID4gbWFuYWdlIGRlcGVuZGVuY2llcyBvbiB0aGF0IGlu dGVyZmFjZS4gVGhlIHByb3Bvc2VkIHNjaGVtZSBpcyBiYXNlZCBvbgo+ID4gPiA+ID4gPiA+ID4g c2VtdmVyLm9yZyB3aXRoIHNvbWUgYWRkaXRpb25zIHRvIGhhbmRsZSBicmFuY2hpbmcuCj4gPiA+ ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gVGhlIHByb3Bvc2VkIHZlcnNpb24gbnVtYmVyIHdv dWxkIGhhdmUgNCBmaWVsZHM6IEJBU0UuTUFKT1IuTUlOT1IuUEFUQ0guCj4gPiA+ID4gPiA+ID4g PiBDb250cmFzdCB0aGlzIHdpdGggdGhlIDIgZmllbGRzIGluIHRoZSBjdXJyZW50IHZlcnNpb24g bnVtYmVyOiBNQUpPUi5NSU5PUi4KPiA+ID4gPiA+ID4gPiA+IFNpZGUgbm90ZSwgdGhlIGN1cnJl bnQgZmlybXdhcmUgZW5jb2RlcyBhIEJSQU5DSCBhbmQgQ0xJRU5UIG51bWJlciBhcyB3ZWxsLCBi dXQKPiA+ID4gPiA+ID4gPiA+IHRoZXkgaGF2ZSBub3QgYmVlbiBuZWVkZWQgYnkgaTkxNS4gU28g YSBmaXJtd2FyZSByZWxlYXNlZCB3aXRoIHRoZSBwcm9wb3NlZAo+ID4gPiA+ID4gPiA+ID4gc2No ZW1lIHdvdWxkIGJlIG5hbWVkIDxwbGF0Zm9ybT5fZ3VjX3ZlcjxiYXNlPl88bWFqb3I+XzxtaW5v cj5fPHBhdGNoPi5iaW4KPiA+ID4gPiA+ID4gPiA+IChleDogc2tsX2d1Y192ZXIxXzVfNF83LmJp bikgaW5zdGVhZCBvZiB0aGUgY3VycmVudAo+ID4gPiA+ID4gPiA+ID4gPHBsYXRmb3JtPl9ndWNf dmVyPG1ham9yPl88bWlub3I+LmJpbiAoZXg6IHNrbF9ndWNfdmVyOV8zMy5iaW4pLgo+ID4gPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IFRoZSBCQVNFIG51bWJlciBpcyBhbiBJRCB0aGF0IGlz IHVzZWQgdG8gaWRlbnRpZnkgYSBzZXQgb2YgcmVsZWFzZXMgaW4gd2hpY2gKPiA+ID4gPiA+ID4g PiA+IHRoZSBNQUpPUi5NSU5PUi5QQVRDSCBzZW1hbnRpY3MgYXJlIGNvbnNpc3RlbnQuIEluIG90 aGVyIHdvcmRzLCB0d28gcmVsZWFzZXMKPiA+ID4gPiA+ID4gPiA+IGZyb20gdGhlIHNhbWUgQkFT RSBjYW4gYmUgY29tcGFyZWQgdmlhIHRoZWlyIE1BSk9SLk1JTk9SLlBBVENIIHRvIGluZmVyIHRo ZWlyCj4gPiA+ID4gPiA+ID4gPiByZWxhdGlvbnNoaXAgYXMgZGVzY3JpYmVkIGJlbG93LiBUd28g cmVsZWFzZXMgZnJvbSBhIGRpZmZlcmVudCBCQVNFIGNhbm5vdCBiZQo+ID4gPiA+ID4gPiA+ID4g cmVsaWFibHkgY29tcGFyZWQuIFRoZSBCQVNFIG51bWJlciBmYWNpbGl0YXRlcyBhcmJpdHJhcnkg YnJhbmNoaW5nIHdoaWNoIGNhbgo+ID4gPiA+ID4gPiA+ID4gY3JlYXRlIGR1cGxpY2F0ZSBhbmQv b3IgZGlzY29ubmVjdGVkIE1BSk9SLk1JTk9SLlBBVENIIHZlcnNpb25zLiBUaGlzIHR5cGUgb2YK PiA+ID4gPiA+ID4gPiA+IGJyYW5jaGluZyBpcyBleHBlY3RlZCB0byBiZSByYXJlLCBhbmQgc28g QkFTRSB3aWxsIHJhcmVseSBjaGFuZ2UuIFdoZW4gYSBuZXcKPiA+ID4gPiA+ID4gPiA+IEJBU0Ug aXMgY3JlYXRlZCwgdGhlIE1BSk9SLk1JTk9SLlBBVENIIHJlc2V0IHRvIHN0YXJ0aW5nIHZhbHVl cy4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IENvdWxkIHlvdSBwbGVhc2UgY2xhcmlmeSBh IGJpdCB3aGF0IEJBU0UgbWVhbnM/Cj4gPiA+ID4gPiA+ID4gV2hhdCB3b3VsZCBiZSBhIGRpZmZl cmVudCBCQVNFPwo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IFRoZSBCQVNF IG51bWJlciBzdXBwb3J0cyBnZW5lcmFsIGJyYW5jaGluZyB0aGF0IHdvdWxkIGNhdXNlIHZlcnNp b24gbnVtYmVyCj4gPiA+ID4gPiA+IGNvbmZsaWN0cy4gQnJhbmNoaW5nIGZvciBmaXJtd2FyZSBy ZWxlYXNlcyBpcyBub3QgZGVzaXJhYmxlLCBidXQgaXQgaXMgYQo+ID4gPiA+ID4gPiBwcmFjdGlj YWwgcmVhbGl0eS4gVGhlcmVmb3JlIHRoZSB2ZXJzaW9uaW5nIHNjaGVtZSBtdXN0IGFjY29tb2Rh dGUgaXQuIExldCdzCj4gPiA+ID4gPiA+IHNheSB0aGF0IGEgaGlnaC1wcmlvcml0eSByZXF1ZXN0 IGlzIG1hZGUgdG8gcHV0IHNwZWNpZmljIHVwZGF0ZXMgb24gYW4gb2xkCj4gPiA+ID4gPiA+IHJl bGVhc2UgdGhhdCBzYWlkIGN1c3RvbWVyIGlzIGxvY2tlZCBvbi4gVGhvc2UgdXBkYXRlcyBjb3Vs ZCBpbmNsdWRlIGFueSBzb3J0Cj4gPiA+ID4gPiA+IG9mIGNoYW5nZSBpbmNsdWRpbmcgaW50ZXJm YWNlIGNoYW5nZS4gVGhlbiB3ZSBoYXZlIGEgc2VxdWVuY2UgbGlrZSBiZWxvdzoKPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gdjEuMS4wLjAgICB2MS4xLjAuMSAgIHYxLjEuMC4yICAgdjEuMS4wLjMg ICB2MS4xLjEuMAo+ID4gPiA+ID4gPiAtLS0tTy0tLS0tLS0tLS1PLS0tLS0tLS0tLU8tLS0tLS0t LS0tTy0tLS0tLS0tLS1PCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK PiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ID4gPiA+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE8tLS0tLS0tLS0tTwo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgIHYyLjEuMS4wICAgdjIuMS4xLjEKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gWW91IGNh biBzZWUgdGhhdCBpZiB3ZSBkb24ndCBoYXZlIGEgQkFTRSBudW1iZXIgdGhhdCBjaGFuZ2VzIGZy b20gMSB0byAyLCB0aGVuCj4gPiA+ID4gPiA+IHdlIGVuZCB1cCB3aXRoIGR1cGxpY2F0ZWQgdjEu MS4wIGFsb25nIHRoZSBkaWZmZXJlbnQgYnJhbmNoZXMgd2hpY2ggYXJlIG5vdCB0aGUKPiA+ID4g PiA+ID4gc2FtZS4gQXMgSSB3cm90ZSwgdGhpcyBzaG91bGQgYmUgYSB2ZXJ5IHJhcmUgc2NlbmFy aW8sIGJ1dCBpdCBjYW4gaGFwcGVuLiBNYXliZQo+ID4gPiA+ID4gPiB1cHN0cmVhbSB3aWxsIGFs d2F5cyBiZSBzdXBwbGllZCB3aXRoIHJlbGVhc2VzIGZyb20gdGhlICJtYWluIiBCQVNFLCBhbmQg eW91Cj4gPiA+ID4gPiA+IGNhbiBpZ25vcmUgdGhpcyBmaWVsZCwgYnV0IGl0IG5lZWRzIHRvIGJl IHRoZXJlIGZvciBvdGhlciBmaXJtd2FyZQo+ID4gPiA+ID4gPiBkaXN0cmlidXRpb25zLgo+ID4g PiA+IAo+ID4gPiA+IFRoZSB3YXkgdGhpcyBpcyB1c3VhbGx5IHNvbHZlZCBpbiBzZW12ZXIgaXMg dG8gbm90IHByZXBlbmQgYSBCQVNFLCBidXQKPiA+ID4gPiBwb3N0Zml4IGEgYnJhbmNoLXNwZWNp ZmljIHZlcnNpb24sIHdoaWxlIGtlZXBpbmcgdGhlIG1haW5saW5lIHZlcnNpb24KPiA+ID4gPiB1 bmNoYW5nZWQuIFNvCj4gPiA+ID4gCj4gPiA+ID4gdjIuMS4xLjAgYmVjb21lcyB2MS4xLjAuMS1i cmFuY2gxLTAKPiA+ID4gPiB2Mi4xLjEuMSBiZWNvbWVzIHYxLjEuMC4xLWJyYW5jaDEtMQo+ID4g Cj4gPiArMS4gVGhpcyB3b3VsZCBiZSBtdWNoIGNsZWFuZXIuCj4gPiAKPiA+IAo+ID4gPiA+IAo+ ID4gPiA+IFdpdGggdGhlIHJ1bGUgdGhhdCBicmFuY2hlcyBhcmUgZXhwbGljaXRseSB1bnNvcnRl ZCAodGhhdCdzIGRlbm90ZWQgYnkKPiA+ID4gPiB0aGUgLSAtIGFyb3VuZCB0aGVtLCBpbnN0ZWFk IG8gdXNpbmcgZG90cyksIHNvIG5vdCBjb21wYXJhYmxlLiBCb251cwo+ID4gPiA+IHBvaW50cyBp ZiB5b3UgbmFtZSB0aGUgYnJhbmNoIHBvaW50cyBieSB0aGUgY3VzdG9tZXJzIChjb3VsZCBiZSB0 aGUKPiA+ID4gPiBwcm9kdWN0LCBvciBpbnRlcm5hbCBjdXN0b21lciBncm91cCBvciB3aGF0ZXZl cikgdG8gbWFrZSB0aGVzZSBuYW1lcwo+ID4gPiA+IHNsaWdodGx5IG1vcmUgbWVhbmluZ2Z1bC4K PiA+IAo+ID4gKzEgZm9yIG1lYW5pbmdmdWwgbmFtZXMuCj4gPiAKPiA+ID4gPiAKPiA+ID4gSSBk b24ndCBzZWUgYW55IG1lbnRpb24gb2YgYnJhbmNoIGhhbmRsaW5nIG9uIHNlbXZlci5vcmcuCj4g PiAKPiA+IEFsc28gSSBkb24ndCBzZWUgYW4gZXh0cmEgZmllbGQgZm9yIGJhc2Ugb24gc2VtdmVy Lm9yZy4KPiA+IFNvIERhbmllbCBpcyBzaG93aW5nIGhvdyBpdCBpcyB1c3VhbGx5IHNvbHZlZCBv biBtYW55IExpbnV4IGRpc3Ryb3MKPiA+IGFuZCBwYWNrYWdlcyB3aXRob3V0IGNyZWF0aW5nIHRo aXMgY29tcGxleGl0eS4KPiA+IAo+ID4gPiBJdCBkaXNjdXNzZXMgdXNpbmcKPiA+ID4gaHlwaGVu IGZvciBwcmUtcmVsZWFzZSB2ZXJzaW9ucyBhbmQgcGx1cyBmb3IgbWV0YWRhdGEuIEFueSBvdGhl ciByZWZlcmVuY2VzCj4gPiA+IHlvdSBjYW4gc2hhcmUgd291bGQgYmUgYXBwcmVjaWF0ZWQuCj4g PiA+IAo+ID4gPiBXZSBjYW4gY2VydGFpbmx5IHVzZSBhbiBhcHByb2FjaCBsaWtlIHRoaXMsIHdo ZXJlIHRoZSBicmFuY2ggSUQgKGNoYW5nZWQgZnJvbQo+ID4gPiBCQVNFIElEKSBpcyBhcHBlbmRl ZCB2aWEgdGhlIGh5cGhlbiBvbmx5IGlmIG5lY2Vzc2FyeS4gV2Ugd291bGQgcHJvYmFibHkgc3Rp Y2sKPiA+ID4gd2l0aCBhIHNpbXBsZSBudW1lcmljYWwgYnJhbmNoIElEIHJhdGhlciB0aGFuIGEg c3RyaW5nLAo+ID4gCj4gPiBzbyBicmFuY2gxLCBicmFuY2gyLi4uIGF0IGxlYXN0IGl0IGdldHMg Y2xlYXIgZm9yIGV2ZXJ5b25lCj4gPiB0aGF0IHRoaXMgaXMgdGhlIGJyYW5jaCBhbmQgbm90IHRo ZSBtYWlubGluZSwgd2hpbGUgbWFpbmxpbmUga2VlcHMKPiA+IHRoZSBjbGVhbiBzZW12ZXIuCj4g PiAKPiA+ID4gc28gdGhhdCB0aGUgZnVsbAo+ID4gPiB2ZXJzaW9uIGVuY29kZWQgaW4gZmlybXdh cmUgaXMgY29tcGFjdC4gV2UgaGF2ZSA2NCBiaXRzIGN1cnJlbnRseSBhbGxvY2F0ZWQKPiA+ID4g Zm9yIHZlcnNpb24gaW5mbyBpbiB0aGUgQ1NTLiBXZSBjb3VsZCBkZWZpbmUgYW4gZW51bWVyYXRp b24gaW4gdGhlIGludGVyZmFjZQo+ID4gPiB0byBuYW1lIGVhY2ggSUQgbW9yZSB2ZXJib3NlbHku Cj4gPiAKPiA+IHNhdmUgb25lIGludCBmb3IgYnJhbmNoIG51bWJlci4gaWYgMCBpdCBpcyBtYWlu bGluZSBhbmQgZmlsZW5hbWUgZG9lc24ndAo+ID4gbmVlZCB0byBoYXZlIGFueSBzdHJpbmcsIG90 aGVyd2lzZSAtYnJhbmNoPGludD4uCj4gPiAKPiA+ID4gCj4gPiA+IEknbSBzdGlsbCBub3QgY2xl YXIgb24gaG93IHRoZSBtYWpvci5taW5vci5wYXRjaCBzaG91bGQgY2hhbmdlIGluIHRoaXMgbW9k ZWwKPiA+ID4gd2hlbiB0aGUgZmlyc3QgYW5kIHN1YnNlcXVlbnQgcmVsZWFzZXMgZnJvbSBhIGJy YW5jaCBhcmUgbWFkZS4gWW91ciBleGFtcGxlCj4gPiA+IHNlZW1zIHRvIGluZGljYXRlIHRoYXQg bWFqb3IubWlub3IucGF0Y2ggYXJlIGxvY2tlZCwgYW5kIGVhY2ggcmVsZWFzZSBmb3IKPiA+ID4g dGhlIGJyYW5jaCBnZXRzIG9uZSBpbmNyZW1lbnRlZCB2ZXJzaW9uIGF0IHRoZSBlbmQuIEkgd291 bGQgcHJlZmVyIHRoYXQgdGhlCj4gPiA+IG1ham9yLm1pbm9yLnBhdGNoIGNvbnRpbnVlIHRvIGV2 b2x2ZSBvbiB0aGUgYnJhbmNoIHBlciBub3JtYWwgY29udmVudGlvbiwgYnV0Cj4gPiA+IHRoZW4g dGhlIGJyYW5jaCBJRCB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZXJlIGlzIG5vIGdhdXJhbnRlZWQg cmVsYXRpb25zaGlwIHRvCj4gPiA+IGFueSBtYWpvci5taW5vci5wYXRjaCBvbiBhbm90aGVyIGJy YW5jaC4gU28gaW4gYmVsb3cgc2VxdWVuY2UgdGhlICIxIiBicmFuY2gKPiA+ID4gcmVzZXRzIHRv IHYxLjAuMCBmb3IgZmlyc3QgcmVsZWFzZSwgdGhlbiBuZXh0IHJlbGVhc2UgaXMgdjEuMS4wIGlm IGZvciBleGFtcGxlCj4gPiA+IGEgYmFja3dhcmRzIGNvbXBhdGlibGUgaW50ZXJmYWNlIGNoYW5n ZSBpcyBtYWRlLCBhbmQgc28gb24uIERvZXMgdGhhdCBzZWVtCj4gPiA+IHJlYXNvbmFibGU/Cj4g PiA+IAo+ID4gCj4gPiBJZiBJIHdhcyBvbmUgb2YgdGhlIHVzZXJzIG9mIGJyYW5jaGVkIHZlcnNp b25pbmcgSSdkIGxpa2UgdG8ga25vdyBob3cKPiA+IGl0IGNvbXBhcmVzIHdpdGggdGhlIG1haW5s aW5lLgo+ID4gCj4gPiBTbyBpZiBJIHJlY2lldmUgYSB2MS4wLjAuMSBJIHdvdWxkIGltZWRpYXRl bGx5IGFzc3VtZSB0aGlzIHdhcyBkZXJpdmF0ZWQKPiA+IGZyb20gMS4wLjAgaW5zdGVhZCBvZiAx LjAuMi4KPiA+IAo+IAo+IFNvIGFyZSB5b3Ugc2F5aW5nIHRoYXQgd2hlbiBicmFuY2hpbmcgZnJv bSBtYWlubGluZSB2MS4wLjIsIHRoZSBmaXJzdCByZWxlYXNlCj4gc2hvdWxkIHVzZSB2MS4wLjIt YnJhbmNoMT8gQnV0IHdoYXQgd291bGQgdGhlIHN1YnNlcXVlbnQgdmVyc2lvbnMgdXNlPyBJZiBJ Cj4gbG9jayB0aGUgdjEuMC4yIHBvcnRpb24gdG8gcHJlc2VydmUgYnJhbmNoLW9mZiBwb2ludCwg SSB3aWxsIG5lZWQgYSA1dGggZmllbGQKPiBqdXN0IHRvIG51bWJlciB0aGUgcmVsZWFzZXMgZnJv bSB0aGlzIGJyYW5jaCwgZS5nLiB2MS4wLjItYnJhbmNoMS0wLAo+IHYxLjAuMi1icmFuY2gxLTEs IGV0Yy4gSSBndWVzcyB0aGF0IGlzIHdoYXQgRGFuaWVsIHN1Z2dlc3RlZC4gQnV0IGlmIHRoZSBi cmFuY2gKPiBpcyBsb25nLWxpdmVkLCBJJ3ZlIG5vdyBsb3N0IHZpc2liaWxpdHkgaW50byB3aGF0 IHNvcnQgb2YgY2hhbmdlcyAoaW50ZXJmYWNlIG9yCj4gaW50ZXJuYWwpIGFyZSBnb2luZyBvbi4g SSBndWVzcyB0aGF0J3MgdGhlIHRyYWRlLW9mZi4KCgpZZWFoLCB0aGUgZGViaWFuIHZlcnNpb24g bnVtYmVyIGhlcmUgZG9lc24ndCB3b3JrIGlmIHlvdSBzdGFydCBkb2luZyBhYmkKY2hhbmdlcyBp biB5b3VyIGJyYW5jaC4gSWYgdGhhdCdzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHRoZW4gc2VtdmVy IGlzCnJlYWxseSBub3QgcG9zc2libGUsIHNpbmNlIHNlbXZlciBhc3N1bWVzIHRoZXJlJ3Mgb25s eSBvbmUgYnJhbmNoIHdoZXJlCmFiaSBjaGFuZ2VzIGhhcHBlbi4KCkFuZCB0aGUgZXBvY2g6IHBy ZWZpeCB0aGF0IGUuZy4gZGViaWFuIHVzZXMgaXMgYWxzbyBub3QgZm9yIGJyYW5jaGVzLgoKPiA+ ID4gIHYxLjAuMCAgICAgdjEuMC4xICAgICB2MS4wLjIgICAgIHYxLjAuMyAgICAgdjEuMS4wCj4g PiA+IC0tLS1PLS0tLS0tLS0tLU8tLS0tLS0tLS0tTy0tLS0tLS0tLS1PLS0tLS0tLS0tLU8KPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTy0tLS0tLS0tLS1PCj4gPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgdjEuMC4wLTEgICB2MS4xLjAtMQo+ID4gCj4gPiBGb3IgdGhlIHJlcGVu c2VudGF0aW9uIEkgdGhpbmcgdGhhdCBpbnRlcm5hbGx5IHlvdSBjYW4gc2F2ZSBvbmx5IG51bWJl cgo+ID4gb25lLCBidXQgd2hlbiBidWlsZGluZyBmaW5hbCBmaWxlIG5hbWUgZm9yIGRpc3RyaWJ1 dGlvbiB3ZSBzaG91bGQgcHJpbnQKPiA+IHYxLjAuMC1icmFuY2gxIC4uLi4gIHYxLjEuMC1icmFu Y2gxCj4gPiAKPiA+IG9yIGV2ZW4gYmV0dGVyIHdpdGggbWVhbmluZ2Z1bCBzdHJpbmdzIGluc3Rl YWQgb2YgYnJhbmNoCj4gPiBhcyBEYW5pZWwgc3VnZ2VzdGVkLgo+ID4gCj4gPiBtYXliZSBhbiBl eHRlcm5hbCBtYXBwaW5nIHRhYmxlIGZyb20gYnJhbmNoIG51bWJlcnMgdG8gY3VzdG9tZXIgc3Ry aW5ncz8KPiA+IAo+IAo+IEFncmVlZC4gVGhlIGNvbnZlbnRpb24gZm9yIG5hbWluZyB0aGUgZmly bXdhcmUgZmlsZSBmcm9tIHRoZSA0IGJhc2ljIG51bWVyaWMKPiBmaWVsZHMgaXMgY29tcGxldGVs eSB1cCB0byB0aGUgT1MgdGVhbS4gU28gMy40LjEtMywgMy40LjEtYnJhbmNoMywgb3IKPiAzLjQu MS1jdXN0b21lclggKHdoZXJlIGN1c3RvbWVyWCBtYXBzIHRvIGJyYW5jaCBpZCAzIHRocm91Z2gg c29tZSB0YWJsZSB0aGF0Cj4gZHJpdmVyIGtub3dzIGFib3V0KSBhcmUgYWxsIHZhbGlkIG9wdGlv bnMuIEkgdGhpbmsgdGhlIG1hcHBpbmcgdGFibGUgc2hvdWxkIGJlCj4gaW5jb3Jwb3JhdGVkIGlu dG8gdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc3BlYyBpbiBzb21lIGZhc2hpb24uCgpTbyBmcm9tIGEg cHJhY3RpY2FsIHBvaW50IG9mIHZpZXcsIGRvIHdlIGV2ZXIgZXhwZWN0IHRvIHN1cHBvcnQgYW55 dGhpbmcKZWxzZSBidXQgdGhlIG1haW4gYnJhbmNoIGluIHVwc3RyZWFtPwoKSWYgdGhhdCdzIHRo ZSBjYXNlIHRoZW4gSSB0aGluayB5b3VyIEJBU0UgdGhpbmcgaXMgb2ssIGFuZCB3ZSBqdXN0Cmhh cmQtY29kZSB0aGF0IGluIHVwc3RyZWFtIHRvIGEgZml4ZWQgdmFsdWUuIEZvciBhbnl0aGluZyBl bHNlIHRoZQpjdXN0b21lciBib3RoIG5lZWRzIGEgY3VzdG9tIGd1YyBmdywgYW5kIGEgY3VzdG9t IGk5MTUua28uCgpUaGlzIGlzIGFsbCBhc3N1bWluZyB0aGF0IHlvdSBhY3R1YWxseSB3YW50IHRv IGRvIGFiaSBjaGFuZ2VzIGluIHRoZXNlCmJyYW5jaGVzLCB3aGljaCByZWFsbHkgZG9lc24ndCBz b3VuZCBsaWtlIGEgZ29vZCBpZGVhIHRvIG1lLiBJZiBpdCdzIGp1c3QKdG8gZGVub3RlIGZ1bGx5 IGNvbXBhdGlibGUgcmVsZWFzZXMgd2l0aCBhIGJ1Z2ZpeCwgYnJhbmNoIG9mIGZyb20gc29tZQpv dGhlciByZWxlYXNlLCB0aGVuIGFkZGluZyBtb3JlIG51bWJlcnMgYXQgdGhlIGVuZCBpcyB0aGUg d2F5IHRvIGdvIChhbmQKc3RheSB3aXRoaW4gdXN1YWwgdmVyc2lvbmluZyBzZW1hbnRpY3MpLiBU aGF0J3MgdGhlIHYxLjAuMC0xIGFib3ZlLgoKQ2hlZXJzLCBEYW5pZWwKCj4gLUplZmYKPiAKPiA+ IFRoYW5rcywKPiA+IFJvZHJpZ28uCj4gPiAKPiA+ID4gCj4gPiA+IC1KZWZmCj4gPiA+IAo+ID4g PiA+IFByZWZpeGluZyBhIEJBU0UsIHdpdGggYSBkb3QsIGlzIHZlcnkgbXVjaCBub3QgaG93IGl0 J3MgZG9uZSBhbmQgdmVyeQo+ID4gPiA+IGNvbmZ1c2luZy4gVGhlcmUncyBvbmUgdGhpbmcgZGVi aWFuIGRvZXMsIGl0J3MgcHJlcGVuZGluZyBhbiBFUE9DSCwKPiA+ID4gPiB3aGljaCBpcyB1c2Vk IGZvciBlLmcuIEMrKyBwYWNrYWdlcyB3aGVuIHRoZSBjb21waWxlciBhYmkgY2hhbmdlcy4gSQo+ ID4gPiA+IHRoaW5rIHJlYWRpbmcgdXAgb24gZGViaWFuJ3MgcnVsZXMgd291bGQgYmUgZ29vZCBp bnNwaXJhdGlvbiBmb3IgdGhpcwo+ID4gPiA+IHByb2JsZW06Cj4gPiA+ID4gCj4gPiA+ID4gaHR0 cHM6Ly9zZXJ2ZXJmYXVsdC5jb20vcXVlc3Rpb25zLzYwNDU0MS9kZWJpYW4tcGFja2FnZXMtdmVy c2lvbi1jb252ZW50aW9uCj4gPiA+ID4gCj4gPiA+ID4gQ2hlZXJzLCBEYW5pZWwKPiA+ID4gPiAK PiA+ID4gPiA+ID4gLUplZmYKPiA+ID4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBTb3JyeSwg SSBtaXNyZXByZXNlbnRlZCBob3cgdG8gdGhlIG51bWJlcnMgd291bGQgY2hhbmdlIGluIHRoZSBh Ym92ZSBleGFtcGxlLgo+ID4gPiA+ID4gVGhlIGNoYW5nZSBvZiBCQVNFIGZyb20gMSB0byAyIHdv dWxkIHJlc2V0IE1BSk9SLk1JTk9SLlBBVENILiBTbyB0aGUgc2VxdWVuY2UKPiA+ID4gPiA+IHNo b3VsZCBiZSB2MS4xLjAuMiAtPiB2Mi4xLjAuMCAtPiB2Mi4xLjAuMSBhbmQgc28gb24uCj4gPiA+ ID4gPgo+ID4gPiA+ID4gSWYgd2UgZG9uJ3QgaGF2ZSBCQVNFLCB0aGUgcHVyZSBzZW12ZXIub3Jn IHNlcXVlbmNlIHdvdWxkIGJlOgo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgdjEuMC4wICAgICB2MS4w LjEgICAgIHYxLjAuMiAgICAgdjEuMC4zICAgICB2MS4xLjAKPiA+ID4gPiA+IC0tLS1PLS0tLS0t LS0tLU8tLS0tLS0tLS0tTy0tLS0tLS0tLS1PLS0tLS0tLS0tLU8KPiA+ID4gPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ID4gPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8tLS0tLS0tLS0tTwo+ID4gPiA+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHYxLjEuMCAgICAgdjEuMS4xCj4gPiA+ID4gPgo+ID4gPiA+ ID4gQW5kIHNvIHlvdSBzZWUgdGhlIGR1cGxpY2F0aW9uIG9mIHZlcnNpb24gbnVtYmVyLgo+ID4g PiA+ID4gLSBKZWZmCj4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IFRo ZSBNQUpPUiBudW1iZXIgY29uZm9ybXMgdG8gdGhlIG1ham9yIGluIHNlbXZlci5vcmcuIEl0IGlu Y3JlbWVudHMgb24gYQo+ID4gPiA+ID4gPiA+ID4gYmFja3dhcmRzIGluY29tcGF0aWJsZSBjaGFu Z2Ugb2YgdGhlIGludGVyZmFjZS4gSXQgcmVzZXRzIHRvIDEgb24gYSBjaGFuZ2Ugb2YKPiA+ID4g PiA+ID4gPiA+IEJBU0UuIFRoZSBNQUpPUiBudW1iZXIgYmFzaWNhbGx5IHdvcmtzIHRoZSBzYW1l IGJldHdlZW4gdGhlIGN1cnJlbnQgYW5kCj4gPiA+ID4gPiA+ID4gPiBwcm9wb3NlZCB2ZXJzaW9u aW5nIHNjaGVtZXMuCj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gVGhlIE1JTk9SIG51 bWJlciBjb25mb3JtcyB0byB0aGUgbWlub3IgaW4gc2VtdmVyLm9yZy4gSXQgaW5jcmVtZW50cyBv biBhCj4gPiA+ID4gPiA+ID4gPiBiYWNrd2FyZHMgY29tcGF0aWJsZSBjaGFuZ2Ugb2YgdGhlIGlu dGVyZmFjZSAobmV3IGludGVyZmFjZXMgdGhhdCBhcmUgb3B0aW9uYWwKPiA+ID4gPiA+ID4gPiA+ IHRvIHVzZSkuIEl0IHdpbGwgYWxzbyBpbmNyZW1lbnQgb24gc3Vic3RhbnRpYWwgbmV3IGludGVy bmFsIGZ1bmN0aW9uYWxpdHkgdGhhdAo+ID4gPiA+ID4gPiA+ID4gZG9lc24ndCBhZmZlY3QgdGhl IGludGVyZmFjZSBidXQgc2hvdWxkIGJlIGNhbGxlZCBvdXQgdG8gdGhlIHVzZXIuIEl0IHJlc2V0 cyB0bwo+ID4gPiA+ID4gPiA+ID4gMCBvbiBhIGNoYW5nZSBvZiBNQUpPUi4gVGhlIE1JTk9SIG51 bWJlciBpbiB0aGUgY3VycmVudCB2ZXJzaW9uaW5nIHNjaGVtZQo+ID4gPiA+ID4gPiA+ID4gaW5j cmVtZW50cyBvbiBhbnkgYmFja3dhcmRzIGNvbXBhdGlibGUgY2hhbmdlLiBUaGUgcHJvcG9zZWQg dmVyc2lvbmluZyBzY2hlbWUKPiA+ID4gPiA+ID4gPiA+IGJyZWFrcyB0aGlzIGludG8gdGhlIE1J Tk9SIG51bWJlciBqdXN0IGRlc2NyaWJlZCBhbmQgdGhlIFBBVENIIG51bWJlciBiZWxvdy4KPiA+ ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBUaGUgUEFUQ0ggbnVtYmVyIGNvbmZvcm1zIHRv IHRoZSBwYXRjaCBpbiBzZW12ZXIub3JnLiBJdCBpbmNyZW1lbnRzIG9uIGEKPiA+ID4gPiA+ID4g PiA+IGJhY2t3YXJkcyBjb21wYXRpYmxlIGludGVybmFsIGNoYW5nZSwgdXN1YWxseSBhIGJ1ZyBm aXguIEl0IHJlc2V0cyB0byAwIG9uIGEKPiA+ID4gPiA+ID4gPiA+IGNoYW5nZSBvZiBNSU5PUi4K PiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IEkgbGlrZSB0aGUgaWRlYSBvZiBNQUpPUi5NSU5P Ui5QQVRDSCBmb2xsb3dpbmcgc2VtdmVyLm9yZy4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ IEkgdGhpbmsgaWYgd2UgcmVtb3ZlIHRoZSBCQVNFIG91dCBvZiBwaWN0dXJlIGFuZCBqdXN0IHVz ZSBzZW12ZXIgY2xlYXIsCj4gPiA+ID4gPiA+ID4gYnV0IG1heWJlIGl0IGlzIGp1c3QgYmVjYXVz ZSBJIGRpZG4ndCBxdWl0ZSB1bmRlcnN0YW5kIEJBU0UuCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBUaGUgTUFKT1IuTUlOT1IgY29sbGVjdGl2ZWx5IGRlZmlu ZSB0aGUgaW50ZXJmYWNlIHZlcnNpb24uIEJlY2F1c2UgdGhlIE1JTk9SCj4gPiA+ID4gPiA+ID4g PiBtYXkgYWxzbyBpbmNyZW1lbnQgb24gYSBzdWJzdGFudGlhbCBpbnRlcm5hbCBjaGFuZ2UsIGl0 IGRvZXNuJ3QgYWx3YXlzIG1hcmsgYW4KPiA+ID4gPiA+ID4gPiA+IGludGVyZmFjZSBjaGFuZ2Us IGUuZy4gNC41IGFuZCA0LjYgbWF5IGhhdmUgaWRlbnRpY2FsIGludGVyZmFjZXMuIEJ1dCB0aGUK PiA+ID4gPiA+ID4gPiA+IGRldGVybWluYXRpb24gb2YgaW50ZXJmYWNlIGNvbXBhdGliaWxpdHkg aXMgdW5jaGFuZ2VkLCBlLmcuIDQuNiBpcyBhbHdheXMKPiA+ID4gPiA+ID4gPiA+IGJhY2t3YXJk cyBjb21wYXRpYmxlIHdpdGggNC41Lgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IEVh Y2ggTUFKT1IuTUlOT1IgbWF5IGNvbnRpbnVlIHRvIHJlY2VpdmUgaW50ZXJuYWwgZml4ZXMgYWxv bmcgYSBicmFuY2ggZXZlbgo+ID4gPiA+ID4gPiA+ID4gYWZ0ZXIgdGhlIG1haW4gYnJhbmNoIGZv ciB0aGF0IEJBU0UgaGFzIG1vdmVkIG9uIHRvIGFub3RoZXIgTUFKT1IuTUlOT1IuCj4gPiA+ID4g PiA+ID4gPiBSZWxlYXNlcyBmcm9tIHRoZXNlIGZpeC1vbmx5IGJyYW5jaGVzIGluY3JlbWVudCBv bmx5IHRoZSBQQVRDSCBudW1iZXIgb24gdGhhdAo+ID4gPiA+ID4gPiA+ID4gTUFKT1IuTUlOT1Is IGFuZCB0aGVyZWZvcmUgcmVtYWluIHNlbWFudGljYWxseSBjb25zaXN0ZW50IHdpdGggdGhlIG1h aW4gYnJhbmNoLgo+ID4gPiA+ID4gPiA+ID4gTm8gY2hhbmdlIG9mIEJBU0UgaXMgdGhlcmVmb3Jl IG5lZWRlZC4gQ29uc2lkZXIgYW4gZXhhbXBsZToKPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gPiB2MS4xLjAuMCAgIHYxLjEuMC4xICAgdjEuMS4wLjIgICB2MS4xLjEuMCAgIHYxLjEuMS4x Cj4gPiA+ID4gPiA+ID4gPiAtLS0tTy0tLS0tLS0tLS1PLS0tLS0tLS0tLU8tLS0tLS0tLS0tTy0t LS0tLS0tLS1PICAgIDwtLSBtYWluIGFkb3B0cyB2MS4xLjEueAo+ID4gPiA+ID4gPiA+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAo+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTy0tLS0t LS0tLS1PICAgICA8LS0gZml4ZXMgZm9yIGludGVyZmFjZSB2MS4xLjAueAo+ID4gPiA+ID4gPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICB2MS4xLjAuMyAgIHYxLjEuMC40Cj4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiBUaGlzIGFwcHJvYWNoIGlzIGNvb2wgYW5kIG1vcmUgb3IgbGVz cyBob3cgTWVzYSBoYW5kbGVzIHRoZWlyIHJlbGVhc2VzLAo+ID4gPiA+ID4gPiA+IGV4Y2VwdCBi eSB0aGUgZmFjdCB0aGF0IHRoZWlyIE1ham9yIGlzIHRoZSB5ZWFyIGFuZCBtaW5vciBpcyB0aGUg bW9udGguCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBIb3dldmVyLCBvbiB0aGUgZmlybXdh cmUgc2lkZSBJIGhhdmUgYSBjb25jZXJuIGJlY2F1c2Ugd2UgYXJlIHNvIGZhciB0cnlpbmcKPiA+ ID4gPiA+ID4gPiB0byBtYWtlIHN1cmUgdGhhdCB3ZSBoYXZlIDEtMSByZWxhdGlvbnNoaXAgb24g a2VybmVsLWZpcm13YXJlIHZlcnNpb24uCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBCdXQg YmFzZWQgb24gdGhpcyB2aWV3IGFuZCB3aGF0IEFudXNoYSB0b2xkIG1lIHllc3RlcmRheSBpdCBz ZWVtcwo+ID4gPiA+ID4gPiA+IHRoYXQgR3VDIGlzIGdldHRpbmcgY29uc3RhbnQgcmVsZWFzZXMu IFdpdGggdGhlIGNvbnN0YW50IHBhdGNoZXMgd2Ugd2lsbAo+ID4gPiA+ID4gPiA+IHNvb24gZXhw bG9kZSBsaW51eC1maXJtd2FyZS5naXQgcmVwb3NpdG9yeSBzaXplLgo+ID4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+ID4gQnV0IHRoaXMgbWF5YmUgaXMgc29tZXRoaW5nIHRvIGJlIHNvbHZlZCBvbiBs aW51eC1maXJtd2FyZSBzaWRlIGFuZCB3ZSBtYWtlCj4gPiA+ID4gPiA+ID4gc3VyZSB0aGF0IHdl IGNsZWFuIHVwIGFuZCByZW1vdmUgZmlybXdhcmUgdGhhdCB3ZXJlIG5ldmVyIHJlbGVhc2VkIGlu IGFueQo+ID4gPiA+ID4gPiA+IG9mZmljaWFsIExpbnV4IGtlcm5lbC4gQW51c2hhIG9yIEFudG9u aW8sIHRob3VnaHRzPwo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gVGhhbmtzLAo+ID4gPiA+ ID4gPiA+IFJvZHJpZ28uCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gSSBl eHBlY3QgdGhhdCBpOTE1IHdpbGwgc3RpbGwgcmVxdWlyZSBhIHNpbmdsZSB2ZXJzaW9uIG9mIGZp cm13YXJlIHBlciBwbGF0Zm9ybQo+ID4gPiA+ID4gPiBhcyBpdCBkb2VzIHRvZGF5LiBUaGlzIGNo YW5nZSBzaG91bGQgbm90IGltcGFjdCB0aGF0IG90aGVyIHRoYW4gdG8gcmVxdWlyZSBpOTE1Cj4g PiA+ID4gPiA+IHRvIGNoZWNrIDQgbnVtYmVycyBpbnN0ZWFkIG9mIDIuCj4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+IEl0IGlzIHRydWUgdGhhdCBmaXJtd2FyZSByZWxlYXNlcyBhcmUgbWFkZSAqaW50 ZXJuYWxseSogKGZyb20gdGhlIGZpcm13YXJlCj4gPiA+ID4gPiA+IHRlYW0gdG8gdGhlIG9wZXJh dGluZyBzeXN0ZW0gdGVhbXMpIGF0IGEgZnJlcXVlbnQgcmF0ZS4gSXQgaXMgdXAgdG8gZWFjaCBP Uwo+ID4gPiA+ID4gPiB0ZWFtIHRvIGRlY2lkZSB0aGVpciBvd24gY2FkZW5jZSBmb3IgaW50ZWdy YXRpbmcgYW5kIGRpc3RyaWJ1dGluZyB0aG9zZQo+ID4gPiA+ID4gPiBmaXJtd2FyZSBiYXNlZCBv biB0aGVpciB1bmlxdWUgc2l0dWF0aW9uLiBTbyB0aGUgTGludXggdGVhbSBtYXkgZmlsdGVyIHRo ZXNlCj4gPiA+ID4gPiA+IHJlbGVhc2VzIGFuZCB1cGRhdGUgdGhlIHVwc3RyZWFtIG11Y2ggbGVz cyBmcmVxdWVudGx5Lgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ IFRoZXJlIGlzIG5vIG5lZWQgdG8gY2hhbmdlIHRoZSBCQVNFIGJlY2F1c2UgdGhlIGJyYW5jaGlu ZyBoYXBwZW5lZCBmcm9tIHRoZQo+ID4gPiA+ID4gPiA+ID4gbGFzdCBmaXggKHYxLjEuMC4yKSBv biB0aGUgbWFpbiBicmFuY2ggcHJpb3IgdG8gdGhlIGNoYW5nZSBvZiBpbnRlcmZhY2UKPiA+ID4g PiA+ID4gPiA+ICh2MS4xLjEuMCkuIEFzIGxvbmcgYXMgb25seSBmaXhlcyBhcmUgYXBwbGllZCB0 byB2MS4xLjAueCwgdGhlcmUgaXMgbm8gcmlzayBvZgo+ID4gPiA+ID4gPiA+ID4gdmVyc2lvbiBu dW1iZXIgY2xhc2guIEFsbCBvZiB0aGVzZSByZWxlYXNlIHZlcnNpb25zIHJlbWFpbiBzZW1hbnRp Y2FsbHkKPiA+ID4gPiA+ID4gPiA+IGNvbm5lY3RlZCB3aXRoIG9uZSBzbWFsbCBjYXZlYXQuIElm IHRoaXMgc2V0IG9mIHJlbGVhc2UgdmVyc2lvbnMgY2FtZQo+ID4gPiA+ID4gPiA+ID4gc2VxdWVu dGlhbGx5IGFsb25nIGEgc2luZ2xlIGJyYW5jaCwgb25lIGNvdWxkIGluZmVyIHRoYXQgdGhlIGV4 YWN0IGZpeGVzIGluCj4gPiA+ID4gPiA+ID4gPiB2MS4xLjAuNCB3ZXJlIGluaGVyaXRlZCBieSB2 MS4xLjEuMC4gV2l0aCB0aGlzICJoaWRkZW4iIGJyYW5jaGluZywgdGhpcyBtYXkKPiA+ID4gPiA+ ID4gPiA+IG5vdCBiZSB0cnVlIGFzIGluIHRoaXMgZXhhbXBsZS4gT25lIHdvdWxkIG5lZWQgdG8g cmV2aWV3IHRoZSB2MS4xLjEuMCByZWxlYXNlCj4gPiA+ID4gPiA+ID4gPiBub3RlcyB0byBjaGVj ay4KPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBQbGVhc2UgcHJvdmlkZSBhbnkgZmVl ZGJhY2sgb24gdGhlIHByb3Bvc2VkIGNoYW5nZS4KPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gPiBUaGFua3MsCj4gPiA+ID4gPiA+ID4gPiBKZWZmCj4gPiA+ID4gPiA+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiA+ID4gPiA+IEludGVsLWdm eCBtYWlsaW5nIGxpc3QKPiA+ID4gPiA+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+ID4gPiA+ID4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo+ID4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiA+ID4gPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+ID4gPiA+ IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ID4gPiA+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gPiA+ID4gCj4gPiA+ ID4gCj4gPiA+ID4gCj4gPiA+ID4gLS0gCj4gPiA+ID4gRGFuaWVsIFZldHRlcgo+ID4gPiA+IFNv ZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gPiA+ICs0MSAoMCkgNzkgMzY1 IDU3IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJl IEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK