From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: Re: [PATCH 3/3] tools & docs: add L2 CAT support in tools and docs. Date: Sun, 9 Oct 2016 15:14:57 +0800 Message-ID: <20161009071457.GB30513@yi.y.sun> References: <1472102565-7237-1-git-send-email-yi.y.sun@linux.intel.com> <20160930212958.GE5382@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bt8Pl-0005TD-QO for xen-devel@lists.xenproject.org; Sun, 09 Oct 2016 07:20:54 +0000 Content-Disposition: inline In-Reply-To: <20160930212958.GE5382@char.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk Cc: wei.liu2@citrix.com, he.chen@linux.intel.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, jbeulich@suse.com, chao.p.peng@linux.intel.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gMTYtMDktMzAgMTc6Mjk6NTgsIEtvbnJhZCBSemVzenV0ZWsgV2lsayB3cm90ZToKPiBPbiBU aHUsIEF1ZyAyNSwgMjAxNiBhdCAwMToyMjo0NVBNICswODAwLCBZaSBTdW4gd3JvdGU6Cj4gPiBU aGlzIHBhdGNoIGlzIHRoZSB4bC94YyBjaGFuZ2VzIHRvIHN1cHBvcnQgSW50ZWwgTDIgQ0FUCj4g PiAoQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5KS4KPiA+IAo+ID4gVGhlIG5ldyBsZXZlbCBv cHRpb24gaXMgaW50cm9kdWNlZCB0byBvcmlnaW5hbCBDQVQgc2V0dGluZwo+ID4gY29tbWFuZCBp biBvcmRlciB0byBzZXQgQ0JNIGZvciBzcGVjaWZpZWQgbGV2ZWwgQ0FULgo+ID4gLSAneGwgcHNy LWh3aW5mbycgaXMgdXBkYXRlZCB0byBzaG93IGJvdGggTDMgQ0FUIGFuZCBMMiBDQVQKPiA+ICAg aW5mby4KPiA+IC0gJ3hsIHBzci1jYXQtY2JtLXNldCcgaXMgdXBkYXRlZCB0byBzZXQgY2FjaGUg Y2FwYWNpdHkKPiA+ICAgYml0bWFza3MoQ0JNKSBmb3IgYSBkb21haW4gYWNjb3JkaW5nIHRvIGlu cHV0IGNhY2hlIGxldmVsLgo+ID4gLSAneGwgcHNyLWNhdC1zaG93JyBpcyB1cGRhdGVkIHRvIHNo b3cgQ0JNIG9mIGEgZG9tYWluCj4gPiAgIGFjY29yZGluZyB0byBpbnB1dCBjYWNoZSBsZXZlbC4K PiA+IAo+ID4gRXhhbXBsZXM6Cj4gPiByb290QDp+JCB4bCBwc3ItaHdpbmZvIC0tY2F0Cj4gPiBD YWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgKENBVCk6IEwyCj4gPiBTb2NrZXQgSUQgICAgICAg OiAwCj4gPiBNYXhpbXVtIENPUyAgICAgOiAzCj4gPiBDQk0gbGVuZ3RoICAgICAgOiA4Cj4gPiBE ZWZhdWx0IENCTSAgICAgOiAweGZmCj4gPiAKPiA+IHJvb3RAOn4kIHhsIHBzci1jYXQtY2JtLXNl dCAtbDIgMSAweDdmCj4gPiAKPiA+IHJvb3RAOn4kIHhsIHBzci1jYXQtc2hvdyAtbDIgMQo+ID4g U29ja2V0IElEICAgICAgIDogMAo+ID4gRGVmYXVsdCBDQk0gICAgIDogMHhmZgo+ID4gICAgSUQg ICAgICAgICAgICAgICAgICAgICBOQU1FICAgICAgICAgICAgIENCTQo+ID4gICAgIDEgICAgICAg ICAgICAgICAgIHVidW50dTE0ICAgICAgICAgICAgMHg3Zgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5 OiBIZSBDaGVuIDxoZS5jaGVuQGxpbnV4LmludGVsLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IFlp IFN1biA8eWkueS5zdW5AbGludXguaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZG9jcy9tYW4veGwu cG9kLjEuaW4gICAgICAgICAgfCAgMjUgKysrKystCj4gPiAgZG9jcy9taXNjL3hsLXBzci5tYXJr ZG93biAgICAgfCAgMTAgKystCj4gPiAgdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggfCAg IDcgKy0KPiA+ICB0b29scy9saWJ4Yy94Y19wc3IuYyAgICAgICAgICB8ICAyOCArKysrKy0tCj4g PiAgdG9vbHMvbGlieGwvbGlieGwuaCAgICAgICAgICAgfCAgIDIgKwo+ID4gIHRvb2xzL2xpYnhs L2xpYnhsX3Bzci5jICAgICAgIHwgIDUwICsrKysrKysrKystCj4gPiAgdG9vbHMvbGlieGwvbGli eGxfdHlwZXMuaWRsICAgfCAgIDEgKwo+ID4gIHRvb2xzL2xpYnhsL3hsX2NtZGltcGwuYyAgICAg IHwgMTkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQo+ID4gIHRv b2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMgICAgIHwgICA0ICstCj4gPiAgOSBmaWxlcyBjaGFuZ2Vk LCAyNjggaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQg YS9kb2NzL21hbi94bC5wb2QuMS5pbiBiL2RvY3MvbWFuL3hsLnBvZC4xLmluCj4gPiBpbmRleCAx YWRmMzIyLi40N2JkZmM2IDEwMDY0NAo+ID4gLS0tIGEvZG9jcy9tYW4veGwucG9kLjEuaW4KPiA+ ICsrKyBiL2RvY3MvbWFuL3hsLnBvZC4xLmluCj4gPiBAQCAtMTY2MCw2ICsxNjYwLDkgQEAgb2Nj dXBhbmN5IG1vbml0b3Jpbmcgc2hhcmUgdGhlIHNhbWUgc2V0IG9mIHVuZGVybHlpbmcgbW9uaXRv cmluZyBzZXJ2aWNlLiBPbmNlCj4gPiAgYSBkb21haW4gaXMgYXR0YWNoZWQgdG8gdGhlIG1vbml0 b3Jpbmcgc2VydmljZSwgbW9uaXRvcmluZyBkYXRhIGNhbiBiZSBzaG93bgo+ID4gIGZvciBhbnkg b2YgdGhlc2UgbW9uaXRvcmluZyB0eXBlcy4KPiA+ICAKPiA+ICtUaGVyZSBpcyBubyBjYWNoZSBt b25pdG9yaW5nIGFuZCBtZW1vcnkgYmFuZHdpZHRoIG1vbml0b3Jpbmcgb24gTDIgY2FjaGUgc28K PiA+ICtmYXIuCj4gPiArCj4gPiAgPW92ZXIgNAo+ID4gIAo+ID4gID1pdGVtIEI8cHNyLWNtdC1h dHRhY2g+IFtJPGRvbWFpbi1pZD5dCj4gPiBAQCAtMTY4NCw3ICsxNjg3LDcgQEAgbW9uaXRvciB0 eXBlcyBhcmU6Cj4gPiAgCj4gPiAgSW50ZWwgQnJvYWR3ZWxsIGFuZCBsYXRlciBzZXJ2ZXIgcGxh dGZvcm1zIG9mZmVyIGNhcGFiaWxpdGllcyB0byBjb25maWd1cmUgYW5kCj4gPiAgbWFrZSB1c2Ug b2YgdGhlIENhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neSAoQ0FUKSBtZWNoYW5pc21zLCB3aGlj aCBlbmFibGUgbW9yZQo+ID4gLWNhY2hlIHJlc291cmNlcyAoaS5lLiBMMyBjYWNoZSkgdG8gYmUg bWFkZSBhdmFpbGFibGUgZm9yIGhpZ2ggcHJpb3JpdHkKPiA+ICtjYWNoZSByZXNvdXJjZXMgKGku ZS4gTDMvTDIgY2FjaGUpIHRvIGJlIG1hZGUgYXZhaWxhYmxlIGZvciBoaWdoIHByaW9yaXR5Cj4g PiAgYXBwbGljYXRpb25zLiBJbiB0aGUgWGVuIGltcGxlbWVudGF0aW9uLCBDQVQgaXMgdXNlZCB0 byBjb250cm9sIGNhY2hlIGFsbG9jYXRpb24KPiA+ICBvbiBWTSBiYXNpcy4gVG8gZW5mb3JjZSBj YWNoZSBvbiBhIHNwZWNpZmljIGRvbWFpbiwganVzdCBzZXQgY2FwYWNpdHkgYml0bWFza3MKPiA+ ICAoQ0JNKSBmb3IgdGhlIGRvbWFpbi4KPiA+IEBAIC0xNjk0LDcgKzE2OTcsNyBAQCBJbnRlbCBC cm9hZHdlbGwgYW5kIGxhdGVyIHNlcnZlciBwbGF0Zm9ybXMgYWxzbyBvZmZlciBDb2RlL0RhdGEg UHJpb3JpdGl6YXRpb24KPiA+ICBhcHBsaWNhdGlvbnMuIENEUCBpcyB1c2VkIG9uIGEgcGVyIFZN IGJhc2lzIGluIHRoZSBYZW4gaW1wbGVtZW50YXRpb24uIFRvCj4gPiAgc3BlY2lmeSBjb2RlIG9y IGRhdGEgQ0JNIGZvciB0aGUgZG9tYWluLCBDRFAgZmVhdHVyZSBtdXN0IGJlIGVuYWJsZWQgYW5k IENCTQo+ID4gIHR5cGUgb3B0aW9ucyBuZWVkIHRvIGJlIHNwZWNpZmllZCB3aGVuIHNldHRpbmcg Q0JNLCBhbmQgdGhlIHR5cGUgb3B0aW9ucyAoY29kZQo+ID4gLWFuZCBkYXRhKSBhcmUgbXV0dWFs bHkgZXhjbHVzaXZlLgo+ID4gK2FuZCBkYXRhKSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBUaGVy ZSBpcyBubyBDRFAgc3VwcG9ydCBvbiBMMiBzbyBmYXIuCj4gPiAgCj4gPiAgPW92ZXIgNAo+ID4g IAo+ID4gQEAgLTE3MTEsNiArMTcxNCwxMSBAQCBCPE9QVElPTlM+Cj4gPiAgCj4gPiAgU3BlY2lm eSB0aGUgc29ja2V0IHRvIHByb2Nlc3MsIG90aGVyd2lzZSBhbGwgc29ja2V0cyBhcmUgcHJvY2Vz c2VkLgo+ID4gIAo+ID4gKz1pdGVtIEI8LWwgTEVWRUw+LCBCPC0tbGV2ZWw9TEVWRUw+Cj4gPiAr Cj4gPiArU3BlY2lmeSB0aGUgY2FjaGUgbGV2ZWwgdG8gcHJvY2Vzcywgb3RoZXJ3aXNlIHRoZSBs YXN0IGxldmVsIGNhY2hlIGlzCj4gCj4gcy9sYXN0IGxldmVsIGNhY2hlL2xhc3QgbGV2ZWwgY2Fj aGUgKEwzKS8KPiAKPiBCZWNhdXNlIHlvdSBtYXkgaGF2ZSBMNCBhdCBzb21lIHBvaW50ICh3ZXJl bid0IHRoZXJlIHNvbWUgQ1BVcyB3aXRoIEw0PykKPiAKVGhhbmsgeW91IQoKPiA+ICtwcm9jZXNz ZWQuCj4gPiArCj4gPiAgPWl0ZW0gQjwtYz4sIEI8LS1jb2RlPgo+ID4gIAo+ID4gIFNldCBjb2Rl IENCTSB3aGVuIENEUCBpcyBlbmFibGVkLgo+ID4gQEAgLTE3MjEsMTAgKzE3MjksMjEgQEAgU2V0 IGRhdGEgQ0JNIHdoZW4gQ0RQIGlzIGVuYWJsZWQuCj4gPiAgCj4gPiAgPWJhY2sKPiA+ICAKPiA+ IC09aXRlbSBCPHBzci1jYXQtc2hvdz4gW0k8ZG9tYWluLWlkPl0KPiA+ICs9aXRlbSBCPHBzci1j YXQtc2hvdz4gW0k8T1BUSU9OUz5dIFtJPGRvbWFpbi1pZD5dCj4gPiAgCj4gPiAgU2hvdyBDQVQg c2V0dGluZ3MgZm9yIGEgY2VydGFpbiBkb21haW4gb3IgYWxsIGRvbWFpbnMuCj4gPiAgCj4gPiAr QjxPUFRJT05TPgo+ID4gKwo+ID4gKz1vdmVyIDQKPiA+ICsKPiA+ICs9aXRlbSBCPC1sIExFVkVM PiwgQjwtLWxldmVsPUxFVkVMPgo+ID4gKwo+ID4gK1NwZWNpZnkgdGhlIGNhY2hlIGxldmVsIHRv IHByb2Nlc3MsIG90aGVyd2lzZSB0aGUgbGFzdCBsZXZlbCBjYWNoZSBpcwo+IAo+IEFnYWluLCBz L2xhc3QgbGV2ZWwvbGFzdCBsZXZlbCAoTDMpLy8KClRoYW5rIHlvdSEKCj4gPiArcHJvY2Vzc2Vk Lgo+ID4gKwo+ID4gKz1iYWNrCj4gPiArCj4gPiAgPWJhY2sKPiA+ICAKPiA+ICA9aGVhZDEgSUdO T1JFRCBGT1IgQ09NUEFUSUJJTElUWSBXSVRIIFhNCj4gPiBkaWZmIC0tZ2l0IGEvZG9jcy9taXNj L3hsLXBzci5tYXJrZG93biBiL2RvY3MvbWlzYy94bC1wc3IubWFya2Rvd24KPiA+IGluZGV4IGMz YzFlOGUuLmJkMmI2YmQgMTAwNjQ0Cj4gPiAtLS0gYS9kb2NzL21pc2MveGwtcHNyLm1hcmtkb3du Cj4gPiArKysgYi9kb2NzL21pc2MveGwtcHNyLm1hcmtkb3duCj4gPiBAQCAtNzAsNyArNzAsNyBA QCB0b3RhbC1tZW0tYmFuZHdpZHRoIGluc3RlYWQgb2YgY2FjaGUtb2NjdXBhbmN5KS4gRS5nLiBh ZnRlciBhIGB4bCBwc3ItY210LWF0dGFjaAo+ID4gIAo+ID4gIENhY2hlIEFsbG9jYXRpb24gVGVj aG5vbG9neSAoQ0FUKSBpcyBhIG5ldyBmZWF0dXJlIGF2YWlsYWJsZSBvbiBJbnRlbAo+ID4gIEJy b2Fkd2VsbCBhbmQgbGF0ZXIgc2VydmVyIHBsYXRmb3JtcyB0aGF0IGFsbG93cyBhbiBPUyBvciBI eXBlcnZpc29yL1ZNTSB0bwo+ID4gLXBhcnRpdGlvbiBjYWNoZSBhbGxvY2F0aW9uIChpLmUuIEwz IGNhY2hlKSBiYXNlZCBvbiBhcHBsaWNhdGlvbiBwcmlvcml0eSBvcgo+ID4gK3BhcnRpdGlvbiBj YWNoZSBhbGxvY2F0aW9uIChpLmUuIEwzL0wyIGNhY2hlKSBiYXNlZCBvbiBhcHBsaWNhdGlvbiBw cmlvcml0eSBvcgo+ID4gIENsYXNzIG9mIFNlcnZpY2UgKENPUykuIEVhY2ggQ09TIGlzIGNvbmZp Z3VyZWQgdXNpbmcgY2FwYWNpdHkgYml0bWFza3MgKENCTSkKPiA+ICB3aGljaCByZXByZXNlbnQg Y2FjaGUgY2FwYWNpdHkgYW5kIGluZGljYXRlIHRoZSBkZWdyZWUgb2Ygb3ZlcmxhcCBhbmQKPiA+ ICBpc29sYXRpb24gYmV0d2VlbiBjbGFzc2VzLiBTeXN0ZW0gY2FjaGUgcmVzb3VyY2UgaXMgZGl2 aWRlZCBpbnRvIG51bWJlcnMgb2YKPiA+IEBAIC0xMTksMTMgKzExOSwxOSBAQCBBIGNibSBpcyB2 YWxpZCBvbmx5IHdoZW46Cj4gPiAgSW4gYSBtdWx0aS1zb2NrZXQgc3lzdGVtLCB0aGUgc2FtZSBj Ym0gd2lsbCBiZSBzZXQgb24gZWFjaCBzb2NrZXQgYnkgZGVmYXVsdC4KPiA+ICBQZXIgc29ja2V0 IGNibSBjYW4gYmUgc3BlY2lmaWVkIHdpdGggdGhlIGAtLXNvY2tldCBTT0NLRVRgIG9wdGlvbi4K PiA+ICAKPiA+ICtJbiBkaWZmZXJlbnQgc3lzdGVtcywgdGhlIGRpZmZlcmVudCBjYWNoZSBsZXZl bCBpcyBzdXBwb3J0ZWQsIGUuZy4gTDMgY2FjaGUgb3IKPiA+ICtMMiBjYWNoZS4gUGVyIGNhY2hl IGxldmVsIGNibSBjYW4gYmUgc3BlY2lmaWVkIHdpdGggdGhlIGAtLWxldmVsIExFVkVMYCBvcHRp b24uCj4gPiArCj4gPiAgU2V0dGluZyB0aGUgQ0JNIG1heSBub3QgYmUgc3VjY2Vzc2Z1bCBpZiBp bnN1ZmZpY2llbnQgQ09TIGlzIGF2YWlsYWJsZS4gSW4KPiA+ICBzdWNoIGNhc2UgdW51c2VkIENP UyhlcykgbWF5IGJlIGZyZWVkIGJ5IHNldHRpbmcgQ0JNIG9mIGFsbCByZWxhdGVkIGRvbWFpbnMg dG8KPiA+ICBpdHMgZGVmYXVsdCB2YWx1ZShhbGwtb25lcykuCj4gPiAgCj4gPiAgUGVyIGRvbWFp biBDQk0gc2V0dGluZ3MgY2FuIGJlIHNob3duIGJ5Ogo+ID4gIAo+ID4gLWB4bCBwc3ItY2F0LXNo b3dgCj4gPiArYHhsIHBzci1jYXQtc2hvdyBbT1BUSU9OU10gPGRvbWlkPmAKPiA+ICsKPiA+ICtJ biBkaWZmZXJlbnQgc3lzdGVtcywgdGhlIGRpZmZlcmVudCBjYWNoZSBsZXZlbCBpcyBzdXBwb3J0 ZWQsIGUuZy4gTDMgY2FjaGUgb3IKPiA+ICtMMiBjYWNoZS4gUGVyIGNhY2hlIGxldmVsIGNibSBj YW4gYmUgc3BlY2lmaWVkIHdpdGggdGhlIGAtLWxldmVsIExFVkVMYCBvcHRpb24uCj4gPiAgCj4g PiAgIyMgQ29kZSBhbmQgRGF0YSBQcmlvcml0aXphdGlvbiAoQ0RQKQo+ID4gIAo+ID4gZGlmZiAt LWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5jbHVk ZS94ZW5jdHJsLmgKPiA+IGluZGV4IDU2MGNlN2IuLmQ3MGU4YTggMTAwNjQ0Cj4gPiAtLS0gYS90 b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAo+ID4gKysrIGIvdG9vbHMvbGlieGMvaW5jbHVk ZS94ZW5jdHJsLmgKPiA+IEBAIC0yNTg1LDYgKzI1ODUsNyBAQCBlbnVtIHhjX3Bzcl9jYXRfdHlw ZSB7Cj4gPiAgICAgIFhDX1BTUl9DQVRfTDNfQ0JNICAgICAgPSAxLAo+ID4gICAgICBYQ19QU1Jf Q0FUX0wzX0NCTV9DT0RFID0gMiwKPiA+ICAgICAgWENfUFNSX0NBVF9MM19DQk1fREFUQSA9IDMs Cj4gPiArICAgIFhDX1BTUl9DQVRfTDJfQ0JNICAgICAgPSA0LAo+ID4gIH07Cj4gPiAgdHlwZWRl ZiBlbnVtIHhjX3Bzcl9jYXRfdHlwZSB4Y19wc3JfY2F0X3R5cGU7Cj4gPiAgCj4gPiBAQCAtMjYw OSw5ICsyNjEwLDkgQEAgaW50IHhjX3Bzcl9jYXRfc2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFj ZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKPiA+ICBpbnQgeGNfcHNyX2NhdF9nZXRfZG9tYWluX2Rh dGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB4Y19wc3JfY2F0X3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZGF0YSk7Cj4gPiAt aW50IHhjX3Bzcl9jYXRfZ2V0X2wzX2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNv Y2tldCwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqY29zX21heCwg dWludDMyX3QgKmNibV9sZW4sCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAq Y2RwX2VuYWJsZWQpOwo+ID4gK2ludCB4Y19wc3JfY2F0X2dldF9pbmZvKHhjX2ludGVyZmFjZSAq eGNoLCB1aW50MzJfdCBzb2NrZXQsIGludCBsdmwsCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgKmNvc19tYXgsIHVpbnQzMl90ICpjYm1fbGVuLAo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGJvb2wgKmNkcF9lbmFibGVkKTsKPiA+ICAKPiA+ICBpbnQgeGNfZ2V0X2Nw dV9sZXZlbGxpbmdfY2Fwcyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgKmNhcHMpOwo+ID4g IGludCB4Y19nZXRfY3B1X2ZlYXR1cmVzZXQoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGlu ZGV4LAo+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX3Bzci5jIGIvdG9vbHMvbGlieGMv eGNfcHNyLmMKPiA+IGluZGV4IDQzYjMyODYuLjYxOGRiY2MgMTAwNjQ0Cj4gPiAtLS0gYS90b29s cy9saWJ4Yy94Y19wc3IuYwo+ID4gKysrIGIvdG9vbHMvbGlieGMveGNfcHNyLmMKPiA+IEBAIC0y NjYsNiArMjY2LDkgQEAgaW50IHhjX3Bzcl9jYXRfc2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFj ZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKPiA+ICAgICAgY2FzZSBYQ19QU1JfQ0FUX0wzX0NCTV9E QVRBOgo+ID4gICAgICAgICAgY21kID0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19EQVRB Owo+ID4gICAgICAgICAgYnJlYWs7Cj4gPiArICAgIGNhc2UgWENfUFNSX0NBVF9MMl9DQk06Cj4g PiArICAgICAgICBjbWQgPSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wyX0NCTTsKPiA+ICsg ICAgICAgIGJyZWFrOwo+ID4gICAgICBkZWZhdWx0Ogo+ID4gICAgICAgICAgZXJybm8gPSBFSU5W QUw7Cj4gPiAgICAgICAgICByZXR1cm4gLTE7Cj4gPiBAQCAtMjk5LDYgKzMwMiw5IEBAIGludCB4 Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9t aWQsCj4gPiAgICAgIGNhc2UgWENfUFNSX0NBVF9MM19DQk1fREFUQToKPiA+ICAgICAgICAgIGNt ZCA9IFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfREFUQTsKPiA+ICAgICAgICAgIGJyZWFr Owo+ID4gKyAgICBjYXNlIFhDX1BTUl9DQVRfTDJfQ0JNOgo+ID4gKyAgICAgICAgY21kID0gWEVO X0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MMl9DQk07Cj4gPiArICAgICAgICBicmVhazsKPiA+ICAg ICAgZGVmYXVsdDoKPiA+ICAgICAgICAgIGVycm5vID0gRUlOVkFMOwo+ID4gICAgICAgICAgcmV0 dXJuIC0xOwo+ID4gQEAgLTMxNywyMyArMzIzLDI5IEBAIGludCB4Y19wc3JfY2F0X2dldF9kb21h aW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCj4gPiAgICAgIHJldHVy biByYzsKPiA+ICB9Cj4gPiAgCj4gPiAtaW50IHhjX3Bzcl9jYXRfZ2V0X2wzX2luZm8oeGNfaW50 ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCAqY29zX21heCwgdWludDMyX3QgKmNibV9sZW4sCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgYm9vbCAqY2RwX2VuYWJsZWQpCj4gPiAraW50IHhjX3Bzcl9jYXRf Z2V0X2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwgaW50IGx2bCwKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqY29zX21heCwgdWludDMyX3QgKmNi bV9sZW4sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqY2RwX2VuYWJsZWQpCj4g PiAgewo+ID4gLSAgICBpbnQgcmM7Cj4gPiArICAgIGludCByYyA9IC0xOwo+ID4gICAgICBERUNM QVJFX1NZU0NUTDsKPiA+ICAKPiA+ICsgICAgaWYgKCBsdmwgPT0gMiApCj4gPiArICAgICAgICBz eXNjdGwudS5wc3JfY2F0X29wLmNtZCA9IFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDJfaW5mbzsK PiA+ICsgICAgZWxzZSBpZiAoIGx2bCA9PSAzICkKPiA+ICsgICAgICAgIHN5c2N0bC51LnBzcl9j YXRfb3AuY21kID0gWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sM19pbmZvOwo+ID4gKyAgICBlbHNl Cj4gPiArICAgICAgICByZXR1cm4gcmM7Cj4gCj4gUGVyaGFwczoKPiAKPiBlbHNlIHsKPiAJZXJy bm8gPSBFT1BOT1RTVVBQOwo+IAlyZXR1cm4gcmM7Cj4gfQo+IAo+ID8KPiAKT2ssIHRoYW5rcyEK Cj4gPiArCj4gPiAgICAgIHN5c2N0bC5jbWQgPSBYRU5fU1lTQ1RMX3Bzcl9jYXRfb3A7Cj4gPiAt ICAgIHN5c2N0bC51LnBzcl9jYXRfb3AuY21kID0gWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sM19p bmZvOwo+ID4gICAgICBzeXNjdGwudS5wc3JfY2F0X29wLnRhcmdldCA9IHNvY2tldDsKPiA+ICAK PiA+ICAgICAgcmMgPSB4Y19zeXNjdGwoeGNoLCAmc3lzY3RsKTsKPiA+ICAgICAgaWYgKCAhcmMg KQo+ID4gICAgICB7Cj4gPiAtICAgICAgICAqY29zX21heCA9IHN5c2N0bC51LnBzcl9jYXRfb3Au dS5sM19pbmZvLmNvc19tYXg7Cj4gPiAtICAgICAgICAqY2JtX2xlbiA9IHN5c2N0bC51LnBzcl9j YXRfb3AudS5sM19pbmZvLmNibV9sZW47Cj4gPiAtICAgICAgICAqY2RwX2VuYWJsZWQgPSBzeXNj dGwudS5wc3JfY2F0X29wLnUubDNfaW5mby5mbGFncyAmCj4gPiArICAgICAgICAqY29zX21heCA9 IHN5c2N0bC51LnBzcl9jYXRfb3AudS5pbmZvLmNvc19tYXg7Cj4gPiArICAgICAgICAqY2JtX2xl biA9IHN5c2N0bC51LnBzcl9jYXRfb3AudS5pbmZvLmNibV9sZW47Cj4gPiArICAgICAgICAqY2Rw X2VuYWJsZWQgPSBzeXNjdGwudS5wc3JfY2F0X29wLnUuaW5mby5mbGFncyAmCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICBYRU5fU1lTQ1RMX1BTUl9DQVRfTDNfQ0RQOwo+ID4gICAgICB9Cj4g PiAgCj4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGwuaCBiL3Rvb2xzL2xpYnhsL2xp YnhsLmgKPiA+IGluZGV4IGU0YzI1YzQuLjFjZGY2MjEgMTAwNjQ0Cj4gPiAtLS0gYS90b29scy9s aWJ4bC9saWJ4bC5oCj4gPiArKysgYi90b29scy9saWJ4bC9saWJ4bC5oCj4gPiBAQCAtMjE0MSw2 ICsyMTQxLDggQEAgaW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2NibShsaWJ4bF9jdHggKmN0eCwgdWlu dDMyX3QgZG9taWQsCj4gPiAgICovCj4gPiAgaW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2wzX2luZm8o bGlieGxfY3R4ICpjdHgsIGxpYnhsX3Bzcl9jYXRfaW5mbyAqKmluZm8sCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50ICpucik7Cj4gPiAraW50IGxpYnhsX3Bzcl9jYXRfZ2V0 X2luZm8obGlieGxfY3R4ICpjdHgsIGxpYnhsX3Bzcl9jYXRfaW5mbyAqKmluZm8sCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpuciwgaW50IGx2bCk7Cj4gPiAgdm9pZCBsaWJ4 bF9wc3JfY2F0X2luZm9fbGlzdF9mcmVlKGxpYnhsX3Bzcl9jYXRfaW5mbyAqbGlzdCwgaW50IG5y KTsKPiA+ICAjZW5kaWYKPiA+ICAKPiA+IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9w c3IuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3Bzci5jCj4gPiBpbmRleCA5OTczM2Y2Li44NjFkNWE4 IDEwMDY0NAo+ID4gLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKPiA+ICsrKyBiL3Rvb2xz L2xpYnhsL2xpYnhsX3Bzci5jCj4gPiBAQCAtMzc5LDggKzM3OSw1NCBAQCBpbnQgbGlieGxfcHNy X2NhdF9nZXRfbDNfaW5mbyhsaWJ4bF9jdHggKmN0eCwgbGlieGxfcHNyX2NhdF9pbmZvICoqaW5m bywKPiA+ICAKPiA+ICAgICAgbGlieGxfZm9yX2VhY2hfc2V0X2JpdChzb2NrZXRpZCwgc29ja2V0 bWFwKSB7Cj4gPiAgICAgICAgICBwdHJbaV0uaWQgPSBzb2NrZXRpZDsKPiA+IC0gICAgICAgIGlm ICh4Y19wc3JfY2F0X2dldF9sM19pbmZvKGN0eC0+eGNoLCBzb2NrZXRpZCwgJnB0cltpXS5jb3Nf bWF4LAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB0cltpXS5jYm1f bGVuLCAmcHRyW2ldLmNkcF9lbmFibGVkKSkgewo+ID4gKyAgICAgICAgaWYgKHhjX3Bzcl9jYXRf Z2V0X2luZm8oY3R4LT54Y2gsIHNvY2tldGlkLCAzLCAmcHRyW2ldLmNvc19tYXgsCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHRyW2ldLmNibV9sZW4sICZwdHJbaV0uY2Rw X2VuYWJsZWQpKSB7Cj4gPiArICAgICAgICAgICAgbGlieGxfX3Bzcl9jYXRfbG9nX2Vycl9tc2co Z2MsIGVycm5vKTsKPiA+ICsgICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7Cj4gPiArICAgICAg ICAgICAgZnJlZShwdHIpOwo+ID4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gKyAgICAgICAg fQo+ID4gKyAgICAgICAgaSsrOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgICppbmZvID0gcHRy Owo+ID4gKyAgICAqbnIgPSBpOwo+ID4gK291dDoKPiA+ICsgICAgbGlieGxfYml0bWFwX2Rpc3Bv c2UoJnNvY2tldG1hcCk7Cj4gPiArICAgIEdDX0ZSRUU7Cj4gPiArICAgIHJldHVybiByYzsKPiA+ ICt9Cj4gPiArCj4gPiAraW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8obGlieGxfY3R4ICpjdHgs IGxpYnhsX3Bzcl9jYXRfaW5mbyAqKmluZm8sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50ICpuciwgaW50IGx2bCkKPiA+ICt7Cj4gPiArICAgIEdDX0lOSVQoY3R4KTsKPiA+ICsg ICAgaW50IHJjOwo+ID4gKyAgICBpbnQgaSA9IDAsIHNvY2tldGlkLCBucl9zb2NrZXRzOwo+ID4g KyAgICBsaWJ4bF9iaXRtYXAgc29ja2V0bWFwOwo+ID4gKyAgICBsaWJ4bF9wc3JfY2F0X2luZm8g KnB0cjsKPiA+ICsKPiA+ICsgICAgbGlieGxfYml0bWFwX2luaXQoJnNvY2tldG1hcCk7Cj4gPiAr Cj4gPiArICAgIHJjID0gbGlieGxfX2NvdW50X3BoeXNpY2FsX3NvY2tldHMoZ2MsICZucl9zb2Nr ZXRzKTsKPiA+ICsgICAgaWYgKHJjKSB7Cj4gPiArICAgICAgICBMT0dFKEVSUk9SLCAiZmFpbGVk IHRvIGdldCBzeXN0ZW0gc29ja2V0IGNvdW50Iik7Cj4gPiArICAgICAgICBnb3RvIG91dDsKPiA+ ICsgICAgfQo+ID4gKwo+ID4gKyAgICBsaWJ4bF9zb2NrZXRfYml0bWFwX2FsbG9jKGN0eCwgJnNv Y2tldG1hcCwgbnJfc29ja2V0cyk7Cj4gPiArICAgIHJjID0gbGlieGxfZ2V0X29ubGluZV9zb2Nr ZXRtYXAoY3R4LCAmc29ja2V0bWFwKTsKPiA+ICsgICAgaWYgKHJjIDwgMCkgewo+ID4gKyAgICAg ICAgTE9HRShFUlJPUiwgImZhaWxlZCB0byBnZXQgYXZhaWxhYmxlIHNvY2tldHMiKTsKPiA+ICsg ICAgICAgIGdvdG8gb3V0Owo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIHB0ciA9IGxpYnhsX19t YWxsb2MoTk9HQywgbnJfc29ja2V0cyAqIHNpemVvZihsaWJ4bF9wc3JfY2F0X2luZm8pKTsKPiA+ ICsKPiA+ICsgICAgbGlieGxfZm9yX2VhY2hfc2V0X2JpdChzb2NrZXRpZCwgc29ja2V0bWFwKSB7 Cj4gPiArICAgICAgICBwdHJbaV0uaWQgPSBzb2NrZXRpZDsKPiA+ICsgICAgICAgIGlmICh4Y19w c3JfY2F0X2dldF9pbmZvKGN0eC0+eGNoLCBzb2NrZXRpZCwgbHZsLCAmcHRyW2ldLmNvc19tYXgs Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHRyW2ldLmNibV9sZW4sICZw dHJbaV0uY2RwX2VuYWJsZWQpKSB7Cj4gCj4gVGhpcyBmdW5jdGlvbiBsb29rcyB2ZXJ5IGNsb3Nl IHRvICBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvLiBBbnkgY2hhbmNlCj4gdGhhdCB5b3UgY2Fu IG9uZSBmdW5jdGlvbiBkb2luZyBpdD8KPiAKWWVzLCBwZXIgbXkgb3JpZ2luYWwgZGVzaWduLCBs aWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhpcwpmdW5jdGlv bi4gQnV0IGNvbnNpZGVyaW5nIHRvIGJlIGJhY2t3YXJkIGNvbXBhdGlibGUsIEkga2VlcCB0aGlz IGludGVyZmFjZSBpbgpsaWJ4ZW5saWdodC5zby4KCj4gPiAgICAgICAgICAgICAgbGlieGxfX3Bz cl9jYXRfbG9nX2Vycl9tc2coZ2MsIGVycm5vKTsKPiA+ICAgICAgICAgICAgICByYyA9IEVSUk9S X0ZBSUw7Cj4gPiAgICAgICAgICAgICAgZnJlZShwdHIpOwo+ID4gZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnhsL2xpYnhsX3R5cGVzLmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAo+ID4g aW5kZXggOThiZmMzYS4uNDUwM2E4YiAxMDA2NDQKPiA+IC0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhs X3R5cGVzLmlkbAo+ID4gKysrIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCj4gPiBAQCAt ODkwLDYgKzg5MCw3IEBAIGxpYnhsX3Bzcl9jYm1fdHlwZSA9IEVudW1lcmF0aW9uKCJwc3JfY2Jt X3R5cGUiLCBbCj4gPiAgICAgICgxLCAiTDNfQ0JNIiksCj4gPiAgICAgICgyLCAiTDNfQ0JNX0NP REUiKSwKPiA+ICAgICAgKDMsICJMM19DQk1fREFUQSIpLAo+ID4gKyAgICAoNCwgIkwyX0NCTSIp LAo+ID4gICAgICBdKQo+ID4gIAo+ID4gIGxpYnhsX3Bzcl9jYXRfaW5mbyA9IFN0cnVjdCgicHNy X2NhdF9pbmZvIiwgWwo+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYyBi L3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYwo+ID4gaW5kZXggNzU0MGZiMS4uNGE4M2NhZiAxMDA2 NDQKPiA+IC0tLSBhL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYwo+ID4gKysrIGIvdG9vbHMvbGli eGwveGxfY21kaW1wbC5jCj4gPiBAQCAtOTI3MywxOCArOTI3MywxMjQgQEAgaW50IG1haW5fcHNy X2NtdF9zaG93KGludCBhcmdjLCBjaGFyICoqYXJndikKPiA+ICAjZW5kaWYKPiA+ICAKPiA+ICAj aWZkZWYgTElCWExfSEFWRV9QU1JfQ0FUCj4gPiAtc3RhdGljIGludCBwc3JfY2F0X2h3aW5mbyh2 b2lkKQo+ID4gK3N0YXRpYyB2b2lkIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm1fdHlwZSh1 aW50MzJfdCBkb21pZCwgdWludDMyX3Qgc29ja2V0aWQsCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX3Bzcl9jYm1fdHlwZSB0eXBlKQo+ID4g K3sKPiA+ICsgICAgdWludDY0X3QgY2JtOwo+ID4gKwo+ID4gKyAgICBpZiAoIWxpYnhsX3Bzcl9j YXRfZ2V0X2NibShjdHgsIGRvbWlkLCB0eXBlLCBzb2NrZXRpZCwgJmNibSkpCj4gPiArICAgICAg ICBwcmludGYoIiUjMTYiUFJJeDY0LCBjYm0pOwo+ID4gKyAgICBlbHNlCj4gPiArICAgICAgICBw cmludGYoIiUxNnMiLCAiZXJyb3IiKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBwc3Jf bDJfY2F0X2h3aW5mbyh2b2lkKQo+ID4gK3sKPiA+ICsgICAgaW50IHJjOwo+ID4gKyAgICBpbnQg aSwgbnI7Cj4gCj4gSG93IGFib3V0IHVuc2lnbmVkIGludD8KClllcywgdGhhbmtzIQoKPiA+ICsg ICAgbGlieGxfcHNyX2NhdF9pbmZvICppbmZvOwo+ID4gKwo+ID4gKyAgICBwcmludGYoIkNhY2hl IEFsbG9jYXRpb24gVGVjaG5vbG9neSAoQ0FUKTogTDJcbiIpOwo+ID4gKwo+ID4gKyAgICByYyA9 IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8oY3R4LCAmaW5mbywgJm5yLCAyKTsKPiA+ICsgICAgaWYg KHJjKSB7Cj4gPiArICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgbDIgY2F0 IGluZm9cbiIpOwo+ID4gKyAgICAgICAgcmV0dXJuIHJjOwo+ID4gKyAgICB9Cj4gPiArCj4gPiAr ICAgIGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKSB7Cj4gPiArICAgICAgICAvKiBUaGVyZSBpcyBu byBDTVQgb24gTDIgY2FjaGUgc28gZmFyLiAqLwo+ID4gKyAgICAgICAgcHJpbnRmKCIlLTE2czog JXVcbiIsICJTb2NrZXQgSUQiLCBpbmZvW2ldLmlkKTsKPiA+ICsgICAgICAgIHByaW50ZigiJS0x NnM6ICV1XG4iLCAiTWF4aW11bSBDT1MiLCBpbmZvW2ldLmNvc19tYXgpOwo+ID4gKyAgICAgICAg cHJpbnRmKCIlLTE2czogJXVcbiIsICJDQk0gbGVuZ3RoIiwgaW5mb1tpXS5jYm1fbGVuKTsKPiA+ ICsgICAgICAgIHByaW50ZigiJS0xNnM6ICUjbGx4XG4iLCAiRGVmYXVsdCBDQk0iLAo+ID4gKyAg ICAgICAgICAgICAgICgxdWxsIDw8IGluZm9baV0uY2JtX2xlbikgLSAxKTsKPiA+ICsgICAgfQo+ ID4gKwo+ID4gKyAgICBsaWJ4bF9wc3JfY2F0X2luZm9fbGlzdF9mcmVlKGluZm8sIG5yKTsKPiA+ ICsgICAgcmV0dXJuIHJjOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBwc3JfbDJfY2F0 X3ByaW50X29uZV9kb21haW5fY2JtKHVpbnQzMl90IGRvbWlkLCB1aW50MzJfdCBzb2NrZXRpZCkK PiA+ICt7Cj4gPiArICAgIGNoYXIgKmRvbWFpbl9uYW1lOwo+ID4gKwo+ID4gKyAgICBkb21haW5f bmFtZSA9IGxpYnhsX2RvbWlkX3RvX25hbWUoY3R4LCBkb21pZCk7Cj4gPiArICAgIHByaW50Zigi JTVkJTI1cyIsIGRvbWlkLCBkb21haW5fbmFtZSk7Cj4gPiArICAgIGZyZWUoZG9tYWluX25hbWUp Owo+ID4gKwo+ID4gKyAgICBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtX3R5cGUoZG9taWQs IHNvY2tldGlkLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElC WExfUFNSX0NCTV9UWVBFX0wyX0NCTSk7Cj4gPiArCj4gPiArICAgIHByaW50ZigiXG4iKTsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBwc3JfbDJfY2F0X3ByaW50X2RvbWFpbl9jYm0odWlu dDMyX3QgZG9taWQsIHVpbnQzMl90IHNvY2tldGlkKQo+ID4gK3sKPiA+ICsgICAgaW50IGksIG5y X2RvbWFpbnM7Cj4gCj4gdW5zaWduZWQgaW50PwoKWWVzLCB0aGFua3MhCgo+ID4gKyAgICBsaWJ4 bF9kb21pbmZvICpsaXN0Owo+ID4gKwo+ID4gKyAgICBpZiAoZG9taWQgIT0gSU5WQUxJRF9ET01J RCkgewo+ID4gKyAgICAgICAgcHNyX2wyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibShkb21pZCwg c29ja2V0aWQpOwo+ID4gKyAgICAgICAgcmV0dXJuIDA7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsg ICAgaWYgKCEobGlzdCA9IGxpYnhsX2xpc3RfZG9tYWluKGN0eCwgJm5yX2RvbWFpbnMpKSkgewo+ ID4gKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gZ2V0IGRvbWFpbiBsaXN0IGZv ciBjYm0gZGlzcGxheVxuIik7Cj4gPiArICAgICAgICByZXR1cm4gLTE7Cj4gCj4gLTEgPyBOb3Qg RVJST1JfRkFJTD8KPiAKSnVzdCBmb2xsb3cgdGhlIG9sZCBjb2Rlcy4gRVJST1JfRkFJTCBzaG91 bGQgYmUgZ29vZC4gVGhhbmtzIQoKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBmb3IgKGkgPSAw OyBpIDwgbnJfZG9tYWluczsgaSsrKQo+ID4gKyAgICAgICAgcHNyX2wyX2NhdF9wcmludF9vbmVf ZG9tYWluX2NibShsaXN0W2ldLmRvbWlkLCBzb2NrZXRpZCk7Cj4gPiArICAgIGxpYnhsX2RvbWlu Zm9fbGlzdF9mcmVlKGxpc3QsIG5yX2RvbWFpbnMpOwo+ID4gKwo+ID4gKyAgICByZXR1cm4gMDsK PiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBwc3JfbDJfY2F0X3ByaW50X3NvY2tldCh1aW50 MzJfdCBkb21pZCwgbGlieGxfcHNyX2NhdF9pbmZvICppbmZvKQo+ID4gK3sKPiA+ICsgICAgcHJp bnRmKCIlLTE2czogJXVcbiIsICJTb2NrZXQgSUQiLCBpbmZvLT5pZCk7Cj4gPiArICAgIHByaW50 ZigiJS0xNnM6ICUjbGx4XG4iLCAiRGVmYXVsdCBDQk0iLCAoMXVsbCA8PCBpbmZvLT5jYm1fbGVu KSAtIDEpOwo+ID4gKyAgICBwcmludGYoIiU1cyUyNXMlMTZzXG4iLCAiSUQiLCAiTkFNRSIsICJD Qk0iKTsKPiA+ICsKPiA+ICsgICAgcmV0dXJuIHBzcl9sMl9jYXRfcHJpbnRfZG9tYWluX2NibShk b21pZCwgaW5mby0+aWQpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IHBzcl9sMl9jYXRf c2hvdyh1aW50MzJfdCBkb21pZCkKPiA+ICt7Cj4gPiArICAgIGludCBpLCBucjsKPiAKPiB1bnNp Z25lZCBpbnQ/CgpZZXMsIHRoYW5rcyEKCj4gPiArICAgIGludCByYzsKPiA+ICsgICAgbGlieGxf cHNyX2NhdF9pbmZvICppbmZvOwo+ID4gKwo+ID4gKyAgICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0 X2luZm8oY3R4LCAmaW5mbywgJm5yLCAyKTsKPiA+ICsgICAgaWYgKHJjKSB7Cj4gPiArICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgbDIgY2F0IGluZm9cbiIpOwo+ID4gKyAg ICAgICAgcmV0dXJuIHJjOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIGZvciAoaSA9IDA7IGkg PCBucjsgaSsrKSB7Cj4gPiArICAgICAgICByYyA9IHBzcl9sMl9jYXRfcHJpbnRfc29ja2V0KGRv bWlkLCBpbmZvICsgaSk7Cj4gPiArICAgICAgICBpZiAocmMpCj4gPiArICAgICAgICAgICAgZ290 byBvdXQ7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICtvdXQ6Cj4gPiArICAgIGxpYnhsX3Bzcl9jYXRf aW5mb19saXN0X2ZyZWUoaW5mbywgbnIpOwo+ID4gKyAgICByZXR1cm4gcmM7Cj4gPiArfQo+ID4g Kwo+ID4gK3N0YXRpYyBpbnQgcHNyX2wzX2NhdF9od2luZm8odm9pZCkKPiA+ICB7Cj4gPiAgICAg IGludCByYzsKPiA+ICAgICAgaW50IGksIG5yOwo+ID4gICAgICB1aW50MzJfdCBsM19jYWNoZV9z aXplOwo+ID4gICAgICBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm87Cj4gPiAgCj4gPiAtICAgIHBy aW50ZigiQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5IChDQVQpOlxuIik7Cj4gPiArICAgIHBy aW50ZigiQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5IChDQVQpOiBMM1xuIik7Cj4gPiAgCj4g PiAtICAgIHJjID0gbGlieGxfcHNyX2NhdF9nZXRfbDNfaW5mbyhjdHgsICZpbmZvLCAmbnIpOwo+ ID4gKyAgICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8oY3R4LCAmaW5mbywgJm5yLCAzKTsK PiA+ICAgICAgaWYgKHJjKSB7Cj4gPiAtICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0 byBnZXQgY2F0IGluZm9cbiIpOwo+ID4gKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQg dG8gZ2V0IGwzIGNhdCBpbmZvXG4iKTsKPiA+ICAgICAgICAgIHJldHVybiByYzsKPiA+ICAgICAg fQo+ID4gIAo+ID4gQEAgLTkzMTAsMTcgKzk0MTYsNiBAQCBvdXQ6Cj4gPiAgICAgIHJldHVybiBy YzsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQgcHNyX2NhdF9wcmludF9vbmVfZG9tYWlu X2NibV90eXBlKHVpbnQzMl90IGRvbWlkLCB1aW50MzJfdCBzb2NrZXRpZCwKPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2NibV90eXBl IHR5cGUpCj4gPiAtewo+ID4gLSAgICB1aW50NjRfdCBjYm07Cj4gPiAtCj4gPiAtICAgIGlmICgh bGlieGxfcHNyX2NhdF9nZXRfY2JtKGN0eCwgZG9taWQsIHR5cGUsIHNvY2tldGlkLCAmY2JtKSkK PiA+IC0gICAgICAgIHByaW50ZigiJSMxNiJQUkl4NjQsIGNibSk7Cj4gPiAtICAgIGVsc2UKPiA+ IC0gICAgICAgIHByaW50ZigiJTE2cyIsICJlcnJvciIpOwo+ID4gLX0KPiA+IC0KPiA+ICBzdGF0 aWMgdm9pZCBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtKHVpbnQzMl90IGRvbWlkLCB1aW50 MzJfdCBzb2NrZXRpZCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJvb2wgY2RwX2VuYWJsZWQpCj4gPiAgewo+ID4gQEAgLTkzOTUsOSArOTQ5MCw5IEBAIHN0 YXRpYyBpbnQgcHNyX2NhdF9zaG93KHVpbnQzMl90IGRvbWlkKQo+ID4gICAgICBpbnQgcmM7Cj4g PiAgICAgIGxpYnhsX3Bzcl9jYXRfaW5mbyAqaW5mbzsKPiA+ICAKPiA+IC0gICAgcmMgPSBsaWJ4 bF9wc3JfY2F0X2dldF9sM19pbmZvKGN0eCwgJmluZm8sICZucik7Cj4gPiArICAgIHJjID0gbGli eGxfcHNyX2NhdF9nZXRfaW5mbyhjdHgsICZpbmZvLCAmbnIsIDMpOwo+ID4gICAgICBpZiAocmMp IHsKPiA+IC0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBjYXQgaW5mb1xu Iik7Cj4gPiArICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgbDMgY2F0IGlu Zm9cbiIpOwo+ID4gICAgICAgICAgcmV0dXJuIHJjOwo+ID4gICAgICB9Cj4gPiAgCj4gPiBAQCAt OTQyNCwxOCArOTUxOSwyMCBAQCBpbnQgbWFpbl9wc3JfY2F0X2NibV9zZXQoaW50IGFyZ2MsIGNo YXIgKiphcmd2KQo+ID4gICAgICBsaWJ4bF9zdHJpbmdfbGlzdCBzb2NrZXRfbGlzdDsKPiA+ICAg ICAgdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOwo+ID4gICAgICBpbnQgaSwgaiwgbGVuOwo+ID4g KyAgICBpbnQgbHZsID0gMzsKPiAKPiB1bnNpZ25lZCBpbnQ/Cj4gClllcywgdGhhbmtzIQoKPiA+ ICAKPiA+ICAgICAgc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0c1tdID0gewo+ID4gICAgICAgICAg eyJzb2NrZXQiLCAxLCAwLCAncyd9LAo+ID4gICAgICAgICAgeyJkYXRhIiwgMCwgMCwgJ2QnfSwK PiA+ICAgICAgICAgIHsiY29kZSIsIDAsIDAsICdjJ30sCj4gPiArICAgICAgICB7ImxldmVsIiwg MSwgMCwgJ2wnfSwKPiA+ICAgICAgICAgIENPTU1PTl9MT05HX09QVFMKPiA+ICAgICAgfTsKPiA+ ICAKPiA+ICAgICAgbGlieGxfc29ja2V0X2JpdG1hcF9hbGxvYyhjdHgsICZ0YXJnZXRfbWFwLCAw KTsKPiA+ICAgICAgbGlieGxfYml0bWFwX3NldF9ub25lKCZ0YXJnZXRfbWFwKTsKPiA+ICAKPiA+ IC0gICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgInM6Y2QiLCBvcHRzLCAicHNyLWNhdC1jYm0t c2V0IiwgMikgewo+ID4gKyAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiczpsOmNkIiwgb3B0 cywgInBzci1jYXQtY2JtLXNldCIsIDIpIHsKPiA+ICAgICAgY2FzZSAncyc6Cj4gPiAgICAgICAg ICB0cmltKGlzc3BhY2UsIG9wdGFyZywgJnZhbHVlKTsKPiA+ICAgICAgICAgIHNwbGl0X3N0cmlu Z19pbnRvX3N0cmluZ19saXN0KHZhbHVlLCAiLCIsICZzb2NrZXRfbGlzdCk7Cj4gPiBAQCAtOTQ1 NSwxNyArOTU1MiwzMSBAQCBpbnQgbWFpbl9wc3JfY2F0X2NibV9zZXQoaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQo+ID4gICAgICBjYXNlICdjJzoKPiA+ICAgICAgICAgIG9wdF9jb2RlID0gMTsKPiA+ ICAgICAgICAgIGJyZWFrOwo+ID4gKyAgICBjYXNlICdsJzoKPiA+ICsgICAgICAgIGx2bCA9IGF0 b2kob3B0YXJnKTsKPiA+ICsgICAgICAgIGJyZWFrOwo+ID4gICAgICB9Cj4gPiAgCj4gPiAtICAg IGlmIChvcHRfZGF0YSAmJiBvcHRfY29kZSkgewo+ID4gLSAgICAgICAgZnByaW50ZihzdGRlcnIs ICJDYW5ub3QgaGFuZGxlIC1jIGFuZCAtZCBhdCB0aGUgc2FtZSB0aW1lXG4iKTsKPiA+IC0gICAg ICAgIHJldHVybiAtMTsKPiA+IC0gICAgfSBlbHNlIGlmIChvcHRfZGF0YSkgewo+ID4gLSAgICAg ICAgdHlwZSA9IExJQlhMX1BTUl9DQk1fVFlQRV9MM19DQk1fREFUQTsKPiA+IC0gICAgfSBlbHNl IGlmIChvcHRfY29kZSkgewo+ID4gLSAgICAgICAgdHlwZSA9IExJQlhMX1BTUl9DQk1fVFlQRV9M M19DQk1fQ09ERTsKPiA+ICsgICAgaWYgKGx2bCA9PSAyKSB7Cj4gPiArICAgICAgICBpZiAob3B0 X2RhdGEgfHwgb3B0X2NvZGUpIHsKPiA+ICsgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkwy IENBVCBkb2VzIG5vdCBzdXBwb3J0IENEUCB5ZXQuXG4iKTsKPiA+ICsgICAgICAgICAgICByZXR1 cm4gLTE7Cj4gCj4gRVJST1JfRkFJTD8KPiAKU2hvdWxkIGJlIGdvb2QuIFRoYW5rcyEKCj4gPiAr ICAgICAgICB9Cj4gPiArICAgICAgICB0eXBlID0gTElCWExfUFNSX0NCTV9UWVBFX0wyX0NCTTsK PiA+ICsgICAgfSBlbHNlIGlmIChsdmwgPT0gMykgewo+ID4gKyAgICAgICAgaWYgKG9wdF9kYXRh ICYmIG9wdF9jb2RlKSB7Cj4gPiArICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW5ub3Qg aGFuZGxlIC1jIGFuZCAtZCBhdCB0aGUgc2FtZSB0aW1lXG4iKTsKPiA+ICsgICAgICAgICAgICBy ZXR1cm4gLTE7Cj4gPiArICAgICAgICB9IGVsc2UgaWYgKG9wdF9kYXRhKSB7Cj4gPiArICAgICAg ICAgICAgdHlwZSA9IExJQlhMX1BTUl9DQk1fVFlQRV9MM19DQk1fREFUQTsKPiA+ICsgICAgICAg IH0gZWxzZSBpZiAob3B0X2NvZGUpIHsKPiA+ICsgICAgICAgICAgICB0eXBlID0gTElCWExfUFNS X0NCTV9UWVBFX0wzX0NCTV9DT0RFOwo+ID4gKyAgICAgICAgfSBlbHNlIHsKPiA+ICsgICAgICAg ICAgICB0eXBlID0gTElCWExfUFNSX0NCTV9UWVBFX0wzX0NCTTsKPiA+ICsgICAgICAgIH0KPiA+ ICAgICAgfSBlbHNlIHsKPiA+IC0gICAgICAgIHR5cGUgPSBMSUJYTF9QU1JfQ0JNX1RZUEVfTDNf Q0JNOwo+ID4gKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIGNhY2hlIGxldmVsLlxu Iik7Cj4gPiArICAgICAgICByZXR1cm4gLTE7Cj4gCj4gRVJST1JfRkFJTD8KClRoYW5rcyEKCj4g PiAgICAgIH0KPiA+ICAKPiA+ICAgICAgaWYgKGxpYnhsX2JpdG1hcF9pc19lbXB0eSgmdGFyZ2V0 X21hcCkpCj4gPiBAQCAtOTQ4NywxMSArOTU5OCwyMCBAQCBpbnQgbWFpbl9wc3JfY2F0X2NibV9z ZXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQo+ID4gIAo+ID4gIGludCBtYWluX3Bzcl9jYXRfc2hv dyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gPiAgewo+ID4gLSAgICBpbnQgb3B0Owo+ID4gKyAg ICBpbnQgb3B0ID0gMDsKPiA+ICAgICAgdWludDMyX3QgZG9taWQ7Cj4gPiArICAgIGludCBsdmwg PSAzOwo+IAo+IHVuc2lnbmVkIGludD8KClRoYW5rcyEKCj4gPiArICAgIGludCByYzsKPiA+ICAK PiA+IC0gICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJwc3ItY2F0LXNob3ci LCAwKSB7Cj4gPiAtICAgICAgICAvKiBObyBvcHRpb25zICovCj4gPiArICAgIHN0YXRpYyBzdHJ1 Y3Qgb3B0aW9uIG9wdHNbXSA9IHsKPiA+ICsgICAgICAgIHsibGV2ZWwiLCAxLCAwLCAnbCd9LAo+ ID4gKyAgICAgICAgQ09NTU9OX0xPTkdfT1BUUwo+ID4gKyAgICB9Owo+ID4gKwo+ID4gKyAgICBT V0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAibDoiLCBvcHRzLCAicHNyLWNhdC1zaG93IiwgMSkgewo+ ID4gKyAgICBjYXNlICdsJzoKPiA+ICsgICAgICAgIGx2bCA9IGF0b2kob3B0YXJnKTsKPiA+ICsg ICAgICAgIGJyZWFrOwo+ID4gICAgICB9Cj4gPiAgCj4gPiAgICAgIGlmIChvcHRpbmQgPj0gYXJn YykKPiA+IEBAIC05NTAzLDcgKzk2MjMsMTIgQEAgaW50IG1haW5fcHNyX2NhdF9zaG93KGludCBh cmdjLCBjaGFyICoqYXJndikKPiA+ICAgICAgICAgIHJldHVybiAyOwo+ID4gICAgICB9Cj4gPiAg Cj4gPiAtICAgIHJldHVybiBwc3JfY2F0X3Nob3coZG9taWQpOwo+ID4gKyAgICBpZiAoMyA9PSBs dmwpCj4gPiArICAgICAgICByYyA9IHBzcl9jYXRfc2hvdyhkb21pZCk7Cj4gPiArICAgIGVsc2Ug aWYgKDIgPT0gbHZsKQo+IAo+IENvdWxkIHlvdSBzd2FwIHRoYXQgYXJvdW5kPyBsdmwgPT0gMiBv ciBzdWNoPwo+IApUaGF0IGlzIGEgY29kaW5nIGhhYml0LiBUbyBwdXQgdmFsdWUgYmVmb3JlIHZh cmlhYmxlIGNhbiBoZWxwIHRvIGZpbmQgY29kZQplcnJvciBieSBjb21waWxhdGlvbiwgbGlrZSAn MiA9IGx2bCcsIGEgJz0nIGlzIG1pc3NlZC4KCklmIHRoaXMgaXMgbm90IHRoZSBzdHlsZSBvZiBY ZW4sIEkgY2FuIGNoYW5nZSBpdC4gVGhhbmtzIQoKPiA+ICsgICAgICAgIHJjID0gcHNyX2wyX2Nh dF9zaG93KGRvbWlkKTsKPiA+ICsKPiA+ICsgICAgcmV0dXJuIHJjOwo+ID4gIH0KPiA+ICAKPiA+ ICBpbnQgbWFpbl9wc3JfaHdpbmZvKGludCBhcmdjLCBjaGFyICoqYXJndikKPiA+IEBAIC05NTI5 LDcgKzk2NTQsMTEgQEAgaW50IG1haW5fcHNyX2h3aW5mbyhpbnQgYXJnYywgY2hhciAqKmFyZ3Yp Cj4gPiAgICAgICAgICByZXQgPSBwc3JfY210X2h3aW5mbygpOwo+ID4gIAo+ID4gICAgICBpZiAo IXJldCAmJiAoYWxsIHx8IGNhdCkpCj4gPiAtICAgICAgICByZXQgPSBwc3JfY2F0X2h3aW5mbygp Owo+ID4gKyAgICAgICAgcmV0ID0gcHNyX2wzX2NhdF9od2luZm8oKTsKPiA+ICsKPiA+ICsgICAg LyogTDIgQ0FUIGlzIGluZGVwZW5kZW50IHdpdGggQ01UIGFuZCBMMyBDQVQgKi8KPiAKPiBzL3dp dGgvb2ZmLz8KClRoYW5rIHlvdSEKCj4gPiArICAgIGlmIChhbGwgfHwgY2F0KQo+ID4gKyAgICAg ICAgcmV0ID0gcHNyX2wyX2NhdF9od2luZm8oKTsKPiA+ICAKPiA+ICAgICAgcmV0dXJuIHJldDsK PiA+ICB9Cj4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwveGxfY21kdGFibGUuYyBiL3Rvb2xz L2xpYnhsL3hsX2NtZHRhYmxlLmMKPiA+IGluZGV4IDg1YzFlMGYuLmJiM2NlNjkgMTAwNjQ0Cj4g PiAtLS0gYS90b29scy9saWJ4bC94bF9jbWR0YWJsZS5jCj4gPiArKysgYi90b29scy9saWJ4bC94 bF9jbWR0YWJsZS5jCj4gPiBAQCAtNTQ5LDEzICs1NDksMTUgQEAgc3RydWN0IGNtZF9zcGVjIGNt ZF90YWJsZVtdID0gewo+ID4gICAgICAgICJTZXQgY2FjaGUgY2FwYWNpdHkgYml0bWFza3MoQ0JN KSBmb3IgYSBkb21haW4iLAo+ID4gICAgICAgICJbb3B0aW9uc10gPERvbWFpbj4gPENCTT4iLAo+ ID4gICAgICAgICItcyA8c29ja2V0PiAgICAgICBTcGVjaWZ5IHRoZSBzb2NrZXQgdG8gcHJvY2Vz cywgb3RoZXJ3aXNlIGFsbCBzb2NrZXRzIGFyZSBwcm9jZXNzZWRcbiIKPiA+ICsgICAgICAiLWwg PGxldmVsPiAgICAgICAgU3BlY2lmeSB0aGUgY2FjaGUgbGV2ZWwgdG8gcHJvY2Vzcywgb3RoZXJ3 aXNlIEwzIGNhY2hlIGlzIHByb2Nlc3NlZFxuIgo+ID4gICAgICAgICItYyAgICAgICAgICAgICAg ICBTZXQgY29kZSBDQk0gaWYgQ0RQIGlzIHN1cHBvcnRlZFxuIgo+ID4gICAgICAgICItZCAgICAg ICAgICAgICAgICBTZXQgZGF0YSBDQk0gaWYgQ0RQIGlzIHN1cHBvcnRlZFxuIgo+ID4gICAgICB9 LAo+ID4gICAgICB7ICJwc3ItY2F0LXNob3ciLAo+ID4gICAgICAgICZtYWluX3Bzcl9jYXRfc2hv dywgMCwgMSwKPiA+ICAgICAgICAiU2hvdyBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgaW5m b3JtYXRpb24iLAo+ID4gLSAgICAgICI8RG9tYWluPiIsCj4gPiArICAgICAgIltvcHRpb25zXSA8 RG9tYWluPiIsCj4gPiArICAgICAgIi1sIDxsZXZlbD4gICAgICAgIFNwZWNpZnkgdGhlIGNhY2hl IGxldmVsIHRvIHByb2Nlc3MsIG90aGVyd2lzZSBMMyBjYWNoZSBpcyBwcm9jZXNzZWRcbiIKPiA+ ICAgICAgfSwKPiA+ICAKPiA+ICAjZW5kaWYKPiA+IC0tIAo+ID4gMS45LjEKPiA+IAo+ID4gCj4g PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gWGVu LWRldmVsIG1haWxpbmcgbGlzdAo+ID4gWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiA+IGh0dHBz Oi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=