From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v15 01/23] docs: create Cache Allocation Technology (CAT) and Code and Data Prioritization (CDP) feature document Date: Tue, 1 Aug 2017 16:48:32 +0800 Message-ID: <1501577334-7431-2-git-send-email-yi.y.sun@linux.intel.com> References: <1501577334-7431-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dcT67-0004sR-73 for xen-devel@lists.xenproject.org; Tue, 01 Aug 2017 09:04:15 +0000 In-Reply-To: <1501577334-7431-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, 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 djE1OgogICAgLSBhZGQgJ2FsdF90eXBlJyBpbiAnZmVhdF9wcm9wcycgc3RydWN0dXJlLgp2MTQ6 CiAgICAtIGZpeCBhIHR5cG8uCiAgICAgIChzdWdnZXN0ZWQgYnkgTWVuZyBYdSkKICAgIC0gbW9k aWZ5IHJldmlzaW9uLgp2MTE6CiAgICAtIG1vZGlmeSBkYXRhIHN0cnVjdHVyZSBkZXNjcmlwdGlv bnMgYWNjb3JkaW5nIHRvIGNvZGUgY2hhbmdlcy4KICAgIC0gbW9kaWZ5IHJldmlzaW9uLgp2OToK ICAgIC0gYWRkICdDTVQnIHRvIHRoZSBsaXN0IG9mIGFjcm9ueW1zLgogICAgICAoc3VnZ2VzdGVk IGJ5IFdlaSBMaXUpCiAgICAtIGNoYW5nZSBmZWF0dXJlIGxpc3QgdG8gZmVhdHVyZSBhcnJheS4K ICAgIC0gbW9kaWZ5IGRhdGEgc3RydWN0dXJlIGRlc2NyaXB0aW9ucyBhY2NvcmRpbmcgdG8gbGF0 ZXN0IGNvZGVzLgogICAgLSBtb2RpZnkgcmV2aXNpb24uCnY4OgogICAgLSBjaGFuZ2UgcmV2aXNp b24gaW5mby4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAt IGFkZCBjb250ZW50IGludCAnQXJlYXMgZm9yIGltcHJvdmVtZW50Jy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCnY3OgogICAgLSBjb3JyZWN0IHR5cG8uCiAgICAg IChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSByZXBsYWNlIGFwcGxp Y2F0aW9uL1ZNIHRvIGRvbWFpbi4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVr IFdpbGspCiAgICAtIGFtZW5kIGRlc2NyaXB0aW9uIG9mIGBmZWF0X21hc2tgIHRvIG1ha2UgaXQg Y2xlYXJlci4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAt IHVwZGF0ZSByZXZpc2lvbi4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdp bGspCiAgICAtIG90aGVyIG1pbm9yIGZpeGVzLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBS emVzenV0ZWsgV2lsaykKdjY6CiAgICAtIHdyaXRlIGEgbmV3IGZlYXR1cmUgZG9jdW1lbnQgdG8g Y292ZXIgTDMgQ0FUL0NEUCBhbmQgTDIgQ0FULgogICAgICAoc3VnZ2VzdGVkIGJ5IEtldmluIFRp YW4pCiAgICAtIGFkanVzdCAnVGVybWlub2xvZ3knIHBvc2l0aW9uIGluIGRvY3VtZW50LgogICAg ICAoc3VnZ2VzdGVkIGJ5IERhcmlvIEZhZ2dpb2xpKQogICAgLSBmaXggd29yZGluZ3MuCiAgICAg IChzdWdnZXN0ZWQgYnkgRGFyaW8gRmFnZ2lvbGksIEtldmluIFRpYW4gYW5kIEtvbnJhZCBSemVz enV0ZWsgV2lsaykKICAgIC0gYWRkIFNETSBjaGFwdGVyIHRpdGxlIGluIGNvbW1pdCBtZXNzYWdl LgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gYWRkIG1v cmUgZXhwbGFuYXRpb25zLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtldmluIFRpYW4pCnY0OgogICAg LSBjaGFuZ2UgZmlsZSBuYW1lIHRvIGJlIG1vcmUgZGVzY3JpcHRpdmUsICdpbnRlbF9wc3JfbDJf Y2F0LnBhbmRvYycuCiAgICAgIChzdWdnZXN0ZWQgYnkgRGFyaW8gRmFnZ2lvbGkpCiAgICAtIHJl bW92ZSAnRXh0JyBhbmQgJ05ldycgcHJlZml4ZXMuCiAgICAgIChzdWdnZXN0ZWQgYnkgRGFyaW8g RmFnZ2lvbGkpCiAgICAtIHJlbW92ZSBjaGFuZ2UgbG9nIGluIFJldmlzb24gcGFydC4KICAgICAg KHN1Z2dlc3RlZCBieSBEYXJpbyBGYWdnaW9saSkKICAgIC0gYWRqdXN0IFhlbiByZWxlYXNlIG51 bWJlciB0byA0LjkgdG8gc2hvdyB0aGlzIGZlYXR1cmUgdGFyZ2V0cyA0LjkuCiAgICAgIChzdWdn ZXN0ZWQgYnkgRGFyaW8gRmFnZ2lvbGkpCiAgICAtIHByb3ZpZGUgJ1Rlcm1pbm9sb2d5JyBhbmQg bW9yZSBzZWN0aW9ucy4KICAgICAgKHN1Z2dlc3RlZCBieSBEYXJpbyBGYWdnaW9saSkKICAgIC0g Zml4IHdvcmRpbmdzLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykK ICAgIC0gcmVtb3ZlIGNoYXB0ZXIgbnVtYmVyLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBS emVzenV0ZWsgV2lsaykKdjM6CiAgICAtIG1ha2UgZGVzaWduIGRvY3VtZW50IGJlIGEgcGF0Y2gu CiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQp2MjoKICAgIC0gcHJv dmlkZSBjaGFwdGVyIGZvciB0aGUgTDIgQ0FULgogICAgICAoc3VnZ2VzdGVkIGJ5IE1lbmcgWHUp Ci0tLQogZG9jcy9mZWF0dXJlcy9pbnRlbF9wc3JfY2F0X2NkcC5wYW5kb2MgfCA0NzEgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNDcxIGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2NzL2ZlYXR1cmVzL2ludGVsX3Bzcl9jYXRfY2Rw LnBhbmRvYwoKZGlmZiAtLWdpdCBhL2RvY3MvZmVhdHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFu ZG9jIGIvZG9jcy9mZWF0dXJlcy9pbnRlbF9wc3JfY2F0X2NkcC5wYW5kb2MKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYzM2ViOAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mv ZmVhdHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jCkBAIC0wLDAgKzEsNDcxIEBACislIElu dGVsIENhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neSBhbmQgQ29kZSBhbmQgRGF0YSBQcmlvcml0 aXphdGlvbiBGZWF0dXJlcworJSBSZXZpc2lvbiAxLjE1CisKK1xjbGVhcnBhZ2UKKworIyBCYXNp Y3MKKworLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICBTdGF0dXM6ICoqVGVjaCBQcmV2aWV3KioKKwor QXJjaGl0ZWN0dXJlKHMpOiBJbnRlbCB4ODYKKworICAgQ29tcG9uZW50KHMpOiBIeXBlcnZpc29y LCB0b29sc3RhY2sKKworICAgICAgIEhhcmR3YXJlOiBMMyBDQVQ6IEhhc3dlbGwgYW5kIGJleW9u ZCBDUFVzCisgICAgICAgICAgICAgICAgIENEUCAgIDogQnJvYWR3ZWxsIGFuZCBiZXlvbmQgQ1BV cworICAgICAgICAgICAgICAgICBMMiBDQVQ6IEF0b20gY29kZW5hbWUgR29sZG1vbnQgYW5kIGJl eW9uZCBDUFVzCistLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUZXJtaW5vbG9neQorCisqIENBVCAgICAgICAg IENhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neQorKiBDQk0gICAgICAgICBDYXBhY2l0eSBCaXRN YXNrcworKiBDRFAgICAgICAgICBDb2RlIGFuZCBEYXRhIFByaW9yaXRpemF0aW9uCisqIENNVCAg ICAgICAgIENhY2hlIE1vbml0b3JpbmcgVGVjaG5vbG9neQorKiBDT1MvQ0xPUyAgICBDbGFzcyBv ZiBTZXJ2aWNlCisqIE1TUnMgICAgICAgIE1hY2hpbmUgU3BlY2lmaWMgUmVnaXN0ZXJzCisqIFBT UiAgICAgICAgIEludGVsIFBsYXRmb3JtIFNoYXJlZCBSZXNvdXJjZQorCisjIE92ZXJ2aWV3CisK K0ludGVsIHByb3ZpZGVzIGEgc2V0IG9mIGFsbG9jYXRpb24gY2FwYWJpbGl0aWVzIGluY2x1ZGlu ZyBDYWNoZSBBbGxvY2F0YXRpb24KK1RlY2hub2xvZ3kgKENBVCkgYW5kIENvZGUgYW5kIERhdGEg UHJpb3JpdGl6YXRpb24gKENEUCkuCisKK0NBVCBhbGxvd3MgYW4gT1Mgb3IgaHlwZXJ2aXNvciB0 byBjb250cm9sIGFsbG9jYXRpb24gb2YgYSBDUFUncyBzaGFyZWQgY2FjaGUKK2Jhc2VkIG9uIGFw cGxpY2F0aW9uL2RvbWFpbiBwcmlvcml0eSBvciBDbGFzcyBvZiBTZXJ2aWNlIChDT1MpLiBFYWNo IENPUyBpcworY29uZmlndXJlZCB1c2luZyBjYXBhY2l0eSBiaXRtYXNrcyAoQ0JNcykgd2hpY2gg cmVwcmVzZW50IGNhY2hlIGNhcGFjaXR5IGFuZAoraW5kaWNhdGUgdGhlIGRlZ3JlZSBvZiBvdmVy bGFwIGFuZCBpc29sYXRpb24gYmV0d2VlbiBjbGFzc2VzLiBPbmNlIENBVCBpcyBjby0KK25maWd1 cmVkLCB0aGUgcHJvY2Vzc29yIGFsbG93cyBhY2Nlc3MgdG8gcG9ydGlvbnMgb2YgY2FjaGUgYWNj b3JkaW5nIHRvIHRoZQorZXN0YWJsaXNoZWQgQ09TLiBJbnRlbCBYZW9uIHByb2Nlc3NvciBFNSB2 NCBmYW1pbHkgKGFuZCBzb21lIG90aGVycykgaW50cm9kdWNlCitjYXBhYmlsaXRpZXMgdG8gY29u ZmlndXJlIGFuZCBtYWtlIHVzZSBvZiB0aGUgQ0FUIG1lY2hhbmlzbSBvbiB0aGUgTDMgY2FjaGUu CitJbnRlbCBHb2xkbW9udCBwcm9jZXNzb3IgcHJvdmlkZXMgc3VwcG9ydCBmb3IgY29udHJvbCBv dmVyIHRoZSBMMiBjYWNoZS4KKworQ29kZSBhbmQgRGF0YSBQcmlvcml0aXphdGlvbiAoQ0RQKSBU ZWNobm9sb2d5IGlzIGFuIGV4dGVuc2lvbiBvZiBDQVQuIENEUAorZW5hYmxlcyBpc29sYXRpb24g YW5kIHNlcGFyYXRlIHByaW9yaXRpemF0aW9uIG9mIGNvZGUgYW5kIGRhdGEgZmV0Y2hlcyB0bwor dGhlIEwzIGNhY2hlIGluIGEgU1cgY29uZmlndXJhYmxlIG1hbm5lciwgd2hpY2ggY2FuIGVuYWJs ZSB3b3JrbG9hZCBwcmlvcml0LQoraXphdGlvbiBhbmQgdHVuaW5nIG9mIGNhY2hlIGNhcGFjaXR5 IHRvIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIHdvcmtsb2FkLgorQ0RQIGV4dGVuZHMgQ0FU IGJ5IHByb3ZpZGluZyBzZXBhcmF0ZSBjb2RlIGFuZCBkYXRhIG1hc2tzIHBlciBDbGFzcyBvZiBT ZXJ2aWNlCisoQ09TKS4gV2hlbiBTVyBjb25maWd1cmVzIHRvIGVuYWJsZSBDRFAsIEwzIENBVCBp cyBkaXNhYmxlZC4KKworIyBVc2VyIGRldGFpbHMKKworKiBGZWF0dXJlIEVuYWJsaW5nOgorCisg IEFkZCAicHNyPWNhdCIgdG8gYm9vdCBsaW5lIHBhcmFtZXRlciB0byBlbmFibGUgYWxsIHN1cHBv cnRlZCBsZXZlbCBDQVQgZmVhdHUtCisgIHJlcy4gQWRkICJwc3I9Y2RwIiB0byBlbmFibGUgTDMg Q0RQIGJ1dCBkaXNhYmxlcyBMMyBDQVQgYnkgU1cuCisKKyogeGwgaW50ZXJmYWNlczoKKworICAx LiBgcHNyLWNhdC1zaG93IFtPUFRJT05TXSBkb21haW4taWRgOgorCisgICAgIFNob3cgTDIgQ0FU IG9yIEwzIENBVC9DRFAgQ0JNIG9mIHRoZSBkb21haW4gZGVzaWduYXRlZCBieSBYZW4gZG9tYWlu LWlkLgorCisgICAgIE9wdGlvbiBgLWxgOgorICAgICBgLWwyYDogU2hvdyBjYm0gZm9yIEwyIGNh Y2hlLgorICAgICBgLWwzYDogU2hvdyBjYm0gZm9yIEwzIGNhY2hlLgorCisgICAgIElmIGAtbFhg IGlzIHNwZWNpZmllZCBhbmQgTFggaXMgbm90IHN1cHBvcnRlZCwgcHJpbnQgZXJyb3IuCisgICAg IElmIG5vIGAtbGAgaXMgc3BlY2lmaWVkLCBsZXZlbCAzIGlzIHRoZSBkZWZhdWx0IG9wdGlvbi4K KworICAyLiBgcHNyLWNhdC1zZXQgW09QVElPTlNdIGRvbWFpbi1pZCBjYm1gOgorCisgICAgIFNl dCBMMiBDQVQgb3IgTDMgQ0FUL0NEUCBDQk0gdG8gdGhlIGRvbWFpbiBkZXNpZ25hdGVkIGJ5IFhl biBkb21haW4taWQuCisKKyAgICAgT3B0aW9uIGAtc2A6IFNwZWNpZnkgdGhlIHNvY2tldCB0byBw cm9jZXNzLCBvdGhlcndpc2UgYWxsIHNvY2tldHMgYXJlCisgICAgIHByb2Nlc3NlZC4KKworICAg ICBPcHRpb24gYC1sYDoKKyAgICAgYC1sMmA6IFNwZWNpZnkgY2JtIGZvciBMMiBjYWNoZS4KKyAg ICAgYC1sM2A6IFNwZWNpZnkgY2JtIGZvciBMMyBjYWNoZS4KKworICAgICBJZiBgLWxYYCBpcyBz cGVjaWZpZWQgYW5kIExYIGlzIG5vdCBzdXBwb3J0ZWQsIHByaW50IGVycm9yLgorICAgICBJZiBu byBgLWxgIGlzIHNwZWNpZmllZCwgbGV2ZWwgMyBpcyB0aGUgZGVmYXVsdCBvcHRpb24uCisKKyAg ICAgT3B0aW9uIGAtY2Agb3IgYC1kYDoKKyAgICAgYC1jYDogU2V0IEwzIENEUCBjb2RlIGNibS4K KyAgICAgYC1kYDogU2V0IEwzIENEUCBkYXRhIGNibS4KKworICAzLiBgcHNyLWh3aW5mbyBbT1BU SU9OU11gOgorCisgICAgIFNob3cgQ01UICYgTDIgQ0FUICYgTDMgQ0FUL0NEUCBIVyBpbmZvcm1h dGlvbiBvbiBldmVyeSBzb2NrZXQuCisKKyAgICAgT3B0aW9uIGAtbSwgLS1jbXRgOiBTaG93IENh Y2hlIE1vbml0b3JpbmcgVGVjaG5vbG9neSAoQ01UKSBoYXJkd2FyZSBpbmZvLgorCisgICAgIE9w dGlvbiBgLWEsIC0tY2F0YDogU2hvdyBDQVQvQ0RQIGhhcmR3YXJlIGluZm8uCisKKyMgVGVjaG5p Y2FsIGRldGFpbHMKKworTDMgQ0FUL0NEUCBhbmQgTDIgQ0FUIGFyZSBhbGwgbWVtYmVycyBvZiBJ bnRlbCBQU1IgZmVhdHVyZXMsIHRoZXkgc2hhcmUgdGhlIGJhc2UKK1BTUiBpbmZyYXN0cnVjdHVy ZSBpbiBYZW4uCisKKyMjIEhhcmR3YXJlIHBlcnNwZWN0aXZlCisKKyAgQ0FUL0NEUCBkZWZpbmVz IGEgcmFuZ2Ugb2YgTVNScyB0byBhc3NpZ24gZGlmZmVyZW50IGNhY2hlIGFjY2VzcyBwYXR0ZXJu cworICB3aGljaCBhcmUga25vd24gYXMgQ0JNcywgZWFjaCBDQk0gaXMgYXNzb2NpYXRlZCB3aXRo IGEgQ09TLgorCisgIGBgYAorICBFLmcuIEwyIENBVDoKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAg SUEzMl9QUVJfQVNTT0MgICAgICAgfCBNU1IgKHBlciBzb2NrZXQpICAgICAgICAgICB8ICAgIEFk ZHJlc3MgICAgIHwKKyAgICstLS0tKy0tLSstLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgfENPU3wgICAgICAgfCAgICAg fCBJQTMyX0wyX1FPU19NQVNLXzAgICAgICAgICB8ICAgICAweEQxMCAgICAgIHwKKyAgICstLS0t Ky0tLSstLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAgICAgICAgICDilJQtLS0tLS0tLS0tLS0tPiB8IC4uLiAgICAgICAgICAgICAg ICAgICAgICAgIHwgIC4uLiAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAg ICAgICAgICAgICAgICAgICB8IElBMzJfTDJfUU9TX01BU0tfbiAgICAgICAgIHwgMHhEMTArbiAo bjw2NCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICBgYGAKKworICBMMyBDQVQvQ0RQIHVzZXMgYSBy YW5nZSBvZiBNU1JzIGZyb20gMHhDOTAgfiAweEM5MCtuIChuPDEyOCkuCisKKyAgTDIgQ0FUIHVz ZXMgYSByYW5nZSBvZiBNU1JzIGZyb20gMHhEMTAgfiAweEQxMCtuIChuPDY0KSwgZm9sbG93aW5n IHRoZSBMMworICBDQVQvQ0RQIE1TUnMsIHNldHRpbmcgZGlmZmVyZW50IEwyIGNhY2hlIGFjY2Vz c2luZyBwYXR0ZXJucyBmcm9tIEwzIGNhY2hlIGlzCisgIHN1cHBvcnRlZC4KKworICBFdmVyeSBN U1Igc3RvcmVzIGEgQ0JNIHZhbHVlLiBBIGNhcGFjaXR5IGJpdG1hc2sgKENCTSkgcHJvdmlkZXMg YSBoaW50IHRvIHRoZQorICBoYXJkd2FyZSBpbmRpY2F0aW5nIHRoZSBjYWNoZSBzcGFjZSBhIGRv bWFpbiBzaG91bGQgYmUgbGltaXRlZCB0byBhcyB3ZWxsIGFzCisgIHByb3ZpZGluZyBhbiBpbmRp Y2F0aW9uIG9mIG92ZXJsYXAgYW5kIGlzb2xhdGlvbiBpbiB0aGUgQ0FULWNhcGFibGUgY2FjaGUg ZnJvbQorICBvdGhlciBkb21haW5zIGNvbnRlbmRpbmcgZm9yIHRoZSBjYWNoZS4KKworICBTYW1w bGUgY2FjaGUgY2FwYWNpdHkgYml0bWFza3MgZm9yIGEgYml0bGVuZ3RoIG9mIDggYXJlIHNob3du IGJlbG93LiBQbGVhc2UKKyAgbm90ZSB0aGF0IGFsbCAoYW5kIG9ubHkpIGNvbnRpZ3VvdXMgJzEn IGNvbWJpbmF0aW9ucyBhcmUgYWxsb3dlZCAoZS5nLiBGRkZGSCwKKyAgMEZGMEgsIDAwM0NILCBl dGMuKS4KKworICBgYGAKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0t LSstLS0tKworICAgICAgIHwgTTcgfCBNNiB8IE01IHwgTTQgfCBNMyB8IE0yIHwgTTEgfCBNMCB8 CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09T MCB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBEZWZhdWx0IEJpdG1h c2sKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICBD T1MxIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8CisgICAgICAgKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09TMiB8IEEgIHwgQSAg fCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfAorICAgICAgICstLS0tKy0tLS0rLS0tLSst LS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSst LS0tKy0tLS0rLS0tLSstLS0tKworICAgICAgIHwgTTcgfCBNNiB8IE01IHwgTTQgfCBNMyB8IE0y IHwgTTEgfCBNMCB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r LS0tLSsKKyAgQ09TMCB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBP dmVybGFwcGVkIEJpdG1hc2sKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r LS0tLSstLS0tKworICBDT1MxIHwgICAgfCAgICB8ICAgIHwgICAgfCBBICB8IEEgIHwgQSAgfCBB ICB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAg Q09TMiB8ICAgIHwgICAgfCAgICB8ICAgIHwgICAgfCAgICB8IEEgIHwgQSAgfAorICAgICAgICst LS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisKKyAgICAgICArLS0tLSst LS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICAgICAgIHwgTTcgfCBNNiB8IE01 IHwgTTQgfCBNMyB8IE0yIHwgTTEgfCBNMCB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0r LS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09TMCB8IEEgIHwgQSAgfCBBICB8IEEgIHwgICAgfCAg ICB8ICAgIHwgICAgfCBJc29sYXRlZCBCaXRtYXNrCisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09TMSB8ICAgIHwgICAgfCAgICB8ICAgIHwgQSAg fCBBICB8ICAgIHwgICAgfAorICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSst LS0tKy0tLS0rCisgIENPUzIgfCAgICB8ICAgIHwgICAgfCAgICB8ICAgIHwgICAgfCBBICB8IEEg IHwKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICBg YGAKKworICBXZSBjYW4gZ2V0IHRoZSBDQk0gbGVuZ3RoIHRocm91Z2ggQ1BVSUQuIFRoZSBkZWZh dWx0IHZhbHVlIG9mIENCTSBpcyBjYWxjdWwtCisgIGF0ZWQgYnkgYCgxdWxsIDw8IGNibV9sZW4p IC0gMWAuIFRoYXQgaXMgYSBmdWxseSBvcGVuIGJpdG1hc2ssIGFsbCBvbmVzIGJpdG0tCisgIGFz ay4gVGhlIENPU1swXSBhbHdheXMgc3RvcmVzIHRoZSBkZWZhdWx0IHZhbHVlIHdpdGhvdXQgY2hh bmdlLgorCisgIFRoZXJlIGlzIGEgYElBMzJfUFFSX0FTU09DYCByZWdpc3RlciB3aGljaCBzdG9y ZXMgdGhlIENPUyBJRCBvZiB0aGUgVkNQVS4gSFcKKyAgZW5mb3JjZXMgY2FjaGUgYWxsb2NhdGlv biBhY2NvcmRpbmcgdG8gdGhlIGNvcnJlc3BvbmRpbmcgQ0JNLgorCisjIyBUaGUgcmVsYXRpb25z aGlwIGJldHdlZW4gTDMgQ0FUL0NEUCBhbmQgTDIgQ0FUCisKKyAgSFcgbWF5IHN1cHBvcnQgYWxs IGZlYXR1cmVzLiBCeSBkZWZhdWx0LCBDRFAgaXMgZGlzYWJsZWQgb24gdGhlIHByb2Nlc3Nvci4K KyAgSWYgdGhlIEwzIENBVCBNU1JzIGFyZSB1c2VkIHdpdGhvdXQgZW5hYmxpbmcgQ0RQLCB0aGUg cHJvY2Vzc29yIG9wZXJhdGVzIGluCisgIGEgdHJhZGl0aW9uYWwgQ0FULW9ubHkgbW9kZS4gV2hl biBDRFAgaXMgZW5hYmxlZDoKKyAgKiB0aGUgQ0FUIG1hc2sgTVNScyBhcmUgcmUtbWFwcGVkIGlu dG8gaW50ZXJsZWF2ZWQgcGFpcnMgb2YgbWFzayBNU1JzIGZvcgorICAgIGRhdGEgb3IgY29kZSBm ZXRjaGVzLgorICAqIHRoZSByYW5nZSBvZiBDT1MgZm9yIENBVCBpcyByZS1pbmRleGVkLCB3aXRo IHRoZSBsb3dlci1oYWxmIG9mIHRoZSBDT1MKKyAgICByYW5nZSBhdmFpbGFibGUgZm9yIENEUC4K KworICBMMiBDQVQgaXMgaW5kZXBlbmRlbnQgb2YgTDMgQ0FUL0NEUCwgd2hpY2ggbWVhbnMgTDIg Q0FUIGNhbiBiZSBlbmFibGVkIHdoaWxlCisgIEwzIENBVC9DRFAgaXMgZGlzYWJsZWQsIG9yIEwy IENBVCBhbmQgTDMgQ0FUL0NEUCBhcmUgYm90aCBlbmFibGVkLgorCisgIEFzIGEgcmVxdWlyZW1l bnQsIHRoZSBiaXRzIG9mIENCTSBvZiBDQVQvQ0RQIG11c3QgYmUgY29udGludW91cy4KKworICBO LkIuIEwyIENBVCBhbmQgTDMgQ0FUL0NEUCBzaGFyZSB0aGUgc2FtZSBDT1MgZmllbGQgaW4gdGhl IHNhbWUgYXNzb2NpYXRlCisgIHJlZ2lzdGVyIGBJQTMyX1BRUl9BU1NPQ2AsIHdoaWNoIG1lYW5z IG9uZSBDT1MgaXMgYXNzb2NpYXRlZCB3aXRoIGEgcGFpciBvZgorICBMMiBDQVQgQ0JNIGFuZCBM MyBDQVQvQ0RQIENCTS4KKworICBCZXNpZGVzLCB0aGUgbWF4IENPUyBvZiBMMiBDQVQgbWF5IGJl IGRpZmZlcmVudCBmcm9tIEwzIENBVC9DRFAgKG9yIG90aGVyCisgIFBTUiBmZWF0dXJlcyBpbiBm dXR1cmUpLiBJbiBzb21lIGNhc2VzLCBhIGRvbWFpbiBpcyBwZXJtaXR0ZWQgdG8gaGF2ZSBhIENP UworICB0aGF0IGlzIGJleW9uZCBvbmUgKG9yIG1vcmUpIG9mIFBTUiBmZWF0dXJlcyBidXQgd2l0 aGluIHRoZSBvdGhlcnMuIEZvcgorICBpbnN0YW5jZSwgbGV0J3MgYXNzdW1lIHRoZSBtYXggQ09T IG9mIEwyIENBVCBpcyA4IGJ1dCB0aGUgbWF4IENPUyBvZiBMMworICBDQVQgaXMgMTYsIHdoZW4g YSBkb21haW4gaXMgYXNzaWduZWQgOSBhcyBDT1MsIHRoZSBMMyBDQVQgQ0JNIGFzc29jaWF0ZWQg dG8KKyAgQ09TIDkgd291bGQgYmUgZW5mb3JjZWQsIGJ1dCBmb3IgTDIgQ0FULCB0aGUgSFcgd29y a3MgYXMgZGVmYXVsdCB2YWx1ZSBpcworICBzZXQgc2luY2UgQ09TIDkgaXMgYmV5b25kIHRoZSBt YXggQ09TICg4KSBvZiBMMiBDQVQuCisKKyMjIERlc2lnbiBPdmVydmlldworCisqIENvcmUgQ09T L0NCTSBhc3NvY2lhdGlvbgorCisgIFdoZW4gZW5mb3JjaW5nIENBVC9DRFAsIGFsbCBjb3JlcyBv ZiBkb21haW5zIGhhdmUgdGhlIHNhbWUgZGVmYXVsdCBDT1MgKENPUzApCisgIHdoaWNoIGlzIGFz c29jaWF0ZWQgd2l0aCB0aGUgZnVsbHkgb3BlbiBDQk0gKGFsbCBvbmVzIGJpdG1hc2spIHRvIGFj Y2VzcyBhbGwKKyAgY2FjaGUuIFRoZSBkZWZhdWx0IENPUyBpcyB1c2VkIG9ubHkgaW4gaHlwZXJ2 aXNvciBhbmQgaXMgdHJhbnNwYXJlbnQgdG8gdG9vbAorICBzdGFjayBhbmQgdXNlci4KKworICBT eXN0ZW0gYWRtaW5pc3RyYXRvciBjYW4gY2hhbmdlIFBTUiBhbGxvY2F0aW9uIHBvbGljeSBhdCBy dW50aW1lIGJ5IHRvb2wgc3RhY2suCisgIFNpbmNlIEwyIENBVCBzaGFyZXMgQ09TIHdpdGggTDMg Q0FUL0NEUCwgYSBDT1MgY29ycmVzcG9uZHMgdG8gYSAyLXR1cGxlLCBsaWtlCisgIFtMMiBDQk0s IEwzIENCTV0gd2l0aCBvbmx5LUNBVCBlbmFibGVkLCB3aGVuIENEUCBpcyBlbmFibGVkLCBvbmUg Q09TIGNvcnJlc3BvLQorICBuZHMgdG8gYSAzLXR1cGxlLCBsaWtlIFtMMiBDQk0sIEwzIENvZGVf Q0JNLCBMMyBEYXRhX0NCTV0uIElmIG5laXRoZXIgTDMgQ0FUCisgIG5vciBMMyBDRFAgaXMgZW5h YmxlZCwgdGhpbmdzIHdvdWxkIGJlIGVhc2llciwgb25lIENPUyBjb3JyZXNwb25kcyB0byBvbmUg TDIKKyAgQ0JNLgorCisqIFZDUFUgc2NoZWR1bGUKKworICBXaGVuIGNvbnRleHQgc3dpdGNoIGhh cHBlbnMsIHRoZSBDT1Mgb2YgVkNQVSBpcyB3cml0dGVuIHRvIHBlci10aHJlYWQgTVNSCisgIGBJ QTMyX1BRUl9BU1NPQ2AsIGFuZCB0aGVuIGhhcmR3YXJlIGVuZm9yY2VzIGNhY2hlIGFsbG9jYXRp b24gYWNjb3JkaW5nIHRvCisgIHRoZSBjb3JyZXNwb25kaW5nIENCTS4KKworKiBNdWx0aS1zb2Nr ZXRzCisKKyAgRGlmZmVyZW50IHNvY2tldHMgbWF5IGhhdmUgZGlmZmVyZW50IENBVC9DRFAgY2Fw YWJpbGl0eSAoZS5nLiBtYXggQ09TKSBhbHRoLQorICBvdWdoIGl0IGlzIGNvbnNpc3RlbnQgb24g dGhlIHNhbWUgc29ja2V0LiBTbyB0aGUgY2FwYWJpbGl0eSBvZiBwZXItc29ja2V0IENBVC8KKyAg Q0RQIGlzIHNwZWNpZmllZC4KKworICAncHNyLWNhdC1zZXQnIGNhbiBzZXQgQ0JNIGZvciBvbmUg ZG9tYWluIHBlciBzb2NrZXQuIE9uIGVhY2ggc29ja2V0LCB3ZSBtYWluLQorICB0YWluIGEgQ09T IGFycmF5IGZvciBhbGwgZG9tYWlucy4gT25lIGRvbWFpbiB1c2VzIG9uZSBDT1MgYXQgb25lIHRp bWUuIE9uZSBDT1MKKyAgc3RvcmVzIHRoZSBDQk0gb2YgdGhlIGRvbWFpbiB0byB3b3JrLiBTbywg d2hlbiBhIFZDUFUgb2YgdGhlIGRvbWFpbiBpcyBtaWdyYXQtCisgIGVkIGZyb20gc29ja2V0IDEg dG8gc29ja2V0IDIsIGl0IGZvbGxvd3MgY29uZmlndXJhdGlvbiBvbiBzb2NrZXQgMi4KKworICBF LmcuIHVzZXIgc2V0cyBkb21haW4gMSBDQk0gb24gc29ja2V0IDEgdG8gMHg3ZiB3aGljaCB1c2Vz IENPUyA5IGJ1dCBzZXRzIGRvLQorICBtYWluIDEgQ0JNIG9uIHNvY2tldCAyIHRvIDB4M2Ygd2hp Y2ggdXNlcyBDT1MgNy4gV2hlbiBWQ1BVIG9mIHRoaXMgZG9tYWluCisgIGlzIG1pZ3JhdGVkIGZy b20gc29ja2V0IDEgdG8gMiwgdGhlIENPUyBJRCB1c2VkIGlzIDcsIHRoYXQgbWVhbnMgMHgzZiBp cyB0aGUKKyAgQ0JNIHRvIHdvcmsgZm9yIHRoaXMgZG9tYWluIDEgbm93LgorCisjIyBJbXBsZW1l bnRhdGlvbiBEZXNjcmlwdGlvbgorCisqIEh5cGVydmlzb3IgaW50ZXJmYWNlczoKKworICAxLiBC b290IGxpbmUgcGFyYW1ldGVyICJwc3I9Y2F0IiBlbmFibGVzIEwyIENBVCBhbmQgTDMgQ0FUIGlm IGhhcmR3YXJlIHN1cHBvLQorICAgICBydGVkLiAicHNyPWNkcCIgZW5hYmxlcyBDRFAgaWYgaGFy ZHdhcmUgc3VwcG9ydGVkLgorCisgIDIuIFNZU0NUTDoKKyAgICAgICAgICAtIFhFTl9TWVNDVExf UFNSX0NBVF9nZXRfbDNfaW5mbzogR2V0IEwzIENBVC9DRFAgaW5mb3JtYXRpb24uCisgICAgICAg ICAgLSBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wyX2luZm86IEdldCBMMiBDQVQgaW5mb3JtYXRp b24uCisKKyAgMy4gRE9NQ1RMOgorICAgICAgICAgIC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dF VF9MM19DQk06IEdldCBMMyBDQk0gZm9yIGEgZG9tYWluLgorICAgICAgICAgIC0gWEVOX0RPTUNU TF9QU1JfQ0FUX09QX1NFVF9MM19DQk06IFNldCBMMyBDQk0gZm9yIGEgZG9tYWluLgorICAgICAg ICAgIC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MM19DT0RFOiBHZXQgQ0RQIENvZGUgQ0JN IGZvciBhIGRvbWFpbi4KKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNf Q09ERTogU2V0IENEUCBDb2RlIENCTSBmb3IgYSBkb21haW4uCisgICAgICAgICAgLSBYRU5fRE9N Q1RMX1BTUl9DQVRfT1BfR0VUX0wzX0RBVEE6IEdldCBDRFAgRGF0YSBDQk0gZm9yIGEgZG9tYWlu LgorICAgICAgICAgIC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19EQVRBOiBTZXQgQ0RQ IERhdGEgQ0JNIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9P UF9HRVRfTDJfQ0JNOiBHZXQgTDIgQ0JNIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICAtIFhFTl9E T01DVExfUFNSX0NBVF9PUF9TRVRfTDJfQ0JNOiBTZXQgTDIgQ0JNIGZvciBhIGRvbWFpbi4KKwor KiB4bCBpbnRlcmZhY2VzOgorCisgIDEuIHBzci1jYXQtc2hvdyAtbFggZG9tYWluLWlkCisgICAg ICAgICAgU2hvdyBMWCBjYm0gZm9yIGEgZG9tYWluLgorICAgICAgICAgID0+IFhFTl9TWVNDVExf UFNSX0NBVF9nZXRfbDNfaW5mbyAgICAvCisgICAgICAgICAgICAgWEVOX1NZU0NUTF9QU1JfQ0FU X2dldF9sMl9pbmZvICAgIC8KKyAgICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VU X0wzX0NCTSAgLworICAgICAgICAgICAgIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfQ09E RSAvCisgICAgICAgICAgICAgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MM19EQVRBIC8KKyAg ICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wyX0NCTQorCisgIDIuIHBzci1j YXQtc2V0IC1sWCBkb21haW4taWQgY2JtCisgICAgICAgICAgU2V0IExYIGNibSBmb3IgYSBkb21h aW4uCisgICAgICAgICAgPT4gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19DQk0gIC8KKyAg ICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0NPREUgLworICAgICAgICAg ICAgIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNfREFUQSAvCisgICAgICAgICAgICAgWEVO X0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MMl9DQk0KKworICAzLiBwc3ItaHdpbmZvCisgICAgICAg ICAgU2hvdyBQU1IgSFcgaW5mb3JtYXRpb24sIGluY2x1ZGluZyBMMyBDQVQvQ0RQL0wyIENBVAor ICAgICAgICAgID0+IFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDNfaW5mbyAvCisgICAgICAgICAg ICAgWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sMl9pbmZvCisKKyogS2V5IGRhdGEgc3RydWN0dXJl OgorCisgICAxLiBGZWF0dXJlIHByb3BlcnRpZXMKKworICAgICAgYGBgCisgICAgICBzdGF0aWMg Y29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgeworICAgICAgICAgIHVuc2lnbmVkIGludCBjb3NfbnVt OworICAgICAgICAgIGVudW0gY2JtX3R5cGUgdHlwZVtQU1JfTUFYX0NPU19OVU1dOworICAgICAg ICAgIGVudW0gY2JtX3R5cGUgYWx0X3R5cGU7CisgICAgICAgICAgYm9vbCAoKmdldF9mZWF0X2lu Zm8pKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IGRhdGFbXSwgdW5zaWduZWQgaW50IGFycmF5X2xlbik7CisgICAg ICAgICAgdm9pZCAoKndyaXRlX21zcikodW5zaWduZWQgaW50IGNvcywgdWludDMyX3QgdmFsLCBl bnVtIGNibV90eXBlIHR5cGUpOworICAgICAgfSAqZmVhdF9wcm9wc1tQU1JfU09DS0VUX0ZFQVRf TlVNXTsKKyAgICAgIGBgYAorCisgICAgICBFdmVyeSBmZWF0dXJlIGhhcyBpdHMgb3duIHByb3Bl cnRpZXMsIGUuZy4gc29tZSBkYXRhIGFuZCBhY3Rpb25zLiBBCisgICAgICBmZWF0dXJlIHByb3Bl cnR5IHBvaW50ZXIgYXJyYXkgaXMgZGVjbGFyZWQgdG8gc2F2ZSBldmVyeSBmZWF0dXJlJ3MKKyAg ICAgIHByb3BlcnRpZXMuCisKKyAgICAgIC0gTWVtYmVyIGBjb3NfbnVtYAorCisgICAgICAgIGBj b3NfbnVtYCBpcyB0aGUgbnVtYmVyIG9mIENPUyByZWdpc3RlcnMgdGhlIGZlYXR1cmUgdXNlcywg ZS5nLiBMMy9MMgorICAgICAgICBDQVQgdXNlcyAxIHJlZ2lzdGVyIGJ1dCBDRFAgdXNlcyAyIHJl Z2lzdGVycy4KKworICAgICAgLSBNZW1iZXIgYHR5cGVgCisKKyAgICAgICAgYHR5cGVgIGlzIGFu IGFycmF5IHRvIHNhdmUgYWxsICdlbnVtIGNibV90eXBlJyB2YWx1ZXMgb2YgdGhlIGZlYXR1cmUu CisgICAgICAgIEl0IGlzIHVzZWQgd2l0aCBjb3NfbnVtIHRvZ2V0aGVyIHRvIGdldC93cml0ZSBh IGZlYXR1cmUncyBDT1MgcmVnaXN0ZXJzCisgICAgICAgIHZhbHVlcyBvbmUgYnkgb25lLgorCisg ICAgICAtIE1lbWJlciBgYWx0X3R5cGVgCisKKyAgICAgICAgYGFsdF90eXBlYCBpcyAnYWx0ZXJu YXRpdmUgdHlwZScuIFdoZW4gdGhpcyAnYWx0X3R5cGUnIGlzIGlucHV0LCB0aGUKKyAgICAgICAg ZmVhdHVyZSBkb2VzIHNvbWUgc3BlY2lhbCBvcGVyYXRpb25zLgorCisgICAgICAtIE1lbWJlciBg Z2V0X2ZlYXRfaW5mb2AKKworICAgICAgICBgZ2V0X2ZlYXRfaW5mb2AgaXMgdXNlZCB0byByZXR1 cm4gZmVhdHVyZSBIVyBpbmZvIHRocm91Z2ggc3lzY3RsLgorCisgICAgICAtIE1lbWJlciBgd3Jp dGVfbXNyYAorCisgICAgICAgIGB3cml0ZV9tc3JgIGlzIHVzZWQgdG8gd3JpdGUgb3V0IGZlYXR1 cmUgTVNSIHJlZ2lzdGVyLgorCisgICAyLiBGZWF0dXJlIG5vZGUKKworICAgICAgYGBgCisgICAg ICBzdHJ1Y3QgZmVhdF9ub2RlIHsKKyAgICAgICAgICB1bnNpZ25lZCBpbnQgY29zX21heDsKKyAg ICAgICAgICB1bnNpZ25lZCBpbnQgY2JtX2xlbjsKKyAgICAgICAgICB1aW50MzJfdCBjb3NfcmVn X3ZhbFtNQVhfQ09TX1JFR19DTlRdOworICAgICAgfTsKKyAgICAgIGBgYAorCisgICAgICBXaGVu IGEgUFNSIGVuZm9yY2VtZW50IGZlYXR1cmUgaXMgZW5hYmxlZCwgaXQgd2lsbCBiZSBhZGRlZCBp bnRvIGEKKyAgICAgIGZlYXR1cmUgYXJyYXkuCisKKyAgICAgIC0gTWVtYmVyIGBjb3NfbWF4YAor CisgICAgICAgIGBjb3NfbWF4YCBpcyBvbmUgb2YgdGhlIGhhcmR3YXJlIGluZm8gb2YgQ0FULiBJ dCBtZWFucyB0aGUgbWF4IG51bWJlcgorICAgICAgICBvZiBDT1MgcmVnaXN0ZXJzLiBBcyBMMyBD QVQvQ0RQL0wyIENBVCBhbGwgaGF2ZSBpdCwgaXQgaXMgZGVjbGFyZWQgaW4KKyAgICAgICAgYGZl YXRfbm9kZWAuCisKKyAgICAgIC0gTWVtYmVyIGBjYm1fbGVuYAorCisgICAgICAgIGBjYm1fbGVu YCBpcyBvbmUgb2YgdGhlIGhhcmR3YXJlIGluZm8gb2YgQ0FULiBJdCBtZWFucyB0aGUgbWF4IG51 bWJlcgorICAgICAgICBvZiBiaXRzIHRvIHNldC4KKworICAgICAgLSBNZW1iZXIgYGNvc19yZWdf dmFsYAorCisgICAgICAgIGBjb3NfcmVnX3ZhbGAgaXMgYW4gYXJyYXkgdG8gbWFpbnRhaW4gdGhl IHZhbHVlIHNldCBpbiBhbGwgQ09TIHJlZ2lzdGVycworICAgICAgICBvZiB0aGUgZmVhdHVyZS4g VGhlIGFycmF5IGlzIGluZGV4ZWQgYnkgQ09TIElELgorCisgICAzLiBQZXItc29ja2V0IFBTUiBm ZWF0dXJlcyBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUKKworICAgICAgYGBgCisgICAgICBzdHJ1Y3Qg cHNyX3NvY2tldF9pbmZvIHsKKyAgICAgICAgICBib29sIGZlYXRfaW5pdDsKKyAgICAgICAgICBz dHJ1Y3QgZmVhdF9ub2RlICpmZWF0dXJlc1tQU1JfU09DS0VUX0ZFQVRfTlVNXTsKKyAgICAgICAg ICBzcGlubG9ja190IHJlZl9sb2NrOworICAgICAgICAgIHVuc2lnbmVkIGludCBjb3NfcmVmW01B WF9DT1NfUkVHX0NOVF07CisgICAgICAgICAgREVDTEFSRV9CSVRNQVAoZG9tX2lkcywgRE9NSURf SURMRSArIDEpOworICAgICAgfTsKKyAgICAgIGBgYAorCisgICAgICBXZSBjb2xsZWN0IGFsbCBQ U1IgYWxsb2NhdGlvbiBmZWF0dXJlcyBpbmZvcm1hdGlvbiBvZiBhIHNvY2tldCBpbiB0aGlzCisg ICAgICBgc3RydWN0IHBzcl9zb2NrZXRfaW5mb2AuCisKKyAgICAgIC0gTWVtYmVyIGBmZWF0X2lu aXRgCisKKyAgICAgICAgYGZlYXRfaW5pdGAgaXMgYSBmbGFnLCB0byBpbmRpY2F0ZSB3aGV0aGVy IHRoZSBDUFUgaW5pdCBvbiBhIHNvY2tldAorICAgICAgICBoYXMgYmVlbiBkb25lLgorCisgICAg ICAtIE1lbWJlciBgZmVhdHVyZXNgCisKKyAgICAgICAgYGZlYXR1cmVzYCBpcyBhIHBvaW50ZXIg YXJyYXkgdG8gc2F2ZSBhbGwgZW5hYmxlZCBmZWF0dXJlcyBwb25pdGVycworICAgICAgICBhY2Nv cmRpbmcgdG8gZmVhdHVyZSBwb3NpdGlvbiBkZWZpbmVkIGluIGBlbnVtIHBzcl9mZWF0X3R5cGVg LgorCisgICAgICAtIE1lbWJlciBgcmVmX2xvY2tgCisKKyAgICAgICAgYHJlZl9sb2NrYCBpcyBh IHNwaW4gbG9jayB0byBwcm90ZWN0IGBjb3NfcmVmYC4KKworICAgICAgLSBNZW1iZXIgYGNvc19y ZWZgCisKKyAgICAgICAgYGNvc19yZWZgIGlzIGFuIGFycmF5IHdoaWNoIG1haW50YWlucyB0aGUg cmVmZXJlbmNlIG9mIG9uZSBDT1MuIEl0IG1hcHMKKyAgICAgICAgdG8gY29zX3JlZ192YWxbTUFY X0NPU19SRUdfTlVNXSBpbiBgc3RydWN0IGZlYXRfbm9kZWAuIElmIG9uZSBDT1MgaXMKKyAgICAg ICAgdXNlZCBieSBvbmUgZG9tYWluLCB0aGUgY29ycmVzcG9uZGluZyByZWZlcmVuY2Ugd2lsbCBp bmNyZWFzZSBieSBvbmUuIElmCisgICAgICAgIGEgZG9tYWluIHJlbGVhc2VzIHRoZSBDT1MsIHRo ZSByZWZlcmVuY2Ugd2lsbCBkZWNyZWFzZSBieSBvbmUuIFRoZSBhcnJheQorICAgICAgICBpcyBp bmRleGVkIGJ5IENPUyBJRC4KKworICAgICAgLSBNZW1iZXIgYGRvbV9pZHNgCisKKyAgICAgICAg YGRvbV9pZHNgIGlzIGEgYml0bWFwLCBldmVyeSBiaXQgY29ycmVzcG9uZHMgdG8gYSBkb21haW4u IEluZGV4IGlzCisgICAgICAgIGRvbWFpbl9pZC4gSXQgaXMgdXNlZCB0byBoZWxwIHJlc3RvcmUg dGhlIGNvc19pZCBvZiB0aGUgZG9tYWluIHRvIDAgd2hlbgorICAgICAgICBhIHNvY2tldCBpcyBv ZmZsaW5lIGFuZCB0aGVuIG9ubGluZSBhZ2Fpbi4KKworIyBMaW1pdGF0aW9ucworCitDQVQvQ0RQ IGNhbiBvbmx5IHdvcmsgb24gSFcgd2hpY2ggZW5hYmxlcyBpdChjaGVjayBieSBDUFVJRCkuIFNv IGZhciwgdGhlcmUgaXMKK25vIEhXIHdoaWNoIGVuYWJsZXMgYm90aCBMMiBDQVQgYW5kIEwzIENB VC9DRFAuIEJ1dCBTVyBpbXBsZW1lbnRhdGlvbiBoYXMgY29ucy0KK2lkZXJlZCBzdWNoIHNjZW5h cmlvIHRvIGVuYWJsZSBib3RoIEwyIENBVCBhbmQgTDMgQ0FUL0NEUC4KKworIyBUZXN0aW5nCisK K1dlIGNhbiBleGVjdXRlIGFib3ZlIHhsIGNvbW1hbmRzIHRvIHZlcmlmeSBMMiBDQVQgYW5kIEwz IENBVC9DRFAgb24gZGlmZmVyZW50CitIV3Mgc3VwcG9ydCB0aGVtLgorCitGb3IgZXhhbXBsZToK KyAgICByb290QDp+JCB4bCBwc3ItaHdpbmZvIC0tY2F0CisgICAgQ2FjaGUgQWxsb2NhdGlvbiBU ZWNobm9sb2d5IChDQVQpOiBMMgorICAgIFNvY2tldCBJRCAgICAgICA6IDAKKyAgICBNYXhpbXVt IENPUyAgICAgOiAzCisgICAgQ0JNIGxlbmd0aCAgICAgIDogOAorICAgIERlZmF1bHQgQ0JNICAg ICA6IDB4ZmYKKworICAgIHJvb3RAOn4kIHhsIHBzci1jYXQtY2JtLXNldCAtbDIgMSAweDdmCisK KyAgICByb290QDp+JCB4bCBwc3ItY2F0LXNob3cgLWwyIDEKKyAgICBTb2NrZXQgSUQgICAgICAg OiAwCisgICAgRGVmYXVsdCBDQk0gICAgIDogMHhmZgorICAgICAgIElEICAgICAgICAgICAgICAg ICAgICAgTkFNRSAgICAgICAgICAgICBDQk0KKyAgICAgICAgMSAgICAgICAgICAgICAgICAgdWJ1 bnR1MTQgICAgICAgICAgICAweDdmCisKKyMgQXJlYXMgZm9yIGltcHJvdmVtZW50CisKK0EgaGV4 YWRlY2ltYWwgbnVtYmVyIGlzIHVzZWQgdG8gc2V0L3Nob3cgQ0JNIGZvciBhIGRvbWFpbiBub3cu IEFsdGhvdWdoIHRoaXMKK2lzIGNvbnZlbmllbnQgdG8gY292ZXIgb3ZlcmxhcC9pc29sYXRlZCBi aXRtYXNrIHJlcXVpcmVtZW50LCBpdCBpcyBub3QgdXNlci0KK2ZyaWVuZGx5LgorCitUbyBpbXBy b3ZlIHRoaXMsIHRoZSBsaWJ4bCBpbnRlcmZhY2VzIGNhbiBiZSB3cmFwcGVkIGluIGxpYnZpcnQg dG8gcHJvdmlkZSBtb3JlCit1c3ItZnJpZW5kbHkgaW50ZXJmYWNlcyB0byB1c2VyLCBlLmcuIGEg cGVyY2VudGFnZSBudW1iZXIgb2YgdGhlIGNhY2hlIHRvIHNldAorYW5kIHNob3cuCisKKyMgS25v d24gaXNzdWVzCisKK04vQQorCisjIFJlZmVyZW5jZXMKKworIklOVEVMwq4gUkVTT1VSQ0UgRElS RUNUT1IgVEVDSE5PTE9HWSAoSU5URUzCriBSRFQpIEFMTE9DQVRJT04gRkVBVFVSRVMiIFtJbnRl bMKuIDY0IGFuZCBJQS0zMiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlIERldmVsb3BlciBNYW51YWxz LCB2b2wzXShodHRwOi8vd3d3LmludGVsLmNvbS9jb250ZW50L3d3dy91cy9lbi9wcm9jZXNzb3Jz L2FyY2hpdGVjdHVyZXMtc29mdHdhcmUtZGV2ZWxvcGVyLW1hbnVhbHMuaHRtbCkKKworIyBIaXN0 b3J5CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRGF0ZSAgICAgICBSZXZpc2lvbiBWZXJzaW9uICBOb3Rl cworLS0tLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisyMDE2LTA4LTEyIDEuMCAgICAgIFhlbiA0LjkgIERlc2lnbiBk b2N1bWVudCB3cml0dGVuCisyMDE3LTAyLTEzIDEuNyAgICAgIFhlbiA0LjkgIENoYW5nZXM6Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuIE1vZGlmeSB0aGUgZGVzaWduIGRvY3VtZW50 IHRvIGNvdmVyIEwzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENBVC9DRFAgYW5k IEwyIENBVDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4gRml4IHR5cG9zOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAzLiBBbWVuZCBkZXNjcmlwdGlvbiBvZiBgZmVhdF9t YXNrYCB0byBtYWtlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IGNsZWFyZXI7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuIE90aGVyIG1pbm9yIGNoYW5nZXMuCisy MDE3LTAyLTE1IDEuOCAgICAgIFhlbiA0LjkgIENoYW5nZXM6CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDEuIEFkZCBjb250ZW50IGluICdBcmVhcyBmb3IgaW1wcm92ZW1lbnQnOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAyLiBBZGp1c3QgcmV2aXNpb24gbnVtYmVyLgorMjAx Ny0wMy0xNiAxLjkgICAgICBYZW4gNC45ICBDaGFuZ2VzOgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxLiBBZGQgJ0NNVCcgaW4gJ1Rlcm1pbm9sb2d5JzsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMi4gQ2hhbmdlICdmZWF0dXJlIGxpc3QnIHRvICdmZWF0dXJlIGFycmF5Jy4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4gTW9kaWZ5IGRhdGEgc3RydWN0dXJlIGRl c2NyaXB0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4gQWRqdXN0IHJldmlz aW9uIG51bWJlci4KKzIwMTctMDUtMDMgMS4xMSAgICAgWGVuIDQuOSAgQ2hhbmdlczoKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMS4gTW9kaWZ5IGRhdGEgc3RydWN0dXJlIGRlc2NyaXB0 aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4gQWRqdXN0IHJldmlzaW9uIG51 bWJlci4KKzIwMTctMDctMTMgMS4xNCAgICAgWGVuIDQuMTAgQ2hhbmdlczoKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMS4gRml4IGEgdHlwby4KKzIwMTctMDgtMDEgMS4xNSAgICAgWGVu IDQuMTAgQ2hhbmdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4gQWRkICdhbHRf dHlwZScgaW4gJ2ZlYXRfcHJvcHMnIHN0cnVjdHVyZS4KKy0tLS0tLS0tLS0gLS0tLS0tLS0gLS0t LS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAKMS45 LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK