From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id B293F89FCA for ; Tue, 28 May 2019 21:37:36 +0000 (UTC) From: Carlos Santa Date: Tue, 28 May 2019 14:35:59 -0700 Message-Id: <20190528213600.61118-1-carlos.santa@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [RFC v5] tests/gem_watchdog: Initial set of tests for GPU watchdog List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Ursulin Tvrtko List-ID: VGhpcyB0ZXN0IGFkZHMgYmFzaWMgc2V0IG9mIHRlc3RzIHRvIHJlc2V0IHRoZSBkaWZmZXJlbnQK R1BVIGVuZ2luZXMgdGhyb3VnaCB0aGUgZ3B1IHdhdGNoZG9nIHRpbWVyLgoKQ3JlZGl0cyB0byBB bnRvbmlvIGZvciB0aGUgb3JpZ2luYWwgY29kZWJhc2UgdGhpcyBpcyBiYXNlZCBvbi4KCnYyOiBy ZW1vdmUgZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKCkgZHVyaW5nIHNldCAoQW50b25pbykKICAgIHJl bW92ZSBjbGVhcmluZyBvZiB0aGUgZW5naW5lc190aHJlc2hvbGRbXSBpbiB0aGUgZGVmYXVsdCBj YXNlCiAgICBpbnNpZGUgY29udGV4dF9zZXRfd2F0Y2hkb2coKS4gKEFudG9uaW8pCiAgICBmaXgg aW5kZXhpbmcgd2hlbiBjcmVhdGluZyBsb3cvaGlnaCBwcmlvcml0eSBjb250ZXh0cwogICAgZ2V0 IHJpZCBvZiAyIHRocmVhZHMgaWRlYSAoQW50b25pbykKICAgIGZpeCBjb250ZXh0IHByaW8gYnVn IGR1ZSB0byB3cm9uZyBpbmRleGluZyAoQW50b25pbykKdjM6IG5vIG5lZWQgdG8gZm9yY2UgY2xl YXIgZHJtX2k5MTVfZ2VtX3dhdGNoZG9nX3RpbWVvdXQgc3RydWN0CiAgICB3aGVuIHNldHRpbmcg dGhlIHdhdGNoZG9nIHRpbWVvdXRzIChBbnRvbmlvKQogICAgLXVzZSBnZW1fY29udGV4dF9zZXRf cHJpb3JpdHkoKSBpbnN0ZWFkIHRvIHVzZSBlcnJvciBjaGVja2luZwogICAgLWFsd2F5cyB1c2Ug YSBsb29wZXIgdG8gdGVzdCBhbGwgZW5naW5lcyAoQW50b25pbykKICAgIC1tb2RpZnkgdGVzdCBn cHVfd2F0Y2hvZGdfaGFuZ19sb25nX2JhdGNoX3NpbmdsZV9lbmdpbmUoKQogICAgdG8gdXNlIGEg Y291cGxlIG9mIGJhdGNoZXMgYW5kIHNldCB0aGUgdGltZW91dCBpbiBiZXR3ZWVuIHRoZW0gKEFu dG9uaW8pCiAgICAtbWFrZSB1c2Ugb2YgZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKCkg KEFudG9uaW8pCnY0OiAtdGVzdHMgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHMvdyB3YXRjaGRv ZyB0aW1lb3V0IChUdnJ0a28pCiAgICAtcmVtb3ZlIGRlYWQgY29kZSBpbnNpZGUgYmF0Y2hfYnVm ZmVyIGZhY3RvcnkgKFR2cnRrbykKICAgIC1zZXRfd2F0Y2hkb2coKSBzaG91bGQgcmV0dXJuIEVO T0RFViBmb3IgZmFpbCBjYXNlcyAoVHZydGtvKQogICAgLWVuY2xvc2UgbmFtZSwgcHJpb3JpdHkg YW5kIHJlc2V0IHBhcmFtcyBpbnNpZGUgYXJyYXkgKFR2cnRrbykKdjU6IC1SZWJhc2VkLiBUZXN0 cyA1LDYgYW5kIDggZnJvbSB0aGUgdGVzdCBwbGFuIGFyZSBub3cgYWRkZWQKClRlc3QgUGxhbjoK CkFzc3VtcHRpb25zOgoxLiBVc2UgZmVuY2Ugc3RhdHVzIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY3R4 IHdhcyByZXNldAoyLiBVc2Ugc3BpbiBiYXRjaGVzIHcvIHVzZXIgc3BhY2UgdGltZXJzIHRvIGNv bnRyb2wgZHVyYXRpb24KYW5kIGNvcmtpbmcgdG8gY29udHJvbCBvcmRlcmluZwozLiBVc2UgY29u dGV4dCBwcmlvcml0aWVzIHRvIGZvcmNlIHByZWVtcHRpb24KClRlc3RzOgoxLiBjdHgxLCBsb25n X2JhdGNoIC0+IGV4ZWN1dGUKMi4gY3R4MSwgc2V0X3dhdGNoZG9nIC0+IHJlc2V0CjMuIGN0eDIv Y3R4MSAtPiBleGVjdXRlLCByZXNldAo0LiBjdHgxL2N0eDIgLT4gcmVzZXQsIGV4ZWN1dGUKNS4g Y3R4MV9qdXN0X2JlbG93X3RocmVzaG9sZCAtPiBleGVjdXRlCjYuIGN0eF9vdmVyX3RoZV90aHJl c2hvbGQgLT4gcmVzZXQKNy4gc2V0IHdhdGNoZG9nIG9uIHNvbWUgZW5naW5lcyAtPiBleGVjdXRl CjguIHN1Ym1pdCBsb25nX2JhdGNoIGFuZCBhZnRlciBoYWxmIG9mIHRoZQpleHBlY3RlZCBydW50 aW1lIHN1Ym1pdCBoaWdoZXIgcHJpbyBiYXRjaAo5LiBzdWJtaXQgbG93IHByaW8gYmF0Y2ggdy9v IHdhdGNoZG9nIHRoZW4KaGlnaGVyIHByaW8gd2l0aCB3YXRjaGRvZwoKVW5zcmVzb2x2ZWQgaXRl bXM6CjEuIFRoZSBjaGVjayBmb3Igc3luY19mZW5jZV9zdGF0dXMoKmZlbmNlKQpyZXR1cm5zIC0x IGluc3RlYWQgb2YgRUlPLgoKQ2M6IFVyc3VsaW4gVHZydGtvIDx0dnJ0a28udXJzdWxpbkBpbnRl bC5jb20+CkNjOiBBbnRvbmlvIEFyZ2Vuemlhbm8gPGFudG9uaW8uYXJnZW56aWFub0BpbnRlbC5j b20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KU2lnbmVkLW9m Zi1ieTogQ2FybG9zIFNhbnRhIDxjYXJsb3Muc2FudGFAaW50ZWwuY29tPgotLS0KIHRlc3RzL01h a2VmaWxlLnNvdXJjZXMgICAgfCAgIDMgKwogdGVzdHMvaTkxNS9nZW1fd2F0Y2hkb2cuYyB8IDQ5 MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGVzdHMvbWVzb24uYnVp bGQgICAgICAgICB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDQ5NCBpbnNlcnRpb25zKCspCiBj cmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvaTkxNS9nZW1fd2F0Y2hkb2cuYwoKZGlmZiAtLWdpdCBh L3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IDJk NWM5MjllMzJmYy4uNjViODY4ZTdkOTI3IDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3Vy Y2VzCisrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKQEAgLTQ0Niw2ICs0NDYsOSBAQCBnZW1f dXNlcnB0cl9ibGl0c19TT1VSQ0VTID0gaTkxNS9nZW1fdXNlcnB0cl9ibGl0cy5jCiBURVNUU19w cm9ncyArPSBnZW1fd2FpdAogZ2VtX3dhaXRfU09VUkNFUyA9IGk5MTUvZ2VtX3dhaXQuYwogCitU RVNUU19wcm9ncyArPSBnZW1fd2F0Y2hkb2cKK2dlbV93YXRjaGRvZ19TT1VSQ0VTID0gaTkxNS9n ZW1fd2F0Y2hkb2cuYworCiBURVNUU19wcm9ncyArPSBnZW1fd29ya2Fyb3VuZHMKIGdlbV93b3Jr YXJvdW5kc19TT1VSQ0VTID0gaTkxNS9nZW1fd29ya2Fyb3VuZHMuYwogCmRpZmYgLS1naXQgYS90 ZXN0cy9pOTE1L2dlbV93YXRjaGRvZy5jIGIvdGVzdHMvaTkxNS9nZW1fd2F0Y2hkb2cuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU5Y2RiODg2ZDNkNgotLS0gL2Rl di9udWxsCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX3dhdGNoZG9nLmMKQEAgLTAsMCArMSw0OTAgQEAK Ky8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworI2luY2x1ZGUgImlndC5oIgor I2luY2x1ZGUgImlndF9zeXNmcy5oIgorI2luY2x1ZGUgInN3X3N5bmMuaCIKKworI2luY2x1ZGUg PHB0aHJlYWQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorCisjaW5jbHVkZSA8c3lzL3RpbWUuaD4K KyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxzeXMvcG9sbC5oPgorI2luY2x1ZGUg PHN5cy9zaWduYWwuaD4KKyNpbmNsdWRlICJpOTE1L2dlbV9yaW5nLmgiCisKKyNkZWZpbmUgTE9D QUxfSTkxNV9FWEVDX0JTRF9TSElGVAkoMTMpCisjZGVmaW5lIExPQ0FMX0k5MTVfRVhFQ19CU0Rf UklORzEgCSgxIDw8IExPQ0FMX0k5MTVfRVhFQ19CU0RfU0hJRlQpCisjZGVmaW5lIExPQ0FMX0k5 MTVfRVhFQ19CU0RfUklORzIgCSgyIDw8IExPQ0FMX0k5MTVfRVhFQ19CU0RfU0hJRlQpCisKKyNk ZWZpbmUgTUFYX1BSSU8gTE9DQUxfSTkxNV9DT05URVhUX01BWF9VU0VSX1BSSU9SSVRZCisjZGVm aW5lIERFRkFVTFRfUFJJTyBMT0NBTF9JOTE1X0NPTlRFWFRfREVGQVVMVF9QUklPUklUWQorI2Rl ZmluZSBNSU5fUFJJTyBMT0NBTF9JOTE1X0NPTlRFWFRfTUlOX1VTRVJfUFJJT1JJVFkKKyNkZWZp bmUgSElHSCAxCisjZGVmaW5lIExPVyAwCisjZGVmaW5lIFdBVENIRE9HX09WRVJfVEhSRVNIT0xE ICgyMDcwMDAwKQorI2RlZmluZSBXQVRDSERPR19CRUxPV19USFJFU0hPTEQgKDEyMDAwMDApCisj ZGVmaW5lIFdBVENIRE9HX1RIUkVTSE9MRCAoMTIwMCkKKyNkZWZpbmUgTUFYX0VOR0lORVMgNQor I2RlZmluZSBSRU5ERVJfQ0xBU1MgMAorI2RlZmluZSBWSURFT19ERUNPREVfQ0xBU1MgMQorI2Rl ZmluZSBWSURFT19FTkhBTkNFTUVOVF9DTEFTUyAyCisjZGVmaW5lIENPUFlfRU5HSU5FX0NMQVNT IDMKKyNkZWZpbmUgTE9DQUxfSTkxNV9DT05URVhUX1BBUkFNX1dBVENIRE9HIDB4MTAKKworI2Rl ZmluZSBHRVRfUkVTRVRfU1RBVFNfSU9DVEwgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIDB4 MzIsIHN0cnVjdCBsb2NhbF9kcm1faTkxNV9yZXNldF9zdGF0cykKK3N0cnVjdCBsb2NhbF9kcm1f aTkxNV9yZXNldF9zdGF0cyB7CisJX191MzIgY3R4X2lkOworCV9fdTMyIGZsYWdzOworCV9fdTMy IHJlc2V0X2NvdW50OworCV9fdTMyIGJhdGNoX2FjdGl2ZTsKKwlfX3UzMiBiYXRjaF9wZW5kaW5n OworCV9fdTMyIHBhZDsKK307CisKK2NvbnN0IHVpbnQ2NF90IHRpbWVvdXRfMTAwbXMgPSAxMDAw MDAwMDBMTDsKK2Zsb2F0IHRpbWVkaWZmZXJlbmNlX21zZWMoc3RydWN0IHRpbWV2YWwgdDAsIHN0 cnVjdCB0aW1ldmFsIHQxKTsKKworc3RydWN0IGRybV9pOTE1X2dlbV93YXRjaGRvZ190aW1lb3V0 IHsKKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQkvKgorCQkJICogRW5naW5lIGNsYXNzICYgaW5z dGFuY2UgdG8gYmUgY29uZmlndXJlZCBvciBxdWVyaWVkLgorCQkJICovCisJCQlfX3UxNiBlbmdp bmVfY2xhc3M7CisJCQlfX3UxNiBlbmdpbmVfaW5zdGFuY2U7CisJCX07CisJCS8qIEluZGV4IGJh c2VkIGFkZHJlc3NpbmcgbW9kZSAqLworCQlfX3UzMiBpbmRleDsKKwl9OworCS8qIEdQVSBFbmdp bmUgd2F0Y2hkb2cgcmVzZXRzIHRpbWVvdXQgaW4gdXMgKi8KKwlfX3UzMiB0aW1lb3V0X3VzOwor fTsKKworc3RhdGljIHZvaWQgY2xlYXJfZXJyb3Jfc3RhdGUoaW50IGZkKQoreworCWludCBkaXI7 CisKKwlkaXIgPSBpZ3Rfc3lzZnNfb3BlbihmZCk7CisKKwlpZiAoZGlyIDwgMCkKKwkJcmV0dXJu OworCisJLyogQW55IHdyaXRlIHRvIHRoZSBlcnJvciBzdGF0ZSBjbGVhcnMgaXQgKi8KKwlpZ3Rf c3lzZnNfc2V0KGRpciwgImVycm9yIiwgIiIpOworCWNsb3NlKGRpcik7Cit9CisKK3N0YXRpYyBp bnQgY29udGV4dF9zZXRfd2F0Y2hkb2coaW50IGZkLCB1bnNpZ25lZCBlbmdpbmVfaWQsCisJCQkJ IGNvbnN0IGNoYXIgKmVuZ2luZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgY3R4X2lkLCB1bnNpZ25lZCB0aHJlc2hvbGQpCit7CisJc3RydWN0IGRybV9p OTE1X2dlbV93YXRjaGRvZ190aW1lb3V0IGVuZ2luZXNfdGhyZXNob2xkW01BWF9FTkdJTkVTXTsK KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gYXJnID0geworCQkucGFyYW0gPSBM T0NBTF9JOTE1X0NPTlRFWFRfUEFSQU1fV0FUQ0hET0csCisJCS5jdHhfaWQgPSBjdHhfaWQsCisJ CS5zaXplID0gc2l6ZW9mKGVuZ2luZXNfdGhyZXNob2xkKSwKKwkJLnZhbHVlID0gKHVpbnQ2NF90 KSZlbmdpbmVzX3RocmVzaG9sZAorCX07CisKKwltZW1zZXQoJmVuZ2luZXNfdGhyZXNob2xkLCAw LCBzaXplb2YoZW5naW5lc190aHJlc2hvbGQpKTsKKworCXN3aXRjaCAoZW5naW5lX2lkICYgSTkx NV9FWEVDX1JJTkdfTUFTSykgeworCWNhc2UgSTkxNV9FWEVDX1JFTkRFUjoKKwkJZW5naW5lc190 aHJlc2hvbGRbMF0udGltZW91dF91cyA9IHRocmVzaG9sZDsKKwkJZW5naW5lc190aHJlc2hvbGRb MF0uZW5naW5lX2NsYXNzID0gUkVOREVSX0NMQVNTOworCQllbmdpbmVzX3RocmVzaG9sZFswXS5l bmdpbmVfaW5zdGFuY2UgPSAwOworCQlicmVhazsKKwljYXNlIEk5MTVfRVhFQ19CTFQ6CisJCWlm IChfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZykgPT0gLUVOT0RFVikKKwkJCXJldHVy biAtRU5PREVWOworCQllbHNlCisJCQllbmdpbmVzX3RocmVzaG9sZFszXS50aW1lb3V0X3VzID0g dGhyZXNob2xkOworCQkJZW5naW5lc190aHJlc2hvbGRbM10uZW5naW5lX2NsYXNzID0gQ09QWV9F TkdJTkVfQ0xBU1M7CisJCQllbmdpbmVzX3RocmVzaG9sZFszXS5lbmdpbmVfaW5zdGFuY2UgPSAw OworCQlicmVhazsKKwljYXNlIEk5MTVfRVhFQ19CU0Q6CisJCWVuZ2luZXNfdGhyZXNob2xkWzFd LnRpbWVvdXRfdXMgPSB0aHJlc2hvbGQ7CisJCWVuZ2luZXNfdGhyZXNob2xkWzFdLmVuZ2luZV9j bGFzcyA9IFZJREVPX0RFQ09ERV9DTEFTUzsKKwkJZW5naW5lc190aHJlc2hvbGRbMV0uZW5naW5l X2luc3RhbmNlID0gMDsKKwkJYnJlYWs7CisJY2FzZSBJOTE1X0VYRUNfVkVCT1g6CisJCWVuZ2lu ZXNfdGhyZXNob2xkWzJdLnRpbWVvdXRfdXMgPSB0aHJlc2hvbGQ7CisJCWVuZ2luZXNfdGhyZXNo b2xkWzJdLmVuZ2luZV9jbGFzcyA9IFZJREVPX0VOSEFOQ0VNRU5UX0NMQVNTOworCQllbmdpbmVz X3RocmVzaG9sZFsyXS5lbmdpbmVfaW5zdGFuY2UgPSAwOworCQlicmVhazsKKwlkZWZhdWx0Ogor CQlicmVhazsKKwl9CisKKwlnZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpOworCisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGJhdGNoX2J1ZmZlcl9mYWN0b3J5KHVpbnQzMl90IGZk LCB1aW50MzJfdCBjdHhfaWQsIHVuc2lnbmVkIGV4ZWNfaWQsCisJCQkJIHVpbnQzMl90IHRhcmdl dCwgdWludDMyX3Qgb2Zmc2V0LAorCQkJCSB1aW50MzJfdCAqaGFuZGxlLCB1aW50NjRfdCB0aW1l b3V0LAorCQkJCSBpbnQgKmZlbmNlLCBpbnQgZmVuY2VfaW5kZXgpCit7CisgICAgc3RydWN0IGRy bV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJdOworICAgIHN0cnVjdCBkcm1faTkxNV9nZW1f cmVsb2NhdGlvbl9lbnRyeSByZWxvYzsKKyAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZm ZXIyIGV4ZWNidWY7CisgICAgaWd0X3NwaW5fdCAqc3BpbiA9IE5VTEw7CisgICAgY29uc3QgdWlu dDMyX3QgYmJlID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKKyAgICBpbnQgaSA9IDA7CisKKyAgICBn ZW1fcXVpZXNjZW50X2dwdShmZCk7CisKKyAgICBtZW1zZXQoJmV4ZWNidWYsIDAsIHNpemVvZihl eGVjYnVmKSk7CisgICAgbWVtc2V0KCZvYmosIDAsIHNpemVvZihvYmopKTsKKyAgICBtZW1zZXQo JnJlbG9jLCAwLCBzaXplb2YocmVsb2MpKTsKKworICAgIGV4ZWNidWYuYnVmZmVyc19wdHIgPSB0 b191c2VyX3BvaW50ZXIob2JqKTsKKworICAgIGV4ZWNidWYuYnVmZmVyX2NvdW50ID0gMjsKKyAg ICBleGVjYnVmLmZsYWdzID0gZXhlY19pZCB8IEk5MTVfRVhFQ19GRU5DRV9PVVQgOworCisgICAg b2JqWzBdLmhhbmRsZSA9IHRhcmdldDsKKyAgICBvYmpbMV0uaGFuZGxlID0gZ2VtX2NyZWF0ZShm ZCwgNDA5Nik7CisKKyAgICBvYmpbMV0ucmVsb2NhdGlvbl9jb3VudCA9IDE7CisgICAgb2JqWzFd LnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9jKTsKKworICAgIHJlbG9jLnRhcmdl dF9oYW5kbGUgPSBvYmpbMF0uaGFuZGxlOworICAgIHJlbG9jLnJlYWRfZG9tYWlucyA9IEk5MTVf R0VNX0RPTUFJTl9DT01NQU5EOworICAgIHJlbG9jLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RP TUFJTl9DT01NQU5EOworICAgIHJlbG9jLmRlbHRhID0gb2Zmc2V0ICogc2l6ZW9mKHVpbnQzMl90 KTsKKworICAgIHJlbG9jLm9mZnNldCA9IGkgKiBzaXplb2YodWludDMyX3QpOworICAgIGdlbV93 cml0ZShmZCwgb2JqWzFdLmhhbmRsZSwgMCwgJmJiZSwgc2l6ZW9mKGJiZSkpOworCisgICAgX19z eW5jX3N5bmNocm9uaXplKCk7CisKKyAgICBnZW1fc3luYyhmZCwgb2JqWzFdLmhhbmRsZSk7Cisg ICAgZXhlY2J1Zi5yc3ZkMSA9IGN0eF9pZDsKKyAgICBleGVjYnVmLnJzdmQyID0gLTE7CisKKyAg ICBzcGluID0gaWd0X3NwaW5fbmV3KGZkLCAuZGVwZW5kZW5jeSA9IG9ialswXS5oYW5kbGUpOwor ICAgIGlndF9zcGluX3NldF90aW1lb3V0KHNwaW4sIHRpbWVvdXQpOworICAgIGlndF9hc3NlcnQo Z2VtX2JvX2J1c3koZmQsIG9ialswXS5oYW5kbGUpKTsKKworICAgIGdlbV9leGVjYnVmX3dyKGZk LCAmZXhlY2J1Zik7CisgICAgaWd0X3NwaW5fZnJlZShmZCwgc3Bpbik7CisKKyAgICBmZW5jZVtm ZW5jZV9pbmRleF0gPSBleGVjYnVmLnJzdmQyID4+IDMyOworCisgICAgZ2VtX2Nsb3NlKGZkLCBv YmpbMV0uaGFuZGxlKTsKKyAgICBnZW1fcXVpZXNjZW50X2dwdShmZCk7Cit9CisKK3N0YXRpYyB2 b2lkIGluamVjdF9oYW5nKHVpbnQzMl90IGZkLCB1bnNpZ25lZCBlbmdpbmVfaWQsIHVpbnQzMl90 IGN0eF9pZCwKKwkJCSB1bnNpZ25lZCBmbGFncykKK3sKKwlpZ3RfaGFuZ190IGhhbmc7CisJaGFu ZyA9IGlndF9oYW5nX2N0eChmZCwgY3R4X2lkLCBlbmdpbmVfaWQsIGZsYWdzKTsKKwlnZW1fc3lu YyhmZCwgaGFuZy5zcGluLT5oYW5kbGUpOworfQorCisvKiBUZXN0IzE6IGNyZWF0ZSBzb21lIHdv cmsgYW5kIGxldCBpdCBydW4gb24gYWxsIGVuZ2luZXMgKi8KK3N0YXRpYyB2b2lkIGxvbmdfYmF0 Y2hfdGVzdDEoaW50IGZkLCBpbnQgcHJpbzEsIGludCBwcmlvMiwgaW50IHJlc2V0X2N0eDEsCisJ CQlpbnQgcmVzZXRfY3R4MiwgdW5zaWduZWQgdGhyZXNob2xkKQoreworCXVuc2lnbmVkIGVuZ2lu ZV9pZCA9IDA7CisJdW5zaWduZWQgbmVuZ2luZSA9IDA7CisJc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplXzsKKwl1aW50MzJfdCBjdHhbOF07CisJdWludDMyX3Qgc2NyYXRjaFs4XTsK Kwl1aW50MzJfdCBjdHgyWzhdOworCXVpbnQzMl90IHNjcmF0Y2gyWzhdOworCWludCAqZmVuY2Us IGkgPSAwOworCWNvbnN0IHVpbnQ2NF90IGJhdGNoX3RpbWVvdXRfbXMgPSB0aW1lb3V0XzEwMG1z ICogNDsKKworCWZlbmNlID0gKGludCAqKW1hbGxvYyhzaXplb2YoaW50KSo4KTsKKwlpZ3RfYXNz ZXJ0KGZlbmNlKTsKKworCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlXykgeworCQll bmdpbmVfaWQgPSBlXy0+ZmxhZ3M7CisKKwkJc2NyYXRjaDJbbmVuZ2luZV0gPSBnZW1fY3JlYXRl KGZkLCA0MDk2KTsKKwkJY3R4MltuZW5naW5lXSA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7CisJ CWdlbV9jb250ZXh0X3NldF9wcmlvcml0eShmZCwgY3R4MltuZW5naW5lXSwgcHJpbzIpOworCQli YXRjaF9idWZmZXJfZmFjdG9yeShmZCwgY3R4MltuZW5naW5lXSwgZW5naW5lX2lkLAorCQkJCSBz Y3JhdGNoMltuZW5naW5lXSwgMCwgTlVMTCwKKwkJCQkgYmF0Y2hfdGltZW91dF9tcywgZmVuY2Us IG5lbmdpbmUpOworCisJCXNjcmF0Y2hbbmVuZ2luZV0gPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsK KwkJY3R4W25lbmdpbmVdID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsKKwkJZ2VtX2NvbnRleHRf c2V0X3ByaW9yaXR5KGZkLCBjdHhbbmVuZ2luZV0sIHByaW8xKTsKKwkJYmF0Y2hfYnVmZmVyX2Zh Y3RvcnkoZmQsIGN0eFtuZW5naW5lXSwgZW5naW5lX2lkLAorCQkJCSBzY3JhdGNoW25lbmdpbmVd LCAwLCBOVUxMLAorCQkJCSBiYXRjaF90aW1lb3V0X21zLCBmZW5jZSwgbmVuZ2luZSk7CisJCWln dF9pbmZvKCJUZXN0ICMxOiBjdHgxL2N0eDIgLS0+IGV4ZWN1dGUgb24gJXNcbiIsZV8tPm5hbWUp OworCQluZW5naW5lKys7CisJfQorCisJZm9yIChpID0gMDsgaSA8IG5lbmdpbmU7IGkrKykgewor CQljbG9zZShmZW5jZVtpXSk7CisJCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eFtpXSk7CisJ CWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eDJbaV0pOworCQlnZW1fY2xvc2UoZmQsIHNjcmF0 Y2hbaV0pOworCQlnZW1fY2xvc2UoZmQsIHNjcmF0Y2gyW2ldKTsKKwl9Cit9CisKK2Zsb2F0IHRp bWVkaWZmZXJlbmNlX21zZWMoc3RydWN0IHRpbWV2YWwgdDAsIHN0cnVjdCB0aW1ldmFsIHQxKQor eworICAgIHJldHVybiAodDEudHZfc2VjIC0gdDAudHZfc2VjKSAqIDEwMDAuMGYgKyAodDEudHZf dXNlYyAtIHQwLnR2X3VzZWMpIC8gMTAwMC4wZjsKK30KKworLyogVGVzdCMyOiBzdWJtaXQgYSBs b25nIGJhdGNoIGFuZCBhZnRlciBoYWxmIG9mIHRoZSBleHBlY3RlZCBydW50aW1lCisgICBzdWJt aXQgYSBoaWdoZXIgcHJpb3JpdHkgYmF0Y2ggYW5kIHRoZW4gdHJ5IHRvIGNhbmNlbCB0aGUgZXhl Y3V0aW9uKi8KK3N0YXRpYyB2b2lkIGxvbmdfYmF0Y2hfdGVzdDIoaW50IGZkLCBpbnQgcHJpbzEs IGludCBwcmlvMiwgaW50IHJlc2V0X2N0eDEsCisJCQlpbnQgcmVzZXRfY3R4MiwgdW5zaWduZWQg dGhyZXNob2xkKQoreworCXVuc2lnbmVkIGVuZ2luZV9pZCA9IDA7CisJdW5zaWduZWQgbmVuZ2lu ZSA9IDA7CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsKKwl1aW50MzJfdCBj dHhbOF07CisJdWludDMyX3Qgc2NyYXRjaFs4XTsKKwl1aW50MzJfdCBjdHgyWzhdOworCXVpbnQz Ml90IHNjcmF0Y2gyWzhdOworCWludCAqZmVuY2UsIGkgPSAwOworCXVuc2lnbmVkIGZsYWdzID0g SEFOR19BTExPV19DQVBUVVJFOworCWNvbnN0IHVpbnQ2NF90IGJhdGNoX3RpbWVvdXRfbXMgPSB0 aW1lb3V0XzEwMG1zICogNDsKKwlzdHJ1Y3QgdGltZXZhbCB0MDsKKwlzdHJ1Y3QgdGltZXZhbCB0 MTsKKwlmbG9hdCBlbGFwc2VkOworCisJZmVuY2UgPSAoaW50ICopbWFsbG9jKHNpemVvZihpbnQp KjgpOworCWlndF9hc3NlcnQoZmVuY2UpOworCisJbmVuZ2luZSA9IDA7CisKKwlfX2Zvcl9lYWNo X3BoeXNpY2FsX2VuZ2luZShmZCwgZV8pIHsKKwkJZW5naW5lX2lkID0gZV8tPmZsYWdzOworCisJ CXNjcmF0Y2gyW25lbmdpbmVdID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CisJCWN0eDJbbmVuZ2lu ZV0gPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOworCQlnZW1fY29udGV4dF9zZXRfcHJpb3JpdHko ZmQsIGN0eDJbbmVuZ2luZV0sIHByaW8yKTsKKwkJYmF0Y2hfYnVmZmVyX2ZhY3RvcnkoZmQsIGN0 eDJbbmVuZ2luZV0sIGVuZ2luZV9pZCwKKwkJCQkgc2NyYXRjaDJbbmVuZ2luZV0sIDAsIE5VTEws CisJCQkJIGJhdGNoX3RpbWVvdXRfbXMsIGZlbmNlLCBuZW5naW5lKTsKKworCQlnZXR0aW1lb2Zk YXkoJnQwLCAwKTsKKwkJd2hpbGUoZWxhcHNlZCA8IDIwMCkgeworCQkJZ2V0dGltZW9mZGF5KCZ0 MSwgMCk7CisJCQllbGFwc2VkICs9IHRpbWVkaWZmZXJlbmNlX21zZWModDAsIHQxKTsKKwkJfQor CisJCXNjcmF0Y2hbbmVuZ2luZV0gPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKKwkJY3R4W25lbmdp bmVdID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsKKwkJZ2VtX2NvbnRleHRfc2V0X3ByaW9yaXR5 KGZkLCBjdHhbbmVuZ2luZV0sIHByaW8xKTsKKwkJYmF0Y2hfYnVmZmVyX2ZhY3RvcnkoZmQsIGN0 eFtuZW5naW5lXSwgZW5naW5lX2lkLAorCQkJCSBzY3JhdGNoW25lbmdpbmVdLCAwLCBOVUxMLAor CQkJCSBiYXRjaF90aW1lb3V0X21zLCBmZW5jZSwgbmVuZ2luZSk7CisKKwkJaWYgKGNvbnRleHRf c2V0X3dhdGNoZG9nKGZkLCBlbmdpbmVfaWQsIGVfLT5uYW1lLAorCQkJCQkgY3R4W25lbmdpbmVd LAorCQkJCQkgdGhyZXNob2xkKSA9PSAtRU5PREVWKSB7CisJCQlpZ3RfaW5mbygiTm8gc3VwcG9y dCBmb3IgZ3B1IGgvdyB3YXRjaGRvZyBvbiAlc1xuIiwKKwkJCSBlXy0+bmFtZSk7CisJCQlnb3Rv IHNraXBfY2FzZTsKKwkJfQorCQljbGVhcl9lcnJvcl9zdGF0ZShmZCk7CisJCWluamVjdF9oYW5n KGZkLCBlbmdpbmVfaWQsIGN0eFtuZW5naW5lXSwgZmxhZ3MpOworCQkvKiBOb3cgY2hlY2sgdGhl IGVuZ2luZSB3YXMgcmVzZXQgc3VjY2Vzc2Z1bGx5ICovCisJCS8vaWd0X2Fzc2VydF9lcShzeW5j X2ZlbmNlX3N0YXR1cygqZmVuY2UpLCAtRUlPKTsKKwkJaWd0X2luZm8oIlRlc3QgIzIgY3R4MS9j dHgyIC0tPiBzZXQgd2F0Y2hkb2cgYW5kIgorCQkJCSIgY2FuY2VsIGN0eDIgYXQgaGFsZiBleHBl Y3RlZCBydW4gd2l0aCBoaWdoZXIiCisJCQkJIiBwcmlvcml0eSBlbmdpbmU6ICVzLCBmZW5jZSBz dGF0dXM6IDB4JXggXG4iLAorCQkJCQllXy0+bmFtZSwgc3luY19mZW5jZV9zdGF0dXMoKmZlbmNl KSk7Citza2lwX2Nhc2U6CisJCW5lbmdpbmUrKzsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgbmVu Z2luZTsgaSsrKSB7CisJCWNsb3NlKGZlbmNlW2ldKTsKKwkJZ2VtX2NvbnRleHRfZGVzdHJveShm ZCwgY3R4W2ldKTsKKwkJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgY3R4MltpXSk7CisJCWdlbV9j bG9zZShmZCwgc2NyYXRjaFtpXSk7CisJCWdlbV9jbG9zZShmZCwgc2NyYXRjaDJbaV0pOworCX0K K30KKworLyogVGVzdCMzOiBjcmVhdGUgMiBjdHgsIHNldCBhIGdwdSB3YXRjaGRvZyB0aW1lb3V0 IG9uIGJvdGgsCisgICBhbmQgZWl0aGVyIGV4ZWN1dGUgb3IgY2FuY2VsICovCitzdGF0aWMgdm9p ZCBsb25nX2JhdGNoX3Rlc3QzKGludCBmZCwgaW50IHByaW8xLCBpbnQgcHJpbzIsIGludCByZXNl dF9jdHgxLAorCQkJaW50IHJlc2V0X2N0eDIsIHVuc2lnbmVkIHRocmVzaG9sZCkKK3sKKwl1bnNp Z25lZCBlbmdpbmVfaWQgPSAwOworCXVuc2lnbmVkIG5lbmdpbmUgPSAwOworCXN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZV87CisJdWludDMyX3QgY3R4WzhdOworCXVpbnQzMl90IHNj cmF0Y2hbOF07CisJdWludDMyX3QgY3R4Mls4XTsKKwl1aW50MzJfdCBzY3JhdGNoMls4XTsKKwlp bnQgKmZlbmNlLCBpID0gMDsKKwl1bnNpZ25lZCBmbGFncyA9IEhBTkdfQUxMT1dfQ0FQVFVSRTsK Kwljb25zdCB1aW50NjRfdCBiYXRjaF90aW1lb3V0X21zID0gdGltZW91dF8xMDBtcyAqIDQ7CisK KwlmZW5jZSA9IChpbnQgKiltYWxsb2Moc2l6ZW9mKGludCkqOCk7CisJaWd0X2Fzc2VydChmZW5j ZSk7CisKKwluZW5naW5lID0gMDsKKworCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBl XykgeworCQllbmdpbmVfaWQgPSBlXy0+ZmxhZ3M7CisKKwkJc2NyYXRjaDJbbmVuZ2luZV0gPSBn ZW1fY3JlYXRlKGZkLCA0MDk2KTsKKwkJY3R4MltuZW5naW5lXSA9IGdlbV9jb250ZXh0X2NyZWF0 ZShmZCk7CisJCWdlbV9jb250ZXh0X3NldF9wcmlvcml0eShmZCwgY3R4MltuZW5naW5lXSwgcHJp bzIpOworCQliYXRjaF9idWZmZXJfZmFjdG9yeShmZCwgY3R4MltuZW5naW5lXSwgZW5naW5lX2lk LAorCQkJCSBzY3JhdGNoMltuZW5naW5lXSwgMCwgTlVMTCwKKwkJCQkgYmF0Y2hfdGltZW91dF9t cywgZmVuY2UsIG5lbmdpbmUpOworCisJCXNjcmF0Y2hbbmVuZ2luZV0gPSBnZW1fY3JlYXRlKGZk LCA0MDk2KTsKKwkJY3R4W25lbmdpbmVdID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsKKwkJZ2Vt X2NvbnRleHRfc2V0X3ByaW9yaXR5KGZkLCBjdHhbbmVuZ2luZV0sIHByaW8xKTsKKwkJYmF0Y2hf YnVmZmVyX2ZhY3RvcnkoZmQsIGN0eFtuZW5naW5lXSwgZW5naW5lX2lkLAorCQkJCSBzY3JhdGNo W25lbmdpbmVdLCAwLCBOVUxMLAorCQkJCSBiYXRjaF90aW1lb3V0X21zLCBmZW5jZSwgbmVuZ2lu ZSk7CisKKwkJaWYgKGNvbnRleHRfc2V0X3dhdGNoZG9nKGZkLCBlbmdpbmVfaWQsIGVfLT5uYW1l LAorCQkJCQkgY3R4MltuZW5naW5lXSwKKwkJCQkJIHRocmVzaG9sZCkgPT0gLUVOT0RFVikgewor CQkJaWd0X2luZm8oIk5vIHN1cHBvcnQgZm9yIGdwdSBoL3cgd2F0Y2hkb2cgb24gJXNcbiIsCisJ CQkgZV8tPm5hbWUpOworCQkJZ290byBza2lwX2Nhc2U7CisJCX0KKworCQlpZiAocmVzZXRfY3R4 MikgeworCQkJY2xlYXJfZXJyb3Jfc3RhdGUoZmQpOworCQkJaW5qZWN0X2hhbmcoZmQsIGVuZ2lu ZV9pZCwgY3R4MltuZW5naW5lXSwgZmxhZ3MpOworCisJCQkvKiBOb3cgY2hlY2sgdGhlIGVuZ2lu ZSB3YXMgcmVzZXQgc3VjY2Vzc2Z1bGx5ICovCisJCQkvL2lndF9hc3NlcnRfZXEoc3luY19mZW5j ZV9zdGF0dXMoKmZlbmNlKSwgLUVJTyk7CisJCQlpZ3RfaW5mbygiVGVzdCAjMyBjdHgxL2N0eDIg LS0+IHNldCB3YXRjaGRvZyBhbmQiCisJCQkJIiBjYW5jZWwgY3R4MiBvbiAlcyB3aXRoIGZlbmNl IHN0YXR1czogMHgleCBcbiIsCisJCQkJCWVfLT5uYW1lLCBzeW5jX2ZlbmNlX3N0YXR1cygqZmVu Y2UpKTsKKwkJfQorCisJCWNvbnRleHRfc2V0X3dhdGNoZG9nKGZkLCBlbmdpbmVfaWQsIGVfLT5u YW1lLAorCQkJCQkgY3R4W25lbmdpbmVdLAorCQkJCQkgdGhyZXNob2xkKTsKKwkJaWYgKHJlc2V0 X2N0eDEpIHsKKwkJCWNsZWFyX2Vycm9yX3N0YXRlKGZkKTsKKwkJCWluamVjdF9oYW5nKGZkLCBl bmdpbmVfaWQsIGN0eFtuZW5naW5lXSwgZmxhZ3MpOworCisJCQkvKiBOb3cgY2hlY2sgdGhlIGVu Z2luZSB3YXMgcmVzZXQgc3VjY2Vzc2Z1bGx5ICovCisJCQkvL2lndF9hc3NlcnRfZXEoc3luY19m ZW5jZV9zdGF0dXMoKmZlbmNlKSwgLUVJTyk7CisJCQlpZ3RfaW5mbygiVGVzdCAjMzogY3R4MS9j dHgyIC0tPiBzZXQgd2F0Y2hkb2cgYW5kIgorCQkJCSIgY2FuY2VsIGN0eDEgb24gJXMgd2l0aCBm ZW5jZSBzdGF0dXM6IDB4JXhcbiIsCisJCQkJZV8tPm5hbWUsIHN5bmNfZmVuY2Vfc3RhdHVzKCpm ZW5jZSkpOworCQl9Citza2lwX2Nhc2U6CisJCW5lbmdpbmUrKzsKKwl9CisKKwlmb3IgKGkgPSAw OyBpIDwgbmVuZ2luZTsgaSsrKSB7CisJCWNsb3NlKGZlbmNlW2ldKTsKKwkJZ2VtX2NvbnRleHRf ZGVzdHJveShmZCwgY3R4W2ldKTsKKwkJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgY3R4MltpXSk7 CisJCWdlbV9jbG9zZShmZCwgc2NyYXRjaFtpXSk7CisJCWdlbV9jbG9zZShmZCwgc2NyYXRjaDJb aV0pOworCX0KK30KKworaWd0X21haW4KK3sKKwlpbnQgZmQ7CisJdW5zaWduZWQgaW50IGk9MDsK KwlzdHJ1Y3QgeworCQljaGFyICpuYW1lOworCQlpbnQgcHJpb1syXTsKKwkJYm9vbCByZXNldFsy XTsKKwkJdW5zaWduZWQgdGhyZXNob2xkOworCX0gdGVzdHNbXSA9IHsKKwkJeyJjdHgxLWV4ZWMt Y3R4Mi1leGVjLWFsbC1lbmdpbmVzIiwKKwkJe0RFRkFVTFRfUFJJTywgREVGQVVMVF9QUklPfSwg e2ZhbHNlLCBmYWxzZX0sIFdBVENIRE9HX1RIUkVTSE9MRH0sCisJCXsiY3R4MS1sb3ctcHJpby1l eGVjLWN0eDItaGlnaC1wcmlvLXJlc2V0LWFmdGVyLWhhbGYtdGltZS1hbGwtZW5naW5lcyIsCisJ CXtNQVhfUFJJTywgTUlOX1BSSU99LCB7ZmFsc2UsIGZhbHNlfSwgV0FUQ0hET0dfVEhSRVNIT0xE fSwKKwkJeyJjdHgxLXJlc2V0LWN0eDItZXhlYy1hbGwtZW5naW5lcyIsCisJCXtERUZBVUxUX1BS SU8sIERFRkFVTFRfUFJJT30sIHt0cnVlLCBmYWxzZX0sIFdBVENIRE9HX1RIUkVTSE9MRH0sCisJ CXsiY3R4MS1yZXNldC1jdHgyLWV4ZWMtYWxsLWVuZ2luZXMtYmVsb3ctdGhyZXNob2xkIiwKKwkJ e0RFRkFVTFRfUFJJTywgREVGQVVMVF9QUklPfSwge3RydWUsIGZhbHNlfSwKKwkJIFdBVENIRE9H X0JFTE9XX1RIUkVTSE9MRH0sCisJCXsiY3R4MS1yZXNldC1jdHgyLWV4ZWMtYWxsLWVuZ2luZXMt b3Zlci10aHJlc2hvbGQiLAorCQl7REVGQVVMVF9QUklPLCBERUZBVUxUX1BSSU99LCB7dHJ1ZSwg ZmFsc2V9LAorCQkgV0FUQ0hET0dfT1ZFUl9USFJFU0hPTER9LAorCQl7ImN0eDItcmVzZXQtY3R4 MS1leGVjLWFsbC1lbmdpbmVzIiwKKwkJe0RFRkFVTFRfUFJJTywgREVGQVVMVF9QUklPfSwge2Zh bHNlLCB0cnVlfSwgV0FUQ0hET0dfVEhSRVNIT0xEfSwKKwkJeyJjdHgyLXJlc2V0LWN0eDEtcmVz ZXQtYWxsLWVuZ2luZXMiLAorCQl7REVGQVVMVF9QUklPLCBERUZBVUxUX1BSSU99LCB7dHJ1ZSwg dHJ1ZX0sIFdBVENIRE9HX1RIUkVTSE9MRH0sCisJCXsiY3R4MS1oaWdoLXByaW8tcmVzZXQtY3R4 Mi1sb3ctcHJpby1leGVjLWFsbC1lbmdpbmVzIiwKKwkJe01BWF9QUklPLCBNSU5fUFJJT30sIHt0 cnVlLCBmYWxzZX0sIFdBVENIRE9HX1RIUkVTSE9MRH0sCisJCXsiY3R4MS1sb3ctcHJpby1yZXNl dC1jdHgyLWhpZ2gtcHJpby1leGVjLWFsbC1lbmdpbmVzIiwKKwkJe01JTl9QUklPLCBNQVhfUFJJ T30sIHt0cnVlLCBmYWxzZX0sIFdBVENIRE9HX1RIUkVTSE9MRH0sCisJCXsiY3R4MS1sb3ctcHJp by1yZXNldC1jdHgyLWhpZ2gtcHJpby1yZXNldC1hbGwtZW5naW5lcyIsCisJCXtNSU5fUFJJTywg TUFYX1BSSU99LCB7dHJ1ZSwgdHJ1ZX0sIFdBVENIRE9HX1RIUkVTSE9MRH0sCisJfTsKKworCWln dF9za2lwX29uX3NpbXVsYXRpb24oKTsKKworCWlndF9maXh0dXJlIHsKKwkJZmQgPSBkcm1fb3Bl bl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKKwkJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKKwl9CisKKwlp Z3Rfc3VidGVzdF9ncm91cCB7CisJCWlndF9zdWJ0ZXN0X2YoIiVzIiwgdGVzdHNbMF0ubmFtZSkg eworCQkJbG9uZ19iYXRjaF90ZXN0MSggZmQsIHRlc3RzWzBdLnByaW9bMF0sCisJCQkJCXRlc3Rz WzBdLnByaW9bMV0sCisJCQkJCXRlc3RzWzBdLnJlc2V0WzBdLAorCQkJCQl0ZXN0c1swXS5yZXNl dFsxXSwKKwkJCQkJdGVzdHNbMF0udGhyZXNob2xkKTsKKwkJfQorCisJCWlndF9zdWJ0ZXN0X2Yo IiVzIiwgdGVzdHNbMV0ubmFtZSkgeworCQkJbG9uZ19iYXRjaF90ZXN0MiggZmQsIHRlc3RzWzFd LnByaW9bMF0sCisJCQkJCXRlc3RzWzFdLnByaW9bMV0sCisJCQkJCXRlc3RzWzFdLnJlc2V0WzBd LAorCQkJCQl0ZXN0c1sxXS5yZXNldFsxXSwKKwkJCQkJdGVzdHNbMV0udGhyZXNob2xkKTsKKwkJ fQorCisJCWZvcihpID0gMjsgaSA8IEFSUkFZX1NJWkUodGVzdHMpOyBpKyspIHsKKwkJCWlndF9z dWJ0ZXN0X2YoIiVzIiwgdGVzdHNbaV0ubmFtZSkgeworCQkJCWxvbmdfYmF0Y2hfdGVzdDMoIGZk LCB0ZXN0c1tpXS5wcmlvWzBdLAorCQkJCQkJdGVzdHNbaV0ucHJpb1sxXSwKKwkJCQkJCXRlc3Rz W2ldLnJlc2V0WzBdLAorCQkJCQkJdGVzdHNbaV0ucmVzZXRbMV0sCisJCQkJCQl0ZXN0c1tpXS50 aHJlc2hvbGQpOworCQkJfQorCQl9CisJfQorCisgICAgaWd0X2ZpeHR1cmUgeworCWNsb3NlKGZk KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29u LmJ1aWxkCmluZGV4IDgwNjc2NmU1MTY2Ny4uYWI3M2EwMDQzYzdjIDEwMDY0NAotLS0gYS90ZXN0 cy9tZXNvbi5idWlsZAorKysgYi90ZXN0cy9tZXNvbi5idWlsZApAQCAtMjE2LDYgKzIxNiw3IEBA IGk5MTVfcHJvZ3MgPSBbCiAJJ2dlbV91bnJlZl9hY3RpdmVfYnVmZmVycycsCiAJJ2dlbV91c2Vy cHRyX2JsaXRzJywKIAknZ2VtX3dhaXQnLAorICAgICAgICAnZ2VtX3dhdGNoZG9nJywKIAknZ2Vt X3dvcmthcm91bmRzJywKIAknZ2VtX3dyaXRlX3JlYWRfcmluZ19zd2l0Y2gnLAogCSdpOTE1X2Zi X3RpbGluZycsCi0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0 LWRldg==