From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Torokhov Subject: Re: [PATCH 2/2] xen/input: add multi-touch support Date: Wed, 21 Jun 2017 00:24:25 -0700 Message-ID: <20170621072425.GA36968__1995.41175175018$1498029933$gmane$org@dtor-ws> References: <1492083484-31786-1-git-send-email-andr2000@gmail.com> <1492083484-31786-3-git-send-email-andr2000@gmail.com> <20170421021018.GB23279@dtor-ws> <20170530055150.GA38163@dtor-ws> <8092dd49-20e0-3e8d-977d-2f570142a37d@gmail.com> <20170530163708.GA12922@dtor-ws> <20170607165630.GA13116@dtor-ws> <222abecb-10b6-6196-9f44-6ec366377335@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dNa08-0005H9-LI for xen-devel@lists.xenproject.org; Wed, 21 Jun 2017 07:24:32 +0000 Received: by mail-pf0-f193.google.com with SMTP id d5so28117321pfe.1 for ; Wed, 21 Jun 2017 00:24:30 -0700 (PDT) Content-Disposition: inline In-Reply-To: <222abecb-10b6-6196-9f44-6ec366377335@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Oleksandr Andrushchenko Cc: jgross@suse.com, Oleksandr Andrushchenko , vlad.babchuk@gmail.com, linux-kernel@vger.kernel.org, andrii.anisov@gmail.com, olekstysh@gmail.com, al1img@gmail.com, linux-input@vger.kernel.org, xen-devel@lists.xenproject.org, boris.ostrovsky@oracle.com, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBKdW4gMDgsIDIwMTcgYXQgMDk6NDU6MThBTSArMDMwMCwgT2xla3NhbmRyIEFuZHJ1 c2hjaGVua28gd3JvdGU6Cj4gSGksIERtaXRyeSEKPiAKPiBPbiAwNi8wNy8yMDE3IDA3OjU2IFBN LCBEbWl0cnkgVG9yb2tob3Ygd3JvdGU6Cj4gPk9uIFdlZCwgTWF5IDMxLCAyMDE3IGF0IDEyOjA2 OjU2UE0gKzAzMDAsIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+ID4+SGksIERtaXRy eSEKPiA+Pgo+ID4+T24gMDUvMzAvMjAxNyAwNzozNyBQTSwgRG1pdHJ5IFRvcm9raG92IHdyb3Rl Ogo+ID4+Pk9uIFR1ZSwgTWF5IDMwLCAyMDE3IGF0IDAzOjUwOjIwUE0gKzAzMDAsIE9sZWtzYW5k ciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+ID4+Pj5IaSwgRG1pdHJ5IQo+ID4+Pj4KPiA+Pj4+T24g MDUvMzAvMjAxNyAwODo1MSBBTSwgRG1pdHJ5IFRvcm9raG92IHdyb3RlOgo+ID4+Pj4+T24gRnJp LCBBcHIgMjEsIDIwMTcgYXQgMDk6NDA6MzZBTSArMDMwMCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVu a28gd3JvdGU6Cj4gPj4+Pj4+SGksIERtaXRyeSEKPiA+Pj4+Pj4KPiA+Pj4+Pj5PbiAwNC8yMS8y MDE3IDA1OjEwIEFNLCBEbWl0cnkgVG9yb2tob3Ygd3JvdGU6Cj4gPj4+Pj4+PkhpIE9sZWtzYW5k ciwKPiA+Pj4+Pj4+Cj4gPj4+Pj4+Pk9uIFRodSwgQXByIDEzLCAyMDE3IGF0IDAyOjM4OjA0UE0g KzAzMDAsIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+ID4+Pj4+Pj4+RnJvbTogT2xl a3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+ ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj5FeHRlbmQgeGVuX2tiZGZyb250IHRvIHByb3ZpZGUgbXVsdGkt dG91Y2ggc3VwcG9ydAo+ID4+Pj4+Pj4+dG8gdW5wcml2aWxlZ2VkIGRvbWFpbnMuCj4gPj4+Pj4+ Pj4KPiA+Pj4+Pj4+PlNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVr c2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPiA+Pj4+Pj4+Pi0tLQo+ID4+Pj4+Pj4+ICBk cml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMgfCAxNDIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0KPiA+Pj4+Pj4+PiAgMSBmaWxlIGNoYW5nZWQsIDE0MCBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj5kaWZmIC0tZ2l0 IGEvZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5jIGIvZHJpdmVycy9pbnB1dC9taXNj L3hlbi1rYmRmcm9udC5jCj4gPj4+Pj4+Pj5pbmRleCAwMWMyN2I0YzMyODguLmU1ZDA2NGFhYTIz NyAxMDA2NDQKPiA+Pj4+Pj4+Pi0tLSBhL2RyaXZlcnMvaW5wdXQvbWlzYy94ZW4ta2JkZnJvbnQu Ywo+ID4+Pj4+Pj4+KysrIGIvZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5jCj4gPj4+ Pj4+Pj5AQCAtMTcsNiArMTcsNyBAQAo+ID4+Pj4+Pj4+ICAjaW5jbHVkZSA8bGludXgvZXJybm8u aD4KPiA+Pj4+Pj4+PiAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4+Pj4+Pj4+ICAjaW5j bHVkZSA8bGludXgvaW5wdXQuaD4KPiA+Pj4+Pj4+PisjaW5jbHVkZSA8bGludXgvaW5wdXQvbXQu aD4KPiA+Pj4+Pj4+PiAgI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiA+Pj4+Pj4+PiAgI2luY2x1 ZGUgPGFzbS94ZW4vaHlwZXJ2aXNvci5oPgo+ID4+Pj4+Pj4+QEAgLTM0LDExICszNSwxNCBAQAo+ ID4+Pj4+Pj4+ICBzdHJ1Y3QgeGVua2JkX2luZm8gewo+ID4+Pj4+Pj4+ICAJc3RydWN0IGlucHV0 X2RldiAqa2JkOwo+ID4+Pj4+Pj4+ICAJc3RydWN0IGlucHV0X2RldiAqcHRyOwo+ID4+Pj4+Pj4+ KwlzdHJ1Y3QgaW5wdXRfZGV2ICptdG91Y2g7Cj4gPj4+Pj4+Pj4gIAlzdHJ1Y3QgeGVua2JkX3Bh Z2UgKnBhZ2U7Cj4gPj4+Pj4+Pj4gIAlpbnQgZ3JlZjsKPiA+Pj4+Pj4+PiAgCWludCBpcnE7Cj4g Pj4+Pj4+Pj4gIAlzdHJ1Y3QgeGVuYnVzX2RldmljZSAqeGJkZXY7Cj4gPj4+Pj4+Pj4gIAljaGFy IHBoeXNbMzJdOwo+ID4+Pj4+Pj4+KwkvKiBjdXJyZW50IE1UIHNsb3QvY29udGFjdCBJRCB3ZSBh cmUgaW5qZWN0aW5nIGV2ZW50cyBpbiAqLwo+ID4+Pj4+Pj4+KwlpbnQgbXRvdWNoX2N1cl9jb250 YWN0X2lkOwo+ID4+Pj4+Pj4+ICB9Owo+ID4+Pj4+Pj4+ICBlbnVtIHsgS1BBUkFNX1gsIEtQQVJB TV9ZLCBLUEFSQU1fQ05UIH07Cj4gPj4+Pj4+Pj5AQCAtNDcsNiArNTEsMTIgQEAgbW9kdWxlX3Bh cmFtX2FycmF5KHB0cl9zaXplLCBpbnQsIE5VTEwsIDA0NDQpOwo+ID4+Pj4+Pj4+ICBNT0RVTEVf UEFSTV9ERVNDKHB0cl9zaXplLAo+ID4+Pj4+Pj4+ICAJIlBvaW50aW5nIGRldmljZSB3aWR0aCwg aGVpZ2h0IGluIHBpeGVscyAoZGVmYXVsdCA4MDAsNjAwKSIpOwo+ID4+Pj4+Pj4+K2VudW0geyBL UEFSQU1fTVRfWCwgS1BBUkFNX01UX1ksIEtQQVJBTV9NVF9DTlQgfTsKPiA+Pj4+Pj4+PitzdGF0 aWMgaW50IG10b3VjaF9zaXplW0tQQVJBTV9NVF9DTlRdID0geyBYRU5GQl9XSURUSCwgWEVORkJf SEVJR0hUIH07Cj4gPj4+Pj4+Pj4rbW9kdWxlX3BhcmFtX2FycmF5KG10b3VjaF9zaXplLCBpbnQs IE5VTEwsIDA0NDQpOwo+ID4+Pj4+Pj4+K01PRFVMRV9QQVJNX0RFU0MocHRyX3NpemUsCj4gPj4+ Pj4+Pj4rCSJNdWx0aS10b3VjaCBkZXZpY2Ugd2lkdGgsIGhlaWdodCBpbiBwaXhlbHMgKGRlZmF1 bHQgODAwLDYwMCkiKTsKPiA+Pj4+Pj4+PisKPiA+Pj4+Pj4+V2h5IGRvIHlvdSBuZWVkIHNlcGFy YXRlIG1vZHVsZSBwYXJhbWV0ZXJzIGZvciBtdWx0aS10b3VjaCBkZXZpY2U/Cj4gPj4+Pj4+cGxl YXNlIHNlZSBiZWxvdwo+ID4+Pj4+Pj4+ICBzdGF0aWMgaW50IHhlbmtiZF9yZW1vdmUoc3RydWN0 IHhlbmJ1c19kZXZpY2UgKik7Cj4gPj4+Pj4+Pj4gIHN0YXRpYyBpbnQgeGVua2JkX2Nvbm5lY3Rf YmFja2VuZChzdHJ1Y3QgeGVuYnVzX2RldmljZSAqLCBzdHJ1Y3QgeGVua2JkX2luZm8gKik7Cj4g Pj4+Pj4+Pj4gIHN0YXRpYyB2b2lkIHhlbmtiZF9kaXNjb25uZWN0X2JhY2tlbmQoc3RydWN0IHhl bmtiZF9pbmZvICopOwo+ID4+Pj4+Pj4+QEAgLTEwMCw2ICsxMTAsNjAgQEAgc3RhdGljIGlycXJl dHVybl90IGlucHV0X2hhbmRsZXIoaW50IHJxLCB2b2lkICpkZXZfaWQpCj4gPj4+Pj4+Pj4gIAkJ CQlpbnB1dF9yZXBvcnRfcmVsKGRldiwgUkVMX1dIRUVMLAo+ID4+Pj4+Pj4+ICAJCQkJCQkgLWV2 ZW50LT5wb3MucmVsX3opOwo+ID4+Pj4+Pj4+ICAJCQlicmVhazsKPiA+Pj4+Pj4+PisJCWNhc2Ug WEVOS0JEX1RZUEVfTVRPVUNIOgo+ID4+Pj4+Pj4+KwkJCWRldiA9IGluZm8tPm10b3VjaDsKPiA+ Pj4+Pj4+PisJCQlpZiAodW5saWtlbHkoIWRldikpCj4gPj4+Pj4+Pj4rCQkJCWJyZWFrOwo+ID4+ Pj4+Pj4+KwkJCWlmICh1bmxpa2VseShldmVudC0+bXRvdWNoLmNvbnRhY3RfaWQgIT0KPiA+Pj4+ Pj4+PisJCQkJCWluZm8tPm10b3VjaF9jdXJfY29udGFjdF9pZCkpIHsKPiA+Pj4+Pj4+V2h5IGlz IHRoaXMgdW5saWtlbHk/IERvZXMgY29udGFjdCBJRCBjaGFuZ2VzIG9uY2UgaW4gMTAwMCBwYWNr ZXRzIG9yCj4gPj4+Pj4+PmV2ZW4gbGVzcz8KPiA+Pj4+Pj5NdSBhc3N1bXB0aW9uIHdhcyB0aGF0 IHJlZ2FyZGxlc3Mgb2YgdGhlIGZhY3QgdGhhdCB3ZSBhcmUgbXVsdGktdG91Y2gKPiA+Pj4+Pj5k ZXZpY2Ugc3RpbGwgc2luZ2xlIHRvdWNoZXMgd2lsbCBjb21lIGluIG1vcmUgZnJlcXVlbnRseQo+ ID4+Pj4+PkJ1dCBJIGNhbiByZW1vdmUgKnVubGlrZWx5KiBpZiBteSBhc3N1bXB0aW9uIGlzIG5v dCBjb3JyZWN0Cj4gPj4+Pj5JIHRoaW5rIHRoZSBub3JtYWwgZXhwZWN0YXRpb24gaXMgdGhhdCAi dW5saWtlbHkiIGlzIHN1cHBvc2VkIGZvcgo+ID4+Pj4+c29tZXRoaW5nIHRoYXQgaGFwcGVucyBv bmNlIGluIGEgYmx1ZSBtb29uLCBzbyBJJ2QgcmF0aGVyIHJlbW92ZSBpdC4KPiA+Pj4+Pgo+ID4+ Pj5hZ3JlZSwgcmVtb3ZlZCAidW5saWtlbHkiCj4gPj4+Pj4+Pj4rCQkJCWluZm8tPm10b3VjaF9j dXJfY29udGFjdF9pZCA9Cj4gPj4+Pj4+Pj4rCQkJCQlldmVudC0+bXRvdWNoLmNvbnRhY3RfaWQ7 Cj4gPj4+Pj4+Pj4rCQkJCWlucHV0X210X3Nsb3QoZGV2LCBldmVudC0+bXRvdWNoLmNvbnRhY3Rf aWQpOwo+ID4+Pj4+Pj4+KwkJCX0KPiA+Pj4+Pj4+PisJCQlzd2l0Y2ggKGV2ZW50LT5tdG91Y2gu ZXZlbnRfdHlwZSkgewo+ID4+Pj4+Pj4+KwkJCWNhc2UgWEVOS0JEX01UX0VWX0RPV046Cj4gPj4+ Pj4+Pj4rCQkJCWlucHV0X210X3JlcG9ydF9zbG90X3N0YXRlKGRldiwgTVRfVE9PTF9GSU5HRVIs Cj4gPj4+Pj4+Pj4rCQkJCQkJCSAgIHRydWUpOwo+ID4+Pj4+U2hvdWxkIHdlIGVzdGFibGlzaCB0 b29sIGV2ZW50PyBXZSBoYXZlIE1UX1RPT0xfUEVOLCBldGMuCj4gPj4+PkkgdGhpbmsgdGhhdCBm b3IgbXVsdGktdG91Y2ggTVRfVE9PTF9GSU5HRVIgaXMgZW5vdWdoCj4gPj4+PmFueSByZWFzb24g d2Ugd291bGQgYWxzbyB3YW50IE1UX1RPT0xfUEVOIGhlcmU/Cj4gPj4+V2h5IHdvdWxkIG5vdCB5 b3U/IExldCdzIHNheSB5b3UgaGF2ZSBhIGRyYXdpbmcgYXBwbGljYXRpb24gcnVubmluZyBpbgo+ ID4+Pmd1ZXN0IHRoYXQgY2FuIG1ha2UgdXNlIG9mIHRvb2wgdHlwZXMuIFdoeSB3b3VsZCBub3Qg eW91IHdhbnQgdG8gdGVsbCBpdAo+ID4+PnRoYXQgdGhlIHRvb2wgdXNlciBpcyBjdXJyZW50bHkg dXNpbmcgaXMgaW4gZmFjdCBhIHBlbiBhbmQgbm90IGZpbmdlcj8KPiA+PkJ1dCBpdCBpcyBhIGZp bmdlciA6KSB3ZSBhcmUgbXVsdGktdG91Y2gsIG5vdCBtdWx0aSBwZW4KPiA+U28gZm9yIHRhYmxl dHMgdGhhdCBzdXBwb3J0IGJvdGggdG91Y2ggYW5kIHN0eWx1cyB5b3Ugd291bGQgZXhwb3J0IHRo ZW0KPiA+YXMgMiBzZXBhcmF0ZSBkZXZpY2VzPwo+IHRoaXMgY291bGQgYmUgZG9uZSBpbiBkaWZm ZXJlbnQgd2F5cywgYnV0IHBsZWFzZSBzZWUgb24KPiBwZW4gc3VwcG9ydCBiZWxvdwo+ID4+QmVz aWRlcywgdGhhdCwgaWYgSSBhbSBhYm91dCB0byBpbXBsZW1lbnQgcGVuIHN1cHBvcnQKPiA+Pih3 aGljaCBJIHN0aWxsIG5vdCBjb252aW5jZWQgd2UgcmVhbGx5IG5lZWQpLCBob3cgd2lsbCBJCj4g Pj5kbyB0aGF0Pwo+ID5JIGRvIG5vdCBrbm93IHdoYXQgeW91IGhhdmUgb24gdGhlIGJhY2tlbmQg c2lkZSwgYnV0IHJvdWdobHkgc3BlYWtpbmcgaWYKPiA+eW91IGRldGVjdCBhIHBlbi9zdHlsdXMg eW91IGxldCB5b3VyIGd1ZXN0IGtub3cgdGhhdCB0aGUgY29udGFjdCBpcyBub3QKPiA+YSBmaW5n ZXIsIGJ1dCBwZW4uIEhvdyB5b3UgcGx1bWIgaXQgdGhyb3VnaCBpcyB1cCB0byB5b3UuCj4gd2Ug ZG8gbm90IGRldGVjdCBwZW4sIG9ubHkgZmluZ2VyIGF0IHRoZSBtb21lbnQKPiBhbmQgdGhlIGV4 aXN0aW5nIHByb3RvY29sIGhhcyBubyBtZWFucyB0byB0ZWxsCj4gdHlwZSBvZiB0aGUgdG9vbCB1 c2VkLCBldmVyeXRoaW5nIGlzIHN1cHBvc2VkIHRvCj4gYmUgImZpbmdlciIsIHNvIGZyb250LWVu ZCBoYXMgbm8gcG9zc2liaWxpdHkgdG8KPiB0ZWxsIG9uZSB0b29sIGZyb20gYW5vdGhlcgo+ID4+ TXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IEkgbmVlZCAyIGRpZmZlcmVudCBzbG90cyB0byByZXBv cnQKPiA+PnRoZSBzYW1lIGNvb3JkaW5hdGVzIGZvciBmaW5nZXIgYW5kIHBlbi4gVGhpcyBpcyBi ZWNhdXNlCj4gPj5pbnB1dF9tdF9yZXBvcnRfc2xvdF9zdGF0ZSBoYXMgYSBjaGVjayB0aGF0IGlm IHRvb2wgaGFzCj4gPj5jaGFuZ2VkIGZvciB0aGUgY3VycmVudCBzbG90IHRoZW4gYSBuZXcgdHJh Y2tpbmcgSUQgaXMgc2V0Lgo+ID4+RG8gSSBhbHNvIG5lZWQgdG8gYWxsb2NhdGUgdHdpY2UgbW9y ZSBzbG90cywgc28gSSBjYW4KPiA+PnJlcG9ydCAyICogbnVtX2NvbnRhY3RzIGV2ZW50cyBzaW11 bHRhbmVvdXNseSAob25lIGZvciBmaW5nZXIKPiA+PmFuZCBhbm90aGVyIGZvciBwZW4pPwo+ID4+ VGhhdCBzYWlkLCBJIGJlbGlldmUgd2UgY2FuIHN0YXJ0IHdpdGggbXVsdGktdG91Y2ggc3VwcG9y dAo+ID4+YW5kIGlmIG5lZWQgYmUgdGhlbiBhZGQgcGVuIHN1cHBvcnQgYXMgYSBzZXBhcmF0ZSBj aGFuZ2UsCj4gPj5kb2VzIHRoYXQgbWFrZSBzZW5zZSBmb3IgeW91Pwo+ID4+Pj4oSSBndWVzcyBN VF9UT09MX1BBTE0gaXMgbm90IGFwcHJvcHJpYXRlIGFueXdheXMpCj4gPj4+RGVwZW5kcyBvbiBp ZiB5b3UgZG8gc3RyYWlnaHQgcGFzcy10aHJvdWdoIGZyb20gdGhlIGhvc3Qgc2lkZSBvciBub3Qu IElmCj4gPj4+eW91IHN0YWNrIGRvZXMgcGFsbSByZWplY3Rpb24gYmVmb3JlIHBhc3NpbmcgdGhl IGRhdGEgdGhyb3VnaCB0aGVuIHlvdQo+ID4+PndvdWxkIG5vdCBzZWUgTVRfVE9PTF9QQUxNIGlu IGd1ZXN0Lgo+ID4+dGhlIHByb3RvY29sIHVzZWQgYmV0d2VlbiBndWVzdCBhbmQgaG9zdCBpcyBh IGdlbmVyaWMgb25lLAo+ID4+bm90IHVzaW5nIExpbnV4IHR5cGVzL2NvbnN0YW50cy9ldmVudHMu Cj4gPkl0IGRvZXMgbm90IGhhdmUgdG8gdXNlIExpbnV4IHR5cGVzIHRvIHN1cHBvcnQgdGhlIGNv bmNlcHQgb2YgZGlmZmVyZW50Cj4gPnRvb2xzLgo+IGFncmVlCj4gPj5Tbywgbm8gUEFMTS9UT09M IHN1cHBvcnQgaXMgaW4gcGxhY2UKPiA+T0ssIHRoYXQgaXMgZmFpci4gVGhlIHBlbiBzdXBwb3J0 IGlzIGRlZmluaXRlbHkgbm90IGEgaGFyZCByZXF1aXJlbWVudC4KPiBzbywgY2FuIHdlIGxpdmUg d2l0aCBmaW5nZXIgYXQgdGhpcyBwb2ludCwgbm8gcGVuPwo+ID5JIHdhcyBqdXN0IHdvbmRlcmlu ZyBpZiB5b3UgY29uc2lkZXJlZCBvciBoYXZlIHBsYW5zIGZvciBhZGRpbmcgdGhhdC4KPiB3ZWxs LCBob25lc3RseSwgd2UgZG8gbm90IG5lZWQgcGVuIGF0IHRoZSBtb21lbnQsCj4gYnV0IHdlIGRp ZCBhZGQgbXVsdGktdG91Y2ggc3VwcG9ydCBpbnRvIFhlbiBwcm90b2NvbHMKPiBhbmQgaWYgcGVu IHJlcXVpcmVkIGl0IGNhbiBiZSBkb25lIGFzIGEgc2VwYXJhdGUKPiBjaGFuZ2UgdG8gYm90aCBw cm90b2NvbCBhbmQgZnJvbnQvYmFjayBlbmRzCj4gPiAgT3IKPiA+aWYgeW91IHdhbnQgdG8gcmV2 aWV3IHRoZSBwcm90b2NvbCBzbyBpdCBjYW4gYmUgZWFzaWx5IGFkZGVkIGluIHRoZQo+ID5mdXR1 cmUuIEZvciBleGFtcGxlIHlvdSBjb3VsZCBoYXZlIHRvb2wgdHlwZSB0byBiZSBwYXJ0IG9mCj4g PlhFTktCRF9NVF9FVl9ET1dOIGV2ZW50Lgo+IHByb3RvY29sIGRpZCBhIGxvbmcgd2F5IHRvIGdl dCBpbnRvIFhlbi9LZXJuZWwuLi4gOikKPiBvZiBjb3Vyc2UsIHRoaXMgY2FuIGJlIGRvbmUsIGJ1 dCBJIHdvdWxkIHByZWZlciBpdCBpcwo+IGFkZGVkIHdoZW4gaXQgaXMgbmVlZGVkLCBub3Qgb25s eSB0aGF0IHdlIGhhdmUgdGhpcyBmdW5jdGlvbmFsaXR5CgpPSy4KCj4gPj4+Pj4+Pj4rCQkJCWlu cHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfTVRfUE9TSVRJT05fWCwKPiA+Pj4+Pj4+PisJCQkJ CSAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic194KTsKPiA+Pj4+Pj4+PisJCQkJaW5wdXRfZXZl bnQoZGV2LCBFVl9BQlMsIEFCU19NVF9QT1NJVElPTl9ZLAo+ID4+Pj4+Pj4+KwkJCQkJICAgIGV2 ZW50LT5tdG91Y2gudS5wb3MuYWJzX3kpOwo+ID4+Pj4+Pj4+KwkJCQlpbnB1dF9ldmVudChkZXYs IEVWX0FCUywgQUJTX1gsCj4gPj4+Pj4+Pj4rCQkJCQkgICAgZXZlbnQtPm10b3VjaC51LnBvcy5h YnNfeCk7Cj4gPj4+Pj4+Pj4rCQkJCWlucHV0X2V2ZW50KGRldiwgRVZfQUJTLCBBQlNfWSwKPiA+ Pj4+Pj4+PisJCQkJCSAgICBldmVudC0+bXRvdWNoLnUucG9zLmFic195KTsKPiA+Pj4+Pj4+PisJ CQkJYnJlYWs7Cj4gPj4+Pj4+Pj4rCQkJY2FzZSBYRU5LQkRfTVRfRVZfVVA6Cj4gPj4+Pj4+Pj4r CQkJCWlucHV0X210X3JlcG9ydF9zbG90X3N0YXRlKGRldiwgTVRfVE9PTF9GSU5HRVIsCj4gPj4+ Pj4+Pj4rCQkJCQkJCSAgIGZhbHNlKTsKPiA+Pj4+Pj4+PisJCQkJYnJlYWs7Cj4gPj4+Pj4+Pj4r CQkJY2FzZSBYRU5LQkRfTVRfRVZfTU9USU9OOgo+ID4+Pj4+Pj4+KwkJCQlpbnB1dF9ldmVudChk ZXYsIEVWX0FCUywgQUJTX01UX1BPU0lUSU9OX1gsCj4gPj4+Pj4+Pj4rCQkJCQkgICAgZXZlbnQt Pm10b3VjaC51LnBvcy5hYnNfeCk7Cj4gPj4+Pj4+Pj4rCQkJCWlucHV0X2V2ZW50KGRldiwgRVZf QUJTLCBBQlNfTVRfUE9TSVRJT05fWSwKPiA+Pj4+Pj4+PisJCQkJCSAgICBldmVudC0+bXRvdWNo LnUucG9zLmFic195KTsKPiA+Pj4+Pj4+PisJCQkJaW5wdXRfZXZlbnQoZGV2LCBFVl9BQlMsIEFC U19YLAo+ID4+Pj4+Pj4+KwkJCQkJICAgIGV2ZW50LT5tdG91Y2gudS5wb3MuYWJzX3gpOwo+ID4+ Pj4+Pj4+KwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FCUywgQUJTX1ksCj4gPj4+Pj4+Pj4rCQkJ CQkgICAgZXZlbnQtPm10b3VjaC51LnBvcy5hYnNfeSk7Cj4gPj4+Pj4+Pj4rCQkJCWJyZWFrOwo+ ID4+Pj4+Pj4+KwkJCWNhc2UgWEVOS0JEX01UX0VWX1NZTjoKPiA+Pj4+Pj4+PisJCQkJaW5wdXRf bXRfc3luY19mcmFtZShkZXYpOwo+ID4+Pj4+Pj4+KwkJCQlicmVhazsKPiA+Pj4+Pj4+PisJCQlj YXNlIFhFTktCRF9NVF9FVl9TSEFQRToKPiA+Pj4+Pj4+PisJCQkJaW5wdXRfZXZlbnQoZGV2LCBF Vl9BQlMsIEFCU19NVF9UT1VDSF9NQUpPUiwKPiA+Pj4+Pj4+PisJCQkJCSAgICBldmVudC0+bXRv dWNoLnUuc2hhcGUubWFqb3IpOwo+ID4+Pj4+Pj4+KwkJCQlpbnB1dF9ldmVudChkZXYsIEVWX0FC UywgQUJTX01UX1RPVUNIX01JTk9SLAo+ID4+Pj4+Pj4+KwkJCQkJICAgIGV2ZW50LT5tdG91Y2gu dS5zaGFwZS5taW5vcik7Cj4gPj4+Pj4+Pj4rCQkJCWJyZWFrOwo+ID4+Pj4+Pj4+KwkJCWNhc2Ug WEVOS0JEX01UX0VWX09SSUVOVDoKPiA+Pj4+Pj4+PisJCQkJaW5wdXRfZXZlbnQoZGV2LCBFVl9B QlMsIEFCU19NVF9PUklFTlRBVElPTiwKPiA+Pj4+Pj4+PisJCQkJCSAgICBldmVudC0+bXRvdWNo LnUub3JpZW50YXRpb24pOwo+ID4+Pj4+Pj4+KwkJCQlicmVhazsKPiA+Pj4+Pj4+PisJCQl9Cj4g Pj4+Pj4+Pj4rCQkJLyogb25seSByZXBvcnQgc3luIHdoZW4gcmVxdWVzdGVkICovCj4gPj4+Pj4+ Pj4rCQkJaWYgKGV2ZW50LT5tdG91Y2guZXZlbnRfdHlwZSAhPSBYRU5LQkRfTVRfRVZfU1lOKQo+ ID4+Pj4+Pj4+KwkJCQlkZXYgPSBOVUxMOwo+ID4+Pj4+Pj4+ICAJCX0KPiA+Pj4+Pj4+PiAgCQlp ZiAoZGV2KQo+ID4+Pj4+Pj4+ICAJCQlpbnB1dF9zeW5jKGRldik7Cj4gPj4+Pj4+Pj5AQCAtMTE1 LDkgKzE3OSw5IEBAIHN0YXRpYyBpbnQgeGVua2JkX3Byb2JlKHN0cnVjdCB4ZW5idXNfZGV2aWNl ICpkZXYsCj4gPj4+Pj4+Pj4gIAkJCQkgIGNvbnN0IHN0cnVjdCB4ZW5idXNfZGV2aWNlX2lkICpp ZCkKPiA+Pj4+Pj4+PiAgewo+ID4+Pj4+Pj4+ICAJaW50IHJldCwgaTsKPiA+Pj4+Pj4+Pi0JdW5z aWduZWQgaW50IGFiczsKPiA+Pj4+Pj4+PisJdW5zaWduZWQgaW50IGFicywgdG91Y2g7Cj4gPj4+ Pj4+Pj4gIAlzdHJ1Y3QgeGVua2JkX2luZm8gKmluZm87Cj4gPj4+Pj4+Pj4tCXN0cnVjdCBpbnB1 dF9kZXYgKmtiZCwgKnB0cjsKPiA+Pj4+Pj4+PisJc3RydWN0IGlucHV0X2RldiAqa2JkLCAqcHRy LCAqbXRvdWNoOwo+ID4+Pj4+Pj4+ICAJaW5mbyA9IGt6YWxsb2Moc2l6ZW9mKCppbmZvKSwgR0ZQ X0tFUk5FTCk7Cj4gPj4+Pj4+Pj4gIAlpZiAoIWluZm8pIHsKPiA+Pj4+Pj4+PkBAIC0xNTIsNiAr MjE2LDE3IEBAIHN0YXRpYyBpbnQgeGVua2JkX3Byb2JlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpk ZXYsCj4gPj4+Pj4+Pj4gIAkJfQo+ID4+Pj4+Pj4+ICAJfQo+ID4+Pj4+Pj4+Kwl0b3VjaCA9IHhl bmJ1c19yZWFkX3Vuc2lnbmVkKGRldi0+bm9kZW5hbWUsCj4gPj4+Pj4+Pj4rCQkJCSAgICAgWEVO S0JEX0ZJRUxEX0ZFQVRfTVRPVUNILCAwKTsKPiA+Pj4+Pj4+PisJaWYgKHRvdWNoKSB7Cj4gPj4+ Pj4+Pj4rCQlyZXQgPSB4ZW5idXNfd3JpdGUoWEJUX05JTCwgZGV2LT5ub2RlbmFtZSwKPiA+Pj4+ Pj4+PisJCQkJICAgWEVOS0JEX0ZJRUxEX1JFUV9NVE9VQ0gsICIxIik7Cj4gPj4+Pj4+Pj4rCQlp ZiAocmV0KSB7Cj4gPj4+Pj4+Pj4rCQkJcHJfd2FybmluZygieGVua2JkOiBjYW4ndCByZXF1ZXN0 IG11bHRpLXRvdWNoIik7Cj4gPj4+Pj4+Pj4rCQkJdG91Y2ggPSAwOwo+ID4+Pj4+Pj4+KwkJfQo+ ID4+Pj4+Pj4+Kwl9Cj4gPj4+Pj4+Pj4rCj4gPj4+Pj4+Pj4gIAkvKiBrZXlib2FyZCAqLwo+ID4+ Pj4+Pj4+ICAJa2JkID0gaW5wdXRfYWxsb2NhdGVfZGV2aWNlKCk7Cj4gPj4+Pj4+Pj4gIAlpZiAo IWtiZCkKPiA+Pj4+Pj4+PkBAIC0yMDgsNiArMjgzLDY3IEBAIHN0YXRpYyBpbnQgeGVua2JkX3By b2JlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsCj4gPj4+Pj4+Pj4gIAl9Cj4gPj4+Pj4+Pj4g IAlpbmZvLT5wdHIgPSBwdHI7Cj4gPj4+Pj4+Pj4rCS8qIG11bHRpLXRvdWNoIGRldmljZSAqLwo+ ID4+Pj4+Pj4+KwlpZiAodG91Y2gpIHsKPiA+Pj4+Pj4+PisJCWludCBudW1fY29udCwgd2lkdGgs IGhlaWdodDsKPiA+Pj4+Pj4+PisKPiA+Pj4+Pj4+PisJCW10b3VjaCA9IGlucHV0X2FsbG9jYXRl X2RldmljZSgpOwo+ID4+Pj4+Pj4+KwkJaWYgKCFtdG91Y2gpCj4gPj4+Pj4+Pj4rCQkJZ290byBl cnJvcl9ub21lbTsKPiA+Pj4+Pj4+PisKPiA+Pj4+Pj4+PisJCW51bV9jb250ID0geGVuYnVzX3Jl YWRfdW5zaWduZWQoaW5mby0+eGJkZXYtPm5vZGVuYW1lLAo+ID4+Pj4+Pj4+KwkJCQkJCVhFTktC RF9GSUVMRF9NVF9OVU1fQ09OVEFDVFMsCj4gPj4+Pj4+Pj4rCQkJCQkJMSk7Cj4gPj4+Pj5TaG91 bGQgd2UgcmVmdXNlIE1UIGRldmljZXMgd2l0aCBudW1iZXIgb2YgY29udGFjdHMgbGVzcyB0aGFu IDI/Cj4gPj4+PndlIGNhbiwgYnV0IEkgc2VlIG5vIGhhcm0gaW4gMS4gd2hhdCBpcyBtb3JlLCB0 aGlzIG1heQo+ID4+Pj5hbGxvdyBndWVzdHMgdG8gZW11bGF0ZSBtb3JlIHBvaW50aW5nIGRldmlj ZXMKPiA+Pj4+YnV0LCBpZiB5b3UgaW5zaXN0LCB0aGVuIEkgd2lsbCBhZGQgYXBwcm9wcmlhdGUg Y29kZSB0bwo+ID4+Pj5yZWplY3QgaWYgbnVtYmVyIG9mIGNvbnRhY3RzIGlzIGxlc3MgdGhlbiAy Cj4gPlRoZSBxdWVzdGlvbiBpcyBpZiB5b3UgYXJlIHBsYW5uaW5nIHRvIGtlZXAgdGhlIHNpbmds ZS10b3VjaCBpbnRlcmZhY2UKPiA+b3IgeW91IHdpbGwgbWlncmF0ZSBldmVyeXRoaW5nIHRvIG11 bHRpLXRvdWNoLgo+IEkgd2lsbCBrZWVwIHNpbmdsZSB0b3VjaCBhcyBsZWdhY3ksIGJ1dCBpbiBv dXIgdXNlLWNhc2VzCj4gd2UgYXJlIG1vcmUgZm9jdXNpbmcgb24gdXNpbmcgbXVsdGktdG91Y2gg ZGV2aWNlcy4KPiBidXQgZXZlbiB3aXRoIG51bWJlciBvZiBjb250YWN0cyA9PSAxIGl0IGNhbiBz dGlsbCBiZQo+IHVzZWZ1bCBhcyBpdCBnaXZlcyBtb3JlIGZsZXhpYmlsaXR5IGluIGNvbmZpZ3Vy aW5nIGd1ZXN0IE9TCj4gSWYgeW91IGluc2lzdCB0aGF0IG51bSBjb250YWN0cyA9PSAxIG11c3Qg YmUgcmVtb3ZlZCwKPiBwbGVhc2UgbGV0IG1lIGtub3cgYW5kIEkgd2lsbCBoYW5kbGUgdGhhdAoK Tm8sIHRoYXQgaXMgZmluZS4gSSB3YXMgc2ltcGx5IHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBw bGFucyBmb3IKc2luZ2xlL211bHRpLXRvdWNoIHN1cHBvcnQgaW4geW91ciBiYWNrZW5kLgoKPiA+ Pj4+Pj4+PisJCXdpZHRoID0geGVuYnVzX3JlYWRfdW5zaWduZWQoaW5mby0+eGJkZXYtPm5vZGVu YW1lLAo+ID4+Pj4+Pj4+KwkJCQkJICAgICBYRU5LQkRfRklFTERfTVRfV0lEVEgsCj4gPj4+Pj4+ Pj4rCQkJCQkgICAgIFhFTkZCX1dJRFRIKTsKPiA+Pj4+Pj4+PisJCWhlaWdodCA9IHhlbmJ1c19y ZWFkX3Vuc2lnbmVkKGluZm8tPnhiZGV2LT5ub2RlbmFtZSwKPiA+Pj4+Pj4+PisJCQkJCSAgICAg IFhFTktCRF9GSUVMRF9NVF9IRUlHSFQsCj4gPj4+Pj4+Pj4rCQkJCQkgICAgICBYRU5GQl9IRUlH SFQpOwo+ID4+Pj4+Pj5DdXJpb3VzIHdoeSB5b3UgbmVlZCBzZXBhcmF0ZSBwYXJhbWV0ZXJzIGhl cmUgdG9vLi4uCj4gPj4+Pj4+VGhpcyBpcyBiZWNhdXNlIG10IHBhcmFtZXRlcnMgYXJlIGRpZmZl cmVudCBmcm9tIHB0cgo+ID4+Pj4+PmluIGEgd2F5IHRoYXQgdGhleSBhcmUgY29uZmlndXJhYmxl IHBlciBmcm9udCBkcml2ZXIncwo+ID4+Pj4+Pmluc3RhbmNlIHJhdGhlciB0aGFuIHBlciBiYWNr ZW5kLCBlLmcuIGluIFhlblN0b3JlOgo+ID4+Pj4+Pgo+ID4+Pj4+Pi9sb2NhbC9kb21haW4vMC9i YWNrZW5kL3ZrYmQvMS8wL3dpZHRoID0gIjE5MjAiCj4gPj4+Pj4+L2xvY2FsL2RvbWFpbi8wL2Jh Y2tlbmQvdmtiZC8xLzAvaGVpZ2h0ID0gIjEwODAiCj4gPj4+Pj4+Cj4gPj4+Pj4+L2xvY2FsL2Rv bWFpbi8xL2RldmljZS92a2JkLzAvbXVsdGktdG91Y2gtd2lkdGggPSAiMTkyMCIKPiA+Pj4+Pj4v bG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZrYmQvMC9tdWx0aS10b3VjaC1oZWlnaHQgPSAiMTA4MCIK PiA+Pj4+Pj4vbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZrYmQvMC9tdWx0aS10b3VjaC1udW0tY29u dGFjdHMgPSAiMTAiCj4gPj4+Pj4+Cj4gPj4+Pj4+L2xvY2FsL2RvbWFpbi8xL2RldmljZS92a2Jk LzEvbXVsdGktdG91Y2gtd2lkdGggPSAiODAwIgo+ID4+Pj4+Pi9sb2NhbC9kb21haW4vMS9kZXZp Y2UvdmtiZC8xL211bHRpLXRvdWNoLWhlaWdodCA9ICI2MDAiCj4gPj4+Pj4+L2xvY2FsL2RvbWFp bi8xL2RldmljZS92a2JkLzEvbXVsdGktdG91Y2gtbnVtLWNvbnRhY3RzID0gIjMiCj4gPj4+Pj4+ Cj4gPj4+Pj4+VGhlIG1haW4gcmVhc29uIGZvciBzdWNoIGNvbmZpZ3VyYXRpb24gaXMgdGhhdCB5 b3UgY2FuCj4gPj4+Pj4+Y29uZmlndXJlIG11bHRpcGxlIG10IGlucHV0IGRldmljZXMgZXZlbiBm b3IgdGhlIHNhbWUgZ3Vlc3QKPiA+Pj4+Pj53aXRoIGRpZmZlcmVudCByZXNvbHV0aW9ucyB3aGlj aCBtYXkgbm90IG1hdGNoIHRob3NlCj4gPj4+Pj4+Y29uZmlndXJlZCBmb3IgcHRyLgo+ID4+Pj4+ PihJbiBteSB1c2UtY2FzZSBJIHVzZSBuZXcgZGlzcGxpZiBwcm90b2NvbCBbMV0gaW4gY29uanVu Y3Rpb24KPiA+Pj4+Pj53aXRoIG10IGlucHV0IGRldmljZXMgYW5kIHRoZSBjb3JyZXNwb25kaW5n IGJhY2tlbmQgaXMgbm90Cj4gPj4+Pj4+UUVNVSdzIHhlbmZiKQo+ID4+Pj4+SSBzZWUuCj4gPj4+ Pj4KPiA+Pj4+Pj5BcyB0byBtb2R1bGUgcGFyYW1ldGVycywgSSBhZGRlZCB0aG9zZSB0byBiZSBj b25zaXN0ZW50IHdpdGgKPiA+Pj4+Pj5wdHIgZGV2aWNlLiBEbyB5b3UgdGhpbmsgd2UgY2FuIGxp dmUgd2l0aG91dCB0aGVtIGFuZAo+ID4+Pj4+PmRvIHlvdSB3YW50IG1lIHRvIHJlbW92ZSB0aGVt Pwo+ID4+Pj4+WWVzLCBJIHRoaW5rIHdlIGJldHRlci4gSSBhbSBhbHNvIGNvbmZ1c2VkIGJ5IHRo ZSB3YXkgeW91IGFyZSBoYW5kbGluZwo+ID4+Pj4+dGhlIG1vZHVsZSBwYXJhbWV0ZXJzLiBJdCBs b29rcyB0byBtZSB5b3UgdXBkYXRlIHRoZW0gd2l0aCBkYXRhIHBhc3NlZAo+ID4+Pj4+ZnJvbSB0 aGUgYmFja2VuZCwgYnV0IG5ldmVyIHVzZSB0aGUgZGF0YS4uLgo+ID4+Pj5JIGhhdmUgcmVtb3Zl ZCBtb2R1bGUgcGFyYW1ldGVycyAodGhlIG9ubHkgdXNlIG9mIHRob3NlCj4gPj4+PndhcyB0byBi ZSBhYmxlIHRvIHNlZSBjb25maWd1cmVkIHdpZHRoIGFuZCBoZWlnaHQgb24KPiA+Pj4+Z3Vlc3Qg c2lkZSwgYnV0IHRoaXMgaXMgbWlub3IpCj4gPj4+ZXZ0ZXN0IHdvdWxkIHNob3cgaXQgdG8geW91 LiBPciB5b3UgY2FuIHF1ZXJ5IGlucHV0IGRldmljZSB5b3Vyc2VsZgo+ID4+PihFVklPQ0dBQlMg aW90Y2wpLgo+ID4+eWVzLCBpZiBlbWJlZGRlZCBzeXN0ZW0gKHdoaWNoIGlzIG15IHRhcmdldCkg aGFzIGV2dGVzdAo+ID4+YnV0IGl0IGRlZmluaXRlbHkgZG9lcyBoYXZlIGlvY3RsIHRob3VnaAo+ ID4+Pj4+Pj4+Kwo+ID4+Pj4+Pj4+KwkJbXRvdWNoLT5uYW1lID0gIlhlbiBWaXJ0dWFsIE11bHRp LXRvdWNoIjsKPiA+Pj4+Pj4+PisJCW10b3VjaC0+cGh5cyA9IGluZm8tPnBoeXM7Cj4gPj4+Pj4+ Pj4rCQltdG91Y2gtPmlkLmJ1c3R5cGUgPSBCVVNfUENJOwo+ID4+Pj4+Pj4+KwkJbXRvdWNoLT5p ZC52ZW5kb3IgPSAweDU4NTM7Cj4gPj4+Pj4+Pj4rCQltdG91Y2gtPmlkLnByb2R1Y3QgPSAweGZm ZmQ7Cj4gPj4+Pj4+Pj4rCj4gPj4+Pj4+Pj4rCQlfX3NldF9iaXQoRVZfQUJTLCBtdG91Y2gtPmV2 Yml0KTsKPiA+Pj4+Pj4+PisJCV9fc2V0X2JpdChFVl9LRVksIG10b3VjaC0+ZXZiaXQpOwo+ID4+ Pj4+Pj4+KwkJX19zZXRfYml0KEJUTl9UT1VDSCwgbXRvdWNoLT5rZXliaXQpOwo+ID4+PlBsZWFz ZSBtYWtlIGl0Cj4gPj4+CQlpbnB1dF9zZXRfY2FwYWJpbGl0eShtdG91Y2gsIEVWX0tFWSwgQlRO X1RPVUNIKTsKPiA+Pj4KPiA+Pj5hbmQgZHJvcCBhbGwgX19zZXRfYml0KClzLgo+ID4+ZG9uZSwg dGhhbmsgeW91Cj4gPj4+Pj4+Pj4rCj4gPj4+Pj4+Pj4rCQlpbnB1dF9zZXRfYWJzX3BhcmFtcyht dG91Y2gsIEFCU19YLAo+ID4+Pj4+Pj4+KwkJCQkgICAgIDAsIHdpZHRoLCAwLCAwKTsKPiA+Pj4+ Pj4+PisJCWlucHV0X3NldF9hYnNfcGFyYW1zKG10b3VjaCwgQUJTX1ksCj4gPj4+Pj4+Pj4rCQkJ CSAgICAgMCwgaGVpZ2h0LCAwLCAwKTsKPiA+Pj4+Pj4+PisJCWlucHV0X3NldF9hYnNfcGFyYW1z KG10b3VjaCwgQUJTX1BSRVNTVVJFLAo+ID4+Pj4+Pj4+KwkJCQkgICAgIDAsIDI1NSwgMCwgMCk7 Cj4gPj4+Pj4+Pj4rCj4gPj4+Pj4+Pj4rCQlpbnB1dF9zZXRfYWJzX3BhcmFtcyhtdG91Y2gsIEFC U19NVF9UT1VDSF9NQUpPUiwKPiA+Pj4+Pj4+PisJCQkJICAgICAwLCAyNTUsIDAsIDApOwo+ID4+ Pj4+Pj4+KwkJaW5wdXRfc2V0X2Fic19wYXJhbXMobXRvdWNoLCBBQlNfTVRfUE9TSVRJT05fWCwK PiA+Pj4+Pj4+PisJCQkJICAgICAwLCB3aWR0aCwgMCwgMCk7Cj4gPj4+Pj4+Pj4rCQlpbnB1dF9z ZXRfYWJzX3BhcmFtcyhtdG91Y2gsIEFCU19NVF9QT1NJVElPTl9ZLAo+ID4+Pj4+Pj4+KwkJCQkg ICAgIDAsIGhlaWdodCwgMCwgMCk7Cj4gPj4+Pj4+Pj4rCQlpbnB1dF9zZXRfYWJzX3BhcmFtcyht dG91Y2gsIEFCU19NVF9QUkVTU1VSRSwKPiA+Pj4+Pj4+PisJCQkJICAgICAwLCAyNTUsIDAsIDAp Owo+ID4+Pj4+Pj4+Kwo+ID4+Pj4+Pj4+KwkJaW5wdXRfbXRfaW5pdF9zbG90cyhtdG91Y2gsIG51 bV9jb250LCAwKTsKPiA+Pj4+PldlIG5lZWQgZXJyb3IgaGFuZGxpbmcgaGVyZS4KPiA+Pj4+ZG9u ZQo+ID4+Pj4+ICBBbHNvLCBpdCB3b3VsZCBiZSBuaWNlIGlmIHdlIHNldCBJTlBVVF9NVF8qCj4g Pj4+Pj5mbGFncyBoZXJlLCBzbyB0aGF0IHVzZXJzcGFjZSBoYWQgYmV0dGVyIGNoYW5jZSBvZiBm aWd1cmluZyBob3cgdG8KPiA+Pj4+PmhhbmRsZSB0aGUgZGV2aWNlLgo+ID4+Pj5kb25lLCBJIHdp bGwgdXNlIElOUFVUX01UX0RJUkVDVCB8IElOUFVUX01UX0RST1BfVU5VU0VECj4gPj4+RG9lcyB0 aGF0IG1lYW4gdGhhdCB5b3VyIGJhY2tlbmQgZG9lcyBub3QgcmVsaWFibHkgcmVwb3J0IHJlbGVh c2Ugb2YKPiA+Pj5jb250YWN0cz8KPiA+PnRoZXJlIGlzIGEgcmluZyBidWZmZXIgYmV0d2VlbiBo b3N0IGFuZCBndWVzdCwKPiA+PnNvIHRoZXJlIGlzIGFsd2F5cyBhIHBvc3NpYmlsaXR5IChyYXRo ZXIgc21hbGwgSSBiZWxpZXZlKQo+ID4+dGhhdCB0aGUgYnVmZmVyIG92ZXJydW5zLiBEbyB5b3Ug dGhpbmsgSSBuZWVkIElOUFVUX01UX0RST1BfVU5VU0VEIG9yCj4gPj53ZSBjYW4gbGl2ZSB3aXRo b3V0IGl0Pwo+ID5BZ2FpbiwgaXQgZGVwZW5kcyBvbiB5b3VyIGJhY2tlbmQgYmVoYXZpb3IuIERv IHlvdSByZXBvcnQgYWxsIHNsb3RzCj4gPnJlcGVhdGVkbHkgZm9yIGV2ZXJ5IHBhY2tldCBvciB5 b3UgcmVwb3J0IG9ubHkgY2hhbmdlZCBzbG90cz8KPiB3ZSByZXBvcnQgZXZlbnRzIHJlcGVhdGVk bHksIHNvIEkgdGhpbmsgd2UgY2FuIGxpdmUKPiB3L28gX0RST1BfVU5VU0VECj4gPlRoYW5rcy4K PiA+Cj4gPj4+VGhhbmtzLgo+ID4+Pgo+ID4+Pj4+Pj4+Kwo+ID4+Pj4+Pj4+KwkJbXRvdWNoX3Np emVbS1BBUkFNX01UX1hdID0gd2lkdGg7Cj4gPj4+Pj4+Pj4rCQltdG91Y2hfc2l6ZVtLUEFSQU1f TVRfWV0gPSBoZWlnaHQ7Cj4gPj4+Pj4+Pj4rCQlpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQg PSAtMTsKPiA+Pj4+Pj4+PisKPiA+Pj4+Pj4+PisJCXJldCA9IGlucHV0X3JlZ2lzdGVyX2Rldmlj ZShtdG91Y2gpOwo+ID4+Pj4+Pj4+KwkJaWYgKHJldCkgewo+ID4+Pj4+Pj4+KwkJCWlucHV0X2Zy ZWVfZGV2aWNlKG10b3VjaCk7Cj4gPj4+Pj4+Pj4rCQkJeGVuYnVzX2Rldl9mYXRhbChpbmZvLT54 YmRldiwgcmV0LAo+ID4+Pj4+Pj4+KwkJCQkJICJpbnB1dF9yZWdpc3Rlcl9kZXZpY2UobXRvdWNo KSIpOwo+ID4+Pj4+Pj4+KwkJCWdvdG8gZXJyb3I7Cj4gPj4+Pj4+Pj4rCQl9Cj4gPj4+Pj4+Pj4r CQlpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQgPSAtMTsKPiA+Pj4+Pj4+PisJCWluZm8tPm10 b3VjaCA9IG10b3VjaDsKPiA+Pj4+Pj4+PisJfQo+ID4+Pj4+Pj4+Kwo+ID4+Pj4+Pj4+ICAJcmV0 ID0geGVua2JkX2Nvbm5lY3RfYmFja2VuZChkZXYsIGluZm8pOwo+ID4+Pj4+Pj4+ICAJaWYgKHJl dCA8IDApCj4gPj4+Pj4+Pj4gIAkJZ290byBlcnJvcjsKPiA+Pj4+Pj4+PkBAIC0yNDAsNiArMzc2 LDggQEAgc3RhdGljIGludCB4ZW5rYmRfcmVtb3ZlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYp Cj4gPj4+Pj4+Pj4gIAkJaW5wdXRfdW5yZWdpc3Rlcl9kZXZpY2UoaW5mby0+a2JkKTsKPiA+Pj4+ Pj4+PiAgCWlmIChpbmZvLT5wdHIpCj4gPj4+Pj4+Pj4gIAkJaW5wdXRfdW5yZWdpc3Rlcl9kZXZp Y2UoaW5mby0+cHRyKTsKPiA+Pj4+Pj4+PisJaWYgKGluZm8tPm10b3VjaCkKPiA+Pj4+Pj4+PisJ CWlucHV0X3VucmVnaXN0ZXJfZGV2aWNlKGluZm8tPm10b3VjaCk7Cj4gPj4+Pj4+Pj4gIAlmcmVl X3BhZ2UoKHVuc2lnbmVkIGxvbmcpaW5mby0+cGFnZSk7Cj4gPj4+Pj4+Pj4gIAlrZnJlZShpbmZv KTsKPiA+Pj4+Pj4+PiAgCXJldHVybiAwOwo+ID4+Pj4+Pj4+LS0gCj4gPj4+Pj4+Pj4yLjcuNAo+ ID4+Pj4+Pj4+Cj4gPj4+Pj5UaGFua3MuCj4gPj4+Pj4KPiA+Pj4+Rm9yIHlvdXIgY29udmVuaWVu Y2UgSSBhbSBhdHRhY2hpbmcgdGhlIGNoYW5nZXMgSSBhbSBhYm91dAo+ID4+Pj50byBwdXQgaW50 byB2MSBvZiB0aGUgc2VyaWVzOgo+ID4+Pj4gIC0gcmVtb3ZlIHVubGlrZWx5Cj4gPj4+PiAgLSBy ZW1vdmUgbW9kdWxlIHBhcmFtZXRlcnMKPiA+Pj4+ICAtIGVycm9yIGhhbmRsaW5nIGZvciBpbnB1 dF9tdF9pbml0X3Nsb3RzCj4gPj4+PiAgLSBsZXQgdXNlcnNwYWNlIGJldHRlciBjaGFuY2Ugb2Yg ZmlndXJpbmcgaG93IHRvIGhhbmRsZSB0aGUgZGV2aWNlCj4gPj4+Pgo+ID4+Pj5UaGFuayB5b3Us Cj4gPj4+Pk9sZWtzYW5kcgo+ID4+Pj4gRnJvbSBlNzY1MDZjNTU4NDZlMmJiNGNjYmFmYTQzMDY0 MmUzNjg2NDNlNTFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQo+ID4+Pj5Gcm9tOiBPbGVrc2Fu ZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4gPj4+ PkRhdGU6IFR1ZSwgMzAgTWF5IDIwMTcgMTQ6NDk6NTggKzAzMDAKPiA+Pj4+U3ViamVjdDogW1BB VENIXSBGaXg6IHJlbW92ZSB1bmxpa2VseSBGaXg6IHJlbW92ZSBtb2R1bGUgcGFyYW10ZXJzIEZp eDogZXJyb3IKPiA+Pj4+ICBoYW5kbGluZyBmb3IgaW5wdXRfbXRfaW5pdF9zbG90cyBGaXg6IGxl dCB1c2Vyc3BhY2UgYmV0dGVyIGNoYW5jZSBvZiBmaWd1cmluZwo+ID4+Pj4gIGhvdyB0byBoYW5k bGUgdGhlIGRldmljZQo+ID4+Pj4KPiA+Pj4+U2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEFuZHJ1 c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+ID4+Pj4tLS0KPiA+ Pj4+ICBkcml2ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMgfCAyMSArKysrKysrKysrLS0t LS0tLS0tLS0KPiA+Pj4+ICAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTEgZGVs ZXRpb25zKC0pCj4gPj4+Pgo+ID4+Pj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9taXNjL3hl bi1rYmRmcm9udC5jIGIvZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5jCj4gPj4+Pmlu ZGV4IDgyNjZlZjk0OGEwNi4uMjczZDc4NmExOWNkIDEwMDY0NAo+ID4+Pj4tLS0gYS9kcml2ZXJz L2lucHV0L21pc2MveGVuLWtiZGZyb250LmMKPiA+Pj4+KysrIGIvZHJpdmVycy9pbnB1dC9taXNj L3hlbi1rYmRmcm9udC5jCj4gPj4+PkBAIC01MSwxMiArNTEsNiBAQCBtb2R1bGVfcGFyYW1fYXJy YXkocHRyX3NpemUsIGludCwgTlVMTCwgMDQ0NCk7Cj4gPj4+PiAgTU9EVUxFX1BBUk1fREVTQyhw dHJfc2l6ZSwKPiA+Pj4+ICAJIlBvaW50aW5nIGRldmljZSB3aWR0aCwgaGVpZ2h0IGluIHBpeGVs cyAoZGVmYXVsdCA4MDAsNjAwKSIpOwo+ID4+Pj4tZW51bSB7IEtQQVJBTV9NVF9YLCBLUEFSQU1f TVRfWSwgS1BBUkFNX01UX0NOVCB9Owo+ID4+Pj4tc3RhdGljIGludCBtdG91Y2hfc2l6ZVtLUEFS QU1fTVRfQ05UXSA9IHsgWEVORkJfV0lEVEgsIFhFTkZCX0hFSUdIVCB9Owo+ID4+Pj4tbW9kdWxl X3BhcmFtX2FycmF5KG10b3VjaF9zaXplLCBpbnQsIE5VTEwsIDA0NDQpOwo+ID4+Pj4tTU9EVUxF X1BBUk1fREVTQyhwdHJfc2l6ZSwKPiA+Pj4+LQkiTXVsdGktdG91Y2ggZGV2aWNlIHdpZHRoLCBo ZWlnaHQgaW4gcGl4ZWxzIChkZWZhdWx0IDgwMCw2MDApIik7Cj4gPj4+Pi0KPiA+Pj4+ICBzdGF0 aWMgaW50IHhlbmtiZF9yZW1vdmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKik7Cj4gPj4+PiAgc3Rh dGljIGludCB4ZW5rYmRfY29ubmVjdF9iYWNrZW5kKHN0cnVjdCB4ZW5idXNfZGV2aWNlICosIHN0 cnVjdCB4ZW5rYmRfaW5mbyAqKTsKPiA+Pj4+ICBzdGF0aWMgdm9pZCB4ZW5rYmRfZGlzY29ubmVj dF9iYWNrZW5kKHN0cnVjdCB4ZW5rYmRfaW5mbyAqKTsKPiA+Pj4+QEAgLTExNCw4ICsxMDgsOCBA QCBzdGF0aWMgaXJxcmV0dXJuX3QgaW5wdXRfaGFuZGxlcihpbnQgcnEsIHZvaWQgKmRldl9pZCkK PiA+Pj4+ICAJCQlkZXYgPSBpbmZvLT5tdG91Y2g7Cj4gPj4+PiAgCQkJaWYgKHVubGlrZWx5KCFk ZXYpKQo+ID4+Pj4gIAkJCQlicmVhazsKPiA+Pj4+LQkJCWlmICh1bmxpa2VseShldmVudC0+bXRv dWNoLmNvbnRhY3RfaWQgIT0KPiA+Pj4+LQkJCQkJaW5mby0+bXRvdWNoX2N1cl9jb250YWN0X2lk KSkgewo+ID4+Pj4rCQkJaWYgKGV2ZW50LT5tdG91Y2guY29udGFjdF9pZCAhPQo+ID4+Pj4rCQkJ CQlpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQpIHsKPiA+Pj4+ICAJCQkJaW5mby0+bXRvdWNo X2N1cl9jb250YWN0X2lkID0KPiA+Pj4+ICAJCQkJCWV2ZW50LT5tdG91Y2guY29udGFjdF9pZDsK PiA+Pj4+ICAJCQkJaW5wdXRfbXRfc2xvdChkZXYsIGV2ZW50LT5tdG91Y2guY29udGFjdF9pZCk7 Cj4gPj4+PkBAIC0zMjcsMTAgKzMyMSwxNSBAQCBzdGF0aWMgaW50IHhlbmtiZF9wcm9iZShzdHJ1 Y3QgeGVuYnVzX2RldmljZSAqZGV2LAo+ID4+Pj4gIAkJaW5wdXRfc2V0X2Fic19wYXJhbXMobXRv dWNoLCBBQlNfTVRfUFJFU1NVUkUsCj4gPj4+PiAgCQkJCSAgICAgMCwgMjU1LCAwLCAwKTsKPiA+ Pj4+LQkJaW5wdXRfbXRfaW5pdF9zbG90cyhtdG91Y2gsIG51bV9jb250LCAwKTsKPiA+Pj4+KwkJ cmV0ID0gaW5wdXRfbXRfaW5pdF9zbG90cyhtdG91Y2gsIG51bV9jb250LAo+ID4+Pj4rCQkJCUlO UFVUX01UX0RJUkVDVCB8IElOUFVUX01UX0RST1BfVU5VU0VEKTsKPiA+Pj4+KwkJaWYgKHJldCkg ewo+ID4+Pj4rCQkJaW5wdXRfZnJlZV9kZXZpY2UobXRvdWNoKTsKPiA+Pj4+KwkJCXhlbmJ1c19k ZXZfZmF0YWwoaW5mby0+eGJkZXYsIHJldCwKPiA+Pj4+KwkJCQkJICJpbnB1dF9tdF9pbml0X3Ns b3RzIik7Cj4gPj4+PisJCQlnb3RvIGVycm9yOwo+ID4+Pj4rCQl9Cj4gPj4+Pi0JCW10b3VjaF9z aXplW0tQQVJBTV9NVF9YXSA9IHdpZHRoOwo+ID4+Pj4tCQltdG91Y2hfc2l6ZVtLUEFSQU1fTVRf WV0gPSBoZWlnaHQ7Cj4gPj4+PiAgCQlpbmZvLT5tdG91Y2hfY3VyX2NvbnRhY3RfaWQgPSAtMTsK PiA+Pj4+ICAJCXJldCA9IGlucHV0X3JlZ2lzdGVyX2RldmljZShtdG91Y2gpOwo+ID4+Pj4tLSAK PiA+Pj4+Mi43LjQKPiA+Pj4+Cj4gPj5UaGFuayB5b3UsCj4gPj5PbGVrc2FuZHIKPiBEbWl0cnks IHRoYW5rIHlvdSBmb3IgY29tbWVudHMKPiBUaGUgYm90dG9tIGxpbmUgSSBzZWUgaXM6Cj4gIC0g bm8gc3VwcG9ydCBmb3IgUEVOIHRvb2wgYXQgdGhlIG1vbWVudAo+ICAtIG51bSBjb250YWN0cyA9 PSAxIGlzIE9LCj4gIC0gSSB3aWxsIG5vdCB1c2UgSU5QVVRfTVRfRFJPUF9VTlVTRUQKClNvdW5k cyBnb29kLgoKPiAKPiBJZiB0aGUgYWJvdmUgaXMgb2sgdG8geW91LCB0aGVuIEkgd2lsbCBzZW5k IGFub3RoZXIgdmVyc2lvbiBvZiB0aGUKPiBzZXJpZXMgKEJUVywgY2FuIEkgdXNlIHlvdXIgUkIg Zm9yIHRoZSBmaXJzdCBwYXRjaCB3aGljaAo+IHJlbW92ZXMgaGFyZC1jb2Rlcz8pCgpJIGFscmVh ZHkgYXBwbGllZCB0aGF0IG9uZSBhbmQgaXQgc2hvdWxkIGJlIGluIC1uZXh0IGFscmVhZHksIHRo ZXJlIGlzCm5vIG5lZWQgdG8gcmVzZW50IHRoZSBmaXJzdCBwYXRjaC4KClRoYW5rcy4KCi0tIApE bWl0cnkKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=