From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 29/45] drm/amd/display: Use 100 Hz precision for pipe pixel clocks Date: Wed, 12 Dec 2018 09:19:10 +0100 Message-ID: <2cf9b879-6c37-6879-e4bb-12fb309f8e94@gmail.com> References: <1544569071-7114-1-git-send-email-sunpeng.li@amd.com> <1544569071-7114-30-git-send-email-sunpeng.li@amd.com> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1544569071-7114-30-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: sunpeng.li-5C7GfCeVMHo@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Ken Chalmers QW0gMTEuMTIuMTggdW0gMjM6NTcgc2NocmllYiBzdW5wZW5nLmxpQGFtZC5jb206Cj4gRnJvbTog S2VuIENoYWxtZXJzIDxrZW4uY2hhbG1lcnNAYW1kLmNvbT4KPgo+IFtXaHldCj4gVXNlcnMgd291 bGQgbGlrZSBtb3JlIGFjY3VyYXRlIHBpeGVsIGNsb2NrcywgZXNwZWNpYWxseSBmb3IgZnJhY3Rp b25hbAo+ICJUViIgZnJhbWUgcmF0ZXMgbGlrZSA1OS45NCBIei4KPgo+IFtIb3ddCj4gU3RvcmUg YW5kIGNvbW11bmljYXRlIHBpeGVsIGNsb2NrcyB3aXRoIDEwMCBIeiBhY2N1cmFjeSBmcm9tCj4g ZGNfY3J0Y190aW1pbmcgdGhyb3VnaCB0byBCSU9TIGNvbW1hbmQgdGFibGUgc2V0cGl4ZWxjbG9j ayBjYWxsLgoKV2h5IG5vdCBkaXJlY3RseSB1c2UgSHo/CgpJIG1lYW4gd2UgZG9uJ3QgaGF2ZSBh bnkgcGl4ZWwgY2xvY2tzIGFib3ZlIDRHSHosIGRvbid0IHdlPyBTbyBhIDMyYml0IAppbnRlZ2Vy IHNob3VsZCBiZSBhIHBlcmZlY3QgZml0LgoKQ2hyaXN0aWFuLgoKPgo+IFNpZ25lZC1vZmYtYnk6 IEtlbiBDaGFsbWVycyA8a2VuLmNoYWxtZXJzQGFtZC5jb20+Cj4gUmV2aWV3ZWQtYnk6IENoYXJs ZW5lIExpdSA8Q2hhcmxlbmUuTGl1QGFtZC5jb20+Cj4gQWNrZWQtYnk6IExlbyBMaSA8c3VucGVu Zy5saUBhbWQuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdw dV9kbS9hbWRncHVfZG0uYyAgfCAgIDggKy0KPiAgIC4uLi9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1 X2RtL2FtZGdwdV9kbV9oZWxwZXJzLmMgIHwgICAyICstCj4gICAuLi4vZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9iaW9zL2NvbW1hbmRfdGFibGUuYyAgICB8ICAxOSArLQo+ICAgLi4uL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvYmlvcy9jb21tYW5kX3RhYmxlMi5jICAgfCAgIDYgKy0KPiAgIGRyaXZl cnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jYWxjcy9kY2VfY2FsY3MuYyAgIHwgIDEwICstCj4g ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY2FsY3MvZGNuX2NhbGNzLmMgICB8ICAx MCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGMuYyAgICAgICAg ICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2xp bmsuYyAgICAgIHwgIDIyICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2Nv cmUvZGNfbGlua19kcC5jICAgfCAgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9kYy9jb3JlL2RjX2xpbmtfaHdzcy5jIHwgICA0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvZGMvY29yZS9kY19yZXNvdXJjZS5jICB8ICAxMCArLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfc3RyZWFtLmMgICAgfCAgIDQgKy0KPiAgIGRyaXZl cnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY19od190eXBlcy5oICAgICAgIHwgICAyICstCj4g ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZV9jbGtfbWdyLmMgICB8ICAx MiArLQo+ICAgLi4uL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZV9jbG9ja19zb3VyY2Uu YyAgfCAxOTYgKysrKysrKysrKy0tLS0tLS0tLS0tCj4gICAuLi4vZ3B1L2RybS9hbWQvZGlzcGxh eS9kYy9kY2UvZGNlX2xpbmtfZW5jb2Rlci5jICB8ICAgNiArLQo+ICAgLi4uL2RybS9hbWQvZGlz cGxheS9kYy9kY2UvZGNlX3N0cmVhbV9lbmNvZGVyLmMgICAgfCAgIDQgKy0KPiAgIC4uLi9hbWQv ZGlzcGxheS9kYy9kY2UxMTAvZGNlMTEwX2h3X3NlcXVlbmNlci5jICAgIHwgIDIwICstLQo+ICAg Li4uL2RybS9hbWQvZGlzcGxheS9kYy9kY2UxMTAvZGNlMTEwX3Jlc291cmNlLmMgICAgfCAgMTAg Ky0KPiAgIC4uLi9hbWQvZGlzcGxheS9kYy9kY2U4MC9kY2U4MF90aW1pbmdfZ2VuZXJhdG9yLmMg IHwgICA4ICstCj4gICAuLi4vZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL2RjbjEwX2h3X3NlcXVl bmNlci5jICB8ICAgMiArLQo+ICAgLi4uL2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfaHdfc2VxdWVu Y2VyX2RlYnVnLmMgICAgfCAgIDIgKy0KPiAgIC4uLi9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAv ZGNuMTBfbGlua19lbmNvZGVyLmMgIHwgIDE4ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvZGMvZGNuMTAvZGNuMTBfb3B0Yy5jICB8ICAgMiArLQo+ICAgLi4uL2dwdS9kcm0vYW1k L2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfcmVzb3VyY2UuYyAgfCAgIDYgKy0KPiAgIC4uLi9hbWQv ZGlzcGxheS9kYy9kY24xMC9kY24xMF9zdHJlYW1fZW5jb2Rlci5jICAgIHwgICAyICstCj4gICBk cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaW5jL2Nsb2NrX3NvdXJjZS5oICB8ICAgOCAr LQo+ICAgLi4uL2RybS9hbWQvZGlzcGxheS9pbmNsdWRlL2Jpb3NfcGFyc2VyX3R5cGVzLmggICAg fCAgIDQgKy0KPiAgIC4uLi9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9mcmVlc3luYy9mcmVlc3lu Yy5jICAgIHwgIDEyICstCj4gICAyOSBmaWxlcyBjaGFuZ2VkLCAyMDYgaW5zZXJ0aW9ucygrKSwg MjA5IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv YW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4gaW5kZXggYzBjNjY0ZS4uMjNiYjQ5ZSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+ IEBAIC0yNTU0LDcgKzI1NTQsNyBAQCBnZXRfb3V0cHV0X2NvbG9yX3NwYWNlKGNvbnN0IHN0cnVj dCBkY19jcnRjX3RpbWluZyAqZGNfY3J0Y190aW1pbmcpCj4gICAJCSAqIGFjY29yZGluZyB0byBI RE1JIHNwZWMsIHdlIHVzZSBZQ2JDcjcwOSBhbmQgWUNiQ3I2MDEKPiAgIAkJICogcmVzcGVjdGl2 ZWx5Cj4gICAJCSAqLwo+IC0JCWlmIChkY19jcnRjX3RpbWluZy0+cGl4X2Nsa19raHogPiAyNzAz MCkgewo+ICsJCWlmIChkY19jcnRjX3RpbWluZy0+cGl4X2Nsa18xMDBoeiA+IDI3MDMwMCkgewo+ ICAgCQkJaWYgKGRjX2NydGNfdGltaW5nLT5mbGFncy5ZX09OTFkpCj4gICAJCQkJY29sb3Jfc3Bh Y2UgPQo+ICAgCQkJCQlDT0xPUl9TUEFDRV9ZQ0JDUjcwOV9MSU1JVEVEOwo+IEBAIC0yNTk3LDcg KzI1OTcsNyBAQCBzdGF0aWMgdm9pZCBhZGp1c3RfY29sb3VyX2RlcHRoX2Zyb21fZGlzcGxheV9p bmZvKHN0cnVjdCBkY19jcnRjX3RpbWluZyAqdGltaW5nXwo+ICAgCWlmICh0aW1pbmdfb3V0LT5k aXNwbGF5X2NvbG9yX2RlcHRoIDw9IENPTE9SX0RFUFRIXzg4OCkKPiAgIAkJcmV0dXJuOwo+ICAg CWRvIHsKPiAtCQlub3JtYWxpemVkX2NsayA9IHRpbWluZ19vdXQtPnBpeF9jbGtfa2h6Owo+ICsJ CW5vcm1hbGl6ZWRfY2xrID0gdGltaW5nX291dC0+cGl4X2Nsa18xMDBoeiAvIDEwOwo+ICAgCQkv KiBZQ2JDciA0OjI6MCByZXF1aXJlcyBhZGRpdGlvbmFsIGFkanVzdG1lbnQgb2YgMS8yICovCj4g ICAJCWlmICh0aW1pbmdfb3V0LT5waXhlbF9lbmNvZGluZyA9PSBQSVhFTF9FTkNPRElOR19ZQ0JD UjQyMCkKPiAgIAkJCW5vcm1hbGl6ZWRfY2xrIC89IDI7Cj4gQEAgLTI2NzgsNyArMjY3OCw3IEBA IGZpbGxfc3RyZWFtX3Byb3BlcnRpZXNfZnJvbV9kcm1fZGlzcGxheV9tb2RlKHN0cnVjdCBkY19z dHJlYW1fc3RhdGUgKnN0cmVhbSwKPiAgIAkJbW9kZV9pbi0+Y3J0Y192c3luY19zdGFydCAtIG1v ZGVfaW4tPmNydGNfdmRpc3BsYXk7Cj4gICAJdGltaW5nX291dC0+dl9zeW5jX3dpZHRoID0KPiAg IAkJbW9kZV9pbi0+Y3J0Y192c3luY19lbmQgLSBtb2RlX2luLT5jcnRjX3ZzeW5jX3N0YXJ0Owo+ IC0JdGltaW5nX291dC0+cGl4X2Nsa19raHogPSBtb2RlX2luLT5jcnRjX2Nsb2NrOwo+ICsJdGlt aW5nX291dC0+cGl4X2Nsa18xMDBoeiA9IG1vZGVfaW4tPmNydGNfY2xvY2sgKiAxMDsKPiAgIAl0 aW1pbmdfb3V0LT5hc3BlY3RfcmF0aW8gPSBnZXRfYXNwZWN0X3JhdGlvKG1vZGVfaW4pOwo+ICAg Cj4gICAJc3RyZWFtLT5vdXRwdXRfY29sb3Jfc3BhY2UgPSBnZXRfb3V0cHV0X2NvbG9yX3NwYWNl KHRpbWluZ19vdXQpOwo+IEBAIC0yODA2LDcgKzI4MDYsNyBAQCBzdGF0aWMgdm9pZCBzZXRfbWFz dGVyX3N0cmVhbShzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW1fc2V0W10sCj4gICAJCWlm IChzdHJlYW1fc2V0W2pdICYmIHN0cmVhbV9zZXRbal0tPnRyaWdnZXJlZF9jcnRjX3Jlc2V0LmVu YWJsZWQpIHsKPiAgIAkJCWludCByZWZyZXNoX3JhdGUgPSAwOwo+ICAgCj4gLQkJCXJlZnJlc2hf cmF0ZSA9IChzdHJlYW1fc2V0W2pdLT50aW1pbmcucGl4X2Nsa19raHoqMTAwMCkvCj4gKwkJCXJl ZnJlc2hfcmF0ZSA9IChzdHJlYW1fc2V0W2pdLT50aW1pbmcucGl4X2Nsa18xMDBoeioxMDApLwo+ ICAgCQkJCShzdHJlYW1fc2V0W2pdLT50aW1pbmcuaF90b3RhbCpzdHJlYW1fc2V0W2pdLT50aW1p bmcudl90b3RhbCk7Cj4gICAJCQlpZiAocmVmcmVzaF9yYXRlID4gaGlnaGVzdF9yZnIpIHsKPiAg IAkJCQloaWdoZXN0X3JmciA9IHJlZnJlc2hfcmF0ZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faGVscGVycy5jIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faGVscGVycy5jCj4gaW5k ZXggYjBiYzgzMS4uZTZhYjAxOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZWxwZXJzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZWxwZXJzLmMKPiBAQCAtMjA1LDcg KzIwNSw3IEBAIGJvb2wgZG1faGVscGVyc19kcF9tc3Rfd3JpdGVfcGF5bG9hZF9hbGxvY2F0aW9u X3RhYmxlKAo+ICAgCW1zdF9wb3J0ID0gYWNvbm5lY3Rvci0+cG9ydDsKPiAgIAo+ICAgCWlmIChl bmFibGUpIHsKPiAtCQljbG9jayA9IHN0cmVhbS0+dGltaW5nLnBpeF9jbGtfa2h6Owo+ICsJCWNs b2NrID0gc3RyZWFtLT50aW1pbmcucGl4X2Nsa18xMDBoeiAvIDEwOwo+ICAgCj4gICAJCXN3aXRj aCAoc3RyZWFtLT50aW1pbmcuZGlzcGxheV9jb2xvcl9kZXB0aCkgewo+ICAgCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9iaW9zL2NvbW1hbmRfdGFibGUuYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9iaW9zL2NvbW1hbmRfdGFibGUuYwo+IGlu ZGV4IDJiZDdjZDkuLjY3YzExOWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2RjL2Jpb3MvY29tbWFuZF90YWJsZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2RjL2Jpb3MvY29tbWFuZF90YWJsZS5jCj4gQEAgLTk2NCw5ICs5NjQsOSBAQCBz dGF0aWMgZW51bSBicF9yZXN1bHQgc2V0X3BpeGVsX2Nsb2NrX3YzKAo+ICAgCWFsbG9jYXRpb24u c1BDTEtJbnB1dC51Y1Bvc3REaXYgPQo+ICAgCQkJKHVpbnQ4X3QpYnBfcGFyYW1zLT5waXhlbF9j bG9ja19wb3N0X2RpdmlkZXI7Cj4gICAKPiAtCS8qIFdlIG5lZWQgdG8gY29udmVydCBmcm9tIEtI eiB1bml0cyBpbnRvIDEwS0h6IHVuaXRzICovCj4gKwkvKiBXZSBuZWVkIHRvIGNvbnZlcnQgZnJv bSAxMDBIeiB1bml0cyBpbnRvIDEwS0h6IHVuaXRzICovCj4gICAJYWxsb2NhdGlvbi5zUENMS0lu cHV0LnVzUGl4ZWxDbG9jayA9Cj4gLQkJCWNwdV90b19sZTE2KCh1aW50MTZfdCkoYnBfcGFyYW1z LT50YXJnZXRfcGl4ZWxfY2xvY2sgLyAxMCkpOwo+ICsJCQljcHVfdG9fbGUxNigodWludDE2X3Qp KGJwX3BhcmFtcy0+dGFyZ2V0X3BpeGVsX2Nsb2NrXzEwMGh6IC8gMTAwKSk7Cj4gICAKPiAgIAlw YXJhbXMgPSAoUElYRUxfQ0xPQ0tfUEFSQU1FVEVSU19WMyAqKSZhbGxvY2F0aW9uLnNQQ0xLSW5w dXQ7Cj4gICAJcGFyYW1zLT51Y1RyYW5zbWl0dGVySWQgPQo+IEBAIC0xMDQyLDkgKzEwNDIsOSBA QCBzdGF0aWMgZW51bSBicF9yZXN1bHQgc2V0X3BpeGVsX2Nsb2NrX3Y1KAo+ICAgCQkJCSh1aW50 OF90KWJwLT5jbWRfaGVscGVyLT5lbmNvZGVyX21vZGVfYnBfdG9fYXRvbSgKPiAgIAkJCQkJCWJw X3BhcmFtcy0+c2lnbmFsX3R5cGUsIGZhbHNlKTsKPiAgIAo+IC0JCS8qIFdlIG5lZWQgdG8gY29u dmVydCBmcm9tIEtIeiB1bml0cyBpbnRvIDEwS0h6IHVuaXRzICovCj4gKwkJLyogV2UgbmVlZCB0 byBjb252ZXJ0IGZyb20gMTAwSHogdW5pdHMgaW50byAxMEtIeiB1bml0cyAqLwo+ICAgCQljbGsu c1BDTEtJbnB1dC51c1BpeGVsQ2xvY2sgPQo+IC0JCQkJY3B1X3RvX2xlMTYoKHVpbnQxNl90KShi cF9wYXJhbXMtPnRhcmdldF9waXhlbF9jbG9jayAvIDEwKSk7Cj4gKwkJCQljcHVfdG9fbGUxNigo dWludDE2X3QpKGJwX3BhcmFtcy0+dGFyZ2V0X3BpeGVsX2Nsb2NrXzEwMGh6IC8gMTAwKSk7Cj4g ICAKPiAgIAkJaWYgKGJwX3BhcmFtcy0+ZmxhZ3MuRk9SQ0VfUFJPR1JBTU1JTkdfT0ZfUExMKQo+ ICAgCQkJY2xrLnNQQ0xLSW5wdXQudWNNaXNjSW5mbyB8PQo+IEBAIC0xMTE4LDkgKzExMTgsOSBA QCBzdGF0aWMgZW51bSBicF9yZXN1bHQgc2V0X3BpeGVsX2Nsb2NrX3Y2KAo+ICAgCQkJCSh1aW50 OF90KSBicC0+Y21kX2hlbHBlci0+ZW5jb2Rlcl9tb2RlX2JwX3RvX2F0b20oCj4gICAJCQkJCQli cF9wYXJhbXMtPnNpZ25hbF90eXBlLCBmYWxzZSk7Cj4gICAKPiAtCQkvKiBXZSBuZWVkIHRvIGNv bnZlcnQgZnJvbSBLSHogdW5pdHMgaW50byAxMEtIeiB1bml0cyAqLwo+ICsJCS8qIFdlIG5lZWQg dG8gY29udmVydCBmcm9tIDEwMCBIeiB1bml0cyBpbnRvIDEwS0h6IHVuaXRzICovCj4gICAJCWNs ay5zUENMS0lucHV0LnVsQ3J0Y1BjbGtGcmVxLnVsUGl4ZWxDbG9jayA9Cj4gLQkJCQljcHVfdG9f bGUzMihicF9wYXJhbXMtPnRhcmdldF9waXhlbF9jbG9jayAvIDEwKTsKPiArCQkJCWNwdV90b19s ZTMyKGJwX3BhcmFtcy0+dGFyZ2V0X3BpeGVsX2Nsb2NrXzEwMGh6IC8gMTAwKTsKPiAgIAo+ICAg CQlpZiAoYnBfcGFyYW1zLT5mbGFncy5GT1JDRV9QUk9HUkFNTUlOR19PRl9QTEwpIHsKPiAgIAkJ CWNsay5zUENMS0lucHV0LnVjTWlzY0luZm8gfD0KPiBAQCAtMTE4Miw4ICsxMTgyLDcgQEAgc3Rh dGljIGVudW0gYnBfcmVzdWx0IHNldF9waXhlbF9jbG9ja192NygKPiAgIAkJY2xrLnVjVHJhbnNt aXR0ZXJJRCA9IGJwLT5jbWRfaGVscGVyLT5lbmNvZGVyX2lkX3RvX2F0b20oZGFsX2dyYXBoaWNz X29iamVjdF9pZF9nZXRfZW5jb2Rlcl9pZChicF9wYXJhbXMtPmVuY29kZXJfb2JqZWN0X2lkKSk7 Cj4gICAJCWNsay51Y0VuY29kZXJNb2RlID0gKHVpbnQ4X3QpIGJwLT5jbWRfaGVscGVyLT5lbmNv ZGVyX21vZGVfYnBfdG9fYXRvbShicF9wYXJhbXMtPnNpZ25hbF90eXBlLCBmYWxzZSk7Cj4gICAK PiAtCQkvKiBXZSBuZWVkIHRvIGNvbnZlcnQgZnJvbSBLSHogdW5pdHMgaW50byAxMEtIeiB1bml0 cyAqLwo+IC0JCWNsay51bFBpeGVsQ2xvY2sgPSBjcHVfdG9fbGUzMihicF9wYXJhbXMtPnRhcmdl dF9waXhlbF9jbG9jayAqIDEwKTsKPiArCQljbGsudWxQaXhlbENsb2NrID0gY3B1X3RvX2xlMzIo YnBfcGFyYW1zLT50YXJnZXRfcGl4ZWxfY2xvY2tfMTAwaHopOwo+ICAgCj4gICAJCWNsay51Y0Rl ZXBDb2xvclJhdGlvID0gKHVpbnQ4X3QpIGJwLT5jbWRfaGVscGVyLT50cmFuc21pdHRlcl9jb2xv cl9kZXB0aF90b19hdG9tKGJwX3BhcmFtcy0+Y29sb3JfZGVwdGgpOwo+ICAgCj4gQEAgLTIxNjQs NyArMjE2Myw3IEBAIHN0YXRpYyBlbnVtIGJwX3Jlc3VsdCBwcm9ncmFtX2Nsb2NrX3Y1KAo+ICAg CS8qIFdlIG5lZWQgdG8gY29udmVydCBmcm9tIEtIeiB1bml0cyBpbnRvIDEwS0h6IHVuaXRzICov Cj4gICAJcGFyYW1zLnNQQ0xLSW5wdXQudWNQcGxsID0gKHVpbnQ4X3QpIGF0b21fcGxsX2lkOwo+ ICAgCXBhcmFtcy5zUENMS0lucHV0LnVzUGl4ZWxDbG9jayA9Cj4gLQkJCWNwdV90b19sZTE2KCh1 aW50MTZfdCkgKGJwX3BhcmFtcy0+dGFyZ2V0X3BpeGVsX2Nsb2NrIC8gMTApKTsKPiArCQkJY3B1 X3RvX2xlMTYoKHVpbnQxNl90KSAoYnBfcGFyYW1zLT50YXJnZXRfcGl4ZWxfY2xvY2tfMTAwaHog LyAxMDApKTsKPiAgIAlwYXJhbXMuc1BDTEtJbnB1dC51Y0NSVEMgPSAodWludDhfdCkgQVRPTV9D UlRDX0lOVkFMSUQ7Cj4gICAKPiAgIAlpZiAoYnBfcGFyYW1zLT5mbGFncy5TRVRfRVhURVJOQUxf UkVGX0RJVl9TUkMpCj4gQEAgLTIxOTYsNyArMjE5NSw3IEBAIHN0YXRpYyBlbnVtIGJwX3Jlc3Vs dCBwcm9ncmFtX2Nsb2NrX3Y2KAo+ICAgCS8qIFdlIG5lZWQgdG8gY29udmVydCBmcm9tIEtIeiB1 bml0cyBpbnRvIDEwS0h6IHVuaXRzICovCj4gICAJcGFyYW1zLnNQQ0xLSW5wdXQudWNQcGxsID0g KHVpbnQ4X3QpYXRvbV9wbGxfaWQ7Cj4gICAJcGFyYW1zLnNQQ0xLSW5wdXQudWxEaXNwRW5nQ2xr RnJlcSA9Cj4gLQkJCWNwdV90b19sZTMyKGJwX3BhcmFtcy0+dGFyZ2V0X3BpeGVsX2Nsb2NrIC8g MTApOwo+ICsJCQljcHVfdG9fbGUzMihicF9wYXJhbXMtPnRhcmdldF9waXhlbF9jbG9ja18xMDBo eiAvIDEwMCk7Cj4gICAKPiAgIAlpZiAoYnBfcGFyYW1zLT5mbGFncy5TRVRfRVhURVJOQUxfUkVG X0RJVl9TUkMpCj4gICAJCXBhcmFtcy5zUENMS0lucHV0LnVjTWlzY0luZm8gfD0gUElYRUxfQ0xP Q0tfTUlTQ19SRUZfRElWX1NSQzsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2RjL2Jpb3MvY29tbWFuZF90YWJsZTIuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9iaW9zL2NvbW1hbmRfdGFibGUyLmMKPiBpbmRleCAyYjVkYzQ5Li43ZDNlNTc3IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9iaW9zL2NvbW1hbmRf dGFibGUyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvYmlvcy9jb21t YW5kX3RhYmxlMi5jCj4gQEAgLTMwMSw5ICszMDEsNyBAQCBzdGF0aWMgZW51bSBicF9yZXN1bHQg c2V0X3BpeGVsX2Nsb2NrX3Y3KAo+ICAgCQkJY21kX2hlbHBlci0+ZW5jb2Rlcl9tb2RlX2JwX3Rv X2F0b20oCj4gICAJCQkJYnBfcGFyYW1zLT5zaWduYWxfdHlwZSwgZmFsc2UpOwo+ICAgCj4gLQkJ LyogV2UgbmVlZCB0byBjb252ZXJ0IGZyb20gS0h6IHVuaXRzIGludG8gMTBLSHogdW5pdHMgKi8K PiAtCQljbGsucGl4Y2xrXzEwMGh6ID0gY3B1X3RvX2xlMzIoYnBfcGFyYW1zLT50YXJnZXRfcGl4 ZWxfY2xvY2sgKgo+IC0JCQkJMTApOwo+ICsJCWNsay5waXhjbGtfMTAwaHogPSBjcHVfdG9fbGUz MihicF9wYXJhbXMtPnRhcmdldF9waXhlbF9jbG9ja18xMDBoeik7Cj4gICAKPiAgIAkJY2xrLmRl ZXBfY29sb3JfcmF0aW8gPQo+ICAgCQkJKHVpbnQ4X3QpIGJwLT5jbWRfaGVscGVyLT4KPiBAQCAt MzExLDcgKzMwOSw3IEBAIHN0YXRpYyBlbnVtIGJwX3Jlc3VsdCBzZXRfcGl4ZWxfY2xvY2tfdjco Cj4gICAJCQkJCWJwX3BhcmFtcy0+Y29sb3JfZGVwdGgpOwo+ICAgCQlEQ19MT0dfQklPUygiJXM6 cHJvZ3JhbSBkaXNwbGF5IGNsb2NrID0gJWQiXAo+ICAgCQkJCSJjb2xvckRlcHRoID0gJWRcbiIs IF9fZnVuY19fLFwKPiAtCQkJCWJwX3BhcmFtcy0+dGFyZ2V0X3BpeGVsX2Nsb2NrLCBicF9wYXJh bXMtPmNvbG9yX2RlcHRoKTsKPiArCQkJCWJwX3BhcmFtcy0+dGFyZ2V0X3BpeGVsX2Nsb2NrXzEw MGh6LCBicF9wYXJhbXMtPmNvbG9yX2RlcHRoKTsKPiAgIAo+ICAgCQlpZiAoYnBfcGFyYW1zLT5m bGFncy5GT1JDRV9QUk9HUkFNTUlOR19PRl9QTEwpCj4gICAJCQljbGsubWlzY2luZm8gfD0gUElY RUxfQ0xPQ0tfVjdfTUlTQ19GT1JDRV9QUk9HX1BQTEw7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9kYy9jYWxjcy9kY2VfY2FsY3MuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9kYy9jYWxjcy9kY2VfY2FsY3MuYwo+IGluZGV4IDllYmUzMGIuLmYzYWE3 YjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NhbGNzL2Rj ZV9jYWxjcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NhbGNzL2Rj ZV9jYWxjcy5jCj4gQEAgLTI3OTIsNyArMjc5Miw3IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRlX2lu aXRpYWxfZGF0YSgKPiAgIAkJZGF0YS0+bHB0X2VuW251bV9kaXNwbGF5cyArIDRdID0gZmFsc2U7 Cj4gICAJCWRhdGEtPmhfdG90YWxbbnVtX2Rpc3BsYXlzICsgNF0gPSBid19pbnRfdG9fZml4ZWQo cGlwZVtpXS5zdHJlYW0tPnRpbWluZy5oX3RvdGFsKTsKPiAgIAkJZGF0YS0+dl90b3RhbFtudW1f ZGlzcGxheXMgKyA0XSA9IGJ3X2ludF90b19maXhlZChwaXBlW2ldLnN0cmVhbS0+dGltaW5nLnZf dG90YWwpOwo+IC0JCWRhdGEtPnBpeGVsX3JhdGVbbnVtX2Rpc3BsYXlzICsgNF0gPSBid19mcmNf dG9fZml4ZWQocGlwZVtpXS5zdHJlYW0tPnRpbWluZy5waXhfY2xrX2toeiwgMTAwMCk7Cj4gKwkJ ZGF0YS0+cGl4ZWxfcmF0ZVtudW1fZGlzcGxheXMgKyA0XSA9IGJ3X2ZyY190b19maXhlZChwaXBl W2ldLnN0cmVhbS0+dGltaW5nLnBpeF9jbGtfMTAwaHosIDEwMDAwKTsKPiAgIAkJZGF0YS0+c3Jj X3dpZHRoW251bV9kaXNwbGF5cyArIDRdID0gYndfaW50X3RvX2ZpeGVkKHBpcGVbaV0ucGxhbmVf cmVzLnNjbF9kYXRhLnZpZXdwb3J0LndpZHRoKTsKPiAgIAkJZGF0YS0+cGl0Y2hfaW5fcGl4ZWxz W251bV9kaXNwbGF5cyArIDRdID0gZGF0YS0+c3JjX3dpZHRoW251bV9kaXNwbGF5cyArIDRdOwo+ ICAgCQlkYXRhLT5zcmNfaGVpZ2h0W251bV9kaXNwbGF5cyArIDRdID0gYndfaW50X3RvX2ZpeGVk KHBpcGVbaV0ucGxhbmVfcmVzLnNjbF9kYXRhLnZpZXdwb3J0LmhlaWdodCk7Cj4gQEAgLTI4ODEs NyArMjg4MSw3IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRlX2luaXRpYWxfZGF0YSgKPiAgIAo+ICAg CS8qIFBpcGVzIHdpdGhvdXQgdW5kZXJsYXkgYWZ0ZXIgKi8KPiAgIAlmb3IgKGkgPSAwOyBpIDwg cGlwZV9jb3VudDsgaSsrKSB7Cj4gLQkJdW5zaWduZWQgaW50IHBpeGVsX2Nsb2NrX2toejsKPiAr CQl1bnNpZ25lZCBpbnQgcGl4ZWxfY2xvY2tfMTAwaHo7Cj4gICAJCWlmICghcGlwZVtpXS5zdHJl YW0gfHwgcGlwZVtpXS5ib3R0b21fcGlwZSkKPiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gQEAgLTI4 OTAsMTAgKzI4OTAsMTAgQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVfaW5pdGlhbF9kYXRhKAo+ICAg CQlkYXRhLT5scHRfZW5bbnVtX2Rpc3BsYXlzICsgNF0gPSBmYWxzZTsKPiAgIAkJZGF0YS0+aF90 b3RhbFtudW1fZGlzcGxheXMgKyA0XSA9IGJ3X2ludF90b19maXhlZChwaXBlW2ldLnN0cmVhbS0+ dGltaW5nLmhfdG90YWwpOwo+ICAgCQlkYXRhLT52X3RvdGFsW251bV9kaXNwbGF5cyArIDRdID0g YndfaW50X3RvX2ZpeGVkKHBpcGVbaV0uc3RyZWFtLT50aW1pbmcudl90b3RhbCk7Cj4gLQkJcGl4 ZWxfY2xvY2tfa2h6ID0gcGlwZVtpXS5zdHJlYW0tPnRpbWluZy5waXhfY2xrX2toejsKPiArCQlw aXhlbF9jbG9ja18xMDBoeiA9IHBpcGVbaV0uc3RyZWFtLT50aW1pbmcucGl4X2Nsa18xMDBoejsK PiAgIAkJaWYgKHBpcGVbaV0uc3RyZWFtLT50aW1pbmcudGltaW5nXzNkX2Zvcm1hdCA9PSBUSU1J TkdfM0RfRk9STUFUX0hXX0ZSQU1FX1BBQ0tJTkcpCj4gLQkJCXBpeGVsX2Nsb2NrX2toeiAqPSAy Owo+IC0JCWRhdGEtPnBpeGVsX3JhdGVbbnVtX2Rpc3BsYXlzICsgNF0gPSBid19mcmNfdG9fZml4 ZWQocGl4ZWxfY2xvY2tfa2h6LCAxMDAwKTsKPiArCQkJcGl4ZWxfY2xvY2tfMTAwaHogKj0gMjsK PiArCQlkYXRhLT5waXhlbF9yYXRlW251bV9kaXNwbGF5cyArIDRdID0gYndfZnJjX3RvX2ZpeGVk KHBpeGVsX2Nsb2NrXzEwMGh6LCAxMDAwMCk7Cj4gICAJCWlmIChwaXBlW2ldLnBsYW5lX3N0YXRl KSB7Cj4gICAJCQlkYXRhLT5zcmNfd2lkdGhbbnVtX2Rpc3BsYXlzICsgNF0gPSBid19pbnRfdG9f Zml4ZWQocGlwZVtpXS5wbGFuZV9yZXMuc2NsX2RhdGEudmlld3BvcnQud2lkdGgpOwo+ICAgCQkJ ZGF0YS0+cGl0Y2hfaW5fcGl4ZWxzW251bV9kaXNwbGF5cyArIDRdID0gZGF0YS0+c3JjX3dpZHRo W251bV9kaXNwbGF5cyArIDRdOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvZGMvY2FsY3MvZGNuX2NhbGNzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv ZGMvY2FsY3MvZGNuX2NhbGNzLmMKPiBpbmRleCA0NDZlZTQ4Li4xMmQxODQyIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jYWxjcy9kY25fY2FsY3MuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jYWxjcy9kY25fY2FsY3MuYwo+IEBA IC00MTYsNyArNDE2LDcgQEAgc3RhdGljIHZvaWQgcGlwZV9jdHhfdG9fZTJlX3BpcGVfcGFyYW1z ICgKPiAgIAkJCS0gcGlwZS0+c3RyZWFtLT50aW1pbmcudl9hZGRyZXNzYWJsZQo+ICAgCQkJLSBw aXBlLT5zdHJlYW0tPnRpbWluZy52X2JvcmRlcl9ib3R0b20KPiAgIAkJCS0gcGlwZS0+c3RyZWFt LT50aW1pbmcudl9ib3JkZXJfdG9wOwo+IC0JaW5wdXQtPmRlc3QucGl4ZWxfcmF0ZV9taHogPSBw aXBlLT5zdHJlYW0tPnRpbWluZy5waXhfY2xrX2toei8xMDAwLjA7Cj4gKwlpbnB1dC0+ZGVzdC5w aXhlbF9yYXRlX21oeiA9IHBpcGUtPnN0cmVhbS0+dGltaW5nLnBpeF9jbGtfMTAwaHovMTAwMDAu MDsKPiAgIAlpbnB1dC0+ZGVzdC52c3RhcnR1cF9zdGFydCA9IHBpcGUtPnBpcGVfZGxnX3BhcmFt LnZzdGFydHVwX3N0YXJ0Owo+ICAgCWlucHV0LT5kZXN0LnZ1cGRhdGVfb2Zmc2V0ID0gcGlwZS0+ cGlwZV9kbGdfcGFyYW0udnVwZGF0ZV9vZmZzZXQ7Cj4gICAJaW5wdXQtPmRlc3QudnVwZGF0ZV9v ZmZzZXQgPSBwaXBlLT5waXBlX2RsZ19wYXJhbS52dXBkYXRlX29mZnNldDsKPiBAQCAtNjYzLDkg KzY2Myw5IEBAIHN0YXRpYyB2b2lkIGhhY2tfZGlzYWJsZV9vcHRpb25hbF9waXBlX3NwbGl0KHN0 cnVjdCBkY25fYndfaW50ZXJuYWxfdmFycyAqdikKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQg aGFja19mb3JjZV9waXBlX3NwbGl0KHN0cnVjdCBkY25fYndfaW50ZXJuYWxfdmFycyAqdiwKPiAt CQl1bnNpZ25lZCBpbnQgcGl4ZWxfcmF0ZV9raHopCj4gKwkJdW5zaWduZWQgaW50IHBpeGVsX3Jh dGVfMTAwaHopCj4gICB7Cj4gLQlmbG9hdCBwaXhlbF9yYXRlX21oeiA9IHBpeGVsX3JhdGVfa2h6 IC8gMTAwMDsKPiArCWZsb2F0IHBpeGVsX3JhdGVfbWh6ID0gcGl4ZWxfcmF0ZV8xMDBoeiAvIDEw MDAwOwo+ICAgCj4gICAJLyoKPiAgIAkgKiBmb3JjZSBlbmFibGluZyBwaXBlIHNwbGl0IGJ5IGxv d2VyIGRwcCBjbG9jayBmb3IgRFBNMCB0byBqdXN0Cj4gQEAgLTY4OCw3ICs2ODgsNyBAQCBzdGF0 aWMgdm9pZCBoYWNrX2JvdW5kaW5nX2JveChzdHJ1Y3QgZGNuX2J3X2ludGVybmFsX3ZhcnMgKnYs Cj4gICAKPiAgIAlpZiAoY29udGV4dC0+c3RyZWFtX2NvdW50ID09IDEgJiYKPiAgIAkJCWRiZy0+ Zm9yY2Vfc2luZ2xlX2Rpc3BfcGlwZV9zcGxpdCkKPiAtCQloYWNrX2ZvcmNlX3BpcGVfc3BsaXQo diwgY29udGV4dC0+c3RyZWFtc1swXS0+dGltaW5nLnBpeF9jbGtfa2h6KTsKPiArCQloYWNrX2Zv cmNlX3BpcGVfc3BsaXQodiwgY29udGV4dC0+c3RyZWFtc1swXS0+dGltaW5nLnBpeF9jbGtfMTAw aHopOwo+ICAgfQo+ICAgCj4gICBib29sIGRjbl92YWxpZGF0ZV9iYW5kd2lkdGgoCj4gQEAgLTg0 NSw3ICs4NDUsNyBAQCBib29sIGRjbl92YWxpZGF0ZV9iYW5kd2lkdGgoCj4gICAJCXYtPnZfc3lu Y19wbHVzX2JhY2tfcG9yY2hbaW5wdXRfaWR4XSA9IHBpcGUtPnN0cmVhbS0+dGltaW5nLnZfdG90 YWwKPiAgIAkJCQktIHYtPnZhY3RpdmVbaW5wdXRfaWR4XQo+ICAgCQkJCS0gcGlwZS0+c3RyZWFt LT50aW1pbmcudl9mcm9udF9wb3JjaDsKPiAtCQl2LT5waXhlbF9jbG9ja1tpbnB1dF9pZHhdID0g cGlwZS0+c3RyZWFtLT50aW1pbmcucGl4X2Nsa19raHovMTAwMC4wOwo+ICsJCXYtPnBpeGVsX2Ns b2NrW2lucHV0X2lkeF0gPSBwaXBlLT5zdHJlYW0tPnRpbWluZy5waXhfY2xrXzEwMGh6LzEwMDAw LjA7Cj4gICAJCWlmIChwaXBlLT5zdHJlYW0tPnRpbWluZy50aW1pbmdfM2RfZm9ybWF0ID09IFRJ TUlOR18zRF9GT1JNQVRfSFdfRlJBTUVfUEFDS0lORykKPiAgIAkJCXYtPnBpeGVsX2Nsb2NrW2lu cHV0X2lkeF0gKj0gMjsKPiAgIAkJaWYgKCFwaXBlLT5wbGFuZV9zdGF0ZSkgewo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kYy5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGMuYwo+IGluZGV4IGM5OGZhOGQuLjc2NGE3YmYg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGMuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjLmMKPiBAQCAtMTA4 Myw3ICsxMDgzLDcgQEAgc3RhdGljIGVudW0gZGNfc3RhdHVzIGRjX2NvbW1pdF9zdGF0ZV9ub19j aGVjayhzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZGNfc3RhdGUgKmMKPiAgIAkJCQljb250ZXh0LT5z dHJlYW1zW2ldLT50aW1pbmcudl9hZGRyZXNzYWJsZSwKPiAgIAkJCQljb250ZXh0LT5zdHJlYW1z W2ldLT50aW1pbmcuaF90b3RhbCwKPiAgIAkJCQljb250ZXh0LT5zdHJlYW1zW2ldLT50aW1pbmcu dl90b3RhbCwKPiAtCQkJCWNvbnRleHQtPnN0cmVhbXNbaV0tPnRpbWluZy5waXhfY2xrX2toeik7 Cj4gKwkJCQljb250ZXh0LT5zdHJlYW1zW2ldLT50aW1pbmcucGl4X2Nsa18xMDBoeiAvIDEwKTsK PiAgIAl9Cj4gICAKPiAgIAlkY19lbmFibGVfc3RlcmVvKGRjLCBjb250ZXh0LCBkY19zdHJlYW1z LCBjb250ZXh0LT5zdHJlYW1fY291bnQpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvY29yZS9kY19saW5rLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvZGMvY29yZS9kY19saW5rLmMKPiBpbmRleCA2OWJlZTAxLi5hODdkYjdhIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2xpbmsuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2xpbmsuYwo+IEBAIC0xOTM0 LDcgKzE5MzQsNyBAQCBzdGF0aWMgdm9pZCBlbmFibGVfbGlua19oZG1pKHN0cnVjdCBwaXBlX2N0 eCAqcGlwZV9jdHgpCj4gICAJCQkmJiAoc3RyZWFtLT50aW1pbmcudl9hZGRyZXNzYWJsZSA9PSA0 ODApOwo+ICAgCj4gICAJaWYgKHN0cmVhbS0+cGh5X3BpeF9jbGsgPT0gMCkKPiAtCQlzdHJlYW0t PnBoeV9waXhfY2xrID0gc3RyZWFtLT50aW1pbmcucGl4X2Nsa19raHo7Cj4gKwkJc3RyZWFtLT5w aHlfcGl4X2NsayA9IHN0cmVhbS0+dGltaW5nLnBpeF9jbGtfMTAwaHogLyAxMDsKPiAgIAlpZiAo c3RyZWFtLT5waHlfcGl4X2NsayA+IDM0MDAwMCkKPiAgIAkJaXNfb3Zlcl8zNDBtaHogPSB0cnVl Owo+ICAgCj4gQEAgLTE5ODgsNyArMTk4OCw3IEBAIHN0YXRpYyB2b2lkIGVuYWJsZV9saW5rX2x2 ZHMoc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCkKPiAgIAlzdHJ1Y3QgZGNfbGluayAqbGluayA9 IHN0cmVhbS0+bGluazsKPiAgIAo+ICAgCWlmIChzdHJlYW0tPnBoeV9waXhfY2xrID09IDApCj4g LQkJc3RyZWFtLT5waHlfcGl4X2NsayA9IHN0cmVhbS0+dGltaW5nLnBpeF9jbGtfa2h6Owo+ICsJ CXN0cmVhbS0+cGh5X3BpeF9jbGsgPSBzdHJlYW0tPnRpbWluZy5waXhfY2xrXzEwMGh6IC8gMTA7 Cj4gICAKPiAgIAltZW1zZXQoJnN0cmVhbS0+bGluay0+Y3VyX2xpbmtfc2V0dGluZ3MsIDAsCj4g ICAJCQlzaXplb2Yoc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MpKTsKPiBAQCAtMjA2Myw3ICsyMDYz LDcgQEAgc3RhdGljIGJvb2wgZHBfYWN0aXZlX2RvbmdsZV92YWxpZGF0ZV90aW1pbmcoCj4gICAJ CWNvbnN0IHN0cnVjdCBkY19jcnRjX3RpbWluZyAqdGltaW5nLAo+ICAgCQljb25zdCBzdHJ1Y3Qg ZHBjZF9jYXBzICpkcGNkX2NhcHMpCj4gICB7Cj4gLQl1bnNpZ25lZCBpbnQgcmVxdWlyZWRfcGl4 X2NsayA9IHRpbWluZy0+cGl4X2Nsa19raHo7Cj4gKwl1bnNpZ25lZCBpbnQgcmVxdWlyZWRfcGl4 X2Nsa18xMDBoeiA9IHRpbWluZy0+cGl4X2Nsa18xMDBoejsKPiAgIAljb25zdCBzdHJ1Y3QgZGNf ZG9uZ2xlX2NhcHMgKmRvbmdsZV9jYXBzID0gJmRwY2RfY2Fwcy0+ZG9uZ2xlX2NhcHM7Cj4gICAK PiAgIAlzd2l0Y2ggKGRwY2RfY2Fwcy0+ZG9uZ2xlX3R5cGUpIHsKPiBAQCAtMjEwMyw5ICsyMTAz LDkgQEAgc3RhdGljIGJvb2wgZHBfYWN0aXZlX2RvbmdsZV92YWxpZGF0ZV90aW1pbmcoCj4gICAK PiAgIAkvKiBDaGVjayBDb2xvciBEZXB0aCBhbmQgUGl4ZWwgQ2xvY2sgKi8KPiAgIAlpZiAodGlt aW5nLT5waXhlbF9lbmNvZGluZyA9PSBQSVhFTF9FTkNPRElOR19ZQ0JDUjQyMCkKPiAtCQlyZXF1 aXJlZF9waXhfY2xrIC89IDI7Cj4gKwkJcmVxdWlyZWRfcGl4X2Nsa18xMDBoeiAvPSAyOwo+ICAg CWVsc2UgaWYgKHRpbWluZy0+cGl4ZWxfZW5jb2RpbmcgPT0gUElYRUxfRU5DT0RJTkdfWUNCQ1I0 MjIpCj4gLQkJcmVxdWlyZWRfcGl4X2NsayA9IHJlcXVpcmVkX3BpeF9jbGsgKiAyIC8gMzsKPiAr CQlyZXF1aXJlZF9waXhfY2xrXzEwMGh6ID0gcmVxdWlyZWRfcGl4X2Nsa18xMDBoeiAqIDIgLyAz Owo+ICAgCj4gICAJc3dpdGNoICh0aW1pbmctPmRpc3BsYXlfY29sb3JfZGVwdGgpIHsKPiAgIAlj YXNlIENPTE9SX0RFUFRIXzY2NjoKPiBAQCAtMjExNSwxMiArMjExNSwxMiBAQCBzdGF0aWMgYm9v bCBkcF9hY3RpdmVfZG9uZ2xlX3ZhbGlkYXRlX3RpbWluZygKPiAgIAljYXNlIENPTE9SX0RFUFRI XzEwMTAxMDoKPiAgIAkJaWYgKGRvbmdsZV9jYXBzLT5kcF9oZG1pX21heF9icGMgPCAxMCkKPiAg IAkJCXJldHVybiBmYWxzZTsKPiAtCQlyZXF1aXJlZF9waXhfY2xrID0gcmVxdWlyZWRfcGl4X2Ns ayAqIDEwIC8gODsKPiArCQlyZXF1aXJlZF9waXhfY2xrXzEwMGh6ID0gcmVxdWlyZWRfcGl4X2Ns a18xMDBoeiAqIDEwIC8gODsKPiAgIAkJYnJlYWs7Cj4gICAJY2FzZSBDT0xPUl9ERVBUSF8xMjEy MTI6Cj4gICAJCWlmIChkb25nbGVfY2Fwcy0+ZHBfaGRtaV9tYXhfYnBjIDwgMTIpCj4gICAJCQly ZXR1cm4gZmFsc2U7Cj4gLQkJcmVxdWlyZWRfcGl4X2NsayA9IHJlcXVpcmVkX3BpeF9jbGsgKiAx MiAvIDg7Cj4gKwkJcmVxdWlyZWRfcGl4X2Nsa18xMDBoeiA9IHJlcXVpcmVkX3BpeF9jbGtfMTAw aHogKiAxMiAvIDg7Cj4gICAJCWJyZWFrOwo+ICAgCj4gICAJY2FzZSBDT0xPUl9ERVBUSF8xNDE0 MTQ6Cj4gQEAgLTIxMzAsNyArMjEzMCw3IEBAIHN0YXRpYyBib29sIGRwX2FjdGl2ZV9kb25nbGVf dmFsaWRhdGVfdGltaW5nKAo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gICAJfQo+ICAgCj4gLQlpZiAo cmVxdWlyZWRfcGl4X2NsayA+IGRvbmdsZV9jYXBzLT5kcF9oZG1pX21heF9waXhlbF9jbGspCj4g KwlpZiAocmVxdWlyZWRfcGl4X2Nsa18xMDBoeiA+IChkb25nbGVfY2Fwcy0+ZHBfaGRtaV9tYXhf cGl4ZWxfY2xrICogMTApKQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gICAKPiAgIAlyZXR1cm4gdHJ1 ZTsKPiBAQCAtMjE0MSw3ICsyMTQxLDcgQEAgZW51bSBkY19zdGF0dXMgZGNfbGlua192YWxpZGF0 ZV9tb2RlX3RpbWluZygKPiAgIAkJc3RydWN0IGRjX2xpbmsgKmxpbmssCj4gICAJCWNvbnN0IHN0 cnVjdCBkY19jcnRjX3RpbWluZyAqdGltaW5nKQo+ICAgewo+IC0JdWludDMyX3QgbWF4X3BpeF9j bGsgPSBzdHJlYW0tPmxpbmstPmRvbmdsZV9tYXhfcGl4X2NsazsKPiArCXVpbnQzMl90IG1heF9w aXhfY2xrID0gc3RyZWFtLT5saW5rLT5kb25nbGVfbWF4X3BpeF9jbGsgKiAxMDsKPiAgIAlzdHJ1 Y3QgZHBjZF9jYXBzICpkcGNkX2NhcHMgPSAmbGluay0+ZHBjZF9jYXBzOwo+ICAgCj4gICAJLyog QSBoYWNrIHRvIGF2b2lkIGZhaWxpbmcgYW55IG1vZGVzIGZvciBFRElEIG92ZXJyaWRlIGZlYXR1 cmUgb24KPiBAQCAtMjE1MSw3ICsyMTUxLDcgQEAgZW51bSBkY19zdGF0dXMgZGNfbGlua192YWxp ZGF0ZV9tb2RlX3RpbWluZygKPiAgIAkJcmV0dXJuIERDX09LOwo+ICAgCj4gICAJLyogUGFzc2l2 ZSBEb25nbGUgKi8KPiAtCWlmICgwICE9IG1heF9waXhfY2xrICYmIHRpbWluZy0+cGl4X2Nsa19r aHogPiBtYXhfcGl4X2NsaykKPiArCWlmICgwICE9IG1heF9waXhfY2xrICYmIHRpbWluZy0+cGl4 X2Nsa18xMDBoeiA+IG1heF9waXhfY2xrKQo+ICAgCQlyZXR1cm4gRENfRVhDRUVEX0RPTkdMRV9D QVA7Cj4gICAKPiAgIAkvKiBBY3RpdmUgRG9uZ2xlKi8KPiBAQCAtMjMwMSw3ICsyMzAxLDcgQEAg c3RhdGljIHN0cnVjdCBmaXhlZDMxXzMyIGdldF9wYm5fZnJvbV90aW1pbmcoc3RydWN0IHBpcGVf Y3R4ICpwaXBlX2N0eCkKPiAgIAl1aW50MzJfdCBkZW5vbWluYXRvcjsKPiAgIAo+ICAgCWJwYyA9 IGdldF9jb2xvcl9kZXB0aChwaXBlX2N0eC0+c3RyZWFtX3Jlcy5waXhfY2xrX3BhcmFtcy5jb2xv cl9kZXB0aCk7Cj4gLQlrYnBzID0gcGlwZV9jdHgtPnN0cmVhbV9yZXMucGl4X2Nsa19wYXJhbXMu cmVxdWVzdGVkX3BpeF9jbGsgKiBicGMgKiAzOwo+ICsJa2JwcyA9IHBpcGVfY3R4LT5zdHJlYW1f cmVzLnBpeF9jbGtfcGFyYW1zLnJlcXVlc3RlZF9waXhfY2xrXzEwMGh6IC8gMTAgKiBicGMgKiAz Owo+ICAgCj4gICAJLyoKPiAgIAkgKiBtYXJnaW4gNTMwMHBwbSArIDMwMHBwbSB+IDAuNiUgYXMg cGVyIHNwZWMsIGZhY3RvciBpcyAxLjAwNgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvY29yZS9kY19saW5rX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvZGMvY29yZS9kY19saW5rX2RwLmMKPiBpbmRleCBmNDAyNzFlLi41NmEwNmJiIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2xpbmtfZHAu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2xpbmtfZHAu Ywo+IEBAIC0xNDE5LDcgKzE0MTksNyBAQCBzdGF0aWMgdWludDMyX3QgYmFuZHdpZHRoX2luX2ti cHNfZnJvbV90aW1pbmcoCj4gICAKPiAgIAlBU1NFUlQoYml0c19wZXJfY2hhbm5lbCAhPSAwKTsK PiAgIAo+IC0Ja2JwcyA9IHRpbWluZy0+cGl4X2Nsa19raHo7Cj4gKwlrYnBzID0gdGltaW5nLT5w aXhfY2xrXzEwMGh6IC8gMTA7Cj4gICAJa2JwcyAqPSBiaXRzX3Blcl9jaGFubmVsOwo+ICAgCj4g ICAJaWYgKHRpbWluZy0+ZmxhZ3MuWV9PTkxZICE9IDEpIHsKPiBAQCAtMTQ2MSw3ICsxNDYxLDcg QEAgYm9vbCBkcF92YWxpZGF0ZV9tb2RlX3RpbWluZygKPiAgIAljb25zdCBzdHJ1Y3QgZGNfbGlu a19zZXR0aW5ncyAqbGlua19zZXR0aW5nOwo+ICAgCj4gICAJLyphbHdheXMgRFAgZmFpbCBzYWZl IG1vZGUqLwo+IC0JaWYgKHRpbWluZy0+cGl4X2Nsa19raHogPT0gKHVpbnQzMl90KSAyNTE3NSAm Jgo+ICsJaWYgKCh0aW1pbmctPnBpeF9jbGtfMTAwaHogLyAxMCkgPT0gKHVpbnQzMl90KSAyNTE3 NSAmJgo+ICAgCQl0aW1pbmctPmhfYWRkcmVzc2FibGUgPT0gKHVpbnQzMl90KSA2NDAgJiYKPiAg IAkJdGltaW5nLT52X2FkZHJlc3NhYmxlID09ICh1aW50MzJfdCkgNDgwKQo+ICAgCQlyZXR1cm4g dHJ1ZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUv ZGNfbGlua19od3NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19s aW5rX2h3c3MuYwo+IGluZGV4IGY4YWY3NzYuLmY5NmZhYjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfbGlua19od3NzLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19saW5rX2h3c3MuYwo+IEBAIC03NCw4 ICs3NCw4IEBAIHZvaWQgZHBfZW5hYmxlX2xpbmtfcGh5KAo+ICAgCQkJaWYgKHBpcGVzW2ldLmNs b2NrX3NvdXJjZSAhPSBOVUxMICYmCj4gICAJCQkJCXBpcGVzW2ldLmNsb2NrX3NvdXJjZS0+aWQg IT0gQ0xPQ0tfU09VUkNFX0lEX0RQX0RUTykgewo+ICAgCQkJCXBpcGVzW2ldLmNsb2NrX3NvdXJj ZSA9IGRwX2NzOwo+IC0JCQkJcGlwZXNbaV0uc3RyZWFtX3Jlcy5waXhfY2xrX3BhcmFtcy5yZXF1 ZXN0ZWRfcGl4X2NsayA9Cj4gLQkJCQkJCXBpcGVzW2ldLnN0cmVhbS0+dGltaW5nLnBpeF9jbGtf a2h6Owo+ICsJCQkJcGlwZXNbaV0uc3RyZWFtX3Jlcy5waXhfY2xrX3BhcmFtcy5yZXF1ZXN0ZWRf cGl4X2Nsa18xMDBoeiA9Cj4gKwkJCQkJCXBpcGVzW2ldLnN0cmVhbS0+dGltaW5nLnBpeF9jbGtf MTAwaHo7Cj4gICAJCQkJcGlwZXNbaV0uY2xvY2tfc291cmNlLT5mdW5jcy0+cHJvZ3JhbV9waXhf Y2xrKAo+ICAgCQkJCQkJCXBpcGVzW2ldLmNsb2NrX3NvdXJjZSwKPiAgIAkJCQkJCQkmcGlwZXNb aV0uc3RyZWFtX3Jlcy5waXhfY2xrX3BhcmFtcywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfcmVzb3VyY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9kYy9jb3JlL2RjX3Jlc291cmNlLmMKPiBpbmRleCBjZWU3MTJhLi4zM2ZkODhk IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX3Jl c291cmNlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19y ZXNvdXJjZS5jCj4gQEAgLTM1MSw4ICszNTEsOCBAQCBib29sIHJlc291cmNlX2FyZV9zdHJlYW1z X3RpbWluZ19zeW5jaHJvbml6YWJsZSgKPiAgIAkJCQkhPSBzdHJlYW0yLT50aW1pbmcudl9hZGRy ZXNzYWJsZSkKPiAgIAkJcmV0dXJuIGZhbHNlOwo+ICAgCj4gLQlpZiAoc3RyZWFtMS0+dGltaW5n LnBpeF9jbGtfa2h6Cj4gLQkJCQkhPSBzdHJlYW0yLT50aW1pbmcucGl4X2Nsa19raHopCj4gKwlp ZiAoc3RyZWFtMS0+dGltaW5nLnBpeF9jbGtfMTAwaHoKPiArCQkJCSE9IHN0cmVhbTItPnRpbWlu Zy5waXhfY2xrXzEwMGh6KQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gICAKPiAgIAlpZiAoc3RyZWFt MS0+Y2xhbXBpbmcuY19kZXB0aCAhPSBzdHJlYW0yLT5jbGFtcGluZy5jX2RlcHRoKQo+IEBAIC0x NzU1LDcgKzE3NTUsNyBAQCBzdGF0aWMgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqZmluZF9wbGxf c2hhcmFibGVfc3RyZWFtKAo+ICAgCj4gICBzdGF0aWMgaW50IGdldF9ub3JtX3BpeF9jbGsoY29u c3Qgc3RydWN0IGRjX2NydGNfdGltaW5nICp0aW1pbmcpCj4gICB7Cj4gLQl1aW50MzJfdCBwaXhf Y2xrID0gdGltaW5nLT5waXhfY2xrX2toejsKPiArCXVpbnQzMl90IHBpeF9jbGsgPSB0aW1pbmct PnBpeF9jbGtfMTAwaHo7Cj4gICAJdWludDMyX3Qgbm9ybWFsaXplZF9waXhfY2xrID0gcGl4X2Ns azsKPiAgIAo+ICAgCWlmICh0aW1pbmctPnBpeGVsX2VuY29kaW5nID09IFBJWEVMX0VOQ09ESU5H X1lDQkNSNDIwKQo+IEBAIC0xNzg3LDEwICsxNzg3LDEwIEBAIHN0YXRpYyB2b2lkIGNhbGN1bGF0 ZV9waHlfcGl4X2Nsa3Moc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKQo+ICAgCS8qIHVw ZGF0ZSBhY3R1YWwgcGl4ZWwgY2xvY2sgb24gYWxsIHN0cmVhbXMgKi8KPiAgIAlpZiAoZGNfaXNf aGRtaV9zaWduYWwoc3RyZWFtLT5zaWduYWwpKQo+ICAgCQlzdHJlYW0tPnBoeV9waXhfY2xrID0g Z2V0X25vcm1fcGl4X2NsaygKPiAtCQkJJnN0cmVhbS0+dGltaW5nKTsKPiArCQkJJnN0cmVhbS0+ dGltaW5nKSAvIDEwOwo+ICAgCWVsc2UKPiAgIAkJc3RyZWFtLT5waHlfcGl4X2NsayA9Cj4gLQkJ CXN0cmVhbS0+dGltaW5nLnBpeF9jbGtfa2h6Owo+ICsJCQlzdHJlYW0tPnRpbWluZy5waXhfY2xr XzEwMGh6IC8gMTA7Cj4gICAKPiAgIAlpZiAoc3RyZWFtLT50aW1pbmcudGltaW5nXzNkX2Zvcm1h dCA9PSBUSU1JTkdfM0RfRk9STUFUX0hXX0ZSQU1FX1BBQ0tJTkcpCj4gICAJCXN0cmVhbS0+cGh5 X3BpeF9jbGsgKj0gMjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2NvcmUvZGNfc3RyZWFtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29y ZS9kY19zdHJlYW0uYwo+IGluZGV4IGVkNWViOGEuLjk5NjI5OGMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfc3RyZWFtLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19zdHJlYW0uYwo+IEBAIC00NCw3ICs0 NCw3IEBAIHZvaWQgdXBkYXRlX3N0cmVhbV9zaWduYWwoc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAq c3RyZWFtLCBzdHJ1Y3QgZGNfc2luayAqc2luaykKPiAgIAo+ICAgCWlmIChkY19pc19kdmlfc2ln bmFsKHN0cmVhbS0+c2lnbmFsKSkgewo+ICAgCQlpZiAoc3RyZWFtLT5jdHgtPmRjLT5jYXBzLmR1 YWxfbGlua19kdmkgJiYKPiAtCQkgICAgc3RyZWFtLT50aW1pbmcucGl4X2Nsa19raHogPiBUTURT X01BWF9QSVhFTF9DTE9DSyAmJgo+ICsJCSAgICAoc3RyZWFtLT50aW1pbmcucGl4X2Nsa18xMDBo eiAvIDEwKSA+IFRNRFNfTUFYX1BJWEVMX0NMT0NLICYmCj4gICAJCSAgICBzaW5rLT5zaW5rX3Np Z25hbCAhPSBTSUdOQUxfVFlQRV9EVklfU0lOR0xFX0xJTkspCj4gICAJCQlzdHJlYW0tPnNpZ25h bCA9IFNJR05BTF9UWVBFX0RWSV9EVUFMX0xJTks7Cj4gICAJCWVsc2UKPiBAQCAtMzYxLDcgKzM2 MSw3IEBAIHZvaWQgZGNfc3RyZWFtX2xvZyhjb25zdCBzdHJ1Y3QgZGMgKmRjLCBjb25zdCBzdHJ1 Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pCj4gICAJCQlzdHJlYW0tPm91dHB1dF9jb2xvcl9z cGFjZSk7Cj4gICAJRENfTE9HX0RDKAo+ICAgCQkJIlx0cGl4X2Nsa19raHo6ICVkLCBoX3RvdGFs OiAlZCwgdl90b3RhbDogJWQsIHBpeGVsZW5jb2RlcjolZCwgZGlzcGxheWNvbG9yRGVwdGg6JWRc biIsCj4gLQkJCXN0cmVhbS0+dGltaW5nLnBpeF9jbGtfa2h6LAo+ICsJCQlzdHJlYW0tPnRpbWlu Zy5waXhfY2xrXzEwMGh6IC8gMTAsCj4gICAJCQlzdHJlYW0tPnRpbWluZy5oX3RvdGFsLAo+ICAg CQkJc3RyZWFtLT50aW1pbmcudl90b3RhbCwKPiAgIAkJCXN0cmVhbS0+dGltaW5nLnBpeGVsX2Vu Y29kaW5nLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNf aHdfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY19od190eXBlcy5o Cj4gaW5kZXggOWRkZmU0Yy4uZTY5YzljYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvZGNfaHdfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9kYy9kY19od190eXBlcy5oCj4gQEAgLTczMCw3ICs3MzAsNyBAQCBzdHJ1Y3QgZGNf Y3J0Y190aW1pbmcgewo+ICAgCXVpbnQzMl90IHZfZnJvbnRfcG9yY2g7Cj4gICAJdWludDMyX3Qg dl9zeW5jX3dpZHRoOwo+ICAgCj4gLQl1aW50MzJfdCBwaXhfY2xrX2toejsKPiArCXVpbnQzMl90 IHBpeF9jbGtfMTAwaHo7Cj4gICAKPiAgIAl1aW50MzJfdCB2aWM7Cj4gICAJdWludDMyX3QgaGRt aV92aWM7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2Uv ZGNlX2Nsa19tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX2Ns a19tZ3IuYwo+IGluZGV4IDVjMWE3YzAuLjg5NDA0MzAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2VfY2xrX21nci5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2VfY2xrX21nci5jCj4gQEAgLTE5NCw4ICsxOTQs OCBAQCBzdGF0aWMgdWludDMyX3QgZ2V0X21heF9waXhlbF9jbG9ja19mb3JfYWxsX3BhdGhzKHN0 cnVjdCBkY19zdGF0ZSAqY29udGV4dCkKPiAgIAkJaWYgKHBpcGVfY3R4LT50b3BfcGlwZSkKPiAg IAkJCWNvbnRpbnVlOwo+ICAgCj4gLQkJaWYgKHBpcGVfY3R4LT5zdHJlYW1fcmVzLnBpeF9jbGtf cGFyYW1zLnJlcXVlc3RlZF9waXhfY2xrID4gbWF4X3BpeF9jbGspCj4gLQkJCW1heF9waXhfY2xr ID0gcGlwZV9jdHgtPnN0cmVhbV9yZXMucGl4X2Nsa19wYXJhbXMucmVxdWVzdGVkX3BpeF9jbGs7 Cj4gKwkJaWYgKHBpcGVfY3R4LT5zdHJlYW1fcmVzLnBpeF9jbGtfcGFyYW1zLnJlcXVlc3RlZF9w aXhfY2xrXzEwMGh6IC8gMTAgPiBtYXhfcGl4X2NsaykKPiArCQkJbWF4X3BpeF9jbGsgPSBwaXBl X2N0eC0+c3RyZWFtX3Jlcy5waXhfY2xrX3BhcmFtcy5yZXF1ZXN0ZWRfcGl4X2Nsa18xMDBoeiAv IDEwOwo+ICAgCj4gICAJCS8qIHJhaXNlIGNsb2NrIHN0YXRlIGZvciBIQlIzLzIgaWYgcmVxdWly ZWQuIENvbmZpcm1lZCB3aXRoIEhXIERDRS9EUENTCj4gICAJCSAqIGxvZ2ljIGZvciBIQlIzIHN0 aWxsIG5lZWRzIE5vbWluYWwgKDAuOFYpIG9uIFZEREMgcmFpbAo+IEBAIC0yNTcsNyArMjU3LDcg QEAgc3RhdGljIGludCBkY2Vfc2V0X2Nsb2NrKAo+ICAgCQkJCWNsa19tZ3JfZGNlLT5kZW50aXN0 X3Zjb19mcmVxX2toeiAvIDY0KTsKPiAgIAo+ICAgCS8qIFByZXBhcmUgdG8gcHJvZ3JhbSBkaXNw bGF5IGNsb2NrKi8KPiAtCXB4bF9jbGtfcGFyYW1zLnRhcmdldF9waXhlbF9jbG9jayA9IHJlcXVl c3RlZF9jbGtfa2h6Owo+ICsJcHhsX2Nsa19wYXJhbXMudGFyZ2V0X3BpeGVsX2Nsb2NrXzEwMGh6 ID0gcmVxdWVzdGVkX2Nsa19raHogKiAxMDsKPiAgIAlweGxfY2xrX3BhcmFtcy5wbGxfaWQgPSBD TE9DS19TT1VSQ0VfSURfREZTOwo+ICAgCj4gICAJaWYgKGNsa19tZ3JfZGNlLT5kZnNfYnlwYXNz X2FjdGl2ZSkKPiBAQCAtNDk0LDcgKzQ5NCw3IEBAIHZvaWQgZGNlMTEwX2ZpbGxfZGlzcGxheV9j b25maWdzKAo+ICAgCQkJc3RyZWFtLT5saW5rLT5jdXJfbGlua19zZXR0aW5ncy5saW5rX3NwcmVh ZDsKPiAgIAkJY2ZnLT5zeW1fY2xvY2sgPSBzdHJlYW0tPnBoeV9waXhfY2xrOwo+ICAgCQkvKiBS b3VuZCB2X3JlZnJlc2gqLwo+IC0JCWNmZy0+dl9yZWZyZXNoID0gc3RyZWFtLT50aW1pbmcucGl4 X2Nsa19raHogKiAxMDAwOwo+ICsJCWNmZy0+dl9yZWZyZXNoID0gc3RyZWFtLT50aW1pbmcucGl4 X2Nsa18xMDBoeiAqIDEwMDsKPiAgIAkJY2ZnLT52X3JlZnJlc2ggLz0gc3RyZWFtLT50aW1pbmcu aF90b3RhbDsKPiAgIAkJY2ZnLT52X3JlZnJlc2ggPSAoY2ZnLT52X3JlZnJlc2ggKyBzdHJlYW0t PnRpbWluZy52X3RvdGFsIC8gMikKPiAgIAkJCQkJCQkvIHN0cmVhbS0+dGltaW5nLnZfdG90YWw7 Cj4gQEAgLTUxOCw3ICs1MTgsNyBAQCBzdGF0aWMgdWludDMyX3QgZGNlMTEwX2dldF9taW5fdmJs YW5rX3RpbWVfdXMoY29uc3Qgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KQo+ICAgCQkJIC0gc3Ry ZWFtLT50aW1pbmcudl9hZGRyZXNzYWJsZSk7Cj4gICAKPiAgIAkJdmVydGljYWxfYmxhbmtfdGlt ZSA9IHZlcnRpY2FsX2JsYW5rX2luX3BpeGVscwo+IC0JCQkqIDEwMDAgLyBzdHJlYW0tPnRpbWlu Zy5waXhfY2xrX2toejsKPiArCQkJKiAxMDAwMCAvIHN0cmVhbS0+dGltaW5nLnBpeF9jbGtfMTAw aHo7Cj4gICAKPiAgIAkJaWYgKG1pbl92ZXJ0aWNhbF9ibGFua190aW1lID4gdmVydGljYWxfYmxh bmtfdGltZSkKPiAgIAkJCW1pbl92ZXJ0aWNhbF9ibGFua190aW1lID0gdmVydGljYWxfYmxhbmtf dGltZTsKPiBAQCAtNjEyLDcgKzYxMiw3IEBAIHN0YXRpYyB2b2lkIGRjZTExX3BwbGliX2FwcGx5 X2Rpc3BsYXlfcmVxdWlyZW1lbnRzKAo+ICAgCj4gICAJCXBwX2Rpc3BsYXlfY2ZnLT5jcnRjX2lu ZGV4ID0KPiAgIAkJCXBwX2Rpc3BsYXlfY2ZnLT5kaXNwX2NvbmZpZ3NbMF0ucGlwZV9pZHg7Cj4g LQkJcHBfZGlzcGxheV9jZmctPmxpbmVfdGltZV9pbl91cyA9IHRpbWluZy0+aF90b3RhbCAqIDEw MDAgLyB0aW1pbmctPnBpeF9jbGtfa2h6Owo+ICsJCXBwX2Rpc3BsYXlfY2ZnLT5saW5lX3RpbWVf aW5fdXMgPSB0aW1pbmctPmhfdG90YWwgKiAxMDAwMCAvIHRpbWluZy0+cGl4X2Nsa18xMDBoejsK PiAgIAl9Cj4gICAKPiAgIAlpZiAobWVtY21wKCZkYy0+Y3VycmVudF9zdGF0ZS0+cHBfZGlzcGxh eV9jZmcsIHBwX2Rpc3BsYXlfY2ZnLCBzaXplb2YoKnBwX2Rpc3BsYXlfY2ZnKSkgIT0gIDApCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX2Nsb2Nr X3NvdXJjZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2VfY2xvY2tf c291cmNlLmMKPiBpbmRleCA3MjNjZTgwLi5jNjdlOTBlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX2Nsb2NrX3NvdXJjZS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2VfY2xvY2tfc291cmNlLmMKPiBAQCAt MTA4LDI4ICsxMDgsMjggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzcHJlYWRfc3BlY3RydW1fZGF0 YSAqZ2V0X3NzX2RhdGFfZW50cnkoCj4gICB9Cj4gICAKPiAgIC8qKgo+IC0qIEZ1bmN0aW9uOiBj YWxjdWxhdGVfZmJfYW5kX2ZyYWN0aW9uYWxfZmJfZGl2aWRlcgo+IC0qCj4gLSogKiBERVNDUklQ VElPTjogQ2FsY3VsYXRlcyBmZWVkYmFjayBhbmQgZnJhY3Rpb25hbCBmZWVkYmFjayBkaXZpZGVy cyB2YWx1ZXMKPiAtKgo+IC0qUEFSQU1FVEVSUzoKPiAtKiB0YXJnZXRQaXhlbENsb2NrICAgICAg ICAgICAgIERlc2lyZWQgZnJlcXVlbmN5IGluIDEwIEtIego+IC0qIHJlZl9kaXZpZGVyICAgICAg ICAgICAgICAgICAgUmVmZXJlbmNlIGRpdmlkZXIgKGFscmVhZHkga25vd24pCj4gLSogcG9zdERp dmlkZXIgICAgICAgICAgICAgICAgICBQb3N0IERpdmlkZXIgKGFscmVhZHkga25vd24pCj4gLSog ZmVlZGJhY2tfZGl2aWRlcl9wYXJhbSAgICAgICBQb2ludGVyIHdoZXJlIHRvIHN0b3JlCj4gLSoJ CQkJCWNhbGN1bGF0ZWQgZmVlZGJhY2sgZGl2aWRlciB2YWx1ZQo+IC0qIGZyYWN0X2ZlZWRiYWNr X2RpdmlkZXJfcGFyYW0gUG9pbnRlciB3aGVyZSB0byBzdG9yZQo+IC0qCQkJCQljYWxjdWxhdGVk IGZyYWN0IGZlZWRiYWNrIGRpdmlkZXIgdmFsdWUKPiAtKgo+IC0qUkVUVVJOUzoKPiAtKiBJdCBm aWxscyB0aGUgbG9jYXRpb25zIHBvaW50ZWQgYnkgZmVlZGJhY2tfZGl2aWRlcl9wYXJhbQo+IC0q CQkJCQlhbmQgZnJhY3RfZmVlZGJhY2tfZGl2aWRlcl9wYXJhbQo+IC0qIEl0IHJldHVybnMJLSB0 cnVlIGlmIGZlZWRiYWNrIGRpdmlkZXIgbm90IDAKPiAtKgkJLSBmYWxzZSBzaG91bGQgbmV2ZXIg aGFwcGVuKQo+IC0qLwo+ICsgKiBGdW5jdGlvbjogY2FsY3VsYXRlX2ZiX2FuZF9mcmFjdGlvbmFs X2ZiX2RpdmlkZXIKPiArICoKPiArICogKiBERVNDUklQVElPTjogQ2FsY3VsYXRlcyBmZWVkYmFj ayBhbmQgZnJhY3Rpb25hbCBmZWVkYmFjayBkaXZpZGVycyB2YWx1ZXMKPiArICoKPiArICpQQVJB TUVURVJTOgo+ICsgKiB0YXJnZXRQaXhlbENsb2NrICAgICAgICAgICAgIERlc2lyZWQgZnJlcXVl bmN5IGluIDEwMCBIego+ICsgKiByZWZfZGl2aWRlciAgICAgICAgICAgICAgICAgIFJlZmVyZW5j ZSBkaXZpZGVyIChhbHJlYWR5IGtub3duKQo+ICsgKiBwb3N0RGl2aWRlciAgICAgICAgICAgICAg ICAgIFBvc3QgRGl2aWRlciAoYWxyZWFkeSBrbm93bikKPiArICogZmVlZGJhY2tfZGl2aWRlcl9w YXJhbSAgICAgICBQb2ludGVyIHdoZXJlIHRvIHN0b3JlCj4gKyAqCQkJCQljYWxjdWxhdGVkIGZl ZWRiYWNrIGRpdmlkZXIgdmFsdWUKPiArICogZnJhY3RfZmVlZGJhY2tfZGl2aWRlcl9wYXJhbSBQ b2ludGVyIHdoZXJlIHRvIHN0b3JlCj4gKyAqCQkJCQljYWxjdWxhdGVkIGZyYWN0IGZlZWRiYWNr IGRpdmlkZXIgdmFsdWUKPiArICoKPiArICpSRVRVUk5TOgo+ICsgKiBJdCBmaWxscyB0aGUgbG9j YXRpb25zIHBvaW50ZWQgYnkgZmVlZGJhY2tfZGl2aWRlcl9wYXJhbQo+ICsgKgkJCQkJYW5kIGZy YWN0X2ZlZWRiYWNrX2RpdmlkZXJfcGFyYW0KPiArICogSXQgcmV0dXJucwktIHRydWUgaWYgZmVl ZGJhY2sgZGl2aWRlciBub3QgMAo+ICsgKgkJLSBmYWxzZSBzaG91bGQgbmV2ZXIgaGFwcGVuKQo+ ICsgKi8KPiAgIHN0YXRpYyBib29sIGNhbGN1bGF0ZV9mYl9hbmRfZnJhY3Rpb25hbF9mYl9kaXZp ZGVyKAo+ICAgCQlzdHJ1Y3QgY2FsY19wbGxfY2xvY2tfc291cmNlICpjYWxjX3BsbF9jcywKPiAt CQl1aW50MzJfdCB0YXJnZXRfcGl4X2Nsa19raHosCj4gKwkJdWludDMyX3QgdGFyZ2V0X3BpeF9j bGtfMTAwaHosCj4gICAJCXVpbnQzMl90IHJlZl9kaXZpZGVyLAo+ICAgCQl1aW50MzJfdCBwb3N0 X2RpdmlkZXIsCj4gICAJCXVpbnQzMl90ICpmZWVkYmFja19kaXZpZGVyX3BhcmFtLAo+IEBAIC0x MzgsMTEgKzEzOCwxMSBAQCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVfZmJfYW5kX2ZyYWN0aW9uYWxf ZmJfZGl2aWRlcigKPiAgIAl1aW50NjRfdCBmZWVkYmFja19kaXZpZGVyOwo+ICAgCj4gICAJZmVl ZGJhY2tfZGl2aWRlciA9Cj4gLQkJKHVpbnQ2NF90KXRhcmdldF9waXhfY2xrX2toeiAqIHJlZl9k aXZpZGVyICogcG9zdF9kaXZpZGVyOwo+ICsJCSh1aW50NjRfdCl0YXJnZXRfcGl4X2Nsa18xMDBo eiAqIHJlZl9kaXZpZGVyICogcG9zdF9kaXZpZGVyOwo+ICAgCWZlZWRiYWNrX2RpdmlkZXIgKj0g MTA7Cj4gICAJLyogYWRkaXRpb25hbCBmYWN0b3IsIHNpbmNlIHdlIGRpdmlkZSBieSAxMCBhZnRl cndhcmRzICovCj4gICAJZmVlZGJhY2tfZGl2aWRlciAqPSAodWludDY0X3QpKGNhbGNfcGxsX2Nz LT5mcmFjdF9mYl9kaXZpZGVyX2ZhY3Rvcik7Cj4gLQlmZWVkYmFja19kaXZpZGVyID0gZGl2X3U2 NChmZWVkYmFja19kaXZpZGVyLCBjYWxjX3BsbF9jcy0+cmVmX2ZyZXFfa2h6KTsKPiArCWZlZWRi YWNrX2RpdmlkZXIgPSBkaXZfdTY0KGZlZWRiYWNrX2RpdmlkZXIsIGNhbGNfcGxsX2NzLT5yZWZf ZnJlcV9raHogKiAxMHVsbCk7Cj4gICAKPiAgIC8qUm91bmQgdG8gdGhlIG51bWJlciBvZiBwcmVj aXNpb24KPiAgICAqIFRoZSBmb2xsb3dpbmcgY29kZSByZXBsYWNlIHRoZSBvbGQgY29kZSAodWxs ZmVlZGJhY2tEaXZpZGVyICsgNSkvMTAKPiBAQCAtMTk1LDM2ICsxOTUsMzYgQEAgc3RhdGljIGJv b2wgY2FsY19mYl9kaXZpZGVyX2NoZWNraW5nX3RvbGVyYW5jZSgKPiAgIHsKPiAgIAl1aW50MzJf dCBmZWVkYmFja19kaXZpZGVyOwo+ICAgCXVpbnQzMl90IGZyYWN0X2ZlZWRiYWNrX2RpdmlkZXI7 Cj4gLQl1aW50MzJfdCBhY3R1YWxfY2FsY3VsYXRlZF9jbG9ja19raHo7Cj4gKwl1aW50MzJfdCBh Y3R1YWxfY2FsY3VsYXRlZF9jbG9ja18xMDBoejsKPiAgIAl1aW50MzJfdCBhYnNfZXJyOwo+IC0J dWludDY0X3QgYWN0dWFsX2NhbGNfY2xrX2toejsKPiArCXVpbnQ2NF90IGFjdHVhbF9jYWxjX2Ns a18xMDBoejsKPiAgIAo+ICAgCWNhbGN1bGF0ZV9mYl9hbmRfZnJhY3Rpb25hbF9mYl9kaXZpZGVy KAo+ICAgCQkJY2FsY19wbGxfY3MsCj4gLQkJCXBsbF9zZXR0aW5ncy0+YWRqdXN0ZWRfcGl4X2Ns aywKPiArCQkJcGxsX3NldHRpbmdzLT5hZGp1c3RlZF9waXhfY2xrXzEwMGh6LAo+ICAgCQkJcmVm X2RpdmlkZXIsCj4gICAJCQlwb3N0X2RpdmlkZXIsCj4gICAJCQkmZmVlZGJhY2tfZGl2aWRlciwK PiAgIAkJCSZmcmFjdF9mZWVkYmFja19kaXZpZGVyKTsKPiAgIAo+ICAgCS8qQWN0dWFsIGNhbGN1 bGF0ZWQgdmFsdWUqLwo+IC0JYWN0dWFsX2NhbGNfY2xrX2toeiA9ICh1aW50NjRfdClmZWVkYmFj a19kaXZpZGVyICoKPiArCWFjdHVhbF9jYWxjX2Nsa18xMDBoeiA9ICh1aW50NjRfdClmZWVkYmFj a19kaXZpZGVyICoKPiAgIAkJCQkJY2FsY19wbGxfY3MtPmZyYWN0X2ZiX2RpdmlkZXJfZmFjdG9y ICsKPiAgIAkJCQkJCQlmcmFjdF9mZWVkYmFja19kaXZpZGVyOwo+IC0JYWN0dWFsX2NhbGNfY2xr X2toeiAqPSBjYWxjX3BsbF9jcy0+cmVmX2ZyZXFfa2h6Owo+IC0JYWN0dWFsX2NhbGNfY2xrX2to eiA9Cj4gLQkJZGl2X3U2NChhY3R1YWxfY2FsY19jbGtfa2h6LAo+ICsJYWN0dWFsX2NhbGNfY2xr XzEwMGh6ICo9IGNhbGNfcGxsX2NzLT5yZWZfZnJlcV9raHogKiAxMDsKPiArCWFjdHVhbF9jYWxj X2Nsa18xMDBoeiA9Cj4gKwkJZGl2X3U2NChhY3R1YWxfY2FsY19jbGtfMTAwaHosCj4gICAJCQly ZWZfZGl2aWRlciAqIHBvc3RfZGl2aWRlciAqCj4gICAJCQkJY2FsY19wbGxfY3MtPmZyYWN0X2Zi X2RpdmlkZXJfZmFjdG9yKTsKPiAgIAo+IC0JYWN0dWFsX2NhbGN1bGF0ZWRfY2xvY2tfa2h6ID0g KHVpbnQzMl90KShhY3R1YWxfY2FsY19jbGtfa2h6KTsKPiArCWFjdHVhbF9jYWxjdWxhdGVkX2Ns b2NrXzEwMGh6ID0gKHVpbnQzMl90KShhY3R1YWxfY2FsY19jbGtfMTAwaHopOwo+ICAgCj4gLQlh YnNfZXJyID0gKGFjdHVhbF9jYWxjdWxhdGVkX2Nsb2NrX2toeiA+Cj4gLQkJCQkJcGxsX3NldHRp bmdzLT5hZGp1c3RlZF9waXhfY2xrKQo+IC0JCQk/IGFjdHVhbF9jYWxjdWxhdGVkX2Nsb2NrX2to eiAtCj4gLQkJCQkJcGxsX3NldHRpbmdzLT5hZGp1c3RlZF9waXhfY2xrCj4gLQkJCTogcGxsX3Nl dHRpbmdzLT5hZGp1c3RlZF9waXhfY2xrIC0KPiAtCQkJCQkJYWN0dWFsX2NhbGN1bGF0ZWRfY2xv Y2tfa2h6Owo+ICsJYWJzX2VyciA9IChhY3R1YWxfY2FsY3VsYXRlZF9jbG9ja18xMDBoeiA+Cj4g KwkJCQkJcGxsX3NldHRpbmdzLT5hZGp1c3RlZF9waXhfY2xrXzEwMGh6KQo+ICsJCQk/IGFjdHVh bF9jYWxjdWxhdGVkX2Nsb2NrXzEwMGh6IC0KPiArCQkJCQlwbGxfc2V0dGluZ3MtPmFkanVzdGVk X3BpeF9jbGtfMTAwaHoKPiArCQkJOiBwbGxfc2V0dGluZ3MtPmFkanVzdGVkX3BpeF9jbGtfMTAw aHogLQo+ICsJCQkJCQlhY3R1YWxfY2FsY3VsYXRlZF9jbG9ja18xMDBoejsKPiAgIAo+ICAgCWlm IChhYnNfZXJyIDw9IHRvbGVyYW5jZSkgewo+ICAgCQkvKmZvdW5kIGdvb2QgdmFsdWVzKi8KPiBA QCAtMjMzLDEwICsyMzMsMTAgQEAgc3RhdGljIGJvb2wgY2FsY19mYl9kaXZpZGVyX2NoZWNraW5n X3RvbGVyYW5jZSgKPiAgIAkJcGxsX3NldHRpbmdzLT5mZWVkYmFja19kaXZpZGVyID0gZmVlZGJh Y2tfZGl2aWRlcjsKPiAgIAkJcGxsX3NldHRpbmdzLT5mcmFjdF9mZWVkYmFja19kaXZpZGVyID0g ZnJhY3RfZmVlZGJhY2tfZGl2aWRlcjsKPiAgIAkJcGxsX3NldHRpbmdzLT5waXhfY2xrX3Bvc3Rf ZGl2aWRlciA9IHBvc3RfZGl2aWRlcjsKPiAtCQlwbGxfc2V0dGluZ3MtPmNhbGN1bGF0ZWRfcGl4 X2NsayA9Cj4gLQkJCWFjdHVhbF9jYWxjdWxhdGVkX2Nsb2NrX2toejsKPiArCQlwbGxfc2V0dGlu Z3MtPmNhbGN1bGF0ZWRfcGl4X2Nsa18xMDBoeiA9Cj4gKwkJCWFjdHVhbF9jYWxjdWxhdGVkX2Ns b2NrXzEwMGh6Owo+ICAgCQlwbGxfc2V0dGluZ3MtPnZjb19mcmVxID0KPiAtCQkJYWN0dWFsX2Nh bGN1bGF0ZWRfY2xvY2tfa2h6ICogcG9zdF9kaXZpZGVyOwo+ICsJCQlhY3R1YWxfY2FsY3VsYXRl ZF9jbG9ja18xMDBoeiAqIHBvc3RfZGl2aWRlciAvIDEwOwo+ICAgCQlyZXR1cm4gdHJ1ZTsKPiAg IAl9Cj4gICAJcmV0dXJuIGZhbHNlOwo+IEBAIC0yNTcsOCArMjU3LDggQEAgc3RhdGljIGJvb2wg Y2FsY19wbGxfZGl2aWRlcnNfaW5fcmFuZ2UoCj4gICAKPiAgIC8qIFRoaXMgaXMgZXJyX3RvbGVy YW5jZSAvIDEwMDAwID0gMC4wMDI1IC0gYWNjZXB0YWJsZSBlcnJvciBvZiAwLjI1JQo+ICAgICog VGhpcyBpcyBlcnJvclRvbGVyYW5jZSAvIDEwMDAwID0gMC4wMDAxIC0gYWNjZXB0YWJsZSBlcnJv ciBvZiAwLjAxJSovCj4gLQl0b2xlcmFuY2UgPSAocGxsX3NldHRpbmdzLT5hZGp1c3RlZF9waXhf Y2xrICogZXJyX3RvbGVyYW5jZSkgLwo+IC0JCQkJCQkJCQkxMDAwMDsKPiArCXRvbGVyYW5jZSA9 IChwbGxfc2V0dGluZ3MtPmFkanVzdGVkX3BpeF9jbGtfMTAwaHogKiBlcnJfdG9sZXJhbmNlKSAv Cj4gKwkJCQkJCQkJCTEwMDAwMDsKPiAgIAlpZiAodG9sZXJhbmNlIDwgQ0FMQ19QTExfQ0xLX1NS Q19FUlJfVE9MRVJBTkNFKQo+ICAgCQl0b2xlcmFuY2UgPSBDQUxDX1BMTF9DTEtfU1JDX0VSUl9U T0xFUkFOQ0U7Cj4gICAKPiBAQCAtMjk0LDcgKzI5NCw3IEBAIHN0YXRpYyB1aW50MzJfdCBjYWxj dWxhdGVfcGl4ZWxfY2xvY2tfcGxsX2RpdmlkZXJzKAo+ICAgCXVpbnQzMl90IG1pbl9yZWZfZGl2 aWRlcjsKPiAgIAl1aW50MzJfdCBtYXhfcmVmX2RpdmlkZXI7Cj4gICAKPiAtCWlmIChwbGxfc2V0 dGluZ3MtPmFkanVzdGVkX3BpeF9jbGsgPT0gMCkgewo+ICsJaWYgKHBsbF9zZXR0aW5ncy0+YWRq dXN0ZWRfcGl4X2Nsa18xMDBoeiA9PSAwKSB7Cj4gICAJCURDX0xPR19FUlJPUigKPiAgIAkJCSIl cyBCYWQgcmVxdWVzdGVkIHBpeGVsIGNsb2NrIiwgX19mdW5jX18pOwo+ICAgCQlyZXR1cm4gTUFY X1BMTF9DQUxDX0VSUk9SOwo+IEBAIC0zMDYsMjEgKzMwNiwyMSBAQCBzdGF0aWMgdWludDMyX3Qg Y2FsY3VsYXRlX3BpeGVsX2Nsb2NrX3BsbF9kaXZpZGVycygKPiAgIAkJbWF4X3Bvc3RfZGl2aWRl ciA9IHBsbF9zZXR0aW5ncy0+cGl4X2Nsa19wb3N0X2RpdmlkZXI7Cj4gICAJfSBlbHNlIHsKPiAg IAkJbWluX3Bvc3RfZGl2aWRlciA9IGNhbGNfcGxsX2NzLT5taW5fcGl4X2Nsb2NrX3BsbF9wb3N0 X2RpdmlkZXI7Cj4gLQkJaWYgKG1pbl9wb3N0X2RpdmlkZXIgKiBwbGxfc2V0dGluZ3MtPmFkanVz dGVkX3BpeF9jbGsgPAo+IC0JCQkJCQljYWxjX3BsbF9jcy0+bWluX3Zjb19raHopIHsKPiAtCQkJ bWluX3Bvc3RfZGl2aWRlciA9IGNhbGNfcGxsX2NzLT5taW5fdmNvX2toeiAvCj4gLQkJCQkJcGxs X3NldHRpbmdzLT5hZGp1c3RlZF9waXhfY2xrOwo+ICsJCWlmIChtaW5fcG9zdF9kaXZpZGVyICog cGxsX3NldHRpbmdzLT5hZGp1c3RlZF9waXhfY2xrXzEwMGh6IDwKPiArCQkJCQkJY2FsY19wbGxf Y3MtPm1pbl92Y29fa2h6ICogMTApIHsKPiArCQkJbWluX3Bvc3RfZGl2aWRlciA9IGNhbGNfcGxs X2NzLT5taW5fdmNvX2toeiAqIDEwIC8KPiArCQkJCQlwbGxfc2V0dGluZ3MtPmFkanVzdGVkX3Bp eF9jbGtfMTAwaHo7Cj4gICAJCQlpZiAoKG1pbl9wb3N0X2RpdmlkZXIgKgo+IC0JCQkJCXBsbF9z ZXR0aW5ncy0+YWRqdXN0ZWRfcGl4X2NsaykgPAo+IC0JCQkJCQljYWxjX3BsbF9jcy0+bWluX3Zj b19raHopCj4gKwkJCQkJcGxsX3NldHRpbmdzLT5hZGp1c3RlZF9waXhfY2xrXzEwMGh6KSA8Cj4g KwkJCQkJCWNhbGNfcGxsX2NzLT5taW5fdmNvX2toeiAqIDEwKQo+ICAgCQkJCW1pbl9wb3N0X2Rp dmlkZXIrKzsKPiAgIAkJfQo+ICAgCj4gICAJCW1heF9wb3N0X2RpdmlkZXIgPSBjYWxjX3BsbF9j cy0+bWF4X3BpeF9jbG9ja19wbGxfcG9zdF9kaXZpZGVyOwo+IC0JCWlmIChtYXhfcG9zdF9kaXZp ZGVyICogcGxsX3NldHRpbmdzLT5hZGp1c3RlZF9waXhfY2xrCj4gLQkJCQk+IGNhbGNfcGxsX2Nz LT5tYXhfdmNvX2toeikKPiAtCQkJbWF4X3Bvc3RfZGl2aWRlciA9IGNhbGNfcGxsX2NzLT5tYXhf dmNvX2toeiAvCj4gLQkJCQkJcGxsX3NldHRpbmdzLT5hZGp1c3RlZF9waXhfY2xrOwo+ICsJCWlm IChtYXhfcG9zdF9kaXZpZGVyICogcGxsX3NldHRpbmdzLT5hZGp1c3RlZF9waXhfY2xrXzEwMGh6 Cj4gKwkJCQk+IGNhbGNfcGxsX2NzLT5tYXhfdmNvX2toeiAqIDEwKQo+ICsJCQltYXhfcG9zdF9k aXZpZGVyID0gY2FsY19wbGxfY3MtPm1heF92Y29fa2h6ICogMTAgLwo+ICsJCQkJCXBsbF9zZXR0 aW5ncy0+YWRqdXN0ZWRfcGl4X2Nsa18xMDBoejsKPiAgIAl9Cj4gICAKPiAgIC8qIDIpIEZpbmQg UmVmZXJlbmNlIGRpdmlkZXIgcmFuZ2VzCj4gQEAgLTM5Miw0NyArMzkyLDQ3IEBAIHN0YXRpYyBi b29sIHBsbF9hZGp1c3RfcGl4X2NsaygKPiAgIAkJc3RydWN0IHBpeGVsX2Nsa19wYXJhbXMgKnBp eF9jbGtfcGFyYW1zLAo+ICAgCQlzdHJ1Y3QgcGxsX3NldHRpbmdzICpwbGxfc2V0dGluZ3MpCj4g ICB7Cj4gLQl1aW50MzJfdCBhY3R1YWxfcGl4X2Nsa19raHogPSAwOwo+IC0JdWludDMyX3QgcmVx dWVzdGVkX2Nsa19raHogPSAwOwo+ICsJdWludDMyX3QgYWN0dWFsX3BpeF9jbGtfMTAwaHogPSAw Owo+ICsJdWludDMyX3QgcmVxdWVzdGVkX2Nsa18xMDBoeiA9IDA7Cj4gICAJc3RydWN0IGJwX2Fk anVzdF9waXhlbF9jbG9ja19wYXJhbWV0ZXJzIGJwX2FkanVzdF9waXhlbF9jbG9ja19wYXJhbXMg PSB7Cj4gICAJCQkJCQkJMCB9Owo+ICAgCWVudW0gYnBfcmVzdWx0IGJwX3Jlc3VsdDsKPiAgIAlz d2l0Y2ggKHBpeF9jbGtfcGFyYW1zLT5zaWduYWxfdHlwZSkgewo+ICAgCWNhc2UgU0lHTkFMX1RZ UEVfSERNSV9UWVBFX0E6IHsKPiAtCQlyZXF1ZXN0ZWRfY2xrX2toeiA9IHBpeF9jbGtfcGFyYW1z LT5yZXF1ZXN0ZWRfcGl4X2NsazsKPiArCQlyZXF1ZXN0ZWRfY2xrXzEwMGh6ID0gcGl4X2Nsa19w YXJhbXMtPnJlcXVlc3RlZF9waXhfY2xrXzEwMGh6Owo+ICAgCQlpZiAocGl4X2Nsa19wYXJhbXMt PnBpeGVsX2VuY29kaW5nICE9IFBJWEVMX0VOQ09ESU5HX1lDQkNSNDIyKSB7Cj4gICAJCQlzd2l0 Y2ggKHBpeF9jbGtfcGFyYW1zLT5jb2xvcl9kZXB0aCkgewo+ICAgCQkJY2FzZSBDT0xPUl9ERVBU SF8xMDEwMTA6Cj4gLQkJCQlyZXF1ZXN0ZWRfY2xrX2toeiA9IChyZXF1ZXN0ZWRfY2xrX2toeiAq IDUpID4+IDI7Cj4gKwkJCQlyZXF1ZXN0ZWRfY2xrXzEwMGh6ID0gKHJlcXVlc3RlZF9jbGtfMTAw aHogKiA1KSA+PiAyOwo+ICAgCQkJCWJyZWFrOyAvKiB4MS4yNSovCj4gICAJCQljYXNlIENPTE9S X0RFUFRIXzEyMTIxMjoKPiAtCQkJCXJlcXVlc3RlZF9jbGtfa2h6ID0gKHJlcXVlc3RlZF9jbGtf a2h6ICogNikgPj4gMjsKPiArCQkJCXJlcXVlc3RlZF9jbGtfMTAwaHogPSAocmVxdWVzdGVkX2Ns a18xMDBoeiAqIDYpID4+IDI7Cj4gICAJCQkJYnJlYWs7IC8qIHgxLjUqLwo+ICAgCQkJY2FzZSBD T0xPUl9ERVBUSF8xNjE2MTY6Cj4gLQkJCQlyZXF1ZXN0ZWRfY2xrX2toeiA9IHJlcXVlc3RlZF9j bGtfa2h6ICogMjsKPiArCQkJCXJlcXVlc3RlZF9jbGtfMTAwaHogPSByZXF1ZXN0ZWRfY2xrXzEw MGh6ICogMjsKPiAgIAkJCQlicmVhazsgLyogeDIuMCovCj4gICAJCQlkZWZhdWx0Ogo+ICAgCQkJ CWJyZWFrOwo+ICAgCQkJfQo+ICAgCQl9Cj4gLQkJYWN0dWFsX3BpeF9jbGtfa2h6ID0gcmVxdWVz dGVkX2Nsa19raHo7Cj4gKwkJYWN0dWFsX3BpeF9jbGtfMTAwaHogPSByZXF1ZXN0ZWRfY2xrXzEw MGh6Owo+ICAgCX0KPiAgIAkJYnJlYWs7Cj4gICAKPiAgIAljYXNlIFNJR05BTF9UWVBFX0RJU1BM QVlfUE9SVDoKPiAgIAljYXNlIFNJR05BTF9UWVBFX0RJU1BMQVlfUE9SVF9NU1Q6Cj4gICAJY2Fz ZSBTSUdOQUxfVFlQRV9FRFA6Cj4gLQkJcmVxdWVzdGVkX2Nsa19raHogPSBwaXhfY2xrX3BhcmFt cy0+cmVxdWVzdGVkX3N5bV9jbGs7Cj4gLQkJYWN0dWFsX3BpeF9jbGtfa2h6ID0gcGl4X2Nsa19w YXJhbXMtPnJlcXVlc3RlZF9waXhfY2xrOwo+ICsJCXJlcXVlc3RlZF9jbGtfMTAwaHogPSBwaXhf Y2xrX3BhcmFtcy0+cmVxdWVzdGVkX3N5bV9jbGsgKiAxMDsKPiArCQlhY3R1YWxfcGl4X2Nsa18x MDBoeiA9IHBpeF9jbGtfcGFyYW1zLT5yZXF1ZXN0ZWRfcGl4X2Nsa18xMDBoejsKPiAgIAkJYnJl YWs7Cj4gICAKPiAgIAlkZWZhdWx0Ogo+IC0JCXJlcXVlc3RlZF9jbGtfa2h6ID0gcGl4X2Nsa19w YXJhbXMtPnJlcXVlc3RlZF9waXhfY2xrOwo+IC0JCWFjdHVhbF9waXhfY2xrX2toeiA9IHBpeF9j bGtfcGFyYW1zLT5yZXF1ZXN0ZWRfcGl4X2NsazsKPiArCQlyZXF1ZXN0ZWRfY2xrXzEwMGh6ID0g cGl4X2Nsa19wYXJhbXMtPnJlcXVlc3RlZF9waXhfY2xrXzEwMGh6Owo+ICsJCWFjdHVhbF9waXhf Y2xrXzEwMGh6ID0gcGl4X2Nsa19wYXJhbXMtPnJlcXVlc3RlZF9waXhfY2xrXzEwMGh6Owo+ICAg CQlicmVhazsKPiAgIAl9Cj4gICAKPiAtCWJwX2FkanVzdF9waXhlbF9jbG9ja19wYXJhbXMucGl4 ZWxfY2xvY2sgPSByZXF1ZXN0ZWRfY2xrX2toejsKPiArCWJwX2FkanVzdF9waXhlbF9jbG9ja19w YXJhbXMucGl4ZWxfY2xvY2sgPSByZXF1ZXN0ZWRfY2xrXzEwMGh6IC8gMTA7Cj4gICAJYnBfYWRq dXN0X3BpeGVsX2Nsb2NrX3BhcmFtcy4KPiAgIAkJZW5jb2Rlcl9vYmplY3RfaWQgPSBwaXhfY2xr X3BhcmFtcy0+ZW5jb2Rlcl9vYmplY3RfaWQ7Cj4gICAJYnBfYWRqdXN0X3BpeGVsX2Nsb2NrX3Bh cmFtcy5zaWduYWxfdHlwZSA9IHBpeF9jbGtfcGFyYW1zLT5zaWduYWxfdHlwZTsKPiBAQCAtNDQx LDkgKzQ0MSw5IEBAIHN0YXRpYyBib29sIHBsbF9hZGp1c3RfcGl4X2NsaygKPiAgIAlicF9yZXN1 bHQgPSBjbGtfc3JjLT5iaW9zLT5mdW5jcy0+YWRqdXN0X3BpeGVsX2Nsb2NrKAo+ICAgCQkJY2xr X3NyYy0+YmlvcywgJmJwX2FkanVzdF9waXhlbF9jbG9ja19wYXJhbXMpOwo+ICAgCWlmIChicF9y ZXN1bHQgPT0gQlBfUkVTVUxUX09LKSB7Cj4gLQkJcGxsX3NldHRpbmdzLT5hY3R1YWxfcGl4X2Ns ayA9IGFjdHVhbF9waXhfY2xrX2toejsKPiAtCQlwbGxfc2V0dGluZ3MtPmFkanVzdGVkX3BpeF9j bGsgPQo+IC0JCQlicF9hZGp1c3RfcGl4ZWxfY2xvY2tfcGFyYW1zLmFkanVzdGVkX3BpeGVsX2Ns b2NrOwo+ICsJCXBsbF9zZXR0aW5ncy0+YWN0dWFsX3BpeF9jbGtfMTAwaHogPSBhY3R1YWxfcGl4 X2Nsa18xMDBoejsKPiArCQlwbGxfc2V0dGluZ3MtPmFkanVzdGVkX3BpeF9jbGtfMTAwaHogPQo+ ICsJCQlicF9hZGp1c3RfcGl4ZWxfY2xvY2tfcGFyYW1zLmFkanVzdGVkX3BpeGVsX2Nsb2NrICog MTA7Cj4gICAJCXBsbF9zZXR0aW5ncy0+cmVmZXJlbmNlX2RpdmlkZXIgPQo+ICAgCQkJYnBfYWRq dXN0X3BpeGVsX2Nsb2NrX3BhcmFtcy5yZWZlcmVuY2VfZGl2aWRlcjsKPiAgIAkJcGxsX3NldHRp bmdzLT5waXhfY2xrX3Bvc3RfZGl2aWRlciA9Cj4gQEAgLTQ5MCw3ICs0OTAsNyBAQCBzdGF0aWMg dWludDMyX3QgZGNlMTEwX2dldF9waXhfY2xrX2RpdmlkZXJzX2hlbHBlciAoCj4gICAJCWNvbnN0 IHN0cnVjdCBzcHJlYWRfc3BlY3RydW1fZGF0YSAqc3NfZGF0YSA9IGdldF9zc19kYXRhX2VudHJ5 KAo+ICAgCQkJCQljbGtfc3JjLAo+ICAgCQkJCQlwaXhfY2xrX3BhcmFtcy0+c2lnbmFsX3R5cGUs Cj4gLQkJCQkJcGxsX3NldHRpbmdzLT5hZGp1c3RlZF9waXhfY2xrKTsKPiArCQkJCQlwbGxfc2V0 dGluZ3MtPmFkanVzdGVkX3BpeF9jbGtfMTAwaHogLyAxMCk7Cj4gICAKPiAgIAkJaWYgKE5VTEwg IT0gc3NfZGF0YSkKPiAgIAkJCXBsbF9zZXR0aW5ncy0+c3NfcGVyY2VudGFnZSA9IHNzX2RhdGEt PnBlcmNlbnRhZ2U7Cj4gQEAgLTUwMiwxMyArNTAyLDEzIEBAIHN0YXRpYyB1aW50MzJfdCBkY2Ux MTBfZ2V0X3BpeF9jbGtfZGl2aWRlcnNfaGVscGVyICgKPiAgIAkJICogdG8gY29udGludWUuICov Cj4gICAJCURDX0xPR19FUlJPUigKPiAgIAkJCSIlczogRmFpbGVkIHRvIGFkanVzdCBwaXhlbCBj bG9jayEhIiwgX19mdW5jX18pOwo+IC0JCXBsbF9zZXR0aW5ncy0+YWN0dWFsX3BpeF9jbGsgPQo+ IC0JCQkJcGl4X2Nsa19wYXJhbXMtPnJlcXVlc3RlZF9waXhfY2xrOwo+IC0JCXBsbF9zZXR0aW5n cy0+YWRqdXN0ZWRfcGl4X2NsayA9Cj4gLQkJCQlwaXhfY2xrX3BhcmFtcy0+cmVxdWVzdGVkX3Bp eF9jbGs7Cj4gKwkJcGxsX3NldHRpbmdzLT5hY3R1YWxfcGl4X2Nsa18xMDBoeiA9Cj4gKwkJCQlw aXhfY2xrX3BhcmFtcy0+cmVxdWVzdGVkX3BpeF9jbGtfMTAwaHo7Cj4gKwkJcGxsX3NldHRpbmdz LT5hZGp1c3RlZF9waXhfY2xrXzEwMGh6ID0KPiArCQkJCXBpeF9jbGtfcGFyYW1zLT5yZXF1ZXN0 ZWRfcGl4X2Nsa18xMDBoejsKPiAgIAo+ICAgCQlpZiAoZGNfaXNfZHBfc2lnbmFsKHBpeF9jbGtf cGFyYW1zLT5zaWduYWxfdHlwZSkpCj4gLQkJCXBsbF9zZXR0aW5ncy0+YWRqdXN0ZWRfcGl4X2Ns ayA9IDEwMDAwMDsKPiArCQkJcGxsX3NldHRpbmdzLT5hZGp1c3RlZF9waXhfY2xrXzEwMGh6ID0g MTAwMDAwMDsKPiAgIAl9Cj4gICAKPiAgIAkvKiBDYWxjdWxhdGUgRGl2aWRlcnMgKi8KPiBAQCAt NTMzLDI4ICs1MzMsMjggQEAgc3RhdGljIHZvaWQgZGNlMTEyX2dldF9waXhfY2xrX2RpdmlkZXJz X2hlbHBlciAoCj4gICAJCXN0cnVjdCBwbGxfc2V0dGluZ3MgKnBsbF9zZXR0aW5ncywKPiAgIAkJ c3RydWN0IHBpeGVsX2Nsa19wYXJhbXMgKnBpeF9jbGtfcGFyYW1zKQo+ICAgewo+IC0JdWludDMy X3QgYWN0dWFsUGl4ZWxDbG9ja0luS0h6Owo+ICsJdWludDMyX3QgYWN0dWFsX3BpeGVsX2Nsb2Nr XzEwMGh6Owo+ICAgCj4gLQlhY3R1YWxQaXhlbENsb2NrSW5LSHogPSBwaXhfY2xrX3BhcmFtcy0+ cmVxdWVzdGVkX3BpeF9jbGs7Cj4gKwlhY3R1YWxfcGl4ZWxfY2xvY2tfMTAwaHogPSBwaXhfY2xr X3BhcmFtcy0+cmVxdWVzdGVkX3BpeF9jbGtfMTAwaHo7Cj4gICAJLyogQ2FsY3VsYXRlIERpdmlk ZXJzICovCj4gICAJaWYgKHBpeF9jbGtfcGFyYW1zLT5zaWduYWxfdHlwZSA9PSBTSUdOQUxfVFlQ RV9IRE1JX1RZUEVfQSkgewo+ICAgCQlzd2l0Y2ggKHBpeF9jbGtfcGFyYW1zLT5jb2xvcl9kZXB0 aCkgewo+ICAgCQljYXNlIENPTE9SX0RFUFRIXzEwMTAxMDoKPiAtCQkJYWN0dWFsUGl4ZWxDbG9j a0luS0h6ID0gKGFjdHVhbFBpeGVsQ2xvY2tJbktIeiAqIDUpID4+IDI7Cj4gKwkJCWFjdHVhbF9w aXhlbF9jbG9ja18xMDBoeiA9IChhY3R1YWxfcGl4ZWxfY2xvY2tfMTAwaHogKiA1KSA+PiAyOwo+ ICAgCQkJYnJlYWs7Cj4gICAJCWNhc2UgQ09MT1JfREVQVEhfMTIxMjEyOgo+IC0JCQlhY3R1YWxQ aXhlbENsb2NrSW5LSHogPSAoYWN0dWFsUGl4ZWxDbG9ja0luS0h6ICogNikgPj4gMjsKPiArCQkJ YWN0dWFsX3BpeGVsX2Nsb2NrXzEwMGh6ID0gKGFjdHVhbF9waXhlbF9jbG9ja18xMDBoeiAqIDYp ID4+IDI7Cj4gICAJCQlicmVhazsKPiAgIAkJY2FzZSBDT0xPUl9ERVBUSF8xNjE2MTY6Cj4gLQkJ CWFjdHVhbFBpeGVsQ2xvY2tJbktIeiA9IGFjdHVhbFBpeGVsQ2xvY2tJbktIeiAqIDI7Cj4gKwkJ CWFjdHVhbF9waXhlbF9jbG9ja18xMDBoeiA9IGFjdHVhbF9waXhlbF9jbG9ja18xMDBoeiAqIDI7 Cj4gICAJCQlicmVhazsKPiAgIAkJZGVmYXVsdDoKPiAgIAkJCWJyZWFrOwo+ICAgCQl9Cj4gICAJ fQo+IC0JcGxsX3NldHRpbmdzLT5hY3R1YWxfcGl4X2NsayA9IGFjdHVhbFBpeGVsQ2xvY2tJbktI ejsKPiAtCXBsbF9zZXR0aW5ncy0+YWRqdXN0ZWRfcGl4X2NsayA9IGFjdHVhbFBpeGVsQ2xvY2tJ bktIejsKPiAtCXBsbF9zZXR0aW5ncy0+Y2FsY3VsYXRlZF9waXhfY2xrID0gcGl4X2Nsa19wYXJh bXMtPnJlcXVlc3RlZF9waXhfY2xrOwo+ICsJcGxsX3NldHRpbmdzLT5hY3R1YWxfcGl4X2Nsa18x MDBoeiA9IGFjdHVhbF9waXhlbF9jbG9ja18xMDBoejsKPiArCXBsbF9zZXR0aW5ncy0+YWRqdXN0 ZWRfcGl4X2Nsa18xMDBoeiA9IGFjdHVhbF9waXhlbF9jbG9ja18xMDBoejsKPiArCXBsbF9zZXR0 aW5ncy0+Y2FsY3VsYXRlZF9waXhfY2xrXzEwMGh6ID0gcGl4X2Nsa19wYXJhbXMtPnJlcXVlc3Rl ZF9waXhfY2xrXzEwMGh6Owo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdWludDMyX3QgZGNlMTEwX2dl dF9waXhfY2xrX2RpdmlkZXJzKAo+IEBAIC01NjcsNyArNTY3LDcgQEAgc3RhdGljIHVpbnQzMl90 IGRjZTExMF9nZXRfcGl4X2Nsa19kaXZpZGVycygKPiAgIAlEQ19MT0dHRVJfSU5JVCgpOwo+ICAg Cj4gICAJaWYgKHBpeF9jbGtfcGFyYW1zID09IE5VTEwgfHwgcGxsX3NldHRpbmdzID09IE5VTEwK PiAtCQkJfHwgcGl4X2Nsa19wYXJhbXMtPnJlcXVlc3RlZF9waXhfY2xrID09IDApIHsKPiArCQkJ fHwgcGl4X2Nsa19wYXJhbXMtPnJlcXVlc3RlZF9waXhfY2xrXzEwMGh6ID09IDApIHsKPiAgIAkJ RENfTE9HX0VSUk9SKAo+ICAgCQkJIiVzOiBJbnZhbGlkIHBhcmFtZXRlcnMhIVxuIiwgX19mdW5j X18pOwo+ICAgCQlyZXR1cm4gcGxsX2NhbGNfZXJyb3I7Cj4gQEAgLTU3NywxMCArNTc3LDEwIEBA IHN0YXRpYyB1aW50MzJfdCBkY2UxMTBfZ2V0X3BpeF9jbGtfZGl2aWRlcnMoCj4gICAKPiAgIAlp ZiAoY3MtPmlkID09IENMT0NLX1NPVVJDRV9JRF9EUF9EVE8gfHwKPiAgIAkJCWNzLT5pZCA9PSBD TE9DS19TT1VSQ0VfSURfRVhURVJOQUwpIHsKPiAtCQlwbGxfc2V0dGluZ3MtPmFkanVzdGVkX3Bp eF9jbGsgPSBjbGtfc3JjLT5leHRfY2xrX2toejsKPiAtCQlwbGxfc2V0dGluZ3MtPmNhbGN1bGF0 ZWRfcGl4X2NsayA9IGNsa19zcmMtPmV4dF9jbGtfa2h6Owo+IC0JCXBsbF9zZXR0aW5ncy0+YWN0 dWFsX3BpeF9jbGsgPQo+IC0JCQkJCXBpeF9jbGtfcGFyYW1zLT5yZXF1ZXN0ZWRfcGl4X2NsazsK PiArCQlwbGxfc2V0dGluZ3MtPmFkanVzdGVkX3BpeF9jbGtfMTAwaHogPSBjbGtfc3JjLT5leHRf Y2xrX2toeiAqIDEwOwo+ICsJCXBsbF9zZXR0aW5ncy0+Y2FsY3VsYXRlZF9waXhfY2xrXzEwMGh6 ID0gY2xrX3NyYy0+ZXh0X2Nsa19raHogKiAxMDsKPiArCQlwbGxfc2V0dGluZ3MtPmFjdHVhbF9w aXhfY2xrXzEwMGh6ID0KPiArCQkJCQlwaXhfY2xrX3BhcmFtcy0+cmVxdWVzdGVkX3BpeF9jbGtf MTAwaHo7Cj4gICAJCXJldHVybiAwOwo+ICAgCX0KPiAgIAo+IEBAIC01OTksNyArNTk5LDcgQEAg c3RhdGljIHVpbnQzMl90IGRjZTExMl9nZXRfcGl4X2Nsa19kaXZpZGVycygKPiAgIAlEQ19MT0dH RVJfSU5JVCgpOwo+ICAgCj4gICAJaWYgKHBpeF9jbGtfcGFyYW1zID09IE5VTEwgfHwgcGxsX3Nl dHRpbmdzID09IE5VTEwKPiAtCQkJfHwgcGl4X2Nsa19wYXJhbXMtPnJlcXVlc3RlZF9waXhfY2xr ID09IDApIHsKPiArCQkJfHwgcGl4X2Nsa19wYXJhbXMtPnJlcXVlc3RlZF9waXhfY2xrXzEwMGh6 ID09IDApIHsKPiAgIAkJRENfTE9HX0VSUk9SKAo+ICAgCQkJIiVzOiBJbnZhbGlkIHBhcmFtZXRl cnMhIVxuIiwgX19mdW5jX18pOwo+ICAgCQlyZXR1cm4gLTE7Cj4gQEAgLTYwOSwxMCArNjA5LDEw IEBAIHN0YXRpYyB1aW50MzJfdCBkY2UxMTJfZ2V0X3BpeF9jbGtfZGl2aWRlcnMoCj4gICAKPiAg IAlpZiAoY3MtPmlkID09IENMT0NLX1NPVVJDRV9JRF9EUF9EVE8gfHwKPiAgIAkJCWNzLT5pZCA9 PSBDTE9DS19TT1VSQ0VfSURfRVhURVJOQUwpIHsKPiAtCQlwbGxfc2V0dGluZ3MtPmFkanVzdGVk X3BpeF9jbGsgPSBjbGtfc3JjLT5leHRfY2xrX2toejsKPiAtCQlwbGxfc2V0dGluZ3MtPmNhbGN1 bGF0ZWRfcGl4X2NsayA9IGNsa19zcmMtPmV4dF9jbGtfa2h6Owo+IC0JCXBsbF9zZXR0aW5ncy0+ YWN0dWFsX3BpeF9jbGsgPQo+IC0JCQkJCXBpeF9jbGtfcGFyYW1zLT5yZXF1ZXN0ZWRfcGl4X2Ns azsKPiArCQlwbGxfc2V0dGluZ3MtPmFkanVzdGVkX3BpeF9jbGtfMTAwaHogPSBjbGtfc3JjLT5l eHRfY2xrX2toeiAqIDEwOwo+ICsJCXBsbF9zZXR0aW5ncy0+Y2FsY3VsYXRlZF9waXhfY2xrXzEw MGh6ID0gY2xrX3NyYy0+ZXh0X2Nsa19raHogKiAxMDsKPiArCQlwbGxfc2V0dGluZ3MtPmFjdHVh bF9waXhfY2xrXzEwMGh6ID0KPiArCQkJCQlwaXhfY2xrX3BhcmFtcy0+cmVxdWVzdGVkX3BpeF9j bGtfMTAwaHo7Cj4gICAJCXJldHVybiAtMTsKPiAgIAl9Cj4gICAKPiBAQCAtNzE0LDcgKzcxNCw3 IEBAIHN0YXRpYyBib29sIGVuYWJsZV9zcHJlYWRfc3BlY3RydW0oCj4gICAJc3NfZGF0YSA9IGdl dF9zc19kYXRhX2VudHJ5KAo+ICAgCQkJY2xrX3NyYywKPiAgIAkJCXNpZ25hbCwKPiAtCQkJcGxs X3NldHRpbmdzLT5jYWxjdWxhdGVkX3BpeF9jbGspOwo+ICsJCQlwbGxfc2V0dGluZ3MtPmNhbGN1 bGF0ZWRfcGl4X2Nsa18xMDBoeiAvIDEwKTsKPiAgIAo+ICAgLyogUGl4ZWwgY2xvY2sgUExMIGhh cyBiZWVuIHByb2dyYW1tZWQgdG8gZ2VuZXJhdGUgZGVzaXJlZCBwaXhlbCBjbG9jaywKPiAgICAq IG5vdyBlbmFibGUgU1Mgb24gcGl4ZWwgY2xvY2sgKi8KPiBAQCAtODUzLDcgKzg1Myw3IEBAIHN0 YXRpYyBib29sIGRjZTExMF9wcm9ncmFtX3BpeF9jbGsoCj4gICAJLypBVE9NQklPUyBleHBlY3Rz IHBpeGVsIHJhdGUgYWRqdXN0ZWQgYnkgZGVlcCBjb2xvciByYXRpbykqLwo+ICAgCWJwX3BjX3Bh cmFtcy5jb250cm9sbGVyX2lkID0gcGl4X2Nsa19wYXJhbXMtPmNvbnRyb2xsZXJfaWQ7Cj4gICAJ YnBfcGNfcGFyYW1zLnBsbF9pZCA9IGNsb2NrX3NvdXJjZS0+aWQ7Cj4gLQlicF9wY19wYXJhbXMu dGFyZ2V0X3BpeGVsX2Nsb2NrID0gcGxsX3NldHRpbmdzLT5hY3R1YWxfcGl4X2NsazsKPiArCWJw X3BjX3BhcmFtcy50YXJnZXRfcGl4ZWxfY2xvY2tfMTAwaHogPSBwbGxfc2V0dGluZ3MtPmFjdHVh bF9waXhfY2xrXzEwMGh6Owo+ICAgCWJwX3BjX3BhcmFtcy5lbmNvZGVyX29iamVjdF9pZCA9IHBp eF9jbGtfcGFyYW1zLT5lbmNvZGVyX29iamVjdF9pZDsKPiAgIAlicF9wY19wYXJhbXMuc2lnbmFs X3R5cGUgPSBwaXhfY2xrX3BhcmFtcy0+c2lnbmFsX3R5cGU7Cj4gICAKPiBAQCAtOTAzLDEyICs5 MDMsMTIgQEAgc3RhdGljIGJvb2wgZGNlMTEyX3Byb2dyYW1fcGl4X2NsaygKPiAgICNpZiBkZWZp bmVkKENPTkZJR19EUk1fQU1EX0RDX0RDTjFfMCkKPiAgIAlpZiAoSVNfRlBHQV9NQVhJTVVTX0RD KGNsb2NrX3NvdXJjZS0+Y3R4LT5kY2VfZW52aXJvbm1lbnQpKSB7Cj4gICAJCXVuc2lnbmVkIGlu dCBpbnN0ID0gcGl4X2Nsa19wYXJhbXMtPmNvbnRyb2xsZXJfaWQgLSBDT05UUk9MTEVSX0lEX0Qw Owo+IC0JCXVuc2lnbmVkIGRwX2R0b19yZWZfa0h6ID0gNzAwMDAwOwo+IC0JCXVuc2lnbmVkIGNs b2NrX2tIeiA9IHBsbF9zZXR0aW5ncy0+YWN0dWFsX3BpeF9jbGs7Cj4gKwkJdW5zaWduZWQgZHBf ZHRvX3JlZl8xMDBoeiA9IDcwMDAwMDA7Cj4gKwkJdW5zaWduZWQgY2xvY2tfMTAwaHogPSBwbGxf c2V0dGluZ3MtPmFjdHVhbF9waXhfY2xrXzEwMGh6Owo+ICAgCj4gICAJCS8qIFNldCBEVE8gdmFs dWVzOiBwaGFzZSA9IHRhcmdldCBjbG9jaywgbW9kdWxvID0gcmVmZXJlbmNlIGNsb2NrICovCj4g LQkJUkVHX1dSSVRFKFBIQVNFW2luc3RdLCBjbG9ja19rSHopOwo+IC0JCVJFR19XUklURShNT0RV TE9baW5zdF0sIGRwX2R0b19yZWZfa0h6KTsKPiArCQlSRUdfV1JJVEUoUEhBU0VbaW5zdF0sIGNs b2NrXzEwMGh6KTsKPiArCQlSRUdfV1JJVEUoTU9EVUxPW2luc3RdLCBkcF9kdG9fcmVmXzEwMGh6 KTsKPiAgIAo+ICAgCQkvKiBFbmFibGUgRFRPICovCj4gICAJCVJFR19VUERBVEUoUElYRUxfUkFU RV9DTlRMW2luc3RdLCBEUF9EVE8wX0VOQUJMRSwgMSk7Cj4gQEAgLTkyNyw3ICs5MjcsNyBAQCBz dGF0aWMgYm9vbCBkY2UxMTJfcHJvZ3JhbV9waXhfY2xrKAo+ICAgCS8qQVRPTUJJT1MgZXhwZWN0 cyBwaXhlbCByYXRlIGFkanVzdGVkIGJ5IGRlZXAgY29sb3IgcmF0aW8pKi8KPiAgIAlicF9wY19w YXJhbXMuY29udHJvbGxlcl9pZCA9IHBpeF9jbGtfcGFyYW1zLT5jb250cm9sbGVyX2lkOwo+ICAg CWJwX3BjX3BhcmFtcy5wbGxfaWQgPSBjbG9ja19zb3VyY2UtPmlkOwo+IC0JYnBfcGNfcGFyYW1z LnRhcmdldF9waXhlbF9jbG9jayA9IHBsbF9zZXR0aW5ncy0+YWN0dWFsX3BpeF9jbGs7Cj4gKwli cF9wY19wYXJhbXMudGFyZ2V0X3BpeGVsX2Nsb2NrXzEwMGh6ID0gcGxsX3NldHRpbmdzLT5hY3R1 YWxfcGl4X2Nsa18xMDBoejsKPiAgIAlicF9wY19wYXJhbXMuZW5jb2Rlcl9vYmplY3RfaWQgPSBw aXhfY2xrX3BhcmFtcy0+ZW5jb2Rlcl9vYmplY3RfaWQ7Cj4gICAJYnBfcGNfcGFyYW1zLnNpZ25h bF90eXBlID0gcGl4X2Nsa19wYXJhbXMtPnNpZ25hbF90eXBlOwo+ICAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX2xpbmtfZW5jb2Rlci5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2VfbGlua19lbmNvZGVyLmMKPiBp bmRleCAxZDc5NGM2Li4zMTRjMDRhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9kYy9kY2UvZGNlX2xpbmtfZW5jb2Rlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2RjL2RjZS9kY2VfbGlua19lbmNvZGVyLmMKPiBAQCAtNTk5LDEyICs1OTks MTIgQEAgYm9vbCBkY2UxMTBfbGlua19lbmNvZGVyX3ZhbGlkYXRlX2R2aV9vdXRwdXQoCj4gICAJ aWYgKChjb25uZWN0b3Jfc2lnbmFsID09IFNJR05BTF9UWVBFX0RWSV9TSU5HTEVfTElOSyB8fAo+ ICAgCQljb25uZWN0b3Jfc2lnbmFsID09IFNJR05BTF9UWVBFX0hETUlfVFlQRV9BKSAmJgo+ICAg CQlzaWduYWwgIT0gU0lHTkFMX1RZUEVfSERNSV9UWVBFX0EgJiYKPiAtCQljcnRjX3RpbWluZy0+ cGl4X2Nsa19raHogPiBUTURTX01BWF9QSVhFTF9DTE9DSykKPiArCQljcnRjX3RpbWluZy0+cGl4 X2Nsa18xMDBoeiA+IChUTURTX01BWF9QSVhFTF9DTE9DSyAqIDEwKSkKPiAgIAkJcmV0dXJuIGZh bHNlOwo+IC0JaWYgKGNydGNfdGltaW5nLT5waXhfY2xrX2toeiA8IFRNRFNfTUlOX1BJWEVMX0NM T0NLKQo+ICsJaWYgKGNydGNfdGltaW5nLT5waXhfY2xrXzEwMGh6IDwgKFRNRFNfTUlOX1BJWEVM X0NMT0NLICogMTApKQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gICAKPiAtCWlmIChjcnRjX3RpbWlu Zy0+cGl4X2Nsa19raHogPiBtYXhfcGl4ZWxfY2xvY2spCj4gKwlpZiAoY3J0Y190aW1pbmctPnBp eF9jbGtfMTAwaHogPiAobWF4X3BpeGVsX2Nsb2NrICogMTApKQo+ICAgCQlyZXR1cm4gZmFsc2U7 Cj4gICAKPiAgIAkvKiBEVkkgc3VwcG9ydHMgNi84YnBwIHNpbmdsZS1saW5rIGFuZCAxMC8xNmJw cCBkdWFsLWxpbmsgKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2RjZS9kY2Vfc3RyZWFtX2VuY29kZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9kYy9kY2UvZGNlX3N0cmVhbV9lbmNvZGVyLmMKPiBpbmRleCBjY2UwZDE4Li40YmQ3YzVkIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX3N0cmVh bV9lbmNvZGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2Rj ZV9zdHJlYW1fZW5jb2Rlci5jCj4gQEAgLTY2Miw3ICs2NjIsNyBAQCBzdGF0aWMgdm9pZCBkY2Ux MTBfc3RyZWFtX2VuY29kZXJfZHZpX3NldF9zdHJlYW1fYXR0cmlidXRlKAo+ICAgCWNudGwuc2ln bmFsID0gaXNfZHVhbF9saW5rID8KPiAgIAkJCVNJR05BTF9UWVBFX0RWSV9EVUFMX0xJTksgOiBT SUdOQUxfVFlQRV9EVklfU0lOR0xFX0xJTks7Cj4gICAJY250bC5lbmFibGVfZHBfYXVkaW8gPSBm YWxzZTsKPiAtCWNudGwucGl4ZWxfY2xvY2sgPSBjcnRjX3RpbWluZy0+cGl4X2Nsa19raHo7Cj4g KwljbnRsLnBpeGVsX2Nsb2NrID0gY3J0Y190aW1pbmctPnBpeF9jbGtfMTAwaHogLyAxMDsKPiAg IAljbnRsLmxhbmVzX251bWJlciA9IChpc19kdWFsX2xpbmspID8gTEFORV9DT1VOVF9FSUdIVCA6 IExBTkVfQ09VTlRfRk9VUjsKPiAgIAo+ICAgCWlmIChlbmMxMTAtPmJhc2UuYnAtPmZ1bmNzLT5l bmNvZGVyX2NvbnRyb2woCj4gQEAgLTY4Niw3ICs2ODYsNyBAQCBzdGF0aWMgdm9pZCBkY2UxMTBf c3RyZWFtX2VuY29kZXJfbHZkc19zZXRfc3RyZWFtX2F0dHJpYnV0ZSgKPiAgIAljbnRsLmVuZ2lu ZV9pZCA9IGVuYzExMC0+YmFzZS5pZDsKPiAgIAljbnRsLnNpZ25hbCA9IFNJR05BTF9UWVBFX0xW RFM7Cj4gICAJY250bC5lbmFibGVfZHBfYXVkaW8gPSBmYWxzZTsKPiAtCWNudGwucGl4ZWxfY2xv Y2sgPSBjcnRjX3RpbWluZy0+cGl4X2Nsa19raHo7Cj4gKwljbnRsLnBpeGVsX2Nsb2NrID0gY3J0 Y190aW1pbmctPnBpeF9jbGtfMTAwaHogLyAxMDsKPiAgIAljbnRsLmxhbmVzX251bWJlciA9IExB TkVfQ09VTlRfRk9VUjsKPiAgIAo+ICAgCWlmIChlbmMxMTAtPmJhc2UuYnAtPmZ1bmNzLT5lbmNv ZGVyX2NvbnRyb2woCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9k Yy9kY2UxMTAvZGNlMTEwX2h3X3NlcXVlbmNlci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2RjL2RjZTExMC9kY2UxMTBfaHdfc2VxdWVuY2VyLmMKPiBpbmRleCBlOTQ3Y2M1Li44ZTk2 MWU2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UxMTAv ZGNlMTEwX2h3X3NlcXVlbmNlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2RjZTExMC9kY2UxMTBfaHdfc2VxdWVuY2VyLmMKPiBAQCAtMTA3NCw3ICsxMDc0LDcgQEAg dm9pZCBkY2UxMTBfdW5ibGFua19zdHJlYW0oc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCwKPiAg IAo+ICAgCS8qIG9ubHkgMyBpdGVtcyBiZWxvdyBhcmUgdXNlZCBieSB1bmJsYW5rICovCj4gICAJ cGFyYW1zLnBpeGVsX2Nsa19raHogPQo+IC0JCXBpcGVfY3R4LT5zdHJlYW0tPnRpbWluZy5waXhf Y2xrX2toejsKPiArCQlwaXBlX2N0eC0+c3RyZWFtLT50aW1pbmcucGl4X2Nsa18xMDBoeiAvIDEw Owo+ICAgCXBhcmFtcy5saW5rX3NldHRpbmdzLmxpbmtfcmF0ZSA9IGxpbmtfc2V0dGluZ3MtPmxp bmtfcmF0ZTsKPiAgIAo+ICAgCWlmIChkY19pc19kcF9zaWduYWwocGlwZV9jdHgtPnN0cmVhbS0+ c2lnbmFsKSkKPiBAQCAtMTE2MCwyNyArMTE2MCwyNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9hdWRp b19vdXRwdXQoCj4gICAJCQlzdHJlYW0tPnRpbWluZy5mbGFncy5JTlRFUkxBQ0U7Cj4gICAKPiAg IAlhdWRpb19vdXRwdXQtPmNydGNfaW5mby5yZWZyZXNoX3JhdGUgPQo+IC0JCShzdHJlYW0tPnRp bWluZy5waXhfY2xrX2toeioxMDAwKS8KPiArCQkoc3RyZWFtLT50aW1pbmcucGl4X2Nsa18xMDBo eioxMDAwMCkvCj4gICAJCShzdHJlYW0tPnRpbWluZy5oX3RvdGFsKnN0cmVhbS0+dGltaW5nLnZf dG90YWwpOwo+ICAgCj4gICAJYXVkaW9fb3V0cHV0LT5jcnRjX2luZm8uY29sb3JfZGVwdGggPQo+ ICAgCQlzdHJlYW0tPnRpbWluZy5kaXNwbGF5X2NvbG9yX2RlcHRoOwo+ICAgCj4gICAJYXVkaW9f b3V0cHV0LT5jcnRjX2luZm8ucmVxdWVzdGVkX3BpeGVsX2Nsb2NrID0KPiAtCQkJcGlwZV9jdHgt PnN0cmVhbV9yZXMucGl4X2Nsa19wYXJhbXMucmVxdWVzdGVkX3BpeF9jbGs7Cj4gKwkJCXBpcGVf Y3R4LT5zdHJlYW1fcmVzLnBpeF9jbGtfcGFyYW1zLnJlcXVlc3RlZF9waXhfY2xrXzEwMGh6IC8g MTA7Cj4gICAKPiAgIAlhdWRpb19vdXRwdXQtPmNydGNfaW5mby5jYWxjdWxhdGVkX3BpeGVsX2Ns b2NrID0KPiAtCQkJcGlwZV9jdHgtPnN0cmVhbV9yZXMucGl4X2Nsa19wYXJhbXMucmVxdWVzdGVk X3BpeF9jbGs7Cj4gKwkJCXBpcGVfY3R4LT5zdHJlYW1fcmVzLnBpeF9jbGtfcGFyYW1zLnJlcXVl c3RlZF9waXhfY2xrXzEwMGh6IC8gMTA7Cj4gICAKPiAgIC8qZm9yIEhETUksIGF1ZGlvIEFDUiBp cyB3aXRoIGRlZXAgY29sb3IgcmF0aW8gZmFjdG9yKi8KPiAgIAlpZiAoZGNfaXNfaGRtaV9zaWdu YWwocGlwZV9jdHgtPnN0cmVhbS0+c2lnbmFsKSAmJgo+ICAgCQlhdWRpb19vdXRwdXQtPmNydGNf aW5mby5yZXF1ZXN0ZWRfcGl4ZWxfY2xvY2sgPT0KPiAtCQkJCXN0cmVhbS0+dGltaW5nLnBpeF9j bGtfa2h6KSB7Cj4gKwkJCQkoc3RyZWFtLT50aW1pbmcucGl4X2Nsa18xMDBoeiAvIDEwKSkgewo+ ICAgCQlpZiAocGlwZV9jdHgtPnN0cmVhbV9yZXMucGl4X2Nsa19wYXJhbXMucGl4ZWxfZW5jb2Rp bmcgPT0gUElYRUxfRU5DT0RJTkdfWUNCQ1I0MjApIHsKPiAgIAkJCWF1ZGlvX291dHB1dC0+Y3J0 Y19pbmZvLnJlcXVlc3RlZF9waXhlbF9jbG9jayA9Cj4gICAJCQkJCWF1ZGlvX291dHB1dC0+Y3J0 Y19pbmZvLnJlcXVlc3RlZF9waXhlbF9jbG9jay8yOwo+ICAgCQkJYXVkaW9fb3V0cHV0LT5jcnRj X2luZm8uY2FsY3VsYXRlZF9waXhlbF9jbG9jayA9Cj4gLQkJCQkJcGlwZV9jdHgtPnN0cmVhbV9y ZXMucGl4X2Nsa19wYXJhbXMucmVxdWVzdGVkX3BpeF9jbGsvMjsKPiArCQkJCQlwaXBlX2N0eC0+ c3RyZWFtX3Jlcy5waXhfY2xrX3BhcmFtcy5yZXF1ZXN0ZWRfcGl4X2Nsa18xMDBoei8yMDsKPiAg IAo+ICAgCQl9Cj4gICAJfQo+IEBAIC0xNjIxLDggKzE2MjEsOCBAQCBzdGF0aWMgdWludDMyX3Qg Y29tcHV0ZV9wc3RhdGVfYmxhY2tvdXRfZHVyYXRpb24oCj4gICAJcHN0YXRlX2JsYWNrb3V0X2R1 cmF0aW9uX25zID0gMTAwMCAqIGJsYWNrb3V0X2R1cmF0aW9uLnZhbHVlID4+IDI0Owo+ICAgCj4g ICAJdG90YWxfZGVzdF9saW5lX3RpbWVfbnMgPSAxMDAwMDAwVUwgKgo+IC0JCXN0cmVhbS0+dGlt aW5nLmhfdG90YWwgLwo+IC0JCXN0cmVhbS0+dGltaW5nLnBpeF9jbGtfa2h6ICsKPiArCQkoc3Ry ZWFtLT50aW1pbmcuaF90b3RhbCAqIDEwKSAvCj4gKwkJc3RyZWFtLT50aW1pbmcucGl4X2Nsa18x MDBoeiArCj4gICAJCXBzdGF0ZV9ibGFja291dF9kdXJhdGlvbl9uczsKPiAgIAo+ICAgCXJldHVy biB0b3RhbF9kZXN0X2xpbmVfdGltZV9uczsKPiBAQCAtMjU2Nyw3ICsyNTY3LDcgQEAgc3RhdGlj IHZvaWQgZGNlMTEwX2FwcGx5X2N0eF9mb3Jfc3VyZmFjZSgKPiAgIAkJCQlwaXBlX2N0eC0+cGxh bmVfcmVzLm1pLAo+ICAgCQkJCXBpcGVfY3R4LT5zdHJlYW0tPnRpbWluZy5oX3RvdGFsLAo+ICAg CQkJCXBpcGVfY3R4LT5zdHJlYW0tPnRpbWluZy52X3RvdGFsLAo+IC0JCQkJcGlwZV9jdHgtPnN0 cmVhbS0+dGltaW5nLnBpeF9jbGtfa2h6LAo+ICsJCQkJcGlwZV9jdHgtPnN0cmVhbS0+dGltaW5n LnBpeF9jbGtfMTAwaHogLyAxMCwKPiAgIAkJCQljb250ZXh0LT5zdHJlYW1fY291bnQpOwo+ICAg Cj4gICAJCWRjZTExMF9wcm9ncmFtX2Zyb250X2VuZF9mb3JfcGlwZShkYywgcGlwZV9jdHgpOwo+ IEBAIC0yNjIyLDcgKzI2MjIsNyBAQCB2b2lkIGRjZTExMF9zZXRfY3Vyc29yX3Bvc2l0aW9uKHN0 cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpCj4gICAJc3RydWN0IGlucHV0X3BpeGVsX3Byb2Nlc3Nv ciAqaXBwID0gcGlwZV9jdHgtPnBsYW5lX3Jlcy5pcHA7Cj4gICAJc3RydWN0IG1lbV9pbnB1dCAq bWkgPSBwaXBlX2N0eC0+cGxhbmVfcmVzLm1pOwo+ICAgCXN0cnVjdCBkY19jdXJzb3JfbWlfcGFy YW0gcGFyYW0gPSB7Cj4gLQkJLnBpeGVsX2Nsa19raHogPSBwaXBlX2N0eC0+c3RyZWFtLT50aW1p bmcucGl4X2Nsa19raHosCj4gKwkJLnBpeGVsX2Nsa19raHogPSBwaXBlX2N0eC0+c3RyZWFtLT50 aW1pbmcucGl4X2Nsa18xMDBoeiAvIDEwLAo+ICAgCQkucmVmX2Nsa19raHogPSBwaXBlX2N0eC0+ c3RyZWFtLT5jdHgtPmRjLT5yZXNfcG9vbC0+cmVmX2Nsb2NrX2luS2h6LAo+ICAgCQkudmlld3Bv cnQgPSBwaXBlX2N0eC0+cGxhbmVfcmVzLnNjbF9kYXRhLnZpZXdwb3J0LAo+ICAgCQkuaF9zY2Fs ZV9yYXRpbyA9IHBpcGVfY3R4LT5wbGFuZV9yZXMuc2NsX2RhdGEucmF0aW9zLmhvcnosCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UxMTAvZGNlMTEwX3Jl c291cmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlMTEwL2RjZTExMF9y ZXNvdXJjZS5jCj4gaW5kZXggM2M5ODliOC4uM2MyN2MzMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlMTEwL2RjZTExMF9yZXNvdXJjZS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTExMC9kY2UxMTBfcmVzb3VyY2UuYwo+ IEBAIC03NzksNyArNzc5LDcgQEAgc3RhdGljIHZvaWQgZ2V0X3BpeGVsX2Nsb2NrX3BhcmFtZXRl cnMoCj4gICAJICogdGhlIHBpeGVsIGNsb2NrIG5vcm1hbGl6YXRpb24gZm9yIGhkbWkgdXAgdG8g aGVyZSBpbnN0ZWFkIG9mIGRvaW5nIGl0Cj4gICAJICogaW4gcGxsX2FkanVzdF9waXhfY2xrCj4g ICAJICovCj4gLQlwaXhlbF9jbGtfcGFyYW1zLT5yZXF1ZXN0ZWRfcGl4X2NsayA9IHN0cmVhbS0+ dGltaW5nLnBpeF9jbGtfa2h6Owo+ICsJcGl4ZWxfY2xrX3BhcmFtcy0+cmVxdWVzdGVkX3BpeF9j bGtfMTAwaHogPSBzdHJlYW0tPnRpbWluZy5waXhfY2xrXzEwMGh6Owo+ICAgCXBpeGVsX2Nsa19w YXJhbXMtPmVuY29kZXJfb2JqZWN0X2lkID0gc3RyZWFtLT5saW5rLT5saW5rX2VuYy0+aWQ7Cj4g ICAJcGl4ZWxfY2xrX3BhcmFtcy0+c2lnbmFsX3R5cGUgPSBwaXBlX2N0eC0+c3RyZWFtLT5zaWdu YWw7Cj4gICAJcGl4ZWxfY2xrX3BhcmFtcy0+Y29udHJvbGxlcl9pZCA9IHBpcGVfY3R4LT5zdHJl YW1fcmVzLnRnLT5pbnN0ICsgMTsKPiBAQCAtNzk3LDEwICs3OTcsMTAgQEAgc3RhdGljIHZvaWQg Z2V0X3BpeGVsX2Nsb2NrX3BhcmFtZXRlcnMoCj4gICAJCXBpeGVsX2Nsa19wYXJhbXMtPmNvbG9y X2RlcHRoID0gQ09MT1JfREVQVEhfODg4Owo+ICAgCX0KPiAgIAlpZiAoc3RyZWFtLT50aW1pbmcu cGl4ZWxfZW5jb2RpbmcgPT0gUElYRUxfRU5DT0RJTkdfWUNCQ1I0MjApIHsKPiAtCQlwaXhlbF9j bGtfcGFyYW1zLT5yZXF1ZXN0ZWRfcGl4X2NsayAgPSBwaXhlbF9jbGtfcGFyYW1zLT5yZXF1ZXN0 ZWRfcGl4X2NsayAvIDI7Cj4gKwkJcGl4ZWxfY2xrX3BhcmFtcy0+cmVxdWVzdGVkX3BpeF9jbGtf MTAwaHogID0gcGl4ZWxfY2xrX3BhcmFtcy0+cmVxdWVzdGVkX3BpeF9jbGtfMTAwaHogLyAyOwo+ ICAgCX0KPiAgIAlpZiAoc3RyZWFtLT50aW1pbmcudGltaW5nXzNkX2Zvcm1hdCA9PSBUSU1JTkdf M0RfRk9STUFUX0hXX0ZSQU1FX1BBQ0tJTkcpCj4gLQkJcGl4ZWxfY2xrX3BhcmFtcy0+cmVxdWVz dGVkX3BpeF9jbGsgKj0gMjsKPiArCQlwaXhlbF9jbGtfcGFyYW1zLT5yZXF1ZXN0ZWRfcGl4X2Ns a18xMDBoeiAqPSAyOwo+ICAgCj4gICB9Cj4gICAKPiBAQCAtODc0LDcgKzg3NCw3IEBAIHN0YXRp YyBib29sIGRjZTExMF92YWxpZGF0ZV9iYW5kd2lkdGgoCj4gICAJCQlfX2Z1bmNfXywKPiAgIAkJ CWNvbnRleHQtPnN0cmVhbXNbMF0tPnRpbWluZy5oX2FkZHJlc3NhYmxlLAo+ICAgCQkJY29udGV4 dC0+c3RyZWFtc1swXS0+dGltaW5nLnZfYWRkcmVzc2FibGUsCj4gLQkJCWNvbnRleHQtPnN0cmVh bXNbMF0tPnRpbWluZy5waXhfY2xrX2toeik7Cj4gKwkJCWNvbnRleHQtPnN0cmVhbXNbMF0tPnRp bWluZy5waXhfY2xrXzEwMGh6IC8gMTApOwo+ICAgCj4gICAJaWYgKG1lbWNtcCgmZGMtPmN1cnJl bnRfc3RhdGUtPmJ3LmRjZSwKPiAgIAkJCSZjb250ZXh0LT5idy5kY2UsIHNpemVvZihjb250ZXh0 LT5idy5kY2UpKSkgewo+IEBAIC0xMDU1LDcgKzEwNTUsNyBAQCBzdGF0aWMgc3RydWN0IHBpcGVf Y3R4ICpkY2UxMTBfYWNxdWlyZV91bmRlcmxheSgKPiAgIAkJcGlwZV9jdHgtPnBsYW5lX3Jlcy5t aS0+ZnVuY3MtPmFsbG9jYXRlX21lbV9pbnB1dChwaXBlX2N0eC0+cGxhbmVfcmVzLm1pLAo+ICAg CQkJCXN0cmVhbS0+dGltaW5nLmhfdG90YWwsCj4gICAJCQkJc3RyZWFtLT50aW1pbmcudl90b3Rh bCwKPiAtCQkJCXN0cmVhbS0+dGltaW5nLnBpeF9jbGtfa2h6LAo+ICsJCQkJc3RyZWFtLT50aW1p bmcucGl4X2Nsa18xMDBoeiAvIDEwLAo+ICAgCQkJCWNvbnRleHQtPnN0cmVhbV9jb3VudCk7Cj4g ICAKPiAgIAkJY29sb3Jfc3BhY2VfdG9fYmxhY2tfY29sb3IoZGMsCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2U4MC9kY2U4MF90aW1pbmdfZ2VuZXJhdG9y LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlODAvZGNlODBfdGltaW5nX2dl bmVyYXRvci5jCj4gaW5kZXggM2JhNDcxMi4uNWM2MjlhZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlODAvZGNlODBfdGltaW5nX2dlbmVyYXRvci5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTgwL2RjZTgwX3RpbWluZ19n ZW5lcmF0b3IuYwo+IEBAIC04NCwxNyArODQsMTcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkY2Ux MTBfdGltaW5nX2dlbmVyYXRvcl9vZmZzZXRzIHJlZ19vZmZzZXRzW10gPSB7Cj4gICAjZGVmaW5l IERDUF9SRUcocmVnKSAocmVnICsgdGcxMTAtPm9mZnNldHMuZGNwKQo+ICAgI2RlZmluZSBETUlG X1JFRyhyZWcpIChyZWcgKyB0ZzExMC0+b2Zmc2V0cy5kbWlmKQo+ICAgCj4gLXN0YXRpYyB2b2lk IHByb2dyYW1fcGl4X2R1cihzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcsIHVpbnQzMl90IHBp eF9jbGtfa2h6KQo+ICtzdGF0aWMgdm9pZCBwcm9ncmFtX3BpeF9kdXIoc3RydWN0IHRpbWluZ19n ZW5lcmF0b3IgKnRnLCB1aW50MzJfdCBwaXhfY2xrXzEwMGh6KQo+ICAgewo+ICAgCXVpbnQ2NF90 IHBpeF9kdXI7Cj4gICAJdWludDMyX3QgYWRkciA9IG1tRE1JRl9QRzBfRFBHX1BJUEVfQVJCSVRS QVRJT05fQ09OVFJPTDEKPiAgIAkJCQkJKyBEQ0UxMTBUR19GUk9NX1RHKHRnKS0+b2Zmc2V0cy5k bWlmOwo+ICAgCXVpbnQzMl90IHZhbHVlID0gZG1fcmVhZF9yZWcodGctPmN0eCwgYWRkcik7Cj4g ICAKPiAtCWlmIChwaXhfY2xrX2toeiA9PSAwKQo+ICsJaWYgKHBpeF9jbGtfMTAwaHogPT0gMCkK PiAgIAkJcmV0dXJuOwo+ICAgCj4gLQlwaXhfZHVyID0gMTAwMDAwMDAwMCAvIHBpeF9jbGtfa2h6 Owo+ICsJcGl4X2R1ciA9IDEwMDAwMDAwMDAwdWxsIC8gcGl4X2Nsa18xMDBoejsKPiAgIAo+ICAg CXNldF9yZWdfZmllbGRfdmFsdWUoCj4gICAJCXZhbHVlLAo+IEBAIC0xMTAsNyArMTEwLDcgQEAg c3RhdGljIHZvaWQgcHJvZ3JhbV90aW1pbmcoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLAo+ ICAgCWJvb2wgdXNlX3ZiaW9zKQo+ICAgewo+ICAgCWlmICghdXNlX3ZiaW9zKQo+IC0JCXByb2dy YW1fcGl4X2R1cih0ZywgdGltaW5nLT5waXhfY2xrX2toeik7Cj4gKwkJcHJvZ3JhbV9waXhfZHVy KHRnLCB0aW1pbmctPnBpeF9jbGtfMTAwaHopOwo+ICAgCj4gICAJZGNlMTEwX3RnX3Byb2dyYW1f dGltaW5nKHRnLCB0aW1pbmcsIHVzZV92Ymlvcyk7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24xMC9kY24xMF9od19zZXF1ZW5jZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24xMC9kY24xMF9od19zZXF1ZW5jZXIuYwo+ IGluZGV4IDYxMzI5M2QuLjA1YzYxNTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2RjL2RjbjEwL2RjbjEwX2h3X3NlcXVlbmNlci5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL2RjbjEwX2h3X3NlcXVlbmNlci5jCj4gQEAgLTI2 NTUsNyArMjY1NSw3IEBAIHN0YXRpYyB2b2lkIGRjbjEwX3NldF9jdXJzb3JfcG9zaXRpb24oc3Ry dWN0IHBpcGVfY3R4ICpwaXBlX2N0eCkKPiAgIAlzdHJ1Y3QgaHVicCAqaHVicCA9IHBpcGVfY3R4 LT5wbGFuZV9yZXMuaHVicDsKPiAgIAlzdHJ1Y3QgZHBwICpkcHAgPSBwaXBlX2N0eC0+cGxhbmVf cmVzLmRwcDsKPiAgIAlzdHJ1Y3QgZGNfY3Vyc29yX21pX3BhcmFtIHBhcmFtID0gewo+IC0JCS5w aXhlbF9jbGtfa2h6ID0gcGlwZV9jdHgtPnN0cmVhbS0+dGltaW5nLnBpeF9jbGtfa2h6LAo+ICsJ CS5waXhlbF9jbGtfa2h6ID0gcGlwZV9jdHgtPnN0cmVhbS0+dGltaW5nLnBpeF9jbGtfMTAwaHog LyAxMCwKPiAgIAkJLnJlZl9jbGtfa2h6ID0gcGlwZV9jdHgtPnN0cmVhbS0+Y3R4LT5kYy0+cmVz X3Bvb2wtPnJlZl9jbG9ja19pbktoeiwKPiAgIAkJLnZpZXdwb3J0ID0gcGlwZV9jdHgtPnBsYW5l X3Jlcy5zY2xfZGF0YS52aWV3cG9ydCwKPiAgIAkJLmhfc2NhbGVfcmF0aW8gPSBwaXBlX2N0eC0+ cGxhbmVfcmVzLnNjbF9kYXRhLnJhdGlvcy5ob3J6LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfaHdfc2VxdWVuY2VyX2RlYnVnLmMgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfaHdfc2VxdWVuY2VyX2Rl YnVnLmMKPiBpbmRleCBhZTRmZDVlLi4xOWQxNWVjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9kY24xMC9kY24xMF9od19zZXF1ZW5jZXJfZGVidWcuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24xMC9kY24xMF9od19zZXF1ZW5j ZXJfZGVidWcuYwo+IEBAIC00MjksNyArNDI5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBkY24x MF9nZXRfb3RnX3N0YXRlcyhzdHJ1Y3QgZGMgKmRjLCBjaGFyICpwQnVmLCB1bnNpZ25lZCBpbnQK PiAgIAkJaW50IHBpeF9jbGsgPSAwOwo+ICAgCj4gICAJCW9wdGMxX3JlYWRfb3RnX3N0YXRlKERD TjEwVEdfRlJPTV9URyh0ZyksICZzKTsKPiAtCQlwaXhfY2xrID0gZGMtPmN1cnJlbnRfc3RhdGUt PnJlc19jdHgucGlwZV9jdHhbaV0uc3RyZWFtX3Jlcy5waXhfY2xrX3BhcmFtcy5yZXF1ZXN0ZWRf cGl4X2NsazsKPiArCQlwaXhfY2xrID0gZGMtPmN1cnJlbnRfc3RhdGUtPnJlc19jdHgucGlwZV9j dHhbaV0uc3RyZWFtX3Jlcy5waXhfY2xrX3BhcmFtcy5yZXF1ZXN0ZWRfcGl4X2Nsa18xMDBoeiAv IDEwOwo+ICAgCj4gICAJCS8vb25seSBwcmludCBpZiBPVEcgbWFzdGVyIGlzIGVuYWJsZWQKPiAg IAkJaWYgKHMub3RnX2VuYWJsZWQgJiAxKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9kYy9kY24xMC9kY24xMF9saW5rX2VuY29kZXIuYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9kY24xMC9kY24xMF9saW5rX2VuY29kZXIuYwo+IGluZGV4IGFl ZmU4OTcuLmFmMGJjZmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2RjbjEwL2RjbjEwX2xpbmtfZW5jb2Rlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2RjL2RjbjEwL2RjbjEwX2xpbmtfZW5jb2Rlci5jCj4gQEAgLTU0MywxMiArNTQz LDEyIEBAIGJvb2wgZGNuMTBfbGlua19lbmNvZGVyX3ZhbGlkYXRlX2R2aV9vdXRwdXQoCj4gICAJ aWYgKChjb25uZWN0b3Jfc2lnbmFsID09IFNJR05BTF9UWVBFX0RWSV9TSU5HTEVfTElOSyB8fAo+ ICAgCQljb25uZWN0b3Jfc2lnbmFsID09IFNJR05BTF9UWVBFX0hETUlfVFlQRV9BKSAmJgo+ICAg CQlzaWduYWwgIT0gU0lHTkFMX1RZUEVfSERNSV9UWVBFX0EgJiYKPiAtCQljcnRjX3RpbWluZy0+ cGl4X2Nsa19raHogPiBUTURTX01BWF9QSVhFTF9DTE9DSykKPiArCQljcnRjX3RpbWluZy0+cGl4 X2Nsa18xMDBoeiA+IChUTURTX01BWF9QSVhFTF9DTE9DSyAqIDEwKSkKPiAgIAkJcmV0dXJuIGZh bHNlOwo+IC0JaWYgKGNydGNfdGltaW5nLT5waXhfY2xrX2toeiA8IFRNRFNfTUlOX1BJWEVMX0NM T0NLKQo+ICsJaWYgKGNydGNfdGltaW5nLT5waXhfY2xrXzEwMGh6IDwgKFRNRFNfTUlOX1BJWEVM X0NMT0NLICogMTApKQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gICAKPiAtCWlmIChjcnRjX3RpbWlu Zy0+cGl4X2Nsa19raHogPiBtYXhfcGl4ZWxfY2xvY2spCj4gKwlpZiAoY3J0Y190aW1pbmctPnBp eF9jbGtfMTAwaHogPiAobWF4X3BpeGVsX2Nsb2NrICogMTApKQo+ICAgCQlyZXR1cm4gZmFsc2U7 Cj4gICAKPiAgIAkvKiBEVkkgc3VwcG9ydHMgNi84YnBwIHNpbmdsZS1saW5rIGFuZCAxMC8xNmJw cCBkdWFsLWxpbmsgKi8KPiBAQCAtNTcxLDcgKzU3MSw3IEBAIGJvb2wgZGNuMTBfbGlua19lbmNv ZGVyX3ZhbGlkYXRlX2R2aV9vdXRwdXQoCj4gICBzdGF0aWMgYm9vbCBkY24xMF9saW5rX2VuY29k ZXJfdmFsaWRhdGVfaGRtaV9vdXRwdXQoCj4gICAJY29uc3Qgc3RydWN0IGRjbjEwX2xpbmtfZW5j b2RlciAqZW5jMTAsCj4gICAJY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5nICpjcnRjX3RpbWlu ZywKPiAtCWludCBhZGp1c3RlZF9waXhfY2xrX2toeikKPiArCWludCBhZGp1c3RlZF9waXhfY2xr XzEwMGh6KQo+ICAgewo+ICAgCWVudW0gZGNfY29sb3JfZGVwdGggbWF4X2RlZXBfY29sb3IgPQo+ ICAgCQkJZW5jMTAtPmJhc2UuZmVhdHVyZXMubWF4X2hkbWlfZGVlcF9jb2xvcjsKPiBAQCAtNTgx LDExICs1ODEsMTEgQEAgc3RhdGljIGJvb2wgZGNuMTBfbGlua19lbmNvZGVyX3ZhbGlkYXRlX2hk bWlfb3V0cHV0KAo+ICAgCj4gICAJaWYgKGNydGNfdGltaW5nLT5kaXNwbGF5X2NvbG9yX2RlcHRo IDwgQ09MT1JfREVQVEhfODg4KQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gLQlpZiAoYWRqdXN0ZWRf cGl4X2Nsa19raHogPCBUTURTX01JTl9QSVhFTF9DTE9DSykKPiArCWlmIChhZGp1c3RlZF9waXhf Y2xrXzEwMGh6IDwgKFRNRFNfTUlOX1BJWEVMX0NMT0NLICogMTApKQo+ICAgCQlyZXR1cm4gZmFs c2U7Cj4gICAKPiAtCWlmICgoYWRqdXN0ZWRfcGl4X2Nsa19raHogPT0gMCkgfHwKPiAtCQkoYWRq dXN0ZWRfcGl4X2Nsa19raHogPiBlbmMxMC0+YmFzZS5mZWF0dXJlcy5tYXhfaGRtaV9waXhlbF9j bG9jaykpCj4gKwlpZiAoKGFkanVzdGVkX3BpeF9jbGtfMTAwaHogPT0gMCkgfHwKPiArCQkoYWRq dXN0ZWRfcGl4X2Nsa18xMDBoeiA+IChlbmMxMC0+YmFzZS5mZWF0dXJlcy5tYXhfaGRtaV9waXhl bF9jbG9jayAqIDEwKSkpCj4gICAJCXJldHVybiBmYWxzZTsKPiAgIAo+ICAgCS8qIERDRTExIEhX IGRvZXMgbm90IHN1cHBvcnQgNDIwICovCj4gQEAgLTU5NCw3ICs1OTQsNyBAQCBzdGF0aWMgYm9v bCBkY24xMF9saW5rX2VuY29kZXJfdmFsaWRhdGVfaGRtaV9vdXRwdXQoCj4gICAJCXJldHVybiBm YWxzZTsKPiAgIAo+ICAgCWlmICghZW5jMTAtPmJhc2UuZmVhdHVyZXMuZmxhZ3MuYml0cy5IRE1J XzZHQl9FTiAmJgo+IC0JCWFkanVzdGVkX3BpeF9jbGtfa2h6ID49IDMwMDAwMCkKPiArCQlhZGp1 c3RlZF9waXhfY2xrXzEwMGh6ID49IDMwMDAwMDApCj4gICAJCXJldHVybiBmYWxzZTsKPiAgIAlp ZiAoZW5jMTAtPmJhc2UuY3R4LT5kYy0+ZGVidWcuaGRtaTIwX2Rpc2FibGUgJiYKPiAgIAkJY3J0 Y190aW1pbmctPnBpeGVsX2VuY29kaW5nID09IFBJWEVMX0VOQ09ESU5HX1lDQkNSNDIwKQo+IEBA IC03NDYsNyArNzQ2LDcgQEAgYm9vbCBkY24xMF9saW5rX2VuY29kZXJfdmFsaWRhdGVfb3V0cHV0 X3dpdGhfc3RyZWFtKAo+ICAgCQlpc192YWxpZCA9IGRjbjEwX2xpbmtfZW5jb2Rlcl92YWxpZGF0 ZV9oZG1pX291dHB1dCgKPiAgIAkJCQllbmMxMCwKPiAgIAkJCQkmc3RyZWFtLT50aW1pbmcsCj4g LQkJCQlzdHJlYW0tPnBoeV9waXhfY2xrKTsKPiArCQkJCXN0cmVhbS0+cGh5X3BpeF9jbGsgKiAx MCk7Cj4gICAJYnJlYWs7Cj4gICAJY2FzZSBTSUdOQUxfVFlQRV9ESVNQTEFZX1BPUlQ6Cj4gICAJ Y2FzZSBTSUdOQUxfVFlQRV9ESVNQTEFZX1BPUlRfTVNUOgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfb3B0Yy5jIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL2RjbjEwX29wdGMuYwo+IGluZGV4IDU3ZDAwZDYuLmVi MDE5ZDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEw L2RjbjEwX29wdGMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24x MC9kY24xMF9vcHRjLmMKPiBAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgb3B0YzFfcHJvZ3JhbV92 bGluZV9pbnRlcnJ1cHQoCj4gICAJc3RydWN0IG9wdGMgKm9wdGMxID0gRENOMTBUR19GUk9NX1RH KG9wdGMpOwo+ICAgCj4gICAJdW5zaWduZWQgbG9uZyBsb25nIHJlcV9kZWx0YV90ZW5zX29mX3Vz ZWMgPSBkaXY2NF91NjQoKHZzeW5jX2RlbHRhICsgOTk5OSksIDEwMDAwKTsKPiAtCXVuc2lnbmVk IGxvbmcgbG9uZyBwaXhfY2xrX2h1bmRyZWRzX2toeiA9IGRpdjY0X3U2NCgoZGNfY3J0Y190aW1p bmctPnBpeF9jbGtfa2h6ICsgOTkpLCAxMDApOwo+ICsJdW5zaWduZWQgbG9uZyBsb25nIHBpeF9j bGtfaHVuZHJlZHNfa2h6ID0gZGl2NjRfdTY0KChkY19jcnRjX3RpbWluZy0+cGl4X2Nsa18xMDBo eiArIDk5OSksIDEwMDApOwo+ICAgCXVpbnQzMl90IHJlcV9kZWx0YV9saW5lcyA9ICh1aW50MzJf dCkgZGl2NjRfdTY0KAo+ICAgCQkJKHJlcV9kZWx0YV90ZW5zX29mX3VzZWMgKiBwaXhfY2xrX2h1 bmRyZWRzX2toeiArIGRjX2NydGNfdGltaW5nLT5oX3RvdGFsIC0gMSksCj4gICAJCQkJCQkJCWRj X2NydGNfdGltaW5nLT5oX3RvdGFsKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2RjL2RjbjEwL2RjbjEwX3Jlc291cmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfcmVzb3VyY2UuYwo+IGluZGV4IDgzNDQ3Y2QuLmFkZDg0 ZjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL2Rj bjEwX3Jlc291cmNlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNu MTAvZGNuMTBfcmVzb3VyY2UuYwo+IEBAIC05NzQsNyArOTc0LDcgQEAgc3RhdGljIHZvaWQgZ2V0 X3BpeGVsX2Nsb2NrX3BhcmFtZXRlcnMoCj4gICAJc3RydWN0IHBpeGVsX2Nsa19wYXJhbXMgKnBp eGVsX2Nsa19wYXJhbXMpCj4gICB7Cj4gICAJY29uc3Qgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAq c3RyZWFtID0gcGlwZV9jdHgtPnN0cmVhbTsKPiAtCXBpeGVsX2Nsa19wYXJhbXMtPnJlcXVlc3Rl ZF9waXhfY2xrID0gc3RyZWFtLT50aW1pbmcucGl4X2Nsa19raHo7Cj4gKwlwaXhlbF9jbGtfcGFy YW1zLT5yZXF1ZXN0ZWRfcGl4X2Nsa18xMDBoeiA9IHN0cmVhbS0+dGltaW5nLnBpeF9jbGtfMTAw aHo7Cj4gICAJcGl4ZWxfY2xrX3BhcmFtcy0+ZW5jb2Rlcl9vYmplY3RfaWQgPSBzdHJlYW0tPmxp bmstPmxpbmtfZW5jLT5pZDsKPiAgIAlwaXhlbF9jbGtfcGFyYW1zLT5zaWduYWxfdHlwZSA9IHBp cGVfY3R4LT5zdHJlYW0tPnNpZ25hbDsKPiAgIAlwaXhlbF9jbGtfcGFyYW1zLT5jb250cm9sbGVy X2lkID0gcGlwZV9jdHgtPnN0cmVhbV9yZXMudGctPmluc3QgKyAxOwo+IEBAIC05OTEsOSArOTkx LDkgQEAgc3RhdGljIHZvaWQgZ2V0X3BpeGVsX2Nsb2NrX3BhcmFtZXRlcnMoCj4gICAJCXBpeGVs X2Nsa19wYXJhbXMtPmNvbG9yX2RlcHRoID0gQ09MT1JfREVQVEhfODg4Owo+ICAgCj4gICAJaWYg KHN0cmVhbS0+dGltaW5nLnBpeGVsX2VuY29kaW5nID09IFBJWEVMX0VOQ09ESU5HX1lDQkNSNDIw KQo+IC0JCXBpeGVsX2Nsa19wYXJhbXMtPnJlcXVlc3RlZF9waXhfY2xrICAvPSAyOwo+ICsJCXBp eGVsX2Nsa19wYXJhbXMtPnJlcXVlc3RlZF9waXhfY2xrXzEwMGh6ICAvPSAyOwo+ICAgCWlmIChz dHJlYW0tPnRpbWluZy50aW1pbmdfM2RfZm9ybWF0ID09IFRJTUlOR18zRF9GT1JNQVRfSFdfRlJB TUVfUEFDS0lORykKPiAtCQlwaXhlbF9jbGtfcGFyYW1zLT5yZXF1ZXN0ZWRfcGl4X2NsayAqPSAy Owo+ICsJCXBpeGVsX2Nsa19wYXJhbXMtPnJlcXVlc3RlZF9waXhfY2xrXzEwMGh6ICo9IDI7Cj4g ICAKPiAgIH0KPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv ZGMvZGNuMTAvZGNuMTBfc3RyZWFtX2VuY29kZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9kY24xMC9kY24xMF9zdHJlYW1fZW5jb2Rlci5jCj4gaW5kZXggYjhiNTUyNS4uMGIw ZTA2ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAv ZGNuMTBfc3RyZWFtX2VuY29kZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9kYy9kY24xMC9kY24xMF9zdHJlYW1fZW5jb2Rlci5jCj4gQEAgLTU5NCw3ICs1OTQsNyBAQCB2 b2lkIGVuYzFfc3RyZWFtX2VuY29kZXJfZHZpX3NldF9zdHJlYW1fYXR0cmlidXRlKAo+ICAgCWNu dGwuc2lnbmFsID0gaXNfZHVhbF9saW5rID8KPiAgIAkJCVNJR05BTF9UWVBFX0RWSV9EVUFMX0xJ TksgOiBTSUdOQUxfVFlQRV9EVklfU0lOR0xFX0xJTks7Cj4gICAJY250bC5lbmFibGVfZHBfYXVk aW8gPSBmYWxzZTsKPiAtCWNudGwucGl4ZWxfY2xvY2sgPSBjcnRjX3RpbWluZy0+cGl4X2Nsa19r aHo7Cj4gKwljbnRsLnBpeGVsX2Nsb2NrID0gY3J0Y190aW1pbmctPnBpeF9jbGtfMTAwaHogLyAx MDsKPiAgIAljbnRsLmxhbmVzX251bWJlciA9IChpc19kdWFsX2xpbmspID8gTEFORV9DT1VOVF9F SUdIVCA6IExBTkVfQ09VTlRfRk9VUjsKPiAgIAo+ICAgCWlmIChlbmMxLT5iYXNlLmJwLT5mdW5j cy0+ZW5jb2Rlcl9jb250cm9sKAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvZGMvaW5jL2Nsb2NrX3NvdXJjZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2luYy9jbG9ja19zb3VyY2UuaAo+IGluZGV4IDQ3ZWY5MDQuLjQzZDFmYmQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2luYy9jbG9ja19zb3VyY2UuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pbmMvY2xvY2tfc291cmNlLmgK PiBAQCAtNzgsNyArNzgsNyBAQCBzdHJ1Y3QgY3NkcF9yZWZfY2xrX2RzX3BhcmFtcyB7Cj4gICB9 Owo+ICAgCj4gICBzdHJ1Y3QgcGl4ZWxfY2xrX3BhcmFtcyB7Cj4gLQl1aW50MzJfdCByZXF1ZXN0 ZWRfcGl4X2NsazsgLyogaW4gS0h6ICovCj4gKwl1aW50MzJfdCByZXF1ZXN0ZWRfcGl4X2Nsa18x MDBoejsKPiAgIC8qPiBSZXF1ZXN0ZWQgUGl4ZWwgQ2xvY2sKPiAgICAqIChiYXNlZCBvbiBWaWRl byBUaW1pbmcgc3RhbmRhcmQgdXNlZCBmb3IgcmVxdWVzdGVkIG1vZGUpKi8KPiAgIAl1aW50MzJf dCByZXF1ZXN0ZWRfc3ltX2NsazsgLyogaW4gS0h6ICovCj4gQEAgLTEwNCw5ICsxMDQsOSBAQCBz dHJ1Y3QgcGl4ZWxfY2xrX3BhcmFtcyB7Cj4gICAgKiAgd2l0aCBhY3R1YWxseSBjYWxjdWxhdGVk IENsb2NrIGFuZCByZWZlcmVuY2UgQ3J5c3RhbCBmcmVxdWVuY3kKPiAgICAqLwo+ICAgc3RydWN0 IHBsbF9zZXR0aW5ncyB7Cj4gLQl1aW50MzJfdCBhY3R1YWxfcGl4X2NsazsKPiAtCXVpbnQzMl90 IGFkanVzdGVkX3BpeF9jbGs7Cj4gLQl1aW50MzJfdCBjYWxjdWxhdGVkX3BpeF9jbGs7Cj4gKwl1 aW50MzJfdCBhY3R1YWxfcGl4X2Nsa18xMDBoejsKPiArCXVpbnQzMl90IGFkanVzdGVkX3BpeF9j bGtfMTAwaHo7Cj4gKwl1aW50MzJfdCBjYWxjdWxhdGVkX3BpeF9jbGtfMTAwaHo7Cj4gICAJdWlu dDMyX3QgdmNvX2ZyZXE7Cj4gICAJdWludDMyX3QgcmVmZXJlbmNlX2ZyZXE7Cj4gICAJdWludDMy X3QgcmVmZXJlbmNlX2RpdmlkZXI7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9pbmNsdWRlL2Jpb3NfcGFyc2VyX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvaW5jbHVkZS9iaW9zX3BhcnNlcl90eXBlcy5oCj4gaW5kZXggZjhkYmZhNS4uYjE0 YjNjMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvaW5jbHVkZS9i aW9zX3BhcnNlcl90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2lu Y2x1ZGUvYmlvc19wYXJzZXJfdHlwZXMuaAo+IEBAIC0yMTAsOCArMjEwLDggQEAgc3RydWN0IGJw X3BpeGVsX2Nsb2NrX3BhcmFtZXRlcnMgewo+ICAgCS8qIHNpZ25hbF90eXBlIC0+IEVuY29kZXIg TW9kZSAtIG5lZWRlZCBieSBWQklPUyBFeGVjIHRhYmxlICovCj4gICAJZW51bSBzaWduYWxfdHlw ZSBzaWduYWxfdHlwZTsKPiAgIAkvKiBBZGp1c3RlZCBQaXhlbCBDbG9jayAoYWZ0ZXIgVkJJT1Mg ZXhlYyB0YWJsZSkKPiAtCSAqIHRoYXQgYmVjb21lcyBUYXJnZXQgUGl4ZWwgQ2xvY2sgKEtIeikg Ki8KPiAtCXVpbnQzMl90IHRhcmdldF9waXhlbF9jbG9jazsKPiArCSAqIHRoYXQgYmVjb21lcyBU YXJnZXQgUGl4ZWwgQ2xvY2sgKDEwMCBIeiB1bml0cykgKi8KPiArCXVpbnQzMl90IHRhcmdldF9w aXhlbF9jbG9ja18xMDBoejsKPiAgIAkvKiBDYWxjdWxhdGVkIFJlZmVyZW5jZSBkaXZpZGVyIG9m IERpc3BsYXkgUExMICovCj4gICAJdWludDMyX3QgcmVmZXJlbmNlX2RpdmlkZXI7Cj4gICAJLyog Q2FsY3VsYXRlZCBGZWVkYmFjayBkaXZpZGVyIG9mIERpc3BsYXkgUExMICovCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9tb2R1bGVzL2ZyZWVzeW5jL2ZyZWVzeW5j LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9mcmVlc3luYy9mcmVlc3lu Yy5jCj4gaW5kZXggMTU0NGVkMy4uZDk2N2FjMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9mcmVlc3luYy9mcmVlc3luYy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvZnJlZXN5bmMvZnJlZXN5bmMuYwo+IEBAIC0x MDgsOCArMTA4LDggQEAgc3RhdGljIHVuc2lnbmVkIGludCBjYWxjX2R1cmF0aW9uX2luX3VzX2Zy b21fdl90b3RhbCgKPiAgIHsKPiAgIAl1bnNpZ25lZCBpbnQgZHVyYXRpb25faW5fdXMgPQo+ICAg CQkJKHVuc2lnbmVkIGludCkoZGl2NjRfdTY0KCgodW5zaWduZWQgbG9uZyBsb25nKSh2X3RvdGFs KQo+IC0JCQkJKiAxMDAwKSAqIHN0cmVhbS0+dGltaW5nLmhfdG90YWwsCj4gLQkJCQkJc3RyZWFt LT50aW1pbmcucGl4X2Nsa19raHopKTsKPiArCQkJCSogMTAwMDApICogc3RyZWFtLT50aW1pbmcu aF90b3RhbCwKPiArCQkJCQlzdHJlYW0tPnRpbWluZy5waXhfY2xrXzEwMGh6KSk7Cj4gICAKPiAg IAlyZXR1cm4gZHVyYXRpb25faW5fdXM7Cj4gICB9Cj4gQEAgLTEyNiw3ICsxMjYsNyBAQCBzdGF0 aWMgdW5zaWduZWQgaW50IGNhbGNfdl90b3RhbF9mcm9tX3JlZnJlc2goCj4gICAJCQkJCXJlZnJl c2hfaW5fdWh6KSkpOwo+ICAgCj4gICAJdl90b3RhbCA9IGRpdjY0X3U2NChkaXY2NF91NjQoKCh1 bnNpZ25lZCBsb25nIGxvbmcpKAo+IC0JCQlmcmFtZV9kdXJhdGlvbl9pbl9ucykgKiBzdHJlYW0t PnRpbWluZy5waXhfY2xrX2toeiksCj4gKwkJCWZyYW1lX2R1cmF0aW9uX2luX25zKSAqIChzdHJl YW0tPnRpbWluZy5waXhfY2xrXzEwMGh6IC8gMTApKSwKPiAgIAkJCXN0cmVhbS0+dGltaW5nLmhf dG90YWwpLCAxMDAwMDAwKTsKPiAgIAo+ICAgCS8qIHZfdG90YWwgY2Fubm90IGJlIGxlc3MgdGhh biBub21pbmFsICovCj4gQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGNh bGNfdl90b3RhbF9mcm9tX2R1cmF0aW9uKAo+ICAgCQlkdXJhdGlvbl9pbl91cyA9IHZyci0+bWF4 X2R1cmF0aW9uX2luX3VzOwo+ICAgCj4gICAJdl90b3RhbCA9IGRpdjY0X3U2NChkaXY2NF91NjQo KCh1bnNpZ25lZCBsb25nIGxvbmcpKAo+IC0JCQkJZHVyYXRpb25faW5fdXMpICogc3RyZWFtLT50 aW1pbmcucGl4X2Nsa19raHopLAo+ICsJCQkJZHVyYXRpb25faW5fdXMpICogKHN0cmVhbS0+dGlt aW5nLnBpeF9jbGtfMTAwaHogLyAxMCkpLAo+ICAgCQkJCXN0cmVhbS0+dGltaW5nLmhfdG90YWwp LCAxMDAwKTsKPiAgIAo+ICAgCS8qIHZfdG90YWwgY2Fubm90IGJlIGxlc3MgdGhhbiBub21pbmFs ICovCj4gQEAgLTIyNyw3ICsyMjcsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfdl90b3RhbF9mb3Jf c3RhdGljX3JhbXAoCj4gICAJfQo+ICAgCj4gICAJdl90b3RhbCA9IGRpdjY0X3U2NChkaXY2NF91 NjQoKCh1bnNpZ25lZCBsb25nIGxvbmcpKAo+IC0JCQljdXJyZW50X2R1cmF0aW9uX2luX3VzKSAq IHN0cmVhbS0+dGltaW5nLnBpeF9jbGtfa2h6KSwKPiArCQkJY3VycmVudF9kdXJhdGlvbl9pbl91 cykgKiAoc3RyZWFtLT50aW1pbmcucGl4X2Nsa18xMDBoeiAvIDEwKSksCj4gICAJCQkJc3RyZWFt LT50aW1pbmcuaF90b3RhbCksIDEwMDApOwo+ICAgCj4gICAJaW5fb3V0X3Zyci0+YWRqdXN0LnZf dG90YWxfbWluID0gdl90b3RhbDsKPiBAQCAtOTcyLDcgKzk3Miw3IEBAIHVuc2lnbmVkIGxvbmcg bG9uZyBtb2RfZnJlZXN5bmNfY2FsY19ub21pbmFsX2ZpZWxkX3JhdGUoCj4gICAJdW5zaWduZWQg bG9uZyBsb25nIG5vbWluYWxfZmllbGRfcmF0ZV9pbl91aHogPSAwOwo+ICAgCj4gICAJLyogQ2Fs Y3VsYXRlIG5vbWluYWwgZmllbGQgcmF0ZSBmb3Igc3RyZWFtICovCj4gLQlub21pbmFsX2ZpZWxk X3JhdGVfaW5fdWh6ID0gc3RyZWFtLT50aW1pbmcucGl4X2Nsa19raHo7Cj4gKwlub21pbmFsX2Zp ZWxkX3JhdGVfaW5fdWh6ID0gc3RyZWFtLT50aW1pbmcucGl4X2Nsa18xMDBoeiAvIDEwOwo+ICAg CW5vbWluYWxfZmllbGRfcmF0ZV9pbl91aHogKj0gMTAwMFVMTCAqIDEwMDBVTEwgKiAxMDAwVUxM Owo+ICAgCW5vbWluYWxfZmllbGRfcmF0ZV9pbl91aHogPSBkaXZfdTY0KG5vbWluYWxfZmllbGRf cmF0ZV9pbl91aHosCj4gICAJCQkJCQlzdHJlYW0tPnRpbWluZy5oX3RvdGFsKTsKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBs aXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=