From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id EF732590C for ; Fri, 31 Oct 2014 00:14:02 +0100 (CET) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP; 30 Oct 2014 16:22:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.97,862,1389772800"; d="scan'208";a="408781837" Received: from pgsmsx103.gar.corp.intel.com ([10.221.44.82]) by FMSMGA003.fm.intel.com with ESMTP; 30 Oct 2014 16:14:48 -0700 Received: from pgsmsx102.gar.corp.intel.com (10.221.44.80) by PGSMSX103.gar.corp.intel.com (10.221.44.82) with Microsoft SMTP Server (TLS) id 14.3.195.1; Fri, 31 Oct 2014 07:22:57 +0800 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by PGSMSX102.gar.corp.intel.com (10.221.44.80) with Microsoft SMTP Server (TLS) id 14.3.195.1; Fri, 31 Oct 2014 07:22:57 +0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.174]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.13]) with mapi id 14.03.0195.001; Fri, 31 Oct 2014 07:22:53 +0800 From: "Zhou, Danny" To: Shivapriya Hiremath , Alex Markuze Thread-Topic: [dpdk-dev] Why do we need iommu=pt? Thread-Index: AQHP7LEp5dzdhwxxfkmKddhNzQeSq5w5DgAAgACUvgCAAJzpAIAAp4NQgABO4oCAABWfAIAA73JwgAd8D4CABZ4zQA== Date: Thu, 30 Oct 2014 23:22:52 +0000 Message-ID: References: In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] Why do we need iommu=pt? X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Oct 2014 23:14:03 -0000 U2hpdmFwcml5YSwgQWxleA0KDQpUaGVyZSBpcyBvYnZpb3VzIHBlcmZvcm1hbmNlICh1cCB0byA0 MCUgcGVyZi4gZHJvcCkgaW1wYWN0IHRvIERQREsgNjRCIHNtYWxsIHBhY2tldCBwZXJmb3JtYW5j ZSB3aGVuIOKAnGlvbW11ID0gb27igJ0gb24gU2FuZHlicmlkZ2UsIGR1ZSB0byBrbm93biBpc3N1 ZSBvbiBpdHMgSU9UQkwgaHVnZSBwYWdlIHN1cHBvcnQuIElmIHlvdSBjb25maWcga2VybmVsIHBh cmFtZXRlciB3aXRoIOKAnGlvbW11ID0gcHTigJ0gb24gU2FuZHlCcmlkZ2UsICBvciB1cGdyYWRl IHlvdXIgcHJvY2VzcyB0byBJdnlCcmlkZ2UvSGFzd2VsbCwgdGhlcmUgaXMgTk8gcGVyZm9ybWFu Y2UgaW1wYWN0IGZvciAxMEcgTklDLg0KDQotRGFubnkNCg0KRnJvbTogU2hpdmFwcml5YSBIaXJl bWF0aCBbbWFpbHRvOnNoaXZwcmkuYkBnbWFpbC5jb21dIA0KU2VudDogVHVlc2RheSwgT2N0b2Jl ciAyOCwgMjAxNCAxOjI4IEFNDQpUbzogWmhvdSwgRGFubnkNCkNjOiBkZXZAZHBkay5vcmcNClN1 YmplY3Q6IFJlOiBbZHBkay1kZXZdIFdoeSBkbyB3ZSBuZWVkIGlvbW11PXB0Pw0KDQpIaSBEYW5u eSwNCg0KWW91ciByZXBseSB3YXMgdmVyeSBoZWxwZnVsIGluIHVuZGVyc3RhbmRpbmcgdGhlIGlt cGFjdC4gQ2FuIHlvdSBwbGVhc2UgdGVsbCB1cyBpZiB5b3Ugc2F3IGFueSBwZXJmb3JtYW5jZSBp bXBhY3QgdG8gRFBESyB3aGVuIGlvbW11PW9uID/CoA0KDQotU2hpdmFwcml5YQ0KDQoNCk9uIFdl ZCwgT2N0IDIyLCAyMDE0IGF0IDg6MjEgQU0sIFpob3UsIERhbm55IDxkYW5ueS56aG91QGludGVs LmNvbT4gd3JvdGU6DQpFY2hvIEN1bm1pbmcgYW5kIHdlIGRpZCBub3Qgc2VlIG9idmlvdXMgcGVy Zm9ybWFuY2UgaW1wYWN0IHdoZW4gaW9tbXUgPSBwdCBpcyB1c2VkIGRlc3BpdGUgb2YNCmlnYl91 aW8gb3IgVkZJTyBpcyB1c2VkLg0KDQpBbGV4LA0KVGhlIG1hcCBhbmQgdW1hcCBvcGVyYXRpb24g Zm9yIGVhY2ggZS9pbmdyZXNzIHBhY2tldCBpcyBkb25lIGJ5IGh3IHJhdGhlciB0aGFuIHN3LCBz bw0KcGVyZm9ybWFuY2UgaW1wYWN0IHRvIERQREsgc2hvdWxkIGJlIG1pbmltdW0gaW4gbXkgbWlu ZC4gSWYgaXQgYWN0dWFsbHkgaW1wYWNzdCBwZXJmLCBzYXkgb24gMTAwRyBOSUMsDQpJIGFtIHN1 cmUgaXQgd2lsbCBiZSByZXNvbHZlZCBpbiBuZXh0IGdlbmVyYXRpb24gSW50ZWwgc2lsaWNvbi4g V2Ugd2lsbCBiZSBwZXJmb3JtaW5nIHNvbWUgcGVyZm9ybWFuY2UNCnRlc3RzIHdpdGggaW9tbXUg PSBvbiB0byBzZWUgYW55IHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uLiBJIGNhbm5vdCBzaGFyZSB0 aGUgZGV0YWlsZWQgcGVyZm9ybWFuY2UNCnJlc3VsdCBoZXJlIG9uIHRoZSBjb21tdW5pdHksIGJ1 dCBJIGNvdWxkIHRlbGwgaWYgaXQgcmVhbGx5IGJyaW5nIG5lZ2F0aXZlIHBlcmZvcm1hbmNlIGlt cGFjdCB0byBEUERLLg0KUGxlYXNlIHN0YXkgdHVuZWQuDQoNCkFsZXgsDQoNCj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGlhbmcsIEN1bm1pbmcNCj4gU2VudDogV2VkbmVz ZGF5LCBPY3RvYmVyIDIyLCAyMDE0IDQ6NTMgUE0NCj4gVG86IGFsZXg7IFpob3UsIERhbm55DQo+ IENjOiBkZXZAZHBkay5vcmcNCj4gU3ViamVjdDogUkU6IFtkcGRrLWRldl0gV2h5IGRvIHdlIG5l ZWQgaW9tbXU9cHQ/DQo+DQo+IEkgdGhpbmtzIGl0J3MgYSBnb29kIHBvaW50IHVzaW5nIGRtYV9h ZGRyIHJhdGhlciB0aGFuIHBoeXNfYWRkci4NCj4gV2l0aG91dCBpb21tdSwgdGhlIHZhbHVlIG9m IHRoZW0gYXJlIHRoZSBzYW1lLg0KPiBXaXRoIGlvbW11LCB0aGUgZG1hX2FkZHIgdmFsdWUgZXF1 YWwgdG8gdGhlIGlvdmEuDQo+IEl0J3Mgbm90IGFsbCBmb3IgRFBESyB3b3JraW5nIHdpdGggaW9t bXUgYnV0IG5vdCBwYXNzIHRocm91Z2guDQo+DQo+IFdlIGtub3cgZWFjaCBpb3ZhIGJlbG9uZ3Mg dG8gb25lIGlvbW11IGRvbWFpbi4NCj4gQW5kIGVhY2ggZGV2aWNlIGNhbiBhdHRhY2ggdG8gb25l IGRvbWFpbi4NCj4gSXQgbWVhbnMgdGhlIGlvdmEgd2lsbCBoYXZlIGNvdXBsaW5nIHJlbGF0aW9u c2hpcCB3aXRoIGRvbWFpbi9kZXZpY2UuDQo+DQo+IExvb2tpbmcgYmFjayB0byBEUERLIGRlc2Ny aXB0b3IgcmluZywgaXQncyBhbGwgcmlnaHQsIGFscmVhZHkgY291cGxpbmcgd2l0aCBkZXZpY2Uu DQo+IEJ1dCBpZiBmb3IgbWJ1ZiBtZW1wb29sLCBpbiBtb3N0IGNhc2VzLCBpdCdzIHNoYXJlZCBi eSBtdWx0aXBsZSBwb3J0cy4NCj4gU28gaWYga2VlcGluZyB0aGUgd2F5LCBhbGwgdGhvc2UgcG9y dHMvZGV2aWNlIG5lZWQgdG8gcHV0IGludG8gdGhlIHNhbWUgaW9tbXUgZG9tYWluLg0KPiBBbmQg dGhlIG1lbXBvb2wgaGFzIGF0dGFjaCB0byBzcGVjaWZpYyBkb21haW4sIGJ1dCBub3QganVzdCB0 aGUgZGV2aWNlLg0KPiBPbiB0aGlzIHRpbWUsIGlvbW11IGRvbWFpbiBubyBsb25nZXIgYmUgdHJh bnNwYXJlbnQgaW4gRFBESy4NCj4gVmZpbyBwcm92aWRlIHRoZSB2ZXJicyB0byBjb250cm9sIGRv bWFpbiwgd2Ugc3RpbGwgbmVlZCBsaWJyYXJ5IHRvIG1hbmFnZXIgc3VjaCBkb21haW4gd2l0aCBt ZW1wb29sLg0KPg0KPiBBbGwgdGhhdCBvdmVyaGVhZCBqdXN0IG1ha2UgRFBESyB3b3JrcyB3aXRo IGlvbW11IGluIGhvc3QsIGJ1dCByZW1lbWJlciBwdCBhbHdheXMgd29ya3MuDQo+IFRoZSBpc29s YXRpb24gb2YgZGV2aWNlcyBtYWlubHkgZm9yIHNlY3VyaXR5IGNvbmNlcm4uDQo+IElmIGl0J3Mg bm90IG5lY2Vzc2FyeSwgcHQgZGVmaW5pdGVseSBpcyBhIGdvb2QgY2hvaWNlIHdpdGhvdXQgcGVy Zm9ybWFuY2UgaW1wYWN0Lg0KPg0KPiBGb3IgdGhvc2Ugc2VsZi1pbXBsZW1lbnRlZCBQTUQgdXNp bmcgdGhlIERNQSBrZXJuZWwgaW50ZXJmYWNlIHRvIHNldCB1cCBpdHMgbWFwcGluZ3MgYXBwcm9w cmlhdGVseS4NCj4gSXQgZG9uJ3QgcmVxdWlyZSAiaW9tbXU9cHQiLiBUaGUgZGVmYXVsdCBvcHRp b24gImlvbW11PW9uIiBhbHNvIHdvcmtzLg0KPg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4gRnJvbTogZGV2IFttYWlsdG86ZGV2LWJvdW5jZXNAZHBkay5vcmddIE9uIEJlaGFs ZiBPZiBhbGV4DQo+ID4gU2VudDogV2VkbmVzZGF5LCBPY3RvYmVyIDIyLCAyMDE0IDM6MzYgUE0N Cj4gPiBUbzogWmhvdSwgRGFubnkNCj4gPiBDYzogZGV2QGRwZGsub3JnDQo+ID4gU3ViamVjdDog UmU6IFtkcGRrLWRldl0gV2h5IGRvIHdlIG5lZWQgaW9tbXU9cHQ/DQo+ID4NCj4gPiBTaGl2YS4N Cj4gPiBUaGUgY29zdCBvZiBkaXNhYmxpbmcgaW9tbXU9cHQgd2hlbiBpbnRlbF9pb21tdT1vbiBp cyBkaXJlLiBEUERLIHdvbid0IHdvcmsNCj4gPiBhcyB0aGUgUlgvVFggZGVzY3JpcHRvcnMgd2ls bCBiZSB1c2VsZXNzLg0KPiA+IEFueSBkYW0gYWNjZXNzIGJ5IHRoZSBkZXZpY2Ugd2lsbCBiZSBk cm9wcGVkIGFzIG5vIGRhbS1tYXBwaW5nIHdpbGwgZXhpc3RzLg0KPiA+DQo+ID4gRGFubnkuDQo+ ID4gVGhlIElPTU1VIGh1cnRzIHBlcmZvcm1hbmNlIGluIGtlcm5lbCBkcml2ZXJzIHdoaWNoIHBl cmZvcm0gYSBtYXAgYW5kIHVtYXANCj4gPiBvcGVyYXRpb24gZm9yIGVhY2ggZS9pbmdyZXNzIHBh Y2tldC4NCj4gPiBUaGUgY29zdHMgb2YgdW5tYXBwaW5nIHdoZW4gdW5kZXIgc3RyaWN0IHByb3Rl Y3Rpb24gbGltaXQgYSArMTBHYiB0byAzR2INCj4gPiB3aXRoIGNwdSBtYXhlZCBvdXQgYXQgMTAw JS4gRFBESyBhcHBzIHNob3VsZG4ndCBmZWVsIGFueSBkaWZmZXJlbmNlIElGRiB0aGUNCj4gPiBy eCBkZXNjcmlwdG9ycyBjb250YWluIGlvdmEgYW5kIG5vdCByZWFsIHBoeXNpY2FsIGFkZHJlc3Nl cyB3aGljaCBhcmUgdXNlZA0KPiA+IGN1cnJlbnRseS4NCj4gPg0KPiA+DQo+ID4gT24gVHVlLCBP Y3QgMjEsIDIwMTQgYXQgMTA6MTAgUE0sIFpob3UsIERhbm55IDxkYW5ueS56aG91QGludGVsLmNv bT4gd3JvdGU6DQo+ID4NCj4gPiA+IElNSE8sIGlmIG1lbW9yeSBwcm90ZWN0aW9uIHdpdGggSU9N TVUgaXMgbmVlZGVkIG9yIG5vdCByZWFsbHkgZGVwZW5kcyBvbg0KPiA+ID4gaG93IHlvdSB1c2UN Cj4gPiA+IGFuZCBkZXBsb3kgeW91ciBEUERLIGJhc2VkIGFwcGxpY2F0aW9ucy4gRm9yIFRlbGNv IG5ldHdvcmsgbWlkZGxlIGJveGVzLA0KPiA+ID4gd2hpY2ggYWRvcHRzDQo+ID4gPiBhICJjbG9z ZSBtb2RlbCIgc29sdXRpb24gdG8gYWNoaWV2ZSBleHRyZW1lbHkgaGlnaCBwZXJmb3JtYW5jZSwg dGhlIGVudGlyZQ0KPiA+ID4gc3lzdGVtIGluY2x1ZGluZw0KPiA+ID4gSFcsIHNvZnR3YXJlIGlu IGtlcm5lbCBhbmQgdXNlcnNwYWNlIGFyZSBjb250cm9sbGVkIGJ5IFRlbGNvIHZlbmRvcnMgYW5k DQo+ID4gPiBhc3N1bWVkIHRydXN0YWJsZSwgc28NCj4gPiA+IG1lbW9yeSBwcm90ZWN0aW9uIGlz IG5vdCBzbyBpbXBvcnRhbnQuIFdoaWxlIGZvciBEYXRhY2VudGVycywgd2hpY2gNCj4gPiA+IGdl bmVyYWxseSBhZG9wdHMgYSAib3BlbiBtb2RlbCINCj4gPiA+IHNvbHV0aW9uIGFsbG93cyBydW5u aW5nIHVzZXIgc3BhY2UgYXBwbGljYXRpb25zKGUuZy4gdGVuYW50IGFwcGxpY2F0aW9ucw0KPiA+ ID4gYW5kIFZNcykgd2hpY2ggY291bGQNCj4gPiA+IGRpcmVjdCBhY2Nlc3MgTklDIGFuZCBETUEg ZW5naW5lIGluc2lkZSB0aGUgTklDIHVzaW5nIG1vZGlmaWVkIERQREsgUE1EDQo+ID4gPiBhcmUg bm90IHRydXN0YWJsZQ0KPiA+ID4gYXMgdGhleSBjYW4gcG90ZW50aWFsbHkgREFNIHRvL2Zyb20g YXJiaXRyYXJ5IG1lbW9yeSByZWdpb25zIHVzaW5nDQo+ID4gPiBwaHlzaWNhbCBhZGRyZXNzZXMs IHNvIElPTU1VDQo+ID4gPiBpcyBuZWVkZWQgdG8gcHJvdmlkZSBzdHJpY3QgbWVtb3J5IHByb3Rl Y3Rpb24sIGF0IHRoZSBjb3N0IG9mIG5lZ2F0aXZlDQo+ID4gPiBwZXJmb3JtYW5jZSBpbXBhY3Qu DQo+ID4gPg0KPiA+ID4gU28gaWYgeW91IHdhbnQgdG8gc2VlayBoaWdoIHBlcmZvcm1hbmNlLCBk aXNhYmxlIElPTU1VIGluIEJJT1Mgb3IgT1MuIEFuZA0KPiA+ID4gaWYgc2VjdXJpdHkgaXMgYSBt YWpvcg0KPiA+ID4gY29uY2VybiwgdHVuZSBpdCBvbiBhbmQgdHJhZGVvZmYgYmV0d2VlbiBwZXJm b3JtYW5jZSBhbmQgc2VjdXJpdHkuIEJ1dCBJDQo+ID4gPiBkbyBOT1QgdGhpbmsgaXMgY29tZXMg d2l0aA0KPiA+ID4gYW4gZXh0cmVtZWx5IGhpZ2ggcGVyZm9ybWFuY2UgY29zdHMgYWNjb3JkaW5n IHRvIG91ciBwZXJmb3JtYW5jZQ0KPiA+ID4gbWVhc3VyZW1lbnQsIGJ1dCBpdCBwcm9iYWJseSB0 cnVlDQo+ID4gPiBmb3IgMTAwRyBOSUMuDQo+ID4gPg0KPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiA+ID4gPiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9y Z10gT24gQmVoYWxmIE9mIFNoaXZhcHJpeWEgSGlyZW1hdGgNCj4gPiA+ID4gU2VudDogV2VkbmVz ZGF5LCBPY3RvYmVyIDIyLCAyMDE0IDEyOjU0IEFNDQo+ID4gPiA+IFRvOiBBbGV4IE1hcmt1emUN Cj4gPiA+ID4gQ2M6IGRldkBkcGRrLm9yZw0KPiA+ID4gPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2 XSBXaHkgZG8gd2UgbmVlZCBpb21tdT1wdD8NCj4gPiA+ID4NCj4gPiA+ID4gSGksDQo+ID4gPiA+ DQo+ID4gPiA+IFRoYW5rIHlvdSBmb3IgYWxsIHRoZSByZXBsaWVzLg0KPiA+ID4gPiBJIGFtIHRy eWluZyB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBvbiBEUERLLiBXaGF0IHdpbGwg YmUgdGhlDQo+ID4gPiA+IHJlcGVyY3Vzc2lvbnMgb2YgZGlzYWJsaW5nICJpb21tdT1wdCIgb24g dGhlIERQREsgcGVyZm9ybWFuY2U/DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IE9uIFR1ZSwg T2N0IDIxLCAyMDE0IGF0IDEyOjMyIEFNLCBBbGV4IE1hcmt1emUgPGFsZXhAd2VrYS5pbz4gd3Jv dGU6DQo+ID4gPiA+DQo+ID4gPiA+ID4gRFBESyB1c2VzIGEgMToxIG1hcHBpbmcgYW5kIGRvZXNu J3Qgc3VwcG9ydCBJT01NVS7CoCBJT01NVSBhbGxvd3MgZm9yDQo+ID4gPiA+ID4gc2ltcGxlciBW TSBwaHlzaWNhbCBhZGRyZXNzIHRyYW5zbGF0aW9uLg0KPiA+ID4gPiA+IFRoZSBzZWNvbmQgcm9s ZSBvZiBJT01NVSBpcyB0byBhbGxvdyBwcm90ZWN0aW9uIGZyb20gdW53YW50ZWQgbWVtb3J5DQo+ ID4gPiA+ID4gYWNjZXNzIGJ5IGFuIHVuc2FmZSBkZXZpc2UgdGhhdCBoYXMgRE1BIHByaXZpbGVn ZXMuIFVuZm9ydHVuYXRlbHkgdGhpcw0KPiA+ID4gPiA+IHByb3RlY3Rpb24gY29tZXMgd2l0aCBh biBleHRyZW1lbHkgaGlnaCBwZXJmb3JtYW5jZSBjb3N0cyBmb3IgaGlnaA0KPiA+ID4gc3BlZWQN Cj4gPiA+ID4gPiBuaWNzLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVG8geW91ciBxdWVzdGlvbiBp b21tdT1wdCBkaXNhYmxlcyBJT01NVSBzdXBwb3J0IGZvciB0aGUgaHlwZXJ2aXNvci4NCj4gPiA+ ID4gPg0KPiA+ID4gPiA+IE9uIFR1ZSwgT2N0IDIxLCAyMDE0IGF0IDE6MzkgQU0sIFhpZSwgSHVh d2VpIDxodWF3ZWkueGllQGludGVsLmNvbT4NCj4gPiA+IHdyb3RlOg0KPiA+ID4gPiA+DQo+ID4g PiA+ID4+DQo+ID4gPiA+ID4+DQo+ID4gPiA+ID4+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPiA+ID4gPj4gPiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10g T24gQmVoYWxmIE9mIFNoaXZhcHJpeWENCj4gPiA+ID4gPj4gSGlyZW1hdGgNCj4gPiA+ID4gPj4g PiBTZW50OiBNb25kYXksIE9jdG9iZXIgMjAsIDIwMTQgMjo1OSBQTQ0KPiA+ID4gPiA+PiA+IFRv OiBkZXZAZHBkay5vcmcNCj4gPiA+ID4gPj4gPiBTdWJqZWN0OiBbZHBkay1kZXZdIFdoeSBkbyB3 ZSBuZWVkIGlvbW11PXB0Pw0KPiA+ID4gPiA+PiA+DQo+ID4gPiA+ID4+ID4gSGksDQo+ID4gPiA+ ID4+ID4NCj4gPiA+ID4gPj4gPiBNeSBxdWVzdGlvbiBpcyB0aGF0IGlmIHRoZSBQb2xsIG1vZGXC oCBkcml2ZXIgdXNlZCB0aGUgRE1BIGtlcm5lbA0KPiA+ID4gPiA+PiBpbnRlcmZhY2UNCj4gPiA+ ID4gPj4gPiB0byBzZXQgdXAgaXRzIG1hcHBpbmdzIGFwcHJvcHJpYXRlbHksIHdvdWxkIGl0IHN0 aWxsIHJlcXVpcmUgdGhhdA0KPiA+ID4gPiA+PiBpb21tdT1wdA0KPiA+ID4gPiA+PiA+IGJlIHNl dD8NCj4gPiA+ID4gPj4gPiBXaGF0IGlzIHRoZSBwdXJwb3NlIG9mIHNldHRpbmcgaW9tbXU9cHQg Pw0KPiA+ID4gPiA+PiBQTUQgYWxsb2NhdGVzIG1lbW9yeSB0aG91Z2ggaHVnZXRsYiBmaWxlIHN5 c3RlbSwgYW5kIGZpbGxzIHRoZQ0KPiA+ID4gcGh5c2ljYWwNCj4gPiA+ID4gPj4gYWRkcmVzcw0K PiA+ID4gPiA+PiBpbnRvIHRoZSBkZXNjcmlwdG9yLg0KPiA+ID4gPiA+PiBwdCBpcyB1c2VkIHRv IHBhc3MgdGhyb3VnaCBpb3RsYiB0cmFuc2xhdGlvbi4gUmVmZXIgdG8gdGhlIGJlbG93IGxpbmsu DQo+ID4gPiA+ID4+IGh0dHA6Ly9sa21sLml1LmVkdS9oeXBlcm1haWwvbGludXgva2VybmVsLzA5 MDYuMi8wMjEyOS5odG1sDQo+ID4gPiA+ID4+ID4NCj4gPiA+ID4gPj4gPiBUaGFuayB5b3UuDQo+ ID4gPiA+ID4+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4NCg0K