From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v13 01/23] docs: create Cache Allocation Technology (CAT) and Code and Data Prioritization (CDP) feature document Date: Thu, 6 Jul 2017 09:52:54 +0800 Message-ID: <1499305996-19029-2-git-send-email-yi.y.sun@linux.intel.com> References: <1499305996-19029-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dSwBc-0000Oy-2t for xen-devel@lists.xenproject.org; Thu, 06 Jul 2017 02:06:32 +0000 In-Reply-To: <1499305996-19029-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 djExOgogICAgLSBtb2RpZnkgZGF0YSBzdHJ1Y3R1cmUgZGVzY3JpcHRpb25zIGFjY29yZGluZyB0 byBjb2RlIGNoYW5nZXMuCiAgICAtIG1vZGlmeSByZXZpc2lvbi4Kdjk6CiAgICAtIGFkZCAnQ01U JyB0byB0aGUgbGlzdCBvZiBhY3Jvbnltcy4KICAgICAgKHN1Z2dlc3RlZCBieSBXZWkgTGl1KQog ICAgLSBjaGFuZ2UgZmVhdHVyZSBsaXN0IHRvIGZlYXR1cmUgYXJyYXkuCiAgICAtIG1vZGlmeSBk YXRhIHN0cnVjdHVyZSBkZXNjcmlwdGlvbnMgYWNjb3JkaW5nIHRvIGxhdGVzdCBjb2Rlcy4KICAg IC0gbW9kaWZ5IHJldmlzaW9uLgp2ODoKICAgIC0gY2hhbmdlIHJldmlzaW9uIGluZm8uCiAgICAg IChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBhZGQgY29udGVudCBp bnQgJ0FyZWFzIGZvciBpbXByb3ZlbWVudCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6 ZXN6dXRlayBXaWxrKQp2NzoKICAgIC0gY29ycmVjdCB0eXBvLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gcmVwbGFjZSBhcHBsaWNhdGlvbi9WTSB0byBk b21haW4uCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBh bWVuZCBkZXNjcmlwdGlvbiBvZiBgZmVhdF9tYXNrYCB0byBtYWtlIGl0IGNsZWFyZXIuCiAgICAg IChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSB1cGRhdGUgcmV2aXNp b24uCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBvdGhl ciBtaW5vciBmaXhlcy4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGsp CnY2OgogICAgLSB3cml0ZSBhIG5ldyBmZWF0dXJlIGRvY3VtZW50IHRvIGNvdmVyIEwzIENBVC9D RFAgYW5kIEwyIENBVC4KICAgICAgKHN1Z2dlc3RlZCBieSBLZXZpbiBUaWFuKQogICAgLSBhZGp1 c3QgJ1Rlcm1pbm9sb2d5JyBwb3NpdGlvbiBpbiBkb2N1bWVudC4KICAgICAgKHN1Z2dlc3RlZCBi eSBEYXJpbyBGYWdnaW9saSkKICAgIC0gZml4IHdvcmRpbmdzLgogICAgICAoc3VnZ2VzdGVkIGJ5 IERhcmlvIEZhZ2dpb2xpLCBLZXZpbiBUaWFuIGFuZCBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAg ICAtIGFkZCBTRE0gY2hhcHRlciB0aXRsZSBpbiBjb21taXQgbWVzc2FnZS4KICAgICAgKHN1Z2dl c3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIGFkZCBtb3JlIGV4cGxhbmF0aW9u cy4KICAgICAgKHN1Z2dlc3RlZCBieSBLZXZpbiBUaWFuKQp2NDoKICAgIC0gY2hhbmdlIGZpbGUg bmFtZSB0byBiZSBtb3JlIGRlc2NyaXB0aXZlLCAnaW50ZWxfcHNyX2wyX2NhdC5wYW5kb2MnLgog ICAgICAoc3VnZ2VzdGVkIGJ5IERhcmlvIEZhZ2dpb2xpKQogICAgLSByZW1vdmUgJ0V4dCcgYW5k ICdOZXcnIHByZWZpeGVzLgogICAgICAoc3VnZ2VzdGVkIGJ5IERhcmlvIEZhZ2dpb2xpKQogICAg LSByZW1vdmUgY2hhbmdlIGxvZyBpbiBSZXZpc29uIHBhcnQuCiAgICAgIChzdWdnZXN0ZWQgYnkg RGFyaW8gRmFnZ2lvbGkpCiAgICAtIGFkanVzdCBYZW4gcmVsZWFzZSBudW1iZXIgdG8gNC45IHRv IHNob3cgdGhpcyBmZWF0dXJlIHRhcmdldHMgNC45LgogICAgICAoc3VnZ2VzdGVkIGJ5IERhcmlv IEZhZ2dpb2xpKQogICAgLSBwcm92aWRlICdUZXJtaW5vbG9neScgYW5kIG1vcmUgc2VjdGlvbnMu CiAgICAgIChzdWdnZXN0ZWQgYnkgRGFyaW8gRmFnZ2lvbGkpCiAgICAtIGZpeCB3b3JkaW5ncy4K ICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIHJlbW92ZSBj aGFwdGVyIG51bWJlci4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGsp CnYzOgogICAgLSBtYWtlIGRlc2lnbiBkb2N1bWVudCBiZSBhIHBhdGNoLgogICAgICAoc3VnZ2Vz dGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKdjI6CiAgICAtIHByb3ZpZGUgY2hhcHRlciBm b3IgdGhlIEwyIENBVC4KICAgICAgKHN1Z2dlc3RlZCBieSBNZW5nIFh1KQotLS0KIGRvY3MvZmVh dHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jIHwgNDYxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDQ2MSBpbnNlcnRpb25zKCspCiBjcmVhdGUg bW9kZSAxMDA2NDQgZG9jcy9mZWF0dXJlcy9pbnRlbF9wc3JfY2F0X2NkcC5wYW5kb2MKCmRpZmYg LS1naXQgYS9kb2NzL2ZlYXR1cmVzL2ludGVsX3Bzcl9jYXRfY2RwLnBhbmRvYyBiL2RvY3MvZmVh dHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjc5YjQ3MzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2ZlYXR1cmVzL2ludGVs X3Bzcl9jYXRfY2RwLnBhbmRvYwpAQCAtMCwwICsxLDQ2MSBAQAorJSBJbnRlbCBDYWNoZSBBbGxv Y2F0aW9uIFRlY2hub2xvZ3kgYW5kIENvZGUgYW5kIERhdGEgUHJpb3JpdGl6YXRpb24gRmVhdHVy ZXMKKyUgUmV2aXNpb24gMS4xMQorCitcY2xlYXJwYWdlCisKKyMgQmFzaWNzCisKKy0tLS0tLS0t LS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgU3RhdHVzOiAqKlRlY2ggUHJldmlldyoqCisKK0FyY2hpdGVjdHVyZShz KTogSW50ZWwgeDg2CisKKyAgIENvbXBvbmVudChzKTogSHlwZXJ2aXNvciwgdG9vbHN0YWNrCisK KyAgICAgICBIYXJkd2FyZTogTDMgQ0FUOiBIYXN3ZWxsIGFuZCBiZXlvbmQgQ1BVcworICAgICAg ICAgICAgICAgICBDRFAgICA6IEJyb2Fkd2VsbCBhbmQgYmV5b25kIENQVXMKKyAgICAgICAgICAg ICAgICAgTDIgQ0FUOiBBdG9tIGNvZGVuYW1lIEdvbGRtb250IGFuZCBiZXlvbmQgQ1BVcworLS0t LS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisKKyMgVGVybWlub2xvZ3kKKworKiBDQVQgICAgICAgICBDYWNoZSBBbGxvY2F0 aW9uIFRlY2hub2xvZ3kKKyogQ0JNICAgICAgICAgQ2FwYWNpdHkgQml0TWFza3MKKyogQ0RQICAg ICAgICAgQ29kZSBhbmQgRGF0YSBQcmlvcml0aXphdGlvbgorKiBDTVQgICAgICAgICBDYWNoZSBN b25pdG9yaW5nIFRlY2hub2xvZ3kKKyogQ09TL0NMT1MgICAgQ2xhc3Mgb2YgU2VydmljZQorKiBN U1JzICAgICAgICBNYWNoaW5lIFNwZWNpZmljIFJlZ2lzdGVycworKiBQU1IgICAgICAgICBJbnRl bCBQbGF0Zm9ybSBTaGFyZWQgUmVzb3VyY2UKKworIyBPdmVydmlldworCitJbnRlbCBwcm92aWRl cyBhIHNldCBvZiBhbGxvY2F0aW9uIGNhcGFiaWxpdGllcyBpbmNsdWRpbmcgQ2FjaGUgQWxsb2Nh dGF0aW9uCitUZWNobm9sb2d5IChDQVQpIGFuZCBDb2RlIGFuZCBEYXRhIFByaW9yaXRpemF0aW9u IChDRFApLgorCitDQVQgYWxsb3dzIGFuIE9TIG9yIGh5cGVydmlzb3IgdG8gY29udHJvbCBhbGxv Y2F0aW9uIG9mIGEgQ1BVJ3Mgc2hhcmVkIGNhY2hlCitiYXNlZCBvbiBhcHBsaWNhdGlvbi9kb21h aW4gcHJpb3JpdHkgb3IgQ2xhc3Mgb2YgU2VydmljZSAoQ09TKS4gRWFjaCBDT1MgaXMKK2NvbmZp Z3VyZWQgdXNpbmcgY2FwYWNpdHkgYml0bWFza3MgKENCTXMpIHdoaWNoIHJlcHJlc2VudCBjYWNo ZSBjYXBhY2l0eSBhbmQKK2luZGljYXRlIHRoZSBkZWdyZWUgb2Ygb3ZlcmxhcCBhbmQgaXNvbGF0 aW9uIGJldHdlZW4gY2xhc3Nlcy4gT25jZSBDQVQgaXMgY28tCituZmlndXJlZCwgdGhlIHByb2Nl c3NvciBhbGxvd3MgYWNjZXNzIHRvIHBvcnRpb25zIG9mIGNhY2hlIGFjY29yZGluZyB0byB0aGUK K2VzdGFibGlzaGVkIENPUy4gSW50ZWwgWGVvbiBwcm9jZXNzb3IgRTUgdjQgZmFtaWx5IChhbmQg c29tZSBvdGhlcnMpIGludHJvZHVjZQorY2FwYWJpbGl0aWVzIHRvIGNvbmZpZ3VyZSBhbmQgbWFr ZSB1c2Ugb2YgdGhlIENBVCBtZWNoYW5pc20gb24gdGhlIEwzIGNhY2hlLgorSW50ZWwgR29sZG1v bnQgcHJvY2Vzc29yIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGNvbnRyb2wgb3ZlciB0aGUgTDIgY2Fj aGUuCisKK0NvZGUgYW5kIERhdGEgUHJpb3JpdGl6YXRpb24gKENEUCkgVGVjaG5vbG9neSBpcyBh biBleHRlbnNpb24gb2YgQ0FULiBDRFAKK2VuYWJsZXMgaXNvbGF0aW9uIGFuZCBzZXBhcmF0ZSBw cmlvcml0aXphdGlvbiBvZiBjb2RlIGFuZCBkYXRhIGZldGNoZXMgdG8KK3RoZSBMMyBjYWNoZSBp biBhIFNXIGNvbmZpZ3VyYWJsZSBtYW5uZXIsIHdoaWNoIGNhbiBlbmFibGUgd29ya2xvYWQgcHJp b3JpdC0KK2l6YXRpb24gYW5kIHR1bmluZyBvZiBjYWNoZSBjYXBhY2l0eSB0byB0aGUgY2hhcmFj dGVyaXN0aWNzIG9mIHRoZSB3b3JrbG9hZC4KK0NEUCBleHRlbmRzIENBVCBieSBwcm92aWRpbmcg c2VwYXJhdGUgY29kZSBhbmQgZGF0YSBtYXNrcyBwZXIgQ2xhc3Mgb2YgU2VydmljZQorKENPUyku IFdoZW4gU1cgY29uZmlndXJlcyB0byBlbmFibGUgQ0RQLCBMMyBDQVQgaXMgZGlzYWJsZWQuCisK KyMgVXNlciBkZXRhaWxzCisKKyogRmVhdHVyZSBFbmFibGluZzoKKworICBBZGQgInBzcj1jYXQi IHRvIGJvb3QgbGluZSBwYXJhbWV0ZXIgdG8gZW5hYmxlIGFsbCBzdXBwb3J0ZWQgbGV2ZWwgQ0FU IGZlYXR1LQorICByZXMuIEFkZCAicHNyPWNkcCIgdG8gZW5hYmxlIEwzIENEUCBidXQgZGlzYWJs ZXMgTDMgQ0FUIGJ5IFNXLgorCisqIHhsIGludGVyZmFjZXM6CisKKyAgMS4gYHBzci1jYXQtc2hv dyBbT1BUSU9OU10gZG9tYWluLWlkYDoKKworICAgICBTaG93IEwyIENBVCBvciBMMyBDQVQvQ0RQ IENCTSBvZiB0aGUgZG9tYWluIGRlc2lnbmF0ZWQgYnkgWGVuIGRvbWFpbi1pZC4KKworICAgICBP cHRpb24gYC1sYDoKKyAgICAgYC1sMmA6IFNob3cgY2JtIGZvciBMMiBjYWNoZS4KKyAgICAgYC1s M2A6IFNob3cgY2JtIGZvciBMMyBjYWNoZS4KKworICAgICBJZiBgLWxYYCBpcyBzcGVjaWZpZWQg YW5kIExYIGlzIG5vdCBzdXBwb3J0ZWQsIHByaW50IGVycm9yLgorICAgICBJZiBubyBgLWxgIGlz IHNwZWNpZmllZCwgbGV2ZWwgMyBpcyB0aGUgZGVmYXVsdCBvcHRpb24uCisKKyAgMi4gYHBzci1j YXQtc2V0IFtPUFRJT05TXSBkb21haW4taWQgY2JtYDoKKworICAgICBTZXQgTDIgQ0FUIG9yIEwz IENBVC9DRFAgQ0JNIHRvIHRoZSBkb21haW4gZGVzaWduYXRlZCBieSBYZW4gZG9tYWluLWlkLgor CisgICAgIE9wdGlvbiBgLXNgOiBTcGVjaWZ5IHRoZSBzb2NrZXQgdG8gcHJvY2Vzcywgb3RoZXJ3 aXNlIGFsbCBzb2NrZXRzIGFyZQorICAgICBwcm9jZXNzZWQuCisKKyAgICAgT3B0aW9uIGAtbGA6 CisgICAgIGAtbDJgOiBTcGVjaWZ5IGNibSBmb3IgTDIgY2FjaGUuCisgICAgIGAtbDNgOiBTcGVj aWZ5IGNibSBmb3IgTDMgY2FjaGUuCisKKyAgICAgSWYgYC1sWGAgaXMgc3BlY2lmaWVkIGFuZCBM WCBpcyBub3Qgc3VwcG9ydGVkLCBwcmludCBlcnJvci4KKyAgICAgSWYgbm8gYC1sYCBpcyBzcGVj aWZpZWQsIGxldmVsIDMgaXMgdGhlIGRlZmF1bHQgb3B0aW9uLgorCisgICAgIE9wdGlvbiBgLWNg IG9yIGAtZGA6CisgICAgIGAtY2A6IFNldCBMMyBDRFAgY29kZSBjYm0uCisgICAgIGAtZGA6IFNl dCBMMyBDRFAgZGF0YSBjYm0uCisKKyAgMy4gYHBzci1od2luZm8gW09QVElPTlNdYDoKKworICAg ICBTaG93IENNVCAmIEwyIENBVCAmIEwzIENBVC9DRFAgSFcgaW5mb3JtYXRpb24gb24gZXZlcnkg c29ja2V0LgorCisgICAgIE9wdGlvbiBgLW0sIC0tY210YDogU2hvdyBDYWNoZSBNb25pdG9yaW5n IFRlY2hub2xvZ3kgKENNVCkgaGFyZHdhcmUgaW5mby4KKworICAgICBPcHRpb24gYC1hLCAtLWNh dGA6IFNob3cgQ0FUL0NEUCBoYXJkd2FyZSBpbmZvLgorCisjIFRlY2huaWNhbCBkZXRhaWxzCisK K0wzIENBVC9DRFAgYW5kIEwyIENBVCBhcmUgYWxsIG1lbWJlcnMgb2YgSW50ZWwgUFNSIGZlYXR1 cmVzLCB0aGV5IHNoYXJlIHRoZSBiYXNlCitQU1IgaW5mcmFzdHJ1Y3R1cmUgaW4gWGVuLgorCisj IyBIYXJkd2FyZSBwZXJzcGVjdGl2ZQorCisgIENBVC9DRFAgZGVmaW5lcyBhIHJhbmdlIG9mIE1T UnMgdG8gYXNzaWduIGRpZmZlcmVudCBjYWNoZSBhY2Nlc3MgcGF0dGVybnMKKyAgd2hpY2ggYXJl IGtub3duIGFzIENCTXMsIGVhY2ggQ0JNIGlzIGFzc29jaWF0ZWQgd2l0aCBhIENPUy4KKworICBg YGAKKyAgRS5nLiBMMiBDQVQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgIElBMzJfUFFSX0FTU09D ICAgICAgIHwgTVNSIChwZXIgc29ja2V0KSAgICAgICAgICAgfCAgICBBZGRyZXNzICAgICB8Cisg ICArLS0tLSstLS0rLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgICB8ICAgIHxDT1N8ICAgICAgIHwgICAgIHwgSUEzMl9MMl9RT1Nf TUFTS18wICAgICAgICAgfCAgICAgMHhEMTAgICAgICB8CisgICArLS0tLSstLS0rLS0tLS0tLSsg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgICAg ICAgICAg4pSULS0tLS0tLS0tLS0tLT4gfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICB8ICAu Li4gICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBJQTMyX0wyX1FPU19NQVNLX24gICAgICAgICB8IDB4RDEwK24gKG48NjQpIHwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKKyAgYGBgCisKKyAgTDMgQ0FUL0NEUCB1c2VzIGEgcmFuZ2Ugb2YgTVNScyBm cm9tIDB4QzkwIH4gMHhDOTArbiAobjwxMjgpLgorCisgIEwyIENBVCB1c2VzIGEgcmFuZ2Ugb2Yg TVNScyBmcm9tIDB4RDEwIH4gMHhEMTArbiAobjw2NCksIGZvbGxvd2luZyB0aGUgTDMKKyAgQ0FU L0NEUCBNU1JzLCBzZXR0aW5nIGRpZmZlcmVudCBMMiBjYWNoZSBhY2Nlc3NpbmcgcGF0dGVybnMg ZnJvbSBMMyBjYWNoZSBpcworICBzdXBwb3J0ZWQuCisKKyAgRXZlcnkgTVNSIHN0b3JlcyBhIENC TSB2YWx1ZS4gQSBjYXBhY2l0eSBiaXRtYXNrIChDQk0pIHByb3ZpZGVzIGEgaGludCB0byB0aGUK KyAgaGFyZHdhcmUgaW5kaWNhdGluZyB0aGUgY2FjaGUgc3BhY2UgYSBkb21haW4gc2hvdWxkIGJl IGxpbWl0ZWQgdG8gYXMgd2VsbCBhcworICBwcm92aWRpbmcgYW4gaW5kaWNhdGlvbiBvZiBvdmVy bGFwIGFuZCBpc29sYXRpb24gaW4gdGhlIENBVC1jYXBhYmxlIGNhY2hlIGZyb20KKyAgb3RoZXIg ZG9tYWlucyBjb250ZW5kaW5nIGZvciB0aGUgY2FjaGUuCisKKyAgU2FtcGxlIGNhY2hlIGNhcGFj aXR5IGJpdG1hc2tzIGZvciBhIGJpdGxlbmd0aCBvZiA4IGFyZSBzaG93biBiZWxvdy4gUGxlYXNl CisgIG5vdGUgdGhhdCBhbGwgKGFuZCBvbmx5KSBjb250aWd1b3VzICcxJyBjb21iaW5hdGlvbnMg YXJlIGFsbG93ZWQgKGUuZy4gRkZGRkgsCisgIDBGRjBILCAwMDNDSCwgZXRjLikuCisKKyAgYGBg CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgICAg ICB8IE03IHwgTTYgfCBNNSB8IE00IHwgTTMgfCBNMiB8IE0xIHwgTTAgfAorICAgICAgICstLS0t Ky0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgIENPUzAgfCBBICB8IEEgIHwg QSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgRGVmYXVsdCBCaXRtYXNrCisgICAgICAgKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09TMSB8IEEgIHwgQSAg fCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfAorICAgICAgICstLS0tKy0tLS0rLS0tLSst LS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgIENPUzIgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEg IHwgQSAgfCBBICB8IEEgIHwKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r LS0tLSstLS0tKworCisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r LS0tLSsKKyAgICAgICB8IE03IHwgTTYgfCBNNSB8IE00IHwgTTMgfCBNMiB8IE0xIHwgTTAgfAor ICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgIENPUzAg fCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgT3ZlcmxhcHBlZCBCaXRt YXNrCisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAg Q09TMSB8ICAgIHwgICAgfCAgICB8ICAgIHwgQSAgfCBBICB8IEEgIHwgQSAgfAorICAgICAgICst LS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgIENPUzIgfCAgICB8ICAg IHwgICAgfCAgICB8ICAgIHwgICAgfCBBICB8IEEgIHwKKyAgICAgICArLS0tLSstLS0tKy0tLS0r LS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworCisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0r LS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgICAgICB8IE03IHwgTTYgfCBNNSB8IE00IHwgTTMgfCBN MiB8IE0xIHwgTTAgfAorICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0t Ky0tLS0rCisgIENPUzAgfCBBICB8IEEgIHwgQSAgfCBBICB8ICAgIHwgICAgfCAgICB8ICAgIHwg SXNvbGF0ZWQgQml0bWFzaworICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSst LS0tKy0tLS0rCisgIENPUzEgfCAgICB8ICAgIHwgICAgfCAgICB8IEEgIHwgQSAgfCAgICB8ICAg IHwKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICBD T1MyIHwgICAgfCAgICB8ICAgIHwgICAgfCAgICB8ICAgIHwgQSAgfCBBICB8CisgICAgICAgKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgYGBgCisKKyAgV2UgY2Fu IGdldCB0aGUgQ0JNIGxlbmd0aCB0aHJvdWdoIENQVUlELiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBD Qk0gaXMgY2FsY3VsLQorICBhdGVkIGJ5IGAoMXVsbCA8PCBjYm1fbGVuKSAtIDFgLiBUaGF0IGlz IGEgZnVsbHkgb3BlbiBiaXRtYXNrLCBhbGwgb25lcyBiaXRtLQorICBhc2suIFRoZSBDT1NbMF0g YWx3YXlzIHN0b3JlcyB0aGUgZGVmYXVsdCB2YWx1ZSB3aXRob3V0IGNoYW5nZS4KKworICBUaGVy ZSBpcyBhIGBJQTMyX1BRUl9BU1NPQ2AgcmVnaXN0ZXIgd2hpY2ggc3RvcmVzIHRoZSBDT1MgSUQg b2YgdGhlIFZDUFUuIEhXCisgIGVuZm9yY2VzIGNhY2hlIGFsbG9jYXRpb24gYWNjb3JkaW5nIHRv IHRoZSBjb3JyZXNwb25kaW5nIENCTS4KKworIyMgVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIEwz IENBVC9DRFAgYW5kIEwyIENBVAorCisgIEhXIG1heSBzdXBwb3J0IGFsbCBmZWF0dXJlcy4gQnkg ZGVmYXVsdCwgQ0RQIGlzIGRpc2FibGVkIG9uIHRoZSBwcm9jZXNzb3IuCisgIElmIHRoZSBMMyBD QVQgTVNScyBhcmUgdXNlZCB3aXRob3V0IGVuYWJsaW5nIENEUCwgdGhlIHByb2Nlc3NvciBvcGVy YXRlcyBpbgorICBhIHRyYWRpdGlvbmFsIENBVC1vbmx5IG1vZGUuIFdoZW4gQ0RQIGlzIGVuYWJs ZWQ6CisgICogdGhlIENBVCBtYXNrIE1TUnMgYXJlIHJlLW1hcHBlZCBpbnRvIGludGVybGVhdmVk IHBhaXJzIG9mIG1hc2sgTVNScyBmb3IKKyAgICBkYXRhIG9yIGNvZGUgZmV0Y2hlcy4KKyAgKiB0 aGUgcmFuZ2Ugb2YgQ09TIGZvciBDQVQgaXMgcmUtaW5kZXhlZCwgd2l0aCB0aGUgbG93ZXItaGFs ZiBvZiB0aGUgQ09TCisgICAgcmFuZ2UgYXZhaWxhYmxlIGZvciBDRFAuCisKKyAgTDIgQ0FUIGlz IGluZGVwZW5kZW50IG9mIEwzIENBVC9DRFAsIHdoaWNoIG1lYW5zIEwyIENBVCBjYW4gYmUgZW5h YmxlZCB3aGlsZQorICBMMyBDQVQvQ0RQIGlzIGRpc2FibGVkLCBvciBMMiBDQVQgYW5kIEwzIENB VC9DRFAgYXJlIGJvdGggZW5hYmxlZC4KKworICBBcyBhIHJlcXVpcmVtZW50LCB0aGUgYml0cyBv ZiBDQk0gb2YgQ0FUL0NEUCBtdXN0IGJlIGNvbnRpbnVvdXMuCisKKyAgTi5CLiBMMiBDQVQgYW5k IEwzIENBVC9DRFAgc2hhcmUgdGhlIHNhbWUgQ09TIGZpZWxkIGluIHRoZSBzYW1lIGFzc29jaWF0 ZQorICByZWdpc3RlciBgSUEzMl9QUVJfQVNTT0NgLCB3aGljaCBtZWFucyBvbmUgQ09TIGlzIGFz c29jaWF0ZWQgd2l0aCBhIHBhaXIgb2YKKyAgTDIgQ0FUIENCTSBhbmQgTDMgQ0FUL0NEUCBDQk0u CisKKyAgQmVzaWRlcywgdGhlIG1heCBDT1Mgb2YgTDIgQ0FUIG1heSBiZSBkaWZmZXJlbnQgZnJv bSBMMyBDQVQvQ0RQIChvciBvdGhlcgorICBQU1IgZmVhdHVyZXMgaW4gZnV0dXJlKS4gSW4gc29t ZSBjYXNlcywgYSBkb21haW4gaXMgcGVybWl0dGVkIHRvIGhhdmUgYSBDT1MKKyAgdGhhdCBpcyBi ZXlvbmQgb25lIChvciBtb3JlKSBvZiBQU1IgZmVhdHVyZXMgYnV0IHdpdGhpbiB0aGUgb3RoZXJz LiBGb3IKKyAgaW5zdGFuY2UsIGxldCdzIGFzc3VtZSB0aGUgbWF4IENPUyBvZiBMMiBDQVQgaXMg OCBidXQgdGhlIG1heCBDT1Mgb2YgTDMKKyAgQ0FUIGlzIDE2LCB3aGVuIGEgZG9tYWluIGlzIGFz c2lnbmVkIDkgYXMgQ09TLCB0aGUgTDMgQ0FUIENCTSBhc3NvY2lhdGVkIHRvCisgIENPUyA5IHdv dWxkIGJlIGVuZm9yY2VkLCBidXQgZm9yIEwyIENBVCwgdGhlIEhXIHdvcmtzIGFzIGRlZmF1bHQg dmFsdWUgaXMKKyAgc2V0IHNpbmNlIENPUyA5IGlzIGJleW9uZCB0aGUgbWF4IENPUyAoOCkgb2Yg TDIgQ0FULgorCisjIyBEZXNpZ24gT3ZlcnZpZXcKKworKiBDb3JlIENPUy9DQk0gYXNzb2NpYXRp b24KKworICBXaGVuIGVuZm9yY2luZyBDQVQvQ0RQLCBhbGwgY29yZXMgb2YgZG9tYWlucyBoYXZl IHRoZSBzYW1lIGRlZmF1bHQgQ09TIChDT1MwKQorICB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGgg dGhlIGZ1bGx5IG9wZW4gQ0JNIChhbGwgb25lcyBiaXRtYXNrKSB0byBhY2Nlc3MgYWxsCisgIGNh Y2hlLiBUaGUgZGVmYXVsdCBDT1MgaXMgdXNlZCBvbmx5IGluIGh5cGVydmlzb3IgYW5kIGlzIHRy YW5zcGFyZW50IHRvIHRvb2wKKyAgc3RhY2sgYW5kIHVzZXIuCisKKyAgU3lzdGVtIGFkbWluaXN0 cmF0b3IgY2FuIGNoYW5nZSBQU1IgYWxsb2NhdGlvbiBwb2xpY3kgYXQgcnVudGltZSBieSB0b29s IHN0YWNrLgorICBTaW5jZSBMMiBDQVQgc2hhcmVzIENPUyB3aXRoIEwzIENBVC9DRFAsIGEgQ09T IGNvcnJlc3BvbmRzIHRvIGEgMi10dXBsZSwgbGlrZQorICBbTDIgQ0JNLCBMMyBDQk1dIHdpdGgg b25seS1DQVQgZW5hYmxlZCwgd2hlbiBDRFAgaXMgZW5hYmxlZCwgb25lIENPUyBjb3JyZXNwby0K KyAgbmRzIHRvIGEgMy10dXBsZSwgbGlrZSBbTDIgQ0JNLCBMMyBDb2RlX0NCTSwgTDMgRGF0YV9D Qk1dLiBJZiBuZWl0aGVyIEwzIENBVAorICBub3IgTDMgQ0RQIGlzIGVuYWJsZWQsIHRoaW5ncyB3 b3VsZCBiZSBlYXNpZXIsIG9uZSBDT1MgY29ycmVzcG9uZHMgdG8gb25lIEwyCisgIENCTS4KKwor KiBWQ1BVIHNjaGVkdWxlCisKKyAgV2hlbiBjb250ZXh0IHN3aXRjaCBoYXBwZW5zLCB0aGUgQ09T IG9mIFZDUFUgaXMgd3JpdHRlbiB0byBwZXItdGhyZWFkIE1TUgorICBgSUEzMl9QUVJfQVNTT0Ng LCBhbmQgdGhlbiBoYXJkd2FyZSBlbmZvcmNlcyBjYWNoZSBhbGxvY2F0aW9uIGFjY29yZGluZyB0 bworICB0aGUgY29ycmVzcG9uZGluZyBDQk0uCisKKyogTXVsdGktc29ja2V0cworCisgIERpZmZl cmVudCBzb2NrZXRzIG1heSBoYXZlIGRpZmZlcmVudCBDQVQvQ0RQIGNhcGFiaWxpdHkgKGUuZy4g bWF4IENPUykgYWx0aC0KKyAgb3VnaCBpdCBpcyBjb25zaXN0ZW50IG9uIHRoZSBzYW1lIHNvY2tl dC4gU28gdGhlIGNhcGFiaWxpdHkgb2YgcGVyLXNvY2tldCBDQVQvCisgIENEUCBpcyBzcGVjaWZp ZWQuCisKKyAgJ3Bzci1jYXQtc2V0JyBjYW4gc2V0IENCTSBmb3Igb25lIGRvbWFpbiBwZXIgc29j a2V0LiBPbiBlYWNoIHNvY2tldCwgd2UgbWFpbi0KKyAgdGFpbiBhIENPUyBhcnJheSBmb3IgYWxs IGRvbWFpbnMuIE9uZSBkb21haW4gdXNlcyBvbmUgQ09TIGF0IG9uZSB0aW1lLiBPbmUgQ09TCisg IHN0b3JlcyB0aGUgQ0JNIG9mIHRoZSBkb21haW4gdG8gd29yay4gU28sIHdoZW4gYSBWQ1BVIG9m IHRoZSBkb21haW4gaXMgbWlncmF0LQorICBlZCBmcm9tIHNvY2tldCAxIHRvIHNvY2tldCAyLCBp dCBmb2xsb3dzIGNvbmZpZ3VyYXRpb24gb24gc29ja2V0IDIuCisKKyAgRS5nLiB1c2VyIHNldHMg ZG9tYWluIDEgQ0JNIG9uIHNvY2tldCAxIHRvIDB4N2Ygd2hpY2ggdXNlcyBDT1MgOSBidXQgc2V0 cyBkby0KKyAgbWFpbiAxIENCTSBvbiBzb2NrZXQgMiB0byAweDNmIHdoaWNoIHVzZXMgQ09TIDcu IFdoZW4gVkNQVSBvZiB0aGlzIGRvbWFpbgorICBpcyBtaWdyYXRlZCBmcm9tIHNvY2tldCAxIHRv IDIsIHRoZSBDT1MgSUQgdXNlZCBpcyA3LCB0aGF0IG1lYW5zIDB4M2YgaXMgdGhlCisgIENCTSB0 byB3b3JrIGZvciB0aGlzIGRvbWFpbiAxIG5vdy4KKworIyMgSW1wbGVtZW50YXRpb24gRGVzY3Jp cHRpb24KKworKiBIeXBlcnZpc29yIGludGVyZmFjZXM6CisKKyAgMS4gQm9vdCBsaW5lIHBhcmFt ZXRlciAicHNyPWNhdCIgZW5hYmxlcyBMMiBDQVQgYW5kIEwzIENBVCBpZiBoYXJkd2FyZSBzdXBw by0KKyAgICAgcnRlZC4gInBzcj1jZHAiIGVuYWJsZXMgQ0RQIGlmIGhhcmR3YXJlIHN1cHBvcnRl ZC4KKworICAyLiBTWVNDVEw6CisgICAgICAgICAgLSBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wz X2luZm86IEdldCBMMyBDQVQvQ0RQIGluZm9ybWF0aW9uLgorICAgICAgICAgIC0gWEVOX1NZU0NU TF9QU1JfQ0FUX2dldF9sMl9pbmZvOiBHZXQgTDIgQ0FUIGluZm9ybWF0aW9uLgorCisgIDMuIERP TUNUTDoKKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfQ0JNOiBHZXQg TDMgQ0JNIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9PUF9T RVRfTDNfQ0JNOiBTZXQgTDMgQ0JNIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICAtIFhFTl9ET01D VExfUFNSX0NBVF9PUF9HRVRfTDNfQ09ERTogR2V0IENEUCBDb2RlIENCTSBmb3IgYSBkb21haW4u CisgICAgICAgICAgLSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0NPREU6IFNldCBDRFAg Q29kZSBDQk0gZm9yIGEgZG9tYWluLgorICAgICAgICAgIC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09Q X0dFVF9MM19EQVRBOiBHZXQgQ0RQIERhdGEgQ0JNIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICAt IFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNfREFUQTogU2V0IENEUCBEYXRhIENCTSBmb3Ig YSBkb21haW4uCisgICAgICAgICAgLSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wyX0NCTTog R2V0IEwyIENCTSBmb3IgYSBkb21haW4uCisgICAgICAgICAgLSBYRU5fRE9NQ1RMX1BTUl9DQVRf T1BfU0VUX0wyX0NCTTogU2V0IEwyIENCTSBmb3IgYSBkb21haW4uCisKKyogeGwgaW50ZXJmYWNl czoKKworICAxLiBwc3ItY2F0LXNob3cgLWxYIGRvbWFpbi1pZAorICAgICAgICAgIFNob3cgTFgg Y2JtIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICA9PiBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wz X2luZm8gICAgLworICAgICAgICAgICAgIFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDJfaW5mbyAg ICAvCisgICAgICAgICAgICAgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MM19DQk0gIC8KKyAg ICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wzX0NPREUgLworICAgICAgICAg ICAgIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfREFUQSAvCisgICAgICAgICAgICAgWEVO X0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MMl9DQk0KKworICAyLiBwc3ItY2F0LXNldCAtbFggZG9t YWluLWlkIGNibQorICAgICAgICAgIFNldCBMWCBjYm0gZm9yIGEgZG9tYWluLgorICAgICAgICAg ID0+IFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNfQ0JNICAvCisgICAgICAgICAgICAgWEVO X0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19DT0RFIC8KKyAgICAgICAgICAgICBYRU5fRE9NQ1RM X1BTUl9DQVRfT1BfU0VUX0wzX0RBVEEgLworICAgICAgICAgICAgIFhFTl9ET01DVExfUFNSX0NB VF9PUF9TRVRfTDJfQ0JNCisKKyAgMy4gcHNyLWh3aW5mbworICAgICAgICAgIFNob3cgUFNSIEhX IGluZm9ybWF0aW9uLCBpbmNsdWRpbmcgTDMgQ0FUL0NEUC9MMiBDQVQKKyAgICAgICAgICA9PiBY RU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wzX2luZm8gLworICAgICAgICAgICAgIFhFTl9TWVNDVExf UFNSX0NBVF9nZXRfbDJfaW5mbworCisqIEtleSBkYXRhIHN0cnVjdHVyZToKKworICAgMS4gRmVh dHVyZSBwcm9wZXJ0aWVzCisKKyAgICAgIGBgYAorICAgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBm ZWF0X3Byb3BzIHsKKyAgICAgICAgICB1bnNpZ25lZCBpbnQgY29zX251bTsKKyAgICAgICAgICBl bnVtIGNibV90eXBlIHR5cGVbUFNSX01BWF9DT1NfTlVNXTsKKyAgICAgICAgICBib29sICgqZ2V0 X2ZlYXRfaW5mbykoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGF0YVtdLCB1bnNpZ25lZCBpbnQgYXJyYXlfbGVu KTsKKyAgICAgICAgICB2b2lkICgqd3JpdGVfbXNyKSh1bnNpZ25lZCBpbnQgY29zLCB1aW50MzJf dCB2YWwsIGVudW0gY2JtX3R5cGUgdHlwZSk7CisgICAgICB9ICpmZWF0X3Byb3BzW1BTUl9TT0NL RVRfRkVBVF9OVU1dOworICAgICAgYGBgCisKKyAgICAgIEV2ZXJ5IGZlYXR1cmUgaGFzIGl0cyBv d24gcHJvcGVydGllcywgZS5nLiBzb21lIGRhdGEgYW5kIGFjdGlvbnMuIEEKKyAgICAgIGZlYXR1 cmUgcHJvcGVydHkgcG9pbnRlciBhcnJheSBpcyBkZWNsYXJlZCB0byBzYXZlIGV2ZXJ5IGZlYXR1 cmUncworICAgICAgcHJvcGVydGllcy4KKworICAgICAgLSBNZW1iZXIgYGNvc19udW1gCisKKyAg ICAgICAgYGNvc19udW1gIGlzIHRoZSBudW1iZXIgb2YgQ09TIHJlZ2lzdGVycyB0aGUgZmVhdHVy ZSB1c2VzLCBlLmcuIEwzL0wyCisgICAgICAgIENBVCB1c2VzIDEgcmVnaXN0ZXIgYnV0IENEUCB1 c2VzIDIgcmVnaXN0ZXJzLgorCisgICAgICAtIE1lbWJlciBgdHlwZWAKKworICAgICAgICBgdHlw ZWAgaXMgYW4gYXJyYXkgdG8gc2F2ZSBhbGwgJ2VudW0gY2JtX3R5cGUnIHZhbHVlcyBvZiB0aGUg ZmVhdHVyZS4KKyAgICAgICAgSXQgaXMgdXNlZCB3aXRoIGNvc19udW0gdG9nZXRoZXIgdG8gZ2V0 L3dyaXRlIGEgZmVhdHVyZSdzIENPUyByZWdpc3RlcnMKKyAgICAgICAgdmFsdWVzIG9uZSBieSBv bmUuCisKKyAgICAgIC0gTWVtYmVyIGBnZXRfZmVhdF9pbmZvYAorCisgICAgICAgIGBnZXRfZmVh dF9pbmZvYCBpcyB1c2VkIHRvIHJldHVybiBmZWF0dXJlIEhXIGluZm8gdGhyb3VnaCBzeXNjdGwu CisKKyAgICAgIC0gTWVtYmVyIGB3cml0ZV9tc3JgCisKKyAgICAgICAgYHdyaXRlX21zcmAgaXMg dXNlZCB0byB3cml0ZSBvdXQgZmVhdHVyZSBNU1IgcmVnaXN0ZXIuCisKKyAgIDIuIEZlYXR1cmUg bm9kZQorCisgICAgICBgYGAKKyAgICAgIHN0cnVjdCBmZWF0X25vZGUgeworICAgICAgICAgIHVu c2lnbmVkIGludCBjb3NfbWF4OworICAgICAgICAgIHVuc2lnbmVkIGludCBjYm1fbGVuOworICAg ICAgICAgIHVpbnQzMl90IGNvc19yZWdfdmFsW01BWF9DT1NfUkVHX0NOVF07CisgICAgICB9Owor ICAgICAgYGBgCisKKyAgICAgIFdoZW4gYSBQU1IgZW5mb3JjZW1lbnQgZmVhdHVyZSBpcyBlbmFi bGVkLCBpdCB3aWxsIGJlIGFkZGVkIGludG8gYQorICAgICAgZmVhdHVyZSBhcnJheS4KKworICAg ICAgLSBNZW1iZXIgYGNvc19tYXhgCisKKyAgICAgICAgYGNvc19tYXhgIGlzIG9uZSBvZiB0aGUg aGFyZHdhcmUgaW5mbyBvZiBDQVQuIEl0IG1lYW5zIHRoZSBtYXggbnVtYmVyCisgICAgICAgIG9m IENPUyByZWdpc3RlcnMuIEFzIEwzIENBVC9DRFAvTDIgQ0FUIGFsbCBoYXZlIGl0LCBpdCBpcyBk ZWNsYXJlZCBpbgorICAgICAgICBgZmVhdF9ub2RlYC4KKworICAgICAgLSBNZW1iZXIgYGNibV9s ZW5gCisKKyAgICAgICAgYGNibV9sZW5gIGlzIG9uZSBvZiB0aGUgaGFyZHdhcmUgaW5mbyBvZiBD QVQuIEl0IG1lYW5zIHRoZSBtYXggbnVtYmVyCisgICAgICAgIG9mIGJpdHMgdG8gc2V0LgorCisg ICAgICAtIE1lbWJlciBgY29zX3JlZ192YWxgCisKKyAgICAgICAgYGNvc19yZWdfdmFsYCBpcyBh biBhcnJheSB0byBtYWludGFpbiB0aGUgdmFsdWUgc2V0IGluIGFsbCBDT1MgcmVnaXN0ZXJzCisg ICAgICAgIG9mIHRoZSBmZWF0dXJlLiBUaGUgYXJyYXkgaXMgaW5kZXhlZCBieSBDT1MgSUQuCisK KyAgIDMuIFBlci1zb2NrZXQgUFNSIGZlYXR1cmVzIGluZm9ybWF0aW9uIHN0cnVjdHVyZQorCisg ICAgICBgYGAKKyAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8geworICAgICAgICAgIGJvb2wg ZmVhdF9pbml0OworICAgICAgICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXR1cmVzW1BTUl9TT0NL RVRfRkVBVF9OVU1dOworICAgICAgICAgIHNwaW5sb2NrX3QgcmVmX2xvY2s7CisgICAgICAgICAg dW5zaWduZWQgaW50IGNvc19yZWZbTUFYX0NPU19SRUdfQ05UXTsKKyAgICAgICAgICBERUNMQVJF X0JJVE1BUChkb21faWRzLCBET01JRF9JRExFICsgMSk7CisgICAgICB9OworICAgICAgYGBgCisK KyAgICAgIFdlIGNvbGxlY3QgYWxsIFBTUiBhbGxvY2F0aW9uIGZlYXR1cmVzIGluZm9ybWF0aW9u IG9mIGEgc29ja2V0IGluIHRoaXMKKyAgICAgIGBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvYC4KKwor ICAgICAgLSBNZW1iZXIgYGZlYXRfaW5pdGAKKworICAgICAgICBgZmVhdF9pbml0YCBpcyBhIGZs YWcsIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIENQVSBpbml0IG9uIGEgc29ja2V0CisgICAgICAg IGhhcyBiZWVuIGRvbmUuCisKKyAgICAgIC0gTWVtYmVyIGBmZWF0dXJlc2AKKworICAgICAgICBg ZmVhdHVyZXNgIGlzIGEgcG9pbnRlciBhcnJheSB0byBzYXZlIGFsbCBlbmFibGVkIGZlYXR1cmVz IHBvbml0ZXJzCisgICAgICAgIGFjY29yZGluZyB0byBmZWF0dXJlIHBvc2l0aW9uIGRlZmluZWQg aW4gYGVudW0gcHNyX2ZlYXRfdHlwZWAuCisKKyAgICAgIC0gTWVtYmVyIGByZWZfbG9ja2AKKwor ICAgICAgICBgcmVmX2xvY2tgIGlzIGEgc3BpbiBsb2NrIHRvIHByb3RlY3QgYGNvc19yZWZgLgor CisgICAgICAtIE1lbWJlciBgY29zX3JlZmAKKworICAgICAgICBgY29zX3JlZmAgaXMgYW4gYXJy YXkgd2hpY2ggbWFpbnRhaW5zIHRoZSByZWZlcmVuY2Ugb2Ygb25lIENPUy4gSXQgbWFwcworICAg ICAgICB0byBjb3NfcmVnX3ZhbFtNQVhfQ09TX1JFR19OVU1dIGluIGBzdHJ1Y3QgZmVhdF9ub2Rl YC4gSWYgb25lIENPUyBpcworICAgICAgICB1c2VkIGJ5IG9uZSBkb21haW4sIHRoZSBjb3JyZXNw b25kaW5nIHJlZmVyZW5jZSB3aWxsIGluY3JlYXNlIGJ5IG9uZS4gSWYKKyAgICAgICAgYSBkb21h aW4gcmVsZWFzZXMgdGhlIENPUywgdGhlIHJlZmVyZW5jZSB3aWxsIGRlY3JlYXNlIGJ5IG9uZS4g VGhlIGFycmF5CisgICAgICAgIGlzIGluZGV4ZWQgYnkgQ09TIElELgorCisgICAgICAtIE1lbWJl ciBgZG9tX2lkc2AKKworICAgICAgICBgZG9tX2lkc2AgaXMgYSBiaXRtYXAsIGV2ZXJ5IGJpdCBj b3JyZXNwb25kcyB0byBhIGRvbWFpbi4gSW5kZXggaXMKKyAgICAgICAgZG9tYWluX2lkLiBJdCBp cyB1c2VkIHRvIGhlbHAgcmVzdG9yZSBkb21haW5faWQgdG8gMCB3aGVuIGEgc29ja2V0IGlzCisg ICAgICAgIG9mZmxpbmUgYW5kIHRoZW4gb25saW5lIGFnYWluLgorCisjIExpbWl0YXRpb25zCisK K0NBVC9DRFAgY2FuIG9ubHkgd29yayBvbiBIVyB3aGljaCBlbmFibGVzIGl0KGNoZWNrIGJ5IENQ VUlEKS4gU28gZmFyLCB0aGVyZSBpcworbm8gSFcgd2hpY2ggZW5hYmxlcyBib3RoIEwyIENBVCBh bmQgTDMgQ0FUL0NEUC4gQnV0IFNXIGltcGxlbWVudGF0aW9uIGhhcyBjb25zLQoraWRlcmVkIHN1 Y2ggc2NlbmFyaW8gdG8gZW5hYmxlIGJvdGggTDIgQ0FUIGFuZCBMMyBDQVQvQ0RQLgorCisjIFRl c3RpbmcKKworV2UgY2FuIGV4ZWN1dGUgYWJvdmUgeGwgY29tbWFuZHMgdG8gdmVyaWZ5IEwyIENB VCBhbmQgTDMgQ0FUL0NEUCBvbiBkaWZmZXJlbnQKK0hXcyBzdXBwb3J0IHRoZW0uCisKK0ZvciBl eGFtcGxlOgorICAgIHJvb3RAOn4kIHhsIHBzci1od2luZm8gLS1jYXQKKyAgICBDYWNoZSBBbGxv Y2F0aW9uIFRlY2hub2xvZ3kgKENBVCk6IEwyCisgICAgU29ja2V0IElEICAgICAgIDogMAorICAg IE1heGltdW0gQ09TICAgICA6IDMKKyAgICBDQk0gbGVuZ3RoICAgICAgOiA4CisgICAgRGVmYXVs dCBDQk0gICAgIDogMHhmZgorCisgICAgcm9vdEA6fiQgeGwgcHNyLWNhdC1jYm0tc2V0IC1sMiAx IDB4N2YKKworICAgIHJvb3RAOn4kIHhsIHBzci1jYXQtc2hvdyAtbDIgMQorICAgIFNvY2tldCBJ RCAgICAgICA6IDAKKyAgICBEZWZhdWx0IENCTSAgICAgOiAweGZmCisgICAgICAgSUQgICAgICAg ICAgICAgICAgICAgICBOQU1FICAgICAgICAgICAgIENCTQorICAgICAgICAxICAgICAgICAgICAg ICAgICB1YnVudHUxNCAgICAgICAgICAgIDB4N2YKKworIyBBcmVhcyBmb3IgaW1wcm92ZW1lbnQK KworQSBoZXhhZGVjaW1hbCBudW1iZXIgaXMgdXNlZCB0byBzZXQvc2hvdyBDQk0gZm9yIGEgZG9t YWluIG5vdy4gQWx0aG91Z2ggdGhpcworaXMgY29udmVuaWVudCB0byBjb3ZlciBvdmVybGFwL2lz b2xhdGVkIGJpdG1hc2sgcmVxdWlyZW1lbnQsIGl0IGlzIG5vdCB1c2VyLQorZnJpZW5kbHkuCisK K1RvIGltcHJvdmUgdGhpcywgdGhlIGxpYnhsIGludGVyZmFjZXMgY2FuIGJlIHdyYXBwZWQgaW4g bGlidmlydCB0byBwcm92aWRlIG1vcmUKK3Vzci1mcmllbmRseSBpbnRlcmZhY2VzIHRvIHVzZXIs IGUuZy4gYSBwZXJjZW50YWdlIG51bWJlciBvZiB0aGUgY2FjaGUgdG8gc2V0CithbmQgc2hvdy4K KworIyBLbm93biBpc3N1ZXMKKworTi9BCisKKyMgUmVmZXJlbmNlcworCisiSU5URUzCriBSRVNP VVJDRSBESVJFQ1RPUiBURUNITk9MT0dZIChJTlRFTMKuIFJEVCkgQUxMT0NBVElPTiBGRUFUVVJF UyIgW0ludGVswq4gNjQgYW5kIElBLTMyIEFyY2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVy IE1hbnVhbHMsIHZvbDNdKGh0dHA6Ly93d3cuaW50ZWwuY29tL2NvbnRlbnQvd3d3L3VzL2VuL3By b2Nlc3NvcnMvYXJjaGl0ZWN0dXJlcy1zb2Z0d2FyZS1kZXZlbG9wZXItbWFudWFscy5odG1sKQor CisjIEhpc3RvcnkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEYXRlICAgICAgIFJldmlzaW9uIFZlcnNp b24gIE5vdGVzCistLS0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIwMTYtMDgtMTIgMS4wICAgICAgWGVuIDQuOSAg RGVzaWduIGRvY3VtZW50IHdyaXR0ZW4KKzIwMTctMDItMTMgMS43ICAgICAgWGVuIDQuOSAgQ2hh bmdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4gTW9kaWZ5IHRoZSBkZXNpZ24g ZG9jdW1lbnQgdG8gY292ZXIgTDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FU L0NEUCBhbmQgTDIgQ0FUOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLiBGaXggdHlw b3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuIEFtZW5kIGRlc2NyaXB0aW9uIG9m IGBmZWF0X21hc2tgIHRvIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQg Y2xlYXJlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4gT3RoZXIgbWlub3IgY2hh bmdlcy4KKzIwMTctMDItMTUgMS44ICAgICAgWGVuIDQuOSAgQ2hhbmdlczoKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMS4gQWRkIGNvbnRlbnQgaW4gJ0FyZWFzIGZvciBpbXByb3ZlbWVu dCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuIEFkanVzdCByZXZpc2lvbiBudW1i ZXIuCisyMDE3LTAzLTE2IDEuOSAgICAgIFhlbiA0LjkgIENoYW5nZXM6CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDEuIEFkZCAnQ01UJyBpbiAnVGVybWlub2xvZ3knOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAyLiBDaGFuZ2UgJ2ZlYXR1cmUgbGlzdCcgdG8gJ2ZlYXR1cmUg YXJyYXknLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLiBNb2RpZnkgZGF0YSBzdHJ1 Y3R1cmUgZGVzY3JpcHRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LiBBZGp1 c3QgcmV2aXNpb24gbnVtYmVyLgorMjAxNy0wNS0wMyAxLjExICAgICBYZW4gNC45ICBDaGFuZ2Vz OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLiBNb2RpZnkgZGF0YSBzdHJ1Y3R1cmUg ZGVzY3JpcHRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLiBBZGp1c3QgcmV2 aXNpb24gbnVtYmVyLgorLS0tLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=