Re: [f2fs-dev] [PATCH v6] f2fs: support dynamic reserve/release for device aliasing
Daeho Jeong <[email protected]> Tue, 4 Aug 2026 10:08:01 -0700
| Newsgroups | net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CACOAw_w1fcBgGkW3MT=NgjWp1B5-1FSgMe2Ofm0AKcQU4OsBWA@mail.gmail.com> |
T24gTW9uLCBBdWcgMywgMjAyNiBhdCA1OjQy4oCvUE0gQ2hhbyBZdSA8Y2hhb0BrZXJuZWwub3Jn PiB3cm90ZToKPgo+IE9uIDgvNC8yNiAwMDoxOCwgRGFlaG8gSmVvbmcgd3JvdGU6Cj4gPiBPbiBT dW4sIEF1ZyAyLCAyMDI2IGF0IDc6MDDigK9QTSBDaGFvIFl1IDxjaGFvQGtlcm5lbC5vcmc+IHdy b3RlOgo+ID4+Cj4gPj4gT24gNy8zMC8yNiAyMzo0NiwgRGFlaG8gSmVvbmcgd3JvdGU6Cj4gPj4+ IEZyb206IERhZWhvIEplb25nIDxkYWVob2plb25nQGdvb2dsZS5jb20+Cj4gPj4+Cj4gPj4+IFRo aXMgcGF0Y2ggYWRkcyBhIGR5bmFtaWMgbWFuYWdlbWVudCBmZWF0dXJlIHRvIHRoZSBleGlzdGlu ZyBkZXZpY2UKPiA+Pj4gYWxpYXNpbmcgZnVuY3Rpb25hbGl0eS4gSXQgYWxsb3dzIHVzZXJzIHRv IGR5bmFtaWNhbGx5IHJlc2VydmUgb3IKPiA+Pj4gcmVsZWFzZSBzcGVjaWZpYyBkZXZpY2VzIGZy b20gdGhlIGZpbGVzeXN0ZW0ncyBmcmVlIHBvb2wgYXQgcnVudGltZQo+ID4+PiB0aHJvdWdoIG5l dyBpb2N0bHMuCj4gPj4+Cj4gPj4+IFRvIHN1cHBvcnQgdGhpcywgdGhyZWUgbmV3IGlvY3RscyBh cmUgaW50cm9kdWNlZDoKPiA+Pj4gLSBGMkZTX0lPQ19SRVNFUlZFX0RFVl9BTElBUzogVGhpcyBy ZWNsYWltcyB0aGUgc3BhY2Ugb2NjdXBpZWQgYnkgYQo+ID4+PiAgICAgZGV2aWNlIGFsaWFzaW5n IGZpbGUuIEl0IGZpcnN0IHBlcmZvcm1zIGEgY2FwYWNpdHkgY2hlY2ssIHJlc2V0cyBHQwo+ID4+ PiAgICAgdmljdGltIGluZm9ybWF0aW9uIGZvciB0aGUgdGFyZ2V0IHJhbmdlLCBtYXJrcyB0aGUg c2VnbWVudHMgYXMgaW4tdXNlCj4gPj4+ICAgICB0byBwcmV2ZW50IG5ldyBhbGxvY2F0aW9ucywg YW5kIHRoZW4gdHJpZ2dlcnMgR0MgdG8gbWlncmF0ZSBleGlzdGluZwo+ID4+PiAgICAgdmFsaWQg ZGF0YSBvdXQgb2YgdGhlIHJhbmdlLiBGaW5hbGx5LCBpdCByZXNlcnZlcyB0aGVzZSBibG9ja3Mg aW4gdGhlCj4gPj4+ICAgICBTSVQgdG8gZWZmZWN0aXZlbHkgZXhjbHVkZSB0aGUgZGV2aWNlIGZy b20gdGhlIHVzYWJsZSBjYXBhY2l0eS4KPiA+Pj4KPiA+Pj4gLSBGMkZTX0lPQ19SRUxFQVNFX0RF Vl9BTElBUzogVGhpcyByZWxlYXNlcyB0aGUgcmVzZXJ2ZWQgc3BhY2Ugb2YgYQo+ID4+PiAgICAg cHJldmlvdXNseSByZXNlcnZlZCBkZXZpY2UgYWxpYXNpbmcgZmlsZS4gSXQgdHJ1bmNhdGVzIHRo ZSBibG9ja3MKPiA+Pj4gICAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSwgd2hpY2ggbWFrZXMg dGhlbSBhdmFpbGFibGUgZm9yIGdlbmVyYWwKPiA+Pj4gICAgIGZpbGVzeXN0ZW0gYWxsb2NhdGlv biBhZ2Fpbi4KPiA+Pj4KPiA+Pj4gLSBGMkZTX0lPQ19HRVRfREVWX0FMSUFTX1NUQVRVUzogVGhp cyByZXRyaWV2ZXMgdGhlIGN1cnJlbnQgYWxpYXNpbmcKPiA+Pj4gICAgIHN0YXR1cyBvZiBhIGRl dmljZSBhbGlhc2luZyBmaWxlLCByZXR1cm5pbmcgd2hldGhlciB0aGUgZmlsZSBpcwo+ID4+PiAg ICAgcmVsZWFzZWQgKGluYWN0aXZlIGFsaWFzKSBvciByZXNlcnZlZCAoYWN0aXZlIGFsaWFzLCB3 aXRoIGJsb2Nrcwo+ID4+PiAgICAgZnVsbHkgYWxsb2NhdGVkIG9uIHRoZSBkZXZpY2UpLgo+ID4+ Pgo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBEYWVobyBKZW9uZyA8ZGFlaG9qZW9uZ0Bnb29nbGUuY29t Pgo+ID4+PiAtLS0KPiA+Pj4gdjY6IGZpeGVkIGR1cGxpY2F0ZWQgYmxvY2sgcmVzZXJ2YXRpb25z IGFuZCByYWNpbmcgdy8gbW1hcC4KPiA+Pj4gICAgICAgYWRkZWQgdGhlIGV4dGVudCBhbGlnbm1l bnQgY2hlY2sgZm9yIGRldmljZSBhbGlhc2luZyBhcmVhcy4KPiA+Pj4gdjU6IHByZXZlbnRlZCBu ZXcgc2VnbWVudCBhbGxvY2F0aW9uIG9uIGRldmljZXMgdW5kZXJnb2luZyByZXNlcnZhdGlvbgo+ ID4+PiAgICAgICBvciB3aXRoIGFjdGl2ZSBhbGlhc2VzLgo+ID4+PiAgICAgICB1c2VkIGluLW1l bW9yeSBzdHJ1Y3QgdG8gcmVzZXJ2ZSBibG9ja3MgZm9yIGRldmljZSBhbGlhc2luZy4KPiA+Pj4g ICAgICAgY2xlYXJlZCBwcmVmcmVlIChQUkUpIGRpcnR5IHNlZ21lbnQgYml0bWFwLgo+ID4+PiB2 NDogcmVuYW1lZCBpbnRlcmZhY2VzLgo+ID4+PiAgICAgICBmaXhlZCByYWNlIGNvbmRpdGlvbnMg YmV0d2VlbiBjaGVja3BvaW50PWRpc2FibGUgbW91bnQgYW5kIGlvY3Rscy4KPiA+Pj4gICAgICAg cmVmYWN0b3JlZCBzZWdtZW50IHJlc2VydmF0aW9uIHBhcnQuCj4gPj4+ICAgICAgIG1vZGlmaWVk IGxvY2sgdXNhZ2UuCj4gPj4+IHYzOiBhZGQgQ0FQX1NZU19BRE1JTiBhbmQgY2hlY2twb2ludD1k aXNhYmxlZCBjaGVjay4KPiA+Pj4gICAgICAgcmVtb3ZlIGEgZjJmcyBzcGVjaWZpYyBmbGFnIGV4 cG9zZWQgd2l0aCBnZXRmbGFncy4KPiA+Pj4gdjI6IHByZXZlbnQgb3BlcmF0aW9ucyBkdXJpbmcg Y2hlY2twb2ludD1kaXNhYmxlZC4KPiA+Pj4gLS0tCj4gPj4+IC0tLQo+ID4+PiAgICBEb2N1bWVu dGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0IHwgIDM1ICsrKysKPiA+Pj4gICAgZnMvZjJmcy9k YXRhLmMgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQo+ID4+PiAgICBmcy9mMmZzL2V4dGVu dF9jYWNoZS5jICAgICAgICAgICAgIHwgICA3ICsKPiA+Pj4gICAgZnMvZjJmcy9mMmZzLmggICAg ICAgICAgICAgICAgICAgICB8ICAxOSArLQo+ID4+PiAgICBmcy9mMmZzL2ZpbGUuYyAgICAgICAg ICAgICAgICAgICAgIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gPj4+ICAg IGZzL2YyZnMvZ2MuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMzAgKystLQo+ID4+PiAgICBm cy9mMmZzL25hbWVpLmMgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrCj4gPj4+ICAgIGZzL2Yy ZnMvc2VnbWVudC5jICAgICAgICAgICAgICAgICAgfCAxNzYgKysrKysrKysrKysrKy0tLS0tLQo+ ID4+PiAgICBmcy9mMmZzL3NlZ21lbnQuaCAgICAgICAgICAgICAgICAgIHwgIDIyICsrKwo+ID4+ PiAgICBmcy9mMmZzL3N1cGVyLmMgICAgICAgICAgICAgICAgICAgIHwgIDM2ICsrKysKPiA+Pj4g ICAgaW5jbHVkZS91YXBpL2xpbnV4L2YyZnMuaCAgICAgICAgICB8ICAgNyArCj4gPj4+ICAgIDEx IGZpbGVzIGNoYW5nZWQsIDU1NSBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKPiA+Pj4K PiA+Pj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5yc3QgYi9E b2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0Cj4gPj4+IGluZGV4IDhjNGExNGFlNDQ0 Zi4uMWE1ZmQ0YWZlNjA5IDEwMDY0NAo+ID4+PiAtLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0 ZW1zL2YyZnMucnN0Cj4gPj4+ICsrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5y c3QKPiA+Pj4gQEAgLTEwNDUsNiArMTA0NSw0MSBAQCBTbywgdGhlIGtleSBpZGVhIGlzLCB1c2Vy IGNhbiBkbyBhbnkgZmlsZSBvcGVyYXRpb25zIG9uIC9kZXYvdmRjLCBhbmQKPiA+Pj4gICAgcmVj bGFpbSB0aGUgc3BhY2UgYWZ0ZXIgdGhlIHVzZSwgd2hpbGUgdGhlIHNwYWNlIGlzIGNvdW50ZWQg YXMgL2RhdGEuCj4gPj4+ICAgIFRoYXQgZG9lc24ndCByZXF1aXJlIG1vZGlmeWluZyBwYXJ0aXRp b24gc2l6ZSBhbmQgZmlsZXN5c3RlbSBmb3JtYXQuCj4gPj4+Cj4gPj4+ICtEeW5hbWljIERldmlj ZSBBbGlhc2luZyBNYW5hZ2VtZW50Cj4gPj4+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCj4gPj4+ICsKPiA+Pj4gK0luIGFkZGl0aW9uIHRvIHN0YXRpYyBkZXZpY2UgYWxpYXNp bmcgYnkgZGVsZXRpbmcgdGhlIGFsaWFzaW5nIGZpbGUsIEYyRlMKPiA+Pj4gK3N1cHBvcnRzIGR5 bmFtaWMgbWFuYWdlbWVudCBvZiBkZXZpY2UgYWxpYXNpbmcuIFRoaXMgbWVjaGFuaXNtIGFsbG93 cyB0aGUgc3lzdGVtCj4gPj4+ICt0byBkeW5hbWljYWxseSB0cmFuc2l0aW9uIHBhcnRpdGlvbiBv d25lcnNoaXAgYmV0d2VlbiBGMkZTIHVzZXJkYXRhIGFuZCBleHRlcm5hbAo+ID4+PiArZW50aXRp ZXMgKGUuZy4sIHpSQU0sIHJhdyBwYXJ0aXRpb24pIGJhc2VkIG9uIHN5c3RlbSByZXF1aXJlbWVu dHMgd2l0aG91dAo+ID4+PiArZGVsZXRpbmcgdGhlIG1hc3RlciBhbGlhc2luZyBmaWxlIG9yIHJl cXVpcmluZyB1bm1vdW50L3JlbW91bnQuCj4gPj4+ICsKPiA+Pj4gK1RoZSBtYXN0ZXIgYWxpYXNp bmcgZmlsZSBpcyBjcmVhdGVkIGR1cmluZyB0aGUgaW5pdGlhbCBmb3JtYXQgb2YgdGhlIGZpbGUg c3lzdGVtCj4gPj4+ICthbmQgcmVtYWlucyBhcyBhIHBlcnNpc3RlbnQgY29udHJvbCBlbnRpdHkg KGlvY3RsIGdhdGV3YXkpIGluIHRoZSByb290IGRpcmVjdG9yeS4KPiA+Pj4gKwo+ID4+PiArLSBQ YXJ0aXRpb24gUmVzZXJ2YXRpb24gKEluLXNlcnZpY2UgdG8gQWxpYXNlZCkKPiA+Pj4gKyAgV2hl biBhIHNwZWNpZmljIHBhcnRpdGlvbiBuZWVkcyB0byBiZSBkZWRpY2F0ZWQgdG8gZXh0ZXJuYWwg c2VydmljZXMgKGUuZy4sIHpSQU0pLAo+ID4+PiArICBhIHVzZXIgY2FuIHJlc2VydmUgdGhlIGRl dmljZSBhbGlhcyByYW5nZSB2aWEgaW9jdGwuIFRoZSBrZXJuZWwgcmVzZXRzIEdDIHZpY3RpbQo+ ID4+PiArICBpbmZvcm1hdGlvbiBmb3IgdGhlIHRhcmdldCByYW5nZSwgbWFya3Mgc2VnbWVudHMg YXMgaW4tdXNlIHRvIHByZXZlbnQgbmV3Cj4gPj4+ICsgIGFsbG9jYXRpb25zLCBhbmQgdHJpZ2dl cnMgZm9yY2VkIEdDIHRvIG1pZ3JhdGUgZXhpc3RpbmcgdmFsaWQgZGF0YSBvdXQgb2YgdGhlCj4g Pj4+ICsgIHJhbmdlLiBGaW5hbGx5LCBpdCByZXNlcnZlcyB0aGVzZSBibG9ja3MgaW4gdGhlIFNJ VCB0byBlZmZlY3RpdmVseSBleGNsdWRlIHRoZQo+ID4+PiArICBkZXZpY2UgZnJvbSB0aGUgdXNh YmxlIGNhcGFjaXR5Lgo+ID4+PiArCj4gPj4+ICstIFBhcnRpdGlvbiBSZWxlYXNlIChBbGlhc2Vk IHRvIEluLXNlcnZpY2UpCj4gPj4+ICsgIFdoZW4gZXh0ZXJuYWwgdXNhZ2UgY29uY2x1ZGVzLCB0 aGUgc3BhY2UgaXMgcmVjbGFpbWVkIG5vdCBieSBkZWxldGluZyB0aGUgZmlsZSwKPiA+Pj4gKyAg YnV0IHRocm91Z2ggdGhlIHJlbGVhc2UgaW9jdGwuIFRoZSBrZXJuZWwgdHJ1bmNhdGVzIGJsb2Nr cyBhc3NvY2lhdGVkIHdpdGgKPiA+Pj4gKyAgdGhlIGZpbGUsIHJlbGVhc2luZyB0aGVtIGJhY2sg dG8gZ2VuZXJhbCBmaWxlc3lzdGVtIGFsbG9jYXRpb24uCj4gPj4+ICsKPiA+Pj4gKy4uIGNvZGUt YmxvY2s6Ogo+ID4+PiArCj4gPj4+ICsgICAjIGYyZnNfaW8gZGV2X2FsaWFzIHJlbGVhc2UgL21u dC9mMmZzL3ZkYy5maWxlCj4gPj4+ICsgICAjIGRmIC1oCj4gPj4+ICsgICAvZGV2L3ZkYiAgICAg ICAgICAgICAgICAgICAgICAgICAgICA2NEcgIDc1M00gICA2NEcgICAyJSAvbW50L2YyZnMKPiA+ Pj4gKwo+ID4+PiArICAgIyBmMmZzX2lvIGRldl9hbGlhcyByZXNlcnZlIC9tbnQvZjJmcy92ZGMu ZmlsZQo+ID4+PiArICAgIyBkZiAtaAo+ID4+PiArICAgL2Rldi92ZGIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgNjRHICAgMzNHICAgMzJHICA1MiUgL21udC9mMmZzCj4gPj4+ICsKPiA+Pj4g ICAgUGVyLWZpbGUgUmVhZC1Pbmx5IExhcmdlIEZvbGlvIFN1cHBvcnQKPiA+Pj4gICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+Pj4KPiA+Pj4gZGlmZiAtLWdpdCBh L2ZzL2YyZnMvZGF0YS5jIGIvZnMvZjJmcy9kYXRhLmMKPiA+Pj4gaW5kZXggYWMxY2Y0ZGUzZDYy Li44OTJkNTk0MDQ4YjcgMTAwNjQ0Cj4gPj4+IC0tLSBhL2ZzL2YyZnMvZGF0YS5jCj4gPj4+ICsr KyBiL2ZzL2YyZnMvZGF0YS5jCj4gPj4+IEBAIC0xMjcwLDcgKzEyNzAsNyBAQCBpbnQgZjJmc19y ZXNlcnZlX25ld19ibG9ja3Moc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCBibGtjbnRfdCBjb3Vu dCkKPiA+Pj4KPiA+Pj4gICAgICAgIGlmICh1bmxpa2VseShpc19pbm9kZV9mbGFnX3NldChkbi0+ aW5vZGUsIEZJX05PX0FMTE9DKSkpCj4gPj4+ICAgICAgICAgICAgICAgIHJldHVybiAtRVBFUk07 Cj4gPj4+IC0gICAgIGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGRuLT5pbm9kZSwg JmNvdW50LCB0cnVlKTsKPiA+Pj4gKyAgICAgZXJyID0gaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNi aSwgZG4tPmlub2RlLCAmY291bnQsIHRydWUsIGZhbHNlKTsKPiA+Pj4gICAgICAgIGlmICh1bmxp a2VseShlcnIpKQo+ID4+PiAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4+Pgo+ID4+PiBA QCAtMTU0Miw3ICsxNTQyLDcgQEAgc3RhdGljIGludCBfX2FsbG9jYXRlX2RhdGFfYmxvY2soc3Ry dWN0IGRub2RlX29mX2RhdGEgKmRuLCBpbnQgc2VnX3R5cGUpCj4gPj4+Cj4gPj4+ICAgICAgICBk bi0+ZGF0YV9ibGthZGRyID0gZjJmc19kYXRhX2Jsa2FkZHIoZG4pOwo+ID4+PiAgICAgICAgaWYg KGRuLT5kYXRhX2Jsa2FkZHIgPT0gTlVMTF9BRERSKSB7Cj4gPj4+IC0gICAgICAgICAgICAgZXJy ID0gaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgZG4tPmlub2RlLCAmY291bnQsIHRydWUpOwo+ ID4+PiArICAgICAgICAgICAgIGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGRuLT5p bm9kZSwgJmNvdW50LCB0cnVlLCBmYWxzZSk7Cj4gPj4+ICAgICAgICAgICAgICAgIGlmICh1bmxp a2VseShlcnIpKQo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPj4+ ICAgICAgICB9Cj4gPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2V4dGVudF9jYWNoZS5jIGIvZnMv ZjJmcy9leHRlbnRfY2FjaGUuYwo+ID4+PiBpbmRleCA2MWY2Yjk3MTQzNjYuLjNhNzM3ZGIwYzll MSAxMDA2NDQKPiA+Pj4gLS0tIGEvZnMvZjJmcy9leHRlbnRfY2FjaGUuYwo+ID4+PiArKysgYi9m cy9mMmZzL2V4dGVudF9jYWNoZS5jCj4gPj4+IEBAIC02Miw2ICs2MiwxMyBAQCBib29sIHNhbml0 eV9jaGVja19leHRlbnRfY2FjaGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZvbGlvICpp Zm9saW8pCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBpbm9kZS0+ aV9pbm8sIGVpLmJsaywgZWkuZm9mcywgZWkubGVuKTsKPiA+Pj4gICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7Cj4gPj4+ICAgICAgICAgICAgICAgIH0KPiA+Pj4gKwo+ID4+PiAr ICAgICAgICAgICAgIGlmICgoZWkuYmxrICUgQkxLU19QRVJfU0VDKHNiaSkpIHx8IChlaS5sZW4g JSBCTEtTX1BFUl9TRUMoc2JpKSkpIHsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGYyZnNf d2FybihzYmksICIlczogZGV2aWNlIGFsaWFzIGlub2RlIChpbm89JWxseCkncyBleHRlbnQgaW5m byBbJXUsICV1LCAldV0gaXMgbm90IGFsaWduZWQgdG8gc2VjdGlvbiBzaXplICV1IiwKPiA+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgaW5vZGUtPmlfaW5vLCBl aS5ibGssIGVpLmZvZnMsIGVpLmxlbiwKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCTEtTX1BFUl9TRUMoc2JpKSk7Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7Cj4gPj4+ICsgICAgICAgICAgICAgfQo+ID4+PiAgICAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKPiA+Pj4gICAgICAgIH0KPiA+Pj4KPiA+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMv ZjJmcy5oIGIvZnMvZjJmcy9mMmZzLmgKPiA+Pj4gaW5kZXggZjE3NzRkNGUxOGQyLi5mMjRlMzBi YjVjM2QgMTAwNjQ0Cj4gPj4+IC0tLSBhL2ZzL2YyZnMvZjJmcy5oCj4gPj4+ICsrKyBiL2ZzL2Yy ZnMvZjJmcy5oCj4gPj4+IEBAIC0xNDA0LDYgKzE0MDQsOCBAQCBzdHJ1Y3QgZjJmc19kZXZfaW5m byB7Cj4gPj4+ICAgICAgICB1bnNpZ25lZCBpbnQgdG90YWxfc2VnbWVudHM7Cj4gPj4+ICAgICAg ICBibG9ja190IHN0YXJ0X2JsazsKPiA+Pj4gICAgICAgIGJsb2NrX3QgZW5kX2JsazsKPiA+Pj4g KyAgICAgYm9vbCBoYXNfYWxpYXM7Cj4gPj4+ICsgICAgIGJvb2wgaXNfcmVzZXJ2aW5nOwo+ID4+ PiAgICAjaWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORUQKPiA+Pj4gICAgICAgIHVuc2lnbmVkIGlu dCBucl9ibGt6OyAgICAgICAgICAgLyogVG90YWwgbnVtYmVyIG9mIHpvbmVzICovCj4gPj4+ICAg ICAgICB1bnNpZ25lZCBsb25nICpibGt6X3NlcTsgICAgICAgIC8qIEJpdG1hcCBpbmRpY2F0aW5n IHNlcXVlbnRpYWwgem9uZXMgKi8KPiA+Pj4gQEAgLTE4NTcsNiArMTg1OSw3IEBAIHN0cnVjdCBm MmZzX3NiX2luZm8gewo+ID4+PiAgICAgICAgYmxvY2tfdCBsYXN0X3ZhbGlkX2Jsb2NrX2NvdW50 OyAgICAgICAgIC8qIGZvciByZWNvdmVyeSAqLwo+ID4+PiAgICAgICAgYmxvY2tfdCByZXNlcnZl ZF9ibG9ja3M7ICAgICAgICAgICAgICAgIC8qIGNvbmZpZ3VyYWJsZSByZXNlcnZlZCBibG9ja3Mg Ki8KPiA+Pj4gICAgICAgIGJsb2NrX3QgY3VycmVudF9yZXNlcnZlZF9ibG9ja3M7ICAgICAgICAv KiBjdXJyZW50IHJlc2VydmVkIGJsb2NrcyAqLwo+ID4+PiArICAgICBibG9ja190IGFsaWFzX3Jl c2VydmVkX2Jsb2NrczsgICAgICAgICAgLyogcmVzZXJ2ZWQgYmxvY2tzIGZvciBkZXZpY2UgYWxp YXMgKi8KPiA+Pj4KPiA+Pj4gICAgICAgIC8qIEFkZGl0aW9uYWwgdHJhY2tpbmcgZm9yIG5vIGNo ZWNrcG9pbnQgbW9kZSAqLwo+ID4+PiAgICAgICAgYmxvY2tfdCB1bnVzYWJsZV9ibG9ja19jb3Vu dDsgICAgICAgICAgIC8qICMgb2YgYmxvY2tzIHNhdmVkIGJ5IGxhc3QgY3AgKi8KPiA+Pj4gQEAg LTI1NTksNyArMjU2Miw4IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9hdmFpbGFi bGVfYmxvY2tfY291bnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4+PiAgICAgICAgYmxv Y2tfdCBhdmFpbF91c2VyX2Jsb2NrX2NvdW50Owo+ID4+Pgo+ID4+PiAgICAgICAgYXZhaWxfdXNl cl9ibG9ja19jb3VudCA9IHNiaS0+dXNlcl9ibG9ja19jb3VudCAtCj4gPj4+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JpLT5jdXJyZW50X3Jlc2VydmVkX2Jsb2NrczsK PiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYmktPmN1cnJlbnRf cmVzZXJ2ZWRfYmxvY2tzIC0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzYmktPmFsaWFzX3Jlc2VydmVkX2Jsb2NrczsKPiA+Pj4KPiA+Pj4gICAgICAgIGlmICh0 ZXN0X29wdChzYmksIFJFU0VSVkVfUk9PVCkgJiYgIV9fYWxsb3dfcmVzZXJ2ZWRfcm9vdChzYmks IGlub2RlLCBjYXApKQo+ID4+PiAgICAgICAgICAgICAgICBhdmFpbF91c2VyX2Jsb2NrX2NvdW50 IC09IEYyRlNfT1BUSU9OKHNiaSkucm9vdF9yZXNlcnZlZF9ibG9ja3M7Cj4gPj4+IEBAIC0yNTc2 LDcgKzI1ODAsOCBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRfYXZhaWxhYmxlX2Js b2NrX2NvdW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+Pj4KPiA+Pj4gICAgc3RhdGlj IGlubGluZSB2b2lkIGYyZnNfaV9ibG9ja3Nfd3JpdGUoc3RydWN0IGlub2RlICosIGJsb2NrX3Qs IGJvb2wsIGJvb2wpOwo+ID4+PiAgICBzdGF0aWMgaW5saW5lIGludCBpbmNfdmFsaWRfYmxvY2tf Y291bnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4+PiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGlub2RlICppbm9kZSwgYmxrY250X3QgKmNvdW50LCBib29sIHBh cnRpYWwpCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBibGtjbnRfdCAqY291bnQsCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBib29sIHBhcnRpYWwsIGJvb2wgYWxpYXNfcmVzZXJ2ZWQpCj4gPj4+ICAgIHsKPiA+Pj4g ICAgICAgIGxvbmcgbG9uZyBkaWZmID0gMCwgcmVsZWFzZSA9IDA7Cj4gPj4+ICAgICAgICBibG9j a190IGF2YWlsX3VzZXJfYmxvY2tfY291bnQ7Cj4gPj4+IEBAIC0yNTk5LDEwICsyNjA0LDE2IEBA IHN0YXRpYyBpbmxpbmUgaW50IGluY192YWxpZF9ibG9ja19jb3VudChzdHJ1Y3QgZjJmc19zYl9p bmZvICpzYmksCj4gPj4+Cj4gPj4+ICAgICAgICBzcGluX2xvY2soJnNiaS0+c3RhdF9sb2NrKTsK PiA+Pj4KPiA+Pj4gKyAgICAgaWYgKGFsaWFzX3Jlc2VydmVkKQo+ID4+PiArICAgICAgICAgICAg IHNiaS0+YWxpYXNfcmVzZXJ2ZWRfYmxvY2tzIC09ICpjb3VudDsKPiA+Pj4gKwo+ID4+PiAgICAg ICAgYXZhaWxfdXNlcl9ibG9ja19jb3VudCA9IGdldF9hdmFpbGFibGVfYmxvY2tfY291bnQoc2Jp LCBpbm9kZSwgdHJ1ZSk7Cj4gPj4+ICAgICAgICBkaWZmID0gKGxvbmcgbG9uZylzYmktPnRvdGFs X3ZhbGlkX2Jsb2NrX2NvdW50ICsgKmNvdW50IC0KPiA+Pj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbF91c2VyX2Jsb2NrX2NvdW50Owo+ID4+PiAg ICAgICAgaWYgKHVubGlrZWx5KGRpZmYgPiAwKSkgewo+ID4+PiArICAgICAgICAgICAgIGlmIChh bGlhc19yZXNlcnZlZCkKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNiaS0+YWxpYXNfcmVz ZXJ2ZWRfYmxvY2tzICs9ICpjb3VudDsKPiA+Pj4gKwo+ID4+PiAgICAgICAgICAgICAgICBpZiAo IXBhcnRpYWwpIHsKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmc2Jp LT5zdGF0X2xvY2spOwo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2UgPSAqY291 bnQ7Cj4gPj4+IEBAIC00MDEwLDYgKzQwMjEsOCBAQCBpbnQgZjJmc19mbHVzaF9kZXZpY2VfY2Fj aGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPiA+Pj4gICAgdm9pZCBmMmZzX2Rlc3Ryb3lf Zmx1c2hfY21kX2NvbnRyb2woc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBib29sIGZyZWUpOwo+ ID4+PiAgICB2b2lkIGYyZnNfaW52YWxpZGF0ZV9ibG9ja3Moc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLCBibG9ja190IGFkZHIsCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbik7Cj4gPj4+ICt2b2lkIGYyZnNfcmVzZXJ2 ZV9kZXZpY2VfYWxpYXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGFkZHIsCj4g Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgbGVuKTsKPiA+Pj4gICAgYm9vbCBmMmZzX2lzX2NoZWNrcG9pbnRlZF9kYXRhKHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBibGthZGRyKTsKPiA+Pj4gICAgaW50IGYyZnNf c3RhcnRfZGlzY2FyZF90aHJlYWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPiA+Pj4gICAg dm9pZCBmMmZzX2Ryb3BfZGlzY2FyZF9jbWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPiA+ Pj4gQEAgLTQyMzEsNiArNDI0NCw4IEBAIHZvaWQgZjJmc19idWlsZF9nY19tYW5hZ2VyKHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSk7Cj4gPj4+ICAgIGludCBmMmZzX2djX3JhbmdlKHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSwKPiA+Pj4gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0 X3NlZywgdW5zaWduZWQgaW50IGVuZF9zZWcsCj4gPj4+ICAgICAgICAgICAgICAgIGJvb2wgZHJ5 X3J1biwgdW5zaWduZWQgaW50IGRyeV9ydW5fc2VjdGlvbnMpOwo+ID4+PiArdm9pZCBmMmZzX3Jl c2V0X2djX3ZpY3RpbV9yZXNvdXJjZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPj4+ICsg ICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgZW5kKTsKPiA+Pj4g ICAgaW50IGYyZnNfcmVzaXplX2ZzKHN0cnVjdCBmaWxlICpmaWxwLCBfX3U2NCBibG9ja19jb3Vu dCk7Cj4gPj4+ICAgIGludCBfX2luaXQgZjJmc19jcmVhdGVfZ2FyYmFnZV9jb2xsZWN0aW9uX2Nh Y2hlKHZvaWQpOwo+ID4+PiAgICB2b2lkIGYyZnNfZGVzdHJveV9nYXJiYWdlX2NvbGxlY3Rpb25f Y2FjaGUodm9pZCk7Cj4gPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2ZpbGUuYyBiL2ZzL2YyZnMv ZmlsZS5jCj4gPj4+IGluZGV4IDRiNTJjNTZkNzFmMC4uODM1ZjEwYmM1OWI1IDEwMDY0NAo+ID4+ PiAtLS0gYS9mcy9mMmZzL2ZpbGUuYwo+ID4+PiArKysgYi9mcy9mMmZzL2ZpbGUuYwo+ID4+PiBA QCAtODEzLDEzICs4MTMsMTkgQEAgaW50IGYyZnNfZG9fdHJ1bmNhdGVfYmxvY2tzKHN0cnVjdCBp bm9kZSAqaW5vZGUsIHU2NCBmcm9tLCBib29sIGxvY2spCj4gPj4+Cj4gPj4+ICAgICAgICBpZiAo SVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkgewo+ID4+PiAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZXh0ZW50X3RyZWUgKmV0ID0gRjJGU19JKGlub2RlKS0+ZXh0ZW50X3RyZWVbRVhfUkVBRF07Cj4g Pj4+IC0gICAgICAgICAgICAgc3RydWN0IGV4dGVudF9pbmZvIGVpID0gZXQtPmxhcmdlc3Q7Cj4g Pj4+ICsgICAgICAgICAgICAgc3RydWN0IGV4dGVudF9pbmZvIGVpOwo+ID4+PiArCj4gPj4+ICsg ICAgICAgICAgICAgcmVhZF9sb2NrKCZldC0+bG9jayk7Cj4gPj4+ICsgICAgICAgICAgICAgZWkg PSBldC0+bGFyZ2VzdDsKPiA+Pj4gKyAgICAgICAgICAgICByZWFkX3VubG9jaygmZXQtPmxvY2sp Owo+ID4+Pgo+ID4+PiAgICAgICAgICAgICAgICBmMmZzX2ludmFsaWRhdGVfYmxvY2tzKHNiaSwg ZWkuYmxrLCBlaS5sZW4pOwo+ID4+Pgo+ID4+PiAgICAgICAgICAgICAgICBkZWNfdmFsaWRfYmxv Y2tfY291bnQoc2JpLCBpbm9kZSwgZWkubGVuKTsKPiA+Pj4gICAgICAgICAgICAgICAgZjJmc191 cGRhdGVfdGltZShzYmksIFJFUV9USU1FKTsKPiA+Pj4KPiA+Pj4gKyAgICAgICAgICAgICBmMmZz X2Ryb3BfZXh0ZW50X3RyZWUoaW5vZGUpOwo+ID4+PiArCj4gPj4+ICAgICAgICAgICAgICAgIGYy ZnNfZm9saW9fcHV0KGlmb2xpbywgdHJ1ZSk7Cj4gPj4+ICAgICAgICAgICAgICAgIGdvdG8gb3V0 Owo+ID4+PiAgICAgICAgfQo+ID4+PiBAQCAtMTEwMCw4ICsxMTA2LDkgQEAgaW50IGYyZnNfc2V0 YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAo+ID4+ PiAgICAgICAgaWYgKChhdHRyLT5pYV92YWxpZCAmIEFUVFJfU0laRSkpIHsKPiA+Pj4gICAgICAg ICAgICAgICAgaWYgKG1hcHBpbmdfbGFyZ2VfZm9saW9fc3VwcG9ydChpbm9kZS0+aV9tYXBwaW5n KSkKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPj4+ IC0gICAgICAgICAgICAgaWYgKCFmMmZzX2lzX2NvbXByZXNzX2JhY2tlbmRfcmVhZHkoaW5vZGUp IHx8Cj4gPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTX0RFVklDRV9BTElBU0lO Ryhpbm9kZSkpCj4gPj4+ICsgICAgICAgICAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhpbm9k ZSkpCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ID4+PiArICAg ICAgICAgICAgIGlmICghZjJmc19pc19jb21wcmVzc19iYWNrZW5kX3JlYWR5KGlub2RlKSkKPiA+ Pj4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPj4+ICAgICAg ICAgICAgICAgIGlmIChpc19pbm9kZV9mbGFnX3NldChpbm9kZSwgRklfQ09NUFJFU1NfUkVMRUFT RUQpICYmCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgIUlTX0FMSUdORUQoYXR0ci0+aWFf c2l6ZSwKPiA+Pj4gQEAgLTIxMzAsNiArMjEzNyw5IEBAIHN0YXRpYyBpbnQgZjJmc19zZXRmbGFn c19jb21tb24oc3RydWN0IGlub2RlICppbm9kZSwgdTMyIGlmbGFncywgdTMyIG1hc2spCj4gPj4+ ICAgICAgICBpZiAoSVNfTk9RVU9UQShpbm9kZSkpCj4gPj4+ICAgICAgICAgICAgICAgIHJldHVy biAtRVBFUk07Cj4gPj4+Cj4gPj4+ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUp KQo+ID4+PiArICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4gPj4+ICsKPiA+Pj4gICAgICAg IGlmICgoaWZsYWdzIF4gbWFza2VkX2ZsYWdzKSAmIEYyRlNfQ0FTRUZPTERfRkwpIHsKPiA+Pj4g ICAgICAgICAgICAgICAgaWYgKCFmMmZzX3NiX2hhc19jYXNlZm9sZChGMkZTX0lfU0IoaW5vZGUp KSkKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPj4+ IEBAIC0yNjc4LDYgKzI2ODgsMTcgQEAgc3RhdGljIGludCBmMmZzX2lvY19nZXRfZW5jcnlwdGlv bl9wb2xpY3koc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4+PiAgICAg ICAgcmV0dXJuIGZzY3J5cHRfaW9jdGxfZ2V0X3BvbGljeShmaWxwLCAodm9pZCBfX3VzZXIgKilh cmcpOwo+ID4+PiAgICB9Cj4gPj4+Cj4gPj4+ICtzdGF0aWMgaW50IGYyZnNfaW9jX2dldF9kZXZf YWxpYXNfc3RhdHVzKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKPiA+Pj4g K3sKPiA+Pj4gKyAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7Cj4g Pj4+ICsKPiA+Pj4gKyAgICAgaWYgKCFJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+ID4+PiAr ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4+PiArCj4gPj4+ICsgICAgIHJldHVybiBw dXRfdXNlcihGMkZTX0hBU19CTE9DS1MoaW5vZGUpID8gRjJGU19ERVZfQUxJQVNfU1RBVFVTX1JF U0VSVkVEIDoKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjJGU19ERVZfQUxJ QVNfU1RBVFVTX1JFTEVBU0VELCAodTMyIF9fdXNlciAqKWFyZyk7Cj4gPj4+ICt9Cj4gPj4+ICsK PiA+Pj4gICAgc3RhdGljIGludCBmMmZzX2lvY19nZXRfZW5jcnlwdGlvbl9wd3NhbHQoc3RydWN0 IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4+PiAgICB7Cj4gPj4+ICAgICAgICBz dHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKPiA+Pj4gQEAgLTM2MTYsNiAr MzYzNywyNDEgQEAgc3RhdGljIGludCBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX2ZpbGUoc3RydWN0 IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4+PiAgICAgICAgICAgICAgICAgICAg ICAgICh1MzIgX191c2VyICopYXJnKTsKPiA+Pj4gICAgfQo+ID4+Pgo+ID4+PiArc3RhdGljIGJv b2wgZjJmc19nZXRfZGV2X2FsaWFzX2V4dGVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4g Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpk ZW50cnksCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZXh0ZW50X2luZm8gKmVpKQo+ID4+PiArewo+ID4+PiArICAgICBpbnQgaTsKPiA+Pj4gKwo+ID4+ PiArICAgICBmb3IgKGkgPSAxOyBpIDwgc2JpLT5zX25kZXZzOyBpKyspIHsKPiA+Pj4gKyAgICAg ICAgICAgICBjaGFyICpuYW1lID0gc3RycmNocihGREVWKGkpLnBhdGgsICcvJyk7Cj4gPj4+ICsK PiA+Pj4gKyAgICAgICAgICAgICBuYW1lID0gbmFtZSA/IG5hbWUgKyAxIDogRkRFVihpKS5wYXRo Owo+ID4+PiArICAgICAgICAgICAgIGlmIChzdHJjbXAobmFtZSwgZGVudHJ5LT5kX25hbWUubmFt ZSkpCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+Pj4gKwo+ID4+PiAr ICAgICAgICAgICAgIGVpLT5ibGsgPSBGREVWKGkpLnN0YXJ0X2JsazsKPiA+Pj4gKyAgICAgICAg ICAgICBlaS0+bGVuID0gRkRFVihpKS50b3RhbF9zZWdtZW50cyA8PCBzYmktPmxvZ19ibG9ja3Nf cGVyX3NlZzsKPiA+Pj4gKyAgICAgICAgICAgICBlaS0+Zm9mcyA9IDA7Cj4gPj4+ICsgICAgICAg ICAgICAgcmV0dXJuIHRydWU7Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKyAgICAgcmV0dXJuIGZhbHNl Owo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICtzdGF0aWMgaW50IGYyZnNfaW9jX3Jlc2VydmVfZGV2 X2FsaWFzKHN0cnVjdCBmaWxlICpmaWxwKQo+ID4+PiArewo+ID4+PiArICAgICBzdHJ1Y3QgaW5v ZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKPiA+Pj4gKyAgICAgc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpID0gRjJGU19JX1NCKGlub2RlKTsKPiA+Pj4gKyAgICAgc3RydWN0IGV4dGVudF90 cmVlICpldCA9IEYyRlNfSShpbm9kZSktPmV4dGVudF90cmVlW0VYX1JFQURdOwo+ID4+PiArICAg ICBzdHJ1Y3QgZXh0ZW50X2luZm8gZWk7Cj4gPj4+ICsgICAgIHN0cnVjdCBjcF9jb250cm9sIGNw YyA9IHsgQ1BfU1lOQywgMCwgMCwgMCB9Owo+ID4+PiArICAgICBzdHJ1Y3QgZjJmc19sb2NrX2Nv bnRleHQgbGMsIGdsYzsKPiA+Pj4gKyAgICAgYmxrY250X3QgY291bnQ7Cj4gPj4+ICsgICAgIHVu c2lnbmVkIGludCBzdGFydCwgZW5kOwo+ID4+PiArICAgICBpbnQgdHlwZSwgZXJyOwo+ID4+PiAr Cj4gPj4+ICsgICAgIGlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKPiA+Pj4gKyAgICAgICAg ICAgICByZXR1cm4gLUVQRVJNOwo+ID4+PiArCj4gPj4+ICsgICAgIGlmICh1bmxpa2VseShpc19z YmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSkKPiA+Pj4gKyAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKPiA+Pj4gKwo+ID4+PiArICAgICBlcnIgPSBtbnRfd2FudF93cml0ZV9m aWxlKGZpbHApOwo+ID4+PiArICAgICBpZiAoZXJyKQo+ID4+PiArICAgICAgICAgICAgIHJldHVy biBlcnI7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgaW5vZGVfbG9jayhpbm9kZSk7Cj4gPj4+ICsKPiA+ Pj4gKyAgICAgaWYgKCFJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKSB7Cj4gPj4+ICsgICAgICAg ICAgICAgZXJyID0gLUVJTlZBTDsKPiA+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91 bmxvY2s7Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKwo+ID4+PiArICAgICBpZiAoRjJGU19IQVNfQkxP Q0tTKGlub2RlKSkgewo+ID4+PiArICAgICAgICAgICAgIGVyciA9IDA7Cj4gPj4+ICsgICAgICAg ICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4+PiArICAgICB9Cj4gPj4+ICsKPiA+Pj4g KyAgICAgaWYgKCFmMmZzX2dldF9kZXZfYWxpYXNfZXh0ZW50KHNiaSwgZmlscC0+Zl9wYXRoLmRl bnRyeSwgJmVpKSkgewo+ID4+PiArICAgICAgICAgICAgIGYyZnNfd2FybihzYmksICJkZXZpY2Ug YWxpYXMgZmlsZSAoJXMsIGlubz0lbGx1KSBoYXMgbm8gbWF0Y2hpbmcgZGV2aWNlIiwKPiA+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgZmlscC0+Zl9wYXRoLmRlbnRyeS0+ZF9uYW1lLm5hbWUs Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpaW5vZGUt PmlfaW5vKTsKPiA+Pj4gKyAgICAgICAgICAgICBzZXRfc2JpX2ZsYWcoc2JpLCBTQklfTkVFRF9G U0NLKTsKPiA+Pj4gKyAgICAgICAgICAgICBmMmZzX2hhbmRsZV9lcnJvcihzYmksIEVSUk9SX0NP UlJVUFRFRF9JTk9ERSk7Cj4gPj4+ICsgICAgICAgICAgICAgZXJyID0gLUVGU0NPUlJVUFRFRDsK PiA+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4gPj4+ICsgICAgIH0K PiA+Pj4gKwo+ID4+PiArICAgICBzcGluX2xvY2soJnNiaS0+c3RhdF9sb2NrKTsKPiA+Pj4gKyAg ICAgaWYgKHNiaS0+dG90YWxfdmFsaWRfYmxvY2tfY291bnQgKyBlaS5sZW4gPgo+ID4+PiArICAg ICAgICAgICAgICAgICAgICAgZ2V0X2F2YWlsYWJsZV9ibG9ja19jb3VudChzYmksIGlub2RlLCB0 cnVlKSkgewo+ID4+PiArICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZzYmktPnN0YXRfbG9jayk7 Cj4gPj4+ICsgICAgICAgICAgICAgZXJyID0gLUVOT1NQQzsKPiA+Pj4gKyAgICAgICAgICAgICBn b3RvIG91dF9pbm9kZV91bmxvY2s7Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKyAgICAgc2JpLT5hbGlh c19yZXNlcnZlZF9ibG9ja3MgKz0gZWkubGVuOwo+ID4+PiArICAgICBzcGluX3VubG9jaygmc2Jp LT5zdGF0X2xvY2spOwo+ID4+PiArCj4gPj4+ICsgICAgIHNwaW5fbG9jaygmRlJFRV9JKHNiaSkt PnNlZ21hcF9sb2NrKTsKPiA+Pj4gKyAgICAgRkRFVihmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgo c2JpLCBlaS5ibGspKS5pc19yZXNlcnZpbmcgPSB0cnVlOwo+ID4+PiArICAgICBzcGluX3VubG9j aygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2NrKTsKPiA+Pj4gKwo+ID4+PiArICAgICBzdGFydCA9 IEdFVF9TRUdOTyhzYmksIGVpLmJsayk7Cj4gPj4+ICsgICAgIGVuZCA9IEdFVF9TRUdOTyhzYmks IGVpLmJsayArIGVpLmxlbiAtIDEpOwo+ID4+PiArCj4gPj4+ICsgICAgIC8qIEFjcXVpcmUgZ2Nf bG9jayBmb3IgdmljdGltIHJlc2V0LCBjdXJzZWcgcmVzaXplLCBhbmQgcmFuZ2UgR0MgKi8KPiA+ Pj4gKyAgICAgZjJmc19kb3duX3dyaXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+ID4+ PiArCj4gPj4+ICsgICAgIC8qIFJlc2V0IHRoZSB2aWN0aW0gaW5mb3JtYXRpb24gdG8gcHJldmVu dCBHQyBmcm9tIHRhcmdldGluZyB0aGUgcmFuZ2UgKi8KPiA+Pj4gKyAgICAgZjJmc19yZXNldF9n Y192aWN0aW1fcmVzb3VyY2Uoc2JpLCBzdGFydCwgZW5kKTsKPiA+Pj4gKwo+ID4+PiArICAgICAv KiBNb3ZlIG91dCBjdXJzZWdzIGZyb20gdGhlIHRhcmdldCByYW5nZSAqLwo+ID4+PiArICAgICBm b3IgKHR5cGUgPSBDVVJTRUdfSE9UX0RBVEE7IHR5cGUgPCBOUl9DVVJTRUdfUEVSU0lTVF9UWVBF OyB0eXBlKyspIHsKPiA+Pj4gKyAgICAgICAgICAgICBlcnIgPSBmMmZzX2FsbG9jYXRlX3NlZ21l bnRfZm9yX3Jlc2l6ZShzYmksIHR5cGUsIHN0YXJ0LCBlbmQpOwo+ID4+PiArICAgICAgICAgICAg IGlmIChlcnIpCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF9nY191bmxvY2s7 Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKwo+ID4+PiArICAgICBmMmZzX2xvY2tfb3Aoc2JpLCAmbGMp Owo+ID4+PiArCj4gPj4+ICsgICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBT QklfQ1BfRElTQUJMRUQpKSkgewo+ID4+PiArICAgICAgICAgICAgIGVyciA9IC1FSU5WQUw7Cj4g Pj4+ICsgICAgICAgICAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ID4+PiArICAgICAg ICAgICAgIGdvdG8gb3V0X2djX3VubG9jazsKPiA+Pj4gKyAgICAgfQo+ID4+PiArCj4gPj4+ICsg ICAgIC8qIGRvIEdDIHRvIG1vdmUgb3V0IHZhbGlkIGJsb2NrcyBpbiB0aGUgcmFuZ2UgYWxsIGF0 IG9uY2UhICovCj4gPj4+ICsgICAgIGVyciA9IGYyZnNfZ2NfcmFuZ2Uoc2JpLCBzdGFydCwgZW5k LCBmYWxzZSwgMCk7Cj4gPj4+ICsgICAgIGlmIChlcnIpIHsKPiA+Pj4gKyAgICAgICAgICAgICBm MmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPj4+ICsgICAgICAgICAgICAgZ290byBvdXRfZ2Nf dW5sb2NrOwo+ID4+PiArICAgICB9Cj4gPj4+ICsKPiA+Pj4gKyAgICAgY291bnQgPSBlaS5sZW47 Cj4gPj4+ICsgICAgIGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGlub2RlLCAmY291 bnQsIGZhbHNlLCB0cnVlKTsKPiA+Pj4gKyAgICAgaWYgKGVycikgewo+ID4+PiArICAgICAgICAg ICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPiA+Pj4gKyAgICAgICAgICAgICBnb3RvIG91 dF9nY191bmxvY2s7Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKwo+ID4+PiArICAgICB3cml0ZV9sb2Nr KCZldC0+bG9jayk7Cj4gPj4+ICsgICAgIGV0LT5sYXJnZXN0ID0gZWk7Cj4gPj4+ICsgICAgIHdy aXRlX3VubG9jaygmZXQtPmxvY2spOwo+ID4+PiArICAgICBjbGVhcl9pbm9kZV9mbGFnKGlub2Rl LCBGSV9OT19FWFRFTlQpOwo+ID4+PiArCj4gPj4+ICsgICAgIGYyZnNfcmVzZXJ2ZV9kZXZpY2Vf YWxpYXMoc2JpLCBlaS5ibGssIGVpLmxlbik7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgaV9zaXplX3dy aXRlKGlub2RlLCAobG9mZl90KWVpLmxlbiA8PCBzYmktPmxvZ19ibG9ja3NpemUpOwo+ID4+PiAr ICAgICBmMmZzX3VwZGF0ZV9pbm9kZV9wYWdlKGlub2RlKTsKPiA+Pj4gKwo+ID4+PiArICAgICBz cGluX2xvY2soJkZSRUVfSShzYmkpLT5zZWdtYXBfbG9jayk7Cj4gPj4+ICsgICAgIEZERVYoZjJm c190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgZWkuYmxrKSkuaXNfcmVzZXJ2aW5nID0gZmFsc2U7 Cj4gPj4+ICsgICAgIHNwaW5fdW5sb2NrKCZGUkVFX0koc2JpKS0+c2VnbWFwX2xvY2spOwo+ID4+ PiArCj4gPj4+ICsgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPiA+Pj4gKyAgICAgZjJm c191cF93cml0ZV90cmFjZSgmc2JpLT5nY19sb2NrLCAmZ2xjKTsKPiA+Pgo+ID4+IERvIHdlIG5l ZWQgdG8gY2FsbCBmMmZzX3dyaXRlX2NoZWNrcG9pbnQoc2JpLCAmY3BjKSBoZXJlIHRvIG1ha2Ug c3VyZSBwZXJzaXN0Cj4gPj4gZGV2aWNlIGFsaWFzIGZpbGUgZmlyc3Q/IHRvIGF2b2lkIGZvbGxv d2luZyBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcygpIHJhY2luCj4gPj4gICAgdy8gZjJmc19p b2NfcmVzZXJ2ZV9kZXZfYWxpYXMoKT8KPiA+Pgo+ID4+IC0gZjJmc19pb2NfcmVzZXJ2ZV9kZXZf YWxpYXMgICAgICAgICAgICAtIGYyZnNfaW9jX3JlbGVhc2VfZGV2X2FsaWFzCj4gPj4gLi4uCj4g Pj4gICAgLSBmMmZzX3VubG9ja19vcAo+ID4+ICAgIC0gZjJmc191cF93cml0ZV90cmFjZShnY19s b2NrKQo+ID4+ICAgIC0gaW5vZGVfdW5sb2NrCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLSBpbm9kZV9sb2NrCj4gPj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLi4uCj4gPj4gICAgLSBmMmZzX3dyaXRlX2NoZWNrcG9pbnQK PiA+Cj4gPiBIaSBDaGFvLAo+ID4KPiA+IEkgY291bGRuJ3QgZ2V0IHlvdXIgcG9pbnQuIENvdWxk IHlvdSBlbGFib3JhdGUgbW9yZSwgaWYgSSBtaXNzZWQgaXQ/Cj4KPiBIaSBEYWVobywKPgo+IEFj dHVhbGx5LCB3aGF0IEkgbWVhbiBpcyBpZiBmMmZzX3dyaXRlX2NoZWNrcG9pbnQoKSBpcyBub3Qg Y292ZXJlZCBieQo+IGlub2RlIGxvY2ssIGluIHJhY2UgY29uZGl0aW9uIHRoZXJlIHdpbGwgYmUg YmVsb3cgaW52b2tpbmcgc2VyaWFsOgo+Cj4gQXNzdW1lOgo+IGYyZnNfaW9jX3Jlc2VydmVfZGV2 X2FsaWFzIDo9IHJlc2VydmVfZGV2X2FsaWFzICsgZjJmc193cml0ZV9jaGVja3BvaW50Cj4gZjJm c19pb2NfcmVsZWFzZV9kZXZfYWxpYXMgOj0gcmVsZWFzZV9kZXZfYWxpYXMgKyBmMmZzX3dyaXRl X2NoZWNrcG9pbnQKPgo+IDEpIFRocmVhZCBBOiByZXNlcnZlX2Rldl9hbGlhcwo+IDIpIFRocmVh ZCBCOiByZWxlYXNlX2Rldl9hbGlhcwo+IDMpIFRocmVhZCBDOiByZXNlcnZlX2Rldl9hbGlhcwo+ IDQpIFRocmVhZCBCOiBmMmZzX3dyaXRlX2NoZWNrcG9pbnQKPiA1KSBUaHJlYWQgQTogZjJmc193 cml0ZV9jaGVja3BvaW50Cj4gNikgVGhyZWFkIEM6IGYyZnNfd3JpdGVfY2hlY2twb2ludAo+Cj4g QWZ0ZXIgMSkgYWxsIGRhdGEgYWZ0ZXIgcmVzZXJ2ZV9kZXZfYWxpYXMoKSBhcmUgbm90IGNoZWNr cG9pbnRlZCwgdGhlbiB0aGUKPiBmb2xsb3dpbmcgcmVsZWFzZV9kZXZfYWxpYXMgaW4gMikgd29u J3QgZW5jb3VudGVyIGFueSBpc3N1ZSwgcmlnaHQ/IGFuZCB0aGUKPiBzYW1lIHF1ZXRpb25zIGZv ciAzKS4KPgo+IElPVywgcmVzZXJ2ZV9kZXZfYWxpYXMvcmVsZWFzZV9kZXZfYWxpYXMgZG9lc24n dCBuZWVkIHRvIHJlbHkgb24gY2hlY2twb2ludGVkCj4gc3RhdGUgb2YgZWFjaCBvdGhlciwgYW0g SSB1bmRlcnN0YW5kIGl0IGNvcnJlY3RseT8gaWYgc28gdGhlcmUgd29uJ3QgYmUgYW55Cj4gaXNz dWUuCj4KPiA+Cj4gPiAxLiBJbi1tZW1vcnkgc3RhdGUgaXMgYWxyZWFkeSBhdG9taWMgKE5vIFJh Y2UpOgo+ID4gICAgICBCZWZvcmUgaW5vZGVfdW5sb2NrKCksIGFsbCBpbi1tZW1vcnkgbWV0YWRh dGEgKGV4dGVudF90cmVlLCBTSVQKPiA+IHNlZ21lbnQgYml0bWFwcywgaV9zaXplLCBhbmQgZGly dHkgaW5vZGUgcGFnZSkgYXJlIGZ1bGx5IHVwZGF0ZWQgdW5kZXIKPiA+IGlub2RlX2xvY2sgKyBm MmZzX2xvY2tfb3AuIEEgc3Vic2VxdWVudCBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcygpCj4g PiB3aWxsIG9ic2VydmUgYSBjb21wbGV0ZSwgY29uc2lzdGVudCBzdGF0ZS4KPiA+Cj4gPiAyLiBP bi1kaXNrIGNvbnNpc3RlbmN5ICYgY3Jhc2ggc2FmZXR5Ogo+ID4gICAgICBDaGVja3BvaW50cyBh cmUgc2VyaWFsaXplZCBpbnRlcm5hbGx5IHZpYSBjcF9tdXRleCAvCj4gPiBmMmZzX2xvY2tfYWxs KCkuIFJlZ2FyZGxlc3Mgb2YgdGhlIGNoZWNrcG9pbnQgZXhlY3V0aW9uIHRpbWluZyBvciBhbnkK PiA+IHN1ZGRlbiBwb3dlci1vZmYgKFNQTykgYmV0d2VlbiB0aGUgdHdvIGlvY3RscywgdGhlIGZp bGVzeXN0ZW0gYWx3YXlzCj4gPiByZWNvdmVycyB0byB0aGUgbGFzdCBjb21taXR0ZWQgYXRvbWlj IGNoZWNrcG9pbnQgd2l0aG91dCBtZXRhZGF0YQo+ID4gY29ycnVwdGlvbi4KPgo+IFRoYW5rcyBm b3IgdGhlIGV4cGxhbmF0aW9uLgo+Cj4gVGhhbmtzLAoKClllcywgeW91ciB1bmRlcnN0YW5kaW5n IGlzIGNvbXBsZXRlbHkgY29ycmVjdCEKCk5laXRoZXIgcmVzZXJ2ZV9kZXZfYWxpYXMoKSBub3Ig cmVsZWFzZV9kZXZfYWxpYXMoKSByZWxpZXMgb24gdGhlCmNoZWNrcG9pbnRlZCBzdGF0ZSBvZiBw cmV2aW91cyBvcGVyYXRpb25zLgpUaGV5IG9ubHkgZGVwZW5kIG9uIHRoZSBpbi1tZW1vcnkgbWV0 YWRhdGEgKGV4dGVudCB0cmVlLCBTSVQgYml0bWFwcywKaV9zaXplLCBldGMuKSwgd2hpY2ggaXMg YWxyZWFkeSBhdG9taWNhbGx5IHVwZGF0ZWQgYW5kIGZ1bGx5CnN5bmNocm9uaXplZCBieSBpbm9k ZV9sb2NrIGFuZCBmMmZzX2xvY2tfb3AuClRoZXJlZm9yZSwgdGhlIGludGVybGVhdmVkIGNoZWNr cG9pbnQgc2NlbmFyaW8geW91IGRlc2NyaWJlZCB3b24ndApjYXVzZSBhbnkgaXNzdWUgYXQgYWxs LgoKVGhhbmtzLAoKPgo+ID4KPiA+IFRoYW5rcywKPiA+Cj4gPj4KPiA+Pj4gKwo+ID4+PiArICAg ICBpbm9kZV91bmxvY2soaW5vZGUpOwo+ID4+PiArICAgICBtbnRfZHJvcF93cml0ZV9maWxlKGZp bHApOwo+ID4+PiArCj4gPj4+ICsgICAgIHJldHVybiBmMmZzX3dyaXRlX2NoZWNrcG9pbnQoc2Jp LCAmY3BjKTsKPiA+Pj4gKwo+ID4+PiArb3V0X2djX3VubG9jazoKPiA+Pj4gKyAgICAgc3Bpbl9s b2NrKCZzYmktPnN0YXRfbG9jayk7Cj4gPj4+ICsgICAgIHNiaS0+YWxpYXNfcmVzZXJ2ZWRfYmxv Y2tzIC09IGVpLmxlbjsKPiA+Pj4gKyAgICAgc3Bpbl91bmxvY2soJnNiaS0+c3RhdF9sb2NrKTsK PiA+Pj4gKwo+ID4+PiArICAgICBzcGluX2xvY2soJkZSRUVfSShzYmkpLT5zZWdtYXBfbG9jayk7 Cj4gPj4+ICsgICAgIEZERVYoZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgZWkuYmxrKSku aXNfcmVzZXJ2aW5nID0gZmFsc2U7Cj4gPj4+ICsgICAgIHNwaW5fdW5sb2NrKCZGUkVFX0koc2Jp KS0+c2VnbWFwX2xvY2spOwo+ID4+PiArICAgICBmMmZzX3VwX3dyaXRlX3RyYWNlKCZzYmktPmdj X2xvY2ssICZnbGMpOwo+ID4+PiArCj4gPj4+ICtvdXRfaW5vZGVfdW5sb2NrOgo+ID4+PiArICAg ICBpbm9kZV91bmxvY2soaW5vZGUpOwo+ID4+PiArICAgICBtbnRfZHJvcF93cml0ZV9maWxlKGZp bHApOwo+ID4+PiArICAgICByZXR1cm4gZXJyOwo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICtzdGF0 aWMgaW50IGYyZnNfaW9jX3JlbGVhc2VfZGV2X2FsaWFzKHN0cnVjdCBmaWxlICpmaWxwKQo+ID4+ PiArewo+ID4+PiArICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsK PiA+Pj4gKyAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpID0gRjJGU19JX1NCKGlub2RlKTsK PiA+Pj4gKyAgICAgc3RydWN0IGV4dGVudF90cmVlICpldCA9IEYyRlNfSShpbm9kZSktPmV4dGVu dF90cmVlW0VYX1JFQURdOwo+ID4+PiArICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8gZWkgPSB7MCwg fTsKPiA+Pj4gKyAgICAgc3RydWN0IGNwX2NvbnRyb2wgY3BjID0geyBDUF9TWU5DLCAwLCAwLCAw IH07Cj4gPj4+ICsgICAgIHN0cnVjdCBmMmZzX2xvY2tfY29udGV4dCBsYywgZ2xjOwo+ID4+PiAr ICAgICBpbnQgZXJyOwo+ID4+PiArCj4gPj4+ICsgICAgIGlmICghY2FwYWJsZShDQVBfU1lTX0FE TUlOKSkKPiA+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ID4+PiArCj4gPj4+ICsg ICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSkK PiA+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+Pj4gKwo+ID4+PiArICAgICBl cnIgPSBtbnRfd2FudF93cml0ZV9maWxlKGZpbHApOwo+ID4+PiArICAgICBpZiAoZXJyKQo+ID4+ PiArICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgaW5vZGVfbG9j ayhpbm9kZSk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgaWYgKCFJU19ERVZJQ0VfQUxJQVNJTkcoaW5v ZGUpKSB7Cj4gPj4+ICsgICAgICAgICAgICAgZXJyID0gLUVJTlZBTDsKPiA+Pj4gKyAgICAgICAg ICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKwo+ID4+PiAr ICAgICBpZiAoIUYyRlNfSEFTX0JMT0NLUyhpbm9kZSkpIHsKPiA+Pj4gKyAgICAgICAgICAgICBl cnIgPSAwOwo+ID4+PiArICAgICAgICAgICAgIGdvdG8gb3V0X2lub2RlX3VubG9jazsKPiA+Pj4g KyAgICAgfQo+ID4+PiArCj4gPj4+ICsgICAgIGVyciA9IGZpbGVtYXBfd3JpdGVfYW5kX3dhaXQo aW5vZGUtPmlfbWFwcGluZyk7Cj4gPj4+ICsgICAgIGlmIChlcnIpCj4gPj4+ICsgICAgICAgICAg ICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4+PiArCj4gPj4+ICsgICAgIHJlYWRfbG9jaygm ZXQtPmxvY2spOwo+ID4+PiArICAgICBlaSA9IGV0LT5sYXJnZXN0Owo+ID4+PiArICAgICByZWFk X3VubG9jaygmZXQtPmxvY2spOwo+ID4+PiArCj4gPj4+ICsgICAgIGYyZnNfZG93bl93cml0ZV90 cmFjZSgmc2JpLT5nY19sb2NrLCAmZ2xjKTsKPiA+Pj4gKyAgICAgZjJmc19sb2NrX29wKHNiaSwg JmxjKTsKPiA+Pj4gKwo+ID4+PiArICAgICBpZiAodW5saWtlbHkoaXNfc2JpX2ZsYWdfc2V0KHNi aSwgU0JJX0NQX0RJU0FCTEVEKSkpIHsKPiA+Pj4gKyAgICAgICAgICAgICBlcnIgPSAtRUlOVkFM Owo+ID4+PiArICAgICAgICAgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPiA+Pj4gKyAg ICAgICAgICAgICBmMmZzX3VwX3dyaXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+ID4+ PiArICAgICAgICAgICAgIGdvdG8gb3V0X2lub2RlX3VubG9jazsKPiA+Pj4gKyAgICAgfQo+ID4+ PiArCj4gPj4+ICsgICAgIGZpbGVtYXBfaW52YWxpZGF0ZV9sb2NrKGlub2RlLT5pX21hcHBpbmcp Owo+ID4+PiArICAgICB0cnVuY2F0ZV9zZXRzaXplKGlub2RlLCAwKTsKPiA+Pj4gKwo+ID4+PiAr ICAgICBlcnIgPSBmMmZzX3RydW5jYXRlX2Jsb2Nrcyhpbm9kZSwgMCwgZmFsc2UpOwo+ID4+PiAr ICAgICBpZiAoZXJyKQo+ID4+PiArICAgICAgICAgICAgIGlfc2l6ZV93cml0ZShpbm9kZSwgKGxv ZmZfdCllaS5sZW4gPDwgc2JpLT5sb2dfYmxvY2tzaXplKTsKPiA+Pj4gKyAgICAgZmlsZW1hcF9p bnZhbGlkYXRlX3VubG9jayhpbm9kZS0+aV9tYXBwaW5nKTsKPiA+Pj4gKwo+ID4+PiArICAgICBp ZiAoZXJyKSB7Cj4gPj4+ICsgICAgICAgICAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ ID4+PiArICAgICAgICAgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmds Yyk7Cj4gPj4+ICsgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4+PiArICAg ICB9Cj4gPj4+ICsKPiA+Pj4gKyAgICAgZjJmc191cGRhdGVfaW5vZGVfcGFnZShpbm9kZSk7Cj4g Pj4+ICsKPiA+Pj4gKyAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ID4+PiArICAgICBm MmZzX3VwX3dyaXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+ID4+Cj4gPj4gICAgICAg ICAgZXJyID0gZjJmc193cml0ZV9jaGVja3BvaW50KHNiaSwgJmNwYyk7Cj4gPj4KPiA+PiBUaGFu a3MsCj4gPj4KPiA+Pj4gKwo+ID4+PiArICAgICBpbm9kZV91bmxvY2soaW5vZGUpOwo+ID4+PiAr ICAgICBtbnRfZHJvcF93cml0ZV9maWxlKGZpbHApOwo+ID4+PiArCj4gPj4+ICsgICAgIHJldHVy biBmMmZzX3dyaXRlX2NoZWNrcG9pbnQoc2JpLCAmY3BjKTsKPiA+Pj4gKwo+ID4+PiArb3V0X2lu b2RlX3VubG9jazoKPiA+Pj4gKyAgICAgaW5vZGVfdW5sb2NrKGlub2RlKTsKPiA+Pj4gKyAgICAg bW50X2Ryb3Bfd3JpdGVfZmlsZShmaWxwKTsKPiA+Pj4gKyAgICAgcmV0dXJuIGVycjsKPiA+Pj4g K30KPiA+Pj4gKwo+ID4+PiAgICBzdGF0aWMgaW50IGYyZnNfaW9jX2lvX3ByaW8oc3RydWN0IGZp bGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4+PiAgICB7Cj4gPj4+ICAgICAgICBzdHJ1 Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKPiA+Pj4gQEAgLTQwNDEsNyArNDI5 Nyw3IEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZV9jb21wcmVzc19ibG9ja3Moc3RydWN0IGRub2RlX29m X2RhdGEgKmRuLCBwZ29mZl90IGNvdW50LAo+ID4+PiAgICAgICAgICAgICAgICB9Cj4gPj4+Cj4g Pj4+ICAgICAgICAgICAgICAgIHJldCA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGRuLT5p bm9kZSwKPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZ0b19yZXNlcnZlZCwgZmFsc2UpOwo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJnRvX3Jlc2VydmVkLCBmYWxzZSwgZmFsc2UpOwo+ID4+PiAgICAg ICAgICAgICAgICBpZiAodW5saWtlbHkocmV0KSkKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gcmV0Owo+ID4+Pgo+ID4+PiBAQCAtNDc0Miw4ICs0OTk4LDE0IEBAIHN0YXRpYyBs b25nIF9fZjJmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5z aWduZWQgbG9uZyBhcmcpCj4gPj4+ICAgICAgICAgICAgICAgIHJldHVybiBmMmZzX2lvY19jb21w cmVzc19maWxlKGZpbHApOwo+ID4+PiAgICAgICAgY2FzZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFT X0ZJTEU6Cj4gPj4+ICAgICAgICAgICAgICAgIHJldHVybiBmMmZzX2lvY19nZXRfZGV2X2FsaWFz X2ZpbGUoZmlscCwgYXJnKTsKPiA+Pj4gKyAgICAgY2FzZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFT X1NUQVRVUzoKPiA+Pj4gKyAgICAgICAgICAgICByZXR1cm4gZjJmc19pb2NfZ2V0X2Rldl9hbGlh c19zdGF0dXMoZmlscCwgYXJnKTsKPiA+Pj4gICAgICAgIGNhc2UgRjJGU19JT0NfSU9fUFJJTzoK PiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIGYyZnNfaW9jX2lvX3ByaW8oZmlscCwgYXJnKTsK PiA+Pj4gKyAgICAgY2FzZSBGMkZTX0lPQ19SRVNFUlZFX0RFVl9BTElBUzoKPiA+Pj4gKyAgICAg ICAgICAgICByZXR1cm4gZjJmc19pb2NfcmVzZXJ2ZV9kZXZfYWxpYXMoZmlscCk7Cj4gPj4+ICsg ICAgIGNhc2UgRjJGU19JT0NfUkVMRUFTRV9ERVZfQUxJQVM6Cj4gPj4+ICsgICAgICAgICAgICAg cmV0dXJuIGYyZnNfaW9jX3JlbGVhc2VfZGV2X2FsaWFzKGZpbHApOwo+ID4+PiAgICAgICAgZGVm YXVsdDoKPiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9UVFk7Cj4gPj4+ICAgICAgICB9 Cj4gPj4+IEBAIC01NTMwLDcgKzU3OTIsMTAgQEAgbG9uZyBmMmZzX2NvbXBhdF9pb2N0bChzdHJ1 Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gPj4+ ICAgICAgICBjYXNlIEYyRlNfSU9DX0RFQ09NUFJFU1NfRklMRToKPiA+Pj4gICAgICAgIGNhc2Ug RjJGU19JT0NfQ09NUFJFU1NfRklMRToKPiA+Pj4gICAgICAgIGNhc2UgRjJGU19JT0NfR0VUX0RF Vl9BTElBU19GSUxFOgo+ID4+PiArICAgICBjYXNlIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RB VFVTOgo+ID4+PiAgICAgICAgY2FzZSBGMkZTX0lPQ19JT19QUklPOgo+ID4+PiArICAgICBjYXNl IEYyRlNfSU9DX1JFU0VSVkVfREVWX0FMSUFTOgo+ID4+PiArICAgICBjYXNlIEYyRlNfSU9DX1JF TEVBU0VfREVWX0FMSUFTOgo+ID4+PiAgICAgICAgICAgICAgICBicmVhazsKPiA+Pj4gICAgICAg IGRlZmF1bHQ6Cj4gPj4+ICAgICAgICAgICAgICAgIHJldHVybiAtRU5PSU9DVExDTUQ7Cj4gPj4+ IGRpZmYgLS1naXQgYS9mcy9mMmZzL2djLmMgYi9mcy9mMmZzL2djLmMKPiA+Pj4gaW5kZXggZmZh YTdiYTc2YTFiLi45M2JjYjM1YTViNWQgMTAwNjQ0Cj4gPj4+IC0tLSBhL2ZzL2YyZnMvZ2MuYwo+ ID4+PiArKysgYi9mcy9mMmZzL2djLmMKPiA+Pj4gQEAgLTIxOTcsMjkgKzIxOTcsMzcgQEAgaW50 IGYyZnNfZ2NfcmFuZ2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4+PiAgICAgICAgcmV0 dXJuIDA7Cj4gPj4+ICAgIH0KPiA+Pj4KPiA+Pj4gK3ZvaWQgZjJmc19yZXNldF9nY192aWN0aW1f cmVzb3VyY2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4+PiArICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgZW5kKQo+ID4+PiArewo+ID4+ PiArICAgICBpbnQgaTsKPiA+Pj4gKwo+ID4+PiArICAgICBtdXRleF9sb2NrKCZESVJUWV9JKHNi aSktPnNlZ2xpc3RfbG9jayk7Cj4gPj4+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfR0NfUE9M SUNZOyBpKyspCj4gPj4+ICsgICAgICAgICAgICAgaWYgKFNJVF9JKHNiaSktPmxhc3RfdmljdGlt W2ldID49IHN0YXJ0ICYmCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBTSVRfSShzYmkpLT5s YXN0X3ZpY3RpbVtpXSA8PSBlbmQpCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBTSVRfSShz YmkpLT5sYXN0X3ZpY3RpbVtpXSA9IDA7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgZm9yIChpID0gQkdf R0M7IGkgPD0gRkdfR0M7IGkrKykKPiA+Pj4gKyAgICAgICAgICAgICBpZiAoc2JpLT5uZXh0X3Zp Y3RpbV9zZWdbaV0gPj0gc3RhcnQgJiYKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNiaS0+ bmV4dF92aWN0aW1fc2VnW2ldIDw9IGVuZCkKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNi aS0+bmV4dF92aWN0aW1fc2VnW2ldID0gTlVMTF9TRUdOTzsKPiA+Pj4gKyAgICAgbXV0ZXhfdW5s b2NrKCZESVJUWV9JKHNiaSktPnNlZ2xpc3RfbG9jayk7Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+Pj4g ICAgc3RhdGljIGludCBmcmVlX3NlZ21lbnRfcmFuZ2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp LAo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNlY3Ms IGJvb2wgZHJ5X3J1bikKPiA+Pj4gICAgewo+ID4+PiAgICAgICAgdW5zaWduZWQgaW50IG5leHRf aW51c2UsIHN0YXJ0LCBlbmQ7Cj4gPj4+ICAgICAgICBzdHJ1Y3QgY3BfY29udHJvbCBjcGMgPSB7 IENQX1JFU0laRSwgMCwgMCwgMCB9Owo+ID4+PiAtICAgICBpbnQgZ2NfbW9kZSwgZ2NfdHlwZTsK PiA+Pj4gICAgICAgIGludCBlcnIgPSAwOwo+ID4+PiAgICAgICAgaW50IHR5cGU7Cj4gPj4+Cj4g Pj4+IC0gICAgIC8qIEZvcmNlIGJsb2NrIGFsbG9jYXRpb24gZm9yIEdDICovCj4gPj4+ICAgICAg ICBNQUlOX1NFQ1Moc2JpKSAtPSBzZWNzOwo+ID4+PiAgICAgICAgc3RhcnQgPSBNQUlOX1NFQ1Mo c2JpKSAqIFNFR1NfUEVSX1NFQyhzYmkpOwo+ID4+PiAgICAgICAgZW5kID0gTUFJTl9TRUdTKHNi aSkgLSAxOwo+ID4+Pgo+ID4+PiAtICAgICBtdXRleF9sb2NrKCZESVJUWV9JKHNiaSktPnNlZ2xp c3RfbG9jayk7Cj4gPj4+IC0gICAgIGZvciAoZ2NfbW9kZSA9IDA7IGdjX21vZGUgPCBNQVhfR0Nf UE9MSUNZOyBnY19tb2RlKyspCj4gPj4+IC0gICAgICAgICAgICAgaWYgKFNJVF9JKHNiaSktPmxh c3RfdmljdGltW2djX21vZGVdID49IHN0YXJ0KQo+ID4+PiAtICAgICAgICAgICAgICAgICAgICAg U0lUX0koc2JpKS0+bGFzdF92aWN0aW1bZ2NfbW9kZV0gPSAwOwo+ID4+PiAtCj4gPj4+IC0gICAg IGZvciAoZ2NfdHlwZSA9IEJHX0dDOyBnY190eXBlIDw9IEZHX0dDOyBnY190eXBlKyspCj4gPj4+ IC0gICAgICAgICAgICAgaWYgKHNiaS0+bmV4dF92aWN0aW1fc2VnW2djX3R5cGVdID49IHN0YXJ0 KQo+ID4+PiAtICAgICAgICAgICAgICAgICAgICAgc2JpLT5uZXh0X3ZpY3RpbV9zZWdbZ2NfdHlw ZV0gPSBOVUxMX1NFR05POwo+ID4+PiAtICAgICBtdXRleF91bmxvY2soJkRJUlRZX0koc2JpKS0+ c2VnbGlzdF9sb2NrKTsKPiA+Pj4gKyAgICAgZjJmc19yZXNldF9nY192aWN0aW1fcmVzb3VyY2Uo c2JpLCBzdGFydCwgZW5kKTsKPiA+Pj4KPiA+Pj4gICAgICAgIC8qIE1vdmUgb3V0IGN1cnNlZ3Mg ZnJvbSB0aGUgdGFyZ2V0IHJhbmdlICovCj4gPj4+ICAgICAgICBmb3IgKHR5cGUgPSBDVVJTRUdf SE9UX0RBVEE7IHR5cGUgPCBOUl9DVVJTRUdfUEVSU0lTVF9UWVBFOyB0eXBlKyspIHsKPiA+Pj4g ZGlmZiAtLWdpdCBhL2ZzL2YyZnMvbmFtZWkuYyBiL2ZzL2YyZnMvbmFtZWkuYwo+ID4+PiBpbmRl eCBjYWMwM2I4ZTkxYTEuLjhjM2I1Nzk4N2Y2YyAxMDA2NDQKPiA+Pj4gLS0tIGEvZnMvZjJmcy9u YW1laS5jCj4gPj4+ICsrKyBiL2ZzL2YyZnMvbmFtZWkuYwo+ID4+PiBAQCAtNDI1LDYgKzQyNSw5 IEBAIHN0YXRpYyBpbnQgZjJmc19saW5rKHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksIHN0cnVj dCBpbm9kZSAqZGlyLAo+ID4+PiAgICAgICAgaWYgKCFmMmZzX2lzX2NoZWNrcG9pbnRfcmVhZHko c2JpKSkKPiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9TUEM7Cj4gPj4+Cj4gPj4+ICsg ICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+ID4+PiArICAgICAgICAgICAgIHJl dHVybiAtRVBFUk07Cj4gPj4+ICsKPiA+Pj4gICAgICAgIGVyciA9IGZzY3J5cHRfcHJlcGFyZV9s aW5rKG9sZF9kZW50cnksIGRpciwgZGVudHJ5KTsKPiA+Pj4gICAgICAgIGlmIChlcnIpCj4gPj4+ ICAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPj4+IEBAIC01NjgsNiArNTcxLDkgQEAgc3Rh dGljIGludCBmMmZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVu dHJ5KQo+ID4+Pgo+ID4+PiAgICAgICAgdHJhY2VfZjJmc191bmxpbmtfZW50ZXIoZGlyLCBkZW50 cnkpOwo+ID4+Pgo+ID4+PiArICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPiA+ Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ID4+PiArCj4gPj4+ICAgICAgICBpZiAo dW5saWtlbHkoZjJmc19jcF9lcnJvcihzYmkpKSkgewo+ID4+PiAgICAgICAgICAgICAgICBlcnIg PSAtRUlPOwo+ID4+PiAgICAgICAgICAgICAgICBnb3RvIG91dDsKPiA+Pj4gQEAgLTk0Niw2ICs5 NTIsOSBAQCBzdGF0aWMgaW50IGYyZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBz dHJ1Y3QgaW5vZGUgKm9sZF9kaXIsCj4gPj4+ICAgICAgICBib29sIG9sZF9pc19kaXIgPSBTX0lT RElSKG9sZF9pbm9kZS0+aV9tb2RlKTsKPiA+Pj4gICAgICAgIGludCBlcnI7Cj4gPj4+Cj4gPj4+ ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcob2xkX2lub2RlKSkKPiA+Pj4gKyAgICAgICAg ICAgICByZXR1cm4gLUVQRVJNOwo+ID4+PiArCj4gPj4+ICAgICAgICBpZiAodW5saWtlbHkoZjJm c19jcF9lcnJvcihzYmkpKSkKPiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIC1FSU87Cj4gPj4+ ICAgICAgICBpZiAoIWYyZnNfaXNfY2hlY2twb2ludF9yZWFkeShzYmkpKQo+ID4+PiBAQCAtMTAx Niw2ICsxMDI1LDggQEAgc3RhdGljIGludCBmMmZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICpp ZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLAo+ID4+PiAgICAgICAgfQo+ID4+Pgo+ID4+PiAg ICAgICAgaWYgKG5ld19pbm9kZSkgewo+ID4+PiArICAgICAgICAgICAgIGlmIChJU19ERVZJQ0Vf QUxJQVNJTkcobmV3X2lub2RlKSkKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAt RVBFUk07Cj4gPj4+Cj4gPj4+ICAgICAgICAgICAgICAgIGVyciA9IC1FTk9URU1QVFk7Cj4gPj4+ ICAgICAgICAgICAgICAgIGlmIChvbGRfaXNfZGlyICYmICFmMmZzX2VtcHR5X2RpcihuZXdfaW5v ZGUpKQo+ID4+PiBAQCAtMTE0Myw2ICsxMTU0LDkgQEAgc3RhdGljIGludCBmMmZzX2Nyb3NzX3Jl bmFtZShzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksCj4g Pj4+ICAgICAgICBpbnQgb2xkX25saW5rID0gMCwgbmV3X25saW5rID0gMDsKPiA+Pj4gICAgICAg IGludCBlcnI7Cj4gPj4+Cj4gPj4+ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcob2xkX2lu b2RlKSB8fCBJU19ERVZJQ0VfQUxJQVNJTkcobmV3X2lub2RlKSkKPiA+Pj4gKyAgICAgICAgICAg ICByZXR1cm4gLUVQRVJNOwo+ID4+PiArCj4gPj4+ICAgICAgICBpZiAodW5saWtlbHkoZjJmc19j cF9lcnJvcihzYmkpKSkKPiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIC1FSU87Cj4gPj4+ICAg ICAgICBpZiAoIWYyZnNfaXNfY2hlY2twb2ludF9yZWFkeShzYmkpKQo+ID4+PiBkaWZmIC0tZ2l0 IGEvZnMvZjJmcy9zZWdtZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwo+ID4+PiBpbmRleCBkNzFk ZGIzZWU5MTguLmQ3MGRjNWVmM2RlNCAxMDA2NDQKPiA+Pj4gLS0tIGEvZnMvZjJmcy9zZWdtZW50 LmMKPiA+Pj4gKysrIGIvZnMvZjJmcy9zZWdtZW50LmMKPiA+Pj4gQEAgLTI2MSw3ICsyNjEsNyBA QCBzdGF0aWMgaW50IF9fcmVwbGFjZV9hdG9taWNfd3JpdGVfYmxvY2soc3RydWN0IGlub2RlICpp bm9kZSwgcGdvZmZfdCBpbmRleCwKPiA+Pj4gICAgICAgIH0gZWxzZSB7Cj4gPj4+ICAgICAgICAg ICAgICAgIGJsa2NudF90IGNvdW50ID0gMTsKPiA+Pj4KPiA+Pj4gLSAgICAgICAgICAgICBlcnIg PSBpbmNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBpbm9kZSwgJmNvdW50LCB0cnVlKTsKPiA+Pj4g KyAgICAgICAgICAgICBlcnIgPSBpbmNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBpbm9kZSwgJmNv dW50LCB0cnVlLCBmYWxzZSk7Cj4gPj4+ICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKPiA+Pj4g ICAgICAgICAgICAgICAgICAgICAgICBmMmZzX3B1dF9kbm9kZSgmZG4pOwo+ID4+PiAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPj4+IEBAIC0yNTAyLDM1ICsyNTAyLDQyIEBA IHN0YXRpYyBpbnQgdXBkYXRlX3NpdF9lbnRyeV9mb3JfYWxsb2Moc3RydWN0IGYyZnNfc2JfaW5m byAqc2JpLCBzdHJ1Y3Qgc2VnX2VudHJ5Cj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgc2Vnbm8sIGJsb2NrX3QgYmxrYWRkciwgdW5zaWduZWQgaW50IG9m ZnNldCwgaW50IGRlbCkKPiA+Pj4gICAgewo+ID4+PiAgICAgICAgYm9vbCBleGlzdDsKPiA+Pj4g KyAgICAgaW50IGRlbF9jb3VudCA9IGRlbDsKPiA+Pj4gKyAgICAgaW50IGk7Cj4gPj4+Cj4gPj4+ IC0gICAgIGV4aXN0ID0gZjJmc190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCwgc2UtPmN1cl92YWxp ZF9tYXApOwo+ID4+PiAtICAgICBpZiAodW5saWtlbHkoZXhpc3QpKSB7Cj4gPj4+IC0gICAgICAg ICAgICAgZjJmc19lcnIoc2JpLCAiQml0bWFwIHdhcyB3cm9uZ2x5IHNldCwgYmxrOiV1IiwgYmxr YWRkcik7Cj4gPj4+IC0gICAgICAgICAgICAgZjJmc19idWdfb24oc2JpLCAxKTsKPiA+Pj4gLSAg ICAgICAgICAgICBzZS0+dmFsaWRfYmxvY2tzLS07Cj4gPj4+IC0gICAgICAgICAgICAgZGVsID0g MDsKPiA+Pj4gLSAgICAgfQo+ID4+PiArICAgICBmMmZzX2J1Z19vbihzYmksIEdFVF9TRUdOTyhz YmksIGJsa2FkZHIpICE9IEdFVF9TRUdOTyhzYmksIGJsa2FkZHIgKyBkZWxfY291bnQgLSAxKSk7 Cj4gPj4+Cj4gPj4+IC0gICAgIGlmIChmMmZzX2Jsb2NrX3VuaXRfZGlzY2FyZChzYmkpICYmCj4g Pj4+IC0gICAgICAgICAgICAgICAgICAgICAhZjJmc190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCwg c2UtPmRpc2NhcmRfbWFwKSkKPiA+Pj4gLSAgICAgICAgICAgICBzYmktPmRpc2NhcmRfYmxrcy0t Owo+ID4+PiArICAgICBmb3IgKGkgPSAwOyBpIDwgZGVsX2NvdW50OyBpKyspIHsKPiA+Pj4gKyAg ICAgICAgICAgICBleGlzdCA9IGYyZnNfdGVzdF9hbmRfc2V0X2JpdChvZmZzZXQgKyBpLCBzZS0+ Y3VyX3ZhbGlkX21hcCk7Cj4gPj4+ICsgICAgICAgICAgICAgaWYgKHVubGlrZWx5KGV4aXN0KSkg ewo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgZjJmc19lcnIoc2JpLCAiQml0bWFwIHdhcyB3 cm9uZ2x5IHNldCwgYmxrOiV1IiwgYmxrYWRkciArIGkpOwo+ID4+PiArICAgICAgICAgICAgICAg ICAgICAgZjJmc19idWdfb24oc2JpLCAxKTsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNl LT52YWxpZF9ibG9ja3MtLTsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGRlbCAtPSAxOwo+ ID4+PiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPj4+ICsgICAgICAgICAgICAg fQo+ID4+Pgo+ID4+PiAtICAgICAvKgo+ID4+PiAtICAgICAgKiBTU1Igc2hvdWxkIG5ldmVyIHJl dXNlIGJsb2NrIHdoaWNoIGlzIGNoZWNrcG9pbnRlZAo+ID4+PiAtICAgICAgKiBvciBuZXdseSBp bnZhbGlkYXRlZC4KPiA+Pj4gLSAgICAgICovCj4gPj4+IC0gICAgIGlmICghaXNfc2JpX2ZsYWdf c2V0KHNiaSwgU0JJX0NQX0RJU0FCTEVEKSkgewo+ID4+PiAtICAgICAgICAgICAgIGlmICghZjJm c190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCwgc2UtPmNrcHRfdmFsaWRfbWFwKSkgewo+ID4+PiAt ICAgICAgICAgICAgICAgICAgICAgc2UtPmNrcHRfdmFsaWRfYmxvY2tzKys7Cj4gPj4+IC0gICAg ICAgICAgICAgICAgICAgICBpZiAoX19pc19sYXJnZV9zZWN0aW9uKHNiaSkpCj4gPj4+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9zZWNfZW50cnkoc2JpLCBzZWdubyktPmNrcHRf dmFsaWRfYmxvY2tzKys7Cj4gPj4+ICsgICAgICAgICAgICAgaWYgKGYyZnNfYmxvY2tfdW5pdF9k aXNjYXJkKHNiaSkgJiYKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWYyZnNf dGVzdF9hbmRfc2V0X2JpdChvZmZzZXQgKyBpLCBzZS0+ZGlzY2FyZF9tYXApKQo+ID4+PiArICAg ICAgICAgICAgICAgICAgICAgc2JpLT5kaXNjYXJkX2Jsa3MtLTsKPiA+Pj4gKwo+ID4+PiArICAg ICAgICAgICAgIC8qCj4gPj4+ICsgICAgICAgICAgICAgICogU1NSIHNob3VsZCBuZXZlciByZXVz ZSBibG9jayB3aGljaCBpcyBjaGVja3BvaW50ZWQKPiA+Pj4gKyAgICAgICAgICAgICAgKiBvciBu ZXdseSBpbnZhbGlkYXRlZC4KPiA+Pj4gKyAgICAgICAgICAgICAgKi8KPiA+Pj4gKyAgICAgICAg ICAgICBpZiAoIWlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpIHsKPiA+Pj4g KyAgICAgICAgICAgICAgICAgICAgIGlmICghZjJmc190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCAr IGksIHNlLT5ja3B0X3ZhbGlkX21hcCkpIHsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2UtPmNrcHRfdmFsaWRfYmxvY2tzKys7Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24oc2JpKSkKPiA+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfc2VjX2VudHJ5KHNiaSwgc2Vnbm8pLT5ja3B0 X3ZhbGlkX2Jsb2NrcysrOwo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgfQo+ID4+PiAgICAg ICAgICAgICAgICB9Cj4gPj4+IC0gICAgIH0KPiA+Pj4KPiA+Pj4gLSAgICAgaWYgKCFmMmZzX3Rl c3RfYml0KG9mZnNldCwgc2UtPmNrcHRfdmFsaWRfbWFwKSkgewo+ID4+PiAtICAgICAgICAgICAg IHNlLT5ja3B0X3ZhbGlkX2Jsb2NrcyArPSBkZWw7Cj4gPj4+IC0gICAgICAgICAgICAgaWYgKF9f aXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQo+ID4+PiAtICAgICAgICAgICAgICAgICAgICAgZ2V0X3Nl Y19lbnRyeShzYmksIHNlZ25vKS0+Y2twdF92YWxpZF9ibG9ja3MgKz0gZGVsOwo+ID4+PiArICAg ICAgICAgICAgIGlmICghZjJmc190ZXN0X2JpdChvZmZzZXQgKyBpLCBzZS0+Y2twdF92YWxpZF9t YXApKSB7Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBzZS0+Y2twdF92YWxpZF9ibG9ja3Mg Kz0gMTsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24o c2JpKSkKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3NlY19lbnRyeShz YmksIHNlZ25vKS0+Y2twdF92YWxpZF9ibG9ja3MgKz0gMTsKPiA+Pj4gKyAgICAgICAgICAgICB9 Cj4gPj4+ICAgICAgICB9Cj4gPj4+Cj4gPj4+ICAgICAgICBpZiAoX19pc19sYXJnZV9zZWN0aW9u KHNiaSkpCj4gPj4+IEBAIC0yNTg1LDkgKzI1OTIsMTQgQEAgdm9pZCBmMmZzX2ludmFsaWRhdGVf YmxvY2tzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBhZGRyLAo+ID4+PiAgICAg ICAgdW5zaWduZWQgaW50IHNlZ25vID0gR0VUX1NFR05PKHNiaSwgYWRkcik7Cj4gPj4+ICAgICAg ICBzdHJ1Y3Qgc2l0X2luZm8gKnNpdF9pID0gU0lUX0koc2JpKTsKPiA+Pj4gICAgICAgIGJsb2Nr X3QgYWRkcl9zdGFydCA9IGFkZHIsIGFkZHJfZW5kID0gYWRkciArIGxlbiAtIDE7Cj4gPj4+IC0g ICAgIHVuc2lnbmVkIGludCBzZWdfbnVtID0gR0VUX1NFR05PKHNiaSwgYWRkcl9lbmQpIC0gc2Vn bm8gKyAxOwo+ID4+PiArICAgICB1bnNpZ25lZCBpbnQgc2VnX251bTsKPiA+Pj4gICAgICAgIHVu c2lnbmVkIGludCBpID0gMSwgbWF4X2Jsb2NrcyA9IHNiaS0+YmxvY2tzX3Blcl9zZWcsIGNudDsK PiA+Pj4KPiA+Pj4gKyAgICAgaWYgKGxlbiA9PSAwKQo+ID4+PiArICAgICAgICAgICAgIHJldHVy bjsKPiA+Pj4gKwo+ID4+PiArICAgICBzZWdfbnVtID0gR0VUX1NFR05PKHNiaSwgYWRkcl9lbmQp IC0gc2Vnbm8gKyAxOwo+ID4+PiArCj4gPj4+ICAgICAgICBmMmZzX2J1Z19vbihzYmksIGFkZHIg PT0gTlVMTF9BRERSKTsKPiA+Pj4gICAgICAgIGlmIChhZGRyID09IE5FV19BRERSIHx8IGFkZHIg PT0gQ09NUFJFU1NfQUREUikKPiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4+PiBAQCAt MjYyMCw2ICsyNjMyLDUyIEBAIHZvaWQgZjJmc19pbnZhbGlkYXRlX2Jsb2NrcyhzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmksIGJsb2NrX3QgYWRkciwKPiA+Pj4gICAgICAgIHVwX3dyaXRlKCZzaXRf aS0+c2VudHJ5X2xvY2spOwo+ID4+PiAgICB9Cj4gPj4+Cj4gPj4+ICt2b2lkIGYyZnNfcmVzZXJ2 ZV9kZXZpY2VfYWxpYXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGFkZHIsCj4g Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4pCj4gPj4+ ICt7Cj4gPj4+ICsgICAgIHVuc2lnbmVkIGludCBzZWdubyA9IEdFVF9TRUdOTyhzYmksIGFkZHIp Owo+ID4+PiArICAgICBzdHJ1Y3Qgc2l0X2luZm8gKnNpdF9pID0gU0lUX0koc2JpKTsKPiA+Pj4g KyAgICAgYmxvY2tfdCBhZGRyX3N0YXJ0ID0gYWRkciwgYWRkcl9lbmQgPSBhZGRyICsgbGVuIC0g MTsKPiA+Pj4gKyAgICAgdW5zaWduZWQgaW50IHNlZ19udW07Cj4gPj4+ICsgICAgIHVuc2lnbmVk IGludCBpID0gMSwgbWF4X2Jsb2NrcyA9IHNiaS0+YmxvY2tzX3Blcl9zZWcsIGNudDsKPiA+Pj4g Kwo+ID4+PiArICAgICBpZiAobGVuID09IDApCj4gPj4+ICsgICAgICAgICAgICAgcmV0dXJuOwo+ ID4+PiArCj4gPj4+ICsgICAgIHNlZ19udW0gPSBHRVRfU0VHTk8oc2JpLCBhZGRyX2VuZCkgLSBz ZWdubyArIDE7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgZG93bl93cml0ZSgmc2l0X2ktPnNlbnRyeV9s b2NrKTsKPiA+Pj4gKwo+ID4+PiArICAgICBpZiAoc2VnX251bSA9PSAxKQo+ID4+PiArICAgICAg ICAgICAgIGNudCA9IGxlbjsKPiA+Pj4gKyAgICAgZWxzZQo+ID4+PiArICAgICAgICAgICAgIGNu dCA9IG1heF9ibG9ja3MgLSBHRVRfQkxLT0ZGX0ZST01fU0VHMChzYmksIGFkZHIpOwo+ID4+PiAr Cj4gPj4+ICsgICAgIGRvIHsKPiA+Pj4gKyAgICAgICAgICAgICB1cGRhdGVfc2VnbWVudF9tdGlt ZShzYmksIGFkZHJfc3RhcnQsIDApOwo+ID4+PiArICAgICAgICAgICAgIHVwZGF0ZV9zaXRfZW50 cnkoc2JpLCBhZGRyX3N0YXJ0LCBjbnQpOwo+ID4+PiArICAgICAgICAgICAgIF9fc2V0X3Rlc3Rf YW5kX2ludXNlKHNiaSwgc2Vnbm8pOwo+ID4+PiArCj4gPj4+ICsgICAgICAgICAgICAgLyogUmVt b3ZlIHRoZSBzZWdtZW50IGZyb20gUFJFIChwcmVmcmVlKSB0byBwcmV2ZW50IGNoZWNrcG9pbnQg ZnJvbSBmcmVlaW5nIGl0ISAqLwo+ID4+PiArICAgICAgICAgICAgIG11dGV4X2xvY2soJkRJUlRZ X0koc2JpKS0+c2VnbGlzdF9sb2NrKTsKPiA+Pj4gKyAgICAgICAgICAgICBpZiAodGVzdF9hbmRf Y2xlYXJfYml0KHNlZ25vLCBESVJUWV9JKHNiaSktPmRpcnR5X3NlZ21hcFtQUkVdKSkKPiA+Pj4g KyAgICAgICAgICAgICAgICAgICAgIERJUlRZX0koc2JpKS0+bnJfZGlydHlbUFJFXS0tOwo+ID4+ PiArICAgICAgICAgICAgIG11dGV4X3VubG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xvY2sp Owo+ID4+PiArCj4gPj4+ICsgICAgICAgICAgICAgLyogYWRkIGl0IGludG8gZGlydHkgc2VnbGlz dCAqLwo+ID4+PiArICAgICAgICAgICAgIGxvY2F0ZV9kaXJ0eV9zZWdtZW50KHNiaSwgc2Vnbm8p Owo+ID4+PiArCj4gPj4+ICsgICAgICAgICAgICAgLyogdXBkYXRlIEBhZGRyX3N0YXJ0IGFuZCBA Y250IGFuZCBAc2Vnbm8gKi8KPiA+Pj4gKyAgICAgICAgICAgICBhZGRyX3N0YXJ0ID0gU1RBUlRf QkxPQ0soc2JpLCArK3NlZ25vKTsKPiA+Pj4gKyAgICAgICAgICAgICBpZiAoKytpID09IHNlZ19u dW0pCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBjbnQgPSBHRVRfQkxLT0ZGX0ZST01fU0VH MChzYmksIGFkZHJfZW5kKSArIDE7Cj4gPj4+ICsgICAgICAgICAgICAgZWxzZQo+ID4+PiArICAg ICAgICAgICAgICAgICAgICAgY250ID0gbWF4X2Jsb2NrczsKPiA+Pj4gKyAgICAgfSB3aGlsZSAo aSA8PSBzZWdfbnVtKTsKPiA+Pj4gKwo+ID4+PiArICAgICB1cF93cml0ZSgmc2l0X2ktPnNlbnRy eV9sb2NrKTsKPiA+Pj4gK30KPiA+Pj4gKwo+ID4+PiAgICBib29sIGYyZnNfaXNfY2hlY2twb2lu dGVkX2RhdGEoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGJsa2FkZHIpCj4gPj4+ ICAgIHsKPiA+Pj4gICAgICAgIHN0cnVjdCBzaXRfaW5mbyAqc2l0X2kgPSBTSVRfSShzYmkpOwo+ ID4+PiBAQCAtMjc1OCw4ICsyODE2LDEzIEBAIHN0YXRpYyBpbnQgaXNfbmV4dF9zZWdtZW50X2Zy ZWUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4+PiAgICAgICAgdW5zaWduZWQgaW50IHNl Z25vID0gY3Vyc2VnLT5zZWdubyArIDE7Cj4gPj4+ICAgICAgICBzdHJ1Y3QgZnJlZV9zZWdtYXBf aW5mbyAqZnJlZV9pID0gRlJFRV9JKHNiaSk7Cj4gPj4+Cj4gPj4+IC0gICAgIGlmIChzZWdubyA8 IE1BSU5fU0VHUyhzYmkpICYmIHNlZ25vICUgU0VHU19QRVJfU0VDKHNiaSkpCj4gPj4+ICsgICAg IGlmIChzZWdubyA8IE1BSU5fU0VHUyhzYmkpICYmIHNlZ25vICUgU0VHU19QRVJfU0VDKHNiaSkp IHsKPiA+Pj4gKyAgICAgICAgICAgICBpbnQgZGV2aSA9IGYyZnNfdGFyZ2V0X2RldmljZV9pbmRl eChzYmksIFNUQVJUX0JMT0NLKHNiaSwgc2Vnbm8pKTsKPiA+Pj4gKwo+ID4+PiArICAgICAgICAg ICAgIGlmIChmMmZzX2Rldl9pc19yZXNlcnZpbmcoc2JpLCBkZXZpKSkKPiA+Pj4gKyAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAwOwo+ID4+PiAgICAgICAgICAgICAgICByZXR1cm4gIXRlc3Rf Yml0KHNlZ25vLCBmcmVlX2ktPmZyZWVfc2VnbWFwKTsKPiA+Pj4gKyAgICAgfQo+ID4+PiAgICAg ICAgcmV0dXJuIDA7Cj4gPj4+ICAgIH0KPiA+Pj4KPiA+Pj4gQEAgLTI3NzgsNyArMjg0MSw4IEBA IHN0YXRpYyBpbnQgZ2V0X25ld19zZWdtZW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ Pj4gICAgICAgIHVuc2lnbmVkIGludCBhbGxvY19wb2xpY3kgPSBzYmktPmFsbG9jYXRlX3NlY3Rp b25fcG9saWN5Owo+ID4+PiAgICAgICAgdW5zaWduZWQgaW50IGFsbG9jX2hpbnQgPSBzYmktPmFs bG9jYXRlX3NlY3Rpb25faGludDsKPiA+Pj4gICAgICAgIGJvb2wgaW5pdCA9IHRydWU7Cj4gPj4+ IC0gICAgIGludCBpOwo+ID4+PiArICAgICBib29sIGxvb3BlZCA9IGZhbHNlOwo+ID4+PiArICAg ICBpbnQgaSwgZGV2aTsKPiA+Pj4gICAgICAgIGludCByZXQgPSAwOwo+ID4+Pgo+ID4+PiAgICAg ICAgc3Bpbl9sb2NrKCZmcmVlX2ktPnNlZ21hcF9sb2NrKTsKPiA+Pj4gQEAgLTI3OTEsOCArMjg1 NSwxMyBAQCBzdGF0aWMgaW50IGdldF9uZXdfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmksCj4gPj4+ICAgICAgICBpZiAoIW5ld19zZWMgJiYgKCgqbmV3c2VnICsgMSkgJSBTRUdTX1BF Ul9TRUMoc2JpKSkpIHsKPiA+Pj4gICAgICAgICAgICAgICAgc2Vnbm8gPSBmaW5kX25leHRfemVy b19iaXQoZnJlZV9pLT5mcmVlX3NlZ21hcCwKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICBH RVRfU0VHX0ZST01fU0VDKHNiaSwgaGludCArIDEpLCAqbmV3c2VnICsgMSk7Cj4gPj4+IC0gICAg ICAgICAgICAgaWYgKHNlZ25vIDwgR0VUX1NFR19GUk9NX1NFQyhzYmksIGhpbnQgKyAxKSkKPiA+ Pj4gKyAgICAgICAgICAgICBpZiAoc2Vnbm8gPCBHRVRfU0VHX0ZST01fU0VDKHNiaSwgaGludCAr IDEpKSB7Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBkZXZpID0gZjJmc190YXJnZXRfZGV2 aWNlX2luZGV4KHNiaSwgU1RBUlRfQkxPQ0soc2JpLCBzZWdubykpOwo+ID4+PiArCj4gPj4+ICsg ICAgICAgICAgICAgICAgICAgICBpZiAoZjJmc19kZXZfaXNfYWxsb2NfYmxvY2tlZChzYmksIGRl dmksIHBpbm5pbmcpKQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZp bmRfb3RoZXJfem9uZTsKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGdvdF9pdDsK PiA+Pj4gKyAgICAgICAgICAgICB9Cj4gPj4+ICAgICAgICB9Cj4gPj4+Cj4gPj4+ICAgICNpZmRl ZiBDT05GSUdfQkxLX0RFVl9aT05FRAo+ID4+PiBAQCAtMjgyOCwzMyArMjg5Nyw0MiBAQCBzdGF0 aWMgaW50IGdldF9uZXdfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPj4+ICAg IGZpbmRfb3RoZXJfem9uZToKPiA+Pj4gICAgICAgIHNlY25vID0gZmluZF9uZXh0X3plcm9fYml0 KGZyZWVfaS0+ZnJlZV9zZWNtYXAsIE1BSU5fU0VDUyhzYmkpLCBoaW50KTsKPiA+Pj4KPiA+Pj4g LSNpZmRlZiBDT05GSUdfQkxLX0RFVl9aT05FRAo+ID4+PiAtICAgICBpZiAoc2Vjbm8gPj0gTUFJ Tl9TRUNTKHNiaSkgJiYgZjJmc19zYl9oYXNfYmxrem9uZWQoc2JpKSkgewo+ID4+PiAtICAgICAg ICAgICAgIC8qIFdyaXRlIG9ubHkgdG8gc2VxdWVudGlhbCB6b25lcyAqLwo+ID4+PiAtICAgICAg ICAgICAgIGlmIChzYmktPmJsa3pvbmVfYWxsb2NfcG9saWN5ID09IEJMS1pPTkVfQUxMT0NfT05M WV9TRVEpIHsKPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgIGhpbnQgPSBHRVRfU0VDX0ZST01f U0VHKHNiaSwgc2JpLT5maXJzdF9zZXFfem9uZV9zZWdubyk7Cj4gPj4+IC0gICAgICAgICAgICAg ICAgICAgICBzZWNubyA9IGZpbmRfbmV4dF96ZXJvX2JpdChmcmVlX2ktPmZyZWVfc2VjbWFwLCBN QUlOX1NFQ1Moc2JpKSwgaGludCk7Cj4gPj4+IC0gICAgICAgICAgICAgfSBlbHNlCj4gPj4+IC0g ICAgICAgICAgICAgICAgICAgICBzZWNubyA9IGZpbmRfZmlyc3RfemVyb19iaXQoZnJlZV9pLT5m cmVlX3NlY21hcCwKPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBNQUlOX1NFQ1Moc2JpKSk7Cj4gPj4+IC0gICAgICAgICAg ICAgaWYgKHNlY25vID49IE1BSU5fU0VDUyhzYmkpKSB7Cj4gPj4+IC0gICAgICAgICAgICAgICAg ICAgICByZXQgPSAtRU5PU1BDOwo+ID4+PiAtICAgICAgICAgICAgICAgICAgICAgZjJmc19idWdf b24oc2JpLCAxKTsKPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsK PiA+Pj4gLSAgICAgICAgICAgICB9Cj4gPj4+IC0gICAgIH0KPiA+Pj4gLSNlbmRpZgo+ID4+PiAt Cj4gPj4+ICAgICAgICBpZiAoc2Vjbm8gPj0gTUFJTl9TRUNTKHNiaSkpIHsKPiA+Pj4gLSAgICAg ICAgICAgICBzZWNubyA9IGZpbmRfZmlyc3RfemVyb19iaXQoZnJlZV9pLT5mcmVlX3NlY21hcCwK PiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTUFJTl9TRUNTKHNiaSkpOwo+ID4+PiAtICAgICAgICAgICAgIGlmIChzZWNubyA+PSBNQUlO X1NFQ1Moc2JpKSkgewo+ID4+PiArICAgICAgICAgICAgIGlmIChsb29wZWQpIHsKPiA+Pj4gICAg ICAgICAgICAgICAgICAgICAgICByZXQgPSAtRU5PU1BDOwo+ID4+PiAgICAgICAgICAgICAgICAg ICAgICAgIGYyZnNfYnVnX29uKHNiaSwgIXBpbm5pbmcpOwo+ID4+PiAgICAgICAgICAgICAgICAg ICAgICAgIGdvdG8gb3V0X3VubG9jazsKPiA+Pj4gICAgICAgICAgICAgICAgfQo+ID4+PiArICAg ICAgICAgICAgIGhpbnQgPSAwOwo+ID4+PiArI2lmZGVmIENPTkZJR19CTEtfREVWX1pPTkVECj4g Pj4+ICsgICAgICAgICAgICAgLyogV3JpdGUgb25seSB0byBzZXF1ZW50aWFsIHpvbmVzICovCj4g Pj4+ICsgICAgICAgICAgICAgaWYgKGYyZnNfc2JfaGFzX2Jsa3pvbmVkKHNiaSkgJiYKPiA+Pj4g KyAgICAgICAgICAgICAgICAgICAgIHNiaS0+Ymxrem9uZV9hbGxvY19wb2xpY3kgPT0gQkxLWk9O RV9BTExPQ19PTkxZX1NFUSkKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGhpbnQgPSBHRVRf U0VDX0ZST01fU0VHKHNiaSwgc2JpLT5maXJzdF9zZXFfem9uZV9zZWdubyk7Cj4gPj4+ICsjZW5k aWYKPiA+Pj4gKyAgICAgICAgICAgICBsb29wZWQgPSB0cnVlOwo+ID4+PiArICAgICAgICAgICAg IGdvdG8gZmluZF9vdGhlcl96b25lOwo+ID4+PiAgICAgICAgfQo+ID4+PiArCj4gPj4+ICAgICAg ICBzZWdubyA9IEdFVF9TRUdfRlJPTV9TRUMoc2JpLCBzZWNubyk7Cj4gPj4+ICsKPiA+Pj4gKyAg ICAgZGV2aSA9IGYyZnNfdGFyZ2V0X2RldmljZV9pbmRleChzYmksIFNUQVJUX0JMT0NLKHNiaSwg c2Vnbm8pKTsKPiA+Pj4gKwo+ID4+PiArICAgICBpZiAoZjJmc19kZXZfaXNfYWxsb2NfYmxvY2tl ZChzYmksIGRldmksIHBpbm5pbmcpKSB7Cj4gPj4+ICsgICAgICAgICAgICAgd2hpbGUgKGRldmkg PCBzYmktPnNfbmRldnMgJiYKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGYyZnNfZGV2X2lz X2FsbG9jX2Jsb2NrZWQoc2JpLCBkZXZpLCBwaW5uaW5nKSkgewo+ID4+PiArICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGVuZF9zZWdubyA9IEdFVF9TRUdOTyhzYmksIEZERVYoZGV2 aSkuZW5kX2Jsayk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGhpbnQgPSBH RVRfU0VDX0ZST01fU0VHKHNiaSwgZW5kX3NlZ25vKSArIDE7Cj4gPj4+ICsgICAgICAgICAgICAg ICAgICAgICBkZXZpKys7Cj4gPj4+ICsgICAgICAgICAgICAgfQo+ID4+PiArICAgICAgICAgICAg IGdvdG8gZmluZF9vdGhlcl96b25lOwo+ID4+PiArICAgICB9Cj4gPj4+ICsKPiA+Pj4gKyAgICAg aWYgKHNlY191c2FnZV9jaGVjayhzYmksIHNlY25vKSkgewo+ID4+PiArICAgICAgICAgICAgIGhp bnQgPSBzZWNubyArIDE7Cj4gPj4+ICsgICAgICAgICAgICAgZ290byBmaW5kX290aGVyX3pvbmU7 Cj4gPj4+ICsgICAgIH0KPiA+Pj4gICAgICAgIHpvbmVubyA9IEdFVF9aT05FX0ZST01fU0VDKHNi aSwgc2Vjbm8pOwo+ID4+Pgo+ID4+PiAgICAgICAgLyogZ2l2ZSB1cCBvbiBmaW5kaW5nIGFub3Ro ZXIgem9uZSAqLwo+ID4+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50LmggYi9mcy9mMmZz L3NlZ21lbnQuaAo+ID4+PiBpbmRleCBiMGMwNmIzNTgwYjQuLjEwNzUwOGFlN2ViMyAxMDA2NDQK PiA+Pj4gLS0tIGEvZnMvZjJmcy9zZWdtZW50LmgKPiA+Pj4gKysrIGIvZnMvZjJmcy9zZWdtZW50 LmgKPiA+Pj4gQEAgLTk1NCwxMCArOTU0LDMyIEBAIHN0YXRpYyBpbmxpbmUgYmxvY2tfdCBzdW1f YmxrX2FkZHIoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBpbnQgYmFzZSwgaW50IHR5cGUpCj4g Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIChiYXNlICsgMSkgKyB0eXBlOwo+ ID4+PiAgICB9Cj4gPj4+Cj4gPj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgZjJmc19kZXZfaXNfcmVz ZXJ2aW5nKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgaW50IGRldmkpCj4gPj4+ICt7Cj4gPj4+ ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4gPj4+ICsgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOwo+ID4+PiArICAgICByZXR1cm4gRkRFVihkZXZpKS5pc19yZXNl cnZpbmc7Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBmMmZzX2Rl dl9pc19hbGxvY19ibG9ja2VkKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV2aSwgYm9vbCBwaW5uaW5nKQo+ ID4+PiArewo+ID4+PiArICAgICBpZiAoIWYyZnNfc2JfaGFzX2RldmljZV9hbGlhcyhzYmkpKQo+ ID4+PiArICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+Pj4gKyAgICAgcmV0dXJuIChwaW5u aW5nICYmIEZERVYoZGV2aSkuaGFzX2FsaWFzKSB8fCBGREVWKGRldmkpLmlzX3Jlc2VydmluZzsK PiA+Pj4gK30KPiA+Pj4gKwo+ID4+PiAgICBzdGF0aWMgaW5saW5lIGJvb2wgc2VjX3VzYWdlX2No ZWNrKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgdW5zaWduZWQgaW50IHNlY25vKQo+ID4+PiAg ICB7Cj4gPj4+ICAgICAgICBpZiAoaXNfY3Vyc2VjKHNiaSwgc2Vjbm8pIHx8IChzYmktPmN1cl92 aWN0aW1fc2VjID09IHNlY25vKSkKPiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4g Pj4+ICsgICAgIGlmIChmMmZzX3NiX2hhc19kZXZpY2VfYWxpYXMoc2JpKSkgewo+ID4+PiArICAg ICAgICAgICAgIGJsb2NrX3Qgc3RhcnRfYmxrID0gU1RBUlRfQkxPQ0soc2JpLCBHRVRfU0VHX0ZS T01fU0VDKHNiaSwgc2Vjbm8pKTsKPiA+Pj4gKyAgICAgICAgICAgICBpbnQgZGV2aSA9IGYyZnNf dGFyZ2V0X2RldmljZV9pbmRleChzYmksIHN0YXJ0X2Jsayk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAg ICAgICAgICBpZiAoZjJmc19kZXZfaXNfcmVzZXJ2aW5nKHNiaSwgZGV2aSkpCj4gPj4+ICsgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+Pj4gKyAgICAgfQo+ID4+PiAgICAgICAg cmV0dXJuIGZhbHNlOwo+ID4+PiAgICB9Cj4gPj4+Cj4gPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZz L3N1cGVyLmMgYi9mcy9mMmZzL3N1cGVyLmMKPiA+Pj4gaW5kZXggYzQ0OGQ5OTJmZjJhLi5kNWRj ODNlNjEzZTIgMTAwNjQ0Cj4gPj4+IC0tLSBhL2ZzL2YyZnMvc3VwZXIuYwo+ID4+PiArKysgYi9m cy9mMmZzL3N1cGVyLmMKPiA+Pj4gQEAgLTUwMDEsNiArNTAwMSwzOSBAQCBzdGF0aWMgdm9pZCBm MmZzX3R1bmluZ19wYXJhbWV0ZXJzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPiA+Pj4gICAg ICAgIHNiaS0+cmVhZGRpcl9yYSA9IHRydWU7Cj4gPj4+ICAgIH0KPiA+Pj4KPiA+Pj4gK3N0YXRp YyB2b2lkIGYyZnNfcmVzdG9yZV9kZXZpY2VfYWxpYXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp KQo+ID4+PiArewo+ID4+PiArICAgICBzdHJ1Y3QgaW5vZGUgKnJvb3QgPSBkX2lub2RlKHNiaS0+ c2ItPnNfcm9vdCk7Cj4gPj4+ICsgICAgIHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqZGU7Cj4gPj4+ ICsgICAgIHN0cnVjdCBmb2xpbyAqZm9saW87Cj4gPj4+ICsgICAgIGludCBpOwo+ID4+PiArCj4g Pj4+ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4gPj4+ICsgICAg ICAgICAgICAgcmV0dXJuOwo+ID4+PiArCj4gPj4+ICsgICAgIGZvciAoaSA9IDE7IGkgPCBzYmkt PnNfbmRldnM7IGkrKykgewo+ID4+PiArICAgICAgICAgICAgIGNoYXIgKm5hbWUgPSBzdHJyY2hy KEZERVYoaSkucGF0aCwgJy8nKTsKPiA+Pj4gKyAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlu b2RlOwo+ID4+PiArICAgICAgICAgICAgIHN0cnVjdCBxc3RyIHFzdHI7Cj4gPj4+ICsKPiA+Pj4g KyAgICAgICAgICAgICBuYW1lID0gbmFtZSA/IG5hbWUgKyAxIDogRkRFVihpKS5wYXRoOwo+ID4+ PiArICAgICAgICAgICAgIHFzdHIubmFtZSA9IG5hbWU7Cj4gPj4+ICsgICAgICAgICAgICAgcXN0 ci5sZW4gPSBzdHJsZW4obmFtZSk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgICAgICAgICBkZSA9IGYy ZnNfZmluZF9lbnRyeShyb290LCAmcXN0ciwgJmZvbGlvKTsKPiA+Pj4gKyAgICAgICAgICAgICBp ZiAoIWRlKQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPj4+ICsKPiA+ Pj4gKyAgICAgICAgICAgICBpbm9kZSA9IGYyZnNfaWdldChzYmktPnNiLCBsZTMyX3RvX2NwdShk ZS0+aW5vKSk7Cj4gPj4+ICsgICAgICAgICAgICAgaWYgKCFJU19FUlIoaW5vZGUpKSB7Cj4gPj4+ ICsgICAgICAgICAgICAgICAgICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPiA+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkRFVihpKS5oYXNfYWxpYXMgPSB0cnVl Owo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgaXB1dChpbm9kZSk7Cj4gPj4+ICsgICAgICAg ICAgICAgfQo+ID4+PiArICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCAwKTsKPiA+ Pj4gKyAgICAgfQo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICAgIHN0YXRpYyBpbnQgZjJmc19maWxs X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKPiA+ Pj4gICAgewo+ID4+PiAgICAgICAgc3RydWN0IGYyZnNfZnNfY29udGV4dCAqY3R4ID0gZmMtPmZz X3ByaXZhdGU7Cj4gPj4+IEBAIC01MjA5LDYgKzUyNDIsNyBAQCBzdGF0aWMgaW50IGYyZnNfZmls bF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCj4g Pj4+ICAgICAgICBzYmktPmxhc3RfdmFsaWRfYmxvY2tfY291bnQgPSBzYmktPnRvdGFsX3ZhbGlk X2Jsb2NrX2NvdW50Owo+ID4+PiAgICAgICAgc2JpLT5yZXNlcnZlZF9ibG9ja3MgPSAwOwo+ID4+ PiAgICAgICAgc2JpLT5jdXJyZW50X3Jlc2VydmVkX2Jsb2NrcyA9IDA7Cj4gPj4+ICsgICAgIHNi aS0+YWxpYXNfcmVzZXJ2ZWRfYmxvY2tzID0gMDsKPiA+Pj4gICAgICAgIGxpbWl0X3Jlc2VydmVf cm9vdChzYmkpOwo+ID4+PiAgICAgICAgYWRqdXN0X3VudXNhYmxlX2NhcF9wZXJjKHNiaSk7Cj4g Pj4+Cj4gPj4+IEBAIC01NDM2LDYgKzU0NzAsOCBAQCBzdGF0aWMgaW50IGYyZnNfZmlsbF9zdXBl cihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCj4gPj4+ICAg ICAgICBmMmZzX3VwZGF0ZV90aW1lKHNiaSwgUkVRX1RJTUUpOwo+ID4+PiAgICAgICAgY2xlYXJf c2JpX2ZsYWcoc2JpLCBTQklfQ1BfRElTQUJMRURfUVVJQ0spOwo+ID4+Pgo+ID4+PiArICAgICBm MmZzX3Jlc3RvcmVfZGV2aWNlX2FsaWFzKHNiaSk7Cj4gPj4+ICsKPiA+Pj4gICAgICAgIHNiaS0+ dW1vdW50X2xvY2tfaG9sZGVyID0gTlVMTDsKPiA+Pj4gICAgICAgIHJldHVybiAwOwo+ID4+Pgo+ ID4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2YyZnMuaCBiL2luY2x1ZGUvdWFw aS9saW51eC9mMmZzLmgKPiA+Pj4gaW5kZXggNzk1ZTI2MjU4MzU1Li40NDA5YWRhMmZlY2IgMTAw NjQ0Cj4gPj4+IC0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9mMmZzLmgKPiA+Pj4gKysrIGIvaW5j bHVkZS91YXBpL2xpbnV4L2YyZnMuaAo+ID4+PiBAQCAtNDUsNiArNDUsOSBAQAo+ID4+PiAgICAj ZGVmaW5lIEYyRlNfSU9DX1NUQVJUX0FUT01JQ19SRVBMQUNFICAgICAgIF9JTyhGMkZTX0lPQ1RM X01BR0lDLCAyNSkKPiA+Pj4gICAgI2RlZmluZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFTX0ZJTEUg X0lPUihGMkZTX0lPQ1RMX01BR0lDLCAyNiwgX191MzIpCj4gPj4+ICAgICNkZWZpbmUgRjJGU19J T0NfSU9fUFJJTyAgICAgICAgICAgIF9JT1coRjJGU19JT0NUTF9NQUdJQywgMjcsIF9fdTMyKQo+ ID4+PiArI2RlZmluZSBGMkZTX0lPQ19SRVNFUlZFX0RFVl9BTElBUyAgIF9JTyhGMkZTX0lPQ1RM X01BR0lDLCAyOCkKPiA+Pj4gKyNkZWZpbmUgRjJGU19JT0NfUkVMRUFTRV9ERVZfQUxJQVMgICBf SU8oRjJGU19JT0NUTF9NQUdJQywgMjkpCj4gPj4+ICsjZGVmaW5lIEYyRlNfSU9DX0dFVF9ERVZf QUxJQVNfU1RBVFVTICAgICAgICBfSU9SKEYyRlNfSU9DVExfTUFHSUMsIDMwLCBfX3UzMikKPiA+ Pj4KPiA+Pj4gICAgLyoKPiA+Pj4gICAgICogc2hvdWxkIGJlIHNhbWUgYXMgWEZTX0lPQ19HT0lO R0RPV04uCj4gPj4+IEBAIC03MCw2ICs3MywxMCBAQCBlbnVtIHsKPiA+Pj4gICAgICAgIEYyRlNf SU9QUklPX01BWCwKPiA+Pj4gICAgfTsKPiA+Pj4KPiA+Pj4gKy8qIGZvciBGMkZTX0lPQ19HRVRf REVWX0FMSUFTX1NUQVRVUyAqLwo+ID4+PiArI2RlZmluZSBGMkZTX0RFVl9BTElBU19TVEFUVVNf UkVMRUFTRUQgICAgICAgMAo+ID4+PiArI2RlZmluZSBGMkZTX0RFVl9BTElBU19TVEFUVVNfUkVT RVJWRUQgICAgICAgMQo+ID4+PiArCj4gPj4+ICAgIHN0cnVjdCBmMmZzX2djX3JhbmdlIHsKPiA+ Pj4gICAgICAgIF9fdTMyIHN5bmM7Cj4gPj4+ICAgICAgICBfX3U2NCBzdGFydDsKPiA+Pgo+CgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtZjJm cy1kZXZlbCBtYWlsaW5nIGxpc3QKTGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5u ZXQKaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGludXgtZjJm cy1kZXZlbAo=