From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH v1 2/2] xen/kbdif: add multi-touch support Date: Fri, 20 Jan 2017 20:46:24 +0200 Message-ID: <08d813b2-9d21-ab62-514d-e17f669083da@gmail.com> References: <1484817891-4883-1-git-send-email-andr2000@gmail.com> <1484817891-4883-3-git-send-email-andr2000@gmail.com> <0aafb794-6d77-3397-ca26-1e0f96620a8e@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cUeCk-0001rx-PQ for xen-devel@lists.xenproject.org; Fri, 20 Jan 2017 18:46:31 +0000 Received: by mail-lf0-f67.google.com with SMTP id v186so9332508lfa.2 for ; Fri, 20 Jan 2017 10:46:28 -0800 (PST) In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini Cc: konrad.wilk@oracle.com, vlad.babchuk@gmail.com, andrii.anisov@gmail.com, olekstysh@gmail.com, al1img@gmail.com, xen-devel@lists.xenproject.org, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org T24gMDEvMjAvMjAxNyAwNzo1MiBQTSwgU3RlZmFubyBTdGFiZWxsaW5pIHdyb3RlOgo+IE9uIEZy aSwgMjAgSmFuIDIwMTcsIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+PiBPbiAwMS8y MC8yMDE3IDEyOjIyIEFNLCBTdGVmYW5vIFN0YWJlbGxpbmkgd3JvdGU6Cj4+PiBPbiBUaHUsIDE5 IEphbiAyMDE3LCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3cm90ZToKPj4+PiBGcm9tOiBPbGVr c2FuZHIgQW5kcnVzaGNoZW5rbyA8T2xla3NhbmRyX0FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4+ Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8T2xla3NhbmRy X0FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4+Pj4gLS0tCj4+Pj4gICAgeGVuL2luY2x1ZGUvcHVi bGljL2lvL2tiZGlmLmggfCAyMTYKPj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPj4+PiAgICAxIGZpbGUgY2hhbmdlZCwgMjE2IGluc2VydGlvbnMoKykKPj4+ Pgo+Pj4+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaW8va2JkaWYuaCBiL3hlbi9p bmNsdWRlL3B1YmxpYy9pby9rYmRpZi5oCj4+Pj4gaW5kZXggYzAwZmFhM2FmNWQyLi44ZDhiYTlh ZjFjYjEgMTAwNjQ0Cj4+Pj4gLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2lvL2tiZGlmLmgKPj4+ PiArKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW8va2JkaWYuaAo+Pj4+IEBAIC01Nyw2ICs1Nywx MiBAQAo+Pj4+ICAgICAqICAgICAgQmFja2VuZHMsIHdoaWNoIHN1cHBvcnQgcmVwb3J0aW5nIG9m IGFic29sdXRlIGNvb3JkaW5hdGVzIGZvcgo+Pj4+IHBvaW50ZXIKPj4+PiAgICAgKiAgICAgIGRl dmljZSBzaG91bGQgc2V0IHRoaXMgdG8gMS4KPj4+PiAgICAgKgo+Pj4+ICsgKiBmZWF0dXJlLW11 bHRpLXRvdWNoCj4+Pj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50Pgo+Pj4+ICsgKgo+ Pj4+ICsgKiAgICAgIEJhY2tlbmRzLCB3aGljaCBzdXBwb3J0IHJlcG9ydGluZyBvZiBtdWx0aS10 b3VjaCBldmVudHMKPj4+PiArICogICAgICBzaG91bGQgc2V0IHRoaXMgdG8gMS4KPj4+PiArICoK Pj4+PiAgICAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUG9pbnRlciBEZXZpY2UgUGFyYW1l dGVycwo+Pj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+ICAgICAqCj4+Pj4gICAgICog d2lkdGgKPj4+PiBAQCAtODcsNiArOTMsMTEgQEAKPj4+PiAgICAgKiAgICAgIFJlcXVlc3QgYmFj a2VuZCB0byByZXBvcnQgYWJzb2x1dGUgcG9pbnRlciBjb29yZGluYXRlcwo+Pj4+ICAgICAqICAg ICAgKFhFTktCRF9UWVBFX1BPUykgaW5zdGVhZCBvZiByZWxhdGl2ZSBvbmVzIChYRU5LQkRfVFlQ RV9NT1RJT04pLgo+Pj4+ICAgICAqCj4+Pj4gKyAqIHJlcXVlc3QtbXVsdGktdG91Y2gKPj4+PiAr ICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+Cj4+Pj4gKyAqCj4+Pj4gKyAqICAgICAgUmVx dWVzdCBiYWNrZW5kIHRvIHJlcG9ydCBtdWx0aS10b3VjaCBldmVudHMuCj4+Pj4gKyAqCj4+Pj4g ICAgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXF1ZXN0IFRyYW5zcG9ydCBQYXJhbWV0ZXJz Cj4+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+PiAgICAgKgo+Pj4+ICAgICAqIGV2ZW50 LWNoYW5uZWwKPj4+PiBAQCAtMTA2LDYgKzExNywzMCBAQAo+Pj4+ICAgICAqCj4+Pj4gICAgICog ICAgICBPQlNPTEVURSwgbm90IHJlY29tbWVuZGVkIGZvciB1c2UuCj4+Pj4gICAgICogICAgICBQ Rk4gb2YgdGhlIHNoYXJlZCBwYWdlLgo+Pj4+ICsgKgo+Pj4+ICsgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tIE11bHRpLXRvdWNoIERldmljZSBQYXJhbWV0ZXJzCj4+Pj4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPj4+PiArICoKPj4+PiArICogRXZlcnkgbXVsdGktdG91Y2ggaW5wdXQgZGV2aWNl IHVzZXMgYSBkZWRpY2F0ZWQgZXZlbnQgZnJvbnRlbmQvYmFja2VuZAo+Pj4+ICsgKiBjb25uZWN0 aW9uIGNvbmZpZ3VyZWQgdmlhIFhlblN0b3JlIHByb3BlcnRpZXMgdW5kZXIKPj4+PiArICogWEVO S0JEX1BBVEhfTVRPVUNIIGZvbGRlci4KPj4+IFRoaXMgc2VudGVuY2UgZG9lc24ndCBzZWVtIHRv IG1hdGNoIHRoZSByZXN0IG9mIHRoZSBwYXRjaDoKPj4gbGV0cyBicmVhayBpdCBpbnRvIHNtYWxs ZXIgcGFydHMKPj4+IGl0IGxvb2tzCj4+PiBsaWtlIG11bHRpLXRvdWNoIGRldmljZXMgdXNlIHRo ZSBzYW1lIHJpbmcgYW5kIGV2dGNobiB1c2VkIGJ5IHRoZQo+Pj4gcG9pbnRlciBhbmQga2V5Ym9h cmQuCj4+ICpFdmVyeSogbXVsdGktdG91Y2ggaW5wdXQgZGV2aWNlIHVzZXMgYSAqZGVkaWNhdGVk KiBldmVudCBmcm9udGVuZC9iYWNrZW5kCj4+ICpjb25uZWN0aW9uKgo+PiBTbywgaXQgaXMgY2xl YXJseSBzdGF0ZWQgdGhhdCB0aGVyZSBpcyBhIGRlZGljYXRlZC9zZXBhcmF0ZSBjb25uZWN0aW9u Cj4+ICh3aGljaCBjb25zaXN0cyBvZiBhIHJpbmcgYW5kIGNvcnJlc3BvbmRpbmcgZXZlbnQgY2hh bm5lbDogaGVyZSB3ZSBoYXZlCj4+IGFscmVhZHkgZGlzY3Vzc2VkIHRoaXMgcGFydDogaHR0cDov L21hcmMuaW5mby8/bD14ZW4tZGV2ZWwmbT0xNDg0MTI3MzE0Mjg2ODYpOgo+Pgo+Pj4+Pj4gKyAq IEV2ZXJ5IG11bHRpLXRvdWNoIGlucHV0IGRldmljZSB1c2VzIGEgZGVkaWNhdGVkIGV2ZW50IHJp bmcgYW5kIGlzCj4+Pj4+IEZvciBjbGFyaXR5IEkgd291bGQgc2F5ICJFdmVyeSBtdWx0aS10b3Vj aCBpbnB1dCBkZXZpY2UgdXNlcyBhIGRlZGljYXRlZAo+Pj4+PiBmcm9udGVuZC9iYWNrZW5kIGNv bm5lY3Rpb24iLiBUaGF0IGluY2x1ZGVzIGEgcmluZywgYW4gZXZlbnQgY2hhbm5lbCwKPj4+Pj4g YW5kIHhlbnN0b3JlIGVudHJpZXMuCj4+Cj4+PiBBbHNvLCBpdCBpcyBub3QgY2xlYXIgd2hldGhl ciBtdWx0aXBsZSBtdWx0aXRvdWNoIGRldmljZXMgYXJlIHN1cHBvcnRlZAo+Pj4gd2l0aCBhIHNp bmdsZSBmcm9udGVuZC9iYWNrZW5kIGNvbm5lY3Rpb24gKGFzIHlvdSBkZXNjcmliZWQgaW4KPj4+ IGh0dHA6Ly9tYXJjLmluZm8vP2w9eGVuLWRldmVsJm09MTQ4NDEyNzMxNDI4Njg2KSBvciBub3Qu IFBsZWFzZSBjbGFyaWZ5Lgo+PiBTYW1lIGFzIGFib3ZlOgo+Pgo+PiAqRXZlcnkqIG11bHRpLXRv dWNoIGlucHV0IGRldmljZSB1c2VzIGEgKmRlZGljYXRlZCogZXZlbnQgZnJvbnRlbmQvYmFja2Vu ZAo+PiAqY29ubmVjdGlvbioKPj4KPj4+IElmIG9ubHkgb25lIGRldmljZSBpcyBzdXBwb3J0ZWQs IGRvIHdlIG5lZWQgYSBYRU5LQkRfUEFUSF9NVE9VQ0ggZm9sZGVyPwo+Pj4KPj4gRm9yIGNvbnNp c3RlbmN5IGFuZCBzaW1wbGljaXR5OiBhdAo+PiBodHRwOi8vbWFyYy5pbmZvLz9sPXhlbi1kZXZl bCZtPTE0ODQxMjczMTQyODY4NiBJIGhhdmUgYW4gZXhhbXBsZSBvZiBob3cKPj4gWGVuU3RvcmUg ZW50cmllcyBsb29rIGxpa2UuIElmIHlvdSBkZWZpbmUgbXVsdGlwbGUgbXRvdWNoIGRldmljZXMg dGhlbiB5b3UnbGwKPj4gaXRlcmF0ZSBvdmVyIGZvbGRlciBjb250ZW50cywgZS5nLgo+Pgo+PiAv bG9jYWwvZG9tYWluLzExL2RldmljZS92a2JkLzAvbXRvdWNoLzAvd2lkdGggPSAiMzIwMCIKPj4g L2xvY2FsL2RvbWFpbi8xMS9kZXZpY2UvdmtiZC8wL210b3VjaC8xL3dpZHRoID0gIjY0MDAiCj4+ Cj4+IFNvLCB5b3UnbGwgaGF2ZSBzb21ldGhpbmcgbGlrZSBmb3IgKGkgPSAwOyBpIDwgbnVtX210 b3VjaF9kZXZpY2VzOyBpKyspIHsKPj4gcHJvY2VzcyhpKTsgfSBJZiB5b3UgaGF2ZSBhIHNpbmds ZSBtdG91Y2ggZGV2aWNlIG5vdGhpbmcgY2hhbmdlcy4gVGh1cywgSSBzZWUKPj4gbm8gcmVhc29u IGluIG1ha2luZyBhbnkgZGlmZmVyZW5jZSBmb3Igc2luZ2xlIG9yIG11bHRpcGxlLWRldmljZXMu Cj4gQWxsIHJpZ2h0LiBJIGdvdCBjb25mdXNlZCBiZWNhdXNlIEkgcmVhZCBmaXJzdCB0aGUgb3Ro ZXIgZW1haWwgd2hlcmUgeW91Cj4gc3RpbGwgc3VnZ2VzdGVkIHRvIHVzZSB0aGUgb3RoZXIgYXBw cm9hY2guIFNvcnJ5LiBUaGUgd29yZGluZyBpcyBjbGVhcgo+IGVub3VnaC4KTm8gcHJvYmxlbSwg Z2xhZCB3ZSBhcmUgb24gdGhlIHNhbWUgcGFnZSBub3cKPiBBc2lkZSBmcm9tIGNsYXJpdHksIFhF TktCRF9QQVRIX01UT1VDSCBpcyBpbXBvcnRhbnQgdG8gZGlzdGluZ3Vpc2ggdGhlCj4gd2lkdGgg YW5kIGhlaWdodCBwYXJhbWV0ZXJzIG9mIHRoZSBtdG91Y2ggZGV2aWNlIGZyb20gdGhlIG9uZXMg b2YgdGhlCj4gcG9pbnRlcnMgZGV2aWNlLCBpcyB0aGF0IHJpZ2h0PwpFeGFjdGx5LiBBbHNvIGZv ciByaW5nLXJlZiBhbmQgZXZlbnQtY2hhbm5lbAo+IFRoaXMgcGF0Y2ggaXMgT0sgYXMgaXMuCj4K PiBSZXZpZXdlZC1ieTogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3Jn Pgo+ClRoYW5rIHlvdSwKY2FuIEkgYWxzbyBwdXQgdGhpcyAiUmV2aWV3ZWQtYnkiIGludG8gdGhl IHBhdGNoPwoKQW55d2F5cywgSSBoYXZlIHRvIHdhaXQgZm9yIHNvbWUgb3RoZXIgY29tbWVudHMg aWYgYW55CmFuZCBwdWJsaXNoIGFub3RoZXIgdmVyc2lvbiBvZiB0aGUgc2VyaWVzIHdpdGgKY29t bWVudHMgYWRkcmVzc2VkICgidGhlIiBpbiB0aGUgcHJldmlvdXMgcGF0Y2gpCj4+Pj4gVGhlIHZh bHVlcyBiZWxvdyBhcmUgcGVyIGVtdWxhdGVkIG11bHRpLXRvdWNoCj4+Pj4gKyAqIGlucHV0IGRl dmljZToKPj4+PiArICoKPj4+PiArICogbnVtLWNvbnRhY3RzCj4+Pj4gKyAqICAgICAgVmFsdWVz OiAgICAgICAgIDx1aW50Pgo+Pj4+ICsgKgo+Pj4+ICsgKiAgICAgIE51bWJlciBvZiBzaW11bHRh bmVvdXMgdG91Y2hlcyByZXBvcnRlZC4KPj4+PiArICoKPj4+PiArICogd2lkdGgKPj4+PiArICog ICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+Cj4+Pj4gKyAqCj4+Pj4gKyAqICAgICAgV2lkdGgg b2YgdGhlIHRvdWNoIGFyZWEgdG8gYmUgdXNlZCBieSB0aGUgZnJvbnRlbmQKPj4+PiArICogICAg ICB3aGlsZSByZXBvcnRpbmcgaW5wdXQgZXZlbnRzLCBwaXhlbHMsIFswOyBVSU5UMzJfTUFYXS4K Pj4+PiArICoKPj4+PiArICogaGVpZ2h0Cj4+Pj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1 aW50Pgo+Pj4+ICsgKgo+Pj4+ICsgKiAgICAgIEhlaWdodCBvZiB0aGUgdG91Y2ggYXJlYSB0byBi ZSB1c2VkIGJ5IHRoZSBmcm9udGVuZAo+Pj4+ICsgKiAgICAgIHdoaWxlIHJlcG9ydGluZyBpbnB1 dCBldmVudHMsIHBpeGVscywgWzA7IFVJTlQzMl9NQVhdLgo+Pj4+ICAgICAqLwo+Pj4+ICAgICAg LyoKPj4+PiBAQCAtMTE2LDYgKzE1MSwxNiBAQAo+Pj4+ICAgICNkZWZpbmUgWEVOS0JEX1RZUEVf UkVTRVJWRUQgICAgICAgICAgIDIKPj4+PiAgICAjZGVmaW5lIFhFTktCRF9UWVBFX0tFWSAgICAg ICAgICAgICAgICAzCj4+Pj4gICAgI2RlZmluZSBYRU5LQkRfVFlQRV9QT1MgICAgICAgICAgICAg ICAgNAo+Pj4+ICsjZGVmaW5lIFhFTktCRF9UWVBFX01UT1VDSCAgICAgICAgICAgICA1Cj4+Pj4g Kwo+Pj4+ICsvKiBNdWx0aS10b3VjaCBldmVudCBzdWItY29kZXMgKi8KPj4+PiArCj4+Pj4gKyNk ZWZpbmUgWEVOS0JEX01UX0VWX0RPV04gICAgICAgICAgICAgIDAKPj4+PiArI2RlZmluZSBYRU5L QkRfTVRfRVZfVVAgICAgICAgICAgICAgICAgMQo+Pj4+ICsjZGVmaW5lIFhFTktCRF9NVF9FVl9N T1RJT04gICAgICAgICAgICAyCj4+Pj4gKyNkZWZpbmUgWEVOS0JEX01UX0VWX1NZTiAgICAgICAg ICAgICAgIDMKPj4+PiArI2RlZmluZSBYRU5LQkRfTVRfRVZfU0hBUEUgICAgICAgICAgICAgNAo+ Pj4+ICsjZGVmaW5lIFhFTktCRF9NVF9FVl9PUklFTlQgICAgICAgICAgICA1Cj4+Pj4gICAgICAv Kgo+Pj4+ICAgICAqIENPTlNUQU5UUywgWEVOU1RPUkUgRklFTEQgQU5EIFBBVEggTkFNRSBTVFJJ TkdTLCBIRUxQRVJTLgo+Pj4+IEBAIC0xMjQsMTEgKzE2OSwxNyBAQAo+Pj4+ICAgICNkZWZpbmUg WEVOS0JEX0RSSVZFUl9OQU1FICAgICAgICAgICAgICJ2a2JkIgo+Pj4+ICAgICAgI2RlZmluZSBY RU5LQkRfRklFTERfRkVBVF9BQlNfUE9JTlRFUiAgImZlYXR1cmUtYWJzLXBvaW50ZXIiCj4+Pj4g KyNkZWZpbmUgWEVOS0JEX0ZJRUxEX0ZFQVRfTVRPVUNIICAgICAgICJmZWF0dXJlLW11bHRpLXRv dWNoIgo+Pj4+ICAgICNkZWZpbmUgWEVOS0JEX0ZJRUxEX1JFUV9BQlNfUE9JTlRFUiAgICJyZXF1 ZXN0LWFicy1wb2ludGVyIgo+Pj4+ICsjZGVmaW5lIFhFTktCRF9GSUVMRF9SRVFfTVRPVUNIICAg ICAgICAicmVxdWVzdC1tdWx0aS10b3VjaCIKPj4+PiAgICAjZGVmaW5lIFhFTktCRF9GSUVMRF9S SU5HX0dSRUYgICAgICAgICAicGFnZS1ncmVmIgo+Pj4+ICAgICNkZWZpbmUgWEVOS0JEX0ZJRUxE X0VWVF9DSEFOTkVMICAgICAgICJldmVudC1jaGFubmVsIgo+Pj4+ICAgICNkZWZpbmUgWEVOS0JE X0ZJRUxEX1dJRFRIICAgICAgICAgICAgICJ3aWR0aCIKPj4+PiAgICAjZGVmaW5lIFhFTktCRF9G SUVMRF9IRUlHSFQgICAgICAgICAgICAiaGVpZ2h0Igo+Pj4+ICsjZGVmaW5lIFhFTktCRF9GSUVM RF9OVU1fQ09OVEFDVFMgICAgICAibnVtLWNvbnRhY3RzIgo+Pj4+ICsKPj4+PiArLyogUGF0aCBl bnRyaWVzICovCj4+Pj4gKyNkZWZpbmUgWEVOS0JEX1BBVEhfTVRPVUNIICAgICAgICAgICAgICJt dG91Y2giCj4+Pj4gICAgICAvKiBPQlNPTEVURSwgbm90IHJlY29tbWVuZGVkIGZvciB1c2UgKi8K Pj4+PiAgICAjZGVmaW5lIFhFTktCRF9GSUVMRF9SSU5HX1JFRiAgICAgICAgICAicGFnZS1yZWYi Cj4+Pj4gQEAgLTI0OCw2ICsyOTksMTcwIEBAIHN0cnVjdCB4ZW5rYmRfcG9zaXRpb24KPj4+PiAg ICAgICAgaW50MzJfdCByZWxfejsKPj4+PiAgICB9Owo+Pj4+ICAgICsvKgo+Pj4+ICsgKiBNdWx0 aS10b3VjaCBldmVudCBhbmQgaXRzIHN1Yi10eXBlcwo+Pj4+ICsgKgo+Pj4+ICsgKiBBbGwgbXVs dGktdG91Y2ggZXZlbnQgcGFja2V0cyBoYXZlIGNvbW1vbiBoZWFkZXI6Cj4+Pj4gKyAqCj4+Pj4g KyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAg ICAgICAgMwo+Pj4+IG9jdGV0Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICBfVFlQ RV9NVE9VQ0ggIHwgICBldmVudF90eXBlICAgfCAgIGNvbnRhY3RfaWQgICB8ICAgIHJlc2VydmVk ICAgIHwKPj4+PiA0Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK Pj4+PiA4Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKgo+Pj4+ICsgKiBldmVudF90eXBl IC0gdW50OF90LCBtdWx0aS10b3VjaCBldmVudCBzdWItdHlwZSwgWEVOS0JEX01UX0VWXz8/Pwo+ Pj4+ICsgKiBjb250YWN0X2lkIC0gdW50OF90LCBJRCBvZiB0aGUgY29udGFjdAo+Pj4gSWYgbXVs dGlwbGUgZGV2aWNlcyBhcmUgc3VwcG9ydGVkLCBkb24ndCB3ZSBuZWVkIGEgcGVyIG11bHRpdG91 Y2ggZGV2aWNlCj4+PiBJRCB0byBpZGVudGlmeSB0aGUgc291cmNlPwo+Pj4KPj4gQWdhaW4sICpF dmVyeSogbXVsdGktdG91Y2ggaW5wdXQgZGV2aWNlIHVzZXMgYSAqZGVkaWNhdGVkKiBldmVudAo+ PiBmcm9udGVuZC9iYWNrZW5kICpjb25uZWN0aW9uKiBUaHVzLCBldmVudHMgYXJlIHBhc3NlZCB3 L28gaW5kaWNlcyB2aWEKPj4gZGVkaWNhdGVkIGNoYW5uZWxzCj4+Pj4gKyAqIFRvdWNoIGludGVy YWN0aW9ucyBjYW4gY29uc2lzdCBvZiBvbmUgb3IgbW9yZSBjb250YWN0cy4KPj4+PiArICogRm9y IGVhY2ggY29udGFjdCwgYSBzZXJpZXMgb2YgZXZlbnRzIGlzIGdlbmVyYXRlZCwgc3RhcnRpbmcK Pj4+PiArICogd2l0aCBhIGRvd24gZXZlbnQsIGZvbGxvd2VkIGJ5IHplcm8gb3IgbW9yZSBtb3Rp b24gZXZlbnRzLAo+Pj4+ICsgKiBhbmQgZW5kaW5nIHdpdGggYW4gdXAgZXZlbnQuIEV2ZW50cyBy ZWxhdGluZyB0byB0aGUgc2FtZQo+Pj4+ICsgKiBjb250YWN0IHBvaW50IGNhbiBiZSBpZGVudGlm aWVkIGJ5IHRoZSBJRCBvZiB0aGUgc2VxdWVuY2U6IGNvbnRhY3QgSUQuCj4+Pj4gKyAqIENvbnRh Y3QgSUQgbWF5IGJlIHJldXNlZCBhZnRlciBYRU5LQkRfTVRfRVZfVVAgZXZlbnQgYW5kCj4+Pj4g KyAqIGlzIGluIHRoZSBbMDsgWEVOS0JEX0ZJRUxEX05VTV9DT05UQUNUUyAtIDFdIHJhbmdlLgo+ Pj4+ICsgKgo+Pj4+ICsgKiBGb3IgZnVydGhlciBpbmZvcm1hdGlvbiBwbGVhc2UgcmVmZXIgdG8g ZG9jdW1lbnRhdGlvbiBvbiBXYXlsYW5kIFsxXSwKPj4+PiArICogTGludXggWzJdIGFuZCBXaW5k b3dzIFszXSBtdWx0aS10b3VjaCBzdXBwb3J0Lgo+Pj4+ICsgKgo+Pj4+ICsgKiBbMV0KPj4+PiBo dHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3dheWxhbmQvd2F5bGFuZC90cmVlL3Byb3RvY29s L3dheWxhbmQueG1sCj4+Pj4gKyAqIFsyXQo+Pj4+IGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9j L0RvY3VtZW50YXRpb24vaW5wdXQvbXVsdGktdG91Y2gtcHJvdG9jb2wudHh0Cj4+Pj4gKyAqIFsz XSBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2pqMTUxNTY0KHY9dnMu ODUpLmFzcHgKPj4+PiArICoKPj4+PiArICoKPj4+PiArICogTXVsdGktdG91Y2ggZG93biBldmVu dCAtIHNlbnQgd2hlbiBhIG5ldyB0b3VjaCBpcyBtYWRlOiB0b3VjaCBpcwo+Pj4+IGFzc2lnbmVk Cj4+Pj4gKyAqIGEgdW5pcXVlIGNvbnRhY3QgSUQsIHNlbnQgd2l0aCB0aGlzIGFuZCBjb25zZXF1 ZW50IGV2ZW50cyByZWxhdGVkCj4+Pj4gKyAqIHRvIHRoaXMgdG91Y2guCj4+Pj4gKyAqICAgICAg ICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMwo+ Pj4+IG9jdGV0Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICBfVFlQRV9NVE9VQ0gg IHwgICBfTVRfRVZfRE9XTiAgfCAgIGNvbnRhY3RfaWQgICB8ICAgIHJlc2VydmVkICAgIHwKPj4+ PiA0Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+PiA4Cj4+ Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFic194ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+PiAxMgo+Pj4+ICsg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKPj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh YnNfeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4gMTYKPj4+PiArICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVk ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+IDIwCj4+Pj4gKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKwo+Pj4+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfAo+Pj4+IDQwCj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKgo+Pj4+ ICsgKiBhYnNfeCAtIGludDMyX3QsIGFic29sdXRlIFggcG9zaXRpb24sIGluIHBpeGVscwo+Pj4+ ICsgKiBhYnNfeSAtIGludDMyX3QsIGFic29sdXRlIFkgcG9zaXRpb24sIGluIHBpeGVscwo+Pj4+ ICsgKgo+Pj4+ICsgKiBNdWx0aS10b3VjaCBjb250YWN0IHJlbGVhc2UgZXZlbnQKPj4+PiArICog ICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAg ICAzCj4+Pj4gb2N0ZXQKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwgIF9UWVBFX01U T1VDSCAgfCAgX01UX0VWX1VQICAgICB8ICAgY29udGFjdF9pZCAgIHwgICAgcmVzZXJ2ZWQgICAg fAo+Pj4+IDQKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+ IDgKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+Pj4+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKPj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2 ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4gNDAKPj4+PiArICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCj4+Pj4gKyAqCj4+Pj4gKyAqIE11bHRpLXRvdWNoIG1vdGlvbiBldmVudAo+Pj4+ICsg KiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAg ICAgIDMKPj4+PiBvY3RldAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICogfCAgX1RZUEVf TVRPVUNIICB8ICBfTVRfRVZfTU9USU9OIHwgICBjb250YWN0X2lkICAgfCAgICByZXNlcnZlZCAg ICB8Cj4+Pj4gNAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+ Pj4gOAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICogfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhYnNfeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4gMTIK Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWJzX3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+IDE2Cj4+Pj4g KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+PiAyMAo+Pj4+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKPj4+PiArICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwKPj4+PiA0MAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiAr ICoKPj4+PiArICogYWJzX3ggLSBpbnQzMl90LCBhYnNvbHV0ZSBYIHBvc2l0aW9uLCBpbiBwaXhl bHMsCj4+Pj4gKyAqIGFic195IC0gaW50MzJfdCwgYWJzb2x1dGUgWSBwb3NpdGlvbiwgaW4gcGl4 ZWxzLAo+Pj4+ICsgKgo+Pj4+ICsgKiBNdWx0aS10b3VjaCBpbnB1dCBzeW5jaHJvbml6YXRpb24g ZXZlbnQgLSBzaG93cyBlbmQgb2YgYSBzZXQgb2YgZXZlbnRzCj4+Pj4gKyAqIHdoaWNoIGxvZ2lj YWxseSBiZWxvbmcgdG9nZXRoZXIuCj4+Pj4gKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAx ICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMwo+Pj4+IG9jdGV0Cj4+Pj4gKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICBfVFlQRV9NVE9VQ0ggIHwgIF9NVF9FVl9TWU4gICAgfCAg IGNvbnRhY3RfaWQgICB8ICAgIHJlc2VydmVkICAgIHwKPj4+PiA0Cj4+Pj4gKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+PiA4Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ Pj4+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL3wKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfAo+Pj4+IDQwCj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKgo+Pj4+ICsgKiBN dWx0aS10b3VjaCBzaGFwZSBldmVudCAtIHRvdWNoIHBvaW50J3Mgc2hhcGUgaGFzIGNoYW5nZWQg aXRzIHNoYXBlLgo+Pj4+ICsgKiBTaGFwZSBpcyBhcHByb3hpbWF0ZWQgYnkgYW4gZWxsaXBzZSB0 aHJvdWdoIHRoZSBtYWpvciBhbmQgbWlub3IgYXhpcwo+Pj4+ICsgKiBsZW5ndGhzOiBtYWpvciBp cyB0aGUgbG9uZ2VyIGRpYW1ldGVyIG9mIHRoZSBlbGxpcHNlIGFuZCBtaW5vciBpcyB0aGUKPj4+ PiArICogc2hvcnRlciBvbmUuIENlbnRlciBvZiB0aGUgZWxsaXBzZSBpcyByZXBvcnRlZCB2aWEK Pj4+PiArICogWEVOS0JEX01UX0VWX0RPV04vWEVOS0JEX01UX0VWX01PVElPTiBldmVudHMuCj4+ Pj4gKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAg ICAgICAgICAgMwo+Pj4+IG9jdGV0Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICBf VFlQRV9NVE9VQ0ggIHwgIF9NVF9FVl9TSEFQRSAgfCAgIGNvbnRhY3RfaWQgICB8ICAgIHJlc2Vy dmVkICAgIHwKPj4+PiA0Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwKPj4+PiA4Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1ham9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+ PiAxMgo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICogfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtaW5vciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4gMTYK Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+IDIwCj4+Pj4g KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPj4+PiArICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+IDQwCj4+Pj4gKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ Pj4+ICsgKgo+Pj4+ICsgKiBtYWpvciAtIHVudDMyX3QsIGxlbmd0aCBvZiB0aGUgbWFqb3IgYXhp cywgcGl4ZWxzCj4+Pj4gKyAqIG1pbm9yIC0gdW50MzJfdCwgbGVuZ3RoIG9mIHRoZSBtaW5vciBh eGlzLCBwaXhlbHMKPj4+PiArICoKPj4+PiArICogTXVsdGktdG91Y2ggb3JpZW50YXRpb24gZXZl bnQgLSB0b3VjaCBwb2ludCdzIHNoYXBlIGhhcyBjaGFuZ2VkCj4+Pj4gKyAqIGl0cyBvcmllbnRh dGlvbjogY2FsY3VsYXRlZCBhcyBhIGNsb2Nrd2lzZSBhbmdsZSBiZXR3ZWVuIHRoZSBtYWpvcgo+ Pj4+IGF4aXMKPj4+PiArICogb2YgdGhlIGVsbGlwc2UgYW5kIHBvc2l0aXZlIFkgYXhpcyBpbiBk ZWdyZWVzLCBbLTE4MDsgKzE4MF0uCj4+Pj4gKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAx ICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMwo+Pj4+IG9jdGV0Cj4+Pj4gKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICBfVFlQRV9NVE9VQ0ggIHwgIF9NVF9FVl9PUklFTlQgfCAg IGNvbnRhY3RfaWQgICB8ICAgIHJlc2VydmVkICAgIHwKPj4+PiA0Cj4+Pj4gKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+PiA4Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ Pj4+ICsgKiB8ICAgICAgICAgICBvcmllbnRhdGlvbiAgICAgICAgICAgfCAgICAgICAgICAgIHJl c2VydmVkICAgICAgICAgICAgIHwKPj4+PiAxMgo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiAr ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8Cj4+Pj4gMTYKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvfAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+ Pj4gNDAKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqCj4+Pj4gKyAqIG9yaWVudGF0aW9u IC0gaW50MTZfdCwgY2xvY2t3aXNlIGFuZ2xlIG9mIHRoZSBtYWpvciBheGlzCj4+Pj4gKyAqLwo+ Pj4+ICsKPj4+PiArc3RydWN0IHhlbmtiZF9tdG91Y2ggewo+Pj4+ICsgICAgdWludDhfdCB0eXBl OyAgICAgICAgICAgICAvKiBYRU5LQkRfVFlQRV9NVE9VQ0ggKi8KPj4+PiArICAgIHVpbnQ4X3Qg ZXZlbnRfdHlwZTsgICAgICAgLyogWEVOS0JEX01UX0VWXz8/PyAqLwo+Pj4+ICsgICAgdWludDhf dCBjb250YWN0X2lkOwo+Pj4+ICsgICAgdWludDhfdCByZXNlcnZlZFs1XTsgICAgICAvKiByZXNl cnZlZCBmb3IgdGhlIGZ1dHVyZSB1c2UgKi8KPj4+PiArICAgIHVuaW9uIHsKPj4+PiArICAgICAg ICBzdHJ1Y3Qgewo+Pj4+ICsgICAgICAgICAgICBpbnQzMl90IGFic194OyAgICAvKiBhYnNvbHV0 ZSBYIHBvc2l0aW9uLCBwaXhlbHMgKi8KPj4+PiArICAgICAgICAgICAgaW50MzJfdCBhYnNfeTsg ICAgLyogYWJzb2x1dGUgWSBwb3NpdGlvbiwgcGl4ZWxzICovCj4+Pj4gKyAgICAgICAgfSBwb3M7 Cj4+Pj4gKyAgICAgICAgc3RydWN0IHsKPj4+PiArICAgICAgICAgICAgdWludDMyX3QgbWFqb3I7 ICAgLyogbGVuZ3RoIG9mIHRoZSBtYWpvciBheGlzLCBwaXhlbHMgKi8KPj4+PiArICAgICAgICAg ICAgdWludDMyX3QgbWlub3I7ICAgLyogbGVuZ3RoIG9mIHRoZSBtaW5vciBheGlzLCBwaXhlbHMg Ki8KPj4+PiArICAgICAgICB9IHNoYXBlOwo+Pj4+ICsgICAgICAgIGludDE2X3Qgb3JpZW50YXRp b247ICAvKiBjbG9ja3dpc2UgYW5nbGUgb2YgdGhlIG1ham9yIGF4aXMgKi8KPj4+PiArICAgIH0g dTsKPj4+PiArfTsKPj4+PiArCj4+Pj4gICAgI2RlZmluZSBYRU5LQkRfSU5fRVZFTlRfU0laRSA0 MAo+Pj4+ICAgICAgdW5pb24geGVua2JkX2luX2V2ZW50Cj4+Pj4gQEAgLTI1Niw2ICs0NzEsNyBA QCB1bmlvbiB4ZW5rYmRfaW5fZXZlbnQKPj4+PiAgICAgICAgc3RydWN0IHhlbmtiZF9tb3Rpb24g bW90aW9uOwo+Pj4+ICAgICAgICBzdHJ1Y3QgeGVua2JkX2tleSBrZXk7Cj4+Pj4gICAgICAgIHN0 cnVjdCB4ZW5rYmRfcG9zaXRpb24gcG9zOwo+Pj4+ICsgICAgc3RydWN0IHhlbmtiZF9tdG91Y2gg bXRvdWNoOwo+Pj4+ICAgICAgICBjaGFyIHBhZFtYRU5LQkRfSU5fRVZFTlRfU0laRV07Cj4+Pj4g ICAgfTsKPj4+PiAgICAKPj4+PiAtLSAKPj4+PiAyLjcuNAo+Pj4+CgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==