From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from loongson.cn (loongson.cn [114.242.206.163]) by mx.groups.io with SMTP id smtpd.web08.6874.1662869915719345429 for ; Sat, 10 Sep 2022 21:18:36 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: loongson.cn, ip: 114.242.206.163, mailfrom: lichao@loongson.cn) Received: from lichao$loongson.cn ( [111.192.2.114] ) by ajax-webmail-localhost.localdomain (Coremail) ; Sun, 11 Sep 2022 12:18:33 +0800 (GMT+08:00) X-Originating-IP: [111.192.2.114] Date: Sun, 11 Sep 2022 12:18:33 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: "Chao Li" To: devel@edk2.groups.io, michael.d.kinney@intel.com Cc: "Gao, Liming" , "Liu, Zhiguang" Subject: Re: [edk2-devel] [PATCH v1 24/34] MdePkg/BaseCacheMaintenanceLib: LoongArch cache maintenance implementation. X-Priority: 3 X-Mailer: Coremail Webmail Server Version XT5.0.14 build 20220411(feba7c69) Copyright (c) 2002-2022 www.mailtech.cn .loongson.cn In-Reply-To: References: <20220908045147.1191782-1-lichao@loongson.cn> X-CM-CTRLDATA: 7MTnDmZvb3Rlcl90eHQ9MTM5NDQ6NjEy MIME-Version: 1.0 Message-ID: <7b8e8c37.7b8a.1832ac53e3a.Coremail.lichao@loongson.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID: AQAAf8BxJeKZYR1jMKMWAA--.4936W X-CM-SenderInfo: xolfxt3r6o00pqjv00gofq/1tbiAQAGCGMcflwDGgAEsP X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWxJw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=UTF-8 SGkgTWlrZSwKT2theSwgbGV0IG1lIHRyeS4KClRoYW5rcywKQ2hhbwoKCj4gLS0tLS3ljp/lp4vp gq7ku7YtLS0tLQo+IOWPkeS7tuS6ujogIk1pY2hhZWwgRCBLaW5uZXkiIDxtaWNoYWVsLmQua2lu bmV5QGludGVsLmNvbT4KPiDlj5HpgIHml7bpl7Q6MjAyMi0wOS0xMCAwMToyMToyOCAo5pif5pyf 5YWtKQo+IOaUtuS7tuS6ujogIkNoYW8gTGkiIDxsaWNoYW9AbG9vbmdzb24uY24+LCAiZGV2ZWxA ZWRrMi5ncm91cHMuaW8iIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4sICJLaW5uZXksIE1pY2hhZWwg RCIgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPgo+IOaKhOmAgTogIkdhbywgTGltaW5nIiA8 Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPiwgIkxpdSwgWmhpZ3VhbmciIDx6aGlndWFuZy5saXVA aW50ZWwuY29tPgo+IOS4u+mimDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjEgMjQvMzRdIE1k ZVBrZy9CYXNlQ2FjaGVNYWludGVuYW5jZUxpYjogTG9vbmdBcmNoIGNhY2hlIG1haW50ZW5hbmNl IGltcGxlbWVudGF0aW9uLgo+IAo+IFJlY29tbWVuZCBhdm9pZGluZyB1c2Ugb2YgaW5saW5lIGFz c2VtYmx5LiAgQ2FuIHlvdSBjb252ZXJ0IHRvIC5TPwo+IAo+IE1pa2UKPiAKPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tCj4gPiBGcm9tOiBDaGFvIExpIDxsaWNoYW9AbG9vbmdzb24uY24+ Cj4gPiBTZW50OiBXZWRuZXNkYXksIFNlcHRlbWJlciA3LCAyMDIyIDk6NTIgUE0KPiA+IFRvOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbwo+ID4gQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbT47IEdhbywgTGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+ OyBMaXUsIFpoaWd1YW5nCj4gPiA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4KPiA+IFN1YmplY3Q6 IFtQQVRDSCB2MSAyNC8zNF0gTWRlUGtnL0Jhc2VDYWNoZU1haW50ZW5hbmNlTGliOiBMb29uZ0Fy Y2ggY2FjaGUgbWFpbnRlbmFuY2UgaW1wbGVtZW50YXRpb24uCj4gPiAKPiA+IEltcGxlbWVudCBM b29uZ0FyY2ggY2FjaGUgbWFpbnRlbmFuY2UgZnVuY3Rpb25zIGluCj4gPiBCYXNlQ2FjaGVNYWlu dGVuYW5jZUxpYi4KPiA+IAo+ID4gQ2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5u ZXlAaW50ZWwuY29tPgo+ID4gQ2M6IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5j bj4KPiA+IENjOiBaaGlndWFuZyBMaXUgPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+Cj4gPiAKPiA+ IFNpZ25lZC1vZmYtYnk6IENoYW8gTGkgPGxpY2hhb0Bsb29uZ3Nvbi5jbj4KPiA+IC0tLQo+ID4g IC4uLi9CYXNlQ2FjaGVNYWludGVuYW5jZUxpYi5pbmYgICAgICAgICAgICAgICB8ICAgNCArCj4g PiAgLi4uL0Jhc2VDYWNoZU1haW50ZW5hbmNlTGliL0xvb25nQXJjaENhY2hlLmMgIHwgMjUyICsr KysrKysrKysrKysrKysrKwo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMjU2IGluc2VydGlvbnMoKykK PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRlUGtnL0xpYnJhcnkvQmFzZUNhY2hlTWFpbnRlbmFu Y2VMaWIvTG9vbmdBcmNoQ2FjaGUuYwo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJh cnkvQmFzZUNhY2hlTWFpbnRlbmFuY2VMaWIvQmFzZUNhY2hlTWFpbnRlbmFuY2VMaWIuaW5mCj4g PiBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VDYWNoZU1haW50ZW5hbmNlTGliL0Jhc2VDYWNoZU1haW50 ZW5hbmNlTGliLmluZgo+ID4gaW5kZXggMzMxMTQyNDNkNS4uZTEwMzcwNWIyYyAxMDA2NDQKPiA+ IC0tLSBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VDYWNoZU1haW50ZW5hbmNlTGliL0Jhc2VDYWNoZU1h aW50ZW5hbmNlTGliLmluZgo+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUNhY2hlTWFpbnRl bmFuY2VMaWIvQmFzZUNhY2hlTWFpbnRlbmFuY2VMaWIuaW5mCj4gPiBAQCAtNyw2ICs3LDcgQEAK PiA+ICAjICBDb3B5cmlnaHQgKGMpIDIwMDcgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+Cj4gPiAKPiA+ICAjICBQb3J0aW9ucyBjb3B5cmlnaHQgKGMp IDIwMDggLSAyMDA5LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPgo+ID4gCj4g PiAgIyAgQ29weXJpZ2h0IChjKSAyMDIwLCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZl bG9wbWVudCBMUC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+Cj4gPiAKPiA+ICsjICBDb3B5cmln aHQgKGMpIDIwMjIsIExvb25nc29uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24gTGltaXRlZC4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+Cj4gPiAKPiA+ICAjCj4gPiAKPiA+ICAjICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudAo+ID4gCj4gPiAgIwo+ID4gCj4gPiBA QCAtNDUsNiArNDYsOSBAQAo+ID4gIFtTb3VyY2VzLlJJU0NWNjRdCj4gPiAKPiA+ICAgIFJpc2NW Q2FjaGUuYwo+ID4gCj4gPiAKPiA+IAo+ID4gK1tTb3VyY2VzLkxPT05HQVJDSDY0XQo+ID4gCj4g PiArICBMb29uZ0FyY2hDYWNoZS5jCj4gPiAKPiA+ICsKPiA+IAo+ID4gIFtQYWNrYWdlc10KPiA+ IAo+ID4gICAgTWRlUGtnL01kZVBrZy5kZWMKPiA+IAo+ID4gCj4gPiAKPiA+IGRpZmYgLS1naXQg YS9NZGVQa2cvTGlicmFyeS9CYXNlQ2FjaGVNYWludGVuYW5jZUxpYi9Mb29uZ0FyY2hDYWNoZS5j IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUNhY2hlTWFpbnRlbmFuY2VMaWIvTG9vbmdBcmNoQ2FjaGUu Ywo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAuLjA2N2I1ZGVm NTUKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VDYWNoZU1h aW50ZW5hbmNlTGliL0xvb25nQXJjaENhY2hlLmMKPiA+IEBAIC0wLDAgKzEsMjUyIEBACj4gPiAr LyoqIEBmaWxlCj4gPiAKPiA+ICsgIENhY2hlIE1haW50ZW5hbmNlIEZ1bmN0aW9ucyBmb3IgTG9v bmdBcmNoLgo+ID4gCj4gPiArICBMb29uZ0FyY2ggY2FjaGUgbWFpbnRlbmFuY2UgZnVuY3Rpb25z IGhhcyBub3QgeWV0IGJlZW4gY29tcGxldGVkLCBhbmQgd2lsbCBhZGRlZCBpbiBsYXRlci4KPiA+ IAo+ID4gKyAgRnVuY3Rpb25zIGFyZSBudWxsIGZ1bmN0aW9ucyBub3cuCj4gPiAKPiA+ICsKPiA+ IAo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIyLCBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0 aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPgo+ID4gCj4gPiArCj4gPiAKPiA+ ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50Cj4gPiAKPiA+ ICsKPiA+IAo+ID4gKyoqLwo+ID4gCj4gPiArCj4gPiAKPiA+ICsvLwo+ID4gCj4gPiArLy8gSW5j bHVkZSBjb21tb24gaGVhZGVyIGZpbGUgZm9yIHRoaXMgbW9kdWxlLgo+ID4gCj4gPiArLy8KPiA+ IAo+ID4gKyNpbmNsdWRlIDxCYXNlLmg+Cj4gPiAKPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNl TGliLmg+Cj4gPiAKPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPgo+ID4gCj4gPiAr Cj4gPiAKPiA+ICsvKioKPiA+IAo+ID4gKyAgSW52YWxpZGF0ZXMgdGhlIGVudGlyZSBpbnN0cnVj dGlvbiBjYWNoZSBpbiBjYWNoZSBjb2hlcmVuY3kgZG9tYWluIG9mIHRoZQo+ID4gCj4gPiArICBj YWxsaW5nIENQVS4KPiA+IAo+ID4gKwo+ID4gCj4gPiArKiovCj4gPiAKPiA+ICtWT0lECj4gPiAK PiA+ICtFRklBUEkKPiA+IAo+ID4gK0ludmFsaWRhdGVJbnN0cnVjdGlvbkNhY2hlICgKPiA+IAo+ ID4gKyAgVk9JRAo+ID4gCj4gPiArICApCj4gPiAKPiA+ICt7Cj4gPiAKPiA+ICsgIF9fYXNtX18g X192b2xhdGlsZV9fICgKPiA+IAo+ID4gKyAgICAgImliYXIgMFxuIgo+ID4gCj4gPiArICAgICA6 Cj4gPiAKPiA+ICsgICAgIDoKPiA+IAo+ID4gKyAgKTsKPiA+IAo+ID4gK30KPiA+IAo+ID4gKwo+ ID4gCj4gPiArLyoqCj4gPiAKPiA+ICsgIEludmFsaWRhdGVzIGEgcmFuZ2Ugb2YgaW5zdHJ1Y3Rp b24gY2FjaGUgbGluZXMgaW4gdGhlIGNhY2hlIGNvaGVyZW5jeSBkb21haW4KPiA+IAo+ID4gKyAg b2YgdGhlIGNhbGxpbmcgQ1BVLgo+ID4gCj4gPiArCj4gPiAKPiA+ICsgIEludmFsaWRhdGVzIHRo ZSBpbnN0cnVjdGlvbiBjYWNoZSBsaW5lcyBzcGVjaWZpZWQgYnkgQWRkcmVzcyBhbmQgTGVuZ3Ro LiBJZgo+ID4gCj4gPiArICBBZGRyZXNzIGlzIG5vdCBhbGlnbmVkIG9uIGEgY2FjaGUgbGluZSBi b3VuZGFyeSwgdGhlbiBlbnRpcmUgaW5zdHJ1Y3Rpb24KPiA+IAo+ID4gKyAgY2FjaGUgbGluZSBj b250YWluaW5nIEFkZHJlc3MgaXMgaW52YWxpZGF0ZWQuIElmIEFkZHJlc3MgKyBMZW5ndGggaXMg bm90Cj4gPiAKPiA+ICsgIGFsaWduZWQgb24gYSBjYWNoZSBsaW5lIGJvdW5kYXJ5LCB0aGVuIHRo ZSBlbnRpcmUgaW5zdHJ1Y3Rpb24gY2FjaGUgbGluZQo+ID4gCj4gPiArICBjb250YWluaW5nIEFk ZHJlc3MgKyBMZW5ndGggLTEgaXMgaW52YWxpZGF0ZWQuIFRoaXMgZnVuY3Rpb24gbWF5IGNob29z ZSB0bwo+ID4gCj4gPiArICBpbnZhbGlkYXRlIHRoZSBlbnRpcmUgaW5zdHJ1Y3Rpb24gY2FjaGUg aWYgdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuCj4gPiAKPiA+ICsgIGludmFsaWRhdGluZyB0 aGUgc3BlY2lmaWVkIHJhbmdlLiBJZiBMZW5ndGggaXMgMCwgdGhlIG5vIGluc3RydWN0aW9uIGNh Y2hlCj4gPiAKPiA+ICsgIGxpbmVzIGFyZSBpbnZhbGlkYXRlZC4gQWRkcmVzcyBpcyByZXR1cm5l ZC4KPiA+IAo+ID4gKwo+ID4gCj4gPiArICBJZiBMZW5ndGggaXMgZ3JlYXRlciB0aGFuIChNQVhf QUREUkVTUyAtIEFkZHJlc3MgKyAxKSwgdGhlbiBBU1NFUlQoKS4KPiA+IAo+ID4gKwo+ID4gCj4g PiArICBAcGFyYW1baW5dICBBZGRyZXNzIFRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIGluc3RydWN0 aW9uIGNhY2hlIGxpbmVzIHRvCj4gPiAKPiA+ICsgICAgICAgICAgICAgICAgICBpbnZhbGlkYXRl LiBJZiB0aGUgQ1BVIGlzIGluIGEgcGh5c2ljYWwgYWRkcmVzc2luZyBtb2RlLCB0aGVuCj4gPiAK PiA+ICsgICAgICAgICAgICAgICAgICBBZGRyZXNzIGlzIGEgcGh5c2ljYWwgYWRkcmVzcy4gSWYg dGhlIENQVSBpcyBpbiBhIHZpcnR1YWwKPiA+IAo+ID4gKyAgICAgICAgICAgICAgICAgIGFkZHJl c3NpbmcgbW9kZSwgdGhlbiBBZGRyZXNzIGlzIGEgdmlydHVhbCBhZGRyZXNzLgo+ID4gCj4gPiAr Cj4gPiAKPiA+ICsgIEBwYXJhbVtpbl0gIExlbmd0aCAgVGhlIG51bWJlciBvZiBieXRlcyB0byBp bnZhbGlkYXRlIGZyb20gdGhlIGluc3RydWN0aW9uIGNhY2hlLgo+ID4gCj4gPiArCj4gPiAKPiA+ ICsgIEByZXR1cm4gQWRkcmVzcy4KPiA+IAo+ID4gKwo+ID4gCj4gPiArKiovCj4gPiAKPiA+ICtW T0lEICoKPiA+IAo+ID4gK0VGSUFQSQo+ID4gCj4gPiArSW52YWxpZGF0ZUluc3RydWN0aW9uQ2Fj aGVSYW5nZSAoCj4gPiAKPiA+ICsgIElOICAgICAgIFZPSUQgICAqQWRkcmVzcywKPiA+IAo+ID4g KyAgSU4gICAgICAgVUlOVE4gIExlbmd0aAo+ID4gCj4gPiArICApCj4gPiAKPiA+ICt7Cj4gPiAK PiA+ICsgIF9fYXNtX18gX192b2xhdGlsZV9fICgKPiA+IAo+ID4gKyAgICAgImliYXIgMFxuIgo+ ID4gCj4gPiArICAgICA6Cj4gPiAKPiA+ICsgICAgIDoKPiA+IAo+ID4gKyAgKTsKPiA+IAo+ID4g KyAgcmV0dXJuIEFkZHJlc3M7Cj4gPiAKPiA+ICt9Cj4gPiAKPiA+ICsKPiA+IAo+ID4gKy8qKgo+ ID4gCj4gPiArICBXcml0ZXMgQmFjayBhbmQgSW52YWxpZGF0ZXMgdGhlIGVudGlyZSBkYXRhIGNh Y2hlIGluIGNhY2hlIGNvaGVyZW5jeSBkb21haW4KPiA+IAo+ID4gKyAgb2YgdGhlIGNhbGxpbmcg Q1BVLgo+ID4gCj4gPiArCj4gPiAKPiA+ICsgIFdyaXRlcyBCYWNrIGFuZCBJbnZhbGlkYXRlcyB0 aGUgZW50aXJlIGRhdGEgY2FjaGUgaW4gY2FjaGUgY29oZXJlbmN5IGRvbWFpbgo+ID4gCj4gPiAr ICBvZiB0aGUgY2FsbGluZyBDUFUuIFRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IGFsbCBk aXJ0eSBjYWNoZSBsaW5lcyBhcmUKPiA+IAo+ID4gKyAgd3JpdHRlbiBiYWNrIHRvIHN5c3RlbSBt ZW1vcnksIGFuZCBhbHNvIGludmFsaWRhdGVzIGFsbCB0aGUgZGF0YSBjYWNoZSBsaW5lcwo+ID4g Cj4gPiArICBpbiB0aGUgY2FjaGUgY29oZXJlbmN5IGRvbWFpbiBvZiB0aGUgY2FsbGluZyBDUFUu Cj4gPiAKPiA+ICsKPiA+IAo+ID4gKyoqLwo+ID4gCj4gPiArVk9JRAo+ID4gCj4gPiArRUZJQVBJ Cj4gPiAKPiA+ICtXcml0ZUJhY2tJbnZhbGlkYXRlRGF0YUNhY2hlICgKPiA+IAo+ID4gKyAgVk9J RAo+ID4gCj4gPiArICApCj4gPiAKPiA+ICt7Cj4gPiAKPiA+ICsgIERFQlVHICgoREVCVUdfRVJS T1IsICIlYTogTm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZCBvbiBMb29uZ0FyY2guXG4iLCBfX0ZV TkNUSU9OX18pKTsKPiA+IAo+ID4gK30KPiA+IAo+ID4gKwo+ID4gCj4gPiArLyoqCj4gPiAKPiA+ ICsgIFdyaXRlcyBCYWNrIGFuZCBJbnZhbGlkYXRlcyBhIHJhbmdlIG9mIGRhdGEgY2FjaGUgbGlu ZXMgaW4gdGhlIGNhY2hlCj4gPiAKPiA+ICsgIGNvaGVyZW5jeSBkb21haW4gb2YgdGhlIGNhbGxp bmcgQ1BVLgo+ID4gCj4gPiArCj4gPiAKPiA+ICsgIFdyaXRlcyBCYWNrIGFuZCBJbnZhbGlkYXRl IHRoZSBkYXRhIGNhY2hlIGxpbmVzIHNwZWNpZmllZCBieSBBZGRyZXNzIGFuZAo+ID4gCj4gPiAr ICBMZW5ndGguIElmIEFkZHJlc3MgaXMgbm90IGFsaWduZWQgb24gYSBjYWNoZSBsaW5lIGJvdW5k YXJ5LCB0aGVuIGVudGlyZSBkYXRhCj4gPiAKPiA+ICsgIGNhY2hlIGxpbmUgY29udGFpbmluZyBB ZGRyZXNzIGlzIHdyaXR0ZW4gYmFjayBhbmQgaW52YWxpZGF0ZWQuIElmIEFkZHJlc3MgKwo+ID4g Cj4gPiArICBMZW5ndGggaXMgbm90IGFsaWduZWQgb24gYSBjYWNoZSBsaW5lIGJvdW5kYXJ5LCB0 aGVuIHRoZSBlbnRpcmUgZGF0YSBjYWNoZQo+ID4gCj4gPiArICBsaW5lIGNvbnRhaW5pbmcgQWRk cmVzcyArIExlbmd0aCAtMSBpcyB3cml0dGVuIGJhY2sgYW5kIGludmFsaWRhdGVkLiBUaGlzCj4g PiAKPiA+ICsgIGZ1bmN0aW9uIG1heSBjaG9vc2UgdG8gd3JpdGUgYmFjayBhbmQgaW52YWxpZGF0 ZSB0aGUgZW50aXJlIGRhdGEgY2FjaGUgaWYKPiA+IAo+ID4gKyAgdGhhdCBpcyBtb3JlIGVmZmlj aWVudCB0aGFuIHdyaXRpbmcgYmFjayBhbmQgaW52YWxpZGF0aW5nIHRoZSBzcGVjaWZpZWQKPiA+ IAo+ID4gKyAgcmFuZ2UuIElmIExlbmd0aCBpcyAwLCB0aGUgbm8gZGF0YSBjYWNoZSBsaW5lcyBh cmUgd3JpdHRlbiBiYWNrIGFuZAo+ID4gCj4gPiArICBpbnZhbGlkYXRlZC4gQWRkcmVzcyBpcyBy ZXR1cm5lZC4KPiA+IAo+ID4gKwo+ID4gCj4gPiArICBJZiBMZW5ndGggaXMgZ3JlYXRlciB0aGFu IChNQVhfQUREUkVTUyAtIEFkZHJlc3MgKyAxKSwgdGhlbiBBU1NFUlQoKS4KPiA+IAo+ID4gKwo+ ID4gCj4gPiArICBAcGFyYW1baW5dICBBZGRyZXNzIFRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIGRh dGEgY2FjaGUgbGluZXMgdG8gd3JpdGUgYmFjayBhbmQKPiA+IAo+ID4gKyAgICAgICAgICAgICAg ICAgIGludmFsaWRhdGUuIElmIHRoZSBDUFUgaXMgaW4gYSBwaHlzaWNhbCBhZGRyZXNzaW5nIG1v ZGUsIHRoZW4KPiA+IAo+ID4gKyAgICAgICAgICAgICAgICAgIEFkZHJlc3MgaXMgYSBwaHlzaWNh bCBhZGRyZXNzLiBJZiB0aGUgQ1BVIGlzIGluIGEgdmlydHVhbAo+ID4gCj4gPiArICAgICAgICAg ICAgICAgICAgYWRkcmVzc2luZyBtb2RlLCB0aGVuIEFkZHJlc3MgaXMgYSB2aXJ0dWFsIGFkZHJl c3MuCj4gPiAKPiA+ICsgIEBwYXJhbVtpbl0gIExlbmd0aCAgVGhlIG51bWJlciBvZiBieXRlcyB0 byB3cml0ZSBiYWNrIGFuZCBpbnZhbGlkYXRlIGZyb20gdGhlCj4gPiAKPiA+ICsgICAgICAgICAg ICAgICAgICBkYXRhIGNhY2hlLgo+ID4gCj4gPiArCj4gPiAKPiA+ICsgIEByZXR1cm4gQWRkcmVz cyBvZiBjYWNoZSBpbnZhbGlkYXRpb24uCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyoqLwo+ID4gCj4g PiArVk9JRCAqCj4gPiAKPiA+ICtFRklBUEkKPiA+IAo+ID4gK1dyaXRlQmFja0ludmFsaWRhdGVE YXRhQ2FjaGVSYW5nZSAoCj4gPiAKPiA+ICsgIElOICAgICAgVk9JRCAgICpBZGRyZXNzLAo+ID4g Cj4gPiArICBJTiAgICAgIFVJTlROICBMZW5ndGgKPiA+IAo+ID4gKyAgKQo+ID4gCj4gPiArewo+ ID4gCj4gPiArICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IE5vdCBjdXJyZW50bHkgaW1wbGVt ZW50ZWQgb24gTG9vbmdBcmNoLlxuIiwgX19GVU5DVElPTl9fKSk7Cj4gPiAKPiA+ICsgIHJldHVy biBBZGRyZXNzOwo+ID4gCj4gPiArfQo+ID4gCj4gPiArCj4gPiAKPiA+ICsvKioKPiA+IAo+ID4g KyAgV3JpdGVzIEJhY2sgdGhlIGVudGlyZSBkYXRhIGNhY2hlIGluIGNhY2hlIGNvaGVyZW5jeSBk b21haW4gb2YgdGhlIGNhbGxpbmcKPiA+IAo+ID4gKyAgQ1BVLgo+ID4gCj4gPiArCj4gPiAKPiA+ ICsgIFdyaXRlcyBCYWNrIHRoZSBlbnRpcmUgZGF0YSBjYWNoZSBpbiBjYWNoZSBjb2hlcmVuY3kg ZG9tYWluIG9mIHRoZSBjYWxsaW5nCj4gPiAKPiA+ICsgIENQVS4gVGhpcyBmdW5jdGlvbiBndWFy YW50ZWVzIHRoYXQgYWxsIGRpcnR5IGNhY2hlIGxpbmVzIGFyZSB3cml0dGVuIGJhY2sgdG8KPiA+ IAo+ID4gKyAgc3lzdGVtIG1lbW9yeS4gVGhpcyBmdW5jdGlvbiBtYXkgYWxzbyBpbnZhbGlkYXRl IGFsbCB0aGUgZGF0YSBjYWNoZSBsaW5lcyBpbgo+ID4gCj4gPiArICB0aGUgY2FjaGUgY29oZXJl bmN5IGRvbWFpbiBvZiB0aGUgY2FsbGluZyBDUFUuCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyoqLwo+ ID4gCj4gPiArVk9JRAo+ID4gCj4gPiArRUZJQVBJCj4gPiAKPiA+ICtXcml0ZUJhY2tEYXRhQ2Fj aGUgKAo+ID4gCj4gPiArICBWT0lECj4gPiAKPiA+ICsgICkKPiA+IAo+ID4gK3sKPiA+IAo+ID4g KyAgV3JpdGVCYWNrSW52YWxpZGF0ZURhdGFDYWNoZSAoKTsKPiA+IAo+ID4gK30KPiA+IAo+ID4g Kwo+ID4gCj4gPiArLyoqCj4gPiAKPiA+ICsgIFdyaXRlcyBCYWNrIGEgcmFuZ2Ugb2YgZGF0YSBj YWNoZSBsaW5lcyBpbiB0aGUgY2FjaGUgY29oZXJlbmN5IGRvbWFpbiBvZiB0aGUKPiA+IAo+ID4g KyAgY2FsbGluZyBDUFUuCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAgV3JpdGVzIEJhY2sgdGhlIGRh dGEgY2FjaGUgbGluZXMgc3BlY2lmaWVkIGJ5IEFkZHJlc3MgYW5kIExlbmd0aC4gSWYgQWRkcmVz cwo+ID4gCj4gPiArICBpcyBub3QgYWxpZ25lZCBvbiBhIGNhY2hlIGxpbmUgYm91bmRhcnksIHRo ZW4gZW50aXJlIGRhdGEgY2FjaGUgbGluZQo+ID4gCj4gPiArICBjb250YWluaW5nIEFkZHJlc3Mg aXMgd3JpdHRlbiBiYWNrLiBJZiBBZGRyZXNzICsgTGVuZ3RoIGlzIG5vdCBhbGlnbmVkIG9uIGEK PiA+IAo+ID4gKyAgY2FjaGUgbGluZSBib3VuZGFyeSwgdGhlbiB0aGUgZW50aXJlIGRhdGEgY2Fj aGUgbGluZSBjb250YWluaW5nIEFkZHJlc3MgKwo+ID4gCj4gPiArICBMZW5ndGggLTEgaXMgd3Jp dHRlbiBiYWNrLiBUaGlzIGZ1bmN0aW9uIG1heSBjaG9vc2UgdG8gd3JpdGUgYmFjayB0aGUgZW50 aXJlCj4gPiAKPiA+ICsgIGRhdGEgY2FjaGUgaWYgdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFu IHdyaXRpbmcgYmFjayB0aGUgc3BlY2lmaWVkIHJhbmdlLgo+ID4gCj4gPiArICBJZiBMZW5ndGgg aXMgMCwgdGhlIG5vIGRhdGEgY2FjaGUgbGluZXMgYXJlIHdyaXR0ZW4gYmFjay4gVGhpcyBmdW5j dGlvbiBtYXkKPiA+IAo+ID4gKyAgYWxzbyBpbnZhbGlkYXRlIGFsbCB0aGUgZGF0YSBjYWNoZSBs aW5lcyBpbiB0aGUgc3BlY2lmaWVkIHJhbmdlIG9mIHRoZSBjYWNoZQo+ID4gCj4gPiArICBjb2hl cmVuY3kgZG9tYWluIG9mIHRoZSBjYWxsaW5nIENQVS4gQWRkcmVzcyBpcyByZXR1cm5lZC4KPiA+ IAo+ID4gKwo+ID4gCj4gPiArICBJZiBMZW5ndGggaXMgZ3JlYXRlciB0aGFuIChNQVhfQUREUkVT UyAtIEFkZHJlc3MgKyAxKSwgdGhlbiBBU1NFUlQoKS4KPiA+IAo+ID4gKwo+ID4gCj4gPiArICBA cGFyYW1baW5dICBBZGRyZXNzIFRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIGRhdGEgY2FjaGUgbGlu ZXMgdG8gd3JpdGUgYmFjay4gSWYKPiA+IAo+ID4gKyAgICAgICAgICAgICAgICAgIHRoZSBDUFUg aXMgaW4gYSBwaHlzaWNhbCBhZGRyZXNzaW5nIG1vZGUsIHRoZW4gQWRkcmVzcyBpcyBhCj4gPiAK PiA+ICsgICAgICAgICAgICAgICAgICBwaHlzaWNhbCBhZGRyZXNzLiBJZiB0aGUgQ1BVIGlzIGlu IGEgdmlydHVhbCBhZGRyZXNzaW5nCj4gPiAKPiA+ICsgICAgICAgICAgICAgICAgICBtb2RlLCB0 aGVuIEFkZHJlc3MgaXMgYSB2aXJ0dWFsIGFkZHJlc3MuCj4gPiAKPiA+ICsgIEBwYXJhbVtpbl0g IExlbmd0aCAgVGhlIG51bWJlciBvZiBieXRlcyB0byB3cml0ZSBiYWNrIGZyb20gdGhlIGRhdGEg Y2FjaGUuCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAgQHJldHVybiBBZGRyZXNzIG9mIGNhY2hlIHdy aXR0ZW4gaW4gbWFpbiBtZW1vcnkuCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyoqLwo+ID4gCj4gPiAr Vk9JRCAqCj4gPiAKPiA+ICtFRklBUEkKPiA+IAo+ID4gK1dyaXRlQmFja0RhdGFDYWNoZVJhbmdl ICgKPiA+IAo+ID4gKyAgSU4gICAgICBWT0lEICAgKkFkZHJlc3MsCj4gPiAKPiA+ICsgIElOICAg ICAgVUlOVE4gIExlbmd0aAo+ID4gCj4gPiArICApCj4gPiAKPiA+ICt7Cj4gPiAKPiA+ICsgIERF QlVHICgoREVCVUdfRVJST1IsICIlYTogTm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZCBvbiBMb29u Z0FyY2guXG4iLCBfX0ZVTkNUSU9OX18pKTsKPiA+IAo+ID4gKyAgcmV0dXJuIEFkZHJlc3M7Cj4g PiAKPiA+ICt9Cj4gPiAKPiA+ICsKPiA+IAo+ID4gKy8qKgo+ID4gCj4gPiArICBJbnZhbGlkYXRl cyB0aGUgZW50aXJlIGRhdGEgY2FjaGUgaW4gY2FjaGUgY29oZXJlbmN5IGRvbWFpbiBvZiB0aGUg Y2FsbGluZwo+ID4gCj4gPiArICBDUFUuCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAgSW52YWxpZGF0 ZXMgdGhlIGVudGlyZSBkYXRhIGNhY2hlIGluIGNhY2hlIGNvaGVyZW5jeSBkb21haW4gb2YgdGhl IGNhbGxpbmcKPiA+IAo+ID4gKyAgQ1BVLiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgdXNlZCB3aXRo IGNhcmUgYmVjYXVzZSBkaXJ0eSBjYWNoZSBsaW5lcyBhcmUgbm90Cj4gPiAKPiA+ICsgIHdyaXR0 ZW4gYmFjayB0byBzeXN0ZW0gbWVtb3J5LiBJdCBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgY2FjaGUg ZGlhZ25vc3RpY3MuIElmCj4gPiAKPiA+ICsgIHRoZSBDUFUgZG9lcyBub3Qgc3VwcG9ydCBpbnZh bGlkYXRpb24gb2YgdGhlIGVudGlyZSBkYXRhIGNhY2hlLCB0aGVuIGEgd3JpdGUKPiA+IAo+ID4g KyAgYmFjayBhbmQgaW52YWxpZGF0ZSBvcGVyYXRpb24gc2hvdWxkIGJlIHBlcmZvcm1lZCBvbiB0 aGUgZW50aXJlIGRhdGEgY2FjaGUuCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyoqLwo+ID4gCj4gPiAr Vk9JRAo+ID4gCj4gPiArRUZJQVBJCj4gPiAKPiA+ICtJbnZhbGlkYXRlRGF0YUNhY2hlICgKPiA+ IAo+ID4gKyAgVk9JRAo+ID4gCj4gPiArICApCj4gPiAKPiA+ICt7Cj4gPiAKPiA+ICsgIF9fYXNt X18gX192b2xhdGlsZV9fICgKPiA+IAo+ID4gKyAgICAgImRiYXIgMFxuIgo+ID4gCj4gPiArICAg ICA6Cj4gPiAKPiA+ICsgICAgIDoKPiA+IAo+ID4gKyAgKTsKPiA+IAo+ID4gK30KPiA+IAo+ID4g Kwo+ID4gCj4gPiArLyoqCj4gPiAKPiA+ICsgIEludmFsaWRhdGVzIGEgcmFuZ2Ugb2YgZGF0YSBj YWNoZSBsaW5lcyBpbiB0aGUgY2FjaGUgY29oZXJlbmN5IGRvbWFpbiBvZiB0aGUKPiA+IAo+ID4g KyAgY2FsbGluZyBDUFUuCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAgSW52YWxpZGF0ZXMgdGhlIGRh dGEgY2FjaGUgbGluZXMgc3BlY2lmaWVkIGJ5IEFkZHJlc3MgYW5kIExlbmd0aC4gSWYgQWRkcmVz cwo+ID4gCj4gPiArICBpcyBub3QgYWxpZ25lZCBvbiBhIGNhY2hlIGxpbmUgYm91bmRhcnksIHRo ZW4gZW50aXJlIGRhdGEgY2FjaGUgbGluZQo+ID4gCj4gPiArICBjb250YWluaW5nIEFkZHJlc3Mg aXMgaW52YWxpZGF0ZWQuIElmIEFkZHJlc3MgKyBMZW5ndGggaXMgbm90IGFsaWduZWQgb24gYQo+ ID4gCj4gPiArICBjYWNoZSBsaW5lIGJvdW5kYXJ5LCB0aGVuIHRoZSBlbnRpcmUgZGF0YSBjYWNo ZSBsaW5lIGNvbnRhaW5pbmcgQWRkcmVzcyArCj4gPiAKPiA+ICsgIExlbmd0aCAtMSBpcyBpbnZh bGlkYXRlZC4gVGhpcyBmdW5jdGlvbiBtdXN0IG5ldmVyIGludmFsaWRhdGUgYW55IGNhY2hlIGxp bmVzCj4gPiAKPiA+ICsgIG91dHNpZGUgdGhlIHNwZWNpZmllZCByYW5nZS4gSWYgTGVuZ3RoIGlz IDAsIHRoZSBubyBkYXRhIGNhY2hlIGxpbmVzIGFyZQo+ID4gCj4gPiArICBpbnZhbGlkYXRlZC4g QWRkcmVzcyBpcyByZXR1cm5lZC4gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQgd2l0aCBjYXJl Cj4gPiAKPiA+ICsgIGJlY2F1c2UgZGlydHkgY2FjaGUgbGluZXMgYXJlIG5vdCB3cml0dGVuIGJh Y2sgdG8gc3lzdGVtIG1lbW9yeS4gSXQgaXMKPiA+IAo+ID4gKyAgdHlwaWNhbGx5IHVzZWQgZm9y IGNhY2hlIGRpYWdub3N0aWNzLiBJZiB0aGUgQ1BVIGRvZXMgbm90IHN1cHBvcnQKPiA+IAo+ID4g KyAgaW52YWxpZGF0aW9uIG9mIGEgZGF0YSBjYWNoZSByYW5nZSwgdGhlbiBhIHdyaXRlIGJhY2sg YW5kIGludmFsaWRhdGUKPiA+IAo+ID4gKyAgb3BlcmF0aW9uIHNob3VsZCBiZSBwZXJmb3JtZWQg b24gdGhlIGRhdGEgY2FjaGUgcmFuZ2UuCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAgSWYgTGVuZ3Ro IGlzIGdyZWF0ZXIgdGhhbiAoTUFYX0FERFJFU1MgLSBBZGRyZXNzICsgMSksIHRoZW4gQVNTRVJU KCkuCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAgQHBhcmFtW2luXSAgQWRkcmVzcyBUaGUgYmFzZSBh ZGRyZXNzIG9mIHRoZSBkYXRhIGNhY2hlIGxpbmVzIHRvIGludmFsaWRhdGUuIElmCj4gPiAKPiA+ ICsgICAgICAgICAgICAgICAgICB0aGUgQ1BVIGlzIGluIGEgcGh5c2ljYWwgYWRkcmVzc2luZyBt b2RlLCB0aGVuIEFkZHJlc3MgaXMgYQo+ID4gCj4gPiArICAgICAgICAgICAgICAgICAgcGh5c2lj YWwgYWRkcmVzcy4gSWYgdGhlIENQVSBpcyBpbiBhIHZpcnR1YWwgYWRkcmVzc2luZyBtb2RlLAo+ ID4gCj4gPiArICAgICAgICAgICAgICAgICAgdGhlbiBBZGRyZXNzIGlzIGEgdmlydHVhbCBhZGRy ZXNzLgo+ID4gCj4gPiArICBAcGFyYW1baW5dICBMZW5ndGggIFRoZSBudW1iZXIgb2YgYnl0ZXMg dG8gaW52YWxpZGF0ZSBmcm9tIHRoZSBkYXRhIGNhY2hlLgo+ID4gCj4gPiArCj4gPiAKPiA+ICsg IEByZXR1cm4gQWRkcmVzcy4KPiA+IAo+ID4gKwo+ID4gCj4gPiArKiovCj4gPiAKPiA+ICtWT0lE ICoKPiA+IAo+ID4gK0VGSUFQSQo+ID4gCj4gPiArSW52YWxpZGF0ZURhdGFDYWNoZVJhbmdlICgK PiA+IAo+ID4gKyAgSU4gICAgICBWT0lEICAgKkFkZHJlc3MsCj4gPiAKPiA+ICsgIElOICAgICAg VUlOVE4gIExlbmd0aAo+ID4gCj4gPiArICApCj4gPiAKPiA+ICt7Cj4gPiAKPiA+ICsgIF9fYXNt X18gX192b2xhdGlsZV9fICgKPiA+IAo+ID4gKyAgICAgImRiYXIgMFxuIgo+ID4gCj4gPiArICAg ICA6Cj4gPiAKPiA+ICsgICAgIDoKPiA+IAo+ID4gKyAgKTsKPiA+IAo+ID4gKyAgcmV0dXJuIEFk ZHJlc3M7Cj4gPiAKPiA+ICt9Cj4gPiAKPiA+IC0tCj4gPiAyLjI3LjAKPiAKPiAKPiAKPiAKPiAK PiAKDQoNCuacrOmCruS7tuWPiuWFtumZhOS7tuWQq+aciem+meiKr+S4reenkeeahOWVhuS4muen mOWvhuS/oeaBr++8jOS7hemZkOS6juWPkemAgee7meS4iumdouWcsOWdgOS4reWIl+WHuueahOS4 quS6uuaIlue+pOe7hOOAguemgeatouS7u+S9leWFtuS7luS6uuS7peS7u+S9leW9ouW8j+S9v+eU qO+8iOWMheaLrOS9huS4jemZkOS6juWFqOmDqOaIlumDqOWIhuWcsOazhOmcsuOAgeWkjeWItuaI luaVo+WPke+8ieacrOmCruS7tuWPiuWFtumZhOS7tuS4reeahOS/oeaBr+OAguWmguaenOaCqOmU meaUtuacrOmCruS7tu+8jOivt+aCqOeri+WNs+eUteivneaIlumCruS7tumAmuefpeWPkeS7tuS6 uuW5tuWIoOmZpOacrOmCruS7tuOAgiANClRoaXMgZW1haWwgYW5kIGl0cyBhdHRhY2htZW50cyBj b250YWluIGNvbmZpZGVudGlhbCBpbmZvcm1hdGlvbiBmcm9tIExvb25nc29uIFRlY2hub2xvZ3kg LCB3aGljaCBpcyBpbnRlbmRlZCBvbmx5IGZvciB0aGUgcGVyc29uIG9yIGVudGl0eSB3aG9zZSBh ZGRyZXNzIGlzIGxpc3RlZCBhYm92ZS4gQW55IHVzZSBvZiB0aGUgaW5mb3JtYXRpb24gY29udGFp bmVkIGhlcmVpbiBpbiBhbnkgd2F5IChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bywgdG90 YWwgb3IgcGFydGlhbCBkaXNjbG9zdXJlLCByZXByb2R1Y3Rpb24gb3IgZGlzc2VtaW5hdGlvbikg YnkgcGVyc29ucyBvdGhlciB0aGFuIHRoZSBpbnRlbmRlZCByZWNpcGllbnQocykgaXMgcHJvaGli aXRlZC4gSWYgeW91IHJlY2VpdmUgdGhpcyBlbWFpbCBpbiBlcnJvciwgcGxlYXNlIG5vdGlmeSB0 aGUgc2VuZGVyIGJ5IHBob25lIG9yIGVtYWlsIGltbWVkaWF0ZWx5IGFuZCBkZWxldGUgaXQuIA==