From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Grytsov Subject: Re: [PATCH RESEND1 00/12] ALSA: vsnd: Add Xen para-virtualized frontend driver Date: Thu, 17 Aug 2017 13:05:37 +0300 Message-ID: References: <1502108577-8099-1-git-send-email-andr2000@gmail.com> <7e62a406-7dcd-b5c9-b2de-ea52e1d2afd0@sakamocchi.jp> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Oleksandr Andrushchenko , clemens@ladisch.de, o-takashi@sakamocchi.jp Cc: Oleksandr Andrushchenko , alsa-devel@alsa-project.org, tiwai@suse.com, linux-kernel@vger.kernel.org, xen-devel@lists.xen.org List-Id: alsa-devel@alsa-project.org T24gVGh1LCBBdWcgMTAsIDIwMTcgYXQgMTE6MTAgQU0sIE9sZWtzYW5kciBBbmRydXNoY2hlbmtv CjxhbmRyMjAwMEBnbWFpbC5jb20+IHdyb3RlOgo+IEhpLAo+Cj4gdGhhbmsgeW91IHZlcnkgbXVj aCBmb3IgdmFsdWFibGUgY29tbWVudHMgYW5kIHlvdXIgdGltZSEKPgo+Cj4gT24gMDgvMTAvMjAx NyAwNjoxNCBBTSwgVGFrYXNoaSBTYWthbW90byB3cm90ZToKPj4KPj4gSGksCj4+Cj4+IE9uIEF1 ZyA3IDIwMTcgMjE6MjIsIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+Pj4KPj4+IEZy b206IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFt LmNvbT4KPj4+Cj4+PiBUaGlzIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIFhlbiBbMV0g cGFyYS12aXJ0dWFsaXplZAo+Pj4gc291bmQgZnJvbnRlbmQgZHJpdmVyLiBJdCBpbXBsZW1lbnRz IHRoZSBwcm90b2NvbCBmcm9tCj4+PiBpbmNsdWRlL3hlbi9pbnRlcmZhY2UvaW8vc25kaWYuaCB3 aXRoIHRoZSBmb2xsb3dpbmcgbGltaXRhdGlvbnM6Cj4+PiAtIG11dGUvdW5tdXRlIGlzIG5vdCBz dXBwb3J0ZWQKPj4+IC0gZ2V0L3NldCB2b2x1bWUgaXMgbm90IHN1cHBvcnRlZAo+Pj4gVm9sdW1l IGNvbnRyb2wgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhlIHJlYXNvbiB0aGF0IG1vc3Qgb2YgdGhl Cj4+PiB1c2UtY2FzZXMgKGF0IHRoZSBtb21lbnQpIGFyZSBiYXNlZCBvbiBzY2VuYXJpb3VzIHdo ZXJlCj4+PiB1bnByaXZpbGVnZWQgT1MgKGUuZy4gQW5kcm9pZCwgQUdMIGV0YykgdXNlIHNvZnR3 YXJlIG1peGVycy4KPj4+Cj4+PiBCb3RoIGNhcHR1cmUgYW5kIHBsYXliYWNrIGFyZSBzdXBwb3J0 ZWQuCj4+Pgo+Pj4gVGhhbmsgeW91LAo+Pj4gT2xla3NhbmRyCj4+Pgo+Pj4gUmVzZW5kaW5nIGJl Y2F1c2Ugb2YgcmViYXNlIG9udG8gWzJdICsgYWRkZWQgbWlzc2luZyBwYXRjaAo+Pj4KPj4+IFsx XSBodHRwczovL3hlbnByb2plY3Qub3JnLwo+Pj4gWzJdCj4+PiBodHRwczovL2dpdC5rZXJuZWwu b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90aXdhaS9zb3VuZC5naXQvbG9nLz9oPWZvci1u ZXh0Cj4+Pgo+Pj4gT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gKDEyKToKPj4+ICAgIEFMU0E6IHZz bmQ6IEludHJvZHVjZSBYZW4gcGFyYS12aXJ0dWFsaXplZCBzb3VuZCBmcm9udGVuZCBkcml2ZXIK Pj4+ICAgIEFMU0E6IHZzbmQ6IEltcGxlbWVudCBkcml2ZXIncyBwcm9iZS9yZW1vdmUKPj4+ICAg IEFMU0E6IHZzbmQ6IEltcGxlbWVudCBYZW4gYnVzIHN0YXRlIGhhbmRsaW5nCj4+PiAgICBBTFNB OiB2c25kOiBSZWFkIHNvdW5kIGRyaXZlciBjb25maWd1cmF0aW9uIGZyb20gWGVuIHN0b3JlCj4+ PiAgICBBTFNBOiB2c25kOiBJbXBsZW1lbnQgWGVuIGV2ZW50IGNoYW5uZWwgaGFuZGxpbmcKPj4+ ICAgIEFMU0E6IHZzbmQ6IEltcGxlbWVudCBoYW5kbGluZyBvZiBzaGFyZWQgYnVmZmVycwo+Pj4g ICAgQUxTQTogdnNuZDogSW50cm9kdWNlIEFMU0EgdmlydHVhbCBzb3VuZCBkcml2ZXIKPj4+ICAg IEFMU0E6IHZzbmQ6IEluaXRpYWxpemUgdmlydHVsIHNvdW5kIGNhcmQKPj4+ICAgIEFMU0E6IHZz bmQ6IEFkZCB0aW1lciBmb3IgcGVyaW9kIGludGVycnVwdCBlbXVsYXRpb24KPj4+ICAgIEFMU0E6 IHZzbmQ6IEltcGxlbWVudCBBTFNBIFBDTSBvcGVyYXRpb25zCj4+PiAgICBBTFNBOiB2c25kOiBJ bXBsZW1lbnQgY29tbXVuaWNhdGlvbiB3aXRoIGJhY2tlbmQKPj4+ICAgIEFMU0E6IHZzbmQ6IElu dHJvZHVjZSBLY29uZmlnIG9wdGlvbiB0byBlbmFibGUgWGVuIFBWIHNvdW5kCj4+Pgo+Pj4gICBz b3VuZC9kcml2ZXJzL0tjb25maWcgICAgIHwgICAxMiArCj4+PiAgIHNvdW5kL2RyaXZlcnMvTWFr ZWZpbGUgICAgfCAgICAyICsKPj4+ICAgc291bmQvZHJpdmVycy94ZW4tZnJvbnQuYyB8IDIxMDcK Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4gICAz IGZpbGVzIGNoYW5nZWQsIDIxMjEgaW5zZXJ0aW9ucygrKQo+Pj4gICBjcmVhdGUgbW9kZSAxMDA2 NDQgc291bmQvZHJpdmVycy94ZW4tZnJvbnQuYwo+Pgo+Pgo+PiBGb3IgdGhpcyBwYXRjaHNldCwg SSBoYXZlIHRoZSBzYW1lIGNvbmNlcm4gd2hpY2ggQ2xlbWVucyBMYWRpc2NoCj4+IGRlbm90ZWRb MV0uIElmIEkgY2FuIHVuZGVyc3RhbmQgeW91ciBleHBsYW5hdGlvbiBhYm91dCBxdWV1ZWluZyBi ZXR3ZWVuCj4+IERvbTAvRG9tVSBzdHVmZnMsIHRoZSBjb25jZXJuIGNhbiBiZSBkZXNjcmliZWQg aW4gc2hvcnQgd29yZHM7IHRoaXMKPj4gZHJpdmVyIHdvcmtzIHdpdGhvdXQgYW55IHN5bmNocm9u aXphdGlvbiB0byBkYXRhIHRyYW5zbWlzc2lvbiBieSBhY3R1YWwKPj4gc291bmQgaGFyZHdhcmVz Lgo+Pgo+IFllcywgYm90aCB5b3VyIGNvbmNlcm5zIGFuZCB1bmRlcnN0YW5kaW5nIGFyZSBjb3Jy ZWN0Cj4+Cj4+IEluIGRlc2lnbiBvZiBBTFNBIFBDTSBjb3JlLCBkcml2ZXJzIGFyZSBleHBlY3Rl ZCB0byBzeW5jaHJvbml6ZSB0bwo+PiBhY3R1YWwgaGFyZHdhcmVzIGZvciBzZW1pLXJlYWx0aW1l IGRhdGEgdHJhbnNtaXNzaW9uLiBUaGUKPj4gc3luY2hyb25pemF0aW9uIGlzIGRvbmUgYnkgdHdv IHBvaW50czoKPj4gMSkgSW50ZXJydXB0cyB0byByZXNwb25kIGV2ZW50cyBmcm9tIGFjdHVhbCBo YXJkd2FyZXMuCj4+IDIpIFBvc2l0aW9ucyBvZiBhY3R1YWwgZGF0YSB0cmFuc21pc3Npb24gaW4g YW55IHNlcmlhbCBzb3VuZCBpbnRlcmZhY2VzCj4+ICAgIG9mIGFjdHVhbCBoYXJkd2FyZXMuCj4+ Cj4+IFRoZXNlIHR3byBwb2ludHMgY29tZXMgZnJvbSB0eXBpY2FsIGRlc2lnbnMgb2YgYWN0dWFs IGhhcmR3YXJlcywgdGh1cwo+PiB0aGV5IGRvZXNuJ3QgY29tZSBmcm9tIHVuZmFpciwgdW5yZWFz b25hYmxlLCBpbnRydXNpdmUgZGVtYW5kcyBmcm9tCj4+IHNvZnR3YXJlIHNpZGUuCj4+Cj4gVGhp cyBjbGVhciwgdGhhbmsgeW91Cj4+Cj4+IEluIGRlc2lnbiBvZiB0eXBpY2FsIHN0dWZmcyBvbiBw YXJhLXZpcnR1YWxpemF0aW9uLCBEb20wIHN0dWZmcyBhcmUgaGFyZAo+PiB0byBnaXZlIGVub3Vn aCBhYnN0cmFjdGlvbiBvZiBzb3VuZCBoYXJkd2FyZXMgaW4gdGhlc2UgdHdvIHBvaW50cyBmb3IK Pj4gRG9tVSBzdHVmZnMuIEVzcGVjaWFsbHksIGl0IGNhbm5vdCBhYnN0cmFjdCBwb2ludCAyKSBh dCBhbGwgYmVjYXVzZSB0aGUKPj4gdmFsdWUgb2YgcG9zaXRpb24gc2hvdWxkIGJlIGFjY3VyYXRl IGFnYWluc3QgYWN0dWFsIHRpbWUgZnJhbWUsIHdoaWxlCj4+IHRoZXJlJ3MgYW4gb3ZlcmhlYWQg Zm9yIERvbVUgc3R1ZmZzIHRvIHJlYWQgaXQuIFdoZW4gRG9tVSBzdHVmZnMgaGFuZGxlcwo+PiB0 aGUgdmFsdWUsIHRoZSB2YWx1ZSBpcyBlbm91Z2ggcGFzdCBkdWUgdG8gY29udGV4dCBzd2l0Y2hl cyBiZXR3ZWVuCj4+IERvbTAvRG9tVS4gVGhlcmVmb3JlLCB0aGlzIGRyaXZlciBtdXN0IHJlbHkg b24gcG9pbnQgMSkgdG8gc3luY2hyb25pemUKPj4gdG8gYWN0dWFsIHNvdW5kIGhhcmR3YXJlcy4K CkluIG9yZGVyIHRvIGltcGxlbWVudCBvcHRpb24gMSkgZGlzY3Vzc2VkIChJbnRlcnJ1cHRzIHRv IHJlc3BvbmQgZXZlbnRzIGZyb20KYWN0dWFsIGhhcmR3YXJlcykgd2UgZGlkIG51bWJlciBvZiBl eHBlcmltZW50cyB0byBmaW5kIG91dCBpZiBpdCBjYW4gYmUKaW1wbGVtZW50ZWQgaW4gdGhlIHdh eSBpdCBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50cyB3aXRoIHJlc3BlY3QgdG8gbGF0ZW5jeSwK aW50ZXJydXB0IG51bWJlciBhbmQgdXNlLWNhc2VzLgoKRmlyc3Qgb2YgYWxsIHRoZSBzb3VuZCBi YWNrZW5kIGlzIGEgdXNlci1zcGFjZSBhcHBsaWNhdGlvbiB3aGljaCB1c2VzIGVpdGhlcgpBTFNB IG9yIFB1bHNlQXVkaW8gdG8gcGxheS9jYXB0dXJlIGF1ZGlvIGRlcGVuZGluZyBvbiBjb25maWd1 cmF0aW9uLgpNb3N0IG9mIHRoZSB1c2UtY2FzZXMgd2UgaGF2ZSBhcmUgdXNpbmcgUHVsc2VBdWRp byBhcyBpdCBhbGxvd3MgdG8KaW1wbGVtZW50IG1vcmUgY29tcGxleCB1c2UgY2FzZXMgdGhlbiBq dXN0IHBsYWluIEFMU0EuCgpXZSBzdGFydGVkIHRvIGxvb2sgYXQgaG93IGNhbiB3ZSBnZXQgc3Vj aCBhbiBldmVudCBzbyBpdCBjYW4gYmUgdXNlZCBhcwphIHBlcmlvZCBlbGFwc2VkIG5vdGlmaWNh dGlvbiB0byB0aGUgYmFja2VuZC4KCkluIGNhc2Ugb2YgQUxTQSB3ZSB1c2VkIHBvbGwgbWVjaGFu aXNtIHRvIHdhaXQgZm9yIGV2ZW50cyBmcm9tIEFMU0E6CndlIGNvbmZpZ3VyZWQgU1cgcGFyYW1z IHRvIGhhdmUgcGVyaW9kIGV2ZW50LCBidXQgdGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0Cml0IGlz IG5vdGlmaWVkIG5vdCBvbmx5IHdoZW4gcGVyaW9kIGVsYXBzZXMsIGJ1dCBhbHNvIHdoZW4gQUxT QSBpcyByZWFkeSB0bwpjb25zdW1lIG1vcmUgZGF0YS4gVGhlcmUgaXMgbm8gbWVjaGFuaXNtIHRv IGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlc2UKdHdvIGV2ZW50cyAocGxlYXNlIGNvcnJlY3QgdXMg aWYgdGhlcmUgaXMgb25lKS4gQW55d2F5cywgZXZlbiBpZiBBTFNBIHByb3ZpZGVzCnBlcmlvZCBl dmVudCB0byB1c2VyLXNwYWNlIChhZ2FpbiwgYmFja2VuZCBpcyBhIHVzZXItc3BhY2UgYXBwbGlj YXRpb24pCmxhdGVuY3kgd2lsbCBjb25zaXN0IG9mOiB0aW1lIGZyb20ga2VybmVsIHRvIHVzZXIt c3BhY2UsIHVzZXItc3BhY2UgRG9tMCB0bwpmcm9udGVuZCBkcml2ZXIgRG9tVS4gQm90aCBhcmUg dmFyaWFibGUgYW5kIGRlcGVuZCBvbiBtYW55IGZhY3RvcnMsCnNvIHRoZSBsYXRlbmN5IGlzIG5v dCBkZXRlcm1pbmlzdGljLgoKKFdlIHdlcmUgYWxzbyB0aGlua2luZyB0aGF0IHdlIGNhbiBpbXBs ZW1lbnQgYSBoZWxwZXIgZHJpdmVyIGluIERvbTAgdG8gaGF2ZQphIGRlZGljYXRlZCBjaGFubmVs IGZyb20gQUxTQSB0byB0aGUgYmFja2VuZCB0byBkZWxpdmVyIHBlcmlvZCBlbGFwc2VkIGV2ZW50 LApzbyBmb3IgaW5zdGFuY2UsIGl0IGNhbiBoYXZlIHNvbWUga2luZCBvZiBhIGhvb2sgb24gc25k X3BjbV9wZXJpb2RfZWxhcHNlZCwKYnV0IGl0IHdpbGwgbm90IHNvbHZlIHRoZSB1c2UtY2FzZSB3 aXRoIFB1bHNlQXVkaW8gZGlzY3Vzc2VkIGJlbG93LgpBbHNvIGl0IGlzIHVuY2xlYXIgaG93IHRv IGhhbmRsZSBzY2VuYXJpbyB3aGVuIG11bHRpcGxlIERvbVUgcGxheXMgdGhyb3VnaAptaXhlciB3 aXRoIGRpZmZlcmVudCBmcmFtZSByYXRlcywgY2hhbm5lbHMgZXRjLikuCgpJbiBjYXNlIG9mIFB1 bHNlQXVkaW8gaXQgaXMgZXZlbiB3b3JzZS4gUHVsc2VBdWRpbyBjYW7igJl0IHByb3ZpZGUgYW55 IHBlcmlvZApyZWxhdGVkIGluZm9ybWF0aW9uIChhZ2FpbiwgcGxlYXNlIGxldCB1cyBrbm93IGlm IHRoaXMgaXMgbm90IHRydWUpLiBGcm9tIG91cgp1bmRlcnN0YW5kaW5nLCBldmVudCBpZiBnZXQg c3VjaCBhbiBldmVudCBmcm9tIFB1bHNlQXVkaW8gaXQgd2lsbCBiZSBzb2Z0d2FyZQplbXVsYXRl ZCBpbiB1c2VyLXNwYWNlOiBmb3IgZXhhbXBsZSwgd2hlbiBQdWxzZUF1ZGlvIHVzZXMgYSBzaW5n bGUgQUxTQQpzaW5rIGFuZCBtaXhlcyB0d28gc3RyZWFtcyB3aXRoIGRpZmZlcmVudCBmcmFtZSBy YXRlcywgaXQgd2lsbCBnZW5lcmF0ZSBhdCBsZWFzdApmb3Igb25lIG9mIHRoZSBzdHJlYW1zIGEg c29mdHdhcmUgcGVyaW9kIGVsYXBzZWQgZXZlbnQuCgpTbywgZnJvbSB0aGUgYWJvdmUgd2UgdGhp bmsgdGhhdCBwZXJpb2QgZWxhcHNlZCBldmVudCBkZXJpdmVkIGluIHRoZSBkZXNjcmliZWQKd2F5 cyBtYXkgbm90IGltcHJvdmUgbGF0ZW5jeSBhbmQgd2lsbCBjb21wbGljYXRlIHRoZSBzeXN0ZW0u IFNvLCBmb3IgdGhhdApyZWFzb24gd2UgYXJlIHRoaW5raW5nIG9mIHRoZSBvcHRpb24gMikgKFBv c2l0aW9ucyBvZiBhY3R1YWwgZGF0YSB0cmFuc21pc3Npb24KaW4gYW55IHNlcmlhbCBzb3VuZCBp bnRlcmZhY2VzIG9mIGFjdHVhbCBoYXJkd2FyZXMuKQoKSW4gYm90aCBBTFNBIGFuZCBQdWxzZUF1 ZGlvIGNhc2VzIHdlIGNhbiBnZXQgdGltZXN0YW1wIGluZm9ybWF0aW9uCihjdXJyZW50IHNhbXBs ZSB0aW1lc3RhbXApLiBJdCBjYW4gYmUgY29udmVydGVkIHRvIGZyYW1lcyBvciBieXRlcyBvcgp3 aGF0ZXZlciB0aGF0IGhhcyBiZWVuIHByb2Nlc3NlZCBieSB0aGUgSFcuIFRoZSBiYWNrZW5kIGNh biBnZXQKdGltZXN0YW1wIHBlcmlvZGljYWxseSAod2l0aCBwb2xsaW5nIHBlcmlvZCBjb25maWd1 cmVkIHdpdGggcmVzcGVjdAp0byBmcmFtZXJhdGVzIGJlaW5nIHBsYXllZCkgYW5kIHBhc3MgaXQg dG8gdGhlIGZyb250ZW5kLiBEdWUgdG8gY29udGV4dApzd2l0Y2ggYW5kIG90aGVyIGZhY3RvcnMg dGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJlIG91dGRhdGVkIGFzIHdlbGwsIGJ1dCBpdCBzZWVtcwp0 byBiZSB0aGUgYmVzdCBzeW5jIGFwcHJvYWNoIHRoZSBiYWNrZW5kIGNhbiBwcm92aWRlLgoKU28s IGZyb20gdGhlIGFib3ZlLCBib3RoIG9wdGlvbnMgZm9yIHN5bmNocm9uaXphdGlvbiBjYW5ub3Qg Z3VhcmFudGVlIHRoYXQKd2Ugd2lsbCBpbmRlZWQgYmUgc3luY2hyb25vdXMgb3IgbGF0ZW5jeSBp cyBkZXRlcm1pbmlzdGljLCBidXQgbWF5IGltcHJvdmUKdGhpbmdzIGNvbXBhcmluZyB0byB0aGUg a2VybmVsIHRpbWVyIG9uIGZyb250ZW5k4oCZcyBzaWRlLgoKQWxsLCBjb3VsZCB5b3UgcGxlYXNl IHRlbGwgdXMgeW91ciBvcGluaW9uIG9uIHRoZSBhYm92ZSBhbmQgc3VnZ2VzdCB3aGF0CmNvdWxk IGJlIHRoZSByaWdodCB3YXkgdG8gZ28/Cgo+IFdoaWNoIHdpbGwgYWxzbyBpbnRyb2R1Y2Ugc29t ZSBsYXRlbmN5IHRvbzogdGltZSBuZWVkZWQgdG8gZGVsaXZlciBhbmQKPiBoYW5kbGUgaW50ZXJy dXB0IGZyb20gRG9tMCB0byBEb21VCj4+Cj4+IFR5cGljYWxseSwgZHJpdmVycyBjb25maWd1cmUg aGFyZHdhcmVzIHRvCj4+IGdlbmVyYXRlIGludGVycnVwdHMgcGVyIHBlcmlvZCBvZiBQQ00gYnVm ZmVyLiBUaGlzIG1lYW5zIHRoYXQgdGhpcwo+PiBkcml2ZXIgc2hvdWxkIG5vdGlmeSB0byBEb20w IGFib3V0IHRoZSB2YWx1ZSBvZiBwZXJpb2Qgc2l6ZSByZXF1ZXN0ZWQKPj4gYnkgYXBwbGljYXRp b25zLgo+Pgo+PiBJbiAnaW5jbHVkZS94ZW4vaW50ZXJmYWNlL2lvL3NuZGlmLmgnLCB0aGVyZSdz IG5vIGZ1bmN0aW9uYWxpdGllcyBJCj4+IGRlc2NyaWJlZCB0aGUgYWJvdmU6Cj4+IDEuIG5vdGlm aWNhdGlvbnMgZnJvbSBEb21VIHRvIERvbTAgYWJvdXQgdGhlIHNpemUgb2YgcGVyaW9kIGZvcgo+ PiAgICBpbnRlcnJ1cHRzIGZyb20gYWN0dWFsIGhhcmR3YXJlcy4gT3Igbm8gd2F5IGZyb20gRG9t MCB0byBEb21VIGFib3V0Cj4+ICAgIHRoZSBjb25maWd1cmVkIHNpemUgb2YgdGhlIHBlcmlvZC4K Pgo+IE9rLCB0aGVuIG9uICJvcGVuIiBjb21tYW5kIEkgd2lsbCBwYXNzIGZyb20gRG9tVSB0byBE b20wIGFuIGFkZGl0aW9uYWwKPiBwYXJhbWV0ZXIsIHBlcmlvZCBzaXplLiBUaGVuIERvbTAgd2ls bCByZXNwb25kIHdpdGggYWN0dWFsIHBlcmlvZCBzaXplCj4gZm9yIERvbVUgdG8gdXNlLiBTbywg dGhpcyB3YXkgcGVyaW9kIHNpemUgd2lsbCBiZSBuZWdvdGlhdGVkLgo+IERvZXMgdGhlIGFib3Zl IGxvb2sgb2sgdG8geW91Pwo+Pgo+PiAyLiBub3RpZmljYXRpb25zIG9mIHRoZSBpbnRlcnJ1cHRz IGZyb20gYWN0dWFsIGhhcmR3YXJlcyB0byBEb21VLgo+Pgo+IE9rLCBJIHdpbGwgaW50cm9kdWNl IGFuIGV2ZW50IGZyb20gRG9tMCB0byBEb21VIHRvIHNpZ25hbCBwZXJpb2QgZWxhcHNlZC4KPgo+ IFRha2luZyBpbnRvIGFjY291bnQgdGhlIGZhY3QgdGhhdCBwZXJpb2Qgc2l6ZSBtYXkgYmUgYXMg c21hbGwgYXMsCj4gc2F5LCAxbXMsIGRvIHlvdSB0aGluayB3ZSBjYW4vbmVlZCB0byBtYW5nbGUg cGVyaW9kIHNpemUgaW4gMSkgb24gRG9tMCBzaWRlCj4gdG8gYmUgcmVhc29uYWJsZSwgc28gd2Ug ZG8gbm90IGZsb29kIHdpdGggaW50ZXJydXB0cy9ldmVudHMgZnJvbSBEb20wIHRvCj4gRG9tVT8K PiBEbyB5b3Ugc2VlIGFueSAiZm9ybXVsYSIgdG8gZGV0ZXJtaW5lIHRoYXQgcmVhc29uYWJsZS9h Y2NlcHRhYmxlCj4gcGVyaW9kIGxpbWl0LCBzbyBib3RoIERvbTAgYW5kIERvbVUgYXJlIGhhcHB5 Pwo+Cj4+IEZvciB0aGUgcmVhc29ucywgeW91ciBkcml2ZXIgdXNlZCBrZXJuZWwncyB0aW1lciBp bnRlcmZhY2UgdG8gZ2VuZXJhdGUKPj4gJ3BzZXVkbycgaW50ZXJydXB0cyBmb3IgdGhlIHB1cnBv c2UuIEhvd2V2ZXIsIGl0IGRlcGVuZHMgb24gRG9tMCdzCj4+IGFic3RyYWN0aW9uIGRpZmZlcmVu dCBmcm9tIHNvdW5kIGhhcmR3YXJlcyBhbmQgTGludXgga2VybmVsJ3MKPj4gYWJzdHJhY3Rpb24g Zm9yIHRpbWVyIGZ1bmN0aW9uYWxpdHkuIEluIHRoaXMgY2FzZSwgZ2FwIGJldHdlZW4gJ2FjdHVh bCcKPj4gaW50ZXJydXB0cyBmcm9tIGhhcmR3YXJlIGFuZCB0aGUgJ3BzZXVkbycgaW50ZXJydXB0 cyBmcm9tIGEgY29tYmluYXRpb24KPj4gb2Ygc2V2ZXJhbCBjb21wb25lbnRzIGJyaW5ncyB1bmV4 cGVjdGVkIHJlc3VsdCBvbiBzZXZlcmFsIHNpdHVhdGlvbnMuCj4+Cj4gWW91IGFyZSByaWdodAo+ Pgo+PiBJIHRoaW5rIHRoaXMgaXMgZGVmZWN0cyBvZiAnc25kaWYnIGludGVyZmFjZSBpbiBYZW4g c2lkZS4gSSB0aGluayBpdAo+PiBiZXR0ZXIgZm9yIHlvdSB0byB3b3JrIGluIFhlbiBjb21tdW5p dHkgdG8gaW1wcm92ZSB0aGUgYWJvdmUgaW50ZXJmYWNlCj4+IGF0IGZpcnN0LCB0aGVuIHdvcmsg Zm9yIExpbnV4IHN0dWZmcy4KPj4KPiBQbGVhc2Ugc2VlIGFib3ZlIGZvciBwbGFubmVkIGNoYW5n ZXMgdG8gdGhlIHByb3RvY29sCj4+Cj4+Cj4+IEFkZGl0aW9uYWxseSwgaW4gbmV4dCB0aW1lLCBw bGVhc2UgcmVtaW5kIG9mIHNldmVyYWwgcG9pbnRzIGJlbG93Ogo+PiAgKiBXaGVuIGEgZmlyc3Qg cGF0Y2ggYWRkcyBhbiBpbml0aWFsIGNvZGUgZm9yIGRyaXZlcnMsIGl0IHNob3VsZAo+PiAgICBp bmNsdWRlIGVudHJpZXMgZm9yIE1ha2VmaWxlIGFuZCBLY29uZmlnLCBzbyB0aGF0IHRoZSBkcml2 ZXIgY2FuIGJlCj4+ICAgIGJ1aWx0IGV2ZW4gaWYgaXQncyBzdGlsbCBpbiBhbiBpbml0aWFsIHNo YXBlLgo+Cj4gV2lsbCBkbwo+Pgo+PiBFYWNoIHBhdGNoIHNob3VsZCBiZQo+PiAgICBzZWxmLWNv bnRhaW5lZCBhbmQgc2hvdWxkIGJlIGluIGEgc2hhcGUgc28gdGhhdCBkZXZlbG9wZXJzIGVhc2ls eSBydW4KPj4gICAgYmlzZWN0aW5nLiBJbiBvdGhlciB3b3JkcywgeW91ciBmaXJzdCBwYXRjaFsy XSBpbmNsdWRlcyBtb2RpZmljYXRpb24KPj4gICBmb3IgTWFrZWZpbGUgYW5kIEtjb25maWcgaW4g eW91ciBsYXN0IHBhdGNoWzNdLgo+Cj4gV2lsbCBkbwo+Pgo+PiAgKiBXaGVuIGFueSByZWFkLW9u bHkgc3ltYm9scyBpcyBhZGRlZCwgIGl0IHNob3VsZCBoYXZlICdjb25zdCcKPj4gICAgcXVhbGlm aWVyIHNvIHRoYXQgdGhlIHN5bWJvbCBwbGFjZXMgdG8gLnJvZGF0YSBzZWN0aW9uIG9mIEVMRgo+ PiAgICBiaW5hcmllcy4gRm9yIGV4YW1wbGUsIGluIHlvdXIgY29kZSwgJ2Fsc2Ffc25kaWZfZm9y bWF0cycgaXMgc3VjaCBhbgo+PiAgICBzeW1ib2wuIEluIHJlY2VudCBMaW51eCBkZXZlbG9wbWVu dCwgc29tZSBkZXZlbG9wZXJzIHdvcmsgZm9yCj4+ICAgIGNvbnN0aWZ5aW5nIHN1Y2ggc3ltYm9s cy4gUGxlYXNlIHJlbWluZCBvZiB0aGVpciBjb250aW51b3VzIHdvcmtzIGluCj4+ICAgIHVwc3Ry ZWFtWzRdLgo+Cj4gV2lsbCBkbwo+Pgo+PiAgKiBZb3UgY2FuIHNwbGl0IHlvdXIgZHJpdmVyIHRv IHNldmVyYWwgZmlsZXMuIEluCj4+ICAgICdpbmNsdWRlL3hlbi9pbnRlcmZhY2UvaW8vc25kaWYu aCcsIERvbTAgcHJvZHVjZXMgZnVuY3Rpb25hbGl0aWVzIGZvcgo+PiAgICBEb21VIHRvIGNvbnRy b2wgZ2Fpbi92b2x1bWUvbXV0ZSBhbmQgaW4gZnV0dXJlIHlvdXIgZHJpdmVyIG1heSBnZXQKPj4g ICAgbW9yZSBjb2Rlcy4gSWYgc3BsaXQgdG8gc2V2ZXJhbCBmaWxlcyBtYWtlIGl0IHJlYWRhYmxl LCBpdCBzaG91bGQgYmUKPj4gICAgZG9uZS4KPgo+IFdpbGwgZG8uIElmIEkgc3BsaXQsIGRvIHlv dSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gbW92ZSB0aGUgZHJpdmVyCj4gZnJvbSBzb3Vu ZC9kcml2ZXJzIHRvIHNvdW5kL3hlbiBmb2xkZXIsIHNvIGFsbCB0aG9zZSBmaWxlcyBkbyBub3Qg bWl4Cj4gd2l0aCB0aGUgcmVzdD8KPj4KPj4gICogSW4gbXkgdGFzdGUsIGEgcHJlZml4IG9mIHRo ZSBzdWJqZWN0IGxpbmUgc2hvdWxkIGJlICd4ZW4tZnJvbnQnLAo+PiAgIGluc3RlYWQgb2YgJ3Zz bmQnLiBJdCBjb21lcyBmcm9tIG5hbWUgb2YgeW91ciBkcml2ZXIuCj4+Cj4gV2lsbCBkbwo+Pgo+ PiBbMV0gW2Fsc2EtZGV2ZWxdIFtQQVRDSCAwOC8xMV0gQUxTQTogdnNuZDogQWRkIHRpbWVyIGZv ciBwZXJpb2QgaW50ZXJydXB0Cj4+IGVtdWxhdGlvbgo+Pgo+PiBodHRwOi8vbWFpbG1hbi5hbHNh LXByb2plY3Qub3JnL3BpcGVybWFpbC9hbHNhLWRldmVsLzIwMTctQXVndXN0LzEyMzYxNy5odG1s Cj4+IFsyXSBbUEFUQ0ggUkVTRU5EMSAwMS8xMl0gQUxTQTogdnNuZDogSW50cm9kdWNlIFhlbiBw YXJhLXZpcnR1YWxpemVkIHNvdW5kCj4+IGZyb250ZW5kIGRyaXZlcgo+Pgo+PiBodHRwOi8vbWFp bG1hbi5hbHNhLXByb2plY3Qub3JnL3BpcGVybWFpbC9hbHNhLWRldmVsLzIwMTctQXVndXN0LzEy MzY1NC5odG1sCj4+IFszXSBbYWxzYS1kZXZlbF0gW1BBVENIIFJFU0VORDEgMTIvMTJdIEFMU0E6 IHZzbmQ6IEludHJvZHVjZSBLY29uZmlnCj4+IG9wdGlvbiB0byBlbmFibGUgWGVuIFBWIHNvdW5k Cj4+Cj4+IGh0dHA6Ly9tYWlsbWFuLmFsc2EtcHJvamVjdC5vcmcvcGlwZXJtYWlsL2Fsc2EtZGV2 ZWwvMjAxNy1BdWd1c3QvMTIzNjYyLmh0bWwKPj4gWzRdIFlvdSBjYW4gc2VlIG1hbnkgcG9zdHMg Zm9yIHRoaXM7IGUuZy4gW2Fsc2EtZGV2ZWxdIFtQQVRDSCAwLzddCj4+IGNvbnN0aWZ5IEFMU0Eg dXNiX2RldmljZV9pZC4KPj4KPj4gaHR0cDovL21haWxtYW4uYWxzYS1wcm9qZWN0Lm9yZy9waXBl cm1haWwvYWxzYS1kZXZlbC8yMDE3LUF1Z3VzdC8xMjM1NjQuaHRtbAo+Pgo+PiBSZWdhcmRzCj4+ Cj4+IFRha2FzaGkgU2FrYW1vdG8KPgo+IFRoYW5rIHlvdSwKPiBPbGVrc2FuZHIKPgo+Cj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Cj4gWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiBodHRwczovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCgoKCi0tIApCZXN0IFJlZ2FyZHMsCk9sZWtzYW5kciBHcnl0c292LgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==