From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Goel, Akash" Subject: Re: [PATCH] igt/gem_trtt: Exercise the TRTT hardware Date: Wed, 20 Jan 2016 15:54:22 +0530 Message-ID: <569F6056.80003@intel.com> References: <1452339090-3243-1-git-send-email-akash.goel@intel.com> <20160111123208.GT652@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id C6A296E81E for ; Wed, 20 Jan 2016 02:24:24 -0800 (PST) In-Reply-To: <20160111123208.GT652@nuc-i3427.alporthouse.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: akash.goel@intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiAxLzExLzIwMTYgNjowMiBQTSwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+IE9uIFNhdCwgSmFu IDA5LCAyMDE2IGF0IDA1OjAxOjMwUE0gKzA1MzAsIGFrYXNoLmdvZWxAaW50ZWwuY29tIHdyb3Rl Ogo+PiArc3RhdGljIHZvaWQqIG1tYXBfYm8oaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2 NF90IHNpemUpCj4+ICt7Cj4+ICsJdWludDMyX3QgKnB0ciA9IGdlbV9tbWFwX19jcHUoZmQsIGhh bmRsZSwgMCwgc2l6ZSwgUFJPVF9SRUFEKTsKPj4gKwlnZW1fc2V0X2RvbWFpbihmZCwgaGFuZGxl LCBJOTE1X0dFTV9ET01BSU5fQ1BVLCBJOTE1X0dFTV9ET01BSU5fQ1BVKTsKPgo+IHJlYWQtb25s eSBtYXBwaW5nLCBidXQgc2V0IHRvIHRoZSBjcHUgd3JpdGUgZG9tYWluPyBTZWVtcyBpbmNvbnNp c3RlbnQuClllcyB3cml0ZSBub3QgcmVxdWlyZWQsIHdpbGwgY2hhbmdlLgo+Cj4+ICsJcmV0dXJu IHB0cjsKPj4gK30KPgo+PiArLyogZ2VtX3N0b3JlX2RhdGFfc3ZtCj4+ICsgKiBwb3B1bGF0ZSBi YXRjaCBidWZmZXIgd2l0aCBNSV9TVE9SRV9EV09SRF9JTU0gY29tbWFuZAo+PiArICogQGZkOiBk cm0gZmlsZSBkZXNjcmlwdG9yCj4+ICsgKiBAY21kX2J1ZjogYmF0Y2ggYnVmZmVyCj4+ICsgKiBA ZHdfb2Zmc2V0OiB3cml0ZSBvZmZzZXQgaW4gYmF0Y2ggYnVmZmVyCj4+ICsgKiBAdmFkZHI6IGRl c3RpbmF0aW9uIFZpcnR1YWwgYWRkcmVzcwo+PiArICogQGRhdGE6IGRhdGEgdG8gYmUgc3RvcmUg YXQgZGVzdGluYXRpb24KPj4gKyAqIEBlbmQ6IHdoZXRoZXIgdG8gZW5kIGJhdGNoIGJ1ZmZlciBv ciBub3QKPj4gKyovCj4+ICtzdGF0aWMgaW50IGdlbV9zdG9yZV9kYXRhX3N2bShpbnQgZmQsIHVp bnQzMl90ICpjbWRfYnVmLCB1aW50MzJfdCBkd19vZmZzZXQsCj4+ICsJCQl1aW50NjRfdCB2YWRk ciwgdWludDMyX3QgZGF0YSwgYm9vbCBlbmQpCj4KPiBVcm0sIHdoYXQ/Cj4KPiBKdXN0IGNhbGwg dGhpcyB3aGF0IGl0IGlzLAo+IGVtaXRfc3RvcmVfZHdvcmQoY3MsIG9mZnNldCwgdmFkZHIsIHZh bHVlKTsKPgo+IERvbid0IHBhc3MgaW4gYm9vbCBlbmQsIHNpbmNlIGl0IGlzIGdvaW5nIHRvIHVz ZWQgZXhhY3RseSBvbmNlIGFuZCBqdXN0Cj4gY29uZnVzZXMgYWxsIHRoZSBvdGhlciBjYWxsZXJz Lgo+CkZpbmUsIHdpbGwgY2xlYW51cCB0aGlzLgoKPj4gK3sKPj4gKwljbWRfYnVmW2R3X29mZnNl dCsrXSA9IE1JX1NUT1JFX0RXT1JEX0lNTTsKPj4gKwljbWRfYnVmW2R3X29mZnNldCsrXSA9IHZh ZGRyICYgMHhGRkZGRkZGQzsKPj4gKwljbWRfYnVmW2R3X29mZnNldCsrXSA9ICh2YWRkciA+PiAz MikgJiAweEZGRkY7IC8qIGJpdHMgMzI6NDcgKi8KPj4gKwo+PiArCWNtZF9idWZbZHdfb2Zmc2V0 KytdID0gZGF0YTsKPgo+IEludGVyZXN0aW5nIHVzZSBvZiB3aGl0ZXNwYWNlLgo+ClNvcnJ5LCB3 aWxsIHJlbW92ZS4KCj4+ICsJaWYgKGVuZCkgewo+PiArCQljbWRfYnVmW2R3X29mZnNldCsrXSA9 IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4+ICsJCWNtZF9idWZbZHdfb2Zmc2V0KytdID0gMDsKPgo+ PiArCX0KPj4gKwo+PiArCXJldHVybiBkd19vZmZzZXQ7Cj4+ICt9Cj4+ICsKPj4gKy8qIHNldHVw X2V4ZWNidWZmZXIKPj4gKyAqIGhlbHBlciBmb3IgYnVmZmVyIGV4ZWN1dGlvbgo+PiArICogQGV4 ZWNidWYgLSBwb2ludGVyIHRvIGV4ZWNidWZmZXIKPj4gKyAqIEBleGVjX29iamVjdCAtIHBvaW50 ZXIgdG8gZXhlYyBvYmplY3QyIHN0cnVjdAo+PiArICogQHJpbmcgLSByaW5nIHRvIGJlIHVzZWQK Pj4gKyAqIEBidWZmZXJfY291bnQgLSBob3cgbWFudSBidWZmZXJzIHRvIHN1Ym1pdAo+PiArICog QGJhdGNoX2xlbmd0aCAtIGxlbmd0aCBvZiBiYXRjaCBidWZmZXIKPj4gKyovCj4+ICtzdGF0aWMg dm9pZCBzZXR1cF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmV4 ZWNidWYsCj4+ICsJCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpleGVj X29iamVjdCwKPj4gKwkJCSAgICAgaW50IHJpbmcsIGludCBidWZmZXJfY291bnQsIGludCBiYXRj aF9sZW5ndGgpCj4+ICt7Cj4KPiBIb3cgYWJvdXQgbWVtc2V0KGV4ZWNidWYsIDAsIHNpemVvZigq ZXhlY2J1ZikpOwo+CldpbGwgdXNlIG1lbXNldC4KPj4gKwlleGVjYnVmLT5idWZmZXJzX3B0ciA9 ICh1bnNpZ25lZCBsb25nKWV4ZWNfb2JqZWN0Owo+PiArCWV4ZWNidWYtPmJ1ZmZlcl9jb3VudCA9 IGJ1ZmZlcl9jb3VudDsKPj4gKwlleGVjYnVmLT5iYXRjaF9zdGFydF9vZmZzZXQgPSAwOwo+PiAr CWV4ZWNidWYtPmJhdGNoX2xlbiA9IGJhdGNoX2xlbmd0aDsKPj4gKwlleGVjYnVmLT5jbGlwcmVj dHNfcHRyID0gMDsKPj4gKwlleGVjYnVmLT5udW1fY2xpcHJlY3RzID0gMDsKPj4gKwlleGVjYnVm LT5EUjEgPSAwOwo+PiArCWV4ZWNidWYtPkRSNCA9IDA7Cj4+ICsJZXhlY2J1Zi0+ZmxhZ3MgPSBy aW5nOwo+PiArCWk5MTVfZXhlY2J1ZmZlcjJfc2V0X2NvbnRleHRfaWQoKmV4ZWNidWYsIDApOwo+ PiArCWV4ZWNidWYtPnJzdmQyID0gMDsKPj4gK30KPj4gKwo+PiArLyogc3VibWl0X2FuZF9zeW5j Cj4+ICsgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGV4ZWMgYW5kIHN5bmMgZnVuY3Rpb25zCj4+ICsg KiBAZmQgLSBkcm0gZmQKPj4gKyAqIEBleGVjYnVmIC0gcG9pbnRlciB0byBleGVjYnVmZmVyCj4+ ICsgKiBAYmF0Y2hfYnVmX2hhbmRsZSAtIGJhdGNoIGJ1ZmZlciBoYW5kbGUKPj4gKyovCj4+ICtz dGF0aWMgdm9pZCBzdWJtaXRfYW5kX3N5bmMoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNidWZmZXIyICpleGVjYnVmLAo+PiArCQkJICAgIHVpbnQzMl90IGJhdGNoX2J1Zl9oYW5kbGUp Cj4+ICt7Cj4+ICsJZ2VtX2V4ZWNidWYoZmQsIGV4ZWNidWYpOwo+PiArCWdlbV9zeW5jKGZkLCBi YXRjaF9idWZfaGFuZGxlKTsKPgo+IFRoZSBvbmx5IGNhbGxlciBvZiB0aGlzIGFsc28gZG9lcyBp dHMgb3duIHN5bmMuIFRoaXMgc2VlbXMgaXJyZWxldmFudAo+IGFuZCBzZXJ2ZXMgYSBiYWQgZXhh bXBsZS4KPgpPayBubyByZWFsIG5lZWQgdG8gZG8gYW4gZXhwbGljaXQgc3luYywgd2hlbiBTeW5j IHdpbGwgaGFwcGVuIGltcGxpY2l0bHkgCm9uIG1tYXAgb2YgQk9zIChtb3ZpbmcgdG8gQ1BVIGRv bWFpbikgdG8gdmVyaWZ5IHRoZSBTdG9yZSByZXN1bHQuCgo+PiArfQo+PiArCj4+ICtzdHJ1Y3Qg bG9jYWxfaTkxNV9nZW1fY29udGV4dF90cnR0X3BhcmFtIHsKPj4gKwl1aW50NjRfdCBsM190YWJs ZV9hZGRyZXNzOwo+PiArCXVpbnQzMl90IGludmRfdGlsZV92YWw7Cj4+ICsJdWludDMyX3QgbnVs bF90aWxlX3ZhbDsKPj4gK307Cj4+ICsKPj4gKy8qIHNlbmRfdHJ0dF9wYXJhbXMKPj4gKyAqIEhl bHBlciBmdW5jdGlvbiB0byByZXF1ZXN0IEtNRCB0byBlbmFibGUgVFJUVAo+PiArICogQGZkIC0g ZHJtIGZkCj4+ICsgKiBAY3R4X2lkIC0gaWQgb2YgdGhlIGNvbnRleHQgZm9yIHdoaWNoIFRSVFQg aXMgdG8gYmUgZW5hYmxlZAo+PiArICogQGwzX3RhYmxlX2FkZHJlc3MgLSBHRlggYWRkcmVzcyBv ZiB0aGUgTDMgdGFibGUKPj4gKyovCj4+ICtzdGF0aWMgdm9pZCBzZW5kX3RydHRfcGFyYW1zKGlu dCBmZCwgdWludDMyX3QgY3R4X2lkLCB1aW50NjRfdCBsM190YWJsZV9hZGRyZXNzKQo+Cj4gSXQg aXMgbm90IGEgc29ja2V0LCBwaXBlLCBvciBvdGhlciB0cmFuc3BvcnQgbWVkaXVtLiBKdXN0IHNl dHVwX3RydHQoKS4KPgpGaW5lIHdpbGwgcmVuYW1lIGl0LgoKPj4gKyNkZWZpbmUgVEFCTEVfU0la RSAweDEwMDAKPj4gKyNkZWZpbmUgVElMRV9TSVpFIDB4MTAwMDAKPj4gKwo+PiArI2RlZmluZSBG SVJTVF9USUxFX0FERFJFU1MgMHhGMDAwMDAwMDAwMDAKPj4gKyNkZWZpbmUgTEFTVF9USUxFX0FE RFJFU1MgIDB4RkZGRkZGRkYwMDAwCj4+ICsKPj4gKyNkZWZpbmUgQk9fQUxMT0NfQU5EX1NFVFVQ KGZkLCBib19zaXplLCBib19oYW5kbGUsIGJvX29mZnNldCwgaWR4KSBcCj4+ICsJYm9faGFuZGxl ID0gZ2VtX2NyZWF0ZShmZCwgYm9fc2l6ZSk7IFwKPj4gKwlib19vZmZzZXQgPSBjdXJyZW50X3Bw Z3R0X29mZnNldDsgXAo+PiArCXNldHVwX2V4ZWNfb2JqKCZleGVjX29iamVjdDJbaWR4XSwgYm9f aGFuZGxlLCBFWEVDX09CSkVDVF9QSU5ORUQsIGJvX29mZnNldCk7IFwKPj4gKwljdXJyZW50X3Bw Z3R0X29mZnNldCArPSBib19zaXplOwo+Cj4gRnVuY3Rpb24hCj4KCklzIGl0IGFmZmVjdGluZyB0 aGUgcmVhZGFiaWxpdHkgPwpBY3R1YWxseSBpbiB0aGlzIGNhc2UsIGl0IHdhcyBtb3JlIGNvbnZl bmllbnQgZm9yIG1lIHRvIHVzZSBhIG1hY3JvLgpXaXRoIGZ1bmN0aW9uIHdpbGwgaGF2ZSB0byBw YXNzIHRoZSBhZGRyZXNzZXMgb2YgbXVsdGlwbGUgdmFyaWFibGVzLgoKPj4gKwo+PiArLyogYmFz aWMgdGVzdAo+PiArICogVGhpcyB0ZXN0IHdpbGwgYWRkIGEgc2VyaWVzIG9mIE1JX1NUT1JFXyBj b21tYW5kcywgZmlyc3QgdG8gdXBkYXRlIHRoZQo+PiArICogVFItVFQgdGFibGUgZW50cmllcyBh bmQgdGhlbiB0byB1cGRhdGUgdGhlIGRhdGEgYnVmZmVycyB1c2luZyB0aGUgVFItVFQgVkEsCj4+ ICsgKiBleGVyY2lzaW5nIHRoZSBwcm9ncmFtbWluZyB0aGUgdGFibGUgcHJvZ3JhbW1pbmcgZG9u ZSBwcmV2aW91c2x5Cj4+ICsqLwo+PiArc3RhdGljIHZvaWQgZ2VtX2Jhc2ljX3RydHRfdXNlKHZv aWQpCj4+ICt7Cj4+ICsJaW50IGZkOwo+PiArCWludCByaW5nLCBsZW4gPSAwOwo+PiArCXVpbnQz Ml90ICpwdHI7Cj4+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOwo+ PiArCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIGV4ZWNfb2JqZWN0Mls4XTsKPj4g Kwl1aW50MzJfdCBiYXRjaF9idWZmZXJbQk9fU0laRV07Cj4+ICsKPj4gKwl1aW50MzJfdCBsM190 YmxfaGFuZGxlLCBsMl90YmwxX2hhbmRsZSwgbDJfdGJsMl9oYW5kbGU7Cj4+ICsJdWludDMyX3Qg bDFfdGJsMV9oYW5kbGUsIGwxX3RibDJfaGFuZGxlLCBiYXRjaF9idWZfaGFuZGxlOwo+PiArCXVp bnQzMl90IGJ1ZmZlcjFfaGFuZGxlLCBidWZmZXIyX2hhbmRsZTsKPj4gKwo+PiArCXVpbnQ2NF90 IGwzX3RibF9vZmZzZXQsIGwyX3RibDFfb2Zmc2V0LCBsMl90YmwyX29mZnNldDsKPj4gKwl1aW50 NjRfdCBsMV90YmwxX29mZnNldCwgbDFfdGJsMl9vZmZzZXQ7Cj4+ICsJdWludDY0X3QgYnVmZmVy MV9vZmZzZXQsIGJ1ZmZlcjJfb2Zmc2V0Owo+PiArCj4+ICsJdWludDMyX3QgZGF0YTsKPj4gKwl1 aW50NjRfdCBhZGRyZXNzLCBjdXJyZW50X3BwZ3R0X29mZnNldCA9IDB4MTAwMDA7Cj4+ICsKPj4g KwlmZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwo+PiArCWlndF9yZXF1aXJlKHVz ZXNfZnVsbF9wcGd0dChmZCwgRlVMTF80OF9CSVRfUFBHVFQpKTsKPj4gKwlpZ3RfcmVxdWlyZSho YXNfc29mdHBpbl9zdXBwb3J0KGZkKSk7Cj4+ICsJaWd0X3JlcXVpcmUoaGFzX3RydHRfc3VwcG9y dChmZCkpOwo+PiArCj4+ICsJLyogQWxsb2NhdGUgYSBMMyB0YWJsZSBCTyAqLwo+PiArCUJPX0FM TE9DX0FORF9TRVRVUChmZCwgVEFCTEVfU0laRSwgbDNfdGJsX2hhbmRsZSwgbDNfdGJsX29mZnNl dCwgMCk7Cj4+ICsKPj4gKwkvKiBBbGxvY2F0ZSB0d28gTDIgdGFibGUgQk9zICovCj4+ICsJQk9f QUxMT0NfQU5EX1NFVFVQKGZkLCBUQUJMRV9TSVpFLCBsMl90YmwxX2hhbmRsZSwgbDJfdGJsMV9v ZmZzZXQsIDEpOwo+PiArCUJPX0FMTE9DX0FORF9TRVRVUChmZCwgVEFCTEVfU0laRSwgbDJfdGJs Ml9oYW5kbGUsIGwyX3RibDJfb2Zmc2V0LCAyKTsKPj4gKwo+PiArCS8qIEFsbG9jYXRlIHR3byBM MSB0YWJsZSBCT3MgKi8KPj4gKwlCT19BTExPQ19BTkRfU0VUVVAoZmQsIFRBQkxFX1NJWkUsIGwx X3RibDFfaGFuZGxlLCBsMV90YmwxX29mZnNldCwgMyk7Cj4+ICsJQk9fQUxMT0NfQU5EX1NFVFVQ KGZkLCBUQUJMRV9TSVpFLCBsMV90YmwyX2hhbmRsZSwgbDFfdGJsMl9vZmZzZXQsIDQpOwo+PiAr Cj4+ICsJLyogQWxpZ24gdGhlIFBQR1RUIG9mZnNldHMgZm9yIHRoZSAyIGRhdGEgYnVmZmVycyB0 byBuZXh0IDY0IEtCIGJvdW5kYXJ5ICovCj4+ICsJY3VycmVudF9wcGd0dF9vZmZzZXQgPSBBTElH TihjdXJyZW50X3BwZ3R0X29mZnNldCwgVElMRV9TSVpFKTsKPj4gKwo+PiArCS8qIEFsbG9jYXRl IHR3byBEYXRhIGJ1ZmZlciBCT3MgKi8KPj4gKwlCT19BTExPQ19BTkRfU0VUVVAoZmQsIFRJTEVf U0laRSwgYnVmZmVyMV9oYW5kbGUsIGJ1ZmZlcjFfb2Zmc2V0LCA1KTsKPj4gKwlCT19BTExPQ19B TkRfU0VUVVAoZmQsIFRJTEVfU0laRSwgYnVmZmVyMl9oYW5kbGUsIGJ1ZmZlcjJfb2Zmc2V0LCA2 KTsKPj4gKwo+PiArCS8qIEZpbmFsbHkgYWxsb2NhdGUgQmF0Y2ggYnVmZmVyIEJPICovCj4+ICsJ YmF0Y2hfYnVmX2hhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIEJPX1NJWkUpOwo+PiArCXNldHVwX2V4 ZWNfb2JqKCZleGVjX29iamVjdDJbN10sIGJhdGNoX2J1Zl9oYW5kbGUsIDAsIDApOwo+Cj4gU2Nh cnkganVtcCBmcm9tIGlkeCB0byA3Lgo+IFdoeSBub3QganVzdCBwaW4gdGhpcyBhcyB3ZWxsIHRv IHJlZHVjZSB0aGUgY29kZSBjb21wbGV4aXR5PyBBZnRlcndhcmRzCj4gc2V0dXBfZXhlY19vYmoo KSBjYW4gYWxsb2NhdGUgYW4gb2JqZWN0IGFsbCBieSBpdHNlbGYuCgpEaWQgbm90IHBpbiB0aGUg QkIgYWxzbywgYXMgaXQgY291bGQgaGF2ZSBnaXZlbiBhbiBpbXByZXNzaW9uIHRoYXQgU29mdCAK UGlubmluZyBpcyByZXF1aXJlZCBmb3IgYWxsIHRoZSBCT3Mgd2hlbiB1c2luZyBUUi1UVC4gQWxz byB0aGlzIHdpbGwgbGV0IAp1cyB0ZXN0IEtNRCwgdGhhdCBpdCBkb2Vzbid0IHBsYWNlIHRoZSBC QiBpbiB0aGUgc2VnbWVudCByZXNlcnZlZCBmb3IgVFItVFQuCgo+Cj4+ICsKPj4gKwkvKiBBZGQg Y29tbWFuZHMgdG8gdXBkYXRlIHRoZSB0d28gTDMgdGFibGUgZW50cmllcyB0byBwb2ludCB0aGVt IHRvIHRoZSBMMiB0YWJsZXMqLwo+PiArCWFkZHJlc3MgPSBsM190Ymxfb2Zmc2V0Owo+PiArCWRh dGEgPSBsMl90YmwxX29mZnNldDsKPj4gKwlsZW4gPSBnZW1fc3RvcmVfZGF0YV9zdm0oZmQsIGJh dGNoX2J1ZmZlciwgbGVuLCBhZGRyZXNzLCBkYXRhLCBmYWxzZSk7Cj4+ICsKPj4gKwlhZGRyZXNz ID0gbDNfdGJsX29mZnNldCArIDUxMSpzaXplb2YodWludDY0X3QpOwo+PiArCWRhdGEgPSBsMl90 YmwyX29mZnNldDsKPj4gKwlsZW4gPSBnZW1fc3RvcmVfZGF0YV9zdm0oZmQsIGJhdGNoX2J1ZmZl ciwgbGVuLCBhZGRyZXNzLCBkYXRhLCBmYWxzZSk7Cj4+ICsKPj4gKwkvKiBBZGQgY29tbWFuZHMg dG8gdXBkYXRlIGFuIGVudHJ5IG9mIDIgTDIgdGFibGVzIHRvIHBvaW50IHRoZW0gdG8gdGhlIEwx IHRhYmxlcyovCj4+ICsJYWRkcmVzcyA9IGwyX3RibDFfb2Zmc2V0Owo+PiArCWRhdGEgPSBsMV90 YmwxX29mZnNldDsKPj4gKwlsZW4gPSBnZW1fc3RvcmVfZGF0YV9zdm0oZmQsIGJhdGNoX2J1ZmZl ciwgbGVuLCBhZGRyZXNzLCBkYXRhLCBmYWxzZSk7Cj4+ICsKPj4gKwlhZGRyZXNzID0gbDJfdGJs Ml9vZmZzZXQgKyA1MTEqc2l6ZW9mKHVpbnQ2NF90KTsKPj4gKwlkYXRhID0gbDFfdGJsMl9vZmZz ZXQ7Cj4+ICsJbGVuID0gZ2VtX3N0b3JlX2RhdGFfc3ZtKGZkLCBiYXRjaF9idWZmZXIsIGxlbiwg YWRkcmVzcywgZGF0YSwgZmFsc2UpOwo+PiArCj4+ICsJLyogQWRkIGNvbW1hbmRzIHRvIHVwZGF0 ZSBhbiBlbnRyeSBvZiAyIEwxIHRhYmxlcyB0byBwb2ludCB0aGVtIHRvIHRoZSBkYXRhIGJ1ZmZl cnMqLwo+PiArCWFkZHJlc3MgPSBsMV90YmwxX29mZnNldDsKPj4gKwlkYXRhID0gYnVmZmVyMV9v ZmZzZXQgPj4gMTY7Cj4+ICsJbGVuID0gZ2VtX3N0b3JlX2RhdGFfc3ZtKGZkLCBiYXRjaF9idWZm ZXIsIGxlbiwgYWRkcmVzcywgZGF0YSwgZmFsc2UpOwo+PiArCj4+ICsJYWRkcmVzcyA9IGwxX3Ri bDJfb2Zmc2V0ICsgMTAyMypzaXplb2YodWludDMyX3QpOwo+PiArCWRhdGEgPSBidWZmZXIyX29m ZnNldCA+PiAxNjsKPj4gKwlsZW4gPSBnZW1fc3RvcmVfZGF0YV9zdm0oZmQsIGJhdGNoX2J1ZmZl ciwgbGVuLCBhZGRyZXNzLCBkYXRhLCBmYWxzZSk7Cj4+ICsKPj4gKwkvKiBBZGQgY29tbWFuZHMg dG8gdXBkYXRlIHRoZSAyIGRhdGEgYnVmZmVycywgdXNpbmcgdGhlaXIgVFJUVCBWQSAqLwo+PiAr CWRhdGEgPSAweDEyMzQ1Njc4Owo+PiArCWxlbiA9IGdlbV9zdG9yZV9kYXRhX3N2bShmZCwgYmF0 Y2hfYnVmZmVyLCBsZW4sIEZJUlNUX1RJTEVfQUREUkVTUywgZGF0YSwgZmFsc2UpOwo+PiArCWxl biA9IGdlbV9zdG9yZV9kYXRhX3N2bShmZCwgYmF0Y2hfYnVmZmVyLCBsZW4sIExBU1RfVElMRV9B RERSRVNTLCBkYXRhLCB0cnVlKTsKPj4gKwo+PiArCWdlbV93cml0ZShmZCwgYmF0Y2hfYnVmX2hh bmRsZSwgMCwgYmF0Y2hfYnVmZmVyLCBsZW4qNCk7Cj4KPiBPciBmb3IgZXZlbiBzaG9ydGVyIGNv ZGU6IGJhdGNoX2J1ZmZlciA9Cj4gZ2VtX21tYXBfX2NwdShleGVjX29iamVjdFtiYXRjaF0uaGFu ZGxlKTsKPgpBY3R1YWxseSBpdHMgZWFzaWVyIHRvIHRyYWNlIHRoZSBleHBsaWNpdCB1cGRhdGUg dGhyb3VnaCBQd3JpdGUuCgo+PiArCj4+ICsJLyogUmVxdWVzdCBLTUQgdG8gc2V0dXAgdGhlIFRS LVRUICovCj4+ICsJc2VuZF90cnR0X3BhcmFtcyhmZCwgMCwgbDNfdGJsX29mZnNldCk7Cj4+ICsK Pj4gKwlyaW5nID0gSTkxNV9FWEVDX1JFTkRFUjsKPj4gKwlzZXR1cF9leGVjYnVmZmVyKCZleGVj YnVmLCBleGVjX29iamVjdDIsIHJpbmcsIDgsIGxlbio0KTsKPj4gKwo+PiArCS8qIHN1Ym1pdCBj b21tYW5kIGJ1ZmZlciAqLwo+PiArCXN1Ym1pdF9hbmRfc3luYyhmZCwgJmV4ZWNidWYsIGJhdGNo X2J1Zl9oYW5kbGUpOwo+PiArCj4+ICsJLyogcmVhZCB0aGUgMiBkYXRhIGJ1ZmZlcnMgdG8gY2hl Y2sgZm9yIHRoZSB2YWx1ZSB3cml0dGVuIGJ5IHRoZSBHUFUgKi8KPj4gKwlwdHIgPSBtbWFwX2Jv KGZkLCBidWZmZXIxX2hhbmRsZSwgVElMRV9TSVpFKTsKPj4gKwlpZ3RfZmFpbF9vbl9mKHB0clsw XSAhPSBkYXRhLAo+PiArCQkiXG5DUFUgcmVhZCBkb2VzIG5vdCBtYXRjaCBHUFUgd3JpdGUsXAo+ PiArCQlleHBlY3RlZDogMHgleCwgZ290OiAweCV4XG4iLAo+PiArCQlkYXRhLCBwdHJbMF0pOwo+ PiArCj4+ICsJcHRyID0gbW1hcF9ibyhmZCwgYnVmZmVyMl9oYW5kbGUsIFRJTEVfU0laRSk7Cj4+ ICsJaWd0X2ZhaWxfb25fZihwdHJbMF0gIT0gZGF0YSwKPj4gKwkJIlxuQ1BVIHJlYWQgZG9lcyBu b3QgbWF0Y2ggR1BVIHdyaXRlLFwKPj4gKwkJZXhwZWN0ZWQ6IDB4JXgsIGdvdDogMHgleFxuIiwK Pj4gKwkJZGF0YSwgcHRyWzBdKTsKPj4gKwo+PiArCWdlbV9jbG9zZShmZCwgbDNfdGJsX2hhbmRs ZSk7Cj4+ICsJZ2VtX2Nsb3NlKGZkLCBsMl90YmwxX2hhbmRsZSk7Cj4+ICsJZ2VtX2Nsb3NlKGZk LCBsMl90YmwyX2hhbmRsZSk7Cj4+ICsJZ2VtX2Nsb3NlKGZkLCBsMV90YmwxX2hhbmRsZSk7Cj4+ ICsJZ2VtX2Nsb3NlKGZkLCBsMV90YmwyX2hhbmRsZSk7Cj4+ICsJZ2VtX2Nsb3NlKGZkLCBidWZm ZXIxX2hhbmRsZSk7Cj4+ICsJZ2VtX2Nsb3NlKGZkLCBidWZmZXIyX2hhbmRsZSk7Cj4+ICsJZ2Vt X2Nsb3NlKGZkLCBiYXRjaF9idWZfaGFuZGxlKTsKPj4gKwljbG9zZShmZCk7Cj4+ICt9Cj4+ICsK Pj4gK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCj4+ICt7Cj4+ICsJaWd0X3N1YnRl c3RfaW5pdChhcmdjLCBhcmd2KTsKPgo+IFRvZ2V0aGVyIHRoZXNlIGFyZSBpZ3RfbWFpbiwgYW5k IHRoZW4geW91IGNhbiBhbHNvIGRyb3AgaWd0X2V4aXQuCj4KPj4gKwlpZ3Rfc2tpcF9vbl9zaW11 bGF0aW9uKCk7Cj4KPiBJIHRoaW5rIHlvdSB3YW50IHRoaXMgb24gc2ltdWxhdGlvbiBhcyB3ZWxs LCBhcyBsZWFzdCAiYmFzaWMiLgo+CgpUaGFua3MsIHdpbGwgdXNlIGlndF9tYWluLi4KCj4+ICsK Pj4gKwkvKiB0ZXN0IG5lZWRzIDQ4IFBQR1RUICYgU29mdCBQaW4gc3VwcG9ydCAqLwo+PiArCWln dF9zdWJ0ZXN0KCJiYXNpYyIpIHsKPj4gKwkJZ2VtX2Jhc2ljX3RydHRfdXNlKCk7Cj4+ICsJfQo+ PiArCj4+ICsJaWd0X2V4aXQoKTsKPj4gK30KPj4gKwo+PiAtLQo+PiAxLjkuMgo+Pgo+Cl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==