From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3] drm/i915/icl: combo port vswing programming changes per BSPEC Date: Tue, 11 Dec 2018 16:18:47 +0200 Message-ID: <20181211141847.GQ9144@intel.com> References: <1543618681-15255-1-git-send-email-clinton.a.taylor@intel.com> <1543966869-9759-1-git-send-email-clinton.a.taylor@intel.com> <20181205163222.GA8944@ideak-desk.fi.intel.com> <20181211094043.GE16782@ideak-desk.fi.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 04A226E1FB for ; Tue, 11 Dec 2018 14:18:50 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181211094043.GE16782@ideak-desk.fi.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Imre Deak Cc: Intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBEZWMgMTEsIDIwMTggYXQgMTE6NDA6NDNBTSArMDIwMCwgSW1yZSBEZWFrIHdyb3Rl Ogo+IE9uIFdlZCwgRGVjIDA1LCAyMDE4IGF0IDA2OjMyOjIyUE0gKzAyMDAsIEltcmUgRGVhayB3 cm90ZToKPiA+IE9uIFR1ZSwgRGVjIDA0LCAyMDE4IGF0IDAzOjQxOjA5UE0gLTA4MDAsIGNsaW50 b24uYS50YXlsb3JAaW50ZWwuY29tIHdyb3RlOgo+ID4gPiBGcm9tOiBDbGludCBUYXlsb3IgPGNs aW50b24uYS50YXlsb3JAaW50ZWwuY29tPgo+ID4gPiAKPiA+ID4gSW4gQXVndXN0IDIwMTggdGhl IEJTUEVDIGNoYW5nZWQgdGhlIElDTCBwb3J0IHByb2dyYW1taW5nIHNlcXVlbmNlIHRvCj4gPiA+ IGNsb3NlbHkgcmVzZW1ibGUgZWFybGllciBnZW4gcHJvZ3JhbW1pbmcgc2VxdWVuY2UuCj4gPiA+ IAo+ID4gPiB2MjogcmVtb3ZlIGRlYnVnIGNvZGUgdGhhdCBJbXJlIGZvdW5kCj4gPiA+IHYzOiBz aW1wbGlmeSB0cmFuc2xhdGlvbiB0YWJsZSBpZi1lbHNlCj4gPiA+IAo+ID4gPiBCU3BlYzogMjEy NTcKPiA+ID4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+Cj4gPiA+IENjOiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gPiA+IENjOiBS b2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gPiA+IFNpZ25lZC1vZmYtYnk6 IENsaW50IFRheWxvciA8Y2xpbnRvbi5hLnRheWxvckBpbnRlbC5jb20+Cj4gPiA+IC0tLQo+ID4g PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgfCAgIDQgKwo+ID4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgfCAyMjQgKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCj4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDg1IGluc2VydGlvbnMoKyks IDE0MyBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4g PiBpbmRleCAwYTdkNjA1Li4yOWFjZGI5IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmgKPiA+ID4gQEAgLTE4NjYsNiArMTg2NiwxMCBAQCBlbnVtIGk5MTVfcG93ZXJfd2VsbF9p ZCB7Cj4gPiA+ICAKPiA+ID4gICNkZWZpbmUgQ05MX1BPUlRfVFhfRFc3X0dSUChwb3J0KQlfTU1J TyhfQ05MX1BPUlRfVFhfRFdfR1JQKChwb3J0KSwgNykpCj4gPiA+ICAjZGVmaW5lIENOTF9QT1JU X1RYX0RXN19MTjAocG9ydCkJX01NSU8oX0NOTF9QT1JUX1RYX0RXX0xOMCgocG9ydCksIDcpKQo+ ID4gPiArI2RlZmluZSBJQ0xfUE9SVF9UWF9EVzdfQVVYKHBvcnQpCV9NTUlPKF9JQ0xfUE9SVF9U WF9EV19BVVgoNywgcG9ydCkpCj4gPiA+ICsjZGVmaW5lIElDTF9QT1JUX1RYX0RXN19HUlAocG9y dCkJX01NSU8oX0lDTF9QT1JUX1RYX0RXX0dSUCg3LCBwb3J0KSkKPiA+ID4gKyNkZWZpbmUgSUNM X1BPUlRfVFhfRFc3X0xOMChwb3J0KQlfTU1JTyhfSUNMX1BPUlRfVFhfRFdfTE4oNywgMCwgcG9y dCkpCj4gPiA+ICsjZGVmaW5lIElDTF9QT1JUX1RYX0RXN19MTihwb3J0LCBsbikJX01NSU8oX0lD TF9QT1JUX1RYX0RXX0xOKDcsIGxuLCBwb3J0KSkKPiA+IAo+ID4gTG9va3MgbGlrZSBfQ05MX1BP UlRfVFhfRFdfR1JQKCkgaXMgaW5jb25zaXN0ZW50IHdpdGggdGhlIElDTAo+ID4gY291bnRlcnBh cnQgYW5kIENOTF9QT1JUX1RYX0RXMl8qIC8gQ05MX1BPUlRfVFhfRFc1XyogYXJlIGJyb2tlbiBh dG0sCj4gPiB0aGV5IG5lZWQgdG8gYmUgZml4ZWQgYXMgYSBmb2xsb3ctdXAuCj4gPiAKPiA+ID4g ICNkZWZpbmUgICBOX1NDQUxBUih4KQkJCSgoeCkgPDwgMjQpCj4gPiA+ICAjZGVmaW5lICAgTl9T Q0FMQVJfTUFTSwkJCSgweDdGIDw8IDI0KQo+ID4gPiAgCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RkaS5jCj4gPiA+IGluZGV4IGYzZTFkNmEuLmQ3OGVjMTcgMTAwNjQ0Cj4gPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jCj4gPiA+IEBAIC00OTQsMTAzICs0OTQsNjMgQEAgc3RydWN0IGNu bF9kZGlfYnVmX3RyYW5zIHsKPiA+ID4gIAl7IDB4MiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiA0MDAgICA0MDAgICAgICAwLjAgICAqLwo+ID4gPiAgfTsKPiA+ID4gIAo+ID4gPiAtc3Ry dWN0IGljbF9jb21ib19waHlfZGRpX2J1Zl90cmFucyB7Cj4gPiA+IC0JdTMyIGR3Ml9zd2luZ19z ZWxlY3Q7Cj4gPiA+IC0JdTMyIGR3Ml9zd2luZ19zY2FsYXI7Cj4gPiA+IC0JdTMyIGR3NF9zY2Fs aW5nOwo+ID4gPiAtfTsKPiA+ID4gLQo+ID4gPiAtLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWlu ZyBmb3IgVmNjSU8gMC44NVYgZm9yIERQICovCj4gPiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGlj bF9jb21ib19waHlfZGRpX2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZHBfaGRtaV8wXzg1VltdID0gewo+ID4gPiAtCQkJCS8qIFZvbHRhZ2UgbVYgIGRiICAgICovCj4g PiA+IC0JeyAweDIsIDB4OTgsIDB4MDAxOCB9LAkvKiA0MDAgICAgICAgICAwLjAgICAqLwo+ID4g PiAtCXsgMHgyLCAweDk4LCAweDMwMTUgfSwJLyogNDAwICAgICAgICAgMy41ICAgKi8KPiA+ID4g LQl7IDB4MiwgMHg5OCwgMHg2MDEyIH0sCS8qIDQwMCAgICAgICAgIDYuMCAgICovCj4gPiA+IC0J eyAweDIsIDB4OTgsIDB4OTAwRiB9LAkvKiA0MDAgICAgICAgICA5LjUgICAqLwo+ID4gPiAtCXsg MHhCLCAweDcwLCAweDAwMTggfSwJLyogNjAwICAgICAgICAgMC4wICAgKi8KPiA+ID4gLQl7IDB4 QiwgMHg3MCwgMHgzMDE1IH0sCS8qIDYwMCAgICAgICAgIDMuNSAgICovCj4gPiA+IC0JeyAweEIs IDB4NzAsIDB4NjAxMiB9LAkvKiA2MDAgICAgICAgICA2LjAgICAqLwo+ID4gPiAtCXsgMHg1LCAw eDAwLCAweDAwMTggfSwJLyogODAwICAgICAgICAgMC4wICAgKi8KPiA+ID4gLQl7IDB4NSwgMHgw MCwgMHgzMDE1IH0sCS8qIDgwMCAgICAgICAgIDMuNSAgICovCj4gPiA+IC0JeyAweDYsIDB4OTgs IDB4MDAxOCB9LAkvKiAxMjAwICAgICAgICAwLjAgICAqLwo+ID4gPiAtfTsKPiA+ID4gLQo+ID4g PiAtLyogRklYTUUgLSBBZnRlciB0YWJsZSBpcyB1cGRhdGVkIGluIEJzcGVjICovCj4gPiA+IC0v KiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjg1ViBmb3IgZURQICovCj4g PiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGljbF9jb21ib19waHlfZGRpX2J1Zl90cmFucyBpY2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfODVWW10gPSB7Cj4gPiA+IC0JCQkJLyog Vm9sdGFnZSBtViAgZGIgICAgKi8KPiA+ID4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyMDAg ICAgICAgICAwLjAgICAqLwo+ID4gPiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDIwMCAgICAg ICAgIDEuNSAgICovCj4gPiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjAwICAgICAgICAg NC4wICAgKi8KPiA+ID4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyMDAgICAgICAgICA2LjAg ICAqLwo+ID4gPiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDI1MCAgICAgICAgIDAuMCAgICov Cj4gPiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjUwICAgICAgICAgMS41ICAgKi8KPiA+ ID4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyNTAgICAgICAgICA0LjAgICAqLwo+ID4gPiAt CXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDMwMCAgICAgICAgIDAuMCAgICovCj4gPiA+IC0JeyAw eDAsIDB4MDAsIDB4MDAgfSwJLyogMzAwICAgICAgICAgMS41ICAgKi8KPiA+ID4gLQl7IDB4MCwg MHgwMCwgMHgwMCB9LAkvKiAzNTAgICAgICAgICAwLjAgICAqLwo+ID4gPiArLyogaWNsX2NvbWJv X3BoeV9kZGlfdHJhbnNsYXRpb25zICovCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9k ZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0gewo+ID4g PiArCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KPiA+ID4gKwl7IDB4QSwgMHgzNSwg MHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwo+ID4gPiArCXsg MHhBLCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICov Cj4gPiA+ICsJeyAweEMsIDB4NzEsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogMzUwICAgNzAwICAg ICAgNi4wICAgKi8KPiA+ID4gKwl7IDB4NiwgMHg3RiwgMHgyQiwgMHgwMCwgMHgxNCB9LAkvKiAz NTAgICA5MDAgICAgICA4LjIgICAqLwo+ID4gPiArCXsgMHhBLCAweDRDLCAweDNGLCAweDAwLCAw eDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCj4gPiA+ICsJeyAweEMsIDB4NzMsIDB4 MzQsIDB4MDAsIDB4MEIgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KPiA+ID4gKwl7IDB4 NiwgMHg3RiwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLwo+ ID4gPiArCXsgMHhDLCAweDZDLCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcwNSAgICAg IDAuNiAgICovCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tLS1eIDcwMAo+ID4gCj4gPiA+ICsJeyAweDYsIDB4N0YsIDB4MzUsIDB4MDAs IDB4MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KPiA+ID4gKwl7IDB4NiwgMHg3Riwg MHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLwo+ID4gPiAgfTsK PiA+ID4gIAo+ID4gPiAtLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMC45 NVYgZm9yIERQICovCj4gPiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGljbF9jb21ib19waHlfZGRp X2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGRtaV8wXzk1Vltd ID0gewo+ID4gPiAtCQkJCS8qIFZvbHRhZ2UgbVYgIGRiICAgICovCj4gPiA+IC0JeyAweDIsIDB4 OTgsIDB4MDAxOCB9LAkvKiA0MDAgICAgICAgICAwLjAgICAqLwo+ID4gPiAtCXsgMHgyLCAweDk4 LCAweDMwMTUgfSwJLyogNDAwICAgICAgICAgMy41ICAgKi8KPiA+ID4gLQl7IDB4MiwgMHg5OCwg MHg2MDEyIH0sCS8qIDQwMCAgICAgICAgIDYuMCAgICovCj4gPiA+IC0JeyAweDIsIDB4OTgsIDB4 OTAwRiB9LAkvKiA0MDAgICAgICAgICA5LjUgICAqLwo+ID4gPiAtCXsgMHg0LCAweDk4LCAweDAw MTggfSwJLyogNjAwICAgICAgICAgMC4wICAgKi8KPiA+ID4gLQl7IDB4NCwgMHg5OCwgMHgzMDE1 IH0sCS8qIDYwMCAgICAgICAgIDMuNSAgICovCj4gPiA+IC0JeyAweDQsIDB4OTgsIDB4NjAxMiB9 LAkvKiA2MDAgICAgICAgICA2LjAgICAqLwo+ID4gPiAtCXsgMHg1LCAweDc2LCAweDAwMTggfSwJ LyogODAwICAgICAgICAgMC4wICAgKi8KPiA+ID4gLQl7IDB4NSwgMHg3NiwgMHgzMDE1IH0sCS8q IDgwMCAgICAgICAgIDMuNSAgICovCj4gPiA+IC0JeyAweDYsIDB4OTgsIDB4MDAxOCB9LAkvKiAx MjAwICAgICAgICAwLjAgICAqLwo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1 Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2xvd3N3aW5nW10gPSB7 Cj4gPiA+ICsJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ID4gPiArCXsgMHgwLCAw eDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDIwMCAgIDIwMCAgICAgIDAuMCAgICovCj4gPiA+ ICsJeyAweDgsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjAwICAgMjUwICAgICAgMS45 ICAgKi8KPiA+ID4gKwl7IDB4MSwgMHg3RiwgMHgzMywgMHgwMCwgMHgwQyB9LAkvKiAyMDAgICAz MDAgICAgICAzLjUgICAqLwo+ID4gPiArCXsgMHg5LCAweDdGLCAweDMxLCAweDAwLCAweDBFIH0s CS8qIDIwMCAgIDM1MCAgICAgIDQuOSAgICovCj4gPiA+ICsJeyAweDgsIDB4N0YsIDB4M0YsIDB4 MDAsIDB4MDAgfSwJLyogMjUwICAgMjUwICAgICAgMC4wICAgKi8KPiA+ID4gKwl7IDB4MSwgMHg3 RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyNTAgICAzMDAgICAgICAxLjYgICAqLwo+ID4gPiAr CXsgMHg5LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDI1MCAgIDM1MCAgICAgIDIuOSAg ICovCj4gPiA+ICsJeyAweDEsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzAwICAgMzAw ICAgICAgMC4wICAgKi8KPiA+ID4gKwl7IDB4OSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkv KiAzMDAgICAzNTAgICAgICAxLjMgICAqLwo+ID4gPiArCXsgMHg5LCAweDdGLCAweDNGLCAweDAw LCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCj4gPiA+ICB9Owo+ID4gPiAgCj4g PiA+IC0vKiBGSVhNRSAtIEFmdGVyIHRhYmxlIGlzIHVwZGF0ZWQgaW4gQnNwZWMgKi8KPiA+ID4g LS8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDAuOTVWIGZvciBlRFAgKi8K PiA+ID4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX2NvbWJvX3BoeV9kZGlfYnVmX3RyYW5zIGlj bF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF85NVZbXSA9IHsKPiA+ID4gLQkJCQkv KiBWb2x0YWdlIG1WICBkYiAgICAqLwo+ID4gPiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDIw MCAgICAgICAgIDAuMCAgICovCj4gPiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjAwICAg ICAgICAgMS41ICAgKi8KPiA+ID4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyMDAgICAgICAg ICA0LjAgICAqLwo+ID4gPiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDIwMCAgICAgICAgIDYu MCAgICovCj4gPiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjUwICAgICAgICAgMC4wICAg Ki8KPiA+ID4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyNTAgICAgICAgICAxLjUgICAqLwo+ ID4gPiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDI1MCAgICAgICAgIDQuMCAgICovCj4gPiA+ IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMzAwICAgICAgICAgMC4wICAgKi8KPiA+ID4gLQl7 IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAzMDAgICAgICAgICAxLjUgICAqLwo+ID4gPiAtCXsgMHgw LCAweDAwLCAweDAwIH0sCS8qIDM1MCAgICAgICAgIDAuMCAgICovCj4gPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19lZHBfaGJyM1tdID0gewo+ID4gPiArCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8K PiA+ID4gKwl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAg ICAwLjAgICAqLwo+ID4gPiArCXsgMHhBLCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDM1 MCAgIDUwMCAgICAgIDMuMSAgICovCj4gPiA+ICsJeyAweEMsIDB4NzEsIDB4MkYsIDB4MDAsIDB4 MTAgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8KPiA+ID4gKwl7IDB4NiwgMHg3RiwgMHgy QiwgMHgwMCwgMHgxNCB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLwo+ID4gPiArCXsgMHhB LCAweDRDLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCj4g PiA+ICsJeyAweEMsIDB4NzMsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogNTAwICAgNzAwICAgICAg Mi45ICAgKi8KPiA+ID4gKwl7IDB4NiwgMHg3RiwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiA1MDAg ICA5MDAgICAgICA1LjEgICAqLwo+ID4gPiArCXsgMHhDLCAweDZDLCAweDNDLCAweDAwLCAweDAz IH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCj4gPiA+ICsJeyAweDYsIDB4N0YsIDB4MzUs IDB4MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KPiA+ID4gKwl7IDB4Niwg MHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLwo+ID4g PiAgfTsKPiA+ID4gIAo+ID4gPiAtLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNj SU8gMS4wNVYgZm9yIERQICovCj4gPiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGljbF9jb21ib19w aHlfZGRpX2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGRtaV8x XzA1VltdID0gewo+ID4gPiAtCQkJCS8qIFZvbHRhZ2UgbVYgIGRiICAgICovCj4gPiA+IC0JeyAw eDIsIDB4OTgsIDB4MDAxOCB9LAkvKiA0MDAgICAgICAgICAwLjAgICAqLwo+ID4gPiAtCXsgMHgy LCAweDk4LCAweDMwMTUgfSwJLyogNDAwICAgICAgICAgMy41ICAgKi8KPiA+ID4gLQl7IDB4Miwg MHg5OCwgMHg2MDEyIH0sCS8qIDQwMCAgICAgICAgIDYuMCAgICovCj4gPiA+IC0JeyAweDIsIDB4 OTgsIDB4OTAwRiB9LAkvKiA0MDAgICAgICAgICA5LjUgICAqLwo+ID4gPiAtCXsgMHg0LCAweDk4 LCAweDAwMTggfSwJLyogNjAwICAgICAgICAgMC4wICAgKi8KPiA+ID4gLQl7IDB4NCwgMHg5OCwg MHgzMDE1IH0sCS8qIDYwMCAgICAgICAgIDMuNSAgICovCj4gPiA+IC0JeyAweDQsIDB4OTgsIDB4 NjAxMiB9LAkvKiA2MDAgICAgICAgICA2LjAgICAqLwo+ID4gPiAtCXsgMHg1LCAweDcxLCAweDAw MTggfSwJLyogODAwICAgICAgICAgMC4wICAgKi8KPiA+ID4gLQl7IDB4NSwgMHg3MSwgMHgzMDE1 IH0sCS8qIDgwMCAgICAgICAgIDMuNSAgICovCj4gPiA+IC0JeyAweDYsIDB4OTgsIDB4MDAxOCB9 LAkvKiAxMjAwICAgICAgICAwLjAgICAqLwo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxf ZGRpX2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdID0gewo+ ID4gPiArCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KPiA+ID4gKwl7IDB4QSwgMHg2 MCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0NTAgICA0NTAgICAgICAwLjAgICAqLwo+ID4gPiAr CXsgMHhCLCAweDczLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDQ1MCAgIDY1MCAgICAgIDMuMiAg ICovCj4gPiA+ICsJeyAweDYsIDB4N0YsIDB4MzEsIDB4MDAsIDB4MEUgfSwJLyogNDUwICAgODUw ICAgICAgNS41ICAgKi8KPiA+ID4gKwl7IDB4QiwgMHg3MywgMHgzRiwgMHgwMCwgMHgwMCB9LAkv KiA2NTAgICA2NTAgICAgICAwLjAgICBBTFMgKi8KPiA+ID4gKwl7IDB4NiwgMHg3RiwgMHgzNywg MHgwMCwgMHgwOCB9LAkvKiA2NTAgICA4NTAgICAgICAyLjMgICAqLwo+ID4gPiArCXsgMHg2LCAw eDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDg1MCAgIDg1MCAgICAgIDAuMCAgICovCj4gPiA+ ICsJeyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAgICAgMy4w ICAgKi8KPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gLS8qIEZJWE1FIC0gQWZ0ZXIgdGFibGUgaXMg dXBkYXRlZCBpbiBCc3BlYyAqLwo+ID4gPiAtLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBm b3IgVmNjSU8gMS4wNVYgZm9yIGVEUCAqLwo+ID4gPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBpY2xf Y29tYm9fcGh5X2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2Vk cF8xXzA1VltdID0gewo+ID4gPiAtCQkJCS8qIFZvbHRhZ2UgbVYgIGRiICAgICovCj4gPiA+IC0J eyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjAwICAgICAgICAgMC4wICAgKi8KPiA+ID4gLQl7IDB4 MCwgMHgwMCwgMHgwMCB9LAkvKiAyMDAgICAgICAgICAxLjUgICAqLwo+ID4gPiAtCXsgMHgwLCAw eDAwLCAweDAwIH0sCS8qIDIwMCAgICAgICAgIDQuMCAgICovCj4gPiA+IC0JeyAweDAsIDB4MDAs IDB4MDAgfSwJLyogMjAwICAgICAgICAgNi4wICAgKi8KPiA+ID4gLQl7IDB4MCwgMHgwMCwgMHgw MCB9LAkvKiAyNTAgICAgICAgICAwLjAgICAqLwo+ID4gPiAtCXsgMHgwLCAweDAwLCAweDAwIH0s CS8qIDI1MCAgICAgICAgIDEuNSAgICovCj4gPiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyog MjUwICAgICAgICAgNC4wICAgKi8KPiA+ID4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAzMDAg ICAgICAgICAwLjAgICAqLwo+ID4gPiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDMwMCAgICAg ICAgIDEuNSAgICovCj4gPiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgICAgICAg MC4wICAgKi8KPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgaWNs X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX21pcGlbXSA9IHsKPiA+ID4gKwkJCQkJCS8qIE5U IG1WIFRyYW5zIG1WIGRiICAgICovCj4gPiA+ICsJeyAweDIsIDB4N0YsIDB4M0YsIDB4MDAsIDB4 MDAgfSwJLyogNDAwICAgNDAwICAgICAgMC4wICAgKi8KPiA+IAo+ID4gVGhlIERTSSBjb2RlIGhh cyBpdHMgb3duIFBIWSBwcm9ncmFtbWluZyBhdG0sIGFuZCB0aGlzIHRhYmxlIGhlcmUgaXMKPiA+ IHVudXNlZCBzbyBubyBuZWVkIGFkZGluZyBpdC4KPiA+IAo+ID4gVW5yZWxhdGVkIGJ1dCBsb29r cyBsaWtlIHRoZSBEU0kgY29kZSBkb2Vzbid0IHByb2dyYW0gSUNMX1BPUlRfVFhfRFc3LAo+ID4g dGhhdCBzaG91bGQgYmUgZml4ZWQgYXMgYSBmb2xsb3ctdXAuCj4gPiAKPiA+ID4gIH07Cj4gPiA+ ICAKPiA+ID4gIHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgewo+ID4gPiBAQCAtODcx LDQzICs4MzEsMjQgQEAgc3RhdGljIGludCBza2xfYnVmX3RyYW5zX251bV9lbnRyaWVzKGVudW0g cG9ydCBwb3J0LCBpbnQgbl9lbnRyaWVzKQo+ID4gPiAgCX0KPiA+ID4gIH0KPiA+ID4gIAo+ID4g PiAtc3RhdGljIGNvbnN0IHN0cnVjdCBpY2xfY29tYm9fcGh5X2RkaV9idWZfdHJhbnMgKgo+ID4g PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCj4gPiA+ICBpY2xfZ2V0 X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0g cG9ydCBwb3J0LAo+ID4gPiAgCQkJaW50IHR5cGUsIGludCAqbl9lbnRyaWVzKQo+ID4gPiAgewo+ ID4gPiAtCXUzMiB2b2x0YWdlID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFczKHBvcnQpKSAm IFZPTFRBR0VfSU5GT19NQVNLOwo+ID4gPiAtCj4gPiA+IC0JaWYgKHR5cGUgPT0gSU5URUxfT1VU UFVUX0VEUCAmJiBkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7Cj4gPiA+IC0JCXN3aXRj aCAodm9sdGFnZSkgewo+ID4gPiAtCQljYXNlIFZPTFRBR0VfSU5GT18wXzg1VjoKPiA+ID4gLQkJ CSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19l ZHBfMF84NVYpOwo+ID4gPiAtCQkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19lZHBfMF84NVY7Cj4gPiA+IC0JCWNhc2UgVk9MVEFHRV9JTkZPXzBfOTVWOgo+ID4gPiAtCQkJ Km5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2Vk cF8wXzk1Vik7Cj4gPiA+IC0JCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25z X2VkcF8wXzk1VjsKPiA+ID4gLQkJY2FzZSBWT0xUQUdFX0lORk9fMV8wNVY6Cj4gPiA+IC0JCQkq bl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRw XzFfMDVWKTsKPiA+ID4gLQkJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZWRwXzFfMDVWOwo+ID4gPiAtCQlkZWZhdWx0Ogo+ID4gPiAtCQkJTUlTU0lOR19DQVNFKHZvbHRh Z2UpOwo+ID4gPiAtCQkJcmV0dXJuIE5VTEw7Cj4gPiA+IC0JCX0KPiA+ID4gLQl9IGVsc2Ugewo+ ID4gPiAtCQlzd2l0Y2ggKHZvbHRhZ2UpIHsKPiA+ID4gLQkJY2FzZSBWT0xUQUdFX0lORk9fMF84 NVY6Cj4gPiA+IC0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZHBfaGRtaV8wXzg1Vik7Cj4gPiA+IC0JCQlyZXR1cm4gaWNsX2NvbWJvX3Bo eV9kZGlfdHJhbnNsYXRpb25zX2RwX2hkbWlfMF84NVY7Cj4gPiA+IC0JCWNhc2UgVk9MVEFHRV9J TkZPXzBfOTVWOgo+ID4gPiAtCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3Bo eV9kZGlfdHJhbnNsYXRpb25zX2RwX2hkbWlfMF85NVYpOwo+ID4gPiAtCQkJcmV0dXJuIGljbF9j b21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1pXzBfOTVWOwo+ID4gPiAtCQljYXNlIFZP TFRBR0VfSU5GT18xXzA1VjoKPiA+ID4gLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9j b21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1pXzFfMDVWKTsKPiA+ID4gLQkJCXJldHVy biBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGRtaV8xXzA1VjsKPiA+ID4gLQkJ ZGVmYXVsdDoKPiA+ID4gLQkJCU1JU1NJTkdfQ0FTRSh2b2x0YWdlKTsKPiA+ID4gLQkJCXJldHVy biBOVUxMOwo+ID4gPiAtCQl9Cj4gPiA+ICsKPiA+ID4gKwlpZiAodHlwZSA9PSBJTlRFTF9PVVRQ VVRfSERNSSkgewo+ID4gPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5 X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7Cj4gPiA+ICsJCXJldHVybiBpY2xfY29tYm9fcGh5X2Rk aV90cmFuc2xhdGlvbnNfaGRtaTsKPiA+ID4gKwl9IGVsc2UgaWYgKHR5cGUgPT0gSU5URUxfT1VU UFVUX0VEUCAmJiBkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7Cj4gPiA+ICsJCSpuX2Vu dHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfbG93 c3dpbmcpOwo+ID4gPiArCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2Vk cF9sb3dzd2luZzsKPiA+IAo+ID4gSG0sIGJvdGggaW4gdGhlIENOTCBhbmQgdGhpcyBJQ0wgY29k ZSwgbm90IHN1cmUgd2h5IHdlIHdvdWxkIHVzZSB0aGUKPiA+IEhCUjIgdGFibGUgd2hlbiB0aGUg bG93X3Zzd2luZyBwYXJhbSBpcyBzZXQuIEl0IHdvdWxkIGJlIG1vcmUgbG9naWNhbCB0bwo+ID4g bWUgdGhhdCBIQlIyIGlzIHRvIGJlIHVzZWQgd2hlbiB0aGUgYWN0dWFsIGxpbmsgcmF0ZSBpcyBI QlIyLCBlbHNlIHdlJ2QKPiA+IHVzZSB0aGUgSEJSMyB0YWJsZS4gQlhULCBJQ0wgc3RpbGwgZGVm aW5lZCB0aGVzZSBsb3cgdnN3aW5nIHRhYmxlcyBidXQKPiA+IENOTCBhbmQgSUNMIGRvbid0LiBX ZSBzaG91bGQgYXQgbGVhc3QgYXNrIGZvciBjbGFyaWZpY2F0aW9uIGFib3V0IHRoaXMKPiA+IGlu IEJTcGVjLgo+IAo+IEJhc2VkIG9uIHRoZSByZWNlbnQgQlNwZWMgdXBkYXRlLCB3ZSBzaG91bGQg anVzdCBpZ25vcmUKPiBkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nIGFuZCB1c2UgdGhlICJl ZHAgdXAgdG8gSEJSMiIgdGFibGUgaWYgdGhlCj4gbGluayByYXRlIGlzIDw9IEhCUjIgYW5kIHRo ZSAiZWRwIEhCUjMiIHRhYmxlIG90aGVyd2lzZS4KCkFmdGVyIEFydCdzIGNsYXJpZmljYXRpb24g SSB0aGluayB0aGUgY29ycmVjdCBsb2dpYyB3aWxsIGJlOgoKaWYgKGhkbWkpIHsKCXJldHVybiAu Li47CmVsc2UgaWYgKHJhdGUgPT0gOC4xKSAvLyBjb3VsZCBjaGVjayBmb3IgZWRwIHRvbyBoZXJl IGkgc3VwcG9zZQoJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJy MzsKZWxzZSBpZiAoZWRwICYmIGxvd192c3dpbmcpCglyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2VkcF9oYnIyOwplbHNlCglyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2RwX2hicjI7CgoKQW5kIEkgYmVsaWV2ZSBpY2xfbWF4X3NvdXJjZV9yYXRlKCkg bmVlZHMgdG8gYmUgY2hhbmdlZCB0bwpzb21ldGhpbmcgbGlrZToKCmlmIChpc19jb21ib19waHko KSAmJiAhZWRwKQoJcmV0dXJuIDUuNDsKcmV0dXJuIDguMTsKCj4gCj4gQ291bGQgeW91IHJlc2Vu ZCB0aGUgcGF0Y2ggd2l0aCB0aGF0IGNoYW5nZWQgKGFuZCB0aGUgMiBvdGhlciBpc3N1ZXMKPiBh Ym92ZSBhZGRyZXNzZWQpPwo+IAo+IFRoYW5rcywKPiBJbXJlCj4gCj4gPiAKPiA+IE90aGVyIHRo YW4gdGhlIGFib3ZlIHRoZSBwYXRjaCBsb29rcyBvaywgYnV0IEknZCB3YWl0IGZvciB0aGUgQlNw ZWMKPiA+IGNsYXJpZmljYXRpb24gdW50aWwgYWRkaW5nIFItYi4KPiA+IAo+ID4gPiArCX0gZWxz ZSBpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7Cj4gPiA+ICsJCSpuX2VudHJpZXMgPSBB UlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMyk7Cj4gPiA+ ICsJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjM7Cj4gPiA+ ICAJfQo+ID4gPiArCj4gPiA+ICsJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3Bo eV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKPiA+ID4gKwlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2RwOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+ICBzdGF0aWMgaW50IGludGVs X2RkaV9oZG1pX2xldmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBw b3J0IHBvcnQpCj4gPiA+IEBAIC0yNDY0LDcgKzI0MDUsNyBAQCBzdGF0aWMgdm9pZCBjbmxfZGRp X3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ID4gIHN0 YXRpYyB2b2lkIGljbF9kZGlfY29tYm9fdnN3aW5nX3Byb2dyYW0oc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ID4gPiAgCQkJCQkgdTMyIGxldmVsLCBlbnVtIHBvcnQgcG9ydCwg aW50IHR5cGUpCj4gPiA+ICB7Cj4gPiA+IC0JY29uc3Qgc3RydWN0IGljbF9jb21ib19waHlfZGRp X2J1Zl90cmFucyAqZGRpX3RyYW5zbGF0aW9ucyA9IE5VTEw7Cj4gPiA+ICsJY29uc3Qgc3RydWN0 IGNubF9kZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zID0gTlVMTDsKPiA+ID4gIAl1MzIg bl9lbnRyaWVzLCB2YWw7Cj4gPiA+ICAJaW50IGxuOwo+ID4gPiAgCj4gPiA+IEBAIC0yNDc4LDM0 ICsyNDE5LDIzIEBAIHN0YXRpYyB2b2lkIGljbF9kZGlfY29tYm9fdnN3aW5nX3Byb2dyYW0oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAgCQlsZXZlbCA9IG5fZW50cmll cyAtIDE7Cj4gPiA+ICAJfQo+ID4gPiAgCj4gPiA+IC0JLyogU2V0IFBPUlRfVFhfRFc1IFJ0ZXJt IFNlbCB0byAxMTBiLiAqLwo+ID4gPiArCS8qIFNldCBQT1JUX1RYX0RXNSAqLwo+ID4gPiAgCXZh bCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfTE4wKHBvcnQpKTsKPiA+ID4gLQl2YWwgJj0g flJURVJNX1NFTEVDVF9NQVNLOwo+ID4gPiArCXZhbCAmPSB+KFNDQUxJTkdfTU9ERV9TRUxfTUFT SyB8IFJURVJNX1NFTEVDVF9NQVNLIHwKPiA+ID4gKwkJICBUQVAyX0RJU0FCTEUgfCBUQVAzX0RJ U0FCTEUpOwo+ID4gPiArCXZhbCB8PSBTQ0FMSU5HX01PREVfU0VMKDB4Mik7Cj4gPiA+ICAJdmFs IHw9IFJURVJNX1NFTEVDVCgweDYpOwo+ID4gPiAtCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1 X0dSUChwb3J0KSwgdmFsKTsKPiA+ID4gLQo+ID4gPiAtCS8qIFByb2dyYW0gUE9SVF9UWF9EVzUg Ki8KPiA+ID4gLQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc1X0xOMChwb3J0KSk7Cj4g PiA+IC0JLyogU2V0IERpc2FibGVUYXAyIGFuZCBEaXNhYmxlVGFwMyBpZiBNSVBJIERTSQo+ID4g PiAtCSAqIENsZWFyIERpc2FibGVUYXAyIGFuZCBEaXNhYmxlVGFwMyBmb3IgYWxsIG90aGVyIFBv cnRzCj4gPiA+IC0JICovCj4gPiA+IC0JaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RTSSkgewo+ ID4gPiAtCQl2YWwgfD0gVEFQMl9ESVNBQkxFOwo+ID4gPiAtCQl2YWwgfD0gVEFQM19ESVNBQkxF Owo+ID4gPiAtCX0gZWxzZSB7Cj4gPiA+IC0JCXZhbCAmPSB+VEFQMl9ESVNBQkxFOwo+ID4gPiAt CQl2YWwgJj0gflRBUDNfRElTQUJMRTsKPiA+ID4gLQl9Cj4gPiA+ICsJdmFsIHw9IFRBUDNfRElT QUJMRTsKPiA+ID4gIAlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9HUlAocG9ydCksIHZhbCk7 Cj4gPiA+ICAKPiA+ID4gIAkvKiBQcm9ncmFtIFBPUlRfVFhfRFcyICovCj4gPiA+ICAJdmFsID0g STkxNV9SRUFEKElDTF9QT1JUX1RYX0RXMl9MTjAocG9ydCkpOwo+ID4gPiAgCXZhbCAmPSB+KFNX SU5HX1NFTF9MT1dFUl9NQVNLIHwgU1dJTkdfU0VMX1VQUEVSX01BU0sgfAo+ID4gPiAgCQkgUkNP TVBfU0NBTEFSX01BU0spOwo+ID4gPiAtCXZhbCB8PSBTV0lOR19TRUxfVVBQRVIoZGRpX3RyYW5z bGF0aW9uc1tsZXZlbF0uZHcyX3N3aW5nX3NlbGVjdCk7Cj4gPiA+IC0JdmFsIHw9IFNXSU5HX1NF TF9MT1dFUihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzJfc3dpbmdfc2VsZWN0KTsKPiA+ID4g Kwl2YWwgfD0gU1dJTkdfU0VMX1VQUEVSKGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3Ml9zd2lu Z19zZWwpOwo+ID4gPiArCXZhbCB8PSBTV0lOR19TRUxfTE9XRVIoZGRpX3RyYW5zbGF0aW9uc1ts ZXZlbF0uZHcyX3N3aW5nX3NlbCk7Cj4gPiA+ICAJLyogUHJvZ3JhbSBSY29tcCBzY2FsYXIgZm9y IGV2ZXJ5IHRhYmxlIGVudHJ5ICovCj4gPiA+IC0JdmFsIHw9IFJDT01QX1NDQUxBUihkZGlfdHJh bnNsYXRpb25zW2xldmVsXS5kdzJfc3dpbmdfc2NhbGFyKTsKPiA+ID4gKwl2YWwgfD0gUkNPTVBf U0NBTEFSKDB4OTgpOwo+ID4gPiAgCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFcyX0dSUChwb3J0 KSwgdmFsKTsKPiA+ID4gIAo+ID4gPiAgCS8qIFByb2dyYW0gUE9SVF9UWF9EVzQgKi8KPiA+ID4g QEAgLTI1MTQsOSArMjQ0NCwxNyBAQCBzdGF0aWMgdm9pZCBpY2xfZGRpX2NvbWJvX3Zzd2luZ19w cm9ncmFtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gIAkJdmFsID0g STkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNF9MTihwb3J0LCBsbikpOwo+ID4gPiAgCQl2YWwgJj0g fihQT1NUX0NVUlNPUl8xX01BU0sgfCBQT1NUX0NVUlNPUl8yX01BU0sgfAo+ID4gPiAgCQkJIENV UlNPUl9DT0VGRl9NQVNLKTsKPiA+ID4gLQkJdmFsIHw9IGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxd LmR3NF9zY2FsaW5nOwo+ID4gPiArCQl2YWwgfD0gUE9TVF9DVVJTT1JfMShkZGlfdHJhbnNsYXRp b25zW2xldmVsXS5kdzRfcG9zdF9jdXJzb3JfMSk7Cj4gPiA+ICsJCXZhbCB8PSBQT1NUX0NVUlNP Ul8yKGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3NF9wb3N0X2N1cnNvcl8yKTsKPiA+ID4gKwkJ dmFsIHw9IENVUlNPUl9DT0VGRihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzRfY3Vyc29yX2Nv ZWZmKTsKPiA+ID4gIAkJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzRfTE4ocG9ydCwgbG4pLCB2 YWwpOwo+ID4gPiAgCX0KPiA+ID4gKwo+ID4gPiArCS8qIFByb2dyYW0gUE9SVF9UWF9EVzcgKi8K PiA+ID4gKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc3X0xOMChwb3J0KSk7Cj4gPiA+ ICsJdmFsICY9IH5OX1NDQUxBUl9NQVNLOwo+ID4gPiArCXZhbCB8PSBOX1NDQUxBUihkZGlfdHJh bnNsYXRpb25zW2xldmVsXS5kdzdfbl9zY2FsYXIpOwo+ID4gPiArCUk5MTVfV1JJVEUoSUNMX1BP UlRfVFhfRFc3X0dSUChwb3J0KSwgdmFsKTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAgc3RhdGlj IHZvaWQgaWNsX2NvbWJvX3BoeV9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+ID4gPiAtLSAKPiA+ID4gMS45LjEKPiA+ID4gCj4gPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWls aW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBT eXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==