From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id C39F36E064 for ; Thu, 5 Dec 2019 10:30:07 +0000 (UTC) From: "Kahola, Mika" Date: Thu, 5 Dec 2019 10:30:04 +0000 Message-ID: <59dd5dc62a3bb837486813592fc94938be32e9e7.camel@intel.com> References: <20191129103843.5765-6-imre.deak@intel.com> <20191204134911.8618-1-imre.deak@intel.com> In-Reply-To: <20191204134911.8618-1-imre.deak@intel.com> Content-Language: en-US Content-ID: <5D18ADFE56062B4290E07677861CC684@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH v2 5/6] lib: Add vebox copy support 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" , "Deak, Imre" Cc: "Welty, Brian" List-ID: T24gV2VkLCAyMDE5LTEyLTA0IGF0IDE1OjQ5ICswMjAwLCBJbXJlIERlYWsgd3JvdGU6Cj4gVG8g cHJvZHVjZSBzdXJmYWNlcyB0aGF0IGFyZSBjb21wcmVzc2VkIHVzaW5nIHRoZSBtZWRpYSBjb21w cmVzc2lvbgo+IGZvcm1hdCB3ZSBuZWVkIHRvIHVzZSBvbmUgb2YgdGhlIG1lZGlhIGVuZ2luZXMu IFRoZSBzaW1wbGVzdCB3YXkgZm9yCj4gdGhpcyBpcyB0byB1c2UgdGhlIHZlYm94IGVuZ2luZSdz IHRpbGluZyBjb252ZXJ0IGNvbW1hbmQsIHNvIGFkZAo+IHN1cHBvcnQKPiBmb3IgdGhpcy4KPiAK PiB2MjoKPiAtIFJlYmFzZSBvbiBsYXRlc3QgaWd0LiAoTWlrYSkKPiAKPiBDYzogTWlrYSBLYWhv bGEgPG1pa2Eua2Fob2xhQGludGVsLmNvbT4KPiBDYzogQnJpYW4gV2VsdHkgPGJyaWFuLndlbHR5 QGludGVsLmNvbT4KPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ Cj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4g U2lnbmVkLW9mZi1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgoKUmV2aWV3ZWQt Ynk6IE1pa2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+Cgo+IC0tLQo+ICBsaWIvTWFr ZWZpbGUuc291cmNlcyAgICAgICAgIHwgICAxICsKPiAgbGliL2lndF9mYi5jICAgICAgICAgICAg ICAgICB8ICA3NyArKysrKysrLS0tCj4gIGxpYi9pbnRlbF9hdXhfcGd0YWJsZS5jICAgICAgfCAg MTAgKy0KPiAgbGliL2ludGVsX2F1eF9wZ3RhYmxlLmggICAgICB8ICAgMyArLQo+ICBsaWIvaW50 ZWxfYmF0Y2hidWZmZXIuYyAgICAgIHwgIDExICsrCj4gIGxpYi9pbnRlbF9iYXRjaGJ1ZmZlci5o ICAgICAgfCAgMzAgKysrLQo+ICBsaWIvaW50ZWxfcmVnLmggICAgICAgICAgICAgIHwgICAxICsK PiAgbGliL2lvY3RsX3dyYXBwZXJzLmggICAgICAgICB8ICAgMSArCj4gIGxpYi9tZXNvbi5idWls ZCAgICAgICAgICAgICAgfCAgIDEgKwo+ICBsaWIvcmVuZGVyY29weV9nZW45LmMgICAgICAgIHwg ICAyICstCj4gIGxpYi92ZWJveGNvcHkuaCAgICAgICAgICAgICAgfCAgIDkgKysKPiAgbGliL3Zl Ym94Y29weV9nZW4xMi5jICAgICAgICB8IDI2OQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gIHRlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMgfCAgIDEgKwo+ICAxMyBm aWxlcyBjaGFuZ2VkLCAzODggaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWIvdmVib3hjb3B5LmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi92 ZWJveGNvcHlfZ2VuMTIuYwo+IAo+IGRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuc291cmNlcyBi L2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gaW5kZXggNzUwZTYzMGIuLjVkZDM5NjJlIDEwMDY0NAo+ IC0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMK PiBAQCAtMTMxLDYgKzEzMSw3IEBAIGxpYl9zb3VyY2VfbGlzdCA9CSAJXAo+ICAJaWd0X3ZjNC5o CQlcCj4gIAlpZ3RfYW1kLmMJCVwKPiAgCWlndF9hbWQuaAkJXAo+ICsJdmVib3hjb3B5X2dlbjEy LmMJXAo+ICAJJChOVUxMKQo+ICAKPiAgLlBIT05ZOiB2ZXJzaW9uLmgudG1wCj4gZGlmZiAtLWdp dCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3RfZmIuYwo+IGluZGV4IDZjZTdjZmVhLi4zYjE0MWI5 MyAxMDA2NDQKPiAtLS0gYS9saWIvaWd0X2ZiLmMKPiArKysgYi9saWIvaWd0X2ZiLmMKPiBAQCAt NDAzLDYgKzQwMyw3IEBAIHZvaWQgaWd0X2dldF9mYl90aWxlX3NpemUoaW50IGZkLCB1aW50NjRf dAo+IG1vZGlmaWVyLCBpbnQgZmJfYnBwLAo+ICAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRF9DQ1M6Cj4gIAljYXNlIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEy X1JDX0NDUzoKPiAgCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNf Q0NTX0NDOgo+ICsJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19D Q1M6Cj4gIAkJaWd0X3JlcXVpcmVfaW50ZWwoZmQpOwo+ICAJCWlmIChpbnRlbF9nZW4oaW50ZWxf Z2V0X2RybV9kZXZpZChmZCkpID09IDIpIHsKPiAgCQkJKndpZHRoX3JldCA9IDEyODsKPiBAQCAt NDY3LDE3ICs0NjgsMjEgQEAgdm9pZCBpZ3RfZ2V0X2ZiX3RpbGVfc2l6ZShpbnQgZmQsIHVpbnQ2 NF90Cj4gbW9kaWZpZXIsIGludCBmYl9icHAsCj4gIAl9Cj4gIH0KPiAgCj4gK3N0YXRpYyBib29s IGlzX2dlbjEyX21jX2Njc19tb2RpZmllcih1aW50NjRfdCBtb2RpZmllcikKPiArewo+ICsJcmV0 dXJuIG1vZGlmaWVyID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX01DX0ND UzsKPiArfQo+ICsKPiAgc3RhdGljIGJvb2wgaXNfZ2VuMTJfY2NzX21vZGlmaWVyKHVpbnQ2NF90 IG1vZGlmaWVyKQo+ICB7Cj4gLQlyZXR1cm4gbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lf VElMRURfR0VOMTJfUkNfQ0NTIHx8Cj4gKwlyZXR1cm4gaXNfZ2VuMTJfbWNfY2NzX21vZGlmaWVy KG1vZGlmaWVyKSB8fAo+ICsJCW1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dF TjEyX1JDX0NDUyB8fAo+ICAJCW1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dF TjEyX1JDX0NDU19DQzsKPiAgfQo+ICAKPiAgc3RhdGljIGJvb2wgaXNfY2NzX21vZGlmaWVyKHVp bnQ2NF90IG1vZGlmaWVyKQo+ICB7Cj4gLQo+IC0JcmV0dXJuIG1vZGlmaWVyID09IEk5MTVfRk9S TUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUyB8fAo+IC0JCW1vZGlmaWVyID09IEk5MTVfRk9S TUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDU19DQyB8fAo+ICsJcmV0dXJuIGlzX2dlbjEyX2Nj c19tb2RpZmllcihtb2RpZmllcikgfHwKPiAgCQltb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRF9DQ1MgfHwKPiAgCQltb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURf Q0NTOwo+ICB9Cj4gQEAgLTczMyw2ICs3MzgsNyBAQCB1aW50NjRfdCBpZ3RfZmJfbW9kX3RvX3Rp bGluZyh1aW50NjRfdCBtb2RpZmllcikKPiAgCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lf VElMRURfQ0NTOgo+ICAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9S Q19DQ1M6Cj4gIAljYXNlIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0ND U19DQzoKPiArCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NT Ogo+ICAJCXJldHVybiBJOTE1X1RJTElOR19ZOwo+ICAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9N T0RfWWZfVElMRUQ6Cj4gIAljYXNlIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1M6 Cj4gQEAgLTE5MTEsNyArMTkxNyw3IEBAIHN0YXRpYyBib29sIGJsaXR0ZXJfb2soY29uc3Qgc3Ry dWN0IGlndF9mYiAqZmIpCj4gIAlyZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiAtc3RhdGljIGJvb2wg dXNlX3JlbmRlcmNvcHkoY29uc3Qgc3RydWN0IGlndF9mYiAqZmIpCj4gK3N0YXRpYyBib29sIHVz ZV9lbmdpbmVjb3B5KGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICB7Cj4gIAlyZXR1cm4gaXNf Y2NzX21vZGlmaWVyKGZiLT5tb2RpZmllcikgfHwKPiAgCQkoZmItPm1vZGlmaWVyID09IEk5MTVf Rk9STUFUX01PRF9ZZl9USUxFRCAmJgo+IEBAIC0xOTYwLDI1ICsxOTY2LDUyIEBAIHN0YXRpYyB2 b2lkIGZpbmlfYnVmKHN0cnVjdCBpZ3RfYnVmICpidWYpCj4gIAlkcm1faW50ZWxfYm9fdW5yZWZl cmVuY2UoYnVmLT5ibyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHJlbmRlcmNvcHkoc3RydWN0 IGZiX2JsaXRfdXBsb2FkICpibGl0LAo+IC0JCSAgICAgICBjb25zdCBzdHJ1Y3QgaWd0X2ZiICpk c3RfZmIsCj4gLQkJICAgICAgIGNvbnN0IHN0cnVjdCBpZ3RfZmIgKnNyY19mYikKPiArLyoqCj4g KyAqIGNvcHlfd2l0aF9lbmdpbmU6Cj4gKyAqIEBibGl0OiBjb250ZXh0IGZvciB0aGUgY29weSBv cGVyYXRpb24KPiArICogQGRzdF9mYjogZGVzdGluYXRpb24gYnVmZmVyCj4gKyAqIEBzcmNfZmI6 IHNvdXJjZSBidWZmZXIKPiArICoKPiArICogQ29weSBAc3JjX2ZiIHRvIEBkc3RfZmIgdXNpbmcg ZWl0aGVyIHRoZSByZW5kZXIgb3IgdmVib3ggZW5naW5lLgo+IFRoZSBlbmdpbmUKPiArICogaXMg c2VsZWN0ZWQgYmFzZWQgb24gdGhlIGNvbXByZXNzaW9uIHN1cmZhY2UgZm9ybWF0IHJlcXVpcmVk IGJ5Cj4gdGhlIEBkc3RfZmIKPiArICogRkIgbW9kaWZpZXIuIE9uIEdFTjEyKyBhIGdpdmVuIGNv bXByZXNzaW9uIGZvcm1hdCAocmVuZGVyIG9yCj4gbWVkaWEpIGNhbiBiZQo+ICsgKiBwcm9kdWNl ZCBvbmx5IGJ5IHRoZSBzZWxlY3RlZCBlbmdpbmU6Cj4gKyAqIC0gRm9yIEdFTjEyIG1lZGlhIGNv bXByZXNzZWQ6IHZlYm94IGVuZ2luZQo+ICsgKiAtIEZvciB1bmNvbXByZXNzZWQsIHByZS1HRU4x MiBjb21wcmVzc2VkLCBHRU4xMisgcmVuZGVyCj4gY29tcHJlc3NlZDogcmVuZGVyIGVuZ2luZQo+ ICsgKiBOb3RlIHRoYXQgYm90aCBHRU4xMiBlbmdpbmUgaXMgY2FwYWJsZSBvZiByZWFkaW5nIGVp dGhlcgo+IGNvbXByZXNzaW9uIGZvcm1hdHMuCj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBjb3B5X3dp dGhfZW5naW5lKHN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCwKPiArCQkJICAgICBjb25zdCBz dHJ1Y3QgaWd0X2ZiICpkc3RfZmIsCj4gKwkJCSAgICAgY29uc3Qgc3RydWN0IGlndF9mYiAqc3Jj X2ZiKQo+ICB7Cj4gIAlzdHJ1Y3QgaWd0X2J1ZiBzcmMgPSB7fSwgZHN0ID0ge307Cj4gLQlpZ3Rf cmVuZGVyX2NvcHlmdW5jX3QgcmVuZGVyX2NvcHkgPQo+IC0JCWlndF9nZXRfcmVuZGVyX2NvcHlm dW5jKGludGVsX2dldF9kcm1fZGV2aWQoYmxpdC0+ZmQpKTsKPiArCWlndF9yZW5kZXJfY29weWZ1 bmNfdCByZW5kZXJfY29weSA9IE5VTEw7Cj4gKwlpZ3RfdmVib3hfY29weWZ1bmNfdCB2ZWJveF9j b3B5ID0gTlVMTDsKPiArCj4gKwlpZiAoaXNfZ2VuMTJfbWNfY2NzX21vZGlmaWVyKGRzdF9mYi0+ bW9kaWZpZXIpKQo+ICsJCXZlYm94X2NvcHkgPQo+IGlndF9nZXRfdmVib3hfY29weWZ1bmMoaW50 ZWxfZ2V0X2RybV9kZXZpZChibGl0LT5mZCkpOwo+ICsJZWxzZQo+ICsJCXJlbmRlcl9jb3B5ID0K PiBpZ3RfZ2V0X3JlbmRlcl9jb3B5ZnVuYyhpbnRlbF9nZXRfZHJtX2RldmlkKGJsaXQtPmZkKSk7 Cj4gIAo+IC0JaWd0X3JlcXVpcmUocmVuZGVyX2NvcHkpOwo+ICsJaWd0X3JlcXVpcmUodmVib3hf Y29weSB8fCByZW5kZXJfY29weSk7Cj4gIAo+ICAJaWd0X2Fzc2VydF9lcShkc3RfZmItPm9mZnNl dHNbMF0sIDApOwo+ICAJaWd0X2Fzc2VydF9lcShzcmNfZmItPm9mZnNldHNbMF0sIDApOwo+ICAK PiAtCWluaXRfYnVmKGJsaXQsICZzcmMsIHNyY19mYiwgImNhaXJvIHJlbmRlcmNvcHkgc3JjIik7 Cj4gLQlpbml0X2J1ZihibGl0LCAmZHN0LCBkc3RfZmIsICJjYWlybyByZW5kZXJjb3B5IGRzdCIp Owo+ICsJaW5pdF9idWYoYmxpdCwgJnNyYywgc3JjX2ZiLCAiY2Fpcm8gZW5naW5lY29weSBzcmMi KTsKPiArCWluaXRfYnVmKGJsaXQsICZkc3QsIGRzdF9mYiwgImNhaXJvIGVuZ2luZWNvcHkgZHN0 Iik7Cj4gIAo+IC0JcmVuZGVyX2NvcHkoYmxpdC0+YmF0Y2gsIE5VTEwsCj4gLQkJICAgICZzcmMs IDAsIDAsIGRzdF9mYi0+cGxhbmVfd2lkdGhbMF0sIGRzdF9mYi0KPiA+cGxhbmVfaGVpZ2h0WzBd LAo+IC0JCSAgICAmZHN0LCAwLCAwKTsKPiArCWlmICh2ZWJveF9jb3B5KQo+ICsJCXZlYm94X2Nv cHkoYmxpdC0+YmF0Y2gsICZzcmMsCj4gKwkJCSAgIGRzdF9mYi0+cGxhbmVfd2lkdGhbMF0sIGRz dF9mYi0KPiA+cGxhbmVfaGVpZ2h0WzBdLAo+ICsJCQkgICAmZHN0KTsKPiArCWVsc2UKPiArCQly ZW5kZXJfY29weShibGl0LT5iYXRjaCwgTlVMTCwKPiArCQkJICAgICZzcmMsCj4gKwkJCSAgICAw LCAwLAo+ICsJCQkgICAgZHN0X2ZiLT5wbGFuZV93aWR0aFswXSwgZHN0X2ZiLQo+ID5wbGFuZV9o ZWlnaHRbMF0sCj4gKwkJCSAgICAmZHN0LAo+ICsJCQkgICAgMCwgMCk7Cj4gIAo+ICAJZmluaV9i dWYoJmRzdCk7Cj4gIAlmaW5pX2J1Zigmc3JjKTsKPiBAQCAtMjAyOSw3ICsyMDYyLDcgQEAgc3Rh dGljIHZvaWQgZnJlZV9saW5lYXJfbWFwcGluZyhzdHJ1Y3QKPiBmYl9ibGl0X3VwbG9hZCAqYmxp dCkKPiAgCQkJSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7Cj4gIAo+ICAJCWlmIChibGl0LT5iYXRj aCkKPiAtCQkJcmVuZGVyY29weShibGl0LCBmYiwgJmxpbmVhci0+ZmIpOwo+ICsJCQljb3B5X3dp dGhfZW5naW5lKGJsaXQsIGZiLCAmbGluZWFyLT5mYik7Cj4gIAkJZWxzZQo+ICAJCQlibGl0Y29w eShmYiwgJmxpbmVhci0+ZmIpOwo+ICAKPiBAQCAtMjA2MCw3ICsyMDkzLDcgQEAgc3RhdGljIHZv aWQgc2V0dXBfbGluZWFyX21hcHBpbmcoc3RydWN0Cj4gZmJfYmxpdF91cGxvYWQgKmJsaXQpCj4g IAlzdHJ1Y3QgaWd0X2ZiICpmYiA9IGJsaXQtPmZiOwo+ICAJc3RydWN0IGZiX2JsaXRfbGluZWFy ICpsaW5lYXIgPSAmYmxpdC0+bGluZWFyOwo+ICAKPiAtCWlmICghaWd0X3ZjNF9pc190aWxlZChm Yi0+bW9kaWZpZXIpICYmIHVzZV9yZW5kZXJjb3B5KGZiKSkgewo+ICsJaWYgKCFpZ3RfdmM0X2lz X3RpbGVkKGZiLT5tb2RpZmllcikgJiYgdXNlX2VuZ2luZWNvcHkoZmIpKSB7Cj4gIAkJYmxpdC0+ YnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChmZCwgNDA5Nik7Cj4gIAkJYmxpdC0+ YmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhibGl0LT5idWZtZ3IsCj4gIAkJCQkJCSAg ICAgIGludGVsX2dldF9kcm1fZGV2Cj4gaWQoZmQpKTsKPiBAQCAtMjA5Niw3ICsyMTI5LDcgQEAg c3RhdGljIHZvaWQgc2V0dXBfbGluZWFyX21hcHBpbmcoc3RydWN0Cj4gZmJfYmxpdF91cGxvYWQg KmJsaXQpCj4gIAkJCQlJOTE1X0dFTV9ET01BSU5fR1RULCAwKTsKPiAgCj4gIAkJaWYgKGJsaXQt PmJhdGNoKQo+IC0JCQlyZW5kZXJjb3B5KGJsaXQsICZsaW5lYXItPmZiLCBmYik7Cj4gKwkJCWNv cHlfd2l0aF9lbmdpbmUoYmxpdCwgJmxpbmVhci0+ZmIsIGZiKTsKPiAgCQllbHNlCj4gIAkJCWJs aXRjb3B5KCZsaW5lYXItPmZiLCBmYik7Cj4gIAo+IEBAIC0zMjAyLDcgKzMyMzUsOCBAQCBzdGF0 aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fY29udmVydChpbnQKPiBmZCwgc3RydWN0IGln dF9mYiAqZmIpCj4gIAkJCQkJCQkgICAgICZibGl0LQo+ID5zaGFkb3dfZmIpOwo+ICAJaWd0X2Fz c2VydChibGl0LT5zaGFkb3dfcHRyKTsKPiAgCj4gLQlpZiAodXNlX3JlbmRlcmNvcHkoZmIpIHx8 IHVzZV9ibGl0dGVyKGZiKSB8fAo+IGlndF92YzRfaXNfdGlsZWQoZmItPm1vZGlmaWVyKSkgewo+ ICsJaWYgKHVzZV9lbmdpbmVjb3B5KGZiKSB8fCB1c2VfYmxpdHRlcihmYikgfHwKPiArCSAgICBp Z3RfdmM0X2lzX3RpbGVkKGZiLT5tb2RpZmllcikpIHsKPiAgCQlzZXR1cF9saW5lYXJfbWFwcGlu ZygmYmxpdC0+YmFzZSk7Cj4gIAl9IGVsc2Ugewo+ICAJCWJsaXQtPmJhc2UubGluZWFyLmZiID0g KmZiOwo+IEBAIC0zMjg1LDcgKzMzMTksOCBAQCBjYWlyb19zdXJmYWNlX3QgKmlndF9nZXRfY2Fp cm9fc3VyZmFjZShpbnQgZmQsCj4gc3RydWN0IGlndF9mYiAqZmIpCj4gIAlpZiAoZmItPmNhaXJv X3N1cmZhY2UgPT0gTlVMTCkgewo+ICAJCWlmICh1c2VfY29udmVydChmYikpCj4gIAkJCWNyZWF0 ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGZkLCBmYik7Cj4gLQkJZWxzZSBpZiAodXNlX2JsaXR0 ZXIoZmIpIHx8IHVzZV9yZW5kZXJjb3B5KGZiKSB8fAo+IGlndF92YzRfaXNfdGlsZWQoZmItPm1v ZGlmaWVyKSkKPiArCQllbHNlIGlmICh1c2VfYmxpdHRlcihmYikgfHwgdXNlX2VuZ2luZWNvcHko ZmIpIHx8Cj4gKwkJCSBpZ3RfdmM0X2lzX3RpbGVkKGZiLT5tb2RpZmllcikpCj4gIAkJCWNyZWF0 ZV9jYWlyb19zdXJmYWNlX19ncHUoZmQsIGZiKTsKPiAgCQllbHNlCj4gIAkJCWNyZWF0ZV9jYWly b19zdXJmYWNlX19ndHQoZmQsIGZiKTsKPiBkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2F1eF9wZ3Rh YmxlLmMgYi9saWIvaW50ZWxfYXV4X3BndGFibGUuYwo+IGluZGV4IDJmMjJiYjM5Li5jYmIzYzMy MCAxMDA2NDQKPiAtLS0gYS9saWIvaW50ZWxfYXV4X3BndGFibGUuYwo+ICsrKyBiL2xpYi9pbnRl bF9hdXhfcGd0YWJsZS5jCj4gQEAgLTU1NSwxNiArNTU1LDIwIEBAIGdlbjEyX2NyZWF0ZV9hdXhf cGd0YWJsZV9zdGF0ZShzdHJ1Y3QKPiBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gIH0KPiAg Cj4gIHZvaWQKPiAtZ2VuMTJfZW1pdF9hdXhfcGd0YWJsZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmF0 Y2hidWZmZXIgKmJhdGNoLAo+IHVpbnQzMl90IHN0YXRlKQo+ICtnZW4xMl9lbWl0X2F1eF9wZ3Rh YmxlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gdWludDMyX3Qgc3Rh dGUsCj4gKwkJCSAgICAgYm9vbCByZW5kZXIpCj4gIHsKPiArCXVpbnQzMl90IHRhYmxlX2Jhc2Vf cmVnID0gcmVuZGVyID8KPiBHRU4xMl9HRlhfQVVYX1RBQkxFX0JBU0VfQUREUiA6Cj4gKwkJCQkJ ICAgR0VOMTJfVkVCT1hfQVVYX1RBQkxFX0JBU0VfQQo+IEREUjsKPiArCj4gIAlpZiAoIXN0YXRl KQo+ICAJCXJldHVybjsKPiAgCj4gIAlPVVRfQkFUQ0goTUlfTE9BRF9SRUdJU1RFUl9NRU1fR0VO OCB8Cj4gTUlfTU1JT19SRU1BUF9FTkFCTEVfR0VOMTIpOwo+IC0JT1VUX0JBVENIKEdFTjEyX0dG WF9BVVhfVEFCTEVfQkFTRV9BRERSKTsKPiArCU9VVF9CQVRDSCh0YWJsZV9iYXNlX3JlZyk7Cj4g IAlPVVRfUkVMT0MoYmF0Y2gtPmJvLCAwLCAwLCBzdGF0ZSk7Cj4gIAo+ICAJT1VUX0JBVENIKE1J X0xPQURfUkVHSVNURVJfTUVNX0dFTjggfAo+IE1JX01NSU9fUkVNQVBfRU5BQkxFX0dFTjEyKTsK PiAtCU9VVF9CQVRDSChHRU4xMl9HRlhfQVVYX1RBQkxFX0JBU0VfQUREUiArIDQpOwo+ICsJT1VU X0JBVENIKHRhYmxlX2Jhc2VfcmVnICsgNCk7Cj4gIAlPVVRfUkVMT0MoYmF0Y2gtPmJvLCAwLCAw LCBzdGF0ZSArIDQpOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5o IGIvbGliL2ludGVsX2F1eF9wZ3RhYmxlLmgKPiBpbmRleCAyMDI3OGRiMC4uYWM4MmI3ZDIgMTAw NjQ0Cj4gLS0tIGEvbGliL2ludGVsX2F1eF9wZ3RhYmxlLmgKPiArKysgYi9saWIvaW50ZWxfYXV4 X3BndGFibGUuaAo+IEBAIC0zMCw2ICszMCw3IEBAIHVpbnQzMl90Cj4gIGdlbjEyX2NyZWF0ZV9h dXhfcGd0YWJsZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAo+ICAJCQkg ICAgICAgZHJtX2ludGVsX2JvICphdXhfcGd0YWJsZV9ibyk7Cj4gIHZvaWQKPiAtZ2VuMTJfZW1p dF9hdXhfcGd0YWJsZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAo+IHVp bnQzMl90IHN0YXRlKTsKPiArZ2VuMTJfZW1pdF9hdXhfcGd0YWJsZV9zdGF0ZShzdHJ1Y3QgaW50 ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAo+IHVpbnQzMl90IHN0YXRlLAo+ICsJCQkgICAgIGJvb2wg cmVuZGVyKTsKPiAgCj4gICNlbmRpZgo+IGRpZmYgLS1naXQgYS9saWIvaW50ZWxfYmF0Y2hidWZm ZXIuYyBiL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jCj4gaW5kZXggMzgyOGJhNzUuLjUxYWFlNGRj IDEwMDY0NAo+IC0tLSBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jCj4gKysrIGIvbGliL2ludGVs X2JhdGNoYnVmZmVyLmMKPiBAQCAtMzcsNiArMzcsNyBAQAo+ICAjaW5jbHVkZSAiaW50ZWxfYnVm bWdyLmgiCj4gICNpbmNsdWRlICJpbnRlbF9jaGlwc2V0LmgiCj4gICNpbmNsdWRlICJpbnRlbF9y ZWcuaCIKPiArI2luY2x1ZGUgInZlYm94Y29weS5oIgo+ICAjaW5jbHVkZSAicmVuZGVyY29weS5o Igo+ICAjaW5jbHVkZSAibWVkaWFfZmlsbC5oIgo+ICAjaW5jbHVkZSAiaW9jdGxfd3JhcHBlcnMu aCIKPiBAQCAtODUwLDYgKzg1MSwxNiBAQCBpZ3RfcmVuZGVyX2NvcHlmdW5jX3QKPiBpZ3RfZ2V0 X3JlbmRlcl9jb3B5ZnVuYyhpbnQgZGV2aWQpCj4gIAlyZXR1cm4gY29weTsKPiAgfQo+ICAKPiAr aWd0X3ZlYm94X2NvcHlmdW5jX3QgaWd0X2dldF92ZWJveF9jb3B5ZnVuYyhpbnQgZGV2aWQpCj4g K3sKPiArCWlndF92ZWJveF9jb3B5ZnVuY190IGNvcHkgPSBOVUxMOwo+ICsKPiArCWlmIChJU19H RU4xMihkZXZpZCkpCj4gKwkJY29weSA9IGdlbjEyX3ZlYm94X2NvcHlmdW5jOwo+ICsKPiArCXJl dHVybiBjb3B5Owo+ICt9Cj4gKwo+ICAvKioKPiAgICogaWd0X2dldF9tZWRpYV9maWxsZnVuYzoK PiAgICogQGRldmlkOiBwY2kgZGV2aWNlIGlkCj4gZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRj aGJ1ZmZlci5oIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKPiBpbmRleCA4ODgxODhmOS4uMzdl M2FmZmUgMTAwNjQ0Cj4gLS0tIGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKPiArKysgYi9saWIv aW50ZWxfYmF0Y2hidWZmZXIuaAo+IEBAIC0yMTMsNiArMjEzLDcgQEAgdm9pZCBpbnRlbF9jb3B5 X2JvKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlcgo+ICpiYXRjaCwKPiAgZW51bSBpOTE1X2NvbXBy ZXNzaW9uIHsKPiAgCUk5MTVfQ09NUFJFU1NJT05fTk9ORSwKPiAgCUk5MTVfQ09NUFJFU1NJT05f UkVOREVSLAo+ICsJSTkxNV9DT01QUkVTU0lPTl9NRURJQSwKPiAgfTsKPiAgCj4gIC8qKgo+IEBA IC0yMjAsMTggKzIyMSwyMCBAQCBlbnVtIGk5MTVfY29tcHJlc3Npb24gewo+ICAgKiBAYm86IHVu ZGVybHlpbmcgbGliZHJtIGJ1ZmZlciBvYmplY3QKPiAgICogQHN0cmlkZTogc3RyaWRlIG9mIHRo ZSBidWZmZXIKPiAgICogQHRpbGluZzogdGlsaW5nIG1vZGUgYml0cwo+ICsgKiBAY29tcHJlc3Np b246IG1lbW9yeSBjb21wcmVzc2lvbiBtb2RlCj4gICAqIEBicHA6IGJpdHMgcGVyIHBpeGVsLCA4 LCAxNiBvciAzMi4KPiAgICogQGRhdGE6IHBvaW50ZXIgdG8gdGhlIG1lbW9yeSBtYXBwaW5nIG9m IHRoZSBidWZmZXIKPiAgICogQHNpemU6IHNpemUgb2YgdGhlIGJ1ZmZlciBvYmplY3QKPiAgICoK PiAgICogVGhpcyBpcyBhIGktZy10IGJ1ZmZlciBvYmplY3Qgd3JhcHBlciBzdHJ1Y3R1cmUgd2hp Y2ggYXVnbWVudHMKPiB0aGUgYmFzZWxpbmUKPiAtICogbGliZHJtIGJ1ZmZlciBvYmplY3Qgd2l0 aCBzdWl0YWJsZSBkYXRhIG5lZWRlZCBieSB0aGUgcmVuZGVyIGNvcHkKPiBhbmQgdGhlCj4gLSAq IGZpbGwgZnVuY3Rpb25zLgo+ICsgKiBsaWJkcm0gYnVmZmVyIG9iamVjdCB3aXRoIHN1aXRhYmxl IGRhdGEgbmVlZGVkIGJ5IHRoZQo+IHJlbmRlci92ZWJveCBjb3B5IGFuZAo+ICsgKiB0aGUgZmls bCBmdW5jdGlvbnMuCj4gICAqLwo+ICBzdHJ1Y3QgaWd0X2J1ZiB7Cj4gIAlkcm1faW50ZWxfYm8g KmJvOwo+ICAJdWludDMyX3Qgc3RyaWRlOwo+ICAJdWludDMyX3QgdGlsaW5nOwo+ICsJZW51bSBp OTE1X2NvbXByZXNzaW9uIGNvbXByZXNzaW9uOwo+ICAJdWludDMyX3QgYnBwOwo+ICAJdWludDMy X3QgKmRhdGE7Cj4gIAl1aW50MzJfdCBzaXplOwo+IEBAIC0zMDcsNiArMzEwLDI5IEBAIHR5cGVk ZWYgdm9pZCAoKmlndF9yZW5kZXJfY29weWZ1bmNfdCkoc3RydWN0Cj4gaW50ZWxfYmF0Y2hidWZm ZXIgKmJhdGNoLAo+ICAKPiAgaWd0X3JlbmRlcl9jb3B5ZnVuY190IGlndF9nZXRfcmVuZGVyX2Nv cHlmdW5jKGludCBkZXZpZCk7Cj4gIAo+ICsKPiArLyoqCj4gKyAqIGlndF92ZWJveF9jb3B5ZnVu Y190Ogo+ICsgKiBAYmF0Y2g6IGJhdGNoYnVmZmVyIG9iamVjdAo+ICsgKiBAc3JjOiBzb3VyY2Ug aS1nLXQgYnVmZmVyIG9iamVjdAo+ICsgKiBAd2lkdGg6IHdpZHRoIG9mIHRoZSBjb3BpZWQgcmVj dGFuZ2xlCj4gKyAqIEBoZWlnaHQ6IGhlaWdodCBvZiB0aGUgY29waWVkIHJlY3RhbmdsZQo+ICsg KiBAZHN0OiBkZXN0aW5hdGlvbiBpLWctdCBidWZmZXIgb2JqZWN0Cj4gKyAqCj4gKyAqIFRoaXMg aXMgdGhlIHR5cGUgb2YgdGhlIHBlci1wbGF0Zm9ybSB2ZWJveCBjb3B5IGZ1bmN0aW9ucy4gVGhl Cj4gKyAqIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIGNhbiBiZSBvYnRhaW5lZCBi eSBjYWxsaW5nCj4gKyAqIGlndF9nZXRfdmVib3hfY29weWZ1bmMoKS4KPiArICoKPiArICogQSB2 ZWJveCBjb3B5IGZ1bmN0aW9uIHdpbGwgZW1pdCBhIGJhdGNoYnVmZmVyIHRvIHRoZSBrZXJuZWwg d2hpY2gKPiBleGVjdXRlcwo+ICsgKiB0aGUgc3BlY2lmaWVkIGJsaXQgY29weSBvcGVyYXRpb24g dXNpbmcgdGhlIHZlYm94IGVuZ2luZS4KPiArICovCj4gK3R5cGVkZWYgdm9pZCAoKmlndF92ZWJv eF9jb3B5ZnVuY190KShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIKPiAqYmF0Y2gsCj4gKwkJCQkg ICAgIGNvbnN0IHN0cnVjdCBpZ3RfYnVmICpzcmMsCj4gKwkJCQkgICAgIHVuc2lnbmVkIHdpZHRo LCB1bnNpZ25lZCBoZWlnaHQsCj4gKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBpZ3RfYnVmICpkc3Qp Owo+ICsKPiAraWd0X3ZlYm94X2NvcHlmdW5jX3QgaWd0X2dldF92ZWJveF9jb3B5ZnVuYyhpbnQg ZGV2aWQpOwo+ICsKPiAgLyoqCj4gICAqIGlndF9maWxsZnVuY190Ogo+ICAgKiBAYmF0Y2g6IGJh dGNoYnVmZmVyIG9iamVjdAo+IGRpZmYgLS1naXQgYS9saWIvaW50ZWxfcmVnLmggYi9saWIvaW50 ZWxfcmVnLmgKPiBpbmRleCBjYWJmYzg3OS4uMGE5ZWUzNGMgMTAwNjQ0Cj4gLS0tIGEvbGliL2lu dGVsX3JlZy5oCj4gKysrIGIvbGliL2ludGVsX3JlZy5oCj4gQEAgLTY3NCw2ICs2NzQsNyBAQCBT T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQo+IFNPRlRXQVJFLgo+ ICAjZGVmaW5lIFJJTkdfSU5WQUxJRCAgICAgICAgMHgwMDAwMDAwMAo+ICAKPiAgI2RlZmluZSBH RU4xMl9HRlhfQVVYX1RBQkxFX0JBU0VfQUREUgkweDQyMDAKPiArI2RlZmluZSBHRU4xMl9WRUJP WF9BVVhfVEFCTEVfQkFTRV9BRERSCTB4NDIzMAo+ICAKPiAgCj4gIC8qIEJpdEJsdCBJbnN0cnVj dGlvbnMKPiBkaWZmIC0tZ2l0IGEvbGliL2lvY3RsX3dyYXBwZXJzLmggYi9saWIvaW9jdGxfd3Jh cHBlcnMuaAo+IGluZGV4IGU4MGUyMmYxLi43NjE0ZTY4OCAxMDA2NDQKPiAtLS0gYS9saWIvaW9j dGxfd3JhcHBlcnMuaAo+ICsrKyBiL2xpYi9pb2N0bF93cmFwcGVycy5oCj4gQEAgLTIwMiw2ICsy MDIsNyBAQCBzdHJ1Y3QgbG9jYWxfZHJtX21vZGVfZmJfY21kMiB7Cj4gICNkZWZpbmUgTE9DQUxf STkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTCWxvY2FsX2ZvdXJjY19tb2RfY29kZShJCj4gTlRF TCwgNCkKPiAgI2RlZmluZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTCWxvY2Fs X2ZvdXJjY19tb2RfY29kZShJCj4gTlRFTCwgNSkKPiAgI2RlZmluZSBMT0NBTF9JOTE1X0ZPUk1B VF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1MKPiBmb3VyY2NfbW9kX2NvZGUoSU5URUwsIDYpCj4g KyNkZWZpbmUgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTCj4gZm91 cmNjX21vZF9jb2RlKElOVEVMLCA3KQo+ICAjZGVmaW5lIExPQ0FMX0k5MTVfRk9STUFUX01PRF9Z X1RJTEVEX0dFTjEyX1JDX0NDU19DQwo+IGZvdXJjY19tb2RfY29kZShJTlRFTCwgOCkKPiAgI2Rl ZmluZSBMT0NBTF9EUk1fSU9DVExfTU9ERV9BRERGQjIJRFJNX0lPV1IoMHhCOCwJCQkKPiBcCj4g IAkJCQkJCSBzdHJ1Y3QKPiBsb2NhbF9kcm1fbW9kZV9mYl9jbWQyKQo+IGRpZmYgLS1naXQgYS9s aWIvbWVzb24uYnVpbGQgYi9saWIvbWVzb24uYnVpbGQKPiBpbmRleCA2MmQ2MTY1NC4uNTdlYjdk OTMgMTAwNjQ0Cj4gLS0tIGEvbGliL21lc29uLmJ1aWxkCj4gKysrIGIvbGliL21lc29uLmJ1aWxk Cj4gQEAgLTY0LDYgKzY0LDcgQEAgbGliX3NvdXJjZXMgPSBbCj4gIAknaWd0X2VkaWQuYycsCj4g IAknaWd0X2VsZC5jJywKPiAgCSdpZ3RfaW5mb2ZyYW1lLmMnLAo+ICsJJ3ZlYm94Y29weV9nZW4x Mi5jJywKPiAgXQo+ICAKPiAgbGliX2RlcHMgPSBbCj4gZGlmZiAtLWdpdCBhL2xpYi9yZW5kZXJj b3B5X2dlbjkuYyBiL2xpYi9yZW5kZXJjb3B5X2dlbjkuYwo+IGluZGV4IDk5MWE2MzkzLi5iZjlk MmVlMSAxMDA2NDQKPiAtLS0gYS9saWIvcmVuZGVyY29weV9nZW45LmMKPiArKysgYi9saWIvcmVu ZGVyY29weV9nZW45LmMKPiBAQCAtMTAzNyw3ICsxMDM3LDcgQEAgdm9pZCBfZ2VuOV9yZW5kZXJf Y29weWZ1bmMoc3RydWN0Cj4gaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAo+ICAJT1VUX0JBVENI KEc0WF9QSVBFTElORV9TRUxFQ1QgfCBQSVBFTElORV9TRUxFQ1RfM0QgfAo+ICAJCQkJR0VOOV9Q SVBFTElORV9TRUxFQ1RJT05fTUFTSyk7Cj4gIAo+IC0JZ2VuMTJfZW1pdF9hdXhfcGd0YWJsZV9z dGF0ZShiYXRjaCwgYXV4X3BndGFibGVfc3RhdGUpOwo+ICsJZ2VuMTJfZW1pdF9hdXhfcGd0YWJs ZV9zdGF0ZShiYXRjaCwgYXV4X3BndGFibGVfc3RhdGUsIHRydWUpOwo+ICAKPiAgCWdlbjhfZW1p dF9zaXAoYmF0Y2gpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvbGliL3ZlYm94Y29weS5oIGIvbGliL3Zl Ym94Y29weS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uOTQ5ZDgz YmYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3ZlYm94Y29weS5oCj4gQEAgLTAsMCArMSw5 IEBACj4gKyNpZm5kZWYgX19WRUJPWENPUFlfSF9fCj4gKyNkZWZpbmUgX19WRUJPWENPUFlfSF9f Cj4gKwo+ICt2b2lkIGdlbjEyX3ZlYm94X2NvcHlmdW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZl ciAqYmF0Y2gsCj4gKwkJCSAgY29uc3Qgc3RydWN0IGlndF9idWYgKnNyYywKPiArCQkJICB1bnNp Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAo+ICsJCQkgIGNvbnN0IHN0cnVjdCBpZ3RfYnVm ICpkc3QpOwo+ICsKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2xpYi92ZWJveGNvcHlfZ2VuMTIu YyBiL2xpYi92ZWJveGNvcHlfZ2VuMTIuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAuLjg3ODAwOTQxCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi92ZWJveGNvcHlf Z2VuMTIuYwo+IEBAIC0wLDAgKzEsMjY5IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5 IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4gb2J0YWluaW5nIGEKPiArICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZQo+ICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dAo+IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsCj4gc3Vi bGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv IHBlcm1pdCBwZXJzb25zIHRvIHdob20KPiB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcKPiBjb25kaXRpb25zOgo+ICsgKgo+ ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSAoaW5jbHVkaW5nCj4gdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsCj4gcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNv ZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKPiBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPiBNRVJDSEFOVEFC SUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS SU5HRU1FTlQuICBJTiBOTwo+IEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTCj4gT1IgT1RIRVIK PiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsCj4gQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCj4gT1RIRVIgREVBTElOR1MKPiArICog SU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiArI2luY2x1ZGUgPGRybS5oPgo+ICsKPiArI2luY2x1 ZGUgImlndC5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfYXV4X3BndGFibGUuaCIKPiArI2luY2x1ZGUg InZlYm94Y29weS5oIgo+ICsKPiArI2RlZmluZSBSOEc4QjhBOF9VTk9STQk4Cj4gKwo+ICtzdHJ1 Y3QgdmVib3hfc3VyZmFjZV9zdGF0ZSB7Cj4gKwlzdHJ1Y3Qgewo+ICsJCXVpbnQzMl90IGR3X2Nv dW50OjEyOwo+ICsJCXVpbnQzMl90IHBhZDo0Owo+ICsJCXVpbnQzMl90IHN1Yl9vcGNvZGVfYjo1 Owo+ICsJCXVpbnQzMl90IHN1Yl9vcGNvZGVfYTozOwo+ICsJCXVpbnQzMl90IG1lZGlhX2NtZF9v cGNvZGU6MzsKPiArCQl1aW50MzJfdCBtZWRpYV9jbWRfcGlwZWxpbmU6MjsKPiArCQl1aW50MzJf dCBjbWRfdHlwZTozOwo+ICsJfSBzczA7Cj4gKwlzdHJ1Y3Qgewo+ICsjZGVmaW5lIFZFQk9YX1NV UkZBQ0VfSU5QVVQJMAo+ICsjZGVmaW5lIFZFQk9YX1NVUkZBQ0VfT1VUUFVUCTEKPiArCQl1aW50 MzJfdCBzdXJmYWNlX2lkOjE7Cj4gKwkJdWludDMyX3QgcGFkOjMxOwo+ICsJfSBzczE7Cj4gKwlz dHJ1Y3Qgewo+ICsJCXVpbnQzMl90IHBhZDo0Owo+ICsJCXVpbnQzMl90IHdpZHRoOjE0Owo+ICsJ CXVpbnQzMl90IGhlaWdodDoxNDsKPiArCX0gc3MyOwo+ICsJc3RydWN0IHsKPiArI2RlZmluZSBW RUJPWF9USUxFX1dBTEtfWE1BSk9SIDAKPiArI2RlZmluZSBWRUJPWF9USUxFX1dBTEtfWU1BSk9S IDEKPiArCQl1aW50MzJfdCB0aWxlX3dhbGs6MTsKPiArCQl1aW50MzJfdCB0aWxlZF9zdXJmYWNl OjE7Cj4gKwkJdWludDMyX3QgY2hyb21hX2hhbGZfcGl0Y2g6MTsKPiArCQl1aW50MzJfdCBzdXJm YWNlX3BpdGNoOjE3Owo+ICsJCXVpbnQzMl90IGNocm9tYV9pbnRlcmxlYXZlOjE7Cj4gKwkJdWlu dDMyX3QgbHNiX3BhY2tlZF9lbmFibGU6MTsKPiArCQl1aW50MzJfdCBiYXllcl9pbnB1dF9hbGln bm1lbnQ6MjsKPiArCQl1aW50MzJfdCBiYXllcl9wYXR0ZXJuX2Zvcm1hdDoxOwo+ICsJCXVpbnQz Ml90IGJheWVyX3BhdHRlcm5fb2Zmc2V0OjI7Cj4gKwkJdWludDMyX3Qgc3VyZmFjZV9mb3JtYXQ6 NTsKPiArCX0gc3MzOwo+ICsJc3RydWN0IHsKPiArCQl1aW50MzJfdCB1X3lfb2Zmc2V0OjE1Owo+ ICsJCXVpbnQzMl90IHVfeF9vZmZzZXQ6MTM7Cj4gKwkJdWludDMyX3QgcGFkOjQ7Cj4gKwl9IHNz NDsKPiArCXN0cnVjdCB7Cj4gKwkJdWludDMyX3Qgdl95X29mZnNldDoxNTsKPiArCQl1aW50MzJf dCB2X3hfb2Zmc2V0OjEzOwo+ICsJCXVpbnQzMl90IHBhZDo0Owo+ICsJfSBzczU7Cj4gKwlzdHJ1 Y3Qgewo+ICsJCXVpbnQzMl90IGZyYW1lX3lfb2Zmc2V0OjE1Owo+ICsJCXVpbnQzMl90IGZyYW1l X3hfb2Zmc2V0OjE1Owo+ICsJCXVpbnQzMl90IHBhZDoyOwo+ICsJfSBzczY7Cj4gKwlzdHJ1Y3Qg ewo+ICsJCXVpbnQzMl90IGRlcml2ZWRfc3VyZmFjZV9waXRjaDoxNzsKPiArCQl1aW50MzJfdCBw YWQ6MTU7Cj4gKwl9IHNzNzsKPiArCXN0cnVjdCB7Cj4gKwkJdWludDMyX3Qgc2tpbl9zY29yZV9v dXRwdXRfc3VyZmFjZV9waXRjaDoxNzsKPiArCQl1aW50MzJfdCBwYWQ6MTU7Cj4gKwl9IHNzODsK PiArfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKPiArCj4gK3N0cnVjdCB2ZWJveF90aWxpbmdf Y29udmVydCB7Cj4gKwlzdHJ1Y3Qgewo+ICsJCXVpbnQzMl90IGR3X2NvdW50OjEyOwo+ICsJCXVp bnQzMl90IHBhZDo0Owo+ICsJCXVpbnQzMl90IHN1Yl9vcGNvZGVfYjo1Owo+ICsJCXVpbnQzMl90 IHN1Yl9vcGNvZGVfYTozOwo+ICsJCXVpbnQzMl90IGNtZF9vcGNvZGU6MzsKPiArCQl1aW50MzJf dCBwaXBlbGluZToyOwo+ICsJCXVpbnQzMl90IGNtZF90eXBlOjM7Cj4gKwl9IHRjMDsKPiArCXVu aW9uIHsKPiArCQlzdHJ1Y3Qgewo+ICsJCQl1aW50NjRfdCBpbnB1dF9lbmNyeXB0ZWRfZGF0YTox Owo+ICsJCQl1aW50NjRfdCBpbnB1dF9tb2NzX2lkeDo2Owo+ICsJCQl1aW50NjRfdCBpbnB1dF9t ZW1vcnlfY29tcHJlc3Npb25fZW5hYmxlOjE7Cj4gKyNkZWZpbmUgQ09NUFJFU1NJT05fVFlQRV9N RURJQSAwCj4gKyNkZWZpbmUgQ09NUFJFU1NJT05fVFlQRV9SRU5ERVIJMQo+ICsJCQl1aW50NjRf dCBpbnB1dF9jb21wcmVzc2lvbl90eXBlOjE7Cj4gKyNkZWZpbmUgVFJNT0RFX05PTkUJMAo+ICsj ZGVmaW5lIFRSTU9ERV9USUxFX1lGCTEKPiArI2RlZmluZSBUUk1PREVfVElMRV9ZUwkyCj4gKwkJ CXVpbnQ2NF90IGlucHV0X3RpbGVkX3Jlc291cmNlX21vZGU6MjsKPiArCQkJdWludDY0X3QgcGFk OjE7Cj4gKwkJCXVpbnQ2NF90IGlucHV0X2FkZHJlc3M6NTI7Cj4gKwkJfSB0YzFfMjsKPiArCQl1 aW50NjRfdCB0YzFfMl9sOwo+ICsJfTsKPiArCXVuaW9uIHsKPiArCQlzdHJ1Y3Qgewo+ICsJCQl1 aW50NjRfdCBvdXRwdXRfZW5jcnlwdGVkX2RhdGE6MTsKPiArCQkJdWludDY0X3Qgb3V0cHV0X21v Y3NfaWR4OjY7Cj4gKwkJCXVpbnQ2NF90IG91dHB1dF9tZW1vcnlfY29tcHJlc3Npb25fZW5hYmxl OjE7Cj4gKwkJCXVpbnQ2NF90IG91dHB1dF9jb21wcmVzc2lvbl90eXBlOjE7Cj4gKwkJCXVpbnQ2 NF90IG91dHB1dF90aWxlZF9yZXNvdXJjZV9tb2RlOjI7Cj4gKwkJCXVpbnQ2NF90IHBhZDoxOwo+ ICsJCQl1aW50NjRfdCBvdXRwdXRfYWRkcmVzczo1MjsKPiArCQl9IHRjM180Owo+ICsJCXVpbnQ2 NF90IHRjM180X2w7Cj4gKwl9Owo+ICt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwo+ICsKPiAr c3RhdGljIHZvaWQgZW1pdF9zdXJmYWNlX3N0YXRlX2NtZChzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZm ZXIgKmJhdGNoLAo+ICsJCQkJICAgaW50IHN1cmZhY2VfaWQsCj4gKwkJCQkgICBpbnQgd2lkdGgs IGludCBoZWlnaHQsIGludCBicHAsCj4gKwkJCQkgICBpbnQgcGl0Y2gsIHVpbnQzMl90IHRpbGlu ZywgaW50Cj4gZm9ybWF0KQo+ICt7Cj4gKwlzdHJ1Y3QgdmVib3hfc3VyZmFjZV9zdGF0ZSAqc3M7 Cj4gKwo+ICsJc3MgPSBpbnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX2FsbG9jKGJhdGNoLCBzaXpl b2YoKnNzKSwgNCk7Cj4gKwo+ICsJc3MtPnNzMC5jbWRfdHlwZSA9IDM7Cj4gKwlzcy0+c3MwLm1l ZGlhX2NtZF9waXBlbGluZSA9IDI7Cj4gKwlzcy0+c3MwLm1lZGlhX2NtZF9vcGNvZGUgPSA0Owo+ ICsJc3MtPnNzMC5kd19jb3VudCA9IDc7Cj4gKwo+ICsJc3MtPnNzMS5zdXJmYWNlX2lkID0gc3Vy ZmFjZV9pZDsKPiArCj4gKwlzcy0+c3MyLmhlaWdodCA9IGhlaWdodCAtIDE7Cj4gKwlzcy0+c3My LndpZHRoID0gd2lkdGggLSAxOwo+ICsKPiArCXNzLT5zczMuc3VyZmFjZV9mb3JtYXQgPSBmb3Jt YXQ7Cj4gKwlzcy0+c3MzLnN1cmZhY2VfcGl0Y2ggPSBwaXRjaCAtIDE7Cj4gKwlzcy0+c3MzLnRp bGVfd2FsayA9ICh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkgfHwKPiArCQkJICAgICh0aWxpbmcg PT0gSTkxNV9USUxJTkdfWWYpOwo+ICsJc3MtPnNzMy50aWxlZF9zdXJmYWNlID0gdGlsaW5nICE9 IEk5MTVfVElMSU5HX05PTkU7Cj4gKwo+ICsJc3MtPnNzNy5kZXJpdmVkX3N1cmZhY2VfcGl0Y2gg PSBwaXRjaCAtIDE7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGVtaXRfdGlsaW5nX2NvbnZlcnRf Y21kKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gKwkJCQkgICAgZHJtX2ludGVs X2JvICppbnB1dF9ibywKPiArCQkJCSAgICB1aW50MzJfdCBpbnB1dF90aWxpbmcsCj4gKwkJCQkg ICAgdWludDMyX3QgaW5wdXRfY29tcHJlc3Npb24sCj4gKwkJCQkgICAgZHJtX2ludGVsX2JvICpv dXRwdXRfYm8sCj4gKwkJCQkgICAgdWludDMyX3Qgb3V0cHV0X3RpbGluZywKPiArCQkJCSAgICB1 aW50MzJfdCBvdXRwdXRfY29tcHJlc3Npb24pCj4gK3sKPiArCXVpbnQzMl90IHJlbG9jX2RlbHRh Owo+ICsJc3RydWN0IHZlYm94X3RpbGluZ19jb252ZXJ0ICp0YzsKPiArCWludCByZXQ7Cj4gKwo+ ICsJdGMgPSBpbnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX2FsbG9jKGJhdGNoLCBzaXplb2YoKnRj KSwgOCk7Cj4gKwo+ICsJdGMtPnRjMC5jbWRfdHlwZSA9IDM7Cj4gKwl0Yy0+dGMwLnBpcGVsaW5l ID0gMjsKPiArCXRjLT50YzAuY21kX29wY29kZSA9IDQ7Cj4gKwl0Yy0+dGMwLnN1Yl9vcGNvZGVf YiA9IDE7Cj4gKwo+ICsJdGMtPnRjMC5kd19jb3VudCA9IDM7Cj4gKwo+ICsJaWYgKGlucHV0X2Nv bXByZXNzaW9uICE9IEk5MTVfQ09NUFJFU1NJT05fTk9ORSkgewo+ICsJCXRjLT50YzFfMi5pbnB1 dF9tZW1vcnlfY29tcHJlc3Npb25fZW5hYmxlID0gMTsKPiArCQl0Yy0+dGMxXzIuaW5wdXRfY29t cHJlc3Npb25fdHlwZSA9Cj4gKwkJCWlucHV0X2NvbXByZXNzaW9uID09IEk5MTVfQ09NUFJFU1NJ T05fUkVOREVSOwo+ICsJfQo+ICsJdGMtPnRjMV8yLmlucHV0X3RpbGVkX3Jlc291cmNlX21vZGUg PSBpbnB1dF90aWxpbmcgPT0KPiBJOTE1X1RJTElOR19ZZjsKPiArCXJlbG9jX2RlbHRhID0gdGMt PnRjMV8yX2w7Cj4gKwo+ICsJaWd0X2Fzc2VydChpbnB1dF9iby0+b2Zmc2V0NjQgPT0gQUxJR04o aW5wdXRfYm8tPm9mZnNldDY0LAo+IDB4MTAwMCkpOwo+ICsJdGMtPnRjMV8yLmlucHV0X2FkZHJl c3MgPSBpbnB1dF9iby0+b2Zmc2V0NjQgPj4gMTI7Cj4gKwlpZ3RfYXNzZXJ0KHJlbG9jX2RlbHRh IDw9IElOVDMyX01BWCk7Cj4gKwlyZXQgPSBkcm1faW50ZWxfYm9fZW1pdF9yZWxvYyhiYXRjaC0+ Ym8sCj4gKwkJCQkgICAgICBpbnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX29mZnNldCgKPiBiYXRj aCwgdGMpICsKPiArCQkJCQlvZmZzZXRvZih0eXBlb2YoKnRjKSwgdGMxXzIpLAo+ICsJCQkJICAg ICAgaW5wdXRfYm8sIHJlbG9jX2RlbHRhLAo+ICsJCQkJICAgICAgMCwgMCk7Cj4gKwlpZ3RfYXNz ZXJ0KHJldCA9PSAwKTsKPiArCj4gKwlpZiAob3V0cHV0X2NvbXByZXNzaW9uICE9IEk5MTVfQ09N UFJFU1NJT05fTk9ORSkgewo+ICsJCXRjLT50YzNfNC5vdXRwdXRfbWVtb3J5X2NvbXByZXNzaW9u X2VuYWJsZSA9IDE7Cj4gKwkJdGMtPnRjM180Lm91dHB1dF9jb21wcmVzc2lvbl90eXBlID0KPiAr CQkJb3V0cHV0X2NvbXByZXNzaW9uID09IEk5MTVfQ09NUFJFU1NJT05fUkVOREVSOwo+ICsJfQo+ ICsJdGMtPnRjM180Lm91dHB1dF90aWxlZF9yZXNvdXJjZV9tb2RlID0gb3V0cHV0X3RpbGluZyA9 PQo+IEk5MTVfVElMSU5HX1lmOwo+ICsJcmVsb2NfZGVsdGEgPSB0Yy0+dGMzXzRfbDsKPiArCj4g KwlpZ3RfYXNzZXJ0KG91dHB1dF9iby0+b2Zmc2V0NjQgPT0gQUxJR04ob3V0cHV0X2JvLT5vZmZz ZXQ2NCwKPiAweDEwMDApKTsKPiArCXRjLT50YzNfNC5vdXRwdXRfYWRkcmVzcyA9IG91dHB1dF9i by0+b2Zmc2V0NjQgPj4gMTI7Cj4gKwlpZ3RfYXNzZXJ0KHJlbG9jX2RlbHRhIDw9IElOVDMyX01B WCk7Cj4gKwlyZXQgPSBkcm1faW50ZWxfYm9fZW1pdF9yZWxvYyhiYXRjaC0+Ym8sCj4gKwkJCQkg ICAgICBpbnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX29mZnNldCgKPiBiYXRjaCwgdGMpICsKPiAr CQkJCQlvZmZzZXRvZih0eXBlb2YoKnRjKSwgdGMzXzQpLAo+ICsJCQkJICAgICAgb3V0cHV0X2Jv LCByZWxvY19kZWx0YSwKPiArCQkJCSAgICAgIDAsIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIpOwo+ ICsJaWd0X2Fzc2VydChyZXQgPT0gMCk7Cj4gKwo+ICt9Cj4gKwo+ICsvKiBCb3Jyb3dpbmcgdGhl IGlkZWEgZnJvbSB0aGUgcmVuZGVyY29weSBzdGF0ZSBzZXR1cC4gKi8KPiArI2RlZmluZSBCQVRD SF9TVEFURV9TUExJVCAyMDQ4Cj4gKwo+ICt2b2lkIGdlbjEyX3ZlYm94X2NvcHlmdW5jKHN0cnVj dCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gKwkJCSAgY29uc3Qgc3RydWN0IGlndF9idWYg KnNyYywKPiArCQkJICB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAo+ICsJCQkgIGNv bnN0IHN0cnVjdCBpZ3RfYnVmICpkc3QpCj4gK3sKPiArCXN0cnVjdCBhdXhfcGd0YWJsZV9pbmZv IGF1eF9wZ3RhYmxlX2luZm8gPSB7IH07Cj4gKwl1aW50MzJfdCBhdXhfcGd0YWJsZV9zdGF0ZTsK PiArCj4gKwlpZ3RfYXNzZXJ0KHNyYy0+YnBwID09IGRzdC0+YnBwKTsKPiArCj4gKwlpbnRlbF9i YXRjaGJ1ZmZlcl9mbHVzaF9vbl9yaW5nKGJhdGNoLCBJOTE1X0VYRUNfVkVCT1gpOwo+ICsKPiAr CWludGVsX2JhdGNoYnVmZmVyX2FsaWduKGJhdGNoLCA4KTsKPiArCj4gKwliYXRjaC0+cHRyID0g JmJhdGNoLT5idWZmZXJbQkFUQ0hfU1RBVEVfU1BMSVRdOwo+ICsKPiArCWdlbjEyX2F1eF9wZ3Rh YmxlX2luaXQoJmF1eF9wZ3RhYmxlX2luZm8sIGJhdGNoLT5idWZtZ3IsIHNyYywKPiBkc3QpOwo+ ICsKPiArCWF1eF9wZ3RhYmxlX3N0YXRlID0gZ2VuMTJfY3JlYXRlX2F1eF9wZ3RhYmxlX3N0YXRl KGJhdGNoLAo+ICsJCQkJCQkJICAgYXV4X3BndGFibGVfCj4gaW5mby5wZ3RhYmxlX2JvKTsKPiAr Cj4gKwlhc3NlcnQoYmF0Y2gtPnB0ciA8ICZiYXRjaC0+YnVmZmVyWzQwOTVdKTsKPiArCWJhdGNo LT5wdHIgPSBiYXRjaC0+YnVmZmVyOwo+ICsKPiArCWdlbjEyX2VtaXRfYXV4X3BndGFibGVfc3Rh dGUoYmF0Y2gsIGF1eF9wZ3RhYmxlX3N0YXRlLCBmYWxzZSk7Cj4gKwo+ICsJLyogVE9ETzogYWRk IHN1cHBvcnQgZm9yIG1vcmUgZm9ybWF0cyAqLwo+ICsJaWd0X2Fzc2VydChzcmMtPmJwcCA9PSAz Mik7Cj4gKwllbWl0X3N1cmZhY2Vfc3RhdGVfY21kKGJhdGNoLCBWRUJPWF9TVVJGQUNFX0lOUFVU LAo+ICsJCQkgICAgICAgd2lkdGgsIGhlaWdodCwgc3JjLT5icHAsIHNyYy0+c3RyaWRlLAo+ICsJ CQkgICAgICAgc3JjLT50aWxpbmcsIFI4RzhCOEE4X1VOT1JNKTsKPiArCj4gKwlpZ3RfYXNzZXJ0 KGRzdC0+YnBwID09IDMyKTsKPiArCWVtaXRfc3VyZmFjZV9zdGF0ZV9jbWQoYmF0Y2gsIFZFQk9Y X1NVUkZBQ0VfT1VUUFVULAo+ICsJCQkgICAgICAgd2lkdGgsIGhlaWdodCwgZHN0LT5icHAsIGRz dC0+c3RyaWRlLAo+ICsJCQkgICAgICAgZHN0LT50aWxpbmcsIFI4RzhCOEE4X1VOT1JNKTsKPiAr Cj4gKwllbWl0X3RpbGluZ19jb252ZXJ0X2NtZChiYXRjaCwKPiArCQkJCXNyYy0+Ym8sIHNyYy0+ dGlsaW5nLCBzcmMtPmNvbXByZXNzaW9uLAo+ICsJCQkJZHN0LT5ibywgZHN0LT50aWxpbmcsIGRz dC0KPiA+Y29tcHJlc3Npb24pOwo+ICsKPiArCU9VVF9CQVRDSChNSV9CQVRDSF9CVUZGRVJfRU5E KTsKPiArCj4gKwlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaF9vbl9yaW5nKGJhdGNoLCBJOTE1X0VY RUNfVkVCT1gpOwo+ICsKPiArCWdlbjEyX2F1eF9wZ3RhYmxlX2NsZWFudXAoJmF1eF9wZ3RhYmxl X2luZm8pOwo+ICsJaW50ZWxfYmF0Y2hidWZmZXJfcmVzZXQoYmF0Y2gpOwo+ICt9Cj4gZGlmZiAt LWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMKPiBiL3Rlc3RzL2k5MTUvZ2VtX3Jl bmRlcl9jb3B5LmMKPiBpbmRleCAxNWJhMTcwNC4uOWMzNmYzOGIgMTAwNjQ0Cj4gLS0tIGEvdGVz dHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYwo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9j b3B5LmMKPiBAQCAtNDcxLDYgKzQ3MSw3IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQo ZGF0YV90ICpkYXRhLCBzdHJ1Y3QKPiBpZ3RfYnVmICpidWYsCj4gIAkJYXV4X3dpZHRoID0gc2Ny YXRjaF9idWZfYXV4X3dpZHRoKGRhdGEtPmRldmlkLCBidWYpOwo+ICAJCWF1eF9oZWlnaHQgPSBz Y3JhdGNoX2J1Zl9hdXhfaGVpZ2h0KGRhdGEtPmRldmlkLCBidWYpOwo+ICAKPiArCQlidWYtPmNv bXByZXNzaW9uID0gY29tcHJlc3Npb247Cj4gIAkJYnVmLT5hdXgub2Zmc2V0ID0gYnVmLT5zdHJp ZGUgKiBBTElHTihoZWlnaHQsIDMyKTsKPiAgCQlidWYtPmF1eC5zdHJpZGUgPSBhdXhfd2lkdGg7 Cj4gIApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3Qt ZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=