From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: Re: [PATCH intel-gpu-tools] tools: Added intel_dpio_read and intel_dpio_write Date: Mon, 6 Aug 2012 14:26:19 -0700 Message-ID: <20120806142619.68a393a2@bwidawsk.net> References: <1343909236-17870-1-git-send-email-vijay.a.purushothaman@intel.com> <25e00d42d0c3a1f04db332d79a69b63d@bwidawsk.net> <20120806131033.00001031@unknown> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from shiva.chad-versace.us (209-20-75-48.static.cloud-ips.com [209.20.75.48]) by gabe.freedesktop.org (Postfix) with ESMTP id 7439D9E75F for ; Mon, 6 Aug 2012 14:26:30 -0700 (PDT) In-Reply-To: <20120806131033.00001031@unknown> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Vijay Purushothaman Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCA2IEF1ZyAyMDEyIDEzOjEwOjMzICswNTMwClZpamF5IFB1cnVzaG90aGFtYW4gPHZp amF5LmEucHVydXNob3RoYW1hbkBpbnRlbC5jb20+IHdyb3RlOgoKPiBPbiBUaHUsIDIgQXVnIDIw MTIgMDk6MDY6NDggLTA3MDAKPiBCZW4gV2lkYXdza3kgPGJlbkBid2lkYXdzay5uZXQ+IHdyb3Rl Ogo+IAo+ID4gT24gMjAxMi0wOC0wMiAwNTowNywgVmlqYXkgUHVydXNob3RoYW1hbiB3cm90ZToK PiA+ID4gSW4gVmFsbGV5dmlldyB0aGUgRFBMTCBhbmQgbGFuZSBjb250cm9sIHJlZ2lzdGVycyBh cmUgYWNjZXNzaWJsZQo+ID4gPiBvbmx5IHRocm91Z2ggc2lkZSBiYW5kIGZhYnJpYyBjYWxsZWQg RFBJTy4gQWRkZWQgdHdvIHRvb2xzIHRvIHJlYWQKPiA+ID4gYW5kIHdyaXRlCj4gPiA+IHJlZ2lz dGVycyByZXNpZGluZyBpbiB0aGlzIHNwYWNlLgo+ID4gCj4gPiBDb3VsZCBJIGNvbnZpbmNlIHlv dSB0byB1c2UgdGhlIGNlbnRyYWxpemVkIHJlYWQvd3JpdGUgbW1pbyBmdW5jdGlvbnM/Cj4gPiBP dGhlcndpc2UsIGV2ZXJ5dGhpbmcgc2VlbXMgZmluZSB0byBtZSBoZXJlLgo+ID4gCj4gU3VyZS4g SSB3aWxsIG1vdmUgdGhlc2UgcmVhZCwgd3JpdGUgZnVuY3Rpb25zIHRvIGludGVsX3JlZ19yZWFk ICYKPiBpbnRlbF9yZWdfd3JpdGUuCj4gCj4gVGhhbmtzLAo+IFZpamF5CgpBY3R1YWxseSwgSSBk aWRuJ3QgbWluZCB0aGVtIGJlaW5nIGEgc2VwYXJhdGUgYXBwbGljYXRpb24gKGFuZCBJIGFncmVl CnJlYWQgYW5kIHdyaXRlIHNob3VsZCBiZSBzZXBhcmF0ZWQpLiBJIGp1c3Qgd2FudGVkIHRoZSBE UElPCmZ1bmN0aW9uYWxpdHkgaW4gdGhlIGNvcmUgZnVuY3Rpb25zLCBpZS4gaW4gaS1nLXQvbGli L3doYXRldmVyLgoKPiAKPiA+ID4KPiA+ID4gU2lnbmVkLW9mZi1ieTogVmlqYXkgUHVydXNob3Ro YW1hbiA8dmlqYXkuYS5wdXJ1c2hvdGhhbWFuQGludGVsLmNvbT4KPiA+ID4gLS0tCj4gPiA+ICB0 b29scy9NYWtlZmlsZS5hbSAgICAgICAgfCAgICAyICsKPiA+ID4gIHRvb2xzL2ludGVsX2RwaW9f cmVhZC5jICB8ICAxMDUKPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwo+ID4gPiAgdG9vbHMvaW50ZWxfZHBpb193cml0ZS5jIHwgIDEwMwo+ID4gPiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gIDMgZmls ZXMgY2hhbmdlZCwgMjEwIGluc2VydGlvbnMoKykKPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0 b29scy9pbnRlbF9kcGlvX3JlYWQuYwo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2lu dGVsX2RwaW9fd3JpdGUuYwo+ID4gPgo+ID4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMvTWFrZWZpbGUu YW0gYi90b29scy9NYWtlZmlsZS5hbQo+ID4gPiBpbmRleCBkNDYxZjM4Li43MWZiMDg3IDEwMDY0 NAo+ID4gPiAtLS0gYS90b29scy9NYWtlZmlsZS5hbQo+ID4gPiArKysgYi90b29scy9NYWtlZmls ZS5hbQo+ID4gPiBAQCAtMTUsNiArMTUsOCBAQCBiaW5fUFJPR1JBTVMgPSAJCQkJXAo+ID4gPiAg CWludGVsX3JlZ193cml0ZSAJCVwKPiA+ID4gIAlpbnRlbF9yZWdfcmVhZCAJCQlcCj4gPiA+ICAJ aW50ZWxfZm9yY2V3YWtlZAkJXAo+ID4gPiArCWludGVsX2RwaW9fcmVhZAkJCVwKPiA+ID4gKwlp bnRlbF9kcGlvX3dyaXRlCQlcCj4gPiA+ICAJaW50ZWxfbDNfcGFyaXR5Cj4gPiA+Cj4gPiA+ICBu b2luc3RfUFJPR1JBTVMgPSAJCQlcCj4gPiA+IGRpZmYgLS1naXQgYS90b29scy9pbnRlbF9kcGlv X3JlYWQuYyBiL3Rvb2xzL2ludGVsX2RwaW9fcmVhZC5jCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAuLjhiOTI0ZmQKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4g PiArKysgYi90b29scy9pbnRlbF9kcGlvX3JlYWQuYwo+ID4gPiBAQCAtMCwwICsxLDEwNSBAQAo+ ID4gPiArLyoKPiA+ID4gKyAqIENvcHlyaWdodCDCqSAyMDEyIEludGVsIENvcnBvcmF0aW9uCj4g PiA+ICsgKgo+ID4gPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gCj4gPiA+IG9idGFpbmluZyBhCj4gPiA+ICsgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCj4g PiA+ICJTb2Z0d2FyZSIpLAo+ID4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgCj4gPiA+IGxpbWl0YXRpb24KPiA+ID4g KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCAKPiA+ID4gc3VibGljZW5zZSwKPiA+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0bwo+ID4gPiB3aG9tIHRoZQo+ ID4gPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgCj4gPiA+IGNvbmRpdGlvbnM6Cj4gPiA+ICsgKgo+ID4gPiArICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UKPiA+ID4gKGluY2x1 ZGluZyB0aGUgbmV4dAo+ID4gPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIAo+ID4gPiBwb3J0aW9ucyBvZiB0aGUKPiA+ID4gKyAq IFNvZnR3YXJlLgo+ID4gPiArICoKPiA+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+ID4gPiBFWFBSRVNTIE9SCj4g PiA+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIAo+ID4gPiBNRVJDSEFOVEFCSUxJVFksCj4gPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gCj4gPiA+IEVWRU5U IFNIQUxMCj4gPiA+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwKPiA+ID4gREFNQUdFUyBPUiBPVEhFUgo+ID4gPiArICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IAo+ID4gPiBBUklTSU5HCj4gPiA+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIAo+ID4gPiBPVEhFUgo+ID4gPiArICogREVB TElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ID4gPiArICoKPiA+ID4gKyAqIEF1dGhvcnM6Cj4gPiA+ ICsgKgkJVmlqYXkgUHVydXNob3RoYW1hbgo+ID4gPiA8dmlqYXkuYS5wdXJ1c2hvdGhhbWFuQGlu dGVsLmNvbT4KPiA+ID4gKyAqCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUgPHVu aXN0ZC5oPgo+ID4gPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ID4gPiArI2luY2x1ZGUgPHN0ZGlv Lmg+Cj4gPiA+ICsjaW5jbHVkZSA8ZXJyLmg+Cj4gPiA+ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4g PiA+ICsjaW5jbHVkZSAiaW50ZWxfZ3B1X3Rvb2xzLmgiCj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUg VkxWX0RJU1BMQVlfQkFTRQkJMHgxODAwMDAKPiA+ID4gKyNkZWZpbmUgRFBJT19QS1QJCQkJMHgy MTAwCj4gPiA+ICsjZGVmaW5lICBEUElPX1JJRAkJCQkoMCA8PCAyNCkKPiA+ID4gKyNkZWZpbmUg IERQSU9fT1BfV1JJVEUJCQkoMSA8PCAxNikKPiA+ID4gKyNkZWZpbmUgIERQSU9fT1BfUkVBRAkJ CSgwIDw8IDE2KQo+ID4gPiArI2RlZmluZSAgRFBJT19QT1JUSUQJCQkoMHgxMiA8PCA4KQo+ID4g PiArI2RlZmluZSAgRFBJT19CWVRFCQkJCSgweGYgPDwgNCkKPiA+ID4gKyNkZWZpbmUgIERQSU9f QlVTWQkJCQkoMSA8PCAwKQo+ID4gPiArI2RlZmluZSBEUElPX0RBVEEJCQkJMHgyMTA0Cj4gPiA+ ICsjZGVmaW5lIERQSU9fUkVHCQkJCTB4MjEwOAo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdWludDMy X3Qgdmx2X2Rpc3BsYXlfcmVnX3JlYWQodWludDMyX3QgcmVnKQo+ID4gPiArewo+ID4gPiArCXJl ZyArPSBWTFZfRElTUExBWV9CQVNFOwo+ID4gPiArCXJldHVybiAoKih2b2xhdGlsZSB1aW50MzJf dCAqKSgodm9sYXRpbGUgY2hhciopbW1pbyArCj4gPiA+IHJlZykpOyArfQo+ID4gPiArCj4gPiA+ ICtzdGF0aWMgdm9pZCB2bHZfZGlzcGxheV9yZWdfd3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJf dCB2YWwpCj4gPiA+ICt7Cj4gPiA+ICsJdm9sYXRpbGUgdWludDMyX3QgKnB0cjsKPiA+ID4gKwo+ ID4gPiArCXJlZyArPSBWTFZfRElTUExBWV9CQVNFOwo+ID4gPiArCXB0ciA9ICh2b2xhdGlsZSB1 aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKSBtbWlvICsgcmVnKTsKPiA+ID4gKwkqcHRyID0g dmFsOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCB1c2FnZShjaGFyICpjbWRu YW1lKQo+ID4gPiArewo+ID4gPiArCXByaW50ZigiV2FybmluZyA6IFRoaXMgcHJvZ3JhbSB3aWxs IHdvcmsgb25seSBvbgo+ID4gPiBWYWxsZXl2aWV3XG4iKTsKPiA+ID4gKwlwcmludGYoIlVzYWdl OiAlcyBbYWRkcl1cbiIsIGNtZG5hbWUpOwo+ID4gPiArCXByaW50ZigiXHQgYWRkciA6IGluIDB4 WFhYWCBmb3JtYXRcbiIpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtpbnQgbWFpbihpbnQgYXJn YywgY2hhcioqIGFyZ3YpCj4gPiA+ICt7Cj4gPiA+ICsJaW50IHJldCA9IDA7Cj4gPiA+ICsJdWlu dDMyX3QgcmVnLCB2YWw7Cj4gPiA+ICsJY2hhciAqY21kbmFtZSA9IHN0cmR1cChhcmd2WzBdKTsK PiA+ID4gKwo+ID4gPiArCWlmIChhcmdjICE9IDIpIHsKPiA+ID4gKwkJdXNhZ2UoY21kbmFtZSk7 Cj4gPiA+ICsJCXJldCA9IDE7Cj4gPiA+ICsJCWdvdG8gb3V0Owo+ID4gPiArCX0KPiA+ID4gKwo+ ID4gPiArCXNzY2FuZihhcmd2WzFdLCAiMHgleCIsICZyZWcpOwo+ID4gPiArCj4gPiA+ICsJaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCk7Cj4gPiA+ ICsKPiA+ID4gKwkvKiBDaGVjayB3aGV0aGVyIHRoZSBzaWRlIGJhbmQgZmFicmljIGlzIHJlYWR5 IHRvIGFjY2VwdAo+ID4gPiBjb21tYW5kcyAqLwo+ID4gPiArCWRvIHsKPiA+ID4gKwkJdXNsZWVw KDEpOwo+ID4gPiArCX0gd2hpbGUgKHZsdl9kaXNwbGF5X3JlZ19yZWFkKERQSU9fUEtUKSAmIERQ SU9fQlVTWSk7Cj4gPiA+ICsKPiA+ID4gKwl2bHZfZGlzcGxheV9yZWdfd3JpdGUoRFBJT19SRUcs IHJlZyk7Cj4gPiA+ICsJdmx2X2Rpc3BsYXlfcmVnX3dyaXRlKERQSU9fUEtULCBEUElPX1JJRCB8 IERQSU9fT1BfUkVBRCB8IAo+ID4gPiBEUElPX1BPUlRJRCB8Cj4gPiA+ICsJCQkJCQkJRFBJT19C WVRFKTsKPiA+ID4gKwlkbyB7Cj4gPiA+ICsJCXVzbGVlcCgxKTsKPiA+ID4gKwl9IHdoaWxlICh2 bHZfZGlzcGxheV9yZWdfcmVhZChEUElPX1BLVCkgJiBEUElPX0JVU1kpOwo+ID4gPiArCj4gPiA+ ICsJdmFsID0gdmx2X2Rpc3BsYXlfcmVnX3JlYWQoRFBJT19EQVRBKTsKPiA+ID4gKwo+ID4gPiAr CXByaW50ZigiUmVhZCBEUElPIHJlZ2lzdGVyOiAweCV4IC0gVmFsdWUgOiAweCV4XG4iLCByZWcs Cj4gPiA+IHZhbCk7ICsKPiA+ID4gKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOwo+ID4g PiArCj4gPiA+ICtvdXQ6Cj4gPiA+ICsJZnJlZShjbWRuYW1lKTsKPiA+ID4gKwlyZXR1cm4gcmV0 Owo+ID4gPiArfQo+ID4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfZHBpb193cml0ZS5jIGIv dG9vbHMvaW50ZWxfZHBpb193cml0ZS5jCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+ IGluZGV4IDAwMDAwMDAuLjk2YjcyZGQKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi90 b29scy9pbnRlbF9kcGlvX3dyaXRlLmMKPiA+ID4gQEAgLTAsMCArMSwxMDMgQEAKPiA+ID4gKy8q Cj4gPiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gPiArICoK PiA+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIAo+ID4gPiBvYnRhaW5pbmcgYQo+ID4gPiArICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+ID4gPiAiU29m dHdhcmUiKSwKPiA+ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IAo+ID4gPiBsaW1pdGF0aW9uCj4gPiA+ICsgKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg Cj4gPiA+IHN1YmxpY2Vuc2UsCj4gPiA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNv ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8KPiA+ID4gd2hvbSB0aGUKPiA+ID4gKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IAo+ID4gPiBjb25kaXRpb25zOgo+ID4gPiArICoKPiA+ID4gKyAqIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlCj4gPiA+IChpbmNsdWRpbmcgdGhl IG5leHQKPiA+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbCAKPiA+ID4gcG9ydGlvbnMgb2YgdGhlCj4gPiA+ICsgKiBTb2Z0d2Fy ZS4KPiA+ID4gKyAqCj4gPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKPiA+ID4gRVhQUkVTUyBPUgo+ID4gPiArICog SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiAK PiA+ID4gTUVSQ0hBTlRBQklMSVRZLAo+ID4gPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIAo+ID4gPiBFVkVOVCBTSEFMTAo+ ID4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sCj4gPiA+IERBTUFHRVMgT1IgT1RIRVIKPiA+ID4gKyAqIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCAKPiA+ID4g QVJJU0lORwo+ID4gPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiAKPiA+ID4gT1RIRVIKPiA+ID4gKyAqIERFQUxJTkdTIElO IFRIRSBTT0ZUV0FSRS4KPiA+ID4gKyAqCj4gPiA+ICsgKiBBdXRob3JzOgo+ID4gPiArICoJCVZp amF5IFB1cnVzaG90aGFtYW4KPiA+ID4gPHZpamF5LmEucHVydXNob3RoYW1hbkBpbnRlbC5jb20+ Cj4gPiA+ICsgKgo+ID4gPiArICovCj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRlIDx1bmlzdGQuaD4K PiA+ID4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPiA+ID4gKyNpbmNsdWRlIDxzdGRpby5oPgo+ID4g PiArI2luY2x1ZGUgPGVyci5oPgo+ID4gPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ID4gPiArI2lu Y2x1ZGUgImludGVsX2dwdV90b29scy5oIgo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIFZMVl9ESVNQ TEFZX0JBU0UJCTB4MTgwMDAwCj4gPiA+ICsjZGVmaW5lIERQSU9fUEtUCQkJCTB4MjEwMAo+ID4g PiArI2RlZmluZSAgRFBJT19SSUQJCQkJKDAgPDwgMjQpCj4gPiA+ICsjZGVmaW5lICBEUElPX09Q X1dSSVRFCQkJKDEgPDwgMTYpCj4gPiA+ICsjZGVmaW5lICBEUElPX09QX1JFQUQJCQkoMCA8PCAx NikKPiA+ID4gKyNkZWZpbmUgIERQSU9fUE9SVElECQkJKDB4MTIgPDwgOCkKPiA+ID4gKyNkZWZp bmUgIERQSU9fQllURQkJCQkoMHhmIDw8IDQpCj4gPiA+ICsjZGVmaW5lICBEUElPX0JVU1kJCQkJ KDEgPDwgMCkKPiA+ID4gKyNkZWZpbmUgRFBJT19EQVRBCQkJCTB4MjEwNAo+ID4gPiArI2RlZmlu ZSBEUElPX1JFRwkJCQkweDIxMDgKPiA+ID4gKwo+ID4gPiArc3RhdGljIHVpbnQzMl90IHZsdl9k aXNwbGF5X3JlZ19yZWFkKHVpbnQzMl90IHJlZykKPiA+ID4gK3sKPiA+ID4gKwlyZWcgKz0gVkxW X0RJU1BMQVlfQkFTRTsKPiA+ID4gKwlyZXR1cm4gKCoodm9sYXRpbGUgdWludDMyX3QgKikoKHZv bGF0aWxlIGNoYXIqKW1taW8gKwo+ID4gPiByZWcpKTsgK30KPiA+ID4gKwo+ID4gPiArc3RhdGlj IHZvaWQgdmx2X2Rpc3BsYXlfcmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQo+ ID4gPiArewo+ID4gPiArCXZvbGF0aWxlIHVpbnQzMl90ICpwdHI7Cj4gPiA+ICsKPiA+ID4gKwly ZWcgKz0gVkxWX0RJU1BMQVlfQkFTRTsKPiA+ID4gKwlwdHIgPSAodm9sYXRpbGUgdWludDMyX3Qg KikoKHZvbGF0aWxlIGNoYXIgKikgbW1pbyArIHJlZyk7Cj4gPiA+ICsJKnB0ciA9IHZhbDsKPiA+ ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgdXNhZ2UoY2hhciAqY21kbmFtZSkKPiA+ ID4gK3sKPiA+ID4gKwlwcmludGYoIldhcm5pbmcgOiBUaGlzIHByb2dyYW0gd2lsbCB3b3JrIG9u bHkgb24KPiA+ID4gVmFsbGV5dmlld1xuIik7Cj4gPiA+ICsJcHJpbnRmKCJVc2FnZTogJXMgW2Fk ZHJdIFt2YWxdXG4iLCBjbWRuYW1lKTsKPiA+ID4gKwlwcmludGYoIlx0IGFkZHIgOiBpbiAweFhY WFggZm9ybWF0XG4iKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAraW50IG1haW4oaW50IGFyZ2Ms IGNoYXIqKiBhcmd2KQo+ID4gPiArewo+ID4gPiArCWludCByZXQgPSAwOwo+ID4gPiArCXVpbnQz Ml90IHJlZywgdmFsOwo+ID4gPiArCWNoYXIgKmNtZG5hbWUgPSBzdHJkdXAoYXJndlswXSk7Cj4g PiA+ICsKPiA+ID4gKwlpZiAoYXJnYyAhPSAzKSB7Cj4gPiA+ICsJCXVzYWdlKGNtZG5hbWUpOwo+ ID4gPiArCQlyZXQgPSAxOwo+ID4gPiArCQlnb3RvIG91dDsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ ID4gKwlzc2NhbmYoYXJndlsxXSwgIjB4JXgiLCAmcmVnKTsKPiA+ID4gKwlzc2NhbmYoYXJndlsy XSwgIjB4JXgiLCAmdmFsKTsKPiA+ID4gKwo+ID4gPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19p bml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDApOwo+ID4gPiArCj4gPiA+ICsJLyogQ2hlY2sg d2hldGhlciB0aGUgc2lkZSBiYW5kIGZhYnJpYyBpcyByZWFkeSB0byBhY2NlcHQKPiA+ID4gY29t bWFuZHMgKi8KPiA+ID4gKwlkbyB7Cj4gPiA+ICsJCXVzbGVlcCgxKTsKPiA+ID4gKwl9IHdoaWxl ICh2bHZfZGlzcGxheV9yZWdfcmVhZChEUElPX1BLVCkgJiBEUElPX0JVU1kpOwo+ID4gPiArCj4g PiA+ICsJdmx2X2Rpc3BsYXlfcmVnX3dyaXRlKERQSU9fREFUQSwgdmFsKTsKPiA+ID4gKwl2bHZf ZGlzcGxheV9yZWdfd3JpdGUoRFBJT19SRUcsIHJlZyk7Cj4gPiA+ICsJdmx2X2Rpc3BsYXlfcmVn X3dyaXRlKERQSU9fUEtULCBEUElPX1JJRCB8IERQSU9fT1BfV1JJVEUgfCAKPiA+ID4gRFBJT19Q T1JUSUQgfAo+ID4gPiArCQkJCQkJCURQSU9fQllURSk7Cj4gPiA+ICsJZG8gewo+ID4gPiArCQl1 c2xlZXAoMSk7Cj4gPiA+ICsJfSB3aGlsZSAodmx2X2Rpc3BsYXlfcmVnX3JlYWQoRFBJT19QS1Qp ICYgRFBJT19CVVNZKTsKPiA+ID4gKwo+ID4gPiArCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5p KCk7Cj4gPiA+ICsKPiA+ID4gK291dDoKPiA+ID4gKwlmcmVlKGNtZG5hbWUpOwo+ID4gPiArCXJl dHVybiByZXQ7Cj4gPiA+ICt9Cj4gPiAKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCgoKLS0gCkJlbiBXaWRhd3NreSwgSW50ZWwgT3Bl biBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK