From mboxrd@z Thu Jan 1 00:00:00 1970 From: Guan Junxiong Subject: Re: [PATCH V4 1/2] multipath-tools: intermittent IO error accounting to improve reliability Date: Thu, 12 Oct 2017 14:46:07 +0800 Message-ID: References: <1505619638-20912-1-git-send-email-guanjunxiong@huawei.com> <1505619638-20912-2-git-send-email-guanjunxiong@huawei.com> <7035dfdb-1c49-aa3f-3836-1ec316707c47@huawei.com> <1505764297.12944.2.camel@suse.com> <8d45c076cf6c47d39bf2aade3ade7f51@BRMWP-EXMB12.corp.brocade.com> <52829afa-ed9e-cc39-a492-3e678b8e0d03@huawei.com> <658d39ce-5ac8-f102-96a8-c332da403e90@huawei.com> <615cdd5a955944e49986dca01bf406a5@BRMWP-EXMB12.corp.brocade.com> <06296b9f-e8da-77f2-d28f-db43c94c6c50@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com To: Muneendra Kumar M Cc: "dm-devel@redhat.com" , niuhaoxin , "Shenhong (C)" , Martin Wilck List-Id: dm-devel.ids SGkgTXVuZWVuZHJh77yMCgpPbiAyMDE3LzEwLzEyIDE0OjM1LCBNdW5lZW5kcmEgS3VtYXIgTSB3 cm90ZToKPiBIaSBHdWFuLAo+Pj4gSWYgdGhlIHBhdGNoIGlmIE9LIGZvciB5b3UsIGNhbiBJIGFk ZCB5b3VyIFJldmlld2VkLWJ5IHRhZyBpbnRvIHRoaXMgcGF0Y2g/Cj4gCVRoZSBwYXRjaCBpcyBv ayBmb3IgbWUuCj4gCj4gCj4gVGhlIHBhdGNoIGlzIG9rIGZvciBtZS4KPiAKT0ssIEkgd2lsbCBh ZGQgeW91ciBSZXZpZXdlZC1ieSB0YWcgaW4gdGhlIHZlcnNpb24gNyBBU0FQLgpCVFcsIGRvIHlv dXIgY2xpZW50cyBnaXZlIGFueSBmZWVkYmFjayB0byBpbXByb3ZlIHRoZSBmZWF0dXJlPwoKUmVn YXJkcwpHdWFuCgoKPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEd1YW4gSnVu eGlvbmcgW21haWx0bzpndWFuanVueGlvbmdAaHVhd2VpLmNvbV0gCj4gU2VudDogTW9uZGF5LCBP Y3RvYmVyIDA5LCAyMDE3IDY6MTMgQU0KPiBUbzogTXVuZWVuZHJhIEt1bWFyIE0gPG1tYW5kYWxh QEJyb2NhZGUuY29tPgo+IENjOiBTaGVuaG9uZyAoQykgPHNoZW5ob25nMDlAaHVhd2VpLmNvbT47 IG5pdWhhb3hpbiA8bml1aGFveGluQGh1YXdlaS5jb20+OyBNYXJ0aW4gV2lsY2sgPG13aWxja0Bz dXNlLmNvbT47IENocmlzdG9waGUgVmFyb3F1aSA8Y2hyaXN0b3BoZS52YXJvcXVpQG9wZW5zdmMu Y29tPjsgZG0tZGV2ZWxAcmVkaGF0LmNvbQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggVjQgMS8yXSBt dWx0aXBhdGgtdG9vbHM6IGludGVybWl0dGVudCBJTyBlcnJvciBhY2NvdW50aW5nIHRvIGltcHJv dmUgcmVsaWFiaWxpdHkKPiAKPiBIaSBNdW5lZW5kcmEsCj4gU29ycnkgZm9yIGxhdGUgcmVwbHkg YmVjYXVzZSBvZiBOYXRpb25hbCBIb2xpZGF5Lgo+IAo+IE9uIDIwMTcvMTAvNiAxMzo1NCwgTXVu ZWVuZHJhIEt1bWFyIE0gd3JvdGU6Cj4+IEhpIEd1YW4sCj4+IERpZCB5b3UgcHVzaCB0aGUgcGF0 Y2ggdG8gbWFpbmxpbmUuCj4+IElmIHNvIGNhbiB5b3UganVzdCBwcm92aWRlIG1lIHRob3NlIGRl dGFpbHMuCj4+IElmIG5vdCBjYW4geW91IGp1c3QgbGV0IG1lIGtub3cgdGhlIHN0YXR1cy4KPj4K PiAKPiBZZXMsIEkgcHVzaGVkIFZlcnNpb24gNiBvZiB0aGUgcGF0Y2ggdG8gdGhlIG1haWwgbGlz dCBidXQgaXQgaGFzbid0IGJlZW4gbWVyZ2VkIHlldC4KPiBJdCBpcyBzdGlsbCB3YWl0aW5nIGZv ciByZXZpZXcuCj4gWW91IGNhbiBmaW5kIGl0IGF0IHRoaXMgbGluazoKPiBodHRwczovL3VybGRl ZmVuc2UucHJvb2Zwb2ludC5jb20vdjIvdXJsP3U9aHR0cHMtM0FfX3d3dy5yZWRoYXQuY29tX2Fy Y2hpdmVzX2RtLTJEZGV2ZWxfMjAxNy0yRFNlcHRlbWJlcl9tc2cwMDI5Ni5odG1sJmQ9RHdJRGFR JmM9SUxfWHFRV09qdWJnZnFJTmkyalR6ZyZyPUUzZnRjNDdCNkJHdFo0ZlZhWXZrdXYxOXdLdkNf TWM2bmhYYUExc0JJUDAmbT1OOFQwNG9XNmowa2tjZjVmTHA4alhBMXk3NVNSTjZQTTlELWRNNW5j MmQ0JnM9c0JaVFRqcENWWkIzTkJnR1h3UENFMWZCdHFBbXg3NXMwRGtBc1ZZUnJ3YyZlPQo+IAo+ PiBBcyBjb3VwbGUgb2Ygb3VyIGNsaWVudHMgYXJlIGFscmVhZHkgdXNpbmcgdGhlIHByZXZpb3Vz IHBhdGNoKHNhbl9wYXRoX1hYKS4KPj4gSWYgeW91ciBwYXRjaCBpcyBwdXNoZWQgdGhlbiBJIGNh biBnaXZlIHRoZW0gdGhlIHVwZGF0ZWQgcGF0Y2ggYW5kIHRlc3QgdGhlIHNhbWUuCj4+Cj4gCj4g SWYgdGhlIHBhdGNoIGlmIE9LIGZvciB5b3UsIGNhbiBJIGFkZCB5b3VyIFJldmlld2VkLWJ5IHRh ZyBpbnRvIHRoaXMgcGF0Y2g/Cj4gCj4gUmVnYXJkcywKPiBHdWFuCj4gCj4+IFJlZ2FyZHMsCj4+ IE11bmVlbmRyYS4KPj4KPj4KPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4gRnJvbTog TXVuZWVuZHJhIEt1bWFyIE0gCj4+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMjEsIDIwMTcg Mzo0MSBQTQo+PiBUbzogJ0d1YW4gSnVueGlvbmcnIDxndWFuanVueGlvbmdAaHVhd2VpLmNvbT47 IE1hcnRpbiBXaWxjayA8bXdpbGNrQHN1c2UuY29tPjsgZG0tZGV2ZWxAcmVkaGF0LmNvbTsgY2hy aXN0b3BoZS52YXJvcXVpQG9wZW5zdmMuY29tCj4+IENjOiBzaGVuaG9uZzA5QGh1YXdlaS5jb207 IG5pdWhhb3hpbkBodWF3ZWkuY29tOyBjaGVuZ2ppa2UuY2hlbmdAaHVhd2VpLmNvbQo+PiBTdWJq ZWN0OiBSRTogW1BBVENIIFY0IDEvMl0gbXVsdGlwYXRoLXRvb2xzOiBpbnRlcm1pdHRlbnQgSU8g ZXJyb3IgYWNjb3VudGluZyB0byBpbXByb3ZlIHJlbGlhYmlsaXR5Cj4+Cj4+IEhpIEd1YW4sCj4+ IFRoYW5rcyBmb3IgYWRvcHRpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uLiAKPj4gSW5zdGVhZCBv ZiBtYXJnaW5hbF9wYXRoX2Vycl9yZWNoZWNrX2dhcF90aW1lLCBtYXJnaW5hbF9wYXRoX3JlY292 ZXJ5X3RpbWUgd2lsbCBsb29rcyByZWFzb25hYmxlLkNvdWxkIHlvdSBwbGVhc2UgcmVsb29rIGlu dG8gaXQuCj4+Cj4+IEkgd2lsbCByZXZpZXcgdGhlIGNvZGUgaW4gYSBkYXkgdGltZS4KPj4KPj4g UmVnYXJkcywKPj4gTXVuZWVuZHJhLgo+Pgo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ PiBGcm9tOiBHdWFuIEp1bnhpb25nIFttYWlsdG86Z3Vhbmp1bnhpb25nQGh1YXdlaS5jb21dIAo+ PiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDIxLCAyMDE3IDM6MzUgUE0KPj4gVG86IE11bmVl bmRyYSBLdW1hciBNIDxtbWFuZGFsYUBCcm9jYWRlLmNvbT47IE1hcnRpbiBXaWxjayA8bXdpbGNr QHN1c2UuY29tPjsgZG0tZGV2ZWxAcmVkaGF0LmNvbTsgY2hyaXN0b3BoZS52YXJvcXVpQG9wZW5z dmMuY29tCj4+IENjOiBzaGVuaG9uZzA5QGh1YXdlaS5jb207IG5pdWhhb3hpbkBodWF3ZWkuY29t OyBjaGVuZ2ppa2UuY2hlbmdAaHVhd2VpLmNvbQo+PiBTdWJqZWN0OiBSZTogW1BBVENIIFY0IDEv Ml0gbXVsdGlwYXRoLXRvb2xzOiBpbnRlcm1pdHRlbnQgSU8gZXJyb3IgYWNjb3VudGluZyB0byBp bXByb3ZlIHJlbGlhYmlsaXR5Cj4+Cj4+IEhpLCBNdW5lZW5kcmEKPj4KPj4gICBUaGFua3MgZm9y IHlvdXIgY2xhcmlmaWNhdGlvbi4gSSBhZG9wdCB0aGlzIHJlbmFtaW5nLiBJZiBpdCBpcyBjb252 ZW5pZW50IGZvciB5b3UsIHBsZWFzZSByZXZpZXcgdGhlIFY1IHBhdGNoIHRoYXQgSSBzZW50IG91 dCAyIGhvdXJzIGFnby4KPj4KPj4gUmVnYXJkcywKPj4gR3Vhbgo+Pgo+PiBPbiAyMDE3LzkvMjAg MjA6NTgsIE11bmVlbmRyYSBLdW1hciBNIHdyb3RlOgo+Pj4gSGkgR3VhbiwKPj4+Pj4+IFNoYWxs IHdlIHVzZSBleGlzdGluZyBQQVRIX1NIQUtZID8KPj4+IEFzIHRoZSBwYXRoX3NoYWt5IEluZGlj YXRlcyBwYXRoIG5vdCBhdmFpbGFibGUgZm9yICJub3JtYWwiIG9wZXJhdGlvbnMgd2UgY2FuIHVz ZSB0aGlzIHN0YXRlLiBUaGF0J3MgIGEgZ29vZCBpZGVhLgo+Pj4KPj4+IFJlZ2FyZGluZyB0aGUg bWFyZ2luYWwgcGF0aHMgYmVsb3cgaXMgbXkgZXhwbGFuYXRpb24uIEFuZCBicm9jYWRlIGlzIHB1 Ymxpc2hpbmcgY291cGxlIG9mIHdoaXRlIHBhcGVycyByZWdhcmRpbmcgdGhlIHNhbWUgdG8gZWR1 Y2F0ZSB0aGUgU0FOIGFkbWluaXN0cmF0b3JzIGFuZCB0aGUgc2FuIGNvbW11bml0eS4KPj4+Cj4+ PiBNYXJnaW5hbCBwYXRoOgo+Pj4KPj4+IEEgaG9zdCwgdGFyZ2V0LCBMVU4gKElUTCBwYXRoKSBm bG93ICBnb2VzIHRocm91Z2ggU0FOLiBJdCBpcyB0byBiZSBub3RlZCB0aGF0IHRoZSBmb3IgZWFj aCBJL08gcmVxdWVzdCB0aGF0IGdvZXMgdG8gdGhlIFNDU0kgbGF5ZXIsIGl0IHRyYW5zZm9ybXMg aW50byBhIHNpbmdsZSBTQ1NJIGV4Y2hhbmdlLiAgSW4gYSBzaW5nbGUgU0FOLCB0aGVyZSBhcmUg dHlwaWNhbGx5IG11bHRpcGxlIFNBTiBuZXR3b3JrIHBhdGhzICBmb3IgYSBJVEwgZmxvdy9wYXRo LiBFYWNoIFNDU0kgZXhjaGFuZ2UgIGNhbiB0YWtlIG9uZSBvZiB0aGUgdmFyaW91cyBuZXR3b3Jr IHBhdGhzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIElUTCBwYXRoLiAgQSBTQU4gY2FuIGJl IGJhc2VkIG9uIEV0aGVybmV0LCBGQywgSW5maW5pYmFuZCBwaHlzaWNhbCBuZXR3b3JrcyB0byBj YXJyeSBibG9jayBzdG9yYWdlIHRyYWZmaWMgKFNDU0ksIE5WTWUgZXRjLikKPj4+Cj4+PiBUaGVy ZSBhcmUgdHlwaWNhbGx5IHR3byB0eXBlIG9mIFNBTiBuZXR3b3JrIHByb2JsZW1zIHRoYXQgYXJl IGNhdGVnb3JpemVkIGFzIG1hcmdpbmFsIGlzc3Vlcy4gVGhlc2UgaXNzdWVzIGJ5IG5hdHVyZSBh cmUgbm90IHBlcm1hbmVudCBpbiB0aW1lIGFuZCBkbyBjb21lIGFuZCBnbyBhd2F5IG92ZXIgdGlt ZS4KPj4+IDEpIFN3aXRjaGVzIGluIHRoZSBTQU4gY2FuIGhhdmUgaW50ZXJtaXR0ZW50IGZyYW1l IGRyb3BzIG9yIGludGVybWl0dGVudCBmcmFtZSBjb3JydXB0aW9ucyBkdWUgdG8gYmFkIG9wdGlj cyBjYWJsZSAoU0ZQKSBvciBhbnkgc3VjaCB3ZWFyL3RlYXIgIHBvcnQgaXNzdWVzLiBUaGlzIGNh dXNlcyBJVEwgZmxvd3MgdGhhdCBnbyB0aHJvdWdoIHRoZSBmYXVsdHkgc3dpdGNoL3BvcnQgdG8g aW50ZXJtaXR0ZW50bHkgZXhwZXJpZW5jZSBmcmFtZSBkcm9wcy4gIAo+Pj4gMikgVGhlcmUgZXhp c3RzIFNBTiB0b3BvbG9naWVzIHdoZXJlIHRoZXJlIGFyZSBzd2l0Y2ggcG9ydHMgaW4gdGhlIGZh YnJpYyB0aGF0IGJlY29tZXMgdGhlIG9ubHkgIGNvbmR1aXQgZm9yIG1hbnkgZGlmZmVyZW50IElU TCBmbG93cyBhY3Jvc3MgbXVsdGlwbGUgaG9zdHMuIFRoZXNlIHNpbmdsZSBuZXR3b3JrIHBhdGhz IGFyZSBlc3NlbnRpYWxseSBzaGFyZWQgYWNyb3NzIG11bHRpcGxlIElUTCBmbG93cy4gVW5kZXIg dGhlc2UgY29uZGl0aW9ucyBpZiB0aGUgcG9ydCBsaW5rIGJhbmR3aWR0aCBpcyBub3QgYWJsZSB0 byBoYW5kbGUgdGhlIG5ldCBzdW0gb2YgdGhlIHNoYXJlZCBJVEwgZmxvd3MgYmFuZHdpZHRoIGdv aW5nIHRocm91Z2ggdGhlIHNpbmdsZSBwYXRoICB0aGVuIHdlIGNvdWxkIHNlZSBpbnRlcm1pdHRl bnQgbmV0d29yayBjb25nZXN0aW9uIHByb2JsZW1zLiBUaGlzIGNvbmRpdGlvbiBpcyBjYWxsZWQg bmV0d29yayBvdmVyc3Vic2NyaXB0aW9uLiBUaGUgaW50ZXJtaXR0ZW50IGNvbmdlc3Rpb25zIGNh biBkZWxheSBTQ1NJIGV4Y2hhbmdlIGNvbXBsZXRpb24gdGltZSAoaW5jcmVhc2UgaW4gSS9PIGxh dGVuY3kgaXMgb2JzZXJ2ZWQpLgo+Pj4KPj4+IFRvIG92ZXJjb21lIHRoZSBhYm92ZSBuZXR3b3Jr IGlzc3VlcyBhbmQgbWFueSBtb3JlIHN1Y2ggdGFyZ2V0IGlzc3VlcywgdGhlcmUgYXJlIGZyYW1l IGxldmVsIHJldHJpZXMgdGhhdCBhcmUgZG9uZSBpbiBIQkEgZGV2aWNlIGZpcm13YXJlIGFuZCBJ L08gcmV0cmllcyBpbiB0aGUgU0NTSSBsYXllci4gVGhlc2UgcmV0cmllcyBtaWdodCBzdWNjZWVk IGJlY2F1c2Ugb2YgdHdvIHJlYXNvbnM6Cj4+PiAxKSBUaGUgaW50ZXJtaXR0ZW50IHN3aXRjaC9w b3J0IGlzc3VlIGlzIG5vdCBvYnNlcnZlZAo+Pj4gMikgVGhlIHJldHJ5IEkvTyBpcyBhIG5ldyAg U0NTSSBleGNoYW5nZS4gVGhpcyBTQ1NJIGV4Y2hhbmdlICBjYW4gdGFrZSBhbiBhbHRlcm5hdGUg U0FOIHBhdGggZm9yIHRoZSBJVEwgZmxvdywgaWYgc3VjaCBhbiBTQU4gcGF0aCBleGlzdHMuCj4+ PiAzKSBOZXR3b3JrIGNvbmdlc3Rpb24gZGlzYXBwZWFycyBtb21lbnRhcmlseSBiZWNhdXNlIHRo ZSBuZXQgSS9PIGJhbmR3aWR0aCBjb21pbmcgZnJvbSBtdWx0aXBsZSBJVEwgZmxvd3Mgb24gdGhl IHNpbmdsZSBzaGFyZWQgbmV0d29yayBwYXRoIGlzIHNvbWV0aGluZyB0aGUgcGF0aCBjYW4gaGFu ZGxlCj4+Pgo+Pj4gSG93ZXZlciBpbiBzb21lIGNhc2VzIHdlIGhhdmUgc2VlbiBJL08gcmV0cmll cyBkb27igJl0IHN1Y2NlZWQgYmVjYXVzZSB0aGUgcmV0cnkgSS9PcyBoaXRzIGEgU0FOIG5ldHdv cmsgcGF0aCB0aGF0IGhhcyAgaW50ZXJtaXR0ZW50IHN3aXRjaC9wb3J0IGlzc3VlIGFuZC9vciBu ZXR3b3JrIGNvbmdlc3Rpb24uIAo+Pj4KPj4+IE9uIHRoZSBob3N0ICB0aHVzIHdlIHNlZSBjb25m aWd1cmF0aW9ucyB0d28gb3IgbW9yZSBJVEwgcGF0aCBzaGFyaW5nIHRoZSBzYW1lIHRhcmdldC9M VU4gZ29pbmcgdGhyb3VnaCB0d28gb3IgbW9yZSBIQkEgcG9ydHMuIFRoZXNlIEhCQSBwb3J0cyBh cmUgY29ubmVjdGVkIHRvIHR3byBvciBtb3JlIFNBTiB0byB0aGUgc2FtZSB0YXJnZXQvTFVOLgo+ Pj4gSWYgdGhlIEkvTyBmYWlscyBhdCB0aGUgbXVsdGlwYXRoIGxheWVyIHRoZW4sIHRoZSBJVEwg cGF0aCBpcyB0dXJuZWQgaW50byBGYWlsZWQgc3RhdGUuIEJlY2F1c2Ugb2YgdGhlIG1hcmdpbmFs IG5hdHVyZSBvZiB0aGUgbmV0d29yaywgdGhlIG5leHQgSGVhbHRoIENoZWNrIGNvbW1hbmQgc2Vu dCBmcm9tIG11bHRpcGF0aCBsYXllciBtaWdodCBzdWNjZWVkLCB3aGljaCByZXN1bHRzIGluIG1h a2luZyB0aGUgSVRMIHBhdGggaW50byBBY3RpdmUgc3RhdGUuIFlvdSBlbmQgdXAgc2VlaW5nIHRo ZSBETSBwYXRoIHN0YXRlIGdvaW5nICBpbnRvIEFjdGl2ZSwgRmFpbGVkLCBBY3RpdmUgdHJhbnNp dGlvbnMuIFRoaXMgcmVzdWx0cyBpbiBvdmVyYWxsIHJlZHVjdGlvbiBpbiBhcHBsaWNhdGlvbiBJ L08gdGhyb3VnaHB1dCBhbmQgc29tZXRpbWUgYXBwbGljYXRpb24gSS9PIGZhaWx1cmVzIChiZWNh dXNlIG9mIHRpbWluZyBjb25zdHJhaW50cykuIEFsbCB0aGlzIGNhbiBoYXBwZW4gYmVjYXVzZSBv ZiBJL08gcmV0cmllcyBhbmQgSS9PIHJlcXVlc3QgbW92aW5nIGFjcm9zcyBtdWx0aXBsZSBwYXRo cyBvZiB0aGUgRE0gZGV2aWNlLiBJbiB0aGUgaG9zdCBpdCBpcyAgdG8gYmUgbm90ZWQgYWxsIEkv TyByZXRyaWVzIG9uIGEgc2luZ2xlIHBhdGggYW5kIEkvTyBtb3ZlbWVudCBhY3Jvc3MgbXVsdGlw bGUgcGF0aHMgcmVzdWx0cyBpbiBzbG93aW5nIGRvd24gdGhlIGZvcndhcmQgcHJvZ3Jlc3Mgb2Yg bmV3IGFwcGxpY2F0aW9uIEkvTy4gUmVhc29uIGJlaGluZCwgdGhlIGFib3ZlIEkvTyAgcmUtcXVl dWUgYWN0aW9ucyBhcmUgZ2l2ZW4gaGlnaGVyIHByaW9yaXR5IHRoYW4gdGhlIG5ld2VyIEkvTyBy ZXF1ZXN0cyBjb21pbmcgZnJvbSB0aGUgYXBwbGljYXRpb24uIAo+Pj4KPj4+IFRoZSBhYm92ZSBj b25kaXRpb24gb2YgdGhlICBJVEwgcGF0aCBpcyBoZW5jZSBjYWxsZWQg4oCcbWFyZ2luYWzigJ0u Cj4+Pgo+Pj4gV2hhdCB3ZSBkZXNpcmUgaXMgZm9yIHRoZSBETSB0byBkZXRlcm1pbmlzdGljYWxs eSAgY2F0ZWdvcml6ZSBhIElUTCBQYXRoIGFzIOKAnG1hcmdpbmFs4oCdIGFuZCBtb3ZlIGFsbCB0 aGUgcGVuZGluZyBJL09zIGZyb20gdGhlIG1hcmdpbmFsIFBhdGggdG8gYW4gQWN0aXZlIFBhdGgu IFRoaXMgd2lsbCBoZWxwIGluIG1lZXRpbmcgYXBwbGljYXRpb24gSS9PIHRpbWluZyBjb25zdHJh aW50cy4gQWxzbyBhIGNhcGFiaWxpdHkgdG8gYXV0b21hdGljYWxseSByZS1pbnN0YW50aWF0ZSB0 aGUgbWFyZ2luYWwgcGF0aCBpbnRvIEFjdGl2ZSBvbmNlIHRoZSBtYXJnaW5hbCBjb25kaXRpb24g aW4gdGhlIG5ldHdvcmsgaXMgZml4ZWQuCj4+Pgo+Pj4KPj4+IEJhc2VkIG9uIHRoZSBhYm92ZSBl eHBsYW5hdGlvbiBJIHdhbnQgdG8gcmVuYW1lIHRoZSBuYW1lcyBhcyBtYXJnaW5hbF9wYXRoX1hY WFggYW5kIHRoaXMgaXMgaXJyZXNwZWN0aXZlIG9mIGFueSBzdG9yYWdlIG5ldHdvcmsuCj4+Pgo+ Pj4gUmVnYXJkcywKPj4+IE11bmVlbmRyYS4KPj4KPiAKCi0tCmRtLWRldmVsIG1haWxpbmcgbGlz dApkbS1kZXZlbEByZWRoYXQuY29tCmh0dHBzOi8vd3d3LnJlZGhhdC5jb20vbWFpbG1hbi9saXN0 aW5mby9kbS1kZXZlbA==