From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH v2 1/5] ALSA: xen-front: Introduce Xen para-virtualized sound frontend driver Date: Mon, 16 Apr 2018 09:24:49 +0300 Message-ID: <20180416062453.24743-2-andr2000__40421.4446935386$1523859845$gmane$org@gmail.com> References: <20180416062453.24743-1-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1f7xZd-0001XQ-TS for xen-devel@lists.xenproject.org; Mon, 16 Apr 2018 06:25:09 +0000 Received: by mail-lf0-x244.google.com with SMTP id q5-v6so20287041lff.12 for ; Sun, 15 Apr 2018 23:25:07 -0700 (PDT) In-Reply-To: <20180416062453.24743-1-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, alsa-devel@alsa-project.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, perex@perex.cz, tiwai@suse.com Cc: andr2000@gmail.com, Oleksandr Andrushchenko List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKSW50cm9kdWNlIHNrZWxldG9uIG9mIHRoZSBwYXJhLXZpcnR1YWxpemVkIFhlbiBz b3VuZApmcm9udGVuZCBkcml2ZXIuCgpJbml0aWFsIGhhbmRsaW5nIGZvciBYZW4gYnVzIHN0YXRl czogaW1wbGVtZW50ClhlbiBidXMgc3RhdGUgbWFjaGluZSBmb3IgdGhlIGZyb250ZW5kIGRyaXZl ciBhY2NvcmRpbmcgdG8KdGhlIHN0YXRlIGRpYWdyYW0gYW5kIHJlY292ZXJ5IGZsb3cgZnJvbSBz b3VuZCBwYXJhLXZpcnR1YWxpemVkCnByb3RvY29sOiB4ZW4vaW50ZXJmYWNlL2lvL3NuZGlmLmgu CgpTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1 c2hjaGVua29AZXBhbS5jb20+Ci0tLQogc291bmQvS2NvbmZpZyAgICAgICAgICAgICB8ICAgMiAr CiBzb3VuZC9NYWtlZmlsZSAgICAgICAgICAgIHwgICAyICstCiBzb3VuZC94ZW4vS2NvbmZpZyAg ICAgICAgIHwgIDEwICsrKwogc291bmQveGVuL01ha2VmaWxlICAgICAgICB8ICAgNSArKwogc291 bmQveGVuL3hlbl9zbmRfZnJvbnQuYyB8IDE5NiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBzb3VuZC94ZW4veGVuX3NuZF9mcm9udC5oIHwgIDE4ICsrKysr CiA2IGZpbGVzIGNoYW5nZWQsIDIzMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc291bmQveGVuL0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzb3Vu ZC94ZW4vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzb3VuZC94ZW4veGVuX3NuZF9mcm9u dC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc291bmQveGVuL3hlbl9zbmRfZnJvbnQuaAoKZGlmZiAt LWdpdCBhL3NvdW5kL0tjb25maWcgYi9zb3VuZC9LY29uZmlnCmluZGV4IDY4MzNkYjkwMDJlYy4u MTE0MGU5OTg4ZmM1IDEwMDY0NAotLS0gYS9zb3VuZC9LY29uZmlnCisrKyBiL3NvdW5kL0tjb25m aWcKQEAgLTk2LDYgKzk2LDggQEAgc291cmNlICJzb3VuZC94ODYvS2NvbmZpZyIKIAogc291cmNl ICJzb3VuZC9zeW50aC9LY29uZmlnIgogCitzb3VyY2UgInNvdW5kL3hlbi9LY29uZmlnIgorCiBl bmRpZiAjIFNORAogCiBlbmRpZiAjICFVTUwKZGlmZiAtLWdpdCBhL3NvdW5kL01ha2VmaWxlIGIv c291bmQvTWFrZWZpbGUKaW5kZXggOTlkOGMzMTI2MmM4Li43OTdlY2RjZDM1ZTIgMTAwNjQ0Ci0t LSBhL3NvdW5kL01ha2VmaWxlCisrKyBiL3NvdW5kL01ha2VmaWxlCkBAIC01LDcgKzUsNyBAQAog b2JqLSQoQ09ORklHX1NPVU5EKSArPSBzb3VuZGNvcmUubwogb2JqLSQoQ09ORklHX0RNQVNPVU5E KSArPSBvc3MvZG1hc291bmQvCiBvYmotJChDT05GSUdfU05EKSArPSBjb3JlLyBpMmMvIGRyaXZl cnMvIGlzYS8gcGNpLyBwcGMvIGFybS8gc2gvIHN5bnRoLyB1c2IvIFwKLQlmaXJld2lyZS8gc3Bh cmMvIHNwaS8gcGFyaXNjLyBwY21jaWEvIG1pcHMvIHNvYy8gYXRtZWwvIGhkYS8geDg2LworCWZp cmV3aXJlLyBzcGFyYy8gc3BpLyBwYXJpc2MvIHBjbWNpYS8gbWlwcy8gc29jLyBhdG1lbC8gaGRh LyB4ODYvIHhlbi8KIG9iai0kKENPTkZJR19TTkRfQU9BKSArPSBhb2EvCiAKICMgVGhpcyBvbmUg bXVzdCBiZSBjb21waWxhYmxlIGV2ZW4gaWYgc291bmQgaXMgY29uZmlndXJlZCBvdXQKZGlmZiAt LWdpdCBhL3NvdW5kL3hlbi9LY29uZmlnIGIvc291bmQveGVuL0tjb25maWcKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43Y2FkMzhiZTgzMTcKLS0tIC9kZXYvbnVsbAor KysgYi9zb3VuZC94ZW4vS2NvbmZpZwpAQCAtMCwwICsxLDEwIEBACisjIEFMU0EgWGVuIGRyaXZl cnMKKworY29uZmlnIFNORF9YRU5fRlJPTlRFTkQKKwl0cmlzdGF0ZSAiWGVuIHBhcmEtdmlydHVh bGl6ZWQgc291bmQgZnJvbnRlbmQgZHJpdmVyIgorCWRlcGVuZHMgb24gWEVOICYmIFNORF9QQ00K KwlzZWxlY3QgWEVOX1hFTkJVU19GUk9OVEVORAorCWRlZmF1bHQgbgorCWhlbHAKKwkgIENob29z ZSB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBlbmFibGUgYSBwYXJhLXZpcnR1YWxpemVkCisJ ICBmcm9udGVuZCBzb3VuZCBkcml2ZXIgZm9yIFhlbiBndWVzdCBPU2VzLgpkaWZmIC0tZ2l0IGEv c291bmQveGVuL01ha2VmaWxlIGIvc291bmQveGVuL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDUwN2VmM2MyN2ZkCi0tLSAvZGV2L251bGwKKysrIGIv c291bmQveGVuL01ha2VmaWxlCkBAIC0wLDAgKzEsNSBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMCBPUiBNSVQKKworc25kX3hlbl9mcm9udC1vYmpzIDo9IHhlbl9zbmRfZnJv bnQubworCitvYmotJChDT05GSUdfU05EX1hFTl9GUk9OVEVORCkgKz0gc25kX3hlbl9mcm9udC5v CmRpZmYgLS1naXQgYS9zb3VuZC94ZW4veGVuX3NuZF9mcm9udC5jIGIvc291bmQveGVuL3hlbl9z bmRfZnJvbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY0MDZh OGY1MmM1MQotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL3hlbi94ZW5fc25kX2Zyb250LmMKQEAg LTAsMCArMSwxOTYgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIE1J VAorCisvKgorICogWGVuIHBhcmEtdmlydHVhbCBzb3VuZCBkZXZpY2UKKyAqCisgKiBDb3B5cmln aHQgKEMpIDIwMTYtMjAxOCBFUEFNIFN5c3RlbXMgSW5jLgorICoKKyAqIEF1dGhvcjogT2xla3Nh bmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgorICov CisKKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgor CisjaW5jbHVkZSA8eGVuL3BsYXRmb3JtX3BjaS5oPgorI2luY2x1ZGUgPHhlbi94ZW4uaD4KKyNp bmNsdWRlIDx4ZW4veGVuYnVzLmg+CisKKyNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL2lvL3NuZGlm Lmg+CisKKyNpbmNsdWRlICJ4ZW5fc25kX2Zyb250LmgiCisKK3N0YXRpYyB2b2lkIHhlbl9zbmRf ZHJ2X2Zpbmkoc3RydWN0IHhlbl9zbmRfZnJvbnRfaW5mbyAqZnJvbnRfaW5mbykKK3sKK30KKwor c3RhdGljIGludCBzbmRiYWNrX2luaXR3YWl0KHN0cnVjdCB4ZW5fc25kX2Zyb250X2luZm8gKmZy b250X2luZm8pCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc25kYmFja19jb25uZWN0 KHN0cnVjdCB4ZW5fc25kX2Zyb250X2luZm8gKmZyb250X2luZm8pCit7CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyB2b2lkIHNuZGJhY2tfZGlzY29ubmVjdChzdHJ1Y3QgeGVuX3NuZF9mcm9udF9p bmZvICpmcm9udF9pbmZvKQoreworCXhlbl9zbmRfZHJ2X2ZpbmkoZnJvbnRfaW5mbyk7CisJeGVu YnVzX3N3aXRjaF9zdGF0ZShmcm9udF9pbmZvLT54Yl9kZXYsIFhlbmJ1c1N0YXRlSW5pdGlhbGlz aW5nKTsKK30KKworc3RhdGljIHZvaWQgc25kYmFja19jaGFuZ2VkKHN0cnVjdCB4ZW5idXNfZGV2 aWNlICp4Yl9kZXYsCisJCQkgICAgZW51bSB4ZW5idXNfc3RhdGUgYmFja2VuZF9zdGF0ZSkKK3sK KwlzdHJ1Y3QgeGVuX3NuZF9mcm9udF9pbmZvICpmcm9udF9pbmZvID0gZGV2X2dldF9kcnZkYXRh KCZ4Yl9kZXYtPmRldik7CisJaW50IHJldDsKKworCWRldl9kYmcoJnhiX2Rldi0+ZGV2LCAiQmFj a2VuZCBzdGF0ZSBpcyAlcywgZnJvbnQgaXMgJXNcbiIsCisJCXhlbmJ1c19zdHJzdGF0ZShiYWNr ZW5kX3N0YXRlKSwKKwkJeGVuYnVzX3N0cnN0YXRlKHhiX2Rldi0+c3RhdGUpKTsKKworCXN3aXRj aCAoYmFja2VuZF9zdGF0ZSkgeworCWNhc2UgWGVuYnVzU3RhdGVSZWNvbmZpZ3VyaW5nOgorCQkv KiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIFhlbmJ1c1N0YXRlUmVjb25maWd1cmVkOgorCQkvKiBm YWxsIHRocm91Z2ggKi8KKwljYXNlIFhlbmJ1c1N0YXRlSW5pdGlhbGlzZWQ6CisJCS8qIGZhbGwg dGhyb3VnaCAqLworCQlicmVhazsKKworCWNhc2UgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmc6CisJ CS8qIHJlY292ZXJpbmcgYWZ0ZXIgYmFja2VuZCB1bmV4cGVjdGVkIGNsb3N1cmUgKi8KKwkJc25k YmFja19kaXNjb25uZWN0KGZyb250X2luZm8pOworCQlicmVhazsKKworCWNhc2UgWGVuYnVzU3Rh dGVJbml0V2FpdDoKKwkJLyogcmVjb3ZlcmluZyBhZnRlciBiYWNrZW5kIHVuZXhwZWN0ZWQgY2xv c3VyZSAqLworCQlzbmRiYWNrX2Rpc2Nvbm5lY3QoZnJvbnRfaW5mbyk7CisKKwkJcmV0ID0gc25k YmFja19pbml0d2FpdChmcm9udF9pbmZvKTsKKwkJaWYgKHJldCA8IDApCisJCQl4ZW5idXNfZGV2 X2ZhdGFsKHhiX2RldiwgcmV0LCAiaW5pdGlhbGl6aW5nIGZyb250ZW5kIik7CisJCWVsc2UKKwkJ CXhlbmJ1c19zd2l0Y2hfc3RhdGUoeGJfZGV2LCBYZW5idXNTdGF0ZUluaXRpYWxpc2VkKTsKKwkJ YnJlYWs7CisKKwljYXNlIFhlbmJ1c1N0YXRlQ29ubmVjdGVkOgorCQlpZiAoeGJfZGV2LT5zdGF0 ZSAhPSBYZW5idXNTdGF0ZUluaXRpYWxpc2VkKQorCQkJYnJlYWs7CisKKwkJcmV0ID0gc25kYmFj a19jb25uZWN0KGZyb250X2luZm8pOworCQlpZiAocmV0IDwgMCkKKwkJCXhlbmJ1c19kZXZfZmF0 YWwoeGJfZGV2LCByZXQsICJpbml0aWFsaXppbmcgZnJvbnRlbmQiKTsKKwkJZWxzZQorCQkJeGVu YnVzX3N3aXRjaF9zdGF0ZSh4Yl9kZXYsIFhlbmJ1c1N0YXRlQ29ubmVjdGVkKTsKKwkJYnJlYWs7 CisKKwljYXNlIFhlbmJ1c1N0YXRlQ2xvc2luZzoKKwkJLyoKKwkJICogaW4gdGhpcyBzdGF0ZSBi YWNrZW5kIHN0YXJ0cyBmcmVlaW5nIHJlc291cmNlcywKKwkJICogc28gbGV0IGl0IGdvIGludG8g Y2xvc2VkIHN0YXRlIGZpcnN0LCBzbyB3ZSBjYW4gYWxzbworCQkgKiByZW1vdmUgb3VycworCQkg Ki8KKwkJYnJlYWs7CisKKwljYXNlIFhlbmJ1c1N0YXRlVW5rbm93bjoKKwkJLyogZmFsbCB0aHJv dWdoICovCisJY2FzZSBYZW5idXNTdGF0ZUNsb3NlZDoKKwkJaWYgKHhiX2Rldi0+c3RhdGUgPT0g WGVuYnVzU3RhdGVDbG9zZWQpCisJCQlicmVhazsKKworCQlzbmRiYWNrX2Rpc2Nvbm5lY3QoZnJv bnRfaW5mbyk7CisJCWJyZWFrOworCX0KK30KKworc3RhdGljIGludCB4ZW5fZHJ2X3Byb2JlKHN0 cnVjdCB4ZW5idXNfZGV2aWNlICp4Yl9kZXYsCisJCQkgY29uc3Qgc3RydWN0IHhlbmJ1c19kZXZp Y2VfaWQgKmlkKQoreworCXN0cnVjdCB4ZW5fc25kX2Zyb250X2luZm8gKmZyb250X2luZm87CisK Kwlmcm9udF9pbmZvID0gZGV2bV9remFsbG9jKCZ4Yl9kZXYtPmRldiwKKwkJCQkgIHNpemVvZigq ZnJvbnRfaW5mbyksIEdGUF9LRVJORUwpOworCWlmICghZnJvbnRfaW5mbykKKwkJcmV0dXJuIC1F Tk9NRU07CisKKwlmcm9udF9pbmZvLT54Yl9kZXYgPSB4Yl9kZXY7CisJZGV2X3NldF9kcnZkYXRh KCZ4Yl9kZXYtPmRldiwgZnJvbnRfaW5mbyk7CisKKwlyZXR1cm4geGVuYnVzX3N3aXRjaF9zdGF0 ZSh4Yl9kZXYsIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nKTsKK30KKworc3RhdGljIGludCB4ZW5f ZHJ2X3JlbW92ZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2KQoreworCXN0cnVjdCB4ZW5fc25k X2Zyb250X2luZm8gKmZyb250X2luZm8gPSBkZXZfZ2V0X2RydmRhdGEoJmRldi0+ZGV2KTsKKwlp bnQgdG8gPSAxMDA7CisKKwl4ZW5idXNfc3dpdGNoX3N0YXRlKGRldiwgWGVuYnVzU3RhdGVDbG9z aW5nKTsKKworCS8qCisJICogT24gZHJpdmVyIHJlbW92YWwgaXQgaXMgZGlzY29ubmVjdGVkIGZy b20gWGVuQnVzLAorCSAqIHNvIG5vIGJhY2tlbmQgc3RhdGUgY2hhbmdlIGV2ZW50cyBjb21lIHZp YSAub3RoZXJlbmRfY2hhbmdlZAorCSAqIGNhbGxiYWNrLiBUaGlzIHByZXZlbnRzIHVzIGZyb20g ZXhpdGluZyBncmFjZWZ1bGx5LCBlLmcuCisJICogc2lnbmFsaW5nIHRoZSBiYWNrZW5kIHRvIGZy ZWUgZXZlbnQgY2hhbm5lbHMsIHdhaXRpbmcgZm9yIGl0cworCSAqIHN0YXRlIHRvIGNoYW5nZSB0 byBYZW5idXNTdGF0ZUNsb3NlZCBhbmQgY2xlYW5pbmcgYXQgb3VyIGVuZC4KKwkgKiBOb3JtYWxs eSB3aGVuIGZyb250IGRyaXZlciByZW1vdmVkIGJhY2tlbmQgd2lsbCBmaW5hbGx5IGdvIGludG8K KwkgKiBYZW5idXNTdGF0ZUluaXRXYWl0IHN0YXRlLgorCSAqCisJICogV29ya2Fyb3VuZDogcmVh ZCBiYWNrZW5kJ3Mgc3RhdGUgbWFudWFsbHkgYW5kIHdhaXQgd2l0aCB0aW1lLW91dC4KKwkgKi8K Kwl3aGlsZSAoKHhlbmJ1c19yZWFkX3Vuc2lnbmVkKGZyb250X2luZm8tPnhiX2Rldi0+b3RoZXJl bmQsICJzdGF0ZSIsCisJCQkJICAgICBYZW5idXNTdGF0ZVVua25vd24pICE9IFhlbmJ1c1N0YXRl SW5pdFdhaXQpICYmCisJCQkJICAgICB0by0tKQorCQltc2xlZXAoMTApOworCisJaWYgKCF0bykg eworCQl1bnNpZ25lZCBpbnQgc3RhdGU7CisKKwkJc3RhdGUgPSB4ZW5idXNfcmVhZF91bnNpZ25l ZChmcm9udF9pbmZvLT54Yl9kZXYtPm90aGVyZW5kLAorCQkJCQkgICAgICJzdGF0ZSIsIFhlbmJ1 c1N0YXRlVW5rbm93bik7CisJCXByX2VycigiQmFja2VuZCBzdGF0ZSBpcyAlcyB3aGlsZSByZW1v dmluZyBkcml2ZXJcbiIsCisJCSAgICAgICB4ZW5idXNfc3Ryc3RhdGUoc3RhdGUpKTsKKwl9CisK Kwl4ZW5fc25kX2Rydl9maW5pKGZyb250X2luZm8pOworCXhlbmJ1c19mcm9udGVuZF9jbG9zZWQo ZGV2KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB4ZW5idXNfZGV2aWNl X2lkIHhlbl9kcnZfaWRzW10gPSB7CisJeyBYRU5TTkRfRFJJVkVSX05BTUUgfSwKKwl7ICIiIH0K K307CisKK3N0YXRpYyBzdHJ1Y3QgeGVuYnVzX2RyaXZlciB4ZW5fZHJpdmVyID0geworCS5pZHMg PSB4ZW5fZHJ2X2lkcywKKwkucHJvYmUgPSB4ZW5fZHJ2X3Byb2JlLAorCS5yZW1vdmUgPSB4ZW5f ZHJ2X3JlbW92ZSwKKwkub3RoZXJlbmRfY2hhbmdlZCA9IHNuZGJhY2tfY2hhbmdlZCwKK307CisK K3N0YXRpYyBpbnQgX19pbml0IHhlbl9kcnZfaW5pdCh2b2lkKQoreworCWlmICgheGVuX2RvbWFp bigpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmICgheGVuX2hhc19wdl9kZXZpY2VzKCkpCisJ CXJldHVybiAtRU5PREVWOworCisJcHJfaW5mbygiSW5pdGlhbGlzaW5nIFhlbiAiIFhFTlNORF9E UklWRVJfTkFNRSAiIGZyb250ZW5kIGRyaXZlclxuIik7CisJcmV0dXJuIHhlbmJ1c19yZWdpc3Rl cl9mcm9udGVuZCgmeGVuX2RyaXZlcik7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCB4ZW5fZHJ2 X2Zpbmkodm9pZCkKK3sKKwlwcl9pbmZvKCJVbnJlZ2lzdGVyaW5nIFhlbiAiIFhFTlNORF9EUklW RVJfTkFNRSAiIGZyb250ZW5kIGRyaXZlclxuIik7CisJeGVuYnVzX3VucmVnaXN0ZXJfZHJpdmVy KCZ4ZW5fZHJpdmVyKTsKK30KKworbW9kdWxlX2luaXQoeGVuX2Rydl9pbml0KTsKK21vZHVsZV9l eGl0KHhlbl9kcnZfZmluaSk7CisKK01PRFVMRV9ERVNDUklQVElPTigiWGVuIHZpcnR1YWwgc291 bmQgZGV2aWNlIGZyb250ZW5kIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJ QVMoInhlbjoiIFhFTlNORF9EUklWRVJfTkFNRSk7CitNT0RVTEVfU1VQUE9SVEVEX0RFVklDRSgi e3tBTFNBLFZpcnR1YWwgc291bmRjYXJkfX0iKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3hlbi94ZW5f c25kX2Zyb250LmggYi9zb3VuZC94ZW4veGVuX3NuZF9mcm9udC5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGFlMjA0YjIzZDMyCi0tLSAvZGV2L251bGwKKysrIGIv c291bmQveGVuL3hlbl9zbmRfZnJvbnQuaApAQCAtMCwwICsxLDE4IEBACisvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBNSVQgKi8KKworLyoKKyAqIFhlbiBwYXJhLXZpcnR1 YWwgc291bmQgZGV2aWNlCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggRVBBTSBTeXN0 ZW1zIEluYy4KKyAqCisgKiBBdXRob3I6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2Fu ZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KKyAqLworCisjaWZuZGVmIF9fWEVOX1NORF9GUk9O VF9ICisjZGVmaW5lIF9fWEVOX1NORF9GUk9OVF9ICisKK3N0cnVjdCB4ZW5fc25kX2Zyb250X2lu Zm8geworCXN0cnVjdCB4ZW5idXNfZGV2aWNlICp4Yl9kZXY7Cit9OworCisjZW5kaWYgLyogX19Y RU5fU05EX0ZST05UX0ggKi8KLS0gCjIuMTYuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s aXN0aW5mby94ZW4tZGV2ZWw=