From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH i-g-t] Add dmesg capture and dumping to tests and a test for it. Date: Wed, 18 Nov 2015 16:44:20 +0100 Message-ID: <20151118154420.GC20799@phenom.ffwll.local> References: <1447680143-11895-1-git-send-email-joonas.lahtinen@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f50.google.com (mail-wm0-f50.google.com [74.125.82.50]) by gabe.freedesktop.org (Postfix) with ESMTPS id 89E896E73F for ; Wed, 18 Nov 2015 07:44:24 -0800 (PST) Received: by wmww144 with SMTP id w144so77830054wmw.0 for ; Wed, 18 Nov 2015 07:44:23 -0800 (PST) Content-Disposition: inline In-Reply-To: <1447680143-11895-1-git-send-email-joonas.lahtinen@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Joonas Lahtinen Cc: Intel graphics driver community testing & development , Thomas Wood List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBOb3YgMTYsIDIwMTUgYXQgMDM6MjI6MjNQTSArMDIwMCwgSm9vbmFzIExhaHRpbmVu IHdyb3RlOgo+IENjOiBUaG9tYXMgV29vZCA8dGhvbWFzLndvb2RAaW50ZWwuY29tPgo+IENjOiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogRGFtaWVuIExlc3Bp YXUgPGRhbWllbi5sZXNwaWF1QGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBKb29uYXMgTGFo dGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CgpHaXZlbiB0aGF0IHdlIGhh dmUgYWxsIHRoYXQgaW4gcGlnbGl0IGFscmVhZHkgdGhlIGNvbW1pdCBtZXNzYWdlIGlzIGEgYml0 CnRoaW4gb24ganVzdGlmaWNhdGlvbi4gV2h5IGRvIHdlIG5lZWQgdGhpcyBpbiBpZ3QgdG9vPyBI b3cgZG9lcyB0aGlzCmludGVyYWN0IHdpdGggdGhlIHBpZ2xpdCBkbWVzZyBjYXB0dXJlPwoKPiAt LS0KPiAgbGliL2lndF9jb3JlLmMgICAgICAgICB8IDExMyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgfCAg IDEgKwo+ICB0ZXN0cy9pZ3RfY2FwdHVyZS5jICAgIHwgIDkzICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAyMDAgaW5zZXJ0aW9ucygr KSwgNyBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2lndF9jYXB0dXJl LmMKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9jb3JlLmMgYi9saWIvaWd0X2NvcmUuYwo+IGlu ZGV4IDA0YTBhYjIuLmU3MzE3NWEgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9jb3JlLmMKPiArKysg Yi9saWIvaWd0X2NvcmUuYwo+IEBAIC0yMTEsNiArMjExLDggQEAKPiAgICogIi0taGVscCIgY29t bWFuZCBsaW5lIG9wdGlvbi4KPiAgICovCj4gIAo+ICsjZGVmaW5lIElHVF9LTVNHX0NBUFRVUkVf RFVNUF9CVUZfU0laRQkJNDA5Ngo+ICsKPiAgc3RhdGljIHVuc2lnbmVkIGludCBleGl0X2hhbmRs ZXJfY291bnQ7Cj4gIGNvbnN0IGNoYXIgKmlndF9pbnRlcmFjdGl2ZV9kZWJ1ZzsKPiAgCj4gQEAg LTI0Nyw2ICsyNDksMTAgQEAgZW51bSB7Cj4gIHN0YXRpYyBpbnQgaWd0X2V4aXRjb2RlID0gSUdU X0VYSVRfU1VDQ0VTUzsKPiAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbW1hbmRfc3RyOwo+ICAKPiAr c3RhdGljIGludCBpZ3Rfa21zZ19jYXB0dXJlX2ZkOwo+ICtzdGF0aWMgY2hhciogaWd0X2ttc2df Y2FwdHVyZV9kdW1wX2J1ZjsKPiArc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBrbXNnX211dGV4ID0g UFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKPiArCj4gIHN0YXRpYyBjaGFyKiBpZ3RfbG9nX2Rv bWFpbl9maWx0ZXI7Cj4gIHN0YXRpYyBzdHJ1Y3Qgewo+ICAJY2hhciAqZW50cmllc1syNTZdOwo+ IEBAIC0zMTIsNiArMzE4LDcxIEBAIHN0YXRpYyB2b2lkIF9pZ3RfbG9nX2J1ZmZlcl9kdW1wKHZv aWQpCj4gIAlwdGhyZWFkX211dGV4X3VubG9jaygmbG9nX2J1ZmZlcl9tdXRleCk7Cj4gIH0KPiAg Cj4gK3N0YXRpYyB2b2lkIF9pZ3Rfa21zZ19jYXB0dXJlX3Jlc2V0KHZvaWQpCj4gK3sKPiArCWlm IChpZ3Rfa21zZ19jYXB0dXJlX2ZkID09IC0xKQo+ICsJCXJldHVybjsKPiArCj4gKwlwdGhyZWFk X211dGV4X2xvY2soJmttc2dfbXV0ZXgpOwo+ICsKPiArCWxzZWVrKGlndF9rbXNnX2NhcHR1cmVf ZmQsIDAsIFNFRUtfRU5EKTsKPiArCj4gKwlwdGhyZWFkX211dGV4X3VubG9jaygma21zZ19tdXRl eCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIF9pZ3Rfa21zZ19jYXB0dXJlX2R1bXAodm9pZCkK PiArewo+ICsJc2l6ZV90IG5ieXRlczsKPiArCWludCBubGluZXM7Cj4gKwljaGFyICpwOwo+ICsJ Y2hhciAqcDA7Cj4gKwlpbnQgYzsKPiArCj4gKwlpZiAoaWd0X2ttc2dfY2FwdHVyZV9mZCA9PSAt MSB8fAo+ICsJICAgIGlndF9rbXNnX2NhcHR1cmVfZHVtcF9idWYgPT0gTlVMTCkKPiArCQlyZXR1 cm47Cj4gKwo+ICsJcHRocmVhZF9tdXRleF9sb2NrKCZrbXNnX211dGV4KTsKPiArCj4gKwo+ICsJ bmxpbmVzID0gMDsKPiArCWRvIHsKPiArCQllcnJubyA9IDA7Cj4gKwkJbmJ5dGVzID0gcmVhZChp Z3Rfa21zZ19jYXB0dXJlX2ZkLAo+ICsJCQkgICAgICBpZ3Rfa21zZ19jYXB0dXJlX2R1bXBfYnVm LAo+ICsJCQkgICAgICBJR1RfS01TR19DQVBUVVJFX0RVTVBfQlVGX1NJWkUpOwo+ICsKPiArCQlp ZiAobmJ5dGVzID09IC0xKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWYgKCFubGluZXMpCj4g KwkJCWZwcmludGYoc3RkZXJyLCAiKioqKiBLTVNHICoqKipcbiIpOwo+ICsKPiArCQlwID0gcDAg PSBzdHJjaHIoaWd0X2ttc2dfY2FwdHVyZV9kdW1wX2J1ZiwgJzsnKSArIDE7Cj4gKwkJd2hpbGUg KHAgLSBwMCA8IG5ieXRlcykgewo+ICsJCQlpZiAoKnAgIT0gJ1xcJykgewo+ICsJCQkJZnB1dGMo KnArKywgc3RkZXJyKTsKPiArCQkJCWNvbnRpbnVlOwo+ICsJCQl9Cj4gKwkJCXNzY2FuZihwLCAi XFx4JXgiLCAmYyk7Cj4gKwkJCWZwdXRjKGMsIHN0ZGVycik7Cj4gKwkJCXAgKz0gNDsKPiArCQl9 Cj4gKwkJLy9mcHV0cyhzdHJjaHIoaWd0X2ttc2dfY2FwdHVyZV9kdW1wX2J1ZiwgJzsnKSArIDEs IHN0ZGVycik7Cj4gKwkJbmxpbmVzKys7Cj4gKwl9IHdoaWxlKGVycm5vID09IDApOwo+ICsKPiAr CWlmIChubGluZXMpCj4gKwkJZnByaW50ZihzdGRlcnIsICIqKioqICBFTkQgICoqKipcbiIpOwo+ ICsJZWxzZQo+ICsJCWZwcmludGYoc3RkZXJyLCAiTm8ga21zZy5cbiIpOwo+ICsKPiArCWlmIChl cnJubyAhPSBFQUdBSU4pCj4gKwkJZnByaW50ZihzdGRlcnIsICJJbmNvbXBsZXRlIGttc2cuXG4i KTsKPiArCj4gKwlwdGhyZWFkX211dGV4X3VubG9jaygma21zZ19tdXRleCk7Cj4gK30KPiArCj4g IF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsIDEsIDIpKSkKPiAgc3RhdGljIHZvaWQga21z Zyhjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKPiAgI2RlZmluZSBLRVJOX0VNRVIJIjwwPiIKPiBA QCAtMzMwLDExICs0MDEsMTUgQEAgc3RhdGljIHZvaWQga21zZyhjb25zdCBjaGFyICpmb3JtYXQs IC4uLikKPiAgCWlmIChmaWxlID09IE5VTEwpCj4gIAkJcmV0dXJuOwo+ICAKPiArCXB0aHJlYWRf bXV0ZXhfbG9jaygma21zZ19tdXRleCk7Cj4gKwo+ICAJdmFfc3RhcnQoYXAsIGZvcm1hdCk7Cj4g IAl2ZnByaW50ZihmaWxlLCBmb3JtYXQsIGFwKTsKPiAgCXZhX2VuZChhcCk7Cj4gIAo+ICAJZmNs b3NlKGZpbGUpOwo+ICsKPiArCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZrbXNnX211dGV4KTsKPiAg fQo+ICAKPiAgc3RhdGljIHZvaWQgZ2V0dGltZShzdHJ1Y3QgdGltZXNwZWMgKnRzKQo+IEBAIC01 MjcsNiArNjAyLDE1IEBAIHN0YXRpYyBpbnQgY29tbW9uX2luaXQoaW50ICphcmdjLCBjaGFyICoq YXJndiwKPiAgCWludCByZXQgPSAwOwo+ICAJY29uc3QgY2hhciAqZW52Owo+ICAKPiArCWlndF9r bXNnX2NhcHR1cmVfZmQgPSBvcGVuKCIvZGV2L2ttc2ciLCBPX1JEV1IgfCBPX05PTkJMT0NLKTsK PiArCWlmIChpZ3Rfa21zZ19jYXB0dXJlX2ZkICE9IC0xKSB7Cj4gKwkJaWd0X2ttc2dfY2FwdHVy ZV9kdW1wX2J1ZiA9Cj4gKwkJCW1hbGxvYyhJR1RfS01TR19DQVBUVVJFX0RVTVBfQlVGX1NJWkUp Owo+ICsJCWlmKGlndF9rbXNnX2NhcHR1cmVfZHVtcF9idWYgPT0gTlVMTCkKPiArCQkJaWd0X3dh cm4oIlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnksICIKPiArCQkJCSAid2lsbCBub3QgZHVtcCBr bXNnLlxuIik7Cj4gKwl9Cj4gKwo+ICAJaWYgKCFpc2F0dHkoU1RET1VUX0ZJTEVOTykgfHwgZ2V0 ZW52KCJJR1RfUExBSU5fT1VUUFVUIikpCj4gIAkJX19pZ3RfcGxhaW5fb3V0cHV0ID0gdHJ1ZTsK PiAgCj4gQEAgLTc5Niw2ICs4ODAsNyBAQCBib29sIF9faWd0X3J1bl9zdWJ0ZXN0KGNvbnN0IGNo YXIgKnN1YnRlc3RfbmFtZSkKPiAgCWlndF9kZWJ1ZygiU3RhcnRpbmcgc3VidGVzdDogJXNcbiIs IHN1YnRlc3RfbmFtZSk7Cj4gIAo+ICAJX2lndF9sb2dfYnVmZmVyX3Jlc2V0KCk7Cj4gKwlfaWd0 X2ttc2dfY2FwdHVyZV9yZXNldCgpOwo+ICAKPiAgCWdldHRpbWUoJnN1YnRlc3RfdGltZSk7Cj4g IAlyZXR1cm4gKGluX3N1YnRlc3QgPSBzdWJ0ZXN0X25hbWUpOwo+IEBAIC05NzIsNiArMTA1Nyw3 IEBAIHZvaWQgaWd0X2ZhaWwoaW50IGV4aXRjb2RlKQo+ICAJCWV4aXQoZXhpdGNvZGUpOwo+ICAK PiAgCV9pZ3RfbG9nX2J1ZmZlcl9kdW1wKCk7Cj4gKwlfaWd0X2ttc2dfY2FwdHVyZV9kdW1wKCk7 Cj4gIAo+ICAJaWYgKGluX3N1YnRlc3QpIHsKPiAgCQlpZiAoZXhpdGNvZGUgPT0gSUdUX0VYSVRf VElNRU9VVCkKPiBAQCAtMTA3MiwxNiArMTE1OCwyMSBAQCB2b2lkIF9faWd0X2ZhaWxfYXNzZXJ0 KGNvbnN0IGNoYXIgKmRvbWFpbiwgY29uc3QgY2hhciAqZmlsZSwgY29uc3QgaW50IGxpbmUsCj4g ICAqLwo+ICB2b2lkIGlndF9leGl0KHZvaWQpCj4gIHsKPiArCWludCBzdGF0dXMgPSBJR1RfRVhJ VF9TVUNDRVNTOwo+ICsKPiAgCWlndF9leGl0X2NhbGxlZCA9IHRydWU7Cj4gIAo+ICAJaWYgKHJ1 bl9zaW5nbGVfc3VidGVzdCAmJiAhcnVuX3NpbmdsZV9zdWJ0ZXN0X2ZvdW5kKSB7Cj4gIAkJaWd0 X3dhcm4oIlVua25vd24gc3VidGVzdDogJXNcbiIsIHJ1bl9zaW5nbGVfc3VidGVzdCk7Cj4gLQkJ ZXhpdChJR1RfRVhJVF9JTlZBTElEKTsKPiArCQlzdGF0dXMgPSBJR1RfRVhJVF9JTlZBTElEOwo+ ICsJCWdvdG8gZG9fZXhpdDsKPiAgCX0KPiAgCj4gIAo+IC0JaWYgKGlndF9vbmx5X2xpc3Rfc3Vi dGVzdHMoKSkKPiAtCQlleGl0KElHVF9FWElUX1NVQ0NFU1MpOwo+ICsJaWYgKGlndF9vbmx5X2xp c3Rfc3VidGVzdHMoKSkgewo+ICsJCXN0YXR1cyA9IElHVF9FWElUX1NVQ0NFU1M7Cj4gKwkJZ290 byBkb19leGl0Owo+ICsJfQo+ICAKPiAgCWttc2coS0VSTl9JTkZPICIlczogZXhpdGluZywgcmV0 PSVkXG4iLCBjb21tYW5kX3N0ciwgaWd0X2V4aXRjb2RlKTsKPiAgCWlndF9kZWJ1ZygiRXhpdGlu ZyB3aXRoIHN0YXR1cyBjb2RlICVkXG4iLCBpZ3RfZXhpdGNvZGUpOwo+IEBAIC0xMTExLDE4ICsx MjAyLDI2IEBAIHZvaWQgaWd0X2V4aXQodm9pZCkKPiAgCj4gIAo+ICAJCXByaW50ZigiJXMgKCUu M2ZzKVxuIiwgcmVzdWx0LCBlbGFwc2VkKTsKPiAtCQlleGl0KGlndF9leGl0Y29kZSk7Cj4gKwkJ c3RhdHVzID0gaWd0X2V4aXRjb2RlOwo+ICsJCWdvdG8gZG9fZXhpdDsKPiAgCX0KPiAgCj4gIAkv KiBDYWxsaW5nIHRoaXMgd2l0aG91dCBjYWxsaW5nIG9uZSBvZiB0aGUgYWJvdmUgaXMgYSBmYWls dXJlICovCj4gIAlhc3NlcnQoc2tpcHBlZF9vbmUgfHwgc3VjY2VlZGVkX29uZSB8fCBmYWlsZWRf b25lKTsKPiAgCj4gIAlpZiAoZmFpbGVkX29uZSkKPiAtCQlleGl0KGlndF9leGl0Y29kZSk7Cj4g KwkJc3RhdHVzID0gaWd0X2V4aXRjb2RlOwo+ICAJZWxzZSBpZiAoc3VjY2VlZGVkX29uZSkKPiAt CQlleGl0KElHVF9FWElUX1NVQ0NFU1MpOwo+ICsJCXN0YXR1cyA9IElHVF9FWElUX1NVQ0NFU1M7 Cj4gIAllbHNlCj4gLQkJZXhpdChJR1RfRVhJVF9TS0lQKTsKPiArCQlzdGF0dXMgPSBJR1RfRVhJ VF9TS0lQOwo+ICtkb19leGl0Ogo+ICsJaWYgKGlndF9rbXNnX2NhcHR1cmVfZmQgIT0gLTEpCj4g KwkJY2xvc2UoaWd0X2ttc2dfY2FwdHVyZV9mZCk7Cj4gKwlpZiAoaWd0X2ttc2dfY2FwdHVyZV9k dW1wX2J1ZiAhPSBOVUxMKQo+ICsJCWZyZWUoaWd0X2ttc2dfY2FwdHVyZV9kdW1wX2J1Zik7Cj4g Kwo+ICsJZXhpdChzdGF0dXMpOwo+ICB9Cj4gIAo+ICAvKiBmb3JrIHN1cHBvcnQgY29kZSAqLwo+ IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291 cmNlcwo+IGluZGV4IDhmYjJkZTguLjI1ZjBjNGEgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvTWFrZWZp bGUuc291cmNlcwo+ICsrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiBAQCAtNjIsNiArNjIs NyBAQCBURVNUU19wcm9nc19NID0gXAo+ICAJZ2VtX3RpbGVkX3BhcnRpYWxfcHdyaXRlX3ByZWFk IFwKPiAgCWdlbV91c2VycHRyX2JsaXRzIFwKPiAgCWdlbV93cml0ZV9yZWFkX3Jpbmdfc3dpdGNo IFwKPiArCWlndF9jYXB0dXJlIFwKPiAgCWttc19hZGRmYl9iYXNpYyBcCj4gIAlrbXNfYXRvbWlj IFwKPiAgCWttc19jdXJzb3JfY3JjIFwKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaWd0X2NhcHR1cmUu YyBiL3Rlc3RzL2lndF9jYXB0dXJlLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAw MDAwMDAuLmZkMDA4ZDAKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdGVzdHMvaWd0X2NhcHR1cmUu Ywo+IEBAIC0wLDAgKzEsOTMgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTUgSW50ZWwg Q29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh cmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5l eHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM TAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S IE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICogQXV0aG9y czoKPiArICogICAgSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwu Y29tPgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJpZ3QuaCIKPiArI2luY2x1ZGUgPHVu aXN0ZC5oPgo+ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4gKyNpbmNsdWRlIDxzdGRpby5oPgo+ICsj aW5jbHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDxmY250bC5oPgo+ICsjaW5jbHVkZSA8aW50 dHlwZXMuaD4KPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ ICsjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Cj4gKwo+ICtzdGF0aWMgRklMRSoga21zZzsKPiArCj4g K3N0YXRpYyB2b2lkCj4gK3Rlc3Rfa21zZyh2b2lkKQo+ICt7Cj4gKwlmcHV0cygiVEVTVCAoS01T RylcbiIsIGttc2cpOwo+ICsJZmZsdXNoKGttc2cpOwo+ICsJaWd0X2ZhaWwoSUdUX0VYSVRfRkFJ TFVSRSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK3Rlc3Rfd2Fybih2b2lkKQo+ICt7Cj4g KwlpZ3Rfd2FybigiVEVTVCAoV0FSTilcbiIpOwo+ICsJaWd0X2ZhaWwoSUdUX0VYSVRfRkFJTFVS RSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK3Rlc3RfZGVidWcodm9pZCkKPiArewo+ICsJ aWd0X2RlYnVnKCJURVNUIChERUJVRylcbiIpOwo+ICsJaWd0X2ZhaWwoSUdUX0VYSVRfRkFJTFVS RSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK3Rlc3RfY29tYmluZWQodm9pZCkKPiArewo+ ICsJaWd0X3dhcm4oIlRFU1QgIzEgKFdBUk4pXG4iKTsKPiArCWZwdXRzKCJURVNUICMxXG4iLCBr bXNnKTsKPiArCWlndF93YXJuKCJURVNUICMyIChXQVJOKVxuIik7Cj4gKwlmcHV0cygiVEVTVCAj MlxuIiwga21zZyk7Cj4gKwlmZmx1c2goa21zZyk7Cj4gKwlpZ3RfZmFpbChJR1RfRVhJVF9GQUlM VVJFKTsKPiArfQo+ICsKPiAraWd0X21haW4KPiArewo+ICsJaWd0X2ZpeHR1cmUgewo+ICsJCWtt c2cgPSBmb3BlbigiL2Rldi9rbXNnIiwgInciKTsKPiArCQlpZ3RfcmVxdWlyZShrbXNnICE9IE5V TEwpOwo+ICsJfQo+ICsKPiArCWlndF9zdWJ0ZXN0KCJrbXNnIikKPiArCQl0ZXN0X2ttc2coKTsK PiArCWlndF9zdWJ0ZXN0KCJ3YXJuIikKPiArCQl0ZXN0X3dhcm4oKTsKPiArCWlndF9zdWJ0ZXN0 KCJkZWJ1ZyIpCj4gKwkJdGVzdF9kZWJ1ZygpOwo+ICsJaWd0X3N1YnRlc3QoImNvbWJpbmVkIikK PiArCQl0ZXN0X2NvbWJpbmVkKCk7Cj4gKwo+ICsJaWd0X2ZpeHR1cmUgewo+ICsJCWZjbG9zZShr bXNnKTsKPiArCX0KPiArfQo+IC0tIAo+IDIuNC4zCj4gCj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJl IEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=