From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: Re: [PATCH v2 5/5] ALSA: xen-front: Implement ALSA virtual sound driver Date: Tue, 17 Apr 2018 14:32:31 +0200 Message-ID: References: <20180416062453.24743-1-andr2000@gmail.com> <20180416062453.24743-6-andr2000@gmail.com> <06ce3d52-5a38-dd1e-90b7-7b9414b6819d@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1f8Pml-0001GU-Sq for xen-devel@lists.xenproject.org; Tue, 17 Apr 2018 12:32:35 +0000 In-Reply-To: <06ce3d52-5a38-dd1e-90b7-7b9414b6819d@gmail.com> Content-Language: de-DE List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Oleksandr Andrushchenko , xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, alsa-devel@alsa-project.org, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, perex@perex.cz, tiwai@suse.com Cc: Oleksandr Andrushchenko List-Id: xen-devel@lists.xenproject.org T24gMTcvMDQvMTggMTQ6MjYsIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+IE9uIDA0 LzE3LzIwMTggMDI6MzIgUE0sIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+PiBPbiAw NC8xNi8yMDE4IDA1OjA5IFBNLCBKdWVyZ2VuIEdyb3NzIHdyb3RlOgo+Pj4gT24gMTYvMDQvMTgg MDg6MjQsIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+Pj4+IEZyb206IE9sZWtzYW5k ciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPj4+Pgo+ Pj4+IEltcGxlbWVudCBlc3NlbnRpYWwgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHNvdW5kIGRyaXZl cjoKPj4+PiDCoMKgIC0gaW50cm9kdWNlIHJlcXVpcmVkIGRhdGEgc3RydWN0dXJlcwo+Pj4+IMKg wqAgLSBoYW5kbGUgZHJpdmVyIHJlZ2lzdHJhdGlvbgo+Pj4+IMKgwqAgLSBoYW5kbGUgc291bmQg Y2FyZCByZWdpc3RyYXRpb24KPj4+PiDCoMKgIC0gcmVnaXN0ZXIgc291bmQgZHJpdmVyIG9uIGJh Y2tlbmQgY29ubmVjdGlvbgo+Pj4+IMKgwqAgLSByZW1vdmUgc291bmQgZHJpdmVyIG9uIGJhY2tl bmQgZGlzY29ubmVjdAo+Pj4+Cj4+Pj4gSW5pdGlhbGl6ZSB2aXJ0dWFsIHNvdW5kIGNhcmQgd2l0 aCBzdHJlYW1zIGFjY29yZGluZyB0byB0aGUKPj4+PiBYZW4gc3RvcmUgY29uZmlndXJhdGlvbi4K Pj4+Pgo+Pj4+IEltcGxlbWVudCBBTFNBIGRyaXZlciBvcGVyYXRpb25zIGluY2x1ZGluZzoKPj4+ PiAtIG1hbmFnZSBmcm9udGVuZC9iYWNrZW5kIHNoYXJlZCBidWZmZXJzCj4+Pj4gLSBtYW5hZ2Ug WGVuIGJ1cyBldmVudCBjaGFubmVsIHN0YXRlcwo+Pj4+Cj4+Pj4gSW1wbGVtZW50IHJlcXVlc3Rz IGZyb20gZnJvbnQgdG8gYmFjayBmb3IgQUxTQQo+Pj4+IFBDTSBvcGVyYXRpb25zLgo+Pj4+IMKg IC0gcmVwb3J0IEFMU0EgcGVyaW9kIGVsYXBzZWQgZXZlbnQ6IGhhbmRsZSBYRU5TTkRfRVZUX0NV Ul9QT1MKPj4+PiDCoMKgwqAgbm90aWZpY2F0aW9ucyBmcm9tIHRoZSBiYWNrZW5kIHdoZW4gc3Ry ZWFtIHBvc2l0aW9uIGFkdmFuY2VzCj4+Pj4gwqDCoMKgIGR1cmluZyBwbGF5YmFjay9jYXB0dXJl LiBUaGUgZXZlbnQgY2FycmllcyBhIHZhbHVlIG9mIGhvdwo+Pj4+IMKgwqDCoCBtYW55IG9jdGV0 cyB3ZXJlIHBsYXllZC9jYXB0dXJlZCBhdCB0aGUgdGltZSBvZiB0aGUgZXZlbnQuCj4+Pj4gwqAg LSBpbXBsZW1lbnQgZXhwbGljaXQgc3RyZWFtIHBhcmFtZXRlciBuZWdvdGlhdGlvbiBiZXR3ZWVu Cj4+Pj4gwqDCoMKgIGJhY2tlbmQgYW5kIGZyb250ZW5kOiBoYW5kbGUgWEVOU05EX09QX0hXX1BB UkFNX1FVRVJZIHJlcXVlc3QKPj4+PiDCoMKgwqAgdG8gcmVhZC91cGRhdGUgY29uZmlndXJhdGlv biBzcGFjZSBmb3IgdGhlIHBhcmFtZXRlciBnaXZlbjoKPj4+PiDCoMKgwqAgcmVxdWVzdCBwYXNz ZXMgZGVzaXJlZCBwYXJhbWV0ZXIgaW50ZXJ2YWwgYW5kIHRoZSByZXNwb25zZSB0bwo+Pj4+IMKg wqDCoCB0aGlzIHJlcXVlc3QgcmV0dXJucyBtaW4vbWF4IGludGVydmFsIGZvciB0aGUgcGFyYW1l dGVyIHRvIGJlIHVzZWQuCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgQW5kcnVz aGNoZW5rbwo+Pj4+IDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPj4+PiAtLS0K Pj4+PiDCoCBzb3VuZC94ZW4vTWFrZWZpbGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fMKgwqAgMyArLQo+Pj4+IMKgIHNvdW5kL3hlbi94ZW5fc25kX2Zyb250LmPCoMKgwqDCoMKgwqDC oMKgIHwgMTkzICsrKysrKysrLQo+Pj4+IMKgIHNvdW5kL3hlbi94ZW5fc25kX2Zyb250LmjCoMKg wqDCoMKgwqDCoMKgIHzCoCAyOCArKwo+Pj4+IMKgIHNvdW5kL3hlbi94ZW5fc25kX2Zyb250X2Fs c2EuY8KgwqDCoCB8IDgzMAo+Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4+Pj4gwqAgc291bmQveGVuL3hlbl9zbmRfZnJvbnRfYWxzYS5owqDCoMKgIHzCoCAyMyAr Kwo+Pj4+IMKgIHNvdW5kL3hlbi94ZW5fc25kX2Zyb250X2V2dGNobmwuYyB8wqDCoCA2ICstCj4+ Pj4gwqAgNiBmaWxlcyBjaGFuZ2VkLCAxMDgwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p Cj4+Pj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNvdW5kL3hlbi94ZW5fc25kX2Zyb250X2Fsc2Eu Ywo+Pj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBzb3VuZC94ZW4veGVuX3NuZF9mcm9udF9hbHNh LmgKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9zb3VuZC94ZW4vTWFrZWZpbGUgYi9zb3VuZC94ZW4v TWFrZWZpbGUKPj4+PiBpbmRleCBmMDI4YmMzMGFmNWQuLjFlNjQ3MGVjYzJmMiAxMDA2NDQKPj4+ PiAtLS0gYS9zb3VuZC94ZW4vTWFrZWZpbGUKPj4+PiArKysgYi9zb3VuZC94ZW4vTWFrZWZpbGUK Pj4+PiBAQCAtMyw2ICszLDcgQEAKPj4+PiDCoCBzbmRfeGVuX2Zyb250LW9ianMgOj0geGVuX3Nu ZF9mcm9udC5vIFwKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeGVuX3NuZF9m cm9udF9jZmcubyBcCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhlbl9zbmRf ZnJvbnRfZXZ0Y2hubC5vIFwKPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeGVuX3Nu ZF9mcm9udF9zaGJ1Zi5vCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhlbl9zbmRf ZnJvbnRfc2hidWYubyBcCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhlbl9zbmRf ZnJvbnRfYWxzYS5vCj4+Pj4gwqAgwqAgb2JqLSQoQ09ORklHX1NORF9YRU5fRlJPTlRFTkQpICs9 IHNuZF94ZW5fZnJvbnQubwo+Pj4+IGRpZmYgLS1naXQgYS9zb3VuZC94ZW4veGVuX3NuZF9mcm9u dC5jIGIvc291bmQveGVuL3hlbl9zbmRfZnJvbnQuYwo+Pj4+IGluZGV4IDA1NjljNmM1OTZhMy4u MWZlZjI1M2VhMjFhIDEwMDY0NAo+Pj4+IC0tLSBhL3NvdW5kL3hlbi94ZW5fc25kX2Zyb250LmMK Pj4+PiArKysgYi9zb3VuZC94ZW4veGVuX3NuZF9mcm9udC5jCj4+Pj4gQEAgLTE5LDEwICsxOSwy MDEgQEAKPj4+PiDCoCAjaW5jbHVkZSA8eGVuL2ludGVyZmFjZS9pby9zbmRpZi5oPgo+Pj4+IMKg IMKgICNpbmNsdWRlICJ4ZW5fc25kX2Zyb250LmgiCj4+Pj4gKyNpbmNsdWRlICJ4ZW5fc25kX2Zy b250X2Fsc2EuaCIKPj4+PiDCoCAjaW5jbHVkZSAieGVuX3NuZF9mcm9udF9ldnRjaG5sLmgiCj4+ Pj4gKyNpbmNsdWRlICJ4ZW5fc25kX2Zyb250X3NoYnVmLmgiCj4+Pj4gKwo+Pj4+ICtzdGF0aWMg c3RydWN0IHhlbnNuZF9yZXEgKgo+Pj4+ICtiZV9zdHJlYW1fcHJlcGFyZV9yZXEoc3RydWN0IHhl bl9zbmRfZnJvbnRfZXZ0Y2hubCAqZXZ0Y2hubCwgdTgKPj4+PiBvcGVyYXRpb24pCj4+Pj4gK3sK Pj4+PiArwqDCoMKgIHN0cnVjdCB4ZW5zbmRfcmVxICpyZXE7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAg cmVxID0gUklOR19HRVRfUkVRVUVTVCgmZXZ0Y2hubC0+dS5yZXEucmluZywKPj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGV2dGNobmwtPnUucmVxLnJpbmcucmVxX3By b2RfcHZ0KTsKPj4+PiArwqDCoMKgIHJlcS0+b3BlcmF0aW9uID0gb3BlcmF0aW9uOwo+Pj4+ICvC oMKgwqAgcmVxLT5pZCA9IGV2dGNobmwtPmV2dF9uZXh0X2lkKys7Cj4+Pj4gK8KgwqDCoCBldnRj aG5sLT5ldnRfaWQgPSByZXEtPmlkOwo+Pj4+ICvCoMKgwqAgcmV0dXJuIHJlcTsKPj4+PiArfQo+ Pj4+ICsKPj4+PiArc3RhdGljIGludCBiZV9zdHJlYW1fZG9faW8oc3RydWN0IHhlbl9zbmRfZnJv bnRfZXZ0Y2hubCAqZXZ0Y2hubCkKPj4+PiArewo+Pj4+ICvCoMKgwqAgaWYgKHVubGlrZWx5KGV2 dGNobmwtPnN0YXRlICE9IEVWVENITkxfU1RBVEVfQ09OTkVDVEVEKSkKPj4+PiArwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC1FSU87Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgcmVpbml0X2NvbXBsZXRpb24o JmV2dGNobmwtPnUucmVxLmNvbXBsZXRpb24pOwo+Pj4+ICvCoMKgwqAgeGVuX3NuZF9mcm9udF9l dnRjaG5sX2ZsdXNoKGV2dGNobmwpOwo+Pj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+Pj4gK30KPj4+ PiArCj4+Pj4gK3N0YXRpYyBpbnQgYmVfc3RyZWFtX3dhaXRfaW8oc3RydWN0IHhlbl9zbmRfZnJv bnRfZXZ0Y2hubCAqZXZ0Y2hubCkKPj4+PiArewo+Pj4+ICvCoMKgwqAgaWYgKHdhaXRfZm9yX2Nv bXBsZXRpb25fdGltZW91dCgmZXZ0Y2hubC0+dS5yZXEuY29tcGxldGlvbiwKPj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBtc2Vjc190b19qaWZmaWVzKFZTTkRfV0FJVF9CQUNLX01TKSkgPD0g MCkKPj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FVElNRURPVVQ7Cj4+Pj4gKwo+Pj4+ICvC oMKgwqAgcmV0dXJuIGV2dGNobmwtPnUucmVxLnJlc3Bfc3RhdHVzOwo+Pj4+ICt9Cj4+Pj4gKwo+ Pj4+ICtpbnQgeGVuX3NuZF9mcm9udF9zdHJlYW1fcXVlcnlfaHdfcGFyYW0oc3RydWN0Cj4+Pj4g eGVuX3NuZF9mcm9udF9ldnRjaG5sICpldnRjaG5sLAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgeGVuc25kX3F1ZXJ5X2h3X3BhcmFtICpod19wYXJh bV9yZXEsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCB4ZW5zbmRfcXVlcnlfaHdfcGFyYW0gKmh3X3BhcmFtX3Jlc3ApCj4+Pj4gK3sKPj4+PiArwqDC oMKgIHN0cnVjdCB4ZW5fc25kX2Zyb250X2luZm8gKmZyb250X2luZm8gPSBldnRjaG5sLT5mcm9u dF9pbmZvOwo+Pj4+ICvCoMKgwqAgc3RydWN0IHhlbnNuZF9yZXEgKnJlcTsKPj4+PiArwqDCoMKg IHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+Pj4gK8KgwqDCoCBpbnQgcmV0Owo+Pj4+ICsKPj4+PiAr wqDCoMKgIG11dGV4X2xvY2soJmV2dGNobmwtPnUucmVxLnJlcV9pb19sb2NrKTsKPj4+PiArCj4+ Pj4gK8KgwqDCoCBzcGluX2xvY2tfaXJxc2F2ZSgmZnJvbnRfaW5mby0+aW9fbG9jaywgZmxhZ3Mp Owo+Pj4+ICvCoMKgwqAgcmVxID0gYmVfc3RyZWFtX3ByZXBhcmVfcmVxKGV2dGNobmwsIFhFTlNO RF9PUF9IV19QQVJBTV9RVUVSWSk7Cj4+Pj4gK8KgwqDCoCByZXEtPm9wLmh3X3BhcmFtID0gKmh3 X3BhcmFtX3JlcTsKPj4+PiArCj4+Pj4gK8KgwqDCoCByZXQgPSBiZV9zdHJlYW1fZG9faW8oZXZ0 Y2hubCk7Cj4+Pj4gK8KgwqDCoCBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZmcm9udF9pbmZvLT5p b19sb2NrLCBmbGFncyk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgaWYgKHJldCA9PSAwKQo+Pj4+ICvC oMKgwqDCoMKgwqDCoCByZXQgPSBiZV9zdHJlYW1fd2FpdF9pbyhldnRjaG5sKTsKPj4+PiArCj4+ Pj4gK8KgwqDCoCBpZiAocmV0ID09IDApCj4+Pj4gK8KgwqDCoMKgwqDCoMKgICpod19wYXJhbV9y ZXNwID0gZXZ0Y2hubC0+dS5yZXEucmVzcC5od19wYXJhbTsKPj4+PiArCj4+Pj4gK8KgwqDCoCBt dXRleF91bmxvY2soJmV2dGNobmwtPnUucmVxLnJlcV9pb19sb2NrKTsKPj4+PiArwqDCoMKgIHJl dHVybiByZXQ7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK2ludCB4ZW5fc25kX2Zyb250X3N0cmVhbV9w cmVwYXJlKHN0cnVjdCB4ZW5fc25kX2Zyb250X2V2dGNobmwKPj4+PiAqZXZ0Y2hubCwKPj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHhlbl9zbmRfZnJvbnRfc2hi dWYgKnNoX2J1ZiwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTggZm9y bWF0LCB1bnNpZ25lZCBpbnQgY2hhbm5lbHMsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHVuc2lnbmVkIGludCByYXRlLCB1MzIgYnVmZmVyX3N6LAo+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgcGVyaW9kX3N6KQo+Pj4+ICt7Cj4+Pj4gK8Kg wqDCoCBzdHJ1Y3QgeGVuX3NuZF9mcm9udF9pbmZvICpmcm9udF9pbmZvID0gZXZ0Y2hubC0+ZnJv bnRfaW5mbzsKPj4+PiArwqDCoMKgIHN0cnVjdCB4ZW5zbmRfcmVxICpyZXE7Cj4+Pj4gK8KgwqDC oCB1bnNpZ25lZCBsb25nIGZsYWdzOwo+Pj4+ICvCoMKgwqAgaW50IHJldDsKPj4+PiArCj4+Pj4g K8KgwqDCoCBtdXRleF9sb2NrKCZldnRjaG5sLT51LnJlcS5yZXFfaW9fbG9jayk7Cj4+Pj4gKwo+ Pj4+ICvCoMKgwqAgc3Bpbl9sb2NrX2lycXNhdmUoJmZyb250X2luZm8tPmlvX2xvY2ssIGZsYWdz KTsKPj4+PiArwqDCoMKgIHJlcSA9IGJlX3N0cmVhbV9wcmVwYXJlX3JlcShldnRjaG5sLCBYRU5T TkRfT1BfT1BFTik7Cj4+Pj4gK8KgwqDCoCByZXEtPm9wLm9wZW4ucGNtX2Zvcm1hdCA9IGZvcm1h dDsKPj4+PiArwqDCoMKgIHJlcS0+b3Aub3Blbi5wY21fY2hhbm5lbHMgPSBjaGFubmVsczsKPj4+ PiArwqDCoMKgIHJlcS0+b3Aub3Blbi5wY21fcmF0ZSA9IHJhdGU7Cj4+Pj4gK8KgwqDCoCByZXEt Pm9wLm9wZW4uYnVmZmVyX3N6ID0gYnVmZmVyX3N6Owo+Pj4+ICvCoMKgwqAgcmVxLT5vcC5vcGVu LnBlcmlvZF9zeiA9IHBlcmlvZF9zejsKPj4+PiArwqDCoMKgIHJlcS0+b3Aub3Blbi5ncmVmX2Rp cmVjdG9yeSA9Cj4+Pj4geGVuX3NuZF9mcm9udF9zaGJ1Zl9nZXRfZGlyX3N0YXJ0KHNoX2J1Zik7 Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgcmV0ID0gYmVfc3RyZWFtX2RvX2lvKGV2dGNobmwpOwo+Pj4+ ICvCoMKgwqAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZnJvbnRfaW5mby0+aW9fbG9jaywgZmxh Z3MpOwo+Pj4+ICsKPj4+PiArwqDCoMKgIGlmIChyZXQgPT0gMCkKPj4+PiArwqDCoMKgwqDCoMKg wqAgcmV0ID0gYmVfc3RyZWFtX3dhaXRfaW8oZXZ0Y2hubCk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAg bXV0ZXhfdW5sb2NrKCZldnRjaG5sLT51LnJlcS5yZXFfaW9fbG9jayk7Cj4+Pj4gK8KgwqDCoCBy ZXR1cm4gcmV0Owo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtpbnQgeGVuX3NuZF9mcm9udF9zdHJlYW1f Y2xvc2Uoc3RydWN0IHhlbl9zbmRfZnJvbnRfZXZ0Y2hubCAqZXZ0Y2hubCkKPj4+PiArewo+Pj4+ ICvCoMKgwqAgc3RydWN0IHhlbl9zbmRfZnJvbnRfaW5mbyAqZnJvbnRfaW5mbyA9IGV2dGNobmwt PmZyb250X2luZm87Cj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgeGVuc25kX3JlcSAqcmVxOwo+Pj4+ICvC oMKgwqAgdW5zaWduZWQgbG9uZyBmbGFnczsKPj4+PiArwqDCoMKgIGludCByZXQ7Cj4+Pj4gKwo+ Pj4+ICvCoMKgwqAgbXV0ZXhfbG9jaygmZXZ0Y2hubC0+dS5yZXEucmVxX2lvX2xvY2spOwo+Pj4+ ICsKPj4+PiArwqDCoMKgIHNwaW5fbG9ja19pcnFzYXZlKCZmcm9udF9pbmZvLT5pb19sb2NrLCBm bGFncyk7Cj4+Pj4gK8KgwqDCoCByZXEgPSBiZV9zdHJlYW1fcHJlcGFyZV9yZXEoZXZ0Y2hubCwg WEVOU05EX09QX0NMT1NFKTsKPj4+PiArCj4+Pj4gK8KgwqDCoCByZXQgPSBiZV9zdHJlYW1fZG9f aW8oZXZ0Y2hubCk7Cj4+Pj4gK8KgwqDCoCBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZmcm9udF9p bmZvLT5pb19sb2NrLCBmbGFncyk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgaWYgKHJldCA9PSAwKQo+ Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBiZV9zdHJlYW1fd2FpdF9pbyhldnRjaG5sKTsKPj4+ PiArCj4+Pj4gK8KgwqDCoCBtdXRleF91bmxvY2soJmV2dGNobmwtPnUucmVxLnJlcV9pb19sb2Nr KTsKPj4+PiArwqDCoMKgIHJldHVybiByZXQ7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK2ludCB4ZW5f c25kX2Zyb250X3N0cmVhbV93cml0ZShzdHJ1Y3QgeGVuX3NuZF9mcm9udF9ldnRjaG5sICpldnRj aG5sLAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQg bG9uZyBwb3MsIHVuc2lnbmVkIGxvbmcgY291bnQpCj4+Pj4gK3sKPj4+PiArwqDCoMKgIHN0cnVj dCB4ZW5fc25kX2Zyb250X2luZm8gKmZyb250X2luZm8gPSBldnRjaG5sLT5mcm9udF9pbmZvOwo+ Pj4+ICvCoMKgwqAgc3RydWN0IHhlbnNuZF9yZXEgKnJlcTsKPj4+PiArwqDCoMKgIHVuc2lnbmVk IGxvbmcgZmxhZ3M7Cj4+Pj4gK8KgwqDCoCBpbnQgcmV0Owo+Pj4+ICsKPj4+PiArwqDCoMKgIG11 dGV4X2xvY2soJmV2dGNobmwtPnUucmVxLnJlcV9pb19sb2NrKTsKPj4+PiArCj4+Pj4gK8KgwqDC oCBzcGluX2xvY2tfaXJxc2F2ZSgmZnJvbnRfaW5mby0+aW9fbG9jaywgZmxhZ3MpOwo+Pj4+ICvC oMKgwqAgcmVxID0gYmVfc3RyZWFtX3ByZXBhcmVfcmVxKGV2dGNobmwsIFhFTlNORF9PUF9XUklU RSk7Cj4+Pj4gK8KgwqDCoCByZXEtPm9wLnJ3Lmxlbmd0aCA9IGNvdW50Owo+Pj4+ICvCoMKgwqAg cmVxLT5vcC5ydy5vZmZzZXQgPSBwb3M7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgcmV0ID0gYmVfc3Ry ZWFtX2RvX2lvKGV2dGNobmwpOwo+Pj4+ICvCoMKgwqAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm ZnJvbnRfaW5mby0+aW9fbG9jaywgZmxhZ3MpOwo+Pj4+ICsKPj4+PiArwqDCoMKgIGlmIChyZXQg PT0gMCkKPj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gYmVfc3RyZWFtX3dhaXRfaW8oZXZ0Y2hu bCk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgbXV0ZXhfdW5sb2NrKCZldnRjaG5sLT51LnJlcS5yZXFf aW9fbG9jayk7Cj4+Pj4gK8KgwqDCoCByZXR1cm4gcmV0Owo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtp bnQgeGVuX3NuZF9mcm9udF9zdHJlYW1fcmVhZChzdHJ1Y3QgeGVuX3NuZF9mcm9udF9ldnRjaG5s ICpldnRjaG5sLAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2ln bmVkIGxvbmcgcG9zLCB1bnNpZ25lZCBsb25nIGNvdW50KQo+Pj4+ICt7Cj4+Pj4gK8KgwqDCoCBz dHJ1Y3QgeGVuX3NuZF9mcm9udF9pbmZvICpmcm9udF9pbmZvID0gZXZ0Y2hubC0+ZnJvbnRfaW5m bzsKPj4+PiArwqDCoMKgIHN0cnVjdCB4ZW5zbmRfcmVxICpyZXE7Cj4+Pj4gK8KgwqDCoCB1bnNp Z25lZCBsb25nIGZsYWdzOwo+Pj4+ICvCoMKgwqAgaW50IHJldDsKPj4+PiArCj4+Pj4gK8KgwqDC oCBtdXRleF9sb2NrKCZldnRjaG5sLT51LnJlcS5yZXFfaW9fbG9jayk7Cj4+Pj4gKwo+Pj4+ICvC oMKgwqAgc3Bpbl9sb2NrX2lycXNhdmUoJmZyb250X2luZm8tPmlvX2xvY2ssIGZsYWdzKTsKPj4+ PiArwqDCoMKgIHJlcSA9IGJlX3N0cmVhbV9wcmVwYXJlX3JlcShldnRjaG5sLCBYRU5TTkRfT1Bf UkVBRCk7Cj4+Pj4gK8KgwqDCoCByZXEtPm9wLnJ3Lmxlbmd0aCA9IGNvdW50Owo+Pj4+ICvCoMKg wqAgcmVxLT5vcC5ydy5vZmZzZXQgPSBwb3M7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgcmV0ID0gYmVf c3RyZWFtX2RvX2lvKGV2dGNobmwpOwo+Pj4+ICvCoMKgwqAgc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZnJvbnRfaW5mby0+aW9fbG9jaywgZmxhZ3MpOwo+Pj4+ICsKPj4+PiArwqDCoMKgIGlmIChy ZXQgPT0gMCkKPj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gYmVfc3RyZWFtX3dhaXRfaW8oZXZ0 Y2hubCk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgbXV0ZXhfdW5sb2NrKCZldnRjaG5sLT51LnJlcS5y ZXFfaW9fbG9jayk7Cj4+Pj4gK8KgwqDCoCByZXR1cm4gcmV0Owo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ ICtpbnQgeGVuX3NuZF9mcm9udF9zdHJlYW1fdHJpZ2dlcihzdHJ1Y3QgeGVuX3NuZF9mcm9udF9l dnRjaG5sCj4+Pj4gKmV2dGNobmwsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGludCB0eXBlKQo+Pj4+ICt7Cj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgeGVuX3NuZF9mcm9udF9p bmZvICpmcm9udF9pbmZvID0gZXZ0Y2hubC0+ZnJvbnRfaW5mbzsKPj4+PiArwqDCoMKgIHN0cnVj dCB4ZW5zbmRfcmVxICpyZXE7Cj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGZsYWdzOwo+Pj4+ ICvCoMKgwqAgaW50IHJldDsKPj4+PiArCj4+Pj4gK8KgwqDCoCBtdXRleF9sb2NrKCZldnRjaG5s LT51LnJlcS5yZXFfaW9fbG9jayk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgc3Bpbl9sb2NrX2lycXNh dmUoJmZyb250X2luZm8tPmlvX2xvY2ssIGZsYWdzKTsKPj4+PiArwqDCoMKgIHJlcSA9IGJlX3N0 cmVhbV9wcmVwYXJlX3JlcShldnRjaG5sLCBYRU5TTkRfT1BfVFJJR0dFUik7Cj4+Pj4gK8KgwqDC oCByZXEtPm9wLnRyaWdnZXIudHlwZSA9IHR5cGU7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgcmV0ID0g YmVfc3RyZWFtX2RvX2lvKGV2dGNobmwpOwo+Pj4+ICvCoMKgwqAgc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmZnJvbnRfaW5mby0+aW9fbG9jaywgZmxhZ3MpOwo+Pj4+ICsKPj4+PiArwqDCoMKgIGlm IChyZXQgPT0gMCkKPj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gYmVfc3RyZWFtX3dhaXRfaW8o ZXZ0Y2hubCk7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgbXV0ZXhfdW5sb2NrKCZldnRjaG5sLT51LnJl cS5yZXFfaW9fbG9jayk7Cj4+Pj4gK8KgwqDCoCByZXR1cm4gcmV0Owo+Pj4+ICt9Cj4+Pj4gwqAg wqAgc3RhdGljIHZvaWQgeGVuX3NuZF9kcnZfZmluaShzdHJ1Y3QgeGVuX3NuZF9mcm9udF9pbmZv ICpmcm9udF9pbmZvKQo+Pj4+IMKgIHsKPj4+PiArwqDCoMKgIHhlbl9zbmRfZnJvbnRfYWxzYV9m aW5pKGZyb250X2luZm8pOwo+Pj4+IMKgwqDCoMKgwqAgeGVuX3NuZF9mcm9udF9ldnRjaG5sX2Zy ZWVfYWxsKGZyb250X2luZm8pOwo+Pj4+IMKgIH0KPj4+PiDCoCBAQCAtNDUsNyArMjM2LDcgQEAg c3RhdGljIGludCBzbmRiYWNrX2luaXR3YWl0KHN0cnVjdAo+Pj4+IHhlbl9zbmRfZnJvbnRfaW5m byAqZnJvbnRfaW5mbykKPj4+PiDCoCDCoCBzdGF0aWMgaW50IHNuZGJhY2tfY29ubmVjdChzdHJ1 Y3QgeGVuX3NuZF9mcm9udF9pbmZvICpmcm9udF9pbmZvKQo+Pj4+IMKgIHsKPj4+PiAtwqDCoMKg IHJldHVybiAwOwo+Pj4+ICvCoMKgwqAgcmV0dXJuIHhlbl9zbmRfZnJvbnRfYWxzYV9pbml0KGZy b250X2luZm8pOwo+Pj4+IMKgIH0KPj4+PiDCoCDCoCBzdGF0aWMgdm9pZCBzbmRiYWNrX2Rpc2Nv bm5lY3Qoc3RydWN0IHhlbl9zbmRfZnJvbnRfaW5mbwo+Pj4+ICpmcm9udF9pbmZvKQo+Pj4+IGRp ZmYgLS1naXQgYS9zb3VuZC94ZW4veGVuX3NuZF9mcm9udC5oIGIvc291bmQveGVuL3hlbl9zbmRf ZnJvbnQuaAo+Pj4+IGluZGV4IDljMmZmYmI0ZTRiOC4uN2FkYmRiNGQyMDE5IDEwMDY0NAo+Pj4+ IC0tLSBhL3NvdW5kL3hlbi94ZW5fc25kX2Zyb250LmgKPj4+PiArKysgYi9zb3VuZC94ZW4veGVu X3NuZF9mcm9udC5oCj4+Pj4gQEAgLTEzLDE3ICsxMyw0NSBAQAo+Pj4+IMKgIMKgICNpbmNsdWRl ICJ4ZW5fc25kX2Zyb250X2NmZy5oIgo+Pj4+IMKgICtzdHJ1Y3QgY2FyZF9pbmZvOwo+Pj4+ICtz dHJ1Y3QgeGVuX3NuZF9mcm9udF9ldnRjaG5sOwo+Pj4+IMKgIHN0cnVjdCB4ZW5fc25kX2Zyb250 X2V2dGNobmxfcGFpcjsKPj4+PiArc3RydWN0IHhlbl9zbmRfZnJvbnRfc2hidWY7Cj4+Pj4gK3N0 cnVjdCB4ZW5zbmRfcXVlcnlfaHdfcGFyYW07Cj4+Pj4gwqAgwqAgc3RydWN0IHhlbl9zbmRfZnJv bnRfaW5mbyB7Cj4+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgeGVuYnVzX2RldmljZSAqeGJfZGV2Owo+ Pj4+IMKgICvCoMKgwqAgc3RydWN0IGNhcmRfaW5mbyAqY2FyZF9pbmZvOwo+Pj4+ICsKPj4+PiDC oMKgwqDCoMKgIC8qIHNlcmlhbGl6ZXIgZm9yIGJhY2tlbmQgSU86IHJlcXVlc3QvcmVzcG9uc2Ug Ki8KPj4+PiDCoMKgwqDCoMKgIHNwaW5sb2NrX3QgaW9fbG9jazsKPj4+PiArCj4+Pj4gwqDCoMKg wqDCoCBpbnQgbnVtX2V2dF9wYWlyczsKPj4+PiDCoMKgwqDCoMKgIHN0cnVjdCB4ZW5fc25kX2Zy b250X2V2dGNobmxfcGFpciAqZXZ0X3BhaXJzOwo+Pj4+IMKgIMKgwqDCoMKgwqAgc3RydWN0IHhl bl9mcm9udF9jZmdfY2FyZCBjZmc7Cj4+Pj4gwqAgfTsKPj4+PiDCoCAraW50IHhlbl9zbmRfZnJv bnRfc3RyZWFtX3F1ZXJ5X2h3X3BhcmFtKHN0cnVjdAo+Pj4+IHhlbl9zbmRfZnJvbnRfZXZ0Y2hu bCAqZXZ0Y2hubCwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IHhlbnNuZF9xdWVyeV9od19wYXJhbSAqaHdfcGFyYW1fcmVxLAo+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgeGVuc25kX3F1ZXJ5X2h3X3Bh cmFtICpod19wYXJhbV9yZXNwKTsKPj4+PiArCj4+Pj4gK2ludCB4ZW5fc25kX2Zyb250X3N0cmVh bV9wcmVwYXJlKHN0cnVjdCB4ZW5fc25kX2Zyb250X2V2dGNobmwKPj4+PiAqZXZ0Y2hubCwKPj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHhlbl9zbmRfZnJvbnRf c2hidWYgKnNoX2J1ZiwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTgg Zm9ybWF0LCB1bnNpZ25lZCBpbnQgY2hhbm5lbHMsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCByYXRlLCB1MzIgYnVmZmVyX3N6LAo+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgcGVyaW9kX3N6KTsKPj4+PiArCj4+Pj4g K2ludCB4ZW5fc25kX2Zyb250X3N0cmVhbV9jbG9zZShzdHJ1Y3QgeGVuX3NuZF9mcm9udF9ldnRj aG5sICpldnRjaG5sKTsKPj4+PiArCj4+Pj4gK2ludCB4ZW5fc25kX2Zyb250X3N0cmVhbV93cml0 ZShzdHJ1Y3QgeGVuX3NuZF9mcm9udF9ldnRjaG5sICpldnRjaG5sLAo+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBwb3MsIHVuc2lnbmVkIGxv bmcgY291bnQpOwo+Pj4+ICsKPj4+PiAraW50IHhlbl9zbmRfZnJvbnRfc3RyZWFtX3JlYWQoc3Ry dWN0IHhlbl9zbmRfZnJvbnRfZXZ0Y2hubCAqZXZ0Y2hubCwKPj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIHBvcywgdW5zaWduZWQgbG9uZyBjb3Vu dCk7Cj4+Pj4gKwo+Pj4+ICtpbnQgeGVuX3NuZF9mcm9udF9zdHJlYW1fdHJpZ2dlcihzdHJ1Y3Qg eGVuX3NuZF9mcm9udF9ldnRjaG5sCj4+Pj4gKmV2dGNobmwsCj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGludCB0eXBlKTsKPj4+PiArCj4+Pj4gwqAgI2VuZGlmIC8qIF9f WEVOX1NORF9GUk9OVF9IICovCj4+Pj4gZGlmZiAtLWdpdCBhL3NvdW5kL3hlbi94ZW5fc25kX2Zy b250X2Fsc2EuYwo+Pj4+IGIvc291bmQveGVuL3hlbl9zbmRfZnJvbnRfYWxzYS5jCj4+Pj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmY1MjRiMTcyNzUwZQo+ Pj4+IC0tLSAvZGV2L251bGwKPj4+PiArKysgYi9zb3VuZC94ZW4veGVuX3NuZF9mcm9udF9hbHNh LmMKPj4+PiBAQCAtMCwwICsxLDgzMCBAQAo+Pj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMCBPUiBNSVQKPj4+PiArCj4+Pj4gKy8qCj4+Pj4gKyAqIFhlbiBwYXJhLXZpcnR1 YWwgc291bmQgZGV2aWNlCj4+Pj4gKyAqCj4+Pj4gKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4 IEVQQU0gU3lzdGVtcyBJbmMuCj4+Pj4gKyAqCj4+Pj4gKyAqIEF1dGhvcjogT2xla3NhbmRyIEFu ZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+Pj4+ICsgKi8K Pj4+PiArCj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPj4+PiArCj4+ Pj4gKyNpbmNsdWRlIDxzb3VuZC9jb3JlLmg+Cj4+Pj4gKyNpbmNsdWRlIDxzb3VuZC9wY20uaD4K Pj4+PiArI2luY2x1ZGUgPHNvdW5kL3BjbV9wYXJhbXMuaD4KPj4+PiArCj4+Pj4gKyNpbmNsdWRl IDx4ZW4veGVuYnVzLmg+Cj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSAieGVuX3NuZF9mcm9udC5oIgo+ Pj4+ICsjaW5jbHVkZSAieGVuX3NuZF9mcm9udF9hbHNhLmgiCj4+Pj4gKyNpbmNsdWRlICJ4ZW5f c25kX2Zyb250X2NmZy5oIgo+Pj4+ICsjaW5jbHVkZSAieGVuX3NuZF9mcm9udF9ldnRjaG5sLmgi Cj4+Pj4gKyNpbmNsdWRlICJ4ZW5fc25kX2Zyb250X3NoYnVmLmgiCj4+Pj4gKwo+Pj4+ICtzdHJ1 Y3QgcGNtX3N0cmVhbV9pbmZvIHsKPj4+IE5vdCBzdXJlIGhvdyB0aGlzIGlzIGdlbmVyYWxseSBo YW5kbGVkIGluIHRoZSBzb3VuZCBkcml2ZXJzLCBidXQgd2hlbgo+Pj4gcmV2aWV3aW5nIHRoZSBj b2RlIHVzaW5nIHRob3NlIHN0cnVjdHVyZXMgSSByZXBlYXRlZGx5IHRyaWVkIHRvIGZpbmQKPj4+ IHRoZWlyIGRlZmluaXRpb25zIGluIHRoZSBzb3VuZCBoZWFkZXJzIGluc3RlYWQgb2YgaGVyZS4g U2FtZSBhcHBsaWVzIHRvCj4+PiB0aGUgYWxzYV8qIG5hbWVzLgo+Pj4KPj4+IEknZCBwcmVmZXIg bmFtZXMgd2hpY2ggZG9uJ3QgcG9pc29uIHRoZSBuYW1lIHNwYWNlLgo+PiBJJ2xsIHRyeSB0byBk byBzb21ldGhpbmcgYWJvdXQgbmFtaW5nCj4gT25lIHF1ZXN0aW9uIHN0aWxsIHJlbWFpbnMgd3J0 IGFsc2FfKiBuYW1lczogaWYgdGhpcyBpcyBmb3Igc3RydWN0dXJlcwo+IEkgaGF2ZSAoYWxzYV9z bmRpZl9zYW1wbGVfZm9ybWF0L2Fsc2Ffc25kaWZfaHdfcGFyYW0pLCB0aGVuCj4gdGhvc2UgYWxy ZWFkeSBoYXZlIHNuZGlmIGluIHRoZWlyIG5hbWUgd2hpY2ggY2xlYXJseSBzYXlzIHRoZXNlIGFy ZQo+IFhlbiByZWxhdGVkIG9uZXMgKHNuZGlmIGlzIGEgWGVuIHByb3RvY29sKS4KPiBJZiB5b3Ug YWxzbyBkb24ndCBsaWtlIHRoZSBhbHNhXyogZnVuY3Rpb24gbmFtZXMgdGhlbiB0aG9zZSBhcmUg YWxsCj4gc3RhdGljIGFuZCBkZWZpbmVkIGluIHRoaXMgc2FtZSBmaWxlLCBzbyBzZWUgbm8gY29u ZnVzaW9uIGhlcmUuCj4gCj4gSSBoYXZlIGNoYW5nZWQgb3RoZXIgbm9uLW9idmlvdXMgc3RydWN0 IG5hbWVzOgo+IAo+IC1zdHJ1Y3QgcGNtX3N0cmVhbV9pbmZvIHsKPiArc3RydWN0IHhlbl9zbmRf ZnJvbnRfcGNtX3N0cmVhbV9pbmZvIHsKPiAKPiAtc3RydWN0IHBjbV9pbnN0YW5jZV9pbmZvIHsK PiArc3RydWN0IHhlbl9zbmRfZnJvbnRfcGNtX2luc3RhbmNlX2luZm8gewo+IAo+IC1zdHJ1Y3Qg Y2FyZF9pbmZvIHsKPiArc3RydWN0IHhlbl9zbmRfZnJvbnRfY2FyZF9pbmZvIHsKPiAKPiBEb2Vz IHRoZSBhYm92ZSB3b3JrIGZvciB5b3U/CgpZZXMsIHRoaXMgc2VlbXMgdG8gYmUgb2theS4KClRo YW5rcywKCkp1ZXJnZW4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2 ZWw=