Re: [f2fs-dev] [PATCH v6] f2fs: support dynamic reserve/release for device aliasing
Chao Yu via Linux-f2fs-devel <[email protected]> Tue, 4 Aug 2026 08:42:06 +0800
| Newsgroups | net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
T24gOC80LzI2IDAwOjE4LCBEYWVobyBKZW9uZyB3cm90ZToKPiBPbiBTdW4sIEF1ZyAyLCAyMDI2 IGF0IDc6MDDigK9QTSBDaGFvIFl1IDxjaGFvQGtlcm5lbC5vcmc+IHdyb3RlOgo+Pgo+PiBPbiA3 LzMwLzI2IDIzOjQ2LCBEYWVobyBKZW9uZyB3cm90ZToKPj4+IEZyb206IERhZWhvIEplb25nIDxk YWVob2plb25nQGdvb2dsZS5jb20+Cj4+Pgo+Pj4gVGhpcyBwYXRjaCBhZGRzIGEgZHluYW1pYyBt YW5hZ2VtZW50IGZlYXR1cmUgdG8gdGhlIGV4aXN0aW5nIGRldmljZQo+Pj4gYWxpYXNpbmcgZnVu Y3Rpb25hbGl0eS4gSXQgYWxsb3dzIHVzZXJzIHRvIGR5bmFtaWNhbGx5IHJlc2VydmUgb3IKPj4+ IHJlbGVhc2Ugc3BlY2lmaWMgZGV2aWNlcyBmcm9tIHRoZSBmaWxlc3lzdGVtJ3MgZnJlZSBwb29s IGF0IHJ1bnRpbWUKPj4+IHRocm91Z2ggbmV3IGlvY3Rscy4KPj4+Cj4+PiBUbyBzdXBwb3J0IHRo aXMsIHRocmVlIG5ldyBpb2N0bHMgYXJlIGludHJvZHVjZWQ6Cj4+PiAtIEYyRlNfSU9DX1JFU0VS VkVfREVWX0FMSUFTOiBUaGlzIHJlY2xhaW1zIHRoZSBzcGFjZSBvY2N1cGllZCBieSBhCj4+PiAg ICAgZGV2aWNlIGFsaWFzaW5nIGZpbGUuIEl0IGZpcnN0IHBlcmZvcm1zIGEgY2FwYWNpdHkgY2hl Y2ssIHJlc2V0cyBHQwo+Pj4gICAgIHZpY3RpbSBpbmZvcm1hdGlvbiBmb3IgdGhlIHRhcmdldCBy YW5nZSwgbWFya3MgdGhlIHNlZ21lbnRzIGFzIGluLXVzZQo+Pj4gICAgIHRvIHByZXZlbnQgbmV3 IGFsbG9jYXRpb25zLCBhbmQgdGhlbiB0cmlnZ2VycyBHQyB0byBtaWdyYXRlIGV4aXN0aW5nCj4+ PiAgICAgdmFsaWQgZGF0YSBvdXQgb2YgdGhlIHJhbmdlLiBGaW5hbGx5LCBpdCByZXNlcnZlcyB0 aGVzZSBibG9ja3MgaW4gdGhlCj4+PiAgICAgU0lUIHRvIGVmZmVjdGl2ZWx5IGV4Y2x1ZGUgdGhl IGRldmljZSBmcm9tIHRoZSB1c2FibGUgY2FwYWNpdHkuCj4+Pgo+Pj4gLSBGMkZTX0lPQ19SRUxF QVNFX0RFVl9BTElBUzogVGhpcyByZWxlYXNlcyB0aGUgcmVzZXJ2ZWQgc3BhY2Ugb2YgYQo+Pj4g ICAgIHByZXZpb3VzbHkgcmVzZXJ2ZWQgZGV2aWNlIGFsaWFzaW5nIGZpbGUuIEl0IHRydW5jYXRl cyB0aGUgYmxvY2tzCj4+PiAgICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxlLCB3aGljaCBtYWtl cyB0aGVtIGF2YWlsYWJsZSBmb3IgZ2VuZXJhbAo+Pj4gICAgIGZpbGVzeXN0ZW0gYWxsb2NhdGlv biBhZ2Fpbi4KPj4+Cj4+PiAtIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVTOiBUaGlzIHJl dHJpZXZlcyB0aGUgY3VycmVudCBhbGlhc2luZwo+Pj4gICAgIHN0YXR1cyBvZiBhIGRldmljZSBh bGlhc2luZyBmaWxlLCByZXR1cm5pbmcgd2hldGhlciB0aGUgZmlsZSBpcwo+Pj4gICAgIHJlbGVh c2VkIChpbmFjdGl2ZSBhbGlhcykgb3IgcmVzZXJ2ZWQgKGFjdGl2ZSBhbGlhcywgd2l0aCBibG9j a3MKPj4+ICAgICBmdWxseSBhbGxvY2F0ZWQgb24gdGhlIGRldmljZSkuCj4+Pgo+Pj4gU2lnbmVk LW9mZi1ieTogRGFlaG8gSmVvbmcgPGRhZWhvamVvbmdAZ29vZ2xlLmNvbT4KPj4+IC0tLQo+Pj4g djY6IGZpeGVkIGR1cGxpY2F0ZWQgYmxvY2sgcmVzZXJ2YXRpb25zIGFuZCByYWNpbmcgdy8gbW1h cC4KPj4+ICAgICAgIGFkZGVkIHRoZSBleHRlbnQgYWxpZ25tZW50IGNoZWNrIGZvciBkZXZpY2Ug YWxpYXNpbmcgYXJlYXMuCj4+PiB2NTogcHJldmVudGVkIG5ldyBzZWdtZW50IGFsbG9jYXRpb24g b24gZGV2aWNlcyB1bmRlcmdvaW5nIHJlc2VydmF0aW9uCj4+PiAgICAgICBvciB3aXRoIGFjdGl2 ZSBhbGlhc2VzLgo+Pj4gICAgICAgdXNlZCBpbi1tZW1vcnkgc3RydWN0IHRvIHJlc2VydmUgYmxv Y2tzIGZvciBkZXZpY2UgYWxpYXNpbmcuCj4+PiAgICAgICBjbGVhcmVkIHByZWZyZWUgKFBSRSkg ZGlydHkgc2VnbWVudCBiaXRtYXAuCj4+PiB2NDogcmVuYW1lZCBpbnRlcmZhY2VzLgo+Pj4gICAg ICAgZml4ZWQgcmFjZSBjb25kaXRpb25zIGJldHdlZW4gY2hlY2twb2ludD1kaXNhYmxlIG1vdW50 IGFuZCBpb2N0bHMuCj4+PiAgICAgICByZWZhY3RvcmVkIHNlZ21lbnQgcmVzZXJ2YXRpb24gcGFy dC4KPj4+ICAgICAgIG1vZGlmaWVkIGxvY2sgdXNhZ2UuCj4+PiB2MzogYWRkIENBUF9TWVNfQURN SU4gYW5kIGNoZWNrcG9pbnQ9ZGlzYWJsZWQgY2hlY2suCj4+PiAgICAgICByZW1vdmUgYSBmMmZz IHNwZWNpZmljIGZsYWcgZXhwb3NlZCB3aXRoIGdldGZsYWdzLgo+Pj4gdjI6IHByZXZlbnQgb3Bl cmF0aW9ucyBkdXJpbmcgY2hlY2twb2ludD1kaXNhYmxlZC4KPj4+IC0tLQo+Pj4gLS0tCj4+PiAg ICBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0IHwgIDM1ICsrKysKPj4+ICAgIGZz L2YyZnMvZGF0YS5jICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KPj4+ICAgIGZzL2YyZnMv ZXh0ZW50X2NhY2hlLmMgICAgICAgICAgICAgfCAgIDcgKwo+Pj4gICAgZnMvZjJmcy9mMmZzLmgg ICAgICAgICAgICAgICAgICAgICB8ICAxOSArLQo+Pj4gICAgZnMvZjJmcy9maWxlLmMgICAgICAg ICAgICAgICAgICAgICB8IDI3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+Pj4gICAg ZnMvZjJmcy9nYy5jICAgICAgICAgICAgICAgICAgICAgICB8ICAzMCArKy0tCj4+PiAgICBmcy9m MmZzL25hbWVpLmMgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrCj4+PiAgICBmcy9mMmZzL3Nl Z21lbnQuYyAgICAgICAgICAgICAgICAgIHwgMTc2ICsrKysrKysrKysrKystLS0tLS0KPj4+ICAg IGZzL2YyZnMvc2VnbWVudC5oICAgICAgICAgICAgICAgICAgfCAgMjIgKysrCj4+PiAgICBmcy9m MmZzL3N1cGVyLmMgICAgICAgICAgICAgICAgICAgIHwgIDM2ICsrKysKPj4+ICAgIGluY2x1ZGUv dWFwaS9saW51eC9mMmZzLmggICAgICAgICAgfCAgIDcgKwo+Pj4gICAgMTEgZmlsZXMgY2hhbmdl ZCwgNTU1IGluc2VydGlvbnMoKyksIDY4IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQg YS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0IGIvRG9jdW1lbnRhdGlvbi9maWxl c3lzdGVtcy9mMmZzLnJzdAo+Pj4gaW5kZXggOGM0YTE0YWU0NDRmLi4xYTVmZDRhZmU2MDkgMTAw NjQ0Cj4+PiAtLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0Cj4+PiArKysg Yi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0Cj4+PiBAQCAtMTA0NSw2ICsxMDQ1 LDQxIEBAIFNvLCB0aGUga2V5IGlkZWEgaXMsIHVzZXIgY2FuIGRvIGFueSBmaWxlIG9wZXJhdGlv bnMgb24gL2Rldi92ZGMsIGFuZAo+Pj4gICAgcmVjbGFpbSB0aGUgc3BhY2UgYWZ0ZXIgdGhlIHVz ZSwgd2hpbGUgdGhlIHNwYWNlIGlzIGNvdW50ZWQgYXMgL2RhdGEuCj4+PiAgICBUaGF0IGRvZXNu J3QgcmVxdWlyZSBtb2RpZnlpbmcgcGFydGl0aW9uIHNpemUgYW5kIGZpbGVzeXN0ZW0gZm9ybWF0 Lgo+Pj4KPj4+ICtEeW5hbWljIERldmljZSBBbGlhc2luZyBNYW5hZ2VtZW50Cj4+PiArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4gKwo+Pj4gK0luIGFkZGl0aW9uIHRvIHN0 YXRpYyBkZXZpY2UgYWxpYXNpbmcgYnkgZGVsZXRpbmcgdGhlIGFsaWFzaW5nIGZpbGUsIEYyRlMK Pj4+ICtzdXBwb3J0cyBkeW5hbWljIG1hbmFnZW1lbnQgb2YgZGV2aWNlIGFsaWFzaW5nLiBUaGlz IG1lY2hhbmlzbSBhbGxvd3MgdGhlIHN5c3RlbQo+Pj4gK3RvIGR5bmFtaWNhbGx5IHRyYW5zaXRp b24gcGFydGl0aW9uIG93bmVyc2hpcCBiZXR3ZWVuIEYyRlMgdXNlcmRhdGEgYW5kIGV4dGVybmFs Cj4+PiArZW50aXRpZXMgKGUuZy4sIHpSQU0sIHJhdyBwYXJ0aXRpb24pIGJhc2VkIG9uIHN5c3Rl bSByZXF1aXJlbWVudHMgd2l0aG91dAo+Pj4gK2RlbGV0aW5nIHRoZSBtYXN0ZXIgYWxpYXNpbmcg ZmlsZSBvciByZXF1aXJpbmcgdW5tb3VudC9yZW1vdW50Lgo+Pj4gKwo+Pj4gK1RoZSBtYXN0ZXIg YWxpYXNpbmcgZmlsZSBpcyBjcmVhdGVkIGR1cmluZyB0aGUgaW5pdGlhbCBmb3JtYXQgb2YgdGhl IGZpbGUgc3lzdGVtCj4+PiArYW5kIHJlbWFpbnMgYXMgYSBwZXJzaXN0ZW50IGNvbnRyb2wgZW50 aXR5IChpb2N0bCBnYXRld2F5KSBpbiB0aGUgcm9vdCBkaXJlY3RvcnkuCj4+PiArCj4+PiArLSBQ YXJ0aXRpb24gUmVzZXJ2YXRpb24gKEluLXNlcnZpY2UgdG8gQWxpYXNlZCkKPj4+ICsgIFdoZW4g YSBzcGVjaWZpYyBwYXJ0aXRpb24gbmVlZHMgdG8gYmUgZGVkaWNhdGVkIHRvIGV4dGVybmFsIHNl cnZpY2VzIChlLmcuLCB6UkFNKSwKPj4+ICsgIGEgdXNlciBjYW4gcmVzZXJ2ZSB0aGUgZGV2aWNl IGFsaWFzIHJhbmdlIHZpYSBpb2N0bC4gVGhlIGtlcm5lbCByZXNldHMgR0MgdmljdGltCj4+PiAr ICBpbmZvcm1hdGlvbiBmb3IgdGhlIHRhcmdldCByYW5nZSwgbWFya3Mgc2VnbWVudHMgYXMgaW4t dXNlIHRvIHByZXZlbnQgbmV3Cj4+PiArICBhbGxvY2F0aW9ucywgYW5kIHRyaWdnZXJzIGZvcmNl ZCBHQyB0byBtaWdyYXRlIGV4aXN0aW5nIHZhbGlkIGRhdGEgb3V0IG9mIHRoZQo+Pj4gKyAgcmFu Z2UuIEZpbmFsbHksIGl0IHJlc2VydmVzIHRoZXNlIGJsb2NrcyBpbiB0aGUgU0lUIHRvIGVmZmVj dGl2ZWx5IGV4Y2x1ZGUgdGhlCj4+PiArICBkZXZpY2UgZnJvbSB0aGUgdXNhYmxlIGNhcGFjaXR5 Lgo+Pj4gKwo+Pj4gKy0gUGFydGl0aW9uIFJlbGVhc2UgKEFsaWFzZWQgdG8gSW4tc2VydmljZSkK Pj4+ICsgIFdoZW4gZXh0ZXJuYWwgdXNhZ2UgY29uY2x1ZGVzLCB0aGUgc3BhY2UgaXMgcmVjbGFp bWVkIG5vdCBieSBkZWxldGluZyB0aGUgZmlsZSwKPj4+ICsgIGJ1dCB0aHJvdWdoIHRoZSByZWxl YXNlIGlvY3RsLiBUaGUga2VybmVsIHRydW5jYXRlcyBibG9ja3MgYXNzb2NpYXRlZCB3aXRoCj4+ PiArICB0aGUgZmlsZSwgcmVsZWFzaW5nIHRoZW0gYmFjayB0byBnZW5lcmFsIGZpbGVzeXN0ZW0g YWxsb2NhdGlvbi4KPj4+ICsKPj4+ICsuLiBjb2RlLWJsb2NrOjoKPj4+ICsKPj4+ICsgICAjIGYy ZnNfaW8gZGV2X2FsaWFzIHJlbGVhc2UgL21udC9mMmZzL3ZkYy5maWxlCj4+PiArICAgIyBkZiAt aAo+Pj4gKyAgIC9kZXYvdmRiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0RyAgNzUzTSAg IDY0RyAgIDIlIC9tbnQvZjJmcwo+Pj4gKwo+Pj4gKyAgICMgZjJmc19pbyBkZXZfYWxpYXMgcmVz ZXJ2ZSAvbW50L2YyZnMvdmRjLmZpbGUKPj4+ICsgICAjIGRmIC1oCj4+PiArICAgL2Rldi92ZGIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgNjRHICAgMzNHICAgMzJHICA1MiUgL21udC9mMmZz Cj4+PiArCj4+PiAgICBQZXItZmlsZSBSZWFkLU9ubHkgTGFyZ2UgRm9saW8gU3VwcG9ydAo+Pj4g ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+Cj4+PiBkaWZmIC0t Z2l0IGEvZnMvZjJmcy9kYXRhLmMgYi9mcy9mMmZzL2RhdGEuYwo+Pj4gaW5kZXggYWMxY2Y0ZGUz ZDYyLi44OTJkNTk0MDQ4YjcgMTAwNjQ0Cj4+PiAtLS0gYS9mcy9mMmZzL2RhdGEuYwo+Pj4gKysr IGIvZnMvZjJmcy9kYXRhLmMKPj4+IEBAIC0xMjcwLDcgKzEyNzAsNyBAQCBpbnQgZjJmc19yZXNl cnZlX25ld19ibG9ja3Moc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCBibGtjbnRfdCBjb3VudCkK Pj4+Cj4+PiAgICAgICAgaWYgKHVubGlrZWx5KGlzX2lub2RlX2ZsYWdfc2V0KGRuLT5pbm9kZSwg RklfTk9fQUxMT0MpKSkKPj4+ICAgICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4+PiAtICAg ICBlcnIgPSBpbmNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBkbi0+aW5vZGUsICZjb3VudCwgdHJ1 ZSk7Cj4+PiArICAgICBlcnIgPSBpbmNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBkbi0+aW5vZGUs ICZjb3VudCwgdHJ1ZSwgZmFsc2UpOwo+Pj4gICAgICAgIGlmICh1bmxpa2VseShlcnIpKQo+Pj4g ICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPj4+Cj4+PiBAQCAtMTU0Miw3ICsxNTQyLDcgQEAg c3RhdGljIGludCBfX2FsbG9jYXRlX2RhdGFfYmxvY2soc3RydWN0IGRub2RlX29mX2RhdGEgKmRu LCBpbnQgc2VnX3R5cGUpCj4+Pgo+Pj4gICAgICAgIGRuLT5kYXRhX2Jsa2FkZHIgPSBmMmZzX2Rh dGFfYmxrYWRkcihkbik7Cj4+PiAgICAgICAgaWYgKGRuLT5kYXRhX2Jsa2FkZHIgPT0gTlVMTF9B RERSKSB7Cj4+PiAtICAgICAgICAgICAgIGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmks IGRuLT5pbm9kZSwgJmNvdW50LCB0cnVlKTsKPj4+ICsgICAgICAgICAgICAgZXJyID0gaW5jX3Zh bGlkX2Jsb2NrX2NvdW50KHNiaSwgZG4tPmlub2RlLCAmY291bnQsIHRydWUsIGZhbHNlKTsKPj4+ ICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseShlcnIpKQo+Pj4gICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gZXJyOwo+Pj4gICAgICAgIH0KPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2V4 dGVudF9jYWNoZS5jIGIvZnMvZjJmcy9leHRlbnRfY2FjaGUuYwo+Pj4gaW5kZXggNjFmNmI5NzE0 MzY2Li4zYTczN2RiMGM5ZTEgMTAwNjQ0Cj4+PiAtLS0gYS9mcy9mMmZzL2V4dGVudF9jYWNoZS5j Cj4+PiArKysgYi9mcy9mMmZzL2V4dGVudF9jYWNoZS5jCj4+PiBAQCAtNjIsNiArNjIsMTMgQEAg Ym9vbCBzYW5pdHlfY2hlY2tfZXh0ZW50X2NhY2hlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVj dCBmb2xpbyAqaWZvbGlvKQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18s IGlub2RlLT5pX2lubywgZWkuYmxrLCBlaS5mb2ZzLCBlaS5sZW4pOwo+Pj4gICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+PiAgICAgICAgICAgICAgICB9Cj4+PiArCj4+PiAr ICAgICAgICAgICAgIGlmICgoZWkuYmxrICUgQkxLU19QRVJfU0VDKHNiaSkpIHx8IChlaS5sZW4g JSBCTEtTX1BFUl9TRUMoc2JpKSkpIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBmMmZzX3dh cm4oc2JpLCAiJXM6IGRldmljZSBhbGlhcyBpbm9kZSAoaW5vPSVsbHgpJ3MgZXh0ZW50IGluZm8g WyV1LCAldSwgJXVdIGlzIG5vdCBhbGlnbmVkIHRvIHNlY3Rpb24gc2l6ZSAldSIsCj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBpbm9kZS0+aV9pbm8sIGVpLmJs aywgZWkuZm9mcywgZWkubGVuLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC TEtTX1BFUl9TRUMoc2JpKSk7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl Owo+Pj4gKyAgICAgICAgICAgICB9Cj4+PiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPj4+ ICAgICAgICB9Cj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvZjJmcy5oIGIvZnMvZjJmcy9m MmZzLmgKPj4+IGluZGV4IGYxNzc0ZDRlMThkMi4uZjI0ZTMwYmI1YzNkIDEwMDY0NAo+Pj4gLS0t IGEvZnMvZjJmcy9mMmZzLmgKPj4+ICsrKyBiL2ZzL2YyZnMvZjJmcy5oCj4+PiBAQCAtMTQwNCw2 ICsxNDA0LDggQEAgc3RydWN0IGYyZnNfZGV2X2luZm8gewo+Pj4gICAgICAgIHVuc2lnbmVkIGlu dCB0b3RhbF9zZWdtZW50czsKPj4+ICAgICAgICBibG9ja190IHN0YXJ0X2JsazsKPj4+ICAgICAg ICBibG9ja190IGVuZF9ibGs7Cj4+PiArICAgICBib29sIGhhc19hbGlhczsKPj4+ICsgICAgIGJv b2wgaXNfcmVzZXJ2aW5nOwo+Pj4gICAgI2lmZGVmIENPTkZJR19CTEtfREVWX1pPTkVECj4+PiAg ICAgICAgdW5zaWduZWQgaW50IG5yX2Jsa3o7ICAgICAgICAgICAvKiBUb3RhbCBudW1iZXIgb2Yg em9uZXMgKi8KPj4+ICAgICAgICB1bnNpZ25lZCBsb25nICpibGt6X3NlcTsgICAgICAgIC8qIEJp dG1hcCBpbmRpY2F0aW5nIHNlcXVlbnRpYWwgem9uZXMgKi8KPj4+IEBAIC0xODU3LDYgKzE4NTks NyBAQCBzdHJ1Y3QgZjJmc19zYl9pbmZvIHsKPj4+ICAgICAgICBibG9ja190IGxhc3RfdmFsaWRf YmxvY2tfY291bnQ7ICAgICAgICAgLyogZm9yIHJlY292ZXJ5ICovCj4+PiAgICAgICAgYmxvY2tf dCByZXNlcnZlZF9ibG9ja3M7ICAgICAgICAgICAgICAgIC8qIGNvbmZpZ3VyYWJsZSByZXNlcnZl ZCBibG9ja3MgKi8KPj4+ICAgICAgICBibG9ja190IGN1cnJlbnRfcmVzZXJ2ZWRfYmxvY2tzOyAg ICAgICAgLyogY3VycmVudCByZXNlcnZlZCBibG9ja3MgKi8KPj4+ICsgICAgIGJsb2NrX3QgYWxp YXNfcmVzZXJ2ZWRfYmxvY2tzOyAgICAgICAgICAvKiByZXNlcnZlZCBibG9ja3MgZm9yIGRldmlj ZSBhbGlhcyAqLwo+Pj4KPj4+ICAgICAgICAvKiBBZGRpdGlvbmFsIHRyYWNraW5nIGZvciBubyBj aGVja3BvaW50IG1vZGUgKi8KPj4+ICAgICAgICBibG9ja190IHVudXNhYmxlX2Jsb2NrX2NvdW50 OyAgICAgICAgICAgLyogIyBvZiBibG9ja3Mgc2F2ZWQgYnkgbGFzdCBjcCAqLwo+Pj4gQEAgLTI1 NTksNyArMjU2Miw4IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9hdmFpbGFibGVf YmxvY2tfY291bnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4gICAgICAgIGJsb2NrX3Qg YXZhaWxfdXNlcl9ibG9ja19jb3VudDsKPj4+Cj4+PiAgICAgICAgYXZhaWxfdXNlcl9ibG9ja19j b3VudCA9IHNiaS0+dXNlcl9ibG9ja19jb3VudCAtCj4+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNiaS0+Y3VycmVudF9yZXNlcnZlZF9ibG9ja3M7Cj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNiaS0+Y3VycmVudF9yZXNlcnZlZF9ibG9j a3MgLQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYmktPmFsaWFz X3Jlc2VydmVkX2Jsb2NrczsKPj4+Cj4+PiAgICAgICAgaWYgKHRlc3Rfb3B0KHNiaSwgUkVTRVJW RV9ST09UKSAmJiAhX19hbGxvd19yZXNlcnZlZF9yb290KHNiaSwgaW5vZGUsIGNhcCkpCj4+PiAg ICAgICAgICAgICAgICBhdmFpbF91c2VyX2Jsb2NrX2NvdW50IC09IEYyRlNfT1BUSU9OKHNiaSku cm9vdF9yZXNlcnZlZF9ibG9ja3M7Cj4+PiBAQCAtMjU3Niw3ICsyNTgwLDggQEAgc3RhdGljIGlu bGluZSB1bnNpZ25lZCBpbnQgZ2V0X2F2YWlsYWJsZV9ibG9ja19jb3VudChzdHJ1Y3QgZjJmc19z Yl9pbmZvICpzYmksCj4+Pgo+Pj4gICAgc3RhdGljIGlubGluZSB2b2lkIGYyZnNfaV9ibG9ja3Nf d3JpdGUoc3RydWN0IGlub2RlICosIGJsb2NrX3QsIGJvb2wsIGJvb2wpOwo+Pj4gICAgc3RhdGlj IGlubGluZSBpbnQgaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2Rl LCBibGtjbnRfdCAqY291bnQsIGJvb2wgcGFydGlhbCkKPj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBibGtjbnRfdCAqY291bnQsCj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwYXJ0aWFsLCBib29sIGFsaWFzX3Jlc2Vy dmVkKQo+Pj4gICAgewo+Pj4gICAgICAgIGxvbmcgbG9uZyBkaWZmID0gMCwgcmVsZWFzZSA9IDA7 Cj4+PiAgICAgICAgYmxvY2tfdCBhdmFpbF91c2VyX2Jsb2NrX2NvdW50Owo+Pj4gQEAgLTI1OTks MTAgKzI2MDQsMTYgQEAgc3RhdGljIGlubGluZSBpbnQgaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHN0 cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4+Cj4+PiAgICAgICAgc3Bpbl9sb2NrKCZzYmktPnN0 YXRfbG9jayk7Cj4+Pgo+Pj4gKyAgICAgaWYgKGFsaWFzX3Jlc2VydmVkKQo+Pj4gKyAgICAgICAg ICAgICBzYmktPmFsaWFzX3Jlc2VydmVkX2Jsb2NrcyAtPSAqY291bnQ7Cj4+PiArCj4+PiAgICAg ICAgYXZhaWxfdXNlcl9ibG9ja19jb3VudCA9IGdldF9hdmFpbGFibGVfYmxvY2tfY291bnQoc2Jp LCBpbm9kZSwgdHJ1ZSk7Cj4+PiAgICAgICAgZGlmZiA9IChsb25nIGxvbmcpc2JpLT50b3RhbF92 YWxpZF9ibG9ja19jb3VudCArICpjb3VudCAtCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGF2YWlsX3VzZXJfYmxvY2tfY291bnQ7Cj4+PiAgICAgICAg aWYgKHVubGlrZWx5KGRpZmYgPiAwKSkgewo+Pj4gKyAgICAgICAgICAgICBpZiAoYWxpYXNfcmVz ZXJ2ZWQpCj4+PiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5hbGlhc19yZXNlcnZlZF9ibG9j a3MgKz0gKmNvdW50Owo+Pj4gKwo+Pj4gICAgICAgICAgICAgICAgaWYgKCFwYXJ0aWFsKSB7Cj4+ PiAgICAgICAgICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4+ PiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2UgPSAqY291bnQ7Cj4+PiBAQCAtNDAxMCw2 ICs0MDIxLDggQEAgaW50IGYyZnNfZmx1c2hfZGV2aWNlX2NhY2hlKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSk7Cj4+PiAgICB2b2lkIGYyZnNfZGVzdHJveV9mbHVzaF9jbWRfY29udHJvbChzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksIGJvb2wgZnJlZSk7Cj4+PiAgICB2b2lkIGYyZnNfaW52YWxp ZGF0ZV9ibG9ja3Moc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGFkZHIsCj4+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBsZW4pOwo+Pj4gK3ZvaWQgZjJmc19yZXNlcnZlX2RldmljZV9hbGlhcyhzdHJ1Y3QgZjJmc19z Yl9pbmZvICpzYmksIGJsb2NrX3QgYWRkciwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuKTsKPj4+ICAgIGJvb2wgZjJmc19p c19jaGVja3BvaW50ZWRfZGF0YShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3QgYmxr YWRkcik7Cj4+PiAgICBpbnQgZjJmc19zdGFydF9kaXNjYXJkX3RocmVhZChzdHJ1Y3QgZjJmc19z Yl9pbmZvICpzYmkpOwo+Pj4gICAgdm9pZCBmMmZzX2Ryb3BfZGlzY2FyZF9jbWQoc3RydWN0IGYy ZnNfc2JfaW5mbyAqc2JpKTsKPj4+IEBAIC00MjMxLDYgKzQyNDQsOCBAQCB2b2lkIGYyZnNfYnVp bGRfZ2NfbWFuYWdlcihzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpOwo+Pj4gICAgaW50IGYyZnNf Z2NfcmFuZ2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4gICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IHN0YXJ0X3NlZywgdW5zaWduZWQgaW50IGVuZF9zZWcsCj4+PiAgICAgICAgICAg ICAgICBib29sIGRyeV9ydW4sIHVuc2lnbmVkIGludCBkcnlfcnVuX3NlY3Rpb25zKTsKPj4+ICt2 b2lkIGYyZnNfcmVzZXRfZ2NfdmljdGltX3Jlc291cmNlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwKPj4+ICsgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgZW5k KTsKPj4+ICAgIGludCBmMmZzX3Jlc2l6ZV9mcyhzdHJ1Y3QgZmlsZSAqZmlscCwgX191NjQgYmxv Y2tfY291bnQpOwo+Pj4gICAgaW50IF9faW5pdCBmMmZzX2NyZWF0ZV9nYXJiYWdlX2NvbGxlY3Rp b25fY2FjaGUodm9pZCk7Cj4+PiAgICB2b2lkIGYyZnNfZGVzdHJveV9nYXJiYWdlX2NvbGxlY3Rp b25fY2FjaGUodm9pZCk7Cj4+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9maWxlLmMgYi9mcy9mMmZz L2ZpbGUuYwo+Pj4gaW5kZXggNGI1MmM1NmQ3MWYwLi44MzVmMTBiYzU5YjUgMTAwNjQ0Cj4+PiAt LS0gYS9mcy9mMmZzL2ZpbGUuYwo+Pj4gKysrIGIvZnMvZjJmcy9maWxlLmMKPj4+IEBAIC04MTMs MTMgKzgxMywxOSBAQCBpbnQgZjJmc19kb190cnVuY2F0ZV9ibG9ja3Moc3RydWN0IGlub2RlICpp bm9kZSwgdTY0IGZyb20sIGJvb2wgbG9jaykKPj4+Cj4+PiAgICAgICAgaWYgKElTX0RFVklDRV9B TElBU0lORyhpbm9kZSkpIHsKPj4+ICAgICAgICAgICAgICAgIHN0cnVjdCBleHRlbnRfdHJlZSAq ZXQgPSBGMkZTX0koaW5vZGUpLT5leHRlbnRfdHJlZVtFWF9SRUFEXTsKPj4+IC0gICAgICAgICAg ICAgc3RydWN0IGV4dGVudF9pbmZvIGVpID0gZXQtPmxhcmdlc3Q7Cj4+PiArICAgICAgICAgICAg IHN0cnVjdCBleHRlbnRfaW5mbyBlaTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgcmVhZF9sb2Nr KCZldC0+bG9jayk7Cj4+PiArICAgICAgICAgICAgIGVpID0gZXQtPmxhcmdlc3Q7Cj4+PiArICAg ICAgICAgICAgIHJlYWRfdW5sb2NrKCZldC0+bG9jayk7Cj4+Pgo+Pj4gICAgICAgICAgICAgICAg ZjJmc19pbnZhbGlkYXRlX2Jsb2NrcyhzYmksIGVpLmJsaywgZWkubGVuKTsKPj4+Cj4+PiAgICAg ICAgICAgICAgICBkZWNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBpbm9kZSwgZWkubGVuKTsKPj4+ ICAgICAgICAgICAgICAgIGYyZnNfdXBkYXRlX3RpbWUoc2JpLCBSRVFfVElNRSk7Cj4+Pgo+Pj4g KyAgICAgICAgICAgICBmMmZzX2Ryb3BfZXh0ZW50X3RyZWUoaW5vZGUpOwo+Pj4gKwo+Pj4gICAg ICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoaWZvbGlvLCB0cnVlKTsKPj4+ICAgICAgICAgICAg ICAgIGdvdG8gb3V0Owo+Pj4gICAgICAgIH0KPj4+IEBAIC0xMTAwLDggKzExMDYsOSBAQCBpbnQg ZjJmc19zZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksCj4+PiAgICAgICAgaWYgKChhdHRyLT5pYV92YWxpZCAmIEFUVFJfU0laRSkpIHsKPj4+ICAg ICAgICAgICAgICAgIGlmIChtYXBwaW5nX2xhcmdlX2ZvbGlvX3N1cHBvcnQoaW5vZGUtPmlfbWFw cGluZykpCj4+PiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKPj4+ IC0gICAgICAgICAgICAgaWYgKCFmMmZzX2lzX2NvbXByZXNzX2JhY2tlbmRfcmVhZHkoaW5vZGUp IHx8Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU19ERVZJQ0VfQUxJQVNJTkco aW5vZGUpKQo+Pj4gKyAgICAgICAgICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkK Pj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+Pj4gKyAgICAgICAgICAg ICBpZiAoIWYyZnNfaXNfY29tcHJlc3NfYmFja2VuZF9yZWFkeShpbm9kZSkpCj4+PiAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKPj4+ICAgICAgICAgICAgICAgIGlm IChpc19pbm9kZV9mbGFnX3NldChpbm9kZSwgRklfQ09NUFJFU1NfUkVMRUFTRUQpICYmCj4+PiAg ICAgICAgICAgICAgICAgICAgICAgICFJU19BTElHTkVEKGF0dHItPmlhX3NpemUsCj4+PiBAQCAt MjEzMCw2ICsyMTM3LDkgQEAgc3RhdGljIGludCBmMmZzX3NldGZsYWdzX2NvbW1vbihzdHJ1Y3Qg aW5vZGUgKmlub2RlLCB1MzIgaWZsYWdzLCB1MzIgbWFzaykKPj4+ICAgICAgICBpZiAoSVNfTk9R VU9UQShpbm9kZSkpCj4+PiAgICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+Pj4KPj4+ICsg ICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+Pj4gKyAgICAgICAgICAgICByZXR1 cm4gLUVQRVJNOwo+Pj4gKwo+Pj4gICAgICAgIGlmICgoaWZsYWdzIF4gbWFza2VkX2ZsYWdzKSAm IEYyRlNfQ0FTRUZPTERfRkwpIHsKPj4+ICAgICAgICAgICAgICAgIGlmICghZjJmc19zYl9oYXNf Y2FzZWZvbGQoRjJGU19JX1NCKGlub2RlKSkpCj4+PiAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiAtRU9QTk9UU1VQUDsKPj4+IEBAIC0yNjc4LDYgKzI2ODgsMTcgQEAgc3RhdGljIGludCBm MmZzX2lvY19nZXRfZW5jcnlwdGlvbl9wb2xpY3koc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVk IGxvbmcgYXJnKQo+Pj4gICAgICAgIHJldHVybiBmc2NyeXB0X2lvY3RsX2dldF9wb2xpY3koZmls cCwgKHZvaWQgX191c2VyICopYXJnKTsKPj4+ICAgIH0KPj4+Cj4+PiArc3RhdGljIGludCBmMmZz X2lvY19nZXRfZGV2X2FsaWFzX3N0YXR1cyhzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9u ZyBhcmcpCj4+PiArewo+Pj4gKyAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUo ZmlscCk7Cj4+PiArCj4+PiArICAgICBpZiAoIUlTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpCj4+ PiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4gKwo+Pj4gKyAgICAgcmV0dXJuIHB1 dF91c2VyKEYyRlNfSEFTX0JMT0NLUyhpbm9kZSkgPyBGMkZTX0RFVl9BTElBU19TVEFUVVNfUkVT RVJWRUQgOgo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjJGU19ERVZfQUxJQVNf U1RBVFVTX1JFTEVBU0VELCAodTMyIF9fdXNlciAqKWFyZyk7Cj4+PiArfQo+Pj4gKwo+Pj4gICAg c3RhdGljIGludCBmMmZzX2lvY19nZXRfZW5jcnlwdGlvbl9wd3NhbHQoc3RydWN0IGZpbGUgKmZp bHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+Pj4gICAgewo+Pj4gICAgICAgIHN0cnVjdCBpbm9kZSAq aW5vZGUgPSBmaWxlX2lub2RlKGZpbHApOwo+Pj4gQEAgLTM2MTYsNiArMzYzNywyNDEgQEAgc3Rh dGljIGludCBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX2ZpbGUoc3RydWN0IGZpbGUgKmZpbHAsIHVu c2lnbmVkIGxvbmcgYXJnKQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAodTMyIF9fdXNlciAq KWFyZyk7Cj4+PiAgICB9Cj4+Pgo+Pj4gK3N0YXRpYyBib29sIGYyZnNfZ2V0X2Rldl9hbGlhc19l eHRlbnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8gKmVpKQo+Pj4gK3sKPj4+ ICsgICAgIGludCBpOwo+Pj4gKwo+Pj4gKyAgICAgZm9yIChpID0gMTsgaSA8IHNiaS0+c19uZGV2 czsgaSsrKSB7Cj4+PiArICAgICAgICAgICAgIGNoYXIgKm5hbWUgPSBzdHJyY2hyKEZERVYoaSku cGF0aCwgJy8nKTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgbmFtZSA9IG5hbWUgPyBuYW1lICsg MSA6IEZERVYoaSkucGF0aDsKPj4+ICsgICAgICAgICAgICAgaWYgKHN0cmNtcChuYW1lLCBkZW50 cnktPmRfbmFtZS5uYW1lKSkKPj4+ICsgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4+ ICsKPj4+ICsgICAgICAgICAgICAgZWktPmJsayA9IEZERVYoaSkuc3RhcnRfYmxrOwo+Pj4gKyAg ICAgICAgICAgICBlaS0+bGVuID0gRkRFVihpKS50b3RhbF9zZWdtZW50cyA8PCBzYmktPmxvZ19i bG9ja3NfcGVyX3NlZzsKPj4+ICsgICAgICAgICAgICAgZWktPmZvZnMgPSAwOwo+Pj4gKyAgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKPj4+ICsgICAgIH0KPj4+ICsgICAgIHJldHVybiBmYWxzZTsK Pj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCBmMmZzX2lvY19yZXNlcnZlX2Rldl9hbGlhcyhz dHJ1Y3QgZmlsZSAqZmlscCkKPj4+ICt7Cj4+PiArICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0g ZmlsZV9pbm9kZShmaWxwKTsKPj4+ICsgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYy RlNfSV9TQihpbm9kZSk7Cj4+PiArICAgICBzdHJ1Y3QgZXh0ZW50X3RyZWUgKmV0ID0gRjJGU19J KGlub2RlKS0+ZXh0ZW50X3RyZWVbRVhfUkVBRF07Cj4+PiArICAgICBzdHJ1Y3QgZXh0ZW50X2lu Zm8gZWk7Cj4+PiArICAgICBzdHJ1Y3QgY3BfY29udHJvbCBjcGMgPSB7IENQX1NZTkMsIDAsIDAs IDAgfTsKPj4+ICsgICAgIHN0cnVjdCBmMmZzX2xvY2tfY29udGV4dCBsYywgZ2xjOwo+Pj4gKyAg ICAgYmxrY250X3QgY291bnQ7Cj4+PiArICAgICB1bnNpZ25lZCBpbnQgc3RhcnQsIGVuZDsKPj4+ ICsgICAgIGludCB0eXBlLCBlcnI7Cj4+PiArCj4+PiArICAgICBpZiAoIWNhcGFibGUoQ0FQX1NZ U19BRE1JTikpCj4+PiArICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4+PiArCj4+PiArICAg ICBpZiAodW5saWtlbHkoaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0NQX0RJU0FCTEVEKSkpCj4+ PiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4gKwo+Pj4gKyAgICAgZXJyID0gbW50 X3dhbnRfd3JpdGVfZmlsZShmaWxwKTsKPj4+ICsgICAgIGlmIChlcnIpCj4+PiArICAgICAgICAg ICAgIHJldHVybiBlcnI7Cj4+PiArCj4+PiArICAgICBpbm9kZV9sb2NrKGlub2RlKTsKPj4+ICsK Pj4+ICsgICAgIGlmICghSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkgewo+Pj4gKyAgICAgICAg ICAgICBlcnIgPSAtRUlOVkFMOwo+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxv Y2s7Cj4+PiArICAgICB9Cj4+PiArCj4+PiArICAgICBpZiAoRjJGU19IQVNfQkxPQ0tTKGlub2Rl KSkgewo+Pj4gKyAgICAgICAgICAgICBlcnIgPSAwOwo+Pj4gKyAgICAgICAgICAgICBnb3RvIG91 dF9pbm9kZV91bmxvY2s7Cj4+PiArICAgICB9Cj4+PiArCj4+PiArICAgICBpZiAoIWYyZnNfZ2V0 X2Rldl9hbGlhc19leHRlbnQoc2JpLCBmaWxwLT5mX3BhdGguZGVudHJ5LCAmZWkpKSB7Cj4+PiAr ICAgICAgICAgICAgIGYyZnNfd2FybihzYmksICJkZXZpY2UgYWxpYXMgZmlsZSAoJXMsIGlubz0l bGx1KSBoYXMgbm8gbWF0Y2hpbmcgZGV2aWNlIiwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAg IGZpbHAtPmZfcGF0aC5kZW50cnktPmRfbmFtZS5uYW1lLAo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylpbm9kZS0+aV9pbm8pOwo+Pj4gKyAgICAgICAgICAg ICBzZXRfc2JpX2ZsYWcoc2JpLCBTQklfTkVFRF9GU0NLKTsKPj4+ICsgICAgICAgICAgICAgZjJm c19oYW5kbGVfZXJyb3Ioc2JpLCBFUlJPUl9DT1JSVVBURURfSU5PREUpOwo+Pj4gKyAgICAgICAg ICAgICBlcnIgPSAtRUZTQ09SUlVQVEVEOwo+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9k ZV91bmxvY2s7Cj4+PiArICAgICB9Cj4+PiArCj4+PiArICAgICBzcGluX2xvY2soJnNiaS0+c3Rh dF9sb2NrKTsKPj4+ICsgICAgIGlmIChzYmktPnRvdGFsX3ZhbGlkX2Jsb2NrX2NvdW50ICsgZWku bGVuID4KPj4+ICsgICAgICAgICAgICAgICAgICAgICBnZXRfYXZhaWxhYmxlX2Jsb2NrX2NvdW50 KHNiaSwgaW5vZGUsIHRydWUpKSB7Cj4+PiArICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZzYmkt PnN0YXRfbG9jayk7Cj4+PiArICAgICAgICAgICAgIGVyciA9IC1FTk9TUEM7Cj4+PiArICAgICAg ICAgICAgIGdvdG8gb3V0X2lub2RlX3VubG9jazsKPj4+ICsgICAgIH0KPj4+ICsgICAgIHNiaS0+ YWxpYXNfcmVzZXJ2ZWRfYmxvY2tzICs9IGVpLmxlbjsKPj4+ICsgICAgIHNwaW5fdW5sb2NrKCZz YmktPnN0YXRfbG9jayk7Cj4+PiArCj4+PiArICAgICBzcGluX2xvY2soJkZSRUVfSShzYmkpLT5z ZWdtYXBfbG9jayk7Cj4+PiArICAgICBGREVWKGYyZnNfdGFyZ2V0X2RldmljZV9pbmRleChzYmks IGVpLmJsaykpLmlzX3Jlc2VydmluZyA9IHRydWU7Cj4+PiArICAgICBzcGluX3VubG9jaygmRlJF RV9JKHNiaSktPnNlZ21hcF9sb2NrKTsKPj4+ICsKPj4+ICsgICAgIHN0YXJ0ID0gR0VUX1NFR05P KHNiaSwgZWkuYmxrKTsKPj4+ICsgICAgIGVuZCA9IEdFVF9TRUdOTyhzYmksIGVpLmJsayArIGVp LmxlbiAtIDEpOwo+Pj4gKwo+Pj4gKyAgICAgLyogQWNxdWlyZSBnY19sb2NrIGZvciB2aWN0aW0g cmVzZXQsIGN1cnNlZyByZXNpemUsIGFuZCByYW5nZSBHQyAqLwo+Pj4gKyAgICAgZjJmc19kb3du X3dyaXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+Pj4gKwo+Pj4gKyAgICAgLyogUmVz ZXQgdGhlIHZpY3RpbSBpbmZvcm1hdGlvbiB0byBwcmV2ZW50IEdDIGZyb20gdGFyZ2V0aW5nIHRo ZSByYW5nZSAqLwo+Pj4gKyAgICAgZjJmc19yZXNldF9nY192aWN0aW1fcmVzb3VyY2Uoc2JpLCBz dGFydCwgZW5kKTsKPj4+ICsKPj4+ICsgICAgIC8qIE1vdmUgb3V0IGN1cnNlZ3MgZnJvbSB0aGUg dGFyZ2V0IHJhbmdlICovCj4+PiArICAgICBmb3IgKHR5cGUgPSBDVVJTRUdfSE9UX0RBVEE7IHR5 cGUgPCBOUl9DVVJTRUdfUEVSU0lTVF9UWVBFOyB0eXBlKyspIHsKPj4+ICsgICAgICAgICAgICAg ZXJyID0gZjJmc19hbGxvY2F0ZV9zZWdtZW50X2Zvcl9yZXNpemUoc2JpLCB0eXBlLCBzdGFydCwg ZW5kKTsKPj4+ICsgICAgICAgICAgICAgaWYgKGVycikKPj4+ICsgICAgICAgICAgICAgICAgICAg ICBnb3RvIG91dF9nY191bmxvY2s7Cj4+PiArICAgICB9Cj4+PiArCj4+PiArICAgICBmMmZzX2xv Y2tfb3Aoc2JpLCAmbGMpOwo+Pj4gKwo+Pj4gKyAgICAgaWYgKHVubGlrZWx5KGlzX3NiaV9mbGFn X3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpKSB7Cj4+PiArICAgICAgICAgICAgIGVyciA9IC1F SU5WQUw7Cj4+PiArICAgICAgICAgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPj4+ICsg ICAgICAgICAgICAgZ290byBvdXRfZ2NfdW5sb2NrOwo+Pj4gKyAgICAgfQo+Pj4gKwo+Pj4gKyAg ICAgLyogZG8gR0MgdG8gbW92ZSBvdXQgdmFsaWQgYmxvY2tzIGluIHRoZSByYW5nZSBhbGwgYXQg b25jZSEgKi8KPj4+ICsgICAgIGVyciA9IGYyZnNfZ2NfcmFuZ2Uoc2JpLCBzdGFydCwgZW5kLCBm YWxzZSwgMCk7Cj4+PiArICAgICBpZiAoZXJyKSB7Cj4+PiArICAgICAgICAgICAgIGYyZnNfdW5s b2NrX29wKHNiaSwgJmxjKTsKPj4+ICsgICAgICAgICAgICAgZ290byBvdXRfZ2NfdW5sb2NrOwo+ Pj4gKyAgICAgfQo+Pj4gKwo+Pj4gKyAgICAgY291bnQgPSBlaS5sZW47Cj4+PiArICAgICBlcnIg PSBpbmNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBpbm9kZSwgJmNvdW50LCBmYWxzZSwgdHJ1ZSk7 Cj4+PiArICAgICBpZiAoZXJyKSB7Cj4+PiArICAgICAgICAgICAgIGYyZnNfdW5sb2NrX29wKHNi aSwgJmxjKTsKPj4+ICsgICAgICAgICAgICAgZ290byBvdXRfZ2NfdW5sb2NrOwo+Pj4gKyAgICAg fQo+Pj4gKwo+Pj4gKyAgICAgd3JpdGVfbG9jaygmZXQtPmxvY2spOwo+Pj4gKyAgICAgZXQtPmxh cmdlc3QgPSBlaTsKPj4+ICsgICAgIHdyaXRlX3VubG9jaygmZXQtPmxvY2spOwo+Pj4gKyAgICAg Y2xlYXJfaW5vZGVfZmxhZyhpbm9kZSwgRklfTk9fRVhURU5UKTsKPj4+ICsKPj4+ICsgICAgIGYy ZnNfcmVzZXJ2ZV9kZXZpY2VfYWxpYXMoc2JpLCBlaS5ibGssIGVpLmxlbik7Cj4+PiArCj4+PiAr ICAgICBpX3NpemVfd3JpdGUoaW5vZGUsIChsb2ZmX3QpZWkubGVuIDw8IHNiaS0+bG9nX2Jsb2Nr c2l6ZSk7Cj4+PiArICAgICBmMmZzX3VwZGF0ZV9pbm9kZV9wYWdlKGlub2RlKTsKPj4+ICsKPj4+ ICsgICAgIHNwaW5fbG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2NrKTsKPj4+ICsgICAgIEZE RVYoZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgZWkuYmxrKSkuaXNfcmVzZXJ2aW5nID0g ZmFsc2U7Cj4+PiArICAgICBzcGluX3VubG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2NrKTsK Pj4+ICsKPj4+ICsgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPj4+ICsgICAgIGYyZnNf dXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4+Cj4+IERvIHdlIG5lZWQgdG8g Y2FsbCBmMmZzX3dyaXRlX2NoZWNrcG9pbnQoc2JpLCAmY3BjKSBoZXJlIHRvIG1ha2Ugc3VyZSBw ZXJzaXN0Cj4+IGRldmljZSBhbGlhcyBmaWxlIGZpcnN0PyB0byBhdm9pZCBmb2xsb3dpbmcgZjJm c19pb2NfcmVsZWFzZV9kZXZfYWxpYXMoKSByYWNpbgo+PiAgICB3LyBmMmZzX2lvY19yZXNlcnZl X2Rldl9hbGlhcygpPwo+Pgo+PiAtIGYyZnNfaW9jX3Jlc2VydmVfZGV2X2FsaWFzICAgICAgICAg ICAgLSBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcwo+PiAuLi4KPj4gICAgLSBmMmZzX3VubG9j a19vcAo+PiAgICAtIGYyZnNfdXBfd3JpdGVfdHJhY2UoZ2NfbG9jaykKPj4gICAgLSBpbm9kZV91 bmxvY2sKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBpbm9k ZV9sb2NrCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgo+ PiAgICAtIGYyZnNfd3JpdGVfY2hlY2twb2ludAo+IAo+IEhpIENoYW8sCj4gCj4gSSBjb3VsZG4n dCBnZXQgeW91ciBwb2ludC4gQ291bGQgeW91IGVsYWJvcmF0ZSBtb3JlLCBpZiBJIG1pc3NlZCBp dD8KCkhpIERhZWhvLAoKQWN0dWFsbHksIHdoYXQgSSBtZWFuIGlzIGlmIGYyZnNfd3JpdGVfY2hl Y2twb2ludCgpIGlzIG5vdCBjb3ZlcmVkIGJ5Cmlub2RlIGxvY2ssIGluIHJhY2UgY29uZGl0aW9u IHRoZXJlIHdpbGwgYmUgYmVsb3cgaW52b2tpbmcgc2VyaWFsOgoKQXNzdW1lOgpmMmZzX2lvY19y ZXNlcnZlX2Rldl9hbGlhcyA6PSByZXNlcnZlX2Rldl9hbGlhcyArIGYyZnNfd3JpdGVfY2hlY2tw b2ludApmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcyA6PSByZWxlYXNlX2Rldl9hbGlhcyArIGYy ZnNfd3JpdGVfY2hlY2twb2ludAoKMSkgVGhyZWFkIEE6IHJlc2VydmVfZGV2X2FsaWFzCjIpIFRo cmVhZCBCOiByZWxlYXNlX2Rldl9hbGlhcwozKSBUaHJlYWQgQzogcmVzZXJ2ZV9kZXZfYWxpYXMK NCkgVGhyZWFkIEI6IGYyZnNfd3JpdGVfY2hlY2twb2ludAo1KSBUaHJlYWQgQTogZjJmc193cml0 ZV9jaGVja3BvaW50CjYpIFRocmVhZCBDOiBmMmZzX3dyaXRlX2NoZWNrcG9pbnQKCkFmdGVyIDEp IGFsbCBkYXRhIGFmdGVyIHJlc2VydmVfZGV2X2FsaWFzKCkgYXJlIG5vdCBjaGVja3BvaW50ZWQs IHRoZW4gdGhlCmZvbGxvd2luZyByZWxlYXNlX2Rldl9hbGlhcyBpbiAyKSB3b24ndCBlbmNvdW50 ZXIgYW55IGlzc3VlLCByaWdodD8gYW5kIHRoZQpzYW1lIHF1ZXRpb25zIGZvciAzKS4KCklPVywg cmVzZXJ2ZV9kZXZfYWxpYXMvcmVsZWFzZV9kZXZfYWxpYXMgZG9lc24ndCBuZWVkIHRvIHJlbHkg b24gY2hlY2twb2ludGVkCnN0YXRlIG9mIGVhY2ggb3RoZXIsIGFtIEkgdW5kZXJzdGFuZCBpdCBj b3JyZWN0bHk/IGlmIHNvIHRoZXJlIHdvbid0IGJlIGFueQppc3N1ZS4KCj4gCj4gMS4gSW4tbWVt b3J5IHN0YXRlIGlzIGFscmVhZHkgYXRvbWljIChObyBSYWNlKToKPiAgICAgIEJlZm9yZSBpbm9k ZV91bmxvY2soKSwgYWxsIGluLW1lbW9yeSBtZXRhZGF0YSAoZXh0ZW50X3RyZWUsIFNJVAo+IHNl Z21lbnQgYml0bWFwcywgaV9zaXplLCBhbmQgZGlydHkgaW5vZGUgcGFnZSkgYXJlIGZ1bGx5IHVw ZGF0ZWQgdW5kZXIKPiBpbm9kZV9sb2NrICsgZjJmc19sb2NrX29wLiBBIHN1YnNlcXVlbnQgZjJm c19pb2NfcmVsZWFzZV9kZXZfYWxpYXMoKQo+IHdpbGwgb2JzZXJ2ZSBhIGNvbXBsZXRlLCBjb25z aXN0ZW50IHN0YXRlLgo+IAo+IDIuIE9uLWRpc2sgY29uc2lzdGVuY3kgJiBjcmFzaCBzYWZldHk6 Cj4gICAgICBDaGVja3BvaW50cyBhcmUgc2VyaWFsaXplZCBpbnRlcm5hbGx5IHZpYSBjcF9tdXRl eCAvCj4gZjJmc19sb2NrX2FsbCgpLiBSZWdhcmRsZXNzIG9mIHRoZSBjaGVja3BvaW50IGV4ZWN1 dGlvbiB0aW1pbmcgb3IgYW55Cj4gc3VkZGVuIHBvd2VyLW9mZiAoU1BPKSBiZXR3ZWVuIHRoZSB0 d28gaW9jdGxzLCB0aGUgZmlsZXN5c3RlbSBhbHdheXMKPiByZWNvdmVycyB0byB0aGUgbGFzdCBj b21taXR0ZWQgYXRvbWljIGNoZWNrcG9pbnQgd2l0aG91dCBtZXRhZGF0YQo+IGNvcnJ1cHRpb24u CgpUaGFua3MgZm9yIHRoZSBleHBsYW5hdGlvbi4KClRoYW5rcywKCj4gCj4gVGhhbmtzLAo+IAo+ Pgo+Pj4gKwo+Pj4gKyAgICAgaW5vZGVfdW5sb2NrKGlub2RlKTsKPj4+ICsgICAgIG1udF9kcm9w X3dyaXRlX2ZpbGUoZmlscCk7Cj4+PiArCj4+PiArICAgICByZXR1cm4gZjJmc193cml0ZV9jaGVj a3BvaW50KHNiaSwgJmNwYyk7Cj4+PiArCj4+PiArb3V0X2djX3VubG9jazoKPj4+ICsgICAgIHNw aW5fbG9jaygmc2JpLT5zdGF0X2xvY2spOwo+Pj4gKyAgICAgc2JpLT5hbGlhc19yZXNlcnZlZF9i bG9ja3MgLT0gZWkubGVuOwo+Pj4gKyAgICAgc3Bpbl91bmxvY2soJnNiaS0+c3RhdF9sb2NrKTsK Pj4+ICsKPj4+ICsgICAgIHNwaW5fbG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2NrKTsKPj4+ ICsgICAgIEZERVYoZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgZWkuYmxrKSkuaXNfcmVz ZXJ2aW5nID0gZmFsc2U7Cj4+PiArICAgICBzcGluX3VubG9jaygmRlJFRV9JKHNiaSktPnNlZ21h cF9sb2NrKTsKPj4+ICsgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmds Yyk7Cj4+PiArCj4+PiArb3V0X2lub2RlX3VubG9jazoKPj4+ICsgICAgIGlub2RlX3VubG9jayhp bm9kZSk7Cj4+PiArICAgICBtbnRfZHJvcF93cml0ZV9maWxlKGZpbHApOwo+Pj4gKyAgICAgcmV0 dXJuIGVycjsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCBmMmZzX2lvY19yZWxlYXNlX2Rl dl9hbGlhcyhzdHJ1Y3QgZmlsZSAqZmlscCkKPj4+ICt7Cj4+PiArICAgICBzdHJ1Y3QgaW5vZGUg Kmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKPj4+ICsgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8g KnNiaSA9IEYyRlNfSV9TQihpbm9kZSk7Cj4+PiArICAgICBzdHJ1Y3QgZXh0ZW50X3RyZWUgKmV0 ID0gRjJGU19JKGlub2RlKS0+ZXh0ZW50X3RyZWVbRVhfUkVBRF07Cj4+PiArICAgICBzdHJ1Y3Qg ZXh0ZW50X2luZm8gZWkgPSB7MCwgfTsKPj4+ICsgICAgIHN0cnVjdCBjcF9jb250cm9sIGNwYyA9 IHsgQ1BfU1lOQywgMCwgMCwgMCB9Owo+Pj4gKyAgICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0 IGxjLCBnbGM7Cj4+PiArICAgICBpbnQgZXJyOwo+Pj4gKwo+Pj4gKyAgICAgaWYgKCFjYXBhYmxl KENBUF9TWVNfQURNSU4pKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+Pj4gKwo+ Pj4gKyAgICAgaWYgKHVubGlrZWx5KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxF RCkpKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+ICsKPj4+ICsgICAgIGVy ciA9IG1udF93YW50X3dyaXRlX2ZpbGUoZmlscCk7Cj4+PiArICAgICBpZiAoZXJyKQo+Pj4gKyAg ICAgICAgICAgICByZXR1cm4gZXJyOwo+Pj4gKwo+Pj4gKyAgICAgaW5vZGVfbG9jayhpbm9kZSk7 Cj4+PiArCj4+PiArICAgICBpZiAoIUlTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpIHsKPj4+ICsg ICAgICAgICAgICAgZXJyID0gLUVJTlZBTDsKPj4+ICsgICAgICAgICAgICAgZ290byBvdXRfaW5v ZGVfdW5sb2NrOwo+Pj4gKyAgICAgfQo+Pj4gKwo+Pj4gKyAgICAgaWYgKCFGMkZTX0hBU19CTE9D S1MoaW5vZGUpKSB7Cj4+PiArICAgICAgICAgICAgIGVyciA9IDA7Cj4+PiArICAgICAgICAgICAg IGdvdG8gb3V0X2lub2RlX3VubG9jazsKPj4+ICsgICAgIH0KPj4+ICsKPj4+ICsgICAgIGVyciA9 IGZpbGVtYXBfd3JpdGVfYW5kX3dhaXQoaW5vZGUtPmlfbWFwcGluZyk7Cj4+PiArICAgICBpZiAo ZXJyKQo+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4+PiArCj4+PiAr ICAgICByZWFkX2xvY2soJmV0LT5sb2NrKTsKPj4+ICsgICAgIGVpID0gZXQtPmxhcmdlc3Q7Cj4+ PiArICAgICByZWFkX3VubG9jaygmZXQtPmxvY2spOwo+Pj4gKwo+Pj4gKyAgICAgZjJmc19kb3du X3dyaXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+Pj4gKyAgICAgZjJmc19sb2NrX29w KHNiaSwgJmxjKTsKPj4+ICsKPj4+ICsgICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19zZXQo c2JpLCBTQklfQ1BfRElTQUJMRUQpKSkgewo+Pj4gKyAgICAgICAgICAgICBlcnIgPSAtRUlOVkFM Owo+Pj4gKyAgICAgICAgICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4+PiArICAgICAg ICAgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4+PiArICAg ICAgICAgICAgIGdvdG8gb3V0X2lub2RlX3VubG9jazsKPj4+ICsgICAgIH0KPj4+ICsKPj4+ICsg ICAgIGZpbGVtYXBfaW52YWxpZGF0ZV9sb2NrKGlub2RlLT5pX21hcHBpbmcpOwo+Pj4gKyAgICAg dHJ1bmNhdGVfc2V0c2l6ZShpbm9kZSwgMCk7Cj4+PiArCj4+PiArICAgICBlcnIgPSBmMmZzX3Ry dW5jYXRlX2Jsb2Nrcyhpbm9kZSwgMCwgZmFsc2UpOwo+Pj4gKyAgICAgaWYgKGVycikKPj4+ICsg ICAgICAgICAgICAgaV9zaXplX3dyaXRlKGlub2RlLCAobG9mZl90KWVpLmxlbiA8PCBzYmktPmxv Z19ibG9ja3NpemUpOwo+Pj4gKyAgICAgZmlsZW1hcF9pbnZhbGlkYXRlX3VubG9jayhpbm9kZS0+ aV9tYXBwaW5nKTsKPj4+ICsKPj4+ICsgICAgIGlmIChlcnIpIHsKPj4+ICsgICAgICAgICAgICAg ZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+Pj4gKyAgICAgICAgICAgICBmMmZzX3VwX3dyaXRl X3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9p bm9kZV91bmxvY2s7Cj4+PiArICAgICB9Cj4+PiArCj4+PiArICAgICBmMmZzX3VwZGF0ZV9pbm9k ZV9wYWdlKGlub2RlKTsKPj4+ICsKPj4+ICsgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsK Pj4+ICsgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4+Cj4+ ICAgICAgICAgIGVyciA9IGYyZnNfd3JpdGVfY2hlY2twb2ludChzYmksICZjcGMpOwo+Pgo+PiBU aGFua3MsCj4+Cj4+PiArCj4+PiArICAgICBpbm9kZV91bmxvY2soaW5vZGUpOwo+Pj4gKyAgICAg bW50X2Ryb3Bfd3JpdGVfZmlsZShmaWxwKTsKPj4+ICsKPj4+ICsgICAgIHJldHVybiBmMmZzX3dy aXRlX2NoZWNrcG9pbnQoc2JpLCAmY3BjKTsKPj4+ICsKPj4+ICtvdXRfaW5vZGVfdW5sb2NrOgo+ Pj4gKyAgICAgaW5vZGVfdW5sb2NrKGlub2RlKTsKPj4+ICsgICAgIG1udF9kcm9wX3dyaXRlX2Zp bGUoZmlscCk7Cj4+PiArICAgICByZXR1cm4gZXJyOwo+Pj4gK30KPj4+ICsKPj4+ICAgIHN0YXRp YyBpbnQgZjJmc19pb2NfaW9fcHJpbyhzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBh cmcpCj4+PiAgICB7Cj4+PiAgICAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUo ZmlscCk7Cj4+PiBAQCAtNDA0MSw3ICs0Mjk3LDcgQEAgc3RhdGljIGludCByZXNlcnZlX2NvbXBy ZXNzX2Jsb2NrcyhzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4sIHBnb2ZmX3QgY291bnQsCj4+PiAg ICAgICAgICAgICAgICB9Cj4+Pgo+Pj4gICAgICAgICAgICAgICAgcmV0ID0gaW5jX3ZhbGlkX2Js b2NrX2NvdW50KHNiaSwgZG4tPmlub2RlLAo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZ0b19yZXNlcnZlZCwgZmFsc2UpOwo+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0b19yZXNlcnZlZCwgZmFsc2UsIGZh bHNlKTsKPj4+ICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseShyZXQpKQo+Pj4gICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+Pj4KPj4+IEBAIC00NzQyLDggKzQ5OTgsMTQgQEAg c3RhdGljIGxvbmcgX19mMmZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQg Y21kLCB1bnNpZ25lZCBsb25nIGFyZykKPj4+ICAgICAgICAgICAgICAgIHJldHVybiBmMmZzX2lv Y19jb21wcmVzc19maWxlKGZpbHApOwo+Pj4gICAgICAgIGNhc2UgRjJGU19JT0NfR0VUX0RFVl9B TElBU19GSUxFOgo+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIGYyZnNfaW9jX2dldF9kZXZfYWxp YXNfZmlsZShmaWxwLCBhcmcpOwo+Pj4gKyAgICAgY2FzZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFT X1NUQVRVUzoKPj4+ICsgICAgICAgICAgICAgcmV0dXJuIGYyZnNfaW9jX2dldF9kZXZfYWxpYXNf c3RhdHVzKGZpbHAsIGFyZyk7Cj4+PiAgICAgICAgY2FzZSBGMkZTX0lPQ19JT19QUklPOgo+Pj4g ICAgICAgICAgICAgICAgcmV0dXJuIGYyZnNfaW9jX2lvX3ByaW8oZmlscCwgYXJnKTsKPj4+ICsg ICAgIGNhc2UgRjJGU19JT0NfUkVTRVJWRV9ERVZfQUxJQVM6Cj4+PiArICAgICAgICAgICAgIHJl dHVybiBmMmZzX2lvY19yZXNlcnZlX2Rldl9hbGlhcyhmaWxwKTsKPj4+ICsgICAgIGNhc2UgRjJG U19JT0NfUkVMRUFTRV9ERVZfQUxJQVM6Cj4+PiArICAgICAgICAgICAgIHJldHVybiBmMmZzX2lv Y19yZWxlYXNlX2Rldl9hbGlhcyhmaWxwKTsKPj4+ICAgICAgICBkZWZhdWx0Ogo+Pj4gICAgICAg ICAgICAgICAgcmV0dXJuIC1FTk9UVFk7Cj4+PiAgICAgICAgfQo+Pj4gQEAgLTU1MzAsNyArNTc5 MiwxMCBAQCBsb25nIGYyZnNfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25l ZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKPj4+ICAgICAgICBjYXNlIEYyRlNfSU9DX0RF Q09NUFJFU1NfRklMRToKPj4+ICAgICAgICBjYXNlIEYyRlNfSU9DX0NPTVBSRVNTX0ZJTEU6Cj4+ PiAgICAgICAgY2FzZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFTX0ZJTEU6Cj4+PiArICAgICBjYXNl IEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVTOgo+Pj4gICAgICAgIGNhc2UgRjJGU19JT0Nf SU9fUFJJTzoKPj4+ICsgICAgIGNhc2UgRjJGU19JT0NfUkVTRVJWRV9ERVZfQUxJQVM6Cj4+PiAr ICAgICBjYXNlIEYyRlNfSU9DX1JFTEVBU0VfREVWX0FMSUFTOgo+Pj4gICAgICAgICAgICAgICAg YnJlYWs7Cj4+PiAgICAgICAgZGVmYXVsdDoKPj4+ICAgICAgICAgICAgICAgIHJldHVybiAtRU5P SU9DVExDTUQ7Cj4+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9nYy5jIGIvZnMvZjJmcy9nYy5jCj4+ PiBpbmRleCBmZmFhN2JhNzZhMWIuLjkzYmNiMzVhNWI1ZCAxMDA2NDQKPj4+IC0tLSBhL2ZzL2Yy ZnMvZ2MuYwo+Pj4gKysrIGIvZnMvZjJmcy9nYy5jCj4+PiBAQCAtMjE5NywyOSArMjE5NywzNyBA QCBpbnQgZjJmc19nY19yYW5nZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+PiAgICAgICAg cmV0dXJuIDA7Cj4+PiAgICB9Cj4+Pgo+Pj4gK3ZvaWQgZjJmc19yZXNldF9nY192aWN0aW1fcmVz b3VyY2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBzdGFydCwgdW5zaWduZWQgaW50IGVuZCkKPj4+ICt7Cj4+PiArICAgICBp bnQgaTsKPj4+ICsKPj4+ICsgICAgIG11dGV4X2xvY2soJkRJUlRZX0koc2JpKS0+c2VnbGlzdF9s b2NrKTsKPj4+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfR0NfUE9MSUNZOyBpKyspCj4+PiAr ICAgICAgICAgICAgIGlmIChTSVRfSShzYmkpLT5sYXN0X3ZpY3RpbVtpXSA+PSBzdGFydCAmJgo+ Pj4gKyAgICAgICAgICAgICAgICAgICAgIFNJVF9JKHNiaSktPmxhc3RfdmljdGltW2ldIDw9IGVu ZCkKPj4+ICsgICAgICAgICAgICAgICAgICAgICBTSVRfSShzYmkpLT5sYXN0X3ZpY3RpbVtpXSA9 IDA7Cj4+PiArCj4+PiArICAgICBmb3IgKGkgPSBCR19HQzsgaSA8PSBGR19HQzsgaSsrKQo+Pj4g KyAgICAgICAgICAgICBpZiAoc2JpLT5uZXh0X3ZpY3RpbV9zZWdbaV0gPj0gc3RhcnQgJiYKPj4+ ICsgICAgICAgICAgICAgICAgICAgICBzYmktPm5leHRfdmljdGltX3NlZ1tpXSA8PSBlbmQpCj4+ PiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5uZXh0X3ZpY3RpbV9zZWdbaV0gPSBOVUxMX1NF R05POwo+Pj4gKyAgICAgbXV0ZXhfdW5sb2NrKCZESVJUWV9JKHNiaSktPnNlZ2xpc3RfbG9jayk7 Cj4+PiArfQo+Pj4gKwo+Pj4gICAgc3RhdGljIGludCBmcmVlX3NlZ21lbnRfcmFuZ2Uoc3RydWN0 IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBzZWNzLCBib29sIGRyeV9ydW4pCj4+PiAgICB7Cj4+PiAgICAgICAgdW5zaWdu ZWQgaW50IG5leHRfaW51c2UsIHN0YXJ0LCBlbmQ7Cj4+PiAgICAgICAgc3RydWN0IGNwX2NvbnRy b2wgY3BjID0geyBDUF9SRVNJWkUsIDAsIDAsIDAgfTsKPj4+IC0gICAgIGludCBnY19tb2RlLCBn Y190eXBlOwo+Pj4gICAgICAgIGludCBlcnIgPSAwOwo+Pj4gICAgICAgIGludCB0eXBlOwo+Pj4K Pj4+IC0gICAgIC8qIEZvcmNlIGJsb2NrIGFsbG9jYXRpb24gZm9yIEdDICovCj4+PiAgICAgICAg TUFJTl9TRUNTKHNiaSkgLT0gc2VjczsKPj4+ICAgICAgICBzdGFydCA9IE1BSU5fU0VDUyhzYmkp ICogU0VHU19QRVJfU0VDKHNiaSk7Cj4+PiAgICAgICAgZW5kID0gTUFJTl9TRUdTKHNiaSkgLSAx Owo+Pj4KPj4+IC0gICAgIG11dGV4X2xvY2soJkRJUlRZX0koc2JpKS0+c2VnbGlzdF9sb2NrKTsK Pj4+IC0gICAgIGZvciAoZ2NfbW9kZSA9IDA7IGdjX21vZGUgPCBNQVhfR0NfUE9MSUNZOyBnY19t b2RlKyspCj4+PiAtICAgICAgICAgICAgIGlmIChTSVRfSShzYmkpLT5sYXN0X3ZpY3RpbVtnY19t b2RlXSA+PSBzdGFydCkKPj4+IC0gICAgICAgICAgICAgICAgICAgICBTSVRfSShzYmkpLT5sYXN0 X3ZpY3RpbVtnY19tb2RlXSA9IDA7Cj4+PiAtCj4+PiAtICAgICBmb3IgKGdjX3R5cGUgPSBCR19H QzsgZ2NfdHlwZSA8PSBGR19HQzsgZ2NfdHlwZSsrKQo+Pj4gLSAgICAgICAgICAgICBpZiAoc2Jp LT5uZXh0X3ZpY3RpbV9zZWdbZ2NfdHlwZV0gPj0gc3RhcnQpCj4+PiAtICAgICAgICAgICAgICAg ICAgICAgc2JpLT5uZXh0X3ZpY3RpbV9zZWdbZ2NfdHlwZV0gPSBOVUxMX1NFR05POwo+Pj4gLSAg ICAgbXV0ZXhfdW5sb2NrKCZESVJUWV9JKHNiaSktPnNlZ2xpc3RfbG9jayk7Cj4+PiArICAgICBm MmZzX3Jlc2V0X2djX3ZpY3RpbV9yZXNvdXJjZShzYmksIHN0YXJ0LCBlbmQpOwo+Pj4KPj4+ICAg ICAgICAvKiBNb3ZlIG91dCBjdXJzZWdzIGZyb20gdGhlIHRhcmdldCByYW5nZSAqLwo+Pj4gICAg ICAgIGZvciAodHlwZSA9IENVUlNFR19IT1RfREFUQTsgdHlwZSA8IE5SX0NVUlNFR19QRVJTSVNU X1RZUEU7IHR5cGUrKykgewo+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvbmFtZWkuYyBiL2ZzL2Yy ZnMvbmFtZWkuYwo+Pj4gaW5kZXggY2FjMDNiOGU5MWExLi44YzNiNTc5ODdmNmMgMTAwNjQ0Cj4+ PiAtLS0gYS9mcy9mMmZzL25hbWVpLmMKPj4+ICsrKyBiL2ZzL2YyZnMvbmFtZWkuYwo+Pj4gQEAg LTQyNSw2ICs0MjUsOSBAQCBzdGF0aWMgaW50IGYyZnNfbGluayhzdHJ1Y3QgZGVudHJ5ICpvbGRf ZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmRpciwKPj4+ICAgICAgICBpZiAoIWYyZnNfaXNfY2hlY2tw b2ludF9yZWFkeShzYmkpKQo+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9TUEM7Cj4+Pgo+ Pj4gKyAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpCj4+PiArICAgICAgICAgICAg IHJldHVybiAtRVBFUk07Cj4+PiArCj4+PiAgICAgICAgZXJyID0gZnNjcnlwdF9wcmVwYXJlX2xp bmsob2xkX2RlbnRyeSwgZGlyLCBkZW50cnkpOwo+Pj4gICAgICAgIGlmIChlcnIpCj4+PiAgICAg ICAgICAgICAgICByZXR1cm4gZXJyOwo+Pj4gQEAgLTU2OCw2ICs1NzEsOSBAQCBzdGF0aWMgaW50 IGYyZnNfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCj4+ Pgo+Pj4gICAgICAgIHRyYWNlX2YyZnNfdW5saW5rX2VudGVyKGRpciwgZGVudHJ5KTsKPj4+Cj4+ PiArICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPj4+ICsgICAgICAgICAgICAg cmV0dXJuIC1FUEVSTTsKPj4+ICsKPj4+ICAgICAgICBpZiAodW5saWtlbHkoZjJmc19jcF9lcnJv cihzYmkpKSkgewo+Pj4gICAgICAgICAgICAgICAgZXJyID0gLUVJTzsKPj4+ICAgICAgICAgICAg ICAgIGdvdG8gb3V0Owo+Pj4gQEAgLTk0Niw2ICs5NTIsOSBAQCBzdGF0aWMgaW50IGYyZnNfcmVu YW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsCj4+PiAg ICAgICAgYm9vbCBvbGRfaXNfZGlyID0gU19JU0RJUihvbGRfaW5vZGUtPmlfbW9kZSk7Cj4+PiAg ICAgICAgaW50IGVycjsKPj4+Cj4+PiArICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKG9sZF9p bm9kZSkpCj4+PiArICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4+PiArCj4+PiAgICAgICAg aWYgKHVubGlrZWx5KGYyZnNfY3BfZXJyb3Ioc2JpKSkpCj4+PiAgICAgICAgICAgICAgICByZXR1 cm4gLUVJTzsKPj4+ICAgICAgICBpZiAoIWYyZnNfaXNfY2hlY2twb2ludF9yZWFkeShzYmkpKQo+ Pj4gQEAgLTEwMTYsNiArMTAyNSw4IEBAIHN0YXRpYyBpbnQgZjJmc19yZW5hbWUoc3RydWN0IG1u dF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpciwKPj4+ICAgICAgICB9Cj4+Pgo+ Pj4gICAgICAgIGlmIChuZXdfaW5vZGUpIHsKPj4+ICsgICAgICAgICAgICAgaWYgKElTX0RFVklD RV9BTElBU0lORyhuZXdfaW5vZGUpKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAt RVBFUk07Cj4+Pgo+Pj4gICAgICAgICAgICAgICAgZXJyID0gLUVOT1RFTVBUWTsKPj4+ICAgICAg ICAgICAgICAgIGlmIChvbGRfaXNfZGlyICYmICFmMmZzX2VtcHR5X2RpcihuZXdfaW5vZGUpKQo+ Pj4gQEAgLTExNDMsNiArMTE1NCw5IEBAIHN0YXRpYyBpbnQgZjJmc19jcm9zc19yZW5hbWUoc3Ry dWN0IGlub2RlICpvbGRfZGlyLCBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LAo+Pj4gICAgICAg IGludCBvbGRfbmxpbmsgPSAwLCBuZXdfbmxpbmsgPSAwOwo+Pj4gICAgICAgIGludCBlcnI7Cj4+ Pgo+Pj4gKyAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhvbGRfaW5vZGUpIHx8IElTX0RFVklD RV9BTElBU0lORyhuZXdfaW5vZGUpKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ Pj4gKwo+Pj4gICAgICAgIGlmICh1bmxpa2VseShmMmZzX2NwX2Vycm9yKHNiaSkpKQo+Pj4gICAg ICAgICAgICAgICAgcmV0dXJuIC1FSU87Cj4+PiAgICAgICAgaWYgKCFmMmZzX2lzX2NoZWNrcG9p bnRfcmVhZHkoc2JpKSkKPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL3NlZ21lbnQuYyBiL2ZzL2Yy ZnMvc2VnbWVudC5jCj4+PiBpbmRleCBkNzFkZGIzZWU5MTguLmQ3MGRjNWVmM2RlNCAxMDA2NDQK Pj4+IC0tLSBhL2ZzL2YyZnMvc2VnbWVudC5jCj4+PiArKysgYi9mcy9mMmZzL3NlZ21lbnQuYwo+ Pj4gQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgaW50IF9fcmVwbGFjZV9hdG9taWNfd3JpdGVf YmxvY2soc3RydWN0IGlub2RlICppbm9kZSwgcGdvZmZfdCBpbmRleCwKPj4+ICAgICAgICB9IGVs c2Ugewo+Pj4gICAgICAgICAgICAgICAgYmxrY250X3QgY291bnQgPSAxOwo+Pj4KPj4+IC0gICAg ICAgICAgICAgZXJyID0gaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgaW5vZGUsICZjb3VudCwg dHJ1ZSk7Cj4+PiArICAgICAgICAgICAgIGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmks IGlub2RlLCAmY291bnQsIHRydWUsIGZhbHNlKTsKPj4+ICAgICAgICAgICAgICAgIGlmIChlcnIp IHsKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19wdXRfZG5vZGUoJmRuKTsKPj4+ICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPj4+IEBAIC0yNTAyLDM1ICsyNTAyLDQy IEBAIHN0YXRpYyBpbnQgdXBkYXRlX3NpdF9lbnRyeV9mb3JfYWxsb2Moc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpLCBzdHJ1Y3Qgc2VnX2VudHJ5Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IHNlZ25vLCBibG9ja190IGJsa2FkZHIsIHVuc2lnbmVkIGludCBv ZmZzZXQsIGludCBkZWwpCj4+PiAgICB7Cj4+PiAgICAgICAgYm9vbCBleGlzdDsKPj4+ICsgICAg IGludCBkZWxfY291bnQgPSBkZWw7Cj4+PiArICAgICBpbnQgaTsKPj4+Cj4+PiAtICAgICBleGlz dCA9IGYyZnNfdGVzdF9hbmRfc2V0X2JpdChvZmZzZXQsIHNlLT5jdXJfdmFsaWRfbWFwKTsKPj4+ IC0gICAgIGlmICh1bmxpa2VseShleGlzdCkpIHsKPj4+IC0gICAgICAgICAgICAgZjJmc19lcnIo c2JpLCAiQml0bWFwIHdhcyB3cm9uZ2x5IHNldCwgYmxrOiV1IiwgYmxrYWRkcik7Cj4+PiAtICAg ICAgICAgICAgIGYyZnNfYnVnX29uKHNiaSwgMSk7Cj4+PiAtICAgICAgICAgICAgIHNlLT52YWxp ZF9ibG9ja3MtLTsKPj4+IC0gICAgICAgICAgICAgZGVsID0gMDsKPj4+IC0gICAgIH0KPj4+ICsg ICAgIGYyZnNfYnVnX29uKHNiaSwgR0VUX1NFR05PKHNiaSwgYmxrYWRkcikgIT0gR0VUX1NFR05P KHNiaSwgYmxrYWRkciArIGRlbF9jb3VudCAtIDEpKTsKPj4+Cj4+PiAtICAgICBpZiAoZjJmc19i bG9ja191bml0X2Rpc2NhcmQoc2JpKSAmJgo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICFmMmZz X3Rlc3RfYW5kX3NldF9iaXQob2Zmc2V0LCBzZS0+ZGlzY2FyZF9tYXApKQo+Pj4gLSAgICAgICAg ICAgICBzYmktPmRpc2NhcmRfYmxrcy0tOwo+Pj4gKyAgICAgZm9yIChpID0gMDsgaSA8IGRlbF9j b3VudDsgaSsrKSB7Cj4+PiArICAgICAgICAgICAgIGV4aXN0ID0gZjJmc190ZXN0X2FuZF9zZXRf Yml0KG9mZnNldCArIGksIHNlLT5jdXJfdmFsaWRfbWFwKTsKPj4+ICsgICAgICAgICAgICAgaWYg KHVubGlrZWx5KGV4aXN0KSkgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGYyZnNfZXJyKHNi aSwgIkJpdG1hcCB3YXMgd3JvbmdseSBzZXQsIGJsazoldSIsIGJsa2FkZHIgKyBpKTsKPj4+ICsg ICAgICAgICAgICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksIDEpOwo+Pj4gKyAgICAgICAgICAg ICAgICAgICAgIHNlLT52YWxpZF9ibG9ja3MtLTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBk ZWwgLT0gMTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4+ICsgICAgICAg ICAgICAgfQo+Pj4KPj4+IC0gICAgIC8qCj4+PiAtICAgICAgKiBTU1Igc2hvdWxkIG5ldmVyIHJl dXNlIGJsb2NrIHdoaWNoIGlzIGNoZWNrcG9pbnRlZAo+Pj4gLSAgICAgICogb3IgbmV3bHkgaW52 YWxpZGF0ZWQuCj4+PiAtICAgICAgKi8KPj4+IC0gICAgIGlmICghaXNfc2JpX2ZsYWdfc2V0KHNi aSwgU0JJX0NQX0RJU0FCTEVEKSkgewo+Pj4gLSAgICAgICAgICAgICBpZiAoIWYyZnNfdGVzdF9h bmRfc2V0X2JpdChvZmZzZXQsIHNlLT5ja3B0X3ZhbGlkX21hcCkpIHsKPj4+IC0gICAgICAgICAg ICAgICAgICAgICBzZS0+Y2twdF92YWxpZF9ibG9ja3MrKzsKPj4+IC0gICAgICAgICAgICAgICAg ICAgICBpZiAoX19pc19sYXJnZV9zZWN0aW9uKHNiaSkpCj4+PiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnZXRfc2VjX2VudHJ5KHNiaSwgc2Vnbm8pLT5ja3B0X3ZhbGlkX2Jsb2Nrcysr Owo+Pj4gKyAgICAgICAgICAgICBpZiAoZjJmc19ibG9ja191bml0X2Rpc2NhcmQoc2JpKSAmJgo+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWYyZnNfdGVzdF9hbmRfc2V0X2JpdChv ZmZzZXQgKyBpLCBzZS0+ZGlzY2FyZF9tYXApKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNi aS0+ZGlzY2FyZF9ibGtzLS07Cj4+PiArCj4+PiArICAgICAgICAgICAgIC8qCj4+PiArICAgICAg ICAgICAgICAqIFNTUiBzaG91bGQgbmV2ZXIgcmV1c2UgYmxvY2sgd2hpY2ggaXMgY2hlY2twb2lu dGVkCj4+PiArICAgICAgICAgICAgICAqIG9yIG5ld2x5IGludmFsaWRhdGVkLgo+Pj4gKyAgICAg ICAgICAgICAgKi8KPj4+ICsgICAgICAgICAgICAgaWYgKCFpc19zYmlfZmxhZ19zZXQoc2JpLCBT QklfQ1BfRElTQUJMRUQpKSB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgaWYgKCFmMmZzX3Rl c3RfYW5kX3NldF9iaXQob2Zmc2V0ICsgaSwgc2UtPmNrcHRfdmFsaWRfbWFwKSkgewo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2UtPmNrcHRfdmFsaWRfYmxvY2tzKys7Cj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX19pc19sYXJnZV9zZWN0aW9uKHNiaSkp Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9zZWNfZW50cnko c2JpLCBzZWdubyktPmNrcHRfdmFsaWRfYmxvY2tzKys7Cj4+PiArICAgICAgICAgICAgICAgICAg ICAgfQo+Pj4gICAgICAgICAgICAgICAgfQo+Pj4gLSAgICAgfQo+Pj4KPj4+IC0gICAgIGlmICgh ZjJmc190ZXN0X2JpdChvZmZzZXQsIHNlLT5ja3B0X3ZhbGlkX21hcCkpIHsKPj4+IC0gICAgICAg ICAgICAgc2UtPmNrcHRfdmFsaWRfYmxvY2tzICs9IGRlbDsKPj4+IC0gICAgICAgICAgICAgaWYg KF9faXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQo+Pj4gLSAgICAgICAgICAgICAgICAgICAgIGdldF9z ZWNfZW50cnkoc2JpLCBzZWdubyktPmNrcHRfdmFsaWRfYmxvY2tzICs9IGRlbDsKPj4+ICsgICAg ICAgICAgICAgaWYgKCFmMmZzX3Rlc3RfYml0KG9mZnNldCArIGksIHNlLT5ja3B0X3ZhbGlkX21h cCkpIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBzZS0+Y2twdF92YWxpZF9ibG9ja3MgKz0g MTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoX19pc19sYXJnZV9zZWN0aW9uKHNiaSkp Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfc2VjX2VudHJ5KHNiaSwgc2Vn bm8pLT5ja3B0X3ZhbGlkX2Jsb2NrcyArPSAxOwo+Pj4gKyAgICAgICAgICAgICB9Cj4+PiAgICAg ICAgfQo+Pj4KPj4+ICAgICAgICBpZiAoX19pc19sYXJnZV9zZWN0aW9uKHNiaSkpCj4+PiBAQCAt MjU4NSw5ICsyNTkyLDE0IEBAIHZvaWQgZjJmc19pbnZhbGlkYXRlX2Jsb2NrcyhzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmksIGJsb2NrX3QgYWRkciwKPj4+ICAgICAgICB1bnNpZ25lZCBpbnQgc2Vn bm8gPSBHRVRfU0VHTk8oc2JpLCBhZGRyKTsKPj4+ICAgICAgICBzdHJ1Y3Qgc2l0X2luZm8gKnNp dF9pID0gU0lUX0koc2JpKTsKPj4+ICAgICAgICBibG9ja190IGFkZHJfc3RhcnQgPSBhZGRyLCBh ZGRyX2VuZCA9IGFkZHIgKyBsZW4gLSAxOwo+Pj4gLSAgICAgdW5zaWduZWQgaW50IHNlZ19udW0g PSBHRVRfU0VHTk8oc2JpLCBhZGRyX2VuZCkgLSBzZWdubyArIDE7Cj4+PiArICAgICB1bnNpZ25l ZCBpbnQgc2VnX251bTsKPj4+ICAgICAgICB1bnNpZ25lZCBpbnQgaSA9IDEsIG1heF9ibG9ja3Mg PSBzYmktPmJsb2Nrc19wZXJfc2VnLCBjbnQ7Cj4+Pgo+Pj4gKyAgICAgaWYgKGxlbiA9PSAwKQo+ Pj4gKyAgICAgICAgICAgICByZXR1cm47Cj4+PiArCj4+PiArICAgICBzZWdfbnVtID0gR0VUX1NF R05PKHNiaSwgYWRkcl9lbmQpIC0gc2Vnbm8gKyAxOwo+Pj4gKwo+Pj4gICAgICAgIGYyZnNfYnVn X29uKHNiaSwgYWRkciA9PSBOVUxMX0FERFIpOwo+Pj4gICAgICAgIGlmIChhZGRyID09IE5FV19B RERSIHx8IGFkZHIgPT0gQ09NUFJFU1NfQUREUikKPj4+ICAgICAgICAgICAgICAgIHJldHVybjsK Pj4+IEBAIC0yNjIwLDYgKzI2MzIsNTIgQEAgdm9pZCBmMmZzX2ludmFsaWRhdGVfYmxvY2tzKHN0 cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBhZGRyLAo+Pj4gICAgICAgIHVwX3dyaXRl KCZzaXRfaS0+c2VudHJ5X2xvY2spOwo+Pj4gICAgfQo+Pj4KPj4+ICt2b2lkIGYyZnNfcmVzZXJ2 ZV9kZXZpY2VfYWxpYXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGFkZHIsCj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuKQo+Pj4gK3sK Pj4+ICsgICAgIHVuc2lnbmVkIGludCBzZWdubyA9IEdFVF9TRUdOTyhzYmksIGFkZHIpOwo+Pj4g KyAgICAgc3RydWN0IHNpdF9pbmZvICpzaXRfaSA9IFNJVF9JKHNiaSk7Cj4+PiArICAgICBibG9j a190IGFkZHJfc3RhcnQgPSBhZGRyLCBhZGRyX2VuZCA9IGFkZHIgKyBsZW4gLSAxOwo+Pj4gKyAg ICAgdW5zaWduZWQgaW50IHNlZ19udW07Cj4+PiArICAgICB1bnNpZ25lZCBpbnQgaSA9IDEsIG1h eF9ibG9ja3MgPSBzYmktPmJsb2Nrc19wZXJfc2VnLCBjbnQ7Cj4+PiArCj4+PiArICAgICBpZiAo bGVuID09IDApCj4+PiArICAgICAgICAgICAgIHJldHVybjsKPj4+ICsKPj4+ICsgICAgIHNlZ19u dW0gPSBHRVRfU0VHTk8oc2JpLCBhZGRyX2VuZCkgLSBzZWdubyArIDE7Cj4+PiArCj4+PiArICAg ICBkb3duX3dyaXRlKCZzaXRfaS0+c2VudHJ5X2xvY2spOwo+Pj4gKwo+Pj4gKyAgICAgaWYgKHNl Z19udW0gPT0gMSkKPj4+ICsgICAgICAgICAgICAgY250ID0gbGVuOwo+Pj4gKyAgICAgZWxzZQo+ Pj4gKyAgICAgICAgICAgICBjbnQgPSBtYXhfYmxvY2tzIC0gR0VUX0JMS09GRl9GUk9NX1NFRzAo c2JpLCBhZGRyKTsKPj4+ICsKPj4+ICsgICAgIGRvIHsKPj4+ICsgICAgICAgICAgICAgdXBkYXRl X3NlZ21lbnRfbXRpbWUoc2JpLCBhZGRyX3N0YXJ0LCAwKTsKPj4+ICsgICAgICAgICAgICAgdXBk YXRlX3NpdF9lbnRyeShzYmksIGFkZHJfc3RhcnQsIGNudCk7Cj4+PiArICAgICAgICAgICAgIF9f c2V0X3Rlc3RfYW5kX2ludXNlKHNiaSwgc2Vnbm8pOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAv KiBSZW1vdmUgdGhlIHNlZ21lbnQgZnJvbSBQUkUgKHByZWZyZWUpIHRvIHByZXZlbnQgY2hlY2tw b2ludCBmcm9tIGZyZWVpbmcgaXQhICovCj4+PiArICAgICAgICAgICAgIG11dGV4X2xvY2soJkRJ UlRZX0koc2JpKS0+c2VnbGlzdF9sb2NrKTsKPj4+ICsgICAgICAgICAgICAgaWYgKHRlc3RfYW5k X2NsZWFyX2JpdChzZWdubywgRElSVFlfSShzYmkpLT5kaXJ0eV9zZWdtYXBbUFJFXSkpCj4+PiAr ICAgICAgICAgICAgICAgICAgICAgRElSVFlfSShzYmkpLT5ucl9kaXJ0eVtQUkVdLS07Cj4+PiAr ICAgICAgICAgICAgIG11dGV4X3VubG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xvY2spOwo+ Pj4gKwo+Pj4gKyAgICAgICAgICAgICAvKiBhZGQgaXQgaW50byBkaXJ0eSBzZWdsaXN0ICovCj4+ PiArICAgICAgICAgICAgIGxvY2F0ZV9kaXJ0eV9zZWdtZW50KHNiaSwgc2Vnbm8pOwo+Pj4gKwo+ Pj4gKyAgICAgICAgICAgICAvKiB1cGRhdGUgQGFkZHJfc3RhcnQgYW5kIEBjbnQgYW5kIEBzZWdu byAqLwo+Pj4gKyAgICAgICAgICAgICBhZGRyX3N0YXJ0ID0gU1RBUlRfQkxPQ0soc2JpLCArK3Nl Z25vKTsKPj4+ICsgICAgICAgICAgICAgaWYgKCsraSA9PSBzZWdfbnVtKQo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgIGNudCA9IEdFVF9CTEtPRkZfRlJPTV9TRUcwKHNiaSwgYWRkcl9lbmQpICsg MTsKPj4+ICsgICAgICAgICAgICAgZWxzZQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGNudCA9 IG1heF9ibG9ja3M7Cj4+PiArICAgICB9IHdoaWxlIChpIDw9IHNlZ19udW0pOwo+Pj4gKwo+Pj4g KyAgICAgdXBfd3JpdGUoJnNpdF9pLT5zZW50cnlfbG9jayk7Cj4+PiArfQo+Pj4gKwo+Pj4gICAg Ym9vbCBmMmZzX2lzX2NoZWNrcG9pbnRlZF9kYXRhKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwg YmxvY2tfdCBibGthZGRyKQo+Pj4gICAgewo+Pj4gICAgICAgIHN0cnVjdCBzaXRfaW5mbyAqc2l0 X2kgPSBTSVRfSShzYmkpOwo+Pj4gQEAgLTI3NTgsOCArMjgxNiwxMyBAQCBzdGF0aWMgaW50IGlz X25leHRfc2VnbWVudF9mcmVlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4+ICAgICAgICB1 bnNpZ25lZCBpbnQgc2Vnbm8gPSBjdXJzZWctPnNlZ25vICsgMTsKPj4+ICAgICAgICBzdHJ1Y3Qg ZnJlZV9zZWdtYXBfaW5mbyAqZnJlZV9pID0gRlJFRV9JKHNiaSk7Cj4+Pgo+Pj4gLSAgICAgaWYg KHNlZ25vIDwgTUFJTl9TRUdTKHNiaSkgJiYgc2Vnbm8gJSBTRUdTX1BFUl9TRUMoc2JpKSkKPj4+ ICsgICAgIGlmIChzZWdubyA8IE1BSU5fU0VHUyhzYmkpICYmIHNlZ25vICUgU0VHU19QRVJfU0VD KHNiaSkpIHsKPj4+ICsgICAgICAgICAgICAgaW50IGRldmkgPSBmMmZzX3RhcmdldF9kZXZpY2Vf aW5kZXgoc2JpLCBTVEFSVF9CTE9DSyhzYmksIHNlZ25vKSk7Cj4+PiArCj4+PiArICAgICAgICAg ICAgIGlmIChmMmZzX2Rldl9pc19yZXNlcnZpbmcoc2JpLCBkZXZpKSkKPj4+ICsgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gMDsKPj4+ICAgICAgICAgICAgICAgIHJldHVybiAhdGVzdF9iaXQo c2Vnbm8sIGZyZWVfaS0+ZnJlZV9zZWdtYXApOwo+Pj4gKyAgICAgfQo+Pj4gICAgICAgIHJldHVy biAwOwo+Pj4gICAgfQo+Pj4KPj4+IEBAIC0yNzc4LDcgKzI4NDEsOCBAQCBzdGF0aWMgaW50IGdl dF9uZXdfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+PiAgICAgICAgdW5zaWdu ZWQgaW50IGFsbG9jX3BvbGljeSA9IHNiaS0+YWxsb2NhdGVfc2VjdGlvbl9wb2xpY3k7Cj4+PiAg ICAgICAgdW5zaWduZWQgaW50IGFsbG9jX2hpbnQgPSBzYmktPmFsbG9jYXRlX3NlY3Rpb25faGlu dDsKPj4+ICAgICAgICBib29sIGluaXQgPSB0cnVlOwo+Pj4gLSAgICAgaW50IGk7Cj4+PiArICAg ICBib29sIGxvb3BlZCA9IGZhbHNlOwo+Pj4gKyAgICAgaW50IGksIGRldmk7Cj4+PiAgICAgICAg aW50IHJldCA9IDA7Cj4+Pgo+Pj4gICAgICAgIHNwaW5fbG9jaygmZnJlZV9pLT5zZWdtYXBfbG9j ayk7Cj4+PiBAQCAtMjc5MSw4ICsyODU1LDEzIEBAIHN0YXRpYyBpbnQgZ2V0X25ld19zZWdtZW50 KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4+ICAgICAgICBpZiAoIW5ld19zZWMgJiYgKCgq bmV3c2VnICsgMSkgJSBTRUdTX1BFUl9TRUMoc2JpKSkpIHsKPj4+ICAgICAgICAgICAgICAgIHNl Z25vID0gZmluZF9uZXh0X3plcm9fYml0KGZyZWVfaS0+ZnJlZV9zZWdtYXAsCj4+PiAgICAgICAg ICAgICAgICAgICAgICAgIEdFVF9TRUdfRlJPTV9TRUMoc2JpLCBoaW50ICsgMSksICpuZXdzZWcg KyAxKTsKPj4+IC0gICAgICAgICAgICAgaWYgKHNlZ25vIDwgR0VUX1NFR19GUk9NX1NFQyhzYmks IGhpbnQgKyAxKSkKPj4+ICsgICAgICAgICAgICAgaWYgKHNlZ25vIDwgR0VUX1NFR19GUk9NX1NF QyhzYmksIGhpbnQgKyAxKSkgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGRldmkgPSBmMmZz X3RhcmdldF9kZXZpY2VfaW5kZXgoc2JpLCBTVEFSVF9CTE9DSyhzYmksIHNlZ25vKSk7Cj4+PiAr Cj4+PiArICAgICAgICAgICAgICAgICAgICAgaWYgKGYyZnNfZGV2X2lzX2FsbG9jX2Jsb2NrZWQo c2JpLCBkZXZpLCBwaW5uaW5nKSkKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdv dG8gZmluZF9vdGhlcl96b25lOwo+Pj4gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGdvdF9p dDsKPj4+ICsgICAgICAgICAgICAgfQo+Pj4gICAgICAgIH0KPj4+Cj4+PiAgICAjaWZkZWYgQ09O RklHX0JMS19ERVZfWk9ORUQKPj4+IEBAIC0yODI4LDMzICsyODk3LDQyIEBAIHN0YXRpYyBpbnQg Z2V0X25ld19zZWdtZW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4+ICAgIGZpbmRfb3Ro ZXJfem9uZToKPj4+ICAgICAgICBzZWNubyA9IGZpbmRfbmV4dF96ZXJvX2JpdChmcmVlX2ktPmZy ZWVfc2VjbWFwLCBNQUlOX1NFQ1Moc2JpKSwgaGludCk7Cj4+Pgo+Pj4gLSNpZmRlZiBDT05GSUdf QkxLX0RFVl9aT05FRAo+Pj4gLSAgICAgaWYgKHNlY25vID49IE1BSU5fU0VDUyhzYmkpICYmIGYy ZnNfc2JfaGFzX2Jsa3pvbmVkKHNiaSkpIHsKPj4+IC0gICAgICAgICAgICAgLyogV3JpdGUgb25s eSB0byBzZXF1ZW50aWFsIHpvbmVzICovCj4+PiAtICAgICAgICAgICAgIGlmIChzYmktPmJsa3pv bmVfYWxsb2NfcG9saWN5ID09IEJMS1pPTkVfQUxMT0NfT05MWV9TRVEpIHsKPj4+IC0gICAgICAg ICAgICAgICAgICAgICBoaW50ID0gR0VUX1NFQ19GUk9NX1NFRyhzYmksIHNiaS0+Zmlyc3Rfc2Vx X3pvbmVfc2Vnbm8pOwo+Pj4gLSAgICAgICAgICAgICAgICAgICAgIHNlY25vID0gZmluZF9uZXh0 X3plcm9fYml0KGZyZWVfaS0+ZnJlZV9zZWNtYXAsIE1BSU5fU0VDUyhzYmkpLCBoaW50KTsKPj4+ IC0gICAgICAgICAgICAgfSBlbHNlCj4+PiAtICAgICAgICAgICAgICAgICAgICAgc2Vjbm8gPSBm aW5kX2ZpcnN0X3plcm9fYml0KGZyZWVfaS0+ZnJlZV9zZWNtYXAsCj4+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BSU5fU0VD UyhzYmkpKTsKPj4+IC0gICAgICAgICAgICAgaWYgKHNlY25vID49IE1BSU5fU0VDUyhzYmkpKSB7 Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgcmV0ID0gLUVOT1NQQzsKPj4+IC0gICAgICAgICAg ICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksIDEpOwo+Pj4gLSAgICAgICAgICAgICAgICAgICAg IGdvdG8gb3V0X3VubG9jazsKPj4+IC0gICAgICAgICAgICAgfQo+Pj4gLSAgICAgfQo+Pj4gLSNl bmRpZgo+Pj4gLQo+Pj4gICAgICAgIGlmIChzZWNubyA+PSBNQUlOX1NFQ1Moc2JpKSkgewo+Pj4g LSAgICAgICAgICAgICBzZWNubyA9IGZpbmRfZmlyc3RfemVyb19iaXQoZnJlZV9pLT5mcmVlX3Nl Y21hcCwKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1BSU5fU0VDUyhzYmkpKTsKPj4+IC0gICAgICAgICAgICAgaWYgKHNlY25vID49IE1B SU5fU0VDUyhzYmkpKSB7Cj4+PiArICAgICAgICAgICAgIGlmIChsb29wZWQpIHsKPj4+ICAgICAg ICAgICAgICAgICAgICAgICAgcmV0ID0gLUVOT1NQQzsKPj4+ICAgICAgICAgICAgICAgICAgICAg ICAgZjJmc19idWdfb24oc2JpLCAhcGlubmluZyk7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAg IGdvdG8gb3V0X3VubG9jazsKPj4+ICAgICAgICAgICAgICAgIH0KPj4+ICsgICAgICAgICAgICAg aGludCA9IDA7Cj4+PiArI2lmZGVmIENPTkZJR19CTEtfREVWX1pPTkVECj4+PiArICAgICAgICAg ICAgIC8qIFdyaXRlIG9ubHkgdG8gc2VxdWVudGlhbCB6b25lcyAqLwo+Pj4gKyAgICAgICAgICAg ICBpZiAoZjJmc19zYl9oYXNfYmxrem9uZWQoc2JpKSAmJgo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgIHNiaS0+Ymxrem9uZV9hbGxvY19wb2xpY3kgPT0gQkxLWk9ORV9BTExPQ19PTkxZX1NFUSkK Pj4+ICsgICAgICAgICAgICAgICAgICAgICBoaW50ID0gR0VUX1NFQ19GUk9NX1NFRyhzYmksIHNi aS0+Zmlyc3Rfc2VxX3pvbmVfc2Vnbm8pOwo+Pj4gKyNlbmRpZgo+Pj4gKyAgICAgICAgICAgICBs b29wZWQgPSB0cnVlOwo+Pj4gKyAgICAgICAgICAgICBnb3RvIGZpbmRfb3RoZXJfem9uZTsKPj4+ ICAgICAgICB9Cj4+PiArCj4+PiAgICAgICAgc2Vnbm8gPSBHRVRfU0VHX0ZST01fU0VDKHNiaSwg c2Vjbm8pOwo+Pj4gKwo+Pj4gKyAgICAgZGV2aSA9IGYyZnNfdGFyZ2V0X2RldmljZV9pbmRleChz YmksIFNUQVJUX0JMT0NLKHNiaSwgc2Vnbm8pKTsKPj4+ICsKPj4+ICsgICAgIGlmIChmMmZzX2Rl dl9pc19hbGxvY19ibG9ja2VkKHNiaSwgZGV2aSwgcGlubmluZykpIHsKPj4+ICsgICAgICAgICAg ICAgd2hpbGUgKGRldmkgPCBzYmktPnNfbmRldnMgJiYKPj4+ICsgICAgICAgICAgICAgICAgICAg ICBmMmZzX2Rldl9pc19hbGxvY19ibG9ja2VkKHNiaSwgZGV2aSwgcGlubmluZykpIHsKPj4+ICsg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZW5kX3NlZ25vID0gR0VUX1NFR05PKHNi aSwgRkRFVihkZXZpKS5lbmRfYmxrKTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBo aW50ID0gR0VUX1NFQ19GUk9NX1NFRyhzYmksIGVuZF9zZWdubykgKyAxOwo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgIGRldmkrKzsKPj4+ICsgICAgICAgICAgICAgfQo+Pj4gKyAgICAgICAgICAg ICBnb3RvIGZpbmRfb3RoZXJfem9uZTsKPj4+ICsgICAgIH0KPj4+ICsKPj4+ICsgICAgIGlmIChz ZWNfdXNhZ2VfY2hlY2soc2JpLCBzZWNubykpIHsKPj4+ICsgICAgICAgICAgICAgaGludCA9IHNl Y25vICsgMTsKPj4+ICsgICAgICAgICAgICAgZ290byBmaW5kX290aGVyX3pvbmU7Cj4+PiArICAg ICB9Cj4+PiAgICAgICAgem9uZW5vID0gR0VUX1pPTkVfRlJPTV9TRUMoc2JpLCBzZWNubyk7Cj4+ Pgo+Pj4gICAgICAgIC8qIGdpdmUgdXAgb24gZmluZGluZyBhbm90aGVyIHpvbmUgKi8KPj4+IGRp ZmYgLS1naXQgYS9mcy9mMmZzL3NlZ21lbnQuaCBiL2ZzL2YyZnMvc2VnbWVudC5oCj4+PiBpbmRl eCBiMGMwNmIzNTgwYjQuLjEwNzUwOGFlN2ViMyAxMDA2NDQKPj4+IC0tLSBhL2ZzL2YyZnMvc2Vn bWVudC5oCj4+PiArKysgYi9mcy9mMmZzL3NlZ21lbnQuaAo+Pj4gQEAgLTk1NCwxMCArOTU0LDMy IEBAIHN0YXRpYyBpbmxpbmUgYmxvY2tfdCBzdW1fYmxrX2FkZHIoc3RydWN0IGYyZnNfc2JfaW5m byAqc2JpLCBpbnQgYmFzZSwgaW50IHR5cGUpCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLSAoYmFzZSArIDEpICsgdHlwZTsKPj4+ICAgIH0KPj4+Cj4+PiArc3RhdGljIGlubGlu ZSBib29sIGYyZnNfZGV2X2lzX3Jlc2VydmluZyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGlu dCBkZXZpKQo+Pj4gK3sKPj4+ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNi aSkpCj4+PiArICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPj4+ICsgICAgIHJldHVybiBGREVW KGRldmkpLmlzX3Jlc2VydmluZzsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGlubGluZSBib29s IGYyZnNfZGV2X2lzX2FsbG9jX2Jsb2NrZWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV2aSwgYm9vbCBwaW5u aW5nKQo+Pj4gK3sKPj4+ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkp Cj4+PiArICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPj4+ICsgICAgIHJldHVybiAocGlubmlu ZyAmJiBGREVWKGRldmkpLmhhc19hbGlhcykgfHwgRkRFVihkZXZpKS5pc19yZXNlcnZpbmc7Cj4+ PiArfQo+Pj4gKwo+Pj4gICAgc3RhdGljIGlubGluZSBib29sIHNlY191c2FnZV9jaGVjayhzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksIHVuc2lnbmVkIGludCBzZWNubykKPj4+ICAgIHsKPj4+ICAg ICAgICBpZiAoaXNfY3Vyc2VjKHNiaSwgc2Vjbm8pIHx8IChzYmktPmN1cl92aWN0aW1fc2VjID09 IHNlY25vKSkKPj4+ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+Pj4gKyAgICAgaWYgKGYy ZnNfc2JfaGFzX2RldmljZV9hbGlhcyhzYmkpKSB7Cj4+PiArICAgICAgICAgICAgIGJsb2NrX3Qg c3RhcnRfYmxrID0gU1RBUlRfQkxPQ0soc2JpLCBHRVRfU0VHX0ZST01fU0VDKHNiaSwgc2Vjbm8p KTsKPj4+ICsgICAgICAgICAgICAgaW50IGRldmkgPSBmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgo c2JpLCBzdGFydF9ibGspOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICBpZiAoZjJmc19kZXZfaXNf cmVzZXJ2aW5nKHNiaSwgZGV2aSkpCj4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7Cj4+PiArICAgICB9Cj4+PiAgICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4gICAgfQo+Pj4KPj4+ IGRpZmYgLS1naXQgYS9mcy9mMmZzL3N1cGVyLmMgYi9mcy9mMmZzL3N1cGVyLmMKPj4+IGluZGV4 IGM0NDhkOTkyZmYyYS4uZDVkYzgzZTYxM2UyIDEwMDY0NAo+Pj4gLS0tIGEvZnMvZjJmcy9zdXBl ci5jCj4+PiArKysgYi9mcy9mMmZzL3N1cGVyLmMKPj4+IEBAIC01MDAxLDYgKzUwMDEsMzkgQEAg c3RhdGljIHZvaWQgZjJmc190dW5pbmdfcGFyYW1ldGVycyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmkpCj4+PiAgICAgICAgc2JpLT5yZWFkZGlyX3JhID0gdHJ1ZTsKPj4+ICAgIH0KPj4+Cj4+PiAr c3RhdGljIHZvaWQgZjJmc19yZXN0b3JlX2RldmljZV9hbGlhcyhzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmkpCj4+PiArewo+Pj4gKyAgICAgc3RydWN0IGlub2RlICpyb290ID0gZF9pbm9kZShzYmkt PnNiLT5zX3Jvb3QpOwo+Pj4gKyAgICAgc3RydWN0IGYyZnNfZGlyX2VudHJ5ICpkZTsKPj4+ICsg ICAgIHN0cnVjdCBmb2xpbyAqZm9saW87Cj4+PiArICAgICBpbnQgaTsKPj4+ICsKPj4+ICsgICAg IGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4+PiArICAgICAgICAgICAgIHJl dHVybjsKPj4+ICsKPj4+ICsgICAgIGZvciAoaSA9IDE7IGkgPCBzYmktPnNfbmRldnM7IGkrKykg ewo+Pj4gKyAgICAgICAgICAgICBjaGFyICpuYW1lID0gc3RycmNocihGREVWKGkpLnBhdGgsICcv Jyk7Cj4+PiArICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGU7Cj4+PiArICAgICAgICAg ICAgIHN0cnVjdCBxc3RyIHFzdHI7Cj4+PiArCj4+PiArICAgICAgICAgICAgIG5hbWUgPSBuYW1l ID8gbmFtZSArIDEgOiBGREVWKGkpLnBhdGg7Cj4+PiArICAgICAgICAgICAgIHFzdHIubmFtZSA9 IG5hbWU7Cj4+PiArICAgICAgICAgICAgIHFzdHIubGVuID0gc3RybGVuKG5hbWUpOwo+Pj4gKwo+ Pj4gKyAgICAgICAgICAgICBkZSA9IGYyZnNfZmluZF9lbnRyeShyb290LCAmcXN0ciwgJmZvbGlv KTsKPj4+ICsgICAgICAgICAgICAgaWYgKCFkZSkKPj4+ICsgICAgICAgICAgICAgICAgICAgICBj b250aW51ZTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgaW5vZGUgPSBmMmZzX2lnZXQoc2JpLT5z YiwgbGUzMl90b19jcHUoZGUtPmlubykpOwo+Pj4gKyAgICAgICAgICAgICBpZiAoIUlTX0VSUihp bm9kZSkpIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5H KGlub2RlKSkKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZERVYoaSkuaGFzX2Fs aWFzID0gdHJ1ZTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBpcHV0KGlub2RlKTsKPj4+ICsg ICAgICAgICAgICAgfQo+Pj4gKyAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChmb2xpbywgMCk7 Cj4+PiArICAgICB9Cj4+PiArfQo+Pj4gKwo+Pj4gICAgc3RhdGljIGludCBmMmZzX2ZpbGxfc3Vw ZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQo+Pj4gICAg ewo+Pj4gICAgICAgIHN0cnVjdCBmMmZzX2ZzX2NvbnRleHQgKmN0eCA9IGZjLT5mc19wcml2YXRl Owo+Pj4gQEAgLTUyMDksNiArNTI0Miw3IEBAIHN0YXRpYyBpbnQgZjJmc19maWxsX3N1cGVyKHN0 cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKPj4+ICAgICAgICBz YmktPmxhc3RfdmFsaWRfYmxvY2tfY291bnQgPSBzYmktPnRvdGFsX3ZhbGlkX2Jsb2NrX2NvdW50 Owo+Pj4gICAgICAgIHNiaS0+cmVzZXJ2ZWRfYmxvY2tzID0gMDsKPj4+ICAgICAgICBzYmktPmN1 cnJlbnRfcmVzZXJ2ZWRfYmxvY2tzID0gMDsKPj4+ICsgICAgIHNiaS0+YWxpYXNfcmVzZXJ2ZWRf YmxvY2tzID0gMDsKPj4+ICAgICAgICBsaW1pdF9yZXNlcnZlX3Jvb3Qoc2JpKTsKPj4+ICAgICAg ICBhZGp1c3RfdW51c2FibGVfY2FwX3BlcmMoc2JpKTsKPj4+Cj4+PiBAQCAtNTQzNiw2ICs1NDcw LDggQEAgc3RhdGljIGludCBmMmZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwg c3RydWN0IGZzX2NvbnRleHQgKmZjKQo+Pj4gICAgICAgIGYyZnNfdXBkYXRlX3RpbWUoc2JpLCBS RVFfVElNRSk7Cj4+PiAgICAgICAgY2xlYXJfc2JpX2ZsYWcoc2JpLCBTQklfQ1BfRElTQUJMRURf UVVJQ0spOwo+Pj4KPj4+ICsgICAgIGYyZnNfcmVzdG9yZV9kZXZpY2VfYWxpYXMoc2JpKTsKPj4+ ICsKPj4+ICAgICAgICBzYmktPnVtb3VudF9sb2NrX2hvbGRlciA9IE5VTEw7Cj4+PiAgICAgICAg cmV0dXJuIDA7Cj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9mMmZzLmgg Yi9pbmNsdWRlL3VhcGkvbGludXgvZjJmcy5oCj4+PiBpbmRleCA3OTVlMjYyNTgzNTUuLjQ0MDlh ZGEyZmVjYiAxMDA2NDQKPj4+IC0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9mMmZzLmgKPj4+ICsr KyBiL2luY2x1ZGUvdWFwaS9saW51eC9mMmZzLmgKPj4+IEBAIC00NSw2ICs0NSw5IEBACj4+PiAg ICAjZGVmaW5lIEYyRlNfSU9DX1NUQVJUX0FUT01JQ19SRVBMQUNFICAgICAgIF9JTyhGMkZTX0lP Q1RMX01BR0lDLCAyNSkKPj4+ICAgICNkZWZpbmUgRjJGU19JT0NfR0VUX0RFVl9BTElBU19GSUxF IF9JT1IoRjJGU19JT0NUTF9NQUdJQywgMjYsIF9fdTMyKQo+Pj4gICAgI2RlZmluZSBGMkZTX0lP Q19JT19QUklPICAgICAgICAgICAgX0lPVyhGMkZTX0lPQ1RMX01BR0lDLCAyNywgX191MzIpCj4+ PiArI2RlZmluZSBGMkZTX0lPQ19SRVNFUlZFX0RFVl9BTElBUyAgIF9JTyhGMkZTX0lPQ1RMX01B R0lDLCAyOCkKPj4+ICsjZGVmaW5lIEYyRlNfSU9DX1JFTEVBU0VfREVWX0FMSUFTICAgX0lPKEYy RlNfSU9DVExfTUFHSUMsIDI5KQo+Pj4gKyNkZWZpbmUgRjJGU19JT0NfR0VUX0RFVl9BTElBU19T VEFUVVMgICAgICAgIF9JT1IoRjJGU19JT0NUTF9NQUdJQywgMzAsIF9fdTMyKQo+Pj4KPj4+ICAg IC8qCj4+PiAgICAgKiBzaG91bGQgYmUgc2FtZSBhcyBYRlNfSU9DX0dPSU5HRE9XTi4KPj4+IEBA IC03MCw2ICs3MywxMCBAQCBlbnVtIHsKPj4+ICAgICAgICBGMkZTX0lPUFJJT19NQVgsCj4+PiAg ICB9Owo+Pj4KPj4+ICsvKiBmb3IgRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVMgKi8KPj4+ ICsjZGVmaW5lIEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRUxFQVNFRCAgICAgICAwCj4+PiArI2Rl ZmluZSBGMkZTX0RFVl9BTElBU19TVEFUVVNfUkVTRVJWRUQgICAgICAgMQo+Pj4gKwo+Pj4gICAg c3RydWN0IGYyZnNfZ2NfcmFuZ2Ugewo+Pj4gICAgICAgIF9fdTMyIHN5bmM7Cj4+PiAgICAgICAg X191NjQgc3RhcnQ7Cj4+CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkxpbnV4LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxA bGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3Rz L2xpc3RpbmZvL2xpbnV4LWYyZnMtZGV2ZWwK