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 6733689DA2 for ; Tue, 16 Apr 2019 14:38:27 +0000 (UTC) Date: Tue, 16 Apr 2019 16:38:24 +0200 From: Katarzyna Dec Message-ID: <20190416143824.GI24710@kdec5-desk.ger.corp.intel.com> References: <20190325232043.7953-1-antonio.argenziano@intel.com> <20190325232043.7953-4-antonio.argenziano@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190325232043.7953-4-antonio.argenziano@intel.com> Subject: Re: [igt-dev] [RFT v4 4/6] igt/i915: Require GTT mapping to be available when needed. 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: Antonio Argenziano Cc: igt-dev@lists.freedesktop.org, Matthew Auld List-ID: T24gTW9uLCBNYXIgMjUsIDIwMTkgYXQgMDQ6MjA6NDFQTSAtMDcwMCwgQW50b25pbyBBcmdlbnpp YW5vIHdyb3RlOgo+IFdpdGggdGhlIEdUVCBhcGVydHVyZSBiZWNvbWluZyB1bmF2YWlsYWJsZSBv biBjZXJ0YWluIHBsYXRmb3JtcywgdGVzdHMKPiB0aGF0IHRhcmdldCB0aGF0IG1hcHBpbmcgbmVl ZCB0byBza2lwIGlmIHN1Y2ggbWFwcGluZyBpcyBub3QgYXZhaWxhYmxlLgo+IAo+IENjOiBLYXRh cnp5bmEgRGVjIDxrYXRhcnp5bmEuZGVjQGludGVsLmNvbT4KPiBDYzogQ2hyaXMgV2lsc29uIDxj aHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxk QGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBBbnRvbmlvIEFyZ2Vuemlhbm8gPGFudG9uaW8u YXJnZW56aWFub0BpbnRlbC5jb20+Cj4gLS0tCj4gIGxpYi9pZ3RfZHVtbXlsb2FkLmMgICAgICAg ICAgICAgICAgICAgICB8ICA0ICsrKy0KPiAgbGliL2lndF9mYi5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDUgKysrLS0KPiAgdGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYyAg ICAgICAgIHwgIDEgKwo+ICB0ZXN0cy9pOTE1L2dlbV9jdHhfc3NldS5jICAgICAgICAgICAgICAg fCAgNCArKystCj4gIHRlc3RzL2k5MTUvZ2VtX2V4ZWNfYmFzaWMuYyAgICAgICAgICAgICB8ICAx ICsKPiAgdGVzdHMvaTkxNS9nZW1fZXhlY19mYXVsdGluZ19yZWxvYy5jICAgIHwgIDIgKysKPiAg dGVzdHMvaTkxNS9nZW1fZXhlY19mbHVzaC5jICAgICAgICAgICAgIHwgIDYgKysrKysrCj4gIHRl c3RzL2k5MTUvZ2VtX2V4ZWNfcmVsb2MuYyAgICAgICAgICAgICB8ICA3ICsrKysrKysKPiAgdGVz dHMvaTkxNS9nZW1fZXhlY19zY2hlZHVsZS5jICAgICAgICAgIHwgIDUgKysrKy0KPiAgdGVzdHMv aTkxNS9nZW1fZmVuY2VfdGhyYXNoLmMgICAgICAgICAgIHwgIDYgKysrKysrCj4gIHRlc3RzL2k5 MTUvZ2VtX2d0dF9jcHVfdGxiLmMgICAgICAgICAgICB8ICAxICsKPiAgdGVzdHMvaTkxNS9nZW1f Z3R0X2hvZy5jICAgICAgICAgICAgICAgIHwgIDEgKwo+ICB0ZXN0cy9pOTE1L2dlbV9ndHRfc3Bl ZWQuYyAgICAgICAgICAgICAgfCAgMSArCj4gIHRlc3RzL2k5MTUvZ2VtX2xhcmdlb2JqZWN0LmMg ICAgICAgICAgICB8ICAyICsrCj4gIHRlc3RzL2k5MTUvZ2VtX21hZHZpc2UuYyAgICAgICAgICAg ICAgICB8ICA0ICsrKysKPiAgdGVzdHMvaTkxNS9nZW1fbW1hcF9ndHQuYyAgICAgICAgICAgICAg IHwgIDQgKysrLQo+ICB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldF9leGhhdXN0aW9uLmMgfCAg MiArKwo+ICB0ZXN0cy9pOTE1L2dlbV9tbWFwX3djLmMgICAgICAgICAgICAgICAgfCAgMiArKwo+ ICB0ZXN0cy9pOTE1L2dlbV9wZXJzaXN0ZW50X3JlbG9jcy5jICAgICAgfCAgMiArKwo+ICB0ZXN0 cy9pOTE1L2dlbV9wd3JpdGVfcHJlYWQuYyAgICAgICAgICAgfCAgNiArKysrKysKPiAgdGVzdHMv aTkxNS9nZW1fcmVsb2NfdnNfZ3B1LmMgICAgICAgICAgIHwgMjEgKysrKysrKysrKysrLS0tLS0t LS0tCj4gIHRlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMgICAgICAgICAgICB8ICAyICsrCj4g IHRlc3RzL2k5MTUvZ2VtX3NldF90aWxpbmdfdnNfZ3R0LmMgICAgICB8ICAyICsrCj4gIHRlc3Rz L2k5MTUvZ2VtX3NldF90aWxpbmdfdnNfcHdyaXRlLmMgICB8ICAyICsrCj4gIHRlc3RzL2k5MTUv Z2VtX3Nocmluay5jICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKysrKysrLS0tCj4gIHRlc3Rz L2k5MTUvZ2VtX3N0b3JlZHdfbG9vcC5jICAgICAgICAgICB8ICA5ICsrKysrKysrKwo+ICB0ZXN0 cy9pOTE1L2dlbV9zdHJlYW1pbmdfd3JpdGVzLmMgICAgICAgfCAxNiArKysrKysrKysrKysrKy0t Cj4gIHRlc3RzL2k5MTUvZ2VtX3RpbGVkX2ZlbmNlX2JsaXRzLmMgICAgICB8ICAxICsKPiAgdGVz dHMvaTkxNS9nZW1fdGlsZWRfcHJlYWRfYmFzaWMuYyAgICAgIHwgIDEgKwo+ICB0ZXN0cy9pOTE1 L2dlbV90aWxlZF9wcmVhZF9wd3JpdGUuYyAgICAgfCAgNCArKystCj4gIHRlc3RzL2k5MTUvZ2Vt X3RpbGVkX3N3YXBwaW5nLmMgICAgICAgICB8ICAyICsrCj4gIHRlc3RzL2k5MTUvZ2VtX3RpbGVk X3diLmMgICAgICAgICAgICAgICB8ICAyICsrCj4gIHRlc3RzL2k5MTUvZ2VtX3RpbGVkX3djLmMg ICAgICAgICAgICAgICB8ICAxICsKPiAgdGVzdHMvaTkxNS9nZW1fdGlsaW5nX21heF9zdHJpZGUu YyAgICAgIHwgIDMgKystCj4gIHRlc3RzL2k5MTUvZ2VtX3VzZXJwdHJfYmxpdHMuYyAgICAgICAg ICB8IDEwICsrKysrKysrKy0KPiAgdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jICAgICAgICAgICAg ICAgIHwgIDkgKysrKysrKysrCj4gIHRlc3RzL2k5MTUvaTkxNV9zdXNwZW5kLmMgICAgICAgICAg ICAgICB8ICAyICsrCj4gIHRlc3RzL2ttc19kcmF3X2NyYy5jICAgICAgICAgICAgICAgICAgICB8 ICA4ICsrKysrKy0tCj4gIHRlc3RzL2ttc19mZW5jZV9waW5fbGVhay5jICAgICAgICAgICAgICB8 ICAyICsrCj4gIHRlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jICAgICAgICB8ICAzICsr Kwo+ICB0ZXN0cy9rbXNfcHNyLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKysrCj4g IHRlc3RzL3ByaW1lX21tYXAuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICsrCj4gIHRlc3Rz L3ByaW1lX21tYXBfY29oZXJlbmN5LmMgICAgICAgICAgICB8ICAxICsKPiAgdGVzdHMvcHJpbWVf dmdlbS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKysrKysKPiAgNDQgZmlsZXMgY2hhbmdl ZCwgMTY3IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9s aWIvaWd0X2R1bW15bG9hZC5jIGIvbGliL2lndF9kdW1teWxvYWQuYwo+IGluZGV4IDQ3ZjZiOTJi Li4yZTRjMDMzNSAxMDA2NDQKPiAtLS0gYS9saWIvaWd0X2R1bW15bG9hZC5jCj4gKysrIGIvbGli L2lndF9kdW1teWxvYWQuYwo+IEBAIC0xMTcsOSArMTE3LDExIEBAIGVtaXRfcmVjdXJzaXZlX2Jh dGNoKGlndF9zcGluX3QgKnNwaW4sCj4gIAlvYmpbQkFUQ0hdLmhhbmRsZSA9IGdlbV9jcmVhdGUo ZmQsIEJBVENIX1NJWkUpOwo+ICAJYmF0Y2ggPSBfX2dlbV9tbWFwX193YyhmZCwgb2JqW0JBVENI XS5oYW5kbGUsCj4gIAkJCSAgICAgICAwLCBCQVRDSF9TSVpFLCBQUk9UX1dSSVRFKTsKPiAtCWlm ICghYmF0Y2gpCj4gKwlpZiAoIWJhdGNoKSB7Cj4gKwkJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQp Owo+ICAJCWJhdGNoID0gZ2VtX21tYXBfX2d0dChmZCwgb2JqW0JBVENIXS5oYW5kbGUsCj4gIAkJ CQkgICAgICAgCUJBVENIX1NJWkUsIFBST1RfV1JJVEUpOwo+ICsJfQo+ICAJZ2VtX3NldF9kb21h aW4oZmQsIG9ialtCQVRDSF0uaGFuZGxlLAo+ICAJCQlJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1 X0dFTV9ET01BSU5fR1RUKTsKPiAgCWV4ZWNidWYtPmJ1ZmZlcl9jb3VudCsrOwo+IGRpZmYgLS1n aXQgYS9saWIvaWd0X2ZiLmMgYi9saWIvaWd0X2ZiLmMKPiBpbmRleCBiYWQxZDFmYi4uMDY4Y2Q3 ZmUgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9mYi5jCj4gKysrIGIvbGliL2lndF9mYi5jCj4gQEAg LTE3NDYsMTAgKzE3NDYsMTEgQEAgc3RhdGljIHZvaWQgKm1hcF9ibyhpbnQgZmQsIHN0cnVjdCBp Z3RfZmIgKmZiKQo+ICAJaWYgKGZiLT5pc19kdW1iKQo+ICAJCXB0ciA9IGttc3Rlc3RfZHVtYl9t YXBfYnVmZmVyKGZkLCBmYi0+Z2VtX2hhbmRsZSwgZmItPnNpemUsCj4gIAkJCQkJICAgICAgUFJP VF9SRUFEIHwgUFJPVF9XUklURSk7Cj4gLQllbHNlIGlmIChpc19pOTE1X2RldmljZShmZCkpCj4g KwllbHNlIGlmIChpc19pOTE1X2RldmljZShmZCkpIHsKPiArCQlnZW1fcmVxdWlyZV9tbWFwX2d0 dChmZCk7Cj4gIAkJcHRyID0gZ2VtX21tYXBfX2d0dChmZCwgZmItPmdlbV9oYW5kbGUsIGZiLT5z aXplLAo+ICAJCQkJICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwpJIHdhc24ndCBhYmxlIHRv IGVhc2lseSBhcHBseSB0aGlzIHBhdGNoIHNlZSBob3cgaXQgbG9va3MgaW4gdGhlIGNvZGUsIGJ1 dCBmcm9tCmhlcmUgaXQgaXMgbGlrZSBjbG9zaW5nICd9JyBpcyBtaXNzaW5nLiBQbGVhc2UgZG91 YmxlIGNoZWNrIDopCj4gLQllbHNlIGlmIChpc192YzRfZGV2aWNlKGZkKSkKPiArCX0gZWxzZSBp ZiAoaXNfdmM0X2RldmljZShmZCkpCj4gIAkJcHRyID0gaWd0X3ZjNF9tbWFwX2JvKGZkLCBmYi0+ Z2VtX2hhbmRsZSwgZmItPnNpemUsCj4gIAkJCQkgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRF KTsKPiAgCWVsc2UKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwu YyBiL3Rlc3RzL2k5MTUvZ2VtX2NvbmN1cnJlbnRfYWxsLmMKPiBpbmRleCBmNzE5YjBhMS4uZTRm YzE0MjYgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYwo+ICsr KyBiL3Rlc3RzL2k5MTUvZ2VtX2NvbmN1cnJlbnRfYWxsLmMKPiBAQCAtMTQyMiw2ICsxNDIyLDcg QEAgc3RhdGljIHZvaWQgY3B1X3JlcXVpcmUodm9pZCkKPiAgCj4gIHN0YXRpYyB2b2lkIGd0dF9y ZXF1aXJlKHZvaWQpCj4gIHsKPiArCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiAgfQo+ICAK PiAgc3RhdGljIHZvaWQgYmNzX3JlcXVpcmUodm9pZCkKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkx NS9nZW1fY3R4X3NzZXUuYyBiL3Rlc3RzL2k5MTUvZ2VtX2N0eF9zc2V1LmMKPiBpbmRleCAzYWZh NWMxNS4uYmYxYjUwZDUgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9nZW1fY3R4X3NzZXUuYwo+ ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX2N0eF9zc2V1LmMKPiBAQCAtNTI4LDggKzUyOCwxMCBAQCBp Z3RfbWFpbgo+ICAJCWlndF9zdWJ0ZXN0KCJpbnZhbGlkLXNzZXUiKQo+ICAJCQl0ZXN0X2ludmFs aWRfc3NldShmZCk7Cj4gIAo+IC0JCWlndF9zdWJ0ZXN0KCJnZ3R0LWFyZ3MiKQo+ICsJCWlndF9z dWJ0ZXN0KCJnZ3R0LWFyZ3MiKSB7Cj4gKwkJCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiAg CQkJdGVzdF9nZ3R0X2FyZ3MoZmQpOwo+ICsJCX0KPiAgCj4gIAkJaWd0X3N1YnRlc3QoImVuZ2lu ZXMiKQo+ICAJCQl0ZXN0X2VuZ2luZXMoZmQpOwo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dl bV9leGVjX2Jhc2ljLmMgYi90ZXN0cy9pOTE1L2dlbV9leGVjX2Jhc2ljLmMKPiBpbmRleCBkY2I4 Mzg2NC4uODUzNzY2NWYgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9nZW1fZXhlY19iYXNpYy5j Cj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19iYXNpYy5jCj4gQEAgLTkzLDYgKzkzLDcgQEAg c3RhdGljIHZvaWQgZ3R0KGludCBmZCwgdW5zaWduZWQgcmluZykKPiAgCXN0cnVjdCBkcm1faTkx NV9nZW1fZXhlY19vYmplY3QyICpleGVjOwo+ICAJdWludDMyX3QgaGFuZGxlOwo+ICAKPiArCWdl bV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiAgCWdlbV9yZXF1aXJlX3JpbmcoZmQsIHJpbmcpOwo+ ICAKPiAgCWhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+IGRpZmYgLS1naXQgYS90ZXN0 cy9pOTE1L2dlbV9leGVjX2ZhdWx0aW5nX3JlbG9jLmMgYi90ZXN0cy9pOTE1L2dlbV9leGVjX2Zh dWx0aW5nX3JlbG9jLmMKPiBpbmRleCA2YjA1ZTQzZi4uOWRiODBmNTQgMTAwNjQ0Cj4gLS0tIGEv dGVzdHMvaTkxNS9nZW1fZXhlY19mYXVsdGluZ19yZWxvYy5jCj4gKysrIGIvdGVzdHMvaTkxNS9n ZW1fZXhlY19mYXVsdGluZ19yZWxvYy5jCj4gQEAgLTE3Myw2ICsxNzMsOCBAQCBzdGF0aWMgdm9p ZCBydW4oaW50IG9iamVjdF9zaXplKQo+ICAKPiAgCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZF Ul9JTlRFTCk7Cj4gIAlpZ3RfcmVxdWlyZV9nZW0oZmQpOwo+ICsJZ2VtX3JlcXVpcmVfbW1hcF9n dHQoZmQpOwo+ICsKPiAgCWRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChmZCk7Cj4gIAloYW5k bGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKPiAgCXNyYyA9IGdlbV9jcmVhdGUoZmQsIG9iamVj dF9zaXplKTsKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fZXhlY19mbHVzaC5jIGIvdGVz dHMvaTkxNS9nZW1fZXhlY19mbHVzaC5jCj4gaW5kZXggZjgyMGIyYTguLjI5YjEzODAzIDEwMDY0 NAo+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfZmx1c2guYwo+ICsrKyBiL3Rlc3RzL2k5MTUv Z2VtX2V4ZWNfZmx1c2guYwo+IEBAIC03OSw2ICs3OSw5IEBAIHN0YXRpYyB2b2lkIHJ1bihpbnQg ZmQsIHVuc2lnbmVkIHJpbmcsIGludCBuY2hpbGQsIGludCB0aW1lb3V0LAo+ICB7Cj4gIAljb25z dCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKTsKPiAgCj4gKwlp ZiAoIShmbGFncyAmIENPSEVSRU5UKSAmJiAhKGZsYWdzICYgV0MpKQo+ICsJCWdlbV9yZXF1aXJl X21tYXBfZ3R0KGZkKTsKPiArCj4gIAkvKiBUaGUgY3J1eCBvZiB0aGlzIHRlc3RpbmcgaXMgd2hl dGhlciB3cml0ZXMgYnkgdGhlIEdQVSBhcmUgY29oZXJlbnQKPiAgCSAqIGZyb20gdGhlIENQVS4K PiAgCSAqCj4gQEAgLTU4Niw2ICs1ODksNyBAQCBpZ3RfbWFpbgo+ICAJCWZkID0gZHJtX29wZW5f ZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4gIAkJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKPiAgCQlnZW1f cmVxdWlyZV9tbWFwX3djKGZkKTsKPiArCQlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7CklzIG1t YXBfZ3R0IGluIGNvbmZsaWN0IHdpdGggbW1hcF93YyAod2UgdXNlIGJvdGggaGVyZSk/IE9yIEkg YW0gd3Jvbmc/Cj4gIAkJaWd0X3JlcXVpcmUoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgMCkpOwo+ ICAJCWlndF9pbmZvKCJIYXMgTExDPyAlc1xuIiwgeWVzbm8oZ2VtX2hhc19sbGMoZmQpKSk7Cj4g IAo+IEBAIC02MTQsMTEgKzYxOCwxMyBAQCBpZ3RfbWFpbgo+ICAJCQkJICAgICAgYi0+bmFtZSwK PiAgCQkJCSAgICAgIGUtPm5hbWUpCj4gIAkJCQliYXRjaChmZCwgcmluZywgbmNwdXMsIHRpbWVv dXQsIGItPm1vZGUsIDApOwo+ICsKPiAgCQkJaWd0X3N1YnRlc3RfZigiJXNiYXRjaC0lcy0lcy13 YiIsCj4gIAkJCQkgICAgICBiID09IGJhdGNoZXMgJiYgZS0+ZXhlY19pZCA9PSAwID8gImJhc2lj LSIgOiAiIiwKPiAgCQkJCSAgICAgIGItPm5hbWUsCj4gIAkJCQkgICAgICBlLT5uYW1lKQo+ICAJ CQkJYmF0Y2goZmQsIHJpbmcsIG5jcHVzLCB0aW1lb3V0LCBiLT5tb2RlLCBDT0hFUkVOVCk7Cj4g Kwo+ICAJCQlpZ3Rfc3VidGVzdF9mKCIlc2JhdGNoLSVzLSVzLWNtZCIsCj4gIAkJCQkgICAgICBi ID09IGJhdGNoZXMgJiYgZS0+ZXhlY19pZCA9PSAwID8gImJhc2ljLSIgOiAiIiwKPiAgCQkJCSAg ICAgIGItPm5hbWUsCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcmVsb2MuYyBi L3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcmVsb2MuYwo+IGluZGV4IDgzN2Y2MGE2Li5iYjRlZWMzMSAx MDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9leGVjX3JlbG9jLmMKPiArKysgYi90ZXN0cy9p OTE1L2dlbV9leGVjX3JlbG9jLmMKPiBAQCAtMTE1LDYgKzExNSw5IEBAIHN0YXRpYyB2b2lkIGZy b21fbW1hcChpbnQgZmQsIHVpbnQ2NF90IHNpemUsIGVudW0gbW9kZSBtb2RlKQo+ICAJICovCj4g IAlpbnRlbF9yZXF1aXJlX21lbW9yeSgyLCBzaXplLCBDSEVDS19SQU0pOwo+ICAKPiArCWlmICgo bW9kZSAmIH5STykgPT0gR1RUKQo+ICsJCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiArCj4g IAltZW1zZXQoJm9iaiwgMCwgc2l6ZW9mKG9iaikpOwo+ICAJb2JqLmhhbmRsZSA9IGdlbV9jcmVh dGUoZmQsIDQwOTYpOwo+ICAJZ2VtX3dyaXRlKGZkLCBvYmouaGFuZGxlLCAwLCAmYmJlLCBzaXpl b2YoYmJlKSk7Cj4gQEAgLTM0Miw2ICszNDUsOSBAQCBzdGF0aWMgdm9pZCBiYXNpY19yZWxvYyhp bnQgZmQsIHVuc2lnbmVkIGJlZm9yZSwgdW5zaWduZWQgYWZ0ZXIsIHVuc2lnbmVkIGZsYWdzKQo+ ICAJY29uc3QgdWludDMyX3QgYmJlID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKPiAgCXVuc2lnbmVk IGludCByZWxvY19vZmZzZXQ7Cj4gIAo+ICsJaWYgKChiZWZvcmUgfCBhZnRlcikgJiBJOTE1X0dF TV9ET01BSU5fR1RUKQo+ICsJCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKV2h5IGRvIHdlIG5l ZWQgc3VjaCBjaGVjayBoZXJlPwo+ICsKPiAgCW1lbXNldCgmb2JqLCAwLCBzaXplb2Yob2JqKSk7 Cj4gIAlvYmouaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgT0JKU1opOwo+ICAJb2JqLnJlbG9jc19w dHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9jKTsKPiBAQCAtNzExLDYgKzcxNyw3IEBAIGlndF9t YWluCj4gIAkJCQkJICAgICAgZi0+bmFtZSkgewo+ICAJCQkJCWlmICgobS0+YmVmb3JlIHwgbS0+ YWZ0ZXIpICYgSTkxNV9HRU1fRE9NQUlOX1dDKQo+ICAJCQkJCQlpZ3RfcmVxdWlyZShnZW1fbW1h cF9faGFzX3djKGZkKSk7Cj4gKwo+ICAJCQkJCWJhc2ljX3JlbG9jKGZkLCBtLT5iZWZvcmUsIG0t PmFmdGVyLCBmLT5mbGFncyk7Cj4gIAkJCQl9Cj4gIAkJCX0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMv aTkxNS9nZW1fZXhlY19zY2hlZHVsZS5jIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19zY2hlZHVsZS5j Cj4gaW5kZXggYTkzODMwMDAuLjE1Yzg0NDBmIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2k5MTUvZ2Vt X2V4ZWNfc2NoZWR1bGUuYwo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfc2NoZWR1bGUuYwo+ IEBAIC0xMjM2LDYgKzEyMzYsNyBAQCBpZ3RfbWFpbgo+ICAJCQlpZ3Rfc3VidGVzdF9mKCJpbmRl cGVuZGVudC0lcyIsIGUtPm5hbWUpIHsKPiAgCQkJCWlndF9yZXF1aXJlKGdlbV9yaW5nX2hhc19w aHlzaWNhbF9lbmdpbmUoZmQsIGUtPmV4ZWNfaWQgfCBlLT5mbGFncykpOwo+ICAJCQkJaWd0X3Jl cXVpcmUoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgZS0+ZXhlY19pZCB8IGUtPmZsYWdzKSk7Cj4g KwkJCQlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7Cj4gIAkJCQlpbmRlcGVuZGVudChmZCwgZS0+ ZXhlY19pZCB8IGUtPmZsYWdzKTsKPiAgCQkJfQo+ICAJCX0KPiBAQCAtMTMyOCw4ICsxMzI5LDEw IEBAIGlndF9tYWluCj4gIAkJCQlpZ3Rfc3VidGVzdF9mKCJ3aWRlLSVzIiwgZS0+bmFtZSkKPiAg CQkJCQl3aWRlKGZkLCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3MpOwo+ICAKPiAtCQkJCWlndF9zdWJ0 ZXN0X2YoInJlb3JkZXItd2lkZS0lcyIsIGUtPm5hbWUpCj4gKwkJCQlpZ3Rfc3VidGVzdF9mKCJy ZW9yZGVyLXdpZGUtJXMiLCBlLT5uYW1lKSB7Cj4gKwkJCQkJZ2VtX3JlcXVpcmVfbW1hcF9ndHQo ZmQpOwo+ICAJCQkJCXJlb3JkZXJfd2lkZShmZCwgZS0+ZXhlY19pZCB8IGUtPmZsYWdzKTsKPiAr CQkJCX0KPiAgCj4gIAkJCQlpZ3Rfc3VidGVzdF9mKCJzbW9rZXRlc3QtJXMiLCBlLT5uYW1lKQo+ ICAJCQkJCXNtb2tldGVzdChmZCwgZS0+ZXhlY19pZCB8IGUtPmZsYWdzLCA1KTsKPiBkaWZmIC0t Z2l0IGEvdGVzdHMvaTkxNS9nZW1fZmVuY2VfdGhyYXNoLmMgYi90ZXN0cy9pOTE1L2dlbV9mZW5j ZV90aHJhc2guYwo+IGluZGV4IDJkN2ZiMmZmLi41NTY3ZTM3ZSAxMDA2NDQKPiAtLS0gYS90ZXN0 cy9pOTE1L2dlbV9mZW5jZV90aHJhc2guYwo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX2ZlbmNlX3Ro cmFzaC5jCj4gQEAgLTIzNiw2ICsyMzYsMTIgQEAgaWd0X21haW4KPiAgewo+ICAJaWd0X3NraXBf b25fc2ltdWxhdGlvbigpOwo+ICAKPiArCWlndF9maXh0dXJlIHsKPiArCQlpbnQgZmQgPSBkcm1f b3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKPiArCQlpZ3RfcmVxdWlyZShnZW1fYXZhaWxhYmxl X2ZlbmNlcyhmZCkgPiAwKTsgLyogR1RUIG1hcHBpbmcgYXZhaWxhYmxlICovCj4gKwkJY2xvc2Uo ZmQpOwo+ICsJfQo+ICsKPiAgCWlndF9zdWJ0ZXN0KCJiby13cml0ZS12ZXJpZnktbm9uZSIpCj4g IAkJaWd0X2Fzc2VydChydW5fdGVzdCgwLCBib193cml0ZV92ZXJpZnksIEk5MTVfVElMSU5HX05P TkUsIDgwKSA9PSAwKTsKPiAgCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2d0dF9jcHVf dGxiLmMgYi90ZXN0cy9pOTE1L2dlbV9ndHRfY3B1X3RsYi5jCj4gaW5kZXggY2YzYzU0M2QuLjAy NjgyYTBkIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2d0dF9jcHVfdGxiLmMKPiArKysg Yi90ZXN0cy9pOTE1L2dlbV9ndHRfY3B1X3RsYi5jCj4gQEAgLTc5LDYgKzc5LDcgQEAgaWd0X3Np bXBsZV9tYWluCj4gIAlpZ3Rfc2tpcF9vbl9zaW11bGF0aW9uKCk7Cj4gIAo+ICAJZmQgPSBkcm1f b3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKPiArCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsK PiAgCj4gIAloYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBPQkpfU0laRSk7Cj4gIAo+IGRpZmYgLS1n aXQgYS90ZXN0cy9pOTE1L2dlbV9ndHRfaG9nLmMgYi90ZXN0cy9pOTE1L2dlbV9ndHRfaG9nLmMK PiBpbmRleCBjYTczMDY0OS4uYjJlZWE2NzkgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9nZW1f Z3R0X2hvZy5jCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fZ3R0X2hvZy5jCj4gQEAgLTE2MSw2ICsx NjEsNyBAQCBpZ3Rfc2ltcGxlX21haW4KPiAgCS8qIGNoZWNrIGZvciBhbiBpbnRlbCBncHUgYmVm b3JlIGdvaW50IG51dHMuICovCj4gIAlpbnQgZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lO VEVMKTsKPiAgCWlndF9yZXF1aXJlX2dlbShmZCk7Cj4gKwlnZW1fcmVxdWlyZV9tbWFwX2d0dChm ZCk7Cj4gIAljbG9zZShmZCk7Cj4gIAo+ICAJaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOwo+IGRp ZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9ndHRfc3BlZWQuYyBiL3Rlc3RzL2k5MTUvZ2VtX2d0 dF9zcGVlZC5jCj4gaW5kZXggM2Q3MjZjNGUuLmYxNzc4MzcwIDEwMDY0NAo+IC0tLSBhL3Rlc3Rz L2k5MTUvZ2VtX2d0dF9zcGVlZC5jCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fZ3R0X3NwZWVkLmMK PiBAQCAtMTE2LDYgKzExNiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKPiAg CWJ1ZiA9IG1hbGxvYyhzaXplKTsKPiAgCW1lbXNldChidWYsIDAsIHNpemUpOwo+ICAJZmQgPSBk cm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKPiArCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZk KTsKPiAgCj4gIAloYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBzaXplKTsKPiAgCWlndF9hc3NlcnQo aGFuZGxlKTsKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fbGFyZ2VvYmplY3QuYyBiL3Rl c3RzL2k5MTUvZ2VtX2xhcmdlb2JqZWN0LmMKPiBpbmRleCA1MTgzOTZmYS4uYTJkNDdlZGMgMTAw NjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9nZW1fbGFyZ2VvYmplY3QuYwo+ICsrKyBiL3Rlc3RzL2k5 MTUvZ2VtX2xhcmdlb2JqZWN0LmMKPiBAQCAtODQsNiArODQsOCBAQCBpZ3Rfc2ltcGxlX21haW4K PiAgCj4gIAlmZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwo+ICAKPiArCWdlbV9y ZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiArCj4gIAl0ZXN0X2xhcmdlX29iamVjdChmZCk7Cj4gIAo+ ICAJZnJlZShkYXRhKTsKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fbWFkdmlzZS5jIGIv dGVzdHMvaTkxNS9nZW1fbWFkdmlzZS5jCj4gaW5kZXggNzI5YTRkMzMuLmY0MjI2YTg0IDEwMDY0 NAo+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX21hZHZpc2UuYwo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2Vt X21hZHZpc2UuYwo+IEBAIC02MSw2ICs2MSw4IEBAIGRvbnRuZWVkX2JlZm9yZV9tbWFwKHZvaWQp Cj4gIAl1aW50MzJfdCBoYW5kbGU7Cj4gIAljaGFyICpwdHI7Cj4gIAo+ICsJZ2VtX3JlcXVpcmVf bW1hcF9ndHQoZmQpOwo+ICsKPiAgCWhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIE9CSkVDVF9TSVpF KTsKPiAgCWdlbV9tYWR2aXNlKGZkLCBoYW5kbGUsIEk5MTVfTUFEVl9ET05UTkVFRCk7Cj4gIAlw dHIgPSBnZW1fbW1hcF9fZ3R0KGZkLCBoYW5kbGUsIE9CSkVDVF9TSVpFLCBQUk9UX1JFQUQgfCBQ Uk9UX1dSSVRFKTsKPiBAQCAtODksNiArOTEsOCBAQCBkb250bmVlZF9hZnRlcl9tbWFwKHZvaWQp Cj4gIAl1aW50MzJfdCBoYW5kbGU7Cj4gIAljaGFyICpwdHI7Cj4gIAo+ICsJZ2VtX3JlcXVpcmVf bW1hcF9ndHQoZmQpOwo+ICsKPiAgCWhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIE9CSkVDVF9TSVpF KTsKPiAgCXB0ciA9IGdlbV9tbWFwX19ndHQoZmQsIGhhbmRsZSwgT0JKRUNUX1NJWkUsIFBST1Rf UkVBRCB8IFBST1RfV1JJVEUpOwo+ICAJaWd0X2Fzc2VydChwdHIpOwo+IGRpZmYgLS1naXQgYS90 ZXN0cy9pOTE1L2dlbV9tbWFwX2d0dC5jIGIvdGVzdHMvaTkxNS9nZW1fbW1hcF9ndHQuYwo+IGlu ZGV4IDYzOWRlMTkwLi5kZTRhNWJiNSAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9tbWFw X2d0dC5jCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fbW1hcF9ndHQuYwo+IEBAIC04NzQsOCArODc0 LDEwIEBAIGlndF9tYWluCj4gIAlpZiAoaWd0X3J1bl9pbl9zaW11bGF0aW9uKCkpCj4gIAkJT0JK RUNUX1NJWkUgPSAxICogMTAyNCAqIDEwMjQ7Cj4gIAo+IC0JaWd0X2ZpeHR1cmUKPiArCWlndF9m aXh0dXJlIHsKPiAgCQlmZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwo+ICsJCWdl bV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiArCX0KPiAgCj4gIAlpZ3Rfc3VidGVzdCgiYmFkLW9i amVjdCIpIHsKPiAgCQl1aW50MzJfdCByZWFsX2hhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYp Owo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldF9leGhhdXN0aW9uLmMg Yi90ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldF9leGhhdXN0aW9uLmMKPiBpbmRleCA4YzhlM2Zh Mi4uODY0NjQyMzEgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9nZW1fbW1hcF9vZmZzZXRfZXho YXVzdGlvbi5jCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fbW1hcF9vZmZzZXRfZXhoYXVzdGlvbi5j Cj4gQEAgLTgyLDYgKzgyLDggQEAgaWd0X3NpbXBsZV9tYWluCj4gIAo+ICAJZmQgPSBkcm1fb3Bl bl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKPiAgCj4gKwlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7 Cj4gKwo+ICAJLyogd2UgaGF2ZSAzMmJpdCBvZiBhZGRyZXNzIHNwYWNlLCBzbyB0cnkgdG8gZml0 IG9uZSBNQiBtb3JlCj4gIAkgKiB0aGFuIHRoYXQuICovCj4gIAlmb3IgKGkgPSAwOyBpIDwgNDA5 NiArIDE7IGkrKykKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fbW1hcF93Yy5jIGIvdGVz dHMvaTkxNS9nZW1fbW1hcF93Yy5jCj4gaW5kZXggZTNmZmM1YWQuLjNjMzMwMzRjIDEwMDY0NAo+ IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX21tYXBfd2MuYwo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX21t YXBfd2MuYwo+IEBAIC0zMzQsNiArMzM0LDggQEAgdGVzdF93cml0ZV9ndHRfcmVhZF93YyhpbnQg ZmQpCj4gIAl1aW50MzJfdCBoYW5kbGU7Cj4gIAl1aW50MzJfdCAqc3JjLCAqZHN0Owo+ICAKPiAr CWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiArCj4gIAloYW5kbGUgPSBnZW1fY3JlYXRlKGZk LCBPQkpFQ1RfU0laRSk7Cj4gIAlzZXRfZG9tYWluKGZkLCBoYW5kbGUpOwo+ICAKPiBkaWZmIC0t Z2l0IGEvdGVzdHMvaTkxNS9nZW1fcGVyc2lzdGVudF9yZWxvY3MuYyBiL3Rlc3RzL2k5MTUvZ2Vt X3BlcnNpc3RlbnRfcmVsb2NzLmMKPiBpbmRleCA0NTJmZTY4Ni4uMTcyNjZjNDggMTAwNjQ0Cj4g LS0tIGEvdGVzdHMvaTkxNS9nZW1fcGVyc2lzdGVudF9yZWxvY3MuYwo+ICsrKyBiL3Rlc3RzL2k5 MTUvZ2VtX3BlcnNpc3RlbnRfcmVsb2NzLmMKPiBAQCAtMTk5LDYgKzE5OSw4IEBAIHN0YXRpYyB2 b2lkIGRvX3Rlc3QoaW50IGZkLCBib29sIGZhdWx0aW5nX3JlbG9jKQo+ICAJdWludDMyX3QgdGVz dDsKPiAgCWludCBpLCByZXBlYXQ7Cj4gIAo+ICsJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQpOwo+ ICsKV2h5IHlvdSBhcmUgYWRkaW5nIHRoaXMgY2hlY2sgaGVyZSBub3QgaW4gbWFpbj8gSGVyZSBp dCBpcyBzb21laG93IGhpZGRlbiwgaW4KbWFpbiB3b3VsZCBiZSBtb3JlIHZpc2libGUuCj4gIAlp ZiAoZmF1bHRpbmdfcmVsb2MpCj4gIAkJaWd0X2Rpc2FibGVfcHJlZmF1bHQoKTsKPiAgCj4gZGlm ZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3B3cml0ZV9wcmVhZC5jIGIvdGVzdHMvaTkxNS9nZW1f cHdyaXRlX3ByZWFkLmMKPiBpbmRleCBmOTFmYzdjNC4uNDNiMzk4N2EgMTAwNjQ0Cj4gLS0tIGEv dGVzdHMvaTkxNS9nZW1fcHdyaXRlX3ByZWFkLmMKPiArKysgYi90ZXN0cy9pOTE1L2dlbV9wd3Jp dGVfcHJlYWQuYwo+IEBAIC0xODIsNiArMTgyLDggQEAgc3RhdGljIHZvaWQgdGVzdF9hc19ndHRf bW1hcChpbnQgZmQsIHVpbnQzMl90IHNyYywgdWludDMyX3QgZHN0LCBpbnQgbGVuKQo+ICAJaW50 IGk7Cj4gIAlCVUlMRF9FWEVDOwo+ICAKPiArCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiAr Cj4gIAlzcmNfcHRyID0gZ2VtX21tYXBfX2d0dChmZCwgc3JjLCBPQkpFQ1RfU0laRSwgUFJPVF9X UklURSk7Cj4gIAlkc3RfcHRyID0gZ2VtX21tYXBfX2d0dChmZCwgZHN0LCBPQkpFQ1RfU0laRSwg UFJPVF9SRUFEKTsKPiAgCj4gQEAgLTMwOSw2ICszMTEsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCj4gIAkJZm9yIChjb3VudCA9IDE7IGNvdW50IDw9IDE8PDE3OyBjb3VudCA8 PD0gMSkgewo+ICAJCQlzdHJ1Y3QgdGltZXZhbCBzdGFydCwgZW5kOwo+ICAKPiArCQkJZ2VtX3Jl cXVpcmVfbW1hcF9ndHQoZmQpOwo+ICsKPiAgCQkJZ2V0dGltZW9mZGF5KCZzdGFydCwgTlVMTCk7 Cj4gIAkJCWFzX2d0dF9tbWFwKGZkLCBzcmMsIGRzdCwgdG1wLCBvYmplY3Rfc2l6ZSwgY291bnQp Owo+ICAJCQlnZXR0aW1lb2ZkYXkoJmVuZCwgTlVMTCk7Cj4gQEAgLTM4Nyw2ICszOTEsOCBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gIAkJZm9yIChjb3VudCA9IDE7IGNvdW50 IDw9IDE8PDE3OyBjb3VudCA8PD0gMSkgewo+ICAJCQlzdHJ1Y3QgdGltZXZhbCBzdGFydCwgZW5k Owo+ICAKPiArCQkJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQpOwo+ICsKPiAgCQkJZ2V0dGltZW9m ZGF5KCZzdGFydCwgTlVMTCk7Cj4gIAkJCWFzX2d0dF9tbWFwKGZkLCBzcmMsIGRzdCwgdG1wLCBv YmplY3Rfc2l6ZSwgY291bnQpOwo+ICAJCQlnZXR0aW1lb2ZkYXkoJmVuZCwgTlVMTCk7Cj4gZGlm ZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3JlbG9jX3ZzX2dwdS5jIGIvdGVzdHMvaTkxNS9nZW1f cmVsb2NfdnNfZ3B1LmMKPiBpbmRleCBkNDIxZTQzNC4uZTE0NzVhMWYgMTAwNjQ0Cj4gLS0tIGEv dGVzdHMvaTkxNS9nZW1fcmVsb2NfdnNfZ3B1LmMKPiArKysgYi90ZXN0cy9pOTE1L2dlbV9yZWxv Y192c19ncHUuYwo+IEBAIC0xNTksMTcgKzE1OSwxNyBAQCBzdGF0aWMgdm9pZCByZWxvY19hbmRf ZW1pdChpbnQgZmQsIGRybV9pbnRlbF9ibyAqdGFyZ2V0X2JvLCBib29sIGZhdWx0aW5nX3JlbG9j KQo+ICAJICovCj4gIAlyZWxvY1swXS5wcmVzdW1lZF9vZmZzZXQgPSAtMTsKPiAgCj4gLQloYW5k bGVfcmVsb2NzID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7Cj4gLQlnZW1fd3JpdGUoZmQsIGhhbmRs ZV9yZWxvY3MsIDAsIHJlbG9jLCBzaXplb2YocmVsb2MpKTsKPiAtCWd0dF9yZWxvY3MgPSBnZW1f bW1hcF9fZ3R0KGZkLCBoYW5kbGVfcmVsb2NzLCA0MDk2LAo+IC0JCQkJICAgUFJPVF9SRUFEIHwg UFJPVF9XUklURSk7Cj4gLQo+ICAJZXhlY1sxXS5oYW5kbGUgPSBzcGVjaWFsX2JvLT5oYW5kbGU7 Cj4gIAlleGVjWzFdLnJlbG9jYXRpb25fY291bnQgPSAxOwo+ICAJLyogQSBuZXdseSBtbWFwIGd0 dCBibyB3aWxsIGZhdWx0IG9uIGZpcnN0IGFjY2Vzcy4gKi8KPiAtCWlmIChmYXVsdGluZ19yZWxv YykKPiArCWlmIChmYXVsdGluZ19yZWxvYykgewo+ICsJCWhhbmRsZV9yZWxvY3MgPSBnZW1fY3Jl YXRlKGZkLCA0MDk2KTsKPiArCQlnZW1fd3JpdGUoZmQsIGhhbmRsZV9yZWxvY3MsIDAsIHJlbG9j LCBzaXplb2YocmVsb2MpKTsKPiArCQlndHRfcmVsb2NzID0gZ2VtX21tYXBfX2d0dChmZCwgaGFu ZGxlX3JlbG9jcywgNDA5NiwKPiArCQkJCQkJUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7Cj4gKwo+ ICAJCWV4ZWNbMV0ucmVsb2NzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihndHRfcmVsb2NzKTsKPiAt CWVsc2UKPiArCX0gZWxzZQo+ICAJCWV4ZWNbMV0ucmVsb2NzX3B0ciA9IHRvX3VzZXJfcG9pbnRl cihyZWxvYyk7Cj4gIAo+ICAJZXhlY2J1Zi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihl eGVjKTsKPiBAQCAtMTgwLDcgKzE4MCw4IEBAIHN0YXRpYyB2b2lkIHJlbG9jX2FuZF9lbWl0KGlu dCBmZCwgZHJtX2ludGVsX2JvICp0YXJnZXRfYm8sIGJvb2wgZmF1bHRpbmdfcmVsb2MpCj4gIAo+ ICAJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKPiAgCj4gLQlnZW1fY2xvc2UoZmQsIGhhbmRs ZV9yZWxvY3MpOwo+ICsJaWYgKGZhdWx0aW5nX3JlbG9jKQo+ICsJCWdlbV9jbG9zZShmZCwgaGFu ZGxlX3JlbG9jcyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpZ3RfaGFuZ190IG5vX2hhbmcoaW50IGZk KQo+IEBAIC0yMDEsOCArMjAyLDEwIEBAIHN0YXRpYyB2b2lkIGRvX3Rlc3QoaW50IGZkLCBib29s IGZhdWx0aW5nX3JlbG9jLAo+ICAJdWludDMyX3QgdGVzdDsKPiAgCWludCBpOwo+ICAKPiAtCWlm IChmYXVsdGluZ19yZWxvYykKPiArCWlmIChmYXVsdGluZ19yZWxvYykgewo+ICsJCWdlbV9yZXF1 aXJlX21tYXBfZ3R0KGZkKTsKPiAgCQlpZ3RfZGlzYWJsZV9wcmVmYXVsdCgpOwo+ICsJfQo+ICAK PiAgCWFjdF9zaXplID0gMjA0ODsKPiAgCWR1bW15X2JvID0gZHJtX2ludGVsX2JvX2FsbG9jX3Rp bGVkKGJ1Zm1nciwgInRpbGVkIGR1bW15X2JvIiwgYWN0X3NpemUsIGFjdF9zaXplLAo+IGRpZmYg LS1naXQgYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jIGIvdGVzdHMvaTkxNS9nZW1fcmVu ZGVyX2NvcHkuYwo+IGluZGV4IDhkNjJhMGY0Li41NzU3YzU0NyAxMDA2NDQKPiAtLS0gYS90ZXN0 cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2Nv cHkuYwo+IEBAIC01NzIsNiArNTcyLDggQEAgc3RhdGljIHZvaWQgdGVzdChkYXRhX3QgKmRhdGEs IHVpbnQzMl90IHRpbGluZywgdWludDY0X3QgY2NzX21vZGlmaWVyKQo+ICAJaW50IG9wdF9kdW1w X2F1YiA9IGlndF9hdWJfZHVtcF9lbmFibGVkKCk7Cj4gIAlpbnQgbnVtX3NyYyA9IEFSUkFZX1NJ WkUoc3JjKTsKPiAgCj4gKwlnZW1fcmVxdWlyZV9tbWFwX2d0dChkYXRhLT5kcm1fZmQpOwo+ICsK PiAgCS8qIG5vIFlmIGJlZm9yZSBnZW45ICovCj4gIAlpZiAoaW50ZWxfZ2VuKGRhdGEtPmRldmlk KSA8IDkpCj4gIAkJbnVtX3NyYy0tOwo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9zZXRf dGlsaW5nX3ZzX2d0dC5jIGIvdGVzdHMvaTkxNS9nZW1fc2V0X3RpbGluZ192c19ndHQuYwo+IGlu ZGV4IDI2MTFlYzU1Li4yMTBkNTM1OCAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9zZXRf dGlsaW5nX3ZzX2d0dC5jCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fc2V0X3RpbGluZ192c19ndHQu Ywo+IEBAIC02MCw2ICs2MCw4IEBAIGlndF9zaW1wbGVfbWFpbgo+ICAKPiAgCWZkID0gZHJtX29w ZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4gIAo+ICsJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQp Owo+ICsKbW1hcF9ndHQgZGVwZW5kcyBvbiBnZW4gb3Igbm90PyBEaWQgd2UgaGF2ZSBtbWFwX2d0 dCBvbiBHZW4yPyBUaGVyZSBhcmUgbm8gc2lsbHkKcXVlc3Rpb25zIDopCj4gIAlpZiAoSVNfR0VO MihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSkpCj4gIAkJdGlsZV9oZWlnaHQgPSAxNjsKPiAgCWVs c2UKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fc2V0X3RpbGluZ192c19wd3JpdGUuYyBi L3Rlc3RzL2k5MTUvZ2VtX3NldF90aWxpbmdfdnNfcHdyaXRlLmMKPiBpbmRleCBmMDEyNmI2NC4u ZDgyZTIwYjQgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9nZW1fc2V0X3RpbGluZ192c19wd3Jp dGUuYwo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX3NldF90aWxpbmdfdnNfcHdyaXRlLmMKPiBAQCAt NTgsNiArNTgsOCBAQCBpZ3Rfc2ltcGxlX21haW4KPiAgCj4gIAlmZCA9IGRybV9vcGVuX2RyaXZl cihEUklWRVJfSU5URUwpOwo+ICAKPiArCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiArCj4g IAlmb3IgKGkgPSAwOyBpIDwgT0JKRUNUX1NJWkUvNDsgaSsrKQo+ICAJCWRhdGFbaV0gPSBpOwo+ ICAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fc2hyaW5rLmMgYi90ZXN0cy9pOTE1L2dl bV9zaHJpbmsuYwo+IGluZGV4IGY3MWExZmNiLi5lOTdlMDk4MSAxMDA2NDQKPiAtLS0gYS90ZXN0 cy9pOTE1L2dlbV9zaHJpbmsuYwo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX3Nocmluay5jCj4gQEAg LTM5Niw2ICszOTYsOCBAQCBpZ3RfbWFpbgo+ICAJdWludDY0X3QgYWxsb2Nfc2l6ZSA9IDA7Cj4g IAlpbnQgbnVtX3Byb2Nlc3NlcyA9IDA7Cj4gIAo+ICsJYm9vbCBoYXNfZ3R0ID0gZmFsc2U7Cj4g Kwo+ICAJaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOwo+ICAKPiAgCWlndF9maXh0dXJlIHsKPiBA QCAtNDI3LDYgKzQyOSw4IEBAIGlndF9tYWluCj4gIAkJCWVuZ2luZXNbbmVuZ2luZSsrXSA9IGVu Z2luZTsKPiAgCQlpZ3RfcmVxdWlyZShuZW5naW5lKTsKPiAgCj4gKwkJaGFzX2d0dCA9IGdlbV9t bWFwX19oYXNfZ3R0KGZkKTsKPiArCj4gIAkJY2xvc2UoZmQpOwo+ICAJfQo+ICAKPiBAQCAtNDM1 LDkgKzQzOSwxMyBAQCBpZ3RfbWFpbgo+ICAKPiAgCWZvcihjb25zdCBzdHJ1Y3QgdGVzdCAqdCA9 IHRlc3RzOyB0LT5uYW1lOyB0KyspIHsKPiAgCQlmb3IoY29uc3Qgc3RydWN0IG1vZGUgKm0gPSBt b2RlczsgbS0+c3VmZml4OyBtKyspIHsKPiAtCQkJaWd0X3N1YnRlc3RfZigiJXMlcyIsIHQtPm5h bWUsIG0tPnN1ZmZpeCkKPiAtCQkJCXJ1bl90ZXN0KG51bV9wcm9jZXNzZXMsIGFsbG9jX3NpemUs Cj4gLQkJCQkJIHQtPmZ1bmMsIG0tPmZsYWdzKTsKPiArCQkJaWd0X3N1YnRlc3RfZigiJXMlcyIs IHQtPm5hbWUsIG0tPnN1ZmZpeCkgewo+ICsJCQkJCWlmICh0LT5mdW5jID09IG1tYXBfZ3R0KQo+ ICsJCQkJCQlpZ3RfcmVxdWlyZShoYXNfZ3R0KTsKPiArCj4gKwkJCQkJcnVuX3Rlc3QobnVtX3By b2Nlc3NlcywgYWxsb2Nfc2l6ZSwKPiArCQkJCQkJIHQtPmZ1bmMsIG0tPmZsYWdzKTsKPiArCQkJ fQo+ICAJCX0KPiAgCX0KPiAgfQo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9zdG9yZWR3 X2xvb3AuYyBiL3Rlc3RzL2k5MTUvZ2VtX3N0b3JlZHdfbG9vcC5jCj4gaW5kZXggYjAwNTU1ZTAu LmQxNmExYTZiIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3N0b3JlZHdfbG9vcC5jCj4g KysrIGIvdGVzdHMvaTkxNS9nZW1fc3RvcmVkd19sb29wLmMKPiBAQCAtNDksNiArNDksMTIgQEAg c3RhdGljIGludCBkZXZpZDsKPiAgCj4gIHN0YXRpYyB1bnNpZ25lZCBjb2hlcmVudF9kb21haW47 Cj4gIAo+ICtzdGF0aWMgYm9vbAo+ICt1c2VzX2NvaGVyZW50X2d0dChpbnQgZmQpCj4gK3sKPiAr CXJldHVybiAoIWdlbV9oYXNfbGxjKGZkKSB8fCBnZW1fbW1hcF9faGFzX3djKGZkKSk7Cj4gK30K PiArCj4gIHN0YXRpYyB2b2lkICoKPiAgbW1hcF9jb2hlcmVudChpbnQgZmQsIHVpbnQzMl90IGhh bmRsZSwgaW50IHNpemUpCj4gIHsKPiBAQCAtMTY0LDYgKzE3MCw5IEBAIGNoZWNrX3Rlc3RfcmVx dWlyZW1lbnRzKGludCBmZCwgaW50IHJpbmdpZCkKPiAgewo+ICAJZ2VtX3JlcXVpcmVfcmluZyhm ZCwgcmluZ2lkKTsKPiAgCWlndF9yZXF1aXJlKGdlbV9jYW5fc3RvcmVfZHdvcmQoZmQsIHJpbmdp ZCkpOwo+ICsKPiArCWlmICh1c2VzX2NvaGVyZW50X2d0dChmZCkpCj4gKwkJZ2VtX3JlcXVpcmVf bW1hcF9ndHQoZmQpOwo+ICB9Cj4gIAo+ICBpZ3RfbWFpbgo+IGRpZmYgLS1naXQgYS90ZXN0cy9p OTE1L2dlbV9zdHJlYW1pbmdfd3JpdGVzLmMgYi90ZXN0cy9pOTE1L2dlbV9zdHJlYW1pbmdfd3Jp dGVzLmMKPiBpbmRleCBlODNkNjlkZS4uMTU5Y2I3YTYgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkx NS9nZW1fc3RyZWFtaW5nX3dyaXRlcy5jCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fc3RyZWFtaW5n X3dyaXRlcy5jCj4gQEAgLTQ4LDYgKzQ4LDggQEAKPiAgCj4gICNkZWZpbmUgTE9DQUxfSTkxNV9F WEVDX0hBTkRMRV9MVVQgKDE8PDEyKQo+ICAKPiArI2RlZmluZSBORUVEU19HVFQobW9kZSkgKG1v ZGUgPT0gMSkKPiArCj4gIElHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0IG9mIHN0cmVhbWluZyB3 cml0ZXMgaW50byBhY3RpdmUgR1BVIHNvdXJjZXMiKTsKPiAgCj4gICNkZWZpbmUgU1JDIDAKPiBA QCAtNzUsNiArNzcsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3N0cmVhbWluZyhpbnQgZmQsIGludCBt b2RlLCBpbnQgc3luYykKPiAgCX0gKmJhdGNoOwo+ICAJaW50IGksIG47Cj4gIAo+ICsJaWYgKE5F RURTX0dUVChtb2RlKSkKPiArCQlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7Cj4gKwo+ICAJbWVt c2V0KGV4ZWMsIDAsIHNpemVvZihleGVjKSk7Cj4gIAlleGVjW1NSQ10uaGFuZGxlID0gZ2VtX2Ny ZWF0ZShmZCwgT0JKRUNUX1NJWkUpOwo+ICAJZXhlY1tEU1RdLmhhbmRsZSA9IGdlbV9jcmVhdGUo ZmQsIE9CSkVDVF9TSVpFKTsKPiBAQCAtMjQ1LDYgKzI1MCw5IEBAIHN0YXRpYyB2b2lkIHRlc3Rf YmF0Y2goaW50IGZkLCBpbnQgbW9kZSwgaW50IHJldmVyc2UpCj4gIAl1aW50MzJfdCAqYmFzZTsK PiAgCXVpbnQzMl90IG9mZnNldDsKPiAgCj4gKwlpZiAoTkVFRFNfR1RUKG1vZGUpKQo+ICsJCWdl bV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiArCj4gIAltZW1zZXQoZXhlYywgMCwgc2l6ZW9mKGV4 ZWMpKTsKPiAgCWV4ZWNbRFNUXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBPQkpFQ1RfU0laRSk7 Cj4gIAlleGVjW1NSQ10uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgT0JKRUNUX1NJWkUpOwo+IEBA IC0zODksMTQgKzM5NywxOCBAQCBpZ3RfbWFpbgo+ICAKPiAgCWlndF9zdWJ0ZXN0KCJiYXRjaC1j cHUiKQo+ICAJCXRlc3RfYmF0Y2goZmQsIDAsIDApOwo+IC0JaWd0X3N1YnRlc3QoImJhdGNoLWd0 dCIpCj4gKwlpZ3Rfc3VidGVzdCgiYmF0Y2gtZ3R0Iikgewo+ICsJCWdlbV9yZXF1aXJlX21tYXBf Z3R0KGZkKTsKPiAgCQl0ZXN0X2JhdGNoKGZkLCAxLCAwKTsKPiArCX0KPiAgCWlndF9zdWJ0ZXN0 KCJiYXRjaC13YyIpCj4gIAkJdGVzdF9iYXRjaChmZCwgMiwgMCk7Cj4gIAlpZ3Rfc3VidGVzdCgi YmF0Y2gtcmV2ZXJzZS1jcHUiKQo+ICAJCXRlc3RfYmF0Y2goZmQsIDAsIDEpOwo+IC0JaWd0X3N1 YnRlc3QoImJhdGNoLXJldmVyc2UtZ3R0IikKPiArCWlndF9zdWJ0ZXN0KCJiYXRjaC1yZXZlcnNl LWd0dCIpIHsKPiArCQlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7Cj4gIAkJdGVzdF9iYXRjaChm ZCwgMSwgMSk7Cj4gKwl9Cj4gIAlpZ3Rfc3VidGVzdCgiYmF0Y2gtcmV2ZXJzZS13YyIpCj4gIAkJ dGVzdF9iYXRjaChmZCwgMiwgMSk7Cj4gIAo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV90 aWxlZF9mZW5jZV9ibGl0cy5jIGIvdGVzdHMvaTkxNS9nZW1fdGlsZWRfZmVuY2VfYmxpdHMuYwo+ IGluZGV4IGFhY2Q0MmI3Li4yNDk0NTZlOCAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV90 aWxlZF9mZW5jZV9ibGl0cy5jCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fdGlsZWRfZmVuY2VfYmxp dHMuYwo+IEBAIC0yMTMsNiArMjEzLDcgQEAgaWd0X21haW4KPiAgCWlndF9maXh0dXJlIHsKPiAg CQlmZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwo+ICAJCWlndF9yZXF1aXJlX2dl bShmZCk7Cj4gKwkJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQpOwo+ICAJfQo+ICAKPiAgCWlndF9z dWJ0ZXN0KCJiYXNpYyIpCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3RpbGVkX3ByZWFk X2Jhc2ljLmMgYi90ZXN0cy9pOTE1L2dlbV90aWxlZF9wcmVhZF9iYXNpYy5jCj4gaW5kZXggMWFj OWVjY2QuLmI1YTRlMzQ4IDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3RpbGVkX3ByZWFk X2Jhc2ljLmMKPiArKysgYi90ZXN0cy9pOTE1L2dlbV90aWxlZF9wcmVhZF9iYXNpYy5jCj4gQEAg LTEyNCw2ICsxMjQsNyBAQCBpZ3Rfc2ltcGxlX21haW4KPiAgCXVpbnQzMl90IGRldmlkOwo+ICAK PiAgCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4gKwlnZW1fcmVxdWlyZV9t bWFwX2d0dChmZCk7Cj4gIAo+ICAJaGFuZGxlID0gY3JlYXRlX2JvKGZkKTsKPiAgCWlndF9yZXF1 aXJlKGdlbV9nZXRfdGlsaW5nKGZkLCBoYW5kbGUsICZ0aWxpbmcsICZzd2l6emxlKSk7Cj4gZGlm ZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3RpbGVkX3ByZWFkX3B3cml0ZS5jIGIvdGVzdHMvaTkx NS9nZW1fdGlsZWRfcHJlYWRfcHdyaXRlLmMKPiBpbmRleCAwOTg4YTRlOC4uMGMwY2RlN2YgMTAw NjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9nZW1fdGlsZWRfcHJlYWRfcHdyaXRlLmMKPiArKysgYi90 ZXN0cy9pOTE1L2dlbV90aWxlZF9wcmVhZF9wd3JpdGUuYwo+IEBAIC0xMTEsOCArMTExLDEwIEBA IGlndF9zaW1wbGVfbWFpbgo+ICAJdWludDMyX3QgdGlsaW5nLCBzd2l6emxlOwo+ICAJaW50IGNv dW50Owo+ICAJaW50IGZkOwo+IC0JCj4gKwo+ICAJZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVS X0lOVEVMKTsKPiArCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiArCj4gIAljb3VudCA9IFNM T1dfUVVJQ0soaW50ZWxfZ2V0X3RvdGFsX3JhbV9tYigpICogOSAvIDEwLCA4KSA7Cj4gIAo+ICAJ Zm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudC8yOyBpKyspIHsKPiBkaWZmIC0tZ2l0IGEvdGVzdHMv aTkxNS9nZW1fdGlsZWRfc3dhcHBpbmcuYyBiL3Rlc3RzL2k5MTUvZ2VtX3RpbGVkX3N3YXBwaW5n LmMKPiBpbmRleCBkZGYyYTc0OC4uMjk3ODNhYmEgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9n ZW1fdGlsZWRfc3dhcHBpbmcuYwo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX3RpbGVkX3N3YXBwaW5n LmMKPiBAQCAtMTc1LDYgKzE3NSw4IEBAIGlndF9tYWluCj4gIAo+ICAJCWZkID0gZHJtX29wZW5f ZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4gIAo+ICsJCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsK PiArCj4gIAkJaW50ZWxfcHVyZ2Vfdm1fY2FjaGVzKGZkKTsKPiAgCQljaGVja19tZW1vcnlfbGF5 b3V0KGZkKTsKPiAgCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3RpbGVkX3diLmMgYi90 ZXN0cy9pOTE1L2dlbV90aWxlZF93Yi5jCj4gaW5kZXggYjdmMzUyZmMuLjYxYWExNjc1IDEwMDY0 NAo+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3RpbGVkX3diLmMKPiArKysgYi90ZXN0cy9pOTE1L2dl bV90aWxlZF93Yi5jCj4gQEAgLTE0MCw2ICsxNDAsOCBAQCBpZ3Rfc2ltcGxlX21haW4KPiAgCj4g IAlmZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwo+ICAKPiArCWdlbV9yZXF1aXJl X21tYXBfZ3R0KGZkKTsKPiArCj4gIAloYW5kbGUgPSBjcmVhdGVfYm8oZmQpOwo+ICAJZ2V0X3Rp bGluZyhmZCwgaGFuZGxlLCAmdGlsaW5nLCAmc3dpenpsZSk7Cj4gIAo+IGRpZmYgLS1naXQgYS90 ZXN0cy9pOTE1L2dlbV90aWxlZF93Yy5jIGIvdGVzdHMvaTkxNS9nZW1fdGlsZWRfd2MuYwo+IGlu ZGV4IDg0NWVjMjI4Li44NmU5YmY0NiAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV90aWxl ZF93Yy5jCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fdGlsZWRfd2MuYwo+IEBAIC0xMTMsNiArMTEz LDcgQEAgaWd0X3NpbXBsZV9tYWluCj4gIAl1aW50MzJfdCBoYW5kbGU7Cj4gIAo+ICAJZmQgPSBk cm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKPiArCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZk KTsKPiAgCWdlbV9yZXF1aXJlX21tYXBfd2MoZmQpOwo+ICAKPiAgCWhhbmRsZSA9IGNyZWF0ZV9i byhmZCk7Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3RpbGluZ19tYXhfc3RyaWRlLmMg Yi90ZXN0cy9pOTE1L2dlbV90aWxpbmdfbWF4X3N0cmlkZS5jCj4gaW5kZXggYTZmOTdhOTEuLmI1 ZGMwNTNkIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3RpbGluZ19tYXhfc3RyaWRlLmMK PiArKysgYi90ZXN0cy9pOTE1L2dlbV90aWxpbmdfbWF4X3N0cmlkZS5jCj4gQEAgLTcwLDggKzcw LDkgQEAgaWd0X3NpbXBsZV9tYWluCj4gIAo+ICAJZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVS X0lOVEVMKTsKPiAgCj4gLQlkZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZmQpOwo+ICsJZ2Vt X3JlcXVpcmVfbW1hcF93YyhmZCk7Cj4gIAo+ICsJZGV2aWQgPSBpbnRlbF9nZXRfZHJtX2Rldmlk KGZkKTsKPiAgCWlmIChpbnRlbF9nZW4oZGV2aWQpID49IDcpCj4gIAkJc3RyaWRlID0gMjU2ICog MTAyNDsKPiAgCWVsc2UgaWYgKGludGVsX2dlbihkZXZpZCkgPj0gNCkKPiBkaWZmIC0tZ2l0IGEv dGVzdHMvaTkxNS9nZW1fdXNlcnB0cl9ibGl0cy5jIGIvdGVzdHMvaTkxNS9nZW1fdXNlcnB0cl9i bGl0cy5jCj4gaW5kZXggOGY4ZGRmNDMuLjk5NjJlNTM5IDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2k5 MTUvZ2VtX3VzZXJwdHJfYmxpdHMuYwo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX3VzZXJwdHJfYmxp dHMuYwo+IEBAIC01NTQsNiArNTU0LDggQEAgc3RhdGljIGludCB0ZXN0X2ludmFsaWRfZ3R0X21h cHBpbmcoaW50IGZkKQo+ICAJdWludDMyX3QgaGFuZGxlOwo+ICAJY2hhciAqZ3R0LCAqbWFwOwo+ ICAKPiArCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiArCj4gIAkvKiBBbm9ueW1vdXMgbWFw cGluZyB0byBmaW5kIGEgaG9sZSAqLwo+ICAJbWFwID0gbW1hcChOVUxMLCBzaXplb2YobGluZWFy KSArIDIgKiBQQUdFX1NJWkUsCj4gIAkJICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKPiBAQCAt NjE2LDggKzYxOCwxMCBAQCBzdGF0aWMgaW50IHRlc3RfaW52YWxpZF9ndHRfbWFwcGluZyhpbnQg ZmQpCj4gICNkZWZpbmUgUEVfQlVTWSAweDIKPiAgc3RhdGljIHZvaWQgdGVzdF9wcm9jZXNzX2V4 aXQoaW50IGZkLCBpbnQgZmxhZ3MpCj4gIHsKPiAtCWlmIChmbGFncyAmIFBFX0dUVF9NQVApCj4g KwlpZiAoZmxhZ3MgJiBQRV9HVFRfTUFQKSB7Cj4gIAkJaWd0X3JlcXVpcmUoZ2VtX2hhc19sbGMo ZmQpKTsKPiArCQlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7Cj4gKwl9Cj4gIAo+ICAJaWd0X2Zv cmsoY2hpbGQsIDEpIHsKPiAgCQl1aW50MzJfdCBoYW5kbGU7Cj4gQEAgLTcwMCw2ICs3MDQsOCBA QCBzdGF0aWMgaW50IHRlc3RfbWFwX2ZpeGVkX2ludmFsaWRhdGUoaW50IGZkLCB1aW50MzJfdCBm bGFncykKPiAgCXVpbnQzMl90IGhhbmRsZVtudW1faGFuZGxlc107Cj4gIAl1aW50MzJfdCAqcHRy Owo+ICAKPiArCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGZkKTsKPiArCj4gIAlwdHIgPSBtbWFwKE5V TEwsIHB0cl9zaXplLAo+ICAJCSAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCj4gIAkJICAgTUFQ X1NIQVJFRCB8IE1BUF9BTk9OWU1PVVMsCj4gQEAgLTk0NCw2ICs5NTAsNyBAQCBzdGF0aWMgaW50 IHRlc3RfZG1hYnVmKHZvaWQpCj4gIAlpbnQgcmV0Owo+ICAKPiAgCWZkMSA9IGRybV9vcGVuX2Ry aXZlcihEUklWRVJfSU5URUwpOwo+ICsJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZmQxKTsKPiAgCj4g IAloYW5kbGUgPSBjcmVhdGVfdXNlcnB0cl9ibyhmZDEsIHNpemVvZihsaW5lYXIpKTsKPiAgCW1l bXNldChnZXRfaGFuZGxlX3B0cihoYW5kbGUpLCBjb3VudGVyLCBzaXplb2YobGluZWFyKSk7Cj4g QEAgLTEyMTIsNiArMTIxOSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcmVhZG9ubHlfbW1hcChpbnQg aTkxNSkKPiAgCSAqLwo+ICAKPiAgCWlndF9yZXF1aXJlKGlndF9zZXR1cF9jbGZsdXNoKCkpOwo+ ICsJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoaTkxNSk7Cj4gIAo+ICAJc3ogPSAxNiA8PCAxMjsKPiAg CXBhZ2VzID0gbW1hcChOVUxMLCBzeiwgUFJPVF9XUklURSwgTUFQX0FOT04gfCBNQVBfUFJJVkFU RSwgLTEsIDApOwo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2k5MTVfcG1fcnBtLmMgYi90ZXN0 cy9pOTE1L2k5MTVfcG1fcnBtLmMKPiBpbmRleCAxOGFkYWY2Yi4uOTdiNTdjYTIgMTAwNjQ0Cj4g LS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX3JwbS5jCj4gKysrIGIvdGVzdHMvaTkxNS9pOTE1X3Bt X3JwbS5jCj4gQEAgLTEwMDYsNiArMTAwNiw3IEBAIHN0YXRpYyB2b2lkIGdlbV9tbWFwX3N1YnRl c3QoYm9vbCBndHRfbW1hcCkKPiAgCWhhbmRsZSA9IGdlbV9jcmVhdGUoZHJtX2ZkLCBidWZfc2l6 ZSk7Cj4gIAo+ICAJaWYgKGd0dF9tbWFwKSB7Cj4gKwkJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZHJt X2ZkKTsKPiAgCQlnZW1fYnVmID0gZ2VtX21tYXBfX2d0dChkcm1fZmQsIGhhbmRsZSwgYnVmX3Np emUsCj4gIAkJCQkJUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7Cj4gIAl9Cj4gQEAgLTEzNjgsNiAr MTM2OSw4IEBAIHN0YXRpYyB2b2lkIGdlbV9ldmljdF9wd3JpdGVfc3VidGVzdCh2b2lkKQo+ICAJ dW5zaWduZWQgaW50IG51bV90cmFzaF9ib3MsIG47Cj4gIAl1aW50MzJfdCBidWY7Cj4gIAo+ICsJ Z2VtX3JlcXVpcmVfbW1hcF9ndHQoZHJtX2ZkKTsKPiArCj4gIAludW1fdHJhc2hfYm9zID0gZ2Vt X21hcHBhYmxlX2FwZXJ0dXJlX3NpemUoZHJtX2ZkKSAvICgxMDI0KjEwMjQpICsgMTsKPiAgCXRy YXNoX2JvcyA9IG1hbGxvYyhudW1fdHJhc2hfYm9zICogc2l6ZW9mKCp0cmFzaF9ib3MpKTsKPiAg CWlndF9hc3NlcnQodHJhc2hfYm9zKTsKPiBAQCAtMTUzMiw2ICsxNTM1LDcgQEAgc3RhdGljIHZv aWQgY3Vyc29yX3N1YnRlc3QoYm9vbCBkcG1zKQo+ICAKPiAgCWRpc2FibGVfYWxsX3NjcmVlbnNf YW5kX3dhaXQoJm1zX2RhdGEpOwo+ICAKPiArCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGRybV9mZCk7 Cj4gIAlpZ3RfcmVxdWlyZShkZWZhdWx0X21vZGVfcGFyYW1zKTsKPiAgCWNydGNfaWQgPSBkZWZh dWx0X21vZGVfcGFyYW1zLT5jcnRjX2lkOwo+ICAKPiBAQCAtMTY0OSw2ICsxNjUzLDcgQEAgc3Rh dGljIHZvaWQgdGVzdF9vbmVfcGxhbmUoYm9vbCBkcG1zLCB1aW50MzJfdCBwbGFuZV9pZCwKPiAg CWludDMyX3QgY3J0Y194ID0gMCwgY3J0Y195ID0gMDsKPiAgCXVpbnQ2NF90IHRpbGluZzsKPiAg Cj4gKwlnZW1fcmVxdWlyZV9tbWFwX2d0dChkcm1fZmQpOwo+ICAJZGlzYWJsZV9hbGxfc2NyZWVu c19hbmRfd2FpdCgmbXNfZGF0YSk7Cj4gIAo+ICAJY3J0Y19pZCA9IGRlZmF1bHRfbW9kZV9wYXJh bXMtPmNydGNfaWQ7Cj4gQEAgLTE3OTYsNiArMTgwMSw4IEBAIHN0YXRpYyB2b2lkIHBtX3Rlc3Rf dGlsaW5nKHZvaWQpCj4gIAkvKiBkZWZhdWx0IHN0cmlkZSB2YWx1ZSAqLwo+ICAJdWludDMyX3Qg c3RyaWRlID0gNTEyOwo+ICAKPiArCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGRybV9mZCk7Cj4gKwo+ ICAJLyogY2FsY3VsYXRlIGhvdyBtYW55IG9iamVjdHMgd2UgY2FuIG1hcCAqLwo+ICAJZm9yIChp ID0gMSA8PCBvZmZfYml0OyBpIDw9IGd0dF9vYmpfbWF4X3NpemU7IGkgPDw9IDEsIG1heF9nZW1f b2JqcysrKQo+ICAJCTsKPiBAQCAtMTg1MCw2ICsxODU3LDcgQEAgc3RhdGljIHZvaWQgcG1fdGVz dF9jYWNoaW5nKHZvaWQpCj4gIAkJSTkxNV9DQUNISU5HX0RJU1BMQVksICAgICAgICAgICAvKiBl RFJBTSBjYWNoaW5nICovCj4gIAl9Owo+ICAKPiArCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGRybV9m ZCk7Cj4gIAlkaXNhYmxlX2FsbF9zY3JlZW5zKCZtc19kYXRhKTsKPiAgCj4gIAloYW5kbGUgPSBn ZW1fY3JlYXRlKGRybV9mZCwgZ3R0X29ial9tYXhfc2l6ZSk7Cj4gQEAgLTE4ODcsNiArMTg5NSw3 IEBAIHN0YXRpYyB2b2lkIGZlbmNlc19zdWJ0ZXN0KGJvb2wgZHBtcykKPiAgCj4gIAlkaXNhYmxl X2FsbF9zY3JlZW5zX2FuZF93YWl0KCZtc19kYXRhKTsKPiAgCj4gKwlpZ3RfcmVxdWlyZShnZW1f YXZhaWxhYmxlX2ZlbmNlcyhkcm1fZmQpKTsKSXMgdGhpcyBmdW5jdGlvbiBmcm9tIGxpYi9pb2N0 bF93cmFwcGVycy5oPyBXaHkgeW91IGFkZGVkIGl0IGhlcmU/CkJ0dyAtIHRoaXMgZnVuY3Rpb24g aGFzIGEgY29tbWVudCB0aGF0IGlzIHZhbGlkIGZvciBwcmUtZ2VuNC8KPiAgCWlndF9yZXF1aXJl KGRlZmF1bHRfbW9kZV9wYXJhbXMpOwo+ICAJcGFyYW1zLmNydGNfaWQgPSBkZWZhdWx0X21vZGVf cGFyYW1zLT5jcnRjX2lkOwo+ICAJcGFyYW1zLmNvbm5lY3Rvcl9pZCA9IGRlZmF1bHRfbW9kZV9w YXJhbXMtPmNvbm5lY3Rvcl9pZDsKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9pOTE1X3N1c3Bl bmQuYyBiL3Rlc3RzL2k5MTUvaTkxNV9zdXNwZW5kLmMKPiBpbmRleCAxN2M2OGNjMS4uMDljZjU1 NDIgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9pOTE1X3N1c3BlbmQuYwo+ICsrKyBiL3Rlc3Rz L2k5MTUvaTkxNV9zdXNwZW5kLmMKPiBAQCAtNTAsNiArNTAsOCBAQCB0ZXN0X2ZlbmNlX3Jlc3Rv cmUoaW50IGZkLCBib29sIHRpbGVkMnVudGlsZWQsIGJvb2wgaGliZXJuYXRlKQo+ICAJdWludDMy X3QgKnB0cjEsICpwdHIyLCAqcHRyX3RpbGVkOwo+ICAJaW50IGk7Cj4gIAo+ICsJaWd0X3JlcXVp cmUoZ2VtX2F2YWlsYWJsZV9mZW5jZXMoZmQpKTsKPiArCj4gIAkvKiBXZSB3YWxsIHRoZSB0aWxl ZCBvYmplY3Qgd2l0aCB1bnRpbGVkIGNhbmFyeSBvYmplY3RzIHRvIG1ha2Ugc3VyZQo+ICAJICog dGhhdCB3ZSBkZXRlY3QgdGlsZSBsZWFraW5nIGluIGJvdGggZGlyZWN0aW9ucy4gKi8KPiAgCWhh bmRsZTEgPSBnZW1fY3JlYXRlKGZkLCBPQkpFQ1RfU0laRSk7Cj4gZGlmZiAtLWdpdCBhL3Rlc3Rz L2ttc19kcmF3X2NyYy5jIGIvdGVzdHMva21zX2RyYXdfY3JjLmMKPiBpbmRleCBlYTE0ZGI5YS4u MWEyZTJkNGYgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMva21zX2RyYXdfY3JjLmMKPiArKysgYi90ZXN0 cy9rbXNfZHJhd19jcmMuYwo+IEBAIC0zMjksMTMgKzMyOSwxNyBAQCBpZ3RfbWFpbgo+ICAJCWln dF9zdWJ0ZXN0X2YoImRyYXctbWV0aG9kLSVzLSVzLSVzIiwKPiAgCQkJICAgICAgZm9ybWF0X3N0 cihmb3JtYXRfaWR4KSwKPiAgCQkJICAgICAgaWd0X2RyYXdfZ2V0X21ldGhvZF9uYW1lKG1ldGhv ZCksCj4gLQkJCSAgICAgIHRpbGluZ19zdHIodGlsaW5nX2lkeCkpCj4gKwkJCSAgICAgIHRpbGlu Z19zdHIodGlsaW5nX2lkeCkpIHsKPiArCQkJZ2VtX3JlcXVpcmVfbW1hcF9ndHQoZHJtX2ZkKTsK PiAgCQkJZHJhd19tZXRob2Rfc3VidGVzdChtZXRob2QsIGZvcm1hdF9pZHgsCj4gIAkJCQkJICAg IHRpbGluZ3NbdGlsaW5nX2lkeF0pOwo+ICsJCX0KPiAgCX0gfSB9Cj4gIAo+IC0JaWd0X3N1YnRl c3QoImZpbGwtZmIiKQo+ICsJaWd0X3N1YnRlc3QoImZpbGwtZmIiKSB7Cj4gKwkJZ2VtX3JlcXVp cmVfbW1hcF9ndHQoZHJtX2ZkKTsKPiAgCQlmaWxsX2ZiX3N1YnRlc3QoKTsKPiArCX0KPiAgCj4g IAlpZ3RfZml4dHVyZQo+ICAJCXRlYXJkb3duX2Vudmlyb25tZW50KCk7Cj4gZGlmZiAtLWdpdCBh L3Rlc3RzL2ttc19mZW5jZV9waW5fbGVhay5jIGIvdGVzdHMva21zX2ZlbmNlX3Bpbl9sZWFrLmMK PiBpbmRleCA2MmM1MmI2Mi4uYWMwZjYwNWMgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMva21zX2ZlbmNl X3Bpbl9sZWFrLmMKPiArKysgYi90ZXN0cy9rbXNfZmVuY2VfcGluX2xlYWsuYwo+IEBAIC0yMDIs NiArMjAyLDggQEAgaWd0X3NpbXBsZV9tYWluCj4gIAo+ICAJZGF0YS5kcm1fZmQgPSBkcm1fb3Bl bl9kcml2ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7Cj4gIAo+ICsJZ2VtX3JlcXVpcmVfbW1hcF9n dHQoZGF0YS5kcm1fZmQpOwo+ICsKPiAgCWRhdGEuZGV2aWQgPSBpbnRlbF9nZXRfZHJtX2Rldmlk KGRhdGEuZHJtX2ZkKTsKPiAgCj4gIAlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7Cj4g ZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jIGIvdGVzdHMva21z X2Zyb250YnVmZmVyX3RyYWNraW5nLmMKPiBpbmRleCA0ZDE1Y2UxYy4uNzgyOTk0MzggMTAwNjQ0 Cj4gLS0tIGEvdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMKPiArKysgYi90ZXN0cy9r bXNfZnJvbnRidWZmZXJfdHJhY2tpbmcuYwo+IEBAIC0xNzU4LDYgKzE3NTgsOSBAQCBzdGF0aWMg dm9pZCBjaGVja190ZXN0X3JlcXVpcmVtZW50cyhjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQo+ ICAKPiAgCWlmIChvcHQub25seV9waXBlcyAhPSBQSVBFX0NPVU5UKQo+ICAJCWlndF9yZXF1aXJl KHQtPnBpcGVzID09IG9wdC5vbmx5X3BpcGVzKTsKPiArCj4gKwlpZiAodC0+bWV0aG9kID09IElH VF9EUkFXX01NQVBfR1RUKQo+ICsJCWdlbV9yZXF1aXJlX21tYXBfZ3R0KGRybS5mZCk7Cj4gIH0K PiAgCj4gIHN0YXRpYyB2b2lkIHNldF9jcnRjX2Zicyhjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0 KQo+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfcHNyLmMgYi90ZXN0cy9rbXNfcHNyLmMKPiBpbmRl eCAzZTE2YTZiZi4uNjZmNGZjZDggMTAwNjQ0Cj4gLS0tIGEvdGVzdHMva21zX3Bzci5jCj4gKysr IGIvdGVzdHMva21zX3Bzci5jCj4gQEAgLTQxLDYgKzQxLDggQEAgZW51bSBvcGVyYXRpb25zIHsK PiAgCVBMQU5FX09OT0ZGLAo+ICB9Owo+ICAKPiArI2RlZmluZSBuZWVkc19ndHQob3ApIGlmIChv cCA9PSBNTUFQX0dUVCkge2dlbV9yZXF1aXJlX21tYXBfZ3R0KGRhdGEuZHJtX2ZkKTt9Cj4gKwo+ ICBzdGF0aWMgY29uc3QgY2hhciAqb3Bfc3RyKGVudW0gb3BlcmF0aW9ucyBvcCkKPiAgewo+ICAJ c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBuYW1lW10gPSB7Cj4gQEAgLTQ3NCw2ICs0NzYsNyBA QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJCQlpZ3Rfc3VidGVzdF9mKCIl c3ByaW1hcnlfJXMiLAo+ICAJCQkJICAgICAgYXBwZW5kX3N1YnRlc3RfbmFtZVtkYXRhLm9wX3Bz cl9tb2RlXSwKPiAgCQkJCSAgICAgIG9wX3N0cihvcCkpIHsKPiArCQkJCW5lZWRzX2d0dChvcCk7 Cj4gIAkJCQlkYXRhLm9wID0gb3A7Cj4gIAkJCQlkYXRhLnRlc3RfcGxhbmVfaWQgPSBEUk1fUExB TkVfVFlQRV9QUklNQVJZOwo+ICAJCQkJdGVzdF9zZXR1cCgmZGF0YSk7Cj4gQEAgLTQ4Niw2ICs0 ODksNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQo+ICAJCQlpZ3Rfc3VidGVz dF9mKCIlc3Nwcml0ZV8lcyIsCj4gIAkJCQkgICAgICBhcHBlbmRfc3VidGVzdF9uYW1lW2RhdGEu b3BfcHNyX21vZGVdLAo+ICAJCQkJICAgICAgb3Bfc3RyKG9wKSkgewo+ICsJCQkJbmVlZHNfZ3R0 KG9wKTsKPiAgCQkJCWRhdGEub3AgPSBvcDsKPiAgCQkJCWRhdGEudGVzdF9wbGFuZV9pZCA9IERS TV9QTEFORV9UWVBFX09WRVJMQVk7Cj4gIAkJCQl0ZXN0X3NldHVwKCZkYXRhKTsKPiBkaWZmIC0t Z2l0IGEvdGVzdHMvcHJpbWVfbW1hcC5jIGIvdGVzdHMvcHJpbWVfbW1hcC5jCj4gaW5kZXggMDZh NjZjYWIuLjMzZjk3Yjg0IDEwMDY0NAo+IC0tLSBhL3Rlc3RzL3ByaW1lX21tYXAuYwo+ICsrKyBi L3Rlc3RzL3ByaW1lX21tYXAuYwo+IEBAIC03OSw2ICs3OSw4IEBAIHRlc3RfY29ycmVjdCh2b2lk KQo+ICAJY2hhciAqcHRyMSwgKnB0cjI7Cj4gIAl1aW50MzJfdCBoYW5kbGU7Cj4gIAo+ICsJZ2Vt X3JlcXVpcmVfbW1hcF9ndHQoZmQpOwo+ICsKPiAgCWhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIEJP X1NJWkUpOwo+ICAJZmlsbF9ibyhoYW5kbGUsIEJPX1NJWkUpOwo+ICAKPiBkaWZmIC0tZ2l0IGEv dGVzdHMvcHJpbWVfbW1hcF9jb2hlcmVuY3kuYyBiL3Rlc3RzL3ByaW1lX21tYXBfY29oZXJlbmN5 LmMKPiBpbmRleCAwNGIxNWRkZC4uOWMzNDRkZjkgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvcHJpbWVf bW1hcF9jb2hlcmVuY3kuYwo+ICsrKyBiL3Rlc3RzL3ByaW1lX21tYXBfY29oZXJlbmN5LmMKPiBA QCAtMjk1LDYgKzI5NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKPiAgCSAq IHJlcHJvZHVjaW5nIGJvaWxzIGRvd24gdG8gdHJpYWwgYW5kIGVycm9yIHRvIGhpdCBkaWZmZXJl bnQgc2NlbmFyaW9zLgo+ICAJICogVE9ETzogV2UgbWF5IHdhbnQgdG8gaW1wcm92ZSB0ZXN0cyBh IGJpdCBieSBwaWNraW5nIHJhbmRvbSBzdWJyYW5nZXMuICovCj4gIAlpZ3Rfc3VidGVzdCgicmVh ZCIpIHsKPiArCQlnZW1fcmVxdWlyZV9tbWFwX2d0dChmZCk7Cj4gIAkJaWd0X3VudGlsX3RpbWVv dXQoNSkgewo+ICAJCQlpbnQgc3RhbGUgPSB0ZXN0X3JlYWRfZmx1c2goKTsKPiAgCQkJaWd0X2Zh aWxfb25fZihzdGFsZSwKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvcHJpbWVfdmdlbS5jIGIvdGVzdHMv cHJpbWVfdmdlbS5jCj4gaW5kZXggNjBiYjk1MWMuLjBjNjBkNTY5IDEwMDY0NAo+IC0tLSBhL3Rl c3RzL3ByaW1lX3ZnZW0uYwo+ICsrKyBiL3Rlc3RzL3ByaW1lX3ZnZW0uYwo+IEBAIC0xMjUsNiAr MTI1LDggQEAgc3RhdGljIHZvaWQgdGVzdF9mZW5jZV9tbWFwKGludCBpOTE1LCBpbnQgdmdlbSkK PiAgCWludCBkbWFidWYsIGk7Cj4gIAlpbnQgbWFzdGVyWzJdLCBzbGF2ZVsyXTsKPiAgCj4gKwln ZW1fcmVxdWlyZV9tbWFwX2d0dChpOTE1KTsKPiArCj4gIAlpZ3RfYXNzZXJ0KHBpcGUobWFzdGVy KSA9PSAwKTsKPiAgCWlndF9hc3NlcnQocGlwZShzbGF2ZSkgPT0gMCk7Cj4gIAo+IEBAIC0yMDcs NiArMjA5LDggQEAgc3RhdGljIHZvaWQgdGVzdF9ndHQoaW50IHZnZW0sIGludCBpOTE1KQo+ICAJ dWludDMyX3QgKnB0cjsKPiAgCWludCBkbWFidWYsIGk7Cj4gIAo+ICsJZ2VtX3JlcXVpcmVfbW1h cF9ndHQoaTkxNSk7Cj4gKwo+ICAJc2NyYXRjaC53aWR0aCA9IDEwMjQ7Cj4gIAlzY3JhdGNoLmhl aWdodCA9IDEwMjQ7Cj4gIAlzY3JhdGNoLmJwcCA9IDMyOwo+IEBAIC0yODIsNiArMjg2LDcgQEAg c3RhdGljIHZvaWQgdGVzdF9ndHRfaW50ZXJsZWF2ZWQoaW50IHZnZW0sIGludCBpOTE1KQo+ICAJ dWludDMyX3QgKnB0ciwgKmd0dDsKPiAgCWludCBkbWFidWYsIGk7Cj4gIAo+ICsJZ2VtX3JlcXVp cmVfbW1hcF9ndHQoaTkxNSk7Cj4gIAlpZ3RfcmVxdWlyZShpc19jb2hlcmVudChpOTE1KSk7Cj4g IAo+ICAJc2NyYXRjaC53aWR0aCA9IDEwMjQ7Cj4gLS0gCj4gMi4yMC4xCj4KQWxtb3N0IDEwMDAg bGluZXMsIGh1Z2UgcGF0Y2gsIGJ1dCBJIG1hZGUgaXQgaGVyZSA6KQpJIGhvcGUgSSBkaWQgbm90 IG1pc3MgYW55dGhpbmcuCkthc2lhIDopCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aWd0LWRldg==