From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [RFC] ARM PCI Passthrough design document Date: Mon, 29 May 2017 19:14:55 +0100 Message-ID: <928d5f49-b40b-56ee-f955-0b7122d529e2@linaro.org> References: <61af41e6-a549-7930-efd4-705718d174f8@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dFPC3-0002hY-DA for xen-devel@lists.xenproject.org; Mon, 29 May 2017 18:15:03 +0000 Received: by mail-wm0-f48.google.com with SMTP id 7so64590104wmo.1 for ; Mon, 29 May 2017 11:15:01 -0700 (PDT) In-Reply-To: <61af41e6-a549-7930-efd4-705718d174f8@caviumnetworks.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Manish Jaggi , Stefano Stabellini Cc: edgar.iglesias@xilinx.com, okaya@qti.qualcomm.com, Wei Chen , Steve Capper , Andre Przywara , manish.jaggi@caviumnetworks.com, punit.agrawal@arm.com, vikrams@qti.qualcomm.com, "Goel, Sameer" , xen-devel , Dave P Martin , Vijaya Kumar K , roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org CgpPbiAwNS8yOS8yMDE3IDAzOjMwIEFNLCBNYW5pc2ggSmFnZ2kgd3JvdGU6Cj4gSGkgSnVsaWVu LAoKSGVsbG8gTWFuaXNoLAoKPiBPbiA1LzI2LzIwMTcgMTA6NDQgUE0sIEp1bGllbiBHcmFsbCB3 cm90ZToKPj4gUENJIHBhc3MtdGhyb3VnaCBhbGxvd3MgdGhlIGd1ZXN0IHRvIHJlY2VpdmUgZnVs bCBjb250cm9sIG9mIHBoeXNpY2FsIFBDSQo+PiBkZXZpY2VzLiBUaGlzIG1lYW5zIHRoZSBndWVz dCB3aWxsIGhhdmUgZnVsbCBhbmQgZGlyZWN0IGFjY2VzcyB0byB0aGUgUENJCj4+IGRldmljZS4K Pj4KPj4gQVJNIGlzIHN1cHBvcnRpbmcgYSBraW5kIG9mIGd1ZXN0IHRoYXQgZXhwbG9pdHMgYXMg bXVjaCBhcyBwb3NzaWJsZQo+PiB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0IGluIGhhcmR3YXJlLiBU aGUgZ3Vlc3Qgd2lsbCByZWx5IG9uIFBWIGRyaXZlciBvbmx5Cj4+IGZvciBJTyAoZS5nIGJsb2Nr LCBuZXR3b3JrKSBhbmQgaW50ZXJydXB0cyB3aWxsIGNvbWUgdGhyb3VnaCB0aGUKPj4gdmlydHVh bGl6ZWQKPj4gaW50ZXJydXB0IGNvbnRyb2xsZXIsIHRoZXJlZm9yZSB0aGVyZSBhcmUgbm8gYmln IGNoYW5nZXMgcmVxdWlyZWQKPj4gd2l0aGluIHRoZQo+PiBrZXJuZWwuCj4+Cj4+IEFzIGEgY29u c2VxdWVuY2UsIGl0IHdvdWxkIGJlIHBvc3NpYmxlIHRvIHJlcGxhY2UgUFYgZHJpdmVycyBieQo+ PiBhc3NpZ25pbmcgcmVhbAo+PiBkZXZpY2VzIHRvIHRoZSBndWVzdCBmb3IgSS9PIGFjY2Vzcy4g WGVuIG9uIEFSTSB3b3VsZCB0aGVyZWZvcmUgYmUKPj4gYWJsZSB0bwo+PiBydW4gdW5tb2RpZmll ZCBvcGVyYXRpbmcgc3lzdGVtLgo+Pgo+PiBUbyBhY2hpZXZlIHRoaXMgZ29hbCwgaXQgbG9va3Mg bW9yZSBzZW5zaWJsZSB0byBnbyB0b3dhcmRzIGVtdWxhdGluZyB0aGUKPj4gaG9zdCBicmlkZ2Ug KHRoZXJlIHdpbGwgYmUgbW9yZSBkZXRhaWxzIGxhdGVyKS4KPiBJSVVDIHRoaXMgbWVhbnMgdGhh dCBkb21VIHdvdWxkIGhhdmUgYW4gZW11bGF0ZWQgaG9zdCBicmlkZ2UgYW5kIGRvbTAKPiB3aWxs IHNlZSB0aGUgYWN0dWFsIGhvc3QgYnJpZGdlPwoKWW91IGRvbid0IHdhbnQgdGhlIGhhcmR3YXJl IGRvbWFpbiBhbmQgWGVuIGFjY2VzcyB0aGUgY29uZmlndXJhdGlvbiAKc3BhY2UgYXQgdGhlIHNh bWUgdGltZS4gU28gaWYgWGVuIGlzIGluIGNoYXJnZSBvZiB0aGUgaG9zdCBicmlkZ2UsIHRoZW4g CmFuIGVtdWxhdGVkIGhvc3QgYnJpZGdlIHNob3VsZCBiZSBleHBvc2VkIHRvIHRoZSBoYXJkd2Fy ZS4KCkFsdGhvdWdoLCB0aGlzIGlzIGRlcGVuZGluZyBvbiB3aG8gaXMgaW4gY2hhcmdlIG9mIHRo ZSB0aGUgaG9zdCBicmlkZ2UuIApBcyB5b3UgbWF5IGhhdmUgbm90aWNlZCwgdGhpcyBkZXNpZ24g ZG9jdW1lbnQgaXMgcHJvcG9zaW5nIHR3byB3YXlzIHRvIApoYW5kbGUgY29uZmlndXJhdGlvbiBz cGFjZSBhY2Nlc3MuIEF0IHRoZSBtb21lbnQgYW55IGdlbmVyaWMgaG9zdCBicmlkZ2UgCihzZWUg dGhlIGRlZmluaXRpb24gaW4gdGhlIGRlc2lnbiBkb2N1bWVudCkgd2lsbCBiZSBoYW5kbGVkIGlu IFhlbiBhbmQgCnRoZSBoYXJkd2FyZSBkb21haW4gd2lsbCBoYXZlIGFuIGVtdWxhdGVkIGhvc3Qg YnJpZGdlLgoKSWYgeW91ciBob3N0IGJyaWRnZXMgaXMgbm90IGEgZ2VuZXJpYyBvbmUsIHRoZW4g dGhlIGhhcmR3YXJlIGRvbWFpbiB3aWxsIApiZSAgaW4gY2hhcmdlIG9mIHRoZSBob3N0IGJyaWRn ZXMsIGFueSBjb25maWd1cmF0aW9uIGFjY2VzcyBmcm9tIFhlbiAKd2lsbCBiZSBmb3J3YXJkIHRv IHRoZSBoYXJkd2FyZSBkb21haW4uCgpBdCB0aGUgbW9tZW50LCBhcyBwYXJ0IG9mIHRoZSBmaXJz dCBpbXBsZW1lbnRhdGlvbiwgd2UgYXJlIG9ubHkgbG9va2luZyAKdG8gaW1wbGVtZW50IGEgZ2Vu ZXJpYyBob3N0IGJyaWRnZSBpbiBYZW4uIFdlIHdpbGwgZGVjaWRlIG9uIGNhc2UgYnkgCmNhc2Ug YmFzaXMgZm9yIGFsbCB0aGUgb3RoZXIgaG9zdCBicmlkZ2VzIHdoZXRoZXIgd2Ugd2FudCB0byBo YXZlIHRoZSAKZHJpdmVyIGluIFhlbi4KClsuLi5dCgo+PiAjIyBJT01NVQo+Pgo+PiBUaGUgSU9N TVUgd2lsbCBiZSB1c2VkIHRvIGlzb2xhdGUgdGhlIFBDSSBkZXZpY2Ugd2hlbiBhY2Nlc3Npbmcg dGhlCj4+IG1lbW9yeSAoZS5nCj4+IERNQSBhbmQgTVNJIERvb3JiZWxscykuIE9mdGVuIHRoZSBJ T01NVSB3aWxsIGJlIGNvbmZpZ3VyZWQgdXNpbmcgYQo+PiBNYXN0ZXJJRAo+PiAoYWthIFN0cmVh bUlEIGZvciBBUk0gU01NVSkgIHRoYXQgY2FuIGJlIGRlZHVjZWQgZnJvbSB0aGUgU0JERiB3aXRo Cj4+IHRoZSBoZWxwCj4+IG9mIHRoZSBmaXJtd2FyZSB0YWJsZXMgKHNlZSBiZWxvdykuCj4+Cj4+ IFdoaWxzdCBpbiB0aGVvcnksIGFsbCB0aGUgbWVtb3J5IHRyYW5zYWN0aW9ucyBpc3N1ZWQgYnkg YSBQQ0kgZGV2aWNlCj4+IHNob3VsZAo+PiBnbyB0aHJvdWdoIHRoZSBJT01NVSwgb24gY2VydGFp biBwbGF0Zm9ybXMgc29tZSBvZiB0aGUgbWVtb3J5Cj4+IHRyYW5zYWN0aW9uIG1heQo+PiBub3Qg cmVhY2ggdGhlIElPTU1VIGJlY2F1c2UgdGhleSBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGhvc3Qg YnJpZGdlLiBGb3IKPj4gaW5zdGFuY2UsIHRoaXMgY291bGQgaGFwcGVuIGlmIHRoZSBNU0kgZG9v cmJlbGwgaXMgYnVpbHQgaW50byB0aGUgUENJCj4+IGhvc3QKPj4gYnJpZGdlIG9yIGZvciBQMlAg dHJhZmZpYy4gU2VlIFs2XSBmb3IgbW9yZSBkZXRhaWxzLgo+Pgo+PiBYWFg6IEkgdGhpbmsgdGhp cyBjb3VsZCBiZSBzb2x2ZWQgYnkgdXNpbmcgZGlyZWN0IG1hcHBpbmcgKGUuZyBHRk4gPT0KPj4g TUZOKSwKPj4gdGhpcyB3b3VsZCBtZWFuIHRoZSBndWVzdCBtZW1vcnkgbGF5b3V0IHdvdWxkIGJl IHNpbWlsYXIgdG8gdGhlIGhvc3QKPj4gb25lIHdoZW4KPj4gUENJIGRldmljZXMgd2lsbCBiZSBw YXNzLXRocm91Z2hlZCA9PiBEZXRhaWwgaXQuCj4gSW4gdGhlIGV4YW1wbGUgZ2l2ZW4gaW4gdGhl IElPUlQgc3BlYywgZm9yIHBjaSBkZXZpY2VzIG5vdCBiZWhpbmQgYW4gU01NVSwKPiBob3cgd291 bGQgdGhlIHdyaXRlcyBmcm9tIHRoZSBkZXZpY2UgYmUgcHJvdGVjdGVkLgoKSSByZWFsaXplIHRo ZSBYWFggcGFyYWdyYXBoIGlzIHF1aXRlIGNvbmZ1c2luZy4gSSBhbSBub3QgdHJ5aW5nIHRvIHNv bHZlIAp0aGUgcHJvYmxlbSB3aGVyZSBQQ0kgZGV2aWNlcyBhcmUgbm90IHByb3RlY3RlZCBiZWhp bmQgYW4gU01NVSBidXQgCnBsYXRmb3JtIHdoZXJlIHNvbWUgdHJhbnNhY3Rpb25zIChlLmcgUDJQ IG9yIE1TSSBkb29yYmVsbCBhY2Nlc3MpIGFyZSAKYnktcGFzc2luZyB0aGUgU01NVS4KCllvdSBt YXkgc3RpbGwgd2FudCB0byBhbGxvdyBQQ0kgcGFzc3Rocm91Z2ggaW4gdGhhdCBjYXNlLCBiZWNh dXNlIHlvdSAKa25vdyB0aGF0IFAyUCBjYW5ub3QgYmUgZG9uZSAob3IgcG90ZW50aWFsbHkgZGlz YWJsZWQpIGFuZCBNU0kgZG9vcmJlbGwgCmFjY2VzcyBpcyBwcm90ZWN0ZWQgKGZvciBpbnN0YW5j ZSBhIHdyaXRlIGluIHRoZSBJVFMgZG9vcmJlbGwgd2lsbCBiZSAKdGFnZ2VkIHdpdGggdGhlIGRl dmljZSBieSB0aGUgaGFyZHdhcmUpLiBJbiBvcmRlciB0byBzdXBwb3J0IHN1Y2ggCnBsYXRmb3Jt IHlvdSBuZWVkIHRvIGRpcmVjdCBtYXAgdGhlIGRvb3JiZWwgKGUuZyBHRk4gPT0gTUZOKSBhbmQg Y2FydmUgCm91dCB0aGUgUDJQIHJlZ2lvbiBmcm9tIHRoZSBndWVzdCBtZW1vcnkgbWFwLiBIZW5j ZSB0aGUgc3VnZ2VzdGlvbiB0byAKcmUtdXNlIHRoZSBob3N0IG1lbW9yeSBsYXlvdXQgZm9yIHRo ZSBndWVzdC4KCk5vdGUgdGhhdCBpdCBkb2VzIG5vdCBtZWFuIHRoZSBSQU0gcmVnaW9uIHdpbGwg YmUgZGlyZWN0IG1hcHBlZC4gSXQgaXMgCm9ubHkgdGhlcmUgdG8gZWFzZSBjYXJ2aW5nIG91dCBt ZW1vcnkgcmVnaW9uIGJ5LXBhc3NlZCBieSB0aGUgU01NVS4KClsuLi5dCgo+PiAjIyBBQ1BJCj4+ Cj4+ICMjIyBIb3N0IGJyaWRnZXMKPj4KPj4gVGhlIHN0YXRpYyB0YWJsZSBNQ0ZHIChzZWUgNC4y IGluIFsxXSkgd2lsbCBkZXNjcmliZSB0aGUgaG9zdCBicmlkZ2VzCj4+IGF2YWlsYWJsZQo+PiBh dCBib290IGFuZCBzdXBwb3J0aW5nIEVDQU0uIFVuZm9ydHVuYXRlbHksIHRoZXJlIGFyZSBwbGF0 Zm9ybXMgb3V0IHRoZXJlCj4+IChzZWUgWzJdKSB0aGF0IHJlLXVzZSBNQ0ZHIHRvIGRlc2NyaWJl IGhvc3QgYnJpZGdlIHRoYXQgYXJlIG5vdCBmdWxseQo+PiBFQ0FNCj4+IGNvbXBhdGlibGUuCj4+ Cj4+IFRoaXMgbWVhbnMgdGhhdCBYZW4gbmVlZHMgdG8gYWNjb3VudCBmb3IgcG9zc2libGUgcXVp cmtzIGluIHRoZSBob3N0Cj4+IGJyaWRnZS4KPj4gVGhlIExpbnV4IGNvbW11bml0eSBhcmUgd29y a2luZyBvbiBhIHBhdGNoIHNlcmllcyBmb3IgdGhpcywgc2VlIFsyXQo+PiBhbmQgWzNdLAo+PiB3 aGVyZSBxdWlya3Mgd2lsbCBiZSBkZXRlY3RlZCB3aXRoOgo+PiAgICAgICogT0VNIElECj4+ICAg ICAgKiBPRU0gVGFibGUgSUQKPj4gICAgICAqIE9FTSBSZXZpc2lvbgo+PiAgICAgICogUENJIFNl Z21lbnQKPj4gICAgICAqIFBDSSBidXMgbnVtYmVyIHJhbmdlICh3aWxkY2FyZCBhbGxvd2VkKQo+ Pgo+PiBCYXNlZCBvbiB3aGF0IExpbnV4IGlzIGN1cnJlbnRseSBkb2luZywgdGhlcmUgYXJlIHR3 byBraW5kIG9mIHF1aXJrczoKPj4gICAgICAqIEFjY2Vzc2VzIHRvIHRoZSBjb25maWd1cmF0aW9u IHNwYWNlIG9mIGNlcnRhaW4gc2l6ZXMgYXJlIG5vdAo+PiBhbGxvd2VkCj4+ICAgICAgKiBBIHNw ZWNpZmljIGRyaXZlciBpcyBuZWNlc3NhcnkgZm9yIGRyaXZpbmcgdGhlIGhvc3QgYnJpZGdlCj4+ Cj4+IFRoZSBmb3JtZXIgaXMgc3RyYWlnaHRmb3J3YXJkIHRvIHNvbHZlIGJ1dCB0aGUgbGF0dGVy IHdpbGwgcmVxdWlyZQo+PiBtb3JlIHRob3VnaHQuCj4+IEluc3RhbnRpYXRpb24gb2YgYSBzcGVj aWZpYyBkcml2ZXIgZm9yIHRoZSBob3N0IGNvbnRyb2xsZXIgY2FuIGJlCj4+IGVhc2lseSBkb25l Cj4+IGlmIFhlbiBoYXMgdGhlIGluZm9ybWF0aW9uIHRvIGRldGVjdCBpdC4KPiBTbyBYZW4gd291 bGQgcGFyc2UgdGhlIE1DRkcgdG8gZmluZCBhIGhiLCB0aGVuIG1hcCB0aGUgY29uZmlnIHNwYWNl IGluCj4gZG9tMCBzdGFnZTIgPwo+IGFuZCB0aGVuIHByb3ZpZGUgdGhlIHNhbWUgTUNGRyB0byBk b20wPwoKVGhpcyBpcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBJIGhhdmUgYmVlbiByZWFsbHkg Y2FyZWZ1bCBzbyBmYXIgdG8gCmxlYXZlIHRoZSBpbXBsZW1lbnRhdGlvbiBvcGVuIGFzIGl0IGRv ZXMgbm90IG1hdHRlciBhdCB0aGlzIHN0YWdlIGhvdyB3ZSAKYXJlIGdvaW5nIHRvIGltcGxlbWVu dCBpdCBpbiBYZW4uCgpbLi4uXQoKPj4gIyMgRGlzY292ZXJpbmcgYW5kIHJlZ2lzdGVyaW5nIGhv c3QgYnJpZGdlCj4+Cj4+IFRoZSBhcHByb2FjaCB0YWtlbiBpbiB0aGUgZG9jdW1lbnQgd2lsbCBy ZXF1aXJlIGNvbW11bmljYXRpb24gYmV0d2Vlbgo+PiBYZW4gYW5kCj4+IHRoZSBoYXJkd2FyZSBk b21haW4uIEluIHRoaXMgY2FzZSwgdGhleSB3b3VsZCBuZWVkIHRvIGFncmVlIG9uIHRoZQo+PiBz ZWdtZW50Cj4+IG51bWJlciBhc3NvY2lhdGVkIHRvIGFuIGhvc3QgYnJpZGdlLiBIb3dldmVyLCB0 aGlzIG51bWJlciBpcyBub3QKPj4gYXZhaWxhYmxlIGluCj4+IHRoZSBEZXZpY2UgVHJlZSBjYXNl Lgo+Pgo+PiBUaGUgaGFyZHdhcmUgZG9tYWluIHdpbGwgcmVnaXN0ZXIgbmV3IGhvc3QgYnJpZGdl cyB1c2luZyB0aGUgZXhpc3RpbmcKPj4gaHlwZXJjYWxsCj4+IFBIWVNERVZfbW1jZmdfcmVzZXJ2 ZWQ6Cj4+Cj4+ICNkZWZpbmUgWEVOX1BDSV9NTUNGR19SRVNFUlZFRCAxCj4+Cj4+IHN0cnVjdCBw aHlzZGV2X3BjaV9tbWNmZ19yZXNlcnZlZCB7Cj4+ICAgICAgLyogSU4gKi8KPj4gICAgICB1aW50 NjRfdCAgICBhZGRyZXNzOwo+PiAgICAgIHVpbnQxNl90ICAgIHNlZ21lbnQ7Cj4+ICAgICAgLyog UmFuZ2Ugb2YgYnVzIHN1cHBvcnRlZCBieSB0aGUgaG9zdCBicmlkZ2UgKi8KPj4gICAgICB1aW50 OF90ICAgICBzdGFydF9idXM7Cj4+ICAgICAgdWludDhfdCAgICAgZW5kX2J1czsKPj4KPj4gICAg ICB1aW50MzJfdCAgICBmbGFnczsKPj4gfQo+IFNvIHRoaXMgaHlwZXJjYWxsIGlzIG5vdCByZXF1 aXJlZCBmb3IgQUNQST8KClRoaXMgaXMgbm90IERUIHNwZWNpZmljIGFzIGV2ZW4gb24gQUNQSSB0 aGVyZSBhcmUgcGxhdGZvcm0gbm90IGZ1bGx5IApFQ0FNIGNvbXBsaWFudC4gQXMgSSBzYWlkIGFi b3ZlLCB3ZSB3aWxsIG5lZWQgdG8gZGVjaWRlIHdoZXRoZXIgd2Ugd2FudCAKdG8gc3VwcG9ydCBu b24tRUNBTSBjb21wbGlhbnQgaG9zdCBicmlkZ2VzIChlLmcgYWxsIGhvc3QgYnJpZGdlcyBoYXZl IGEgCnNwZWNpZmljIGRyaXZlcnMpIGluIFhlbi4gTGlrZWx5IHRoaXMgd2lsbCBiZSBvbiBjYXNl IGJ5IGNhc2UgYmFzaXMuCgpbLi4uXQoKPj4gIyMgRGlzY292ZXJpbmcgYW5kIHJlZ2lzdGVyaW5n IFBDSSBkZXZpY2VzCj4+Cj4+IFRoZSBoYXJkd2FyZSBkb21haW4gd2lsbCBzY2FuIHRoZSBob3N0 IGJyaWRnZSB0byBmaW5kIHRoZSBsaXN0IG9mIFBDSQo+PiBkZXZpY2VzCj4+IGF2YWlsYWJsZSBh bmQgdGhlbiByZXBvcnQgaXQgdG8gWGVuIHVzaW5nIHRoZSBleGlzdGluZyBoeXBlcmNhbGwKPj4g UEhZU0RFVl9wY2lfZGV2aWNlX2FkZDoKPj4KPj4gI2RlZmluZSBYRU5fUENJX0RFVl9FWFRGTiAg IDB4MQo+PiAjZGVmaW5lIFhFTl9QQ0lfREVWX1ZJUlRGTiAgMHgyCj4+ICNkZWZpbmUgWEVOX1BD SV9ERVZfUFhNICAgICAweDMKPj4KPj4gc3RydWN0IHBoeXNkZXZfcGNpX2RldmljZV9hZGQgewo+ PiAgICAgIC8qIElOICovCj4+ICAgICAgdWludDE2X3QgICAgc2VnOwo+PiAgICAgIHVpbnQ4X3Qg ICAgIGJ1czsKPj4gICAgICB1aW50OF90ICAgICBkZXZmbjsKPj4gICAgICB1aW50MzJfdCAgICBm bGFnczsKPj4gICAgICBzdHJ1Y3Qgewo+PiAgICAgICAgICB1aW50OF90IGJ1czsKPj4gICAgICAg ICAgdWludDhfdCBkZXZmbjsKPj4gICAgICB9IHBoeXNmbjsKPj4gICAgICAvKgo+PiAgICAgICAq IE9wdGlvbmFsIHBhcmFtZXRlcnMgYXJyYXkuCj4+ICAgICAgICogRmlyc3QgZWxlbWVudCAoWzBd KSBpcyBQWE0gZG9tYWluIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV2aWNlIChpZgo+PiAgICAgICAq IFhFTl9QQ0lfREVWX1BYTSBpcyBzZXQpCj4+ICAgICAgICovCj4+ICAgICAgdWludDMyX3Qgb3B0 YXJyWzBdOwo+PiB9Cj4gRm9yIG1hcHBpbmcgdGhlIE1NSU8gc3BhY2Ugb2YgdGhlIGRldmljZSBp biBTdGFnZTIsIHdlIG5lZWQgdG8gYWRkCj4gc3VwcG9ydCBpbiBYZW4gLyB2aWEgYSBtYXAgaHlw ZXJjYWxsIGluIGxpbnV4L2RyaXZlcnMveGVuL3BjaS5jCgpNYXBwaW5nIE1NSU8gc3BhY2UgaW4g c3RhZ2UtMiBpcyBub3QgUENJIHNwZWNpZmljIGFuZCBhbHJlYWR5IGFkZHJlc3NlZCAKaW4gWGVu IDQuOSAoc2VlIGNvbW1pdCA4MGY5YzMxICJ4ZW4vYXJtOiBhY3BpOiBNYXAgTU1JTyBvbiBmYXVs dCBpbiAKc3RhZ2UtMiBwYWdlIHRhYmxlIGZvciB0aGUgaGFyZHdhcmUgZG9tYWluIikuIFNvIEkg ZG9uJ3QgdW5kZXJzdGFuZCB3aHkgCndlIHNob3VsZCBjYXJlIGFib3V0IHRoYXQgaGVyZS4uLgoK UmVnYXJkcywKCi0tIApKdWxpZW4gR3JhbGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=