From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH 0/1] drm/xen-zcopy: Add Xen zero-copy helper DRM driver Date: Wed, 18 Apr 2018 09:38:39 +0300 Message-ID: <41487acb-a67a-8933-d0c3-702c19b0938e__24791.6623404764$1524033487$gmane$org@gmail.com> References: <20180329131931.29957-1-andr2000@gmail.com> <5d8fec7f-956c-378f-be90-f45029385740@gmail.com> <20180416192905.GA18096@downor-Z87X-UD5H> <20180417075928.GT31310@phenom.ffwll.local> <20180417205744.GA15930@downor-Z87X-UD5H> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1f8gju-0002EC-7P for xen-devel@lists.xenproject.org; Wed, 18 Apr 2018 06:38:46 +0000 Received: by mail-lf0-x22a.google.com with SMTP id z130-v6so929678lff.5 for ; Tue, 17 Apr 2018 23:38:43 -0700 (PDT) In-Reply-To: <20180417205744.GA15930@downor-Z87X-UD5H> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Dongwon Kim , "Oleksandr_Andrushchenko@epam.com" , jgross@suse.com, Artem Mygaiev , konrad.wilk@oracle.com, airlied@linux.ie, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, "Potrola, MateuszX" , daniel.vetter@intel.com, xen-devel@lists.xenproject.org, boris.ostrovsky@oracle.com, Matt Roper List-Id: xen-devel@lists.xenproject.org T24gMDQvMTcvMjAxOCAxMTo1NyBQTSwgRG9uZ3dvbiBLaW0gd3JvdGU6Cj4gT24gVHVlLCBBcHIg MTcsIDIwMTggYXQgMDk6NTk6MjhBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPj4gT24g TW9uLCBBcHIgMTYsIDIwMTggYXQgMTI6Mjk6MDVQTSAtMDcwMCwgRG9uZ3dvbiBLaW0gd3JvdGU6 Cj4+PiBZZWFoLCBJIGRlZmluaXRlbHkgYWdyZWUgb24gdGhlIGlkZWEgb2YgZXhwYW5kaW5nIHRo ZSB1c2UgY2FzZSB0byB0aGUKPj4+IGdlbmVyYWwgZG9tYWluIHdoZXJlIGRtYWJ1ZiBzaGFyaW5n IGlzIHVzZWQuIEhvd2V2ZXIsIHdoYXQgeW91IGFyZQo+Pj4gdGFyZ2V0dGluZyB3aXRoIHByb3Bv c2VkIGNoYW5nZXMgaXMgaWRlbnRpY2FsIHRvIHRoZSBjb3JlIGRlc2lnbiBvZgo+Pj4gaHlwZXJf ZG1hYnVmLgo+Pj4KPj4+IE9uIHRvcCBvZiB0aGlzIGJhc2ljIGZ1bmN0aW9uYWxpdGllcywgaHlw ZXJfZG1hYnVmIGhhcyBkcml2ZXIgbGV2ZWwKPj4+IGludGVyLWRvbWFpbiBjb21tdW5pY2F0aW9u LCB0aGF0IGlzIG5lZWRlZCBmb3IgZG1hLWJ1ZiByZW1vdGUgdHJhY2tpbmcKPj4+IChubyBmZW5j ZSBmb3J3YXJkaW5nIHRob3VnaCksIGV2ZW50IHRyaWdnZXJpbmcgYW5kIGV2ZW50IGhhbmRsaW5n LCBleHRyYQo+Pj4gbWV0YSBkYXRhIGV4Y2hhbmdlIGFuZCBoeXBlcl9kbWFidWZfaWQgdGhhdCBy ZXByZXNlbnRzIGdyZWZzCj4+PiAoZ3JlZnMgYXJlIHNoYXJlZCBpbXBsaWNpdGx5IG9uIGRyaXZl ciBsZXZlbCkKPj4gVGhpcyByZWFsbHkgaXNuJ3QgYSBwb3NpdGl2ZSBkZXNpZ24gYXNwZWN0IG9m IGh5cGVyZG1hYnVmIGltby4gVGhlIGNvcmUKPj4gY29kZSBpbiB4ZW4temNvcHkgKGlnbm9yaW5n IHRoZSBpb2N0bCBzaWRlLCB3aGljaCB3aWxsIGJlIGNsZWFuZWQgdXApIGlzCj4+IHZlcnkgc2lt cGxlICYgY2xlYW4uCj4+Cj4+IElmIHRoZXJlJ3MgYSBjbGVhciBuZWVkIGxhdGVyIG9uIHdlIGNh biBleHRlbmQgdGhhdC4gQnV0IGZvciBub3cgeGVuLXpjb3B5Cj4+IHNlZW1zIHRvIGNvdmVyIHRo ZSBiYXNpYyB1c2UtY2FzZSBuZWVkcywgc28gZ2V0cyB0aGUgam9iIGRvbmUuCj4+Cj4+PiBBbHNv IGl0IGlzIGRlc2lnbmVkIHdpdGggZnJvbnRlbmQgKGNvbW1vbiBjb3JlIGZyYW1ld29yaykgKyBi YWNrZW5kCj4+PiAoaHlwZXIgdmlzb3Igc3BlY2lmaWMgY29tbSBhbmQgbWVtb3J5IHNoYXJpbmcp IHN0cnVjdHVyZSBmb3IgcG9ydGFiaWxpdHkuCj4+PiBXZSBqdXN0IGNhbid0IGxpbWl0IHRoaXMg ZmVhdHVyZSB0byBYZW4gYmVjYXVzZSB3ZSB3YW50IHRvIHVzZSB0aGUgc2FtZQo+Pj4gdWFwaXMg bm90IG9ubHkgZm9yIFhlbiBidXQgYWxzbyBvdGhlciBhcHBsaWNhYmxlIGh5cGVydmlzb3IsIGxp a2UgQUNPUk4uCj4+IFNlZSB0aGUgZGlzY3Vzc2lvbiBhcm91bmQgdWRtYWJ1ZiBhbmQgdGhlIG5l ZWRzIGZvciBrdm0uIEkgdGhpbmsgdHJ5aW5nIHRvCj4+IG1ha2UgYW4gaW9jdGwvdWFwaSB0aGF0 IHdvcmtzIGZvciBtdWx0aXBsZSBoeXBlcnZpc29ycyBpcyBtaXNndWlkZWQgLSBpdAo+PiBsaWtl bHkgd29uJ3Qgd29yay4KPj4KPj4gT24gdG9wIG9mIHRoYXQgdGhlIDJuZCBoeXBlcnZpc29yIHlv dSdyZSBhaW1pbmcgdG8gc3VwcG9ydCBpcyBBQ1JOLiBUaGF0J3MKPj4gbm90IGV2ZW4gdXBzdHJl YW0geWV0LCBub3IgaGF2ZSBJIHNlZW4gYW55IHBhdGNoZXMgcHJvcG9zaW5nIHRvIGxhbmQgbGlu dXgKPj4gc3VwcG9ydCBmb3IgQUNSTi4gU2luY2UgaXQncyBub3QgdXBzdHJlYW0sIGl0IGRvZXNu J3QgcmVhbGx5IG1hdHRlciBmb3IKPj4gdXBzdHJlYW0gY29uc2lkZXJhdGlvbi4gSSdtIGRvdWJ0 aW5nIHRoYXQgQUNSTiB3aWxsIHVzZSB0aGUgc2FtZSBncmFudAo+PiByZWZlcmVuY2VzIGFzIHhl biwgc28gdGhlIHNhbWUgdWFwaSB3b24ndCB3b3JrIG9uIEFDUk4gYXMgb24gWGVuIGFueXdheS4K PiBZZWFoLCBBQ1JOIGRvZXNuJ3QgaGF2ZSBncmFudC10YWJsZS4gT25seSBYZW4gc3VwcG9ydHMg aXQuIEJ1dCB0aGF0IGlzIHdoeQo+IGh5cGVyX2RtYWJ1ZiBoYXMgYmVlbiBhcmNoaXRlY3R1cmVk IHdpdGggdGhlIGNvbmNlcHQgb2YgYmFja2VuZC4KPiBJZiB5b3UgbG9vayBhdCB0aGUgc3RydWN0 dXJlIG9mIGJhY2tlbmQsIHlvdSB3aWxsIGZpbmQgdGhhdAo+IGJhY2tlbmQgaXMganVzdCBhIHNl dCBvZiBzdGFuZGFyZCBmdW5jdGlvbiBjYWxscyBhcyBzaG93biBoZXJlOgo+Cj4gc3RydWN0IGh5 cGVyX2RtYWJ1Zl9ia25kX29wcyB7Cj4gICAgICAgICAgLyogYmFja2VuZCBpbml0aWFsaXphdGlv biByb3V0aW5lIChvcHRpb25hbCkgKi8KPiAgICAgICAgICBpbnQgKCppbml0KSh2b2lkKTsKPgo+ ICAgICAgICAgIC8qIGJhY2tlbmQgY2xlYW51cCByb3V0aW5lIChvcHRpb25hbCkgKi8KPiAgICAg ICAgICBpbnQgKCpjbGVhbnVwKSh2b2lkKTsKPgo+ICAgICAgICAgIC8qIHJldHJlaXZpbmcgaWQg b2YgY3VycmVudCB2aXJ0dWFsIG1hY2hpbmUgKi8KPiAgICAgICAgICBpbnQgKCpnZXRfdm1faWQp KHZvaWQpOwo+Cj4gICAgICAgICAgLyogZ2V0IHBhZ2VzIHNoYXJlZCB2aWEgaHlwZXJ2aXNvci1z cGVjaWZpYyBtZXRob2QgKi8KPiAgICAgICAgICBpbnQgKCpzaGFyZV9wYWdlcykoc3RydWN0IHBh Z2UgKipwYWdlcywgaW50IHZtX2lkLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg bmVudHMsIHZvaWQgKipyZWZzX2luZm8pOwo+Cj4gICAgICAgICAgLyogbWFrZSBzaGFyZWQgcGFn ZXMgdW5zaGFyZWQgdmlhIGh5cGVydmlzb3Igc3BlY2lmaWMgbWV0aG9kICovCj4gICAgICAgICAg aW50ICgqdW5zaGFyZV9wYWdlcykodm9pZCAqKnJlZnNfaW5mbywgaW50IG5lbnRzKTsKPgo+ICAg ICAgICAgIC8qIG1hcCByZW1vdGVseSBzaGFyZWQgcGFnZXMgb24gaW1wb3J0ZXIncyBzaWRlIHZp YQo+ICAgICAgICAgICAqIGh5cGVydmlzb3Itc3BlY2lmaWMgbWV0aG9kCj4gICAgICAgICAgICov Cj4gICAgICAgICAgc3RydWN0IHBhZ2UgKiogKCptYXBfc2hhcmVkX3BhZ2VzKSh1bnNpZ25lZCBs b25nIHJlZiwgaW50IHZtX2lkLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IG5lbnRzLCB2b2lkICoqcmVmc19pbmZvKTsKPgo+ICAgICAgICAgIC8qIHVu bWFwIGFuZCBmcmVlIHNoYXJlZCBwYWdlcyBvbiBpbXBvcnRlcidzIHNpZGUgdmlhCj4gICAgICAg ICAgICogaHlwZXJ2aXNvci1zcGVjaWZpYyBtZXRob2QKPiAgICAgICAgICAgKi8KPiAgICAgICAg ICBpbnQgKCp1bm1hcF9zaGFyZWRfcGFnZXMpKHZvaWQgKipyZWZzX2luZm8sIGludCBuZW50cyk7 Cj4KPiAgICAgICAgICAvKiBpbml0aWFsaXplIGNvbW11bmljYXRpb24gZW52aXJvbm1lbnQgKi8K PiAgICAgICAgICBpbnQgKCppbml0X2NvbW1fZW52KSh2b2lkKTsKPgo+ICAgICAgICAgIHZvaWQg KCpkZXN0cm95X2NvbW0pKHZvaWQpOwo+Cj4gICAgICAgICAgLyogdXBzdHJlYW0gY2ggc2V0dXAg KHJlY2VpdmluZyBhbmQgcmVzcG9uZGluZykgKi8KPiAgICAgICAgICBpbnQgKCppbml0X3J4X2No KShpbnQgdm1faWQpOwo+Cj4gICAgICAgICAgLyogZG93bnN0cmVhbSBjaCBzZXR1cCAodHJhbnNt aXR0aW5nIGFuZCBwYXJzaW5nIHJlc3BvbnNlcykgKi8KPiAgICAgICAgICBpbnQgKCppbml0X3R4 X2NoKShpbnQgdm1faWQpOwo+Cj4gICAgICAgICAgaW50ICgqc2VuZF9yZXEpKGludCB2bV9pZCwg c3RydWN0IGh5cGVyX2RtYWJ1Zl9yZXEgKnJlcSwgaW50IHdhaXQpOwo+IH07Cj4KPiBBbGwgb2Yg dGhlc2UgY2FuIGJlIG1hcHBlZCB3aXRoIGFueSBoeXBlcnZpc29yIHNwZWNpZmljIGltcGxlbWVu dGF0aW9uLgo+IFdlIGRlc2lnbmVkIGJhY2tlbmQgaW1wbGVtZW50YXRpb24gZm9yIFhlbiB1c2lu ZyBncmFudC10YWJsZSwgWGVuIGV2ZW50Cj4gYW5kIHJpbmcgYnVmZmVyIGNvbW11bmljYXRpb24u IEZvciBBQ1JOLCB3ZSBoYXZlIGFub3RoZXIgYmFja2VuZCB1c2luZyBWaXJ0LUlPCj4gZm9yIGJv dGggbWVtb3J5IHNoYXJpbmcgYW5kIGNvbW11bmljYXRpb24uCj4KPiBXZSB0cmllZCB0byBkZWZp bmUgdGhpcyBzdHJ1Y3R1cmUgb2YgYmFja2VuZCB0byBtYWtlIGl0IGdlbmVyYWwgZW5vdWdoIChv cgo+IGl0IGNhbiBiZSBldmVuIG1vZGlmaWVkIG9yIGV4dGVuZGVkIHRvIHN1cHBvcnQgbW9yZSBj YXNlcy4pIHNvIHRoYXQgaXQgY2FuCj4gZml0IHRvIG90aGVyIGh5cGVydmlzb3IgY2FzZXMuIE9u bHkgcmVxdWlyZW1lbnRzL2V4cGVjdGF0aW9uIG9uIHRoZSBoeXBlcnZpc29yCj4gYXJlIHBhZ2Ut bGV2ZWwgbWVtb3J5IHNoYXJpbmcgYW5kIGludGVyLWRvbWFpbiBjb21tdW5pY2F0aW9uLCB3aGlj aCBJIHRoaW5rCj4gYXJlIHN0YW5kYXJkIGZlYXR1cmVzIG9mIG1vZGVybiBoeXBlcnZpc29yLgo+ Cj4gQW5kIHBsZWFzZSByZXZpZXcgY29tbW9uIFVBUElzIHRoYXQgaHlwZXJfZG1hYnVmIGFuZCB4 ZW4temNvcHkgc3VwcG9ydHMuIFRoZXkKPiBhcmUgdmVyeSBnZW5lcmFsLiBPbmUgaXMgZ2V0dGlu ZyBGRCAoZG1hYnVmKSBhbmQgZ2V0IHRob3NlIHNoYXJlZC4gVGhlIG90aGVyCj4gaXMgZ2VuZXJh dGluZyBkbWFidWYgZnJvbSBnbG9iYWwgaGFuZGxlIChzZWN1cmUgaGFuZGxlIGhpZGluZyBncmVm IGJlaGluZCBpdCkuCj4gT24gdG9wIG9mIHRoaXMsIGh5cGVyX2RtYWJ1ZiBoYXMgInVuc2hhcmUi IGFuZCAicXVlcnkiIHdoaWNoIGFyZSBhbHNvIHVzZWZ1bAo+IGZvciBhbnkgY2FzZXMuCj4KPiBT byBJIGRvbid0IGtub3cgd2h5IHdlIHdvdWxkbid0IHdhbnQgdG8gdHJ5IHRvIG1ha2UgdGhlc2Ug c3RhbmRhcmQgaW4gbW9zdCBvZgo+IGh5cGVydmlzb3IgY2FzZXMgaW5zdGVhZCBvZiBsaW1pdGlu ZyBpdCB0byBjZXJ0YWluIGh5cGVydmlzb3IgbGlrZSBYZW4uCj4gRnJvbnRlbmQtYmFja2VuZCBz dHJ1Y3RyZSBpcyBvcHRpbWFsIGZvciB0aGlzIEkgdGhpbmsuCj4KPj4+IFNvIEkgYW0gd29uZGVy aW5nIHdlIGNhbiBzdGFydCB3aXRoIHRoaXMgaHlwZXJfZG1hYnVmIHRoZW4gbW9kaWZ5IGl0IGZv cgo+Pj4geW91ciB1c2UtY2FzZSBpZiBuZWVkZWQgYW5kIHBvbGlzaCBhbmQgZml4IGFueSBnbGl0 Y2hlcyBpZiB3ZSB3YW50IHRvCj4+PiB0byB1c2UgdGhpcyBmb3IgYWxsIGdlbmVyYWwgZG1hLWJ1 ZiB1c2VjYXNlcy4KPj4gSW1vIHhlbi16Y29weSBpcyBhIG11Y2ggbW9yZSByZWFzb25hYmxlIHN0 YXJ0aW5nIHBvaW50IGZvciB1cHN0cmVhbSwgd2hpY2gKPj4gY2FuIHRoZW4gYmUgZXh0ZW5kZWQg KGlmIHJlYWxseSBwcm92ZW4gdG8gYmUgbmVjZXNzYXJ5KS4KPj4KPj4+IEFsc28sIEkgc3RpbGwg aGF2ZSBvbmUgdW5yZXNvbHZlZCBxdWVzdGlvbiByZWdhcmRpbmcgdGhlIGV4cG9ydC9pbXBvcnQg Zmxvdwo+Pj4gaW4gYm90aCBvZiBoeXBlcl9kbWFidWYgYW5kIHhlbi16Y29weS4KPj4+Cj4+PiBA ZGFudmV0OiBXb3VsZCB0aGlzIGZsb3cgKGd1ZXN0MS0+aW1wb3J0IGV4aXN0aW5nIGRtYWJ1Zi0+ c2hhcmUgdW5kZXJseWluZwo+Pj4gcGFnZXMtPmd1ZXN0Mi0+bWFwIHNoYXJlZCBwYWdlcy0+Y3Jl YXRlL2V4cG9ydCBkbWFidWYpIGJlIGFjY2VwdGFibGUgbm93Pwo+PiBJIHRoaW5rIGlmIHlvdSBq dXN0IGxvb2sgYXQgdGhlIHBhZ2VzLCBhbmQgbWFrZSBzdXJlIHlvdSBoYW5kbGUgdGhlCj4+IHNn X3BhZ2UgPT0gTlVMTCBjYXNlIGl0J3Mgb2staXNoLiBJdCdzIG5vdCBncmVhdCwgYnV0IG1vc3Rs eSBpdCBzaG91bGQKPj4gd29yay4gVGhlIHJlYWwgdHJvdWJsZSB3aXRoIGh5cGVyZG1hYnVmIHdh cyB0aGUgZm9yd2FyZGluZyBvZiBhbGwgdGhlc2UKPj4gY2FsbHMsIGluc3RlYWQgb2YganVzdCBw YXNzaW5nIGFyb3VuZCBhIGxpc3Qgb2YgZ3JhbnQgcmVmZXJlbmNlcy4KPiBJIHRhbGtlZCB0byBk YW52ZXQgYWJvdXQgdGhpcyBsaXR0ZSBiaXQuCj4KPiBJIHRoaW5rIHRoZXJlIHdhcyBzb21lIG1p c3VuZGVyc3RhbmRpbmcgb24gdGhpcyAiZm9yd2FyZGluZyIuIEV4cG9ydGluZwo+IGFuZCBpbXBv cnRpbmcgZmxvdyBpbiBoeXBlcl9kbWFidWYgYXJlIGJhc2ljYWxseSBzYW1lIGFzIHhlbi16Y29w eSdzLiBJIHRoaW5rCj4gd2hhdCBtYWRlIGNvbmZ1c2lvbiB3YXMgdGhhdCBpbXBvcnRpbmcgZG9t YWluIG5vdGlmaWVzIGV4cG9ydGluZyBkb21haW4gd2hlbgo+IHRoZXJlIGFyZSBkbWFidWYgb3Bl cmF0aW9ucyAobGlrZSBhdHRhY2gsIG1hcHBpbmcsIGRldGFjaCBhbmQgcmVsZWFzZSkgc28gdGhh dAo+IGV4cG9ydGluZyBkb21haW4gY2FuIHRyYWNrIHRoZSB1c2FnZSBvZiBkbWFidWYgb24gdGhl IGltcG9ydGluZyBkb21haW4uCj4KPiBJIGRlc2lnbmVkIHRoaXMgZm9yIHNvbWUgYmFzaWMgdHJh Y2tpbmcuIFdlIG1heSBub3QgbmVlZCB0byBub3RpZnkgZm9yIGV2ZXJ5Cj4gZGlmZmVyZW50IGFj dGl2aXR5IGJ1dCBpZiBub25lIG9mIHRoZW0gaXMgdGhlcmUsIGV4cG9ydGluZyBkb21haW4gY2Fu J3QKPiBkZXRlcm1pbmUgaWYgaXQgaXMgb2sgdG8gdW5zaGFyZSB0aGUgYnVmZmVyIG9yIHRoZSBv cmlnaW5hdG9yIChsaWtlIGk5MTUpCj4gY2FuIGZyZWUgdGhlIG9iamVjdCBldmVuIGlmIGl0J3Mg YmVpbmcgYWNjZXNzZWQgaW4gaW1wb3J0aW5nIGRvbWFpbi4KPgo+IEFueXdheSBJIHJlYWxseSBo b3BlIHdlIGNhbiBoYXZlIGVub3VnaCBkaXNjdXNzaW9uIGFuZCByZXNvbHZlIGFsbCBjb25jZXJu cwo+IGJlZm9yZSBuYWlsaW5nIGl0IGRvd24uCkxldCBtZSBleHBsYWluIGhvdyB0aGlzIHdvcmtz IGluIGNhc2Ugb2YgcGFyYS12aXJ0dWFsIGRpc3BsYXkKdXNlLWNhc2Ugd2l0aCB4ZW4temNvcHku CgoxLiBUaGVyZSBhcmUgNCBjb21wb25lbnRzIGluIHRoZSBzeXN0ZW06CiDCoCAtIGRpc3BsaWYg cHJvdG9jb2wgWzFdCiDCoCAtIHhlbi1mcm9udCAtIHBhcmEtdmlydHVhbCBEUk0gZHJpdmVyIHJ1 bm5pbmcgaW4gRG9tVSAoR3Vlc3QpIFZNCiDCoCAtIGJhY2tlbmQgLSB1c2VyLXNwYWNlIGFwcGxp Y2F0aW9uIHJ1bm5pbmcgaW4gRG9tMAogwqAgLSB4ZW4temNvcHkgLSBEUk0gKGFzIG9mIG5vdykg aGVscGVyIGRyaXZlciBydW5uaW5nIGluIERvbTAKCjIuIEFsbCB0aGUgY29tbXVuaWNhdGlvbiBi ZXR3ZWVuIGRvbWFpbnMgaGFwcGVucyBiZXR3ZWVuIHhlbi1mcm9udCBhbmQgdGhlCmJhY2tlbmQs IHNvIGl0IGlzIHBvc3NpYmxlIHRvIGltcGxlbWVudCBwYXJhLXZpcnR1YWwgZGlzcGxheSB1c2Ut Y2FzZQp3aXRob3V0IHhlbi16Y29weSBhdCBhbGwgKHRoaXMgaXMgd2h5IGl0IGlzIGEgaGVscGVy IGRyaXZlciksIGJ1dCBpbiAKdGhpcyBjYXNlCm1lbW9yeSBjb3B5aW5nIG9jY3VycyAodGhpcyBp cyBvdXQgb2Ygc2NvcGUgZm9yIHRoaXMgZGlzY3Vzc2lvbikuCgozLiBUbyBiZXR0ZXIgdW5kZXJz dGFuZCBzZWN1cml0eSBpc3N1ZXMgbGV0J3Mgc2VlIHdoYXQgdXNlLWNhc2VzIHdlIGhhdmU6Cgoz LjEgeGVuLWZyb250IGV4cG9ydHMgaXRzIGRtYS1idWYgKGR1bWIpIHRvIHRoZSBiYWNrZW5kCgpJ biB0aGlzIGNhc2UgdGhlcmUgYXJlIG5vIHNlY3VyaXR5IGlzc3VlcyBhdCBhbGwgYXMgRG9tMCAo YmFja2VuZCBzaWRlKQp3aWxsIHVzZSBEb21VJ3MgcGFnZXMgKHhlbi1mcm9udCBzaWRlKSBhbmQg RG9tMCBpcyBhIHRydXN0ZWQgZG9tYWluLCBzbwp3ZSBhc3N1bWUgaXQgd29uJ3QgaHVydCBEb21V LiBFdmVuIGlmIERvbVUgZGllcyBub3RoaW5nIGJhZCBoYXBwZW5zIHRvIERvbTAuCklmIERvbVUg bWlzYmVoYXZlcyBpdCBjYW4gb25seSB3cml0ZSB0byBpdHMgb3duIHBhZ2VzIHNoYXJlZCB3aXRo IERvbTAsIApidXQgc3RpbGwKY2Fubm90IGdvIGJleW9uZCB0aGF0LCBlLmcuIGl0IGNhbid0IGFj Y2VzcyBEb20wJ3MgbWVtb3J5LgoKMy4yIEJhY2tlbmQgZXhwb3J0cyBkbWEtYnVmIHRvIHhlbi1m cm9udAoKSW4gdGhpcyBjYXNlIERvbTAgcGFnZXMgYXJlIHNoYXJlZCB3aXRoIERvbVUuIEFzIGJl Zm9yZSwgRG9tVSBjYW4gb25seSB3cml0ZQp0byB0aGVzZSBwYWdlcywgbm90IGFueSBvdGhlciBw YWdlIGZyb20gRG9tMCwgc28gaXQgY2FuIGJlIHN0aWxsIApjb25zaWRlcmVkIHNhZmUuCkJ1dCwg dGhlIGZvbGxvd2luZyBtdXN0IGJlIGNvbnNpZGVyZWQgKGhpZ2hsaWdodGVkIGluIHhlbi1mcm9u dCdzIEtlcm5lbApkb2N1bWVudGF0aW9uKToKIMKgLSBJZiBndWVzdCBkb21haW4gZGllcyB0aGVu IHBhZ2VzL2dyYW50cyByZWNlaXZlZCBmcm9tIHRoZSBiYWNrZW5kIGNhbm5vdAogwqDCoCBiZSBj bGFpbWVkIGJhY2sgLSB0aGluayBvZiBpdCBhcyBtZW1vcnkgbG9zdCB0byBEb20wICh3b24ndCBi ZSB1c2VkIApmb3IgYW55CiDCoMKgIG90aGVyIGd1ZXN0KQogwqAtIE1pc2JlaGF2aW5nIGd1ZXN0 IG1heSBzZW5kIHRvbyBtYW55IHJlcXVlc3RzIHRvIHRoZSBiYWNrZW5kIGV4aGF1c3RpbmcKIMKg wqAgaXRzIGdyYW50IHJlZmVyZW5jZXMgYW5kIG1lbW9yeSAoY29uc2lkZXIgdGhpcyBmcm9tIHNl Y3VyaXR5IFBPVikuIApBcyB0aGUKIMKgwqAgYmFja2VuZCBydW5zIGluIHRoZSB0cnVzdGVkIGRv bWFpbiB3ZSBhbHNvIGFzc3VtZSB0aGF0IGl0IGlzIHRydXN0ZWQgCmFzIHdlbGwsCiDCoMKgIGUu Zy4gbXVzdCB0YWtlIG1lYXN1cmVzIHRvIHByZXZlbnQgRERvUyBhdHRhY2tzLgoKNC4geGVuLWZy b250L2JhY2tlbmQveGVuLXpjb3B5IHN5bmNocm9uaXphdGlvbgoKNC4xLiBBcyBJIGFscmVhZHkg c2FpZCBpbiAyKSBhbGwgdGhlIGludGVyIFZNIGNvbW11bmljYXRpb24gaGFwcGVucyBiZXR3ZWVu Cnhlbi1mcm9udCBhbmQgdGhlIGJhY2tlbmQsIHhlbi16Y29weSBpcyBOT1QgaW52b2x2ZWQgaW4g dGhhdC4KV2hlbiB4ZW4tZnJvbnQgd2FudHMgdG8gZGVzdHJveSBhIGRpc3BsYXkgYnVmZmVyIChk dW1iL2RtYS1idWYpIGl0IGlzc3VlcyBhClhFTkRJU1BMX09QX0RCVUZfREVTVFJPWSBjb21tYW5k IChvcHBvc2l0ZSB0byBYRU5ESVNQTF9PUF9EQlVGX0NSRUFURSkuClRoaXMgY2FsbCBpcyBzeW5j aHJvbm91cywgc28geGVuLWZyb250IGV4cGVjdHMgdGhhdCBiYWNrZW5kIGRvZXMgZnJlZSB0aGUK YnVmZmVyIHBhZ2VzIG9uIHJldHVybi4KCjQuMi4gQmFja2VuZCwgb24gWEVORElTUExfT1BfREJV Rl9ERVNUUk9ZOgogwqAgLSBjbG9zZXMgYWxsIGR1bWIgaGFuZGxlcy9mZCdzIG9mIHRoZSBidWZm ZXIgYWNjb3JkaW5nIHRvIFszXQogwqAgLSBpc3N1ZXMgRFJNX0lPQ1RMX1hFTl9aQ09QWV9EVU1C X1dBSVRfRlJFRSBJT0NUTCB0byB4ZW4temNvcHkgdG8gCm1ha2Ugc3VyZQogwqDCoMKgIHRoZSBi dWZmZXIgaXMgZnJlZWQgKHRoaW5rIG9mIGl0IGFzIGl0IHdhaXRzIGZvciBkbWEtYnVmLT5yZWxl YXNlIApjYWxsYmFjaykKIMKgIC0gcmVwbGllcyB0byB4ZW4tZnJvbnQgdGhhdCB0aGUgYnVmZmVy IGNhbiBiZSBkZXN0cm95ZWQuClRoaXMgd2F5IGRlbGV0aW9uIG9mIHRoZSBidWZmZXIgaGFwcGVu cyBzeW5jaHJvbm91c2x5IG9uIGJvdGggRG9tMCBhbmQgRG9tVQpzaWRlcy4gSW4gY2FzZSBpZiBE Uk1fSU9DVExfWEVOX1pDT1BZX0RVTUJfV0FJVF9GUkVFIHJldHVybnMgd2l0aCAKdGltZS1vdXQg ZXJyb3IKKEJUVywgd2FpdCB0aW1lIGlzIGEgcGFyYW1ldGVyIG9mIHRoaXMgSU9DVEwpLCBYZW4g d2lsbCBkZWZlciBncmFudCAKcmVmZXJlbmNlCnJlbW92YWwgYW5kIHdpbGwgcmV0cnkgbGF0ZXIg dW50aWwgdGhvc2UgYXJlIGZyZWUuCgpIb3BlIHRoaXMgaGVscHMgdW5kZXJzdGFuZCBob3cgYnVm ZmVycyBhcmUgc3luY2hyb25vdXNseSBkZWxldGVkIGluIGNhc2UKb2YgeGVuLXpjb3B5IHdpdGgg YSBzaW5nbGUgcHJvdG9jb2wgY29tbWFuZC4KCkkgdGhpbmsgdGhlIGFib3ZlIGxvZ2ljIGNhbiBh bHNvIGJlIHJlLXVzZWQgYnkgdGhlIGh5cGVyLWRtYWJ1ZiBkcml2ZXIgd2l0aApzb21lIGFkZGl0 aW9uYWwgd29yazoKCjEuIHhlbi16Y29weSBjYW4gYmUgc3BsaXQgaW50byAyIHBhcnRzIGFuZCBl eHRlbmQ6CjEuMS4gWGVuIGdudGRldiBkcml2ZXIgWzRdLCBbNV0gdG8gYWxsb3cgY3JlYXRpbmcg ZG1hLWJ1ZiBmcm9tIGdyZWZzIGFuZCAKdmlzZSB2ZXJzYSwKaW1wbGVtZW50ICJ3YWl0IiBpb2N0 bCAod2FpdCBmb3IgZG1hLWJ1Zi0+cmVsZWFzZSk6IGN1cnJlbnRseSB0aGVzZSBhcmUKRFJNX1hF Tl9aQ09QWV9EVU1CX0ZST01fUkVGUywgRFJNX1hFTl9aQ09QWV9EVU1CX1RPX1JFRlMgYW5kIApE Uk1fWEVOX1pDT1BZX0RVTUJfV0FJVF9GUkVFCjEuMi4gWGVuIGJhbGxvb24gZHJpdmVyIFs2XSB0 byBhbGxvdyBhbGxvY2F0aW5nIGNvbnRpZ3VvdXMgYnVmZmVycyAobm90IApuZWVkZWQKYnkgY3Vy cmVudCBoeXBlci1kbWFidWYsIGJ1dCBpcyBhIG11c3QgZm9yIHhlbi16Y29weSB1c2UtY2FzZXMp CgoyLiBUaGVuIGh5cGVyLWRtYWJ1ZiB1c2VzIFhlbiBnbnRkZXYgZHJpdmVyIGZvciBYZW4gc3Bl Y2lmaWMgZG1hLWJ1ZiAKYWxsb2MvZnJlZS93YWl0CgozLiBoeXBlci1kbWFidWYgdXNlcyBpdHMg b3duIHByb3RvY29sIGJldHdlZW4gVk1zIHRvIGNvbW11bmljYXRlIGJ1ZmZlcgpjcmVhdGlvbi9k ZWxldGlvbiBhbmQgd2hhdGV2ZXIgZWxzZSBpcyBuZWVkZWQgKGZlbmNlcz8pLgoKVG8gWGVuIGNv bW11bml0eTogcGxlYXNlIHRoaW5rIG9mIGRtYS1idWYgaGVyZSBhcyBvZiBhIGJ1ZmZlciAKcmVw cmVzZW50YXRpb24gbWVjaGFuaXNtLAplLmcuIGF0IHRoZSBlbmQgb2YgdGhlIGRheSBpdCdzIGp1 c3QgYSBzZXQgb2YgcGFnZXMuCgpUaGFuayB5b3UsCk9sZWtzYW5kcgo+PiAtRGFuaWVsCj4+Cj4+ PiBSZWdhcmRzLAo+Pj4gRFcKPj4+ICAgCj4+PiBPbiBNb24sIEFwciAxNiwgMjAxOCBhdCAwNToz Mzo0NlBNICswMzAwLCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3cm90ZToKPj4+PiBIZWxsbywg YWxsIQo+Pj4+Cj4+Pj4gQWZ0ZXIgZGlzY3Vzc2luZyB4ZW4temNvcHkgYW5kIGh5cGVyLWRtYWJ1 ZiBbMV0gYXBwcm9hY2hlcwo+Pj4+Cj4+Pj4gaXQgc2VlbXMgdGhhdCB4ZW4temNvcHkgY2FuIGJl IG1hZGUgbm90IGRlcGVuZCBvbiBEUk0gY29yZSBhbnkgbW9yZQo+Pj4+Cj4+Pj4gYW5kIGJlIGRt YS1idWYgY2VudHJpYyAod2hpY2ggaXQgaW4gZmFjdCBpcykuCj4+Pj4KPj4+PiBUaGUgRFJNIGNv ZGUgd2FzIG1vc3RseSB0aGVyZSBmb3IgZG1hLWJ1ZidzIEZEIGltcG9ydC9leHBvcnQKPj4+Pgo+ Pj4+IHdpdGggRFJNIFBSSU1FIFVBUEkgYW5kIHdpdGggRFJNIHVzZS1jYXNlcyBpbiBtaW5kLCBi dXQgaXQgY29tZXMgb3V0IHRoYXQgaWYKPj4+Pgo+Pj4+IHRoZSBwcm9wb3NlZCAyIElPQ1RMcyAo RFJNX1hFTl9aQ09QWV9EVU1CX0ZST01fUkVGUyBhbmQKPj4+PiBEUk1fWEVOX1pDT1BZX0RVTUJf VE9fUkVGUykKPj4+Pgo+Pj4+IGFyZSBleHRlbmRlZCB0byBhbHNvIHByb3ZpZGUgYSBmaWxlIGRl c2NyaXB0b3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgZG1hLWJ1ZiwKPj4+PiB0aGVuCj4+Pj4KPj4+ PiBQUklNRSBzdHVmZiBpbiB0aGUgZHJpdmVyIGlzIG5vdCBuZWVkZWQgYW55bW9yZS4KPj4+Pgo+ Pj4+IFRoYXQgYmVpbmcgc2FpZCwgeGVuLXpjb3B5IGNhbiBzYWZlbHkgYmUgZGV0YWNoZWQgZnJv bSBEUk0gYW5kIG1vdmVkIGZyb20KPj4+Pgo+Pj4+IGRyaXZlcnMvZ3B1L2RybS94ZW4gaW50byBk cml2ZXJzL3hlbi9kbWEtYnVmLWJhY2tlbmQoPykuCj4+Pj4KPj4+PiBUaGlzIGRyaXZlciB0aGVu IGJlY29tZXMgYSB1bml2ZXJzYWwgd2F5IHRvIHR1cm4gYW55IHNoYXJlZCBidWZmZXIgYmV0d2Vl bgo+Pj4+IERvbTAvRG9tRAo+Pj4+Cj4+Pj4gYW5kIERvbVUocykgaW50byBhIGRtYS1idWYsIGUu Zy4gb25lIGNhbiBjcmVhdGUgYSBkbWEtYnVmIGZyb20gYW55IGdyYW50Cj4+Pj4gcmVmZXJlbmNl cwo+Pj4+Cj4+Pj4gb3IgcmVwcmVzZW50IGEgZG1hLWJ1ZiBhcyBncmFudC1yZWZlcmVuY2VzIGZv ciBleHBvcnQuCj4+Pj4KPj4+PiBUaGlzIHdheSB0aGUgZHJpdmVyIGNhbiBiZSB1c2VkIG5vdCBv bmx5IGZvciBEUk0gdXNlLWNhc2VzLCBidXQgYWxzbyBmb3IKPj4+PiBvdGhlcgo+Pj4+Cj4+Pj4g dXNlLWNhc2VzIHdoaWNoIG1heSByZXF1aXJlIHplcm8gY29weWluZyBiZXR3ZWVuIGRvbWFpbnMu Cj4+Pj4KPj4+PiBGb3IgZXhhbXBsZSwgdGhlIHVzZS1jYXNlcyB3ZSBhcmUgYWJvdXQgdG8gd29y ayBpbiB0aGUgbmVhcmVzdCBmdXR1cmUgd2lsbAo+Pj4+IHVzZQo+Pj4+Cj4+Pj4gVjRMLCBlLmcu IHdlIHBsYW4gdG8gc3VwcG9ydCBjYW1lcmFzLCBjb2RlY3MgZXRjLiBhbmQgYWxsIHRoZXNlIHdp bGwgYmVuZWZpdAo+Pj4+Cj4+Pj4gZnJvbSB6ZXJvIGNvcHlpbmcgbXVjaC4gUG90ZW50aWFsbHks IGV2ZW4gYmxvY2svbmV0IGRldmljZXMgbWF5IGJlbmVmaXQsCj4+Pj4KPj4+PiBidXQgdGhpcyBu ZWVkcyBzb21lIGV2YWx1YXRpb24uCj4+Pj4KPj4+Pgo+Pj4+IEkgd291bGQgbG92ZSB0byBoZWFy IGNvbW1lbnRzIGZvciBhdXRob3JzIG9mIHRoZSBoeXBlci1kbWFidWYKPj4+Pgo+Pj4+IGFuZCBY ZW4gY29tbXVuaXR5LCBhcyB3ZWxsIGFzIERSSS1EZXZlbCBhbmQgb3RoZXIgaW50ZXJlc3RlZCBw YXJ0aWVzLgo+Pj4+Cj4+Pj4KPj4+PiBUaGFuayB5b3UsCj4+Pj4KPj4+PiBPbGVrc2FuZHIKPj4+ Pgo+Pj4+Cj4+Pj4gT24gMDMvMjkvMjAxOCAwNDoxOSBQTSwgT2xla3NhbmRyIEFuZHJ1c2hjaGVu a28gd3JvdGU6Cj4+Pj4+IEZyb206IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJf YW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPj4+Pj4KPj4+Pj4gSGVsbG8hCj4+Pj4+Cj4+Pj4+IFdo ZW4gdXNpbmcgWGVuIFBWIERSTSBmcm9udGVuZCBkcml2ZXIgdGhlbiBvbiBiYWNrZW5kIHNpZGUg b25lIHdpbGwgbmVlZAo+Pj4+PiB0byBkbyBjb3B5aW5nIG9mIGRpc3BsYXkgYnVmZmVycycgY29u dGVudHMgKGZpbGxlZCBieSB0aGUKPj4+Pj4gZnJvbnRlbmQncyB1c2VyLXNwYWNlKSBpbnRvIGJ1 ZmZlcnMgYWxsb2NhdGVkIGF0IHRoZSBiYWNrZW5kIHNpZGUuCj4+Pj4+IFRha2luZyBpbnRvIGFj Y291bnQgdGhlIHNpemUgb2YgZGlzcGxheSBidWZmZXJzIGFuZCBmcmFtZXMgcGVyIHNlY29uZHMK Pj4+Pj4gaXQgbWF5IHJlc3VsdCBpbiB1bm5lZWRlZCBodWdlIGRhdGEgYnVzIG9jY3VwYXRpb24g YW5kIHBlcmZvcm1hbmNlIGxvc3MuCj4+Pj4+Cj4+Pj4+IFRoaXMgaGVscGVyIGRyaXZlciBhbGxv d3MgaW1wbGVtZW50aW5nIHplcm8tY29weWluZyB1c2UtY2FzZXMKPj4+Pj4gd2hlbiB1c2luZyBY ZW4gcGFyYS12aXJ0dWFsaXplZCBmcm9udGVuZCBkaXNwbGF5IGRyaXZlciBieQo+Pj4+PiBpbXBs ZW1lbnRpbmcgYSBEUk0vS01TIGhlbHBlciBkcml2ZXIgcnVubmluZyBvbiBiYWNrZW5kJ3Mgc2lk ZS4KPj4+Pj4gSXQgdXRpbGl6ZXMgUFJJTUUgYnVmZmVycyBBUEkgdG8gc2hhcmUgZnJvbnRlbmQn cyBidWZmZXJzIHdpdGgKPj4+Pj4gcGh5c2ljYWwgZGV2aWNlIGRyaXZlcnMgb24gYmFja2VuZCdz IHNpZGU6Cj4+Pj4+Cj4+Pj4+ICAgLSBhIGR1bWIgYnVmZmVyIGNyZWF0ZWQgb24gYmFja2VuZCdz IHNpZGUgY2FuIGJlIHNoYXJlZAo+Pj4+PiAgICAgd2l0aCB0aGUgWGVuIFBWIGZyb250ZW5kIGRy aXZlciwgc28gaXQgZGlyZWN0bHkgd3JpdGVzCj4+Pj4+ICAgICBpbnRvIGJhY2tlbmQncyBkb21h aW4gbWVtb3J5IChpbnRvIHRoZSBidWZmZXIgZXhwb3J0ZWQgZnJvbQo+Pj4+PiAgICAgRFJNL0tN UyBkcml2ZXIgb2YgYSBwaHlzaWNhbCBkaXNwbGF5IGRldmljZSkKPj4+Pj4gICAtIGEgZHVtYiBi dWZmZXIgYWxsb2NhdGVkIGJ5IHRoZSBmcm9udGVuZCBjYW4gYmUgaW1wb3J0ZWQKPj4+Pj4gICAg IGludG8gcGh5c2ljYWwgZGV2aWNlIERSTS9LTVMgZHJpdmVyLCB0aHVzIGFsbG93aW5nIHRvCj4+ Pj4+ICAgICBhY2hpZXZlIG5vIGNvcHlpbmcgYXMgd2VsbAo+Pj4+Pgo+Pj4+PiBGb3IgdGhhdCBy ZWFzb24gbnVtYmVyIG9mIElPQ1RMcyBhcmUgaW50cm9kdWNlZDoKPj4+Pj4gICAtICBEUk1fWEVO X1pDT1BZX0RVTUJfRlJPTV9SRUZTCj4+Pj4+ICAgICAgVGhpcyB3aWxsIGNyZWF0ZSBhIERSTSBk dW1iIGJ1ZmZlciBmcm9tIGdyYW50IHJlZmVyZW5jZXMgcHJvdmlkZWQKPj4+Pj4gICAgICBieSB0 aGUgZnJvbnRlbmQKPj4+Pj4gICAtIERSTV9YRU5fWkNPUFlfRFVNQl9UT19SRUZTCj4+Pj4+ICAg ICBUaGlzIHdpbGwgZ3JhbnQgcmVmZXJlbmNlcyB0byBhIGR1bWIvZGlzcGxheSBidWZmZXIncyBt ZW1vcnkgcHJvdmlkZWQKPj4+Pj4gICAgIGJ5IHRoZSBiYWNrZW5kCj4+Pj4+ICAgLSBEUk1fWEVO X1pDT1BZX0RVTUJfV0FJVF9GUkVFCj4+Pj4+ICAgICBUaGlzIHdpbGwgYmxvY2sgdW50aWwgdGhl IGR1bWIgYnVmZmVyIHdpdGggdGhlIHdhaXQgaGFuZGxlIHByb3ZpZGVkCj4+Pj4+ICAgICBiZSBm cmVlZAo+Pj4+Pgo+Pj4+PiBXaXRoIHRoaXMgaGVscGVyIGRyaXZlciBJIHdhcyBhYmxlIHRvIGRy b3AgQ1BVIHVzYWdlIGZyb20gMTclIHRvIDMlCj4+Pj4+IG9uIFJlbmVzYXMgUi1DYXIgTTMgYm9h cmQuCj4+Pj4+Cj4+Pj4+IFRoaXMgd2FzIHRlc3RlZCB3aXRoIFJlbmVzYXMnIFdheWxhbmQtS01T IGFuZCBiYWNrZW5kIHJ1bm5pbmcgYXMgRFJNIG1hc3Rlci4KPj4+Pj4KPj4+Pj4gVGhhbmsgeW91 LAo+Pj4+PiBPbGVrc2FuZHIKPj4+Pj4KPj4+Pj4gT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gKDEp Ogo+Pj4+PiAgICBkcm0veGVuLXpjb3B5OiBBZGQgWGVuIHplcm8tY29weSBoZWxwZXIgRFJNIGRy aXZlcgo+Pj4+Pgo+Pj4+PiAgIERvY3VtZW50YXRpb24vZ3B1L2RyaXZlcnMucnN0ICAgICAgICAg ICAgICAgfCAgIDEgKwo+Pj4+PiAgIERvY3VtZW50YXRpb24vZ3B1L3hlbi16Y29weS5yc3QgICAg ICAgICAgICAgfCAgMzIgKwo+Pj4+PiAgIGRyaXZlcnMvZ3B1L2RybS94ZW4vS2NvbmZpZyAgICAg ICAgICAgICAgICAgfCAgMjUgKwo+Pj4+PiAgIGRyaXZlcnMvZ3B1L2RybS94ZW4vTWFrZWZpbGUg ICAgICAgICAgICAgICAgfCAgIDUgKwo+Pj4+PiAgIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2Ry bV96Y29weS5jICAgICAgICAgfCA4ODAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+ PiAgIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV96Y29weV9iYWxsb29uLmMgfCAxNTQgKysr KysKPj4+Pj4gICBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1femNvcHlfYmFsbG9vbi5oIHwg IDM4ICsrCj4+Pj4+ICAgaW5jbHVkZS91YXBpL2RybS94ZW5femNvcHlfZHJtLmggICAgICAgICAg ICB8IDEyOSArKysrCj4+Pj4+ICAgOCBmaWxlcyBjaGFuZ2VkLCAxMjY0IGluc2VydGlvbnMoKykK Pj4+Pj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ncHUveGVuLXpjb3B5LnJz dAo+Pj4+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1f emNvcHkuYwo+Pj4+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0veGVuL3hl bl9kcm1femNvcHlfYmFsbG9vbi5jCj4+Pj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS94ZW4veGVuX2RybV96Y29weV9iYWxsb29uLmgKPj4+Pj4gICBjcmVhdGUgbW9kZSAx MDA2NDQgaW5jbHVkZS91YXBpL2RybS94ZW5femNvcHlfZHJtLmgKPj4+Pj4KPj4+PiBbMV0KPj4+ PiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIw MTgtMDIvbXNnMDEyMDIuaHRtbAo+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPj4+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4+IGRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4+IC0tIAo+PiBEYW5pZWwgVmV0dGVyCj4+IFNvZnR3 YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+PiBodHRwOi8vYmxvZy5mZndsbC5jaAoK WzFdIApodHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92NC4xNy1yYzEvc291cmNlL2lu Y2x1ZGUveGVuL2ludGVyZmFjZS9pby9kaXNwbGlmLmgKWzJdIApodHRwczovL2VsaXhpci5ib290 bGluLmNvbS9saW51eC92NC4xNy1yYzEvc291cmNlL2luY2x1ZGUveGVuL2ludGVyZmFjZS9pby9k aXNwbGlmLmgjTDUzOQpbM10gCmh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L3Y0LjE3 LXJjMS9zb3VyY2UvZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jI0wzOQpbNF0gaHR0cHM6Ly9l bGl4aXIuYm9vdGxpbi5jb20vbGludXgvdjQuMTctcmMxL3NvdXJjZS9kcml2ZXJzL3hlbi9nbnRk ZXYuYwpbNV0gCmh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L3Y0LjE3LXJjMS9zb3Vy Y2UvaW5jbHVkZS91YXBpL3hlbi9nbnRkZXYuaApbNl0gaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5j b20vbGludXgvdjQuMTctcmMxL3NvdXJjZS9kcml2ZXJzL3hlbi9iYWxsb29uLmMKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=