From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v9 01/25] docs: create Cache Allocation Technology (CAT) and Code and Data Prioritization (CDP) feature document Date: Thu, 16 Mar 2017 19:07:51 +0800 Message-ID: <1489662495-5375-2-git-send-email-yi.y.sun@linux.intel.com> References: <1489662495-5375-1-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1coTLe-00047U-Iu for xen-devel@lists.xenproject.org; Thu, 16 Mar 2017 11:13:38 +0000 In-Reply-To: <1489662495-5375-1-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: xen-devel@lists.xenproject.org Cc: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, he.chen@linux.intel.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBjcmVhdGVzIENBVCBhbmQgQ0RQIGZlYXR1cmUgZG9jdW1lbnQgaW4gZG9jL2Zl YXR1cmVzLy4gSXQgZGVzY3JpYmVzCmtleSBwb2ludHMgdG8gaW1wbGVtZW50IEwzIENBVC9DRFAg YW5kIEwyIENBVCB3aGljaCBpcyBkZXNjcmliZWQgaW4gZGV0YWlscyBpbgpJbnRlbCBTRE0gIklO VEVMwq4gUkVTT1VSQ0UgRElSRUNUT1IgVEVDSE5PTE9HWSAoSU5URUzCriBSRFQpIEFMTE9DQVRJ T04gRkVBVFVSRVMiLgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRl bC5jb20+ClJldmlld2VkLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9y YWNsZS5jb20+ClJldmlld2VkLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0K djk6CiAgICAtIGFkZCAnQ01UJyB0byB0aGUgbGlzdCBvZiBhY3Jvbnltcy4KICAgICAgKHN1Z2dl c3RlZCBieSBXZWkgTGl1KQogICAgLSBjaGFuZ2UgZmVhdHVyZSBsaXN0IHRvIGZlYXR1cmUgYXJy YXkuCiAgICAtIG1vZGlmeSBkYXRhIHN0cnVjdHVyZSBkZXNjcmlwdGlvbnMgYWNjb3JkaW5nIHRv IGxhdGVzdCBjb2Rlcy4KICAgIC0gbW9kaWZ5IHJldmlzaW9uLgp2ODoKICAgIC0gY2hhbmdlIHJl dmlzaW9uIGluZm8uCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQog ICAgLSBhZGQgY29udGVudCBpbnQgJ0FyZWFzIGZvciBpbXByb3ZlbWVudCcuCiAgICAgIChzdWdn ZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQp2NzoKICAgIC0gY29ycmVjdCB0eXBvLgog ICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gcmVwbGFjZSBh cHBsaWNhdGlvbi9WTSB0byBkb21haW4uCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6 dXRlayBXaWxrKQogICAgLSBhbWVuZCBkZXNjcmlwdGlvbiBvZiBgZmVhdF9tYXNrYCB0byBtYWtl IGl0IGNsZWFyZXIuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQog ICAgLSB1cGRhdGUgcmV2aXNpb24uCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRl ayBXaWxrKQogICAgLSBvdGhlciBtaW5vciBmaXhlcy4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25y YWQgUnplc3p1dGVrIFdpbGspCnY2OgogICAgLSB3cml0ZSBhIG5ldyBmZWF0dXJlIGRvY3VtZW50 IHRvIGNvdmVyIEwzIENBVC9DRFAgYW5kIEwyIENBVC4KICAgICAgKHN1Z2dlc3RlZCBieSBLZXZp biBUaWFuKQogICAgLSBhZGp1c3QgJ1Rlcm1pbm9sb2d5JyBwb3NpdGlvbiBpbiBkb2N1bWVudC4K ICAgICAgKHN1Z2dlc3RlZCBieSBEYXJpbyBGYWdnaW9saSkKICAgIC0gZml4IHdvcmRpbmdzLgog ICAgICAoc3VnZ2VzdGVkIGJ5IERhcmlvIEZhZ2dpb2xpLCBLZXZpbiBUaWFuIGFuZCBLb25yYWQg Unplc3p1dGVrIFdpbGspCiAgICAtIGFkZCBTRE0gY2hhcHRlciB0aXRsZSBpbiBjb21taXQgbWVz c2FnZS4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIGFk ZCBtb3JlIGV4cGxhbmF0aW9ucy4KICAgICAgKHN1Z2dlc3RlZCBieSBLZXZpbiBUaWFuKQp2NDoK ICAgIC0gY2hhbmdlIGZpbGUgbmFtZSB0byBiZSBtb3JlIGRlc2NyaXB0aXZlLCAnaW50ZWxfcHNy X2wyX2NhdC5wYW5kb2MnLgogICAgICAoc3VnZ2VzdGVkIGJ5IERhcmlvIEZhZ2dpb2xpKQogICAg LSByZW1vdmUgJ0V4dCcgYW5kICdOZXcnIHByZWZpeGVzLgogICAgICAoc3VnZ2VzdGVkIGJ5IERh cmlvIEZhZ2dpb2xpKQogICAgLSByZW1vdmUgY2hhbmdlIGxvZyBpbiBSZXZpc29uIHBhcnQuCiAg ICAgIChzdWdnZXN0ZWQgYnkgRGFyaW8gRmFnZ2lvbGkpCiAgICAtIGFkanVzdCBYZW4gcmVsZWFz ZSBudW1iZXIgdG8gNC45IHRvIHNob3cgdGhpcyBmZWF0dXJlIHRhcmdldHMgNC45LgogICAgICAo c3VnZ2VzdGVkIGJ5IERhcmlvIEZhZ2dpb2xpKQogICAgLSBwcm92aWRlICdUZXJtaW5vbG9neScg YW5kIG1vcmUgc2VjdGlvbnMuCiAgICAgIChzdWdnZXN0ZWQgYnkgRGFyaW8gRmFnZ2lvbGkpCiAg ICAtIGZpeCB3b3JkaW5ncy4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdp bGspCiAgICAtIHJlbW92ZSBjaGFwdGVyIG51bWJlci4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25y YWQgUnplc3p1dGVrIFdpbGspCnYzOgogICAgLSBtYWtlIGRlc2lnbiBkb2N1bWVudCBiZSBhIHBh dGNoLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKdjI6CiAgICAt IHByb3ZpZGUgY2hhcHRlciBmb3IgdGhlIEwyIENBVC4KICAgICAgKHN1Z2dlc3RlZCBieSBNZW5n IFh1KQotLS0KIGRvY3MvZmVhdHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jIHwgNDY5ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDQ2OSBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jcy9mZWF0dXJlcy9pbnRlbF9wc3JfY2F0 X2NkcC5wYW5kb2MKCmRpZmYgLS1naXQgYS9kb2NzL2ZlYXR1cmVzL2ludGVsX3Bzcl9jYXRfY2Rw LnBhbmRvYyBiL2RvY3MvZmVhdHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyMmZiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9k b2NzL2ZlYXR1cmVzL2ludGVsX3Bzcl9jYXRfY2RwLnBhbmRvYwpAQCAtMCwwICsxLDQ2OSBAQAor JSBJbnRlbCBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgYW5kIENvZGUgYW5kIERhdGEgUHJp b3JpdGl6YXRpb24gRmVhdHVyZXMKKyUgUmV2aXNpb24gMS45CisKK1xjbGVhcnBhZ2UKKworIyBC YXNpY3MKKworLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICBTdGF0dXM6ICoqVGVjaCBQcmV2aWV3KioK KworQXJjaGl0ZWN0dXJlKHMpOiBJbnRlbCB4ODYKKworICAgQ29tcG9uZW50KHMpOiBIeXBlcnZp c29yLCB0b29sc3RhY2sKKworICAgICAgIEhhcmR3YXJlOiBMMyBDQVQ6IEhhc3dlbGwgYW5kIGJl eW9uZCBDUFVzCisgICAgICAgICAgICAgICAgIENEUCAgIDogQnJvYWR3ZWxsIGFuZCBiZXlvbmQg Q1BVcworICAgICAgICAgICAgICAgICBMMiBDQVQ6IEF0b20gY29kZW5hbWUgR29sZG1vbnQgYW5k IGJleW9uZCBDUFVzCistLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUZXJtaW5vbG9neQorCisqIENBVCAgICAg ICAgIENhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neQorKiBDQk0gICAgICAgICBDYXBhY2l0eSBC aXRNYXNrcworKiBDRFAgICAgICAgICBDb2RlIGFuZCBEYXRhIFByaW9yaXRpemF0aW9uCisqIENN VCAgICAgICAgIENhY2hlIE1vbml0b3JpbmcgVGVjaG5vbG9neQorKiBDT1MvQ0xPUyAgICBDbGFz cyBvZiBTZXJ2aWNlCisqIE1TUnMgICAgICAgIE1hY2hpbmUgU3BlY2lmaWMgUmVnaXN0ZXJzCisq IFBTUiAgICAgICAgIEludGVsIFBsYXRmb3JtIFNoYXJlZCBSZXNvdXJjZQorCisjIE92ZXJ2aWV3 CisKK0ludGVsIHByb3ZpZGVzIGEgc2V0IG9mIGFsbG9jYXRpb24gY2FwYWJpbGl0aWVzIGluY2x1 ZGluZyBDYWNoZSBBbGxvY2F0YXRpb24KK1RlY2hub2xvZ3kgKENBVCkgYW5kIENvZGUgYW5kIERh dGEgUHJpb3JpdGl6YXRpb24gKENEUCkuCisKK0NBVCBhbGxvd3MgYW4gT1Mgb3IgaHlwZXJ2aXNv ciB0byBjb250cm9sIGFsbG9jYXRpb24gb2YgYSBDUFUncyBzaGFyZWQgY2FjaGUKK2Jhc2VkIG9u IGFwcGxpY2F0aW9uL2RvbWFpbiBwcmlvcml0eSBvciBDbGFzcyBvZiBTZXJ2aWNlIChDT1MpLiBF YWNoIENPUyBpcworY29uZmlndXJlZCB1c2luZyBjYXBhY2l0eSBiaXRtYXNrcyAoQ0JNcykgd2hp Y2ggcmVwcmVzZW50IGNhY2hlIGNhcGFjaXR5IGFuZAoraW5kaWNhdGUgdGhlIGRlZ3JlZSBvZiBv dmVybGFwIGFuZCBpc29sYXRpb24gYmV0d2VlbiBjbGFzc2VzLiBPbmNlIENBVCBpcyBjby0KK25m aWd1cmVkLCB0aGUgcHJvY2Vzc29yIGFsbG93cyBhY2Nlc3MgdG8gcG9ydGlvbnMgb2YgY2FjaGUg YWNjb3JkaW5nIHRvIHRoZQorZXN0YWJsaXNoZWQgQ09TLiBJbnRlbCBYZW9uIHByb2Nlc3NvciBF NSB2NCBmYW1pbHkgKGFuZCBzb21lIG90aGVycykgaW50cm9kdWNlCitjYXBhYmlsaXRpZXMgdG8g Y29uZmlndXJlIGFuZCBtYWtlIHVzZSBvZiB0aGUgQ0FUIG1lY2hhbmlzbSBvbiB0aGUgTDMgY2Fj aGUuCitJbnRlbCBHb2xkbW9udCBwcm9jZXNzb3IgcHJvdmlkZXMgc3VwcG9ydCBmb3IgY29udHJv bCBvdmVyIHRoZSBMMiBjYWNoZS4KKworQ29kZSBhbmQgRGF0YSBQcmlvcml0aXphdGlvbiAoQ0RQ KSBUZWNobm9sb2d5IGlzIGFuIGV4dGVuc2lvbiBvZiBDQVQuIENEUAorZW5hYmxlcyBpc29sYXRp b24gYW5kIHNlcGFyYXRlIHByaW9yaXRpemF0aW9uIG9mIGNvZGUgYW5kIGRhdGEgZmV0Y2hlcyB0 bwordGhlIEwzIGNhY2hlIGluIGEgU1cgY29uZmlndXJhYmxlIG1hbm5lciwgd2hpY2ggY2FuIGVu YWJsZSB3b3JrbG9hZCBwcmlvcml0LQoraXphdGlvbiBhbmQgdHVuaW5nIG9mIGNhY2hlIGNhcGFj aXR5IHRvIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIHdvcmtsb2FkLgorQ0RQIGV4dGVuZHMg Q0FUIGJ5IHByb3ZpZGluZyBzZXBhcmF0ZSBjb2RlIGFuZCBkYXRhIG1hc2tzIHBlciBDbGFzcyBv ZiBTZXJ2aWNlCisoQ09TKS4gV2hlbiBTVyBjb25maWd1cmVzIHRvIGVuYWJsZSBDRFAsIEwzIENB VCBpcyBkaXNhYmxlZC4KKworIyBVc2VyIGRldGFpbHMKKworKiBGZWF0dXJlIEVuYWJsaW5nOgor CisgIEFkZCAicHNyPWNhdCIgdG8gYm9vdCBsaW5lIHBhcmFtZXRlciB0byBlbmFibGUgYWxsIHN1 cHBvcnRlZCBsZXZlbCBDQVQgZmVhdHUtCisgIHJlcy4gQWRkICJwc3I9Y2RwIiB0byBlbmFibGUg TDMgQ0RQIGJ1dCBkaXNhYmxlcyBMMyBDQVQgYnkgU1cuCisKKyogeGwgaW50ZXJmYWNlczoKKwor ICAxLiBgcHNyLWNhdC1zaG93IFtPUFRJT05TXSBkb21haW4taWRgOgorCisgICAgIFNob3cgTDIg Q0FUIG9yIEwzIENBVC9DRFAgQ0JNIG9mIHRoZSBkb21haW4gZGVzaWduYXRlZCBieSBYZW4gZG9t YWluLWlkLgorCisgICAgIE9wdGlvbiBgLWxgOgorICAgICBgLWwyYDogU2hvdyBjYm0gZm9yIEwy IGNhY2hlLgorICAgICBgLWwzYDogU2hvdyBjYm0gZm9yIEwzIGNhY2hlLgorCisgICAgIElmIGAt bFhgIGlzIHNwZWNpZmllZCBhbmQgTFggaXMgbm90IHN1cHBvcnRlZCwgcHJpbnQgZXJyb3IuCisg ICAgIElmIG5vIGAtbGAgaXMgc3BlY2lmaWVkLCBsZXZlbCAzIGlzIHRoZSBkZWZhdWx0IG9wdGlv bi4KKworICAyLiBgcHNyLWNhdC1zZXQgW09QVElPTlNdIGRvbWFpbi1pZCBjYm1gOgorCisgICAg IFNldCBMMiBDQVQgb3IgTDMgQ0FUL0NEUCBDQk0gdG8gdGhlIGRvbWFpbiBkZXNpZ25hdGVkIGJ5 IFhlbiBkb21haW4taWQuCisKKyAgICAgT3B0aW9uIGAtc2A6IFNwZWNpZnkgdGhlIHNvY2tldCB0 byBwcm9jZXNzLCBvdGhlcndpc2UgYWxsIHNvY2tldHMgYXJlCisgICAgIHByb2Nlc3NlZC4KKwor ICAgICBPcHRpb24gYC1sYDoKKyAgICAgYC1sMmA6IFNwZWNpZnkgY2JtIGZvciBMMiBjYWNoZS4K KyAgICAgYC1sM2A6IFNwZWNpZnkgY2JtIGZvciBMMyBjYWNoZS4KKworICAgICBJZiBgLWxYYCBp cyBzcGVjaWZpZWQgYW5kIExYIGlzIG5vdCBzdXBwb3J0ZWQsIHByaW50IGVycm9yLgorICAgICBJ ZiBubyBgLWxgIGlzIHNwZWNpZmllZCwgbGV2ZWwgMyBpcyB0aGUgZGVmYXVsdCBvcHRpb24uCisK KyAgICAgT3B0aW9uIGAtY2Agb3IgYC1kYDoKKyAgICAgYC1jYDogU2V0IEwzIENEUCBjb2RlIGNi bS4KKyAgICAgYC1kYDogU2V0IEwzIENEUCBkYXRhIGNibS4KKworICAzLiBgcHNyLWh3aW5mbyBb T1BUSU9OU11gOgorCisgICAgIFNob3cgQ01UICYgTDIgQ0FUICYgTDMgQ0FUL0NEUCBIVyBpbmZv cm1hdGlvbiBvbiBldmVyeSBzb2NrZXQuCisKKyAgICAgT3B0aW9uIGAtbSwgLS1jbXRgOiBTaG93 IENhY2hlIE1vbml0b3JpbmcgVGVjaG5vbG9neSAoQ01UKSBoYXJkd2FyZSBpbmZvLgorCisgICAg IE9wdGlvbiBgLWEsIC0tY2F0YDogU2hvdyBDQVQvQ0RQIGhhcmR3YXJlIGluZm8uCisKKyMgVGVj aG5pY2FsIGRldGFpbHMKKworTDMgQ0FUL0NEUCBhbmQgTDIgQ0FUIGFyZSBhbGwgbWVtYmVycyBv ZiBJbnRlbCBQU1IgZmVhdHVyZXMsIHRoZXkgc2hhcmUgdGhlIGJhc2UKK1BTUiBpbmZyYXN0cnVj dHVyZSBpbiBYZW4uCisKKyMjIEhhcmR3YXJlIHBlcnNwZWN0aXZlCisKKyAgQ0FUL0NEUCBkZWZp bmVzIGEgcmFuZ2Ugb2YgTVNScyB0byBhc3NpZ24gZGlmZmVyZW50IGNhY2hlIGFjY2VzcyBwYXR0 ZXJucworICB3aGljaCBhcmUga25vd24gYXMgQ0JNcywgZWFjaCBDQk0gaXMgYXNzb2NpYXRlZCB3 aXRoIGEgQ09TLgorCisgIGBgYAorICBFLmcuIEwyIENBVDoKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAg ICAgSUEzMl9QUVJfQVNTT0MgICAgICAgfCBNU1IgKHBlciBzb2NrZXQpICAgICAgICAgICB8ICAg IEFkZHJlc3MgICAgIHwKKyAgICstLS0tKy0tLSstLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgfENPU3wgICAgICAgfCAg ICAgfCBJQTMyX0wyX1FPU19NQVNLXzAgICAgICAgICB8ICAgICAweEQxMCAgICAgIHwKKyAgICst LS0tKy0tLSstLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKKyAgICAgICAgICDilJQtLS0tLS0tLS0tLS0tPiB8IC4uLiAgICAgICAgICAg ICAgICAgICAgICAgIHwgIC4uLiAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAg ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICAgICAg ICAgICAgICAgICAgICAgICAgICB8IElBMzJfTDJfUU9TX01BU0tfbiAgICAgICAgIHwgMHhEMTAr biAobjw2NCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICBgYGAKKworICBMMyBDQVQvQ0RQIHVzZXMg YSByYW5nZSBvZiBNU1JzIGZyb20gMHhDOTAgfiAweEM5MCtuIChuPDEyOCkuCisKKyAgTDIgQ0FU IHVzZXMgYSByYW5nZSBvZiBNU1JzIGZyb20gMHhEMTAgfiAweEQxMCtuIChuPDY0KSwgZm9sbG93 aW5nIHRoZSBMMworICBDQVQvQ0RQIE1TUnMsIHNldHRpbmcgZGlmZmVyZW50IEwyIGNhY2hlIGFj Y2Vzc2luZyBwYXR0ZXJucyBmcm9tIEwzIGNhY2hlIGlzCisgIHN1cHBvcnRlZC4KKworICBFdmVy eSBNU1Igc3RvcmVzIGEgQ0JNIHZhbHVlLiBBIGNhcGFjaXR5IGJpdG1hc2sgKENCTSkgcHJvdmlk ZXMgYSBoaW50IHRvIHRoZQorICBoYXJkd2FyZSBpbmRpY2F0aW5nIHRoZSBjYWNoZSBzcGFjZSBh IGRvbWFpbiBzaG91bGQgYmUgbGltaXRlZCB0byBhcyB3ZWxsIGFzCisgIHByb3ZpZGluZyBhbiBp bmRpY2F0aW9uIG9mIG92ZXJsYXAgYW5kIGlzb2xhdGlvbiBpbiB0aGUgQ0FULWNhcGFibGUgY2Fj aGUgZnJvbQorICBvdGhlciBkb21haW5zIGNvbnRlbmRpbmcgZm9yIHRoZSBjYWNoZS4KKworICBT YW1wbGUgY2FjaGUgY2FwYWNpdHkgYml0bWFza3MgZm9yIGEgYml0bGVuZ3RoIG9mIDggYXJlIHNo b3duIGJlbG93LiBQbGVhc2UKKyAgbm90ZSB0aGF0IGFsbCAoYW5kIG9ubHkpIGNvbnRpZ3VvdXMg JzEnIGNvbWJpbmF0aW9ucyBhcmUgYWxsb3dlZCAoZS5nLiBGRkZGSCwKKyAgMEZGMEgsIDAwM0NI LCBldGMuKS4KKworICBgYGAKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r LS0tLSstLS0tKworICAgICAgIHwgTTcgfCBNNiB8IE01IHwgTTQgfCBNMyB8IE0yIHwgTTEgfCBN MCB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAg Q09TMCB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBEZWZhdWx0IEJp dG1hc2sKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKwor ICBDT1MxIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8CisgICAgICAg Ky0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09TMiB8IEEgIHwg QSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfAorICAgICAgICstLS0tKy0tLS0rLS0t LSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0t LSstLS0tKy0tLS0rLS0tLSstLS0tKworICAgICAgIHwgTTcgfCBNNiB8IE01IHwgTTQgfCBNMyB8 IE0yIHwgTTEgfCBNMCB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0t LS0rLS0tLSsKKyAgQ09TMCB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAg fCBPdmVybGFwcGVkIEJpdG1hc2sKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKworICBDT1MxIHwgICAgfCAgICB8ICAgIHwgICAgfCBBICB8IEEgIHwgQSAg fCBBICB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsK KyAgQ09TMiB8ICAgIHwgICAgfCAgICB8ICAgIHwgICAgfCAgICB8IEEgIHwgQSAgfAorICAgICAg ICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisKKyAgICAgICArLS0t LSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICAgICAgIHwgTTcgfCBNNiB8 IE01IHwgTTQgfCBNMyB8IE0yIHwgTTEgfCBNMCB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09TMCB8IEEgIHwgQSAgfCBBICB8IEEgIHwgICAg fCAgICB8ICAgIHwgICAgfCBJc29sYXRlZCBCaXRtYXNrCisgICAgICAgKy0tLS0rLS0tLSstLS0t Ky0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09TMSB8ICAgIHwgICAgfCAgICB8ICAgIHwg QSAgfCBBICB8ICAgIHwgICAgfAorICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0t LSstLS0tKy0tLS0rCisgIENPUzIgfCAgICB8ICAgIHwgICAgfCAgICB8ICAgIHwgICAgfCBBICB8 IEEgIHwKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKwor ICBgYGAKKworICBXZSBjYW4gZ2V0IHRoZSBDQk0gbGVuZ3RoIHRocm91Z2ggQ1BVSUQuIFRoZSBk ZWZhdWx0IHZhbHVlIG9mIENCTSBpcyBjYWxjdWwtCisgIGF0ZWQgYnkgYCgxdWxsIDw8IGNibV9s ZW4pIC0gMWAuIFRoYXQgaXMgYSBmdWxseSBvcGVuIGJpdG1hc2ssIGFsbCBvbmVzIGJpdG0tCisg IGFzay4gVGhlIENPU1swXSBhbHdheXMgc3RvcmVzIHRoZSBkZWZhdWx0IHZhbHVlIHdpdGhvdXQg Y2hhbmdlLgorCisgIFRoZXJlIGlzIGEgYElBMzJfUFFSX0FTU09DYCByZWdpc3RlciB3aGljaCBz dG9yZXMgdGhlIENPUyBJRCBvZiB0aGUgVkNQVS4gSFcKKyAgZW5mb3JjZXMgY2FjaGUgYWxsb2Nh dGlvbiBhY2NvcmRpbmcgdG8gdGhlIGNvcnJlc3BvbmRpbmcgQ0JNLgorCisjIyBUaGUgcmVsYXRp b25zaGlwIGJldHdlZW4gTDMgQ0FUL0NEUCBhbmQgTDIgQ0FUCisKKyAgSFcgbWF5IHN1cHBvcnQg YWxsIGZlYXR1cmVzLiBCeSBkZWZhdWx0LCBDRFAgaXMgZGlzYWJsZWQgb24gdGhlIHByb2Nlc3Nv ci4KKyAgSWYgdGhlIEwzIENBVCBNU1JzIGFyZSB1c2VkIHdpdGhvdXQgZW5hYmxpbmcgQ0RQLCB0 aGUgcHJvY2Vzc29yIG9wZXJhdGVzIGluCisgIGEgdHJhZGl0aW9uYWwgQ0FULW9ubHkgbW9kZS4g V2hlbiBDRFAgaXMgZW5hYmxlZDoKKyAgKiB0aGUgQ0FUIG1hc2sgTVNScyBhcmUgcmUtbWFwcGVk IGludG8gaW50ZXJsZWF2ZWQgcGFpcnMgb2YgbWFzayBNU1JzIGZvcgorICAgIGRhdGEgb3IgY29k ZSBmZXRjaGVzLgorICAqIHRoZSByYW5nZSBvZiBDT1MgZm9yIENBVCBpcyByZS1pbmRleGVkLCB3 aXRoIHRoZSBsb3dlci1oYWxmIG9mIHRoZSBDT1MKKyAgICByYW5nZSBhdmFpbGFibGUgZm9yIENE UC4KKworICBMMiBDQVQgaXMgaW5kZXBlbmRlbnQgb2YgTDMgQ0FUL0NEUCwgd2hpY2ggbWVhbnMg TDIgQ0FUIGNhbiBiZSBlbmFibGVkIHdoaWxlCisgIEwzIENBVC9DRFAgaXMgZGlzYWJsZWQsIG9y IEwyIENBVCBhbmQgTDMgQ0FUL0NEUCBhcmUgYm90aCBlbmFibGVkLgorCisgIEFzIGEgcmVxdWly ZW1lbnQsIHRoZSBiaXRzIG9mIENCTSBvZiBDQVQvQ0RQIG11c3QgYmUgY29udGludW91cy4KKwor ICBOLkIuIEwyIENBVCBhbmQgTDMgQ0FUL0NEUCBzaGFyZSB0aGUgc2FtZSBDT1MgZmllbGQgaW4g dGhlIHNhbWUgYXNzb2NpYXRlCisgIHJlZ2lzdGVyIGBJQTMyX1BRUl9BU1NPQ2AsIHdoaWNoIG1l YW5zIG9uZSBDT1MgaXMgYXNzb2NpYXRlZCB3aXRoIGEgcGFpciBvZgorICBMMiBDQVQgQ0JNIGFu ZCBMMyBDQVQvQ0RQIENCTS4KKworICBCZXNpZGVzLCB0aGUgbWF4IENPUyBvZiBMMiBDQVQgbWF5 IGJlIGRpZmZlcmVudCBmcm9tIEwzIENBVC9DRFAgKG9yIG90aGVyCisgIFBTUiBmZWF0dXJlcyBp biBmdXR1cmUpLiBJbiBzb21lIGNhc2VzLCBhIGRvbWFpbiBpcyBwZXJtaXR0ZWQgdG8gaGF2ZSBh IENPUworICB0aGF0IGlzIGJleW9uZCBvbmUgKG9yIG1vcmUpIG9mIFBTUiBmZWF0dXJlcyBidXQg d2l0aGluIHRoZSBvdGhlcnMuIEZvcgorICBpbnN0YW5jZSwgbGV0J3MgYXNzdW1lIHRoZSBtYXgg Q09TIG9mIEwyIENBVCBpcyA4IGJ1dCB0aGUgbWF4IENPUyBvZiBMMworICBDQVQgaXMgMTYsIHdo ZW4gYSBkb21haW4gaXMgYXNzaWduZWQgOSBhcyBDT1MsIHRoZSBMMyBDQVQgQ0JNIGFzc29jaWF0 ZWQgdG8KKyAgQ09TIDkgd291bGQgYmUgZW5mb3JjZWQsIGJ1dCBmb3IgTDIgQ0FULCB0aGUgSFcg d29ya3MgYXMgZGVmYXVsdCB2YWx1ZSBpcworICBzZXQgc2luY2UgQ09TIDkgaXMgYmV5b25kIHRo ZSBtYXggQ09TICg4KSBvZiBMMiBDQVQuCisKKyMjIERlc2lnbiBPdmVydmlldworCisqIENvcmUg Q09TL0NCTSBhc3NvY2lhdGlvbgorCisgIFdoZW4gZW5mb3JjaW5nIENBVC9DRFAsIGFsbCBjb3Jl cyBvZiBkb21haW5zIGhhdmUgdGhlIHNhbWUgZGVmYXVsdCBDT1MgKENPUzApCisgIHdoaWNoIGlz IGFzc29jaWF0ZWQgd2l0aCB0aGUgZnVsbHkgb3BlbiBDQk0gKGFsbCBvbmVzIGJpdG1hc2spIHRv IGFjY2VzcyBhbGwKKyAgY2FjaGUuIFRoZSBkZWZhdWx0IENPUyBpcyB1c2VkIG9ubHkgaW4gaHlw ZXJ2aXNvciBhbmQgaXMgdHJhbnNwYXJlbnQgdG8gdG9vbAorICBzdGFjayBhbmQgdXNlci4KKwor ICBTeXN0ZW0gYWRtaW5pc3RyYXRvciBjYW4gY2hhbmdlIFBTUiBhbGxvY2F0aW9uIHBvbGljeSBh dCBydW50aW1lIGJ5IHRvb2wgc3RhY2suCisgIFNpbmNlIEwyIENBVCBzaGFyZXMgQ09TIHdpdGgg TDMgQ0FUL0NEUCwgYSBDT1MgY29ycmVzcG9uZHMgdG8gYSAyLXR1cGxlLCBsaWtlCisgIFtMMiBD Qk0sIEwzIENCTV0gd2l0aCBvbmx5LUNBVCBlbmFibGVkLCB3aGVuIENEUCBpcyBlbmFibGVkLCBv bmUgQ09TIGNvcnJlc3BvLQorICBuZHMgdG8gYSAzLXR1cGxlLCBsaWtlIFtMMiBDQk0sIEwzIENv ZGVfQ0JNLCBMMyBEYXRhX0NCTV0uIElmIG5laXRoZXIgTDMgQ0FUCisgIG5vciBMMyBDRFAgaXMg ZW5hYmxlZCwgdGhpbmdzIHdvdWxkIGJlIGVhc2llciwgb25lIENPUyBjb3JyZXNwb25kcyB0byBv bmUgTDIKKyAgQ0JNLgorCisqIFZDUFUgc2NoZWR1bGUKKworICBXaGVuIGNvbnRleHQgc3dpdGNo IGhhcHBlbnMsIHRoZSBDT1Mgb2YgVkNQVSBpcyB3cml0dGVuIHRvIHBlci10aHJlYWQgTVNSCisg IGBJQTMyX1BRUl9BU1NPQ2AsIGFuZCB0aGVuIGhhcmR3YXJlIGVuZm9yY2VzIGNhY2hlIGFsbG9j YXRpb24gYWNjb3JkaW5nIHRvCisgIHRoZSBjb3JyZXNwb25kaW5nIENCTS4KKworKiBNdWx0aS1z b2NrZXRzCisKKyAgRGlmZmVyZW50IHNvY2tldHMgbWF5IGhhdmUgZGlmZmVyZW50IENBVC9DRFAg Y2FwYWJpbGl0eSAoZS5nLiBtYXggQ09TKSBhbHRoLQorICBvdWdoIGl0IGlzIGNvbnNpc3RlbnQg b24gdGhlIHNhbWUgc29ja2V0LiBTbyB0aGUgY2FwYWJpbGl0eSBvZiBwZXItc29ja2V0IENBVC8K KyAgQ0RQIGlzIHNwZWNpZmllZC4KKworICAncHNyLWNhdC1zZXQnIGNhbiBzZXQgQ0JNIGZvciBv bmUgZG9tYWluIHBlciBzb2NrZXQuIE9uIGVhY2ggc29ja2V0LCB3ZSBtYWluLQorICB0YWluIGEg Q09TIGFycmF5IGZvciBhbGwgZG9tYWlucy4gT25lIGRvbWFpbiB1c2VzIG9uZSBDT1MgYXQgb25l IHRpbWUuIE9uZSBDT1MKKyAgc3RvcmVzIHRoZSBDQk0gb2YgdGhlIGRvbWFpbiB0byB3b3JrLiBT bywgd2hlbiBhIFZDUFUgb2YgdGhlIGRvbWFpbiBpcyBtaWdyYXQtCisgIGVkIGZyb20gc29ja2V0 IDEgdG8gc29ja2V0IDIsIGl0IGZvbGxvd3MgY29uZmlndXJhdGlvbiBvbiBzb2NrZXQgMi4KKwor ICBFLmcuIHVzZXIgc2V0cyBkb21haW4gMSBDQk0gb24gc29ja2V0IDEgdG8gMHg3ZiB3aGljaCB1 c2VzIENPUyA5IGJ1dCBzZXRzIGRvLQorICBtYWluIDEgQ0JNIG9uIHNvY2tldCAyIHRvIDB4M2Yg d2hpY2ggdXNlcyBDT1MgNy4gV2hlbiBWQ1BVIG9mIHRoaXMgZG9tYWluCisgIGlzIG1pZ3JhdGVk IGZyb20gc29ja2V0IDEgdG8gMiwgdGhlIENPUyBJRCB1c2VkIGlzIDcsIHRoYXQgbWVhbnMgMHgz ZiBpcyB0aGUKKyAgQ0JNIHRvIHdvcmsgZm9yIHRoaXMgZG9tYWluIDEgbm93LgorCisjIyBJbXBs ZW1lbnRhdGlvbiBEZXNjcmlwdGlvbgorCisqIEh5cGVydmlzb3IgaW50ZXJmYWNlczoKKworICAx LiBCb290IGxpbmUgcGFyYW1ldGVyICJwc3I9Y2F0IiBlbmFibGVzIEwyIENBVCBhbmQgTDMgQ0FU IGlmIGhhcmR3YXJlIHN1cHBvLQorICAgICBydGVkLiAicHNyPWNkcCIgZW5hYmxlcyBDRFAgaWYg aGFyZHdhcmUgc3VwcG9ydGVkLgorCisgIDIuIFNZU0NUTDoKKyAgICAgICAgICAtIFhFTl9TWVND VExfUFNSX0NBVF9nZXRfbDNfaW5mbzogR2V0IEwzIENBVC9DRFAgaW5mb3JtYXRpb24uCisgICAg ICAgICAgLSBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wyX2luZm86IEdldCBMMiBDQVQgaW5mb3Jt YXRpb24uCisKKyAgMy4gRE9NQ1RMOgorICAgICAgICAgIC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09Q X0dFVF9MM19DQk06IEdldCBMMyBDQk0gZm9yIGEgZG9tYWluLgorICAgICAgICAgIC0gWEVOX0RP TUNUTF9QU1JfQ0FUX09QX1NFVF9MM19DQk06IFNldCBMMyBDQk0gZm9yIGEgZG9tYWluLgorICAg ICAgICAgIC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MM19DT0RFOiBHZXQgQ0RQIENvZGUg Q0JNIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRf TDNfQ09ERTogU2V0IENEUCBDb2RlIENCTSBmb3IgYSBkb21haW4uCisgICAgICAgICAgLSBYRU5f RE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wzX0RBVEE6IEdldCBDRFAgRGF0YSBDQk0gZm9yIGEgZG9t YWluLgorICAgICAgICAgIC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19EQVRBOiBTZXQg Q0RQIERhdGEgQ0JNIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NB VF9PUF9HRVRfTDJfQ0JNOiBHZXQgTDIgQ0JNIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICAtIFhF Tl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDJfQ0JNOiBTZXQgTDIgQ0JNIGZvciBhIGRvbWFpbi4K KworKiB4bCBpbnRlcmZhY2VzOgorCisgIDEuIHBzci1jYXQtc2hvdyAtbFggZG9tYWluLWlkCisg ICAgICAgICAgU2hvdyBMWCBjYm0gZm9yIGEgZG9tYWluLgorICAgICAgICAgID0+IFhFTl9TWVND VExfUFNSX0NBVF9nZXRfbDNfaW5mbyAgICAvCisgICAgICAgICAgICAgWEVOX1NZU0NUTF9QU1Jf Q0FUX2dldF9sMl9pbmZvICAgIC8KKyAgICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRfT1Bf R0VUX0wzX0NCTSAgLworICAgICAgICAgICAgIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNf Q09ERSAvCisgICAgICAgICAgICAgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MM19EQVRBIC8K KyAgICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wyX0NCTQorCisgIDIuIHBz ci1jYXQtc2V0IC1sWCBkb21haW4taWQgY2JtCisgICAgICAgICAgU2V0IExYIGNibSBmb3IgYSBk b21haW4uCisgICAgICAgICAgPT4gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19DQk0gIC8K KyAgICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0NPREUgLworICAgICAg ICAgICAgIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNfREFUQSAvCisgICAgICAgICAgICAg WEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MMl9DQk0KKworICAzLiBwc3ItaHdpbmZvCisgICAg ICAgICAgU2hvdyBQU1IgSFcgaW5mb3JtYXRpb24sIGluY2x1ZGluZyBMMyBDQVQvQ0RQL0wyIENB VAorICAgICAgICAgID0+IFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDNfaW5mbyAvCisgICAgICAg ICAgICAgWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sMl9pbmZvCisKKyogS2V5IGRhdGEgc3RydWN0 dXJlOgorCisgICAxLiBGZWF0dXJlIEhXIGluZm8KKworICAgICAgYGBgCisgICAgICBzdHJ1Y3Qg cHNyX2NhdF9od19pbmZvIHsKKyAgICAgICAgICB1bnNpZ25lZCBpbnQgY2JtX2xlbjsKKyAgICAg ICAgICB1bnNpZ25lZCBpbnQgY29zX21heDsKKyAgICAgIH07CisgICAgICBgYGAKKworICAgICAg LSBNZW1iZXIgYGNibV9sZW5gCisKKyAgICAgICAgYGNibV9sZW5gIGlzIG9uZSBvZiB0aGUgaGFy ZHdhcmUgaW5mbyBvZiBDQVQuIEl0IG1lYW5zIHRoZSBtYXggbnVtYmVyCisgICAgICAgIG9mIGJp dHMgdG8gc2V0LgorCisgICAgICAtIE1lbWJlciBgY29zX21heGAKKworICAgICAgICBgY29zX21h eGAgaXMgb25lIG9mIHRoZSBoYXJkd2FyZSBpbmZvIG9mIENBVC4gSXQgbWVhbnMgdGhlIG1heCBu dW1iZXIKKyAgICAgICAgb2YgQ09TIHJlZ2lzdGVycy4KKworICAgMi4gRmVhdHVyZSBub2RlCisK KyAgICAgIGBgYAorICAgICAgc3RydWN0IGZlYXRfbm9kZSB7CisgICAgICAgICAgc3RydWN0IGZl YXRfb3BzIHsKKyAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICgqZ2V0X2Nvc19tYXgpKGNvbnN0 IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQpOworICAgICAgICAgICAgICBib29sICgqZ2V0X2ZlYXRf aW5mbykoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IGRhdGFbXSwgdW5zaWduZWQgaW50IGFycmF5X2xlbik7 CisgICAgICAgICAgICAgIHZvaWQgKCpnZXRfdmFsKShjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpm ZWF0LCB1bnNpZ25lZCBpbnQgY29zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51 bSBjYm1fdHlwZSB0eXBlLCB1aW50MzJfdCAqdmFsKTsKKyAgICAgICAgICAgICAgdm9pZCAoKmdl dF9vbGRfdmFsKSh1aW50MzJfdCB2YWxbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvbGRfY29zKTsKKyAgICAgICAgICAgICAgaW50ICgq c2V0X25ld192YWwpKHVpbnQzMl90IHZhbFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVudW0gY2JtX3R5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IG5ld192YWwpOworICAgICAgICAgICAgICBpbnQgKCpjb21wYXJl X3ZhbCkoY29uc3QgdWludDMyX3QgdmFsW10sIGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY29zKTsKKyAg ICAgICAgICAgICAgYm9vbCAoKmZpdHNfY29zX21heCkoY29uc3QgdWludDMyX3QgdmFsW10sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmZWF0X25vZGUg KmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBj b3MpOworICAgICAgICAgICAgICB2b2lkICgqd3JpdGVfbXNyKSh1bnNpZ25lZCBpbnQgY29zLCB1 aW50MzJfdCB2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gY2JtX3R5 cGUgdHlwZSwgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCk7CisgICAgICAgICAgfSBvcHM7CisKKyAg ICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICAgIHN0cnVjdCBwc3JfY2F0X2h3X2luZm8gY2F0 X2luZm87CisgICAgICAgICAgfSBpbmZvOworCisgICAgICAgICAgdWludDMyX3QgY29zX3JlZ192 YWxbTUFYX0NPU19SRUdfQ05UXTsKKyAgICAgICAgICB1bnNpZ25lZCBpbnQgY29zX251bTsKKyAg ICAgIH07CisgICAgICBgYGAKKworICAgICAgV2hlbiBhIFBTUiBlbmZvcmNlbWVudCBmZWF0dXJl IGlzIGVuYWJsZWQsIGl0IHdpbGwgYmUgYWRkZWQgaW50byBhCisgICAgICBmZWF0dXJlIGFycmF5 LgorCisgICAgICAtIE1lbWJlciBgb3BzYAorCisgICAgICAgIGBvcHNgIG1haW50YWlucyBhIGNh bGxiYWNrIGZ1bmN0aW9uIGxpc3Qgb2YgdGhlIGZlYXR1cmUuCisKKyAgICAgICAgV2UgYWJzdHJh Y3QgYWJvdmUgY2FsbGJhY2sgZnVuY3Rpb25zIHRvIGVuY2Fwc3VsYXRlIHRoZSBmZWF0dXJlIHNw ZWNpZmljCisgICAgICAgIGJlaGF2aW9ycyBpbnRvIHRoZW0uIFRoZW4sIGl0IGlzIGVhc3kgdG8g YWRkIGEgbmV3IGZlYXR1cmU6CisgICAgICAgICAgMSkgSW1wbGVtZW50IHN1Y2ggb3BzIGFuZCBj YWxsYmFjayBmdW5jdGlvbnMgZm9yIGV2ZXJ5IGZlYXR1cmUuCisgICAgICAgICAgMikgUmVnaXN0 ZXIgdGhlIG9wcyBpbnRvIGBzdHJ1Y3QgZmVhdF9ub2RlYC4KKyAgICAgICAgICAzKSBBZGQgdGhl IGZlYXR1cmUgaW50byBmZWF0dXJlIGFycmF5IGR1cmluZyBDUFUgaW5pdGlhbGl6YXRpb24uCisK KyAgICAgIC0gTWVtYmVyIGBpbmZvYAorCisgICAgICAgIGBpbmZvYCBtYWludGFpbnMgdGhlIGZl YXR1cmUgSFcgaW5mb3JtYXRpb24gd2hpY2ggaXMgcHJvdmlkZWQgdG8KKyAgICAgICAgcHNyX2h3 aW5mbyBjb21tYW5kLgorCisgICAgICAtIE1lbWJlciBgY29zX3JlZ192YWxgCisKKyAgICAgICAg YGNvc19yZWdfdmFsYCBpcyBhbiBhcnJheSB0byBtYWludGFpbiB0aGUgdmFsdWUgc2V0IGluIGFs bCBDT1MgcmVnaXN0ZXJzCisgICAgICAgIG9mIHRoZSBmZWF0dXJlLiBUaGUgYXJyYXkgaXMgaW5k ZXhlZCBieSBDT1MgSUQuCisKKyAgICAgIC0gTWVtYmVyIGBjb3NfbnVtYAorCisgICAgICAgIGBj b3NfbnVtYCBpcyB0aGUgbnVtYmVyIG9mIENPUyByZWdpc3RlcnMgdGhlIGZlYXR1cmUgdXNlcywg ZS5nLiBMMy9MMgorICAgICAgICBDQVQgdXNlcyAxIHJlZ2lzdGVyIGJ1dCBDRFAgdXNlcyAyIHJl Z2lzdGVycy4KKworICAgMy4gUGVyLXNvY2tldCBQU1IgZmVhdHVyZXMgaW5mb3JtYXRpb24gc3Ry dWN0dXJlCisKKyAgICAgIGBgYAorICAgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyB7CisgICAg ICAgICAgdW5zaWduZWQgaW50IGZlYXRfbWFzazsKKyAgICAgICAgICBzdHJ1Y3QgZmVhdF9ub2Rl ICpmZWF0dXJlc1tQU1JfU09DS0VUX01BWF9GRUFUXTsKKyAgICAgICAgICB1bnNpZ25lZCBpbnQg Y29zX3JlZltNQVhfQ09TX1JFR19OVU1dOworICAgICAgICAgIHNwaW5sb2NrX3QgcmVmX2xvY2s7 CisgICAgICB9OworICAgICAgYGBgCisKKyAgICAgIFdlIGNvbGxlY3QgYWxsIFBTUiBhbGxvY2F0 aW9uIGZlYXR1cmVzIGluZm9ybWF0aW9uIG9mIGEgc29ja2V0IGluIHRoaXMKKyAgICAgIGBzdHJ1 Y3QgcHNyX3NvY2tldF9pbmZvYC4KKworICAgICAgLSBNZW1iZXIgYGZlYXRfbWFza2AKKworICAg ICAgICBgZmVhdF9tYXNrYCBpcyBhIGJpdG1hcCwgdG8gaW5kaWNhdGUgd2hpY2ggZmVhdHVyZSBp cyBlbmFibGVkIG9uIGN1cnJlbnQKKyAgICAgICAgc29ja2V0LiBTZWUgdmFsdWVzIGRlZmluZWQg aW4gYGVudW0gcHNyX2ZlYXRfdHlwZWAuIEUuZy4KKworICAgICAgICBiaXQgMDogTDMgQ0FUIHN0 YXR1cy4KKyAgICAgICAgYml0IDE6IEwzIENEUCBzdGF0dXMuCisgICAgICAgIGJpdCAyOiBMMiBD QVQgc3RhdHVzLgorCisgICAgICAtIE1lbWJlciBgZmVhdHVyZXNgCisKKyAgICAgICAgYGZlYXR1 cmVzYCBpcyBhIHBvaW50ZXIgYXJyYXkgdG8gc2F2ZSBhbGwgZW5hYmxlZCBmZWF0dXJlcyBwb25p dGVycworICAgICAgICBhY2NvcmRpbmcgdG8gZmVhdHVyZSBwb3NpdGlvbiBkZWZpbmVkIGluIGBl bnVtIHBzcl9mZWF0X3R5cGVgLgorCisgICAgICAtIE1lbWJlciBgY29zX3JlZmAKKworICAgICAg ICBgY29zX3JlZmAgaXMgYW4gYXJyYXkgd2hpY2ggbWFpbnRhaW5zIHRoZSByZWZlcmVuY2Ugb2Yg b25lIENPUy4gSXQgbWFwcworICAgICAgICB0byBjb3NfcmVnX3ZhbFtNQVhfQ09TX1JFR19OVU1d IGluIGBzdHJ1Y3QgZmVhdF9ub2RlYC4gSWYgb25lIENPUyBpcworICAgICAgICB1c2VkIGJ5IG9u ZSBkb21haW4sIHRoZSBjb3JyZXNwb25kaW5nIHJlZmVyZW5jZSB3aWxsIGluY3JlYXNlIGJ5IG9u ZS4gSWYKKyAgICAgICAgYSBkb21haW4gcmVsZWFzZXMgdGhlIENPUywgdGhlIHJlZmVyZW5jZSB3 aWxsIGRlY3JlYXNlIGJ5IG9uZS4gVGhlIGFycmF5CisgICAgICAgIGlzIGluZGV4ZWQgYnkgQ09T IElELgorCisjIExpbWl0YXRpb25zCisKK0NBVC9DRFAgY2FuIG9ubHkgd29yayBvbiBIVyB3aGlj aCBlbmFibGVzIGl0KGNoZWNrIGJ5IENQVUlEKS4gU28gZmFyLCB0aGVyZSBpcworbm8gSFcgd2hp Y2ggZW5hYmxlcyBib3RoIEwyIENBVCBhbmQgTDMgQ0FUL0NEUC4gQnV0IFNXIGltcGxlbWVudGF0 aW9uIGhhcyBjb25zLQoraWRlcmVkIHN1Y2ggc2NlbmFyaW8gdG8gZW5hYmxlIGJvdGggTDIgQ0FU IGFuZCBMMyBDQVQvQ0RQLgorCisjIFRlc3RpbmcKKworV2UgY2FuIGV4ZWN1dGUgYWJvdmUgeGwg Y29tbWFuZHMgdG8gdmVyaWZ5IEwyIENBVCBhbmQgTDMgQ0FUL0NEUCBvbiBkaWZmZXJlbnQKK0hX cyBzdXBwb3J0IHRoZW0uCisKK0ZvciBleGFtcGxlOgorICAgIHJvb3RAOn4kIHhsIHBzci1od2lu Zm8gLS1jYXQKKyAgICBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgKENBVCk6IEwyCisgICAg U29ja2V0IElEICAgICAgIDogMAorICAgIE1heGltdW0gQ09TICAgICA6IDMKKyAgICBDQk0gbGVu Z3RoICAgICAgOiA4CisgICAgRGVmYXVsdCBDQk0gICAgIDogMHhmZgorCisgICAgcm9vdEA6fiQg eGwgcHNyLWNhdC1jYm0tc2V0IC1sMiAxIDB4N2YKKworICAgIHJvb3RAOn4kIHhsIHBzci1jYXQt c2hvdyAtbDIgMQorICAgIFNvY2tldCBJRCAgICAgICA6IDAKKyAgICBEZWZhdWx0IENCTSAgICAg OiAweGZmCisgICAgICAgSUQgICAgICAgICAgICAgICAgICAgICBOQU1FICAgICAgICAgICAgIENC TQorICAgICAgICAxICAgICAgICAgICAgICAgICB1YnVudHUxNCAgICAgICAgICAgIDB4N2YKKwor IyBBcmVhcyBmb3IgaW1wcm92ZW1lbnQKKworQSBoZXhhZGVjaW1hbCBudW1iZXIgaXMgdXNlZCB0 byBzZXQvc2hvdyBDQk0gZm9yIGEgZG9tYWluIG5vdy4gQWx0aG91Z2ggdGhpcworaXMgY29udmVu aWVudCB0byBjb3ZlciBvdmVybGFwL2lzb2xhdGVkIGJpdG1hc2sgcmVxdWlyZW1lbnQsIGl0IGlz IG5vdCB1c2VyLQorZnJpZW5kbHkuCisKK1RvIGltcHJvdmUgdGhpcywgdGhlIGxpYnhsIGludGVy ZmFjZXMgY2FuIGJlIHdyYXBwZWQgaW4gbGlidmlydCB0byBwcm92aWRlIG1vcmUKK3Vzci1mcmll bmRseSBpbnRlcmZhY2VzIHRvIHVzZXIsIGUuZy4gYSBwZXJjZW50YWdlIG51bWJlciBvZiB0aGUg Y2FjaGUgdG8gc2V0CithbmQgc2hvdy4KKworIyBLbm93biBpc3N1ZXMKKworTi9BCisKKyMgUmVm ZXJlbmNlcworCisiSU5URUzCriBSRVNPVVJDRSBESVJFQ1RPUiBURUNITk9MT0dZIChJTlRFTMKu IFJEVCkgQUxMT0NBVElPTiBGRUFUVVJFUyIgW0ludGVswq4gNjQgYW5kIElBLTMyIEFyY2hpdGVj dHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVyIE1hbnVhbHMsIHZvbDNdKGh0dHA6Ly93d3cuaW50ZWwu Y29tL2NvbnRlbnQvd3d3L3VzL2VuL3Byb2Nlc3NvcnMvYXJjaGl0ZWN0dXJlcy1zb2Z0d2FyZS1k ZXZlbG9wZXItbWFudWFscy5odG1sKQorCisjIEhpc3RvcnkKKworLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitE YXRlICAgICAgIFJldmlzaW9uIFZlcnNpb24gIE5vdGVzCistLS0tLS0tLS0tIC0tLS0tLS0tIC0t LS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIwMTYt MDgtMTIgMS4wICAgICAgWGVuIDQuOSAgRGVzaWduIGRvY3VtZW50IHdyaXR0ZW4KKzIwMTctMDIt MTMgMS43ICAgICAgWGVuIDQuOSAgQ2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMS4gTW9kaWZ5IHRoZSBkZXNpZ24gZG9jdW1lbnQgdG8gY292ZXIgTDMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ0FUL0NEUCBhbmQgTDIgQ0FUOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAyLiBGaXggdHlwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDMuIEFtZW5kIGRlc2NyaXB0aW9uIG9mIGBmZWF0X21hc2tgIHRvIG1ha2UKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaXQgY2xlYXJlcjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgNC4gT3RoZXIgbWlub3IgY2hhbmdlcy4KKzIwMTctMDItMTUgMS44ICAgICAgWGVuIDQu OSAgQ2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4gQWRkIGNvbnRlbnQg aW4gJ0FyZWFzIGZvciBpbXByb3ZlbWVudCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDIuIEFkanVzdCByZXZpc2lvbiBudW1iZXIuCisyMDE3LTAzLTE2IDEuOSAgICAgIFhlbiA0Ljkg IENoYW5nZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuIEFkZCAnQ01UJyBpbiAn VGVybWlub2xvZ3knOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLiBDaGFuZ2UgJ2Zl YXR1cmUgbGlzdCcgdG8gJ2ZlYXR1cmUgYXJyYXknLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAzLiBNb2RpZnkgZGF0YSBzdHJ1Y3R1cmUgZGVzY3JpcHRpb25zLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA0LiBBZGp1c3QgcmV2aXNpb24gbnVtYmVyLgorLS0tLS0tLS0tLSAt LS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0 cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=