Re: [PATCH v9 2/5] riscv: add support for SBI Supervisor Software Events extension
Himanshu Chauhan <[email protected]> Wed, 29 Jul 2026 13:17:49 +0530
| Newsgroups | org.infradead.lists.kvm-riscv,org.infradead.lists.linux-riscv,org.kernel.vger.kvm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest,org.kernel.vger.linux-perf-users |
|---|---|
| Message-ID | <CA+Ht8=b59YDH+7jrea8PcFq3HtFaSk81O8oyQAQ1+ZP3aCb0QQ@mail.gmail.com> |
SGkgWmhhbnBlbmcsCgpUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIGJyb2tlbiB3aGVuIEkgcHVsbCB0 aGUgY29tcGxldGUgcGF0Y2ggc2V0IChiNApvciBnaXQgYW0gd2l0aCBtdXR0KS4KCgpPbiBTYXQs IE1heSA5LCAyMDI2IGF0IDY6NDDigK9QTSBaaGFucGVuZyBaaGFuZwo8emhhbmd6aGFucGVuZy5q YXNwZXJAYnl0ZWRhbmNlLmNvbT4gd3JvdGU6Cj4KPiBGcm9tOiBDbMOpbWVudCBMw6lnZXIgPGNs ZWdlckByaXZvc2luYy5jb20+Cj4KPiBUaGUgU0JJIFNTRSBleHRlbnNpb24gYWxsb3dzIHRoZSBz dXBlcnZpc29yIHNvZnR3YXJlIHRvIGJlIG5vdGlmaWVkIGJ5Cj4gdGhlIFNCSSBvZiBzcGVjaWZp YyBldmVudHMgdGhhdCBhcmUgbm90IG1hc2thYmxlLiBUaGUgY29udGV4dCBzd2l0Y2ggaXMKPiBo YW5kbGVkIHBhcnRpYWxseSBieSB0aGUgZmlybXdhcmUgd2hpY2ggd2lsbCBzYXZlIHJlZ2lzdGVy cyBhNiBhbmQgYTcuCj4gV2hlbiBlbnRlcmluZyBrZXJuZWwgd2UgY2FuIHJlbHkgb24gdGhlc2Ug MiByZWdpc3RlcnMgdG8gc2V0dXAgdGhlIHN0YWNrCj4gYW5kIHNhdmUgYWxsIHRoZSByZWdpc3Rl cnMuCj4KPiBTaW5jZSBTU0UgZXZlbnRzIGNhbiBiZSBkZWxpdmVyZWQgYXQgYW55IHRpbWUgdG8g dGhlIGtlcm5lbCwgaW5jbHVkaW5nCj4gZHVyaW5nIGV4Y2VwdGlvbiBoYW5kbGluZywgd2UgbmVl ZCBhIHdheSB0byBsb2NhdGUgdGhlIGN1cnJlbnRfdGFzayBmb3IKPiBjb250ZXh0IHRyYWNraW5n LiBPbiBSSVNDLVYsIGl0IGlzIHN0b3JlZCBpbiBzY3JhdGNoIHdoZW4gaW4gdXNlciBzcGFjZQo+ IG9yIHRwIHdoZW4gaW4ga2VybmVsIHNwYWNlIChpbiB3aGljaCBjYXNlIFNTQ1JBVENIIGlzIHpl cm8pLiBCdXQgYXQgdGhlCj4gYmVnaW5uaW5nIG9mIGV4Y2VwdGlvbiBoYW5kbGluZywgU1NDUkFU Q0ggaXMgdXNlZCB0byBzd2FwIHRwIGFuZAo+IGNoZWNrIHRoZSBvcmlnaW4gb2YgdGhlIGV4Y2Vw dGlvbi4gSWYgaW50ZXJydXB0ZWQgYXQgdGhhdCBwb2ludCwgdGhlbiwKPiB0aGVyZSBpcyBubyB3 YXkgdG8gcmVsaWFibHkga25vdyB3aGVyZSBpcyBsb2NhdGVkIHRoZSBjdXJyZW50Cj4gdGFza19z dHJ1Y3QuIEV2ZW4gY2hlY2tpbmcgdGhlIGludGVycnVwdGlvbiBsb2NhdGlvbiB3b24ndCB3b3Jr IGFzIFNTRQo+IGV2ZW50IGNhbiBiZSBuZXN0ZWQgb24gdG9wIG9mIGVhY2ggb3RoZXIgc28gdGhl IG9yaWdpbmFsIGludGVycnVwdGlvbgo+IHNpdGUgbWlnaHQgYmUgbG9zdCBhdCBzb21lIHBvaW50 LiBJbiBvcmRlciB0byByZXRyaWV2ZSBpdCByZWxpYWJseSwKPiBzdG9yZSB0aGUgY3VycmVudCB0 YXNrIGluIGFuIGFkZGl0aW9uYWwgX19zc2VfZW50cnlfdGFzayBwZXJfY3B1IGFycmF5Lgo+IFRo aXMgYXJyYXkgaXMgdGhlbiB1c2VkIHRvIHJldHJpZXZlIHRoZSBjdXJyZW50IHRhc2sgYmFzZWQg b24gdGhlCj4gaGFydCBJRCB0aGF0IGlzIHBhc3NlZCB0byB0aGUgU1NFIGV2ZW50IGhhbmRsZXIg aW4gYTYuCj4KPiBUaGF0IGJlaW5nIHNhaWQsIHRoZSB3YXkgdGhlIGN1cnJlbnQgdGFzayBzdHJ1 Y3QgaXMgc3RvcmVkIHNob3VsZAo+IHByb2JhYmx5IGJlIHJld29ya2VkIHRvIGZpbmQgYSBiZXR0 ZXIgcmVsaWFibGUgYWx0ZXJuYXRpdmUuCj4KPiBTaW5jZSBlYWNoIGV2ZW50IChhbmQgZWFjaCBD UFUgZm9yIGxvY2FsIGV2ZW50cykgaGF2ZSB0aGVpciBvd24KPiBjb250ZXh0IGFuZCBjYW4gcHJl ZW1wdCBlYWNoIG90aGVyLCBhbGxvY2F0ZSBhIHN0YWNrIChhbmQgYSBzaGFkb3cgc3RhY2sKPiBp ZiBuZWVkZWQpIGZvciBlYWNoIG9mIHRoZW0gKGFuZCBmb3IgZWFjaCBjcHUgZm9yIGxvY2FsIGV2 ZW50cykuCj4KPiBUaGUgU1NFIGhhbmRsZXIgcnVucyBhcyBhIHN5bnRoZXRpYyBoYW5kbGVyIGVw aXNvZGUsIGJ1dCBjb21wbGV0aW9uIG11c3QKPiByZXN1bWUgdGhlIGNvbnRleHQgdGhhdCB3YXMg aW50ZXJydXB0ZWQgYnkgdGhlIFNTRSBldmVudC4gIFByZXNlcnZlIHN0dmVjCj4gYW5kLCB3aGVu IHRoZSBoeXBlcnZpc29yIGV4dGVuc2lvbiBpcyBwcmVzZW50LCBoc3RhdHVzIGFjcm9zcyBkb19z c2UoKSBzbwo+IHRoZSBoYW5kbGVyIGVwaXNvZGUgZG9lcyBub3QgbGVhayB0cmFwLXZlY3RvciBv ciB2aXJ0dWFsaXphdGlvbiBzdGF0ZSBpbnRvCj4gdGhlIGludGVycnVwdGVkIGNvbnRleHQuCj4K PiBXaGVuIGNvbXBsZXRpbmcgdGhlIGV2ZW50LCBpZiB3ZSB3ZXJlIGNvbWluZyBmcm9tIGtlcm5l bCB3aXRoIGludGVycnVwdHMKPiBkaXNhYmxlZCwgc2ltcGx5IHJldHVybiB0aGVyZS4gSWYgY29t aW5nIGZyb20gdXNlcnNwYWNlIG9yIGtlcm5lbCB3aXRoCj4gaW50ZXJydXB0cyBlbmFibGVkLCBz aW11bGF0ZSBhbiBpbnRlcnJ1cHQgZXhjZXB0aW9uIGJ5IHNldHRpbmcgSUVfU0lFIGluCj4gQ1NS X0lQIHRvIGFsbG93IGRlbGl2ZXJ5IG9mIHNpZ25hbHMgdG8gdXNlciB0YXNrLiBGb3IgaW5zdGFu Y2UgdGhpcyBjYW4KPiBoYXBwZW4gd2hlbiBhIFJBUyBldmVudCBoYXMgYmVlbiBnZW5lcmF0ZWQg YnkgYSB1c2VyIGFwcGxpY2F0aW9uIGFuZCBhCj4gU0lHQlVTIGhhcyBiZWVuIHNlbnQgdG8gYSB0 YXNrLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2zDqW1lbnQgTMOpZ2VyIDxjbGVnZXJAcml2b3NpbmMu Y29tPgo+IENvLWRldmVsb3BlZC1ieTogWmhhbnBlbmcgWmhhbmcgPHpoYW5nemhhbnBlbmcuamFz cGVyQGJ5dGVkYW5jZS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogWmhhbnBlbmcgWmhhbmcgPHpoYW5n emhhbnBlbmcuamFzcGVyQGJ5dGVkYW5jZS5jb20+Cj4gLS0tCj4gIGFyY2gvcmlzY3YvaW5jbHVk ZS9hc20vYXNtLmggICAgICAgICB8ICAxNCArLQo+ICBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Nj cy5oICAgICAgICAgfCAgIDcgKwo+ICBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3NzZS5oICAgICAg ICAgfCAgNDcgKysrKysrKwo+ICBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oICAg fCAgMTQgKysKPiAgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIHwgICAxICsK PiAgYXJjaC9yaXNjdi9rZXJuZWwvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKPiAgYXJjaC9y aXNjdi9rZXJuZWwvYXNtLW9mZnNldHMuYyAgICAgIHwgIDE0ICsrCj4gIGFyY2gvcmlzY3Yva2Vy bmVsL3NiaV9zc2UuYyAgICAgICAgICB8IDE2MiArKysrKysrKysrKysrKysrKysrKysrKwo+ICBh cmNoL3Jpc2N2L2tlcm5lbC9zYmlfc3NlX2VudHJ5LlMgICAgfCAxODcgKysrKysrKysrKysrKysr KysrKysrKysrKysrCj4gIDkgZmlsZXMgY2hhbmdlZCwgNDQ0IGluc2VydGlvbnMoKyksIDMgZGVs ZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Nz ZS5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jpc2N2L2tlcm5lbC9zYmlfc3NlLmMKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3Yva2VybmVsL3NiaV9zc2VfZW50cnkuUwo+Cj4g ZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLmggYi9hcmNoL3Jpc2N2L2lu Y2x1ZGUvYXNtL2FzbS5oCj4gaW5kZXggZTllOGJhODNlNjMyLi41MGJhY2UwMDA1M2MgMTAwNjQ0 Cj4gLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaAo+ICsrKyBiL2FyY2gvcmlzY3Yv aW5jbHVkZS9hc20vYXNtLmgKPiBAQCAtOTAsMTYgKzkwLDI0IEBACj4gIC5lbmRtCj4KPiAgI2lm ZGVmIENPTkZJR19TTVAKPiAtLm1hY3JvIGFzbV9wZXJfY3B1IGRzdCBzeW0gdG1wCj4gLSAgICAg ICBsdyAgICBcdG1wLCBUQVNLX1RJX0NQVV9OVU0odHApCj4gLSAgICAgICBzbGxpICBcdG1wLCBc dG1wLCBSSVNDVl9MR1BUUgo+ICsubWFjcm8gYXNtX3Blcl9jcHVfd2l0aF9jcHUgZHN0IHN5bSB0 bXAgY3B1Cj4gKyAgICAgICBzbGxpICBcdG1wLCBcY3B1LCBSSVNDVl9MR1BUUgo+ICAgICAgICAg bGEgICAgXGRzdCwgX19wZXJfY3B1X29mZnNldAo+ICAgICAgICAgYWRkICAgXGRzdCwgXGRzdCwg XHRtcAo+ICAgICAgICAgUkVHX0wgXHRtcCwgMChcZHN0KQo+ICAgICAgICAgbGEgICAgXGRzdCwg XHN5bQo+ICAgICAgICAgYWRkICAgXGRzdCwgXGRzdCwgXHRtcAo+ICAuZW5kbQo+ICsKPiArLm1h Y3JvIGFzbV9wZXJfY3B1IGRzdCBzeW0gdG1wCj4gKyAgICAgICBsdyBcdG1wLCBUQVNLX1RJX0NQ VV9OVU0odHApCj4gKyAgICAgICBhc21fcGVyX2NwdV93aXRoX2NwdSBcZHN0IFxzeW0gXHRtcCBc dG1wCj4gKy5lbmRtCj4gICNlbHNlIC8qIENPTkZJR19TTVAgKi8KPiArLm1hY3JvIGFzbV9wZXJf Y3B1X3dpdGhfY3B1IGRzdCBzeW0gdG1wIGNwdQo+ICsgICAgICAgbGEgICAgXGRzdCwgXHN5bQo+ ICsuZW5kbQo+ICsKPiAgLm1hY3JvIGFzbV9wZXJfY3B1IGRzdCBzeW0gdG1wCj4gICAgICAgICBs YSAgICBcZHN0LCBcc3ltCj4gIC5lbmRtCj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVk ZS9hc20vc2NzLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Njcy5oCj4gaW5kZXggMDIzYTQx MmZlMzhkLi4wZDcwYTM1YmMwMWEgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2Fz bS9zY3MuaAo+ICsrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc2NzLmgKPiBAQCAtMTcsNiAr MTcsMTEgQEAKPiAgICAgICAgIGxvYWRfcGVyX2NwdSBncCwgaXJxX3NoYWRvd19jYWxsX3N0YWNr X3B0ciwgXHRtcAo+ICAuZW5kbQo+Cj4gKy8qIExvYWQgdGhlIHBlci1DUFUgSVJRIHNoYWRvdyBj YWxsIHN0YWNrIHRvIGdwLiAqLwo+ICsubWFjcm8gc2NzX2xvYWRfc3NlX3N0YWNrIHJlZ19ldnQK PiArICAgICAgIFJFR19MIGdwLCBTU0VfUkVHX0VWVF9TSEFET1dfU1RBQ0soXHJlZ19ldnQpCj4g Ky5lbmRtCj4gKwo+ICAvKiBMb2FkIHRhc2tfc2NzX3NwKGN1cnJlbnQpIHRvIGdwLiAqLwo+ICAu bWFjcm8gc2NzX2xvYWRfY3VycmVudAo+ICAgICAgICAgUkVHX0wgICBncCwgVEFTS19USV9TQ1Nf U1AodHApCj4gQEAgLTQwLDYgKzQ1LDggQEAKPiAgLmVuZG0KPiAgLm1hY3JvIHNjc19sb2FkX2ly cV9zdGFjayB0bXAKPiAgLmVuZG0KPiArLm1hY3JvIHNjc19sb2FkX3NzZV9zdGFjayByZWdfZXZ0 Cj4gKy5lbmRtCj4gIC5tYWNybyBzY3NfbG9hZF9jdXJyZW50Cj4gIC5lbmRtCj4gIC5tYWNybyBz Y3NfbG9hZF9jdXJyZW50X2lmX3Rhc2tfY2hhbmdlZCBwcmV2Cj4gZGlmZiAtLWdpdCBhL2FyY2gv cmlzY3YvaW5jbHVkZS9hc20vc3NlLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3NzZS5oCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmQzY2U4YzJiNTIyMQo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3NzZS5oCj4gQEAg LTAsMCArMSw0NyBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5 ICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAyNCBSaXZvcyBJbmMuCj4gKyAqLwo+ICsj aWZuZGVmIF9fQVNNX1NTRV9ICj4gKyNkZWZpbmUgX19BU01fU1NFX0gKPiArCj4gKyNpbmNsdWRl IDxhc20vc2JpLmg+Cj4gKwo+ICsjaWZkZWYgQ09ORklHX1JJU0NWX1NCSV9TU0UKPiArCj4gK3N0 cnVjdCBzc2VfZXZlbnRfaW50ZXJydXB0ZWRfc3RhdGUgewo+ICsgICAgICAgdW5zaWduZWQgbG9u ZyBhNjsKPiArICAgICAgIHVuc2lnbmVkIGxvbmcgYTc7Cj4gK307Cj4gKwo+ICtzdHJ1Y3Qgc3Nl X2V2ZW50X2FyY2hfZGF0YSB7Cj4gKyAgICAgICB2b2lkICpzdGFjazsKPiArICAgICAgIHZvaWQg KnNoYWRvd19zdGFjazsKPiArICAgICAgIHVuc2lnbmVkIGxvbmcgdG1wOwo+ICsgICAgICAgc3Ry dWN0IHNzZV9ldmVudF9pbnRlcnJ1cHRlZF9zdGF0ZSBpbnRlcnJ1cHRlZDsKPiArICAgICAgIHVu c2lnbmVkIGxvbmcgaW50ZXJydXB0ZWRfcGh5czsKPiArICAgICAgIHUzMiBldnRfaWQ7Cj4gKyAg ICAgICB1bnNpZ25lZCBpbnQgaGFydF9pZDsKPiArICAgICAgIHVuc2lnbmVkIGludCBjcHVfaWQ7 Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgc3NlX2V2ZW50X2lzX2dsb2JhbCh1MzIg ZXZ0KQo+ICt7Cj4gKyAgICAgICByZXR1cm4gISEoZXZ0ICYgU0JJX1NTRV9FVkVOVF9HTE9CQUwp Owo+ICt9Cj4gKwo+ICt2b2lkIGFyY2hfc3NlX2V2ZW50X3VwZGF0ZV9jcHUoc3RydWN0IHNzZV9l dmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0LCBpbnQgY3B1KTsKPiAraW50IGFyY2hfc3NlX2luaXRf ZXZlbnQoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0LCB1MzIgZXZ0X2lkLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgIGludCBjcHUpOwo+ICt2b2lkIGFyY2hfc3NlX2ZyZWVf ZXZlbnQoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0KTsKPiAraW50IGFyY2hf c3NlX3JlZ2lzdGVyX2V2ZW50KHN0cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2dCk7 Cj4gKwo+ICt2b2lkIHNzZV9oYW5kbGVfZXZlbnQoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEg KmFyY2hfZXZ0LAo+ICsgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7 Cj4gK2FzbWxpbmthZ2Ugdm9pZCBoYW5kbGVfc3NlKHZvaWQpOwo+ICthc21saW5rYWdlIHZvaWQg ZG9fc3NlKHN0cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2dCwKPiArICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWcpOwo+ICsKPiArI2VuZGlmCj4gKwo+ICsj ZW5kaWYKPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaCBi L2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKPiBpbmRleCAwZTcxZWI4MmY5MjAu LmRlZDhkYzQ0MGIxMiAxMDA2NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRj aF90by5oCj4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaAo+IEBAIC04 OCw2ICs4OCwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19zd2l0Y2hfdG9fZW52Y2ZnKHN0cnVj dCB0YXNrX3N0cnVjdCAqbmV4dCkKPiAgICAgICAgICAgICAgICAgICAgICAgICA6OiAiciIgKG5l eHQtPnRocmVhZC5lbnZjZmcpIDogIm1lbW9yeSIpOwo+ICB9Cj4KPiArI2lmZGVmIENPTkZJR19S SVNDVl9TQklfU1NFCj4gK0RFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgX19z Ymlfc3NlX2VudHJ5X3Rhc2spOwo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIF9fc3dpdGNoX3Ni aV9zc2VfZW50cnlfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCj4gK3sKPiArICAgICAg IF9fdGhpc19jcHVfd3JpdGUoX19zYmlfc3NlX2VudHJ5X3Rhc2ssIG5leHQpOwo+ICt9Cj4gKyNl bHNlCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBfX3N3aXRjaF9zYmlfc3NlX2VudHJ5X3Rhc2soc3Ry dWN0IHRhc2tfc3RydWN0ICpuZXh0KQo+ICt7Cj4gK30KPiArI2VuZGlmCj4gKwo+ICBleHRlcm4g c3RydWN0IHRhc2tfc3RydWN0ICpfX3N3aXRjaF90byhzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3Qg Kik7Cj4KPiBAQCAtMTIyLDYgKzEzNSw3IEBAIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICAgIGlmIChzd2l0Y2hfdG9f c2hvdWxkX2ZsdXNoX2ljYWNoZShfX25leHQpKSAgICAgIFwKPiAgICAgICAgICAgICAgICAgbG9j YWxfZmx1c2hfaWNhY2hlX2FsbCgpOyAgICAgICAgICAgICAgIFwKPiAgICAgICAgIF9fc3dpdGNo X3RvX2VudmNmZyhfX25leHQpOyAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgIF9fc3dp dGNoX3NiaV9zc2VfZW50cnlfdGFzayhfX25leHQpOyAgICAgICAgICAgIFwKPiAgICAgICAgICgo bGFzdCkgPSBfX3N3aXRjaF90byhfX3ByZXYsIF9fbmV4dCkpOyAgICAgICAgIFwKPiAgfSB3aGls ZSAoMCkKPgo+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZv LmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKPiBpbmRleCA1NTAxOWZk ZmE5ZWMuLmQxNGI0NTYxMGM3MyAxMDA2NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNt L3RocmVhZF9pbmZvLmgKPiArKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZv LmgKPiBAQCAtMzYsNiArMzYsNyBAQAo+ICAjZGVmaW5lIE9WRVJGTE9XX1NUQUNLX1NJWkUgICAg IFNaXzRLCj4KPiAgI2RlZmluZSBJUlFfU1RBQ0tfU0laRSAgICAgICAgIFRIUkVBRF9TSVpFCj4g KyNkZWZpbmUgU1NFX1NUQUNLX1NJWkUgICAgICAgICBUSFJFQURfU0laRQo+Cj4gICNpZm5kZWYg X19BU1NFTUJMRVJfXwo+Cj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL01ha2VmaWxl IGIvYXJjaC9yaXNjdi9rZXJuZWwvTWFrZWZpbGUKPiBpbmRleCBjYWJiOTljYWRmYjYuLjhkNGFl ZDYzNjhhNiAxMDA2NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9NYWtlZmlsZQo+ICsrKyBi L2FyY2gvcmlzY3Yva2VybmVsL01ha2VmaWxlCj4gQEAgLTEwMSw2ICsxMDEsNyBAQCBvYmotJChD T05GSUdfRFlOQU1JQ19GVFJBQ0UpICAgICAgICArPSBtY291bnQtZHluLm8KPiAgb2JqLSQoQ09O RklHX1BFUkZfRVZFTlRTKSAgICAgICs9IHBlcmZfY2FsbGNoYWluLm8KPiAgb2JqLSQoQ09ORklH X0hBVkVfUEVSRl9SRUdTKSAgICs9IHBlcmZfcmVncy5vCj4gIG9iai0kKENPTkZJR19SSVNDVl9T QkkpICAgICAgICAgICAgICAgICs9IHNiaS5vIHNiaV9lY2FsbC5vCj4gK29iai0kKENPTkZJR19S SVNDVl9TQklfU1NFKSAgICArPSBzYmlfc3NlLm8gc2JpX3NzZV9lbnRyeS5vCj4gIGlmZXEgKCQo Q09ORklHX1JJU0NWX1NCSSksIHkpCj4gIG9iai0kKENPTkZJR19TTVApICAgICAgICAgICAgICAr PSBzYmktaXBpLm8KPiAgb2JqLSQoQ09ORklHX1NNUCkgKz0gY3B1X29wc19zYmkubwo+IGRpZmYg LS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jIGIvYXJjaC9yaXNjdi9rZXJu ZWwvYXNtLW9mZnNldHMuYwo+IGluZGV4IGFmODI3NDQ4YTYwOS4uN2NjMDNmNWEwNjczIDEwMDY0 NAo+IC0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmMKPiArKysgYi9hcmNoL3Jp c2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jCj4gQEAgLTE1LDYgKzE1LDggQEAKPiAgI2luY2x1ZGUg PGFzbS9wdHJhY2UuaD4KPiAgI2luY2x1ZGUgPGFzbS9jcHVfb3BzX3NiaS5oPgo+ICAjaW5jbHVk ZSA8YXNtL3N0YWNrdHJhY2UuaD4KPiArI2luY2x1ZGUgPGFzbS9zYmkuaD4KPiArI2luY2x1ZGUg PGFzbS9zc2UuaD4KPiAgI2luY2x1ZGUgPGFzbS9zdXNwZW5kLmg+Cj4KPiAgdm9pZCBhc21fb2Zm c2V0cyh2b2lkKTsKPiBAQCAtNTMzLDYgKzUzNSwxOCBAQCB2b2lkIGFzbV9vZmZzZXRzKHZvaWQp Cj4gICAgICAgICBERUZJTkUoRlJFR1NfQTYsICAgICAgICAgICAgb2Zmc2V0b2Yoc3RydWN0IF9f YXJjaF9mdHJhY2VfcmVncywgYTYpKTsKPiAgICAgICAgIERFRklORShGUkVHU19BNywgICAgICAg ICAgICBvZmZzZXRvZihzdHJ1Y3QgX19hcmNoX2Z0cmFjZV9yZWdzLCBhNykpOwo+ICAjZW5kaWYK PiArCj4gKyNpZmRlZiBDT05GSUdfUklTQ1ZfU0JJX1NTRQo+ICsgICAgICAgT0ZGU0VUKFNTRV9S RUdfRVZUX1NUQUNLLCBzc2VfZXZlbnRfYXJjaF9kYXRhLCBzdGFjayk7Cj4gKyAgICAgICBPRkZT RVQoU1NFX1JFR19FVlRfU0hBRE9XX1NUQUNLLCBzc2VfZXZlbnRfYXJjaF9kYXRhLCBzaGFkb3df c3RhY2spOwo+ICsgICAgICAgT0ZGU0VUKFNTRV9SRUdfRVZUX1RNUCwgc3NlX2V2ZW50X2FyY2hf ZGF0YSwgdG1wKTsKPiArICAgICAgIE9GRlNFVChTU0VfUkVHX0hBUlRfSUQsIHNzZV9ldmVudF9h cmNoX2RhdGEsIGhhcnRfaWQpOwo+ICsgICAgICAgT0ZGU0VUKFNTRV9SRUdfQ1BVX0lELCBzc2Vf ZXZlbnRfYXJjaF9kYXRhLCBjcHVfaWQpOwo+ICsKPiArICAgICAgIERFRklORShTQklfRVhUX1NT RSwgU0JJX0VYVF9TU0UpOwo+ICsgICAgICAgREVGSU5FKFNCSV9TU0VfRVZFTlRfQ09NUExFVEUs IFNCSV9TU0VfRVZFTlRfQ09NUExFVEUpOwo+ICsgICAgICAgREVGSU5FKEFTTV9OUl9DUFVTLCBD T05GSUdfTlJfQ1BVUyk7Cj4gKyNlbmRpZgo+ICAjaWZkZWYgQ09ORklHX1JJU0NWX1NCSQo+ICAg ICAgICAgREVGSU5FKFNCSV9FWFRfRldGVCwgU0JJX0VYVF9GV0ZUKTsKPiAgICAgICAgIERFRklO RShTQklfRVhUX0ZXRlRfU0VULCBTQklfRVhUX0ZXRlRfU0VUKTsKPiBkaWZmIC0tZ2l0IGEvYXJj aC9yaXNjdi9rZXJuZWwvc2JpX3NzZS5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvc2JpX3NzZS5jCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmYzMGFlOWZmNzdjOQo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zYmlfc3NlLmMKPiBAQCAt MCwwICsxLDE2MiBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1s YXRlcgo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjUgUml2b3MgSW5jLgo+ICsgKi8KPiAr I2luY2x1ZGUgPGxpbnV4L25taS5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2NzLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9iaXRmaWVsZC5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGVyY3B1LWRlZnMuaD4K PiArCj4gKyNpbmNsdWRlIDxhc20vYXNtLXByb3RvdHlwZXMuaD4KPiArI2luY2x1ZGUgPGFzbS9z d2l0Y2hfdG8uaD4KPiArI2luY2x1ZGUgPGFzbS9pcnFfc3RhY2suaD4KPiArI2luY2x1ZGUgPGFz bS9zYmkuaD4KPiArI2luY2x1ZGUgPGFzbS9zc2UuaD4KPiArCj4gK0RFRklORV9QRVJfQ1BVKHN0 cnVjdCB0YXNrX3N0cnVjdCAqLCBfX3NiaV9zc2VfZW50cnlfdGFzayk7Cj4gKwo+ICt2b2lkIF9f d2VhayBzc2VfaGFuZGxlX2V2ZW50KHN0cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2 dCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCj4gK3sKPiArfQo+ICsKPiArdm9pZCBkb19zc2Uoc3Ry dWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0LCBzdHJ1Y3QgcHRfcmVncyAqcmVncykK PiArewo+ICsgICAgICAgbm1pX2VudGVyKCk7Cj4gKwo+ICsgICAgICAgLyogUmV0cmlldmUgbWlz c2luZyBHUFJzIGZyb20gU0JJICovCj4gKyAgICAgICBzYmlfZWNhbGwoU0JJX0VYVF9TU0UsIFNC SV9TU0VfRVZFTlRfQVRUUl9SRUFELCBhcmNoX2V2dC0+ZXZ0X2lkLAo+ICsgICAgICAgICAgICAg ICAgIFNCSV9TU0VfQVRUUl9JTlRFUlJVUFRFRF9BNiwKPiArICAgICAgICAgICAgICAgICAoU0JJ X1NTRV9BVFRSX0lOVEVSUlVQVEVEX0E3IC0gU0JJX1NTRV9BVFRSX0lOVEVSUlVQVEVEX0E2KSAr IDEsCj4gKyAgICAgICAgICAgICAgICAgYXJjaF9ldnQtPmludGVycnVwdGVkX3BoeXMsIDAsIDAp Owo+ICsKPiArICAgICAgIG1lbWNweSgmcmVncy0+YTYsICZhcmNoX2V2dC0+aW50ZXJydXB0ZWQs IHNpemVvZihhcmNoX2V2dC0+aW50ZXJydXB0ZWQpKTsKPiArCj4gKyAgICAgICBzc2VfaGFuZGxl X2V2ZW50KGFyY2hfZXZ0LCByZWdzKTsKPiArCj4gKyAgICAgICBubWlfZXhpdCgpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCAqYWxsb2NfdG9fc3RhY2tfcG9pbnRlcih2b2lkICphbGxvYykKPiAr ewo+ICsgICAgICAgcmV0dXJuIGFsbG9jID8gYWxsb2MgKyBTU0VfU1RBQ0tfU0laRSA6IE5VTEw7 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkICpzdGFja19wb2ludGVyX3RvX2FsbG9jKHZvaWQgKnN0 YWNrKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gc3RhY2sgLSBTU0VfU1RBQ0tfU0laRTsKPiArfQo+ ICsKPiArI2lmZGVmIENPTkZJR19WTUFQX1NUQUNLCj4gK3N0YXRpYyB2b2lkICpzc2Vfc3RhY2tf YWxsb2ModW5zaWduZWQgaW50IGNwdSkKPiArewo+ICsgICAgICAgdm9pZCAqc3RhY2sgPSBhcmNo X2FsbG9jX3ZtYXBfc3RhY2soU1NFX1NUQUNLX1NJWkUsIGNwdV90b19ub2RlKGNwdSkpOwo+ICsK PiArICAgICAgIHJldHVybiBhbGxvY190b19zdGFja19wb2ludGVyKHN0YWNrKTsKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgc3NlX3N0YWNrX2ZyZWUodm9pZCAqc3RhY2spCj4gK3sKPiArICAgICAg IHZmcmVlKHN0YWNrX3BvaW50ZXJfdG9fYWxsb2Moc3RhY2spKTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgYXJjaF9zc2Vfc3RhY2tfY3B1X3N5bmMoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEg KmFyY2hfZXZ0KQo+ICt7Cj4gKyAgICAgICB2b2lkICpwX3N0YWNrID0gYXJjaF9ldnQtPnN0YWNr Owo+ICsgICAgICAgdW5zaWduZWQgbG9uZyBzdGFjayA9ICh1bnNpZ25lZCBsb25nKXN0YWNrX3Bv aW50ZXJfdG9fYWxsb2MocF9zdGFjayk7Cj4gKyAgICAgICB1bnNpZ25lZCBsb25nIHN0YWNrX2Vu ZCA9IHN0YWNrICsgU1NFX1NUQUNLX1NJWkU7Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAq IEZsdXNoIHRoZSB0bGIgdG8gYXZvaWQgdGFraW5nIGFueSBleGNlcHRpb24gd2hlbiBhY2Nlc3Np bmcgdGhlCj4gKyAgICAgICAgKiB2bWFwcGVkIHN0YWNrIGluc2lkZSB0aGUgU1NFIGhhbmRsZXIK PiArICAgICAgICAqLwo+ICsgICAgICAgaWYgKHNzZV9ldmVudF9pc19nbG9iYWwoYXJjaF9ldnQt PmV2dF9pZCkpCj4gKyAgICAgICAgICAgICAgIGZsdXNoX3RsYl9rZXJuZWxfcmFuZ2Uoc3RhY2ss IHN0YWNrX2VuZCk7Cj4gKyAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgIGxvY2FsX2ZsdXNo X3RsYl9rZXJuZWxfcmFuZ2Uoc3RhY2ssIHN0YWNrX2VuZCk7Cj4gK30KPiArI2Vsc2UgLyogQ09O RklHX1ZNQVBfU1RBQ0sgKi8KPiArc3RhdGljIHZvaWQgKnNzZV9zdGFja19hbGxvYyh1bnNpZ25l ZCBpbnQgY3B1KQo+ICt7Cj4gKyAgICAgICB2b2lkICpzdGFjayA9IGttYWxsb2MoU1NFX1NUQUNL X1NJWkUsIEdGUF9LRVJORUwpOwo+ICsKPiArICAgICAgIHJldHVybiBhbGxvY190b19zdGFja19w b2ludGVyKHN0YWNrKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc3NlX3N0YWNrX2ZyZWUodm9p ZCAqc3RhY2spCj4gK3sKPiArICAgICAgIGtmcmVlKHN0YWNrX3BvaW50ZXJfdG9fYWxsb2Moc3Rh Y2spKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgYXJjaF9zc2Vfc3RhY2tfY3B1X3N5bmMoc3Ry dWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0KSB7fQo+ICsjZW5kaWYgLyogQ09ORklH X1ZNQVBfU1RBQ0sgKi8KPiArCj4gK3N0YXRpYyBpbnQgc3NlX2luaXRfc2NzKGludCBjcHUsIHN0 cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2dCkKPiArewo+ICsgICAgICAgdm9pZCAq c3RhY2s7Cj4gKwo+ICsgICAgICAgaWYgKCFzY3NfaXNfZW5hYmxlZCgpKQo+ICsgICAgICAgICAg ICAgICByZXR1cm4gMDsKPiArCj4gKyAgICAgICBzdGFjayA9IHNjc19hbGxvYyhjcHVfdG9fbm9k ZShjcHUpKTsKPiArICAgICAgIGlmICghc3RhY2spCj4gKyAgICAgICAgICAgICAgIHJldHVybiAt RU5PTUVNOwo+ICsKPiArICAgICAgIGFyY2hfZXZ0LT5zaGFkb3dfc3RhY2sgPSBzdGFjazsKPiAr Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArdm9pZCBhcmNoX3NzZV9ldmVudF91cGRh dGVfY3B1KHN0cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2dCwgaW50IGNwdSkKPiAr ewo+ICsgICAgICAgYXJjaF9ldnQtPmNwdV9pZCA9IGNwdTsKPiArICAgICAgIGFyY2hfZXZ0LT5o YXJ0X2lkID0gY3B1aWRfdG9faGFydGlkX21hcChjcHUpOwo+ICt9Cj4gKwo+ICtpbnQgYXJjaF9z c2VfaW5pdF9ldmVudChzdHJ1Y3Qgc3NlX2V2ZW50X2FyY2hfZGF0YSAqYXJjaF9ldnQsIHUzMiBl dnRfaWQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGNwdSkKPiArewo+ICsgICAgICAg dm9pZCAqc3RhY2s7Cj4gKwo+ICsgICAgICAgYXJjaF9ldnQtPmV2dF9pZCA9IGV2dF9pZDsKPiAr ICAgICAgIHN0YWNrID0gc3NlX3N0YWNrX2FsbG9jKGNwdSk7Cj4gKyAgICAgICBpZiAoIXN0YWNr KQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArCj4gKyAgICAgICBhcmNoX2V2 dC0+c3RhY2sgPSBzdGFjazsKPiArCj4gKyAgICAgICBpZiAoc3NlX2luaXRfc2NzKGNwdSwgYXJj aF9ldnQpKSB7Cj4gKyAgICAgICAgICAgICAgIHNzZV9zdGFja19mcmVlKGFyY2hfZXZ0LT5zdGFj ayk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsgICAgICAgfQo+ICsKPiAr ICAgICAgIGlmIChzc2VfZXZlbnRfaXNfZ2xvYmFsKGV2dF9pZCkpIHsKPiArICAgICAgICAgICAg ICAgYXJjaF9ldnQtPmludGVycnVwdGVkX3BoeXMgPQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2aXJ0X3RvX3BoeXMoJmFyY2hfZXZ0LT5pbnRlcnJ1cHRlZCk7Cj4g KyAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICBhcmNoX2V2dC0+aW50ZXJydXB0ZWRf cGh5cyA9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJfY3B1X3B0cl90b19w aHlzKCZhcmNoX2V2dC0+aW50ZXJydXB0ZWQpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGFy Y2hfc3NlX2V2ZW50X3VwZGF0ZV9jcHUoYXJjaF9ldnQsIGNwdSk7Cj4gKwo+ICsgICAgICAgcmV0 dXJuIDA7Cj4gK30KPiArCj4gK3ZvaWQgYXJjaF9zc2VfZnJlZV9ldmVudChzdHJ1Y3Qgc3NlX2V2 ZW50X2FyY2hfZGF0YSAqYXJjaF9ldnQpCj4gK3sKPiArICAgICAgIHNjc19mcmVlKGFyY2hfZXZ0 LT5zaGFkb3dfc3RhY2spOwo+ICsgICAgICAgc3NlX3N0YWNrX2ZyZWUoYXJjaF9ldnQtPnN0YWNr KTsKPiArfQo+ICsKPiAraW50IGFyY2hfc3NlX3JlZ2lzdGVyX2V2ZW50KHN0cnVjdCBzc2VfZXZl bnRfYXJjaF9kYXRhICphcmNoX2V2dCkKPiArewo+ICsgICAgICAgc3RydWN0IHNiaXJldCBzcmV0 Owo+ICsKPiArICAgICAgIGFyY2hfc3NlX3N0YWNrX2NwdV9zeW5jKGFyY2hfZXZ0KTsKPiArCj4g KyAgICAgICBzcmV0ID0gc2JpX2VjYWxsKFNCSV9FWFRfU1NFLCBTQklfU1NFX0VWRU5UX1JFR0lT VEVSLCBhcmNoX2V2dC0+ZXZ0X2lkLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWdu ZWQgbG9uZyloYW5kbGVfc3NlLCAodW5zaWduZWQgbG9uZylhcmNoX2V2dCwgMCwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgMCwgMCk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIHNiaV9lcnJfbWFw X2xpbnV4X2Vycm5vKHNyZXQuZXJyb3IpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yv a2VybmVsL3NiaV9zc2VfZW50cnkuUyBiL2FyY2gvcmlzY3Yva2VybmVsL3NiaV9zc2VfZW50cnku Uwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi42MDg2NzUxZTY2 NDQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvc2JpX3NzZV9lbnRy eS5TCj4gQEAgLTAsMCArMSwxODcgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAtb3ItbGF0ZXIgKi8KPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDI1IFJpdm9zIElu Yy4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvaW5pdC5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvbGlua2FnZS5oPgo+ICsKPiArI2luY2x1ZGUgPGFzbS9hbHRlcm5hdGl2ZS1tYWNyb3MuaD4K PiArI2luY2x1ZGUgPGFzbS9hc20uaD4KPiArI2luY2x1ZGUgPGFzbS9jc3IuaD4KPiArI2luY2x1 ZGUgPGFzbS9od2NhcC5oPgo+ICsjaW5jbHVkZSA8YXNtL3Njcy5oPgo+ICsKPiArLyogV2hlbiBl bnRlcmluZyBoYW5kbGVfc3NlLCB0aGUgZm9sbG93aW5nIHJlZ2lzdGVycyBhcmUgc2V0Ogo+ICsg KiBhNjogY29udGFpbnMgdGhlIGhhcnRpZAo+ICsgKiBhNzogY29udGFpbnMgYSBzc2VfZXZlbnRf YXJjaF9kYXRhIHN0cnVjdCBwb2ludGVyCj4gKyAqLwo+ICtTWU1fQ09ERV9TVEFSVChoYW5kbGVf c3NlKQo+ICsgICAgICAgLyogU2F2ZSBzdGFjayB0ZW1wb3JhcmlseSAqLwo+ICsgICAgICAgUkVH X1Mgc3AsIFNTRV9SRUdfRVZUX1RNUChhNykKPiArICAgICAgIC8qIFNldCBlbnRyeSBzdGFjayAq Lwo+ICsgICAgICAgUkVHX0wgc3AsIFNTRV9SRUdfRVZUX1NUQUNLKGE3KQo+ICsKPiArICAgICAg IGFkZGkgc3AsIHNwLCAtKFBUX1NJWkVfT05fU1RBQ0spCj4gKyAgICAgICBSRUdfUyByYSwgUFRf UkEoc3ApCj4gKyAgICAgICBSRUdfUyBzMCwgUFRfUzAoc3ApCj4gKyAgICAgICBSRUdfUyBzMSwg UFRfUzEoc3ApCj4gKyAgICAgICBSRUdfUyBzMiwgUFRfUzIoc3ApCj4gKyAgICAgICBSRUdfUyBz MywgUFRfUzMoc3ApCj4gKyAgICAgICBSRUdfUyBzNCwgUFRfUzQoc3ApCj4gKyAgICAgICBSRUdf UyBzNSwgUFRfUzUoc3ApCj4gKyAgICAgICBSRUdfUyBzNiwgUFRfUzYoc3ApCj4gKyAgICAgICBS RUdfUyBzNywgUFRfUzcoc3ApCj4gKyAgICAgICBSRUdfUyBzOCwgUFRfUzgoc3ApCj4gKyAgICAg ICBSRUdfUyBzOSwgUFRfUzkoc3ApCj4gKyAgICAgICBSRUdfUyBzMTAsIFBUX1MxMChzcCkKPiAr ICAgICAgIFJFR19TIHMxMSwgUFRfUzExKHNwKQo+ICsgICAgICAgUkVHX1MgdHAsIFBUX1RQKHNw KQo+ICsgICAgICAgUkVHX1MgdDAsIFBUX1QwKHNwKQo+ICsgICAgICAgUkVHX1MgdDEsIFBUX1Qx KHNwKQo+ICsgICAgICAgUkVHX1MgdDIsIFBUX1QyKHNwKQo+ICsgICAgICAgUkVHX1MgdDMsIFBU X1QzKHNwKQo+ICsgICAgICAgUkVHX1MgdDQsIFBUX1Q0KHNwKQo+ICsgICAgICAgUkVHX1MgdDUs IFBUX1Q1KHNwKQo+ICsgICAgICAgUkVHX1MgdDYsIFBUX1Q2KHNwKQo+ICsgICAgICAgUkVHX1Mg Z3AsIFBUX0dQKHNwKQo+ICsgICAgICAgUkVHX1MgYTAsIFBUX0EwKHNwKQo+ICsgICAgICAgUkVH X1MgYTEsIFBUX0ExKHNwKQo+ICsgICAgICAgUkVHX1MgYTIsIFBUX0EyKHNwKQo+ICsgICAgICAg UkVHX1MgYTMsIFBUX0EzKHNwKQo+ICsgICAgICAgUkVHX1MgYTQsIFBUX0E0KHNwKQo+ICsgICAg ICAgUkVHX1MgYTUsIFBUX0E1KHNwKQo+ICsKPiArICAgICAgIC8qIFJldHJpZXZlIGVudHJ5IHNw ICovCj4gKyAgICAgICBSRUdfTCBhNCwgU1NFX1JFR19FVlRfVE1QKGE3KQo+ICsgICAgICAgLyog U2F2ZSBDU1JzICovCj4gKyAgICAgICBjc3JyIGEwLCBDU1JfRVBDCj4gKyAgICAgICBjc3JyIGEx LCBDU1JfU1NUQVRVUwo+ICsgICAgICAgY3NyciBhMiwgQ1NSX1NUVkFMCj4gKyAgICAgICBjc3Jy IGEzLCBDU1JfU0NBVVNFCj4gKwo+ICsgICAgICAgUkVHX1MgYTAsIFBUX0VQQyhzcCkKPiArICAg ICAgIFJFR19TIGExLCBQVF9TVEFUVVMoc3ApCj4gKyAgICAgICBSRUdfUyBhMiwgUFRfQkFEQURE UihzcCkKPiArICAgICAgIFJFR19TIGEzLCBQVF9DQVVTRShzcCkKPiArICAgICAgIFJFR19TIGE0 LCBQVF9TUChzcCkKPiArCj4gKyAgICAgICAvKiBEaXNhYmxlIHVzZXIgbWVtb3J5IGFjY2VzcyBh bmQgZmxvYXRpbmcvdmVjdG9yIGNvbXB1dGluZyAqLwo+ICsgICAgICAgbGkgdDAsIFNSX1NVTSB8 IFNSX0ZTX1ZTCj4gKyAgICAgICBjc3JjIENTUl9TVEFUVVMsIHQwCj4gKwo+ICsgICAgICAgbG9h ZF9nbG9iYWxfcG9pbnRlcgo+ICsgICAgICAgc2NzX2xvYWRfc3NlX3N0YWNrIGE3Cj4gKwo+ICsj aWZkZWYgQ09ORklHX1NNUAo+ICsgICAgICAgbHcgdDQsIFNTRV9SRUdfSEFSVF9JRChhNykKPiAr ICAgICAgIGx3IHQzLCBTU0VfUkVHX0NQVV9JRChhNykKPiArCj4gKyAgICAgICBibmUgdDQsIGE2 LCAuTGZpbmRfaGFydF9pZF9zbG93cGF0aAo+ICsKPiArLkxjcHVfaWRfZm91bmQ6Cj4gKyNlbHNl Cj4gKyAgICAgICBtdiB0MywgemVybwo+ICsjZW5kaWYKPiArCj4gKyAgICAgICBhc21fcGVyX2Nw dV93aXRoX2NwdSB0MiBfX3NiaV9zc2VfZW50cnlfdGFzayB0MSB0Mwo+ICsgICAgICAgUkVHX0wg dHAsIDAodDIpCj4gKwo+ICsgICAgICAgbXYgYTEsIHNwIC8qIHB0X3JlZ3Mgb24gc3RhY2sgKi8K PiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICogUnVuIHRoZSBTU0UgaGFuZGxlciB3aXRoIHRo ZSBub3JtYWwgZXhjZXB0aW9uIHZlY3RvciwgYnV0IHJlc3RvcmUgdGhlCj4gKyAgICAgICAgKiBp bnRlcnJ1cHRlZCBzdHZlYyBiZWZvcmUgY29tcGxldGluZyB0aGUgZXZlbnQuIFNTRSBjYW4gYXJy aXZlIHdoaWxlCj4gKyAgICAgICAgKiB0aGUga2VybmVsIGlzIHVzaW5nIGEgdGVtcG9yYXJ5IHRy YXAgdmVjdG9yIGluIGEgc2Vuc2l0aXZlIGVudHJ5IHBhdGguCj4gKyAgICAgICAgKi8KPiArICAg ICAgIGNzcnIgczMsIENTUl9TVFZFQwo+ICsgICAgICAgbGEgdDAsIGhhbmRsZV9leGNlcHRpb24K PiArICAgICAgIGNzcncgQ1NSX1NUVkVDLCB0MAo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAg KiBQcmVzZXJ2ZSB0aGUgZnVsbCBIUy1tb2RlIHZpcnR1YWxpemF0aW9uIHN0YXRlIGFjcm9zcyB0 aGUgaGFuZGxlci4KPiArICAgICAgICAqIGhzdGF0dXMgaXMgbGl2ZSBzdXBlcnZpc29yIHN0YXRl IHJhdGhlciB0aGFuIGFuIFNTRSBpbnRlcnJ1cHRlZAo+ICsgICAgICAgICogYXR0cmlidXRlLCBh bmQgT3BlblNCSSBjb25zdW1lcyBoc3RhdHVzLlNQViBkdXJpbmcgZXZlbnQgY29tcGxldGlvbi4K PiArICAgICAgICAqIFNhdmluZyB0aGUgd2hvbGUgQ1NSIGtlZXBzIHRoZSBoYW5kbGVyIGVwaXNv ZGUgdHJhbnNwYXJlbnQgdG8gS1ZNIGFuZAo+ICsgICAgICAgICogYXZvaWRzIGhhdmluZyB0byBp bmZlciB3aGljaCBoc3RhdHVzIGJpdHMgbWF5IG1hdHRlciB0byBhIGd1ZXN0IHJlc3VtZS4KPiAr ICAgICAgICAqLwo+ICsgICAgICAgQUxURVJOQVRJVkUoIm5vcCIsICJjc3JyIHM1LCBoc3RhdHVz IiwgMCwgUklTQ1ZfSVNBX0VYVF9oLCAxKQo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBT YXZlIHNzY3JhdGNoIGZvciByZXN0b3JhdGlvbiBzaW5jZSB3ZSBtaWdodCBoYXZlIGludGVycnVw dGVkIHRoZQo+ICsgICAgICAgICoga2VybmVsIGluIGVhcmx5IGV4Y2VwdGlvbiBwYXRoIGFuZCB0 aHVzLCB3ZSBkb24ndCBrbm93IHRoZSBjb250ZW50IG9mCj4gKyAgICAgICAgKiBzc2NyYXRjaC4K PiArICAgICAgICAqLwo+ICsgICAgICAgY3NycncgczQsIENTUl9TU0NSQVRDSCwgeDAKPiArCj4g KyAgICAgICBtdiBhMCwgYTcKPiArCj4gKyAgICAgICBjYWxsIGRvX3NzZQo+ICsKPiArICAgICAg IGNzcncgQ1NSX1NTQ1JBVENILCBzNAo+ICsgICAgICAgQUxURVJOQVRJVkUoIm5vcCIsICJjc3J3 IGhzdGF0dXMsIHM1IiwgMCwgUklTQ1ZfSVNBX0VYVF9oLCAxKQo+ICsgICAgICAgY3NydyBDU1Jf U1RWRUMsIHMzCj4gKwo+ICsgICAgICAgUkVHX0wgYTAsIFBUX1NUQVRVUyhzcCkKPiArICAgICAg IFJFR19MIGExLCBQVF9FUEMoc3ApCj4gKyAgICAgICBSRUdfTCBhMiwgUFRfQkFEQUREUihzcCkK PiArICAgICAgIFJFR19MIGEzLCBQVF9DQVVTRShzcCkKPiArICAgICAgIGNzcncgQ1NSX1NTVEFU VVMsIGEwCj4gKyAgICAgICBjc3J3IENTUl9FUEMsIGExCj4gKyAgICAgICBjc3J3IENTUl9TVFZB TCwgYTIKPiArICAgICAgIGNzcncgQ1NSX1NDQVVTRSwgYTMKPiArCj4gKyAgICAgICBSRUdfTCBy YSwgUFRfUkEoc3ApCj4gKyAgICAgICBSRUdfTCBzMCwgUFRfUzAoc3ApCj4gKyAgICAgICBSRUdf TCBzMSwgUFRfUzEoc3ApCj4gKyAgICAgICBSRUdfTCBzMiwgUFRfUzIoc3ApCj4gKyAgICAgICBS RUdfTCBzMywgUFRfUzMoc3ApCj4gKyAgICAgICBSRUdfTCBzNCwgUFRfUzQoc3ApCj4gKyAgICAg ICBSRUdfTCBzNSwgUFRfUzUoc3ApCj4gKyAgICAgICBSRUdfTCBzNiwgUFRfUzYoc3ApCj4gKyAg ICAgICBSRUdfTCBzNywgUFRfUzcoc3ApCj4gKyAgICAgICBSRUdfTCBzOCwgUFRfUzgoc3ApCj4g KyAgICAgICBSRUdfTCBzOSwgUFRfUzkoc3ApCj4gKyAgICAgICBSRUdfTCBzMTAsIFBUX1MxMChz cCkKPiArICAgICAgIFJFR19MIHMxMSwgUFRfUzExKHNwKQo+ICsgICAgICAgUkVHX0wgdHAsIFBU X1RQKHNwKQo+ICsgICAgICAgUkVHX0wgdDAsIFBUX1QwKHNwKQo+ICsgICAgICAgUkVHX0wgdDEs IFBUX1QxKHNwKQo+ICsgICAgICAgUkVHX0wgdDIsIFBUX1QyKHNwKQo+ICsgICAgICAgUkVHX0wg dDMsIFBUX1QzKHNwKQo+ICsgICAgICAgUkVHX0wgdDQsIFBUX1Q0KHNwKQo+ICsgICAgICAgUkVH X0wgdDUsIFBUX1Q1KHNwKQo+ICsgICAgICAgUkVHX0wgdDYsIFBUX1Q2KHNwKQo+ICsgICAgICAg UkVHX0wgZ3AsIFBUX0dQKHNwKQo+ICsgICAgICAgUkVHX0wgYTAsIFBUX0EwKHNwKQo+ICsgICAg ICAgUkVHX0wgYTEsIFBUX0ExKHNwKQo+ICsgICAgICAgUkVHX0wgYTIsIFBUX0EyKHNwKQo+ICsg ICAgICAgUkVHX0wgYTMsIFBUX0EzKHNwKQo+ICsgICAgICAgUkVHX0wgYTQsIFBUX0E0KHNwKQo+ ICsgICAgICAgUkVHX0wgYTUsIFBUX0E1KHNwKQo+ICsKPiArICAgICAgIFJFR19MIHNwLCBQVF9T UChzcCkKPiArCj4gKyAgICAgICBsaSBhNywgU0JJX0VYVF9TU0UKPiArICAgICAgIGxpIGE2LCBT QklfU1NFX0VWRU5UX0NPTVBMRVRFCj4gKyAgICAgICBlY2FsbAo+ICsKPiArI2lmZGVmIENPTkZJ R19TTVAKPiArLkxmaW5kX2hhcnRfaWRfc2xvd3BhdGg6Cj4gKwo+ICsgICAgICAgLyogUmVzdG9y ZSBjdXJyZW50IHRhc2sgc3RydWN0IGZyb20gX19zYmlfc3NlX2VudHJ5X3Rhc2sgKi8KPiArICAg ICAgIGxpIHQxLCBBU01fTlJfQ1BVUwo+ICsgICAgICAgLyogU2xvd3BhdGggdG8gZmluZCB0aGUg Q1BVIGlkIGFzc29jaWF0ZWQgdG8gdGhlIGhhcnQgaWQgKi8KPiArICAgICAgIGxhIHQwLCBfX2Nw dWlkX3RvX2hhcnRpZF9tYXAKPiArCj4gKy5MaGFydF9pZF9sb29wOgo+ICsgICAgICAgUkVHX0wg dDIsIDAodDApCj4gKyAgICAgICBiZXEgdDIsIGE2LCAuTGNwdV9pZF9mb3VuZAo+ICsKPiArICAg ICAgIC8qIEluY3JlbWVudCBwb2ludGVyIGFuZCBDUFUgbnVtYmVyICovCj4gKyAgICAgICBhZGRp IHQzLCB0MywgMQo+ICsgICAgICAgYWRkaSB0MCwgdDAsIFJJU0NWX1NaUFRSCj4gKyAgICAgICBi bHR1IHQzLCB0MSwgLkxoYXJ0X2lkX2xvb3AKPiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICog VGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIHNpbmNlIHdlIGV4cGVjdCB0aGUgaGFydF9pZCB0byBt YXRjaCBvbmUKVGhlIGNvZGUgZm9sbG93aW5nIGdvZXMgbWlzc2luZyBpbiB0aGlzIGZpbGUuCgo+ ICsgICAgICAgICogb2Ygb3VyIENQVSwgYnV0IGJldHRlciBiZSBzYWZlIHRoYW4gc29ycnkKPiAr ICAgICAgICAqLwo+ICsgICAgICAgbGEgdHAsIGluaXRfdGFzawo+ICsgICAgICAgbGEgYTAsIHNz ZV9oYXJ0X2lkX3BhbmljX3N0cmluZwo+ICsgICAgICAgbGEgdDAsIHBhbmljCj4gKyAgICAgICBq YWxyIHQwCj4gKyNlbmRpZgo+ICsKPiArU1lNX0NPREVfRU5EKGhhbmRsZV9zc2UpCj4gKwo+ICtT WU1fREFUQV9TVEFSVF9MT0NBTChzc2VfaGFydF9pZF9wYW5pY19zdHJpbmcpCj4gKyAgICAuYXNj aWkgIlVuYWJsZSB0byBtYXRjaCBoYXJ0X2lkIHdpdGggY3B1XDAiCj4gK1NZTV9EQVRBX0VORChz c2VfaGFydF9pZF9wYW5pY19zdHJpbmcpCgpSZWdhcmRzCkhpbWFuc2h1Cj4gLS0KPiAyLjUwLjEg KEFwcGxlIEdpdC0xNTUpCj4KCi0tIAprdm0tcmlzY3YgbWFpbGluZyBsaXN0Cmt2bS1yaXNjdkBs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8va3ZtLXJpc2N2Cg==