From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepak Subject: Re: [PATCH 08/15] drm/i915: Implement PHY lane power gating for CHV Date: Wed, 19 Aug 2015 07:18:38 +0530 Message-ID: <55D3E076.9030500@linux.intel.com> References: <1436388361-11130-1-git-send-email-ville.syrjala@linux.intel.com> <1436388361-11130-9-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id B7D006EAE1 for ; Tue, 18 Aug 2015 18:51:04 -0700 (PDT) In-Reply-To: <1436388361-11130-9-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAwNy8wOS8yMDE1IDAyOjE1IEFNLCB2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbSB3 cm90ZToKPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+Cj4gUG93ZXJnYXRlIHRoZSBQSFkgbGFuZXMgd2hlbiB0aGV5J3JlIG5vdCBuZWVkZWQu IEZvciBIRE1JIGFsbCBmb3VyIGxhbmVzCj4gYXJlIG5lZWRlZCBhbHdheXMsIGJ1dCBmb3IgRFAg d2UgY2FuIGVuYWJsZSBvbmx5IHRoZSBuZWVkZWQgbGFuZXMuIFRvCj4gcG93ZXIgZG93biB0aGUg dW51c2VkIGxhbmVzIHdlIHVzZSBzb21lIHBvd2VyIGRvd24gb3ZlcnJpZGUgYml0cyBpbiB0aGUK PiBESVNQTEFZX1BIWV9DT05UUk9MIHJlZ2lzdGVyLiBXaXRob3V0IHRoZSBvdmVycmlkZXMgaXQg YXBwZWFycyB0aGF0IHRoZQo+IGhhcmR3YXJlIGFsd2F5cyBwb3dlcnMgb24gYWxsIHRoZSBsYW5l cy4gV2hlbiB0aGUgcG9ydCBpcyBkaXNhYmxlZCB0aGUKPiBwb3dlciBkb3duIG92ZXJyaWRlIGlz IG5vdCBuZWVkZWQgYW5kIHRoZSBsYW5lcyB3aWxsIHNodXQgb2ZmIG9uIHRoZWlyCj4gb3duLiBU aGF0IGFsc28gbWVhbnMgdGhlIG92ZXJyaWRlIGlzIGNyaXRpY2FsIHRvIGFjdHVhbGx5IGJlIGFi bGUgdG8KPiBhY2Nlc3MgdGhlIERQSU8gcmVnaXN0ZXJzIGJlZm9yZSB0aGUgcG9ydCBpcyBhY3R1 YWxseSBlbmFibGVkLgo+Cj4gQWRkaXRpb25hbGx5IHRoZSBjb21tb24gbGFuZXMgd2lsbCBwb3dl ciBkb3duIHdoZW4gbm90IG5lZWRlZC4gQ0wxCj4gcmVtYWlucyBvbiBhcyBsb25nIGFzIGFueXRo aW5nIGVsc2UgaXMgb24sIENMMiB3aWxsIHNodXQgZG93biB3aGVuCj4gYWxsIHRoZSBsYW5lcyBp biB0aGUgc2FtZSBjaGFubmVsIHdpbGwgc2h1dCBkb3duLiBUaGVyZSBpcyBvbmUgZXhjZXB0aW9u Cj4gZm9yIENMMiB0aGF0IHdpbGwgYmUgZGVhbHQgaW4gYSBzZXBhcmF0ZSBwYXRjaCBmb3IgY2xh cml0eS4KPgo+IFdpdGggcG90ZW50aWFsbHkgc29tZSBsYW5lcyBwb3dlcmVkIGRvd24sIHRoZSBE UCBjb2RlIG5vdyBoYXMgdG8gY2hlY2sKPiB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBsYW5lcyBiZWZv cmUgYWNjZXNzaW5nIFBDUy9UWCByZWdpc3RlcnMuIEFsbAo+IHJlZ2lzdGVycyBpbiBwb3dlcmVk IGRvd24gYmxvY2tzIHdpbGwgcmVhZHMgYXMgMHhmZmZmZmZmZiwgYW5kIHNvZSB3ZQo+IHdvdWxk IGRyb3duIGluIHdhcm5pbmdzIGZyb20gdmx2X2RwaW9fcmVhZCgpIGlmIHdlIGFsbG93ZWQgdGhl IGNvZGUKPiB0byBhY2Nlc3MgYWxsIHRob3NlIHJlZ2lzdGVycy4KPgo+IEFub3RoZXIgaW1wb3J0 YW50IGRldGFpbCBpbiB0aGUgRFAgY29kZSBpcyB0aGUgIlRYIGxhdGVuY3kgb3B0aW1hbCIKPiBz ZXR0aW5nLiBOb3JtYWxseSB0aGUgc2Vjb25kIFRYIGxhbmUgYWN0cyBhcyBzb21lIGtpbmQgb2Yg cmVzZXQgbWFzdGVyLAo+IHdpdGggdGhlIG90aGVyIGxhbmVzIGFzIHNsYXZlcy4gQnV0IHdoZW4g b25seSBhIHNpbmdsZSBsYW5lIGlzIGVuYWJsZWQsCj4gdGhhdCBzaW5nbGUgbGFuZSBvYnZpb3Vz bHkgaGFzIHRvIGJlIHRoZSBtYXN0ZXIuCj4KPiBBIGJpdCBvZiBleHRyYSBjYXJlIGlzIG5lZWRl ZCB0byByZWNvbnN0cnVjdCB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUKPiBESVNQTEFZX1BIWV9D T05UUk9MIHJlZ2lzdGVyIHNpbmNlIGl0IGNhbid0IGJlIHJlYWQgc2FmZWx5LiBTbyBpbnN0ZWFk Cj4gcmVhZCB0aGUgYWN0dWFsIGxhbmUgc3RhdHVzIGZyb20gdGhlIERQTEwvUEhZX1NUQVRVUyBy ZWdpc3RlcnMgYW5kCj4gdXNlIHRoYXQgdG8gZGV0ZXJtaW5lIHdoaWNoIGxhbmVzIG91Z2h0IHRv IGJlIHBvd2VyZ2F0ZWQgaW5pdGlhbGx5Lgo+Cj4gV2UgYWxzbyBuZWVkIHRvIHN3aXRjaCB0aGUg UEhZIHBvd2VyIG1vZGVzIHRvICJkZWVwIFBTUiIgdG8gYXZvaWQKPiBhIGhhcmQgc3lzdGVtIGhh bmcgd2hlbiBwb3dlcmluZyBkb3duIHRoZSBzaW5nbGUgY2hhbm5lbCBQSFkuCj4KPiBBbHNvIHNw cmlua2xlIGEgZmV3IGRlYnVnIHByaW50cyBhcm91bmQgc28gdGhhdCB3ZSBjYW4gbW9uaXRvciB0 aGUKPiBESVNQTEFZX1BIWV9TVEFUVVMgY2hhbmdlcyB3aXRob3V0IGhhdmluZyB0byByZWFkIGl0 IGFuZCByaXNrCj4gY29ycnVwdGluZyBpdC4KPgo+IHYyOiBBZGQgbG9ja2luZyB0byBjaHZfcG93 ZXJnYXRlX3BoeV9sYW5lcygpCj4gdjM6IEFjdHVhbGx5IGVuYWJsZSBkeW5hbWljIHBvd2VyZG93 biBpbiB0aGUgUEhZIGFuZCBkZWFsIHdpdGggdGhlCj4gICAgICBmYWxsb3V0Cj4KPiBTaWduZWQt b2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgIHwgICA4ICsr Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgICAgfCAxNDEgKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oICAgICAgICB8ICAgNCArCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1p LmMgICAgICAgfCAgIDQgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9w bS5jIHwgMTIzICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiAgIDUgZmlsZXMgY2hhbmdl ZCwgMjIxIGluc2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCj4gaW5kZXggMTdjYjdlNS4uYmNmY2JiNjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmgKPiBAQCAtMTEyNSw5ICsxMTI1LDE1IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMg ewo+ICAgCj4gICAjZGVmaW5lIF9DSFZfQ01OX0RXMTlfQ0gwCQkweDgxNGMKPiAgICNkZWZpbmUg X0NIVl9DTU5fRFc2X0NIMQkJMHg4MDk4Cj4gKyNkZWZpbmUgICBEUElPX0RZTlBXUkRPV05FTl9D SDEJCSgxIDw8IDI4KSAvKiBDTDIgRFc2IG9ubHkgKi8KPiAgICNkZWZpbmUgICBDSFZfQ01OX1VT RURDTEtDSEFOTkVMCSgxIDw8IDEzKQo+ICsKPiAgICNkZWZpbmUgQ0hWX0NNTl9EVzE5KGNoKSBf UElQRShjaCwgX0NIVl9DTU5fRFcxOV9DSDAsIF9DSFZfQ01OX0RXNl9DSDEpCj4gICAKPiArI2Rl ZmluZSBDSFZfQ01OX0RXMjgJCQkweDgxNzAKPiArI2RlZmluZSAgIERQSU9fQ0wxUE9XRVJET1dO RU4JCSgxIDw8IDIzKQo+ICsjZGVmaW5lICAgRFBJT19EWU5QV1JET1dORU5fQ0gwCQkoMSA8PCAy MikKPiArCj4gICAjZGVmaW5lIENIVl9DTU5fRFczMAkJCTB4ODE3OAo+ICAgI2RlZmluZSAgIERQ SU9fTFJDX0JZUEFTUwkJKDEgPDwgMykKPiAgIAo+IEBAIC0yMTc1LDEwICsyMTgxLDEyIEBAIGVu dW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+ICAgI2RlZmluZSBEUElPX1BIWV9TVEFUVVMJCQko VkxWX0RJU1BMQVlfQkFTRSArIDB4NjI0MCkKPiAgICNkZWZpbmUgICBEUExMX1BPUlREX1JFQURZ X01BU0sJCSgweGYpCj4gICAjZGVmaW5lIERJU1BMQVlfUEhZX0NPTlRST0wgKFZMVl9ESVNQTEFZ X0JBU0UgKyAweDYwMTAwKQo+ICsjZGVmaW5lICAgUEhZX0NIX1BPV0VSX0RPV05fT1ZSRF9FTihw aHksIGNoKQkoMSA8PCAoMioocGh5KSsoY2gpKzI3KSkKPiAgICNkZWZpbmUgICBQSFlfTERPX0RF TEFZXzBOUwkJCTB4MAo+ICAgI2RlZmluZSAgIFBIWV9MRE9fREVMQVlfMjAwTlMJCQkweDEKPiAg ICNkZWZpbmUgICBQSFlfTERPX0RFTEFZXzYwME5TCQkJMHgyCj4gICAjZGVmaW5lICAgUEhZX0xE T19TRVFfREVMQVkoZGVsYXksIHBoeSkJCSgoZGVsYXkpIDw8ICgyKihwaHkpKzIzKSkKPiArI2Rl ZmluZSAgIFBIWV9DSF9QT1dFUl9ET1dOX09WUkQobWFzaywgcGh5LCBjaCkJKChtYXNrKSA8PCAo OCoocGh5KSs0KihjaCkrMTEpKQo+ICAgI2RlZmluZSAgIFBIWV9DSF9TVV9QU1IJCQkJMHgxCj4g ICAjZGVmaW5lICAgUEhZX0NIX0RFRVBfUFNSCQkJMHg3Cj4gICAjZGVmaW5lICAgUEhZX0NIX1BP V0VSX01PREUobW9kZSwgcGh5LCBjaCkJKChtb2RlKSA8PCAoNioocGh5KSszKihjaCkrMikpCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggNDBiODQzMC4uNjA1ODEyOSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC0xMzMsNiArMTMzLDExIEBAIHN0YXRpYyB2b2lkIHZs dl9pbml0X3BhbmVsX3Bvd2VyX3NlcXVlbmNlcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsK PiAgIHN0YXRpYyB2b2lkIHZsdl9zdGVhbF9wb3dlcl9zZXF1ZW5jZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiAgIAkJCQkgICAgICBlbnVtIHBpcGUgcGlwZSk7Cj4gICAKPiArc3RhdGljIHVu c2lnbmVkIGludCBpbnRlbF9kcF91bnVzZWRfbGFuZV9tYXNrKGludCBsYW5lX2NvdW50KQo+ICt7 Cj4gKwlyZXR1cm4gfigoMSA8PCBsYW5lX2NvdW50KSAtIDEpICYgMHhmOwo+ICt9Cj4gKwo+ICAg c3RhdGljIGludAo+ICAgaW50ZWxfZHBfbWF4X2xpbmtfYncoc3RydWN0IGludGVsX2RwICAqaW50 ZWxfZHApCj4gICB7Cj4gQEAgLTIzOTUsMTcgKzI0MDAsMjEgQEAgc3RhdGljIHZvaWQgY2h2X3Bv c3RfZGlzYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgIAl2YWwgfD0g Q0hWX1BDU19SRVFfU09GVFJFU0VUX0VOOwo+ICAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBw aXBlLCBWTFZfUENTMDFfRFcxKGNoKSwgdmFsKTsKPiAgIAo+IC0JdmFsID0gdmx2X2RwaW9fcmVh ZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMShjaCkpOwo+IC0JdmFsIHw9IENIVl9QQ1Nf UkVRX1NPRlRSRVNFVF9FTjsKPiAtCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZf UENTMjNfRFcxKGNoKSwgdmFsKTsKPiArCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291 bnQgPiAyKSB7Cj4gKwkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BD UzIzX0RXMShjaCkpOwo+ICsJCXZhbCB8PSBDSFZfUENTX1JFUV9TT0ZUUkVTRVRfRU47Cj4gKwkJ dmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEoY2gpLCB2YWwpOwo+ ICsJfQo+ICAgCj4gICAJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BD UzAxX0RXMChjaCkpOwo+ICAgCXZhbCAmPSB+KERQSU9fUENTX1RYX0xBTkUyX1JFU0VUIHwgRFBJ T19QQ1NfVFhfTEFORTFfUkVTRVQpOwo+ICAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBl LCBWTFZfUENTMDFfRFcwKGNoKSwgdmFsKTsKPiAgIAo+IC0JdmFsID0gdmx2X2RwaW9fcmVhZChk ZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMChjaCkpOwo+IC0JdmFsICY9IH4oRFBJT19QQ1Nf VFhfTEFORTJfUkVTRVQgfCBEUElPX1BDU19UWF9MQU5FMV9SRVNFVCk7Cj4gLQl2bHZfZHBpb193 cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMChjaCksIHZhbCk7Cj4gKwlpZiAoaW50 ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50ID4gMikgewo+ICsJCXZhbCA9IHZsdl9kcGlvX3Jl YWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzAoY2gpKTsKPiArCQl2YWwgJj0gfihEUElP X1BDU19UWF9MQU5FMl9SRVNFVCB8IERQSU9fUENTX1RYX0xBTkUxX1JFU0VUKTsKPiArCQl2bHZf ZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMChjaCksIHZhbCk7Cj4gKwl9 Cj4gICAKPiAgIAltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiAgIH0KPiBAQCAt MjUyNSw3ICsyNTM0LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2RwKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7Cj4gICAJdWludDMyX3QgZHBfcmVnID0gSTkx NV9SRUFEKGludGVsX2RwLT5vdXRwdXRfcmVnKTsKPiAtCXVuc2lnbmVkIGludCBsYW5lX21hc2sg PSAweDA7Cj4gICAKPiAgIAlpZiAoV0FSTl9PTihkcF9yZWcgJiBEUF9QT1JUX0VOKSkKPiAgIAkJ cmV0dXJuOwo+IEBAIC0yNTQzLDkgKzI1NTEsMTUgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxl X2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAgCj4gICAJcHBzX3VubG9jayhp bnRlbF9kcCk7Cj4gICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAoSVNfVkFM TEVZVklFVyhkZXYpKSB7Cj4gKwkJdW5zaWduZWQgaW50IGxhbmVfbWFzayA9IDB4MDsKPiArCj4g KwkJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkKPiArCQkJbGFuZV9tYXNrID0gaW50ZWxfZHBfdW51 c2VkX2xhbmVfbWFzayhjcnRjLT5jb25maWctPmxhbmVfY291bnQpOwo+ICsKPiAgIAkJdmx2X3dh aXRfcG9ydF9yZWFkeShkZXZfcHJpdiwgZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLAo+ICAgCQkJ CSAgICBsYW5lX21hc2spOwo+ICsJfQo+ICAgCj4gICAJaW50ZWxfZHBfc2lua19kcG1zKGludGVs X2RwLCBEUk1fTU9ERV9EUE1TX09OKTsKPiAgIAlpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKGlu dGVsX2RwKTsKPiBAQCAtMjc3MiwzMSArMjc4Niw0MCBAQCBzdGF0aWMgdm9pZCBjaHZfcHJlX2Vu YWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgIAl2YWwgJj0gfkRQSU9f TEFORURFU0tFV19TVFJBUF9PVlJEOwo+ICAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBl LCBWTFZfUENTMDFfRFcxMShjaCksIHZhbCk7Cj4gICAKPiAtCXZhbCA9IHZsdl9kcGlvX3JlYWQo ZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzExKGNoKSk7Cj4gLQl2YWwgJj0gfkRQSU9fTEFO RURFU0tFV19TVFJBUF9PVlJEOwo+IC0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZM Vl9QQ1MyM19EVzExKGNoKSwgdmFsKTsKPiArCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxhbmVf Y291bnQgPiAyKSB7Cj4gKwkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxW X1BDUzIzX0RXMTEoY2gpKTsKPiArCQl2YWwgJj0gfkRQSU9fTEFORURFU0tFV19TVFJBUF9PVlJE Owo+ICsJCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMShjaCks IHZhbCk7Cj4gKwl9Cj4gICAKPiAgIAkvKiBEZWFzc2VydCBzb2Z0IGRhdGEgbGFuZSByZXNldCov Cj4gICAJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMShj aCkpOwo+ICAgCXZhbCB8PSBDSFZfUENTX1JFUV9TT0ZUUkVTRVRfRU47Cj4gICAJdmx2X2RwaW9f d3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzEoY2gpLCB2YWwpOwo+ICAgCj4gLQl2 YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxKGNoKSk7Cj4g LQl2YWwgfD0gQ0hWX1BDU19SRVFfU09GVFJFU0VUX0VOOwo+IC0Jdmx2X2RwaW9fd3JpdGUoZGV2 X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEoY2gpLCB2YWwpOwo+ICsJaWYgKGludGVsX2NydGMt PmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKPiArCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9w cml2LCBwaXBlLCBWTFZfUENTMjNfRFcxKGNoKSk7Cj4gKwkJdmFsIHw9IENIVl9QQ1NfUkVRX1NP RlRSRVNFVF9FTjsKPiArCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIz X0RXMShjaCksIHZhbCk7Cj4gKwl9Cj4gICAKPiAgIAl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9w cml2LCBwaXBlLCBWTFZfUENTMDFfRFcwKGNoKSk7Cj4gICAJdmFsIHw9IChEUElPX1BDU19UWF9M QU5FMl9SRVNFVCB8IERQSU9fUENTX1RYX0xBTkUxX1JFU0VUKTsKPiAgIAl2bHZfZHBpb193cml0 ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMChjaCksIHZhbCk7Cj4gICAKPiAtCXZhbCA9 IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzAoY2gpKTsKPiAtCXZh bCB8PSAoRFBJT19QQ1NfVFhfTEFORTJfUkVTRVQgfCBEUElPX1BDU19UWF9MQU5FMV9SRVNFVCk7 Cj4gLQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMChjaCksIHZh bCk7Cj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50ID4gMikgewo+ICsJCXZh bCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzAoY2gpKTsKPiAr CQl2YWwgfD0gKERQSU9fUENTX1RYX0xBTkUyX1JFU0VUIHwgRFBJT19QQ1NfVFhfTEFORTFfUkVT RVQpOwo+ICsJCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcwKGNo KSwgdmFsKTsKPiArCX0KPiAgIAo+ICAgCS8qIFByb2dyYW0gVHggbGFuZSBsYXRlbmN5IG9wdGlt YWwgc2V0dGluZyovCj4gLQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4gKwlmb3IgKGkgPSAw OyBpIDwgaW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50OyBpKyspIHsKPiAgIAkJLyogU2V0 IHRoZSB1cGFyIGJpdCAqLwo+IC0JCWRhdGEgPSAoaSA9PSAxKSA/IDB4MCA6IDB4MTsKPiArCQlp ZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50ID09IDEpCj4gKwkJCWRhdGEgPSAweDA7 Cj4gKwkJZWxzZQo+ICsJCQlkYXRhID0gKGkgPT0gMSkgPyAweDAgOiAweDE7Cj4gICAJCXZsdl9k cGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBDSFZfVFhfRFcxNChjaCwgaSksCj4gICAJCQkJZGF0 YSA8PCBEUElPX1VQQVJfU0hJRlQpOwo+ICAgCX0KPiBAQCAtMjgxNyw5ICsyODQwLDExIEBAIHN0 YXRpYyB2b2lkIGNodl9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy KQo+ICAgCXZhbCB8PSBEUElPX1RYMl9TVEFHR0VSX01BU0soMHgxZik7Cj4gICAJdmx2X2RwaW9f d3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzExKGNoKSwgdmFsKTsKPiAgIAo+IC0J dmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMTEoY2gpKTsK PiAtCXZhbCB8PSBEUElPX1RYMl9TVEFHR0VSX01BU0soMHgxZik7Cj4gLQl2bHZfZHBpb193cml0 ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMTEoY2gpLCB2YWwpOwo+ICsJaWYgKGludGVs X2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKPiArCQl2YWwgPSB2bHZfZHBpb19yZWFk KGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMShjaCkpOwo+ICsJCXZhbCB8PSBEUElPX1RY Ml9TVEFHR0VSX01BU0soMHgxZik7Cj4gKwkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUs IFZMVl9QQ1MyM19EVzExKGNoKSwgdmFsKTsKPiArCX0KPiAgIAo+ICAgCXZsdl9kcGlvX3dyaXRl KGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcxMihjaCksCj4gICAJCSAgICAgICBEUElPX0xB TkVTVEFHR0VSX1NUUkFQKHN0YWdnZXIpIHwKPiBAQCAtMjgyOCwxMiArMjg1MywxNCBAQCBzdGF0 aWMgdm9pZCBjaHZfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikK PiAgIAkJICAgICAgIERQSU9fVFgxX1NUQUdHRVJfTVVMVCg2KSB8Cj4gICAJCSAgICAgICBEUElP X1RYMl9TVEFHR0VSX01VTFQoMCkpOwo+ICAgCj4gLQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwg cGlwZSwgVkxWX1BDUzIzX0RXMTIoY2gpLAo+IC0JCSAgICAgICBEUElPX0xBTkVTVEFHR0VSX1NU UkFQKHN0YWdnZXIpIHwKPiAtCQkgICAgICAgRFBJT19MQU5FU1RBR0dFUl9TVFJBUF9PVlJEIHwK PiAtCQkgICAgICAgRFBJT19UWDFfU1RBR0dFUl9NQVNLKDB4MWYpIHwKPiAtCQkgICAgICAgRFBJ T19UWDFfU1RBR0dFUl9NVUxUKDcpIHwKPiAtCQkgICAgICAgRFBJT19UWDJfU1RBR0dFUl9NVUxU KDUpKTsKPiArCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQgPiAyKSB7Cj4gKwkJ dmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEyKGNoKSwKPiArCQkJ ICAgICAgIERQSU9fTEFORVNUQUdHRVJfU1RSQVAoc3RhZ2dlcikgfAo+ICsJCQkgICAgICAgRFBJ T19MQU5FU1RBR0dFUl9TVFJBUF9PVlJEIHwKPiArCQkJICAgICAgIERQSU9fVFgxX1NUQUdHRVJf TUFTSygweDFmKSB8Cj4gKwkJCSAgICAgICBEUElPX1RYMV9TVEFHR0VSX01VTFQoNykgfAo+ICsJ CQkgICAgICAgRFBJT19UWDJfU1RBR0dFUl9NVUxUKDUpKTsKPiArCX0KPiAgIAo+ICAgCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICAgCj4gQEAgLTI4NDksMTAgKzI4NzYsMTQg QEAgc3RhdGljIHZvaWQgY2h2X2RwX3ByZV9wbGxfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyKQo+ICAgCQl0b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7Cj4gICAJ ZW51bSBkcGlvX2NoYW5uZWwgY2ggPSB2bHZfZHBvcnRfdG9fY2hhbm5lbChkcG9ydCk7Cj4gICAJ ZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICsJdW5zaWduZWQgaW50IGxhbmVf bWFzayA9Cj4gKwkJaW50ZWxfZHBfdW51c2VkX2xhbmVfbWFzayhpbnRlbF9jcnRjLT5jb25maWct PmxhbmVfY291bnQpOwo+ICAgCXUzMiB2YWw7Cj4gICAKPiAgIAlpbnRlbF9kcF9wcmVwYXJlKGVu Y29kZXIpOwo+ICAgCj4gKwljaHZfcGh5X3Bvd2VyZ2F0ZV9sYW5lcyhlbmNvZGVyLCB0cnVlLCBs YW5lX21hc2spOwo+ICsKPiAgIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gICAK PiAgIAkvKiBwcm9ncmFtIGxlZnQvcmlnaHQgY2xvY2sgZGlzdHJpYnV0aW9uICovCj4gQEAgLTI4 ODMsMTMgKzI5MTQsMTUgQEAgc3RhdGljIHZvaWQgY2h2X2RwX3ByZV9wbGxfZW5hYmxlKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAgCQl2YWwgfD0gQ0hWX1BDU19VU0VEQ0xLQ0hB Tk5FTDsKPiAgIAl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXOChj aCksIHZhbCk7Cj4gICAKPiAtCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZM Vl9QQ1MyM19EVzgoY2gpKTsKPiAtCXZhbCB8PSBDSFZfUENTX1VTRURDTEtDSEFOTkVMX09WUlJJ REU7Cj4gLQlpZiAocGlwZSAhPSBQSVBFX0IpCj4gLQkJdmFsICY9IH5DSFZfUENTX1VTRURDTEtD SEFOTkVMOwo+IC0JZWxzZQo+IC0JCXZhbCB8PSBDSFZfUENTX1VTRURDTEtDSEFOTkVMOwo+IC0J dmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzgoY2gpLCB2YWwpOwo+ ICsJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKPiArCQl2YWwgPSB2 bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFc4KGNoKSk7Cj4gKwkJdmFs IHw9IENIVl9QQ1NfVVNFRENMS0NIQU5ORUxfT1ZSUklERTsKPiArCQlpZiAocGlwZSAhPSBQSVBF X0IpCj4gKwkJCXZhbCAmPSB+Q0hWX1BDU19VU0VEQ0xLQ0hBTk5FTDsKPiArCQllbHNlCj4gKwkJ CXZhbCB8PSBDSFZfUENTX1VTRURDTEtDSEFOTkVMOwo+ICsJCXZsdl9kcGlvX3dyaXRlKGRldl9w cml2LCBwaXBlLCBWTFZfUENTMjNfRFc4KGNoKSwgdmFsKTsKPiArCX0KPiAgIAo+ICAgCS8qCj4g ICAJICogVGhpcyBhIGEgYml0IHdlaXJkIHNpbmNlIGdlbmVyYWxseSBDTAo+IEBAIC0yOTI2LDYg KzI5NTksOCBAQCBzdGF0aWMgdm9pZCBjaHZfZHBfcG9zdF9wbGxfZGlzYWJsZShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgIAl9Cj4gICAKPiAgIAltdXRleF91bmxvY2soJmRldl9w cml2LT5zYl9sb2NrKTsKPiArCj4gKwljaHZfcGh5X3Bvd2VyZ2F0ZV9sYW5lcyhlbmNvZGVyLCBm YWxzZSwgMHgwKTsKPiAgIH0KPiAgIAo+ICAgLyoKPiBAQCAtMzI2MSwyNCArMzI5NiwyOCBAQCBz dGF0aWMgdWludDMyX3QgY2h2X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKPiAgIAl2YWwgfD0gRFBJT19QQ1NfVFgxREVFTVBfOVA1IHwgRFBJT19QQ1NfVFgyREVFTVBf OVA1Owo+ICAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcxMChj aCksIHZhbCk7Cj4gICAKPiAtCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZM Vl9QQ1MyM19EVzEwKGNoKSk7Cj4gLQl2YWwgJj0gfihEUElPX1BDU19TV0lOR19DQUxDX1RYMF9U WDIgfCBEUElPX1BDU19TV0lOR19DQUxDX1RYMV9UWDMpOwo+IC0JdmFsICY9IH4oRFBJT19QQ1Nf VFgxREVFTVBfTUFTSyB8IERQSU9fUENTX1RYMkRFRU1QX01BU0spOwo+IC0JdmFsIHw9IERQSU9f UENTX1RYMURFRU1QXzlQNSB8IERQSU9fUENTX1RYMkRFRU1QXzlQNTsKPiAtCXZsdl9kcGlvX3dy aXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMChjaCksIHZhbCk7Cj4gKwlpZiAoaW50 ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50ID4gMikgewo+ICsJCXZhbCA9IHZsdl9kcGlvX3Jl YWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSk7Cj4gKwkJdmFsICY9IH4oRFBJ T19QQ1NfU1dJTkdfQ0FMQ19UWDBfVFgyIHwgRFBJT19QQ1NfU1dJTkdfQ0FMQ19UWDFfVFgzKTsK PiArCQl2YWwgJj0gfihEUElPX1BDU19UWDFERUVNUF9NQVNLIHwgRFBJT19QQ1NfVFgyREVFTVBf TUFTSyk7Cj4gKwkJdmFsIHw9IERQSU9fUENTX1RYMURFRU1QXzlQNSB8IERQSU9fUENTX1RYMkRF RU1QXzlQNTsKPiArCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RX MTAoY2gpLCB2YWwpOwo+ICsJfQo+ICAgCj4gICAJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJp diwgcGlwZSwgVkxWX1BDUzAxX0RXOShjaCkpOwo+ICAgCXZhbCAmPSB+KERQSU9fUENTX1RYMU1B UkdJTl9NQVNLIHwgRFBJT19QQ1NfVFgyTUFSR0lOX01BU0spOwo+ICAgCXZhbCB8PSBEUElPX1BD U19UWDFNQVJHSU5fMDAwIHwgRFBJT19QQ1NfVFgyTUFSR0lOXzAwMDsKPiAgIAl2bHZfZHBpb193 cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXOShjaCksIHZhbCk7Cj4gICAKPiAtCXZh bCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzkoY2gpKTsKPiAt CXZhbCAmPSB+KERQSU9fUENTX1RYMU1BUkdJTl9NQVNLIHwgRFBJT19QQ1NfVFgyTUFSR0lOX01B U0spOwo+IC0JdmFsIHw9IERQSU9fUENTX1RYMU1BUkdJTl8wMDAgfCBEUElPX1BDU19UWDJNQVJH SU5fMDAwOwo+IC0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzko Y2gpLCB2YWwpOwo+ICsJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsK PiArCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFc5KGNo KSk7Cj4gKwkJdmFsICY9IH4oRFBJT19QQ1NfVFgxTUFSR0lOX01BU0sgfCBEUElPX1BDU19UWDJN QVJHSU5fTUFTSyk7Cj4gKwkJdmFsIHw9IERQSU9fUENTX1RYMU1BUkdJTl8wMDAgfCBEUElPX1BD U19UWDJNQVJHSU5fMDAwOwo+ICsJCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZf UENTMjNfRFc5KGNoKSwgdmFsKTsKPiArCX0KPiAgIAo+ICAgCS8qIFByb2dyYW0gc3dpbmcgZGVl bXBoICovCj4gLQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4gKwlmb3IgKGkgPSAwOyBpIDwg aW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50OyBpKyspIHsKPiAgIAkJdmFsID0gdmx2X2Rw aW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXNChjaCwgaSkpOwo+ICAgCQl2YWwgJj0g fkRQSU9fU1dJTkdfREVFTVBIOVA1X01BU0s7Cj4gICAJCXZhbCB8PSBkZWVtcGhfcmVnX3ZhbHVl IDw8IERQSU9fU1dJTkdfREVFTVBIOVA1X1NISUZUOwo+IEBAIC0zMjg2LDcgKzMzMjUsNyBAQCBz dGF0aWMgdWludDMyX3QgY2h2X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKPiAgIAl9Cj4gICAKPiAgIAkvKiBQcm9ncmFtIHN3aW5nIG1hcmdpbiAqLwo+IC0JZm9yIChp ID0gMDsgaSA8IDQ7IGkrKykgewo+ICsJZm9yIChpID0gMDsgaSA8IGludGVsX2NydGMtPmNvbmZp Zy0+bGFuZV9jb3VudDsgaSsrKSB7Cj4gICAJCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYs IHBpcGUsIENIVl9UWF9EVzIoY2gsIGkpKTsKPiAgIAo+ICAgCQl2YWwgJj0gfkRQSU9fU1dJTkdf TUFSR0lOMDAwX01BU0s7Cj4gQEAgLTMzMDksNyArMzM0OCw3IEBAIHN0YXRpYyB1aW50MzJfdCBj aHZfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAgCSAqIEZvciBu b3csIGZvciB0aGlzIHVuaXF1ZSB0cmFuc2l0aW9uIHNjYWxlIHNlbGVjdGlvbiwgc2V0IGJpdAo+ ICAgCSAqIDI3IGZvciBjaDAgYW5kIGNoMS4KPiAgIAkgKi8KPiAtCWZvciAoaSA9IDA7IGkgPCA0 OyBpKyspIHsKPiArCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291 bnQ7IGkrKykgewo+ICAgCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBDSFZf VFhfRFczKGNoLCBpKSk7Cj4gICAJCWlmIChjaHZfbmVlZF91bmlxX3RyYW5zX3NjYWxlKHRyYWlu X3NldCkpCj4gICAJCQl2YWwgfD0gRFBJT19UWF9VTklRX1RSQU5TX1NDQUxFX0VOOwo+IEBAIC0z MzIzLDkgKzMzNjIsMTEgQEAgc3RhdGljIHVpbnQzMl90IGNodl9zaWduYWxfbGV2ZWxzKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gICAJdmFsIHw9IERQSU9fUENTX1NXSU5HX0NBTENfVFgw X1RYMiB8IERQSU9fUENTX1NXSU5HX0NBTENfVFgxX1RYMzsKPiAgIAl2bHZfZHBpb193cml0ZShk ZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMTAoY2gpLCB2YWwpOwo+ICAgCj4gLQl2YWwgPSB2 bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMChjaCkpOwo+IC0JdmFs IHw9IERQSU9fUENTX1NXSU5HX0NBTENfVFgwX1RYMiB8IERQSU9fUENTX1NXSU5HX0NBTENfVFgx X1RYMzsKPiAtCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMChj aCksIHZhbCk7Cj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50ID4gMikgewo+ ICsJCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNo KSk7Cj4gKwkJdmFsIHw9IERQSU9fUENTX1NXSU5HX0NBTENfVFgwX1RYMiB8IERQSU9fUENTX1NX SU5HX0NBTENfVFgxX1RYMzsKPiArCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxW X1BDUzIzX0RXMTAoY2gpLCB2YWwpOwo+ICsJfQo+ICAgCj4gICAJLyogTFJDIEJ5cGFzcyAqLwo+ ICAgCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIENIVl9DTU5fRFczMCk7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCAyM2Q1ZTQ2Li5mOGExNmRjIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTM3MCw2ICsxMzcwLDEwIEBAIHZvaWQgaW50 ZWxfcnVudGltZV9wbV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAg IAo+ICAgdm9pZCBpbnRlbF9kaXNwbGF5X3NldF9pbml0X3Bvd2VyKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXYsIGJvb2wgZW5hYmxlKTsKPiAgIAo+ICt2b2lkIGNodl9waHlfcG93ZXJnYXRl X2xhbmVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkgICAgIGJvb2wgb3Zl cnJpZGUsIHVuc2lnbmVkIGludCBtYXNrKTsKPiArCj4gKwo+ICAgLyogaW50ZWxfcG0uYyAqLwo+ ICAgdm9pZCBpbnRlbF9pbml0X2Nsb2NrX2dhdGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK PiAgIHZvaWQgaW50ZWxfc3VzcGVuZF9odyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gaW5kZXggODZiMWEyYy4uYjNmNmM5ZiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiBAQCAtMTYyNSw2ICsxNjI1LDggQEAgc3RhdGljIHZv aWQgY2h2X2hkbWlfcHJlX3BsbF9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIp Cj4gICAKPiAgIAlpbnRlbF9oZG1pX3ByZXBhcmUoZW5jb2Rlcik7Cj4gICAKPiArCWNodl9waHlf cG93ZXJnYXRlX2xhbmVzKGVuY29kZXIsIHRydWUsIDB4MCk7Cj4gKwo+ICAgCW11dGV4X2xvY2so JmRldl9wcml2LT5zYl9sb2NrKTsKPiAgIAo+ICAgCS8qIHByb2dyYW0gbGVmdC9yaWdodCBjbG9j ayBkaXN0cmlidXRpb24gKi8KPiBAQCAtMTY5OCw2ICsxNzAwLDggQEAgc3RhdGljIHZvaWQgY2h2 X2hkbWlfcG9zdF9wbGxfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAg IAl9Cj4gICAKPiAgIAltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCj4gKwlj aHZfcGh5X3Bvd2VyZ2F0ZV9sYW5lcyhlbmNvZGVyLCBmYWxzZSwgMHgwKTsKPiAgIH0KPiAgIAo+ ICAgc3RhdGljIHZvaWQgdmx2X2hkbWlfcG9zdF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50 aW1lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBpbmRl eCBkYWIxZGE5Li41MDZhOGNjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3J1bnRpbWVfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRp bWVfcG0uYwo+IEBAIC05NDYsMTQgKzk0NiwxOSBAQCBzdGF0aWMgdm9pZCBjaHZfZHBpb19jbW5f cG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAg CQkJCQkgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsKQo+ICAgewo+ICAgCWVu dW0gZHBpb19waHkgcGh5Owo+ICsJZW51bSBwaXBlIHBpcGU7Cj4gKwl1aW50MzJfdCB0bXA7Cj4g ICAKPiAgIAlXQVJOX09OX09OQ0UocG93ZXJfd2VsbC0+ZGF0YSAhPSBQVU5JVF9QT1dFUl9XRUxM X0RQSU9fQ01OX0JDICYmCj4gICAJCSAgICAgcG93ZXJfd2VsbC0+ZGF0YSAhPSBQVU5JVF9QT1dF Ul9XRUxMX0RQSU9fQ01OX0QpOwo+ICAgCj4gLQlpZiAocG93ZXJfd2VsbC0+ZGF0YSA9PSBQVU5J VF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDKQo+ICsJaWYgKHBvd2VyX3dlbGwtPmRhdGEgPT0gUFVO SVRfUE9XRVJfV0VMTF9EUElPX0NNTl9CQykgewo+ICsJCXBpcGUgPSBQSVBFX0E7Cj4gICAJCXBo eSA9IERQSU9fUEhZMDsKPiAtCWVsc2UKPiArCX0gZWxzZSB7Cj4gKwkJcGlwZSA9IFBJUEVfQzsK PiAgIAkJcGh5ID0gRFBJT19QSFkxOwo+ICsJfQo+ICAgCj4gICAJLyogc2luY2UgcmVmL2NyaSBj bG9jayB3YXMgZW5hYmxlZCAqLwo+ICAgCXVkZWxheSgxKTsgLyogPjEwbnMgZm9yIGNtbnJlc2V0 LCA+MG5zIGZvciBzaWRlcmVzZXQgKi8KPiBAQCAtOTYzLDggKzk2OCwyNiBAQCBzdGF0aWMgdm9p ZCBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICAgCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoRElTUExBWV9QSFlfU1RBVFVT KSAmIFBIWV9QT1dFUkdPT0QocGh5KSwgMSkpCj4gICAJCURSTV9FUlJPUigiRGlzcGxheSBQSFkg JWQgaXMgbm90IHBvd2VyIHVwXG4iLCBwaHkpOwo+ICAgCj4gKwltdXRleF9sb2NrKCZkZXZfcHJp di0+c2JfbG9jayk7Cj4gKwo+ICsJLyogRW5hYmxlIGR5bmFtaWMgcG93ZXIgZG93biAqLwo+ICsJ dG1wID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX0NNTl9EVzI4KTsKPiArCXRt cCB8PSBEUElPX0RZTlBXUkRPV05FTl9DSDAgfCBEUElPX0NMMVBPV0VSRE9XTkVOOwo+ICsJdmx2 X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIENIVl9DTU5fRFcyOCwgdG1wKTsKPiArCj4gKwlp ZiAocG93ZXJfd2VsbC0+ZGF0YSA9PSBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDKSB7Cj4g KwkJdG1wID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgX0NIVl9DTU5fRFc2X0NIMSk7 Cj4gKwkJdG1wIHw9IERQSU9fRFlOUFdSRE9XTkVOX0NIMTsKPiArCQl2bHZfZHBpb193cml0ZShk ZXZfcHJpdiwgcGlwZSwgX0NIVl9DTU5fRFc2X0NIMSwgdG1wKTsKPiArCX0KPiArCj4gKwltdXRl eF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCj4gICAJZGV2X3ByaXYtPmNodl9waHlf Y29udHJvbCB8PSBQSFlfQ09NX0xBTkVfUkVTRVRfREVBU1NFUlQocGh5KTsKPiAgIAlJOTE1X1dS SVRFKERJU1BMQVlfUEhZX0NPTlRST0wsIGRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOwo+ICsK PiArCURSTV9ERUJVR19LTVMoIkVuYWJsZWQgRFBJTyBQSFklZCAoUEhZX0NPTlRST0w9MHglMDh4 KVxuIiwKPiArCQkgICAgICBwaHksIGRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOwo+ICAgfQo+ ICAgCj4gICBzdGF0aWMgdm9pZCBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBAQCAtOTg4LDYgKzEwMTEsMzUgQEAgc3Rh dGljIHZvaWQgY2h2X2RwaW9fY21uX3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJSTkxNV9XUklURShESVNQTEFZX1BIWV9DT05UUk9MLCBk ZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sKTsKPiAgIAo+ICAgCXZsdl9zZXRfcG93ZXJfd2VsbChk ZXZfcHJpdiwgcG93ZXJfd2VsbCwgZmFsc2UpOwo+ICsKPiArCURSTV9ERUJVR19LTVMoIkRpc2Fi bGVkIERQSU8gUEhZJWQgKFBIWV9DT05UUk9MPTB4JTA4eClcbiIsCj4gKwkJICAgICAgcGh5LCBk ZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sKTsKPiArfQo+ICsKPiArdm9pZCBjaHZfcGh5X3Bvd2Vy Z2F0ZV9sYW5lcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkJICAgICBib29s IG92ZXJyaWRlLCB1bnNpZ25lZCBpbnQgbWFzaykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3Qg aTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmRldl9wcml2LT5wb3dlcl9kb21h aW5zOwo+ICsJZW51bSBkcGlvX3BoeSBwaHkgPSB2bHZfZHBvcnRfdG9fcGh5KGVuY190b19kaWdf cG9ydCgmZW5jb2Rlci0+YmFzZSkpOwo+ICsJZW51bSBkcGlvX2NoYW5uZWwgY2ggPSB2bHZfZHBv cnRfdG9fY2hhbm5lbChlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpKTsKPiArCj4gKwlt dXRleF9sb2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsKPiArCj4gKwlkZXZfcHJpdi0+Y2h2X3Bo eV9jb250cm9sICY9IH5QSFlfQ0hfUE9XRVJfRE9XTl9PVlJEKDB4ZiwgcGh5LCBjaCk7Cj4gKwlk ZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sIHw9IFBIWV9DSF9QT1dFUl9ET1dOX09WUkQobWFzaywg cGh5LCBjaCk7Cj4gKwo+ICsJaWYgKG92ZXJyaWRlKQo+ICsJCWRldl9wcml2LT5jaHZfcGh5X2Nv bnRyb2wgfD0gUEhZX0NIX1BPV0VSX0RPV05fT1ZSRF9FTihwaHksIGNoKTsKPiArCWVsc2UKPiAr CQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sICY9IH5QSFlfQ0hfUE9XRVJfRE9XTl9PVlJEX0VO KHBoeSwgY2gpOwo+ICsKPiArCUk5MTVfV1JJVEUoRElTUExBWV9QSFlfQ09OVFJPTCwgZGV2X3By aXYtPmNodl9waHlfY29udHJvbCk7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiUG93ZXIgZ2F0aW5n IERQSU8gUEhZJWQgQ0glZCBsYW5lcyAweCV4IChQSFlfQ09OVFJPTD0weCUwOHgpXG4iLAo+ICsJ CSAgICAgIHBoeSwgY2gsIG1hc2ssIGRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOwo+ICsKPiAr CW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7Cj4gICB9Cj4gICAKPiAgIHN0YXRp YyBib29sIGNodl9waXBlX3Bvd2VyX3dlbGxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gQEAgLTE2MjAsMTkgKzE2NzIsNzIgQEAgc3RhdGljIHZvaWQgY2h2X3Bo eV9jb250cm9sX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCSAq IERJU1BMQVlfUEhZX0NPTlRST0wgY2FuIGdldCBjb3JydXB0ZWQgaWYgcmVhZC4gQXMgYQo+ICAg CSAqIHdvcmthcm91bmQgbmV2ZXIgZXZlciByZWFkIERJU1BMQVlfUEhZX0NPTlRST0wsIGFuZAo+ ICAgCSAqIGluc3RlYWQgbWFpbnRhaW4gYSBzaGFkb3cgY29weSBvdXJzZWx2ZXMuIFVzZSB0aGUg YWN0dWFsCj4gLQkgKiBwb3dlciB3ZWxsIHN0YXRlIHRvIHJlY29uc3RydWN0IHRoZSBleHBlY3Rl ZCBpbml0aWFsCj4gLQkgKiB2YWx1ZS4KPiArCSAqIHBvd2VyIHdlbGwgc3RhdGUgYW5kIGxhbmUg c3RhdHVzIHRvIHJlY29uc3RydWN0IHRoZQo+ICsJICogZXhwZWN0ZWQgaW5pdGlhbCB2YWx1ZS4K PiAgIAkgKi8KPiAgIAlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sID0KPiAgIAkJUEhZX0xET19T RVFfREVMQVkoUEhZX0xET19ERUxBWV82MDBOUywgRFBJT19QSFkwKSB8Cj4gICAJCVBIWV9MRE9f U0VRX0RFTEFZKFBIWV9MRE9fREVMQVlfNjAwTlMsIERQSU9fUEhZMSkgfAo+IC0JCVBIWV9DSF9Q T1dFUl9NT0RFKFBIWV9DSF9TVV9QU1IsIERQSU9fUEhZMCwgRFBJT19DSDApIHwKPiAtCQlQSFlf Q0hfUE9XRVJfTU9ERShQSFlfQ0hfU1VfUFNSLCBEUElPX1BIWTAsIERQSU9fQ0gxKSB8Cj4gLQkJ UEhZX0NIX1BPV0VSX01PREUoUEhZX0NIX1NVX1BTUiwgRFBJT19QSFkxLCBEUElPX0NIMCk7Cj4g LQlpZiAoY21uX2JjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9iYykpCj4gKwkJUEhZ X0NIX1BPV0VSX01PREUoUEhZX0NIX0RFRVBfUFNSLCBEUElPX1BIWTAsIERQSU9fQ0gwKSB8Cj4g KwkJUEhZX0NIX1BPV0VSX01PREUoUEhZX0NIX0RFRVBfUFNSLCBEUElPX1BIWTAsIERQSU9fQ0gx KSB8Cj4gKwkJUEhZX0NIX1BPV0VSX01PREUoUEhZX0NIX0RFRVBfUFNSLCBEUElPX1BIWTEsIERQ SU9fQ0gwKTsKPiArCj4gKwkvKgo+ICsJICogSWYgYWxsIGxhbmVzIGFyZSBkaXNhYmxlZCB3ZSBs ZWF2ZSB0aGUgb3ZlcnJpZGUgZGlzYWJsZWQKPiArCSAqIHdpdGggYWxsIHBvd2VyIGRvd24gYml0 cyBjbGVhcmVkIHRvIG1hdGNoIHRoZSBzdGF0ZSB3ZQo+ICsJICogd291bGQgdXNlIGFmdGVyIGRp c2FibGluZyB0aGUgcG9ydC4gT3RoZXJ3aXNlIGVuYWJsZSB0aGUKPiArCSAqIG92ZXJyaWRlIGFu ZCBzZXQgdGhlIGxhbmUgcG93ZXJkb3duIGJpdHMgYWNjZGluZyB0byB0aGUKPiArCSAqIGN1cnJl bnQgbGFuZSBzdGF0dXMuCj4gKwkgKi8KPiArCWlmIChjbW5fYmMtPm9wcy0+aXNfZW5hYmxlZChk ZXZfcHJpdiwgY21uX2JjKSkgewo+ICsJCXVpbnQzMl90IHN0YXR1cyA9IEk5MTVfUkVBRChEUExM KFBJUEVfQSkpOwo+ICsJCXVuc2lnbmVkIGludCBtYXNrOwo+ICsKPiArCQltYXNrID0gc3RhdHVz ICYgRFBMTF9QT1JUQl9SRUFEWV9NQVNLOwo+ICsJCWlmIChtYXNrID09IDB4ZikKPiArCQkJbWFz ayA9IDB4MDsKPiArCQllbHNlCj4gKwkJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0KPiAr CQkJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkRfRU4oRFBJT19QSFkwLCBEUElPX0NIMCk7Cj4gKwo+ ICsJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0KPiArCQkJUEhZX0NIX1BPV0VSX0RPV05f T1ZSRChtYXNrLCBEUElPX1BIWTAsIERQSU9fQ0gwKTsKPiArCj4gKwkJbWFzayA9IChzdGF0dXMg JiBEUExMX1BPUlRDX1JFQURZX01BU0spID4+IDQ7Cj4gKwkJaWYgKG1hc2sgPT0gMHhmKQo+ICsJ CQltYXNrID0gMHgwOwo+ICsJCWVsc2UKPiArCQkJZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCB8 PQo+ICsJCQkJUEhZX0NIX1BPV0VSX0RPV05fT1ZSRF9FTihEUElPX1BIWTAsIERQSU9fQ0gxKTsK PiArCj4gKwkJZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCB8PQo+ICsJCQlQSFlfQ0hfUE9XRVJf RE9XTl9PVlJEKG1hc2ssIERQSU9fUEhZMCwgRFBJT19DSDEpOwo+ICsKPiAgIAkJZGV2X3ByaXYt PmNodl9waHlfY29udHJvbCB8PSBQSFlfQ09NX0xBTkVfUkVTRVRfREVBU1NFUlQoRFBJT19QSFkw KTsKPiAtCWlmIChjbW5fZC0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW5fZCkpCj4gKwl9 Cj4gKwo+ICsJaWYgKGNtbl9kLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9kKSkgewo+ ICsJCXVpbnQzMl90IHN0YXR1cyA9IEk5MTVfUkVBRChEUElPX1BIWV9TVEFUVVMpOwo+ICsJCXVu c2lnbmVkIGludCBtYXNrOwo+ICsKPiArCQltYXNrID0gc3RhdHVzICYgRFBMTF9QT1JURF9SRUFE WV9NQVNLOwo+ICsKPiArCQlpZiAobWFzayA9PSAweGYpCj4gKwkJCW1hc2sgPSAweDA7Cj4gKwkJ ZWxzZQo+ICsJCQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sIHw9Cj4gKwkJCQlQSFlfQ0hfUE9X RVJfRE9XTl9PVlJEX0VOKERQSU9fUEhZMSwgRFBJT19DSDApOwo+ICsKPiArCQlkZXZfcHJpdi0+ Y2h2X3BoeV9jb250cm9sIHw9Cj4gKwkJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkQobWFzaywgRFBJ T19QSFkxLCBEUElPX0NIMCk7Cj4gKwo+ICAgCQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sIHw9 IFBIWV9DT01fTEFORV9SRVNFVF9ERUFTU0VSVChEUElPX1BIWTEpOwo+ICsJfQo+ICsKPiArCUk5 MTVfV1JJVEUoRElTUExBWV9QSFlfQ09OVFJPTCwgZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7 Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiSW5pdGlhbCBQSFlfQ09OVFJPTD0weCUwOHhcbiIsCj4g KwkJICAgICAgZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7Cj4gICB9Cj4gICAKPiAgIHN0YXRp YyB2b2lkIHZsdl9jbW5sYW5lX3dhKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK TG9va3MgZmluZSBpIHRoaW5rIHdlIGhhdmUgY292ZXJlZCBhbGwgdGhlIHNjZW5hcmlvcy4KUmV2 aWV3ZWQtYnk6IERlZXBhayBTIDxkZWVwYWsuc0BsaW51eC5pbnRlbC5jb20+Cl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==