From mboxrd@z Thu Jan 1 00:00:00 1970 From: Don Slutz Subject: Re: [PATCH for-4.5 v8 4/7] xen: Add vmware_port support Date: Mon, 26 Jan 2015 10:58:51 -0500 Message-ID: <54C6643B.1@terremark.com> References: <1412285417-19180-1-git-send-email-dslutz@verizon.com> <1412285417-19180-5-git-send-email-dslutz@verizon.com> <542DCA92.1030701@terremark.com> <542DD44F.6030101@terremark.com> <54B8F1740200007800055B42@mail.emea.novell.com> <54BFE768.3090309@terremark.com> <54C0C39F0200007800057F73@mail.emea.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <54C0C39F0200007800057F73@mail.emea.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jan Beulich , Don Slutz Cc: Jun Nakajima , Tim Deegan , Kevin Tian , Keir Fraser , Ian Campbell , Stefano Stabellini , George Dunlap , Andrew Cooper , Ian Jackson , xen-devel@lists.xen.org, Eddie Dong , Suravee Suthikulpanit , Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org T24gMDEvMjIvMTUgMDM6MzIsIEphbiBCZXVsaWNoIHdyb3RlOgo+Pj4+IE9uIDIxLjAxLjE1IGF0 IDE4OjUyLCA8ZHNsdXR6QHZlcml6b24uY29tPiB3cm90ZToKPj4gT24gMDEvMTYvMTUgMDU6MDks IEphbiBCZXVsaWNoIHdyb3RlOgo+Pj4+Pj4gT24gMDMuMTAuMTQgYXQgMDA6NDAsIDxkc2x1dHpA dmVyaXpvbi5jb20+IHdyb3RlOgo+Pj4+IFRoaXMgaXMgYSBuZXcgZG9tYWluX2NyZWF0ZSgpIGZs YWcsIERPTUNSRl92bXdhcmVfcG9ydC4gIEl0IGlzCj4+Pj4gcGFzc2VkIHRvIGRvbWN0bCBhcyBY RU5fRE9NQ1RMX0NERl92bXdhcmVfcG9ydC4KPj4+IENhbiB5b3UgZXhwbGFpbiB3aHkgYSBIVk0g cGFyYW0gaXNuJ3Qgc3VpdGFibGUgaGVyZT8KPj4+Cj4+IFRoZSBpc3N1ZSBpcyB0aGF0IHlvdSBu ZWVkIHRoaXMgZmxhZyBkdXJpbmcgY29uc3RydWN0X3ZtY2IoKSBhbmQKPj4gY29uc3RydWN0X3Zt Y3MoKS4gIFdoaWxlIEludGVsIGhhcyB2bXhfdXBkYXRlX2V4Y2VwdGlvbl9iaXRtYXAoKQo+PiBB TUQgZG9lcyBub3QuICBTbyB3aGVuIEhWTSBwYXJhbSdzIGFyZSBzZXR1cCBhbmQvb3IgY2hhbmdl ZCB0aGVyZQo+PiBjdXJyZW50bHkgaXMgbm8gd2F5IHRvIGFkanVzdCBBTUQncyBleGNlcHRpb24g Yml0bWFwLgo+Pgo+PiBTbyB0aGlzIGlzIHRoZSBzaW1wbGVyIHdheS4KPiBCdXQgdGhlIGxlc3Mg ZGVzaXJhYmxlIG9uZSBmcm9tIGEgZGVzaWduL2NvbnNpc3RlbmN5IHBlcnNwZWN0aXZlLgo+IFVu bGVzcyBvdGhlciBtYWludGFpbmVycyBkaXNhZ3JlZSwgSSdkIGxpa2UgdG8gc2VlIHRoaXMgY2hh bmdlZC4KCk9rLCBidXQgd2lsbCB3YWl0IHNvbWUgdGltZSB0byBzZWUgaWYgIlVubGVzcyBvdGhl ciBtYWludGFpbmVycyBkaXNhZ3JlZSIKCj4+Pj4gVGhpcyBpcyBib3RoIGEgbW9yZSBjb21wbGV0 ZSBzdXBwb3J0IHRoZW4gaW4gY3VycmVudGx5IHByb3ZpZGVkIGJ5Cj4+Pj4gUUVNVSBhbmQvb3Ig S1ZNIGFuZCBsZXNzLiAgVGhlIG1pc3NpbmcgcGFydCByZXF1aXJlcyBRRU1VIGNoYW5nZXMKPj4+ PiBhbmQgaGFzIGJlZW4gbGVmdCBvdXQgdW50aWwgdGhlIFFFTVUgcGF0Y2hlcyBhcmUgYWNjZXB0 ZWQgdXBzdHJlYW0uCj4+PiBJIHZhZ3VlbHkgcmVjYWxsIHRoZSBxdWVzdGlvbiBoYXZpbmcgYmVl biBhc2tlZCBiZWZvcmUsIGJ1dCBJIGNhbid0Cj4+PiBmaW5kIGl0IHRvIHRoZSBhbnN3ZXIgdG8g aXQ6IElmIHFlbXUgaGFzIHN1cHBvcnQgZm9yIHRoaXMsIHdoeSBjYW4ndAo+Pj4geW91IGJ1aWxk IG9uIHRoYXQgcmF0aGVyIHRoYW4gYWRkaW5nIGV2ZXJ5dGhpbmcgaW4gdGhlIGh5cGVydmlzb3I/ Cj4+Pgo+PiBUaGUgdjEwIHZlcnNpb24gb2YgdGhpcyBwYXRjaCBzZXQgKHdoaWNoIGlzIHdhaXRp bmcgZm9yIGFuIGFkanVzdGVkCj4+IFFFTVUgKHRoZSByZWxlYXNlZCAyLjIuMCBpcyBvbmUpIGRv ZXMgdXNlIFFFTVUgZm9yIG1vcmUgVk13YXJlIHBvcnQKPj4gc3VwcG9ydC4gIFRoZSBpc3N1ZXMg YXJlOgo+IFdhcyB0aGVyZSBhIG5ld2VyIHZlcnNpb24gb2YgdGhlc2UgcG9zdGVkIHRoYW4gdGhl IHY4IEkgbG9va2VkIGF0Pwo+IElmIHNvLCBJIG11c3QgaGF2ZSBvdmVybG9va2VkIHRoZSBwb3N0 aW5nIChhcyBvdGhlcndpc2UgSSB3b3VsZCBvZgo+IGNvdXJzZSBoYXZlIGNvbW1lbnRlZCBvbiB0 aGUgbmV3ZXIgdmVyc2lvbikuCj4KClRoZSBuZXdlciB2ZXJzaW9uIHdhcyBiZWluZyB3b3JrZWQg b24sIGJ1dCBoYWQgbm90IGJlZW4gcG9zdGVkIChhbmQgaGFkIG5vCmNoYW5nZXMgdG8gdGhpcyBw YXRjaCkuICBTaW5jZSBpdCB3YXMgbmV2ZXIgcG9zdGVkLCBJIHdpbGwganVzdCBjb250aW51ZQpn ZXR0aW5nIHY5CihpbnN0ZWFkIG9mIHYxMCkgaW50byBzaGFwZSB0byBwb3N0LgoKCj4+IDEpIFFF TVUgbmVlZHMgYWNjZXNzIHRvIHBhcnRzIG9mIENQVSByZWdpc3RlcnMgdG8gaGFuZGxlIFZNd2Fy ZSBwb3J0Lgo+PiAyKSBZb3UgbmVlZCB0byBhbGxvdyByaW5nIDMgYWNjZXNzIHRvIHRoaXMgMSBJ L08gcG9ydC4KPj4gMykgVGhlcmUgaXMgbW9yZSBzdGF0ZSBpbiB4ZW4gdGhhdCB3b3VsZCBuZWVk IHRvIGFsc28gYmUgc2VudCB0bwo+PiAgICBRRU1VIGlmIGFsbCBzdXBwb3J0IGlzIG1vdmVkIHRv IFFFTVUuCj4gVW5kZXJzdG9vZC4KPgo+Pj4+IEBAIC0yMTExLDYgKzIxMTIsMzEgQEAgc3ZtX3Zt ZXhpdF9kb192bXNhdmUoc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiLAo+Pj4+ICAgICAgIHJldHVy bjsKPj4+PiAgIH0KPj4+Pgo+Pj4+ICtzdGF0aWMgdm9pZCBzdm1fdm1leGl0X2dwX2ludGVyY2Vw dChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywKPj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHZjcHUgKnYpCj4+Pj4gK3sKPj4+PiArICAgIHN0cnVjdCB2 bWNiX3N0cnVjdCAqdm1jYiA9IHYtPmFyY2guaHZtX3N2bS52bWNiOwo+Pj4+ICsgICAgLyoKPj4+ PiArICAgICAqIEp1c3QgdXNlIDE1IGZvciB0aGUgaW5zdHJ1Y3Rpb24gbGVuZ3RoOyB2bXBvcnRf Z3BfY2hlY2sgd2lsbAo+Pj4+ICsgICAgICogYWRqdXN0IGl0LiAgVGhpcyBpcyBiZWNhdXNlCj4+ Pj4gKyAgICAgKiBfX2dldF9pbnN0cnVjdGlvbl9sZW5ndGhfZnJvbV9saXN0KCkgaGFzIGlzc3Vl cywgYW5kIG1heQo+Pj4+ICsgICAgICogcmVxdWlyZSBhIGRvdWJsZSByZWFkIG9mIHRoZSBpbnN0 cnVjdGlvbiBieXRlcy4gIEF0IHNvbWUKPj4+PiArICAgICAqIHBvaW50IGEgbmV3IHJvdXRpbmUg Y291bGQgYmUgYWRkZWQgdGhhdCBpcyBiYXNlZCBvbiB0aGUgY29kZQo+Pj4+ICsgICAgICogaW4g dm1wb3J0X2dwX2NoZWNrIHdpdGggZXh0ZW5zaW9ucyB0byBtYWtlIGl0IG1vcmUgZ2VuZXJhbC4K Pj4+PiArICAgICAqIFNpbmNlIHRoYXQgcm91dGluZSBpcyB0aGUgb25seSB1c2VyIG9mIHRoaXMg Y29kZSB0aGlzIGNhbiBiZQo+Pj4+ICsgICAgICogZG9uZSBsYXRlci4KPj4+PiArICAgICAqLwo+ Pj4+ICsgICAgdW5zaWduZWQgbG9uZyBpbnN0X2xlbiA9IDE1Owo+Pj4gU3VyZWx5IHRoaXMgY2Fu IGJlIHVuc2lnbmVkIGludD8KPj4gVGhlIGNvZGUgaXMgc21hbGxlciB0aGlzIHdheS4gIEluIHZt eF92bWV4aXRfZ3BfaW50ZXJjZXB0KCk6Cj4+Cj4+ICAgICB1bnNpZ25lZCBsb25nIGluc3RfbGVu Owo+PiAuLi4KPj4gICAgIF9fdm1yZWFkKFZNX0VYSVRfSU5TVFJVQ1RJT05fTEVOLCAmaW5zdF9s ZW4pOwo+PiAuLi4KPj4gICAgIHJjID0gdm1wb3J0X2dwX2NoZWNrKHJlZ3MsIHYsICZpbnN0X2xl biwgaW5zdF9hZGRyLAo+PiAuLi4KPj4KPj4gU28gY2hhbmdpbmcgdGhlIGFyZ3VtZW50IHRvIHZt cG9ydF9ncF9jaGVjaygpIHRvICJ1bnNpZ25lZCBpbnQiIHdvdWxkCj4+IGFkZCBjb2RlIHRoZXJl Lgo+IFNvIGJlIGl0IHRoZW4uIEdlbmVyaWMgY29kZSBzaG91bGRuJ3QgdXNlIG9kZCB0eXBlcyBq dXN0IGJlY2F1c2Ugb2YKPiB2ZW5kb3Igc3BlY2lmaWMgY29kZSBuZWVkcyBpdCwgdW5sZXNzIHRo aXMgbWFrZXMgdGhpbmdzIF9hIGxvdF8gbW9yZQo+IGNvbXBsaWNhdGVkLgo+CgpPay4gIFNpbmNl IEl0IGxvb2tzIGxpa2UgSSB3aWxsIG5vdCBiZSB1c2luZyBnZXRfaW5zdHJ1Y3Rpb25fbGVuZ3Ro KCkgSSB3aWxsCmNoYW5nZSB0aGlzIHRvICJ1bnNpZ25lZCBpbnQiIChvciBzaG91bGQgSSB1c2Ug InVuc2lnbmVkIHNob3J0IiBvcgoidW5zaWduZWQgYnl0ZSI/KS4KCj4+Pj4gKyAgICBpbnQgcmMg PSBYODZFTVVMX09LQVk7Cj4+Pj4gKwo+Pj4+ICsgICAgaWYgKCByZWdzLT5fZWF4ID09IEJET09S X01BR0lDICkKPj4+IFdpdGggdGhpcywgaXMgaGFuZGxpbmcgb3RoZXIgdGhhbiAzMi1iaXQgaW4v b3V0IHJlYWxseSBtZWFuaW5nZnVsLwo+Pj4gY29ycmVjdD8KPj4+Cj4+IFllcy4gSGFyZGVyIHRv IHVzZSwgYnV0IHNpbmNlIFZNd2FyZSBhbGxvd3MgaXQsIEkgYWxsb3cgaXQgYWxzby4KPiBCdXQg dGhlbiBhIGNvbW1lbnQgZXhwbGFpbmluZyB0aGUgbm9uLWFyY2hpdGVjdHVyYWwgKGZyb20gYW4K PiBpbnN0cnVjdGlvbiBzZXQgcGVyc3BlY3RpdmUpIGJlaGF2aW9yIGlzIHRoZSBtaW5pbXVtIHRo YXQncwo+IG5lZWRlZCBmb3IgZnV0dXJlIHJlYWRlcnMgKGFuZCByZXZpZXdlcnMpIHRvIHVuZGVy c3RhbmQgdGhpcy4KCk9rIHdpbGwgYWRkLgoKCj4+Pj4gKyAgICAgICAgY2FzZSBCRE9PUl9DTURf R0VUSFdWRVJTSU9OOgo+Pj4+ICsgICAgICAgICAgICAvKiB2bXdhcmVfaHcgKi8KPj4+PiArICAg ICAgICAgICAgcmVncy0+X2VheCA9IDA7Z2V0X2luc3RydWN0aW9uX2xlbmd0aAo+Pj4+ICsgICAg ICAgICAgICBpZiAoIGlzX2h2bV92Y3B1KGN1cnIpICkKPj4+IFNpbmNlIHlvdSBjYW4ndCBnZXQg aGVyZSBmb3IgUFYsIEkgY2FuJ3Qgc2VlIHdoYXQgeW91IG5lZWQgdGhpcwo+Pj4gY29uZGl0aW9u YWwgZm9yLgo+Pj4KPj4gU2luY2UgSSB3YXMgbm90IDEwMCUgc3VyZSwgSSB3YXMgYmVpbmcgc2Fm ZS4gIFdvdWxkIGNvbnZlcnRpbmcKPj4gdGhpcyB0byBiZSBhICJkZWJ1Zz15IiBjaGVjayBiZSBv az8KPiBBU1NFUlQoKSB3b3VsZCBpbmRlZWQgYmUgdGhlIHJpZ2h0IHZlaGljbGUuCj4KCldpbGwg ZG8uCgo+Pj4+ICsgICAgICAgICAgICB7Cj4+Pj4gKyAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZt X2RvbWFpbiAqaGQgPSAmZC0+YXJjaC5odm1fZG9tYWluOwo+Pj4+ICsKPj4+PiArICAgICAgICAg ICAgICAgIHJlZ3MtPl9lYXggPSBoZC0+cGFyYW1zW0hWTV9QQVJBTV9WTVdBUkVfSFddOwo+Pj4+ ICsgICAgICAgICAgICB9Cj4+Pj4gKyAgICAgICAgICAgIGlmICggIXJlZ3MtPl9lYXggKQo+Pj4+ ICsgICAgICAgICAgICAgICAgcmVncy0+X2VheCA9IDQ7ICAvKiBBY3QgbGlrZSB2ZXJzaW9uIDQg Ki8KPj4+IFdoeSB2ZXJzaW9uIDQ/Cj4+IFRoYXQgaXMgdGhlIDFzdCB2ZXJzaW9uIHRoYXQgVk13 YXJlIHdhcyBtb3JlIGNvbnNpc3RlbnQgaW4gdGhlIGhhbmRsaW5nCj4+IG9mIHRoZSAiVk13YXJl IGhhcmR3YXJlIHZlcnNpb24iLiAgQW55IHZhbHVlIGJldHdlZW4gMSBhbmQgNiB3b3VsZCBiZQo+ PiBvay4gIFRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIGluIHN0cmFuZ2UgY29uZmlncy4KPiBQbGVh c2UgbWFrZSB0aGUgY29tbWVudCBzYXkgc28gdGhlbi4KPgoKV2lsbCBkby4KCj4+Pj4gKyAgICAg ICAgICAgIC8qIGhvc3RVc2VjcyAqLwo+Pj4+ICsgICAgICAgICAgICByZWdzLT5fZWJ4ID12YWx1 ZSAvIDEwMDAwMDBVTEw7Cj4+Pj4gKyAgICAgICAgICAgIC8qIG1heFRpbWVMYWcgKi8KPj4+PiAr ICAgICAgICAgICAgcmVncy0+X2VjeCA9IDEwMDAwMDA7Cj4+Pj4gKyAgICAgICAgICAgIGJyZWFr Owo+Pj4gUGVyaGFwcyB0aGlzIHNob3VsZCBzaGFyZSBjb2RlIHdpdGggQkRPT1JfQ01EX0dFVFRJ TUU7IEkgaGF2ZQo+Pj4gdG8gYWRtaXQgdGhvdWdoIHRoYXQgSSBjYW4ndCBtYWtlIGFueSBzZW5z ZSBvZiB3aHkgdGhlIGxhdHRlciBvbmUKPj4+IGhhcyBhIEZVTEwgc3VmZml4IHdoZW4gaXQgcmV0 dXJucyBfbGVzc18gaW5mb3JtYXRpb24uCj4+Pgo+PiBTaGFyaW5nIG9mIGNvZGUgaXMgbm90IHNp bXBsZS4KPj4gU2luY2UgSSBkaWQgbm90IHBpY2sgdGhlIG5hbWVzLCBWTXdhcmUgZGlkLgo+Pgo+ PiBCdWcgZm91bmQuICBUaGUgZnVsbCByZXR1cm5zIGRhdGEgaW4gc2kgJiBkeC4KPj4gd2lsbCBm aXguIEFuZCBhbHNvIG1ha2VzIHNoYXJpbmcgbW9yZSBjb21wbGV4IHRoZW4gbm90Lgo+IE9mIGNv dXJzZSBpZiB0aGUgY3VycmVudCBjb2RlIGlzIGluY29tcGxldGUsIHNoYXJpbmcgbWFrZXMgbGVz cyBzZW5zZQo+IG9uY2UgY29tcGxldGVkLgo+Cj4+Pj4gKyAgICAgICAgdW5zaWduZWQgY2hhciBi eXRlc1tNQVhfSU5TVF9MRU5dOwo+Pj4+ICsgICAgICAgIHVuc2lnbmVkIGludCBmZXRjaF9sZW47 Cj4+Pj4gKyAgICAgICAgaW50IGZyYzsKPj4+PiArCj4+Pj4gKyAgICAgICAgLyogaW4gb3Igb3V0 IGFyZSBsaW1pdGVkIHRvIDMyYml0cyAqLwo+Pj4+ICsgICAgICAgIGlmICggYnl0ZV9jbnQgPiA0 ICkKPj4+PiArICAgICAgICAgICAgYnl0ZV9jbnQgPSA0Owo+Pj4+ICsKPj4+PiArICAgICAgICAv Kgo+Pj4+ICsgICAgICAgICAqIEZldGNoIHVwIHRvIHRoZSBuZXh0IHBhZ2UgYnJlYWs7IHdlJ2xs IGZldGNoIGZyb20gdGhlCj4+Pj4gKyAgICAgICAgICogbmV4dCBwYWdlIGxhdGVyIGlmIHdlIGhh dmUgdG8uCj4+Pj4gKyAgICAgICAgICovCj4+Pj4gKyAgICAgICAgZmV0Y2hfbGVuID0gbWluX3Qo dW5zaWduZWQgaW50LCAqaW5zdF9sZW4sCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg UEFHRV9TSVpFIC0gKGluc3RfYWRkciAgJiB+UEFHRV9NQVNLKSk7Cj4+Pj4gKyAgICAgICAgZnJj ID0gaHZtX2ZldGNoX2Zyb21fZ3Vlc3RfdmlydF9ub2ZhdWx0KGJ5dGVzLCBpbnN0X2FkZHIsIGZl dGNoX2xlbiwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUEZFQ19wYWdlX3ByZXNlbnQpOwo+Pj4+ICsgICAgICAgIGlmICggZnJjICE9IEhWTUNP UFlfb2theSApCj4+Pj4gKyAgICAgICAgewo+Pj4+ICsgICAgICAgICAgICBnZHByaW50ayhYRU5M T0dfV0FSTklORywKPj4+PiArICAgICAgICAgICAgICAgICAgICAgIkJhZCBpbnN0cnVjdGlvbiBm ZXRjaCBhdCAlI2x4IChmcmM9JWQgaWw9JWx1IGZsPSV1KVxuIiwKPj4+PiArICAgICAgICAgICAg ICAgICAgICAgKHVuc2lnbmVkIGxvbmcpIGluc3RfYWRkciwgZnJjLCAqaW5zdF9sZW4sIGZldGNo X2xlbik7Cj4+PiBQb2ludGxlc3MgY2FzdC4gQnV0IHRoZSB2YWx1ZSBvZiBsb2cgbWVzc2FnZXMg bGlrZSB0aGlzIG9uZSBpcwo+Pj4gcXVlc3Rpb25hYmxlIGFueXdheS4KPj4+Cj4+IFdpbGwgZHJv cCBjYXN0LiAgSSBhbSBub3Qgc3VyZSBpdCBpcyBwb3NzaWJsZSB0byBnZXQgaGVyZS4gVGhlIGJl c3QgSQo+PiBoYXZlIGNvbWUgdXAgd2l0aCBpcyB0byBjaGFuZ2UgdGhlIEdEVCBlbnRyeSBmb3Ig Q1MgdG8gZmF1bHQsIHRoZW4gZG8KPj4gdGhpcyBpbnN0cnVjdGlvbi4gIE5vdCBzdXJlIGl0IHdv dWxkIGZhdWx0LCBhbmQgY2xlYXJseSBpcyBhbiBhdHRlbXB0Cj4+IHRvIGJyZWFrIGluLgo+Pgo+ PiBJIGRvIGtub3cgdGhhdCBpZiBYZW4gaXMgcnVubmluZyB1bmRlciBWTXdhcmUgKFdoeSBhbnlv bmUgd291bGQgZG8KPj4gdGhpcz8pIHRoaXMgaXMgcG9zc2libGUuCj4+Cj4+IFdpdGggYWxsIHRo aXMsIHNob3VsZCBJIGp1c3QgZHJvcCB0aGlzIG1lc3NhZ2UgKG9yIG1ha2UgaXQgZGVidWc9eQo+ PiBvbmx5KT8KPiBZZXMgLSBkcm9wcGluZyB3b3VsZCBiZSBwcmVmZXJyZWQgYnkgbWUsIGJ1dCBJ J2QgYWNjZXB0IGEgZGVidWc9eQo+IG9ubHkgb25lIHRvby4KCk9rLCB3aWxsIGRyb3AuCgo+Pj4+ ICsKPj4+PiArICAgICAgICAvKiBPbmx5IGFkanVzdCBieXRlX2NudCAxIHRpbWUgKi8KPj4+PiAr ICAgICAgICBpZiAoIGJ5dGVzWzBdID09IDB4NjYgKSAgICAgLyogb3BlcmFuZCBzaXplIHByZWZp eCAqLwo+Pj4+ICsgICAgICAgIHsKPj4+PiArICAgICAgICAgICAgaWYgKCBieXRlX2NudCA9PSA0 ICkKPj4+PiArICAgICAgICAgICAgICAgIGJ5dGVfY250ID0gMjsKPj4+PiArICAgICAgICAgICAg ZWxzZQo+Pj4+ICsgICAgICAgICAgICAgICAgYnl0ZV9jbnQgPSA0Owo+Pj4+ICsgICAgICAgIH0K Pj4+IElpcmMgUkVYLlcgc2V0IGZvbGxvd2luZyAweDY2IGNhbmNlbHMgdGhlIGVmZmVjdCBvZiB0 aGUgbGF0dGVyLiBBbm90aGVyCj4+PiB0aGluZyB4ODZlbXVsIHdvdWxkIGJlIHRha2luZyBjYXJl IG9mIGZvciB5b3UgaWYgeW91IHVzZWQgaXQuCj4+IEkgZGlkIG5vdCBrbm93IHRoaXMuICBNb3N0 IG9mIG15IHRlc3Rpbmcgd2FzIGRvbmUgd2l0aG91dCBhbnkgY2hlY2sKPj4gZm9yIHByZWZpeChz KS4gIEkuRS4gKE9wZW4pIFZNd2FyZSBUb29scyBvbmx5IHVzZXMgdGhlIGlubC4gIEkgZG8KPj4g bm90IGtub3cgb2YgYW55Ym9keSB1c2luZyAxNmJpdCBzZWdtZW50cyBhbmQgVk13YXJlIHRvb2xz Lgo+IEJ1dCB0aGlzIGlzbid0IHRoZSBwZXJzcGVjdGl2ZSB0byB0YWtlIHdoZW4gYWRkaW5nIGNv ZGUgdG8gdGhlCj4gaHlwZXJ2aXNvciAtIHlvdSBzaG91bGQgYWx3YXlzIGNvbnNpZGVyIHdoYXQg YSAocGVyaGFwcwo+IG1hbGljaW91cykgZ3Vlc3QgY291bGQgZG8uCgpPaywgYnV0IG15IHJlYWQg b2YgdGhpcyBzdGF0ZW1lbnQgZG9lcyBub3QgaGVscCBkZWNpZGUgd2hpY2ggd2F5CnRvIGdvLiAg SSBzZWUgc2V2ZXJhbCBvcHRpb25zOgoKMSkgT25seSBhbGxvdyAjR1AgdG8gd29yayBmb3IgMHhl ZCAoaW5sICglZHgpLCVlYXgpLgogICAgUHJvczogTm8gYXR0YWNrIHN1cmZhY2UgZm9yIG1hbGlj aW91cyBndWVzdC4KICAgICAgICAgICAgIE5vIG5lZWQgZm9yIGdldF9pbnN0cnVjdGlvbl9sZW5n dGgoKS4KICAgICAgICAgICAgIE5vIG5lZWQgZm9yIEludGVsIHRvIGNvbmZpcm0gdGhlIG5lY2Vz c2FyeSBoYXJkd2FyZQogICAgICAgICAgICAgICAgYmVoYXZpb3VyIGFzIGJlaW5nIGFyY2hpdGVj dHVyYWwuCiAgICBDb25zOiBUaGVyZSBtYXkgZXhpc3QgdXNlciBhcHBzLiB0aGF0IHdvcmsgb24g Vk13YXJlIGFuZAogICAgICAgICAgICAgICBub3Qgb24geGVuICgxNmJpdCBzZWdtZW50cywgcmVh bG1vZGUsIHZtODYsIGV0YykuCgoyKSBPbmx5IGFsbG93ICNHUCB0byB3b3JrIGZvciBhbGwgNCBJ L08gaW5zdHJ1Y3Rpb25zIHdpdGhvdXQgcHJlZml4LgogICAgUHJvczogTm8gYXR0YWNrIHN1cmZh Y2UgZm9yIG1hbGljaW91cyBndWVzdC4KICAgICAgICAgICAgIE5vIG5lZWQgZm9yIGdldF9pbnN0 cnVjdGlvbl9sZW5ndGgoKS4KICAgICAgICAgICAgIE5vIG5lZWQgZm9yIEludGVsIHRvIGNvbmZp cm0gdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZQogICAgICAgICAgICAgICAgYmVoYXZpb3VyIGFzIGJl aW5nIGFyY2hpdGVjdHVyYWwuCiAgICBDb25zOiBUaGVyZSBtYXkgZXhpc3QgdXNlciBhcHBzLiB0 aGF0IHdvcmsgb24gVk13YXJlIGFuZAogICAgICAgICAgICAgICAgIG5vdCBvbiB4ZW4gKDE2Yml0 IHNlZ21lbnRzLCByZWFsbW9kZSwgdm04NiwgZXRjKS4KCjMpIE9ubHkgYWxsb3cgemVybyBvciBv bmUgMHg2NiBwcmVmaXggYW5kIDB4ZWQgKGlubCAoJWR4KSwlZWF4KS4KICAgIFByb3M6IE5vIGF0 dGFjayBzdXJmYWNlIGZvciBtYWxpY2lvdXMgZ3Vlc3QuCiAgICAgICAgICAgICBObyBuZWVkIGZv ciBnZXRfaW5zdHJ1Y3Rpb25fbGVuZ3RoKCkuCiAgICAgICAgICAgICBObyBuZWVkIGZvciBJbnRl bCB0byBjb25maXJtIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUKICAgICAgICAgICAgICAgIGJlaGF2 aW91ciBhcyBiZWluZyBhcmNoaXRlY3R1cmFsLgogICAgQ29uczogVGhlcmUgbWF5IGV4aXN0IHVz ZXIgYXBwcy4gdGhhdCB3b3JrIG9uIFZNd2FyZSBhbmQKICAgICAgICAgICAgICAgICBub3Qgb24g eGVuICh1c2luZyB0b28gbWFueSBwcmVmaXhlcywgdXNpbmcgb3RoZXIKICAgICAgICAgICAgICAg ICBvcGNvZGVzKS4KCjQpIE9ubHkgYWxsb3cgemVybyBvciBvbmUgMHg2NiBwcmVmaXggYW5kIGFs bCA0IEkvTyBpbnN0cnVjdGlvbnMuCiAgICBQcm9zOiBObyBhdHRhY2sgc3VyZmFjZSBmb3IgbWFs aWNpb3VzIGd1ZXN0LgogICAgICAgICAgICAgTm8gbmVlZCBmb3IgZ2V0X2luc3RydWN0aW9uX2xl bmd0aCgpLgogICAgICAgICAgICAgTm8gbmVlZCBmb3IgSW50ZWwgdG8gY29uZmlybSB0aGUgbmVj ZXNzYXJ5IGhhcmR3YXJlCiAgICAgICAgICAgICAgICBiZWhhdmlvdXIgYXMgYmVpbmcgYXJjaGl0 ZWN0dXJhbC4KICAgIENvbnM6IFRoZXJlIG1heSBleGlzdCB1c2VyIGFwcHMuIHRoYXQgd29yayBv biBWTXdhcmUgYW5kCiAgICAgICAgICAgICAgICAgbm90IG9uIHhlbiAodXNpbmcgdG9vIG1hbnkg cHJlZml4ZXMpLgoKNSkgT25seSBhbGxvdyB6ZXJvIHRvIDE0IDB4NjYgcHJlZml4IGFuZCAweGVk IChpbmwgKCVkeCksJWVheCkuCiAgICBQcm9zOiBObyBhdHRhY2sgc3VyZmFjZSBmb3IgbWFsaWNp b3VzIGd1ZXN0LgogICAgQ29uczogVGhlcmUgbWF5IGV4aXN0IHVzZXIgYXBwcy4gdGhhdCB3b3Jr IG9uIFZNd2FyZSBhbmQKICAgICAgICAgICAgICAgIG5vdCBvbiB4ZW4gKHVzaW5nIHVubmVlZGVk IHByZWZpeGVzLCB1c2luZyBvdGhlcgogICAgICAgICAgICAgICAgb3Bjb2RlcykuCiAgICA1YTog ICAgV291bGQgYmUgY2xlYW5lciB3aXRoIGdldF9pbnN0cnVjdGlvbl9sZW5ndGgoKSBvbiBJbnRl bCwKICAgICAgICAgICAgICAgIGJ1dCB3b3VsZCBuZWVkIGZvciBJbnRlbCB0byBjb25maXJtIHRo ZSBuZWNlc3NhcnkgaGFyZHdhcmUKICAgICAgICAgICAgICAgIGJlaGF2aW91ciBhcyBiZWluZyBh cmNoaXRlY3R1cmFsLgogICAgNWI6ICAgICBBbHdheXMgcGFzcyBpbiBNQVhfSU5TVF9MRU4uCiAg IAoKNikgT25seSBhbGxvdyB6ZXJvIHRvIDE0IDB4NjYgcHJlZml4IGFuZCBhbGwgNCBJL08gaW5z dHJ1Y3Rpb25zLgogICAgUHJvczogTm8gYXR0YWNrIHN1cmZhY2UgZm9yIG1hbGljaW91cyBndWVz dC4KICAgIENvbnM6IFRoZXJlIG1heSBleGlzdCB1c2VyIGFwcHMuIHRoYXQgd29yayBvbiBWTXdh cmUgYW5kCiAgICAgICAgICAgICAgIG5vdCBvbiB4ZW4gKHVzaW5nIHVubmVlZGVkICBwcmVmaXhl cykuCiAgICA2YTogICAgV291bGQgYmUgY2xlYW5lciB3aXRoIGdldF9pbnN0cnVjdGlvbl9sZW5n dGgoKSBvbiBJbnRlbCwKICAgICAgICAgICAgICAgIGJ1dCB3b3VsZCBuZWVkIGZvciBJbnRlbCB0 byBjb25maXJtIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUKICAgICAgICAgICAgICAgIGJlaGF2aW91 ciBhcyBiZWluZyBhcmNoaXRlY3R1cmFsLgogICAgNmI6ICAgICBBbHdheXMgcGFzcyBpbiBNQVhf SU5TVF9MRU4uCgo3KSBBZGQgY29tcGxldGUgcHJlZml4IGhhbmRsaW5nLCBhbmQgYWxsIDQgSS9P IGluc3RydWN0aW9ucwogICAgUHJvczogTGltaXRlZCBhdHRhY2sgc3VyZmFjZSBmb3IgbWFsaWNp b3VzIGd1ZXN0ICh0aGUgaGFuZGxpbmcKICAgICAgICAgICAgICBvZiBhbGwgcHJlZml4ZXMgZ3Jl YXRseSBpbmNyZWFzZXMgdGhlIGNvbXBsZXhpdHkgb2YgdGhlCiAgICAgICAgICAgICAgY29kZSku CiAgICBDb25zOiBMb3RzIG9mIGFkZGVkIGNvZGUuCiAgICA3YTogICAgV291bGQgYmUgY2xlYW5l ciB3aXRoIGdldF9pbnN0cnVjdGlvbl9sZW5ndGgoKSBvbiBJbnRlbCwKICAgICAgICAgICAgICAg IGJ1dCB3b3VsZCBuZWVkIGZvciBJbnRlbCB0byBjb25maXJtIHRoZSBuZWNlc3NhcnkgaGFyZHdh cmUKICAgICAgICAgICAgICAgIGJlaGF2aW91ciBhcyBiZWluZyBhcmNoaXRlY3R1cmFsLgogICAg N2I6ICAgICBBbHdheXMgcGFzcyBpbiBNQVhfSU5TVF9MRU4uCgo4KSBVc2UgaHZtX2VtdWxhdGVf b25lKCkuCiAgICBQcm9zOiBzaGFyZXMgY29kZSwgcmVkdWNlcyBuZXcgY29kZS4KICAgIENvbnM6 IEFkZHMgYSBsb3Qgb2YgYXR0YWNrIHN1cmZhY2UgZm9yIG1hbGljaW91cyBndWVzdC4KCgpJIGhh ZCBwaWNrZWQgIzYsIHlvdSBhc2tlZCBmb3IgIzgsIGJ1dCBJIHJlYWQgeW91ciBhbnN3ZXIgYXMg ZG8gbm90CmRvICM4LgoKSSB3b3VsZCBiZSBoYXBweSB0byBnbyB3aXRoIGFueSBvZiB0aGUgOCB3 YXlzIChvciBhIHdheSBJIGRpZCBub3QgbGlzdAphYm92ZSksCmp1c3QgbmVlZCB0byBrbm93IHdo aWNoIG9uZSB0byBmb2N1cyBvbi4KCgo+Pj4+ICtzdGF0aWMgdm9pZCB2bXhfdm1leGl0X2dwX2lu dGVyY2VwdChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywKPj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZjcHUgKnYpCj4+Pj4gK3sKPj4+PiArICAgIHVu c2lnbmVkIGxvbmcgZXhpdF9xdWFsaWZpY2F0aW9uOwo+Pj4+ICsgICAgdW5zaWduZWQgbG9uZyBp bnN0X2xlbjsKPj4+PiArICAgIHVuc2lnbmVkIGxvbmcgaW5zdF9hZGRyID0gdm14X3JpcDJwb2lu dGVyKHJlZ3MsIHYpOwo+Pj4+ICsgICAgdW5zaWduZWQgbG9uZyBlY29kZTsKPj4+PiArICAgIGlu dCByYzsKPj4+PiArI2lmbmRlZiBOREVCVUcKPj4+PiArICAgIHVuc2lnbmVkIGxvbmcgb3JpZ19p bnN0X2xlbjsKPj4+PiArICAgIHVuc2lnbmVkIGxvbmcgdmVjdG9yOwo+Pj4+ICsKPj4+PiArICAg IF9fdm1yZWFkKFZNX0VYSVRfSU5UUl9JTkZPLCAmdmVjdG9yKTsKPj4+PiArICAgIEJVR19PTigh KHZlY3RvciAmIElOVFJfSU5GT19WQUxJRF9NQVNLKSk7Cj4+Pj4gKyAgICBCVUdfT04oISh2ZWN0 b3IgJiBJTlRSX0lORk9fREVMSVZFUl9DT0RFX01BU0spKTsKPj4+PiArI2VuZGlmCj4+PiBJZiB5 b3UgdXNlIEFTU0VSVCgpIGluc3RlYWQgb2YgQlVHX09OKCksIEkgdGhpbmsgeW91IGNhbiBhdm9p ZCBtb3N0Cj4+PiBvZiB0aGlzIHByZXByb2Nlc3NvciBjb25kaXRpb25hbC4KPj4+Cj4+IEkgZG8g bm90IHNlZSBob3cuICB2ZWN0b3Igb25seSBleGlzdHMgaW4gImRlYnVnPXkiLiAgU28geWVzIGlm IHVzaW5nCj4+IEFTU0VSVCgpIEkgY291bGQgbW92ZSB0aGUgI2VuZGlmIHVwIDIgbGluZXMsIGJ1 dCB0aGF0IGRvZXMgbm90Cj4+IGxvb2sgYmV0dGVyIHRvIG1lLgo+IEkgZG9uJ3QgZm9sbG93IC0g QVNTRVJUKCkgaXMgaW50ZW50aW9uYWxseSBjb2RlZCBpbiBhIHdheSBzdWNoIHRoYXQKPiB2YXJp YWJsZXMgdXNlZCBvbmx5IGJ5IGl0IGRvbid0IGNhdXNlIGNvbXBpbGVyIHdhcm5pbmdzLiBBbmQg dGhlCj4gb3B0aW1pemVyIG91Z2h0IHRvIGJlIGFibGUgdG8gZWxpbWluYXRlIHRoZSB0aGVuIHVu bmVjZXNzYXJ5Cj4gX192bXJlYWQoKS4KPgoKSSBhbSBtb3JlIHVzZSB0byBleHBsaWNpdCBjb25k aXRpb25hbCBjb2RlIGFuZCB0byBub3QgZGVwZW5kIG9uIHRoZQpjb21waWxlcnMKdG8gY29ycmVj dGx5IG9wdGltaXplIHRoZSBjb2RlLiAgV2lsbCBjaGFuZ2UuCgpTaW5jZSB0aGUgbW9zdCBsaWtl bHkgY2FzZSBpcyB0aGF0IEkgd2lsbCBzdG9wIHVzaW5nCmdldF9pbnN0cnVjdGlvbl9sZW5ndGgo KQooX192bXJlYWQoVk1fRVhJVF9JTlNUUlVDVElPTl9MRU4sLi4uKSkuICBUaGlzIGRyb3BzIHRo ZSBuZWVkIGZvcgpvcmlnX2luc3RfbGVuCmFsc28uCgo+Pj4+ICsgICAgX192bXJlYWQoRVhJVF9R VUFMSUZJQ0FUSU9OLCAmZXhpdF9xdWFsaWZpY2F0aW9uKTsKPj4+PiArICAgIF9fdm1yZWFkKFZN X0VYSVRfSU5TVFJVQ1RJT05fTEVOLCAmaW5zdF9sZW4pOwo+Pj4gZ2V0X2luc3RydWN0aW9uX2xl bmd0aCgpLiBCdXQgaXMgaXQgYXJjaGl0ZWN0dXJhbGx5IGRlZmluZWQgdGhhdAo+Pj4gI0dQIGlu dGVyY2VwdCB2bWV4aXRzIGFjdHVhbGx5IHNldCB0aGlzIGZpZWxkPwo+Pj4KPj4gSSBjb3VsZCBu b3QgZmluZCBhIGNsZWFyIHN0YXRlbWVudC4KPiBUaGF0J3MgdGhlIHBvaW50IG9mIG15IGNvbW1l bnQuCj4KPj4gIE15IHJlYWRpbmcgb2YgKGRpcmVjdGx5IG91dCBvZgo+PiAiSW50ZWzCriA2NCBh bmQgSUEtMzIgQXJjaGl0ZWN0dXJlcwo+PiBTb2Z0d2FyZSBEZXZlbG9wZXLigJlzIE1hbnVhbAo+ PiBWb2x1bWUgMyAoM0EsIDNCICYgM0MpOgo+PiBbLi4uXQo+PiB0byBtZSBzYXlzIHRoYXQgeWVz LCB0aGlzIGZpZWxkIGlzIHNldCBvbiBhICNHUCBleGl0IG9uIGFuIElOLiAgQnV0IHRoZQo+PiAj R1AgY2FzZSBpcyBub3QgY2FsbGVkIG91dCBieSBuYW1lLgo+IEFuZCBpdCBpcyBub3QgYW55IG9m IHRoZSBjYXNlcyBtZW50aW9uZWQuCj4KPj4gTXkgcmVhZCBpcyB0aGF0IGEgI0dQIGZhdWx0IGlz IGEgIlZNIEV4aXRzIFVuY29uZGl0aW9uYWxseSIgYmFzZWQgb24gdGhlCj4+IHNldHRpbmcgb2Yg dGhlIGV4Y2VwdGlvbiBiaXQgbWFzay4KPiBSaWdodCwgYnV0IGl0J3Mgbm90IGV4YWN0bHkgYW4g aW5zdHJ1Y3Rpb24gYmFzZWQgZXhpdC4gVW5sZXNzIEludGVsCj4gY29uZmlybXMgdGhhdCB5b3Vy IGV4dGVuZGluZyBvZiB0aGUgbWFudWFsIHNheXMgaXMgY29ycmVjdCwgSSdkCj4gcmF0aGVyIHJl Y29tbWVuZCBhZ2FpbnN0IHJlbHlpbmcgb24gdW5zcGVjaWZpZWQgYmVoYXZpb3IuIElmCj4gYW55 IENQVSBtb2RlbCBlbmRzIHVwIGJlaGF2aW5nIGRpZmZlcmVudGx5LCB0aGlzIG1pZ2h0IGJlCj4g cmF0aGVyIGhhcmQgdG8gZGlhZ25vc2UgSSdtIGFmcmFpZC4KPgo+PiBTbyBub3QgdXNpbmcgZ2V0 X2luc3RydWN0aW9uX2xlbmd0aCgpIGRvZXMgYXZvaWQgYSBwb3NzaWJsZSBCVUdfT04oKQo+PiBp ZiBJIGFtIHdyb25nLgo+Pgo+PiBTbyB0aGVyZSBhcmUgMyBvcHRpb25zIGhlcmU6Cj4+IDEpIEFk ZCBhbiBBU1NFUlQoKSBsaWtlIHRoZSBCVUdfT04oKSBpbiBnZXRfaW5zdHJ1Y3Rpb25fbGVuZ3Ro KCkKPj4gMikgU3dpdGNoIHRvIHVzaW5nIGdldF9pbnN0cnVjdGlvbl9sZW5ndGgoKQo+PiAzKSBT d2l0Y2ggdG8gdXNpbmcgTUFYX0lOU1RfTEVOLgo+Pgo+PiBMZXQgbWUga25vdyB3aGljaCB3YXkg dG8gZ28uCj4gQXMgc2FpZCBhYm92ZSAtIHVzZSBnZXRfaW5zdHJ1Y3Rpb25fbGVuZ3RoKCkgaWYg SW50ZWwgY29uZmlybXMgdGhlCj4gbmVjZXNzYXJ5IGhhcmR3YXJlIGJlaGF2aW9yIGFzIGJlaW5n IGFyY2hpdGVjdHVyYWwuIElmIHRoZXkKPiBkb24ndCwgMykgbG9va3MgbGlrZSB0aGUgb25seSB2 aWFibGUgb3B0aW9uLgoKClNvIHdoYXQgaXMgdGhlIHByb2NlZHVyZSB0byBnZXR0aW5nICJJbnRl bCBjb25maXJtcyB0aGUgbmVjZXNzYXJ5IGhhcmR3YXJlCmJlaGF2aW91ciBhcyBiZWluZyBhcmNo aXRlY3R1cmFsIj8KCgoKPj4+PiBAQCAtMjE4Miw2ICsyMTgzLDggQEAgaW50IG52bXhfbjJfdm1l eGl0X2hhbmRsZXIoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsCj4+Pj4gICAgICAgICAgICAg ICBpZiAoIHYtPmZwdV9kaXJ0aWVkICkKPj4+PiAgICAgICAgICAgICAgICAgICBudmNwdS0+bnZf dm1leGl0X3BlbmRpbmcgPSAxOwo+Pj4+ICAgICAgICAgICB9Cj4+Pj4gKyAgICAgICAgZWxzZSBp ZiAoIHZlY3RvciA9PSBUUkFQX2dwX2ZhdWx0ICkKPj4+PiArICAgICAgICAgICAgbnZjcHUtPm52 X3ZtZXhpdF9wZW5kaW5nID0gMTsKPj4+IERvZXNuJ3QgdGhhdCBtZWFuIGFuIHVuY29uZGl0aW9u YWwgdm1leGl0IGV2ZW4gaWYgdGhlIEwxIGh5cGVydmlzb3IKPj4+IGRpZG4ndCBhc2sgZm9yIHN1 Y2g/Cj4+IEkgbWlnaHQuICBJIGhhdmUgbm90IGRvbmUgYW55IHRlc3RpbmcgaGVyZSBmb3IgdGhl IG5lc3RlZCBWTVggY2FzZS4KPj4gSSBjb3VsZCBqdXN0IGRyb3AgdGhpcyBmb3Igbm93IGFuZCBk ZXNpZGUgd2hhdCB0byBkbyBmb3IgdGhpcyBjb2RlIGxhdGVyLgo+IElmIGRyb3BwaW5nIHRoZSBj b2RlIGlzIHNhZmUgd2l0aG91dCBhbHNvIGZvcmJpZGRpbmcgdGhlIGNvbWJpbmF0aW9uCj4gb2Yg bmVzdGVkIGFuZCBWTXdhcmUgZW11bGF0aW9uLgoKV2lsbCBoYXZlIHRvIGRvIGEgbG90IG1vcmUg dGVzdGluZyB0byBrbm93LiAgQXQgdGhlIHRpbWUgSSBzdGFydGVkIHRoZQpjb2RpbmcKaXQgd2Fz IHN0aWxsIGNvbnNpZGVyZWQgZXhwZXJpbWVudGFsLiAgTG9va3MgbGlrZSBmb3IgNC42IEkgd2ls bCBuZWVkIGl0CnRvIGJlCmZ1bGx5IHVuaXQgdGVzdGVkLgoKICAgIC1Eb24gU2x1dHoKCgo+IEph bgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==