From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v6 01/24] docs: create Cache Allocation Technology (CAT) and Code and Data Prioritization (CDP) feature document Date: Wed, 8 Feb 2017 10:56:55 -0500 Message-ID: <20170208155649.GA30224@localhost.localdomain> References: <1486541776-8406-1-git-send-email-yi.y.sun@linux.intel.com> <1486541776-8406-2-git-send-email-yi.y.sun@linux.intel.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 1cbUfp-0001Wf-Qt for xen-devel@lists.xenproject.org; Wed, 08 Feb 2017 16:00:50 +0000 Content-Disposition: inline In-Reply-To: <1486541776-8406-2-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Yi Sun Cc: kevin.tian@intel.com, wei.liu2@citrix.com, he.chen@linux.intel.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBGZWIgMDgsIDIwMTcgYXQgMDQ6MTU6NTNQTSArMDgwMCwgWWkgU3VuIHdyb3RlOgo+ IFRoaXMgcGF0Y2ggY3JlYXRlcyBDQVQgYW5kIENEUCBmZWF0dXJlIGRvY3VtZW50IGluIGRvYy9m ZWF0dXJlcy8uIEl0IGRlc2NyaWJlcwo+IGtleSBwb2ludHMgdG8gaW1wbGVtZW50IEwzIENBVC9D RFAgYW5kIEwyIENBVCB3aGljaCBpcyBkZXNjcmliZWQgaW4gZGV0YWlscyBpbgo+IEludGVsIFNE TSAiSU5URUzCriBSRVNPVVJDRSBESVJFQ1RPUiBURUNITk9MT0dZIChJTlRFTMKuIFJEVCkgQUxM T0NBVElPTiBGRUFUVVJFUyIuCj4gCj4gU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBs aW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gdjY6Cj4gICAgIC0gd3JpdGUgYSBuZXcgZmVhdHVyZSBk b2N1bWVudCB0byBjb3ZlciBMMyBDQVQvQ0RQIGFuZCBMMiBDQVQuCj4gICAgIC0gYWRqdXN0ICdU ZXJtaW5vbG9neScgcG9zaXRpb24gaW4gZG9jdW1lbnQuCj4gICAgIC0gZml4IHdvcmRpbmdzLgo+ ICAgICAtIGFkZCBTRE0gY2hhcHRlciB0aXRsZSBpbiBjb21taXQgbWVzc2FnZS4KPiAgICAgLSBh ZGQgbW9yZSBleHBsYW5hdGlvbnMuCj4gLS0tCj4gIGRvY3MvZmVhdHVyZXMvaW50ZWxfcHNyX2Nh dF9jZHAucGFuZG9jIHwgNDUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAx IGZpbGUgY2hhbmdlZCwgNDUzIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRv Y3MvZmVhdHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jCj4gCj4gZGlmZiAtLWdpdCBhL2Rv Y3MvZmVhdHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jIGIvZG9jcy9mZWF0dXJlcy9pbnRl bF9wc3JfY2F0X2NkcC5wYW5kb2MKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAuLmViY2UyYmQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZG9jcy9mZWF0dXJlcy9pbnRlbF9w c3JfY2F0X2NkcC5wYW5kb2MKPiBAQCAtMCwwICsxLDQ1MyBAQAo+ICslIEludGVsIENhY2hlIEFs bG9jYXRpb24gVGVjaG5vbG9neSBhbmQgQ29kZSBhbmQgRGF0YSBQcmlvcml0aXphdGlvbiBGZWF0 dXJlcwo+ICslIFJldmlzaW9uIDEuMAo+ICsKPiArXGNsZWFycGFnZQo+ICsKPiArIyBCYXNpY3MK PiArCj4gKy0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsgICAgICAgICBTdGF0dXM6ICoqVGVjaCBQcmV2aWV3KioK PiArCj4gK0FyY2hpdGVjdHVyZShzKTogSW50ZWwgeDg2Cj4gKwo+ICsgICBDb21wb25lbnQocyk6 IEh5cGVydmlzb3IsIHRvb2xzdGFjawo+ICsKPiArICAgICAgIEhhcmR3YXJlOiBMMyBDQVQ6IEhh c3dlbGwgYW5kIGJleW9uZCBDUFVzCj4gKyAgICAgICAgICAgICAgICAgQ0RQICAgOiBCcm9hZHdl bGwgYW5kIGJleW9uZCBDUFVzCj4gKyAgICAgICAgICAgICAgICAgTDIgQ0FUOiBBdG9tIGNvZGVu YW1lIEdvbGRtb250IGFuZCBiZXlvbmQgQ1BVcwo+ICstLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArCj4gKyMgVGVy bWlub2xvZ3kKPiArCj4gKyogQ0FUICAgICAgICAgQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5 Cj4gKyogQ0JNICAgICAgICAgQ2FwYWNpdHkgQml0TWFza3MKPiArKiBDRFAgICAgICAgICBDb2Rl IGFuZCBEYXRhIFByaW9yaXRpemF0aW9uCj4gKyogQ09TL0NMT1MgICAgQ2xhc3Mgb2YgU2Vydmlj ZQo+ICsqIE1TUnMgICAgICAgIE1hY2hpbmUgU3BlY2lmaWMgUmVnaXN0ZXJzCj4gKyogUFNSICAg ICAgICAgSW50ZWwgUGxhdGZvcm0gU2hhcmVkIFJlc291cmNlCj4gKwo+ICsjIE92ZXJ2aWV3Cj4g Kwo+ICtJbnRlbCBwcm92aWRlcyBhIHNldCBvZiBhbGxvY2F0aW9uIGNhcGFiaWxpdGllcyBpbmNs dWRpbmcgQ2FjaGUgQWxsb2NhdGF0aW9uCj4gK1RlY2hub2xvZ3kgKENBVCkgYW5kIENvZGUgYW5k IERhdGEgUHJpb3JpdGl6YXRpb24gKENEUCkuCj4gKwo+ICtDQVQgYWxsb3dzIGFuIE9TIG9yIGh5 cGVydmlzb3IgdG8gY29udHJvbCBhbGxvY2F0aW9uIG9mIGEgQ1BVJ3Mgc2hhcmVkIGNhY2hlCj4g K2Jhc2VkIG9uIGFwcGxpY2F0aW9uIHByaW9yaXR5IG9yIENsYXNzIG9mIFNlcnZpY2UgKENPUyku IEVhY2ggQ09TIGlzIGNvbmZpZ3VyZWQKPiArdXNpbmcgY2FwYWNpdHkgYml0bWFza3MgKENCTXMp IHdoaWNoIHJlcHJlc2VudCBjYWNoZSBjYXBhY2l0eSBhbmQgaW5kaWNhdGUgdGhlCj4gK2RlZ3Jl ZSBvZiBvdmVybGFwIGFuZCBpc29sYXRpb24gYmV0d2VlbiBjbGFzc2VzLiBPbmNlIENBVCBpcyBj b25maWd1cmVkLCB0aGUgcHItCj4gK29jZXNzb3IgYWxsb3dzIGFjY2VzcyB0byBwb3J0aW9ucyBv ZiBjYWNoZSBhY2NvcmRpbmcgdG8gdGhlIGVzdGFibGlzaGVkIENPUy4KPiArSW50ZWwgWGVvbiBw cm9jZXNzb3IgRTUgdjQgZmFtaWx5IChhbmQgc29tZSBvdGhlcnMpIGludHJvZHVjZSBjYXBhYmls aXRpZXMgdG8KPiArY29uZmlndXJlIGFuZCBtYWtlIHVzZSBvZiB0aGUgQ0FUIG1lY2hhbmlzbSBv biB0aGUgTDMgY2FjaGUuIEludGVsIEdvbGRtb250IHByby0KPiArY2Vzc29yIHByb3ZpZGVzIHN1 cHBvcnQgZm9yIGNvbnRyb2wgb3ZlciB0aGUgTDIgY2FjaGUuCj4gKwo+ICtDb2RlIGFuZCBEYXRh IFByaW9yaXRpemF0aW9uIChDRFApIFRlY2hub2xvZ3kgaXMgYW4gZXh0ZW5zaW9uIG9mIENBVC4g Q0RQCj4gK2VuYWJsZXMgaXNvbG9hdGlvbiBhbmQgc2VwYXJhdGUgcHJpb3JpdGl6YXRpb24gb2Yg Y29kZSBhbmQgZGF0YSBmZXRjaGVzIHRvCiAgICAgICAgICAgXl5eXl5eXl5eXgppc29sYXRpb24K Cj4gK3RoZSBMMyBjYWhjZSBpbiBhIFNXIGNvbmZpZ3VyYWJsZSBtYW5uZXIsIHdoaWNoIGNhbiBl bmFibGUgd29ya2xvYWQgcHJpb3JpdC0KICAgICAgICAgIF5eXl5eCmNhY2hlCj4gK2l6YXRpb24g YW5kIHR1bmluZyBvZiBjYWNoZSBjYXBhY2l0eSB0byB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRo ZSB3b3JrbG9hZC4KPiArQ0RQIGV4dGVuZHMgQ0FUIGJ5IHByb3ZpZGluZyBzZXBhcmF0ZSBjb2Rl IGFuZCBkYXRhIG1hc2tzIHBlciBDbGFzcyBvZiBTZXJ2aWNlCj4gKyhDT1MpLiBXaGVuIFNXIGNv bmZpZ3VyZXMgdG8gZW5hYmxlIENEUCwgTDMgQ0FUIGlzIGRpc2FibGVkLgo+ICsKPiArIyBVc2Vy IGRldGFpbHMKPiArCj4gKyogRmVhdHVyZSBFbmFibGluZzoKPiArCj4gKyAgQWRkICJwc3I9Y2F0 IiB0byBib290IGxpbmUgcGFyYW1ldGVyIHRvIGVuYWJsZSBhbGwgc3VwcG9ydGVkIGxldmVsIENB VCBmZWF0dS0KPiArICByZXMuIEFkZCAicHNyPWNkcCIgdG8gZW5hYmxlIEwzIENEUCBidXQgZGlz YWJsZXMgTDMgQ0FUIGJ5IFNXLgo+ICsKPiArKiB4bCBpbnRlcmZhY2VzOgo+ICsKPiArICAxLiBg cHNyLWNhdC1zaG93IFtPUFRJT05TXSBkb21haW4taWRgOgo+ICsKPiArICAgICBTaG93IEwyIENB VCBvciBMMyBDQVQvQ0RQIENCTSBvZiB0aGUgZG9tYWluIGRlc2lnbmF0ZWQgYnkgWGVuIGRvbWFp bi1pZC4KPiArCj4gKyAgICAgT3B0aW9uIGAtbGA6Cj4gKyAgICAgYC1sMmA6IFNob3cgY2JtIGZv ciBMMiBjYWNoZS4KPiArICAgICBgLWwzYDogU2hvdyBjYm0gZm9yIEwzIGNhY2hlLgo+ICsKPiAr ICAgICBJZiBgLWxYYCBpcyBzcGVjaWZpZWQgYW5kIExYIGlzIG5vdCBzdXBwb3J0ZWQsIHByaW50 IGVycm9yLgo+ICsgICAgIElmIG5vIGAtbGAgaXMgc3BlY2lmaWVkLCBsZXZlbCAzIGlzIHRoZSBk ZWZhdWx0IG9wdGlvbi4KPiArCj4gKyAgMi4gYHBzci1jYXQtc2V0IFtPUFRJT05TXSBkb21haW4t aWQgY2JtYDoKPiArCj4gKyAgICAgU2V0IEwyIENBVCBvciBMMyBDQVQvQ0RQIENCTSB0byB0aGUg ZG9tYWluIGRlc2lnbmF0ZWQgYnkgWGVuIGRvbWFpbi1pZC4KPiArCj4gKyAgICAgT3B0aW9uIGAt c2A6IFNwZWNpZnkgdGhlIHNvY2tldCB0byBwcm9jZXNzLCBvdGhlcndpc2UgYWxsIHNvY2tldHMg YXJlCj4gKyAgICAgcHJvY2Vzc2VkLgo+ICsKPiArICAgICBPcHRpb24gYC1sYDoKPiArICAgICBg LWwyYDogU3BlY2lmeSBjYm0gZm9yIEwyIGNhY2hlLgo+ICsgICAgIGAtbDNgOiBTcGVjaWZ5IGNi bSBmb3IgTDMgY2FjaGUuCj4gKwo+ICsgICAgIElmIGAtbFhgIGlzIHNwZWNpZmllZCBhbmQgTFgg aXMgbm90IHN1cHBvcnRlZCwgcHJpbnQgZXJyb3IuCj4gKyAgICAgSWYgbm8gYC1sYCBpcyBzcGVj aWZpZWQsIGxldmVsIDMgaXMgdGhlIGRlZmF1bHQgb3B0aW9uLgo+ICsKPiArICAgICBPcHRpb24g YC1jYCBvciBgLWRgOgo+ICsgICAgIGAtY2A6IFNldCBMMyBDRFAgY29kZSBjYm0uCj4gKyAgICAg YC1kYDogU2V0IEwzIENEUCBkYXRhIGNibS4KPiArCj4gKyAgMy4gYHBzci1od2luZm8gW09QVElP TlNdYDoKPiArCj4gKyAgICAgU2hvdyBDTVQgJiBMMiBDQVQgJiBMMyBDQVQvQ0RQIEhXIGluZm9y bWF0aW9uIG9uIGV2ZXJ5IHNvY2tldC4KPiArCj4gKyAgICAgT3B0aW9uIGAtbSwgLS1jbXRgOiBT aG93IENhY2hlIE1vbml0b3JpbmcgVGVjaG5vbG9neSAoQ01UKSBoYXJkd2FyZSBpbmZvLgo+ICsK PiArICAgICBPcHRpb24gYC1hLCAtLWNhdGA6IFNob3cgQ0FUL0NEUCBoYXJkd2FyZSBpbmZvLgo+ ICsKPiArIyBUZWNobmljYWwgZGV0YWlscwo+ICsKPiArTDMgQ0FUL0NEUCBhbmQgTDIgQ0FUIGFy ZSBhbGwgbWVtYmVycyBvZiBJbnRlbCBQU1IgZmVhdHVyZXMsIHRoZXkgc2hhcmUgdGhlIGJhc2UK PiArUFNSIGluZnJhc3RydWN0dXJlIGluIFhlbi4KPiArCj4gKyMjIEhhcmR3YXJlIHBlcnNwZWN0 aXZlCj4gKwo+ICsgIENBVC9DRFAgZGVmaW5lcyBhIHJhbmdlIG9mIE1TUnMgdG8gYXNzaWduIGRp ZmZlcmVudCBjYWNoZSBhY2Nlc3MgcGF0dGVybnMKPiArICB3aGljaCBhcmUga25vd24gYXMgQ0JN cywgZWFjaCBDQk0gaXMgYXNzb2NpYXRlZCB3aXRoIGEgQ09TLgo+ICsKPiArICBgYGAKPiArICBF LmcuIEwyIENBVDoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgICAgIElBMzJfUFFSX0FTU09DICAg ICAgIHwgTVNSIChwZXIgc29ja2V0KSAgICAgICAgICAgfCAgICBBZGRyZXNzICAgICB8Cj4gKyAg ICstLS0tKy0tLSstLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKPiArICAgfCAgICB8Q09TfCAgICAgICB8ICAgICB8IElBMzJfTDJfUU9T X01BU0tfMCAgICAgICAgIHwgICAgIDB4RDEwICAgICAgfAo+ICsgICArLS0tLSstLS0rLS0tLS0t LSsgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4g KyAgICAgICAgICDilJQtLS0tLS0tLS0tLS0tPiB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAg IHwgIC4uLiAgICAgICAgICAgfAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBJQTMyX0wyX1FPU19NQVNLX24gICAgICAgICB8IDB4RDEwK24gKG48NjQp IHwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgIGBgYAo+ICsKPiArICBMMyBDQVQvQ0RQIHVzZXMg YSByYW5nZSBvZiBNU1JzIGZyb20gMHhDOTAgfiAweEM5MCtuIChuPDEyOCkuCj4gKwo+ICsgIEwy IENBVCB1c2VzIGEgcmFuZ2Ugb2YgTVNScyBmcm9tIDB4RDEwIH4gMHhEMTArbiAobjw2NCksIGZv bGxvd2luZyB0aGUgTDMKPiArICBDQVQvQ0RQIE1TUnMsIHNldHRpbmcgZGlmZmVyZW50IEwyIGNh Y2hlIGFjY2Vzc2luZyBwYXR0ZXJucyBmcm9tIEwzIGNhY2hlIGlzCj4gKyAgc3VwcG9ydGVkLgo+ ICsKPiArICBFdmVyeSBNU1Igc3RvcmVzIGEgQ0JNIHZhbHVlLiBBIGNhcGFjaXR5IGJpdG1hc2sg KENCTSkgcHJvdmlkZXMgYSBoaW50IHRvIHRoZQo+ICsgIGhhcmR3YXJlIGluZGljYXRpbmcgdGhl IGNhY2hlIHNwYWNlIGFuIGFwcGxpY2F0aW9uIHNob3VsZCBiZSBsaW1pdGVkIHRvIGFzCgpzL2Fw cGxpY2F0aW9uL1ZNLyA/Cgo+ICsgIHdlbGwgYXMgcHJvdmlkaW5nIGFuIGluZGljYXRpb24gb2Yg b3ZlcmxhcCBhbmQgaXNvbGF0aW9uIGluIHRoZSBDQVQtY2FwYWJsZQo+ICsgIGNhY2hlIGZyb20g b3RoZXIgYXBwbGljYXRpb25zIGNvbnRlbmRpbmcgZm9yIHRoZSBjYWNoZS4KCnMvYXBwbGljYXRp b24vVk0vID8KClBlcmhhcHMgJ2RvbWFpbicgYXMgeW91IHVzZSB0aGF0IGxhdGVyIGluIHRoZSBk b2N1bWVudD8KCgo+ICsKPiArICBTYW1wbGUgY2FjaGUgY2FwYWNpdHkgYml0bWFza3MgZm9yIGEg Yml0bGVuZ3RoIG9mIDggYXJlIHNob3duIGJlbG93LiBQbGVhc2UKPiArICBub3RlIHRoYXQgYWxs IChhbmQgb25seSkgY29udGlndW91cyAnMScgY29tYmluYXRpb25zIGFyZSBhbGxvd2VkIChlLmcu IEZGRkZILAo+ICsgIDBGRjBILCAwMDNDSCwgZXRjLikuCj4gKwo+ICsgIGBgYAo+ICsgICAgICAg Ky0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKPiArICAgICAgIHwgTTcg fCBNNiB8IE01IHwgTTQgfCBNMyB8IE0yIHwgTTEgfCBNMCB8Cj4gKyAgICAgICArLS0tLSstLS0t Ky0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKwo+ICsgIENPUzAgfCBBICB8IEEgIHwgQSAg fCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgRGVmYXVsdCBCaXRtYXNrCj4gKyAgICAgICArLS0t LSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKwo+ICsgIENPUzEgfCBBICB8IEEg IHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwKPiArICAgICAgICstLS0tKy0tLS0rLS0t LSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCj4gKyAgQ09TMiB8IEEgIHwgQSAgfCBBICB8IEEg IHwgQSAgfCBBICB8IEEgIHwgQSAgfAo+ICsgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0t LSstLS0tKy0tLS0rLS0tLSsKPiArCj4gKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0t Ky0tLS0rLS0tLSstLS0tKwo+ICsgICAgICAgfCBNNyB8IE02IHwgTTUgfCBNNCB8IE0zIHwgTTIg fCBNMSB8IE0wIHwKPiArICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0t Ky0tLS0rCj4gKyAgQ09TMCB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAg fCBPdmVybGFwcGVkIEJpdG1hc2sKPiArICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r LS0tLSstLS0tKy0tLS0rCj4gKyAgQ09TMSB8ICAgIHwgICAgfCAgICB8ICAgIHwgQSAgfCBBICB8 IEEgIHwgQSAgfAo+ICsgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r LS0tLSsKPiArICBDT1MyIHwgICAgfCAgICB8ICAgIHwgICAgfCAgICB8ICAgIHwgQSAgfCBBICB8 Cj4gKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKwo+ICsK PiArICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCj4gKyAg ICAgICB8IE03IHwgTTYgfCBNNSB8IE00IHwgTTMgfCBNMiB8IE0xIHwgTTAgfAo+ICsgICAgICAg Ky0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKPiArICBDT1MwIHwgQSAg fCBBICB8IEEgIHwgQSAgfCAgICB8ICAgIHwgICAgfCAgICB8IElzb2xhdGVkIEJpdG1hc2sKPiAr ICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCj4gKyAgQ09T MSB8ICAgIHwgICAgfCAgICB8ICAgIHwgQSAgfCBBICB8ICAgIHwgICAgfAo+ICsgICAgICAgKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKPiArICBDT1MyIHwgICAgfCAg ICB8ICAgIHwgICAgfCAgICB8ICAgIHwgQSAgfCBBICB8Cj4gKyAgICAgICArLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKwo+ICsgIGBgYAo+ICsKPiArICBXZSBjYW4gZ2V0 IHRoZSBDQk0gbGVuZ3RoIHRocm91Z2ggQ1BVSUQuIFRoZSBkZWZhdWx0IHZhbHVlIG9mIENCTSBp cyBjYWxjdWwtCj4gKyAgYXRlZCBieSBgKDF1bGwgPDwgY2JtX2xlbikgLSAxYC4gVGhhdCBpcyBh IGZ1bGx5IG9wZW4gYml0bWFzaywgYWxsIG9uZXMgYml0bS0KPiArICBhc2suIFRoZSBDT1NbMF0g YWx3YXlzIHN0b3JlcyB0aGUgZGVmYXVsdCB2YWx1ZSB3aXRob3V0IGNoYW5nZS4KPiArCj4gKyAg VGhlcmUgaXMgYSBgSUEzMl9QUVJfQVNTT0NgIHJlZ2lzdGVyIHdoaWNoIHN0b3JlcyB0aGUgQ09T IElEIG9mIHRoZSBWQ1BVLiBIVwo+ICsgIGVuZm9yY2VzIGNhY2hlIGFsbG9jYXRpb24gYWNjb3Jk aW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIENCTS4KPiArCj4gKyMjIFRoZSByZWxhdGlvbnNoaXAg YmV0d2VlbiBMMyBDQVQvQ0RQIGFuZCBMMiBDQVQKPiArCj4gKyAgSFcgbWF5IHN1cHBvcnQgYWxs IGZlYXR1cmVzLiBCeSBkZWZhdWx0LCBDRFAgaXMgZGlzYWJsZWQgb24gdGhlIHByb2Nlc3Nvci4K PiArICBJZiB0aGUgTDMgQ0FUIE1TUnMgYXJlIHVzZWQgd2l0aG91dCBlbmFibGluZyBDRFAsIHRo ZSBwcm9jZXNzb3Igb3BlcmF0ZXMgaW4KPiArICBhIHRyYWRpdGlvbmFsIENBVC1vbmx5IG1vZGUu IFdoZW4gQ0RQIGlzIGVuYWJsZWQsCgpzLywvOi8KPiArICAqIHRoZSBDQVQgbWFzayBNU1JzIGFy ZSByZS1tYXBwZWQgaW50byBpbnRlcmxlYXZlZCBwYWlycyBvZiBtYXNrIE1TUnMgZm9yCj4gKyAg ICBkYXRhIG9yIGNvZGUgZmV0Y2hlcy4KPiArICAqIHRoZSByYW5nZSBvZiBDT1MgZm9yIENBVCBp cyByZS1pbmRleGVkLCB3aXRoIHRoZSBsb3dlci1oYWxmIG9mIHRoZSBDT1MKPiArICAgIHJhbmdl IGF2YWlsYWJsZSBmb3IgQ0RQLgo+ICsKPiArICBMMiBDQVQgaXMgaW5kZXBlbmRlbnQgb2YgTDMg Q0FUL0NEUCwgd2hpY2ggbWVhbnMgTDIgQ0FUIGNhbiBiZSBlbmFibGVkIHdoaWxlCj4gKyAgTDMg Q0FUL0NEUCBpcyBkaXNhYmxlZCwgb3IgTDIgQ0FUIGFuZCBMMyBDQVQvQ0RQIGFyZSBib3RoIGVu YWJsZWQuCj4gKwo+ICsgIEFzIGEgcmVxdWlyZW1lbnQsIHRoZSBiaXRzIG9mIENCTSBvZiBDQVQv Q0RQIG11c3QgYmUgY29udGludW91cy4KPiArCj4gKyAgTi5CLiBMMiBDQVQgYW5kIEwzIENBVC9D RFAgc2hhcmUgdGhlIHNhbWUgQ09TIGZpZWxkIGluIHRoZSBzYW1lIGFzc29jaWF0ZQo+ICsgIHJl Z2lzdGVyIGBJQTMyX1BRUl9BU1NPQ2AsIHdoaWNoIG1lYW5zIG9uZSBDT1MgaXMgYXNzb2NpYXRl ZCB3aXRoIGEgcGFpciBvZgo+ICsgIEwyIENBVCBDQk0gYW5kIEwzIENBVC9DRFAgQ0JNLgo+ICsK PiArICBCZXNpZGVzLCB0aGUgbWF4IENPUyBvZiBMMiBDQVQgbWF5IGJlIGRpZmZlcmVudCBmcm9t IEwzIENBVC9DRFAgKG9yIG90aGVyCj4gKyAgUFNSIGZlYXR1cmVzIGluIGZ1dHVyZSkuIEluIHNv bWUgY2FzZXMsIGEgVk0gaXMgcGVybWl0dGVkIHRvIGhhdmUgYSBDT1MKCkkgbm90aWNlZCB5b3Ug c2F5ICdkb21haW4nIGxhdGVyIG9uIGluIHRoZSBkb2N1bWVudC4gV291bGQgaXQgbWFrZQpzZW5z ZSB0byByZXBsYWNlIHMvVk0vZG9tYWluLyB0byBiZSBzYW1lIGluIHRoaXMgZGVzaWduPwoKPiAr ICB0aGF0IGlzIGJleW9uZCBvbmUgKG9yIG1vcmUpIG9mIFBTUiBmZWF0dXJlcyBidXQgd2l0aGlu IHRoZSBvdGhlcnMuIEZvcgo+ICsgIGluc3RhbmNlLCBsZXQncyBhc3N1bWUgdGhlIG1heCBDT1Mg b2YgTDIgQ0FUIGlzIDggYnV0IHRoZSBtYXggQ09TIG9mIEwzCj4gKyAgQ0FUIGlzIDE2LCB3aGVu IGEgVk0gaXMgYXNzaWduZWQgOSBhcyBDT1MsIHRoZSBMMyBDQVQgQ0JNIGFzc29jaWF0ZWQgdG8K PiArICBDT1MgOSB3b3VsZCBiZSBlbmZvcmNlZCwgYnV0IGZvciBMMiBDQVQsIHRoZSBIVyB3b3Jr cyBhcyBkZWZhdWx0IHZhbHVlIGlzCj4gKyAgc2V0IHNpbmNlIENPUyA5IGlzIGJleW9uZCB0aGUg bWF4IENPUyAoOCkgb2YgTDIgQ0FULgo+ICsKPiArIyMgRGVzaWduIE92ZXJ2aWV3Cj4gKwo+ICsq IENvcmUgQ09TL0NCTSBhc3NvY2lhdGlvbgo+ICsKPiArICBXaGVuIGVuZm9yY2luZyBDQVQvQ0RQ LCBhbGwgY29yZXMgb2YgZG9tYWlucyBoYXZlIHRoZSBzYW1lIGRlZmF1bHQgQ09TIChDT1MwKQo+ ICsgIHdoaWNoIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZnVsbHkgb3BlbiBDQk0gKGFsbCBvbmVz IGJpdG1hc2spIHRvIGFjY2VzcyBhbGwKPiArICBjYWNoZS4gVGhlIGRlZmF1bHQgQ09TIGlzIHVz ZWQgb25seSBpbiBoeXBlcnZpc29yIGFuZCBpcyB0cmFuc3BhcmVudCB0byB0b29sCj4gKyAgc3Rh Y2sgYW5kIHVzZXIuCj4gKwo+ICsgIFN5c3RlbSBhZG1pbmlzdHJhdG9yIGNhbiBjaGFuZ2UgUFNS IGFsbG9jYXRpb24gcG9saWN5IGF0IHJ1bnRpbWUgYnkgdG9vbCBzdGFjay4KPiArICBTaW5jZSBM MiBDQVQgc2hhcmVzIENPUyB3aXRoIEwzIENBVC9DRFAsIGEgQ09TIGNvcnJlc3BvbmRzIHRvIGEg Mi10dXBsZSwgbGlrZQo+ICsgIFtMMiBDQk0sIEwzIENCTV0gd2l0aCBvbmx5LUNBVCBlbmFibGVk LCB3aGVuIENEUCBpcyBlbmFibGVkLCBvbmUgQ09TIGNvcnJlc3BvLQo+ICsgIG5kcyB0byBhIDMt dHVwbGUsIGxpa2UgW0wyIENCTSwgTDMgQ29kZV9DQk0sIEwzIERhdGFfQ0JNXS4gSWYgbmVpdGhl ciBMMyBDQVQKPiArICBub3IgTDMgQ0RQIGlzIGVuYWJsZWQsIHRoaW5ncyB3b3VsZCBiZSBlYXNp ZXIsIG9uZSBDT1MgY29ycmVzcG9uZHMgdG8gb25lIEwyCj4gKyAgQ0JNLgo+ICsKPiArKiBWQ1BV IHNjaGVkdWxlCj4gKwo+ICsgIFdoZW4gY29udGV4dCBzd2l0Y2ggaGFwcGVucywgdGhlIENPUyBv ZiBWQ1BVIGlzIHdyaXR0ZW4gdG8gcGVyLXRocmVhZCBNU1IKPiArICBgSUEzMl9QUVJfQVNTT0Ng LCBhbmQgdGhlbiBoYXJkd2FyZSBlbmZvcmNlcyBjYWNoZSBhbGxvY2F0aW9uIGFjY29yZGluZyB0 bwo+ICsgIHRoZSBjb3JyZXNwb25kaW5nIENCTS4KPiArCj4gKyogTXVsdGktc29ja2V0cwo+ICsK PiArICBEaWZmZXJlbnQgc29ja2V0cyBtYXkgaGF2ZSBkaWZmZXJlbnQgQ0FUL0NEUCBjYXBhYmls aXR5IChlLmcuIG1heCBDT1MpIGFsdGgtCj4gKyAgb3VnaCBpdCBpcyBjb25zaXN0ZW50IG9uIHRo ZSBzYW1lIHNvY2tldC4gU28gdGhlIGNhcGFiaWxpdHkgb2YgcGVyLXNvY2tldCBDQVQvCj4gKyAg Q0RQIGlzIHNwZWNpZmllZC4KPiArCj4gKyAgJ3Bzci1jYXQtc2V0JyBjYW4gc2V0IENCTSBmb3Ig b25lIGRvbWFpbiBwZXIgc29ja2V0LiBPbiBlYWNoIHNvY2tldCwgd2UgbWFpbi0KPiArICB0YWlu IGEgQ09TIGFycmF5IGZvciBhbGwgZG9tYWlucy4gT25lIGRvbWFpbiB1c2VzIG9uZSBDT1MgYXQg b25lIHRpbWUuIE9uZSBDT1MKPiArICBzdG9yZXMgdGhlIENCTSBvZiB0aGUgZG9tYWluIHRvIHdv cmsuIFNvLCB3aGVuIGEgVkNQVSBvZiB0aGUgZG9tYWluIGlzIG1pZ3JhdC0KPiArICBlZCBmcm9t IHNvY2tldCAxIHRvIHNvY2tldCAyLCBpdCBmb2xsb3dzIGNvbmZpZ3VyYXRpb24gb24gc29ja2V0 IDIuCj4gKwo+ICsgIEUuZy4gdXNlciBzZXRzIGRvbWFpbiAxIENCTSBvbiBzb2NrZXQgMSB0byAw eDdmIHdoaWNoIHVzZXMgQ09TIDkgYnV0IHNldHMgZG8tCj4gKyAgbWFpbiAxIENCTSBvbiBzb2Nr ZXQgMiB0byAweDNmIHdoaWNoIHVzZXMgQ09TIDcuIFdoZW4gVkNQVSBvZiB0aGlzIGRvbWFpbgo+ ICsgIGlzIG1pZ3JhdGVkIGZyb20gc29ja2V0IDEgdG8gMiwgdGhlIENPUyBJRCB1c2VkIGlzIDcs IHRoYXQgbWVhbnMgMHgzZiBpcyB0aGUKPiArICBDQk0gdG8gd29yayBmb3IgdGhpcyBkb21haW4g MSBub3cuCj4gKwo+ICsjIyBJbXBsZW1lbnRhdGlvbiBEZXNjcmlwdGlvbgo+ICsKPiArKiBIeXBl cnZpc29yIGludGVyZmFjZXM6Cj4gKwo+ICsgIDEuIEJvb3QgbGluZSBwYXJhbWV0ZXIgInBzcj1j YXQiIGVuYWJsZXMgTDIgQ0FUIGFuZCBMMyBDQVQgaWYgaGFyZHdhcmUgc3VwcG8tCj4gKyAgICAg cnRlZC4gInBzcj1jZHAiIGVuYWJsZXMgQ0RQIGlmIGhhcmR3YXJlIHN1cHBvcnRlZC4KPiArCj4g KyAgMi4gU1lTQ1RMOgo+ICsgICAgICAgICAgLSBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wzX2lu Zm86IEdldCBMMyBDQVQvQ0RQIGluZm9ybWF0aW9uLgo+ICsgICAgICAgICAgLSBYRU5fU1lTQ1RM X1BTUl9DQVRfZ2V0X2wyX2luZm86IEdldCBMMiBDQVQgaW5mb3JtYXRpb24uCj4gKwo+ICsgIDMu IERPTUNUTDoKPiArICAgICAgICAgIC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MM19DQk06 IEdldCBMMyBDQk0gZm9yIGEgZG9tYWluLgo+ICsgICAgICAgICAgLSBYRU5fRE9NQ1RMX1BTUl9D QVRfT1BfU0VUX0wzX0NCTTogU2V0IEwzIENCTSBmb3IgYSBkb21haW4uCj4gKyAgICAgICAgICAt IFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfQ09ERTogR2V0IENEUCBDb2RlIENCTSBmb3Ig YSBkb21haW4uCj4gKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNfQ09E RTogU2V0IENEUCBDb2RlIENCTSBmb3IgYSBkb21haW4uCj4gKyAgICAgICAgICAtIFhFTl9ET01D VExfUFNSX0NBVF9PUF9HRVRfTDNfREFUQTogR2V0IENEUCBEYXRhIENCTSBmb3IgYSBkb21haW4u Cj4gKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNfREFUQTogU2V0IENE UCBEYXRhIENCTSBmb3IgYSBkb21haW4uCj4gKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NB VF9PUF9HRVRfTDJfQ0JNOiBHZXQgTDIgQ0JNIGZvciBhIGRvbWFpbi4KPiArICAgICAgICAgIC0g WEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MMl9DQk06IFNldCBMMiBDQk0gZm9yIGEgZG9tYWlu Lgo+ICsKPiArKiB4bCBpbnRlcmZhY2VzOgo+ICsKPiArICAxLiBwc3ItY2F0LXNob3cgLWxYIGRv bWFpbi1pZAo+ICsgICAgICAgICAgU2hvdyBMWCBjYm0gZm9yIGEgZG9tYWluLgo+ICsgICAgICAg ICAgPT4gWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sM19pbmZvICAgIC8KPiArICAgICAgICAgICAg IFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDJfaW5mbyAgICAvCj4gKyAgICAgICAgICAgICBYRU5f RE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wzX0NCTSAgLwo+ICsgICAgICAgICAgICAgWEVOX0RPTUNU TF9QU1JfQ0FUX09QX0dFVF9MM19DT0RFIC8KPiArICAgICAgICAgICAgIFhFTl9ET01DVExfUFNS X0NBVF9PUF9HRVRfTDNfREFUQSAvCj4gKyAgICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRf T1BfR0VUX0wyX0NCTQo+ICsKPiArICAyLiBwc3ItY2F0LXNldCAtbFggZG9tYWluLWlkIGNibQo+ ICsgICAgICAgICAgU2V0IExYIGNibSBmb3IgYSBkb21haW4uCj4gKyAgICAgICAgICA9PiBYRU5f RE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0NCTSAgLwo+ICsgICAgICAgICAgICAgWEVOX0RPTUNU TF9QU1JfQ0FUX09QX1NFVF9MM19DT0RFIC8KPiArICAgICAgICAgICAgIFhFTl9ET01DVExfUFNS X0NBVF9PUF9TRVRfTDNfREFUQSAvCj4gKyAgICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRf T1BfU0VUX0wyX0NCTQo+ICsKPiArICAzLiBwc3ItaHdpbmZvCj4gKyAgICAgICAgICBTaG93IFBT UiBIVyBpbmZvcm1hdGlvbiwgaW5jbHVkaW5nIEwzIENBVC9DRFAvTDIgQ0FUCj4gKyAgICAgICAg ICA9PiBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wzX2luZm8gLwo+ICsgICAgICAgICAgICAgWEVO X1NZU0NUTF9QU1JfQ0FUX2dldF9sMl9pbmZvCj4gKwo+ICsqIEtleSBkYXRhIHN0cnVjdHVyZToK PiArCj4gKyAgIDEuIEZlYXR1cmUgSFcgaW5mbwo+ICsKPiArICAgICAgYGBgCj4gKyAgICAgIHN0 cnVjdCBwc3JfY2F0X2h3X2luZm8gewo+ICsgICAgICAgICAgdW5zaWduZWQgaW50IGNibV9sZW47 Cj4gKyAgICAgICAgICB1bnNpZ25lZCBpbnQgY29zX21heDsKPiArICAgICAgfTsKPiArICAgICAg YGBgCj4gKwo+ICsgICAgICAtIE1lbWJlciBgY2JtX2xlbmAKPiArCj4gKyAgICAgICAgYGNibV9s ZW5gIGlzIG9uZSBvZiB0aGUgaGFyZHdhcmUgaW5mbyBvZiBDQVQuIEl0IG1lYW5zIHRoZSBtYXgg bnVtYmVyCj4gKyAgICAgICAgb2YgYml0cyB0byBzZXQuCj4gKwo+ICsgICAgICAtIE1lbWJlciBg Y29zX21heGAKPiArCj4gKyAgICAgICAgYGNvc19tYXhgIGlzIG9uZSBvZiB0aGUgaGFyZHdhcmUg aW5mbyBvZiBDQVQuIEl0IG1lYW5zIHRoZSBtYXggbnVtYmVyCj4gKyAgICAgICAgb2YgQ09TIHJl Z2lzdGVycy4KPiArCj4gKyAgIDIuIEZlYXR1cmUgbGlzdCBub2RlCj4gKwo+ICsgICAgICBgYGAK PiArICAgICAgc3RydWN0IGZlYXRfbm9kZSB7Cj4gKyAgICAgICAgICBlbnVtIHBzcl9mZWF0X3R5 cGUgZmVhdHVyZTsKPiArICAgICAgICAgIHN0cnVjdCBmZWF0X29wcyBvcHM7Cj4gKyAgICAgICAg ICBzdHJ1Y3QgcHNyX2NhdF9od19pbmZvIGluZm87Cj4gKyAgICAgICAgICB1aW50NjRfdCBjb3Nf cmVnX3ZhbFtNQVhfQ09TX1JFR19OVU1dOwo+ICsgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBs aXN0Owo+ICsgICAgICB9Owo+ICsgICAgICBgYGAKPiArCj4gKyAgICAgIFdoZW4gYSBQU1IgZW5m b3JjZW1lbnQgZmVhdHVyZSBpcyBlbmFibGVkLCBpdCB3aWxsIGJlIGFkZGVkIGludG8gYQo+ICsg ICAgICBmZWF0dXJlIGxpc3QuIFRoZSBoZWFkIG9mIHRoZSBsaXN0IGlzIGNyZWF0ZWQgaW4gcHNy IGluaXRpYWxpemF0aW9uLgo+ICsKPiArICAgICAgLSBNZW1iZXIgYGZlYXR1cmVgCj4gKwo+ICsg ICAgICAgIGBmZWF0dXJlYCBpcyBhbiBpbnRlZ2VyIG51bWJlciwgdG8gaW5kaWNhdGUgd2hpY2gg ZmVhdHVyZSB0aGUgbGlzdCBlbnRyeQo+ICsgICAgICAgIGNvcnJlc3BvbmRzIHRvLgo+ICsKPiAr ICAgICAgLSBNZW1iZXIgYG9wc2AKPiArCj4gKyAgICAgICAgYG9wc2AgbWFpbnRhaW5zIGEgY2Fs bGJhY2sgZnVuY3Rpb24gbGlzdCBvZiB0aGUgZmVhdHVyZS4gSXQgd2lsbCBiZSBpbnRyb2R1Y2Vk Cj4gKyAgICAgICAgaW4gZGV0YWlscyBsYXRlciBhdCBgNC4gRmVhdHVyZSBvcGVyYXRpb24gZnVu Y3Rpb25zIHN0cnVjdHVyZWAuCgpJIHRoaW5rIHlvdSBjYW4ganVzdCBkbzoKCltGZWF0dXJlIG9w ZXJhdGlvbiBmdW5jdGlvbnMgc3RydWN0dXJlXQoKQW5kIHdoZW4geW91IHJ1biBgcGFuZG9jIC10 b2MgLW8gaW50ZWxfcHNyX2NhdF9jZHAucGRmCmludGVsX3Bzcl9jYXRfY2RwLnBhbmRvY2AKCml0 IHdpbGwgcHJvdmlkZSB0aGUgcmlnaHQgbGluayAod2hpY2ggeW91IGNhbiBmb2xsb3cpIHRvIHRo ZSBwcm9wZXIKc2VjdGlvbi4KPiArCj4gKyAgICAgIC0gTWVtYmVyIGBpbmZvYAo+ICsKPiArICAg ICAgICBgaW5mb2AgbWFpbnRhaW5zIHRoZSBmZWF0dXJlIEhXIGluZm9ybWF0aW9uIHdoaWNoIGFy ZSBwcm92aWRlZCB0byBwc3JfaHdpbmZvCj4gKyAgICAgICAgY29tbWFuZC4KPiArCj4gKyAgICAg IC0gTWVtYmVyIGBjb3NfcmVnX3ZhbGAKPiArCj4gKyAgICAgICAgYGNvc19yZWdfdmFsYCBpcyBh biBhcnJheSB0byBtYWludGFpbiB0aGUgdmFsdWUgc2V0IGluIGFsbCBDT1MgcmVnaXN0ZXJzIG9m Cj4gKyAgICAgICAgdGhlIGZlYXR1cmUuIFRoZSBhcnJheSBpcyBpbmRleGVkIGJ5IENPUyBJRC4K PiArCj4gKyAgIDMuIFBlci1zb2NrZXQgUFNSIGZlYXR1cmVzIGluZm9ybWF0aW9uIHN0cnVjdHVy ZQo+ICsKPiArICAgICAgYGBgCj4gKyAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gewo+ICsg ICAgICAgICAgdW5zaWduZWQgaW50IGZlYXRfbWFzazsKPiArICAgICAgICAgIHVuc2lnbmVkIGlu dCBucl9mZWF0Owo+ICsgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmZWF0X2xpc3Q7Cj4gKyAg ICAgICAgICB1bnNpZ25lZCBpbnQgY29zX3JlZltNQVhfQ09TX1JFR19OVU1dOwo+ICsgICAgICAg ICAgc3BpbmxvY2tfdCByZWZfbG9jazsKPiArICAgICAgfTsKPiArICAgICAgYGBgCj4gKwo+ICsg ICAgICBXZSBjb2xsZWN0IGFsbCBQU1IgYWxsb2NhdGlvbiBmZWF0dXJlcyBpbmZvcm1hdGlvbiBv ZiBhIHNvY2tldCBpbiB0aGlzCj4gKyAgICAgIGBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvYC4KPiAr Cj4gKyAgICAgIC0gTWVtYmVyIGBmZWF0X21hc2tgCj4gKwo+ICsgICAgICAgIGBmZWF0X21hc2tg IGlzIGEgYml0bWFwLCB0byBpbmRpY2F0ZSB3aGljaCBmZWF0dXJlIGlzIGVuYWJsZWQgb24gY3Vy cmVudAo+ICsgICAgICAgIHNvY2tldC4gV2UgZGVmaW5lIGBmZWF0X21hc2tgIGJpdG1hcCBhczoK PiArCj4gKyAgICAgICAgYml0IDA6IEwzIENBVCBzdGF0dXMuCj4gKyAgICAgICAgYml0IDE6IEwz IENEUCBzdGF0dXMuCj4gKyAgICAgICAgYml0IDI6IEwyIENBVCBzdGF0dXMuCgpKdXN0IGluIGNh c2UgaWYgeW91IGNoYW5nZSB0aGUgY29kZSBhbmQgdGhlcmUgYXJlIG1vcmUgYml0IHBvc2l0aW9u cyAtIEkKd291bGQgcmVjb21tZW5kIHlvdSByZXBsYWNlIHRoZSAnV2UgZGVmaW5lICdmZWF0X21h c2snIGJpdG1hcCBhczoKLi4gYml0IDAgLi4iCgp3aXRoOgoKIlNlZSB2YWx1ZXMgZGVmaW5lZCBp biAnZW51bSBwc3JfZmVhdF90eXBlJyIKCkFzIHRoYXQgd2lsbCBtYWtlIGl0IGVhc2llciBpbiBj YXNlIHRoZSBjb2RlIGlzIGNoYW5nZWQgYnV0IHRoZSBkb2MKYmVjb21lcyBvdXQtZGF0ZWQuCj4g Kwo+ICsgICAgICAtIE1lbWJlciBgbnJfZmVhdGAKPiArCj4gKyAgICAgICAgYG5yX2ZlYXRgIG1l YW5zIHRoZSBudW1iZXIgb2YgUFNSIGZlYXR1cmVzIGVuYWJsZWQuCj4gKwo+ICsgICAgICAtIE1l bWJlciBgY29zX3JlZmAKPiArCj4gKyAgICAgICAgYGNvc19yZWZgIGlzIGFuIGFycmF5IHdoaWNo IG1haW50YWlucyB0aGUgcmVmZXJlbmNlIG9mIG9uZSBDT1MuIEl0IG1hcHMKPiArICAgICAgICB0 byBjb3NfcmVnX3ZhbFtNQVhfQ09TX1JFR19OVU1dIGluIGBzdHJ1Y3QgZmVhdF9ub2RlYC4gSWYg b25lIENPUyBpcwo+ICsgICAgICAgIHVzZWQgYnkgb25lIGRvbWFpbiwgdGhlIGNvcnJlc3BvbmRp bmcgcmVmZXJlbmNlIHdpbGwgaW5jcmVhc2UgYnkgb25lLiBJZgo+ICsgICAgICAgIGEgZG9tYWlu IHJlbGVhc2VzIHRoZSBDT1MsIHRoZSByZWZlcmVuY2Ugd2lsbCBkZWNyZWFzZSBieSBvbmUuIFRo ZSBhcnJheQo+ICsgICAgICAgIGlzIGluZGV4ZWQgYnkgQ09TIElELgo+ICsKPiArICAgNC4gRmVh dHVyZSBvcGVyYXRpb24gZnVuY3Rpb25zIHN0cnVjdHVyZQo+ICsKPiArICAgICAgYGBgCj4gKyAg ICAgIHN0cnVjdCBmZWF0X29wcyB7Cj4gKyAgICAgICAgICB1bnNpZ25lZCBpbnQgKCpnZXRfY29z X21heCkoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCk7Cj4gKyAgICAgICAgICBpbnQgKCpn ZXRfZmVhdF9pbmZvKShjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGF0YVtdLCB1aW50MzJfdCBhcnJheV9sZW4p Owo+ICsgICAgICAgICAgaW50ICgqZ2V0X3ZhbCkoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVh dCwgdW5zaWduZWQgaW50IGNvcywKPiArICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gY2Jt X3R5cGUgdHlwZSwgdWludDY0X3QgKnZhbCk7Cj4gKyAgICAgICAgICB1bnNpZ25lZCBpbnQgKCpn ZXRfY29zX251bSkoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCk7Cj4gKyAgICAgICAgICBp bnQgKCpnZXRfb2xkX3ZhbCkodWludDY0X3QgdmFsW10sCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2xkX2Nvcyk7Cj4gKyAgICAgICAgICBpbnQgKCpz ZXRfbmV3X3ZhbCkodWludDY0X3QgdmFsW10sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgb2xkX2NvcywKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbnVtIGNibV90eXBlIHR5cGUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDY0X3QgbSk7Cj4gKyAgICAgICAgICBpbnQgKCpjb21wYXJlX3ZhbCkoY29uc3QgdWludDY0 X3QgdmFsW10sIGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNvcywgYm9vbCAqZm91bmQpOwo+ICsgICAgICAg ICAgdW5zaWduZWQgaW50ICgqZml0c19jb3NfbWF4KShjb25zdCB1aW50NjRfdCB2YWxbXSwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZlYXRf bm9kZSAqZmVhdCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IGNvcyk7Cj4gKyAgICAgICAgICBpbnQgKCp3cml0ZV9tc3IpKHVuc2lnbmVkIGlu dCBjb3MsIGNvbnN0IHVpbnQ2NF90IHZhbFtdLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0KTsKPiArICAgICAgfTsKPiArICAgICAgYGBgCj4gKwo+ ICsgICAgICBXZSBhYnN0cmFjdCBhYm92ZSBjYWxsYmFjayBmdW5jdGlvbnMgdG8gZW5jYXBzdWxh dGUgdGhlIGZlYXR1cmUgc3BlY2lmaWMKPiArICAgICAgYmVoYXZpb3JzIGludG8gdGhlbS4gVGhl biwgaXQgaXMgZWFzeSB0byBhZGQgYSBuZXcgZmVhdHVyZS4gV2UganVzdCBuZWVkOgo+ICsgICAg ICAgICAgMSkgSW1wbGVtZW50IHN1Y2ggb3BzIGFuZCBjYWxsYmFjayBmdW5jdGlvbnMgZm9yIGV2 ZXJ5IGZlYXR1cmUuCj4gKyAgICAgICAgICAyKSBSZWdpc3RlciB0aGUgb3BzIGludG8gYHN0cnVj dCBmZWF0X25vZGVgLgo+ICsgICAgICAgICAgMykgQWRkIHRoZSBmZWF0dXJlIGludG8gZmVhdHVy ZSBsaXN0IGR1cmluZyBDUFUgaW5pdGlhbGl6YXRpb24uCj4gKwo+ICsjIExpbWl0YXRpb25zCj4g Kwo+ICtDQVQvQ0RQIGNhbiBvbmx5IHdvcmsgb24gSFcgd2hpY2ggZW5hYmxlcyBpdChjaGVjayBi eSBDUFVJRCkuIFNvIGZhciwgdGhlcmUgaXMKPiArbm8gSFcgd2hpY2ggZW5hYmxlcyBib3RoIEwy IENBVCBhbmQgTDMgQ0FUL0NEUC4gQnV0IFNXIGltcGxlbWVudGF0aW9uIGhhcyBjb25zLQo+ICtp ZGVyZWQgc3VjaCBzY2VuYXJpbyB0byBlbmFibGUgYm90aCBMMiBDQVQgYW5kIEwzIENBVC9DRFAu Cj4gKwo+ICsjIFRlc3RpbmcKPiArCj4gK1dlIGNhbiBleGVjdXRlIGFib3ZlIHhsIGNvbW1hbmRz IHRvIHZlcmlmeSBMMiBDQVQgYW5kIEwzIENBVC9DRFAgb24gZGlmZmVyZW50Cj4gK0hXcyBzdXBw b3J0IHRoZW0uCj4gKwo+ICtGb3IgZXhhbXBsZToKPiArICAgIHJvb3RAOn4kIHhsIHBzci1od2lu Zm8gLS1jYXQKPiArICAgIENhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neSAoQ0FUKTogTDIKPiAr ICAgIFNvY2tldCBJRCAgICAgICA6IDAKPiArICAgIE1heGltdW0gQ09TICAgICA6IDMKPiArICAg IENCTSBsZW5ndGggICAgICA6IDgKPiArICAgIERlZmF1bHQgQ0JNICAgICA6IDB4ZmYKPiArCj4g KyAgICByb290QDp+JCB4bCBwc3ItY2F0LWNibS1zZXQgLWwyIDEgMHg3Zgo+ICsKPiArICAgIHJv b3RAOn4kIHhsIHBzci1jYXQtc2hvdyAtbDIgMQo+ICsgICAgU29ja2V0IElEICAgICAgIDogMAo+ ICsgICAgRGVmYXVsdCBDQk0gICAgIDogMHhmZgo+ICsgICAgICAgSUQgICAgICAgICAgICAgICAg ICAgICBOQU1FICAgICAgICAgICAgIENCTQo+ICsgICAgICAgIDEgICAgICAgICAgICAgICAgIHVi dW50dTE0ICAgICAgICAgICAgMHg3Zgo+ICsKPiArIyBBcmVhcyBmb3IgaW1wcm92ZW1lbnQKPiAr Cj4gK04vQQoKSSB3b3VsZCBzYXkgdGhhdCB1c2luZyAnMHg3ZicgaXMgbm90IHZlcnkgdXNlci1m cmllbmRseS4gSXQgcmVhbGx5CndvdWxkIGJlIGdvb2QgaWYgdGhhdCBjaGFuZ2VkIHRvIHNvbWV0 aGluZyBlYXNpZXIgdG8gZ3Jvay4KCkZvciBleGFtcGxlIGlmIEkgYW0gc3lzdGVtIGFkbWluIGFu ZCBJIGxvb2sgYXQ6CgogICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r LS0tLSsKICAgICAgIHwgTTcgfCBNNiB8IE01IHwgTTQgfCBNMyB8IE0yIHwgTTEgfCBNMCB8CiAg ICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKwogIENPUzAgfCBB ICB8IEEgIHwgQSAgfCBBICB8ICAgIHwgICAgfCAgICB8ICAgIHwgSXNvbGF0ZWQgQml0bWFzawog ICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKICBDT1MxIHwg ICAgfCAgICB8ICAgIHwgICAgfCBBICB8IEEgIHwgICAgfCAgICB8CiAgICAgICArLS0tLSstLS0t Ky0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKwogIENPUzIgfCAgICB8ICAgIHwgICAgfCAg ICB8ICAgIHwgICAgfCBBICB8IEEgIHwKICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r LS0tLSstLS0tKy0tLS0rCgpJIHdvdWxkIHRoaW5rIHRoYXQgZ2l2aW5nIGFuIGd1ZXN0ICdNNy0+ TTQnIG1lYW5zIGl0IGhhcyBtb3JlCmNhY2hlIHRoYW4gTTMtPk0yIG9yIE0xLT5NMC4KCkJ1dCB0 aGF0IGlzIG5vdCBzcGVsbGVkIGluIGRldGFpbHMuIE9yIHdoYXQgaGFwcGVucyBpZiBJIGRvOgog ICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKICAgICAgIHwg TTcgfCBNNiB8IE01IHwgTTQgfCBNMyB8IE0yIHwgTTEgfCBNMCB8CiAgICAgICArLS0tLSstLS0t Ky0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKwogIENPUzAgfCAgICB8ICAgIHwgICAgfCAg ICB8ICAgIHwgQSAgfCAgICB8ICAgIHwgSXNvbGF0ZWQgQml0bWFzawogICAgICAgKy0tLS0rLS0t LSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKICBDT1MxIHwgICAgfCAgICB8ICAgIHwg ICAgfCAgICB8ICAgIHwgQSAgfCAgICB8CiAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0t Ky0tLS0rLS0tLSstLS0tKwogIENPUzIgfCAgICB8ICAgIHwgICAgfCAgICB8ICAgIHwgICAgfCAg ICB8IEEgIHwKICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r CgpEb2VzIHRoYXQgaGF2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIHByZXZpb3VzIG9uZT8KSSB3 b3VsZCB0aGluayBub3QsIGJ1dCBwZXJoYXBzIGl0IGlzIHRoZSBzYW1lICh3ZSBzZXQKdGhyZWUg J3Bvb2xzJykuCgpBbmQgZG9lcyB0aGlzIG1lYW4gdGhhdCBJJ3ZlIG1hZGUgYSBncmF2ZSBlcnJv cgphbmQgTTctPk0zIGFyZSBpbiBlZmZlY3Qgb25seSBhdmFpbGFibGUgdG8gdGhlIGh5cGVydmlz b3IgKGFuZApkb20wPywgYnV0IG9ubHkgaWYgZG9tMCBpcyBQViwgYnV0IG5vdCBmb3IgUFZIIGRv bTA/KQoKVGhhbmtzIQo+ICsKPiArIyBLbm93biBpc3N1ZXMKPiArCj4gK04vQQo+ICsKPiArIyBS ZWZlcmVuY2VzCj4gKwo+ICsiSU5URUzCriBSRVNPVVJDRSBESVJFQ1RPUiBURUNITk9MT0dZIChJ TlRFTMKuIFJEVCkgQUxMT0NBVElPTiBGRUFUVVJFUyIgW0ludGVswq4gNjQgYW5kIElBLTMyIEFy Y2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVyIE1hbnVhbHMsIHZvbDNdKGh0dHA6Ly93d3cu aW50ZWwuY29tL2NvbnRlbnQvd3d3L3VzL2VuL3Byb2Nlc3NvcnMvYXJjaGl0ZWN0dXJlcy1zb2Z0 d2FyZS1kZXZlbG9wZXItbWFudWFscy5odG1sKQo+ICsKPiArIyBIaXN0b3J5Cj4gKwo+ICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiArRGF0ZSAgICAgICBSZXZpc2lvbiBWZXJzaW9uICBOb3Rlcwo+ICstLS0t LS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiArMjAxNi0wOC0xMiAxLjAgICAgICBYZW4gNC45ICBEZXNpZ24gZG9jdW1l bnQgd3JpdHRlbgoKUGVyaGFwcyB1cGRhdGUgdGhhdCBhIGJpdD8gSSB0aGluayB3ZSBhcmUgYXQg MS42ID8KPiArLS0tLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0gCj4gMS45LjEKPiAKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=