From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoffer Dall Subject: Re: Xen ARM - Exposing a PL011 to the guest Date: Wed, 21 Dec 2016 12:55:10 +0100 Message-ID: <20161221115510.GA8958@cbox> References: <86800697-5057-3f14-c19f-151e81315133@arm.com> <20161201102618.GA10384@cbox> <7c3a29e7-aea6-5f9c-61b0-b4f82bcafa34@arm.com> <20161219122005.GA28927@cbox> <20161220124706.GA32470@cbox> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini Cc: Wei Liu , Steve Capper , George Dunlap , Andrew Cooper , Ian Jackson , Xen Devel , Julien Grall , Jan Beulich , Bhupinder Thakur List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBEZWMgMjAsIDIwMTYgYXQgMDE6MzM6MzlQTSAtMDgwMCwgU3RlZmFubyBTdGFiZWxs aW5pIHdyb3RlOgo+IE9uIFR1ZSwgMjAgRGVjIDIwMTYsIENocmlzdG9mZmVyIERhbGwgd3JvdGU6 Cj4gPiBIaSBTdGVmYW5vLAo+ID4gCj4gPiBPbiBNb24sIERlYyAxOSwgMjAxNiBhdCAxMjoyNDox OFBNIC0wODAwLCBTdGVmYW5vIFN0YWJlbGxpbmkgd3JvdGU6Cj4gPiA+IE9uIE1vbiwgMTkgRGVj IDIwMTYsIENocmlzdG9mZmVyIERhbGwgd3JvdGU6Cj4gPiA+ID4gT24gRnJpLCBEZWMgMTYsIDIw MTYgYXQgMDU6MDM6MTNQTSArMDAwMCwgSnVsaWVuIEdyYWxsIHdyb3RlOgo+ID4gPiA+ID4gKEND IHJlc3QgbWFpbnRhaW5lcnMgZm9yIGV2ZW50IGNoYW5uZWwgcXVlc3Rpb25zKQo+ID4gPiA+ID4g Cj4gPiA+ID4gPiBPbiAxNi8xMi8xNiAxMDowNiwgQmh1cGluZGVyIFRoYWt1ciB3cm90ZToKPiA+ ID4gPiA+ID5IaSwKPiA+ID4gPiA+IAo+ID4gPiA+ID4gSGkgQmh1cGluZGVyLAo+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+VGhlIGlkZWEgaXMgZm9yIFhlbiB0byBhY3QgYXMgYW4gaW50ZXJtZWRpYXJ5 IGFzIHNob3duIGJlbG93Ogo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIHJp bmcgYnVmZmVycwo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4L3R4IGZp Zm8KPiA+ID4gPiA+ID5kb20wIDwtLS0tLS0tLS0tLS0tLS0tLS0tPiBYZW4gSFlQIChydW5uaW5n IHBsMDExIGVtdWxhdGlvbikKPiA+ID4gPiA+ID48LS0tLS0tLS0tLS0tLS0tLS0tLT4gZG9tVQo+ ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgZXZlbnQKPiA+ID4gPiA+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRzCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+WGVuIHdp bGwgZGlyZWN0bHkgbWFuYWdlIHRoZSBpbi9vdXQgY29uc29sZSByaW5nIGJ1ZmZlcnMgKGFsbG9j YXRlZCBieQo+ID4gPiA+ID4gPmRvbTAgZm9yIGRvbTAtZG9tVSBjb25zb2xlIGNvbW11bmljYXRp b24pIGZvciByZWFkaW5nL3dyaXRpbmcgY29uc29sZQo+ID4gPiA+ID4gPmRhdGEgZnJvbS90byBk b20wLiBPbiB0aGUgb3RoZXIgc2lkZSwgWGVuIEhZUCB3aWxsIGVtdWxhdGUgcGwwMTEgdG8KPiA+ ID4gPiA+ID5yZWFkL3dyaXRlIGRhdGEgZnJvbS90byBkb21VIGFuZCBwYXNzIGl0IG9uIHRvL2Zy b20gZG9tMCBvdmVyIHRoZQo+ID4gPiA+ID4gPmluL291dCBjb25zb2xlIHJpbmcgYnVmZmVycy4g VGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBkb20wIGFzIGl0Cj4gPiA+ID4gPiA+d2lsbCBz dGlsbCB1c2UgdGhlIHNhbWUgcmluZyBidWZmZXJzLiBTaW1pbGFybHkgdGhlcmUgc2hvdWxkIGJl IG5vCj4gPiA+ID4gPiA+Y2hhbmdlIGluIGRvbVUgd2hpY2ggd291bGQgYmUgcnVubmluZyBhIHN0 YW5kYXJkIHBsbDAxMSBkcml2ZXIuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+Q3VycmVudGx5LCBJ IGFtIHdvcmtpbmcgb24gdGhlIGludGVyZmFjZSBiZXR3ZWVuIGRvbTAgYW5kIFhlbiBIWVAuIEkK PiA+ID4gPiA+ID53YW50IHRvIGludGVyY2VwdCB0aGUgY29uc29sZSBldmVudHMgaW4gWGVuIEhZ UCB3aGljaCBwYXNzIGJldHdlZW4KPiA+ID4gPiA+ID5kb20wIGFuZCBkb21VLiBGb3Igbm93LCBJ IGp1c3Qgd2FudCB0byBjYXB0dXJlIGNvbnNvbGUgZGF0YSBjb21pbmcKPiA+ID4gPiA+ID5mcm9t IGRvbTAgYXQgWGVuIEhZUCBhbmQgbG9vcCBpdCBiYWNrIHRvIGRvbTAsIHRvIGNvbmZpcm0gdGhh dCB0aGlzCj4gPiA+ID4gPiA+aW50ZXJmYWNlIGlzIHdvcmtpbmcuCj4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+U2luY2UgZWFjaCBndWVzdCBkb21haW4gd2lsbCBoYXZlIGEgdW5pcXVlIGV2ZW50IGNo YW5uZWwgYXNzaWduZWQgZm9yCj4gPiA+ID4gPiA+Y29uc29sZSBjb21tdW5pY2F0aW9uLCBYZW4g SFlQIGNhbiBmaW5kIG91dCB0aGUgZXZlbnQgY2hhbm5lbCBmb3IgYQo+ID4gPiA+ID4gPmdpdmVu IGRvbVUgZnJvbSB0aGUgc3RhcnRfaW5mbyBwYWdlIG9mIHRoYXQgZG9tVSwgd2hpY2ggc2hvdWxk IGhhdmUKPiA+ID4gPiA+IAo+ID4gPiA+ID4gVGhlIHN0YXJ0X2luZm8gcGFnZSBpcyB4ODYgc3Bl Y2lmaWMuIElmIHlvdSB3YW50IHRvIGdldCB0aGUgY29uc29sZQo+ID4gPiA+ID4gZXZlbnQgY2hh bm5lbCBmb3IgQVJNLCB5b3Ugd291bGQgaGF2ZSB0byB1c2UKPiA+ID4gPiA+IGQtPmFyY2guaHZt X2RvbWFpbi5wYXJhbXNbSFZNX1BBUkFNX0NPTlNPTEVfRVZUQ0hOXS4KPiA+ID4gPiA+IAo+ID4g PiA+ID4gVGhpcyBwYXJhbWV0ZXIgd2lsbCBiZSBzZXR1cCBieSB0aGUgdG9vbHN0YWNrIChzZWUg YWxsb2NfbWFnaWNfcGFnZXMKPiA+ID4gPiA+IGluIGxpYnhjL3hjX2RvbV9hcm0uYykuCj4gPiA+ ID4gPiAKPiA+ID4gPiA+ID5iZWVuIGFsbG9jYXRlZCBieSBkb20wLiBXaGVuZXZlciwgYW4gZXZl bnQgaXMgdG8gYmUgZGlzcGF0Y2hlZCB2aWEKPiA+ID4gPiA+ID5ldnRjaG5fc2VuZCgpIEFQSSBp biBYZW4sIGl0IGNhbiBjaGVjayBpZiB0aGUgZXZlbnQgY2hhbm5lbCBpcyB0aGUKPiA+ID4gPiA+ ID5jb25zb2xlIGV2ZW50IGNoYW5uZWwgZm9yIGEgZ2l2ZW4gZG9tVS4gSWYgeWVzIGFuZCBpdHMg c291cmNlIGRvbWFpbgo+ID4gPiA+ID4gPmlzIGRvbTAgYW5kIGRlc3RpbmF0aW9uIGRvbWFpbiBp cyBkb21VIHRoZW4gaXQgd2lsbCB3cml0ZSB0aGUgZGF0YQo+ID4gPiA+ID4gPmJhY2sgdG8gdGhl IGNvbnNvbGUgb3V0IHJpbmcgYnVmZmVyIG9mIHRoZSBkb21VIGFuZCByYWlzZSBhIGNvbnNvbGUK PiA+ID4gPiA+ID5ldmVudCB0byBkb20wLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPk9uY2UgdGhp cyBpbnRlcmZhY2UgaXMgd29ya2luZywgWGVuIEhZUCBjYW4gY2hlY2sgdGhlIHNvdXJjZSBhbmQK PiA+ID4gPiA+ID5kZXN0aW5hdGlvbiBkb20gaWRzIGFuZCBkZWNpZGUgd2hpY2ggd2F5IHRoZSBl dmVudCBjYW1lIGZyb20gYW5kCj4gPiA+ID4gPiA+YWNjb3JkaW5nbHkgcHJvY2VzcyB0aGUgY29u c29sZSBkYXRhLiBUbyBhbGxvdyBhIG1peCBvZiBQViBjb25zb2xlCj4gPiA+ID4gPiA+Z3Vlc3Rz IGFuZCBwbDAxMSBndWVzdHMsIFhlbiBtaWdodCBoYXZlIHRvIG1haW50YWluIGEgZmxhZyBwZXIg ZG9tYWluLAo+ID4gPiA+ID4gPndoaWNoIHRlbGxzIHdoZXRoZXIgWGVuIEhZUCBzaG91bGQgaW50 ZXJjZXB0IGFuZCBwcm9jZXNzIHRoZSBkYXRhIChmb3IKPiA+ID4gPiA+ID5wbDAxMSBVQVJUIGNh c2UpIG9yIGxldCBpdCBnbyB0cmFuc3BhcmVudGx5IChmb3IgUFYgY29ub3NsZSBjYXNlKS4KPiA+ ID4gPiA+IAo+ID4gPiA+ID4gSSBhbSBub3QgdmVyeSBmYW1pbGlhciB3aXRoIHRoZSBldmVudCBj aGFubmVsIGNvZGUuIEkgd2lsbCBsZXQgdGhlCj4gPiA+ID4gPiBvdGhlcnMgY29tbWVudCBvbiB0 aGlzIGJpdC4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gUmVnYXJkbGVzcyB0aGF0LCBob3cgd291bGQg eW91IGRlY2lkZSB3aGV0aGVyIHRoZSBoeXBlcnZpc29yIHNob3VsZAo+ID4gPiA+ID4gaW50ZXJj ZXB0IHRoZSBub3RpZmljYXRpb24/Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IEkgY2FuIHNlZSAyIGRp ZmZlcmVudCBjYXNlczoKPiA+ID4gPiA+IAkxKSBUaGUgZ3Vlc3QgaXMgc3RhcnRpbmcgdG8gdXNl IHRoZSBwbDAxMSB0aGVuIG1vdmUgdG8gdGhlIEhWQwo+ID4gPiA+ID4gY29uc29sZSAob3IgSFZD IHRoZW4gcGwwMTEpCj4gPiA+ID4gPiAJMikgVGhlIGd1ZXN0IGlzIHVzaW5nIGJvdGggdGhlIFBM MDExIGFuZCB0aGUgSFZDIGNvbnNvbGUKPiA+ID4gPiA+IAo+ID4gPiA+ID4gU2hvdWxkIHdlIGNv bnNpZGVyIHRoZSBzZWNvbmQgY2FzZSB2YWxpZD8gSSB3b3VsZCBzYXkgeWVzLCBiZWNhdXNlIGEK PiA+ID4gPiA+IHVzZXIgY291bGQgc3BlY2lmeSBib3RoIG9uIHRoZSBjb21tYW5kIGxpbmUuIElm IHdlIHVzZSB0aGUgc2FtZQo+ID4gPiA+ID4gcmluZywgdGhlIG91dHB1dCB3b3VsZCBiZSBhIHRv dGFsIGdhcmJhZ2UuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFNvIG1heWJlIHdlIG5lZWQgdG8gYWxs b2NhdGUgdHdvIGRpc3RpbmN0IHJpbmdzIGFuZCBldmVudCBjaGFubmVsPwo+ID4gPiA+IAo+ID4g PiA+IFRoaXMgc291bmRzIGxpa2UgdGhlIG9ubHkgc2Vuc2libGUgdGhpbmcgdG8gbWUuICBJIHRo aW5rIHRoaXMgaXMgcmVhbGx5Cj4gPiA+ID4gYWJvdXQgYWRkaW5nIGEgbmV3IGRldmljZSB0byB0 aGUgWGVuIHZpcnR1YWwgcGxhdGZvcm0sIGFuZCBwcm92aWRpbmcgdGhlCj4gPiA+ID4gdXNlciB0 aGUgb3B0aW9uIHRvIGNob29zZSB3aGljaCBvbmUgaGUgd2FudHMgdGhlIHRvb2wgaW4gRG9tMCB0 byBiZQo+ID4gPiA+IHByZXNlbnRlZCB1c2luZyBzdGRpbi9vdXQuIFByZXN1bWFibHkgdGhlIG90 aGVyIGNvbnNvbGUvc2VyaWFsIGNhbiBiZQo+ID4gPiA+IHJlZGlyZWN0ZWQgdG8gYSBmaWxlIG9y IHNvY2tldCBvciBzb21ldGhpbmc/Cj4gPiA+IAo+ID4gPiBMZXQgbWUgZXhwbGFpbiBob3cgdGhl IFBWIGNvbnNvbGUgcHJvdG9jb2wgYW5kIGRyaXZlcnMgd29yaywgYmVjYXVzZQo+ID4gPiB0aGV5 IGFyZSBhIGJpdCB1bnVzdWFsLiAKPiA+IAo+ID4gVGhhbmtzIGZvciB0aGlzLiAgQXMgbXkgZGV0 YWlsZWQga25vd2xlZGdlIG9mIFhlbiBpcyByZWxhdGl2ZWx5IGxpbWl0ZWQKPiA+IEkgY2FuIG9u bHkgY29udHJpYnV0ZSB3aXRoIGEgdmVyeSBoaWdoIGxldmVsIGFwcHJvYWNoIHRvIHdoaWNoIHBy b2JsZW0KPiA+IHdlJ3JlIHRyeWluZyB0byBzb2x2ZS4KPiA+IAo+ID4gCj4gPiA+IFRoZSBmaXJz dCBQViBjb25zb2xlIGlzIGFkdmVydGlzZWQgdmlhCj4gPiA+IGh2bV9wYXJhbXMuIFRoZSBndWVz dCBjYWxsczoKPiA+ID4gCj4gPiA+ICAgaHZtX2dldF9wYXJhbWV0ZXIoSFZNX1BBUkFNX0NPTlNP TEVfRVZUQ0hOLCAmdik7Cj4gPiA+ICAgaHZtX2dldF9wYXJhbWV0ZXIoSFZNX1BBUkFNX0NPTlNP TEVfUEZOLCAmdik7Cj4gPiA+IAo+ID4gPiB0byBnZXQgdGhlIHR3byBwYXJhbWV0ZXJzIHRvIHNl dHVwIHRoZSByaW5nIGFuZCBldnRjaG4uIElmIHRoZXkgYXJlIDAsCj4gPiA+IHRoZSBndWVzdCBj b25zaWRlcnMgdGhlIGZpcnN0IGNvbnNvbGUgdW5hdmFpbGFibGUuIE90aGVyIFBWIGNvbnNvbGUK PiA+ID4gcmluZ3MsIGZyb20gdGhlIHNlY29uZCBvbndhcmQsIGFyZSBhZHZlcnRpc2VkIHZpYSB4 ZW5zdG9yZSBsaWtlIGFueQo+ID4gPiBvdGhlciBYZW4gUFYgcHJvdG9jb2xzLiBJbiB0aG9zZSBj YXNlcywgZnJvbnRlbmQgYW5kIGJhY2tlbmQgYWNjZXNzCj4gPiA+IHhlbnN0b3JlIHRvIHNldHVw IHJpbmcgYW5kIGV2ZW50IGNoYW5uZWwuCj4gPiAKPiA+IFNvLCBodm1fZ2V0X3BhcmFtZXRlciBk b2VzIG5vdCBhY2Nlc3MgeGVuc3RvcmUsIGJlY2F1c2UgeW91IG5lZWQgdGhlCj4gPiBjb25zb2xl IGJlY2F1c2UgeGVuc3RvcmUgaXMgYXZhaWxhYmxlLCBidXQgc3Vic2VxdWVudCBjb25zb2xlcyBj YW4ganVzdAo+ID4gYWNjZXNzIHhlbnN0b3JlLCBvciBkaWQgSSBnZXQgdGhpcyBjb21wbGV0ZWx5 IHdyb25nPwo+IAo+IFJpZ2h0LiBodm1fZ2V0X3BhcmFtZXRlciBjYW4gYmUgdXNlZCB0byByZXRy aWV2ZSBhbGwgc29ydCBvZiBwYXJhbWV0ZXJzCj4gYW5kIGRvZXNuJ3QgYWNjZXNzIHhlbnN0b3Jl IHRvIGRvIGl0LiBJdCBpcyBpbXBsZW1lbnRlZCBhcyBhbiBoeXBlcmNhbGwKPiB0byBYZW4gKEhW TU9QX2dldF9wYXJhbSwgQUtBIGh2bV9wYXJhbSkuIFN1YnNlcXVlbnQgY29uc29sZXMgdXNlCj4g eGVuc3RvcmUgZm9yIHRoZSBoYW5kc2hha2UgaW4gYSB2ZXJ5IHNpbWlsYXIgd2F5IHRvIG90aGVy IFBWIGRyaXZlcnMuCj4gVGhlIGZyb250ZW5kIGFsbG9jYXRlcyByZXNvdXJjZXMgYW5kIHdyaXRl cyB0byB4ZW5zdG9yZS4gVGhlIExpbnV4IGNvZGUKPiBpczogZHJpdmVycy90dHkvaHZjL2h2Y194 ZW4uYzp4ZW5jb25zX2Nvbm5lY3RfYmFja2VuZAo+IAo+IFRoZSBkYXRhIHRyYW5zZmVyIHByb3Rv Y29sIGlzIGFsd2F5cyB0aGUgc2FtZSwgYnV0IHRoZSBkaXNjb3ZlcnkgYW5kCj4gaW5pdGlhbCBo YW5kc2hha2UgYXJlIGNvbXBsZXRlbHkgZGlmZmVyZW50Lgo+IAo+IAo+ID4gPiBUaGUgUFYgY29u c29sZSBiYWNrZW5kcyBhcmUgdW51c3VhbCB0b28uIHhlbmNvbnNvbGVkLCBhdmFpbGFibGUgb24g YWxsCj4gPiA+IFhlbiBzeXN0ZW1zLCBpcyBvbmUgcHJvY2VzcyBwZXIgaG9zdCBhbmQgY2FuIGhh bmRsZSBvbmx5IG9uZSBQViBjb25zb2xlCj4gPiA+IHBlciBkb21haW4uIFNwZWNpZmljYWxseSwg aXQgaXMgb25seSBhYmxlIHRvIGRlYWwgd2l0aCB0aGUgZmlyc3QgY29uc29sZS4KPiA+ID4gRG9t YWlucyB0aGF0IGhhdmUgbXVsdGlwbGUgUFYgY29uc29sZXMgcmVxdWlyZSBRRU1VIChub3QgYXMg YW4gZW11bGF0b3IsCj4gPiA+IGJ1dCBhcyBhIFBWIGJhY2tlbmRzIHByb3ZpZGVyKS4gVGhlIHRv b2xzdGFjayB3cml0ZXMgInR5cGUiID0KPiA+ID4gInhlbmNvbnNvbGVkIiBvciAiaW9lbXUiIHRv IGRpc3Rpbmd1aXNoIFBWIGNvbnNvbGVzIHRoYXQgeGVuY29uc29sZWQgb3IKPiA+ID4gUUVNVSBh cmUgc3VwcG9zZWQgdG8gaGFuZGxlLiBJZGVhbGx5LCB3ZSBzaG91bGRuJ3QgcmVxdWlyZSBRRU1V IGZvcgo+ID4gPiBwbDAxMSBQViBjb25zb2xlcywgYnV0IGl0IHdvdWxkbid0IGJlIHRoZSBlbmQg b2YgdGhlIHdvcmxkIGlmIHdlIGRpZC4KPiA+IAo+ID4gSXQgc2VlbXMgY291bnRlcmludHVpdGl2 ZSB0byBydW4gUUVNVSBpbiBEb20wIHRvIHNlcnZlIGFzIGEgYmFja2VuZCBmb3IKPiA+IGVtdWxh dGluZyBhIGRldmljZSBpbiBYZW4gdG8gbWUsIGJ1dCBtYXliZSBJIGFtIG1pc3NpbmcgdGhlIHBv aW50Pwo+IAo+IEl0IGlzIGluZGVlZCB2ZXJ5IGNvdW50ZXJpbnR1aXRpdmUgOi1ECj4gCj4gRnJv bSB0aGUgZGF5cyB3aGVuIFJlZCBIYXQgd2FzIHN0aWxsIGludm9sdmVkIHdpdGggWGVuLCB3ZSBp bmhlcml0ZWQgYQo+IGJ1bmNoIG9mIHVzZXJzcGFjZSBQViBiYWNrZW5kcyBpbiBRRU1VLCB3aGlj aCBoYXZlIG5vdCBtdWNoIHRvIGRvIHdpdGgKPiB0aGUgcmVzdCBvZiBRRU1VLiBVbmZvcnR1bmF0 ZWx5LCB0aGUgUUVNVSBidWlsZCBwcm9jZXNzIGlzIG5vdCBmbGV4aWJsZQo+IGVub3VnaCB0byBh bGxvdyB1cyB0byBidWlsZCBhIFFFTVUgYmluYXJ5IHRoYXQgc3VwcG9ydHMgb25seSB0aGUgUFYK PiBiYWNrZW5kcyBhbmQgbm90aGluZyBlbHNlLiBIb3dldmVyLCBldmVuIGlmIHRoZSBiaW5hcnkg aXMgZmF0LCBpdCBzdGlsbAo+IGNvdWxkbid0IGRvIGFueSBlbXVsYXRpb24gYmVjYXVzZSBpdCBp cyBub3QgaG9va2VkIHVwIHRvIGRvIGl0Lgo+IAo+IAo+ID4gSXMgdGhpcyBub3QgYSAnc3RhbmRh cmQnIHNvZnR3YXJlIGVuZ2luZWVyaW5nIHF1ZXN0aW9uIG9mIGNob29zaW5nCj4gPiBiZXR3ZWVu ICgxKSBleHBhbmRpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgeGVuY29uc29sZWQsIG9yICgyKSBy dW5uaW5nCj4gPiBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgeGVuY29uc29sZWQsIG9yICgzKSB3cml0 aW5nIGEgbmV3Cj4gPiB4ZW5jb25zb2xlX2VtdWxkLCBvciAoNCkgcnVuIGV4aXN0aW5nIGh1Z2Ug b3RoZXIgYmluYXJ5IGNhbGxlZCBRRU1VLCBvcgo+ID4gKDUpIHNvbWV0aGluZyBJIGhhdmVuJ3Qg dGhvdWdodCBvZiA/Cj4gCj4gWWVzLCBpdCBpcyBhIHN0YW5kYXJkIHN3IGVuZ2luZWVyaW5nIHF1 ZXN0aW9uLiBJIHRoaW5rIHlvdSB3cm90ZSB0aGUKPiBwb3NzaWJsZSBvcHRpb25zIGluIG15IG9y ZGVyIG9mIHByZWZlcmVuY2UuCj4gCj4gCj4gPiA+IEFkZGl0aW9uYWxseSwgWGVuIGNhbm5vdCBz cGVhayB4ZW5zdG9yZS4gSXQgY2FuIG5laXRoZXIgcmVhZCBub3Igd3JpdGUKPiA+ID4gdG8gaXQu IEkgZG9uJ3QgdGhpbmsgd2Ugc2hvdWxkIGFkZCB4ZW5zdG9yZSBzdXBwb3J0IHRvIHRoZSBoeXBl cnZpc29yCj4gPiA+IGZvciB0aGlzLiBXZSBuZWVkIHRvIGNvbWUgdXAgd2l0aCBhIHNvbHV0aW9u IHRoYXQgZG9lc24ndCByZXF1aXJlIGl0Lgo+ID4gCj4gPiBTbywgc29tZSBpbnRlcmZhY2UgZm9y IHRoZSB0b29sc3RhY2sgdG8gdGVsbCB0aGUgWGVuIGh5cGVydmlzb3IgdGhhdAo+ID4gdGhlcmUn cyBhbiBldmVudCBjaGFubmVsIGFuZCBhIHBhZ2UgYW5kIHdoZXJlIHRoZXkgYXJlLCBzbyB0aGF0 IHRoZQo+ID4gaHlwZXJ2aXNvciBjYW4gY29tbXVuaWNhdGUgd2l0aCB0aGUgY29uc29sZSBiYWNr ZW5kLCByaWdodD8KPiAKPiBZZXAsIHRoYXQncyByaWdodC4gRWl0aGVyIHRoZSB0b29sc3RhY2sg KGF0IGRvbWFpbiBjcmVhdGlvbikgb3IgWGVuCj4gY291bGQgZG8gdGhlIGFsbG9jYXRpb24uCj4g Cj4gCj4gPiBJIGFtIGhvcGluZyB0aGVyZSBpcyAqc29tZSogZXhpc3RpbmcgaW5mcmFzdHJ1Y3R1 cmUgdGhhdCBjYW4gYmUKPiA+IGxldmVyYWdlZCBmb3IgdGhpcyBhbmQgd2UgZG9uJ3QgaGF2ZSB0 byBjb21lIHVwIHdpdGggc29tZXRoaW5nIHNpbGx5Cj4gPiBsaWtlICJhbGxvY2F0ZSBuZXcgcmFu ZG9tIGh5cGVyY2FsbHMiID8KPiAKPiBZZWFoLi4uIDotKQo+IAo+IGh2bV9wYXJhbSBpcyB2ZXJ5 IGVhc3kgdG8gdXNlLCBidXQgdGhlIGd1ZXN0IGhhcyBhY2Nlc3MgdG8gaXQgdG9vLiBJZiB3ZQo+ IHVzZWQgaHZtX3BhcmFtLCB3ZSB3b3VsZCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBndWVz dCBpcyBub3QgYWJsZSB0bwo+IGNhdXNlIGFueSBkYW1hZ2UuCj4gCj4gT24gdGhlIG90aGVyIGhh bmQsIGlmIHdlIGludHJvZHVjZWQgYSBuZXcgaHlwZXJjYWxsLCB0aGVuIHdlIHdvdWxkbid0Cj4g aGF2ZSB0byB3b3JyeSBhYm91dCB0aGUgZ3Vlc3QuIEJ1dCBpdCB3b3VsZCBiZSBhbm90aGVyIG5l dyBoeXBlcmNhbGwuCj4gCj4gQW5vdGhlciBvcHRpb24gd2Ugd291bGQgYmUgdG8gaW50cm9kdWNl IGEgc2V0IG9mIGh2bV9wYXJhbXMgd2hpY2ggYXJlCj4gbm90IGd1ZXN0LXJlYWRhYmxlLiBUb2Rh eSBhbGwgaHZtX3BhcmFtcyBhcmUgWFNNX1RBUkdFVCwgc28gYm90aCAic2VsZiIKPiBhbmQgRG9t MCAoYW5kIHN0dWJkb21zKSBjYW4gaXNzdWUgaHZtX3BhcmFtcy4gV2UgY291bGQgcmVzdHJpY3Qg YSBmZXcgb2YKPiB0aGVtIHRvIFhTTV9ETV9QUklWLCB3aGljaCBvbmx5IGFsbG93IERvbTAgKGFu ZCBzdHViZG9tcykgdG8gaXNzdWUgdGhlbS4KPiBJdCB3b3VsZCBiZSBhcyBzaW1wbGUgYXMgY2hh bmdpbmcgdGhlIHhzbSBjaGVjayBmb3IgYSBzdWJzZXQgb2YgdGhlbS4KPiBPYnZpb3VzbHkgd2Ug d291bGQgY2xlYXJseSBkb2N1bWVudCB3aGljaCBhcmUgd2hpY2guCj4gCj4gVGhvdWdodHM/Cj4g CgpUaGF0IHNvdW5kcyB2ZXJ5IHN0cmFpZ2h0Zm9yd2FyZCB0byBtZSAoYWdhaW4sIEkgaGF2ZW4n dCBzZWVuIHRoZSBjb2RlKSwKYnV0IGl0J3Mgbm8gZGlmZmVyZW50IHRoYW4sIHNheSwgY2FsbGlu ZyB3cml0ZSBvbiBhIGZpbGUgZGVzY3JpcHRvciB5b3UKY2Fubm90IHdyaXRlIHRvIGluIExpbnV4 LCBzbyBpdCdzIGEga25vd24gYW5kIHRyaWVkIGNvbmNlcHQuCgo+IAo+ID4gPiBGaW5hbGx5LCB3 ZSBjYW5ub3QgaGlqYWNrIG9uZSBvZiB0aGUgZ3Vlc3QgUFYgY29uc29sZXMsIHJlZ2FyZGxlc3Mg b2YKPiA+ID4gd2hldGhlciBpdCdzIHRoZSBmaXJzdCBjb25zb2xlIG9yIG9uZSBvZiB0aGUgb3Ro ZXJzLCBiZWNhdXNlIHRoZSBndWVzdAo+ID4gPiBjYW4gYWx3YXlzIHRyeSB0byB1c2UgdGhlbSBh dCBhbnkgdGltZS4gV2UgbmVlZCBhIFBWIGNvbnNvbGUgcmVzZXJ2ZWQKPiA+ID4gZm9yIFhlbi1E b20wIGNvbW11bmljYXRpb25zIG9uIGJlaGFsZiBvZiB0aGUgZ3Vlc3QuIFdoZW4gYSBWTSBpcyBj cmVhdGVkCj4gPiA+IHdpdGggInBsMDExPXkiLCB0aGUgdG9vbHN0YWNrIG5lZWRzIHRvIGFsbG9j YXRlIG9uZSBtb3JlIHBhZ2UgYW5kIGV2dGNobgo+ID4gPiBmb3IgdGhlIGV4Y2x1c2l2ZSBoeXBl cnZpc29yIHVzYWdlLiAgVGhleSBhcmUgbm90IGdvaW5nIHRvIGJlIGFkdmVydGlzZWQKPiA+ID4g dG8gdGhlIGd1ZXN0IGFzIFBWIGNvbnNvbGVzOyBvdGhlcndpc2UsIHRoZSBndWVzdCBjb3VsZCBy aWdodGZ1bGx5Cj4gPiA+IGFjY2VzcyB0aGVtLgo+ID4gCj4gPiBJIHN1cHBvc2Ugd2Ugc2hvdWxk IG1ha2Ugc3VyZSB0aGF0IHRoZSBndWVzdCBjYW5ub3QgZXZlbiB0b3VjaCB0aGVtIGV2ZW4KPiA+ IGlmIGl0J3MgbHVja3kgZW5vdWdoIHRvIGd1ZXNzIHRoZSBwYWdlIG51bWJlciBhbmQgZXZlbnQg Y2hhbm5lbCBldGMuPwo+IAo+IFJpZ2h0LiBCdXQgdW5mb3J0dW5hdGVseSwgaXQgaXMgbm90IGEg bWF0dGVyIG9mIGx1Y2ssIGJlY2F1c2UgaHZtX3BhcmFtCj4gaXMgYWNjZXNzaWJsZSB0byB0aGUg Z3Vlc3QuCj4gCj4gCj4gPiA+IEJvdGggWGVuIGFuZCB0aGUgUFYgY29uc29sZSBiYWNrZW5kIG5l ZWQgYWNjZXNzIHRvIHRoZSB0d28gbnVtYmVycyAocGZuCj4gPiA+IGFuZCBldnRjaG4pIHRob3Vn aC4gWGVuIGRvZXNuJ3QgZG8geGVuc3RvcmUsIHNvIEkgc3VnZ2VzdCB0aGUgdG9vbHN0YWNrCj4g PiA+IHNob3VsZCB1c2UgYW5vdGhlciB3YXkgdG8gdGVsbCBwZm4gYW5kIGV2dGNobiB0byBYZW4s IG1heWJlIGh2bV9wYXJhbXMuCj4gPiA+IElmIHdlIHVzZSBodm1fcGFyYW1zIGZvciB0aGlzLCB3 ZSBuZWVkIHR3byBuZXcgaHZtX3BhcmFtcyBhbmQgWGVuIG5lZWRzCj4gPiA+IHRvIHVubWFwIHRo ZSBwZm4gZnJvbSB0aGUgZ3Vlc3QgaW1tZWRpYXRlbHksIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0 aGUKPiA+ID4gZ3Vlc3QgdG8gaGF2ZSBhY2Nlc3MgdG8gaXQuCj4gPiAKPiA+IFNvIGh2bV9wYXJh bXMgaXMgd2hhdCBJIHdhcyBob3BpbmcgZm9yIGFib3ZlPwo+IAo+IFNlZSBhYm92ZS4KPiAKPiAK PiA+ID4gSG93ZXZlciwgdGhlIFBWIGNvbnNvbGUgYmFja2VuZCBjYW4gYWNjZXNzIHhlbnN0b3Jl LCBzbyBpbiB0aGF0IGNhc2UsIGl0Cj4gPiA+IGlzIGZpbmUgdG8gd3JpdGUgdGhlIHBmbiBhbmQg ZXZ0Y2huIG9mIHRoZSBQViBjb25zb2xlIGZvciBwbDAxMSB0bwo+ID4gPiB4ZW5zdG9yZSwgcGF5 aW5nIGF0dGVudGlvbiBhdCB1c2luZyB0aGUgeGVuc3RvcmUgcGVybWlzc2lvbnMKPiA+ID4gYXBw cm9wcmlhdGVseS4gVGhlcmUgYXJlIG5vIHJlYXNvbnMgd2h5IHRoZSBndWVzdCBzaG91bGQgaGF2 ZSBhY2Nlc3MgdG8KPiA+ID4gdGhlbTsgb25seSB0aGUgY29uc29sZSBiYWNrZW5kIHNob3VsZCBi ZSBhYmxlIHRvIHJlYWQgdGhlbS4gR2l2ZW4gdGhhdAo+ID4gPiB0aGUgY29uc29sZSBiYWNrZW5k IGhhcyBkb20wIHByaXZpbGVnZXMsIGl0IGlzIG5vdCBhIHByb2JsZW0uIEkgYWxzbwo+ID4gPiBz dWdnZXN0IHVzaW5nIG5ldyB4ZW5zdG9yZSBub2RlcywgZGlmZmVyZW50IGZyb20gYW55IG9mIHRo ZSBleGlzdGluZyBQVgo+ID4gPiBjb25zb2xlIG5vZGVzLiAgRm9yIGV4YW1wbGU6Cj4gPiA+IAo+ ID4gPiAvbG9jYWwvZG9tYWluLyRET01JRC94ZW4tY29uc29sZS8kTlVNL3JpbmctcmVmCj4gPiA+ IC9sb2NhbC9kb21haW4vJERPTUlEL3hlbi1jb25zb2xlLyROVU0vcG9ydAo+ID4gPiAKPiA+ID4g V2hlcmUgJERPTUlEIGlzIHRoZSBndWVzdCBkb21haW4gaWQsIGFuZCAkTlVNIGlzIHRoZSBjb25z b2xlIG51bWJlciwKPiA+ID4gc3RhcnRpbmcgZnJvbSAwLiBJZiB3ZSB1c2UgbmV3IGh2bV9wYXJt cyBmb3IgdGhlIHBsMDExIFBWIGNvbnNvbGUsIHdlCj4gPiA+IG1pZ2h0IGdldCBhd2F5IHdpdGhv dXQgYW55IHhlbnN0b3JlIHN0dWZmLgo+ID4gCj4gPiBJJ20gYSBiaXQgY29uZnVzZWQ6IFdoeSBk b2VzIGl0IG1ha2Ugc2Vuc2UgdG8gd3JpdGUgdG8geGVuc3RvcmUgaWYgdGhlCj4gPiBvdGhlciBl bmQsIHdoaWNoIGlzIHN1cHBvc2VkIHRvIHJlYWQgdGhlIHZhbHVlcywgY2Fubm90IGFjY2VzcyB0 aGVtPyAgSXMKPiA+IHRoaXMgZm9yIHBlcnNpc3RlbmNlL21pZ3JhdGlvbiBvciBzb21ldGhpbmcg bGlrZSB0aGF0Pwo+IAo+IFRoZSB0d28gZW5kcyBvZiB0aGUgUFYgY29uc29sZSBwcm90b2NvbCBp biB0aGlzIHNjZW5hcmlvIGFyZToKPiAxKSBYZW4KPiAyKSB0aGUgUFYgY29uc29sZSBiYWNrZW5k Cj4gWGVuIGRvZXNuJ3QgcmVhZCB4ZW5zdG9yZSwgYnV0IHRoZSBQViBjb25zb2xlIGJhY2tlbmQg ZG9lcy4gVGhpcyB3b3VsZAo+IGJlIGZvciB0aGUgYmVuZWZpdCBvZiB0aGUgYmFja2VuZDogaXQg YWxyZWFkeSByZWFkcyBwYXJhbWV0ZXJzIGZyb20KPiB4ZW5zdG9yZSwgaXQgbWlnaHQgYmUgZWFz eSB0byBwYXNzIHBhcmFtZXRlcnMgdG8gaXQgdGhhdCB3YXkuIElmIGl0IGlzCj4gdGhlIHRvb2xz dGFjayB0byBkbyB0aGUgYWxsb2NhdGlvbiwgaXQgd291bGQgYmUgZWFzeSBmb3IgaXQgdG8gYWxz bwo+IHdyaXRlIGRhdGEgdG8geGVuc3RvcmUuIEhvd2V2ZXIsIGlmIGl0IGlzIFhlbiB0byBkbyB0 aGUgYWxsb2NhdGlvbiAoYXMKPiBKdWxpZW4gc3VnZ2VzdGVkKSwgdGhpcyBpcyBvdXQgb2YgdGhl IHF1ZXN0aW9uLgo+IAo+IEluIGFueSBjYXNlLCBpdCBpcyBiZXN0IHRvIHVzZSBhIHNpbmdsZSBk aXNjb3ZlcnkgbWVjaGFuaXNtIHJhdGhlciB0aGFuCj4gdHdvLiBUaGlzIGlzIHByb2JhYmx5IHVu bmVjZXNzYXJ5IGJlY2F1c2UgeGVuY29uc29sZWQgY291bGQgdXNlCj4gaHZtX3BhcmFtcyBvciB0 aGUgbmV3IGh5cGVyY2FsbCB0byBnZXQgdGhlIGluZm8uCj4gCj4gCj4gPiA+IEZvciBzaW1wbGlj aXR5LCBnaXZlbiB0aGF0IHhlbmNvbnNvbGVkIGRvZXNuJ3Qgc3VwcG9ydCBtdWx0aXBsZSBQVgo+ ID4gPiBjb25zb2xlcywgd2UgY291bGQgc2V0dXAgdGhlIHBsMDExIFBWIGNvbnNvbGUgKmluc3Rl YWQqIG9mIHRoZSByZWd1bGFyCj4gPiA+IFBWIGNvbnNvbGUsIGhhY2tpbmcgdG9vbHMvY29uc29s ZS9kYWVtb24vaW8uYzpkb21haW5fY3JlYXRlX3JpbmcuIEl0J3MKPiA+ID4gc2FmZSBpZiB0aGUg dG9vbHN0YWNrIGRvZXNuJ3QgcHJvdmlkZSBhIFBWIGNvbnNvbGUuIFdoZW4gcGwwMTEgaXMKPiA+ ID4gcmVxdWVzdGVkLCBsaWJ4bCBjb3VsZCBzZXQgdGhlIHBmbiBhbmQgZXZ0Y2huIGh2bV9wYXJh bXMgdG8gMCBmb3IgdGhlCj4gPiA+IGluaXRpYWwgUFYgY29uc29sZS4gRXZlbnR1YWxseSwgaXQg d291bGQgYmUgbmljZSBpZiB4ZW5jb25zb2xlZCB3YXMgYWJsZQo+ID4gPiB0byBzdXBwb3J0IGJv dGggY29uc29sZXMgYXQgdGhlIHNhbWUgdGltZS4KPiA+IAo+ID4gRG8geW91IG1lYW4gZm9yIGRl dmVsb3BtZW50IGFuZCBkZWJ1Z2dpbmcgb3IgZm9yIGFuIGV4aXN0aW5nIHNvbHV0aW9uPwo+ID4g Cj4gPiBJIHdvdWxkIGFkdmlzZSBhZ2FpbnN0IGRvaW5nIHNvbWV0aGluZyB0byByZW1vdmUgZXhp c3RpbmcgZnVuY3Rpb25hbGl0eSwKPiA+IHNpbmNlIHRoZSBwb2ludCBvZiB0aGlzIHdob2xlIGV4 ZXJjaXNlIGlzIHRvIGltcHJvdmUgcG9ydGFiaWxpdHkgb2YgQVJNCj4gPiBWTSBpbWFnZXMsIGFu ZCB3ZSB3b3VsZCBub3QgYmUgaGVscGluZyB3aXRoIHRoYXQgc2l0dWF0aW9uIGJ5IGJyZWFraW5n Cj4gPiBmdW5jdGlvbmFsaXR5IG9mIFZNIGltYWdlcyB0aGF0IGN1cnJlbnRseSByZWx5IG9uIHRo ZSBYZW4gY29uc29sZSB0byBiZQo+ID4gdGhlcmUuCj4gCj4gSSBtZWFuIG1vc3RseSBhcyBhIGZp cnN0IG1pbGVzdG9uZS4gSG93ZXZlciwgbG9va2luZyBhdCB4ZW5jb25zb2xlZCwgaXQKPiBkb2Vz bid0IHNlZW0gZGlmZmljdWx0IHRvIGFkZCBzdXBwb3J0IHRvIG11bHRpcGxlIFBWIGNvbnNvbGVz IHBlcgo+IGRvbWFpbi4KCkNvb2whCgpUaGFua3MsCi1DaHJpc3RvZmZlcgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==