From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yu, Zhang" Subject: Re: [PATCH v3 1/3] x86/ioreq server(patch for 4.7): Rename p2m_mmio_write_dm to p2m_ioreq_server. Date: Tue, 26 Apr 2016 16:23:41 +0800 Message-ID: <557338f1-74ba-ec64-5a46-f51572c8b91c@linux.intel.com> References: <1461580540-9314-1-git-send-email-yu.c.zhang@linux.intel.com> <1461580540-9314-2-git-send-email-yu.c.zhang@linux.intel.com> <81c8eb898bb0419fa4dba588ccc6131a@AMSPEX02CL03.citrite.net> <571E563202000078000E5747@prv-mh.provo.novell.com> <571E42A7.9080503@citrix.com> <20a28db770fa43bf94be56548116206a@AMSPEX02CL03.citrite.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20a28db770fa43bf94be56548116206a@AMSPEX02CL03.citrite.net> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Paul Durrant , George Dunlap , Jan Beulich Cc: Kevin Tian , Wei Liu , Andrew Cooper , "Tim (Xen.org)" , "xen-devel@lists.xen.org" , Zhiyuan Lv , Jun Nakajima , "Keir (Xen.org)" List-Id: xen-devel@lists.xenproject.org CgpPbiA0LzI2LzIwMTYgMTowMSBBTSwgUGF1bCBEdXJyYW50IHdyb3RlOgo+PiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQo+PiBGcm9tOiBHZW9yZ2UgRHVubGFwIFttYWlsdG86Z2VvcmdlLmR1 bmxhcEBjaXRyaXguY29tXQo+PiBTZW50OiAyNSBBcHJpbCAyMDE2IDE3OjE2Cj4+IFRvOiBZdSwg Wmhhbmc7IEphbiBCZXVsaWNoOyBQYXVsIER1cnJhbnQKPj4gQ2M6IEFuZHJldyBDb29wZXI7IFdl aSBMaXU7IEp1biBOYWthamltYTsgS2V2aW4gVGlhbjsgWmhpeXVhbiBMdjsgeGVuLQo+PiBkZXZl bEBsaXN0cy54ZW4ub3JnOyBLZWlyIChYZW4ub3JnKTsgVGltIChYZW4ub3JnKQo+PiBTdWJqZWN0 OiBSZTogW1hlbi1kZXZlbF0gW1BBVENIIHYzIDEvM10geDg2L2lvcmVxIHNlcnZlcihwYXRjaCBm b3IgNC43KToKPj4gUmVuYW1lIHAybV9tbWlvX3dyaXRlX2RtIHRvIHAybV9pb3JlcV9zZXJ2ZXIu Cj4+Cj4+IE9uIDI1LzA0LzE2IDE2OjUzLCBZdSwgWmhhbmcgd3JvdGU6Cj4+Pgo+Pj4KPj4+IE9u IDQvMjUvMjAxNiAxMTozOCBQTSwgSmFuIEJldWxpY2ggd3JvdGU6Cj4+Pj4+Pj4gT24gMjUuMDQu MTYgYXQgMTc6MjksIDxQYXVsLkR1cnJhbnRAY2l0cml4LmNvbT4gd3JvdGU6Cj4+Pj4+PiAgLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4+Pj4+IEZyb206IFl1LCBaaGFuZyBbbWFpbHRvOnl1 LmMuemhhbmdAbGludXguaW50ZWwuY29tXQo+Pj4+Pj4gU2VudDogMjUgQXByaWwgMjAxNiAxNjoy Mgo+Pj4+Pj4gVG86IFBhdWwgRHVycmFudDsgR2VvcmdlIER1bmxhcAo+Pj4+Pj4gQ2M6IHhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnOyBLZXZpbiBUaWFuOyBLZWlyIChYZW4ub3JnKTsgSnVuIE5ha2Fq aW1hOwo+Pj4+Pj4gQW5kcmV3IENvb3BlcjsgVGltIChYZW4ub3JnKTsgTHYsIFpoaXl1YW47IEph biBCZXVsaWNoOyBXZWkgTGl1Cj4+Pj4+PiBTdWJqZWN0OiBSZTogW1hlbi1kZXZlbF0gW1BBVENI IHYzIDEvM10geDg2L2lvcmVxIHNlcnZlcihwYXRjaCBmb3IKPj4+Pj4+IDQuNyk6Cj4+Pj4+PiBS ZW5hbWUgcDJtX21taW9fd3JpdGVfZG0gdG8gcDJtX2lvcmVxX3NlcnZlci4KPj4+Pj4+Cj4+Pj4+ Pgo+Pj4+Pj4KPj4+Pj4+IE9uIDQvMjUvMjAxNiAxMDowMSBQTSwgUGF1bCBEdXJyYW50IHdyb3Rl Ogo+Pj4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+Pj4+Pj4+PiBGcm9tOiBkdW5s YXBnQGdtYWlsLmNvbSBbbWFpbHRvOmR1bmxhcGdAZ21haWwuY29tXSBPbiBCZWhhbGYKPj4gT2YK Pj4+Pj4+Pj4gR2VvcmdlIER1bmxhcAo+Pj4+Pj4+PiBTZW50OiAyNSBBcHJpbCAyMDE2IDE0OjM5 Cj4+Pj4+Pj4+IFRvOiBZdSBaaGFuZwo+Pj4+Pj4+PiBDYzogeGVuLWRldmVsQGxpc3RzLnhlbi5v cmc7IEtldmluIFRpYW47IEtlaXIgKFhlbi5vcmcpOyBKdW4KPj4+Pj4+Pj4gTmFrYWppbWE7Cj4+ Pj4+Pj4+IEFuZHJldyBDb29wZXI7IFRpbSAoWGVuLm9yZyk7IFBhdWwgRHVycmFudDsgTHYsIFpo aXl1YW47IEphbgo+Pj4+Pj4+PiBCZXVsaWNoOyBXZWkKPj4+Pj4+IExpdQo+Pj4+Pj4+PiBTdWJq ZWN0OiBSZTogW1hlbi1kZXZlbF0gW1BBVENIIHYzIDEvM10geDg2L2lvcmVxIHNlcnZlcihwYXRj aCBmb3IKPj4+Pj4+Pj4gNC43KToKPj4+Pj4+Pj4gUmVuYW1lIHAybV9tbWlvX3dyaXRlX2RtIHRv IHAybV9pb3JlcV9zZXJ2ZXIuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IE9uIE1vbiwgQXByIDI1LCAyMDE2 IGF0IDExOjM1IEFNLCBZdSBaaGFuZwo+Pj4+Pj4gPHl1LmMuemhhbmdAbGludXguaW50ZWwuY29t Pgo+Pj4+Pj4+PiB3cm90ZToKPj4+Pj4+Pj4+IFByZXZpb3VzbHkgcDJtIHR5cGUgcDJtX21taW9f d3JpdGVfZG0gd2FzIGludHJvZHVjZWQgZm9yCj4+IHdyaXRlLQo+Pj4+Pj4+Pj4gcHJvdGVjdGVk IG1lbW9yeSBwYWdlcyB3aG9zZSB3cml0ZSBvcGVyYXRpb25zIGFyZSBzdXBwb3NlZCB0bwo+PiBi ZQo+Pj4+Pj4+Pj4gZm9yd2FyZGVkIHRvIGFuZCBlbXVsYXRlZCBieSBhbiBpb3JlcSBzZXJ2ZXIu IFlldCBsaW1pdGF0aW9ucyBvZgo+Pj4+Pj4+Pj4gcmFuZ2VzZXQgcmVzdHJpY3QgdGhlIG51bWJl ciBvZiBndWVzdCBwYWdlcyB0byBiZSB3cml0ZS1wcm90ZWN0ZWQuCj4+Pj4+Pj4+Pgo+Pj4+Pj4+ Pj4gVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgcDJtIHR5cGUgcDJtX21taW9fd3JpdGVfZG0gd2l0 aCBhIG5ldwo+Pj4+Pj4gbmFtZToKPj4+Pj4+Pj4+IHAybV9pb3JlcV9zZXJ2ZXIsIHdoaWNoIG1l YW5zIHRoaXMgcDJtIHR5cGUgY2FuIGJlIGNsYWltZWQgYnkKPj4gb25lCj4+Pj4+Pj4+PiBpb3Jl cSBzZXJ2ZXIsIGluc3RlYWQgb2YgYmVpbmcgdHJhY2tlZCBpbnNpZGUgdGhlIHJhbmdlc2V0IG9m IGlvcmVxCj4+Pj4+Pj4+PiBzZXJ2ZXIuIFBhdGNoZXMgZm9sbG93aW5nIHVwIHdpbGwgYWRkIHRo ZSByZWxhdGVkIGh2bW9wIGhhbmRsaW5nCj4+Pj4+Pj4+PiBjb2RlIHdoaWNoIG1hcC91bm1hcCB0 eXBlIHAybV9pb3JlcV9zZXJ2ZXIgdG8vZnJvbSBhbiBpb3JlcQo+Pj4+Pj4gc2VydmVyLgo+Pj4+ Pj4+Pj4KPj4+Pj4+Pj4+IGNoYW5nZXMgaW4gdjM6Cj4+Pj4+Pj4+PiAgIC0gQWNjb3JkaW5nIHRv IEphbiAmIEdlb3JnZSdzIGNvbW1lbnRzLCBrZWVwCj4+Pj4+Pj4+IEhWTU1FTV9tbWlvX3dyaXRl X2RtCj4+Pj4+Pj4+PiAgICAgZm9yIG9sZCB4ZW4gaW50ZXJmYWNlIHZlcnNpb25zLCBhbmQgcmVw bGFjZSBpdCB3aXRoCj4+Pj4+Pj4+PiBIVk1NRU1fdW51c2VkCj4+Pj4+Pj4+PiAgICAgZm9yIHhl biBpbnRlcmZhY2VzIG5ld2VyIHRoYW4gNC43LjA7IEZvciBwMm1faW9yZXFfc2VydmVyLCBhCj4+ IG5ldwo+Pj4+Pj4+Pj4gICAgIGVudW0gLSBIVk1NRU1faW9yZXFfc2VydmVyIGlzIGludHJvZHVj ZWQgZm9yIHRoZSBnZXQvc2V0Cj4+IG1lbQo+Pj4+Pj4gdHlwZQo+Pj4+Pj4+Pj4gICAgIGludGVy ZmFjZXM7Cj4+Pj4+Pj4+PiAgIC0gQWRkIEdlb3JnZSdzIFJldmlld2VkLWJ5IGFuZCBBY2tlZC1i eSBmcm9tIFRpbSAmIEFuZHJldy4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gVW5mb3J0dW5hdGVseSB0aGVz ZSByYXRoZXIgY29udHJhZGljdCBlYWNoIG90aGVyIC0tIEkgY29uc2lkZXIKPj4+Pj4+Pj4gUmV2 aWV3ZWQtYnkgdG8gb25seSBzdGljayBpZiB0aGUgY29kZSBJJ3ZlIHNwZWNpZmllZCBoYXNuJ3Qg Y2hhbmdlZAo+Pj4+Pj4+PiAob3IgaGFzIG9ubHkgY2hhbmdlZCB0cml2aWFsbHkpLgo+Pj4+Pj4+ Pgo+Pj4+Pj4+PiBBbHNvLi4uCj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gY2hhbmdlcyBp biB2MjoKPj4+Pj4+Pj4+ICAgLSBBY2NvcmRpbmcgdG8gR2VvcmdlIER1bmxhcCdzIGNvbW1lbnRz LCBvbmx5IHJlbmFtZSB0aGUgcDJtCj4+IHR5cGUsCj4+Pj4+Pj4+PiAgICAgd2l0aCBubyBiZWhh dmlvciBjaGFuZ2VzLgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFBhdWwgRHVy cmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Cj4+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBZ dSBaaGFuZyA8eXUuYy56aGFuZ0BsaW51eC5pbnRlbC5jb20+Cj4+Pj4+Pj4+PiBBY2tlZC1ieTog VGltIERlZWdhbiA8dGltQHhlbi5vcmc+Cj4+Pj4+Pj4+PiBBY2tlZC1ieTogQW5kcmV3IENvb3Bl ciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KPj4+Pj4+Pj4+IFJldmlld2VkLWJ5OiBHZW9y Z2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+Cj4+Pj4+Pj4+PiBDYzogS2VpciBG cmFzZXIgPGtlaXJAeGVuLm9yZz4KPj4+Pj4+Pj4+IENjOiBKYW4gQmV1bGljaCA8amJldWxpY2hA c3VzZS5jb20+Cj4+Pj4+Pj4+PiBDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0 cml4LmNvbT4KPj4+Pj4+Pj4+IENjOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5j b20+Cj4+Pj4+Pj4+PiBDYzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+Cj4+Pj4+ Pj4+PiBDYzogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgo+Pj4+ Pj4+Pj4gQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgo+Pj4+Pj4+Pj4gLS0tCj4+Pj4+Pj4+ PiAgeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgICB8IDE0ICsrKysrKysrLS0tLS0tCj4+ Pj4+Pj4+PiAgeGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyAgICAgICB8ICAyICstCj4+Pj4+Pj4+ PiAgeGVuL2FyY2gveDg2L21tL3AybS1wdC5jICAgICAgICB8ICAyICstCj4+Pj4+Pj4+PiAgeGVu L2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jICB8ICAyICstCj4+Pj4+Pj4+PiAgeGVuL2luY2x1 ZGUvYXNtLXg4Ni9wMm0uaCAgICAgICB8ICA0ICsrLS0KPj4+Pj4+Pj4+ICB4ZW4vaW5jbHVkZS9w dWJsaWMvaHZtL2h2bV9vcC5oIHwgIDggKysrKysrKy0KPj4+Pj4+Pj4+ICA2IGZpbGVzIGNoYW5n ZWQsIDIwIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9o dm0uYwo+Pj4+Pj4+Pj4gaW5kZXggZjI0MTI2ZC4uODc0Y2IwZiAxMDA2NDQKPj4+Pj4+Pj4+IC0t LSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPj4+Pj4+Pj4+ICsrKyBiL3hlbi9hcmNoL3g4Ni9o dm0vaHZtLmMKPj4+Pj4+Pj4+IEBAIC0xODU3LDcgKzE4NTcsNyBAQCBpbnQgaHZtX2hhcF9uZXN0 ZWRfcGFnZV9mYXVsdChwYWRkcl90Cj4+IGdwYSwKPj4+Pj4+Pj4gdW5zaWduZWQgbG9uZyBnbGEs Cj4+Pj4+Pj4+PiAgICAgICAqLwo+Pj4+Pj4+Pj4gICAgICBpZiAoIChwMm10ID09IHAybV9tbWlv X2RtKSB8fAo+Pj4+Pj4+Pj4gICAgICAgICAgIChucGZlYy53cml0ZV9hY2Nlc3MgJiYKPj4+Pj4+ Pj4+IC0gICAgICAgICAgKHAybV9pc19kaXNjYXJkX3dyaXRlKHAybXQpIHx8IChwMm10ID09Cj4+ Pj4+PiBwMm1fbW1pb193cml0ZV9kbSkpKSApCj4+Pj4+Pj4+PiArICAgICAgICAgIChwMm1faXNf ZGlzY2FyZF93cml0ZShwMm10KSB8fCAocDJtdCA9PQo+Pj4+Pj4+Pj4gcDJtX2lvcmVxX3NlcnZl cikpKSApCj4+Pj4+Pj4+PiAgICAgIHsKPj4+Pj4+Pj4+ICAgICAgICAgIF9fcHV0X2dmbihwMm0s IGdmbik7Cj4+Pj4+Pj4+PiAgICAgICAgICBpZiAoIGFwMm1fYWN0aXZlICkKPj4+Pj4+Pj4+IEBA IC01NDk5LDggKzU0OTksOCBAQCBsb25nIGRvX2h2bV9vcCh1bnNpZ25lZCBsb25nIG9wLAo+Pj4+ Pj4+PiBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKPj4+Pj4+Pj4+ICAgICAgICAg ICAgICBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIGEucGZuLCAmdCk7Cj4+Pj4+Pj4+PiAgICAg ICAgICAgICAgaWYgKCBwMm1faXNfbW1pbyh0KSApCj4+Pj4+Pj4+PiAgICAgICAgICAgICAgICAg IGEubWVtX3R5cGUgPSAgSFZNTUVNX21taW9fZG07Cj4+Pj4+Pj4+PiAtICAgICAgICAgICAgZWxz ZSBpZiAoIHQgPT0gcDJtX21taW9fd3JpdGVfZG0gKQo+Pj4+Pj4+Pj4gLSAgICAgICAgICAgICAg ICBhLm1lbV90eXBlID0gSFZNTUVNX21taW9fd3JpdGVfZG07Cj4+Pj4+Pj4+PiArICAgICAgICAg ICAgZWxzZSBpZiAoIHQgPT0gcDJtX2lvcmVxX3NlcnZlciApCj4+Pj4+Pj4+PiArICAgICAgICAg ICAgICAgIGEubWVtX3R5cGUgPSBIVk1NRU1faW9yZXFfc2VydmVyOwo+Pj4+Pj4+Pj4gICAgICAg ICAgICAgIGVsc2UgaWYgKCBwMm1faXNfcmVhZG9ubHkodCkgKQo+Pj4+Pj4+Pj4gICAgICAgICAg ICAgICAgICBhLm1lbV90eXBlID0gIEhWTU1FTV9yYW1fcm87Cj4+Pj4+Pj4+PiAgICAgICAgICAg ICAgZWxzZSBpZiAoIHAybV9pc19yYW0odCkgKQo+Pj4+Pj4+Pj4gQEAgLTU1MzEsNyArNTUzMSw4 IEBAIGxvbmcgZG9faHZtX29wKHVuc2lnbmVkIGxvbmcgb3AsCj4+Pj4+Pj4+IFhFTl9HVUVTVF9I QU5ETEVfUEFSQU0odm9pZCkgYXJnKQo+Pj4+Pj4+Pj4gICAgICAgICAgICAgIFtIVk1NRU1fcmFt X3J3XSAgPSBwMm1fcmFtX3J3LAo+Pj4+Pj4+Pj4gICAgICAgICAgICAgIFtIVk1NRU1fcmFtX3Jv XSAgPSBwMm1fcmFtX3JvLAo+Pj4+Pj4+Pj4gICAgICAgICAgICAgIFtIVk1NRU1fbW1pb19kbV0g PSBwMm1fbW1pb19kbSwKPj4+Pj4+Pj4+IC0gICAgICAgICAgICBbSFZNTUVNX21taW9fd3JpdGVf ZG1dID0gcDJtX21taW9fd3JpdGVfZG0KPj4+Pj4+Pj4+ICsgICAgICAgICAgICBbSFZNTUVNX3Vu dXNlZF0gPSBwMm1faW52YWxpZCwKPj4+Pj4+Pj4+ICsgICAgICAgICAgICBbSFZNTUVNX2lvcmVx X3NlcnZlcl0gPSBwMm1faW9yZXFfc2VydmVyCj4+Pj4+Pj4+PiAgICAgICAgICB9Owo+Pj4+Pj4+ Pj4KPj4+Pj4+Pj4+ICAgICAgICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZhLCBhcmcsIDEpICkK Pj4+Pj4+Pj4+IEBAIC01NTU1LDcgKzU1NTYsOCBAQCBsb25nIGRvX2h2bV9vcCh1bnNpZ25lZCBs b25nIG9wLAo+Pj4+Pj4+PiBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKPj4+Pj4+ Pj4+ICAgICAgICAgICAgICAgKChhLmZpcnN0X3BmbiArIGEubnIgLSAxKSA+Cj4+Pj4+Pj4+PiBk b21haW5fZ2V0X21heGltdW1fZ3BmbihkKSkgKQo+Pj4+Pj4+Pj4gICAgICAgICAgICAgIGdvdG8g c2V0bWVtdHlwZV9mYWlsOwo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IC0gICAgICAgIGlmICggYS5odm1t ZW1fdHlwZSA+PSBBUlJBWV9TSVpFKG1lbXR5cGUpICkKPj4+Pj4+Pj4+ICsgICAgICAgIGlmICgg YS5odm1tZW1fdHlwZSA+PSBBUlJBWV9TSVpFKG1lbXR5cGUpIHx8Cj4+Pj4+Pj4+PiArICAgICAg ICAgICAgIHVubGlrZWx5KGEuaHZtbWVtX3R5cGUgPT0gSFZNTUVNX3VudXNlZCkgKQo+Pj4+Pj4+ Pj4gICAgICAgICAgICAgIGdvdG8gc2V0bWVtdHlwZV9mYWlsOwo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ ICAgICAgICAgIHdoaWxlICggYS5uciA+IHN0YXJ0X2l0ZXIgKQo+Pj4+Pj4+Pj4gQEAgLTU1Nzks NyArNTU4MSw3IEBAIGxvbmcgZG9faHZtX29wKHVuc2lnbmVkIGxvbmcgb3AsCj4+Pj4+Pj4+IFhF Tl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQo+Pj4+Pj4+Pj4gICAgICAgICAgICAgIH0K Pj4+Pj4+Pj4+ICAgICAgICAgICAgICBpZiAoICFwMm1faXNfcmFtKHQpICYmCj4+Pj4+Pj4+PiAg ICAgICAgICAgICAgICAgICAoIXAybV9pc19ob2xlKHQpIHx8IGEuaHZtbWVtX3R5cGUgIT0KPj4+ Pj4+Pj4+IEhWTU1FTV9tbWlvX2RtKQo+Pj4+Pj4+PiAmJgo+Pj4+Pj4+Pj4gLSAgICAgICAgICAg ICAgICAgKHQgIT0gcDJtX21taW9fd3JpdGVfZG0gfHwgYS5odm1tZW1fdHlwZSAhPQo+Pj4+Pj4+ PiBIVk1NRU1fcmFtX3J3KSApCj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAodCAhPSBwMm1f aW9yZXFfc2VydmVyIHx8IGEuaHZtbWVtX3R5cGUgIT0KPj4+Pj4+Pj4gSFZNTUVNX3JhbV9ydykg KQo+Pj4+Pj4+Pj4gICAgICAgICAgICAgIHsKPj4+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgcHV0 X2dmbihkLCBwZm4pOwo+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgICBnb3RvIHNldG1lbXR5cGVf ZmFpbDsKPj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCj4+ IGIveGVuL2FyY2gveDg2L21tL3AybS0KPj4+Pj4+IGVwdC5jCj4+Pj4+Pj4+PiBpbmRleCAzY2I2 ODY4Li4zODBlYzI1IDEwMDY0NAo+Pj4+Pj4+Pj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1l cHQuYwo+Pj4+Pj4+Pj4gKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwo+Pj4+Pj4+Pj4g QEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0aWMgdm9pZCBlcHRfcDJtX3R5cGVfdG9fZmxhZ3Moc3Ry dWN0Cj4+Pj4+Pj4+IHAybV9kb21haW4gKnAybSwgZXB0X2VudHJ5X3QgKmVudHJ5LAo+Pj4+Pj4+ Pj4gICAgICAgICAgICAgIGVudHJ5LT5hID0gZW50cnktPmQgPSAhIWNwdV9oYXNfdm14X2VwdF9h ZDsKPj4+Pj4+Pj4+ICAgICAgICAgICAgICBicmVhazsKPj4+Pj4+Pj4+ICAgICAgICAgIGNhc2Ug cDJtX2dyYW50X21hcF9ybzoKPj4+Pj4+Pj4+IC0gICAgICAgIGNhc2UgcDJtX21taW9fd3JpdGVf ZG06Cj4+Pj4+Pj4+PiArICAgICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6Cj4+Pj4+Pj4+PiAg ICAgICAgICAgICAgZW50cnktPnIgPSAxOwo+Pj4+Pj4+Pj4gICAgICAgICAgICAgIGVudHJ5LT53 ID0gZW50cnktPnggPSAwOwo+Pj4+Pj4+Pj4gICAgICAgICAgICAgIGVudHJ5LT5hID0gISFjcHVf aGFzX3ZteF9lcHRfYWQ7Cj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3Ay bS1wdC5jIGIveGVuL2FyY2gveDg2L21tL3AybS0KPj4gcHQuYwo+Pj4+Pj4+Pj4gaW5kZXggM2Q4 MDYxMi4uZWFiZDJlMyAxMDA2NDQKPj4+Pj4+Pj4+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0t cHQuYwo+Pj4+Pj4+Pj4gKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCj4+Pj4+Pj4+PiBA QCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZwo+Pj4+Pj4gcDJtX3R5cGVfdG9f ZmxhZ3MocDJtX3R5cGVfdAo+Pj4+Pj4+PiB0LCBtZm5fdCBtZm4sCj4+Pj4+Pj4+PiAgICAgIGRl ZmF1bHQ6Cj4+Pj4+Pj4+PiAgICAgICAgICByZXR1cm4gZmxhZ3MgfCBfUEFHRV9OWF9CSVQ7Cj4+ Pj4+Pj4+PiAgICAgIGNhc2UgcDJtX2dyYW50X21hcF9ybzoKPj4+Pj4+Pj4+IC0gICAgY2FzZSBw Mm1fbW1pb193cml0ZV9kbToKPj4+Pj4+Pj4+ICsgICAgY2FzZSBwMm1faW9yZXFfc2VydmVyOgo+ Pj4+Pj4+Pj4gICAgICAgICAgcmV0dXJuIGZsYWdzIHwgUDJNX0JBU0VfRkxBR1MgfCBfUEFHRV9O WF9CSVQ7Cj4+Pj4+Pj4+PiAgICAgIGNhc2UgcDJtX3JhbV9ybzoKPj4+Pj4+Pj4+ICAgICAgY2Fz ZSBwMm1fcmFtX2xvZ2RpcnR5Ogo+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9t bS9zaGFkb3cvbXVsdGkuYwo+Pj4+Pj4+PiBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGku Ywo+Pj4+Pj4+Pj4gaW5kZXggZTVjODQ5OS4uYzgxMzAyYSAxMDA2NDQKPj4+Pj4+Pj4+IC0tLSBh L3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwo+Pj4+Pj4+Pj4gKysrIGIveGVuL2FyY2gv eDg2L21tL3NoYWRvdy9tdWx0aS5jCj4+Pj4+Pj4+PiBAQCAtMzIyNSw3ICszMjI1LDcgQEAgc3Rh dGljIGludCBzaF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LAo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ ICAgICAgLyogTmVlZCB0byBoYW5kIG9mZiBkZXZpY2UtbW9kZWwgTU1JTyB0byB0aGUgZGV2aWNl IG1vZGVsICovCj4+Pj4+Pj4+PiAgICAgIGlmICggcDJtdCA9PSBwMm1fbW1pb19kbQo+Pj4+Pj4+ Pj4gLSAgICAgICAgIHx8IChwMm10ID09IHAybV9tbWlvX3dyaXRlX2RtICYmIGZ0ID09Cj4+IGZ0 X2RlbWFuZF93cml0ZSkgKQo+Pj4+Pj4+Pj4gKyAgICAgICAgIHx8IChwMm10ID09IHAybV9pb3Jl cV9zZXJ2ZXIgJiYgZnQgPT0gZnRfZGVtYW5kX3dyaXRlKSApCj4+Pj4+Pj4+PiAgICAgIHsKPj4+ Pj4+Pj4+ICAgICAgICAgIGdwYSA9IGd1ZXN0X3dhbGtfdG9fZ3BhKCZndyk7Cj4+Pj4+Pj4+PiAg ICAgICAgICBnb3RvIG1taW87Cj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9wMm0uaCBiL3hlbi9pbmNsdWRlL2FzbS0KPj4geDg2L3AybS5oCj4+Pj4+Pj4+PiBpbmRl eCA1MzkyZWIwLi5lZTJlYTljIDEwMDY0NAo+Pj4+Pj4+Pj4gLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9wMm0uaAo+Pj4+Pj4+Pj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAo+Pj4+ Pj4+Pj4gQEAgLTcxLDcgKzcxLDcgQEAgdHlwZWRlZiBlbnVtIHsKPj4+Pj4+Pj4+ICAgICAgcDJt X3JhbV9zaGFyZWQgPSAxMiwgICAgICAgICAgLyogU2hhcmVkIG9yIHNoYXJhYmxlIG1lbW9yeSAq Lwo+Pj4+Pj4+Pj4gICAgICBwMm1fcmFtX2Jyb2tlbiA9IDEzLCAgICAgICAgICAvKiBCcm9rZW4g cGFnZSwgYWNjZXNzIGNhdXNlCj4+Pj4+Pj4+PiBkb21haW4KPj4+Pj4+IGNyYXNoCj4+Pj4+Pj4+ ICovCj4+Pj4+Pj4+PiAgICAgIHAybV9tYXBfZm9yZWlnbiAgPSAxNCwgICAgICAgIC8qIHJhbSBw YWdlcyBmcm9tIGZvcmVpZ24KPj4+Pj4+Pj4+IGRvbWFpbiAqLwo+Pj4+Pj4+Pj4gLSAgICBwMm1f bW1pb193cml0ZV9kbSA9IDE1LCAgICAgICAvKiBSZWFkLW9ubHk7IHdyaXRlcyBnbyB0byB0aGUK Pj4+Pj4+Pj4+IGRldmljZQo+Pj4+Pj4+PiBtb2RlbCAqLwo+Pj4+Pj4+Pj4gKyAgICBwMm1faW9y ZXFfc2VydmVyID0gMTUsCj4+Pj4+Pj4+PiAgfSBwMm1fdHlwZV90Owo+Pj4+Pj4+Pj4KPj4+Pj4+ Pj4+ICAvKiBNb2RpZmllcnMgdG8gdGhlIHF1ZXJ5ICovCj4+Pj4+Pj4+PiBAQCAtMTEyLDcgKzEx Miw3IEBAIHR5cGVkZWYgdW5zaWduZWQgaW50IHAybV9xdWVyeV90Owo+Pj4+Pj4+Pj4gICAgICAg ICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAybV9yYW1fcm8pICAgICAgICAgXAo+Pj4+ Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAybV9ncmFudF9tYXBf cm8pICAgXAo+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAy bV9yYW1fc2hhcmVkKSAgICAgXAo+Pj4+Pj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICB8IHAy bV90b19tYXNrKHAybV9tbWlvX3dyaXRlX2RtKSkKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgfCBwMm1fdG9fbWFzayhwMm1faW9yZXFfc2VydmVyKSkKPj4+Pj4+Pj4+Cj4+Pj4+Pj4+ PiAgLyogV3JpdGUtZGlzY2FyZCB0eXBlcywgd2hpY2ggc2hvdWxkIGRpc2NhcmQgdGhlIHdyaXRl Cj4+Pj4+Pj4+PiBvcGVyYXRpb25zICovCj4+Pj4+Pj4+PiAgI2RlZmluZSBQMk1fRElTQ0FSRF9X UklURV9UWVBFUwo+PiAocDJtX3RvX21hc2socDJtX3JhbV9ybykgICAgIFwKPj4+Pj4+Pj4+IGRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5oCj4+Pj4+Pj4+IGIveGVu L2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaAo+Pj4+Pj4+Pj4gaW5kZXggMTYwNjE4NS4uYjNl NDVjZiAxMDA2NDQKPj4+Pj4+Pj4+IC0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX29w LmgKPj4+Pj4+Pj4+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX29wLmgKPj4+Pj4+ Pj4+IEBAIC04Myw3ICs4MywxMyBAQCB0eXBlZGVmIGVudW0gewo+Pj4+Pj4+Pj4gICAgICBIVk1N RU1fcmFtX3J3LCAgICAgICAgICAgICAvKiBOb3JtYWwgcmVhZC93cml0ZSBndWVzdCBSQU0gKi8K Pj4+Pj4+Pj4+ICAgICAgSFZNTUVNX3JhbV9ybywgICAgICAgICAgICAgLyogUmVhZC1vbmx5OyB3 cml0ZXMgYXJlCj4+Pj4+Pj4+PiBkaXNjYXJkZWQgKi8KPj4+Pj4+Pj4+ICAgICAgSFZNTUVNX21t aW9fZG0sICAgICAgICAgICAgLyogUmVhZHMgYW5kIHdyaXRlIGdvIHRvIHRoZSBkZXZpY2UKPj4+ Pj4+IG1vZGVsCj4+Pj4+Pj4+ICovCj4+Pj4+Pj4+PiAtICAgIEhWTU1FTV9tbWlvX3dyaXRlX2Rt ICAgICAgIC8qIFJlYWQtb25seTsgd3JpdGVzIGdvIHRvIHRoZQo+Pj4+Pj4+Pj4gZGV2aWNlCj4+ Pj4+Pj4+IG1vZGVsICovCj4+Pj4+Pj4+PiArI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18g PCAweDAwMDQwNzAwCj4+Pj4+Pj4+PiArICAgIEhWTU1FTV9tbWlvX3dyaXRlX2RtLCAgICAgIC8q IFJlYWQtb25seTsgd3JpdGVzIGdvIHRvIHRoZQo+Pj4+Pj4+Pj4gZGV2aWNlCj4+Pj4+Pj4+IG1v ZGVsICovCj4+Pj4+Pj4+PiArI2Vsc2UKPj4+Pj4+Pj4+ICsgICAgSFZNTUVNX3VudXNlZCwgICAg ICAgICAgICAgLyogUGxhY2Vob2xkZXI7IHNldHRpbmcgbWVtb3J5IHRvCj4+Pj4+Pj4+PiB0aGlz Cj4+Pj4+PiB0eXBlCj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHdpbGwgZmFpbCBmb3IgY29kZSBhZnRlciA0LjcuMCAqLwo+Pj4+Pj4+Pj4gKyNlbmRpZgo+Pj4+ Pj4+Pj4gKyAgICBIVk1NRU1faW9yZXFfc2VydmVyCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IEFsc28sIEkg ZG9uJ3QgdGhpbmsgd2UndmUgaGFkIGEgY29udmluY2luZyBhcmd1bWVudCBmb3Igd2h5IHRoaXMK Pj4+Pj4+Pj4gcGF0Y2gKPj4+Pj4+Pj4gbmVlZHMgdG8gYmUgaW4gNC43LiAgVGhlIHAybSBuYW1l IGNoYW5nZXMgYXJlIGludGVybmFsIG9ubHksIGFuZCBzbwo+Pj4+Pj4+PiBkb24ndCBuZWVkIHRv IGJlIG1hZGUgYXQgYWxsOyBhbmQgdGhlIG9sZCBmdW5jdGlvbmFsaXR5IHdpbGwgd29yayBhcwo+ Pj4+Pj4+PiB3ZWxsIGFzIGl0IGV2ZXIgZGlkLiAgRnVydGhlcm1vcmUsIHRoZSB3aG9sZSByZWFz b24gd2UncmUgaW4gdGhpcwo+Pj4+Pj4+PiBzaXR1YXRpb24gaXMgdGhhdCB3ZSBjaGVja2VkIGlu IGEgcHVibGljbHktdmlzaWJsZSBjaGFuZ2UgdG8gdGhlCj4+Pj4+Pj4+IGludGVyZmFjZSBiZWZv cmUgaXQgd2FzIHByb3Blcmx5IHJlYWR5OyBJIHRoaW5rIHdlIHNob3VsZCBhdm9pZAo+Pj4+Pj4+ PiBtYWtpbmcKPj4+Pj4+Pj4gdGhlIHNhbWUgbWlzdGFrZSB0aGlzIHRpbWUuCj4+Pj4+Pj4+Cj4+ Pj4+Pj4+IFNvIHBlcnNvbmFsbHkgSSdkIGp1c3QgbGVhdmUgdGhpcyBwYXRjaCBlbnRpcmVseSBm b3IgNC44OyBidXQgaWYgUGF1bAo+Pj4+Pj4+PiBhbmQvb3IgSmFuIGhhdmUgc3Ryb25nIG9waW5p b25zLCB0aGVuIEkgd291bGQgc2F5IGNoZWNrIGluIG9ubHkgYQo+Pj4+Pj4+PiBwYXRjaCB0byBk byB0aGUgI2lmLyNlbHNlLyNlbmRpZiwgYW5kIGxlYXZlIGJvdGggdGhlIHAybSB0eXBlCj4+IGNo YW5nZXMKPj4+Pj4+Pj4gYW5kIHRoZSBuZXcgSFZNTUVNX2lvcmVxX3NlcnZlciBlbnVtIGZvciB3 aGVuIHRoZSA0LjgKPj4+Pj4+IGRldmVsb3BtZW50Cj4+Pj4+Pj4+IHdpbmRvdyBvcGVucy4KPj4+ Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IElmIHRoZSB3aG9sZSBzZXJpZXMgaXMgZ29pbmcgaW4gdGhl biBJIHRoaW5rIHRoaXMgcGF0Y2ggaXMgb2suIElmCj4+Pj4+Pj4gdGhpcyB0aGUKPj4+Pj4gb25s eQo+Pj4+Pj4gcGF0Y2ggdGhhdCBpcyBnb2luZyBpbiBmb3IgNC43IHRoZW4gSSB0aGluZyB3ZSBu ZWVkIHRoZSBwYXRjaCB0bwo+Pj4+Pj4gaHZtX29wLmggdG8KPj4+Pj4+IGRlcHJlY2F0ZSB0aGUg b2xkIHR5cGUgYW5kIHRoYXQncyBpdC4gV2UgZGVmaW5pdGVseSBzaG91bGQgbm90Cj4+Pj4+PiBp bnRyb2R1Y2UgYW4KPj4+Pj4+IGltcGxlbWVudGF0aW9uIG9mIHRoZSB0eXBlIEhWTU1FTV9pb3Jl cV9zZXJ2ZXIgdGhhdCBoYXMgdGhlIHNhbWUKPj4+Pj4+IGhhcmRjb2RlZCBzZW1hbnRpY3MgYXMg dGhlIG9sZCB0eXBlIGFuZCB0aGVuIGNoYW5nZSBpdC4KPj4+Pj4+PiBUaGUgcDJtIHR5cGUgY2hh bmdlcyBhcmUgYWxzbyB3cm9uZy4gVGhhdCB0eXBlIG5lZWRzIHRvIGJlIGxlZnQKPj4gYWxvbmUs Cj4+Pj4+PiBwcmVzdW1hYmx5LCBzbyB0aGF0IGFueXRoaW5nIHVzaW5nIEhWTU1FTV9tbWlvX3dy aXRlX2RtIGFuZAo+Pj4+Pj4gY29tcGlsZWQgdG8gdGhlIG9sZCBpbnRlcmZhY2UgdmVyc2lvbiBj b250aW51ZXMgdG8gZnVuY3Rpb24uIEkgdGhpbmsKPj4+Pj4+IEhWTU1FTV9pb3JlcV9zZXJ2ZXIg bmVlZHMgdG8gbWFwIHRvIGEgbmV3IHAybSB0eXBlIHdoaWNoCj4+IHNob3VsZCBiZQo+Pj4+Pj4g aW50cm9kdWNlZCBpbiBwYXRjaCAjMy4KPj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IFNvcnJ5LCBJJ20g YWxzbyBjb25mdXNlZCBub3cuIDooCj4+Pj4+Pgo+Pj4+Pj4gRG8gd2UgcmVhbGx5IHdhbnQgdG8g aW50cm9kdWNlIGEgbmV3IHAybSB0eXBlPyBXaHk/Cj4+Pj4+PiBNeSB1bmRlcnN0YW5kaW5nIG9m IHRoZSBwcmV2aW91cyBhZ3JlZW1lbnQgaXMgdGhhdDoKPj4+Pj4+IDE+IFdlIG5lZWQgdGhlIGlu dGVyZmFjZSB0byB3b3JrIG9uIG9sZCBoeXBlcnZpc29yIGZvcgo+Pj4+Pj4gSFZNTUVNX21taW9f d3JpdGVfZG07Cj4+Pj4+PiAyPiBXZSBuZWVkIHRoZSBpbnRlcmZhY2UgdG8gcmV0dXJuIC1FSU5W QUwgZm9yIG5ldyBoeXBlcnZpc29yCj4+Pj4+PiBmb3IgSFZNTUVNX21taW9fd3JpdGVfZG07Cj4+ Pj4+PiAzPiBXZSBuZWVkIHRoZSBuZXcgdHlwZSBIVk1NRU1faW9yZXFfc2VydmVyIHRvIHdvcmsg b24gbmV3Cj4+Pj4+PiBoeXBlcnZpc29yOwo+Pj4+Pj4KPj4+Pj4+IERpZCBJIG1pc3Mgc29tZXRo aW5nPyBPciBJIHRvdGFsbHkgbWlzdW5kZXJzdG9vZD8KPj4+Pj4+Cj4+Pj4+Cj4+Pj4+IEkgZG9u J3Qga25vdy4gSSdtIGNvbmZ1c2VkIHRvby4gV2hhdCB3ZSBkZWZpbml0ZWx5IGRvbid0IHdhbnQg dG8gZG8KPj4+Pj4gaXMgYWRkIGEKPj4+Pj4gbmV3IEhWTU1FTSB0eXBlIGFuZCBoYXZlIGl0IG1h cCB0byB0aGUgb2xkIGJlaGF2aW91ciwgb3RoZXJ3aXNlCj4+IHdlJ3JlIG5vCj4+Pj4+IGJldHRl ciBvZmYuCj4+Pj4+Cj4+Pj4+IFRoZSBxdWVzdGlvbiBJJ20gbm90IGNsZWFyIG9uIHRoZSBhbnN3 ZXIgdG8gaXMgd2hhdCBoYXBwZW5zIHRvIG9sZCBjb2RlOgo+Pj4+Pgo+Pj4+PiBTaG91bGQgaXQg Y29udGludWUgdG8gY29tcGlsZT8gSWYgc28sIHNob3VsZCBpdCBjb250aW51ZSB0byBydW4uCj4+ Pj4KPj4+PiBXZSBvbmx5IG5lZWQgdG8gYmUgY29uY2VybmVkIGFib3V0IHRoZSAiZ2V0IHR5cGUi IGZ1bmN0aW9uYWxpdHksCj4+Pj4gYXMgdGhhdCdzIHRoZSBvbmx5IHRoaW5nIGFuIGFyYml0cmFy eSBndWVzdCBjYW4gdXNlLiBJZiB0aGUKPj4+PiBoeXBlcmNhbGwgc2ltcGx5IG5ldmVyIHJldHVy bnMgdGhlIG9sZCB0eXBlLCB0aGVuIG9sZCBjb2RlIHdpbGwKPj4+PiBzdGlsbCB3b3JrIChpdCds bCBqdXN0IGhhdmUgc29tZSBkZWFkIGNvZGUgb24gbmV3IFhlbiksIGFuZCBoZW5jZQo+Pj4+IGl0 IGNvbXBpbGluZyBhZ2FpbnN0IHRoZSBvbGRlciBpbnRlcmZhY2UgaXMgZmluZSAoYW5kLCBmcm9t IGdlbmVyYWwKPj4+PiBjb25zaWRlcmF0aW9ucywgYSByZXF1aXJlbWVudCkuCj4+Pj4KPj4+Cj4+ PiBUaGFua3MgSmFuLiBBbmQgSSB0aGluayB0aGUgYW5zd2VyIGlzIHllcy4gVGhlIG5ldyBoeXBl cnZpc29yIHdpbGwKPj4+IG9ubHkgcmV0dXJuIEhWTU1FTV9pb3JlcV9zZXJ2ZXIsIHdoaWNoIGlz IGEgZGlmZmVyZW50IHZhbHVlIG5vdy4KPj4KPj4gUmlnaHQgLS0gYnV0IHdlIGNhbid0IGNoZWNr IGluIHRoaXMgZW50aXJlIHNlcmllcyBmb3IgNC43OyBob3dldmVyLCBQYXVsCj4+IHdvdWxkIGxp a2UgdG8gbWFrZSBpdCBjbGVhciB0aGF0IEhWTU1FTV9tbWlvX3dyaXRlX2RtIGlzIGRlcHJlY2F0 ZWQ7Cj4+IHNvCj4+IHdlIG5lZWQgYSBwYXRjaCB3aGljaCBkb2VzIHRoZSAjaWZkZWYvI2Vsc2Uv I2VuZGlmIGNsYXVzZSwgYW5kIHRoZW4KPj4gZXZlcnl0aGluZyBlbHNlIG5lY2Vzc2FyeSB0byBt YWtlIHN1cmUgdGhhdCB0aGluZ3MgY29tcGlsZSBwcm9wZXJseQo+PiBlaXRoZXIgd2F5LCBidXQg bm8gcDJtIGNoYW5nZXMgb3IgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5Lgo+Pgo+Cj4gRm9yIGNs YXJpdHksIGRvIHlvdSBleHBlY3QgYW55IGV4aXN0aW5nIHVzZSBvZiBIVk1NRU1fbW1pb193cml0 ZV9kbSB0byBjb250aW51ZSB0byAqZnVuY3Rpb24qPyBJIGFncmVlIHRoYXQgdGhpbmdzIHNob3Vs ZCBjb250aW51ZSB0byBidWlsZCwgYnV0IGlmIHRoZXkgZG9uJ3QgbmVlZCB0byBmdW5jdGlvbiB0 aGVuIHRoZSBub3cgcmVkdW5kYW50IHAybSB0eXBlIHNob3VsZCBiZSByZW1vdmVkIElNTyBhbmQg YW55IGF0dGVtcHQgdG8gc2V0IGEgcGFnZSB0byBIVk1NRU1fbW1pb193cml0ZV9kbSAob3IgdGhl IG5ldyBIVk1NRU1fdW51c2VkKSBuYW1lIHNob3VsZCByZXN1bHQgaW4gLUVJTlZBTC4gV2hhdCBp cyB5b3VyIHBvc2l0aW9uIG9uIHRoaXM/Cj4KClRoYW5rcywgUGF1bC4KTXkgZXhwZWN0YXRpb24g aXMgdGhhdCBIVk1NRU1fbW1pb193cml0ZV9kbSBzaGFsbCBmYWlsIGluIG5ldyB4ZW4KdmVyc2lv biwgYnV0IEkgZG8gbm90IHRoaW5rIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBwMm0gdHlwZSwganVz dApyZW5hbWUgaXQgY291bGQgYmUgT0suCgo+ICAgUGF1bAo+Cj4+ICAtR2VvcmdlCgpZdQoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK