From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 03/12] drm/i915: Unify intel_logical_ring_emit and intel_ring_emit Date: Tue, 24 Nov 2015 15:33:12 +0100 Message-ID: <20151124143312.GI17050@phenom.ffwll.local> References: <1448023432-10726-1-git-send-email-chris@chris-wilson.co.uk> <1448023432-10726-3-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f42.google.com (mail-wm0-f42.google.com [74.125.82.42]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2FA726E229 for ; Tue, 24 Nov 2015 06:33:16 -0800 (PST) Received: by wmvv187 with SMTP id v187so212351243wmv.1 for ; Tue, 24 Nov 2015 06:33:14 -0800 (PST) Content-Disposition: inline In-Reply-To: <1448023432-10726-3-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBOb3YgMjAsIDIwMTUgYXQgMTI6NDM6NDNQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IEJvdGggcGVyZm9ybSB0aGUgc2FtZSBhY3Rpb25zIHdpdGggbW9yZSBvciBsZXNzIGlu ZGlyZWN0aW9uLCBzbyBqdXN0Cj4gdW5pZnkgdGhlIGNvZGUuCj4gCj4gU2lnbmVkLW9mZi1ieTog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgfCAgIDggKy0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgIDM0ICsrKystLS0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgICAgfCAgMjYgKysrLS0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICAgfCAgMjYgKysrLS0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCAxMTggKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgg ICAgICAgICAgIHwgIDIxIC0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3Mu YyAgICAgICAgICB8ICAzMCArKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9v dmVybGF5LmMgICAgICAgfCAgNDIgKysrKystLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMgICAgfCAxMDcgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICAgIHwgIDE1ICstLS0KPiAg MTEgZmlsZXMgY2hhbmdlZCwgMTk1IGluc2VydGlvbnMoKyksIDIzNCBkZWxldGlvbnMoLSkKPiAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCA1YzNkMTFkMDIwZjAuLmM2MDEwNWUzNjI2 MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC00NjQyLDcgKzQ2NDIsNyBAQCBl cnI6Cj4gIAo+ICBpbnQgaTkxNV9nZW1fbDNfcmVtYXAoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsIGludCBzbGljZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZyA9IHJlcS0+cmluZzsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5y aW5nYnVmOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxLT5pOTE1 Owo+ICAJdTMyIHJlZ19iYXNlID0gR0VON19MM0xPR19CQVNFICsgKHNsaWNlICogMHgyMDApOwo+ ICAJdTMyICpyZW1hcF9pbmZvID0gZGV2X3ByaXYtPmwzX3Bhcml0eS5yZW1hcF9pbmZvW3NsaWNl XTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggODJhOWY3 MTk3ZDMyLi5jM2FkYzEyMWFhYjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jCj4gQEAgLTQ3OSw3ICs0NzksNyBAQCBpOTE1X2dlbV9jb250ZXh0X2dldChzdHJ1 Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYsIHUzMiBpZCkKPiAgc3RhdGljIGlu bGluZSBpbnQKPiAgbWlfc2V0X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsIHUzMiBod19mbGFncykKPiAgewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9 IHJlcS0+cmluZzsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5n YnVmOwo+ICAJdTMyIGZsYWdzID0gaHdfZmxhZ3MgfCBNSV9NTV9TUEFDRV9HVFQ7Cj4gIAljb25z dCBpbnQgbnVtX3JpbmdzID0KPiAgCQkvKiBVc2UgYW4gZXh0ZW5kZWQgdy9hIG9uIGl2YisgaWYg c2lnbmFsbGluZyBmcm9tIG90aGVyIHJpbmdzICovCj4gQEAgLTQ5NCw3ICs0OTQsNyBAQCBtaV9z ZXRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIGh3X2ZsYWdz KQo+ICAJICogaXRsYl9iZWZvcmVfY3R4X3N3aXRjaC4KPiAgCSAqLwo+ICAJaWYgKElTX0dFTjYo cmVxLT5pOTE1KSkgewo+IC0JCXJldCA9IHJpbmctPmZsdXNoKHJlcSwgSTkxNV9HRU1fR1BVX0RP TUFJTlMsIDApOwo+ICsJCXJldCA9IHJlcS0+cmluZy0+Zmx1c2gocmVxLCBJOTE1X0dFTV9HUFVf RE9NQUlOUywgMCk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJcmV0dXJuIHJldDsKPiAgCX0KPiBAQCAt NTIyLDcgKzUyMiw3IEBAIG1pX3NldF9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxLCB1MzIgaHdfZmxhZ3MpCj4gIAo+ICAJCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlf TE9BRF9SRUdJU1RFUl9JTU0obnVtX3JpbmdzKSk7Cj4gIAkJCWZvcl9lYWNoX3Jpbmcoc2lnbmFs bGVyLCByZXEtPmk5MTUsIGkpIHsKPiAtCQkJCWlmIChzaWduYWxsZXIgPT0gcmluZykKPiArCQkJ CWlmIChzaWduYWxsZXIgPT0gcmVxLT5yaW5nKQo+ICAJCQkJCWNvbnRpbnVlOwo+ICAKPiAgCQkJ CWludGVsX3JpbmdfZW1pdChyaW5nLCBSSU5HX1BTTUlfQ1RMKHNpZ25hbGxlci0+bW1pb19iYXNl KSk7Cj4gQEAgLTU0Nyw3ICs1NDcsNyBAQCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwgdTMyIGh3X2ZsYWdzKQo+ICAKPiAgCQkJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKG51bV9yaW5ncykpOwo+ICAJCQlmb3JfZWFjaF9y aW5nKHNpZ25hbGxlciwgcmVxLT5pOTE1LCBpKSB7Cj4gLQkJCQlpZiAoc2lnbmFsbGVyID09IHJp bmcpCj4gKwkJCQlpZiAoc2lnbmFsbGVyID09IHJlcS0+cmluZykKPiAgCQkJCQljb250aW51ZTsK ClRzaywgdW5yZWxhdGVkIGh1bmtzIGFib3ZlLiBBbmQgbWF5YmUgYSBjb2NjaSB0byBzL3JlcS0+ cmluZy9yZXEtPmVuZ2luZS8uCkF0IGxlYXN0IG1lbnRpb24gaW4gdGhlIGNvbW1pdCBtZXNzYWdl IHRoYXQgeW91ciBvbiBhIGNydXNhZGUgYWdhaW5zdApzdXBlcmZsb3VzIHJpbmcvZGV2L3doYXRl dmVyIHBvaW50ZXJzIGFuZCBhcmd1bWVudHMgd2hpbGUgaW4gdGhlIGFyZWEuCgo+ICAJCQkJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIFJJTkdfUFNNSV9DVEwoc2lnbmFsbGVyLT5tbWlvX2Jhc2UpKTsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gaW5kZXggZTgx NjRiNjQ0ZTBlLi41ZjFiOWI3ZGYwNTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTExMTMsMTQgKzExMTMsMTIgQEAgaTkxNV9nZW1fZXhl Y2J1ZmZlcl9yZXRpcmVfY29tbWFuZHMoc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMgKnBh cmFtcykKPiAgfQo+ICAKPiAgc3RhdGljIGludAo+IC1pOTE1X3Jlc2V0X2dlbjdfc29sX29mZnNl dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAtCQkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxKQo+ICtpOTE1X3Jlc2V0X2dlbjdfc29sX29mZnNldHMoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcgPSByZXEtPnJpbmc7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEt PnJpbmdidWY7Cj4gIAlpbnQgcmV0LCBpOwo+ICAKPiAtCWlmICghSVNfR0VONyhkZXYpIHx8IHJp bmcgIT0gJmRldl9wcml2LT5yaW5nW1JDU10pIHsKPiArCWlmICghSVNfR0VONyhyZXEtPmk5MTUp IHx8IHJlcS0+cmluZy0+aWQgIT0gUkNTKSB7Cj4gIAkJRFJNX0RFQlVHKCJzb2wgcmVzZXQgaXMg Z2VuNy9yY3Mgb25seVxuIik7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gQEAgLTExOTgs OSArMTE5Niw4IEBAIGk5MTVfZ2VtX3JpbmdidWZmZXJfc3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9l eGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAJCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dl bV9leGVjYnVmZmVyMiAqYXJncywKPiAgCQkJICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnZtYXMp Cj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwYXJhbXMtPmRldjsKPiAtCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSBwYXJhbXMtPnJpbmc7Cj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmcgPSBwYXJhbXMtPnJlcXVlc3QtPnJpbmdidWY7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBwYXJhbXMtPnJlcXVlc3QtPmk5MTU7Cj4gIAl1 NjQgZXhlY19zdGFydCwgZXhlY19sZW47Cj4gIAlpbnQgaW5zdHBfbW9kZTsKPiAgCXUzMiBpbnN0 cF9tYXNrOwo+IEBAIC0xMjE0LDM0ICsxMjExLDMxIEBAIGk5MTVfZ2VtX3JpbmdidWZmZXJfc3Vi bWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAJaWYgKHJl dCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCVdBUk4ocGFyYW1zLT5jdHgtPnBwZ3R0ICYmIHBh cmFtcy0+Y3R4LT5wcGd0dC0+cGRfZGlydHlfcmluZ3MgJiAoMTw8cmluZy0+aWQpLAo+IC0JICAg ICAiJXMgZGlkbid0IGNsZWFyIHJlbG9hZFxuIiwgcmluZy0+bmFtZSk7Cj4gLQo+ICAJaW5zdHBf bW9kZSA9IGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVDX0NPTlNUQU5UU19NQVNLOwo+ICAJaW5zdHBf bWFzayA9IEk5MTVfRVhFQ19DT05TVEFOVFNfTUFTSzsKPiAgCXN3aXRjaCAoaW5zdHBfbW9kZSkg ewo+ICAJY2FzZSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9HRU5FUkFMOgo+ICAJY2FzZSBJOTE1 X0VYRUNfQ09OU1RBTlRTX0FCU09MVVRFOgo+ICAJY2FzZSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JF TF9TVVJGQUNFOgo+IC0JCWlmIChpbnN0cF9tb2RlICE9IDAgJiYgcmluZyAhPSAmZGV2X3ByaXYt PnJpbmdbUkNTXSkgewo+ICsJCWlmIChpbnN0cF9tb2RlICE9IDAgJiYgcGFyYW1zLT5yaW5nLT5p ZCAhPSBSQ1MpIHsKPiAgCQkJRFJNX0RFQlVHKCJub24tMCByZWwgY29uc3RhbnRzIG1vZGUgb24g bm9uLVJDU1xuIik7Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ICAJCX0KPiAgCj4gIAkJaWYgKGlu c3RwX21vZGUgIT0gZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlKSB7Cj4gLQkJCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpIHsKPiArCQkJaWYgKElOVEVMX0lORk8oZGV2X3By aXYpLT5nZW4gPCA0KSB7Cj4gIAkJCQlEUk1fREVCVUcoIm5vIHJlbCBjb25zdGFudHMgb24gcHJl LWdlbjRcbiIpOwo+ICAJCQkJcmV0dXJuIC1FSU5WQUw7Cj4gIAkJCX0KPiAgCj4gLQkJCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+IDUgJiYKPiArCQkJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYp LT5nZW4gPiA1ICYmCj4gIAkJCSAgICBpbnN0cF9tb2RlID09IEk5MTVfRVhFQ19DT05TVEFOVFNf UkVMX1NVUkZBQ0UpIHsKPiAgCQkJCURSTV9ERUJVRygicmVsIHN1cmZhY2UgY29uc3RhbnRzIG1v ZGUgaW52YWxpZCBvbiBnZW41K1xuIik7Cj4gIAkJCQlyZXR1cm4gLUVJTlZBTDsKPiAgCQkJfQo+ ICAKPiAgCQkJLyogVGhlIEhXIGNoYW5nZWQgdGhlIG1lYW5pbmcgb24gdGhpcyBiaXQgb24gZ2Vu NiAqLwo+IC0JCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikKPiArCQkJaWYgKElOVEVM X0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNikKPiAgCQkJCWluc3RwX21hc2sgJj0gfkk5MTVfRVhF Q19DT05TVEFOVFNfUkVMX1NVUkZBQ0U7Cj4gIAkJfQo+ICAJCWJyZWFrOwo+IEBAIC0xMjUwLDcg KzEyNDQsNyBAQCBpOTE1X2dlbV9yaW5nYnVmZmVyX3N1Ym1pc3Npb24oc3RydWN0IGk5MTVfZXhl Y2J1ZmZlcl9wYXJhbXMgKnBhcmFtcywKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4g LQlpZiAocmluZyA9PSAmZGV2X3ByaXYtPnJpbmdbUkNTXSAmJgo+ICsJaWYgKHBhcmFtcy0+cmlu Zy0+aWQgPT0gUkNTICYmCj4gIAkgICAgaW5zdHBfbW9kZSAhPSBkZXZfcHJpdi0+cmVsYXRpdmVf Y29uc3RhbnRzX21vZGUpIHsKPiAgCQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHBhcmFtcy0+cmVx dWVzdCwgNCk7Cj4gIAkJaWYgKHJldCkKPiBAQCAtMTI2Niw3ICsxMjYwLDcgQEAgaTkxNV9nZW1f cmluZ2J1ZmZlcl9zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJh bXMsCj4gIAl9Cj4gIAo+ICAJaWYgKGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVDX0dFTjdfU09MX1JF U0VUKSB7Cj4gLQkJcmV0ID0gaTkxNV9yZXNldF9nZW43X3NvbF9vZmZzZXRzKGRldiwgcGFyYW1z LT5yZXF1ZXN0KTsKPiArCQlyZXQgPSBpOTE1X3Jlc2V0X2dlbjdfc29sX29mZnNldHMocGFyYW1z LT5yZXF1ZXN0KTsKPiAgCQlpZiAocmV0KQo+ICAJCQlyZXR1cm4gcmV0Owo+ICAJfQo+IEBAIC0x Mjc1LDkgKzEyNjksOSBAQCBpOTE1X2dlbV9yaW5nYnVmZmVyX3N1Ym1pc3Npb24oc3RydWN0IGk5 MTVfZXhlY2J1ZmZlcl9wYXJhbXMgKnBhcmFtcywKPiAgCWV4ZWNfc3RhcnQgPSBwYXJhbXMtPmJh dGNoX29ial92bV9vZmZzZXQgKwo+ICAJCSAgICAgcGFyYW1zLT5hcmdzX2JhdGNoX3N0YXJ0X29m ZnNldDsKPiAgCj4gLQlyZXQgPSByaW5nLT5kaXNwYXRjaF9leGVjYnVmZmVyKHBhcmFtcy0+cmVx dWVzdCwKPiAtCQkJCQlleGVjX3N0YXJ0LCBleGVjX2xlbiwKPiAtCQkJCQlwYXJhbXMtPmRpc3Bh dGNoX2ZsYWdzKTsKPiArCXJldCA9IHBhcmFtcy0+cmluZy0+ZGlzcGF0Y2hfZXhlY2J1ZmZlcihw YXJhbXMtPnJlcXVlc3QsCj4gKwkJCQkJCWV4ZWNfc3RhcnQsIGV4ZWNfbGVuLAo+ICsJCQkJCQlw YXJhbXMtPmRpc3BhdGNoX2ZsYWdzKTsKCkkgZ3Vlc3Mgd2Ugc2hvdWxkIGp1c3Qgc2hvdmVsIGFs bCB0aGUgc3R1ZmYgaW4gcGFyYW1zIGludG8gcmVxdWVzdApldmVudHVhbGx5IC4uLgoKPiAgCWlm IChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMKPiBpbmRleCA3ODIwZTg5ODMxMzYuLjQ2MDg4ODRhZGZjOCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTY1MSw3ICs2NTEsNyBAQCBzdGF0aWMgaW50IGdlbjhf d3JpdGVfcGRwKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJCQkgIHVuc2ln bmVkIGVudHJ5LAo+ICAJCQkgIGRtYV9hZGRyX3QgYWRkcikKPiAgewo+IC0Jc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVy ICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICAJaW50IHJldDsKPiAgCj4gIAlCVUdfT04oZW50cnkg Pj0gNCk7Cj4gQEAgLTY2MSwxMCArNjYxLDEwIEBAIHN0YXRpYyBpbnQgZ2VuOF93cml0ZV9wZHAo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4g IAlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwo+IC0JaW50 ZWxfcmluZ19lbWl0KHJpbmcsIEdFTjhfUklOR19QRFBfVURXKHJpbmcsIGVudHJ5KSk7Cj4gKwlp bnRlbF9yaW5nX2VtaXQocmluZywgR0VOOF9SSU5HX1BEUF9VRFcocmVxLT5yaW5nLCBlbnRyeSkp Owo+ICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHVwcGVyXzMyX2JpdHMoYWRkcikpOwo+ICAJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKPiAtCWludGVsX3Jp bmdfZW1pdChyaW5nLCBHRU44X1JJTkdfUERQX0xEVyhyaW5nLCBlbnRyeSkpOwo+ICsJaW50ZWxf cmluZ19lbWl0KHJpbmcsIEdFTjhfUklOR19QRFBfTERXKHJlcS0+cmluZywgZW50cnkpKTsKPiAg CWludGVsX3JpbmdfZW1pdChyaW5nLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTsKPiAgCWludGVsX3Jp bmdfYWR2YW5jZShyaW5nKTsKPiAgCj4gQEAgLTE1ODgsMTEgKzE1ODgsMTEgQEAgc3RhdGljIHVp bnQzMl90IGdldF9wZF9vZmZzZXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICBzdGF0 aWMgaW50IGhzd19tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+ICAJCQkg c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAq cmluZyA9IHJlcS0+cmluZ2J1ZjsKPiAgCWludCByZXQ7Cj4gIAo+ICAJLyogTkI6IFRMQnMgbXVz dCBiZSBmbHVzaGVkIGFuZCBpbnZhbGlkYXRlZCBiZWZvcmUgYSBzd2l0Y2ggKi8KPiAtCXJldCA9 IHJpbmctPmZsdXNoKHJlcSwgSTkxNV9HRU1fR1BVX0RPTUFJTlMsIEk5MTVfR0VNX0dQVV9ET01B SU5TKTsKPiArCXJldCA9IHJlcS0+cmluZy0+Zmx1c2gocmVxLCBJOTE1X0dFTV9HUFVfRE9NQUlO UywgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ ICAKPiBAQCAtMTYwMSw5ICsxNjAxLDkgQEAgc3RhdGljIGludCBoc3dfbW1fc3dpdGNoKHN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAgCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgyKSk7Cj4gLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgUklOR19QUF9ESVJfRENMVihyaW5nKSk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmlu ZywgUklOR19QUF9ESVJfRENMVihyZXEtPnJpbmcpKTsKPiAgCWludGVsX3JpbmdfZW1pdChyaW5n LCBQUF9ESVJfRENMVl8yRyk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZywgUklOR19QUF9ESVJf QkFTRShyaW5nKSk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywgUklOR19QUF9ESVJfQkFTRShy ZXEtPnJpbmcpKTsKPiAgCWludGVsX3JpbmdfZW1pdChyaW5nLCBnZXRfcGRfb2Zmc2V0KHBwZ3R0 KSk7Cj4gIAlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Cj4gIAlpbnRlbF9yaW5nX2Fk dmFuY2UocmluZyk7Cj4gQEAgLTE2MjUsMTEgKzE2MjUsMTEgQEAgc3RhdGljIGludCB2Z3B1X21t X3N3aXRjaChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4gIHN0YXRpYyBpbnQgZ2VuN19t bV9zd2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+ICAJCQkgIHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nID0gcmVxLT5yaW5nOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEt PnJpbmdidWY7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCS8qIE5COiBUTEJzIG11c3QgYmUgZmx1c2hl ZCBhbmQgaW52YWxpZGF0ZWQgYmVmb3JlIGEgc3dpdGNoICovCj4gLQlyZXQgPSByaW5nLT5mbHVz aChyZXEsIEk5MTVfR0VNX0dQVV9ET01BSU5TLCBJOTE1X0dFTV9HUFVfRE9NQUlOUyk7Cj4gKwly ZXQgPSByZXEtPnJpbmctPmZsdXNoKHJlcSwgSTkxNV9HRU1fR1BVX0RPTUFJTlMsIEk5MTVfR0VN X0dQVV9ET01BSU5TKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gQEAgLTE2 MzgsMTYgKzE2MzgsMTYgQEAgc3RhdGljIGludCBnZW43X21tX3N3aXRjaChzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQsCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gIAlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMikpOwo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmcs IFJJTkdfUFBfRElSX0RDTFYocmluZykpOwo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmcsIFJJTkdf UFBfRElSX0RDTFYocmVxLT5yaW5nKSk7Cj4gIAlpbnRlbF9yaW5nX2VtaXQocmluZywgUFBfRElS X0RDTFZfMkcpOwo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIFJJTkdfUFBfRElSX0JBU0Uocmlu ZykpOwo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmcsIFJJTkdfUFBfRElSX0JBU0UocmVxLT5yaW5n KSk7Cj4gIAlpbnRlbF9yaW5nX2VtaXQocmluZywgZ2V0X3BkX29mZnNldChwcGd0dCkpOwo+ICAJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwo+ICAJaW50ZWxfcmluZ19hZHZhbmNlKHJp bmcpOwo+ICAKPiAgCS8qIFhYWDogUkNTIGlzIHRoZSBvbmx5IG9uZSB0byBhdXRvIGludmFsaWRh dGUgdGhlIFRMQnM/ICovCj4gLQlpZiAocmluZy0+aWQgIT0gUkNTKSB7Cj4gLQkJcmV0ID0gcmlu Zy0+Zmx1c2gocmVxLCBJOTE1X0dFTV9HUFVfRE9NQUlOUywgSTkxNV9HRU1fR1BVX0RPTUFJTlMp Owo+ICsJaWYgKHJlcS0+cmluZy0+aWQgIT0gUkNTKSB7Cj4gKwkJcmV0ID0gcmVxLT5yaW5nLT5m bHVzaChyZXEsIEk5MTVfR0VNX0dQVV9ET01BSU5TLCBJOTE1X0dFTV9HUFVfRE9NQUlOUyk7Cj4g IAkJaWYgKHJldCkKPiAgCQkJcmV0dXJuIHJldDsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCj4gaW5kZXggNmJkMjA0OTgwYjcwLi5mNmRhZTJjZmQ5YzkgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTEwODI0LDcgKzEwODI0LDcgQEAg c3RhdGljIGludCBpbnRlbF9nZW4yX3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkJCSB1aW50MzJf dCBmbGFncykKPiAgewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmlu ZzsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICAJ c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJ dTMyIGZsaXBfbWFzazsKPiAgCWludCByZXQ7Cj4gQEAgLTEwODU5LDcgKzEwODU5LDcgQEAgc3Rh dGljIGludCBpbnRlbF9nZW4zX3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg CQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkJCSB1aW50MzJfdCBm bGFncykKPiAgewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsK PiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICAJc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJdTMy IGZsaXBfbWFzazsKPiAgCWludCByZXQ7Cj4gQEAgLTEwODkxLDggKzEwODkxLDggQEAgc3RhdGlj IGludCBpbnRlbF9nZW40X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJ CSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkJCSB1aW50MzJfdCBmbGFn cykKPiAgewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsKPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g KwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJlcS0+aTkxNTsKPiAgCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCXVpbnQzMl90IHBm LCBwaXBlc3JjOwo+ICAJaW50IHJldDsKPiBAQCAtMTA5MzAsOCArMTA5MzAsOCBAQCBzdGF0aWMg aW50IGludGVsX2dlbjZfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJ IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJCQkJIHVpbnQzMl90IGZsYWdz KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOwo+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAr CXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxLT5pOTE1Owo+ICAJc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJdWludDMyX3QgcGYs IHBpcGVzcmM7Cj4gIAlpbnQgcmV0Owo+IEBAIC0xMDk2Niw3ICsxMDk2Niw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfZ2VuN19xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkg c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIAkJCQkgdWludDMyX3QgZmxhZ3Mp Cj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7Cj4gKwlz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiAgCXN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCXVpbnQzMl90 IHBsYW5lX2JpdCA9IDA7Cj4gIAlpbnQgbGVuLCByZXQ7Cj4gQEAgLTEwOTg3LDE0ICsxMDk4Nywx NCBAQCBzdGF0aWMgaW50IGludGVsX2dlbjdfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ICAJfQo+ICAKPiAgCWxlbiA9IDQ7Cj4gLQlpZiAocmluZy0+aWQgPT0gUkNTKSB7Cj4g KwlpZiAocmVxLT5yaW5nLT5pZCA9PSBSQ1MpIHsKPiAgCQlsZW4gKz0gNjsKPiAgCQkvKgo+ICAJ CSAqIE9uIEdlbiA4LCBTUk0gaXMgbm93IHRha2luZyBhbiBleHRyYSBkd29yZCB0byBhY2NvbW1v ZGF0ZQo+ICAJCSAqIDQ4Yml0cyBhZGRyZXNzZXMsIGFuZCB3ZSBuZWVkIGEgTk9PUCBmb3IgdGhl IGJhdGNoIHNpemUgdG8KPiAgCQkgKiBzdGF5IGV2ZW4uCj4gIAkJICovCj4gLQkJaWYgKElTX0dF TjgoZGV2KSkKPiArCQlpZiAoSVNfR0VOOChyZXEtPmk5MTUpKQo+ICAJCQlsZW4gKz0gMjsKPiAg CX0KPiAgCj4gQEAgLTExMDI1LDIxICsxMTAyNSwyMSBAQCBzdGF0aWMgaW50IGludGVsX2dlbjdf cXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJICogZm9yIHRoZSBSQ1MgYWxz byBkb2Vzbid0IGFwcGVhciB0byBkcm9wIGV2ZW50cy4gU2V0dGluZyB0aGUgREVSUk1SCj4gIAkg KiB0byB6ZXJvIGRvZXMgbGVhZCB0byBsb2NrdXBzIHdpdGhpbiBNSV9ESVNQTEFZX0ZMSVAuCj4g IAkgKi8KPiAtCWlmIChyaW5nLT5pZCA9PSBSQ1MpIHsKPiArCWlmIChyZXEtPnJpbmctPmlkID09 IFJDUykgewo+ICAJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgx KSk7Cj4gIAkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIERFUlJNUik7Cj4gIAkJaW50ZWxfcmluZ19l bWl0KHJpbmcsIH4oREVSUk1SX1BJUEVBX1BSSV9GTElQX0RPTkUgfAo+ICAJCQkJCURFUlJNUl9Q SVBFQl9QUklfRkxJUF9ET05FIHwKPiAgCQkJCQlERVJSTVJfUElQRUNfUFJJX0ZMSVBfRE9ORSkp Owo+IC0JCWlmIChJU19HRU44KGRldikpCj4gKwkJaWYgKElTX0dFTjgocmVxLT5pOTE1KSkKPiAg CQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1NUT1JFX1JFR0lTVEVSX01FTV9HRU44KDEpIHwK PiAgCQkJCQkgICAgICBNSV9TUk1fTFJNX0dMT0JBTF9HVFQpOwo+ICAJCWVsc2UKPiAgCQkJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1NUT1JFX1JFR0lTVEVSX01FTSgxKSB8Cj4gIAkJCQkJICAg ICAgTUlfU1JNX0xSTV9HTE9CQUxfR1RUKTsKPiAgCQlpbnRlbF9yaW5nX2VtaXQocmluZywgREVS Uk1SKTsKPiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZywgcmluZy0+c2NyYXRjaC5ndHRfb2Zmc2V0 ICsgMjU2KTsKPiAtCQlpZiAoSVNfR0VOOChkZXYpKSB7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJp bmcsIHJlcS0+cmluZy0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMjU2KTsKPiArCQlpZiAoSVNfR0VO OChyZXEtPmk5MTUpKSB7Cj4gIAkJCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKPiAgCQkJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwo+ICAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYwo+IGluZGV4IGNmYTc3YTU5YjM1Mi4uMGRiMjNjNDc0MDQ1IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMKPiBAQCAtNzAwLDExICs3MDAsOSBAQCBzdGF0aWMgaW50IGxvZ2ljYWxf cmluZ193YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAg c3RhdGljIHZvaWQKPiAgaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2VfYW5kX3N1Ym1pdChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwo+IC0KPiAtCWludGVsX2xvZ2ljYWxfcmlu Z19hZHZhbmNlKHJlcXVlc3QtPnJpbmdidWYpOwo+ICsJaW50ZWxfcmluZ19hZHZhbmNlKHJlcXVl c3QtPnJpbmdidWYpOwo+ICAKPiAtCWlmIChpbnRlbF9yaW5nX3N0b3BwZWQocmluZykpCj4gKwlp ZiAoaW50ZWxfcmluZ19zdG9wcGVkKHJlcXVlc3QtPnJpbmcpKQo+ICAJCXJldHVybjsKPiAgCj4g IAlleGVjbGlzdHNfY29udGV4dF9xdWV1ZShyZXF1ZXN0KTsKPiBAQCAtODg3LDExICs4ODUsMTEg QEAgaW50IGludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJf cGFyYW1zICpwYXJhbXMsCj4gIAkJaWYgKHJldCkKPiAgCQkJcmV0dXJuIHJldDsKPiAgCj4gLQkJ aW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Cj4gLQkJaW50ZWxfbG9n aWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwo+IC0JCWlu dGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIElOU1RQTSk7Cj4gLQkJaW50ZWxfbG9naWNh bF9yaW5nX2VtaXQocmluZ2J1ZiwgaW5zdHBfbWFzayA8PCAxNiB8IGluc3RwX21vZGUpOwo+IC0J CWludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwo+ICsJCWludGVsX3JpbmdfZW1p dChyaW5nYnVmLCBNSV9OT09QKTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTE9B RF9SRUdJU1RFUl9JTU0oMSkpOwo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBJTlNUUE0p Owo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBpbnN0cF9tYXNrIDw8IDE2IHwgaW5zdHBf bW9kZSk7Cj4gKwkJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwo+ICAKPiAgCQlkZXZfcHJp di0+cmVsYXRpdmVfY29uc3RhbnRzX21vZGUgPSBpbnN0cF9tb2RlOwo+ICAJfQo+IEBAIC0xMDQx LDE0ICsxMDM5LDE0IEBAIHN0YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX3dvcmthcm91bmRz X2VtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIAlpZiAocmV0KQo+ICAJ CXJldHVybiByZXQ7Cj4gIAo+IC0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlf TE9BRF9SRUdJU1RFUl9JTU0ody0+Y291bnQpKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5nYnVm LCBNSV9MT0FEX1JFR0lTVEVSX0lNTSh3LT5jb3VudCkpOwo+ICAJZm9yIChpID0gMDsgaSA8IHct PmNvdW50OyBpKyspIHsKPiAtCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCB3LT5y ZWdbaV0uYWRkcik7Cj4gLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1Ziwgdy0+cmVn W2ldLnZhbHVlKTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1Ziwgdy0+cmVnW2ldLmFkZHIp Owo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCB3LT5yZWdbaV0udmFsdWUpOwo+ICAJfQo+ IC0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Cj4gKwlpbnRlbF9y aW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Cj4gIAo+IC0JaW50ZWxfbG9naWNhbF9yaW5nX2Fk dmFuY2UocmluZ2J1Zik7Cj4gKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7Cj4gIAo+ICAJ cmluZy0+Z3B1X2NhY2hlc19kaXJ0eSA9IHRydWU7Cj4gIAlyZXQgPSBsb2dpY2FsX3JpbmdfZmx1 c2hfYWxsX2NhY2hlcyhyZXEpOwo+IEBAIC0xNDc4LDE4ICsxNDc2LDE4IEBAIHN0YXRpYyBpbnQg aW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcGRwcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlpbnRlbF9sb2dpY2Fs X3JpbmdfZW1pdChyaW5nYnVmLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fbHJpX2NtZHMpKTsK PiArCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fbHJp X2NtZHMpKTsKPiAgCWZvciAoaSA9IEdFTjhfTEVHQUNZX1BEUEVTIC0gMTsgaSA+PSAwOyBpLS0p IHsKPiAgCQljb25zdCBkbWFfYWRkcl90IHBkX2RhZGRyID0gaTkxNV9wYWdlX2Rpcl9kbWFfYWRk cihwcGd0dCwgaSk7Cj4gIAo+IC0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIEdF TjhfUklOR19QRFBfVURXKHJpbmcsIGkpKTsKPiAtCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChy aW5nYnVmLCB1cHBlcl8zMl9iaXRzKHBkX2RhZGRyKSk7Cj4gLQkJaW50ZWxfbG9naWNhbF9yaW5n X2VtaXQocmluZ2J1ZiwgR0VOOF9SSU5HX1BEUF9MRFcocmluZywgaSkpOwo+IC0JCWludGVsX2xv Z2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIGxvd2VyXzMyX2JpdHMocGRfZGFkZHIpKTsKPiArCQlp bnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgR0VOOF9SSU5HX1BEUF9VRFcocmluZywgaSkpOwo+ICsJ CWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCB1cHBlcl8zMl9iaXRzKHBkX2RhZGRyKSk7Cj4gKwkJ aW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIEdFTjhfUklOR19QRFBfTERXKHJpbmcsIGkpKTsKPiAr CQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgbG93ZXJfMzJfYml0cyhwZF9kYWRkcikpOwo+ICAJ fQo+ICAKPiAtCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOwo+IC0J aW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7Cj4gKwlpbnRlbF9yaW5nX2VtaXQo cmluZ2J1ZiwgTUlfTk9PUCk7Cj4gKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7Cj4gIAo+ ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtMTUyMywxNCArMTUyMSwxNCBAQCBzdGF0aWMgaW50IGdl bjhfZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQly ZXR1cm4gcmV0Owo+ICAKPiAgCS8qIEZJWE1FKEJEVyk6IEFkZHJlc3Mgc3BhY2UgYW5kIHNlY3Vy aXR5IHNlbGVjdG9ycy4gKi8KPiAtCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1J X0JBVENIX0JVRkZFUl9TVEFSVF9HRU44IHwKPiAtCQkJCShwcGd0dDw8OCkgfAo+IC0JCQkJKGRp c3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9SUyA/Cj4gLQkJCQkgTUlfQkFUQ0hfUkVTT1VS Q0VfU1RSRUFNRVIgOiAwKSk7Cj4gLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBs b3dlcl8zMl9iaXRzKG9mZnNldCkpOwo+IC0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1 ZiwgdXBwZXJfMzJfYml0cyhvZmZzZXQpKTsKPiAtCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsIE1JX05PT1ApOwo+IC0JaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7 Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfQkFUQ0hfQlVGRkVSX1NUQVJUX0dFTjgg fAo+ICsJCQkocHBndHQ8PDgpIHwKPiArCQkJKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRD SF9SUyA/Cj4gKwkJCSBNSV9CQVRDSF9SRVNPVVJDRV9TVFJFQU1FUiA6IDApKTsKPiArCWludGVs X3JpbmdfZW1pdChyaW5nYnVmLCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOwo+ICsJaW50ZWxfcmlu Z19lbWl0KHJpbmdidWYsIHVwcGVyXzMyX2JpdHMob2Zmc2V0KSk7Cj4gKwlpbnRlbF9yaW5nX2Vt aXQocmluZ2J1ZiwgTUlfTk9PUCk7Cj4gKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7Cj4g IAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtMTU5OCwxMyArMTU5NiwxMyBAQCBzdGF0aWMgaW50 IGdlbjhfZW1pdF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCj4g IAkJCWNtZCB8PSBNSV9JTlZBTElEQVRFX0JTRDsKPiAgCX0KPiAgCj4gLQlpbnRlbF9sb2dpY2Fs X3JpbmdfZW1pdChyaW5nYnVmLCBjbWQpOwo+IC0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmlu Z2J1ZiwKPiAtCQkJCUk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfAo+IC0JCQkJTUlfRkxVU0hf RFdfVVNFX0dUVCk7Cj4gLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsgLyog dXBwZXIgYWRkciAqLwo+IC0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7IC8q IHZhbHVlICovCj4gLQlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKPiArCWlu dGVsX3JpbmdfZW1pdChyaW5nYnVmLCBjbWQpOwo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYs Cj4gKwkJCUk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfAo+ICsJCQlNSV9GTFVTSF9EV19VU0Vf R1RUKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsgLyogdXBwZXIgYWRkciAqLwo+ ICsJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIDApOyAvKiB2YWx1ZSAqLwo+ICsJaW50ZWxfcmlu Z19hZHZhbmNlKHJpbmdidWYpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTE2NTEsMjEg KzE2NDksMjEgQEAgc3RhdGljIGludCBnZW44X2VtaXRfZmx1c2hfcmVuZGVyKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAgCWlmICh2 Zl9mbHVzaF93YSkgewo+IC0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIEdGWF9P UF9QSVBFX0NPTlRST0woNikpOwo+IC0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYs IDApOwo+IC0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwo+IC0JCWludGVs X2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwo+IC0JCWludGVsX2xvZ2ljYWxfcmluZ19l bWl0KHJpbmdidWYsIDApOwo+IC0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDAp Owo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsK PiArCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJp bmdidWYsIDApOwo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKPiArCQlpbnRlbF9y aW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwo+ ICAJfQo+ICAKPiAtCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIEdGWF9PUF9QSVBF X0NPTlRST0woNikpOwo+IC0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgZmxhZ3Mp Owo+IC0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1Ziwgc2NyYXRjaF9hZGRyKTsKPiAt CWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwo+IC0JaW50ZWxfbG9naWNhbF9y aW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4gLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVm LCAwKTsKPiAtCWludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwo+ICsJaW50ZWxf cmluZ19lbWl0KHJpbmdidWYsIEdGWF9PUF9QSVBFX0NPTlRST0woNikpOwo+ICsJaW50ZWxfcmlu Z19lbWl0KHJpbmdidWYsIGZsYWdzKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBzY3Jh dGNoX2FkZHIpOwo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwo+ICsJaW50ZWxfcmlu Z19lbWl0KHJpbmdidWYsIDApOwo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwo+ICsJ aW50ZWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAg LTE2OTksMjMgKzE2OTcsMjMgQEAgc3RhdGljIGludCBnZW44X2VtaXRfcmVxdWVzdChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gIAljbWQgPSBNSV9TVE9SRV9EV09SRF9J TU1fR0VONDsKPiAgCWNtZCB8PSBNSV9HTE9CQUxfR1RUOwo+ICAKPiAtCWludGVsX2xvZ2ljYWxf cmluZ19lbWl0KHJpbmdidWYsIGNtZCk7Cj4gLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5n YnVmLAo+IC0JCQkJKHJpbmctPnN0YXR1c19wYWdlLmdmeF9hZGRyICsKPiAtCQkJCShJOTE1X0dF TV9IV1NfSU5ERVggPDwgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpKSk7Cj4gLQlpbnRlbF9s b2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKPiAtCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0 KHJpbmdidWYsIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJlcXVlc3QpKTsKPiAtCWludGVs X2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX1VTRVJfSU5URVJSVVBUKTsKPiAtCWludGVs X2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOwo+ICsJaW50ZWxfcmluZ19lbWl0 KHJpbmdidWYsIGNtZCk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwKPiArCQkJKHJpbmct PnN0YXR1c19wYWdlLmdmeF9hZGRyICsKPiArCQkJIChJOTE1X0dFTV9IV1NfSU5ERVggPDwgTUlf U1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpKSk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZ2J1Ziwg MCk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vx bm8ocmVxdWVzdCkpOwo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX1VTRVJfSU5URVJS VVBUKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKPiAgCWludGVsX2xv Z2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQocmVxdWVzdCk7Cj4gIAo+ICAJLyoKPiAgCSAq IEhlcmUgd2UgYWRkIHR3byBleHRyYSBOT09QcyBhcyBwYWRkaW5nIHRvIGF2b2lkCj4gIAkgKiBs aXRlIHJlc3RvcmUgb2YgYSBjb250ZXh0IHdpdGggSEVBRD09VEFJTC4KPiAgCSAqLwo+IC0JaW50 ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Cj4gLQlpbnRlbF9sb2dpY2Fs X3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKPiAtCWludGVsX2xvZ2ljYWxfcmluZ19hZHZh bmNlKHJpbmdidWYpOwo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOwo+ICsJ aW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOwo+ICsJaW50ZWxfcmluZ19hZHZhbmNl KHJpbmdidWYpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmgKPiBpbmRleCA4YjU2ZmI5MzQ3NjMuLjg2MTY2ODkxOWU1YSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5oCj4gQEAgLTQ1LDI3ICs0NSw2IEBAIGludCBpbnRlbF9sb2dpY2FsX3Jpbmdz X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIGludCBpbnRlbF9sb2dpY2FsX3Jpbmdf YmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBudW1fZHdvcmRzKTsK PiAgCj4gIGludCBsb2dpY2FsX3JpbmdfZmx1c2hfYWxsX2NhY2hlcyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSk7Cj4gLS8qKgo+IC0gKiBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5j ZSgpIC0gYWR2YW5jZSB0aGUgcmluZ2J1ZmZlciB0YWlsCj4gLSAqIEByaW5nYnVmOiBSaW5nYnVm ZmVyIHRvIGFkdmFuY2UuCj4gLSAqCj4gLSAqIFRoZSB0YWlsIGlzIG9ubHkgdXBkYXRlZCBpbiBv dXIgbG9naWNhbCByaW5nYnVmZmVyIHN0cnVjdC4KPiAtICovCj4gLXN0YXRpYyBpbmxpbmUgdm9p ZCBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmlu Z2J1ZikKPiAtewo+IC0JaW50ZWxfcmluZ2J1ZmZlcl9hZHZhbmNlKHJpbmdidWYpOwo+IC19Cj4g LQo+IC0vKioKPiAtICogaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQoKSAtIHdyaXRlIGEgRFdPUkQg dG8gdGhlIHJpbmdidWZmZXIuCj4gLSAqIEByaW5nYnVmOiBSaW5nYnVmZmVyIHRvIHdyaXRlIHRv Lgo+IC0gKiBAZGF0YTogRFdPUkQgdG8gd3JpdGUuCj4gLSAqLwo+IC1zdGF0aWMgaW5saW5lIHZv aWQgaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdi dWYsCj4gLQkJCQkJICAgdTMyIGRhdGEpCj4gLXsKPiAtCWludGVsX3JpbmdidWZmZXJfZW1pdChy aW5nYnVmLCBkYXRhKTsKPiAtfQo+ICAKPiAgLyogTG9naWNhbCBSaW5nIENvbnRleHRzICovCj4g IHZvaWQgaW50ZWxfbHJfY29udGV4dF9mcmVlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKPiBpbmRleCA2ZDNjNmMwYTVjNjIuLjM5OWExMzFh OTRiNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKPiBAQCAtMTg3LDEzICsxODcs MTEgQEAgc3RhdGljIGludCBlbWl0X21vY3NfY29udHJvbF90YWJsZShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwKPiAgCQlyZXR1cm4gcmV0Owo+ICAJfQo+ICAKPiAtCWludGVsX2xv Z2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCj4gLQkJCQlNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45 X05VTV9NT0NTX0VOVFJJRVMpKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9MT0FE X1JFR0lTVEVSX0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMpKTsKPiAgCj4gIAlmb3IgKGluZGV4 ID0gMDsgaW5kZXggPCB0YWJsZS0+c2l6ZTsgaW5kZXgrKykgewo+IC0JCWludGVsX2xvZ2ljYWxf cmluZ19lbWl0KHJpbmdidWYsIHJlZ19iYXNlICsgaW5kZXggKiA0KTsKPiAtCQlpbnRlbF9sb2dp Y2FsX3JpbmdfZW1pdChyaW5nYnVmLAo+IC0JCQkJCXRhYmxlLT50YWJsZVtpbmRleF0uY29udHJv bF92YWx1ZSk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIHJlZ19iYXNlICsgaW5kZXgg KiA0KTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgdGFibGUtPnRhYmxlW2luZGV4XS5j b250cm9sX3ZhbHVlKTsKPiAgCX0KPiAgCj4gIAkvKgo+IEBAIC0yMDUsMTIgKzIwMywxMiBAQCBz dGF0aWMgaW50IGVtaXRfbW9jc19jb250cm9sX3RhYmxlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLAo+ICAJICogdGhhdCB2YWx1ZSB0byBhbGwgdGhlIHVzZWQgZW50cmllcy4KPiAg CSAqLwo+ICAJZm9yICg7IGluZGV4IDwgR0VOOV9OVU1fTU9DU19FTlRSSUVTOyBpbmRleCsrKSB7 Cj4gLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgcmVnX2Jhc2UgKyBpbmRleCAq IDQpOwo+IC0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIHRhYmxlLT50YWJsZVsw XS5jb250cm9sX3ZhbHVlKTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgcmVnX2Jhc2Ug KyBpbmRleCAqIDQpOwo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCB0YWJsZS0+dGFibGVb MF0uY29udHJvbF92YWx1ZSk7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQo cmluZ2J1ZiwgTUlfTk9PUCk7Cj4gLQlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZShyaW5nYnVm KTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKPiArCWludGVsX3Jpbmdf YWR2YW5jZShyaW5nYnVmKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC0yNDYsMTUgKzI0 NCwxNSBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19sM2NjX3RhYmxlKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxLAo+ICAJCXJldHVybiByZXQ7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfbG9n aWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwKPiArCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLAo+ICAJ CQlNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMgLyAyKSk7Cj4gIAo+ ICAJZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgdGFibGUtPnNpemUgLyAyOyBpKyssIGNvdW50 ICs9IDIpIHsKPiAgCQl2YWx1ZSA9ICh0YWJsZS0+dGFibGVbY291bnRdLmwzY2NfdmFsdWUgJiAw eGZmZmYpIHwKPiAgCQkJKCh0YWJsZS0+dGFibGVbY291bnQgKyAxXS5sM2NjX3ZhbHVlICYgMHhm ZmZmKSA8PCAxNik7Cj4gIAo+IC0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIEdF TjlfTE5DRkNNT0NTMCArIGkgKiA0KTsKPiAtCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5n YnVmLCB2YWx1ZSk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIEdFTjlfTE5DRkNNT0NT MCArIGkgKiA0KTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgdmFsdWUpOwo+ICAJfQo+ ICAKPiAgCWlmICh0YWJsZS0+c2l6ZSAmIDB4MDEpIHsKPiBAQCAtMjcwLDE0ICsyNjgsMTQgQEAg c3RhdGljIGludCBlbWl0X21vY3NfbDNjY190YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwKPiAgCSAqIHRoZXkgYXJlIHJlc2VydmVkIGJ5IHRoZSBoYXJkd2FyZS4KPiAgCSAq Lwo+ICAJZm9yICg7IGkgPCBHRU45X05VTV9NT0NTX0VOVFJJRVMgLyAyOyBpKyspIHsKPiAtCQlp bnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBHRU45X0xOQ0ZDTU9DUzAgKyBpICogNCk7 Cj4gLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgdmFsdWUpOwo+ICsJCWludGVs X3JpbmdfZW1pdChyaW5nYnVmLCBHRU45X0xOQ0ZDTU9DUzAgKyBpICogNCk7Cj4gKwkJaW50ZWxf cmluZ19lbWl0KHJpbmdidWYsIHZhbHVlKTsKPiAgCj4gIAkJdmFsdWUgPSBmaWxsZXI7Cj4gIAl9 Cj4gIAo+IC0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Cj4gLQlp bnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKPiArCWludGVsX3JpbmdfZW1pdChy aW5nYnVmLCBNSV9OT09QKTsKPiArCWludGVsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKPiAgCj4g IAlyZXR1cm4gMDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKPiBpbmRl eCA0NDQ1NDI2OTZhMmMuLjVlOWM3YzE1YTg0YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9vdmVybGF5LmMKPiBAQCAtMjUyLDExICsyNTIsMTEgQEAgc3RhdGljIGludCBpbnRlbF9vdmVy bGF5X29uKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+ICAKPiAgCW92ZXJsYXktPmFj dGl2ZSA9IHRydWU7Cj4gIAo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX09WRVJMQVlfRkxJ UCB8IE1JX09WRVJMQVlfT04pOwo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIG92ZXJsYXktPmZs aXBfYWRkciB8IE9GQ19VUERBVEUpOwo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1dBSVRf Rk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsKPiAtCWludGVsX3JpbmdfZW1p dChyaW5nLCBNSV9OT09QKTsKPiAtCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiArCWludGVs X3JpbmdfZW1pdChyZXEtPnJpbmdidWYsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfT04p Owo+ICsJaW50ZWxfcmluZ19lbWl0KHJlcS0+cmluZ2J1Ziwgb3ZlcmxheS0+ZmxpcF9hZGRyIHwg T0ZDX1VQREFURSk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmVxLT5yaW5nYnVmLCBNSV9XQUlUX0ZP Ul9FVkVOVCB8IE1JX1dBSVRfRk9SX09WRVJMQVlfRkxJUCk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQo cmVxLT5yaW5nYnVmLCBNSV9OT09QKTsKPiArCWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmdi dWYpOwo+ICAKPiAgCXJldHVybiBpbnRlbF9vdmVybGF5X2RvX3dhaXRfcmVxdWVzdChvdmVybGF5 LCByZXEsIE5VTEwpOwo+ICB9Cj4gQEAgLTI5Myw5ICsyOTMsOSBAQCBzdGF0aWMgaW50IGludGVs X292ZXJsYXlfY29udGludWUoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXksCj4gIAkJcmV0 dXJuIHJldDsKPiAgCX0KPiAgCj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfT1ZFUkxBWV9G TElQIHwgTUlfT1ZFUkxBWV9DT05USU5VRSk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZywgZmxp cF9hZGRyKTsKPiAtCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiArCWludGVsX3JpbmdfZW1p dChyZXEtPnJpbmdidWYsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfQ09OVElOVUUpOwo+ ICsJaW50ZWxfcmluZ19lbWl0KHJlcS0+cmluZ2J1ZiwgZmxpcF9hZGRyKTsKPiArCWludGVsX3Jp bmdfYWR2YW5jZShyZXEtPnJpbmdidWYpOwo+ICAKPiAgCVdBUk5fT04ob3ZlcmxheS0+bGFzdF9m bGlwX3JlcSk7Cj4gIAlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmb3ZlcmxheS0+bGFzdF9mbGlw X3JlcSwgcmVxKTsKPiBAQCAtMzYwLDIyICszNjAsMjIgQEAgc3RhdGljIGludCBpbnRlbF9vdmVy bGF5X29mZihzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkKPiAgCX0KPiAgCj4gIAkvKiB3 YWl0IGZvciBvdmVybGF5IHRvIGdvIGlkbGUgKi8KPiAtCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX0NPTlRJTlVFKTsKPiAtCWludGVsX3JpbmdfZW1p dChyaW5nLCBmbGlwX2FkZHIpOwo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1dBSVRfRk9S X0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsKPiArCWludGVsX3JpbmdfZW1pdChy ZXEtPnJpbmdidWYsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfQ09OVElOVUUpOwo+ICsJ aW50ZWxfcmluZ19lbWl0KHJlcS0+cmluZ2J1ZiwgZmxpcF9hZGRyKTsKPiArCWludGVsX3Jpbmdf ZW1pdChyZXEtPnJpbmdidWYsIE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxB WV9GTElQKTsKPiAgCS8qIHR1cm4gb3ZlcmxheSBvZmYgKi8KPiAgCWlmIChJU19JODMwKGRldikp IHsKPiAgCQkvKiBXb3JrYXJvdW5kOiBEb24ndCBkaXNhYmxlIHRoZSBvdmVybGF5IGZ1bGx5LCBz aW5jZSBvdGhlcndpc2UKPiAgCQkgKiBpdCBkaWVzIG9uIHRoZSBuZXh0IE9WRVJMQVlfT04gY21k LiAqLwo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKPiAtCQlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfTk9PUCk7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1Ap Owo+ICsJCWludGVsX3JpbmdfZW1pdChyZXEtPnJpbmdidWYsIE1JX05PT1ApOwo+ICsJCWludGVs X3JpbmdfZW1pdChyZXEtPnJpbmdidWYsIE1JX05PT1ApOwo+ICsJCWludGVsX3JpbmdfZW1pdChy ZXEtPnJpbmdidWYsIE1JX05PT1ApOwo+ICAJfSBlbHNlIHsKPiAtCQlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9PRkYpOwo+IC0JCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBmbGlwX2FkZHIpOwo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9XQUlU X0ZPUl9FVkVOVCB8IE1JX1dBSVRfRk9SX09WRVJMQVlfRkxJUCk7Cj4gKwkJaW50ZWxfcmluZ19l bWl0KHJlcS0+cmluZ2J1ZiwgTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9PRkYpOwo+ICsJ CWludGVsX3JpbmdfZW1pdChyZXEtPnJpbmdidWYsIGZsaXBfYWRkcik7Cj4gKwkJaW50ZWxfcmlu Z19lbWl0KHJlcS0+cmluZ2J1ZiwgTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVS TEFZX0ZMSVApOwo+ICAJfQo+IC0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwo+ICsJaW50ZWxf cmluZ19hZHZhbmNlKHJlcS0+cmluZ2J1Zik7Cj4gIAo+ICAJcmV0dXJuIGludGVsX292ZXJsYXlf ZG9fd2FpdF9yZXF1ZXN0KG92ZXJsYXksIHJlcSwgaW50ZWxfb3ZlcmxheV9vZmZfdGFpbCk7Cj4g IH0KPiBAQCAtNDMzLDkgKzQzMyw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9yZWxlYXNl X29sZF92aWQoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCj4gIAkJCXJldHVybiByZXQ7 Cj4gIAkJfQo+ICAKPiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfV0FJVF9GT1JfRVZFTlQg fCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVApOwo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9OT09QKTsKPiAtCQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7Cj4gKwkJaW50ZWxfcmluZ19l bWl0KHJlcS0+cmluZ2J1ZiwgTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZ X0ZMSVApOwo+ICsJCWludGVsX3JpbmdfZW1pdChyZXEtPnJpbmdidWYsIE1JX05PT1ApOwo+ICsJ CWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmdidWYpOwo+ICAKPiAgCQlyZXQgPSBpbnRlbF9v dmVybGF5X2RvX3dhaXRfcmVxdWVzdChvdmVybGF5LCByZXEsCj4gIAkJCQkJCSAgICBpbnRlbF9v dmVybGF5X3JlbGVhc2Vfb2xkX3ZpZF90YWlsKTsKCkFueSByZWFzb24gZm9yIG5vdCBkb2luZyB5 b3VyIHVzdWFsIHRyYW5zZm9ybSB0byBpbnRlbF9yaW5nYnVmZmVyIGZvciB0aGUKbG9jYWwgcmlu ZyBoZXJlIGluIHRoZSBvdmVybGF5IGNvZGU/IE9yIGRvZXMgdGhhdCBoYXBwZW4gd2hlbgppbnRl bF9yaW5nX2JlZ2luIGZhbGxzPwoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jCj4gaW5kZXggOWZiZTczMGFhZTQ3Li5iM2RlOGIxZmRlMmYgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTk1LDcgKzk1LDcgQEAgZ2VuMl9yZW5k ZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkgICAg ICAgdTMyCWludmFsaWRhdGVfZG9tYWlucywKPiAgCQkgICAgICAgdTMyCWZsdXNoX2RvbWFpbnMp Cj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7Cj4gKwlz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiAgCXUzMiBjbWQ7 Cj4gIAlpbnQgcmV0Owo+ICAKPiBAQCAtMTIyLDcgKzEyMiw3IEBAIGdlbjRfcmVuZGVyX3Jpbmdf Zmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIAkJICAgICAgIHUzMglp bnZhbGlkYXRlX2RvbWFpbnMsCj4gIAkJICAgICAgIHUzMglmbHVzaF9kb21haW5zKQo+ICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOwo+ICsJc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gIAl1MzIgY21kOwo+ICAJaW50 IHJldDsKPiAgCj4gQEAgLTIxNSw4ICsyMTUsOCBAQCBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICBzdGF0aWMgaW50Cj4gIGludGVsX2Vt aXRfcG9zdF9zeW5jX25vbnplcm9fZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7Cj4g LQl1MzIgc2NyYXRjaF9hZGRyID0gcmluZy0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAqIENBQ0hF TElORV9CWVRFUzsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5n YnVmOwo+ICsJdTMyIHNjcmF0Y2hfYWRkciA9IHJlcS0+cmluZy0+c2NyYXRjaC5ndHRfb2Zmc2V0 ICsgMiAqIENBQ0hFTElORV9CWVRFUzsKPiAgCWludCByZXQ7Cj4gIAo+ICAJcmV0ID0gaW50ZWxf cmluZ19iZWdpbihyZXEsIDYpOwo+IEBAIC0yNTEsOSArMjUxLDkgQEAgc3RhdGljIGludAo+ICBn ZW42X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ ICAJCSAgICAgICB1MzIgaW52YWxpZGF0ZV9kb21haW5zLCB1MzIgZmx1c2hfZG9tYWlucykKPiAg ewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsKPiArCXN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICAJdTMyIGZsYWdzID0g MDsKPiAtCXUzMiBzY3JhdGNoX2FkZHIgPSByaW5nLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyICog Q0FDSEVMSU5FX0JZVEVTOwo+ICsJdTMyIHNjcmF0Y2hfYWRkciA9IHJlcS0+cmluZy0+c2NyYXRj aC5ndHRfb2Zmc2V0ICsgMiAqIENBQ0hFTElORV9CWVRFUzsKPiAgCWludCByZXQ7Cj4gIAo+ICAJ LyogRm9yY2UgU05CIHdvcmthcm91bmRzIGZvciBQSVBFX0NPTlRST0wgZmx1c2hlcyAqLwo+IEBA IC0zMDMsNyArMzAzLDcgQEAgZ2VuNl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwKPiAgc3RhdGljIGludAo+ICBnZW43X3JlbmRlcl9yaW5nX2NzX3N0 YWxsX3dhKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICB7Cj4gLQlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOwo+ICsJc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCXJldCA9IGlu dGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKPiBAQCAtMzI0LDkgKzMyNCw5IEBAIHN0YXRpYyBpbnQK PiAgZ2VuN19yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKPiAgCQkgICAgICAgdTMyIGludmFsaWRhdGVfZG9tYWlucywgdTMyIGZsdXNoX2RvbWFpbnMp Cj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7Cj4gKwlz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiAgCXUzMiBmbGFn cyA9IDA7Cj4gLQl1MzIgc2NyYXRjaF9hZGRyID0gcmluZy0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsg MiAqIENBQ0hFTElORV9CWVRFUzsKPiArCXUzMiBzY3JhdGNoX2FkZHIgPSByZXEtPnJpbmctPnNj cmF0Y2guZ3R0X29mZnNldCArIDIgKiBDQUNIRUxJTkVfQllURVM7Cj4gIAlpbnQgcmV0Owo+ICAK PiAgCS8qCj4gQEAgLTM4Nyw3ICszODcsNyBAQCBzdGF0aWMgaW50Cj4gIGdlbjhfZW1pdF9waXBl X2NvbnRyb2woc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIAkJICAgICAgIHUz MiBmbGFncywgdTMyIHNjcmF0Y2hfYWRkcikKPiAgewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZyA9IHJlcS0+cmluZzsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0g cmVxLT5yaW5nYnVmOwo+ICAJaW50IHJldDsKPiAgCj4gIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2lu KHJlcSwgNik7Cj4gQEAgLTcxMiwxNSArNzEyLDE1IEBAIGVycjoKPiAgCj4gIHN0YXRpYyBpbnQg aW50ZWxfcmluZ193b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKQo+ICB7Cj4gLQlpbnQgcmV0LCBpOwo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZyA9IHJlcS0+cmluZzsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5y aW5nYnVmOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxLT5pOTE1 Owo+ICAJc3RydWN0IGk5MTVfd29ya2Fyb3VuZHMgKncgPSAmZGV2X3ByaXYtPndvcmthcm91bmRz Owo+ICsJaW50IHJldCwgaTsKPiAgCj4gIAlpZiAoV0FSTl9PTl9PTkNFKHctPmNvdW50ID09IDAp KQo+ICAJCXJldHVybiAwOwo+ICAKPiAtCXJpbmctPmdwdV9jYWNoZXNfZGlydHkgPSB0cnVlOwo+ ICsJcmVxLT5yaW5nLT5ncHVfY2FjaGVzX2RpcnR5ID0gdHJ1ZTsKPiAgCXJldCA9IGludGVsX3Jp bmdfZmx1c2hfYWxsX2NhY2hlcyhyZXEpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ IEBAIC03MzgsNyArNzM4LDcgQEAgc3RhdGljIGludCBpbnRlbF9yaW5nX3dvcmthcm91bmRzX2Vt aXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIAo+ICAJaW50ZWxfcmluZ19h ZHZhbmNlKHJpbmcpOwo+ICAKPiAtCXJpbmctPmdwdV9jYWNoZXNfZGlydHkgPSB0cnVlOwo+ICsJ cmVxLT5yaW5nLT5ncHVfY2FjaGVzX2RpcnR5ID0gdHJ1ZTsKPiAgCXJldCA9IGludGVsX3Jpbmdf Zmx1c2hfYWxsX2NhY2hlcyhyZXEpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+IEBA IC0xMTg0LDcgKzExODQsNyBAQCBzdGF0aWMgaW50IGdlbjhfcmNzX3NpZ25hbChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCj4gIAkJCSAgIHVuc2lnbmVkIGludCBu dW1fZHdvcmRzKQo+ICB7Cj4gICNkZWZpbmUgTUJPWF9VUERBVEVfRFdPUkRTIDgKPiAtCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlciA9IHNpZ25hbGxlcl9yZXEtPnJpbmc7Cj4gKwlz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqc2lnbmFsbGVyID0gc2lnbmFsbGVyX3JlcS0+cmluZ2J1 ZjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHNpZ25hbGxlcl9yZXEt Pmk5MTU7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp3YWl0ZXI7Cj4gIAlpbnQgaSwgcmV0 LCBudW1fcmluZ3M7Cj4gQEAgLTExOTksNyArMTE5OSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9yY3Nf c2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwKPiAgCj4g IAlmb3JfZWFjaF9yaW5nKHdhaXRlciwgZGV2X3ByaXYsIGkpIHsKPiAgCQl1MzIgc2Vxbm87Cj4g LQkJdTY0IGd0dF9vZmZzZXQgPSBzaWduYWxsZXItPnNlbWFwaG9yZS5zaWduYWxfZ2d0dFtpXTsK PiArCQl1NjQgZ3R0X29mZnNldCA9IHNpZ25hbGxlcl9yZXEtPnJpbmctPnNlbWFwaG9yZS5zaWdu YWxfZ2d0dFtpXTsKPiAgCQlpZiAoZ3R0X29mZnNldCA9PSBNSV9TRU1BUEhPUkVfU1lOQ19JTlZB TElEKQo+ICAJCQljb250aW51ZTsKPiAgCj4gQEAgLTEyMjQsNyArMTIyNCw3IEBAIHN0YXRpYyBp bnQgZ2VuOF94Y3Nfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVy X3JlcSwKPiAgCQkJICAgdW5zaWduZWQgaW50IG51bV9kd29yZHMpCj4gIHsKPiAgI2RlZmluZSBN Qk9YX1VQREFURV9EV09SRFMgNgo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVy ID0gc2lnbmFsbGVyX3JlcS0+cmluZzsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpzaWdu YWxsZXIgPSBzaWduYWxsZXJfcmVxLT5yaW5nYnVmOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gc2lnbmFsbGVyX3JlcS0+aTkxNTsKPiAgCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKndhaXRlcjsKPiAgCWludCBpLCByZXQsIG51bV9yaW5nczsKPiBAQCAtMTIzOSw3ICsx MjM5LDcgQEAgc3RhdGljIGludCBnZW44X3hjc19zaWduYWwoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpzaWduYWxsZXJfcmVxLAo+ICAKPiAgCWZvcl9lYWNoX3Jpbmcod2FpdGVyLCBkZXZf cHJpdiwgaSkgewo+ICAJCXUzMiBzZXFubzsKPiAtCQl1NjQgZ3R0X29mZnNldCA9IHNpZ25hbGxl ci0+c2VtYXBob3JlLnNpZ25hbF9nZ3R0W2ldOwo+ICsJCXU2NCBndHRfb2Zmc2V0ID0gc2lnbmFs bGVyX3JlcS0+cmluZy0+c2VtYXBob3JlLnNpZ25hbF9nZ3R0W2ldOwo+ICAJCWlmIChndHRfb2Zm c2V0ID09IE1JX1NFTUFQSE9SRV9TWU5DX0lOVkFMSUQpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBA QCAtMTI2MSw3ICsxMjYxLDcgQEAgc3RhdGljIGludCBnZW44X3hjc19zaWduYWwoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWxsZXJfcmVxLAo+ICBzdGF0aWMgaW50IGdlbjZfc2ln bmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwKPiAgCQkgICAg ICAgdW5zaWduZWQgaW50IG51bV9kd29yZHMpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnNpZ25hbGxlciA9IHNpZ25hbGxlcl9yZXEtPnJpbmc7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmlu Z2J1ZmZlciAqc2lnbmFsbGVyID0gc2lnbmFsbGVyX3JlcS0+cmluZ2J1ZjsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHNpZ25hbGxlcl9yZXEtPmk5MTU7Cj4gIAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICp1c2VsZXNzOwo+ICAJaW50IGksIHJldCwgbnVtX3JpbmdzOwo+ IEBAIC0xMjc2LDcgKzEyNzYsNyBAQCBzdGF0aWMgaW50IGdlbjZfc2lnbmFsKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAg CWZvcl9lYWNoX3JpbmcodXNlbGVzcywgZGV2X3ByaXYsIGkpIHsKPiAtCQl1MzIgbWJveF9yZWcg PSBzaWduYWxsZXItPnNlbWFwaG9yZS5tYm94LnNpZ25hbFtpXTsKPiArCQl1MzIgbWJveF9yZWcg PSBzaWduYWxsZXJfcmVxLT5yaW5nLT5zZW1hcGhvcmUubWJveC5zaWduYWxbaV07Cj4gIAkJaWYg KG1ib3hfcmVnICE9IEdFTjZfTk9TWU5DKSB7Cj4gIAkJCXUzMiBzZXFubyA9IGk5MTVfZ2VtX3Jl cXVlc3RfZ2V0X3NlcW5vKHNpZ25hbGxlcl9yZXEpOwo+ICAJCQlpbnRlbF9yaW5nX2VtaXQoc2ln bmFsbGVyLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7Cj4gQEAgLTEzMDMsMTEgKzEzMDMsMTEg QEAgc3RhdGljIGludCBnZW42X3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNp Z25hbGxlcl9yZXEsCj4gIHN0YXRpYyBpbnQKPiAgZ2VuNl9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZyA9IHJlcS0+cmluZzsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVx LT5yaW5nYnVmOwo+ICAJaW50IHJldDsKPiAgCj4gLQlpZiAocmluZy0+c2VtYXBob3JlLnNpZ25h bCkKPiAtCQlyZXQgPSByaW5nLT5zZW1hcGhvcmUuc2lnbmFsKHJlcSwgNCk7Cj4gKwlpZiAocmVx LT5yaW5nLT5zZW1hcGhvcmUuc2lnbmFsKQo+ICsJCXJldCA9IHJlcS0+cmluZy0+c2VtYXBob3Jl LnNpZ25hbChyZXEsIDQpOwo+ICAJZWxzZQo+ICAJCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVx LCA0KTsKPiAgCj4gQEAgLTEzMTgsMTUgKzEzMTgsMTQgQEAgZ2VuNl9hZGRfcmVxdWVzdChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgCWludGVsX3JpbmdfZW1pdChyaW5nLCBJ OTE1X0dFTV9IV1NfSU5ERVggPDwgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpOwo+ICAJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJlcSkpOwo+ICAJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1VTRVJfSU5URVJSVVBUKTsKPiAtCV9faW50ZWxfcmlu Z19hZHZhbmNlKHJpbmcpOwo+ICsJX19pbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nKTsKPiAg Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIGlubGluZSBib29sIGk5MTVfZ2VtX2hh c19zZXFub193cmFwcGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gK3N0YXRpYyBpbmxpbmUg Ym9vbCBpOTE1X2dlbV9oYXNfc2Vxbm9fd3JhcHBlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gIAkJCQkJICAgICAgdTMyIHNlcW5vKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJcmV0dXJuIGRldl9w cml2LT5sYXN0X3NlcW5vIDwgc2Vxbm87Cj4gIH0KPiAgCj4gQEAgLTEzNDMsNyArMTM0Miw3IEBA IGdlbjhfcmluZ19zeW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqd2FpdGVyX3JlcSwK PiAgCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXIsCj4gIAkgICAgICAg dTMyIHNlcW5vKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp3YWl0ZXIgPSB3YWl0 ZXJfcmVxLT5yaW5nOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKndhaXRlciA9IHdhaXRl cl9yZXEtPnJpbmdidWY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB3 YWl0ZXJfcmVxLT5pOTE1Owo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTEzNTcsOSArMTM1NiwxMSBA QCBnZW44X3Jpbmdfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKndhaXRlcl9yZXEs Cj4gIAkJCQlNSV9TRU1BUEhPUkVfU0FEX0dURV9TREQpOwo+ICAJaW50ZWxfcmluZ19lbWl0KHdh aXRlciwgc2Vxbm8pOwo+ICAJaW50ZWxfcmluZ19lbWl0KHdhaXRlciwKPiAtCQkJbG93ZXJfMzJf Yml0cyhHRU44X1dBSVRfT0ZGU0VUKHdhaXRlciwgc2lnbmFsbGVyLT5pZCkpKTsKPiArCQkJbG93 ZXJfMzJfYml0cyhHRU44X1dBSVRfT0ZGU0VUKHdhaXRlcl9yZXEtPnJpbmcsCj4gKwkJCQkJCSAg ICAgICBzaWduYWxsZXItPmlkKSkpOwo+ICAJaW50ZWxfcmluZ19lbWl0KHdhaXRlciwKPiAtCQkJ dXBwZXJfMzJfYml0cyhHRU44X1dBSVRfT0ZGU0VUKHdhaXRlciwgc2lnbmFsbGVyLT5pZCkpKTsK PiArCQkJdXBwZXJfMzJfYml0cyhHRU44X1dBSVRfT0ZGU0VUKHdhaXRlcl9yZXEtPnJpbmcsCj4g KwkJCQkJCSAgICAgICBzaWduYWxsZXItPmlkKSkpOwo+ICAJaW50ZWxfcmluZ19hZHZhbmNlKHdh aXRlcik7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC0xMzY5LDExICsxMzcwLDExIEBAIGdlbjZf cmluZ19zeW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqd2FpdGVyX3JlcSwKPiAgCSAg ICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXIsCj4gIAkgICAgICAgdTMyIHNl cW5vKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp3YWl0ZXIgPSB3YWl0ZXJfcmVx LT5yaW5nOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKndhaXRlciA9IHdhaXRlcl9yZXEt PnJpbmdidWY7Cj4gIAl1MzIgZHcxID0gTUlfU0VNQVBIT1JFX01CT1ggfAo+ICAJCSAgTUlfU0VN QVBIT1JFX0NPTVBBUkUgfAo+ICAJCSAgTUlfU0VNQVBIT1JFX1JFR0lTVEVSOwo+IC0JdTMyIHdh aXRfbWJveCA9IHNpZ25hbGxlci0+c2VtYXBob3JlLm1ib3gud2FpdFt3YWl0ZXItPmlkXTsKPiAr CXUzMiB3YWl0X21ib3ggPSBzaWduYWxsZXItPnNlbWFwaG9yZS5tYm94LndhaXRbd2FpdGVyX3Jl cS0+cmluZy0+aWRdOwo+ICAJaW50IHJldDsKPiAgCj4gIAkvKiBUaHJvdWdob3V0IGFsbCBvZiB0 aGUgR0VNIGNvZGUsIHNlcW5vIHBhc3NlZCBpbXBsaWVzIG91ciBjdXJyZW50Cj4gQEAgLTEzODks NyArMTM5MCw3IEBAIGdlbjZfcmluZ19zeW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq d2FpdGVyX3JlcSwKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAgCS8qIElmIHNlcW5vIHdyYXAgaGFw cGVuZWQsIG9taXQgdGhlIHdhaXQgd2l0aCBuby1vcHMgKi8KPiAtCWlmIChsaWtlbHkoIWk5MTVf Z2VtX2hhc19zZXFub193cmFwcGVkKHdhaXRlci0+ZGV2LCBzZXFubykpKSB7Cj4gKwlpZiAobGlr ZWx5KCFpOTE1X2dlbV9oYXNfc2Vxbm9fd3JhcHBlZCh3YWl0ZXJfcmVxLT5pOTE1LCBzZXFubykp KSB7Cj4gIAkJaW50ZWxfcmluZ19lbWl0KHdhaXRlciwgZHcxIHwgd2FpdF9tYm94KTsKPiAgCQlp bnRlbF9yaW5nX2VtaXQod2FpdGVyLCBzZXFubyk7Cj4gIAkJaW50ZWxfcmluZ19lbWl0KHdhaXRl ciwgMCk7Cj4gQEAgLTE0MTcsOCArMTQxOCw4IEBAIGRvIHsJCQkJCQkJCQlcCj4gIHN0YXRpYyBp bnQKPiAgcGNfcmVuZGVyX2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOwo+ IC0JdTMyIHNjcmF0Y2hfYWRkciA9IHJpbmctPnNjcmF0Y2guZ3R0X29mZnNldCArIDIgKiBDQUNI RUxJTkVfQllURVM7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmlu Z2J1ZjsKPiArCXUzMiBzY3JhdGNoX2FkZHIgPSByZXEtPnJpbmctPnNjcmF0Y2guZ3R0X29mZnNl dCArIDIgKiBDQUNIRUxJTkVfQllURVM7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCS8qIEZvciBJcm9u bGFrZSwgTUlfVVNFUl9JTlRFUlJVUFQgd2FzIGRlcHJlY2F0ZWQgYW5kIGFwcGFyZW50bHkKPiBA QCAtMTQzNiw3ICsxNDM3LDcgQEAgcGNfcmVuZGVyX2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBF X0NPTlRST0woNCkgfCBQSVBFX0NPTlRST0xfUVdfV1JJVEUgfAo+ICAJCQlQSVBFX0NPTlRST0xf V1JJVEVfRkxVU0ggfAo+ICAJCQlQSVBFX0NPTlRST0xfVEVYVFVSRV9DQUNIRV9JTlZBTElEQVRF KTsKPiAtCWludGVsX3JpbmdfZW1pdChyaW5nLCByaW5nLT5zY3JhdGNoLmd0dF9vZmZzZXQgfCBQ SVBFX0NPTlRST0xfR0xPQkFMX0dUVCk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywgcmVxLT5y aW5nLT5zY3JhdGNoLmd0dF9vZmZzZXQgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVCk7Cj4gIAlp bnRlbF9yaW5nX2VtaXQocmluZywgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxKSk7Cj4g IAlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Cj4gIAlQSVBFX0NPTlRST0xfRkxVU0gocmluZywg c2NyYXRjaF9hZGRyKTsKPiBAQCAtMTQ1NSwxMCArMTQ1NiwxMCBAQCBwY19yZW5kZXJfYWRkX3Jl cXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIAkJCVBJUEVfQ09OVFJP TF9XUklURV9GTFVTSCB8Cj4gIAkJCVBJUEVfQ09OVFJPTF9URVhUVVJFX0NBQ0hFX0lOVkFMSURB VEUgfAo+ICAJCQlQSVBFX0NPTlRST0xfTk9USUZZKTsKPiAtCWludGVsX3JpbmdfZW1pdChyaW5n LCByaW5nLT5zY3JhdGNoLmd0dF9vZmZzZXQgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVCk7Cj4g KwlpbnRlbF9yaW5nX2VtaXQocmluZywgcmVxLT5yaW5nLT5zY3JhdGNoLmd0dF9vZmZzZXQgfCBQ SVBFX0NPTlRST0xfR0xPQkFMX0dUVCk7Cj4gIAlpbnRlbF9yaW5nX2VtaXQocmluZywgaTkxNV9n ZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxKSk7Cj4gIAlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7 Cj4gLQlfX2ludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiArCV9faW50ZWxfcmluZ19hZHZhbmNl KHJlcS0+cmluZyk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtMTYxMSw3ICsxNjEyLDcg QEAgYnNkX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIAkg ICAgICAgdTMyICAgICBpbnZhbGlkYXRlX2RvbWFpbnMsCj4gIAkgICAgICAgdTMyICAgICBmbHVz aF9kb21haW5zKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5y aW5nOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4g IAlpbnQgcmV0Owo+ICAKPiAgCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKPiBAQCAt MTYyNyw3ICsxNjI4LDcgQEAgYnNkX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsCj4gIHN0YXRpYyBpbnQKPiAgaTl4eF9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZyA9IHJlcS0+cmluZzsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5y aW5nYnVmOwo+ICAJaW50IHJldDsKPiAgCj4gIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwg NCk7Cj4gQEAgLTE2MzgsNyArMTYzOSw3IEBAIGk5eHhfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIAlpbnRlbF9yaW5nX2VtaXQocmluZywgSTkxNV9HRU1f SFdTX0lOREVYIDw8IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NISUZUKTsKPiAgCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhyZXEpKTsKPiAgCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVSUlVQVCk7Cj4gLQlfX2ludGVsX3JpbmdfYWR2YW5j ZShyaW5nKTsKPiArCV9faW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZyk7Cj4gIAo+ICAJcmV0 dXJuIDA7Cj4gIH0KPiBAQCAtMTc3Miw3ICsxNzczLDcgQEAgaTk2NV9kaXNwYXRjaF9leGVjYnVm ZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJCQkgdTY0IG9mZnNldCwg dTMyIGxlbmd0aCwKPiAgCQkJIHVuc2lnbmVkIGRpc3BhdGNoX2ZsYWdzKQo+ICB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOwo+ICsJc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCXJldCA9 IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKPiBAQCAtMTc5OSw4ICsxODAwLDggQEAgaTgzMF9k aXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJ CQkgdTY0IG9mZnNldCwgdTMyIGxlbiwKPiAgCQkJIHVuc2lnbmVkIGRpc3BhdGNoX2ZsYWdzKQo+ ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOwo+IC0JdTMy IGNzX29mZnNldCA9IHJpbmctPnNjcmF0Y2guZ3R0X29mZnNldDsKPiArCXN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJdTMyIGNzX29mZnNldCA9IHJlcS0+ cmluZy0+c2NyYXRjaC5ndHRfb2Zmc2V0Owo+ICAJaW50IHJldDsKPiAgCj4gIAlyZXQgPSBpbnRl bF9yaW5nX2JlZ2luKHJlcSwgNik7Cj4gQEAgLTE4NjIsNyArMTg2Myw3IEBAIGk5MTVfZGlzcGF0 Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkJIHU2 NCBvZmZzZXQsIHUzMiBsZW4sCj4gIAkJCSB1bnNpZ25lZCBkaXNwYXRjaF9mbGFncykKPiAgewo+ IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsKPiArCXN0cnVjdCBp bnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICAJaW50IHJldDsKPiAgCj4g IAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Cj4gQEAgLTIzNDMsOCArMjM0NCw4IEBA IGludCBpbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ ICAvKiBBbGlnbiB0aGUgcmluZyB0YWlsIHRvIGEgY2FjaGVsaW5lIGJvdW5kYXJ5ICovCj4gIGlu dCBpbnRlbF9yaW5nX2NhY2hlbGluZV9hbGlnbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+cmluZzsK PiAtCWludCBudW1fZHdvcmRzID0gKHJpbmctPmJ1ZmZlci0+dGFpbCAmIChDQUNIRUxJTkVfQllU RVMgLSAxKSkgLyBzaXplb2YodWludDMyX3QpOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlpbnQgbnVtX2R3b3JkcyA9IChyaW5nLT50YWlsICYg KENBQ0hFTElORV9CWVRFUyAtIDEpKSAvIHNpemVvZih1aW50MzJfdCk7Cj4gIAlpbnQgcmV0Owo+ ICAKPiAgCWlmIChudW1fZHdvcmRzID09IDApCj4gQEAgLTI0MTUsNyArMjQxNiw3IEBAIHN0YXRp YyB2b2lkIGdlbjZfYnNkX3Jpbmdfd3JpdGVfdGFpbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nLAo+ICBzdGF0aWMgaW50IGdlbjZfYnNkX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsCj4gIAkJCSAgICAgICB1MzIgaW52YWxpZGF0ZSwgdTMyIGZsdXNoKQo+ ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOwo+ICsJc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gIAl1aW50MzJfdCBj bWQ7Cj4gIAlpbnQgcmV0Owo+ICAKPiBAQCAtMjQyNCw3ICsyNDI1LDcgQEAgc3RhdGljIGludCBn ZW42X2JzZF9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJ CXJldHVybiByZXQ7Cj4gIAo+ICAJY21kID0gTUlfRkxVU0hfRFc7Cj4gLQlpZiAoSU5URUxfSU5G TyhyaW5nLT5kZXYpLT5nZW4gPj0gOCkKPiArCWlmIChJTlRFTF9JTkZPKHJlcS0+aTkxNSktPmdl biA+PSA4KQo+ICAJCWNtZCArPSAxOwo+ICAKPiAgCS8qIFdlIGFsd2F5cyByZXF1aXJlIGEgY29t bWFuZCBiYXJyaWVyIHNvIHRoYXQgc3Vic2VxdWVudAo+IEBAIC0yNDQ1LDcgKzI0NDYsNyBAQCBz dGF0aWMgaW50IGdlbjZfYnNkX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsCj4gIAo+ICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNtZCk7Cj4gIAlpbnRlbF9yaW5n X2VtaXQocmluZywgSTkxNV9HRU1fSFdTX1NDUkFUQ0hfQUREUiB8IE1JX0ZMVVNIX0RXX1VTRV9H VFQpOwo+IC0JaWYgKElOVEVMX0lORk8ocmluZy0+ZGV2KS0+Z2VuID49IDgpIHsKPiArCWlmIChJ TlRFTF9JTkZPKHJlcS0+aTkxNSktPmdlbiA+PSA4KSB7Cj4gIAkJaW50ZWxfcmluZ19lbWl0KHJp bmcsIDApOyAvKiB1cHBlciBhZGRyICovCj4gIAkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAv KiB2YWx1ZSAqLwo+ICAJfSBlbHNlICB7Cj4gQEAgLTI0NjEsNyArMjQ2Miw3IEBAIGdlbjhfcmlu Z19kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ ICAJCQkgICAgICB1NjQgb2Zmc2V0LCB1MzIgbGVuLAo+ICAJCQkgICAgICB1bnNpZ25lZCBkaXNw YXRjaF9mbGFncykKPiAgewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcS0+ cmluZzsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ ICAJYm9vbCBwcGd0dCA9IFVTRVNfUFBHVFQocmVxLT5pOTE1KSAmJgo+ICAJCQkhKGRpc3BhdGNo X2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUpOwo+ICAJaW50IHJldDsKPiBAQCAtMjQ4Nyw3 ICsyNDg4LDcgQEAgaHN3X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkJICAgICB1NjQgb2Zmc2V0LCB1MzIgbGVuLAo+ICAJCQkg ICAgIHVuc2lnbmVkIGRpc3BhdGNoX2ZsYWdzKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nID0gcmVxLT5yaW5nOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcg PSByZXEtPnJpbmdidWY7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCXJldCA9IGludGVsX3JpbmdfYmVn aW4ocmVxLCAyKTsKPiBAQCAtMjUxMiw3ICsyNTEzLDcgQEAgZ2VuNl9yaW5nX2Rpc3BhdGNoX2V4 ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIAkJCSAgICAgIHU2 NCBvZmZzZXQsIHUzMiBsZW4sCj4gIAkJCSAgICAgIHVuc2lnbmVkIGRpc3BhdGNoX2ZsYWdzKQo+ ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOwo+ICsJc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gIAlpbnQgcmV0Owo+ ICAKPiAgCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKPiBAQCAtMjUzNSw3ICsyNTM2 LDcgQEAgZ2VuNl9yaW5nX2Rpc3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsCj4gIHN0YXRpYyBpbnQgZ2VuNl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJCQkgICB1MzIgaW52YWxpZGF0ZSwgdTMyIGZsdXNoKQo+ ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOwo+ICsJc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gIAl1aW50MzJfdCBj bWQ7Cj4gIAlpbnQgcmV0Owo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oCj4gaW5kZXggMTBmODBkZjVmMTIxLi4yMTJiNDAyODE4ZjkgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gQEAgLTQyNywyNSArNDI3LDE2IEBAIGludCBp bnRlbF9yaW5nX2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCk7Cj4gIAo+ICBpbnQgX19tdXN0X2NoZWNrIGludGVsX3JpbmdfYmVnaW4oc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBuKTsKPiAgaW50IF9fbXVzdF9jaGVj ayBpbnRlbF9yaW5nX2NhY2hlbGluZV9hbGlnbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSk7Cj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9yaW5nYnVmZmVyX2VtaXQoc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJiLAo+IC0JCQkJCSB1MzIgZGF0YSkKPiArc3RhdGljIGlubGlu ZSB2b2lkIGludGVsX3JpbmdfZW1pdChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmIsCj4gKwkJ CQkgICB1MzIgZGF0YSkKPiAgewo+ICAJKih1aW50MzJfdCAqKShyYi0+dmlydHVhbF9zdGFydCAr IHJiLT50YWlsKSA9IGRhdGE7Cj4gIAlyYi0+dGFpbCArPSA0Owo+ICB9Cj4gLXN0YXRpYyBpbmxp bmUgdm9pZCBpbnRlbF9yaW5nYnVmZmVyX2FkdmFuY2Uoc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJiKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfcmluZ19hZHZhbmNlKHN0cnVjdCBpbnRl bF9yaW5nYnVmZmVyICpyYikKPiAgewo+ICAJcmItPnRhaWwgJj0gcmItPnNpemUgLSAxOwo+ICB9 Cj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9yaW5nX2VtaXQoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZywKPiAtCQkJCSAgIHUzMiBkYXRhKQo+IC17Cj4gLQlpbnRlbF9yaW5nYnVmZmVy X2VtaXQocmluZy0+YnVmZmVyLCBkYXRhKTsKPiAtfQo+IC1zdGF0aWMgaW5saW5lIHZvaWQgaW50 ZWxfcmluZ19hZHZhbmNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gLXsKPiAtCWlu dGVsX3JpbmdidWZmZXJfYWR2YW5jZShyaW5nLT5idWZmZXIpOwo+IC19Cj4gIGludCBfX2ludGVs X3Jpbmdfc3BhY2UoaW50IGhlYWQsIGludCB0YWlsLCBpbnQgc2l6ZSk7Cj4gIHZvaWQgaW50ZWxf cmluZ191cGRhdGVfc3BhY2Uoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpOwo+ICBp bnQgaW50ZWxfcmluZ19zcGFjZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1Zik7CgpB dCB0aGUgZW5kIG9mIHRoaXMgY3J1c2FkZSB3ZSBzaG91bGQgYWRkIHNvbWUgcHJldHR5IGtlcm5l bGRvYyBmb3Igb3VyCnJpbmdidWZmZXIgaW50ZXJmYWNlLgoKQW55d2F5LCB3aXRoIHNvbWUgbm90 ZXMgYWJvdXQgeW91ciBkZXZfcHJpdi9yaW5nYnVmZmVyL3doYXR2ZXIgY3J1c2FkZQphZGRlZCB0 byB0aGUgY29tbWl0IG1lc3NhZ2UsIGp1c3QgdG8gYWxpZ24gYW5kIGNsYXJpZnkgdGhlIG5ldyBu YW1pbmcKY29udmVudGlvbjoKClJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0 dGVyQGZmd2xsLmNoPgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwg Q29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK