From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8152C6E3E9 for ; Thu, 20 Jun 2019 19:01:35 +0000 (UTC) Message-ID: <56cdb7a82a1c9c013ac4cad4a77973c70735afd4.camel@intel.com> From: Carlos Santa Date: Thu, 20 Jun 2019 12:00:23 -0700 In-Reply-To: <20190620183318.83054-1-carlos.santa@intel.com> References: <20190620183318.83054-1-carlos.santa@intel.com> Mime-Version: 1.0 Subject: Re: [igt-dev] [RFC v6] 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: SGkgQ2hyaXMsIFVyc3VsaW4sCgpJJ3ZlIGJlZW4gd29ya2luZyB3LyBBbnRvbmlvIHRvIGFkZCB0 aGUgdGltaW5nX2JhdGNoLgoKTmVlZCBzb21lIGhlbHAgd2l0aCB0aGUgdGltaW5nIGJhdGNoIGJl bG93IGFzIHRoZSBjYWxjdWxhdGVkIGRlbHRhCnNlZW1zIHJhdGhlciBsYXJnZT8/CgpDYW4geW91 IHRha2UgYSBsb29rPwoKY3NhbnRhQGxhYnVzZXItTlVDOn4vaW50ZWwtZ3JhcGhpY3MvZ3B1X3dh dGNoZG9nX3RpbWVvdXQvaWd0X3RpcC9pbnRlbC0KZ3B1LXRvb2xzJCBzdWRvIC4vdGVzdHMvZ2Vt X3dhdGNoZG9nIC0tcnVuLXN1YnRlc3QgY3R4MS1zY3JhdGNoLQp0aW1lc3RhbXAKSUdULVZlcnNp b246IDEuMjQtZzcxOTY4YmEgKHg4Nl82NCkgKExpbnV4OiA1LjEuMCsgeDg2XzY0KQpTdGFydGlu ZyBzdWJ0ZXN0OiBjdHgxLXNjcmF0Y2gtdGltZXN0YW1wCkJhdGNoIGJ1ZmZlclswXTogMTIwMDAw MDIKQmF0Y2ggYnVmZmVyWzFdOiAyMzU4CkJhdGNoIGJ1ZmZlclsyXTogMApCYXRjaCBidWZmZXJb M106IDAKQmF0Y2ggYnVmZmVyWzRdOiAxMjAwMDAwMgpCYXRjaCBidWZmZXJbNV06IDIzNTgKQmF0 Y2ggYnVmZmVyWzZdOiA0CkJhdGNoIGJ1ZmZlcls3XTogMApCYXRjaCBidWZmZXJbOF06IDE4ODAw MTAxCkJhdGNoIGJ1ZmZlcls5XTogNDAwMTAKQmF0Y2ggYnVmZmVyWzEwXTogMApCYXRjaCBidWZm ZXJbMTFdOiA1MDAwMDAwCkJhdGNoIGJ1ZmZlclsxMl06IDAKQmF0Y2ggYnVmZmVyWzEzXTogYzVj NWM1YzUKQmF0Y2ggYnVmZmVyWzE0XTogYzVjNWM1YzUKQmF0Y2ggYnVmZmVyWzE1XTogYzVjNWM1 YzUKQnVmZmVyIE9iamVjdFswXTogNGFmMGExYTYKQnVmZmVyIE9iamVjdFsxXTogNTBhYTNkODQK QnVmZmVyIE9iamVjdFsyXTogMApCdWZmZXIgT2JqZWN0WzNdOiAwCkJ1ZmZlciBPYmplY3RbNF06 IDAKQnVmZmVyIE9iamVjdFs1XTogMApCdWZmZXIgT2JqZWN0WzZdOiAwCkJ1ZmZlciBPYmplY3Rb N106IDAKQnVmZmVyIE9iamVjdFs4XTogMApCdWZmZXIgT2JqZWN0WzldOiAwCkJ1ZmZlciBPYmpl Y3RbMTBdOiAwCkJ1ZmZlciBPYmplY3RbMTFdOiAwCkJ1ZmZlciBPYmplY3RbMTJdOiAwCkJ1ZmZl ciBPYmplY3RbMTNdOiAwCkJ1ZmZlciBPYmplY3RbMTRdOiAwCkJ1ZmZlciBPYmplY3RbMTVdOiAw CgpJbnB1dCB3YXRjaGRvZyB0aHJlc2hvbGQgaW4gdXMgPSAxMDAwMDAwIG9yICh+MXMpCgpSQ1Mg dGltZXN0YW1wIGNsb2NrOiAxMjAwMEtIeiwgODMuM25zCkVsYXBzZWQgdGltZSBpbiBzdGFydF90 aW1lc3RhbXA6IDEyNTcyODQwMDYKRWxhcHNlZCB0aW1lIGluIHN0b3BfdGltZXN0YW1wOiAxMzUz MzM0MTQ4CkVsYXBzZWQgdGltZSBpbiBtaWxsaXNlY29uZHM6IDgwMDQuMTc4NzExClRvdGFsIFRp bWVvdXQgZHVyaW5nIHRoZSBoYW5nOiA3MDA0LjE3ODcxMQpUZXN0ICMxOiBiYXRjaF9idWZmZXJf dGltZWQgLS0+IGV4ZWN1dGUgb24gcmNzMApTdWJ0ZXN0IGN0eDEtc2NyYXRjaC10aW1lc3RhbXA6 IFNVQ0NFU1MgKDguMDI4cykKClJlZ2FyZHMsCkNhcmxvcwoKCgpPbiBUaHUsIDIwMTktMDYtMjAg YXQgMTE6MzMgLTA3MDAsIENhcmxvcyBTYW50YSB3cm90ZToKPiBUaGlzIHRlc3QgYWRkcyBiYXNp YyBzZXQgb2YgdGVzdHMgdG8gcmVzZXQgdGhlIGRpZmZlcmVudAo+IEdQVSBlbmdpbmVzIHRocm91 Z2ggdGhlIGdwdSB3YXRjaGRvZyB0aW1lci4KPiAKPiBDcmVkaXRzIHRvIEFudG9uaW8gZm9yIHRo ZSBvcmlnaW5hbCBjb2RlYmFzZSB0aGlzIGlzIGJhc2VkIG9uLgo+IAo+IHYyOiByZW1vdmUgZ2Vt X2NvbnRleHRfZ2V0X3BhcmFtKCkgZHVyaW5nIHNldCAoQW50b25pbykKPiAgICAgcmVtb3ZlIGNs ZWFyaW5nIG9mIHRoZSBlbmdpbmVzX3RocmVzaG9sZFtdIGluIHRoZSBkZWZhdWx0IGNhc2UKPiAg ICAgaW5zaWRlIGNvbnRleHRfc2V0X3dhdGNoZG9nKCkuIChBbnRvbmlvKQo+ICAgICBmaXggaW5k ZXhpbmcgd2hlbiBjcmVhdGluZyBsb3cvaGlnaCBwcmlvcml0eSBjb250ZXh0cwo+ICAgICBnZXQg cmlkIG9mIDIgdGhyZWFkcyBpZGVhIChBbnRvbmlvKQo+ICAgICBmaXggY29udGV4dCBwcmlvIGJ1 ZyBkdWUgdG8gd3JvbmcgaW5kZXhpbmcgKEFudG9uaW8pCj4gdjM6IG5vIG5lZWQgdG8gZm9yY2Ug Y2xlYXIgZHJtX2k5MTVfZ2VtX3dhdGNoZG9nX3RpbWVvdXQgc3RydWN0Cj4gICAgIHdoZW4gc2V0 dGluZyB0aGUgd2F0Y2hkb2cgdGltZW91dHMgKEFudG9uaW8pCj4gICAgIC11c2UgZ2VtX2NvbnRl eHRfc2V0X3ByaW9yaXR5KCkgaW5zdGVhZCB0byB1c2UgZXJyb3IgY2hlY2tpbmcKPiAgICAgLWFs d2F5cyB1c2UgYSBsb29wZXIgdG8gdGVzdCBhbGwgZW5naW5lcyAoQW50b25pbykKPiAgICAgLW1v ZGlmeSB0ZXN0IGdwdV93YXRjaG9kZ19oYW5nX2xvbmdfYmF0Y2hfc2luZ2xlX2VuZ2luZSgpCj4g ICAgIHRvIHVzZSBhIGNvdXBsZSBvZiBiYXRjaGVzIGFuZCBzZXQgdGhlIHRpbWVvdXQgaW4gYmV0 d2VlbiB0aGVtCj4gKEFudG9uaW8pCj4gICAgIC1tYWtlIHVzZSBvZiBmb3JfZWFjaF9lbmdpbmVf Y2xhc3NfaW5zdGFuY2UoKSAoQW50b25pbykKPiB2NDogLXRlc3RzIHNob3VsZCBiZSBhYmxlIHRv IGhhbmRsZSBzL3cgd2F0Y2hkb2cgdGltZW91dCAoVHZydGtvKQo+ICAgICAtcmVtb3ZlIGRlYWQg Y29kZSBpbnNpZGUgYmF0Y2hfYnVmZmVyIGZhY3RvcnkgKFR2cnRrbykKPiAgICAgLXNldF93YXRj aGRvZygpIHNob3VsZCByZXR1cm4gRU5PREVWIGZvciBmYWlsIGNhc2VzIChUdnJ0a28pCj4gICAg IC1lbmNsb3NlIG5hbWUsIHByaW9yaXR5IGFuZCByZXNldCBwYXJhbXMgaW5zaWRlIGFycmF5IChU dnJ0a28pCj4gdjU6IC1SZWJhc2VkLiBUZXN0cyA1LDYgYW5kIDggZnJvbSB0aGUgdGVzdCBwbGFu IGFyZSBub3cgYWRkZWQKPiB2NjogLVJlYmFzZWQuIEFkZGVkIFRlc3QgIzEwIFRpbWluZ19iYXRj aCAoQ2hyaXMpCj4gICAgIC11c2UgaTkxNV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UsIHVzZSBzcGlu bmVyIHRvIHRyYWNrIG91dF9mZW5jZSwKPiAgICAgLXVzZSBhIHN0cnVjdCB0byBkZXNjcmliZSAj IG9mIGN0eC9zY3JhdGNoW10sIGluY3JlYXNlICMgb2YKPiBlbmdpbmVzCj4gICAgIGZyb20gOCAo Q2hyaXMpCj4gCj4gVGVzdCBQbGFuOgo+IAo+IEFzc3VtcHRpb25zOgo+IDEuIFVzZSBmZW5jZSBz dGF0dXMgdG8gZmlndXJlIG91dCB3aGljaCBjdHggd2FzIHJlc2V0Cj4gMi4gVXNlIHNwaW4gYmF0 Y2hlcyB3LyB1c2VyIHNwYWNlIHRpbWVycyB0byBjb250cm9sIGR1cmF0aW9uCj4gYW5kIGNvcmtp bmcgdG8gY29udHJvbCBvcmRlcmluZwo+IDMuIFVzZSBjb250ZXh0IHByaW9yaXRpZXMgdG8gZm9y Y2UgcHJlZW1wdGlvbgo+IAo+IFRlc3RzOgo+IDEuIGN0eDEsIGxvbmdfYmF0Y2ggLT4gZXhlY3V0 ZQo+IDIuIGN0eDEsIHNldF93YXRjaGRvZyAtPiByZXNldAo+IDMuIGN0eDIvY3R4MSAtPiBleGVj dXRlLCByZXNldAo+IDQuIGN0eDEvY3R4MiAtPiByZXNldCwgZXhlY3V0ZQo+IDUuIGN0eDFfanVz dF9iZWxvd190aHJlc2hvbGQgLT4gZXhlY3V0ZQo+IDYuIGN0eF9vdmVyX3RoZV90aHJlc2hvbGQg LT4gcmVzZXQKPiA3LiBzZXQgd2F0Y2hkb2cgb24gc29tZSBlbmdpbmVzIC0+IGV4ZWN1dGUKPiA4 LiBzdWJtaXQgbG9uZ19iYXRjaCBhbmQgYWZ0ZXIgaGFsZiBvZiB0aGUKPiBleHBlY3RlZCBydW50 aW1lIHN1Ym1pdCBoaWdoZXIgcHJpbyBiYXRjaAo+IDkuIHN1Ym1pdCBsb3cgcHJpbyBiYXRjaCB3 L28gd2F0Y2hkb2cgdGhlbgo+IGhpZ2hlciBwcmlvIHdpdGggd2F0Y2hkb2cKPiAxMC4gc3VibWl0 IHRpbWluZ19iYXRjaCwgcmVjb3JkIHRpbWVzdGFtcHMKPiBhbmQgY2FsY3VsYXRlIHRoZSBkZWx0 YSBhZnRlciByZWN1cnNpbmcuCj4gCj4gVW5zcmVzb2x2ZWQgaXRlbXM6Cj4gMS4gVGhlIGNoZWNr IGZvciBzeW5jX2ZlbmNlX3N0YXR1cygqZmVuY2UpCj4gcmV0dXJucyAtMSBpbnN0ZWFkIG9mIEVJ Ty4KPiAKPiBDYzogVXJzdWxpbiBUdnJ0a28gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBD YzogQW50b25pbyBBcmdlbnppYW5vIDxhbnRvbmlvLmFyZ2Vuemlhbm9AaW50ZWwuY29tPgo+IENj OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBTaWduZWQtb2ZmLWJ5 OiBDYXJsb3MgU2FudGEgPGNhcmxvcy5zYW50YUBpbnRlbC5jb20+Cj4gLS0tCj4gIHRlc3RzL01h a2VmaWxlLnNvdXJjZXMgICAgfCAgIDMgKwo+ICB0ZXN0cy9pOTE1L2dlbV93YXRjaGRvZy5jIHwg NzMwCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgdGVzdHMvbWVz b24uYnVpbGQgICAgICAgICB8ICAgMSArCj4gIDMgZmlsZXMgY2hhbmdlZCwgNzM0IGluc2VydGlv bnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2k5MTUvZ2VtX3dhdGNoZG9nLmMKPiAK PiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNv dXJjZXMKPiBpbmRleCAwMjdlZDgyZmMzOGEuLjJjZWFhYTBhNDRhZiAxMDA2NDQKPiAtLS0gYS90 ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+IEBA IC00NTksNiArNDU5LDkgQEAgZ2VtX3VzZXJwdHJfYmxpdHNfU09VUkNFUyA9Cj4gaTkxNS9nZW1f dXNlcnB0cl9ibGl0cy5jCj4gIFRFU1RTX3Byb2dzICs9IGdlbV93YWl0Cj4gIGdlbV93YWl0X1NP VVJDRVMgPSBpOTE1L2dlbV93YWl0LmMKPiAgCj4gK1RFU1RTX3Byb2dzICs9IGdlbV93YXRjaGRv Zwo+ICtnZW1fd2F0Y2hkb2dfU09VUkNFUyA9IGk5MTUvZ2VtX3dhdGNoZG9nLmMKPiArCj4gIFRF U1RTX3Byb2dzICs9IGdlbV93b3JrYXJvdW5kcwo+ICBnZW1fd29ya2Fyb3VuZHNfU09VUkNFUyA9 IGk5MTUvZ2VtX3dvcmthcm91bmRzLmMKPiAgCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2Vt X3dhdGNoZG9nLmMgYi90ZXN0cy9pOTE1L2dlbV93YXRjaGRvZy5jCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjcxMTllOTg3NzcwMgo+IC0tLSAvZGV2L251bGwK PiArKysgYi90ZXN0cy9pOTE1L2dlbV93YXRjaGRvZy5jCj4gQEAgLTAsMCArMSw3MzAgQEAKPiAr LyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24KPiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0 ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCj4gIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0Cj4g bGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwKPiBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQo+IHRoZQo+ ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZwo+IGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcKPiB0aGUgbmV4dAo+ICsgKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwK PiBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+IEVY UFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRgo+IE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PCj4gRVZFTlQgU0hBTEwK PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMKPiBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKPiBBUklTSU5HCj4gKyAqIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IKPiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsjaW5j bHVkZSAiaWd0LmgiCj4gKyNpbmNsdWRlICJpZ3Rfc3lzZnMuaCIKPiArI2luY2x1ZGUgInN3X3N5 bmMuaCIKPiArCj4gKyNpbmNsdWRlIDxwdGhyZWFkLmg+Cj4gKyNpbmNsdWRlIDxmY250bC5oPgo+ ICsKPiArI2luY2x1ZGUgPHN5cy90aW1lLmg+Cj4gKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KPiAr I2luY2x1ZGUgPHN5cy9wb2xsLmg+Cj4gKyNpbmNsdWRlIDxzeXMvc2lnbmFsLmg+Cj4gKyNpbmNs dWRlICJpOTE1L2dlbV9yaW5nLmgiCj4gKwo+ICsjZGVmaW5lIE1JX1NUT1JFX1JFR0lTVEVSX01F TSAJCSgweDI0IDw8IDIzKQo+ICsjZGVmaW5lIExPQ0FMX0k5MTVfRVhFQ19CU0RfU0hJRlQJKDEz KQo+ICsjZGVmaW5lIExPQ0FMX0k5MTVfRVhFQ19CU0RfUklORzEgCSgxIDw8Cj4gTE9DQUxfSTkx NV9FWEVDX0JTRF9TSElGVCkKPiArI2RlZmluZSBMT0NBTF9JOTE1X0VYRUNfQlNEX1JJTkcyIAko MiA8PAo+IExPQ0FMX0k5MTVfRVhFQ19CU0RfU0hJRlQpCj4gKwo+ICsjZGVmaW5lIE1BWF9QUklP IExPQ0FMX0k5MTVfQ09OVEVYVF9NQVhfVVNFUl9QUklPUklUWQo+ICsjZGVmaW5lIERFRkFVTFRf UFJJTyBMT0NBTF9JOTE1X0NPTlRFWFRfREVGQVVMVF9QUklPUklUWQo+ICsjZGVmaW5lIE1JTl9Q UklPIExPQ0FMX0k5MTVfQ09OVEVYVF9NSU5fVVNFUl9QUklPUklUWQo+ICsjZGVmaW5lIEhJR0gg MQo+ICsjZGVmaW5lIExPVyAwCj4gKyNkZWZpbmUgV0FUQ0hET0dfT1ZFUl9USFJFU0hPTEQgKDIw NzAwMDApCj4gKyNkZWZpbmUgV0FUQ0hET0dfQkVMT1dfVEhSRVNIT0xEICgxMjAwMDAwKQo+ICsK PiArI2RlZmluZSBXQVRDSERPR19USFJFU0hPTEQgKDEwMDAwMDApCj4gKyNkZWZpbmUgTUFYX0VO R0lORVMgMTYKPiArI2RlZmluZSBSRU5ERVJfQ0xBU1MgMAo+ICsjZGVmaW5lIFZJREVPX0RFQ09E RV9DTEFTUyAxCj4gKyNkZWZpbmUgVklERU9fRU5IQU5DRU1FTlRfQ0xBU1MgMgo+ICsjZGVmaW5l IENPUFlfRU5HSU5FX0NMQVNTIDMKPiArI2RlZmluZSBMT0NBTF9JOTE1X0NPTlRFWFRfUEFSQU1f V0FUQ0hET0cgMHgxMAo+ICsKPiArI2RlZmluZSBHRVRfUkVTRVRfU1RBVFNfSU9DVEwgRFJNX0lP V1IoRFJNX0NPTU1BTkRfQkFTRSArIDB4MzIsCj4gc3RydWN0IGxvY2FsX2RybV9pOTE1X3Jlc2V0 X3N0YXRzKQo+ICtzdHJ1Y3QgbG9jYWxfZHJtX2k5MTVfcmVzZXRfc3RhdHMgewo+ICsJX191MzIg Y3R4X2lkOwo+ICsJX191MzIgZmxhZ3M7Cj4gKwlfX3UzMiByZXNldF9jb3VudDsKPiArCV9fdTMy IGJhdGNoX2FjdGl2ZTsKPiArCV9fdTMyIGJhdGNoX3BlbmRpbmc7Cj4gKwlfX3UzMiBwYWQ7Cj4g K307Cj4gKwo+ICtjb25zdCB1aW50NjRfdCB0aW1lb3V0XzEwMG1zID0gMTAwMDAwMDAwTEw7Cj4g K2Zsb2F0IHRpbWVkaWZmZXJlbmNlX21zZWMoc3RydWN0IHRpbWV2YWwgdDAsIHN0cnVjdCB0aW1l dmFsIHQxKTsKPiArdm9pZCBzbGVlcF9uc2VjKGludCBtcyk7Cj4gKwo+ICtzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3dhdGNoZG9nX3RpbWVvdXQgewo+ICsJdW5pb24gewo+ICsJCXN0cnVjdCB7Cj4gKwkJ CS8qCj4gKwkJCSAqIEVuZ2luZSBjbGFzcyAmIGluc3RhbmNlIHRvIGJlIGNvbmZpZ3VyZWQgb3IK PiBxdWVyaWVkLgo+ICsJCQkgKi8KPiArCQkJX191MTYgZW5naW5lX2NsYXNzOwo+ICsJCQlfX3Ux NiBpOTE1X2VuZ2luZV9jbGFzc19pbnN0YW5jZTsKPiArCQl9Owo+ICsJCS8qIEluZGV4IGJhc2Vk IGFkZHJlc3NpbmcgbW9kZSAqLwo+ICsJCV9fdTMyIGluZGV4Owo+ICsJfTsKPiArCS8qIEdQVSBF bmdpbmUgd2F0Y2hkb2cgcmVzZXRzIHRpbWVvdXQgaW4gdXMgKi8KPiArCV9fdTMyIHRpbWVvdXRf dXM7Cj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCBjbGVhcl9lcnJvcl9zdGF0ZShpbnQgZmQpCj4g K3sKPiArCWludCBkaXI7Cj4gKwo+ICsJZGlyID0gaWd0X3N5c2ZzX29wZW4oZmQpOwo+ICsKPiAr CWlmIChkaXIgPCAwKQo+ICsJCXJldHVybjsKPiArCj4gKwkvKiBBbnkgd3JpdGUgdG8gdGhlIGVy cm9yIHN0YXRlIGNsZWFycyBpdCAqLwo+ICsJaWd0X3N5c2ZzX3NldChkaXIsICJlcnJvciIsICIi KTsKPiArCWNsb3NlKGRpcik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY29udGV4dF9zZXRfd2F0 Y2hkb2coaW50IGZkLCB1bnNpZ25lZCBlbmdpbmVfaWQsCj4gKwkJCQkgY29uc3QgY2hhciAqZW5n aW5lX25hbWUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGN0 eF9pZCwgdW5zaWduZWQKPiB0aHJlc2hvbGQpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1f d2F0Y2hkb2dfdGltZW91dAo+IGVuZ2luZXNfdGhyZXNob2xkW01BWF9FTkdJTkVTXTsKPiArCXN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBhcmcgPSB7Cj4gKwkJLnBhcmFtID0gTE9D QUxfSTkxNV9DT05URVhUX1BBUkFNX1dBVENIRE9HLAo+ICsJCS5jdHhfaWQgPSBjdHhfaWQsCj4g KwkJLnNpemUgPSBzaXplb2YoZW5naW5lc190aHJlc2hvbGQpLAo+ICsJCS52YWx1ZSA9ICh1aW50 NjRfdCkmZW5naW5lc190aHJlc2hvbGQKPiArCX07Cj4gKwo+ICsJc3dpdGNoIChlbmdpbmVfaWQg JiBJOTE1X0VYRUNfUklOR19NQVNLKSB7Cj4gKwljYXNlIEk5MTVfRVhFQ19SRU5ERVI6Cj4gKwkJ ZW5naW5lc190aHJlc2hvbGRbMF0udGltZW91dF91cyA9IHRocmVzaG9sZDsKPiArCQllbmdpbmVz X3RocmVzaG9sZFswXS5lbmdpbmVfY2xhc3MgPSBSRU5ERVJfQ0xBU1M7Cj4gKwkJZW5naW5lc190 aHJlc2hvbGRbMF0uaTkxNV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgPSAwOwo+ICsJCWJyZWFrOwo+ ICsJY2FzZSBJOTE1X0VYRUNfQkxUOgo+ICsJCWlmIChfX2dlbV9jb250ZXh0X2dldF9wYXJhbShm ZCwgJmFyZykgPT0gLUVOT0RFVikKPiArCQkJcmV0dXJuIC1FTk9ERVY7Cj4gKwkJZWxzZQo+ICsJ CQllbmdpbmVzX3RocmVzaG9sZFszXS50aW1lb3V0X3VzID0gdGhyZXNob2xkOwo+ICsJCQllbmdp bmVzX3RocmVzaG9sZFszXS5lbmdpbmVfY2xhc3MgPQo+IENPUFlfRU5HSU5FX0NMQVNTOwo+ICsJ CQllbmdpbmVzX3RocmVzaG9sZFszXS5pOTE1X2VuZ2luZV9jbGFzc19pbnN0YW5jZQo+ID0gMDsK PiArCQlicmVhazsKPiArCWNhc2UgSTkxNV9FWEVDX0JTRDoKPiArCQllbmdpbmVzX3RocmVzaG9s ZFsxXS50aW1lb3V0X3VzID0gdGhyZXNob2xkOwo+ICsJCWVuZ2luZXNfdGhyZXNob2xkWzFdLmVu Z2luZV9jbGFzcyA9IFZJREVPX0RFQ09ERV9DTEFTUzsKPiArCQllbmdpbmVzX3RocmVzaG9sZFsx XS5pOTE1X2VuZ2luZV9jbGFzc19pbnN0YW5jZSA9IDA7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEk5 MTVfRVhFQ19WRUJPWDoKPiArCQllbmdpbmVzX3RocmVzaG9sZFsyXS50aW1lb3V0X3VzID0gdGhy ZXNob2xkOwo+ICsJCWVuZ2luZXNfdGhyZXNob2xkWzJdLmVuZ2luZV9jbGFzcyA9Cj4gVklERU9f RU5IQU5DRU1FTlRfQ0xBU1M7Cj4gKwkJZW5naW5lc190aHJlc2hvbGRbMl0uaTkxNV9lbmdpbmVf Y2xhc3NfaW5zdGFuY2UgPSAwOwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlicmVhazsK PiArCX0KPiArCj4gKwlnZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpOwo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgZG91YmxlIGNsb2NrcmF0ZShpbnQgaTkxNSwgaW50 IHJlZykKPiArewo+ICsJdm9sYXRpbGUgdWludDMyX3QgKm1taW87Cj4gKwl1aW50MzJfdCByX3N0 YXJ0LCByX2VuZDsKPiArCXN0cnVjdCB0aW1lc3BlYyB0djsKPiArCXVpbnQ2NF90IHRfc3RhcnQs IHRfZW5kOwo+ICsJdWludDY0X3QgZWxhcHNlZDsKPiArCWludCBjc190aW1lc3RhbXBfZnJlcTsK PiArCWRybV9pOTE1X2dldHBhcmFtX3QgZ3AgPSB7Cj4gKwkJLnZhbHVlID0gJmNzX3RpbWVzdGFt cF9mcmVxLAo+ICsJCS5wYXJhbSA9IEk5MTVfUEFSQU1fQ1NfVElNRVNUQU1QX0ZSRVFVRU5DWSwK PiArCX07Cj4gKwo+ICsJaWYgKGlndF9pb2N0bChpOTE1LCBEUk1fSU9DVExfSTkxNV9HRVRQQVJB TSwgJmdwKSA9PSAwKQo+ICsJCXJldHVybiBjc190aW1lc3RhbXBfZnJlcTsKPiArCj4gKwltbWlv ID0gKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlv ICsKPiByZWcpOwo+ICsKPiArCXRfc3RhcnQgPSBpZ3RfbnNlY19lbGFwc2VkKCZ0dik7Cj4gKwly X3N0YXJ0ID0gKm1taW87Cj4gKwllbGFwc2VkID0gaWd0X25zZWNfZWxhcHNlZCgmdHYpIC0gdF9z dGFydDsKPiArCj4gKwl1c2xlZXAoMTAwMCk7Cj4gKwo+ICsJdF9lbmQgPSBpZ3RfbnNlY19lbGFw c2VkKCZ0dik7Cj4gKwlyX2VuZCA9ICptbWlvOwo+ICsJZWxhcHNlZCArPSBpZ3RfbnNlY19lbGFw c2VkKCZ0dikgLSB0X2VuZDsKPiArCj4gKwllbGFwc2VkID0gKHRfZW5kIC0gdF9zdGFydCkgKyBl bGFwc2VkIC8gMjsKPiArCXJldHVybiAocl9lbmQgLSByX3N0YXJ0KSAqIDFlOSAvIGVsYXBzZWQ7 Cj4gK30KPiArCj4gKyNkZWZpbmUgUkNTX1RJTUVTVEFNUCAoMHgyMDAwICsgMHgzNTgpCj4gK3N0 YXRpYyB2b2lkIGJhdGNoX2J1ZmZlcl90aW1lZCh1aW50MzJfdCBmZCwgdWludDMyX3QgY3R4X2lk LAo+IHVuc2lnbmVkIGV4ZWNfaWQsCj4gKwkJCQkgdWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBv ZmZzZXQsCj4gKwkJCQkgdWludDMyX3QgKmhhbmRsZSwgdWludDY0X3QgdGltZW91dCwKPiArCQkJ CSBpbnQgKmZlbmNlLCBpbnQgZmVuY2VfaW5kZXgpCj4gK3sKPiArICAgIHN0cnVjdCBkcm1faTkx NV9nZW1fZXhlY19vYmplY3QyIG9ialsyXTsKPiArICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVs b2NhdGlvbl9lbnRyeSByZWxvY1szXTsKPiArICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1 ZmZlcjIgZXhlY2J1ZjsKPiArICAgIHVpbnQzMl90IGJhdGNoWzE2XTsKPiArICAgIHVpbnQzMl90 ICpiYXRjaF9wdHI7Cj4gKyAgICB1aW50MzJfdCAqYmF0Y2hfYm9fcHRyOwo+ICsgICAgdWludDY0 X3QgZGVsdGE7Cj4gKyAgICB1aW50MzJfdCB0aW1lc3RhbXBfb2Zmc2V0Owo+ICsgICAgZmxvYXQg ZWxhcHNlZF90aW1lOwo+ICsgICAgdWludDMyX3Qgc3RhcnRfdGltZXN0YW1wLCBzdG9wX3RpbWVz dGFtcDsKPiArICAgIGNvbnN0IGludCBzdGFydF90aW1lc3RhbXBfcG9zID0gMDsKPiArICAgIGNv bnN0IGludCBzdG9wX3RpbWVzdGFtcF9wb3MgPSAxOwo+ICsgICAgZG91YmxlIHJjc19jbG9jazsK PiArICAgIGludCBpID0gMDsKPiArCj4gKyAgICBnZW1fcXVpZXNjZW50X2dwdShmZCk7Cj4gKwo+ ICsgICAgc3dpdGNoIChleGVjX2lkICYgSTkxNV9FWEVDX1JJTkdfTUFTSykgewo+ICsgICAgY2Fz ZSBJOTE1X0VYRUNfUkVOREVSOgo+ICsgICAgICAgICB0aW1lc3RhbXBfb2Zmc2V0ID0gMHgwMjM1 ODsKPiArICAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIEk5MTVfRVhFQ19CU0Q6Cj4gKyAgICAg ICAgIHRpbWVzdGFtcF9vZmZzZXQgPSAweDEyMzU4Owo+ICsgICAgICAgICBicmVhazsKPiArICAg IGNhc2UgSTkxNV9FWEVDX1ZFQk9YOgo+ICsgICAgICAgICB0aW1lc3RhbXBfb2Zmc2V0ID0gMHgx YTM1ODsKPiArICAgICAgICAgYnJlYWs7Cj4gKyAgICBkZWZhdWx0Ogo+ICsgICAgICAgIGlndF9h c3NlcnRfZigwLCAiTm8gdGltZXN0YW1wIGZvciByaW5nLiIpOwo+ICsgICAgICAgIGJyZWFrOwo+ ICsgICAgfQo+ICsKPiArICAgIG1lbXNldCgmZXhlY2J1ZiwgMCwgc2l6ZW9mKGV4ZWNidWYpKTsK PiArICAgIG1lbXNldCgmb2JqLCAwLCBzaXplb2Yob2JqKSk7Cj4gKyAgICBtZW1zZXQoJnJlbG9j LCAwLCBzaXplb2YocmVsb2MpKTsKPiArCj4gKyAgICBleGVjYnVmLmJ1ZmZlcnNfcHRyID0gdG9f dXNlcl9wb2ludGVyKG9iaik7Cj4gKwo+ICsgICAgZXhlY2J1Zi5idWZmZXJfY291bnQgPSAyOwo+ ICsgICAgZXhlY2J1Zi5mbGFncyA9IGV4ZWNfaWQgfCBJOTE1X0VYRUNfRkVOQ0VfT1VUIDsKPiAr Cj4gKyAgICBvYmpbMF0uaGFuZGxlID0gdGFyZ2V0Owo+ICsgICAgb2JqWzFdLmhhbmRsZSA9IGdl bV9jcmVhdGUoZmQsIDQwOTYpOwo+ICsgICAgb2JqWzFdLnJlbG9jYXRpb25fY291bnQgPSAzOwo+ ICsgICAgb2JqWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9jKTsKPiArCj4g KyAgICBtZW1zZXQoYmF0Y2gsIDB4YzUsIHNpemVvZihiYXRjaCkpOwo+ICsKPiArICAgIGJhdGNo W2krK10gPSBNSV9TVE9SRV9SRUdJU1RFUl9NRU0gfCAoNCAtIDIpOwo+ICsgICAgYmF0Y2hbaSsr XSA9IHRpbWVzdGFtcF9vZmZzZXQ7Cj4gKwo+ICsgICAgcmVsb2NbMF0ub2Zmc2V0ID0gaSAqIHNp emVvZih1aW50MzJfdCk7Cj4gKyAgICBiYXRjaFtpKytdID0gMHgwOwo+ICsgICAgYmF0Y2hbaSsr XSA9IDB4MDsKPiArCj4gKyAgICAvKiBGaXJzdCByZWxvY2F0aW9uIG9uIEJ1ZmZlciBPYmplY3Qg Ki8KPiArICAgIHJlbG9jWzBdLnRhcmdldF9oYW5kbGUgPSBvYmpbMF0uaGFuZGxlOwo+ICsgICAg cmVsb2NbMF0ucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQ7Cj4gKyAgICBy ZWxvY1swXS53cml0ZV9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5fQ09NTUFORDsKPiArCj4gKyAg ICByZWxvY1swXS5kZWx0YSA9IHN0YXJ0X3RpbWVzdGFtcF9wb3MgKiBzaXplb2YodWludDMyX3Qp Owo+ICsKPiArICAgIHJlbG9jWzJdLmRlbHRhID0gaSAqIHNpemVvZih1aW50MzJfdCk7Cj4gKyAg ICBiYXRjaFtpKytdID0gTUlfU1RPUkVfUkVHSVNURVJfTUVNIHwgKDQgLSAyKTsKPiArICAgIGJh dGNoW2krK10gPSB0aW1lc3RhbXBfb2Zmc2V0Owo+ICsKPiArICAgIHJlbG9jWzFdLm9mZnNldCA9 IGkgKiBzaXplb2YodWludDMyX3QpOwo+ICsgICAgYmF0Y2hbaSsrXSA9IDB4NDsKPiArICAgIGJh dGNoW2krK10gPSAweDA7Cj4gKwo+ICsgICAgLyogU2Vjb25kIHJlbG9jYXRpb24gb24gQnVmZmVy IG9iamVjdCAqLwo+ICsgICAgcmVsb2NbMV0udGFyZ2V0X2hhbmRsZSA9IG9ialswXS5oYW5kbGU7 Cj4gKyAgICByZWxvY1sxXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ09NTUFORDsK PiArICAgIHJlbG9jWzFdLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9DT01NQU5EOwo+ ICsKPiArICAgIHJlbG9jWzFdLmRlbHRhID0gc3RvcF90aW1lc3RhbXBfcG9zICogc2l6ZW9mKHVp bnQzMl90KTsKPiArCj4gKyAgICBiYXRjaFtpKytdID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwg KDEgPDwgOCkgfCAoMyAtIDIpOwo+ICsgICAgcmVsb2NbMl0ub2Zmc2V0ID0gaSAqIHNpemVvZih1 aW50MzJfdCk7Cj4gKyAgICBiYXRjaFtpKytdID0gTUlfTk9PUDsKPiArICAgIGJhdGNoW2krK10g PSBNSV9OT09QOwo+ICsKPiArICAgIGJhdGNoW2krK10gPSBNSV9CQVRDSF9CVUZGRVJfRU5EOwo+ ICsgICAgYmF0Y2hbaSsrXSA9IE1JX05PT1A7Cj4gKwo+ICsgICAgZ2VtX3dyaXRlKGZkLCBvYmpb MV0uaGFuZGxlLCAwLCAmYmF0Y2gsIHNpemVvZihiYXRjaCkpOwo+ICsKPiArICAgIHJlbG9jWzJd LnRhcmdldF9oYW5kbGUgPSBvYmpbMV0uaGFuZGxlOwo+ICsgICAgcmVsb2NbMl0ucmVhZF9kb21h aW5zID0gSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQ7Cj4gKwo+ICsgICAgZ2VtX3N5bmMoZmQsIG9i alsxXS5oYW5kbGUpOwo+ICsgICAgZXhlY2J1Zi5yc3ZkMSA9IGN0eF9pZDsKPiArICAgIGV4ZWNi dWYucnN2ZDIgPSAtMTsKPiArCj4gKyAgICBnZW1fZXhlY2J1Zl93cihmZCwgJmV4ZWNidWYpOwo+ ICsKPiArICAgIGJhdGNoX3B0ciA9IGdlbV9tbWFwX19jcHUoZmQsIG9ialsxXS5oYW5kbGUsIDAs IDQwOTYsCj4gUFJPVF9SRUFEKTsKPiArICAgIGdlbV9zZXRfZG9tYWluKGZkLCBvYmpbMV0uaGFu ZGxlLCBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKPiArCj4gKyAgICAvKiBSZWFkIHZhbHVlcyBm cm9tIEJPICovCj4gKyAgICBiYXRjaF9ib19wdHIgPSBnZW1fbW1hcF9fY3B1KGZkLCBvYmpbMF0u aGFuZGxlLCAwLCA0MDk2LAo+IFBST1RfUkVBRCk7Cj4gKyAgICBnZW1fc2V0X2RvbWFpbihmZCwg b2JqWzBdLmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0NQVSwgMCk7Cj4gKwo+ICsgICAgc3RhcnRf dGltZXN0YW1wID0gYmF0Y2hfYm9fcHRyW3N0YXJ0X3RpbWVzdGFtcF9wb3NdOwo+ICsgICAgc3Rv cF90aW1lc3RhbXAgPSBiYXRjaF9ib19wdHJbc3RvcF90aW1lc3RhbXBfcG9zXTsKPiArCj4gKyAg ICBkZWx0YSA9ICh1aW50NjRfdClzdG9wX3RpbWVzdGFtcCAtICh1aW50NjRfdClzdGFydF90aW1l c3RhbXA7Cj4gKwo+ICsgICAgZGVsdGEgKz0gKGRlbHRhID49IDApID8gMCA6IDB4RkZGRkZGRkY7 Cj4gKwo+ICsgICAgcmNzX2Nsb2NrID0gY2xvY2tyYXRlKGZkLCBSQ1NfVElNRVNUQU1QKTsKPiAr ICAgIGlndF9pbmZvKCJSQ1MgdGltZXN0YW1wIGNsb2NrOiAlLjBmS0h6LCAlLjFmbnNcbiIsIHJj c19jbG9jayAvCj4gMWUzLCAxZTkgLyByY3NfY2xvY2spOwo+ICsgICAgcmNzX2Nsb2NrID0gMWU5 IC8gcmNzX2Nsb2NrOwo+ICsgICAgZWxhcHNlZF90aW1lID0gZGVsdGEgKiByY3NfY2xvY2s7IC8v MTBeLTkgW3NdCj4gKyAgICBlbGFwc2VkX3RpbWUgLz0gMTAwMDsgLy8xMF4tNiBbc10KPiArICAg IGVsYXBzZWRfdGltZSAvPSAxMDAwOyAvLzEwXi0zIFtzXQo+ICsKPiArICAgIGlmIChkZWx0YSA8 PSAwKQo+ICsgICAgICAgIGlndF9hc3NlcnRfZigwLCAiTmVnYXRpdmUgdGltZSBlbGFwc2VkISIp Owo+ICsKPiArICAgIHByaW50ZigiRWxhcHNlZCB0aW1lIGluIHN0YXJ0X3RpbWVzdGFtcDogJWxs dVxuIiwKPiAodWludDY0X3Qpc3RhcnRfdGltZXN0YW1wKTsKPiArICAgIHByaW50ZigiRWxhcHNl ZCB0aW1lIGluIHN0b3BfdGltZXN0YW1wOiAlbGx1XG4iLAo+ICh1aW50NjRfdClzdG9wX3RpbWVz dGFtcCk7Cj4gKyAgICBwcmludGYoIkVsYXBzZWQgdGltZSBpbiBtaWxsaXNlY29uZHM6ICVmXG4i LCBlbGFwc2VkX3RpbWUpOwo+ICsgICAgZmxvYXQgdGhyID0gV0FUQ0hET0dfVEhSRVNIT0xEOwo+ ICsgICAgcHJpbnRmKCJUb3RhbCBUaW1lb3V0IGR1cmluZyB0aGUgaGFuZzogJWZcbiIsIGVsYXBz ZWRfdGltZSAtCj4gdGhyLzEwMDAuICk7Cj4gKwo+ICsgICAgZmVuY2VbZmVuY2VfaW5kZXhdID0g ZXhlY2J1Zi5yc3ZkMiA+PiAzMjsKPiArCj4gKyAgICBnZW1fY2xvc2UoZmQsIG9ialsxXS5oYW5k bGUpOwo+ICsgICAgZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCBiYXRjaF9idWZmZXJfZmFjdG9yeSh1aW50MzJfdCBmZCwgdWludDMyX3QgY3R4X2lkLAo+IHVu c2lnbmVkIGV4ZWNfaWQsCj4gKwkJCQkgdWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBvZmZzZXQs Cj4gKwkJCQkgdWludDMyX3QgKmhhbmRsZSwgdWludDY0X3QgdGltZW91dCwKPiArCQkJCSBpbnQg KmZlbmNlLCBpbnQgZmVuY2VfaW5kZXgpCj4gK3sKPiArICAgIHN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY19vYmplY3QyIG9ialsyXTsKPiArICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlv bl9lbnRyeSByZWxvYzsKPiArICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhl Y2J1ZjsKPiArICAgIGlndF9zcGluX3QgKnNwaW4gPSBOVUxMOwo+ICsgICAgY29uc3QgdWludDMy X3QgYmJlID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKPiArICAgIGludCBpID0gMDsKPiArCj4gKyAg ICBnZW1fcXVpZXNjZW50X2dwdShmZCk7Cj4gKwo+ICsgICAgbWVtc2V0KCZleGVjYnVmLCAwLCBz aXplb2YoZXhlY2J1ZikpOwo+ICsgICAgbWVtc2V0KCZvYmosIDAsIHNpemVvZihvYmopKTsKPiAr ICAgIG1lbXNldCgmcmVsb2MsIDAsIHNpemVvZihyZWxvYykpOwo+ICsKPiArICAgIGV4ZWNidWYu YnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIob2JqKTsKPiArCj4gKyAgICBleGVjYnVmLmJ1 ZmZlcl9jb3VudCA9IDI7Cj4gKyAgICBleGVjYnVmLmZsYWdzID0gZXhlY19pZCB8IEk5MTVfRVhF Q19GRU5DRV9PVVQgOwo+ICsKPiArICAgIG9ialswXS5oYW5kbGUgPSB0YXJnZXQ7Cj4gKyAgICBv YmpbMV0uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7Cj4gKwo+ICsgICAgb2JqWzFdLnJl bG9jYXRpb25fY291bnQgPSAxOwo+ICsgICAgb2JqWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3Bv aW50ZXIoJnJlbG9jKTsKPiArCj4gKyAgICByZWxvYy50YXJnZXRfaGFuZGxlID0gb2JqWzBdLmhh bmRsZTsKPiArICAgIHJlbG9jLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DT01NQU5E Owo+ICsgICAgcmVsb2Mud3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQ7Cj4g KyAgICByZWxvYy5kZWx0YSA9IG9mZnNldCAqIHNpemVvZih1aW50MzJfdCk7Cj4gKwo+ICsgICAg cmVsb2Mub2Zmc2V0ID0gaSAqIHNpemVvZih1aW50MzJfdCk7Cj4gKyAgICBnZW1fd3JpdGUoZmQs IG9ialsxXS5oYW5kbGUsIDAsICZiYmUsIHNpemVvZihiYmUpKTsKPiArCj4gKyAgICBnZW1fc3lu YyhmZCwgb2JqWzFdLmhhbmRsZSk7Cj4gKyAgICBleGVjYnVmLnJzdmQxID0gY3R4X2lkOwo+ICsg ICAgZXhlY2J1Zi5yc3ZkMiA9IC0xOwo+ICsKPiArICAgIHNwaW4gPSBpZ3Rfc3Bpbl9uZXcoZmQs Cj4gKwkJCS5kZXBlbmRlbmN5ID0gb2JqWzBdLmhhbmRsZSwKPiArCQkJLmVuZ2luZSA9IGV4ZWNf aWQsCj4gKwkJCS5mbGFncyA9IElHVF9TUElOX0ZFTkNFX09VVCk7Cj4gKyAgICBpZ3RfYXNzZXJ0 KHNwaW4tPm91dF9mZW5jZSAhPSAtMSk7Cj4gKyAgICBpZ3Rfc3Bpbl9zZXRfdGltZW91dChzcGlu LCB0aW1lb3V0KTsKPiArICAgIGlndF9hc3NlcnQoZ2VtX2JvX2J1c3koZmQsIG9ialswXS5oYW5k bGUpKTsKPiArCj4gKyAgICBnZW1fZXhlY2J1Zl93cihmZCwgJmV4ZWNidWYpOwo+ICsgICAgaWd0 X3NwaW5fZnJlZShmZCwgc3Bpbik7Cj4gKwo+ICsgICAgZmVuY2VbZmVuY2VfaW5kZXhdID0gc3Bp bi0+b3V0X2ZlbmNlOy8vZXhlY2J1Zi5yc3ZkMiA+PiAzMjsKPiArCj4gKyAgICBnZW1fY2xvc2Uo ZmQsIG9ialsxXS5oYW5kbGUpOwo+ICsgICAgZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBpbmplY3RfaGFuZyh1aW50MzJfdCBmZCwgdW5zaWduZWQgZW5naW5l X2lkLCB1aW50MzJfdAo+IGN0eF9pZCwKPiArCQkJIHVuc2lnbmVkIGZsYWdzKQo+ICt7Cj4gKwlp Z3RfaGFuZ190IGhhbmc7Cj4gKwloYW5nID0gaWd0X2hhbmdfY3R4KGZkLCBjdHhfaWQsIGVuZ2lu ZV9pZCwgZmxhZ3MpOwo+ICsJZ2VtX3N5bmMoZmQsIGhhbmcuc3Bpbi0+aGFuZGxlKTsKPiArfQo+ ICsKPiArLyogCj4gKyAqIFRlc3QjMTogV3JpdGUgdGhlIGluaXRpYWwgdGltZXN0YW1wIHRvIHNj cmF0Y2gsIGFuZCB3cml0ZSBhCj4gc2Vjb25kCj4gKyAqIHRpbWVzdGFtcCBhbmQgcmVjdXJzZSBi YWNrIHRvIHdyaXRpbmcgdGhlIHNlY29uZCB0aW1lc3RhbXAuCj4gKyAqIENvbXBhcmUgdGhlIHR3 byB0aW1lc3RhbXBzIHRvIHNlZSBob3cgbG9uZyBpdCBleGVjdXRlZCBmb3IuIAo+ICsgKi8KPiAr c3RhdGljIHZvaWQgbG9uZ19iYXRjaF90ZXN0MShpbnQgZmQsIGludCBwcmlvMSwgaW50IHByaW8y LCBpbnQKPiByZXNldF9jdHgxLAo+ICsJCQlpbnQgcmVzZXRfY3R4MiwgdW5zaWduZWQgdGhyZXNo b2xkKQo+ICt7Cj4gKwl1bnNpZ25lZCBlbmdpbmVfaWQgPSAwOwo+ICsJdW5zaWduZWQgbmVuZ2lu ZSA9IDA7Cj4gKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwo+ICsJc3RydWN0 IHsKPiArCQl1aW50MzJfdCBjdHhbTUFYX0VOR0lORVNdOwo+ICsJCXVpbnQzMl90IHNjcmF0Y2hb TUFYX0VOR0lORVNdOwo+ICsJfSBib1syXTsKPiArCWludCAqZmVuY2UsIGkgPSAwOwo+ICsJY29u c3QgdWludDY0X3QgYmF0Y2hfdGltZW91dF9tcyA9IHRpbWVvdXRfMTAwbXMgKiA0Owo+ICsKPiAr CWZlbmNlID0gbWFsbG9jKHNpemVvZihpbnQpICogTUFYX0VOR0lORVMpOwo+ICsJaWd0X2Fzc2Vy dChmZW5jZSk7Cj4gKwo+ICsJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZmQsIGVfKSB7Cj4g KwkJZW5naW5lX2lkID0gZV8tPmZsYWdzOwo+ICsKPiArCQlib1swXS5zY3JhdGNoW25lbmdpbmVd ID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7Cj4gKwkJYm9bMF0uY3R4W25lbmdpbmVdID0gZ2VtX2Nv bnRleHRfY3JlYXRlKGZkKTsKPiArCQlnZW1fY29udGV4dF9zZXRfcHJpb3JpdHkoZmQsIGJvWzBd LmN0eFtuZW5naW5lXSwKPiBwcmlvMSk7Cj4gKwo+ICsJCWlmKG5lbmdpbmUgPCAxKXsKPiArCQlp ZiAoY29udGV4dF9zZXRfd2F0Y2hkb2coZmQsIGVuZ2luZV9pZCwgZV8tPm5hbWUsCj4gKwkJCQkJ IGJvWzBdLmN0eFtuZW5naW5lXSwKPiArCQkJCQkgdGhyZXNob2xkKSA9PSAtRU5PREVWKSB7Cj4g KwkJCWlndF9pbmZvKCJObyBzdXBwb3J0IGZvciBncHUgaC93IHdhdGNoZG9nIG9uCj4gJXNcbiIs Cj4gKwkJCSBlXy0+bmFtZSk7Cj4gKwkJCWdvdG8gc2tpcF9jYXNlOwo+ICsJCX0KPiArCj4gKwkJ YmF0Y2hfYnVmZmVyX3RpbWVkKGZkLCBib1swXS5jdHhbbmVuZ2luZV0sIGVuZ2luZV9pZCwKPiAr CQkJCSBib1swXS5zY3JhdGNoW25lbmdpbmVdLCAwLCBOVUxMLAo+ICsJCQkJIGJhdGNoX3RpbWVv dXRfbXMsIGZlbmNlLCBuZW5naW5lKTsKPiArCj4gKwkJaWd0X2Fzc2VydF9lcShzeW5jX2ZlbmNl X3N0YXR1cygqZmVuY2UpLCAtRUlPKTsKPiArCQlpZ3RfaW5mbygiVGVzdCAjMTogYmF0Y2hfYnVm ZmVyX3RpbWVkIC0tPiBleGVjdXRlIG9uCj4gJXNcbiIsZV8tPm5hbWUpOwo+ICsJCX0KPiArc2tp cF9jYXNlOgo+ICsJCW5lbmdpbmUrKzsKPiArCX0KPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgLypu ZW5naW5lKi8xOyBpKyspIHsKPiArCQljbG9zZShmZW5jZVtpXSk7Cj4gKwkJZ2VtX2NvbnRleHRf ZGVzdHJveShmZCwgYm9bMF0uY3R4W2ldKTsKPiArCQlnZW1fY2xvc2UoZmQsIGJvWzBdLnNjcmF0 Y2hbaV0pOwo+ICsJfQo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBUZXN0IzI6IENyZWF0ZSBzb21lIHdv cmsgYW5kIGxldCBpdCBydW4gb24gYWxsIGVuZ2luZXMKPiArICovCj4gK3N0YXRpYyB2b2lkIGxv bmdfYmF0Y2hfdGVzdDIoaW50IGZkLCBpbnQgcHJpbzEsIGludCBwcmlvMiwgaW50Cj4gcmVzZXRf Y3R4MSwKPiArCQkJaW50IHJlc2V0X2N0eDIsIHVuc2lnbmVkIHRocmVzaG9sZCkKPiArewo+ICsJ dW5zaWduZWQgZW5naW5lX2lkID0gMDsKPiArCXVuc2lnbmVkIG5lbmdpbmUgPSAwOwo+ICsJc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsKPiArCXN0cnVjdCB7Cj4gKwkJdWludDMy X3QgY3R4W01BWF9FTkdJTkVTXTsKPiArCQl1aW50MzJfdCBzY3JhdGNoW01BWF9FTkdJTkVTXTsK PiArCX0gYm9bMl07Cj4gKwlpbnQgKmZlbmNlLCBpID0gMDsKPiArCWNvbnN0IHVpbnQ2NF90IGJh dGNoX3RpbWVvdXRfbXMgPSB0aW1lb3V0XzEwMG1zICogNDsKPiArCj4gKwlmZW5jZSA9IG1hbGxv YyhzaXplb2YoaW50KSAqIE1BWF9FTkdJTkVTKTsKPiArCWlndF9hc3NlcnQoZmVuY2UpOwo+ICsK PiArCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlXykgewo+ICsJCWVuZ2luZV9pZCA9 IGVfLT5mbGFnczsKPiArCj4gKwkJYm9bMV0uc2NyYXRjaFtuZW5naW5lXSA9IGdlbV9jcmVhdGUo ZmQsIDQwOTYpOwo+ICsJCWJvWzFdLmN0eFtuZW5naW5lXSA9IGdlbV9jb250ZXh0X2NyZWF0ZShm ZCk7Cj4gKwkJZ2VtX2NvbnRleHRfc2V0X3ByaW9yaXR5KGZkLCBib1sxXS5jdHhbbmVuZ2luZV0s Cj4gcHJpbzIpOwo+ICsJCWJhdGNoX2J1ZmZlcl9mYWN0b3J5KGZkLCBib1sxXS5jdHhbbmVuZ2lu ZV0sIGVuZ2luZV9pZCwKPiArCQkJCSBib1sxXS5zY3JhdGNoW25lbmdpbmVdLCAwLCBOVUxMLAo+ ICsJCQkJIGJhdGNoX3RpbWVvdXRfbXMsIGZlbmNlLCBuZW5naW5lKTsKPiArCj4gKwkJYm9bMF0u c2NyYXRjaFtuZW5naW5lXSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+ICsJCWJvWzBdLmN0eFtu ZW5naW5lXSA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7Cj4gKwkJZ2VtX2NvbnRleHRfc2V0X3By aW9yaXR5KGZkLCBib1swXS5jdHhbbmVuZ2luZV0sCj4gcHJpbzEpOwo+ICsJCWJhdGNoX2J1ZmZl cl9mYWN0b3J5KGZkLCBib1swXS5jdHhbbmVuZ2luZV0sIGVuZ2luZV9pZCwKPiArCQkJCSBib1sw XS5zY3JhdGNoW25lbmdpbmVdLCAwLCBOVUxMLAo+ICsJCQkJIGJhdGNoX3RpbWVvdXRfbXMsIGZl bmNlLCBuZW5naW5lKTsKPiArCQlpZ3RfaW5mbygiVGVzdCAjMjogY3R4MS9jdHgyIC0tPiBleGVj dXRlIG9uICVzIgo+ICsJCQkiIHdpdGggZmVuY2U6ICVkXG4iLGVfLT5uYW1lLAo+IHN5bmNfZmVu Y2Vfc3RhdHVzKCpmZW5jZSkpOwo+ICsJCW5lbmdpbmUrKzsKPiArCX0KPiArCj4gKwlmb3IgKGkg PSAwOyBpIDwgbmVuZ2luZTsgaSsrKSB7Cj4gKwkJY2xvc2UoZmVuY2VbaV0pOwo+ICsJCWdlbV9j b250ZXh0X2Rlc3Ryb3koZmQsIGJvWzBdLmN0eFtpXSk7Cj4gKwkJZ2VtX2NvbnRleHRfZGVzdHJv eShmZCwgYm9bMV0uY3R4W2ldKTsKPiArCQlnZW1fY2xvc2UoZmQsIGJvWzBdLnNjcmF0Y2hbaV0p Owo+ICsJCWdlbV9jbG9zZShmZCwgYm9bMV0uc2NyYXRjaFtpXSk7Cj4gKwl9Cj4gK30KPiArCj4g K3ZvaWQgc2xlZXBfbnNlYyhpbnQgbXMpIHsKPiArCXN0cnVjdCB0aW1lc3BlYyByZXEgPSB7MH07 Cj4gKwlyZXEudHZfc2VjID0gMDsKPiArCXJlcS50dl9uc2VjID0gbXMgKiAxMDAwMDAwTDsKPiAr CW5hbm9zbGVlcCgmcmVxLCAoc3RydWN0IHRpbWVzcGVjICopTlVMTCk7Cj4gK30KPiArCj4gKy8q Cj4gKyAqIFRlc3QjMzogU3VibWl0IGEgbG9uZyBiYXRjaCBhbmQgYWZ0ZXIgaGFsZiBvZiB0aGUg ZXhwZWN0ZWQKPiBydW50aW1lCj4gKyAqIHN1Ym1pdCBhIGhpZ2hlciBwcmlvcml0eSBiYXRjaCBh bmQgdGhlbiB0cnkgdG8gY2FuY2VsIHRoZQo+IGV4ZWN1dGlvbgo+ICsgKi8KPiArc3RhdGljIHZv aWQgbG9uZ19iYXRjaF90ZXN0MyhpbnQgZmQsIGludCBwcmlvMSwgaW50IHByaW8yLCBpbnQKPiBy ZXNldF9jdHgxLAo+ICsJCQlpbnQgcmVzZXRfY3R4MiwgdW5zaWduZWQgdGhyZXNob2xkKQo+ICt7 Cj4gKwl1bnNpZ25lZCBlbmdpbmVfaWQgPSAwOwo+ICsJdW5zaWduZWQgbmVuZ2luZSA9IDA7Cj4g KwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwo+ICsJc3RydWN0IHsKPiArCQl1 aW50MzJfdCBjdHhbTUFYX0VOR0lORVNdOwo+ICsJCXVpbnQzMl90IHNjcmF0Y2hbTUFYX0VOR0lO RVNdOwo+ICsJfSBib1syXTsKPiArCWludCAqZmVuY2UsIGkgPSAwOwo+ICsJdW5zaWduZWQgZmxh Z3MgPSBIQU5HX0FMTE9XX0NBUFRVUkU7Cj4gKwljb25zdCB1aW50NjRfdCBiYXRjaF90aW1lb3V0 X21zID0gdGltZW91dF8xMDBtcyAqIDQ7Cj4gKwo+ICsJZmVuY2UgPSBtYWxsb2Moc2l6ZW9mKGlu dCkgKiBNQVhfRU5HSU5FUyk7Cj4gKwlpZ3RfYXNzZXJ0KGZlbmNlKTsKPiArCj4gKwluZW5naW5l ID0gMDsKPiArCj4gKwlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZCwgZV8pIHsKPiArCQll bmdpbmVfaWQgPSBlXy0+ZmxhZ3M7Cj4gKwo+ICsJCWJvWzFdLnNjcmF0Y2hbbmVuZ2luZV0gPSBn ZW1fY3JlYXRlKGZkLCA0MDk2KTsKPiArCQlib1sxXS5jdHhbbmVuZ2luZV0gPSBnZW1fY29udGV4 dF9jcmVhdGUoZmQpOwo+ICsJCWdlbV9jb250ZXh0X3NldF9wcmlvcml0eShmZCwgYm9bMV0uY3R4 W25lbmdpbmVdLAo+IHByaW8yKTsKPiArCQliYXRjaF9idWZmZXJfZmFjdG9yeShmZCwgYm9bMV0u Y3R4W25lbmdpbmVdLCBlbmdpbmVfaWQsCj4gKwkJCQkgYm9bMV0uc2NyYXRjaFtuZW5naW5lXSwg MCwgTlVMTCwKPiArCQkJCSBiYXRjaF90aW1lb3V0X21zLCBmZW5jZSwgbmVuZ2luZSk7Cj4gKwo+ ICsJCXNsZWVwX25zZWModGltZW91dF8xMDBtcyAqIDIpOwo+ICsKPiArCQlib1swXS5zY3JhdGNo W25lbmdpbmVdID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7Cj4gKwkJYm9bMF0uY3R4W25lbmdpbmVd ID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsKPiArCQlnZW1fY29udGV4dF9zZXRfcHJpb3JpdHko ZmQsIGJvWzBdLmN0eFtuZW5naW5lXSwKPiBwcmlvMSk7Cj4gKwkJYmF0Y2hfYnVmZmVyX2ZhY3Rv cnkoZmQsIGJvWzBdLmN0eFtuZW5naW5lXSwgZW5naW5lX2lkLAo+ICsJCQkJIGJvWzBdLnNjcmF0 Y2hbbmVuZ2luZV0sIDAsIE5VTEwsCj4gKwkJCQkgYmF0Y2hfdGltZW91dF9tcywgZmVuY2UsIG5l bmdpbmUpOwo+ICsKPiArCQlpZiAoY29udGV4dF9zZXRfd2F0Y2hkb2coZmQsIGVuZ2luZV9pZCwg ZV8tPm5hbWUsCj4gKwkJCQkJIGJvWzBdLmN0eFtuZW5naW5lXSwKPiArCQkJCQkgdGhyZXNob2xk KSA9PSAtRU5PREVWKSB7Cj4gKwkJCWlndF9pbmZvKCJObyBzdXBwb3J0IGZvciBncHUgaC93IHdh dGNoZG9nIG9uCj4gJXNcbiIsCj4gKwkJCSBlXy0+bmFtZSk7Cj4gKwkJCWdvdG8gc2tpcF9jYXNl Owo+ICsJCX0KPiArCQljbGVhcl9lcnJvcl9zdGF0ZShmZCk7Cj4gKwkJaW5qZWN0X2hhbmcoZmQs IGVuZ2luZV9pZCwgYm9bMF0uY3R4W25lbmdpbmVdLCBmbGFncyk7Cj4gKwkJLyogTm93IGNoZWNr IHRoZSBlbmdpbmUgd2FzIHJlc2V0IHN1Y2Nlc3NmdWxseSAqLwo+ICsJCS8vaWd0X2Fzc2VydF9l cShzeW5jX2ZlbmNlX3N0YXR1cygqZmVuY2UpLCAtRUlPKTsKPiArCQlpZ3RfaW5mbygiVGVzdCAj MyBjdHgxL2N0eDIgLS0+IHNldCB3YXRjaGRvZyBhbmQiCj4gKwkJCQkiIGNhbmNlbCBjdHgyIGF0 IGhhbGYgZXhwZWN0ZWQgcnVuIHdpdGgKPiBoaWdoZXIiCj4gKwkJCQkiIHByaW9yaXR5IGVuZ2lu ZTogJXMsIGZlbmNlIHN0YXR1czogJWQKPiBcbiIsCj4gKwkJCQkJZV8tPm5hbWUsCj4gc3luY19m ZW5jZV9zdGF0dXMoKmZlbmNlKSk7Cj4gK3NraXBfY2FzZToKPiArCQluZW5naW5lKys7Cj4gKwl9 Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IG5lbmdpbmU7IGkrKykgewo+ICsJCWNsb3NlKGZlbmNl W2ldKTsKPiArCQlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBib1swXS5jdHhbaV0pOwo+ICsJCWdl bV9jb250ZXh0X2Rlc3Ryb3koZmQsIGJvWzFdLmN0eFtpXSk7Cj4gKwkJZ2VtX2Nsb3NlKGZkLCBi b1swXS5zY3JhdGNoW2ldKTsKPiArCQlnZW1fY2xvc2UoZmQsIGJvWzFdLnNjcmF0Y2hbaV0pOwo+ ICsJfQo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBUZXN0IzQ6IENyZWF0ZSAyIGN0eCwgc2V0IGEgZ3B1 IHdhdGNoZG9nIHRpbWVvdXQgb24gYm90aCwKPiArICogYW5kIGVpdGhlciBleGVjdXRlIG9yIGNh bmNlbCB0aGUgZXhlY3V0aW9uLgo+ICsgKi8KPiArc3RhdGljIHZvaWQgbG9uZ19iYXRjaF90ZXN0 NChpbnQgZmQsIGludCBwcmlvMSwgaW50IHByaW8yLCBpbnQKPiByZXNldF9jdHgxLAo+ICsJCQlp bnQgcmVzZXRfY3R4MiwgdW5zaWduZWQgdGhyZXNob2xkKQo+ICt7Cj4gKwl1bnNpZ25lZCBlbmdp bmVfaWQgPSAwOwo+ICsJdW5zaWduZWQgbmVuZ2luZSA9IDA7Cj4gKwlzdHJ1Y3QgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZTIgKmVfOwo+ICsJc3RydWN0IHsKPiArCQl1aW50MzJfdCBjdHhbTUFYX0VO R0lORVNdOwo+ICsJCXVpbnQzMl90IHNjcmF0Y2hbTUFYX0VOR0lORVNdOwo+ICsJfSBib1syXTsK PiArCWludCAqZmVuY2UsIGkgPSAwOwo+ICsJdW5zaWduZWQgZmxhZ3MgPSBIQU5HX0FMTE9XX0NB UFRVUkU7Cj4gKwljb25zdCB1aW50NjRfdCBiYXRjaF90aW1lb3V0X21zID0gdGltZW91dF8xMDBt cyAqIDQ7Cj4gKwo+ICsJZmVuY2UgPSBtYWxsb2Moc2l6ZW9mKGludCkgKiBNQVhfRU5HSU5FUyk7 Cj4gKwlpZ3RfYXNzZXJ0KGZlbmNlKTsKPiArCj4gKwluZW5naW5lID0gMDsKPiArCj4gKwlfX2Zv cl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZCwgZV8pIHsKPiArCQllbmdpbmVfaWQgPSBlXy0+Zmxh Z3M7Cj4gKwo+ICsJCWJvWzFdLnNjcmF0Y2hbbmVuZ2luZV0gPSBnZW1fY3JlYXRlKGZkLCA0MDk2 KTsKPiArCQlib1sxXS5jdHhbbmVuZ2luZV0gPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOwo+ICsJ CWdlbV9jb250ZXh0X3NldF9wcmlvcml0eShmZCwgYm9bMV0uY3R4W25lbmdpbmVdLAo+IHByaW8y KTsKPiArCQliYXRjaF9idWZmZXJfZmFjdG9yeShmZCwgYm9bMV0uY3R4W25lbmdpbmVdLCBlbmdp bmVfaWQsCj4gKwkJCQkgYm9bMV0uc2NyYXRjaFtuZW5naW5lXSwgMCwgTlVMTCwKPiArCQkJCSBi YXRjaF90aW1lb3V0X21zLCBmZW5jZSwgbmVuZ2luZSk7Cj4gKwo+ICsJCWJvWzBdLnNjcmF0Y2hb bmVuZ2luZV0gPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKPiArCQlib1swXS5jdHhbbmVuZ2luZV0g PSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOwo+ICsJCWdlbV9jb250ZXh0X3NldF9wcmlvcml0eShm ZCwgYm9bMF0uY3R4W25lbmdpbmVdLAo+IHByaW8xKTsKPiArCQliYXRjaF9idWZmZXJfZmFjdG9y eShmZCwgYm9bMF0uY3R4W25lbmdpbmVdLCBlbmdpbmVfaWQsCj4gKwkJCQkgYm9bMF0uc2NyYXRj aFtuZW5naW5lXSwgMCwgTlVMTCwKPiArCQkJCSBiYXRjaF90aW1lb3V0X21zLCBmZW5jZSwgbmVu Z2luZSk7Cj4gKwo+ICsJCWlmIChjb250ZXh0X3NldF93YXRjaGRvZyhmZCwgZW5naW5lX2lkLCBl Xy0+bmFtZSwKPiArCQkJCQkgYm9bMV0uY3R4W25lbmdpbmVdLAo+ICsJCQkJCSB0aHJlc2hvbGQp ID09IC1FTk9ERVYpIHsKPiArCQkJaWd0X2luZm8oIk5vIHN1cHBvcnQgZm9yIGdwdSBoL3cgd2F0 Y2hkb2cgb24KPiAlc1xuIiwKPiArCQkJIGVfLT5uYW1lKTsKPiArCQkJZ290byBza2lwX2Nhc2U7 Cj4gKwkJfQo+ICsKPiArCQlpZiAocmVzZXRfY3R4Mikgewo+ICsJCQljbGVhcl9lcnJvcl9zdGF0 ZShmZCk7Cj4gKwkJCWluamVjdF9oYW5nKGZkLCBlbmdpbmVfaWQsIGJvWzFdLmN0eFtuZW5naW5l XSwKPiBmbGFncyk7Cj4gKwo+ICsJCQkvKiBOb3cgY2hlY2sgdGhlIGVuZ2luZSB3YXMgcmVzZXQg c3VjY2Vzc2Z1bGx5Cj4gKi8KPiArCQkJLy9pZ3RfYXNzZXJ0X2VxKCpmZW5jZSwgRUlPKTsKPiAr CQkJaWd0X2luZm8oIlRlc3QgIzQgY3R4MS9jdHgyIC0tPiBzZXQgd2F0Y2hkb2cKPiBhbmQiCj4g KwkJCQkiIGNhbmNlbCBjdHgyIG9uICVzIHdpdGggZmVuY2Ugc3RhdHVzOgo+ICVkIFxuIiwKPiAr CQkJCQllXy0+bmFtZSwKPiBzeW5jX2ZlbmNlX3N0YXR1cygqZmVuY2UpKTsKPiArCQl9Cj4gKwo+ ICsJCWNvbnRleHRfc2V0X3dhdGNoZG9nKGZkLCBlbmdpbmVfaWQsIGVfLT5uYW1lLAo+ICsJCQkJ CSBib1swXS5jdHhbbmVuZ2luZV0sCj4gKwkJCQkJIHRocmVzaG9sZCk7Cj4gKwkJaWYgKHJlc2V0 X2N0eDEpIHsKPiArCQkJY2xlYXJfZXJyb3Jfc3RhdGUoZmQpOwo+ICsJCQlpbmplY3RfaGFuZyhm ZCwgZW5naW5lX2lkLCBib1swXS5jdHhbbmVuZ2luZV0sCj4gZmxhZ3MpOwo+ICsKPiArCQkJLyog Tm93IGNoZWNrIHRoZSBlbmdpbmUgd2FzIHJlc2V0IHN1Y2Nlc3NmdWxseQo+ICovCj4gKwkJCS8v aWd0X2Fzc2VydF9lcSgqZmVuY2UsIEVJTyk7Cj4gKwkJCWlndF9pbmZvKCJUZXN0ICM0OiBjdHgx L2N0eDIgLS0+IHNldCB3YXRjaGRvZwo+IGFuZCIKPiArCQkJCSIgY2FuY2VsIGN0eDEgb24gJXMg d2l0aCBmZW5jZSBzdGF0dXM6Cj4gJWRcbiIsCj4gKwkJCQllXy0+bmFtZSwgc3luY19mZW5jZV9z dGF0dXMoKmZlbmNlKSk7Cj4gKwkJfQo+ICtza2lwX2Nhc2U6Cj4gKwkJbmVuZ2luZSsrOwo+ICsJ fQo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBuZW5naW5lOyBpKyspIHsKPiArCQljbG9zZShmZW5j ZVtpXSk7Cj4gKwkJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgYm9bMF0uY3R4W2ldKTsKPiArCQln ZW1fY29udGV4dF9kZXN0cm95KGZkLCBib1sxXS5jdHhbaV0pOwo+ICsJCWdlbV9jbG9zZShmZCwg Ym9bMF0uc2NyYXRjaFtpXSk7Cj4gKwkJZ2VtX2Nsb3NlKGZkLCBib1sxXS5zY3JhdGNoW2ldKTsK PiArCX0KPiArfQo+ICsKPiAraWd0X21haW4KPiArewo+ICsJaW50IGZkOwo+ICsJdW5zaWduZWQg aW50IGk9MDsKPiArCXN0cnVjdCB7Cj4gKwkJY2hhciAqbmFtZTsKPiArCQlpbnQgcHJpb1syXTsK PiArCQlib29sIHJlc2V0WzJdOwo+ICsJCXVuc2lnbmVkIHRocmVzaG9sZDsKPiArCX0gdGVzdHNb XSA9IHsKPiArCQl7ImN0eDEtc2NyYXRjaC10aW1lc3RhbXAiLAo+ICsJCXtERUZBVUxUX1BSSU8s IERFRkFVTFRfUFJJT30sIHtmYWxzZSwgZmFsc2V9LAo+IFdBVENIRE9HX1RIUkVTSE9MRH0sCj4g KwkJeyJjdHgxLWV4ZWMtY3R4Mi1leGVjLWFsbC1lbmdpbmVzIiwKPiArCQl7REVGQVVMVF9QUklP LCBERUZBVUxUX1BSSU99LCB7ZmFsc2UsIGZhbHNlfSwKPiBXQVRDSERPR19USFJFU0hPTER9LAo+ ICsJCXsiY3R4MS1sb3ctcHJpby1leGVjLWN0eDItaGlnaC1wcmlvLXJlc2V0LWFmdGVyLWhhbGYt Cj4gdGltZS1hbGwtZW5naW5lcyIsCj4gKwkJe01BWF9QUklPLCBNSU5fUFJJT30sIHtmYWxzZSwg ZmFsc2V9LAo+IFdBVENIRE9HX1RIUkVTSE9MRH0sCj4gKwkJeyJjdHgxLXJlc2V0LWN0eDItZXhl Yy1hbGwtZW5naW5lcyIsCj4gKwkJe0RFRkFVTFRfUFJJTywgREVGQVVMVF9QUklPfSwge3RydWUs IGZhbHNlfSwKPiBXQVRDSERPR19USFJFU0hPTER9LAo+ICsJCXsiY3R4MS1yZXNldC1jdHgyLWV4 ZWMtYWxsLWVuZ2luZXMtYmVsb3ctdGhyZXNob2xkIiwKPiArCQl7REVGQVVMVF9QUklPLCBERUZB VUxUX1BSSU99LCB7dHJ1ZSwgZmFsc2V9LAo+ICsJCSBXQVRDSERPR19CRUxPV19USFJFU0hPTER9 LAo+ICsJCXsiY3R4MS1yZXNldC1jdHgyLWV4ZWMtYWxsLWVuZ2luZXMtb3Zlci10aHJlc2hvbGQi LAo+ICsJCXtERUZBVUxUX1BSSU8sIERFRkFVTFRfUFJJT30sIHt0cnVlLCBmYWxzZX0sCj4gKwkJ IFdBVENIRE9HX09WRVJfVEhSRVNIT0xEfSwKPiArCQl7ImN0eDItcmVzZXQtY3R4MS1leGVjLWFs bC1lbmdpbmVzIiwKPiArCQl7REVGQVVMVF9QUklPLCBERUZBVUxUX1BSSU99LCB7ZmFsc2UsIHRy dWV9LAo+IFdBVENIRE9HX1RIUkVTSE9MRH0sCj4gKwkJeyJjdHgyLXJlc2V0LWN0eDEtcmVzZXQt YWxsLWVuZ2luZXMiLAo+ICsJCXtERUZBVUxUX1BSSU8sIERFRkFVTFRfUFJJT30sIHt0cnVlLCB0 cnVlfSwKPiBXQVRDSERPR19USFJFU0hPTER9LAo+ICsJCXsiY3R4MS1oaWdoLXByaW8tcmVzZXQt Y3R4Mi1sb3ctcHJpby1leGVjLWFsbC1lbmdpbmVzIiwKPiArCQl7TUFYX1BSSU8sIE1JTl9QUklP fSwge3RydWUsIGZhbHNlfSwKPiBXQVRDSERPR19USFJFU0hPTER9LAo+ICsJCXsiY3R4MS1sb3ct cHJpby1yZXNldC1jdHgyLWhpZ2gtcHJpby1leGVjLWFsbC1lbmdpbmVzIiwKPiArCQl7TUlOX1BS SU8sIE1BWF9QUklPfSwge3RydWUsIGZhbHNlfSwKPiBXQVRDSERPR19USFJFU0hPTER9LAo+ICsJ CXsiY3R4MS1sb3ctcHJpby1yZXNldC1jdHgyLWhpZ2gtcHJpby1yZXNldC1hbGwtCj4gZW5naW5l cyIsCj4gKwkJe01JTl9QUklPLCBNQVhfUFJJT30sIHt0cnVlLCB0cnVlfSwKPiBXQVRDSERPR19U SFJFU0hPTER9LAo+ICsJfTsKPiArCj4gKwlpZ3Rfc2tpcF9vbl9zaW11bGF0aW9uKCk7Cj4gKwo+ ICsJaWd0X2ZpeHR1cmUgewo+ICsJCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7 Cj4gKwkJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKPiArCX0KPiArCj4gKwlpZ3Rfc3VidGVzdF9ncm91 cCB7Cj4gKwkJaWd0X3N1YnRlc3RfZigiJXMiLCB0ZXN0c1swXS5uYW1lKSB7Cj4gKwkJCWxvbmdf YmF0Y2hfdGVzdDEoIGZkLCB0ZXN0c1swXS5wcmlvWzBdLAo+ICsJCQkJCXRlc3RzWzBdLnByaW9b MV0sCj4gKwkJCQkJdGVzdHNbMF0ucmVzZXRbMF0sCj4gKwkJCQkJdGVzdHNbMF0ucmVzZXRbMV0s Cj4gKwkJCQkJdGVzdHNbMF0udGhyZXNob2xkKTsKPiArCQl9Cj4gKwo+ICsJCWlndF9zdWJ0ZXN0 X2YoIiVzIiwgdGVzdHNbMV0ubmFtZSkgewo+ICsJCQlsb25nX2JhdGNoX3Rlc3QyKCBmZCwgdGVz dHNbMF0ucHJpb1swXSwKPiArCQkJCQl0ZXN0c1swXS5wcmlvWzFdLAo+ICsJCQkJCXRlc3RzWzBd LnJlc2V0WzBdLAo+ICsJCQkJCXRlc3RzWzBdLnJlc2V0WzFdLAo+ICsJCQkJCXRlc3RzWzBdLnRo cmVzaG9sZCk7Cj4gKwkJfQo+ICsKPiArCQlpZ3Rfc3VidGVzdF9mKCIlcyIsIHRlc3RzWzJdLm5h bWUpIHsKPiArCQkJbG9uZ19iYXRjaF90ZXN0MyggZmQsIHRlc3RzWzFdLnByaW9bMF0sCj4gKwkJ CQkJdGVzdHNbMV0ucHJpb1sxXSwKPiArCQkJCQl0ZXN0c1sxXS5yZXNldFswXSwKPiArCQkJCQl0 ZXN0c1sxXS5yZXNldFsxXSwKPiArCQkJCQl0ZXN0c1sxXS50aHJlc2hvbGQpOwo+ICsJCX0KPiAr Cj4gKwkJZm9yKGkgPSAzOyBpIDwgQVJSQVlfU0laRSh0ZXN0cyk7IGkrKykgewo+ICsJCQlpZ3Rf c3VidGVzdF9mKCIlcyIsIHRlc3RzW2ldLm5hbWUpIHsKPiArCQkJCWxvbmdfYmF0Y2hfdGVzdDQo IGZkLCB0ZXN0c1tpXS5wcmlvWzBdLAo+ICsJCQkJCQl0ZXN0c1tpXS5wcmlvWzFdLAo+ICsJCQkJ CQl0ZXN0c1tpXS5yZXNldFswXSwKPiArCQkJCQkJdGVzdHNbaV0ucmVzZXRbMV0sCj4gKwkJCQkJ CXRlc3RzW2ldLnRocmVzaG9sZCk7Cj4gKwkJCX0KPiArCQl9Cj4gKwl9Cj4gKwo+ICsgICAgaWd0 X2ZpeHR1cmUgewo+ICsJY2xvc2UoZmQpOwo+ICsgICAgfQo+ICt9Cj4gZGlmZiAtLWdpdCBhL3Rl c3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQKPiBpbmRleCBmMTY4ZmJiYWUyYTgu LjAzMzg0MmRiYzJkMSAxMDA2NDQKPiAtLS0gYS90ZXN0cy9tZXNvbi5idWlsZAo+ICsrKyBiL3Rl c3RzL21lc29uLmJ1aWxkCj4gQEAgLTIyMCw2ICsyMjAsNyBAQCBpOTE1X3Byb2dzID0gWwo+ICAJ J2dlbV91c2VycHRyX2JsaXRzJywKPiAgCSdnZW1fdm1fY3JlYXRlJywKPiAgCSdnZW1fd2FpdCcs Cj4gKyAgICAgICAgJ2dlbV93YXRjaGRvZycsCj4gIAknZ2VtX3dvcmthcm91bmRzJywKPiAgCSdn ZW1fd3JpdGVfcmVhZF9yaW5nX3N3aXRjaCcsCj4gIAknaTkxNV9mYl90aWxpbmcnLAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5n IGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2