From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: [Xen-devel][PATCH 0/2] sndif: add explicit back and front synchronization Date: Tue, 06 Mar 2018 14:48:43 +0100 Message-ID: References: <1517819100-1029-1-git-send-email-andr2000@gmail.com> <1531a22b-5df6-a66e-72ee-775538aeff4d@gmail.com> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by alsa0.perex.cz (Postfix) with ESMTP id AE8962670A1 for ; Tue, 6 Mar 2018 14:48:44 +0100 (CET) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Oleksandr Andrushchenko Cc: xen-devel@lists.xenproject.org, alsa-devel@alsa-project.org, Oleksandr Andrushchenko List-Id: alsa-devel@alsa-project.org T24gVHVlLCAwNiBNYXIgMjAxOCAxNDozMDowNSArMDEwMCwKT2xla3NhbmRyIEFuZHJ1c2hjaGVu a28gd3JvdGU6Cj4gCj4gT24gMDMvMDYvMjAxOCAwMjo1MiBQTSwgVGFrYXNoaSBJd2FpIHdyb3Rl Ogo+ID4gT24gVHVlLCAwNiBNYXIgMjAxOCAxMzowNToxNiArMDEwMCwKPiA+IE9sZWtzYW5kciBB bmRydXNoY2hlbmtvIHdyb3RlOgo+ID4+IE9uIDAzLzA2LzIwMTggMDE6MzIgUE0sIFRha2FzaGkg SXdhaSB3cm90ZToKPiA+Pj4gT24gVHVlLCAwNiBNYXIgMjAxOCAxMjoyNTowNyArMDEwMCwKPiA+ Pj4gT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6Cj4gPj4+PiBPbiAwMy8wNi8yMDE4IDEy OjUyIFBNLCBUYWthc2hpIEl3YWkgd3JvdGU6Cj4gPj4+Pj4gT24gTW9uLCAwNSBGZWIgMjAxOCAw OToyNDo1OCArMDEwMCwKPiA+Pj4+PiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3cm90ZToKPiA+ Pj4+Pj4gRnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hl bmtvQGVwYW0uY29tPgo+ID4+Pj4+Pgo+ID4+Pj4+PiBIaSwgYWxsIQo+ID4+Pj4+Pgo+ID4+Pj4+ PiBGb3Jld29yZAo+ID4+Pj4+PiA9PT09PT09PQo+ID4+Pj4+Pgo+ID4+Pj4+PiBUaGlzIGNoYW5n ZSBpcyBhaW1lZCB0byBhZGQgc3VwcG9ydCBmb3IgZXhwbGljaXQgYmFjayBhbmQgZnJvbnQKPiA+ Pj4+Pj4gc3luY2hyb25pemF0aW9uIGR1cmluZyBwbGF5YmFjayBhbmQgY2FwdHVyZSBpbiByZXNw b25zZSB0byBjb21tZW50cwo+ID4+Pj4+PiByYWlzZWQgZHVyaW5nIHVwc3RyZWFtIGF0dGVtcHQg b2YgdGhlIHBhcmEtdmlydHVhbGl6ZWQgc291bmQgZnJvbnRlbmQKPiA+Pj4+Pj4gZHJpdmVyIGZv ciBYZW4gWzFdLCBbMl0gYW5kIGdhdGhlciBvcGluaW9ucyBmcm9tIHRoZSByZWxldmFudCBjb21t dW5pdGllcwo+ID4+Pj4+PiAoQUxTQSwgWGVuKSBvbiB0aGUgY2hhbmdlLgo+ID4+Pj4+Pgo+ID4+ Pj4+PiBUaGUgcmVsZXZhbnQgYmFja2VuZCBpcyBpbXBsZW1lbnRlZCBhcyBhIHVzZXItc3BhY2Ug YXBwbGljYXRpb24gWzNdCj4gPj4+Pj4+IGFuZCB1c2VzIGFjY29tcGFueWluZyBoZWxwZXIgbGli cmFyeSBbNF0uCj4gPj4+Pj4+Cj4gPj4+Pj4+IEJvdGggZnJvbnRlbmQgZHJpdmVyIGFuZCBiYWNr ZW5kIHdlcmUgdGVzdGVkIG9uIHJlYWwgSFcgcnVubmluZyBYZW4gaHlwZXJ2aXNvcgo+ID4+Pj4+ PiAoUmVuZXNhcyBSLUNhciBBUk0gYmFzZWQgSDMvTTMgYm9hcmRzLCB4ODYpIHRvIG1ha2Ugc3Vy ZSB0aGUgcHJvcG9zZWQKPiA+Pj4+Pj4gc29sdXRpb24gZG9lcyB3b3JrLgo+ID4+Pj4+Pgo+ID4+ Pj4+PiBSYXRpb25hbGUKPiA+Pj4+Pj4gPT09PT09PT09Cj4gPj4+Pj4+Cj4gPj4+Pj4+IER1cmlu ZyB0aGUgZmlyc3QgYXR0ZW1wdCB0byB1cHN0cmVhbSB0aGUgTGludXggZnJvbnQgZHJpdmVyIFs1 XSBudW1iZXIKPiA+Pj4+Pj4gb2YgY29tbWVudHMgYW5kIGNvbmNlcm5zIHdlcmUgcmFpc2VkLCBv bmUgb2YgdGhlIGJpZ2dlc3QgZmxhd3MgaW4gdGhlCj4gPj4+Pj4+IGRlc2lnbiB3ZXJlIHF1ZXN0 aW9uZWQgYnkgYm90aCBDbGVtZW5zIExhZGlzY2ggWzZdIGFuZAo+ID4+Pj4+PiBUYWthc2hpIFNh a2Ftb3RvIFs3XTogdGhlIGFic2VuY2Ugb2Ygc3luY2hyb25pemF0aW9uIGJldHdlZW4gZnJvbnRl bmQKPiA+Pj4+Pj4gYW5kIGJhY2tlbmQgZHVyaW5nIGNhcHR1cmUvcGxheWJhY2suIFR3byBvcHRp b25zIHdlcmUgZGlzY3Vzc2VkOgo+ID4+Pj4+Pgo+ID4+Pj4+PiDigJxJbiBkZXNpZ24gb2YgQUxT QSBQQ00gY29yZSwgZHJpdmVycyBhcmUgZXhwZWN0ZWQgdG8gc3luY2hyb25pemUgdG8KPiA+Pj4+ Pj4gYWN0dWFsIGhhcmR3YXJlcyBmb3Igc2VtaS1yZWFsdGltZSBkYXRhIHRyYW5zbWlzc2lvbi4g VGhlCj4gPj4+Pj4+IHN5bmNocm9uaXphdGlvbiBpcyBkb25lIGJ5IHR3byBwb2ludHM6Cj4gPj4+ Pj4+IDEpIEludGVycnVwdHMgdG8gcmVzcG9uZCBldmVudHMgZnJvbSBhY3R1YWwgaGFyZHdhcmVz Lgo+ID4+Pj4+PiAyKSBQb3NpdGlvbnMgb2YgYWN0dWFsIGRhdGEgdHJhbnNtaXNzaW9uIGluIGFu eSBzZXJpYWwgc291bmQgaW50ZXJmYWNlcwo+ID4+Pj4+PiAgICAgICAgb2YgYWN0dWFsIGhhcmR3 YXJlcy4KPiA+Pj4+Pj4g4oCcCj4gPj4+Pj4+Cj4gPj4+Pj4+IGFuZCBmaW5hbGx5IGEgY2hhbmdl IHRvIHRoZSBleGlzdGluZyBwcm90b2NvbCB3YXMgc3VnZ2VzdGVkOgo+ID4+Pj4+Pgo+ID4+Pj4+ PiDigJxJbiAnaW5jbHVkZS94ZW4vaW50ZXJmYWNlL2lvL3NuZGlmLmgnLCB0aGVyZSdzIG5vIGZ1 bmN0aW9uYWxpdGllcyBJCj4gPj4+Pj4+IGRlc2NyaWJlZCB0aGUgYWJvdmU6Cj4gPj4+Pj4+IDEu IG5vdGlmaWNhdGlvbnMgZnJvbSBEb21VIHRvIERvbTAgYWJvdXQgdGhlIHNpemUgb2YgcGVyaW9k IGZvcgo+ID4+Pj4+PiAgICAgICAgaW50ZXJydXB0cyBmcm9tIGFjdHVhbCBoYXJkd2FyZXMuIE9y IG5vIHdheSBmcm9tIERvbTAgdG8gRG9tVSBhYm91dAo+ID4+Pj4+PiAgICAgICAgdGhlIGNvbmZp Z3VyZWQgc2l6ZSBvZiB0aGUgcGVyaW9kLgo+ID4+Pj4+PiAyLiBub3RpZmljYXRpb25zIG9mIHRo ZSBpbnRlcnJ1cHRzIGZyb20gYWN0dWFsIGhhcmR3YXJlcyB0byBEb21VLuKAnQo+ID4+Pj4+Pgo+ ID4+Pj4+PiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgY2hhbmdlIHRvIHRoZSBzbmRpZiBwcm90 b2NvbCBhbmQgYWxsb3dzIHJlbW92aW5nCj4gPj4+Pj4+IHBlcmlvZCBlbXVsYXRpb246Cj4gPj4+ Pj4+IDEuIEludHJvZHVjZWQgYSBuZXcgZXZlbnQgY2hhbm5lbCBmcm9tIGJhY2sgdG8gZnJvbnQK PiA+Pj4+Pj4gMi4gTmV3IGV2ZW50IHdpdGggbnVtYmVyIG9mIGJ5dGVzIHBsYXllZC9jYXB0dXJl ZCAoWEVOU05EX0VWVF9DVVJfUE9TLAo+ID4+Pj4+PiAgICAgICB0byBiZSB1c2VkIGZvciBzZW5k aW5nIHNuZF9wY21fcGVyaW9kX2VsYXBzZWQgYXQgZnJvbnRlbmQgKGluIExpbnV4Cj4gPj4+Pj4+ ICAgICAgIGltcGxlbWVudGF0aW9uKS4gU2VudCBpbiBieXRlcywgbm90IGZyYW1lcyB0byBtYWtl IHRoZSBwcm90b2NvbAo+ID4+Pj4+PiAgICAgICBnZW5lcmljIGFuZCBjb25zaXN0ZW50KQo+ID4+ Pj4+PiAzLiBOZXcgcmVxdWVzdCBmb3IgcGxheWJhY2svY2FwdHVyZSBjb250cm9sIChYRU5TTkRf T1BfVFJJR0dFUikgd2l0aAo+ID4+Pj4+PiAgICAgICBzdGFydC9wYXVzZS9zdG9wL3Jlc3VtZSBz dWItb3BzCj4gPj4+Pj4+IDQuIFBsYXliYWNrL2NhcHR1cmUgYnVmZmVyIHNpemUgaXMgc2V0IG9u IHRoZSBiYWNrZW5kIHNpZGUgdmlhCj4gPj4+Pj4+ICAgICAgIFhFTlNORF9GSUVMRF9CVUZGRVJf U0laRSBYZW5TdG9yZSBlbnRyeQo+ID4+Pj4+IFNvIHRoZSBuZXcgYWRkaXRpb24gbG9va3Mgc2Vy dmluZyB3ZWxsIGZvciB0aGUgcG9pbnQgdGhhdCB3YXMKPiA+Pj4+PiBzdWdnZXN0ZWQgaW4gdGhl IHByZXZpb3VzIHRocmVhZC4gIEFzIEkgc2VlIG5vIGZyb250ZW5kIGRyaXZlcgo+ID4+Pj4+IGlt cGxlbWVudGF0aW9uLCBpdCdzIGhhcmQgdG8gdGVsbCBhYm91dCB0aGUgZGV0YWlscywgYnV0IHRo cm91Z2ggYQo+ID4+Pj4+IHF1aWNrIGdsYW5jZSwgdGhlIHByb3RvY29sIHNob3VsZCBiZSBPSy4K PiA+Pj4+IFRoYW5rIHlvdSwgdGhlIGRyaXZlciBpcyBhdCBbMV0KPiA+Pj4+PiBOb3csIGdvaW5n IGJhY2sgdG8gYSBiaWcgcGljdHVyZTogSSB0b29rIGEgbG9vayBhdCB0aGUgcHJldmlvdXMKPiA+ Pj4+PiBwYXRjaHNldCwgYW5kIHdvbmRlciB3aGF0IGFib3V0IHRoZSBod19wYXJhbXMgc2V0dXAu ICBCYXNpY2FsbHkgdGhlCj4gPj4+Pj4gKGZyb250ZW5kKSBhcHBsaWNhdGlvbiBtYXkgcmVxdWVz dCBhbnkgc2l6ZSBvZiBidWZmZXIgYW5kIHBlcmlvZHMKPiA+Pj4+PiB1bmxlc3MgdGhlIGRyaXZl ciBzZXRzIHVwIHRoZSBodyBjb25zdHJhaW50cyBhdCBvcGVuIGNhbGxiYWNrLiAgVGhhdAo+ID4+ Pj4+IGlzLCBhcHAgbWF5IHJlcXVlc3QgZXZlbiB0aGUgMTYgYnl0ZXMgb2YgYnVmZmVyIHNpemUs IG9yIDFHQiBvZgo+ID4+Pj4+IGJ1ZmZlci4gIFRoZSBwZXJpb2RzIGFyZW4ndCBhbHdheXMgaW50 ZWdlciwgc28gaXQgY2FuIGJlIDEwMjQgYnl0ZXMgb2YKPiA+Pj4+PiBidWZmZXIgd2l0aCA0MDAg Ynl0ZXMgb2YgcGVyaW9kcy4KPiA+Pj4+Pgo+ID4+Pj4+IEFuZCwgaWYgc3VjaCBwYXJhbWV0ZXJz IGFyZSBzZXQgdXAgZnJlZWx5IGluIHRoZSBmcm9udGVuZCBzaWRlLCBob3cKPiA+Pj4+PiB0aGUg YmFja2VuZCBpcyBzdXBwb3NlZCB0byBiZWhhdmU/ICBGcm9tIHRoZSBmcm9udGVuZCBQT1YsIGl0 IGV4cGVjdHMKPiA+Pj4+PiByZWNlaXZpbmcgdGhlIHdha2V1cC9ub3RpZmljYXRpb24gYXQgZWFj aCBwZXJpb2QgcHJvY2Vzc2luZyAoZS5nLiA0MDAKPiA+Pj4+PiBieXRlcyBpbiB0aGUgY2FzZSBh Ym92ZSkuICBCdXQsIHRoZSBiYWNrZW5kIGlzIGFub3RoZXIgYXBwbGljYXRpb24sIHNvCj4gPj4+ Pj4gaG93IHdvdWxkIGl0IHdvcmsgZm9yIHN1Y2ggcmVxdWlyZW1lbnRzPyAgQW0gSSBtaXNzaW5n IHNvbWV0aGluZyBoZXJlPwo+ID4+Pj4gV2VsbCwgdGhlIGZyb250ZW5kIGlzIG5vdCB0aGF0IGZy ZWUgdG8gZGVjaWRlIGFzIGl0IG1pZ2h0IGxvb2sgbGlrZSwKPiA+Pj4+IGUuZy4gcGxlYXNlIHNl ZSBbMl0uIEJhc2ljYWxseSBwYXJ0IG9mIGh3X3BhcmFtcyBjb25maWd1cmF0aW9uIGlzIHdyaXR0 ZW4KPiA+Pj4+IHRvIFhlblN0b3JlIFszXSBhcyBhIHBhcnQgb2YgZG9tYWluIGNvbmZpZ3VyYXRp b24gd2hpY2ggZGVwZW5kcyBvbgo+ID4+Pj4gc3lzdGVtL2JhY2tlbmQKPiA+Pj4+IGNhcGFiaWxp dGllcy4gRS5nLiwgd2UgdXN1YWxseSBzZXQgYnVmZmVyIHNpemVzIHRvIG1hdGNoIHJlYWwgSFcg YXQKPiA+Pj4+IGJhY2tlbmQgc2lkZQo+ID4+Pj4gaWYgd2UgdXNlIEFMU0EgYW5kIHdlIGhhdmUg bW9yZSBmcmVlZG9tIGlmIHdlIHVzZSBQdWxzZUF1ZGlvIHRoZXJlLgo+ID4+Pj4gRmluYWxseSwg aWYgYmFja2VuZCBkZWNpZGVzIHRoYXQgdGhlIHJlcXVlc3RlZCBidWZmZXIvcGVyaW9kIHNpemVz IGFyZQo+ID4+Pj4gbm90IGFjY2VwdGFibGUgaXQgd2lsbCByZWplY3Qgc3VjaCBhIGNvbmZpZ3Vy YXRpb24uCj4gPj4+IE9LLCB0aGF0IHJlc3RyaWN0cyBtaW5pbWFsbHkuICBTbyBhdCBsZWFzdCB0 aGVyZSBpcyB0aGUgcmVzdHJpY3Rpb24gLwo+ID4+PiBjb21tdW5pY2F0aW9uIGFib3V0IHRoZSBi dWZmZXIgc2l6ZS4gIEJ1dCBpdCBtZXJlbHkgbWVhbnMgdGhlCj4gPj4+ICptYXhpbXVtKiBidWZm ZXIgc2l6ZSBpcyBzZXQuICBBcHBsaWNhdGlvbiBtYXkgcmVxdWVzdCBzdGlsbCBhbnkKPiA+Pj4g c2hvcnRlciB2YWx1ZSB0aGFuIHRoYXQuCj4gPj4+Cj4gPj4+IEFuZCwgdGhlcmUgYXJlIG5vIHJl c3RyaWN0aW9uIGFib3V0IHBlcmlvZCBzaXplcyAoZXhjZXB0IGZvciB0aGUKPiA+Pj4gcGVyaW9k c19tYXgsIHdoaWNoIGlzIGNhbGN1bGF0ZWQgZnJvbSBidWZmZXJfYnl0ZXNfbWF4KS4KPiA+Pj4g VGhhdCBpcywgYXBwbGljYXRpb24gbWF5IHJlcXVlc3QgYW55IHNpemUgYmV0d2VlbiB0aGVtOyBh bmQgaXQgZXhwZWN0cwo+ID4+PiB0aGUgd2FrZSB1cCBieSB0aGlzIHZhbHVlLgo+ID4+Pgo+ID4+ PiBJIHRoaW5rIHRoYXQncyBhIHN0aWxsIG1pc3Npbmcgc3RvbmUgaW4gdGhlIGRlc2lnbi4KPiA+ PiBXZWxsLCBzbyB3aGF0IHdvdWxkIGEgcmVhbCBIVyBkcml2ZXIgZG8gaW4gdGhhdCBjYXNlPwo+ ID4+IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBpbiB0aGlzIGNhc2UgU1cgY2FuIHN0aWxsIHJl cXVlc3QKPiA+PiBzb21ldGhpbmcgdGhhdCBIVyBjYW4ndCBkbyBhbmQgZHJpdmVyIHdpbGwgcmVq ZWN0IHN1Y2ggY29uZmlndXJhdGlvbnMuCj4gPj4gSW4gbXkgY2FzZSwgdGhlIHJvbGUgb2YgdGhh dCBIVyBkcml2ZXIgY29kZSB3aGljaCBqdWRnZXMgb24gaWYgY29uZmlndXJhdGlvbgo+ID4+IGlz IGFjY2VwdGFibGUganVzdCBydW5zIG9uIHRoZSBiYWNrZW5kIHNpZGUsIGUuZy4gZnJvbnRlbmQg ZHJpdmVyIGlzIGp1c3QKPiA+PiBhIHByb3h5IHdoaWNoIHRhbGtzIHRvIHRoZSBiYWNrZW5kIHRv IGNoZWNrIGlmIHRoZSBiYWNrZW5kIGNhbiBkbyB3aGF0Cj4gPj4gcmVxdWVzdGVkLgo+ID4+IEFu ZCBpdCBpcyB1cCB0byBiYWNrZW5kIHRvIGRlY2lkZS4KPiA+Pgo+ID4+IERvZXMgdGhhdCBzb3Vu ZCByZWFzb25hYmxlIG9yIHlvdSBoYXZlIHNvbWV0aGluZyBlbHNlIG9uIHlvdXIgbWluZD8KPiA+ IFVzdWFsbHkgdGhlIGhhcmR3YXJlIGRyaXZlciBrbm93cyBhbHJlYWR5IHRoZSByZXN0cmljdGlv bnMgYW5kIHNldHMgdXAKPiA+IHRoZSBydWxlcyB2aWEgaHcgY29uc3RyYWludHMgYXQgb3BlbiBj YWxsYmFjay4gIFRoZXJlIGFyZSBsb3RzIG9mCj4gPiBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfKigp IGhlbHBlcnMgKGFuZCB0aGUgcmVsZXZhbnQgb25lcykgdG8gZ2l2ZSBtb3JlCj4gPiBhZGRpdGlv bmFsIHJ1bGVzIGZvciB0aGUgcGFyYW1ldGVyIHJlc3RyaWN0aW9ucy4gIEZvciBleGFtcGxlLCBp ZiB0aGUKPiA+IHBlcmlvZHMgbXVzdCBiZSBhbGlnbmVkIHdpdGggdGhlIGJ1ZmZlciBzaXplIChp LmUuIGJ1ZmZlcl9zaXplICUKPiA+IHBlcmlvZF9zaXplID09IDApIGFzIG9uIG1hbnkgZGV2aWNl cywgeW91IGNhbiBjYWxsIGxpa2U6Cj4gPiAgICBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfaW50ZWdl cihzdWJzdHJlYW0tPnJ1bnRpbWUsCj4gPiAJU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRFMpOwo+ ID4gaW4gdGhlIG9wZW4gY2FsbGJhY2suCj4gWW91IGFyZSByaWdodCwgSSBzYXcgdGhvc2UgaW4g b3RoZXIgZHJpdmVycwo+ID4gQW5kLCBub3cgYW4gb3BlbiBxdWVzdGlvbiBmb3IgWEVOIGNvbWVz OiB3aGF0IGtpbmQgb2YgcmVzdHJpY3Rpb24KPiA+IHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoZSBm cm9udGVuZC4gIE9idmlvdXNseSBpdCBkZXBlbmRzIG9uIHRoZQo+ID4gYmFja2VuZCwgc28gdGhl cmUgbXVzdCBiZSBzb21lIGNvbW11bmljYXRpb24sIGFuZCB0aGUgcmVzdHJpY3Rpb24gbXVzdAo+ ID4gYmUgcHJvcGFnYXRlZCBhdCBvcGVuLCBpLmUuICpiZWZvcmUqIGFjdHVhbGx5IGh3X3BhcmFt cyBpcyBwZXJmb3JtZWQuCj4gQ291bGQgeW91IHBsZWFzZSBnaXZlIG1lIGEgaGludCBvZiB3aGF0 IHRob3NlIHJlc3RyaWN0aW9ucwo+IGNvdWxkIGxvb2sgbGlrZT8gRS5nLiBtYXAgb2Ygc3VwcG9y dGVkIGJ1ZmZlci9wZXJpb2Qgc2l6ZXMsIHdoYXQgZWxzZT8KCkhlaCwgdGhhdCB2ZXJ5IG11Y2gg ZGVwZW5kcyBvbiB0aGUgaGFyZHdhcmUgLS0gYW5kIGluIHRoaXMgY2FzZSwgb24KdGhlIGltcGxl bWVudGF0aW9uIG9mIHRoZSBiYWNrZW5kLgoKUHJhY3RpY2FsbHkgc2VlbiwgdGhlIGJ1ZmZlciBh bmQgdGhlIHBlcmlvZCBzaXplIHNldHVwcyBhcmUgbWFuZGF0b3J5LAp5ZXMuICBIZXJlIGlzIHRo ZSBxdWVzdGlvbiB3aGV0aGVyIHlvdSB3YW50IHRvIGxpbWl0IHRoZW0gYnkgbGlzdAooZS5nLiBy ZWFkIHZpYSBzb21lIFhFTlNORF8qIHByb3RvY29sKSwgb3IgbmVnb3RpYXRlIHRoZSBzaXplIGF0 IGVhY2gKaHdfcGFyYW1zIHNldHVwIChlLmcuIGdldHRpbmcgb25seSBtaW4vbWF4IGF0IG9wZW4s IGFuZCBhdCBlYWNoCmh3X3BhcmFtcyBjYWxsLCBuZWdvdGlhdGUgd2l0aCB0aGUgYmFja2VuZCBm b3IgcGVyaW9kIGFuZCBidWZmZXIgc2l6ZQpjaGFuZ2VzKS4KClRoZSBmb3JtYXQsIHRoZSBjaGFu bmVscyBhbmQgdGhlIHNhbXBsZSByYXRlIGFyZSBhbHJlYWR5IGluY2x1ZGVkIGluCnNuZF9wY21f aGFyZHdhcmUgc2V0dXAsIHNvIHRoaXMgc2hvdWxkIGJlIE9LLCB1bmxlc3MgdGhleSBoYXZlCmlt cGxpY2l0IGxpbWl0YXRpb25zIHdpdGggZWFjaCBvdGhlciAoZS5nLiBzb21lIGZvcm1hdCBpcyBh dmFpbGFibGUKb25seSB1bmRlciBzb21lIHJhdGUpLgoKTWF5YmUgdGhlIGNoYW5uZWxzIG5lZWQg dG8gYmUgcmV2aXNpdGVkLCB0aG91Z2g7IHVzdWFsbHkgeW91IGNhbid0CmhhbmRsZSBhbGwgbnVt YmVyIG9mIGNoYW5uZWxzIGJldHdlZW4gbWluIGFuZCBtYXggYnV0IG9ubHkgZXZlbgpudW1iZXJz IG9yIHN1Y2guCgoKdGhhbmtzLAoKVGFrYXNoaQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpBbHNhLWRldmVsIG1haWxpbmcgbGlzdApBbHNhLWRldmVsQGFs c2EtcHJvamVjdC5vcmcKaHR0cDovL21haWxtYW4uYWxzYS1wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL2Fsc2EtZGV2ZWwK