From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH 3/6] drm/i915/huc: Add HuC fw loading support Date: Fri, 15 Jul 2016 08:33:06 +0100 Message-ID: <578891B2.7080904@intel.com> References: <1466532685-5101-1-git-send-email-peter.antoine@intel.com> <1466532685-5101-4-git-send-email-peter.antoine@intel.com> <20160622083148.GO23520@phenom.ffwll.local> <576BB679.5090807@intel.com> <20160713124810.GO23520@phenom.ffwll.local> <57879CE9.6010401@intel.com> <20160714142618.GC17101@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 82C946E949 for ; Fri, 15 Jul 2016 07:33:13 +0000 (UTC) In-Reply-To: <20160714142618.GC17101@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: lawrence.t.li@intel.com, sean.v.kelley@intel.com, intel-gfx@lists.freedesktop.org, rodrigo.vivi@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gMTQvMDcvMTYgMTU6MjYsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gVGh1LCBKdWwgMTQs IDIwMTYgYXQgMDM6MDg6NDFQTSArMDEwMCwgRGF2ZSBHb3Jkb24gd3JvdGU6Cj4+IE9uIDEzLzA3 LzE2IDEzOjQ4LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4gT24gVGh1LCBKdW4gMjMsIDIwMTYg YXQgMDI6NTI6NDFQTSArMDEwMCwgUGV0ZXIgQW50b2luZSB3cm90ZToKPj4+PiBPbiBUaHUsIDIz IEp1biAyMDE2LCBEYXZlIEdvcmRvbiB3cm90ZToKPj4+Pj4gT24gMjIvMDYvMTYgMDk6MzEsIERh bmllbCBWZXR0ZXIgd3JvdGU6Cj4+Pj4+IE5vLCB0aGUgKmNvcnJlY3QqIGZpeCBpcyB0byB1bmlm eSBhbGwgdGhlIGZpcm13YXJlIGxvYWRlcnMgd2UgaGF2ZS4KPj4+Pj4gVGhlcmUgc2hvdWxkIGp1 c3QgYmUgT05FIHBpZWNlIG9mIGNvZGUgdGhhdCBjYW4gYmUgdXNlZCB0byBmZXRjaCBhbmQKPj4+ Pj4gbG9hZCBBTnkgZmlybXdhcmUgaW50byBBTlkgYXV4aWxpYXJ5IG1pY3JvY29udHJvbGxlci4g Tk9UIG9uZSBwZXIKPj4+Pj4gbWljcm9jb250cm9sbGVyLCBhbGwgZGlmZmVyZW50IC0tIHRoYXQg d2F5IGxpZXMgbWFkbmVzcy4KPj4+Pj4KPj4+Pj4gV2UgYWxyZWFkeSBoYWQgYSB1bmlmaWVkIGxv YWRlciBmb3IgdGhlIEh1QyBhbmQgR3VDIGEgeWVhciBhZ28sIGJ1dCBJSVJDCj4+Pj4+IHRoZSBw YXJ0eSBsaW5lIHRoZW4gd2FzICJqdXN0IG1ha2UgaXQgKEd1Qykgc3BlY2lmaWMsIHRoZW4gY29w eXBhc3RlIGl0Cj4+Pj4+IGZvciB0aGUgc2Vjb25kIHVDLCBhbmQgd2hlbiB3ZSd2ZSBnb3QgdGhy ZWUgdmVyc2lvbnMgd2UnbGwgaGF2ZSBsZWFybnQKPj4+Pj4gaG93IHdlIHJlYWxseSB3YW50IGEg dW5pZmllZCBsb2FkZXIgdG8gYmVoYXZlLiIKPj4+Pj4KPj4+Pj4gV2VsbC4gaGVyZSdzIHRoZSBj b3B5cGFzdGUsIGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSBkaWZmZXJlbnQgbG9hZGVyIGZvcgo+Pj4+ PiB0aGUgRE1DL0NTUiwgc28gaXQgbXVzdCBiZSB0aW1lIGZvciAocmUtKXVuaWZpY2F0aW9uLgo+ Pj4+Pgo+Pj4+PiAuRGF2ZS4KPj4+Pgo+Pj4+IEp1c3QgdG8gYWRkLCBpZiB5b3UgdWNfZndfZmV0 Y2goKSBoYXMgYW4gZXJyb3IgY29kZSB5b3Ugd2lsbCBzdGlsbCBoYXZlIHRvCj4+Pj4gcmVtZW1i ZXIgdGhlIHN0YXRlIG9mIHRoZSBmZXRjaCBvciBhdCBlYWNoIHJlc2V0L3Jlc3VtZS9ldGMuLi4g b3IgeW91IHdpbGwKPj4+PiBoYXZlIHRvIHRyeSB0aGUgZmlybXdhcmUgbG9hZCBhZ2FpbiBhbmQg dGhhdCBjYW4gdGFrZSBhIGxvbmcgdGltZS4gU28gdGhlCj4+Pj4gc3RhdGUgd2lsbCBoYXZlIHRv IGJlIHJlLWluc3RhdGVkLgo+Pj4+Cj4+Pj4gU2VlaW5nIHRoaXMgY29kZSB3YXMgd3JpdHRlbiB3 aXRoIHRoZSBnaXZlbiBnb2FscyBhbmQgd2VyZSB3cml0dGVuIGluIHRoZQo+Pj4+IHNhbWUgdmFu ZSBhcyBjb2RlIHRoYXQgd2FzIGRlZW1lZCBhY2NlcHRhYmxlLCBpdCBzZWVtcyB3ZWlyZCBhdCB0 aGlzIGxhdGUKPj4+PiBzdGFnZSB0byBjaGFuZ2UgdGhlIGRlc2lnbiBnb2Fscy4KPj4+Pgo+Pj4+ IE5vdGU6IHRoaXMgaXMgdGhlIHRoaXJkIHRpbWUgdGhhdCB0aGVzZSBwYXRjaGVzIGhhdmUgYmVl biBwb3N0ZWQgYW5kIHdlcmUKPj4+PiBvbmx5IHJlamVjdGVkIChhcyBmYXIgYXMgSSBrbm93KSBk dWUgdG8gbm8gb3Blbi1zb3VyY2UgdXNlci4gV2hpY2ggdGhlcmUgaXMKPj4+PiBub3csIGFuZCBp cyB3aHkgSSBoYXZlIHJlcG9zdGVkIHRoZXNlIHBhdGNoZXMuCj4+Pgo+Pj4gSSBuZXZlciBsaWtl ZCB0aGUgZ3VjIGZpcm13YXJlIGNvZGUsIGJ1dCBmaWd1cmUgZm9yIG9uZSBjb3B5IGl0J3Mgbm90 Cj4+PiB3b3J0aCBmaWdodGluZyBvdmVyLiBBZGRpbmcgbW9yZSBjb3BpZXMgKG9yIHBlcnBldHVh dGluZyB0aGUgZGVzaWduIGJ5Cj4+PiBtYWtpbmcgaXQgZ2VuZXJpYykgaXNuJ3Qgd2hhdCBJJ20g bG9va2luZyBmb3IuCj4+Cj4+ICpZb3UqIGFza2VkIGZvciBtb3JlIGNvcGllcywgYmFjayB3aGVu IHdlIHByb3Bvc2VkIGEgc2luZ2xlIHVuaWZpZWQgc29sdXRpb24KPj4gbGFzdCB5ZWFyLiBXZSBh bHJlYWR5IGhhZCBhICpzaW5nbGUqIEd1QytIdUMgbG9hZGVyIHdoaWNoIGNvdWxkIGFsc28gaGF2 ZQo+PiBiZWVuIGV4dGVuZGVkIHRvIHN1cHBvcnQgdGhlIERNQyBhcyB3ZWxsLCBidXQgYXQgdGhl IHRpbWUgeW91IHdhbnRlZCBhCj4+IEd1Qy1zcGVjaWZpYyB2ZXJzaW9uIC0tIGFuZCBieSBpbXBs aWNhdGlvbiwgYSBzZXBhcmF0ZSBIdUMgbG9hZGVyIC0tICppbgo+PiBhZGRpdGlvbiB0byogdGhl IERNQyBsb2FkZXIuCj4+Cj4+PiBGaXJtd2FyZSBsb2FkaW5nIHNob3VsZG4ndCBiZSB0aGF0IGNv bXBsaWNhdGVkLCByZWFsbHkuCj4+Cj4+IE1heWJlIGl0IHNob3VsZG4ndCBiZSwgYW5kIG1heWJl IGl0IGlzbid0IC0tIHlvdSBtYXkgbm90IGJlIHNlZWluZyBob3cKPj4gc2ltcGxlIHRoaXMgY29k ZSBhY3R1YWxseSBpcy4gRmV0Y2ggZmlybXdhcmUsIHZhbGlkYXRlIGl0LCBzYXZlIGl0IGluIGEg R0VNCj4+IG9iamVjdDsgbGF0ZXIsIERNQSBpdCB0byB0aGUgaC93OyBhdCBlYWNoIHN0YWdlIGtl ZXAgdHJhY2sgb2Ygc3RhdHVzIHNvIHdlCj4+IGtub3cgd2hhdCBoYXMgYmVlbiBkb25lIGFuZCB3 aGF0IGlzIHN0aWxsIHRvIGRvIChvciByZWRvLCBkdXJpbmcgcmVzZXQpLgo+Pgo+PiBBbnkgY29t cGxpY2F0aW9ucyBhcmUgYmVjYXVzZSB0aGUgaC93IChlLmcuIHdyaXRlLW9uY2UgbWVtb3J5KSBt YWtlcyB0aGVtCj4+IG5lY2Vzc2FyeSwgb3IgYXJ0ZWZhY3RzIG9mIHRoZSBHRU0gb2JqZWN0IHN5 c3RlbSwgb3IgYmVjYXVzZSBvZiB0aGUgZHJpdmVyJ3MKPj4gYnl6YW50aW5lIHNlcXVlbmNlIG9m IG9wZXJhdGlvbnMgZHVyaW5nIGxvYWQvcmVzZXQvc3VzcGVuZC9yZXN1bWUvdW5sb2FkLgo+Pgo+ Pj4gVGhlIHVuaWZpZWQgZmlybXdhcmUgbG9hZGVyIGlzIGNhbGxlZCByZXF1ZXN0X2Zpcm13YXJl LiBJZiB0aGF0J3Mgbm90IGdvb2QKPj4+IGVub3VnaCwgcGxzIGZpeCB0aGUgY29yZSBmdW5jdGlv biwgbm90IHBhcGVyIGNvZGUgb3ZlciBpbiBpOTE1Lgo+Pgo+PiBUaGF0J3MgZXhhY3RseSB0aGUg ZnVuY3Rpb24gd2UgY2FsbC4gVGhlbiB3ZSBoYXZlIHRvIHZhbGlkYXRlIGFuZCBzYXZlIHRoZQo+ PiBibG9iLiBBbmQgcmVtZW1iZXIgdGhhdCB3ZSd2ZSBkb25lIHNvLgo+Pgo+Pj4gSW4gdGhhdCBy ZWdhcmQgRE1DL0NTUiBpcyB1bmlmaWVkLCBldmVyeXRoaW5nIGVsc2UgaXNuJ3QgeWV0Lgo+Pgo+ PiBVbmlmaWVkIHdpdGggd2hhdD8gTWF5YmUgdGhlICJETUMiIGlzIHVuaWZpZWQgd2l0aCB0aGUg IkNTUiIgLS0gd2hpY2ggQUZBSUsKPj4gYXJlIHRoZSBzYW1lIHRoaW5nIC0tIGFuZCB0aGUgc29m dHdhcmUganVzdCByYW5kb21seSB1c2VzIGJvdGggbmFtZXMgdG8KPj4gbWF4aW1pc2UgY29uZnVz aW9uPwo+Pgo+PiAJaWYgKEhBU19DU1IoZGV2KSkgewo+PiAJCXN0cnVjdCBpbnRlbF9jc3IgKmNz ciA9ICZkZXZfcHJpdi0+Y3NyOwo+Pgo+PiAJCWVycl9wcmludGYobSwgIkRNQyBsb2FkZWQ6ICVz XG4iLAo+PiAJCQkgICB5ZXNubyhjc3ItPmRtY19wYXlsb2FkICE9IE5VTEwpKTsKPj4gCQllcnJf cHJpbnRmKG0sICJETUMgZncgdmVyc2lvbjogJWQuJWRcbiIsCj4+IAkJCSAgIENTUl9WRVJTSU9O X01BSk9SKGNzci0+dmVyc2lvbiksCj4+IAkJCSAgIENTUl9WRVJTSU9OX01JTk9SKGNzci0+dmVy c2lvbikpOwo+PiAJfQo+PiAuLi4KPj4gCWlmICghSVNfR0VOOShkZXZfcHJpdikpIHsKPj4gCQlE Uk1fRVJST1IoIk5vIENTUiBzdXBwb3J0IGF2YWlsYWJsZSBmb3IgdGhpcyBwbGF0Zm9ybVxuIik7 Cj4+IAkJcmV0dXJuOwo+PiAJfQo+PiAJaWYgKCFkZXZfcHJpdi0+Y3NyLmRtY19wYXlsb2FkKSB7 Cj4+IAkJRFJNX0VSUk9SKCJUcmllZCB0byBwcm9ncmFtIENTUiB3aXRoIGVtcHR5IHBheWxvYWRc biIpOwo+PiAJCXJldHVybjsKPj4gCX0KPj4KPj4gQW5kIGFjY29yZGluZyB0byB0aGUgY29tbWVu dHMgaW4gaW50ZWxfY3NyLmMgLS0gYnV0IG5vdCB0aGUgY29kZSAtLQo+Pgo+PiAvKgo+PiAgICog RmlybXdhcmUgbG9hZGluZyBzdGF0dXMgd2lsbCBiZSBvbmUgb2YgdGhlIGJlbG93IHN0YXRlczoK Pj4gICAqIEZXX1VOSU5JVElBTElaRUQsIEZXX0xPQURFRCwgRldfRkFJTEVELgo+PiAgICoKPj4g ICAqIE9uY2UgdGhlIGZpcm13YXJlIGlzIHdyaXR0ZW4gaW50byB0aGUgcmVnaXN0ZXJzIHN0YXR1 cyB3aWxsCj4+ICAgKiBiZSBtb3ZlZCBmcm9tIEZXX1VOSU5JVElBTElaRUQgdG8gRldfTE9BREVE IGFuZCBmb3IgYW55Cj4+ICAgKiBlcnJvbmVvdXMgY29uZGl0aW9uIHN0YXR1cyB3aWxsIGJlIG1v dmVkIHRvIEZXX0ZBSUxFRC4KPj4gICAqLwo+Pgo+PiBTbyBJIGRvbid0IHRoaW5rIHlvdSBzaG91 bGQgaG9sZCB0aGlzIGNvZGUgdXAgYXMgYSBtYXN0ZXJwaWVjZSBvZiAidW5pZmllZCIKPj4gZGVz aWduIC0tIHdoaWNoIGluIGFueSBjYXNlIHlvdSBhcmd1ZWQgYWdhaW5zdCBsYXN0IHllYXIsIHdo ZW4gd2UgcHJlc2VudGVkCj4+IGEgdW5pZmllZCBsb2FkZXIuIFNwZWNpZmljYWxseSwgeW91IHNh aWQsICJJbiBteSBleHBlcmllbmNlIHRyeWluZyB0bwo+PiBleHRyYWN0IGNvbW1vbiBjb2RlIGF0 IGFsbCBjb3N0cyBpcyBoYXJtZnVsIHdheSB0b28gb2Z0ZW4uIgo+Pgo+PiBBbHNvLCB0aGUgYXBw cm9hY2ggdGFrZW4gaW4gdGhlIERNQyBsb2FkZXIgLS0gd2hpY2ggYXBwZWFycyB0byBoYXZlIGJl ZW4KPj4gY29weXBhc3RlZCBmcm9tIGEgL3ZlcnkgZWFybHkvIHZlcnNpb24gb2YgdGhlIEd1QyBs b2FkZXIsIGJlZm9yZSBJIGZpeGVkIHRoZQo+PiBhc3luYy1sb2FkIHByb2JsZW1zIC0tIGp1c3Qg d291bGRuJ3Qgd29yayBmb3IgdGhlIEh1Qy9HdUMsIHdoZXJlIHRoZSBrZXJuZWwKPj4gbmVlZHMg dG8ga25vdyB3aGVuIHRoZSBmaXJtd2FyZSBsb2FkIGhhcyBiZWVuIGNvbXBsZXRlZCBzbyB0aGF0 IGl0IGNhbiBzdGFydAo+PiBzZW5kaW5nIHdvcmsgdG8gdGhlIEd1Qy4gVGhlIERNQyBsb2FkZXIg b25seSB3b3JrcyBiZWNhdXNlIGl0IGRvZXNuJ3QKPj4gYWN0dWFsbHkgbWF0dGVyIHdoZW4gKG9y IGlmKSBpdCdzIGxvYWRlZC4gSXQgd291bGQgYmUgKmNvbXBsZXRlbHkgd3JvbmcqIHRvCj4+IGxv YWQgdGhlIEh1Qy9HdWMgdGhhdCB3YXkuCj4+Cj4+PiBJaXJjIHRoZSBiaWcgaXNzdWUgaXMgZGVs YXllZCBmaXJtd2FyZSBsb2FkaW5nIGZvciBidWlsdC1pbiBpOTE1IGFuZCBmdwo+Pj4gb25seSBh dmFpbGFibGUgbGF0ZXIgb24uIFRoaXMgaXMgYW4gb3BlbiBpc3N1ZSBpbiByZXF1ZXN0X2Zpcm13 YXJlKCkgc2luY2UKPj4+IHllYXJzLCBhbmQgdGhlcmUncyB2YXJpb3VzIHBhdGNoZXMgZmxvYXRp bmcgYXJvdW5kLiBJZiB0aGUgcHJvYmxlbSBpcyB0aGF0Cj4+PiBHcmVnIEtIIGRvZXNuJ3QgY29u c2lkZXIgdGhvc2UgcGF0Y2hlcywgSSBjYW4gaGVscCB3aXRoIHRoYXQuIEJ1dCBub3QKPj4+IHB1 c2hpbmcgdGhlIGNvcmUgZml4IGZvcndhcmQgaXNuJ3QgYWNjZXB0YWJsZSBpbW8uCj4+Cj4+IFdl J3JlIG5vdCBhZGRyZXNzaW5nIHRoYXQgaXNzdWUgYXQgYWxsIGhlcmUsIGZvciBMaW51eCB3ZSBl eHBlY3QgdGhlCj4+IGZpcm13YXJlIHdpbGwgYmUgaW4gdGhlIHJhbWRpc2sgc28gaXQncyBhdmFp bGFibGUgaW1tZWRpYXRlbHkuIEFuZHJvaWQgaGFzCj4+IGFuIGlzc3VlIHdpdGggdGhhdCwgYnV0 IHdlIGFscmVhZHkgaGF2ZSBzb2x1dGlvbnMgdGhlcmUuCj4KPiBDcm9zIGhhcyB0aGUgc2FtZSBp c3N1ZSwgYW5kIGl0IGp1c3QgY3JvcHBlZCB1cCBhZ2FpbiBiZWNhdXNlIEdvb2dsZSBpcwo+IHVu aGFwcHkgdGhhdCB0aGlzIGlzIHN0aWxsIG5vdCBmaXhlZCBpbiB1cHN0cmVhbS4gVGhpcyBpcyBi eSBubyBtZWFucwo+IGFuZHJvaWQgc3BlY2lmaWMgYXQgYWxsLCBubyByZWFzb24gdG8gaGF2ZSBh IGhhY2sgZm9yIGl0IG9ubHkgaW4gYW5kcm9pZC4KClRoZW4geW91IGNhbiB0YWtlLCBvciBhZGFw dCwgdGhlIHBhdGNoIHdlIHVzZSBpbiBBbmRyb2lkLiBJdCdzIHZlcnkgCnNpbXBsZSAtLSB3ZSBk ZWZlciBhcyBtdWNoIGVuZ2luZSBpbml0aWFsaXNhdGlvbiBhcyBwb3NzaWJsZSB1bnRpbCBmaXJz dCAKb3Blbi4gQnV0IHRoYXQncyBub3RoaW5nIHRvIGRvIHdpdGggdGhpcyBwYXRjaHNldC4KCj4+ PiBPbmNlIHRoYXQgZml4IGlzIGxhbmRlZAo+Pj4gd2UgY2FuIHRyZWF0IHJlcXVlc3RfZmlybXdh cmUgYXMgcmVsaWFibGUgKGl0IG1pZ2h0IHRha2UgYSB3aGlsZSwgaGVuY2UKPj4+IG11c3QgYmUg cnVuIGluIGFuIGFzeW5jIHdvcmsgbGlrZSBETUMgbG9hZGluZyksIHdpdGggbm8gbmVlZCB0byBl dmVyIHJldHJ5Cj4+PiBhbnl0aGluZy4KPj4KPj4gTm8sIGl0ICpjYW4ndCogcnVuICJpbiBhbiBh c3luYyB3b3JrIGxpa2UgRE1DIGxvYWRpbmciIC0tIHRoYXQgd2FzIGV4YWN0bHkKPj4gd2hhdCB3 YXMgd3Jvbmcgd2l0aCB0aGUgb3JpZ2luYWwgR3VDIGxvYWRlciBiZWZvcmUgSSBnb3QgaW52b2x2 ZWQuIFRoZQo+PiBmaXJtd2FyZSB3YXMgZGVsaXZlcmVkIHRvIHRoZSBHdUMgaC93IGFzeW5jaHJv bm91c2x5LCAqYWZ0ZXIqIHRoZSBrZXJuZWwgaGFkCj4+IGFscmVhZHkgc3RhcnRlZCBzZW5kaW5n IHdvcmsgdG8gdGhlIGVuZ2luZXMuIFRoYXQgd2FzIHV0dGVybHkgYm9ndXMhCj4+Cj4+ICpUaGlz KiB2ZXJzaW9uIGlzIGZ1bGx5IHN5bmNocm9ub3VzOyB0aGUga2VybmVsIGNhbGxzIGZvciB0aGUg ZmlybXdhcmUgdXNpbmcKPj4gcmVxdWVzdF9maXJtd2FyZSgpIChhbmQgd2FpdHMgdW50aWwgaXQn cyBzdWNjZWVkZWQgb3IgZmFpbGVkKSwgYW5kIGxhdGVyCj4+IGFza3MgZm9yIHRoZSBmaXJtd2Fy ZSB0byBiZSBsb2FkZWQgaW50byB0aGUgR3VDIChhZ2Fpbiwgd2FpdGluZyB1bnRpbCBpdCBoYXMK Pj4gc3VjY2VlZGVkIG9yIGZhaWxlZCkuCj4KPiBZb3UgbmVlZCB0byBhcHByb3ByaWF0ZWx5IHN5 bmMgd2l0aCBhc3luYyB3b3JrIGF0IHRoZSByaWdodCBwb2ludC4gRm9yIGRtYwo+IHRoYXQncyBk b25lIHVzaW5nIHJwbS9wb3dlciBkb21haW4gcmVmY291bnRzLCBpdCdzIG5vdCBub25leGlzdGlu ZyAoc2luY2UKPiBpbmRlZWQganVzdCBydW5uaW5nIHN0dWZmIGFzeW5jIHdvdWxkIGZhbGwgb3Zl cikuCgpBY3R1YWxseSB0aGUgRE1DIGxvYWQgc3luY2hyb25pc2F0aW9uICppcyogbm9uZXhpc3Rl bnQuIE1haW5saW5lIGNvZGUgCipjYW5ub3QgdGVsbCogd2hldGhlciB0aGUgRE1DIGZpcm13YXJl IGhhcyBiZWVuIGxvYWRlZCAodW5sZXNzIHRoZXJlJ3MgCnNvbWUgd2F5IHRvIGFzayB0aGUgRE1D IGl0c2VsZikuIEl0ICpjYW5ub3QqIChmb3IgZXhhbXBsZSkgc3RhbGwgdW50aWwgCnRoZSBsb2Fk IGNvbXBsZXRlcywgYmVjYXVzZSBhbGwgaXQgY2FuIHRlbGwgaXMgdGhhdCB0aGVyZSdzIGEgbm9u emVybyAKcmVmY291bnQgb24gYSBwb3dlciBkb21haW4sIG5vdCB3aG8gaG9sZHMgaXQgb3Igd2h5 LiBUaGF0J3MgKk9LKiBmb3IgdGhlIApETUMgYmVjYXVzZSB0aGUgZHJpdmVyIGRvZXNuJ3QgL25l ZWQvIHRvIGtub3c7IGl0IGRvZXNuJ3QgdGFsayB0byB0aGUgCkRNQyBmaXJtd2FyZSBhbnl3YXku IEJ1dCBmb3IgdGhlIEd1Qy9IdUMsIHdlIG5lZWQgdG8ga25vdy4KCj4gRm9yIEd1Qy9IdUMgd2Ug bmVlZCBzb21lIHdheSB0byBzeW5jaHJvbml6ZSBlbHNld2hlcmUsIGxpa2UgZmx1c2hfd29yawo+ IGluIGV4ZWNidWYuCj4KPiBBbmQgaWYgdGhlIGZpcm13YXJlIGZhaWxlZCB0byBsb2FkIGFmdGVy IGZsdXNoX3dvcmsoKSwgdGhlbiB3ZSBjYW4KPiByZWxpYWJsZSBmYWlsIGV4ZWNidWYgd2l0aCBF SU8gKGxpa2UgaW4gYW55IG90aGVyIGNhc2Ugd2hlbiB0aGUgaHcgaXMKPiBjb25zaWRlcmVkIHRv byBkZWFkIHRvbyBiZSB1c2VmdWwpLiBBbmQgaWYgZmx1c2hfd29yayBpcyB0b28gZXhwZW5zaXZl LAo+IHdlIGNhbiBjcmVhdGUgYSBuaWNlIGNvbXBsZXRpb24sIHdoZXJlIHRoZSBmYXN0cGF0aCBp cyBsb2NrbGVzcy4gSSBzdGlsbAo+IGRvbid0IHNlZSB3aHkgYSBiaWcgc3RhdGUgbWFjaGluZXJ5 IGlzIG5lZWRlZCBmb3IgdGhpcyBhdCBhbGwuCgpUaGUgY29tcGxldGlvbiBhcHByb2FjaCBpcyAq ZXhhY3RseSogd2hhdCB3ZSB1c2VkIGluIHRoZSBvcmlnaW5hbCAKdW5pZmllZCBsb2FkZXIgZGVz aWduIHdpdGggYXN5bmNocm9ub3VzIGZldGNoLWFoZWFkIGFuZCBjb3JyZWN0bHkgCnN5bmNocm9u aXNlZCBsb2FkaW5nLCBhbmQgKnlvdSogb2JqZWN0ZWQgdG8gaXQsIGV2ZW4gdGhvdWdoIGl0IHdh cyAKYWxyZWFkeSBjb2RlZCBmb3IgdGhlIEd1QytIdUMgYW5kIGNvdWxkIGVhc2lseSBoYXZlIGJl ZW4gdXNlZCBmb3IgdGhlIApETUMgYXMgd2VsbC4KCj4gQW5kIGlmIHRoaXMgdmVyc2lvbiBpcyBm dWxseSBzeW5jaHJub3VzLCB3aHkgZG9lcyBpdCBldmVuIG5lZWQgc3VjaCBhCj4gY29tcGxpY2F0 ZWQgc3RhdHVzIGhhbmRsaW5nPyBGYWxsIG92ZXIgd2l0aCAtRUlPIHJlYWxseSBzaG91bGQgZG8g YmUKPiBlbm91Z2guCgpJdCdzIE5PVCBjb21wbGljYXRlZCwgYW5kIGl0IElTIG5lY2Vzc2FyeS4K CkEgc3RhdGUgbWFjaGluZSB3aXRoIG9ubHkgRk9VUiBzdGF0ZXMgYW5kIEZJVkUgdHJhbnNpdGlv bnMgCihOT05FLT5QRU5ESU5HLT5bU1VDQ0VTU3xGQUlMXS0+Tk9ORSkgaXMgaGFyZGx5IGNvbXBs aWNhdGVkIQoKQW5kIGl0cyBORUNFU1NBUlkgYmVjYXVzZSB0aGUgZWFjaCBvZiB0aGUgZmV0Y2gt ZnJvbS1maWxlc3lzdGVtIGFuZCAKcHVzaC1pbnRvLVdPUENNIG9wZXJhdGlvbnMgYXJlIHNlcGFy YXRlIHBoYXNlcywgYW5kIHdlIHdhbnQgdG8gZG8gdGhlIApmaXJzdCBqdXN0IG9uY2UgLS0gZXNw ZWNpYWxseSBhcywgaW4gdGhpcyBzeW5jaHJvbm91cyBzY2hlbWUsIGl0IG1heSAKZGVsYXkgZHJp dmVyIGluaXRpYWxpc2F0aW9uIGlmIHdlIGhhdmUgdG8gd2FpdCBmb3IgdGhlIHVzZXIgaGVscGVy LiBBbmQgCih1bmxpa2UgdGhlIERNQykgdGhlIEd1QyBhbmQgSHVDIGhhdmUgdG8gYmUgRE1BLVJF bG9hZGVkIGF0IHZhcmlvdXMgCnBvaW50cyAoUkM2LCByZXN1bWUsIHJlc2V0LCBldEMpLiBTbyBP RiBDT1VSU0Ugd2UgaGF2ZSB0byBwYXNzIHN0YXR1cyAKZnJvbSB0aGUgZmV0Y2ggdG8gdGhlIERN QWxvYWRlciwgYW5kIHdlIGhhdmUgdG8gcmVtZW1iZXIgd2hldGhlciBlYWNoIApzdGFnZSBoYXMg bm90IHlldCBzdGFydGVkLCBpcyBpbiBwcm9ncmVzcywgaGFzIGJlZW4gc3VjY2Vzc2Z1bCwgb3Ig aGFzIAphbHJlYWR5IGZhaWxlZC4gWW91IGNvdWxkIG1vdmUgdGhlIEd1QyBzdGF0ZSBvdXQgaW50 byB0aGUgZ2VuZXJhbCBpOTE1IApkYXRhIGFuZCBoYXZlIHRoZSAvY2FsbGVycy8gb2YgdGhlIEd1 Qy1yZWxhdGVkIGZ1bmN0aW9ucyBob2xkIGFuZCAKaW50ZXJwcmV0IGl0LCBidXQgdGhhdCB3b3Vs ZCBtYWtlIHRoZSBjb2RlIGZhciBsZXNzIG1vZHVsYXIuCgo+Pj4gSWYgZncgbG9hZGluZyBmYWls cyB3ZSBjYW4ganVzdCBtYXJrIHRoZSBlbnRpcmUgcmVuZGVyIHBhcnQgb2YKPj4+IHRoZSBncHUg YXMgZGVhZCBieSBpbmplY3RpbmcgdGhlIGVxdWl2YWxlbnQgb2YgYSBub24tcmVjb3ZlcmFibGUg aGFuZwo+Pj4gKGFzeW5jIHNldHVwKSBvciBmYWlsaW5nIGVuZ2luZSBpbml0IHdpdGggLUVJTyAo aWYgdGhpcyBpcyBzdGlsbAo+Pj4gc3luY2hyb25vdXMsIHdoaWNoIEkgZG9uJ3QgZXhwZWN0IHJl YWxseSkuCj4+Cj4+IFdoaWNoIGlzIGp1c3Qgd2hhdCB3ZSBkby4gVGhpcyBwYXRjaHNldCBpcyBl c3NlbnRpYWxseSBqdXN0IGFkZGluZyBIdUMKPj4gbG9hZGluZyB0byB0aGUgZXhpc3RpbmcgR3VD IGxvYWRpbmcgcHJvY2VzcywgcmV1c2luZyBhcyBtdWNoIGFzIHBvc3NpYmxlIG9mCj4+IHRoZSBz YW1lIGNvZGUuCj4+Cj4+PiBJZiB0aGVyZSdzIGFub3RoZXIgcmVhc29uIGZvciB0aGlzIGNvbXBs ZXhpdHksIHBsZWFzZSBleHBsYWluIHNpbmNlIEknZAo+Pj4gbGlrZSB0byB1bmRlcnN0YW5kIHdo eSB3ZSBuZWVkIHRoaXMuCj4+PiAtRGFuaWVsCj4+Cj4+IExlc3MgY29tcGxleGl0eSB0aGFuIHlv dSB0aGluay4KPj4KPj4gICAgNTMxICAxNjk4IDE0MjU1IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Nzci5jCj4+ICAgIDc1MSAgMjc1NyAyMjg4OSBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9hZGVyLmMKPj4KPj4gTXVjaCB0aGUgc2FtZSBzaXplLCB0byB3aXRoaW4gYSAoYmlu YXJ5KSBvcmRlci1vZi1tYWduaXR1ZGUuIE9idmlvdXNseSB0aGUKPj4gR3VDIGNvZGUgKm5lY2Vz c2FyaWx5KiBkb2VzIG1vcmUgYmVjYXVzZSB0aGUgZi93IGludGVyZmFjZXMgYXJlIG11Y2ggbW9y ZQo+PiBjb21wbGV4IChjdHggcG9vbCwgQURTLCBldGMpOyBidXQgdGhvc2UgYXJlIG5vdCBvcHRp b25hbC4gQW5kIHRoZSBHdUMgY29kZQo+PiBoYXMgdG8gZGVhbCB3aXRoIHJlbG9hZGluZyBhZnRl ciBSQzYgb3IgR1BVIHJlc2V0LCB3aGljaCBBRkFJQ1QgdGhlIERNQwo+PiBkb2Vzbid0Lgo+Cj4g SSdtIG5vdCBhZ2FpbnN0IGNvZGUgc2l6ZSwgYnV0IGFnYWluc3QgdGhlIHN0YXR1cyBtYXRyaXgu IEkgbnVrZWQgaXQgZnJvbQo+IGludGVsX2Nzci5jLCBJIHdhbnQgaXQgZ29uZSBmcm9tIHRoZSBn dWMvaHVjIGxvYWRlciB0b28uIEl0IGltbyBzZXJ2ZXMgbm8KPiBwb2ludC4KPiAtRGFuaWVsCgpU aGVyZSdzIG5vICJtYXRyaXgiLCBqdXN0IHRoZSBzaW1wbGVzdCBwb3NzaWJsZSBsaW5lYXIgc2Vx dWVuY2UuClRoZXJlIGFyZSBGSVZFLCBjb3VudCdlbSwgRklWRSBhc3NpZ25tZW50cyB0byBndWNf ZndfZmV0Y2hfc3RhdHVzIGluIHRoZSAKY29kZSwgcmVwcmVzZW50aW5nIGV4YWN0bHkgdGhvc2Ug dHJhbnNpdGlvbnMgbWVudGlvbmVkIGFib3ZlCihOT05FLT5QRU5ESU5HLT5bU1VDQ0VTU3xGQUlM XS0+Tk9ORSkuCgouRGF2ZS4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==