Re: [f2fs-dev] [PATCH v6] f2fs: support dynamic reserve/release for device aliasing
Chao Yu via Linux-f2fs-devel <[email protected]> Wed, 5 Aug 2026 09:19:46 +0800
| Newsgroups | net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
T24gOC81LzI2IDAxOjA4LCBEYWVobyBKZW9uZyB3cm90ZToKPiBPbiBNb24sIEF1ZyAzLCAyMDI2 IGF0IDU6NDLigK9QTSBDaGFvIFl1IDxjaGFvQGtlcm5lbC5vcmc+IHdyb3RlOgo+Pgo+PiBPbiA4 LzQvMjYgMDA6MTgsIERhZWhvIEplb25nIHdyb3RlOgo+Pj4gT24gU3VuLCBBdWcgMiwgMjAyNiBh dCA3OjAw4oCvUE0gQ2hhbyBZdSA8Y2hhb0BrZXJuZWwub3JnPiB3cm90ZToKPj4+Pgo+Pj4+IE9u IDcvMzAvMjYgMjM6NDYsIERhZWhvIEplb25nIHdyb3RlOgo+Pj4+PiBGcm9tOiBEYWVobyBKZW9u ZyA8ZGFlaG9qZW9uZ0Bnb29nbGUuY29tPgo+Pj4+Pgo+Pj4+PiBUaGlzIHBhdGNoIGFkZHMgYSBk eW5hbWljIG1hbmFnZW1lbnQgZmVhdHVyZSB0byB0aGUgZXhpc3RpbmcgZGV2aWNlCj4+Pj4+IGFs aWFzaW5nIGZ1bmN0aW9uYWxpdHkuIEl0IGFsbG93cyB1c2VycyB0byBkeW5hbWljYWxseSByZXNl cnZlIG9yCj4+Pj4+IHJlbGVhc2Ugc3BlY2lmaWMgZGV2aWNlcyBmcm9tIHRoZSBmaWxlc3lzdGVt J3MgZnJlZSBwb29sIGF0IHJ1bnRpbWUKPj4+Pj4gdGhyb3VnaCBuZXcgaW9jdGxzLgo+Pj4+Pgo+ Pj4+PiBUbyBzdXBwb3J0IHRoaXMsIHRocmVlIG5ldyBpb2N0bHMgYXJlIGludHJvZHVjZWQ6Cj4+ Pj4+IC0gRjJGU19JT0NfUkVTRVJWRV9ERVZfQUxJQVM6IFRoaXMgcmVjbGFpbXMgdGhlIHNwYWNl IG9jY3VwaWVkIGJ5IGEKPj4+Pj4gICAgIGRldmljZSBhbGlhc2luZyBmaWxlLiBJdCBmaXJzdCBw ZXJmb3JtcyBhIGNhcGFjaXR5IGNoZWNrLCByZXNldHMgR0MKPj4+Pj4gICAgIHZpY3RpbSBpbmZv cm1hdGlvbiBmb3IgdGhlIHRhcmdldCByYW5nZSwgbWFya3MgdGhlIHNlZ21lbnRzIGFzIGluLXVz ZQo+Pj4+PiAgICAgdG8gcHJldmVudCBuZXcgYWxsb2NhdGlvbnMsIGFuZCB0aGVuIHRyaWdnZXJz IEdDIHRvIG1pZ3JhdGUgZXhpc3RpbmcKPj4+Pj4gICAgIHZhbGlkIGRhdGEgb3V0IG9mIHRoZSBy YW5nZS4gRmluYWxseSwgaXQgcmVzZXJ2ZXMgdGhlc2UgYmxvY2tzIGluIHRoZQo+Pj4+PiAgICAg U0lUIHRvIGVmZmVjdGl2ZWx5IGV4Y2x1ZGUgdGhlIGRldmljZSBmcm9tIHRoZSB1c2FibGUgY2Fw YWNpdHkuCj4+Pj4+Cj4+Pj4+IC0gRjJGU19JT0NfUkVMRUFTRV9ERVZfQUxJQVM6IFRoaXMgcmVs ZWFzZXMgdGhlIHJlc2VydmVkIHNwYWNlIG9mIGEKPj4+Pj4gICAgIHByZXZpb3VzbHkgcmVzZXJ2 ZWQgZGV2aWNlIGFsaWFzaW5nIGZpbGUuIEl0IHRydW5jYXRlcyB0aGUgYmxvY2tzCj4+Pj4+ICAg ICBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUsIHdoaWNoIG1ha2VzIHRoZW0gYXZhaWxhYmxlIGZv ciBnZW5lcmFsCj4+Pj4+ICAgICBmaWxlc3lzdGVtIGFsbG9jYXRpb24gYWdhaW4uCj4+Pj4+Cj4+ Pj4+IC0gRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVM6IFRoaXMgcmV0cmlldmVzIHRoZSBj dXJyZW50IGFsaWFzaW5nCj4+Pj4+ICAgICBzdGF0dXMgb2YgYSBkZXZpY2UgYWxpYXNpbmcgZmls ZSwgcmV0dXJuaW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMKPj4+Pj4gICAgIHJlbGVhc2VkIChpbmFj dGl2ZSBhbGlhcykgb3IgcmVzZXJ2ZWQgKGFjdGl2ZSBhbGlhcywgd2l0aCBibG9ja3MKPj4+Pj4g ICAgIGZ1bGx5IGFsbG9jYXRlZCBvbiB0aGUgZGV2aWNlKS4KPj4+Pj4KPj4+Pj4gU2lnbmVkLW9m Zi1ieTogRGFlaG8gSmVvbmcgPGRhZWhvamVvbmdAZ29vZ2xlLmNvbT4KPj4+Pj4gLS0tCj4+Pj4+ IHY2OiBmaXhlZCBkdXBsaWNhdGVkIGJsb2NrIHJlc2VydmF0aW9ucyBhbmQgcmFjaW5nIHcvIG1t YXAuCj4+Pj4+ICAgICAgIGFkZGVkIHRoZSBleHRlbnQgYWxpZ25tZW50IGNoZWNrIGZvciBkZXZp Y2UgYWxpYXNpbmcgYXJlYXMuCj4+Pj4+IHY1OiBwcmV2ZW50ZWQgbmV3IHNlZ21lbnQgYWxsb2Nh dGlvbiBvbiBkZXZpY2VzIHVuZGVyZ29pbmcgcmVzZXJ2YXRpb24KPj4+Pj4gICAgICAgb3Igd2l0 aCBhY3RpdmUgYWxpYXNlcy4KPj4+Pj4gICAgICAgdXNlZCBpbi1tZW1vcnkgc3RydWN0IHRvIHJl c2VydmUgYmxvY2tzIGZvciBkZXZpY2UgYWxpYXNpbmcuCj4+Pj4+ICAgICAgIGNsZWFyZWQgcHJl ZnJlZSAoUFJFKSBkaXJ0eSBzZWdtZW50IGJpdG1hcC4KPj4+Pj4gdjQ6IHJlbmFtZWQgaW50ZXJm YWNlcy4KPj4+Pj4gICAgICAgZml4ZWQgcmFjZSBjb25kaXRpb25zIGJldHdlZW4gY2hlY2twb2lu dD1kaXNhYmxlIG1vdW50IGFuZCBpb2N0bHMuCj4+Pj4+ICAgICAgIHJlZmFjdG9yZWQgc2VnbWVu dCByZXNlcnZhdGlvbiBwYXJ0Lgo+Pj4+PiAgICAgICBtb2RpZmllZCBsb2NrIHVzYWdlLgo+Pj4+ PiB2MzogYWRkIENBUF9TWVNfQURNSU4gYW5kIGNoZWNrcG9pbnQ9ZGlzYWJsZWQgY2hlY2suCj4+ Pj4+ICAgICAgIHJlbW92ZSBhIGYyZnMgc3BlY2lmaWMgZmxhZyBleHBvc2VkIHdpdGggZ2V0Zmxh Z3MuCj4+Pj4+IHYyOiBwcmV2ZW50IG9wZXJhdGlvbnMgZHVyaW5nIGNoZWNrcG9pbnQ9ZGlzYWJs ZWQuCj4+Pj4+IC0tLQo+Pj4+PiAtLS0KPj4+Pj4gICAgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVt cy9mMmZzLnJzdCB8ICAzNSArKysrCj4+Pj4+ICAgIGZzL2YyZnMvZGF0YS5jICAgICAgICAgICAg ICAgICAgICAgfCAgIDQgKy0KPj4+Pj4gICAgZnMvZjJmcy9leHRlbnRfY2FjaGUuYyAgICAgICAg ICAgICB8ICAgNyArCj4+Pj4+ICAgIGZzL2YyZnMvZjJmcy5oICAgICAgICAgICAgICAgICAgICAg fCAgMTkgKy0KPj4+Pj4gICAgZnMvZjJmcy9maWxlLmMgICAgICAgICAgICAgICAgICAgICB8IDI3 MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+Pj4+PiAgICBmcy9mMmZzL2djLmMgICAg ICAgICAgICAgICAgICAgICAgIHwgIDMwICsrLS0KPj4+Pj4gICAgZnMvZjJmcy9uYW1laS5jICAg ICAgICAgICAgICAgICAgICB8ICAxNCArKwo+Pj4+PiAgICBmcy9mMmZzL3NlZ21lbnQuYyAgICAg ICAgICAgICAgICAgIHwgMTc2ICsrKysrKysrKysrKystLS0tLS0KPj4+Pj4gICAgZnMvZjJmcy9z ZWdtZW50LmggICAgICAgICAgICAgICAgICB8ICAyMiArKysKPj4+Pj4gICAgZnMvZjJmcy9zdXBl ci5jICAgICAgICAgICAgICAgICAgICB8ICAzNiArKysrCj4+Pj4+ICAgIGluY2x1ZGUvdWFwaS9s aW51eC9mMmZzLmggICAgICAgICAgfCAgIDcgKwo+Pj4+PiAgICAxMSBmaWxlcyBjaGFuZ2VkLCA1 NTUgaW5zZXJ0aW9ucygrKSwgNjggZGVsZXRpb25zKC0pCj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQg YS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0IGIvRG9jdW1lbnRhdGlvbi9maWxl c3lzdGVtcy9mMmZzLnJzdAo+Pj4+PiBpbmRleCA4YzRhMTRhZTQ0NGYuLjFhNWZkNGFmZTYwOSAx MDA2NDQKPj4+Pj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdAo+Pj4+ PiArKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0Cj4+Pj4+IEBAIC0xMDQ1 LDYgKzEwNDUsNDEgQEAgU28sIHRoZSBrZXkgaWRlYSBpcywgdXNlciBjYW4gZG8gYW55IGZpbGUg b3BlcmF0aW9ucyBvbiAvZGV2L3ZkYywgYW5kCj4+Pj4+ICAgIHJlY2xhaW0gdGhlIHNwYWNlIGFm dGVyIHRoZSB1c2UsIHdoaWxlIHRoZSBzcGFjZSBpcyBjb3VudGVkIGFzIC9kYXRhLgo+Pj4+PiAg ICBUaGF0IGRvZXNuJ3QgcmVxdWlyZSBtb2RpZnlpbmcgcGFydGl0aW9uIHNpemUgYW5kIGZpbGVz eXN0ZW0gZm9ybWF0Lgo+Pj4+Pgo+Pj4+PiArRHluYW1pYyBEZXZpY2UgQWxpYXNpbmcgTWFuYWdl bWVudAo+Pj4+PiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+PiArCj4+ Pj4+ICtJbiBhZGRpdGlvbiB0byBzdGF0aWMgZGV2aWNlIGFsaWFzaW5nIGJ5IGRlbGV0aW5nIHRo ZSBhbGlhc2luZyBmaWxlLCBGMkZTCj4+Pj4+ICtzdXBwb3J0cyBkeW5hbWljIG1hbmFnZW1lbnQg b2YgZGV2aWNlIGFsaWFzaW5nLiBUaGlzIG1lY2hhbmlzbSBhbGxvd3MgdGhlIHN5c3RlbQo+Pj4+ PiArdG8gZHluYW1pY2FsbHkgdHJhbnNpdGlvbiBwYXJ0aXRpb24gb3duZXJzaGlwIGJldHdlZW4g RjJGUyB1c2VyZGF0YSBhbmQgZXh0ZXJuYWwKPj4+Pj4gK2VudGl0aWVzIChlLmcuLCB6UkFNLCBy YXcgcGFydGl0aW9uKSBiYXNlZCBvbiBzeXN0ZW0gcmVxdWlyZW1lbnRzIHdpdGhvdXQKPj4+Pj4g K2RlbGV0aW5nIHRoZSBtYXN0ZXIgYWxpYXNpbmcgZmlsZSBvciByZXF1aXJpbmcgdW5tb3VudC9y ZW1vdW50Lgo+Pj4+PiArCj4+Pj4+ICtUaGUgbWFzdGVyIGFsaWFzaW5nIGZpbGUgaXMgY3JlYXRl ZCBkdXJpbmcgdGhlIGluaXRpYWwgZm9ybWF0IG9mIHRoZSBmaWxlIHN5c3RlbQo+Pj4+PiArYW5k IHJlbWFpbnMgYXMgYSBwZXJzaXN0ZW50IGNvbnRyb2wgZW50aXR5IChpb2N0bCBnYXRld2F5KSBp biB0aGUgcm9vdCBkaXJlY3RvcnkuCj4+Pj4+ICsKPj4+Pj4gKy0gUGFydGl0aW9uIFJlc2VydmF0 aW9uIChJbi1zZXJ2aWNlIHRvIEFsaWFzZWQpCj4+Pj4+ICsgIFdoZW4gYSBzcGVjaWZpYyBwYXJ0 aXRpb24gbmVlZHMgdG8gYmUgZGVkaWNhdGVkIHRvIGV4dGVybmFsIHNlcnZpY2VzIChlLmcuLCB6 UkFNKSwKPj4+Pj4gKyAgYSB1c2VyIGNhbiByZXNlcnZlIHRoZSBkZXZpY2UgYWxpYXMgcmFuZ2Ug dmlhIGlvY3RsLiBUaGUga2VybmVsIHJlc2V0cyBHQyB2aWN0aW0KPj4+Pj4gKyAgaW5mb3JtYXRp b24gZm9yIHRoZSB0YXJnZXQgcmFuZ2UsIG1hcmtzIHNlZ21lbnRzIGFzIGluLXVzZSB0byBwcmV2 ZW50IG5ldwo+Pj4+PiArICBhbGxvY2F0aW9ucywgYW5kIHRyaWdnZXJzIGZvcmNlZCBHQyB0byBt aWdyYXRlIGV4aXN0aW5nIHZhbGlkIGRhdGEgb3V0IG9mIHRoZQo+Pj4+PiArICByYW5nZS4gRmlu YWxseSwgaXQgcmVzZXJ2ZXMgdGhlc2UgYmxvY2tzIGluIHRoZSBTSVQgdG8gZWZmZWN0aXZlbHkg ZXhjbHVkZSB0aGUKPj4+Pj4gKyAgZGV2aWNlIGZyb20gdGhlIHVzYWJsZSBjYXBhY2l0eS4KPj4+ Pj4gKwo+Pj4+PiArLSBQYXJ0aXRpb24gUmVsZWFzZSAoQWxpYXNlZCB0byBJbi1zZXJ2aWNlKQo+ Pj4+PiArICBXaGVuIGV4dGVybmFsIHVzYWdlIGNvbmNsdWRlcywgdGhlIHNwYWNlIGlzIHJlY2xh aW1lZCBub3QgYnkgZGVsZXRpbmcgdGhlIGZpbGUsCj4+Pj4+ICsgIGJ1dCB0aHJvdWdoIHRoZSBy ZWxlYXNlIGlvY3RsLiBUaGUga2VybmVsIHRydW5jYXRlcyBibG9ja3MgYXNzb2NpYXRlZCB3aXRo Cj4+Pj4+ICsgIHRoZSBmaWxlLCByZWxlYXNpbmcgdGhlbSBiYWNrIHRvIGdlbmVyYWwgZmlsZXN5 c3RlbSBhbGxvY2F0aW9uLgo+Pj4+PiArCj4+Pj4+ICsuLiBjb2RlLWJsb2NrOjoKPj4+Pj4gKwo+ Pj4+PiArICAgIyBmMmZzX2lvIGRldl9hbGlhcyByZWxlYXNlIC9tbnQvZjJmcy92ZGMuZmlsZQo+ Pj4+PiArICAgIyBkZiAtaAo+Pj4+PiArICAgL2Rldi92ZGIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgNjRHICA3NTNNICAgNjRHICAgMiUgL21udC9mMmZzCj4+Pj4+ICsKPj4+Pj4gKyAgICMg ZjJmc19pbyBkZXZfYWxpYXMgcmVzZXJ2ZSAvbW50L2YyZnMvdmRjLmZpbGUKPj4+Pj4gKyAgICMg ZGYgLWgKPj4+Pj4gKyAgIC9kZXYvdmRiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0RyAg IDMzRyAgIDMyRyAgNTIlIC9tbnQvZjJmcwo+Pj4+PiArCj4+Pj4+ICAgIFBlci1maWxlIFJlYWQt T25seSBMYXJnZSBGb2xpbyBTdXBwb3J0Cj4+Pj4+ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2RhdGEuYyBi L2ZzL2YyZnMvZGF0YS5jCj4+Pj4+IGluZGV4IGFjMWNmNGRlM2Q2Mi4uODkyZDU5NDA0OGI3IDEw MDY0NAo+Pj4+PiAtLS0gYS9mcy9mMmZzL2RhdGEuYwo+Pj4+PiArKysgYi9mcy9mMmZzL2RhdGEu Ywo+Pj4+PiBAQCAtMTI3MCw3ICsxMjcwLDcgQEAgaW50IGYyZnNfcmVzZXJ2ZV9uZXdfYmxvY2tz KHN0cnVjdCBkbm9kZV9vZl9kYXRhICpkbiwgYmxrY250X3QgY291bnQpCj4+Pj4+Cj4+Pj4+ICAg ICAgICBpZiAodW5saWtlbHkoaXNfaW5vZGVfZmxhZ19zZXQoZG4tPmlub2RlLCBGSV9OT19BTExP QykpKQo+Pj4+PiAgICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+Pj4+PiAtICAgICBlcnIg PSBpbmNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBkbi0+aW5vZGUsICZjb3VudCwgdHJ1ZSk7Cj4+ Pj4+ICsgICAgIGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGRuLT5pbm9kZSwgJmNv dW50LCB0cnVlLCBmYWxzZSk7Cj4+Pj4+ICAgICAgICBpZiAodW5saWtlbHkoZXJyKSkKPj4+Pj4g ICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPj4+Pj4KPj4+Pj4gQEAgLTE1NDIsNyArMTU0Miw3 IEBAIHN0YXRpYyBpbnQgX19hbGxvY2F0ZV9kYXRhX2Jsb2NrKHN0cnVjdCBkbm9kZV9vZl9kYXRh ICpkbiwgaW50IHNlZ190eXBlKQo+Pj4+Pgo+Pj4+PiAgICAgICAgZG4tPmRhdGFfYmxrYWRkciA9 IGYyZnNfZGF0YV9ibGthZGRyKGRuKTsKPj4+Pj4gICAgICAgIGlmIChkbi0+ZGF0YV9ibGthZGRy ID09IE5VTExfQUREUikgewo+Pj4+PiAtICAgICAgICAgICAgIGVyciA9IGluY192YWxpZF9ibG9j a19jb3VudChzYmksIGRuLT5pbm9kZSwgJmNvdW50LCB0cnVlKTsKPj4+Pj4gKyAgICAgICAgICAg ICBlcnIgPSBpbmNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBkbi0+aW5vZGUsICZjb3VudCwgdHJ1 ZSwgZmFsc2UpOwo+Pj4+PiAgICAgICAgICAgICAgICBpZiAodW5saWtlbHkoZXJyKSkKPj4+Pj4g ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+Pj4+PiAgICAgICAgfQo+Pj4+PiBk aWZmIC0tZ2l0IGEvZnMvZjJmcy9leHRlbnRfY2FjaGUuYyBiL2ZzL2YyZnMvZXh0ZW50X2NhY2hl LmMKPj4+Pj4gaW5kZXggNjFmNmI5NzE0MzY2Li4zYTczN2RiMGM5ZTEgMTAwNjQ0Cj4+Pj4+IC0t LSBhL2ZzL2YyZnMvZXh0ZW50X2NhY2hlLmMKPj4+Pj4gKysrIGIvZnMvZjJmcy9leHRlbnRfY2Fj aGUuYwo+Pj4+PiBAQCAtNjIsNiArNjIsMTMgQEAgYm9vbCBzYW5pdHlfY2hlY2tfZXh0ZW50X2Nh Y2hlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqaWZvbGlvKQo+Pj4+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgaW5vZGUtPmlfaW5vLCBlaS5ibGssIGVp LmZvZnMsIGVpLmxlbik7Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl Owo+Pj4+PiAgICAgICAgICAgICAgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAgICAgICBpZiAo KGVpLmJsayAlIEJMS1NfUEVSX1NFQyhzYmkpKSB8fCAoZWkubGVuICUgQkxLU19QRVJfU0VDKHNi aSkpKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBmMmZzX3dhcm4oc2JpLCAiJXM6IGRl dmljZSBhbGlhcyBpbm9kZSAoaW5vPSVsbHgpJ3MgZXh0ZW50IGluZm8gWyV1LCAldSwgJXVdIGlz IG5vdCBhbGlnbmVkIHRvIHNlY3Rpb24gc2l6ZSAldSIsCj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgX19mdW5jX18sIGlub2RlLT5pX2lubywgZWkuYmxrLCBlaS5mb2ZzLCBl aS5sZW4sCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkxLU19QRVJfU0VD KHNiaSkpOwo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4+PiAr ICAgICAgICAgICAgIH0KPj4+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4+Pj4+ICAg ICAgICB9Cj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMv ZjJmcy5oCj4+Pj4+IGluZGV4IGYxNzc0ZDRlMThkMi4uZjI0ZTMwYmI1YzNkIDEwMDY0NAo+Pj4+ PiAtLS0gYS9mcy9mMmZzL2YyZnMuaAo+Pj4+PiArKysgYi9mcy9mMmZzL2YyZnMuaAo+Pj4+PiBA QCAtMTQwNCw2ICsxNDA0LDggQEAgc3RydWN0IGYyZnNfZGV2X2luZm8gewo+Pj4+PiAgICAgICAg dW5zaWduZWQgaW50IHRvdGFsX3NlZ21lbnRzOwo+Pj4+PiAgICAgICAgYmxvY2tfdCBzdGFydF9i bGs7Cj4+Pj4+ICAgICAgICBibG9ja190IGVuZF9ibGs7Cj4+Pj4+ICsgICAgIGJvb2wgaGFzX2Fs aWFzOwo+Pj4+PiArICAgICBib29sIGlzX3Jlc2VydmluZzsKPj4+Pj4gICAgI2lmZGVmIENPTkZJ R19CTEtfREVWX1pPTkVECj4+Pj4+ICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYmxrejsgICAgICAg ICAgIC8qIFRvdGFsIG51bWJlciBvZiB6b25lcyAqLwo+Pj4+PiAgICAgICAgdW5zaWduZWQgbG9u ZyAqYmxrel9zZXE7ICAgICAgICAvKiBCaXRtYXAgaW5kaWNhdGluZyBzZXF1ZW50aWFsIHpvbmVz ICovCj4+Pj4+IEBAIC0xODU3LDYgKzE4NTksNyBAQCBzdHJ1Y3QgZjJmc19zYl9pbmZvIHsKPj4+ Pj4gICAgICAgIGJsb2NrX3QgbGFzdF92YWxpZF9ibG9ja19jb3VudDsgICAgICAgICAvKiBmb3Ig cmVjb3ZlcnkgKi8KPj4+Pj4gICAgICAgIGJsb2NrX3QgcmVzZXJ2ZWRfYmxvY2tzOyAgICAgICAg ICAgICAgICAvKiBjb25maWd1cmFibGUgcmVzZXJ2ZWQgYmxvY2tzICovCj4+Pj4+ICAgICAgICBi bG9ja190IGN1cnJlbnRfcmVzZXJ2ZWRfYmxvY2tzOyAgICAgICAgLyogY3VycmVudCByZXNlcnZl ZCBibG9ja3MgKi8KPj4+Pj4gKyAgICAgYmxvY2tfdCBhbGlhc19yZXNlcnZlZF9ibG9ja3M7ICAg ICAgICAgIC8qIHJlc2VydmVkIGJsb2NrcyBmb3IgZGV2aWNlIGFsaWFzICovCj4+Pj4+Cj4+Pj4+ ICAgICAgICAvKiBBZGRpdGlvbmFsIHRyYWNraW5nIGZvciBubyBjaGVja3BvaW50IG1vZGUgKi8K Pj4+Pj4gICAgICAgIGJsb2NrX3QgdW51c2FibGVfYmxvY2tfY291bnQ7ICAgICAgICAgICAvKiAj IG9mIGJsb2NrcyBzYXZlZCBieSBsYXN0IGNwICovCj4+Pj4+IEBAIC0yNTU5LDcgKzI1NjIsOCBA QCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRfYXZhaWxhYmxlX2Jsb2NrX2NvdW50KHN0 cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4+Pj4gICAgICAgIGJsb2NrX3QgYXZhaWxfdXNlcl9i bG9ja19jb3VudDsKPj4+Pj4KPj4+Pj4gICAgICAgIGF2YWlsX3VzZXJfYmxvY2tfY291bnQgPSBz YmktPnVzZXJfYmxvY2tfY291bnQgLQo+Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNiaS0+Y3VycmVudF9yZXNlcnZlZF9ibG9ja3M7Cj4+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JpLT5jdXJyZW50X3Jlc2VydmVkX2Jsb2NrcyAt Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JpLT5hbGlhc19y ZXNlcnZlZF9ibG9ja3M7Cj4+Pj4+Cj4+Pj4+ICAgICAgICBpZiAodGVzdF9vcHQoc2JpLCBSRVNF UlZFX1JPT1QpICYmICFfX2FsbG93X3Jlc2VydmVkX3Jvb3Qoc2JpLCBpbm9kZSwgY2FwKSkKPj4+ Pj4gICAgICAgICAgICAgICAgYXZhaWxfdXNlcl9ibG9ja19jb3VudCAtPSBGMkZTX09QVElPTihz YmkpLnJvb3RfcmVzZXJ2ZWRfYmxvY2tzOwo+Pj4+PiBAQCAtMjU3Niw3ICsyNTgwLDggQEAgc3Rh dGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2V0X2F2YWlsYWJsZV9ibG9ja19jb3VudChzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmksCj4+Pj4+Cj4+Pj4+ICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBmMmZz X2lfYmxvY2tzX3dyaXRlKHN0cnVjdCBpbm9kZSAqLCBibG9ja190LCBib29sLCBib29sKTsKPj4+ Pj4gICAgc3RhdGljIGlubGluZSBpbnQgaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSwKPj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBpbm9kZSAqaW5vZGUsIGJsa2NudF90ICpjb3VudCwgYm9vbCBwYXJ0aWFsKQo+Pj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlub2RlICppbm9kZSwgYmxrY250X3Qg KmNvdW50LAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwYXJ0aWFs LCBib29sIGFsaWFzX3Jlc2VydmVkKQo+Pj4+PiAgICB7Cj4+Pj4+ICAgICAgICBsb25nIGxvbmcg ZGlmZiA9IDAsIHJlbGVhc2UgPSAwOwo+Pj4+PiAgICAgICAgYmxvY2tfdCBhdmFpbF91c2VyX2Js b2NrX2NvdW50Owo+Pj4+PiBAQCAtMjU5OSwxMCArMjYwNCwxNiBAQCBzdGF0aWMgaW5saW5lIGlu dCBpbmNfdmFsaWRfYmxvY2tfY291bnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4+Pgo+ Pj4+PiAgICAgICAgc3Bpbl9sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4+Pj4+Cj4+Pj4+ICsgICAg IGlmIChhbGlhc19yZXNlcnZlZCkKPj4+Pj4gKyAgICAgICAgICAgICBzYmktPmFsaWFzX3Jlc2Vy dmVkX2Jsb2NrcyAtPSAqY291bnQ7Cj4+Pj4+ICsKPj4+Pj4gICAgICAgIGF2YWlsX3VzZXJfYmxv Y2tfY291bnQgPSBnZXRfYXZhaWxhYmxlX2Jsb2NrX2NvdW50KHNiaSwgaW5vZGUsIHRydWUpOwo+ Pj4+PiAgICAgICAgZGlmZiA9IChsb25nIGxvbmcpc2JpLT50b3RhbF92YWxpZF9ibG9ja19jb3Vu dCArICpjb3VudCAtCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXZhaWxfdXNlcl9ibG9ja19jb3VudDsKPj4+Pj4gICAgICAgIGlmICh1bmxpa2Vs eShkaWZmID4gMCkpIHsKPj4+Pj4gKyAgICAgICAgICAgICBpZiAoYWxpYXNfcmVzZXJ2ZWQpCj4+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICBzYmktPmFsaWFzX3Jlc2VydmVkX2Jsb2NrcyArPSAq Y291bnQ7Cj4+Pj4+ICsKPj4+Pj4gICAgICAgICAgICAgICAgaWYgKCFwYXJ0aWFsKSB7Cj4+Pj4+ ICAgICAgICAgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJnNiaS0+c3RhdF9sb2NrKTsKPj4+ Pj4gICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlID0gKmNvdW50Owo+Pj4+PiBAQCAtNDAx MCw2ICs0MDIxLDggQEAgaW50IGYyZnNfZmx1c2hfZGV2aWNlX2NhY2hlKHN0cnVjdCBmMmZzX3Ni X2luZm8gKnNiaSk7Cj4+Pj4+ICAgIHZvaWQgZjJmc19kZXN0cm95X2ZsdXNoX2NtZF9jb250cm9s KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYm9vbCBmcmVlKTsKPj4+Pj4gICAgdm9pZCBmMmZz X2ludmFsaWRhdGVfYmxvY2tzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBhZGRy LAo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBsZW4pOwo+Pj4+PiArdm9pZCBmMmZzX3Jlc2VydmVfZGV2aWNlX2FsaWFzKHN0 cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBhZGRyLAo+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbik7Cj4+Pj4+ ICAgIGJvb2wgZjJmc19pc19jaGVja3BvaW50ZWRfZGF0YShzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmksIGJsb2NrX3QgYmxrYWRkcik7Cj4+Pj4+ICAgIGludCBmMmZzX3N0YXJ0X2Rpc2NhcmRfdGhy ZWFkKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSk7Cj4+Pj4+ICAgIHZvaWQgZjJmc19kcm9wX2Rp c2NhcmRfY21kKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSk7Cj4+Pj4+IEBAIC00MjMxLDYgKzQy NDQsOCBAQCB2b2lkIGYyZnNfYnVpbGRfZ2NfbWFuYWdlcihzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmkpOwo+Pj4+PiAgICBpbnQgZjJmc19nY19yYW5nZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks Cj4+Pj4+ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdGFydF9zZWcsIHVuc2lnbmVkIGlu dCBlbmRfc2VnLAo+Pj4+PiAgICAgICAgICAgICAgICBib29sIGRyeV9ydW4sIHVuc2lnbmVkIGlu dCBkcnlfcnVuX3NlY3Rpb25zKTsKPj4+Pj4gK3ZvaWQgZjJmc19yZXNldF9nY192aWN0aW1fcmVz b3VyY2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4+PiArICAgICAgICAgICAgIHVuc2ln bmVkIGludCBzdGFydCwgdW5zaWduZWQgaW50IGVuZCk7Cj4+Pj4+ICAgIGludCBmMmZzX3Jlc2l6 ZV9mcyhzdHJ1Y3QgZmlsZSAqZmlscCwgX191NjQgYmxvY2tfY291bnQpOwo+Pj4+PiAgICBpbnQg X19pbml0IGYyZnNfY3JlYXRlX2dhcmJhZ2VfY29sbGVjdGlvbl9jYWNoZSh2b2lkKTsKPj4+Pj4g ICAgdm9pZCBmMmZzX2Rlc3Ryb3lfZ2FyYmFnZV9jb2xsZWN0aW9uX2NhY2hlKHZvaWQpOwo+Pj4+ PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9maWxlLmMgYi9mcy9mMmZzL2ZpbGUuYwo+Pj4+PiBpbmRl eCA0YjUyYzU2ZDcxZjAuLjgzNWYxMGJjNTliNSAxMDA2NDQKPj4+Pj4gLS0tIGEvZnMvZjJmcy9m aWxlLmMKPj4+Pj4gKysrIGIvZnMvZjJmcy9maWxlLmMKPj4+Pj4gQEAgLTgxMywxMyArODEzLDE5 IEBAIGludCBmMmZzX2RvX3RydW5jYXRlX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQg ZnJvbSwgYm9vbCBsb2NrKQo+Pj4+Pgo+Pj4+PiAgICAgICAgaWYgKElTX0RFVklDRV9BTElBU0lO Ryhpbm9kZSkpIHsKPj4+Pj4gICAgICAgICAgICAgICAgc3RydWN0IGV4dGVudF90cmVlICpldCA9 IEYyRlNfSShpbm9kZSktPmV4dGVudF90cmVlW0VYX1JFQURdOwo+Pj4+PiAtICAgICAgICAgICAg IHN0cnVjdCBleHRlbnRfaW5mbyBlaSA9IGV0LT5sYXJnZXN0Owo+Pj4+PiArICAgICAgICAgICAg IHN0cnVjdCBleHRlbnRfaW5mbyBlaTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICAgICAgIHJlYWRf bG9jaygmZXQtPmxvY2spOwo+Pj4+PiArICAgICAgICAgICAgIGVpID0gZXQtPmxhcmdlc3Q7Cj4+ Pj4+ICsgICAgICAgICAgICAgcmVhZF91bmxvY2soJmV0LT5sb2NrKTsKPj4+Pj4KPj4+Pj4gICAg ICAgICAgICAgICAgZjJmc19pbnZhbGlkYXRlX2Jsb2NrcyhzYmksIGVpLmJsaywgZWkubGVuKTsK Pj4+Pj4KPj4+Pj4gICAgICAgICAgICAgICAgZGVjX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgaW5v ZGUsIGVpLmxlbik7Cj4+Pj4+ICAgICAgICAgICAgICAgIGYyZnNfdXBkYXRlX3RpbWUoc2JpLCBS RVFfVElNRSk7Cj4+Pj4+Cj4+Pj4+ICsgICAgICAgICAgICAgZjJmc19kcm9wX2V4dGVudF90cmVl KGlub2RlKTsKPj4+Pj4gKwo+Pj4+PiAgICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChpZm9s aW8sIHRydWUpOwo+Pj4+PiAgICAgICAgICAgICAgICBnb3RvIG91dDsKPj4+Pj4gICAgICAgIH0K Pj4+Pj4gQEAgLTExMDAsOCArMTEwNiw5IEBAIGludCBmMmZzX3NldGF0dHIoc3RydWN0IG1udF9p ZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKPj4+Pj4gICAgICAgIGlmICgoYXR0 ci0+aWFfdmFsaWQgJiBBVFRSX1NJWkUpKSB7Cj4+Pj4+ICAgICAgICAgICAgICAgIGlmIChtYXBw aW5nX2xhcmdlX2ZvbGlvX3N1cHBvcnQoaW5vZGUtPmlfbWFwcGluZykpCj4+Pj4+ICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+Pj4+PiAtICAgICAgICAgICAgIGlm ICghZjJmc19pc19jb21wcmVzc19iYWNrZW5kX3JlYWR5KGlub2RlKSB8fAo+Pj4+PiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+Pj4+PiAr ICAgICAgICAgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+Pj4+PiArICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPj4+Pj4gKyAgICAgICAgICAgICBpZiAoIWYy ZnNfaXNfY29tcHJlc3NfYmFja2VuZF9yZWFkeShpbm9kZSkpCj4+Pj4+ICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+Pj4+PiAgICAgICAgICAgICAgICBpZiAoaXNf aW5vZGVfZmxhZ19zZXQoaW5vZGUsIEZJX0NPTVBSRVNTX1JFTEVBU0VEKSAmJgo+Pj4+PiAgICAg ICAgICAgICAgICAgICAgICAgICFJU19BTElHTkVEKGF0dHItPmlhX3NpemUsCj4+Pj4+IEBAIC0y MTMwLDYgKzIxMzcsOSBAQCBzdGF0aWMgaW50IGYyZnNfc2V0ZmxhZ3NfY29tbW9uKHN0cnVjdCBp bm9kZSAqaW5vZGUsIHUzMiBpZmxhZ3MsIHUzMiBtYXNrKQo+Pj4+PiAgICAgICAgaWYgKElTX05P UVVPVEEoaW5vZGUpKQo+Pj4+PiAgICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+Pj4+Pgo+ Pj4+PiArICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPj4+Pj4gKyAgICAgICAg ICAgICByZXR1cm4gLUVQRVJNOwo+Pj4+PiArCj4+Pj4+ICAgICAgICBpZiAoKGlmbGFncyBeIG1h c2tlZF9mbGFncykgJiBGMkZTX0NBU0VGT0xEX0ZMKSB7Cj4+Pj4+ICAgICAgICAgICAgICAgIGlm ICghZjJmc19zYl9oYXNfY2FzZWZvbGQoRjJGU19JX1NCKGlub2RlKSkpCj4+Pj4+ICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+Pj4+PiBAQCAtMjY3OCw2ICsyNjg4 LDE3IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfZ2V0X2VuY3J5cHRpb25fcG9saWN5KHN0cnVjdCBm aWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKPj4+Pj4gICAgICAgIHJldHVybiBmc2NyeXB0 X2lvY3RsX2dldF9wb2xpY3koZmlscCwgKHZvaWQgX191c2VyICopYXJnKTsKPj4+Pj4gICAgfQo+ Pj4+Pgo+Pj4+PiArc3RhdGljIGludCBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX3N0YXR1cyhzdHJ1 Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCj4+Pj4+ICt7Cj4+Pj4+ICsgICAgIHN0 cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbHApOwo+Pj4+PiArCj4+Pj4+ICsgICAg IGlmICghSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPj4+Pj4gKyAgICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsKPj4+Pj4gKwo+Pj4+PiArICAgICByZXR1cm4gcHV0X3VzZXIoRjJGU19IQVNf QkxPQ0tTKGlub2RlKSA/IEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRVNFUlZFRCA6Cj4+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRUxFQVNF RCwgKHUzMiBfX3VzZXIgKilhcmcpOwo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICAgIHN0YXRpYyBp bnQgZjJmc19pb2NfZ2V0X2VuY3J5cHRpb25fcHdzYWx0KHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBsb25nIGFyZykKPj4+Pj4gICAgewo+Pj4+PiAgICAgICAgc3RydWN0IGlub2RlICppbm9k ZSA9IGZpbGVfaW5vZGUoZmlscCk7Cj4+Pj4+IEBAIC0zNjE2LDYgKzM2MzcsMjQxIEBAIHN0YXRp YyBpbnQgZjJmc19pb2NfZ2V0X2Rldl9hbGlhc19maWxlKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBsb25nIGFyZykKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAodTMyIF9fdXNlciAq KWFyZyk7Cj4+Pj4+ICAgIH0KPj4+Pj4KPj4+Pj4gK3N0YXRpYyBib29sIGYyZnNfZ2V0X2Rldl9h bGlhc19leHRlbnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAo+Pj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV4dGVudF9pbmZvICplaSkK Pj4+Pj4gK3sKPj4+Pj4gKyAgICAgaW50IGk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgZm9yIChpID0g MTsgaSA8IHNiaS0+c19uZGV2czsgaSsrKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgY2hhciAqbmFt ZSA9IHN0cnJjaHIoRkRFVihpKS5wYXRoLCAnLycpOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgICAg ICAgbmFtZSA9IG5hbWUgPyBuYW1lICsgMSA6IEZERVYoaSkucGF0aDsKPj4+Pj4gKyAgICAgICAg ICAgICBpZiAoc3RyY21wKG5hbWUsIGRlbnRyeS0+ZF9uYW1lLm5hbWUpKQo+Pj4+PiArICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAgICAgICBlaS0+ YmxrID0gRkRFVihpKS5zdGFydF9ibGs7Cj4+Pj4+ICsgICAgICAgICAgICAgZWktPmxlbiA9IEZE RVYoaSkudG90YWxfc2VnbWVudHMgPDwgc2JpLT5sb2dfYmxvY2tzX3Blcl9zZWc7Cj4+Pj4+ICsg ICAgICAgICAgICAgZWktPmZvZnMgPSAwOwo+Pj4+PiArICAgICAgICAgICAgIHJldHVybiB0cnVl Owo+Pj4+PiArICAgICB9Cj4+Pj4+ICsgICAgIHJldHVybiBmYWxzZTsKPj4+Pj4gK30KPj4+Pj4g Kwo+Pj4+PiArc3RhdGljIGludCBmMmZzX2lvY19yZXNlcnZlX2Rldl9hbGlhcyhzdHJ1Y3QgZmls ZSAqZmlscCkKPj4+Pj4gK3sKPj4+Pj4gKyAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVf aW5vZGUoZmlscCk7Cj4+Pj4+ICsgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNf SV9TQihpbm9kZSk7Cj4+Pj4+ICsgICAgIHN0cnVjdCBleHRlbnRfdHJlZSAqZXQgPSBGMkZTX0ko aW5vZGUpLT5leHRlbnRfdHJlZVtFWF9SRUFEXTsKPj4+Pj4gKyAgICAgc3RydWN0IGV4dGVudF9p bmZvIGVpOwo+Pj4+PiArICAgICBzdHJ1Y3QgY3BfY29udHJvbCBjcGMgPSB7IENQX1NZTkMsIDAs IDAsIDAgfTsKPj4+Pj4gKyAgICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0IGxjLCBnbGM7Cj4+ Pj4+ICsgICAgIGJsa2NudF90IGNvdW50Owo+Pj4+PiArICAgICB1bnNpZ25lZCBpbnQgc3RhcnQs IGVuZDsKPj4+Pj4gKyAgICAgaW50IHR5cGUsIGVycjsKPj4+Pj4gKwo+Pj4+PiArICAgICBpZiAo IWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FUEVS TTsKPj4+Pj4gKwo+Pj4+PiArICAgICBpZiAodW5saWtlbHkoaXNfc2JpX2ZsYWdfc2V0KHNiaSwg U0JJX0NQX0RJU0FCTEVEKSkpCj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ Pj4+ICsKPj4+Pj4gKyAgICAgZXJyID0gbW50X3dhbnRfd3JpdGVfZmlsZShmaWxwKTsKPj4+Pj4g KyAgICAgaWYgKGVycikKPj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gZXJyOwo+Pj4+PiArCj4+ Pj4+ICsgICAgIGlub2RlX2xvY2soaW5vZGUpOwo+Pj4+PiArCj4+Pj4+ICsgICAgIGlmICghSVNf REVWSUNFX0FMSUFTSU5HKGlub2RlKSkgewo+Pj4+PiArICAgICAgICAgICAgIGVyciA9IC1FSU5W QUw7Cj4+Pj4+ICsgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+Pj4+PiArICAg ICB9Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgaWYgKEYyRlNfSEFTX0JMT0NLUyhpbm9kZSkpIHsKPj4+ Pj4gKyAgICAgICAgICAgICBlcnIgPSAwOwo+Pj4+PiArICAgICAgICAgICAgIGdvdG8gb3V0X2lu b2RlX3VubG9jazsKPj4+Pj4gKyAgICAgfQo+Pj4+PiArCj4+Pj4+ICsgICAgIGlmICghZjJmc19n ZXRfZGV2X2FsaWFzX2V4dGVudChzYmksIGZpbHAtPmZfcGF0aC5kZW50cnksICZlaSkpIHsKPj4+ Pj4gKyAgICAgICAgICAgICBmMmZzX3dhcm4oc2JpLCAiZGV2aWNlIGFsaWFzIGZpbGUgKCVzLCBp bm89JWxsdSkgaGFzIG5vIG1hdGNoaW5nIGRldmljZSIsCj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIGZpbHAtPmZfcGF0aC5kZW50cnktPmRfbmFtZS5uYW1lLAo+Pj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWlub2RlLT5pX2lubyk7Cj4+Pj4+ICsg ICAgICAgICAgICAgc2V0X3NiaV9mbGFnKHNiaSwgU0JJX05FRURfRlNDSyk7Cj4+Pj4+ICsgICAg ICAgICAgICAgZjJmc19oYW5kbGVfZXJyb3Ioc2JpLCBFUlJPUl9DT1JSVVBURURfSU5PREUpOwo+ Pj4+PiArICAgICAgICAgICAgIGVyciA9IC1FRlNDT1JSVVBURUQ7Cj4+Pj4+ICsgICAgICAgICAg ICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+Pj4+PiArICAgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAg ICAgc3Bpbl9sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4+Pj4+ICsgICAgIGlmIChzYmktPnRvdGFs X3ZhbGlkX2Jsb2NrX2NvdW50ICsgZWkubGVuID4KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg IGdldF9hdmFpbGFibGVfYmxvY2tfY291bnQoc2JpLCBpbm9kZSwgdHJ1ZSkpIHsKPj4+Pj4gKyAg ICAgICAgICAgICBzcGluX3VubG9jaygmc2JpLT5zdGF0X2xvY2spOwo+Pj4+PiArICAgICAgICAg ICAgIGVyciA9IC1FTk9TUEM7Cj4+Pj4+ICsgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5s b2NrOwo+Pj4+PiArICAgICB9Cj4+Pj4+ICsgICAgIHNiaS0+YWxpYXNfcmVzZXJ2ZWRfYmxvY2tz ICs9IGVpLmxlbjsKPj4+Pj4gKyAgICAgc3Bpbl91bmxvY2soJnNiaS0+c3RhdF9sb2NrKTsKPj4+ Pj4gKwo+Pj4+PiArICAgICBzcGluX2xvY2soJkZSRUVfSShzYmkpLT5zZWdtYXBfbG9jayk7Cj4+ Pj4+ICsgICAgIEZERVYoZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgZWkuYmxrKSkuaXNf cmVzZXJ2aW5nID0gdHJ1ZTsKPj4+Pj4gKyAgICAgc3Bpbl91bmxvY2soJkZSRUVfSShzYmkpLT5z ZWdtYXBfbG9jayk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgc3RhcnQgPSBHRVRfU0VHTk8oc2JpLCBl aS5ibGspOwo+Pj4+PiArICAgICBlbmQgPSBHRVRfU0VHTk8oc2JpLCBlaS5ibGsgKyBlaS5sZW4g LSAxKTsKPj4+Pj4gKwo+Pj4+PiArICAgICAvKiBBY3F1aXJlIGdjX2xvY2sgZm9yIHZpY3RpbSBy ZXNldCwgY3Vyc2VnIHJlc2l6ZSwgYW5kIHJhbmdlIEdDICovCj4+Pj4+ICsgICAgIGYyZnNfZG93 bl93cml0ZV90cmFjZSgmc2JpLT5nY19sb2NrLCAmZ2xjKTsKPj4+Pj4gKwo+Pj4+PiArICAgICAv KiBSZXNldCB0aGUgdmljdGltIGluZm9ybWF0aW9uIHRvIHByZXZlbnQgR0MgZnJvbSB0YXJnZXRp bmcgdGhlIHJhbmdlICovCj4+Pj4+ICsgICAgIGYyZnNfcmVzZXRfZ2NfdmljdGltX3Jlc291cmNl KHNiaSwgc3RhcnQsIGVuZCk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgLyogTW92ZSBvdXQgY3Vyc2Vn cyBmcm9tIHRoZSB0YXJnZXQgcmFuZ2UgKi8KPj4+Pj4gKyAgICAgZm9yICh0eXBlID0gQ1VSU0VH X0hPVF9EQVRBOyB0eXBlIDwgTlJfQ1VSU0VHX1BFUlNJU1RfVFlQRTsgdHlwZSsrKSB7Cj4+Pj4+ ICsgICAgICAgICAgICAgZXJyID0gZjJmc19hbGxvY2F0ZV9zZWdtZW50X2Zvcl9yZXNpemUoc2Jp LCB0eXBlLCBzdGFydCwgZW5kKTsKPj4+Pj4gKyAgICAgICAgICAgICBpZiAoZXJyKQo+Pj4+PiAr ICAgICAgICAgICAgICAgICAgICAgZ290byBvdXRfZ2NfdW5sb2NrOwo+Pj4+PiArICAgICB9Cj4+ Pj4+ICsKPj4+Pj4gKyAgICAgZjJmc19sb2NrX29wKHNiaSwgJmxjKTsKPj4+Pj4gKwo+Pj4+PiAr ICAgICBpZiAodW5saWtlbHkoaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0NQX0RJU0FCTEVEKSkp IHsKPj4+Pj4gKyAgICAgICAgICAgICBlcnIgPSAtRUlOVkFMOwo+Pj4+PiArICAgICAgICAgICAg IGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPj4+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9n Y191bmxvY2s7Cj4+Pj4+ICsgICAgIH0KPj4+Pj4gKwo+Pj4+PiArICAgICAvKiBkbyBHQyB0byBt b3ZlIG91dCB2YWxpZCBibG9ja3MgaW4gdGhlIHJhbmdlIGFsbCBhdCBvbmNlISAqLwo+Pj4+PiAr ICAgICBlcnIgPSBmMmZzX2djX3JhbmdlKHNiaSwgc3RhcnQsIGVuZCwgZmFsc2UsIDApOwo+Pj4+ PiArICAgICBpZiAoZXJyKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgZjJmc191bmxvY2tfb3Aoc2Jp LCAmbGMpOwo+Pj4+PiArICAgICAgICAgICAgIGdvdG8gb3V0X2djX3VubG9jazsKPj4+Pj4gKyAg ICAgfQo+Pj4+PiArCj4+Pj4+ICsgICAgIGNvdW50ID0gZWkubGVuOwo+Pj4+PiArICAgICBlcnIg PSBpbmNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBpbm9kZSwgJmNvdW50LCBmYWxzZSwgdHJ1ZSk7 Cj4+Pj4+ICsgICAgIGlmIChlcnIpIHsKPj4+Pj4gKyAgICAgICAgICAgICBmMmZzX3VubG9ja19v cChzYmksICZsYyk7Cj4+Pj4+ICsgICAgICAgICAgICAgZ290byBvdXRfZ2NfdW5sb2NrOwo+Pj4+ PiArICAgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgd3JpdGVfbG9jaygmZXQtPmxvY2spOwo+Pj4+ PiArICAgICBldC0+bGFyZ2VzdCA9IGVpOwo+Pj4+PiArICAgICB3cml0ZV91bmxvY2soJmV0LT5s b2NrKTsKPj4+Pj4gKyAgICAgY2xlYXJfaW5vZGVfZmxhZyhpbm9kZSwgRklfTk9fRVhURU5UKTsK Pj4+Pj4gKwo+Pj4+PiArICAgICBmMmZzX3Jlc2VydmVfZGV2aWNlX2FsaWFzKHNiaSwgZWkuYmxr LCBlaS5sZW4pOwo+Pj4+PiArCj4+Pj4+ICsgICAgIGlfc2l6ZV93cml0ZShpbm9kZSwgKGxvZmZf dCllaS5sZW4gPDwgc2JpLT5sb2dfYmxvY2tzaXplKTsKPj4+Pj4gKyAgICAgZjJmc191cGRhdGVf aW5vZGVfcGFnZShpbm9kZSk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgc3Bpbl9sb2NrKCZGUkVFX0ko c2JpKS0+c2VnbWFwX2xvY2spOwo+Pj4+PiArICAgICBGREVWKGYyZnNfdGFyZ2V0X2RldmljZV9p bmRleChzYmksIGVpLmJsaykpLmlzX3Jlc2VydmluZyA9IGZhbHNlOwo+Pj4+PiArICAgICBzcGlu X3VubG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2NrKTsKPj4+Pj4gKwo+Pj4+PiArICAgICBm MmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4+Pj4+ICsgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2Uo JnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4+Pj4KPj4+PiBEbyB3ZSBuZWVkIHRvIGNhbGwgZjJmc193 cml0ZV9jaGVja3BvaW50KHNiaSwgJmNwYykgaGVyZSB0byBtYWtlIHN1cmUgcGVyc2lzdAo+Pj4+ IGRldmljZSBhbGlhcyBmaWxlIGZpcnN0PyB0byBhdm9pZCBmb2xsb3dpbmcgZjJmc19pb2NfcmVs ZWFzZV9kZXZfYWxpYXMoKSByYWNpbgo+Pj4+ICAgIHcvIGYyZnNfaW9jX3Jlc2VydmVfZGV2X2Fs aWFzKCk/Cj4+Pj4KPj4+PiAtIGYyZnNfaW9jX3Jlc2VydmVfZGV2X2FsaWFzICAgICAgICAgICAg LSBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcwo+Pj4+IC4uLgo+Pj4+ICAgIC0gZjJmc191bmxv Y2tfb3AKPj4+PiAgICAtIGYyZnNfdXBfd3JpdGVfdHJhY2UoZ2NfbG9jaykKPj4+PiAgICAtIGlu b2RlX3VubG9jawo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0gaW5vZGVfbG9jawo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC4uLgo+Pj4+ICAgIC0gZjJmc193cml0ZV9jaGVja3BvaW50Cj4+Pgo+Pj4gSGkgQ2hhbywK Pj4+Cj4+PiBJIGNvdWxkbid0IGdldCB5b3VyIHBvaW50LiBDb3VsZCB5b3UgZWxhYm9yYXRlIG1v cmUsIGlmIEkgbWlzc2VkIGl0Pwo+Pgo+PiBIaSBEYWVobywKPj4KPj4gQWN0dWFsbHksIHdoYXQg SSBtZWFuIGlzIGlmIGYyZnNfd3JpdGVfY2hlY2twb2ludCgpIGlzIG5vdCBjb3ZlcmVkIGJ5Cj4+ IGlub2RlIGxvY2ssIGluIHJhY2UgY29uZGl0aW9uIHRoZXJlIHdpbGwgYmUgYmVsb3cgaW52b2tp bmcgc2VyaWFsOgo+Pgo+PiBBc3N1bWU6Cj4+IGYyZnNfaW9jX3Jlc2VydmVfZGV2X2FsaWFzIDo9 IHJlc2VydmVfZGV2X2FsaWFzICsgZjJmc193cml0ZV9jaGVja3BvaW50Cj4+IGYyZnNfaW9jX3Jl bGVhc2VfZGV2X2FsaWFzIDo9IHJlbGVhc2VfZGV2X2FsaWFzICsgZjJmc193cml0ZV9jaGVja3Bv aW50Cj4+Cj4+IDEpIFRocmVhZCBBOiByZXNlcnZlX2Rldl9hbGlhcwo+PiAyKSBUaHJlYWQgQjog cmVsZWFzZV9kZXZfYWxpYXMKPj4gMykgVGhyZWFkIEM6IHJlc2VydmVfZGV2X2FsaWFzCj4+IDQp IFRocmVhZCBCOiBmMmZzX3dyaXRlX2NoZWNrcG9pbnQKPj4gNSkgVGhyZWFkIEE6IGYyZnNfd3Jp dGVfY2hlY2twb2ludAo+PiA2KSBUaHJlYWQgQzogZjJmc193cml0ZV9jaGVja3BvaW50Cj4+Cj4+ IEFmdGVyIDEpIGFsbCBkYXRhIGFmdGVyIHJlc2VydmVfZGV2X2FsaWFzKCkgYXJlIG5vdCBjaGVj a3BvaW50ZWQsIHRoZW4gdGhlCj4+IGZvbGxvd2luZyByZWxlYXNlX2Rldl9hbGlhcyBpbiAyKSB3 b24ndCBlbmNvdW50ZXIgYW55IGlzc3VlLCByaWdodD8gYW5kIHRoZQo+PiBzYW1lIHF1ZXRpb25z IGZvciAzKS4KPj4KPj4gSU9XLCByZXNlcnZlX2Rldl9hbGlhcy9yZWxlYXNlX2Rldl9hbGlhcyBk b2Vzbid0IG5lZWQgdG8gcmVseSBvbiBjaGVja3BvaW50ZWQKPj4gc3RhdGUgb2YgZWFjaCBvdGhl ciwgYW0gSSB1bmRlcnN0YW5kIGl0IGNvcnJlY3RseT8gaWYgc28gdGhlcmUgd29uJ3QgYmUgYW55 Cj4+IGlzc3VlLgo+Pgo+Pj4KPj4+IDEuIEluLW1lbW9yeSBzdGF0ZSBpcyBhbHJlYWR5IGF0b21p YyAoTm8gUmFjZSk6Cj4+PiAgICAgIEJlZm9yZSBpbm9kZV91bmxvY2soKSwgYWxsIGluLW1lbW9y eSBtZXRhZGF0YSAoZXh0ZW50X3RyZWUsIFNJVAo+Pj4gc2VnbWVudCBiaXRtYXBzLCBpX3NpemUs IGFuZCBkaXJ0eSBpbm9kZSBwYWdlKSBhcmUgZnVsbHkgdXBkYXRlZCB1bmRlcgo+Pj4gaW5vZGVf bG9jayArIGYyZnNfbG9ja19vcC4gQSBzdWJzZXF1ZW50IGYyZnNfaW9jX3JlbGVhc2VfZGV2X2Fs aWFzKCkKPj4+IHdpbGwgb2JzZXJ2ZSBhIGNvbXBsZXRlLCBjb25zaXN0ZW50IHN0YXRlLgo+Pj4K Pj4+IDIuIE9uLWRpc2sgY29uc2lzdGVuY3kgJiBjcmFzaCBzYWZldHk6Cj4+PiAgICAgIENoZWNr cG9pbnRzIGFyZSBzZXJpYWxpemVkIGludGVybmFsbHkgdmlhIGNwX211dGV4IC8KPj4+IGYyZnNf bG9ja19hbGwoKS4gUmVnYXJkbGVzcyBvZiB0aGUgY2hlY2twb2ludCBleGVjdXRpb24gdGltaW5n IG9yIGFueQo+Pj4gc3VkZGVuIHBvd2VyLW9mZiAoU1BPKSBiZXR3ZWVuIHRoZSB0d28gaW9jdGxz LCB0aGUgZmlsZXN5c3RlbSBhbHdheXMKPj4+IHJlY292ZXJzIHRvIHRoZSBsYXN0IGNvbW1pdHRl ZCBhdG9taWMgY2hlY2twb2ludCB3aXRob3V0IG1ldGFkYXRhCj4+PiBjb3JydXB0aW9uLgo+Pgo+ PiBUaGFua3MgZm9yIHRoZSBleHBsYW5hdGlvbi4KPj4KPj4gVGhhbmtzLAo+IAo+IAo+IFllcywg eW91ciB1bmRlcnN0YW5kaW5nIGlzIGNvbXBsZXRlbHkgY29ycmVjdCEKPiAKPiBOZWl0aGVyIHJl c2VydmVfZGV2X2FsaWFzKCkgbm9yIHJlbGVhc2VfZGV2X2FsaWFzKCkgcmVsaWVzIG9uIHRoZQo+ IGNoZWNrcG9pbnRlZCBzdGF0ZSBvZiBwcmV2aW91cyBvcGVyYXRpb25zLgo+IFRoZXkgb25seSBk ZXBlbmQgb24gdGhlIGluLW1lbW9yeSBtZXRhZGF0YSAoZXh0ZW50IHRyZWUsIFNJVCBiaXRtYXBz LAo+IGlfc2l6ZSwgZXRjLiksIHdoaWNoIGlzIGFscmVhZHkgYXRvbWljYWxseSB1cGRhdGVkIGFu ZCBmdWxseQo+IHN5bmNocm9uaXplZCBieSBpbm9kZV9sb2NrIGFuZCBmMmZzX2xvY2tfb3AuCj4g VGhlcmVmb3JlLCB0aGUgaW50ZXJsZWF2ZWQgY2hlY2twb2ludCBzY2VuYXJpbyB5b3UgZGVzY3Jp YmVkIHdvbid0Cj4gY2F1c2UgYW55IGlzc3VlIGF0IGFsbC4KCkl0IG1ha2Ugc2Vuc2UsIHRoYW5r cyBhIGxvdCBmb3IgdGhlIGV4cGxhbmF0aW9uIQoKVGhhbmtzLAoKPiAKPiBUaGFua3MsCj4gCj4+ Cj4+Pgo+Pj4gVGhhbmtzLAo+Pj4KPj4+Pgo+Pj4+PiArCj4+Pj4+ICsgICAgIGlub2RlX3VubG9j ayhpbm9kZSk7Cj4+Pj4+ICsgICAgIG1udF9kcm9wX3dyaXRlX2ZpbGUoZmlscCk7Cj4+Pj4+ICsK Pj4+Pj4gKyAgICAgcmV0dXJuIGYyZnNfd3JpdGVfY2hlY2twb2ludChzYmksICZjcGMpOwo+Pj4+ PiArCj4+Pj4+ICtvdXRfZ2NfdW5sb2NrOgo+Pj4+PiArICAgICBzcGluX2xvY2soJnNiaS0+c3Rh dF9sb2NrKTsKPj4+Pj4gKyAgICAgc2JpLT5hbGlhc19yZXNlcnZlZF9ibG9ja3MgLT0gZWkubGVu Owo+Pj4+PiArICAgICBzcGluX3VubG9jaygmc2JpLT5zdGF0X2xvY2spOwo+Pj4+PiArCj4+Pj4+ ICsgICAgIHNwaW5fbG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2NrKTsKPj4+Pj4gKyAgICAg RkRFVihmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc2JpLCBlaS5ibGspKS5pc19yZXNlcnZpbmcg PSBmYWxzZTsKPj4+Pj4gKyAgICAgc3Bpbl91bmxvY2soJkZSRUVfSShzYmkpLT5zZWdtYXBfbG9j ayk7Cj4+Pj4+ICsgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7 Cj4+Pj4+ICsKPj4+Pj4gK291dF9pbm9kZV91bmxvY2s6Cj4+Pj4+ICsgICAgIGlub2RlX3VubG9j ayhpbm9kZSk7Cj4+Pj4+ICsgICAgIG1udF9kcm9wX3dyaXRlX2ZpbGUoZmlscCk7Cj4+Pj4+ICsg ICAgIHJldHVybiBlcnI7Cj4+Pj4+ICt9Cj4+Pj4+ICsKPj4+Pj4gK3N0YXRpYyBpbnQgZjJmc19p b2NfcmVsZWFzZV9kZXZfYWxpYXMoc3RydWN0IGZpbGUgKmZpbHApCj4+Pj4+ICt7Cj4+Pj4+ICsg ICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbHApOwo+Pj4+PiArICAgICBz dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkgPSBGMkZTX0lfU0IoaW5vZGUpOwo+Pj4+PiArICAgICBz dHJ1Y3QgZXh0ZW50X3RyZWUgKmV0ID0gRjJGU19JKGlub2RlKS0+ZXh0ZW50X3RyZWVbRVhfUkVB RF07Cj4+Pj4+ICsgICAgIHN0cnVjdCBleHRlbnRfaW5mbyBlaSA9IHswLCB9Owo+Pj4+PiArICAg ICBzdHJ1Y3QgY3BfY29udHJvbCBjcGMgPSB7IENQX1NZTkMsIDAsIDAsIDAgfTsKPj4+Pj4gKyAg ICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0IGxjLCBnbGM7Cj4+Pj4+ICsgICAgIGludCBlcnI7 Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQo+Pj4+PiAr ICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgaWYgKHVubGlr ZWx5KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpKQo+Pj4+PiArICAgICAg ICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4+PiArCj4+Pj4+ICsgICAgIGVyciA9IG1udF93YW50 X3dyaXRlX2ZpbGUoZmlscCk7Cj4+Pj4+ICsgICAgIGlmIChlcnIpCj4+Pj4+ICsgICAgICAgICAg ICAgcmV0dXJuIGVycjsKPj4+Pj4gKwo+Pj4+PiArICAgICBpbm9kZV9sb2NrKGlub2RlKTsKPj4+ Pj4gKwo+Pj4+PiArICAgICBpZiAoIUlTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpIHsKPj4+Pj4g KyAgICAgICAgICAgICBlcnIgPSAtRUlOVkFMOwo+Pj4+PiArICAgICAgICAgICAgIGdvdG8gb3V0 X2lub2RlX3VubG9jazsKPj4+Pj4gKyAgICAgfQo+Pj4+PiArCj4+Pj4+ICsgICAgIGlmICghRjJG U19IQVNfQkxPQ0tTKGlub2RlKSkgewo+Pj4+PiArICAgICAgICAgICAgIGVyciA9IDA7Cj4+Pj4+ ICsgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+Pj4+PiArICAgICB9Cj4+Pj4+ ICsKPj4+Pj4gKyAgICAgZXJyID0gZmlsZW1hcF93cml0ZV9hbmRfd2FpdChpbm9kZS0+aV9tYXBw aW5nKTsKPj4+Pj4gKyAgICAgaWYgKGVycikKPj4+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9p bm9kZV91bmxvY2s7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgcmVhZF9sb2NrKCZldC0+bG9jayk7Cj4+ Pj4+ICsgICAgIGVpID0gZXQtPmxhcmdlc3Q7Cj4+Pj4+ICsgICAgIHJlYWRfdW5sb2NrKCZldC0+ bG9jayk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgZjJmc19kb3duX3dyaXRlX3RyYWNlKCZzYmktPmdj X2xvY2ssICZnbGMpOwo+Pj4+PiArICAgICBmMmZzX2xvY2tfb3Aoc2JpLCAmbGMpOwo+Pj4+PiAr Cj4+Pj4+ICsgICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElT QUJMRUQpKSkgewo+Pj4+PiArICAgICAgICAgICAgIGVyciA9IC1FSU5WQUw7Cj4+Pj4+ICsgICAg ICAgICAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+Pj4+PiArICAgICAgICAgICAgIGYy ZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4+Pj4+ICsgICAgICAgICAg ICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+Pj4+PiArICAgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAg ICAgZmlsZW1hcF9pbnZhbGlkYXRlX2xvY2soaW5vZGUtPmlfbWFwcGluZyk7Cj4+Pj4+ICsgICAg IHRydW5jYXRlX3NldHNpemUoaW5vZGUsIDApOwo+Pj4+PiArCj4+Pj4+ICsgICAgIGVyciA9IGYy ZnNfdHJ1bmNhdGVfYmxvY2tzKGlub2RlLCAwLCBmYWxzZSk7Cj4+Pj4+ICsgICAgIGlmIChlcnIp Cj4+Pj4+ICsgICAgICAgICAgICAgaV9zaXplX3dyaXRlKGlub2RlLCAobG9mZl90KWVpLmxlbiA8 PCBzYmktPmxvZ19ibG9ja3NpemUpOwo+Pj4+PiArICAgICBmaWxlbWFwX2ludmFsaWRhdGVfdW5s b2NrKGlub2RlLT5pX21hcHBpbmcpOwo+Pj4+PiArCj4+Pj4+ICsgICAgIGlmIChlcnIpIHsKPj4+ Pj4gKyAgICAgICAgICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4+Pj4+ICsgICAgICAg ICAgICAgZjJmc191cF93cml0ZV90cmFjZSgmc2JpLT5nY19sb2NrLCAmZ2xjKTsKPj4+Pj4gKyAg ICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4+Pj4+ICsgICAgIH0KPj4+Pj4gKwo+ Pj4+PiArICAgICBmMmZzX3VwZGF0ZV9pbm9kZV9wYWdlKGlub2RlKTsKPj4+Pj4gKwo+Pj4+PiAr ICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4+Pj4+ICsgICAgIGYyZnNfdXBfd3JpdGVf dHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4+Pj4KPj4+PiAgICAgICAgICBlcnIgPSBmMmZz X3dyaXRlX2NoZWNrcG9pbnQoc2JpLCAmY3BjKTsKPj4+Pgo+Pj4+IFRoYW5rcywKPj4+Pgo+Pj4+ PiArCj4+Pj4+ICsgICAgIGlub2RlX3VubG9jayhpbm9kZSk7Cj4+Pj4+ICsgICAgIG1udF9kcm9w X3dyaXRlX2ZpbGUoZmlscCk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgcmV0dXJuIGYyZnNfd3JpdGVf Y2hlY2twb2ludChzYmksICZjcGMpOwo+Pj4+PiArCj4+Pj4+ICtvdXRfaW5vZGVfdW5sb2NrOgo+ Pj4+PiArICAgICBpbm9kZV91bmxvY2soaW5vZGUpOwo+Pj4+PiArICAgICBtbnRfZHJvcF93cml0 ZV9maWxlKGZpbHApOwo+Pj4+PiArICAgICByZXR1cm4gZXJyOwo+Pj4+PiArfQo+Pj4+PiArCj4+ Pj4+ICAgIHN0YXRpYyBpbnQgZjJmc19pb2NfaW9fcHJpbyhzdHJ1Y3QgZmlsZSAqZmlscCwgdW5z aWduZWQgbG9uZyBhcmcpCj4+Pj4+ICAgIHsKPj4+Pj4gICAgICAgIHN0cnVjdCBpbm9kZSAqaW5v ZGUgPSBmaWxlX2lub2RlKGZpbHApOwo+Pj4+PiBAQCAtNDA0MSw3ICs0Mjk3LDcgQEAgc3RhdGlj IGludCByZXNlcnZlX2NvbXByZXNzX2Jsb2NrcyhzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4sIHBn b2ZmX3QgY291bnQsCj4+Pj4+ICAgICAgICAgICAgICAgIH0KPj4+Pj4KPj4+Pj4gICAgICAgICAg ICAgICAgcmV0ID0gaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgZG4tPmlub2RlLAo+Pj4+PiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRvX3Jlc2VydmVk LCBmYWxzZSk7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmdG9fcmVzZXJ2ZWQsIGZhbHNlLCBmYWxzZSk7Cj4+Pj4+ICAgICAgICAgICAgICAgIGlm ICh1bmxpa2VseShyZXQpKQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4+Pj4+Cj4+Pj4+IEBAIC00NzQyLDggKzQ5OTgsMTQgQEAgc3RhdGljIGxvbmcgX19mMmZzX2lv Y3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFy ZykKPj4+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIGYyZnNfaW9jX2NvbXByZXNzX2ZpbGUoZmls cCk7Cj4+Pj4+ICAgICAgICBjYXNlIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfRklMRToKPj4+Pj4g ICAgICAgICAgICAgICAgcmV0dXJuIGYyZnNfaW9jX2dldF9kZXZfYWxpYXNfZmlsZShmaWxwLCBh cmcpOwo+Pj4+PiArICAgICBjYXNlIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVTOgo+Pj4+ PiArICAgICAgICAgICAgIHJldHVybiBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX3N0YXR1cyhmaWxw LCBhcmcpOwo+Pj4+PiAgICAgICAgY2FzZSBGMkZTX0lPQ19JT19QUklPOgo+Pj4+PiAgICAgICAg ICAgICAgICByZXR1cm4gZjJmc19pb2NfaW9fcHJpbyhmaWxwLCBhcmcpOwo+Pj4+PiArICAgICBj YXNlIEYyRlNfSU9DX1JFU0VSVkVfREVWX0FMSUFTOgo+Pj4+PiArICAgICAgICAgICAgIHJldHVy biBmMmZzX2lvY19yZXNlcnZlX2Rldl9hbGlhcyhmaWxwKTsKPj4+Pj4gKyAgICAgY2FzZSBGMkZT X0lPQ19SRUxFQVNFX0RFVl9BTElBUzoKPj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gZjJmc19p b2NfcmVsZWFzZV9kZXZfYWxpYXMoZmlscCk7Cj4+Pj4+ICAgICAgICBkZWZhdWx0Ogo+Pj4+PiAg ICAgICAgICAgICAgICByZXR1cm4gLUVOT1RUWTsKPj4+Pj4gICAgICAgIH0KPj4+Pj4gQEAgLTU1 MzAsNyArNTc5MiwxMCBAQCBsb25nIGYyZnNfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxl LCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKPj4+Pj4gICAgICAgIGNhc2Ug RjJGU19JT0NfREVDT01QUkVTU19GSUxFOgo+Pj4+PiAgICAgICAgY2FzZSBGMkZTX0lPQ19DT01Q UkVTU19GSUxFOgo+Pj4+PiAgICAgICAgY2FzZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFTX0ZJTEU6 Cj4+Pj4+ICsgICAgIGNhc2UgRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVM6Cj4+Pj4+ICAg ICAgICBjYXNlIEYyRlNfSU9DX0lPX1BSSU86Cj4+Pj4+ICsgICAgIGNhc2UgRjJGU19JT0NfUkVT RVJWRV9ERVZfQUxJQVM6Cj4+Pj4+ICsgICAgIGNhc2UgRjJGU19JT0NfUkVMRUFTRV9ERVZfQUxJ QVM6Cj4+Pj4+ICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+PiAgICAgICAgZGVmYXVsdDoKPj4+ Pj4gICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9JT0NUTENNRDsKPj4+Pj4gZGlmZiAtLWdpdCBh L2ZzL2YyZnMvZ2MuYyBiL2ZzL2YyZnMvZ2MuYwo+Pj4+PiBpbmRleCBmZmFhN2JhNzZhMWIuLjkz YmNiMzVhNWI1ZCAxMDA2NDQKPj4+Pj4gLS0tIGEvZnMvZjJmcy9nYy5jCj4+Pj4+ICsrKyBiL2Zz L2YyZnMvZ2MuYwo+Pj4+PiBAQCAtMjE5NywyOSArMjE5NywzNyBAQCBpbnQgZjJmc19nY19yYW5n ZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+Pj4+ICAgICAgICByZXR1cm4gMDsKPj4+Pj4g ICAgfQo+Pj4+Pgo+Pj4+PiArdm9pZCBmMmZzX3Jlc2V0X2djX3ZpY3RpbV9yZXNvdXJjZShzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgc3RhcnQsIHVuc2lnbmVkIGludCBlbmQpCj4+Pj4+ICt7Cj4+Pj4+ICsgICAgIGludCBp Owo+Pj4+PiArCj4+Pj4+ICsgICAgIG11dGV4X2xvY2soJkRJUlRZX0koc2JpKS0+c2VnbGlzdF9s b2NrKTsKPj4+Pj4gKyAgICAgZm9yIChpID0gMDsgaSA8IE1BWF9HQ19QT0xJQ1k7IGkrKykKPj4+ Pj4gKyAgICAgICAgICAgICBpZiAoU0lUX0koc2JpKS0+bGFzdF92aWN0aW1baV0gPj0gc3RhcnQg JiYKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIFNJVF9JKHNiaSktPmxhc3RfdmljdGltW2ld IDw9IGVuZCkKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIFNJVF9JKHNiaSktPmxhc3Rfdmlj dGltW2ldID0gMDsKPj4+Pj4gKwo+Pj4+PiArICAgICBmb3IgKGkgPSBCR19HQzsgaSA8PSBGR19H QzsgaSsrKQo+Pj4+PiArICAgICAgICAgICAgIGlmIChzYmktPm5leHRfdmljdGltX3NlZ1tpXSA+ PSBzdGFydCAmJgo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5uZXh0X3ZpY3RpbV9z ZWdbaV0gPD0gZW5kKQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5uZXh0X3ZpY3Rp bV9zZWdbaV0gPSBOVUxMX1NFR05POwo+Pj4+PiArICAgICBtdXRleF91bmxvY2soJkRJUlRZX0ko c2JpKS0+c2VnbGlzdF9sb2NrKTsKPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiAgICBzdGF0aWMgaW50 IGZyZWVfc2VnbWVudF9yYW5nZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+Pj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2VjcywgYm9vbCBkcnlfcnVu KQo+Pj4+PiAgICB7Cj4+Pj4+ICAgICAgICB1bnNpZ25lZCBpbnQgbmV4dF9pbnVzZSwgc3RhcnQs IGVuZDsKPj4+Pj4gICAgICAgIHN0cnVjdCBjcF9jb250cm9sIGNwYyA9IHsgQ1BfUkVTSVpFLCAw LCAwLCAwIH07Cj4+Pj4+IC0gICAgIGludCBnY19tb2RlLCBnY190eXBlOwo+Pj4+PiAgICAgICAg aW50IGVyciA9IDA7Cj4+Pj4+ICAgICAgICBpbnQgdHlwZTsKPj4+Pj4KPj4+Pj4gLSAgICAgLyog Rm9yY2UgYmxvY2sgYWxsb2NhdGlvbiBmb3IgR0MgKi8KPj4+Pj4gICAgICAgIE1BSU5fU0VDUyhz YmkpIC09IHNlY3M7Cj4+Pj4+ICAgICAgICBzdGFydCA9IE1BSU5fU0VDUyhzYmkpICogU0VHU19Q RVJfU0VDKHNiaSk7Cj4+Pj4+ICAgICAgICBlbmQgPSBNQUlOX1NFR1Moc2JpKSAtIDE7Cj4+Pj4+ Cj4+Pj4+IC0gICAgIG11dGV4X2xvY2soJkRJUlRZX0koc2JpKS0+c2VnbGlzdF9sb2NrKTsKPj4+ Pj4gLSAgICAgZm9yIChnY19tb2RlID0gMDsgZ2NfbW9kZSA8IE1BWF9HQ19QT0xJQ1k7IGdjX21v ZGUrKykKPj4+Pj4gLSAgICAgICAgICAgICBpZiAoU0lUX0koc2JpKS0+bGFzdF92aWN0aW1bZ2Nf bW9kZV0gPj0gc3RhcnQpCj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgICBTSVRfSShzYmkpLT5s YXN0X3ZpY3RpbVtnY19tb2RlXSA9IDA7Cj4+Pj4+IC0KPj4+Pj4gLSAgICAgZm9yIChnY190eXBl ID0gQkdfR0M7IGdjX3R5cGUgPD0gRkdfR0M7IGdjX3R5cGUrKykKPj4+Pj4gLSAgICAgICAgICAg ICBpZiAoc2JpLT5uZXh0X3ZpY3RpbV9zZWdbZ2NfdHlwZV0gPj0gc3RhcnQpCj4+Pj4+IC0gICAg ICAgICAgICAgICAgICAgICBzYmktPm5leHRfdmljdGltX3NlZ1tnY190eXBlXSA9IE5VTExfU0VH Tk87Cj4+Pj4+IC0gICAgIG11dGV4X3VubG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xvY2sp Owo+Pj4+PiArICAgICBmMmZzX3Jlc2V0X2djX3ZpY3RpbV9yZXNvdXJjZShzYmksIHN0YXJ0LCBl bmQpOwo+Pj4+Pgo+Pj4+PiAgICAgICAgLyogTW92ZSBvdXQgY3Vyc2VncyBmcm9tIHRoZSB0YXJn ZXQgcmFuZ2UgKi8KPj4+Pj4gICAgICAgIGZvciAodHlwZSA9IENVUlNFR19IT1RfREFUQTsgdHlw ZSA8IE5SX0NVUlNFR19QRVJTSVNUX1RZUEU7IHR5cGUrKykgewo+Pj4+PiBkaWZmIC0tZ2l0IGEv ZnMvZjJmcy9uYW1laS5jIGIvZnMvZjJmcy9uYW1laS5jCj4+Pj4+IGluZGV4IGNhYzAzYjhlOTFh MS4uOGMzYjU3OTg3ZjZjIDEwMDY0NAo+Pj4+PiAtLS0gYS9mcy9mMmZzL25hbWVpLmMKPj4+Pj4g KysrIGIvZnMvZjJmcy9uYW1laS5jCj4+Pj4+IEBAIC00MjUsNiArNDI1LDkgQEAgc3RhdGljIGlu dCBmMmZzX2xpbmsoc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwgc3RydWN0IGlub2RlICpkaXIs Cj4+Pj4+ICAgICAgICBpZiAoIWYyZnNfaXNfY2hlY2twb2ludF9yZWFkeShzYmkpKQo+Pj4+PiAg ICAgICAgICAgICAgICByZXR1cm4gLUVOT1NQQzsKPj4+Pj4KPj4+Pj4gKyAgICAgaWYgKElTX0RF VklDRV9BTElBU0lORyhpbm9kZSkpCj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsK Pj4+Pj4gKwo+Pj4+PiAgICAgICAgZXJyID0gZnNjcnlwdF9wcmVwYXJlX2xpbmsob2xkX2RlbnRy eSwgZGlyLCBkZW50cnkpOwo+Pj4+PiAgICAgICAgaWYgKGVycikKPj4+Pj4gICAgICAgICAgICAg ICAgcmV0dXJuIGVycjsKPj4+Pj4gQEAgLTU2OCw2ICs1NzEsOSBAQCBzdGF0aWMgaW50IGYyZnNf dW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCj4+Pj4+Cj4+ Pj4+ICAgICAgICB0cmFjZV9mMmZzX3VubGlua19lbnRlcihkaXIsIGRlbnRyeSk7Cj4+Pj4+Cj4+ Pj4+ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+Pj4+PiArICAgICAgICAg ICAgIHJldHVybiAtRVBFUk07Cj4+Pj4+ICsKPj4+Pj4gICAgICAgIGlmICh1bmxpa2VseShmMmZz X2NwX2Vycm9yKHNiaSkpKSB7Cj4+Pj4+ICAgICAgICAgICAgICAgIGVyciA9IC1FSU87Cj4+Pj4+ ICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+Pj4+PiBAQCAtOTQ2LDYgKzk1Miw5IEBAIHN0YXRp YyBpbnQgZjJmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAq b2xkX2RpciwKPj4+Pj4gICAgICAgIGJvb2wgb2xkX2lzX2RpciA9IFNfSVNESVIob2xkX2lub2Rl LT5pX21vZGUpOwo+Pj4+PiAgICAgICAgaW50IGVycjsKPj4+Pj4KPj4+Pj4gKyAgICAgaWYgKElT X0RFVklDRV9BTElBU0lORyhvbGRfaW5vZGUpKQo+Pj4+PiArICAgICAgICAgICAgIHJldHVybiAt RVBFUk07Cj4+Pj4+ICsKPj4+Pj4gICAgICAgIGlmICh1bmxpa2VseShmMmZzX2NwX2Vycm9yKHNi aSkpKQo+Pj4+PiAgICAgICAgICAgICAgICByZXR1cm4gLUVJTzsKPj4+Pj4gICAgICAgIGlmICgh ZjJmc19pc19jaGVja3BvaW50X3JlYWR5KHNiaSkpCj4+Pj4+IEBAIC0xMDE2LDYgKzEwMjUsOCBA QCBzdGF0aWMgaW50IGYyZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3Qg aW5vZGUgKm9sZF9kaXIsCj4+Pj4+ICAgICAgICB9Cj4+Pj4+Cj4+Pj4+ICAgICAgICBpZiAobmV3 X2lub2RlKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhuZXdf aW5vZGUpKQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPj4+Pj4K Pj4+Pj4gICAgICAgICAgICAgICAgZXJyID0gLUVOT1RFTVBUWTsKPj4+Pj4gICAgICAgICAgICAg ICAgaWYgKG9sZF9pc19kaXIgJiYgIWYyZnNfZW1wdHlfZGlyKG5ld19pbm9kZSkpCj4+Pj4+IEBA IC0xMTQzLDYgKzExNTQsOSBAQCBzdGF0aWMgaW50IGYyZnNfY3Jvc3NfcmVuYW1lKHN0cnVjdCBp bm9kZSAqb2xkX2Rpciwgc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwKPj4+Pj4gICAgICAgIGlu dCBvbGRfbmxpbmsgPSAwLCBuZXdfbmxpbmsgPSAwOwo+Pj4+PiAgICAgICAgaW50IGVycjsKPj4+ Pj4KPj4+Pj4gKyAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhvbGRfaW5vZGUpIHx8IElTX0RF VklDRV9BTElBU0lORyhuZXdfaW5vZGUpKQo+Pj4+PiArICAgICAgICAgICAgIHJldHVybiAtRVBF Uk07Cj4+Pj4+ICsKPj4+Pj4gICAgICAgIGlmICh1bmxpa2VseShmMmZzX2NwX2Vycm9yKHNiaSkp KQo+Pj4+PiAgICAgICAgICAgICAgICByZXR1cm4gLUVJTzsKPj4+Pj4gICAgICAgIGlmICghZjJm c19pc19jaGVja3BvaW50X3JlYWR5KHNiaSkpCj4+Pj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL3Nl Z21lbnQuYyBiL2ZzL2YyZnMvc2VnbWVudC5jCj4+Pj4+IGluZGV4IGQ3MWRkYjNlZTkxOC4uZDcw ZGM1ZWYzZGU0IDEwMDY0NAo+Pj4+PiAtLS0gYS9mcy9mMmZzL3NlZ21lbnQuYwo+Pj4+PiArKysg Yi9mcy9mMmZzL3NlZ21lbnQuYwo+Pj4+PiBAQCAtMjYxLDcgKzI2MSw3IEBAIHN0YXRpYyBpbnQg X19yZXBsYWNlX2F0b21pY193cml0ZV9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBwZ29mZl90 IGluZGV4LAo+Pj4+PiAgICAgICAgfSBlbHNlIHsKPj4+Pj4gICAgICAgICAgICAgICAgYmxrY250 X3QgY291bnQgPSAxOwo+Pj4+Pgo+Pj4+PiAtICAgICAgICAgICAgIGVyciA9IGluY192YWxpZF9i bG9ja19jb3VudChzYmksIGlub2RlLCAmY291bnQsIHRydWUpOwo+Pj4+PiArICAgICAgICAgICAg IGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGlub2RlLCAmY291bnQsIHRydWUsIGZh bHNlKTsKPj4+Pj4gICAgICAgICAgICAgICAgaWYgKGVycikgewo+Pj4+PiAgICAgICAgICAgICAg ICAgICAgICAgIGYyZnNfcHV0X2Rub2RlKCZkbik7Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIGVycjsKPj4+Pj4gQEAgLTI1MDIsMzUgKzI1MDIsNDIgQEAgc3RhdGljIGludCB1 cGRhdGVfc2l0X2VudHJ5X2Zvcl9hbGxvYyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVj dCBzZWdfZW50cnkKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBzZWdubywgYmxvY2tfdCBibGthZGRyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBpbnQgZGVs KQo+Pj4+PiAgICB7Cj4+Pj4+ICAgICAgICBib29sIGV4aXN0Owo+Pj4+PiArICAgICBpbnQgZGVs X2NvdW50ID0gZGVsOwo+Pj4+PiArICAgICBpbnQgaTsKPj4+Pj4KPj4+Pj4gLSAgICAgZXhpc3Qg PSBmMmZzX3Rlc3RfYW5kX3NldF9iaXQob2Zmc2V0LCBzZS0+Y3VyX3ZhbGlkX21hcCk7Cj4+Pj4+ IC0gICAgIGlmICh1bmxpa2VseShleGlzdCkpIHsKPj4+Pj4gLSAgICAgICAgICAgICBmMmZzX2Vy cihzYmksICJCaXRtYXAgd2FzIHdyb25nbHkgc2V0LCBibGs6JXUiLCBibGthZGRyKTsKPj4+Pj4g LSAgICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksIDEpOwo+Pj4+PiAtICAgICAgICAgICAgIHNl LT52YWxpZF9ibG9ja3MtLTsKPj4+Pj4gLSAgICAgICAgICAgICBkZWwgPSAwOwo+Pj4+PiAtICAg ICB9Cj4+Pj4+ICsgICAgIGYyZnNfYnVnX29uKHNiaSwgR0VUX1NFR05PKHNiaSwgYmxrYWRkcikg IT0gR0VUX1NFR05PKHNiaSwgYmxrYWRkciArIGRlbF9jb3VudCAtIDEpKTsKPj4+Pj4KPj4+Pj4g LSAgICAgaWYgKGYyZnNfYmxvY2tfdW5pdF9kaXNjYXJkKHNiaSkgJiYKPj4+Pj4gLSAgICAgICAg ICAgICAgICAgICAgICFmMmZzX3Rlc3RfYW5kX3NldF9iaXQob2Zmc2V0LCBzZS0+ZGlzY2FyZF9t YXApKQo+Pj4+PiAtICAgICAgICAgICAgIHNiaS0+ZGlzY2FyZF9ibGtzLS07Cj4+Pj4+ICsgICAg IGZvciAoaSA9IDA7IGkgPCBkZWxfY291bnQ7IGkrKykgewo+Pj4+PiArICAgICAgICAgICAgIGV4 aXN0ID0gZjJmc190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCArIGksIHNlLT5jdXJfdmFsaWRfbWFw KTsKPj4+Pj4gKyAgICAgICAgICAgICBpZiAodW5saWtlbHkoZXhpc3QpKSB7Cj4+Pj4+ICsgICAg ICAgICAgICAgICAgICAgICBmMmZzX2VycihzYmksICJCaXRtYXAgd2FzIHdyb25nbHkgc2V0LCBi bGs6JXUiLCBibGthZGRyICsgaSk7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBmMmZzX2J1 Z19vbihzYmksIDEpOwo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgc2UtPnZhbGlkX2Jsb2Nr cy0tOwo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgZGVsIC09IDE7Cj4+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICBjb250aW51ZTsKPj4+Pj4gKyAgICAgICAgICAgICB9Cj4+Pj4+Cj4+Pj4+ IC0gICAgIC8qCj4+Pj4+IC0gICAgICAqIFNTUiBzaG91bGQgbmV2ZXIgcmV1c2UgYmxvY2sgd2hp Y2ggaXMgY2hlY2twb2ludGVkCj4+Pj4+IC0gICAgICAqIG9yIG5ld2x5IGludmFsaWRhdGVkLgo+ Pj4+PiAtICAgICAgKi8KPj4+Pj4gLSAgICAgaWYgKCFpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklf Q1BfRElTQUJMRUQpKSB7Cj4+Pj4+IC0gICAgICAgICAgICAgaWYgKCFmMmZzX3Rlc3RfYW5kX3Nl dF9iaXQob2Zmc2V0LCBzZS0+Y2twdF92YWxpZF9tYXApKSB7Cj4+Pj4+IC0gICAgICAgICAgICAg ICAgICAgICBzZS0+Y2twdF92YWxpZF9ibG9ja3MrKzsKPj4+Pj4gLSAgICAgICAgICAgICAgICAg ICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24oc2JpKSkKPj4+Pj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2V0X3NlY19lbnRyeShzYmksIHNlZ25vKS0+Y2twdF92YWxpZF9ibG9ja3Mr KzsKPj4+Pj4gKyAgICAgICAgICAgICBpZiAoZjJmc19ibG9ja191bml0X2Rpc2NhcmQoc2JpKSAm Jgo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZjJmc190ZXN0X2FuZF9zZXRf Yml0KG9mZnNldCArIGksIHNlLT5kaXNjYXJkX21hcCkpCj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICBzYmktPmRpc2NhcmRfYmxrcy0tOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgICAgICAgLyoK Pj4+Pj4gKyAgICAgICAgICAgICAgKiBTU1Igc2hvdWxkIG5ldmVyIHJldXNlIGJsb2NrIHdoaWNo IGlzIGNoZWNrcG9pbnRlZAo+Pj4+PiArICAgICAgICAgICAgICAqIG9yIG5ld2x5IGludmFsaWRh dGVkLgo+Pj4+PiArICAgICAgICAgICAgICAqLwo+Pj4+PiArICAgICAgICAgICAgIGlmICghaXNf c2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0NQX0RJU0FCTEVEKSkgewo+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgaWYgKCFmMmZzX3Rlc3RfYW5kX3NldF9iaXQob2Zmc2V0ICsgaSwgc2UtPmNrcHRf dmFsaWRfbWFwKSkgewo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZS0+Y2tw dF92YWxpZF9ibG9ja3MrKzsKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KF9faXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdldF9zZWNfZW50cnkoc2JpLCBzZWdubyktPmNrcHRfdmFsaWRfYmxvY2tz Kys7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICB9Cj4+Pj4+ICAgICAgICAgICAgICAgIH0K Pj4+Pj4gLSAgICAgfQo+Pj4+Pgo+Pj4+PiAtICAgICBpZiAoIWYyZnNfdGVzdF9iaXQob2Zmc2V0 LCBzZS0+Y2twdF92YWxpZF9tYXApKSB7Cj4+Pj4+IC0gICAgICAgICAgICAgc2UtPmNrcHRfdmFs aWRfYmxvY2tzICs9IGRlbDsKPj4+Pj4gLSAgICAgICAgICAgICBpZiAoX19pc19sYXJnZV9zZWN0 aW9uKHNiaSkpCj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgICBnZXRfc2VjX2VudHJ5KHNiaSwg c2Vnbm8pLT5ja3B0X3ZhbGlkX2Jsb2NrcyArPSBkZWw7Cj4+Pj4+ICsgICAgICAgICAgICAgaWYg KCFmMmZzX3Rlc3RfYml0KG9mZnNldCArIGksIHNlLT5ja3B0X3ZhbGlkX21hcCkpIHsKPj4+Pj4g KyAgICAgICAgICAgICAgICAgICAgIHNlLT5ja3B0X3ZhbGlkX2Jsb2NrcyArPSAxOwo+Pj4+PiAr ICAgICAgICAgICAgICAgICAgICAgaWYgKF9faXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQo+Pj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfc2VjX2VudHJ5KHNiaSwgc2Vnbm8pLT5j a3B0X3ZhbGlkX2Jsb2NrcyArPSAxOwo+Pj4+PiArICAgICAgICAgICAgIH0KPj4+Pj4gICAgICAg IH0KPj4+Pj4KPj4+Pj4gICAgICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24oc2JpKSkKPj4+Pj4g QEAgLTI1ODUsOSArMjU5MiwxNCBAQCB2b2lkIGYyZnNfaW52YWxpZGF0ZV9ibG9ja3Moc3RydWN0 IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGFkZHIsCj4+Pj4+ICAgICAgICB1bnNpZ25lZCBp bnQgc2Vnbm8gPSBHRVRfU0VHTk8oc2JpLCBhZGRyKTsKPj4+Pj4gICAgICAgIHN0cnVjdCBzaXRf aW5mbyAqc2l0X2kgPSBTSVRfSShzYmkpOwo+Pj4+PiAgICAgICAgYmxvY2tfdCBhZGRyX3N0YXJ0 ID0gYWRkciwgYWRkcl9lbmQgPSBhZGRyICsgbGVuIC0gMTsKPj4+Pj4gLSAgICAgdW5zaWduZWQg aW50IHNlZ19udW0gPSBHRVRfU0VHTk8oc2JpLCBhZGRyX2VuZCkgLSBzZWdubyArIDE7Cj4+Pj4+ ICsgICAgIHVuc2lnbmVkIGludCBzZWdfbnVtOwo+Pj4+PiAgICAgICAgdW5zaWduZWQgaW50IGkg PSAxLCBtYXhfYmxvY2tzID0gc2JpLT5ibG9ja3NfcGVyX3NlZywgY250Owo+Pj4+Pgo+Pj4+PiAr ICAgICBpZiAobGVuID09IDApCj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuOwo+Pj4+PiArCj4+ Pj4+ICsgICAgIHNlZ19udW0gPSBHRVRfU0VHTk8oc2JpLCBhZGRyX2VuZCkgLSBzZWdubyArIDE7 Cj4+Pj4+ICsKPj4+Pj4gICAgICAgIGYyZnNfYnVnX29uKHNiaSwgYWRkciA9PSBOVUxMX0FERFIp Owo+Pj4+PiAgICAgICAgaWYgKGFkZHIgPT0gTkVXX0FERFIgfHwgYWRkciA9PSBDT01QUkVTU19B RERSKQo+Pj4+PiAgICAgICAgICAgICAgICByZXR1cm47Cj4+Pj4+IEBAIC0yNjIwLDYgKzI2MzIs NTIgQEAgdm9pZCBmMmZzX2ludmFsaWRhdGVfYmxvY2tzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwgYmxvY2tfdCBhZGRyLAo+Pj4+PiAgICAgICAgdXBfd3JpdGUoJnNpdF9pLT5zZW50cnlfbG9j ayk7Cj4+Pj4+ICAgIH0KPj4+Pj4KPj4+Pj4gK3ZvaWQgZjJmc19yZXNlcnZlX2RldmljZV9hbGlh cyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3QgYWRkciwKPj4+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbikKPj4+Pj4gK3sKPj4+Pj4gKyAg ICAgdW5zaWduZWQgaW50IHNlZ25vID0gR0VUX1NFR05PKHNiaSwgYWRkcik7Cj4+Pj4+ICsgICAg IHN0cnVjdCBzaXRfaW5mbyAqc2l0X2kgPSBTSVRfSShzYmkpOwo+Pj4+PiArICAgICBibG9ja190 IGFkZHJfc3RhcnQgPSBhZGRyLCBhZGRyX2VuZCA9IGFkZHIgKyBsZW4gLSAxOwo+Pj4+PiArICAg ICB1bnNpZ25lZCBpbnQgc2VnX251bTsKPj4+Pj4gKyAgICAgdW5zaWduZWQgaW50IGkgPSAxLCBt YXhfYmxvY2tzID0gc2JpLT5ibG9ja3NfcGVyX3NlZywgY250Owo+Pj4+PiArCj4+Pj4+ICsgICAg IGlmIChsZW4gPT0gMCkKPj4+Pj4gKyAgICAgICAgICAgICByZXR1cm47Cj4+Pj4+ICsKPj4+Pj4g KyAgICAgc2VnX251bSA9IEdFVF9TRUdOTyhzYmksIGFkZHJfZW5kKSAtIHNlZ25vICsgMTsKPj4+ Pj4gKwo+Pj4+PiArICAgICBkb3duX3dyaXRlKCZzaXRfaS0+c2VudHJ5X2xvY2spOwo+Pj4+PiAr Cj4+Pj4+ICsgICAgIGlmIChzZWdfbnVtID09IDEpCj4+Pj4+ICsgICAgICAgICAgICAgY250ID0g bGVuOwo+Pj4+PiArICAgICBlbHNlCj4+Pj4+ICsgICAgICAgICAgICAgY250ID0gbWF4X2Jsb2Nr cyAtIEdFVF9CTEtPRkZfRlJPTV9TRUcwKHNiaSwgYWRkcik7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAg ZG8gewo+Pj4+PiArICAgICAgICAgICAgIHVwZGF0ZV9zZWdtZW50X210aW1lKHNiaSwgYWRkcl9z dGFydCwgMCk7Cj4+Pj4+ICsgICAgICAgICAgICAgdXBkYXRlX3NpdF9lbnRyeShzYmksIGFkZHJf c3RhcnQsIGNudCk7Cj4+Pj4+ICsgICAgICAgICAgICAgX19zZXRfdGVzdF9hbmRfaW51c2Uoc2Jp LCBzZWdubyk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAgICAgICAvKiBSZW1vdmUgdGhlIHNlZ21l bnQgZnJvbSBQUkUgKHByZWZyZWUpIHRvIHByZXZlbnQgY2hlY2twb2ludCBmcm9tIGZyZWVpbmcg aXQhICovCj4+Pj4+ICsgICAgICAgICAgICAgbXV0ZXhfbG9jaygmRElSVFlfSShzYmkpLT5zZWds aXN0X2xvY2spOwo+Pj4+PiArICAgICAgICAgICAgIGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoc2Vn bm8sIERJUlRZX0koc2JpKS0+ZGlydHlfc2VnbWFwW1BSRV0pKQo+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgRElSVFlfSShzYmkpLT5ucl9kaXJ0eVtQUkVdLS07Cj4+Pj4+ICsgICAgICAgICAg ICAgbXV0ZXhfdW5sb2NrKCZESVJUWV9JKHNiaSktPnNlZ2xpc3RfbG9jayk7Cj4+Pj4+ICsKPj4+ Pj4gKyAgICAgICAgICAgICAvKiBhZGQgaXQgaW50byBkaXJ0eSBzZWdsaXN0ICovCj4+Pj4+ICsg ICAgICAgICAgICAgbG9jYXRlX2RpcnR5X3NlZ21lbnQoc2JpLCBzZWdubyk7Cj4+Pj4+ICsKPj4+ Pj4gKyAgICAgICAgICAgICAvKiB1cGRhdGUgQGFkZHJfc3RhcnQgYW5kIEBjbnQgYW5kIEBzZWdu byAqLwo+Pj4+PiArICAgICAgICAgICAgIGFkZHJfc3RhcnQgPSBTVEFSVF9CTE9DSyhzYmksICsr c2Vnbm8pOwo+Pj4+PiArICAgICAgICAgICAgIGlmICgrK2kgPT0gc2VnX251bSkKPj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgIGNudCA9IEdFVF9CTEtPRkZfRlJPTV9TRUcwKHNiaSwgYWRkcl9l bmQpICsgMTsKPj4+Pj4gKyAgICAgICAgICAgICBlbHNlCj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICBjbnQgPSBtYXhfYmxvY2tzOwo+Pj4+PiArICAgICB9IHdoaWxlIChpIDw9IHNlZ19udW0p Owo+Pj4+PiArCj4+Pj4+ICsgICAgIHVwX3dyaXRlKCZzaXRfaS0+c2VudHJ5X2xvY2spOwo+Pj4+ PiArfQo+Pj4+PiArCj4+Pj4+ICAgIGJvb2wgZjJmc19pc19jaGVja3BvaW50ZWRfZGF0YShzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3QgYmxrYWRkcikKPj4+Pj4gICAgewo+Pj4+PiAg ICAgICAgc3RydWN0IHNpdF9pbmZvICpzaXRfaSA9IFNJVF9JKHNiaSk7Cj4+Pj4+IEBAIC0yNzU4 LDggKzI4MTYsMTMgQEAgc3RhdGljIGludCBpc19uZXh0X3NlZ21lbnRfZnJlZShzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmksCj4+Pj4+ICAgICAgICB1bnNpZ25lZCBpbnQgc2Vnbm8gPSBjdXJzZWct PnNlZ25vICsgMTsKPj4+Pj4gICAgICAgIHN0cnVjdCBmcmVlX3NlZ21hcF9pbmZvICpmcmVlX2kg PSBGUkVFX0koc2JpKTsKPj4+Pj4KPj4+Pj4gLSAgICAgaWYgKHNlZ25vIDwgTUFJTl9TRUdTKHNi aSkgJiYgc2Vnbm8gJSBTRUdTX1BFUl9TRUMoc2JpKSkKPj4+Pj4gKyAgICAgaWYgKHNlZ25vIDwg TUFJTl9TRUdTKHNiaSkgJiYgc2Vnbm8gJSBTRUdTX1BFUl9TRUMoc2JpKSkgewo+Pj4+PiArICAg ICAgICAgICAgIGludCBkZXZpID0gZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgU1RBUlRf QkxPQ0soc2JpLCBzZWdubykpOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgICAgICAgaWYgKGYyZnNf ZGV2X2lzX3Jlc2VydmluZyhzYmksIGRldmkpKQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIDA7Cj4+Pj4+ICAgICAgICAgICAgICAgIHJldHVybiAhdGVzdF9iaXQoc2Vnbm8sIGZy ZWVfaS0+ZnJlZV9zZWdtYXApOwo+Pj4+PiArICAgICB9Cj4+Pj4+ICAgICAgICByZXR1cm4gMDsK Pj4+Pj4gICAgfQo+Pj4+Pgo+Pj4+PiBAQCAtMjc3OCw3ICsyODQxLDggQEAgc3RhdGljIGludCBn ZXRfbmV3X3NlZ21lbnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4+PiAgICAgICAgdW5z aWduZWQgaW50IGFsbG9jX3BvbGljeSA9IHNiaS0+YWxsb2NhdGVfc2VjdGlvbl9wb2xpY3k7Cj4+ Pj4+ICAgICAgICB1bnNpZ25lZCBpbnQgYWxsb2NfaGludCA9IHNiaS0+YWxsb2NhdGVfc2VjdGlv bl9oaW50Owo+Pj4+PiAgICAgICAgYm9vbCBpbml0ID0gdHJ1ZTsKPj4+Pj4gLSAgICAgaW50IGk7 Cj4+Pj4+ICsgICAgIGJvb2wgbG9vcGVkID0gZmFsc2U7Cj4+Pj4+ICsgICAgIGludCBpLCBkZXZp Owo+Pj4+PiAgICAgICAgaW50IHJldCA9IDA7Cj4+Pj4+Cj4+Pj4+ICAgICAgICBzcGluX2xvY2so JmZyZWVfaS0+c2VnbWFwX2xvY2spOwo+Pj4+PiBAQCAtMjc5MSw4ICsyODU1LDEzIEBAIHN0YXRp YyBpbnQgZ2V0X25ld19zZWdtZW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4+Pj4gICAg ICAgIGlmICghbmV3X3NlYyAmJiAoKCpuZXdzZWcgKyAxKSAlIFNFR1NfUEVSX1NFQyhzYmkpKSkg ewo+Pj4+PiAgICAgICAgICAgICAgICBzZWdubyA9IGZpbmRfbmV4dF96ZXJvX2JpdChmcmVlX2kt PmZyZWVfc2VnbWFwLAo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9TRUdfRlJPTV9T RUMoc2JpLCBoaW50ICsgMSksICpuZXdzZWcgKyAxKTsKPj4+Pj4gLSAgICAgICAgICAgICBpZiAo c2Vnbm8gPCBHRVRfU0VHX0ZST01fU0VDKHNiaSwgaGludCArIDEpKQo+Pj4+PiArICAgICAgICAg ICAgIGlmIChzZWdubyA8IEdFVF9TRUdfRlJPTV9TRUMoc2JpLCBoaW50ICsgMSkpIHsKPj4+Pj4g KyAgICAgICAgICAgICAgICAgICAgIGRldmkgPSBmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc2Jp LCBTVEFSVF9CTE9DSyhzYmksIHNlZ25vKSk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgIGlmIChmMmZzX2Rldl9pc19hbGxvY19ibG9ja2VkKHNiaSwgZGV2aSwgcGlubmluZykp Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluZF9vdGhlcl96b25l Owo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZ290X2l0Owo+Pj4+PiArICAgICAg ICAgICAgIH0KPj4+Pj4gICAgICAgIH0KPj4+Pj4KPj4+Pj4gICAgI2lmZGVmIENPTkZJR19CTEtf REVWX1pPTkVECj4+Pj4+IEBAIC0yODI4LDMzICsyODk3LDQyIEBAIHN0YXRpYyBpbnQgZ2V0X25l d19zZWdtZW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4+Pj4gICAgZmluZF9vdGhlcl96 b25lOgo+Pj4+PiAgICAgICAgc2Vjbm8gPSBmaW5kX25leHRfemVyb19iaXQoZnJlZV9pLT5mcmVl X3NlY21hcCwgTUFJTl9TRUNTKHNiaSksIGhpbnQpOwo+Pj4+Pgo+Pj4+PiAtI2lmZGVmIENPTkZJ R19CTEtfREVWX1pPTkVECj4+Pj4+IC0gICAgIGlmIChzZWNubyA+PSBNQUlOX1NFQ1Moc2JpKSAm JiBmMmZzX3NiX2hhc19ibGt6b25lZChzYmkpKSB7Cj4+Pj4+IC0gICAgICAgICAgICAgLyogV3Jp dGUgb25seSB0byBzZXF1ZW50aWFsIHpvbmVzICovCj4+Pj4+IC0gICAgICAgICAgICAgaWYgKHNi aS0+Ymxrem9uZV9hbGxvY19wb2xpY3kgPT0gQkxLWk9ORV9BTExPQ19PTkxZX1NFUSkgewo+Pj4+ PiAtICAgICAgICAgICAgICAgICAgICAgaGludCA9IEdFVF9TRUNfRlJPTV9TRUcoc2JpLCBzYmkt PmZpcnN0X3NlcV96b25lX3NlZ25vKTsKPj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgIHNlY25v ID0gZmluZF9uZXh0X3plcm9fYml0KGZyZWVfaS0+ZnJlZV9zZWNtYXAsIE1BSU5fU0VDUyhzYmkp LCBoaW50KTsKPj4+Pj4gLSAgICAgICAgICAgICB9IGVsc2UKPj4+Pj4gLSAgICAgICAgICAgICAg ICAgICAgIHNlY25vID0gZmluZF9maXJzdF96ZXJvX2JpdChmcmVlX2ktPmZyZWVfc2VjbWFwLAo+ Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE1BSU5fU0VDUyhzYmkpKTsKPj4+Pj4gLSAgICAgICAgICAgICBpZiAoc2Vjbm8g Pj0gTUFJTl9TRUNTKHNiaSkpIHsKPj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1F Tk9TUEM7Cj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksIDEpOwo+ Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrOwo+Pj4+PiAtICAgICAg ICAgICAgIH0KPj4+Pj4gLSAgICAgfQo+Pj4+PiAtI2VuZGlmCj4+Pj4+IC0KPj4+Pj4gICAgICAg IGlmIChzZWNubyA+PSBNQUlOX1NFQ1Moc2JpKSkgewo+Pj4+PiAtICAgICAgICAgICAgIHNlY25v ID0gZmluZF9maXJzdF96ZXJvX2JpdChmcmVlX2ktPmZyZWVfc2VjbWFwLAo+Pj4+PiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQUlOX1NFQ1Mo c2JpKSk7Cj4+Pj4+IC0gICAgICAgICAgICAgaWYgKHNlY25vID49IE1BSU5fU0VDUyhzYmkpKSB7 Cj4+Pj4+ICsgICAgICAgICAgICAgaWYgKGxvb3BlZCkgewo+Pj4+PiAgICAgICAgICAgICAgICAg ICAgICAgIHJldCA9IC1FTk9TUEM7Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19i dWdfb24oc2JpLCAhcGlubmluZyk7Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBv dXRfdW5sb2NrOwo+Pj4+PiAgICAgICAgICAgICAgICB9Cj4+Pj4+ICsgICAgICAgICAgICAgaGlu dCA9IDA7Cj4+Pj4+ICsjaWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORUQKPj4+Pj4gKyAgICAgICAg ICAgICAvKiBXcml0ZSBvbmx5IHRvIHNlcXVlbnRpYWwgem9uZXMgKi8KPj4+Pj4gKyAgICAgICAg ICAgICBpZiAoZjJmc19zYl9oYXNfYmxrem9uZWQoc2JpKSAmJgo+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgc2JpLT5ibGt6b25lX2FsbG9jX3BvbGljeSA9PSBCTEtaT05FX0FMTE9DX09OTFlf U0VRKQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgaGludCA9IEdFVF9TRUNfRlJPTV9TRUco c2JpLCBzYmktPmZpcnN0X3NlcV96b25lX3NlZ25vKTsKPj4+Pj4gKyNlbmRpZgo+Pj4+PiArICAg ICAgICAgICAgIGxvb3BlZCA9IHRydWU7Cj4+Pj4+ICsgICAgICAgICAgICAgZ290byBmaW5kX290 aGVyX3pvbmU7Cj4+Pj4+ICAgICAgICB9Cj4+Pj4+ICsKPj4+Pj4gICAgICAgIHNlZ25vID0gR0VU X1NFR19GUk9NX1NFQyhzYmksIHNlY25vKTsKPj4+Pj4gKwo+Pj4+PiArICAgICBkZXZpID0gZjJm c190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgU1RBUlRfQkxPQ0soc2JpLCBzZWdubykpOwo+Pj4+ PiArCj4+Pj4+ICsgICAgIGlmIChmMmZzX2Rldl9pc19hbGxvY19ibG9ja2VkKHNiaSwgZGV2aSwg cGlubmluZykpIHsKPj4+Pj4gKyAgICAgICAgICAgICB3aGlsZSAoZGV2aSA8IHNiaS0+c19uZGV2 cyAmJgo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgZjJmc19kZXZfaXNfYWxsb2NfYmxvY2tl ZChzYmksIGRldmksIHBpbm5pbmcpKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgZW5kX3NlZ25vID0gR0VUX1NFR05PKHNiaSwgRkRFVihkZXZpKS5lbmRfYmxrKTsK Pj4+Pj4gKwo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgaGludCA9IEdFVF9TRUNfRlJPTV9T RUcoc2JpLCBlbmRfc2Vnbm8pICsgMTsKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGRldmkr KzsKPj4+Pj4gKyAgICAgICAgICAgICB9Cj4+Pj4+ICsgICAgICAgICAgICAgZ290byBmaW5kX290 aGVyX3pvbmU7Cj4+Pj4+ICsgICAgIH0KPj4+Pj4gKwo+Pj4+PiArICAgICBpZiAoc2VjX3VzYWdl X2NoZWNrKHNiaSwgc2Vjbm8pKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgaGludCA9IHNlY25vICsg MTsKPj4+Pj4gKyAgICAgICAgICAgICBnb3RvIGZpbmRfb3RoZXJfem9uZTsKPj4+Pj4gKyAgICAg fQo+Pj4+PiAgICAgICAgem9uZW5vID0gR0VUX1pPTkVfRlJPTV9TRUMoc2JpLCBzZWNubyk7Cj4+ Pj4+Cj4+Pj4+ICAgICAgICAvKiBnaXZlIHVwIG9uIGZpbmRpbmcgYW5vdGhlciB6b25lICovCj4+ Pj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL3NlZ21lbnQuaCBiL2ZzL2YyZnMvc2VnbWVudC5oCj4+ Pj4+IGluZGV4IGIwYzA2YjM1ODBiNC4uMTA3NTA4YWU3ZWIzIDEwMDY0NAo+Pj4+PiAtLS0gYS9m cy9mMmZzL3NlZ21lbnQuaAo+Pj4+PiArKysgYi9mcy9mMmZzL3NlZ21lbnQuaAo+Pj4+PiBAQCAt OTU0LDEwICs5NTQsMzIgQEAgc3RhdGljIGlubGluZSBibG9ja190IHN1bV9ibGtfYWRkcihzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCBiYXNlLCBpbnQgdHlwZSkKPj4+Pj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0gKGJhc2UgKyAxKSArIHR5cGU7Cj4+Pj4+ICAgIH0KPj4+ Pj4KPj4+Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBmMmZzX2Rldl9pc19yZXNlcnZpbmcoc3RydWN0 IGYyZnNfc2JfaW5mbyAqc2JpLCBpbnQgZGV2aSkKPj4+Pj4gK3sKPj4+Pj4gKyAgICAgaWYgKCFm MmZzX3NiX2hhc19kZXZpY2VfYWxpYXMoc2JpKSkKPj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7Cj4+Pj4+ICsgICAgIHJldHVybiBGREVWKGRldmkpLmlzX3Jlc2VydmluZzsKPj4+Pj4g K30KPj4+Pj4gKwo+Pj4+PiArc3RhdGljIGlubGluZSBib29sIGYyZnNfZGV2X2lzX2FsbG9jX2Js b2NrZWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBkZXZpLCBib29sIHBpbm5pbmcpCj4+Pj4+ICt7Cj4+Pj4+ ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4+Pj4+ICsgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4+PiArICAgICByZXR1cm4gKHBpbm5pbmcgJiYgRkRFVihk ZXZpKS5oYXNfYWxpYXMpIHx8IEZERVYoZGV2aSkuaXNfcmVzZXJ2aW5nOwo+Pj4+PiArfQo+Pj4+ PiArCj4+Pj4+ICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBzZWNfdXNhZ2VfY2hlY2soc3RydWN0IGYy ZnNfc2JfaW5mbyAqc2JpLCB1bnNpZ25lZCBpbnQgc2Vjbm8pCj4+Pj4+ICAgIHsKPj4+Pj4gICAg ICAgIGlmIChpc19jdXJzZWMoc2JpLCBzZWNubykgfHwgKHNiaS0+Y3VyX3ZpY3RpbV9zZWMgPT0g c2Vjbm8pKQo+Pj4+PiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPj4+Pj4gKyAgICAgaWYg KGYyZnNfc2JfaGFzX2RldmljZV9hbGlhcyhzYmkpKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgYmxv Y2tfdCBzdGFydF9ibGsgPSBTVEFSVF9CTE9DSyhzYmksIEdFVF9TRUdfRlJPTV9TRUMoc2JpLCBz ZWNubykpOwo+Pj4+PiArICAgICAgICAgICAgIGludCBkZXZpID0gZjJmc190YXJnZXRfZGV2aWNl X2luZGV4KHNiaSwgc3RhcnRfYmxrKTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICAgICAgIGlmIChm MmZzX2Rldl9pc19yZXNlcnZpbmcoc2JpLCBkZXZpKSkKPj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgIHJldHVybiB0cnVlOwo+Pj4+PiArICAgICB9Cj4+Pj4+ICAgICAgICByZXR1cm4gZmFsc2U7 Cj4+Pj4+ICAgIH0KPj4+Pj4KPj4+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvc3VwZXIuYyBiL2Zz L2YyZnMvc3VwZXIuYwo+Pj4+PiBpbmRleCBjNDQ4ZDk5MmZmMmEuLmQ1ZGM4M2U2MTNlMiAxMDA2 NDQKPj4+Pj4gLS0tIGEvZnMvZjJmcy9zdXBlci5jCj4+Pj4+ICsrKyBiL2ZzL2YyZnMvc3VwZXIu Ywo+Pj4+PiBAQCAtNTAwMSw2ICs1MDAxLDM5IEBAIHN0YXRpYyB2b2lkIGYyZnNfdHVuaW5nX3Bh cmFtZXRlcnMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+Pj4+PiAgICAgICAgc2JpLT5yZWFk ZGlyX3JhID0gdHJ1ZTsKPj4+Pj4gICAgfQo+Pj4+Pgo+Pj4+PiArc3RhdGljIHZvaWQgZjJmc19y ZXN0b3JlX2RldmljZV9hbGlhcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4+Pj4+ICt7Cj4+ Pj4+ICsgICAgIHN0cnVjdCBpbm9kZSAqcm9vdCA9IGRfaW5vZGUoc2JpLT5zYi0+c19yb290KTsK Pj4+Pj4gKyAgICAgc3RydWN0IGYyZnNfZGlyX2VudHJ5ICpkZTsKPj4+Pj4gKyAgICAgc3RydWN0 IGZvbGlvICpmb2xpbzsKPj4+Pj4gKyAgICAgaW50IGk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgaWYg KCFmMmZzX3NiX2hhc19kZXZpY2VfYWxpYXMoc2JpKSkKPj4+Pj4gKyAgICAgICAgICAgICByZXR1 cm47Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgZm9yIChpID0gMTsgaSA8IHNiaS0+c19uZGV2czsgaSsr KSB7Cj4+Pj4+ICsgICAgICAgICAgICAgY2hhciAqbmFtZSA9IHN0cnJjaHIoRkRFVihpKS5wYXRo LCAnLycpOwo+Pj4+PiArICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGU7Cj4+Pj4+ICsg ICAgICAgICAgICAgc3RydWN0IHFzdHIgcXN0cjsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICAgICAg IG5hbWUgPSBuYW1lID8gbmFtZSArIDEgOiBGREVWKGkpLnBhdGg7Cj4+Pj4+ICsgICAgICAgICAg ICAgcXN0ci5uYW1lID0gbmFtZTsKPj4+Pj4gKyAgICAgICAgICAgICBxc3RyLmxlbiA9IHN0cmxl bihuYW1lKTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICAgICAgIGRlID0gZjJmc19maW5kX2VudHJ5 KHJvb3QsICZxc3RyLCAmZm9saW8pOwo+Pj4+PiArICAgICAgICAgICAgIGlmICghZGUpCj4+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICAg ICAgIGlub2RlID0gZjJmc19pZ2V0KHNiaS0+c2IsIGxlMzJfdG9fY3B1KGRlLT5pbm8pKTsKPj4+ Pj4gKyAgICAgICAgICAgICBpZiAoIUlTX0VSUihpbm9kZSkpIHsKPj4+Pj4gKyAgICAgICAgICAg ICAgICAgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+Pj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBGREVWKGkpLmhhc19hbGlhcyA9IHRydWU7Cj4+Pj4+ICsgICAg ICAgICAgICAgICAgICAgICBpcHV0KGlub2RlKTsKPj4+Pj4gKyAgICAgICAgICAgICB9Cj4+Pj4+ ICsgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIDApOwo+Pj4+PiArICAgICB9Cj4+ Pj4+ICt9Cj4+Pj4+ICsKPj4+Pj4gICAgc3RhdGljIGludCBmMmZzX2ZpbGxfc3VwZXIoc3RydWN0 IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQo+Pj4+PiAgICB7Cj4+Pj4+ ICAgICAgICBzdHJ1Y3QgZjJmc19mc19jb250ZXh0ICpjdHggPSBmYy0+ZnNfcHJpdmF0ZTsKPj4+ Pj4gQEAgLTUyMDksNiArNTI0Miw3IEBAIHN0YXRpYyBpbnQgZjJmc19maWxsX3N1cGVyKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKPj4+Pj4gICAgICAgIHNi aS0+bGFzdF92YWxpZF9ibG9ja19jb3VudCA9IHNiaS0+dG90YWxfdmFsaWRfYmxvY2tfY291bnQ7 Cj4+Pj4+ICAgICAgICBzYmktPnJlc2VydmVkX2Jsb2NrcyA9IDA7Cj4+Pj4+ICAgICAgICBzYmkt PmN1cnJlbnRfcmVzZXJ2ZWRfYmxvY2tzID0gMDsKPj4+Pj4gKyAgICAgc2JpLT5hbGlhc19yZXNl cnZlZF9ibG9ja3MgPSAwOwo+Pj4+PiAgICAgICAgbGltaXRfcmVzZXJ2ZV9yb290KHNiaSk7Cj4+ Pj4+ICAgICAgICBhZGp1c3RfdW51c2FibGVfY2FwX3BlcmMoc2JpKTsKPj4+Pj4KPj4+Pj4gQEAg LTU0MzYsNiArNTQ3MCw4IEBAIHN0YXRpYyBpbnQgZjJmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKPj4+Pj4gICAgICAgIGYyZnNfdXBk YXRlX3RpbWUoc2JpLCBSRVFfVElNRSk7Cj4+Pj4+ICAgICAgICBjbGVhcl9zYmlfZmxhZyhzYmks IFNCSV9DUF9ESVNBQkxFRF9RVUlDSyk7Cj4+Pj4+Cj4+Pj4+ICsgICAgIGYyZnNfcmVzdG9yZV9k ZXZpY2VfYWxpYXMoc2JpKTsKPj4+Pj4gKwo+Pj4+PiAgICAgICAgc2JpLT51bW91bnRfbG9ja19o b2xkZXIgPSBOVUxMOwo+Pj4+PiAgICAgICAgcmV0dXJuIDA7Cj4+Pj4+Cj4+Pj4+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL3VhcGkvbGludXgvZjJmcy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2YyZnMu aAo+Pj4+PiBpbmRleCA3OTVlMjYyNTgzNTUuLjQ0MDlhZGEyZmVjYiAxMDA2NDQKPj4+Pj4gLS0t IGEvaW5jbHVkZS91YXBpL2xpbnV4L2YyZnMuaAo+Pj4+PiArKysgYi9pbmNsdWRlL3VhcGkvbGlu dXgvZjJmcy5oCj4+Pj4+IEBAIC00NSw2ICs0NSw5IEBACj4+Pj4+ICAgICNkZWZpbmUgRjJGU19J T0NfU1RBUlRfQVRPTUlDX1JFUExBQ0UgICAgICAgX0lPKEYyRlNfSU9DVExfTUFHSUMsIDI1KQo+ Pj4+PiAgICAjZGVmaW5lIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfRklMRSBfSU9SKEYyRlNfSU9D VExfTUFHSUMsIDI2LCBfX3UzMikKPj4+Pj4gICAgI2RlZmluZSBGMkZTX0lPQ19JT19QUklPICAg ICAgICAgICAgX0lPVyhGMkZTX0lPQ1RMX01BR0lDLCAyNywgX191MzIpCj4+Pj4+ICsjZGVmaW5l IEYyRlNfSU9DX1JFU0VSVkVfREVWX0FMSUFTICAgX0lPKEYyRlNfSU9DVExfTUFHSUMsIDI4KQo+ Pj4+PiArI2RlZmluZSBGMkZTX0lPQ19SRUxFQVNFX0RFVl9BTElBUyAgIF9JTyhGMkZTX0lPQ1RM X01BR0lDLCAyOSkKPj4+Pj4gKyNkZWZpbmUgRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVMg ICAgICAgIF9JT1IoRjJGU19JT0NUTF9NQUdJQywgMzAsIF9fdTMyKQo+Pj4+Pgo+Pj4+PiAgICAv Kgo+Pj4+PiAgICAgKiBzaG91bGQgYmUgc2FtZSBhcyBYRlNfSU9DX0dPSU5HRE9XTi4KPj4+Pj4g QEAgLTcwLDYgKzczLDEwIEBAIGVudW0gewo+Pj4+PiAgICAgICAgRjJGU19JT1BSSU9fTUFYLAo+ Pj4+PiAgICB9Owo+Pj4+Pgo+Pj4+PiArLyogZm9yIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RB VFVTICovCj4+Pj4+ICsjZGVmaW5lIEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRUxFQVNFRCAgICAg ICAwCj4+Pj4+ICsjZGVmaW5lIEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRVNFUlZFRCAgICAgICAx Cj4+Pj4+ICsKPj4+Pj4gICAgc3RydWN0IGYyZnNfZ2NfcmFuZ2Ugewo+Pj4+PiAgICAgICAgX191 MzIgc3luYzsKPj4+Pj4gICAgICAgIF9fdTY0IHN0YXJ0Owo+Pj4+Cj4+CgoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LWYyZnMtZGV2ZWwgbWFp bGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8v bGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4LWYyZnMtZGV2ZWwK