From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [DPU PATCH 2/6] drm/msm: remove support for ping pong split topology Date: Tue, 17 Apr 2018 16:52:43 -0400 Message-ID: <20180417205243.GQ73214@art_vandelay> References: <1523902941-2253-1-git-send-email-jsanka@codeaurora.org> <1523902941-2253-3-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1523902941-2253-3-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Jeykumar Sankaran Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gTW9uLCBBcHIgMTYsIDIwMTggYXQgMTE6MjI6MTdBTSAtMDcwMCwgSmV5a3VtYXIgU2Fua2Fy YW4gd3JvdGU6Cj4gUGluZyBwb25nIHNwbGl0IHRvcG9sb2d5IHdhcyBtZWFudCBmb3IgbG93IGVu ZCBzb2MncyB3aGljaAo+IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggbGF5ZXIgbWl4ZXJzIHRvIHN1cHBv cnQgc3BsaXQgcGFuZWxzLgo+IENvbnNpZGVyaW5nIGhvdyB1bmNvbW1vbiB0aGUgdG9wb2xvZ3kg aXMgZm9yIGN1cnJlbnQgY2hpcHNldCdzIGFuZAo+IGFsc28gdG8gc2ltcGx5IHRoZSBkcml2ZXIg cHJvZ3JhbW1pbmcsIHN0cmlwaW5nIG9mZiB0aGUgc3VwcG9ydAo+IGZvciBTRE04NDUuCj4gCj4g U2lnbmVkLW9mZi1ieTogSmV5a3VtYXIgU2Fua2FyYW4gPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4K ClJldmlld2VkLWJ5OiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KCj4gLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuYyAgICAgIHwgICAy ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMgICAgICAgICAg IHwgIDE5IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5j ICAgICAgICB8IDE3OSArLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oICAgfCAgIDUgLQo+ICAuLi4vZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMgICB8IDExMCArLS0tLS0tLS0tLS0t Cj4gIC4uLi9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYyAgIHwg IDIxICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5j ICAgICB8ICAgNSArLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0 YWxvZy5oICAgICB8ICAgMiAtCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9o d190b3AuYyAgICAgICAgIHwgIDMzIC0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2h3X3RvcC5oICAgICAgICAgfCAgMTEgLS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2h3aW8uaCAgICAgICAgICAgfCAgIDQgLQo+ICBkcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfcm0uYyAgICAgICAgICAgICB8ICAzNyArLS0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uaCAgICAgICAgICAgICB8ICAgMiAtCj4gIDEz IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDQxNSBkZWxldGlvbnMoLSkKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5j IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5jCj4gaW5kZXgg MTIzN2VmYy4uZjdlOWY3NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfY29ubmVjdG9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfY29ubmVjdG9yLmMKPiBAQCAtNDEsOCArNDEsOCBAQAo+ICAJe0RQVV9STV9UT1BPTE9H WV9TSU5HTEVQSVBFLAkiZHB1X3NpbmdsZXBpcGUifSwKPiAgCXtEUFVfUk1fVE9QT0xPR1lfRFVB TFBJUEUsCSJkcHVfZHVhbHBpcGUifSwKPiAgCXtEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RN RVJHRSwJImRwdV9kdWFscGlwZW1lcmdlIn0sCj4gLQl7RFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQs CSJkcHVfcHBzcGxpdCJ9LAo+ICB9Owo+ICsKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcHJv cF9lbnVtX2xpc3QgZV90b3BvbG9neV9jb250cm9sW10gPSB7Cj4gIAl7RFBVX1JNX1RPUENUTF9S RVNFUlZFX0xPQ0ssCSJyZXNlcnZlX2xvY2sifSwKPiAgCXtEUFVfUk1fVE9QQ1RMX1JFU0VSVkVf Q0xFQVIsCSJyZXNlcnZlX2NsZWFyIn0sCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfY3J0Yy5jCj4gaW5kZXggNTE2NDU4ZS4uOGU0NjRmYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwo+IEBAIC0xOTE0LDIzICsxOTE0LDYgQEAgc3RhdGlj IHZvaWQgX2RwdV9jcnRjX3NldHVwX21peGVycyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlt dXRleF91bmxvY2soJmRwdV9jcnRjLT5jcnRjX2xvY2spOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9p ZCBfZHB1X2NydGNfc2V0dXBfaXNfcHBzcGxpdChzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRl KQo+IC17Cj4gLQlpbnQgaTsKPiAtCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRlOwo+IC0K PiAtCWNzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKHN0YXRlKTsKPiAtCj4gLQljc3RhdGUtPmlz X3Bwc3BsaXQgPSBmYWxzZTsKPiAtCWZvciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9jb25uZWN0 b3JzOyBpKyspIHsKPiAtCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubiA9IGNzdGF0ZS0+Y29u bmVjdG9yc1tpXTsKPiAtCj4gLQkJaWYgKGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5X25hbWUo Y29ubikgPT0KPiAtCQkJCURQVV9STV9UT1BPTE9HWV9QUFNQTElUKQo+IC0JCQljc3RhdGUtPmlz X3Bwc3BsaXQgPSB0cnVlOwo+IC0JfQo+IC19Cj4gLQo+ICBzdGF0aWMgdm9pZCBfZHB1X2NydGNf c2V0dXBfbG1fYm91bmRzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQlzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gQEAgLTE5OTMsNyArMTk3Niw2IEBAIHN0YXRpYyB2b2lk IGRwdV9jcnRjX2F0b21pY19iZWdpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICAJaWYg KCFkcHVfY3J0Yy0+bnVtX21peGVycykgewo+ICAJCV9kcHVfY3J0Y19zZXR1cF9taXhlcnMoY3J0 Yyk7Cj4gLQkJX2RwdV9jcnRjX3NldHVwX2lzX3Bwc3BsaXQoY3J0Yy0+c3RhdGUpOwo+ICAJCV9k cHVfY3J0Y19zZXR1cF9sbV9ib3VuZHMoY3J0YywgY3J0Yy0+c3RhdGUpOwo+ICAJfQo+ICAKPiBA QCAtMjkwMSw3ICsyODgzLDYgQEAgc3RhdGljIGludCBkcHVfY3J0Y19hdG9taWNfY2hlY2soc3Ry dWN0IGRybV9jcnRjICpjcnRjLAo+ICAKPiAgCW1peGVyX3dpZHRoID0gZHB1X2NydGNfZ2V0X21p eGVyX3dpZHRoKGRwdV9jcnRjLCBjc3RhdGUsIG1vZGUpOwo+ICAKPiAtCV9kcHVfY3J0Y19zZXR1 cF9pc19wcHNwbGl0KHN0YXRlKTsKPiAgCV9kcHVfY3J0Y19zZXR1cF9sbV9ib3VuZHMoY3J0Yywg c3RhdGUpOwo+ICAKPiAgCSAvKiBnZXQgcGxhbmUgc3RhdGUgZm9yIGFsbCBkcm0gcGxhbmVzIGFz c29jaWF0ZWQgd2l0aCBjcnRjIHN0YXRlICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfZW5jb2Rlci5jCj4gaW5kZXggNmYxMjM1NS4uMzIzNzViMSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYwo+IEBAIC01NDUsNyArNTQ1 LDYgQEAgdm9pZCBkcHVfZW5jb2Rlcl9oZWxwZXJfc3BsaXRfY29uZmlnKAo+ICAJc3RydWN0IGRw dV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmM7Cj4gIAlzdHJ1Y3Qgc3BsaXRfcGlwZV9jZmcgY2ZnID0g eyAwIH07Cj4gIAlzdHJ1Y3QgZHB1X2h3X21kcCAqaHdfbWRwdG9wOwo+IC0JZW51bSBkcHVfcm1f dG9wb2xvZ3lfbmFtZSB0b3BvbG9neTsKPiAgCXN0cnVjdCBtc21fZGlzcGxheV9pbmZvICpkaXNw X2luZm87Cj4gIAo+ICAJaWYgKCFwaHlzX2VuYyB8fCAhcGh5c19lbmMtPmh3X21kcHRvcCB8fCAh cGh5c19lbmMtPnBhcmVudCkgewo+IEBAIC01NjksOCArNTY4LDYgQEAgdm9pZCBkcHVfZW5jb2Rl cl9oZWxwZXJfc3BsaXRfY29uZmlnKAo+ICAJaWYgKHBoeXNfZW5jLT5zcGxpdF9yb2xlID09IEVO Q19ST0xFX1NPTE8pIHsKPiAgCQlpZiAoaHdfbWRwdG9wLT5vcHMuc2V0dXBfc3BsaXRfcGlwZSkK PiAgCQkJaHdfbWRwdG9wLT5vcHMuc2V0dXBfc3BsaXRfcGlwZShod19tZHB0b3AsICZjZmcpOwo+ IC0JCWlmIChod19tZHB0b3AtPm9wcy5zZXR1cF9wcF9zcGxpdCkKPiAtCQkJaHdfbWRwdG9wLT5v cHMuc2V0dXBfcHBfc3BsaXQoaHdfbWRwdG9wLCAmY2ZnKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4g IAo+IEBAIC01ODIsMjkgKzU3OSwxMSBAQCB2b2lkIGRwdV9lbmNvZGVyX2hlbHBlcl9zcGxpdF9j b25maWcoCj4gIAkJCXBoeXNfZW5jLT5vcHMubmVlZHNfc2luZ2xlX2ZsdXNoKHBoeXNfZW5jKSkK PiAgCQljZmcuc3BsaXRfZmx1c2hfZW4gPSB0cnVlOwo+ICAKPiAtCXRvcG9sb2d5ID0gZHB1X2Nv bm5lY3Rvcl9nZXRfdG9wb2xvZ3lfbmFtZShwaHlzX2VuYy0+Y29ubmVjdG9yKTsKPiAtCWlmICh0 b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCkKPiAtCQljZmcucHBfc3BsaXRfc2xh dmUgPSBjZmcuaW50ZjsKPiAtCWVsc2UKPiAtCQljZmcucHBfc3BsaXRfc2xhdmUgPSBJTlRGX01B WDsKPiAtCj4gIAlpZiAocGh5c19lbmMtPnNwbGl0X3JvbGUgPT0gRU5DX1JPTEVfTUFTVEVSKSB7 Cj4gIAkJRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAiZW5hYmxlICVkXG4iLCBjZmcuZW4pOwo+ICAK PiAgCQlpZiAoaHdfbWRwdG9wLT5vcHMuc2V0dXBfc3BsaXRfcGlwZSkKPiAgCQkJaHdfbWRwdG9w LT5vcHMuc2V0dXBfc3BsaXRfcGlwZShod19tZHB0b3AsICZjZmcpOwo+IC0JfSBlbHNlIGlmIChk cHVfZW5jLT5od19wcFswXSkgewo+IC0JCS8qCj4gLQkJICogc2xhdmUgZW5jb2Rlcgo+IC0JCSAq IC0gZGV0ZXJtaW5lIHNwbGl0IGluZGV4IGZyb20gbWFzdGVyIGluZGV4LAo+IC0JCSAqICAgYXNz dW1lIG1hc3RlciBpcyBmaXJzdCBwcAo+IC0JCSAqLwo+IC0JCWNmZy5wcF9zcGxpdF9pbmRleCA9 IGRwdV9lbmMtPmh3X3BwWzBdLT5pZHggLSBQSU5HUE9OR18wOwo+IC0JCURQVV9ERUJVR19FTkMo ZHB1X2VuYywgIm1hc3RlciB1c2luZyBwcCVkXG4iLAo+IC0JCQkJY2ZnLnBwX3NwbGl0X2luZGV4 KTsKPiAtCj4gLQkJaWYgKGh3X21kcHRvcC0+b3BzLnNldHVwX3BwX3NwbGl0KQo+IC0JCQlod19t ZHB0b3AtPm9wcy5zZXR1cF9wcF9zcGxpdChod19tZHB0b3AsICZjZmcpOwo+ICAJfQo+ICB9Cj4g IAo+IEBAIC0xNjY1LDE0ICsxNjQ0LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIF9kcHVfZW5jb2Rl cl90cmlnZ2VyX2ZsdXNoKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKPiAgCQlyZXR1cm47 Cj4gIAl9Cj4gIAo+IC0JaWYgKHBoeXMtPnNwbGl0X3JvbGUgPT0gRU5DX1JPTEVfU0tJUCkgewo+ IC0JCURQVV9ERUJVR19FTkModG9fZHB1X2VuY29kZXJfdmlydChwaHlzLT5wYXJlbnQpLAo+IC0J CQkJInNraXAgZmx1c2ggcHAlZCBjdGwlZFxuIiwKPiAtCQkJCXBoeXMtPmh3X3BwLT5pZHggLSBQ SU5HUE9OR18wLAo+IC0JCQkJY3RsLT5pZHggLSBDVExfMCk7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+ IC0KPiAgCXBlbmRpbmdfa2lja29mZl9jbnQgPSBkcHVfZW5jb2Rlcl9waHlzX2luY19wZW5kaW5n KHBoeXMpOwo+ICAKPiAgCWlmIChleHRyYV9mbHVzaF9iaXRzICYmIGN0bC0+b3BzLnVwZGF0ZV9w ZW5kaW5nX2ZsdXNoKQo+IEBAIC0xNjk0LDggKzE2NjUsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQg X2RwdV9lbmNvZGVyX3RyaWdnZXJfZmx1c2goc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLAo+ ICAgKi8KPiAgc3RhdGljIGlubGluZSB2b2lkIF9kcHVfZW5jb2Rlcl90cmlnZ2VyX3N0YXJ0KHN0 cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzKQo+ICB7Cj4gLQlzdHJ1Y3QgZHB1X2h3X2N0bCAq Y3RsOwo+IC0KPiAgCWlmICghcGh5cykgewo+ICAJCURQVV9FUlJPUigiaW52YWxpZCBhcmd1bWVu dChzKVxuIik7Cj4gIAkJcmV0dXJuOwo+IEBAIC0xNzA2LDE0ICsxNjc1LDYgQEAgc3RhdGljIGlu bGluZSB2b2lkIF9kcHVfZW5jb2Rlcl90cmlnZ2VyX3N0YXJ0KHN0cnVjdCBkcHVfZW5jb2Rlcl9w aHlzICpwaHlzKQo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4gLQljdGwgPSBwaHlzLT5od19jdGw7 Cj4gLQlpZiAocGh5cy0+c3BsaXRfcm9sZSA9PSBFTkNfUk9MRV9TS0lQKSB7Cj4gLQkJRFBVX0RF QlVHX0VOQyh0b19kcHVfZW5jb2Rlcl92aXJ0KHBoeXMtPnBhcmVudCksCj4gLQkJCQkic2tpcCBz dGFydCBwcCVkIGN0bCVkXG4iLAo+IC0JCQkJcGh5cy0+aHdfcHAtPmlkeCAtIFBJTkdQT05HXzAs Cj4gLQkJCQljdGwtPmlkeCAtIENUTF8wKTsKPiAtCQlyZXR1cm47Cj4gLQl9Cj4gIAlpZiAocGh5 cy0+b3BzLnRyaWdnZXJfc3RhcnQgJiYgcGh5cy0+ZW5hYmxlX3N0YXRlICE9IERQVV9FTkNfRElT QUJMRUQpCj4gIAkJcGh5cy0+b3BzLnRyaWdnZXJfc3RhcnQocGh5cyk7Cj4gIH0KPiBAQCAtMTgz Miw3ICsxNzkzLDYgQEAgc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX2tpY2tvZmZfcGh5cyhzdHJ1 Y3QgZHB1X2VuY29kZXJfdmlydCAqZHB1X2VuYykKPiAgCS8qIGRvbid0IHBlcmZvcm0gZmx1c2gv c3RhcnQgb3BlcmF0aW9ucyBmb3Igc2xhdmUgZW5jb2RlcnMgKi8KPiAgCWZvciAoaSA9IDA7IGkg PCBkcHVfZW5jLT5udW1fcGh5c19lbmNzOyBpKyspIHsKPiAgCQlzdHJ1Y3QgZHB1X2VuY29kZXJf cGh5cyAqcGh5cyA9IGRwdV9lbmMtPnBoeXNfZW5jc1tpXTsKPiAtCQllbnVtIGRwdV9ybV90b3Bv bG9neV9uYW1lIHRvcG9sb2d5ID0gRFBVX1JNX1RPUE9MT0dZX05PTkU7Cj4gIAo+ICAJCWlmICgh cGh5cyB8fCBwaHlzLT5lbmFibGVfc3RhdGUgPT0gRFBVX0VOQ19ESVNBQkxFRCkKPiAgCQkJY29u dGludWU7Cj4gQEAgLTE4NDEsMTcgKzE4MDEsNyBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJf a2lja29mZl9waHlzKHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jKQo+ICAJCWlmICgh Y3RsKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJaWYgKHBoeXMtPmNvbm5lY3RvcikKPiAtCQkJ dG9wb2xvZ3kgPSBkcHVfY29ubmVjdG9yX2dldF90b3BvbG9neV9uYW1lKAo+IC0JCQkJCXBoeXMt PmNvbm5lY3Rvcik7Cj4gLQo+IC0JCS8qCj4gLQkJICogZG9uJ3Qgd2FpdCBvbiBwcHNwbGl0IHNs YXZlcyBvciBza2lwcGVkIGVuY29kZXJzIGJlY2F1c2UKPiAtCQkgKiB0aGV5IGRvbnQgcmVjZWl2 ZSBpcnFzCj4gLQkJICovCj4gLQkJaWYgKCEodG9wb2xvZ3kgPT0gRFBVX1JNX1RPUE9MT0dZX1BQ U1BMSVQgJiYKPiAtCQkJCXBoeXMtPnNwbGl0X3JvbGUgPT0gRU5DX1JPTEVfU0xBVkUpICYmCj4g LQkJCQlwaHlzLT5zcGxpdF9yb2xlICE9IEVOQ19ST0xFX1NLSVApCj4gKwkJaWYgKHBoeXMtPnNw bGl0X3JvbGUgIT0gRU5DX1JPTEVfU0xBVkUpCj4gIAkJCXNldF9iaXQoaSwgZHB1X2VuYy0+ZnJh bWVfYnVzeV9tYXNrKTsKPiAgCQlpZiAocGh5cy0+aHdfY3RsLT5vcHMucmVnX2RtYV9mbHVzaCkK PiAgCQkJcGh5cy0+aHdfY3RsLT5vcHMucmVnX2RtYV9mbHVzaChwaHlzLT5od19jdGwpOwo+IEBA IC0xODc1LDEyNiArMTgyNSw2IEBAIHN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl9raWNrb2ZmX3Bo eXMoc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMpCj4gIAlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZkcHVfZW5jLT5lbmNfc3BpbmxvY2ssIGxvY2tfZmxhZ3MpOwo+ICB9Cj4gIAo+IC1z dGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfcHBzcGxpdF9zd2FwX2ludGZfZm9yX3JpZ2h0X29ubHlf dXBkYXRlKAo+IC0JCXN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKPiAtCQl1bnNpZ25lZCBs b25nICphZmZlY3RlZF9kaXNwbGF5cywKPiAtCQlpbnQgbnVtX2FjdGl2ZV9waHlzKQo+IC17Cj4g LQlzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydCAqZHB1X2VuYzsKPiAtCXN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzICptYXN0ZXI7Cj4gLQllbnVtIGRwdV9ybV90b3BvbG9neV9uYW1lIHRvcG9sb2d5Owo+ IC0JYm9vbCBpc19yaWdodF9vbmx5Owo+IC0KPiAtCWlmICghZHJtX2VuYyB8fCAhYWZmZWN0ZWRf ZGlzcGxheXMpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWRwdV9lbmMgPSB0b19kcHVfZW5jb2Rlcl92 aXJ0KGRybV9lbmMpOwo+IC0JbWFzdGVyID0gZHB1X2VuYy0+Y3VyX21hc3RlcjsKPiAtCWlmICgh bWFzdGVyIHx8ICFtYXN0ZXItPmNvbm5lY3RvcikKPiAtCQlyZXR1cm47Cj4gLQo+IC0JdG9wb2xv Z3kgPSBkcHVfY29ubmVjdG9yX2dldF90b3BvbG9neV9uYW1lKG1hc3Rlci0+Y29ubmVjdG9yKTsK PiAtCWlmICh0b3BvbG9neSAhPSBEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCkKPiAtCQlyZXR1cm47 Cj4gLQo+IC0JLyoKPiAtCSAqIEZvciBwaW5ncG9uZyBzcGxpdCwgdGhlIHNsYXZlIHBpbmdwb25n IHdvbid0IGdlbmVyYXRlIElSUXMuIEZvcgo+IC0JICogcmlnaHQtb25seSB1cGRhdGVzLCB3ZSBj YW4ndCBzd2FwIHBpbmdwb25ncywgb3Igc2ltcGx5IHN3YXAgdGhlCj4gLQkgKiBtYXN0ZXIvc2xh dmUgYXNzaWdubWVudCwgd2UgYWN0dWFsbHkgaGF2ZSB0byBzd2FwIHRoZSBpbnRlcmZhY2VzCj4g LQkgKiBzbyB0aGF0IHRoZSBtYXN0ZXIgcGh5c2ljYWwgZW5jb2RlciB3aWxsIHVzZSBhIHBpbmdw b25nL2ludGVyZmFjZQo+IC0JICogdGhhdCBnZW5lcmF0ZXMgaXJxcyBvbiB3aGljaCB0byB3YWl0 Lgo+IC0JICovCj4gLQlpc19yaWdodF9vbmx5ID0gIXRlc3RfYml0KDAsIGFmZmVjdGVkX2Rpc3Bs YXlzKSAmJgo+IC0JCQl0ZXN0X2JpdCgxLCBhZmZlY3RlZF9kaXNwbGF5cyk7Cj4gLQo+IC0JaWYg KGlzX3JpZ2h0X29ubHkgJiYgIWRwdV9lbmMtPmludGZzX3N3YXBwZWQpIHsKPiAtCQkvKiByaWdo dC1vbmx5IHVwZGF0ZSBzd2FwIGludGVyZmFjZXMgKi8KPiAtCQlzd2FwKGRwdV9lbmMtPnBoeXNf ZW5jc1swXS0+aW50Zl9pZHgsCj4gLQkJCQlkcHVfZW5jLT5waHlzX2VuY3NbMV0tPmludGZfaWR4 KTsKPiAtCQlkcHVfZW5jLT5pbnRmc19zd2FwcGVkID0gdHJ1ZTsKPiAtCX0gZWxzZSBpZiAoIWlz X3JpZ2h0X29ubHkgJiYgZHB1X2VuYy0+aW50ZnNfc3dhcHBlZCkgewo+IC0JCS8qIGxlZnQtb25s eSBvciBmdWxsIHVwZGF0ZSwgc3dhcCBiYWNrICovCj4gLQkJc3dhcChkcHVfZW5jLT5waHlzX2Vu Y3NbMF0tPmludGZfaWR4LAo+IC0JCQkJZHB1X2VuYy0+cGh5c19lbmNzWzFdLT5pbnRmX2lkeCk7 Cj4gLQkJZHB1X2VuYy0+aW50ZnNfc3dhcHBlZCA9IGZhbHNlOwo+IC0JfQo+IC0KPiAtCURQVV9E RUJVR19FTkMoZHB1X2VuYywKPiAtCQkJInJpZ2h0X29ubHkgJWQgc3dhcHBlZCAlZCBwaHlzMC0+ aW50ZiVkLCBwaHlzMS0+aW50ZiVkXG4iLAo+IC0JCQlpc19yaWdodF9vbmx5LCBkcHVfZW5jLT5p bnRmc19zd2FwcGVkLAo+IC0JCQlkcHVfZW5jLT5waHlzX2VuY3NbMF0tPmludGZfaWR4IC0gSU5U Rl8wLAo+IC0JCQlkcHVfZW5jLT5waHlzX2VuY3NbMV0tPmludGZfaWR4IC0gSU5URl8wKTsKPiAt CURQVV9FVlQzMihEUk1JRChkcm1fZW5jKSwgaXNfcmlnaHRfb25seSwgZHB1X2VuYy0+aW50ZnNf c3dhcHBlZCwKPiAtCQkJZHB1X2VuYy0+cGh5c19lbmNzWzBdLT5pbnRmX2lkeCAtIElOVEZfMCwK PiAtCQkJZHB1X2VuYy0+cGh5c19lbmNzWzFdLT5pbnRmX2lkeCAtIElOVEZfMCwKPiAtCQkJKmFm ZmVjdGVkX2Rpc3BsYXlzKTsKPiAtCj4gLQkvKiBwcHNwbGl0IGFsd2F5cyB1c2VzIG1hc3RlciBz aW5jZSBwcHNsYXZlIGludmFsaWQgZm9yIGlycXMqLwo+IC0JaWYgKG51bV9hY3RpdmVfcGh5cyA9 PSAxKQo+IC0JCSphZmZlY3RlZF9kaXNwbGF5cyA9IEJJVCgwKTsKPiAtfQo+IC0KPiAtc3RhdGlj IHZvaWQgX2RwdV9lbmNvZGVyX3VwZGF0ZV9tYXN0ZXIoc3RydWN0IGRybV9lbmNvZGVyICpkcm1f ZW5jLAo+IC0JCXN0cnVjdCBkcHVfZW5jb2Rlcl9raWNrb2ZmX3BhcmFtcyAqcGFyYW1zKQo+IC17 Cj4gLQlzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydCAqZHB1X2VuYzsKPiAtCXN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzICpwaHlzOwo+IC0JaW50IGksIG51bV9hY3RpdmVfcGh5czsKPiAtCWJvb2wgbWFz dGVyX2Fzc2lnbmVkID0gZmFsc2U7Cj4gLQo+IC0JaWYgKCFkcm1fZW5jIHx8ICFwYXJhbXMpCj4g LQkJcmV0dXJuOwo+IC0KPiAtCWRwdV9lbmMgPSB0b19kcHVfZW5jb2Rlcl92aXJ0KGRybV9lbmMp Owo+IC0KPiAtCWlmIChkcHVfZW5jLT5udW1fcGh5c19lbmNzIDw9IDEpCj4gLQkJcmV0dXJuOwo+ IC0KPiAtCS8qIGNvdW50IGJpdHMgc2V0ICovCj4gLQludW1fYWN0aXZlX3BoeXMgPSBod2VpZ2h0 X2xvbmcocGFyYW1zLT5hZmZlY3RlZF9kaXNwbGF5cyk7Cj4gLQo+IC0JRFBVX0RFQlVHX0VOQyhk cHVfZW5jLCAiYWZmZWN0ZWRfZGlzcGxheXMgMHglbHggbnVtX2FjdGl2ZV9waHlzICVkXG4iLAo+ IC0JCQlwYXJhbXMtPmFmZmVjdGVkX2Rpc3BsYXlzLCBudW1fYWN0aXZlX3BoeXMpOwo+IC0KPiAt CS8qIGZvciBsZWZ0L3JpZ2h0IG9ubHkgdXBkYXRlLCBwcHNwbGl0IG1hc3RlciBzd2l0Y2hlcyBp bnRlcmZhY2UgKi8KPiAtCV9kcHVfZW5jb2Rlcl9wcHNwbGl0X3N3YXBfaW50Zl9mb3JfcmlnaHRf b25seV91cGRhdGUoZHJtX2VuYywKPiAtCQkJJnBhcmFtcy0+YWZmZWN0ZWRfZGlzcGxheXMsIG51 bV9hY3RpdmVfcGh5cyk7Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IGRwdV9lbmMtPm51bV9waHlz X2VuY3M7IGkrKykgewo+IC0JCWVudW0gZHB1X2VuY19zcGxpdF9yb2xlIHBydl9yb2xlLCBuZXdf cm9sZTsKPiAtCQlib29sIGFjdGl2ZTsKPiAtCj4gLQkJcGh5cyA9IGRwdV9lbmMtPnBoeXNfZW5j c1tpXTsKPiAtCQlpZiAoIXBoeXMgfHwgIXBoeXMtPm9wcy51cGRhdGVfc3BsaXRfcm9sZSB8fCAh cGh5cy0+aHdfcHApCj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAtCQlhY3RpdmUgPSB0ZXN0X2JpdChp LCAmcGFyYW1zLT5hZmZlY3RlZF9kaXNwbGF5cyk7Cj4gLQkJcHJ2X3JvbGUgPSBwaHlzLT5zcGxp dF9yb2xlOwo+IC0KPiAtCQlpZiAoYWN0aXZlICYmIG51bV9hY3RpdmVfcGh5cyA9PSAxKQo+IC0J CQluZXdfcm9sZSA9IEVOQ19ST0xFX1NPTE87Cj4gLQkJZWxzZSBpZiAoYWN0aXZlICYmICFtYXN0 ZXJfYXNzaWduZWQpCj4gLQkJCW5ld19yb2xlID0gRU5DX1JPTEVfTUFTVEVSOwo+IC0JCWVsc2Ug aWYgKGFjdGl2ZSkKPiAtCQkJbmV3X3JvbGUgPSBFTkNfUk9MRV9TTEFWRTsKPiAtCQllbHNlCj4g LQkJCW5ld19yb2xlID0gRU5DX1JPTEVfU0tJUDsKPiAtCj4gLQkJcGh5cy0+b3BzLnVwZGF0ZV9z cGxpdF9yb2xlKHBoeXMsIG5ld19yb2xlKTsKPiAtCQlpZiAobmV3X3JvbGUgPT0gRU5DX1JPTEVf U09MTyB8fCBuZXdfcm9sZSA9PSBFTkNfUk9MRV9NQVNURVIpIHsKPiAtCQkJZHB1X2VuYy0+Y3Vy X21hc3RlciA9IHBoeXM7Cj4gLQkJCW1hc3Rlcl9hc3NpZ25lZCA9IHRydWU7Cj4gLQkJfQo+IC0K PiAtCQlEUFVfREVCVUdfRU5DKGRwdV9lbmMsICJwcCAlZCByb2xlIHBydiAlZCBuZXcgJWQgYWN0 aXZlICVkXG4iLAo+IC0JCQkJcGh5cy0+aHdfcHAtPmlkeCAtIFBJTkdQT05HXzAsIHBydl9yb2xl LAo+IC0JCQkJcGh5cy0+c3BsaXRfcm9sZSwgYWN0aXZlKTsKPiAtCQlEUFVfRVZUMzIoRFJNSUQo ZHJtX2VuYyksIHBhcmFtcy0+YWZmZWN0ZWRfZGlzcGxheXMsCj4gLQkJCQlwaHlzLT5od19wcC0+ aWR4IC0gUElOR1BPTkdfMCwgcHJ2X3JvbGUsCj4gLQkJCQlwaHlzLT5zcGxpdF9yb2xlLCBhY3Rp dmUsIG51bV9hY3RpdmVfcGh5cyk7Cj4gLQl9Cj4gLX0KPiAtCj4gIGJvb2wgZHB1X2VuY29kZXJf Y2hlY2tfbW9kZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMsIHUzMiBtb2RlKQo+ICB7Cj4g IAlzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydCAqZHB1X2VuYzsKPiBAQCAtMjA0OCwxNSArMTg3OCwx MCBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfc2V0dXBfZGl0aGVyKHN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzICpwaHlzKQo+ICAJdm9pZCAqZGl0aGVyX2NmZzsKPiAgCWludCByZXQgPSAwOwo+ ICAJc2l6ZV90IGxlbiA9IDA7Cj4gLQllbnVtIGRwdV9ybV90b3BvbG9neV9uYW1lIHRvcG9sb2d5 Owo+ICAKPiAgCWlmICghcGh5cyB8fCAhcGh5cy0+Y29ubmVjdG9yIHx8ICFwaHlzLT5od19wcCB8 fAo+ICAJCQkhcGh5cy0+aHdfcHAtPm9wcy5zZXR1cF9kaXRoZXIpCj4gIAkJcmV0dXJuOwo+IC0J dG9wb2xvZ3kgPSBkcHVfY29ubmVjdG9yX2dldF90b3BvbG9neV9uYW1lKHBoeXMtPmNvbm5lY3Rv cik7Cj4gLQlpZiAoKHRvcG9sb2d5ID09IERQVV9STV9UT1BPTE9HWV9QUFNQTElUKSAmJgo+IC0J CQkocGh5cy0+c3BsaXRfcm9sZSA9PSBFTkNfUk9MRV9TTEFWRSkpCj4gLQkJcmV0dXJuOwo+ICAK PiAgCXJldCA9IGRwdV9jb25uZWN0b3JfZ2V0X2RpdGhlcl9jZmcocGh5cy0+Y29ubmVjdG9yLAo+ ICAJCQkJcGh5cy0+Y29ubmVjdG9yLT5zdGF0ZSwgJmRpdGhlcl9jZmcsICZsZW4pOwo+IEBAIC0y MjY3LDggKzIwOTIsNiBAQCB2b2lkIGRwdV9lbmNvZGVyX3ByZXBhcmVfZm9yX2tpY2tvZmYoc3Ry dWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLAo+ICAJCX0KPiAgCX0KPiAgCj4gLQlfZHB1X2VuY29k ZXJfdXBkYXRlX21hc3Rlcihkcm1fZW5jLCBwYXJhbXMpOwo+IC0KPiAgCWlmIChkcHVfZW5jLT5j dXJfbWFzdGVyICYmIGRwdV9lbmMtPmN1cl9tYXN0ZXItPmNvbm5lY3Rvcikgewo+ICAJCXJjID0g ZHB1X2Nvbm5lY3Rvcl9wcmVfa2lja29mZihkcHVfZW5jLT5jdXJfbWFzdGVyLT5jb25uZWN0b3Ip Owo+ICAJCWlmIChyYykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2VuY29kZXJfcGh5cy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2VuY29kZXJfcGh5cy5oCj4gaW5kZXggNGUyZTZjNi4uNjllYzJiNiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmgKPiBAQCAtNDAs MTMgKzQwLDExIEBACj4gICAqIEBFTkNfUk9MRV9TT0xPOglUaGlzIGlzIHRoZSBvbmUgYW5kIG9u bHkgcGFuZWwuIFRoaXMgZW5jb2RlciBpcyBtYXN0ZXIuCj4gICAqIEBFTkNfUk9MRV9NQVNURVI6 CVRoaXMgZW5jb2RlciBpcyB0aGUgbWFzdGVyIG9mIGEgc3BsaXQgcGFuZWwgY29uZmlnLgo+ICAg KiBARU5DX1JPTEVfU0xBVkU6CVRoaXMgZW5jb2RlciBpcyBub3QgdGhlIG1hc3RlciBvZiBhIHNw bGl0IHBhbmVsIGNvbmZpZy4KPiAtICogQEVOQ19ST0xFX1NLSVA6CVRoaXMgZW5jb2RlciBpcyBu b3QgcGFydGljaXBhdGluZyBpbiBraWNrb2Zmcwo+ICAgKi8KPiAgZW51bSBkcHVfZW5jX3NwbGl0 X3JvbGUgewo+ICAJRU5DX1JPTEVfU09MTywKPiAgCUVOQ19ST0xFX01BU1RFUiwKPiAgCUVOQ19S T0xFX1NMQVZFLAo+IC0JRU5DX1JPTEVfU0tJUAo+ICB9Owo+ICAKPiAgLyoqCj4gQEAgLTEyMyw3 ICsxMjEsNiBAQCBzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydF9vcHMgewo+ICAgKiBAaHdfcmVzZXQ6 CQkJSXNzdWUgSFcgcmVjb3Zlcnkgc3VjaCBhcyBDVEwgcmVzZXQgYW5kIGNsZWFyCj4gICAqCQkJ CURQVV9FTkNfRVJSX05FRURTX0hXX1JFU0VUIHN0YXRlCj4gICAqIEBpcnFfY29udHJvbDoJCUhh bmRsZXIgdG8gZW5hYmxlL2Rpc2FibGUgYWxsIHRoZSBlbmNvZGVyIElSUXMKPiAtICogQHVwZGF0 ZV9zcGxpdF9yb2xlOgkJVXBkYXRlIHRoZSBzcGxpdCByb2xlIG9mIHRoZSBwaHlzIGVuYwo+ICAg KiBAcHJlcGFyZV9pZGxlX3BjOgkJcGh5cyBlbmNvZGVyIGNhbiB1cGRhdGUgdGhlIHZzeW5jX2Vu YWJsZSBzdGF0dXMKPiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBpZGxlIHBv d2VyIGNvbGxhcHNlIHByZXBhcmUKPiAgICogQHJlc3RvcmU6CQkJUmVzdG9yZSBhbGwgdGhlIGVu Y29kZXIgY29uZmlncy4KPiBAQCAtMTY3LDggKzE2NCw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9w aHlzX29wcyB7Cj4gIAl1MzIgKCpjb2xsZWN0X21pc3IpKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlz ICpwaHlzX2VuYyk7Cj4gIAl2b2lkICgqaHdfcmVzZXQpKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlz ICpwaHlzX2VuYyk7Cj4gIAl2b2lkICgqaXJxX2NvbnRyb2wpKHN0cnVjdCBkcHVfZW5jb2Rlcl9w aHlzICpwaHlzLCBib29sIGVuYWJsZSk7Cj4gLQl2b2lkICgqdXBkYXRlX3NwbGl0X3JvbGUpKHN0 cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYywKPiAtCQkJZW51bSBkcHVfZW5jX3NwbGl0 X3JvbGUgcm9sZSk7Cj4gIAl2b2lkICgqcHJlcGFyZV9pZGxlX3BjKShzdHJ1Y3QgZHB1X2VuY29k ZXJfcGh5cyAqcGh5c19lbmMpOwo+ICAJdm9pZCAoKnJlc3RvcmUpKHN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzICpwaHlzKTsKPiAgCWJvb2wgKCppc19hdXRvcmVmcmVzaF9lbmFibGVkKShzdHJ1Y3Qg ZHB1X2VuY29kZXJfcGh5cyAqcGh5cyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jCj4gaW5kZXggNzFlMmU1YS4uMzQzNjc4 OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rl cl9waHlzX2NtZC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Vu Y29kZXJfcGh5c19jbWQuYwo+IEBAIC0xMTQsMjkgKzExNCw2IEBAIHN0YXRpYyB2b2lkIF9kcHVf ZW5jb2Rlcl9waHlzX2NtZF9jb25maWdfYXV0b3JlZnJlc2goCj4gIAkJaHdfcHAtPm9wcy5zZXR1 cF9hdXRvcmVmcmVzaChod19wcCwgY2ZnX2N1cik7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIF9k cHVfZW5jb2Rlcl9waHlzX2NtZF91cGRhdGVfZmx1c2hfbWFzaygKPiAtCQlzdHJ1Y3QgZHB1X2Vu Y29kZXJfcGh5cyAqcGh5c19lbmMpCj4gLXsKPiAtCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX2Nt ZCAqY21kX2VuYyA9Cj4gLQkJCXRvX2RwdV9lbmNvZGVyX3BoeXNfY21kKHBoeXNfZW5jKTsKPiAt CXN0cnVjdCBkcHVfaHdfY3RsICpjdGw7Cj4gLQl1MzIgZmx1c2hfbWFzayA9IDA7Cj4gLQo+IC0J aWYgKCFwaHlzX2VuYykKPiAtCQlyZXR1cm47Cj4gLQo+IC0JY3RsID0gcGh5c19lbmMtPmh3X2N0 bDsKPiAtCWlmICghY3RsIHx8ICFjdGwtPm9wcy5nZXRfYml0bWFza19pbnRmIHx8Cj4gLQkJCSFj dGwtPm9wcy51cGRhdGVfcGVuZGluZ19mbHVzaCkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JY3RsLT5v cHMuZ2V0X2JpdG1hc2tfaW50ZihjdGwsICZmbHVzaF9tYXNrLCBwaHlzX2VuYy0+aW50Zl9pZHgp Owo+IC0JY3RsLT5vcHMudXBkYXRlX3BlbmRpbmdfZmx1c2goY3RsLCBmbHVzaF9tYXNrKTsKPiAt Cj4gLQlEUFVfREVCVUdfQ01ERU5DKGNtZF9lbmMsICJ1cGRhdGUgcGVuZGluZyBmbHVzaCBjdGwg JWQgZmx1c2hfbWFzayAleFxuIiwKPiAtCQkJY3RsLT5pZHggLSBDVExfMCwgZmx1c2hfbWFzayk7 Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl9waHlzX2NtZF91cGRhdGVfaW50 Zl9jZmcoCj4gIAkJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQo+ICB7Cj4gQEAg LTMyNCwyMCArMzAxLDYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfbW9kZV9z ZXQoCj4gIAlfZHB1X2VuY29kZXJfcGh5c19jbWRfc2V0dXBfaXJxX2h3X2lkeChwaHlzX2VuYyk7 Cj4gIH0KPiAgCj4gLXN0YXRpYyBib29sIF9kcHVfZW5jb2Rlcl9waHlzX2lzX3Bwc3BsaXQoc3Ry dWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQo+IC17Cj4gLQllbnVtIGRwdV9ybV90b3Bv bG9neV9uYW1lIHRvcG9sb2d5Owo+IC0KPiAtCWlmICghcGh5c19lbmMpCj4gLQkJcmV0dXJuIGZh bHNlOwo+IC0KPiAtCXRvcG9sb2d5ID0gZHB1X2Nvbm5lY3Rvcl9nZXRfdG9wb2xvZ3lfbmFtZShw aHlzX2VuYy0+Y29ubmVjdG9yKTsKPiAtCWlmICh0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lf UFBTUExJVCkKPiAtCQlyZXR1cm4gdHJ1ZTsKPiAtCj4gLQlyZXR1cm4gZmFsc2U7Cj4gLX0KPiAt Cj4gIHN0YXRpYyBpbnQgX2RwdV9lbmNvZGVyX3BoeXNfY21kX2hhbmRsZV9wcGRvbmVfdGltZW91 dCgKPiAgCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCj4gIHsKPiBAQCAtMzg5 LDE2ICszNTIsNiBAQCBzdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF9oYW5kbGVfcHBk b25lX3RpbWVvdXQoCj4gIAlyZXR1cm4gLUVUSU1FRE9VVDsKPiAgfQo+ICAKPiAtc3RhdGljIGJv b2wgX2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdF9zbGF2ZSgKPiAtCQlzdHJ1Y3QgZHB1X2Vu Y29kZXJfcGh5cyAqcGh5c19lbmMpCj4gLXsKPiAtCWlmICghcGh5c19lbmMpCj4gLQkJcmV0dXJu IGZhbHNlOwo+IC0KPiAtCXJldHVybiBfZHB1X2VuY29kZXJfcGh5c19pc19wcHNwbGl0KHBoeXNf ZW5jKSAmJgo+IC0JCQlwaHlzX2VuYy0+c3BsaXRfcm9sZSA9PSBFTkNfUk9MRV9TTEFWRTsKPiAt fQo+IC0KPiAgc3RhdGljIGludCBfZHB1X2VuY29kZXJfcGh5c19jbWRfcG9sbF93cml0ZV9wb2lu dGVyX3N0YXJ0ZWQoCj4gIAkJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQo+ICB7 Cj4gQEAgLTQ4MywxMCArNDM2LDYgQEAgc3RhdGljIGludCBfZHB1X2VuY29kZXJfcGh5c19jbWRf d2FpdF9mb3JfaWRsZSgKPiAgCXdhaXRfaW5mby5hdG9taWNfY250ID0gJnBoeXNfZW5jLT5wZW5k aW5nX2tpY2tvZmZfY250Owo+ICAJd2FpdF9pbmZvLnRpbWVvdXRfbXMgPSBLSUNLT0ZGX1RJTUVP VVRfTVM7Cj4gIAo+IC0JLyogc2xhdmUgZW5jb2RlciBkb2Vzbid0IGVuYWJsZSBmb3IgcHBzcGxp dCAqLwo+IC0JaWYgKF9kcHVfZW5jb2Rlcl9waHlzX2lzX3Bwc3BsaXRfc2xhdmUocGh5c19lbmMp KQo+IC0JCXJldHVybiAwOwo+IC0KPiAgCXJldCA9IGRwdV9lbmNvZGVyX2hlbHBlcl93YWl0X2Zv cl9pcnEocGh5c19lbmMsIElOVFJfSURYX1BJTkdQT05HLAo+ICAJCQkmd2FpdF9pbmZvKTsKPiAg CWlmIChyZXQgPT0gLUVUSU1FRE9VVCkKPiBAQCAtNTg4LDcgKzUzNyw3IEBAIHZvaWQgZHB1X2Vu Y29kZXJfcGh5c19jbWRfaXJxX2NvbnRyb2woc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNf ZW5jLAo+ICB7Cj4gIAlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c19jbWQgKmNtZF9lbmM7Cj4gIAo+ IC0JaWYgKCFwaHlzX2VuYyB8fCBfZHB1X2VuY29kZXJfcGh5c19pc19wcHNwbGl0X3NsYXZlKHBo eXNfZW5jKSkKPiArCWlmICghcGh5c19lbmMpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWNtZF9lbmMg PSB0b19kcHVfZW5jb2Rlcl9waHlzX2NtZChwaHlzX2VuYyk7Cj4gQEAgLTcyNiwxOCArNjc1LDE4 IEBAIHN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl9waHlzX2NtZF9waW5ncG9uZ19jb25maWcoCj4g IAkJCXBoeXNfZW5jLT5od19wcC0+aWR4IC0gUElOR1BPTkdfMCk7Cj4gIAlkcm1fbW9kZV9kZWJ1 Z19wcmludG1vZGVsaW5lKCZwaHlzX2VuYy0+Y2FjaGVkX21vZGUpOwo+ICAKPiAtCWlmICghX2Rw dV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdF9zbGF2ZShwaHlzX2VuYykpCj4gLQkJX2RwdV9lbmNv ZGVyX3BoeXNfY21kX3VwZGF0ZV9pbnRmX2NmZyhwaHlzX2VuYyk7Cj4gKwlfZHB1X2VuY29kZXJf cGh5c19jbWRfdXBkYXRlX2ludGZfY2ZnKHBoeXNfZW5jKTsKPiAgCWRwdV9lbmNvZGVyX3BoeXNf Y21kX3RlYXJjaGVja19jb25maWcocGh5c19lbmMpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgYm9vbCBk cHVfZW5jb2Rlcl9waHlzX2NtZF9uZWVkc19zaW5nbGVfZmx1c2goCj4gIAkJc3RydWN0IGRwdV9l bmNvZGVyX3BoeXMgKnBoeXNfZW5jKQo+ICB7Cj4gLQlpZiAoIXBoeXNfZW5jKQo+IC0JCXJldHVy biBmYWxzZTsKPiAtCj4gLQlyZXR1cm4gX2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdChwaHlz X2VuYyk7Cj4gKwkvKioKPiArCSAqIHdlIGRvIHNlcGFyYXRlIGZsdXNoIGZvciBlYWNoIENUTCBh bmQgbGV0Cj4gKwkgKiBDVExfU1RBUlQgc3luY2hyb25pemUgdGhlbQo+ICsJICovCj4gKwlyZXR1 cm4gZmFsc2U7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX2Vu YWJsZV9oZWxwZXIoCj4gQEAgLTc1NSwxMiArNzA0LDcgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29k ZXJfcGh5c19jbWRfZW5hYmxlX2hlbHBlcigKPiAgCj4gIAlfZHB1X2VuY29kZXJfcGh5c19jbWRf cGluZ3BvbmdfY29uZmlnKHBoeXNfZW5jKTsKPiAgCj4gLQkvKgo+IC0JICogRm9yIHBwLXNwbGl0 LCBza2lwIHNldHRpbmcgdGhlIGZsdXNoIGJpdCBmb3IgdGhlIHNsYXZlIGludGYsIHNpbmNlCj4g LQkgKiBib3RoIGludGZzIHVzZSBzYW1lIGN0bCBhbmQgSFcgd2lsbCBvbmx5IGZsdXNoIHRoZSBt YXN0ZXIuCj4gLQkgKi8KPiAtCWlmIChfZHB1X2VuY29kZXJfcGh5c19pc19wcHNwbGl0KHBoeXNf ZW5jKSAmJgo+IC0JCSFkcHVfZW5jb2Rlcl9waHlzX2NtZF9pc19tYXN0ZXIocGh5c19lbmMpKQo+ ICsJaWYgKCFkcHVfZW5jb2Rlcl9waHlzX2NtZF9pc19tYXN0ZXIocGh5c19lbmMpKQo+ICAJCWdv dG8gc2tpcF9mbHVzaDsKPiAgCj4gIAljdGwgPSBwaHlzX2VuYy0+aHdfY3RsOwo+IEBAIC05NjMs MTAgKzkwNyw2IEBAIHN0YXRpYyBpbnQgX2RwdV9lbmNvZGVyX3BoeXNfY21kX3dhaXRfZm9yX2N0 bF9zdGFydCgKPiAgCXdhaXRfaW5mby5hdG9taWNfY250ID0gJnBoeXNfZW5jLT5wZW5kaW5nX2N0 bHN0YXJ0X2NudDsKPiAgCXdhaXRfaW5mby50aW1lb3V0X21zID0gS0lDS09GRl9USU1FT1VUX01T Owo+ICAKPiAtCS8qIHNsYXZlIGVuY29kZXIgZG9lc24ndCBlbmFibGUgZm9yIHBwc3BsaXQgKi8K PiAtCWlmIChfZHB1X2VuY29kZXJfcGh5c19pc19wcHNwbGl0X3NsYXZlKHBoeXNfZW5jKSkKPiAt CQlyZXR1cm4gMDsKPiAtCj4gIAlyZXQgPSBkcHVfZW5jb2Rlcl9oZWxwZXJfd2FpdF9mb3JfaXJx KHBoeXNfZW5jLCBJTlRSX0lEWF9DVExfU1RBUlQsCj4gIAkJCSZ3YWl0X2luZm8pOwo+ICAJaWYg KHJldCA9PSAtRVRJTUVET1VUKSB7Cj4gQEAgLTEwNTMsMzkgKzk5Myw2IEBAIHN0YXRpYyBpbnQg ZHB1X2VuY29kZXJfcGh5c19jbWRfd2FpdF9mb3JfdmJsYW5rKAo+ICAJcmV0dXJuIHJjOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF91cGRhdGVfc3BsaXRfcm9s ZSgKPiAtCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMsCj4gLQkJZW51bSBkcHVf ZW5jX3NwbGl0X3JvbGUgcm9sZSkKPiAtewo+IC0Jc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfY21k ICpjbWRfZW5jOwo+IC0JZW51bSBkcHVfZW5jX3NwbGl0X3JvbGUgb2xkX3JvbGU7Cj4gLQlib29s IGlzX3Bwc3BsaXQ7Cj4gLQo+IC0JaWYgKCFwaHlzX2VuYykKPiAtCQlyZXR1cm47Cj4gLQo+IC0J Y21kX2VuYyA9IHRvX2RwdV9lbmNvZGVyX3BoeXNfY21kKHBoeXNfZW5jKTsKPiAtCW9sZF9yb2xl ID0gcGh5c19lbmMtPnNwbGl0X3JvbGU7Cj4gLQlpc19wcHNwbGl0ID0gX2RwdV9lbmNvZGVyX3Bo eXNfaXNfcHBzcGxpdChwaHlzX2VuYyk7Cj4gLQo+IC0JcGh5c19lbmMtPnNwbGl0X3JvbGUgPSBy b2xlOwo+IC0KPiAtCURQVV9ERUJVR19DTURFTkMoY21kX2VuYywgIm9sZCByb2xlICVkIG5ldyBy b2xlICVkXG4iLAo+IC0JCQlvbGRfcm9sZSwgcm9sZSk7Cj4gLQo+IC0JLyoKPiAtCSAqIHBwc3Bs aXQgc29sbyBuZWVkcyB0byByZXByb2dyYW0gYmVjYXVzZSBpbnRmIG1heSBoYXZlIHN3YXBwZWQg d2l0aG91dAo+IC0JICogcm9sZSBjaGFuZ2luZyBvbiBsZWZ0LW9ubHksIHJpZ2h0LW9ubHkgYmFj ay10by1iYWNrIGNvbW1pdHMKPiAtCSAqLwo+IC0JaWYgKCEoaXNfcHBzcGxpdCAmJiByb2xlID09 IEVOQ19ST0xFX1NPTE8pICYmCj4gLQkJCShyb2xlID09IG9sZF9yb2xlIHx8IHJvbGUgPT0gRU5D X1JPTEVfU0tJUCkpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWRwdV9lbmNvZGVyX2hlbHBlcl9zcGxp dF9jb25maWcocGh5c19lbmMsIHBoeXNfZW5jLT5pbnRmX2lkeCk7Cj4gLQlfZHB1X2VuY29kZXJf cGh5c19jbWRfcGluZ3BvbmdfY29uZmlnKHBoeXNfZW5jKTsKPiAtCV9kcHVfZW5jb2Rlcl9waHlz X2NtZF91cGRhdGVfZmx1c2hfbWFzayhwaHlzX2VuYyk7Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lk IGRwdV9lbmNvZGVyX3BoeXNfY21kX3ByZXBhcmVfY29tbWl0KAo+ICAJCXN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzICpwaHlzX2VuYykKPiAgewo+IEBAIC0xMTkxLDcgKzEwOTgsNiBAQCBzdGF0aWMg dm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9pbml0X29wcygKPiAgCW9wcy0+bmVlZHNfc2luZ2xl X2ZsdXNoID0gZHB1X2VuY29kZXJfcGh5c19jbWRfbmVlZHNfc2luZ2xlX2ZsdXNoOwo+ICAJb3Bz LT5od19yZXNldCA9IGRwdV9lbmNvZGVyX2hlbHBlcl9od19yZXNldDsKPiAgCW9wcy0+aXJxX2Nv bnRyb2wgPSBkcHVfZW5jb2Rlcl9waHlzX2NtZF9pcnFfY29udHJvbDsKPiAtCW9wcy0+dXBkYXRl X3NwbGl0X3JvbGUgPSBkcHVfZW5jb2Rlcl9waHlzX2NtZF91cGRhdGVfc3BsaXRfcm9sZTsKPiAg CW9wcy0+cmVzdG9yZSA9IGRwdV9lbmNvZGVyX3BoeXNfY21kX2VuYWJsZV9oZWxwZXI7Cj4gIAlv cHMtPnByZXBhcmVfaWRsZV9wYyA9IGRwdV9lbmNvZGVyX3BoeXNfY21kX3ByZXBhcmVfaWRsZV9w YzsKPiAgCW9wcy0+aXNfYXV0b3JlZnJlc2hfZW5hYmxlZCA9Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlkLmMgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCj4gaW5kZXggZDZi NzJhMy4uYjY4MDcxOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYwo+IEBAIC0zNTQsMjAgKzM1NCw2IEBAIHN0YXRp YyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfdmlkX3VuZGVycnVuX2lycSh2b2lkICphcmcsIGludCBp cnFfaWR4KQo+ICAJCQlwaHlzX2VuYyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBib29sIF9kcHVfZW5j b2Rlcl9waHlzX2lzX3Bwc3BsaXQoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQo+ IC17Cj4gLQllbnVtIGRwdV9ybV90b3BvbG9neV9uYW1lIHRvcG9sb2d5Owo+IC0KPiAtCWlmICgh cGh5c19lbmMpCj4gLQkJcmV0dXJuIGZhbHNlOwo+IC0KPiAtCXRvcG9sb2d5ID0gZHB1X2Nvbm5l Y3Rvcl9nZXRfdG9wb2xvZ3lfbmFtZShwaHlzX2VuYy0+Y29ubmVjdG9yKTsKPiAtCWlmICh0b3Bv bG9neSA9PSBEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCkKPiAtCQlyZXR1cm4gdHJ1ZTsKPiAtCj4g LQlyZXR1cm4gZmFsc2U7Cj4gLX0KPiAtCj4gIHN0YXRpYyBib29sIF9kcHVfZW5jb2Rlcl9waHlz X2lzX2R1YWxfY3RsKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKPiAgewo+ICAJ ZW51bSBkcHVfcm1fdG9wb2xvZ3lfbmFtZSB0b3BvbG9neTsKPiBAQCAtMzg1LDggKzM3MSw3IEBA IHN0YXRpYyBib29sIF9kcHVfZW5jb2Rlcl9waHlzX2lzX2R1YWxfY3RsKHN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzICpwaHlzX2VuYykKPiAgc3RhdGljIGJvb2wgZHB1X2VuY29kZXJfcGh5c192aWRf bmVlZHNfc2luZ2xlX2ZsdXNoKAo+ICAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2Vu YykKPiAgewo+IC0JcmV0dXJuIHBoeXNfZW5jICYmIChfZHB1X2VuY29kZXJfcGh5c19pc19wcHNw bGl0KHBoeXNfZW5jKSB8fAo+IC0JCV9kcHVfZW5jb2Rlcl9waHlzX2lzX2R1YWxfY3RsKHBoeXNf ZW5jKSk7Cj4gKwlyZXR1cm4gKHBoeXNfZW5jICYmIF9kcHVfZW5jb2Rlcl9waHlzX2lzX2R1YWxf Y3RsKHBoeXNfZW5jKSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl9waHlz X3ZpZF9zZXR1cF9pcnFfaHdfaWR4KAo+IEBAIC02MDksOSArNTk0LDcgQEAgc3RhdGljIGludCBf ZHB1X2VuY29kZXJfcGh5c192aWRfd2FpdF9mb3JfdmJsYW5rKAo+ICAJd2FpdF9pbmZvLnRpbWVv dXRfbXMgPSBLSUNLT0ZGX1RJTUVPVVRfTVM7Cj4gIAo+ICAJaWYgKCFkcHVfZW5jb2Rlcl9waHlz X3ZpZF9pc19tYXN0ZXIocGh5c19lbmMpKSB7Cj4gLQkJLyogc2lnbmFsIGRvbmUgZm9yIHNsYXZl IHZpZGVvIGVuY29kZXIsIHVubGVzcyBpdCBpcyBwcC1zcGxpdCAqLwo+IC0JCWlmICghX2RwdV9l bmNvZGVyX3BoeXNfaXNfcHBzcGxpdChwaHlzX2VuYykgJiYKPiAtCQkJbm90aWZ5ICYmIHBoeXNf ZW5jLT5wYXJlbnRfb3BzLmhhbmRsZV9mcmFtZV9kb25lKQo+ICsJCWlmIChub3RpZnkgJiYgcGh5 c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1lX2RvbmUpCj4gIAkJCXBoeXNfZW5jLT5wYXJl bnRfb3BzLmhhbmRsZV9mcmFtZV9kb25lKAo+ICAJCQkJCXBoeXNfZW5jLT5wYXJlbnQsIHBoeXNf ZW5jLAo+ICAJCQkJCURQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX0RPTkUpOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYwo+IGluZGV4IDE0ZTY2Y2Eu LjhlNzc5YzAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2h3X2NhdGFsb2cuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9o d19jYXRhbG9nLmMKPiBAQCAtNDMsNyArNDMsNyBAQAo+ICAjZGVmaW5lIFBJTkdQT05HX1NETTg0 NV9NQVNLIEJJVChEUFVfUElOR1BPTkdfRElUSEVSKQo+ICAKPiAgI2RlZmluZSBQSU5HUE9OR19T RE04NDVfU1BMSVRfTUFTSyBcCj4gLQkoUElOR1BPTkdfU0RNODQ1X01BU0sgfCBCSVQoRFBVX1BJ TkdQT05HX1NQTElUKSB8IEJJVChEUFVfUElOR1BPTkdfVEUyKSkKPiArCShQSU5HUE9OR19TRE04 NDVfTUFTSyB8IEJJVChEUFVfUElOR1BPTkdfVEUyKSkKPiAgCj4gICNkZWZpbmUgV0IyX1NETTg0 NV9NQVNLIFwKPiAgCShCSVQoRFBVX1dCX0xJTkVfTU9ERSkgfCBCSVQoRFBVX1dCX1RSQUZGSUNf U0hBUEVSKSB8IEJJVChEUFVfV0JfQ0RQKSB8XAo+IEBAIC0xMTksOCArMTE5LDcgQEAKPiAgCXsK PiAgCS5uYW1lID0gImN0bF8wIiwgLmlkID0gQ1RMXzAsCj4gIAkuYmFzZSA9IDB4MjAwMCwgLmxl biA9IDB4RTQsCj4gLQkuZmVhdHVyZXMgPSBCSVQoRFBVX0NUTF9TUExJVF9ESVNQTEFZKSB8Cj4g LQkJQklUKERQVV9DVExfUElOR1BPTkdfU1BMSVQpCj4gKwkuZmVhdHVyZXMgPSBCSVQoRFBVX0NU TF9TUExJVF9ESVNQTEFZKQo+ICAJfSwKPiAgCXsKPiAgCS5uYW1lID0gImN0bF8xIiwgLmlkID0g Q1RMXzEsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9o d19jYXRhbG9nLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxv Zy5oCj4gaW5kZXggY2VmZjNiNy4uMzliZWMwYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaAo+IEBAIC0yMTQsMTIgKzIxNCwxMCBAQCBl bnVtIHsKPiAgLyoqCj4gICAqIENUTCBzdWItYmxvY2tzCj4gICAqIEBEUFVfQ1RMX1NQTElUX0RJ U1BMQVkgICAgICAgQ1RMIHN1cHBvcnRzIHZpZGVvIG1vZGUgc3BsaXQgZGlzcGxheQo+IC0gKiBA RFBVX0NUTF9QSU5HUE9OR19TUExJVCAgICAgIENUTCBzdXBwb3J0cyBwaW5ncG9uZyBzcGxpdAo+ ICAgKiBARFBVX0NUTF9NQVgKPiAgICovCj4gIGVudW0gewo+ICAJRFBVX0NUTF9TUExJVF9ESVNQ TEFZID0gMHgxLAo+IC0JRFBVX0NUTF9QSU5HUE9OR19TUExJVCwKPiAgCURQVV9DVExfTUFYCj4g IH07Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfdG9wLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMKPiBp bmRleCA2MGU0YmVmLi44ZjdmOTMyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9od190b3AuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9od190b3AuYwo+IEBAIC04MCwxMSArODAsNiBAQCBzdGF0aWMgdm9pZCBkcHVfaHdf c2V0dXBfc3BsaXRfcGlwZShzdHJ1Y3QgZHB1X2h3X21kcCAqbWRwLAo+ICAJCQkJbG93ZXJfcGlw ZSB8PSBGTERfSU5URl8xX1NXX1RSR19NVVg7Cj4gIAkJCWVsc2UKPiAgCQkJCWxvd2VyX3BpcGUg fD0gRkxEX0lOVEZfMl9TV19UUkdfTVVYOwo+IC0KPiAtCQkJLyogZnJlZSBydW4gKi8KPiAtCQkJ aWYgKGNmZy0+cHBfc3BsaXRfc2xhdmUgIT0gSU5URl9NQVgpCj4gLQkJCQlsb3dlcl9waXBlID0g RkxEX1NNQVJUX1BBTkVMX0ZSRUVfUlVOOwo+IC0KPiAgCQkJdXBwZXJfcGlwZSA9IGxvd2VyX3Bp cGU7Cj4gIAkJfSBlbHNlIHsKPiAgCQkJaWYgKGNmZy0+aW50ZiA9PSBJTlRGXzIpIHsKPiBAQCAt MTAzLDMzICs5OCw2IEBAIHN0YXRpYyB2b2lkIGRwdV9od19zZXR1cF9zcGxpdF9waXBlKHN0cnVj dCBkcHVfaHdfbWRwICptZHAsCj4gIAlEUFVfUkVHX1dSSVRFKGMsIFNQTElUX0RJU1BMQVlfRU4s IGNmZy0+ZW4gJiAweDEpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBkcHVfaHdfc2V0dXBfcHBf c3BsaXQoc3RydWN0IGRwdV9od19tZHAgKm1kcCwKPiAtCQlzdHJ1Y3Qgc3BsaXRfcGlwZV9jZmcg KmNmZykKPiAtewo+IC0JdTMyIHBwYl9jb25maWcgPSAweDA7Cj4gLQl1MzIgcHBiX2NvbnRyb2wg PSAweDA7Cj4gLQo+IC0JaWYgKCFtZHAgfHwgIWNmZykKPiAtCQlyZXR1cm47Cj4gLQo+IC0JaWYg KGNmZy0+ZW4gJiYgY2ZnLT5wcF9zcGxpdF9zbGF2ZSAhPSBJTlRGX01BWCkgewo+IC0JCXBwYl9j b25maWcgfD0gKGNmZy0+cHBfc3BsaXRfc2xhdmUgLSBJTlRGXzAgKyAxKSA8PCAyMDsKPiAtCQlw cGJfY29uZmlnIHw9IEJJVCgxNik7IC8qIHNwbGl0IGVuYWJsZSAqLwo+IC0JCXBwYl9jb250cm9s ID0gQklUKDUpOyAvKiBob3J6IHNwbGl0Ki8KPiAtCX0KPiAtCWlmIChjZmctPnBwX3NwbGl0X2lu ZGV4KSB7Cj4gLQkJRFBVX1JFR19XUklURSgmbWRwLT5odywgUFBCMF9DT05GSUcsIDB4MCk7Cj4g LQkJRFBVX1JFR19XUklURSgmbWRwLT5odywgUFBCMF9DTlRMLCAweDApOwo+IC0JCURQVV9SRUdf V1JJVEUoJm1kcC0+aHcsIFBQQjFfQ09ORklHLCBwcGJfY29uZmlnKTsKPiAtCQlEUFVfUkVHX1dS SVRFKCZtZHAtPmh3LCBQUEIxX0NOVEwsIHBwYl9jb250cm9sKTsKPiAtCX0gZWxzZSB7Cj4gLQkJ RFBVX1JFR19XUklURSgmbWRwLT5odywgUFBCMF9DT05GSUcsIHBwYl9jb25maWcpOwo+IC0JCURQ VV9SRUdfV1JJVEUoJm1kcC0+aHcsIFBQQjBfQ05UTCwgcHBiX2NvbnRyb2wpOwo+IC0JCURQVV9S RUdfV1JJVEUoJm1kcC0+aHcsIFBQQjFfQ09ORklHLCAweDApOwo+IC0JCURQVV9SRUdfV1JJVEUo Jm1kcC0+aHcsIFBQQjFfQ05UTCwgMHgwKTsKPiAtCX0KPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQg ZHB1X2h3X3NldHVwX2NkbV9vdXRwdXQoc3RydWN0IGRwdV9od19tZHAgKm1kcCwKPiAgCQlzdHJ1 Y3QgY2RtX291dHB1dF9jZmcgKmNmZykKPiAgewo+IEBAIC0zNDksNyArMzE3LDYgQEAgc3RhdGlj IHZvaWQgX3NldHVwX21kcF9vcHMoc3RydWN0IGRwdV9od19tZHBfb3BzICpvcHMsCj4gIAkJdW5z aWduZWQgbG9uZyBjYXApCj4gIHsKPiAgCW9wcy0+c2V0dXBfc3BsaXRfcGlwZSA9IGRwdV9od19z ZXR1cF9zcGxpdF9waXBlOwo+IC0Jb3BzLT5zZXR1cF9wcF9zcGxpdCA9IGRwdV9od19zZXR1cF9w cF9zcGxpdDsKPiAgCW9wcy0+c2V0dXBfY2RtX291dHB1dCA9IGRwdV9od19zZXR1cF9jZG1fb3V0 cHV0Owo+ICAJb3BzLT5zZXR1cF9jbGtfZm9yY2VfY3RybCA9IGRwdV9od19zZXR1cF9jbGtfZm9y Y2VfY3RybDsKPiAgCW9wcy0+Z2V0X2Rhbmdlcl9zdGF0dXMgPSBkcHVfaHdfZ2V0X2Rhbmdlcl9z dGF0dXM7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9o d190b3AuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuaAo+IGlu ZGV4IDE0NzBkMGYuLjU0MjljZDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2h3X3RvcC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2h3X3RvcC5oCj4gQEAgLTQxLDggKzQxLDYgQEAgc3RydWN0IHRyYWZmaWNfc2hhcGVy X2NmZyB7Cj4gICAqIEBlbiAgICAgICAgOiBFbmFibGUvZGlzYWJsZSBkdWFsIHBpcGUgY29uZmd1 cmF0aW9uCj4gICAqIEBtb2RlICAgICAgOiBQYW5lbCBpbnRlcmZhY2UgbW9kZQo+ICAgKiBAaW50 ZiAgICAgIDogSW50ZXJmYWNlIGlkIGZvciBtYWluIGNvbnRyb2wgcGF0aAo+IC0gKiBAcHBfc3Bs aXRfc2xhdmU6IFNsYXZlIGludGVyZmFjZSBmb3IgcGluZyBwb25nIHNwbGl0LCBJTlRGX01BWCB0 byBkaXNhYmxlCj4gLSAqIEBwcF9zcGxpdF9pZHg6ICAgUGluZyBwb25nIGluZGV4IGZvciBwaW5n IHBvbmcgc3BsaXQKPiAgICogQHNwbGl0X2ZsdXNoX2VuOiBBbGxvd3MgYm90aCB0aGUgcGF0aHMg dG8gYmUgZmx1c2hlZCB3aGVuIG1hc3RlciBwYXRoIGlzCj4gICAqICAgICAgICAgICAgICBmbHVz aGVkCj4gICAqLwo+IEBAIC01MCw4ICs0OCw2IEBAIHN0cnVjdCBzcGxpdF9waXBlX2NmZyB7Cj4g IAlib29sIGVuOwo+ICAJZW51bSBkcHVfaW50Zl9tb2RlIG1vZGU7Cj4gIAllbnVtIGRwdV9pbnRm IGludGY7Cj4gLQllbnVtIGRwdV9pbnRmIHBwX3NwbGl0X3NsYXZlOwo+IC0JdTMyIHBwX3NwbGl0 X2luZGV4Owo+ICAJYm9vbCBzcGxpdF9mbHVzaF9lbjsKPiAgfTsKPiAgCj4gQEAgLTEwOSwxMyAr MTA1LDYgQEAgc3RydWN0IGRwdV9od19tZHBfb3BzIHsKPiAgCXZvaWQgKCpzZXR1cF9zcGxpdF9w aXBlKShzdHJ1Y3QgZHB1X2h3X21kcCAqbWRwLAo+ICAJCQlzdHJ1Y3Qgc3BsaXRfcGlwZV9jZmcg KnApOwo+ICAKPiAtCS8qKiBzZXR1cF9wcF9zcGxpdCgpIDogQ29uZmlndXJlIHBwIHNwbGl0IHJl bGF0ZWQgcmVnaXN0ZXJzCj4gLQkgKiBAbWRwICA6IG1kcCB0b3AgY29udGV4dCBkcml2ZXIKPiAt CSAqIEBjZmcgIDogdXBwZXIgYW5kIGxvd2VyIHBhcnQgb2YgcGlwZSBjb25maWd1cmF0aW9uCj4g LQkgKi8KPiAtCXZvaWQgKCpzZXR1cF9wcF9zcGxpdCkoc3RydWN0IGRwdV9od19tZHAgKm1kcCwK PiAtCQkJc3RydWN0IHNwbGl0X3BpcGVfY2ZnICpjZmcpOwo+IC0KPiAgCS8qKgo+ICAJICogc2V0 dXBfY2RtX291dHB1dCgpIDogU2V0dXAgc2VsZWN0aW9uIGNvbnRyb2wgb2YgdGhlIGNkbSBkYXRh IHBhdGgKPiAgCSAqIEBtZHAgIDogbWRwIHRvcCBjb250ZXh0IGRyaXZlcgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdpby5oIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3aW8uaAo+IGluZGV4IGI4ODcwODIuLjViMmJjOWIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3aW8uaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od2lvLmgKPiBAQCAtMzYsMTAg KzM2LDYgQEAKPiAgI2RlZmluZSBEU1BQX0lHQ19DT0xPUjBfUkFNX0xVVE4gICAgICAgIDB4MzAw Cj4gICNkZWZpbmUgRFNQUF9JR0NfQ09MT1IxX1JBTV9MVVROICAgICAgICAweDMwNAo+ICAjZGVm aW5lIERTUFBfSUdDX0NPTE9SMl9SQU1fTFVUTiAgICAgICAgMHgzMDgKPiAtI2RlZmluZSBQUEIw X0NOVEwgICAgICAgICAgICAgICAgICAgICAgIDB4MzMwCj4gLSNkZWZpbmUgUFBCMF9DT05GSUcg ICAgICAgICAgICAgICAgICAgICAweDMzNAo+IC0jZGVmaW5lIFBQQjFfQ05UTCAgICAgICAgICAg ICAgICAgICAgICAgMHgzMzgKPiAtI2RlZmluZSBQUEIxX0NPTkZJRyAgICAgICAgICAgICAgICAg ICAgIDB4MzNDCj4gICNkZWZpbmUgSFdfRVZFTlRTX0NUTCAgICAgICAgICAgICAgICAgICAweDM3 Qwo+ICAjZGVmaW5lIENMS19DVFJMMyAgICAgICAgICAgICAgICAgICAgICAgMHgzQTgKPiAgI2Rl ZmluZSBDTEtfU1RBVFVTMyAgICAgICAgICAgICAgICAgICAgIDB4M0FDCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X3JtLmMKPiBpbmRleCAxM2VmYmViLi5jOGMxMmQzIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMKPiBAQCAtNTAsNyArNTAsNiBAQCBz dHJ1Y3QgZHB1X3JtX3RvcG9sb2d5X2RlZiB7Cj4gIAl7ICAgRFBVX1JNX1RPUE9MT0dZX1NJTkdM RVBJUEUsICAgICAgICAgICAxLCAwLCAxLCAxLCBmYWxzZSB9LAo+ICAJeyAgIERQVV9STV9UT1BP TE9HWV9EVUFMUElQRSwgICAgICAgICAgICAgMiwgMCwgMiwgMiwgdHJ1ZSAgfSwKPiAgCXsgICBE UFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJHRSwgICAgIDIsIDAsIDEsIDEsIGZhbHNlIH0s Cj4gLQl7ICAgRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQsICAgICAgICAgICAgICAxLCAwLCAyLCAx LCB0cnVlICB9LAo+ICB9Owo+ICAKPiAgLyoqCj4gQEAgLTUzMSw3ICs1MzAsNiBAQCBzdGF0aWMg Ym9vbCBfZHB1X3JtX2NoZWNrX2xtX2FuZF9nZXRfY29ubmVjdGVkX2Jsa3MoCj4gIAkJc3RydWN0 IGRwdV9ybV9od19ibGsgKnByaW1hcnlfbG0pCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBkcHVfbG1f Y2ZnICpsbV9jZmcgPSB0b19kcHVfaHdfbWl4ZXIobG0tPmh3KS0+Y2FwOwo+IC0JY29uc3Qgc3Ry dWN0IGRwdV9waW5ncG9uZ19jZmcgKnBwX2NmZzsKPiAgCXN0cnVjdCBkcHVfcm1faHdfaXRlciBp dGVyOwo+ICAJYm9vbCBpc192YWxpZF9kc3BwLCBpc192YWxpZF9kcywgcmV0Owo+ICAKPiBAQCAt NjUwLDE1ICs2NDgsNiBAQCBzdGF0aWMgYm9vbCBfZHB1X3JtX2NoZWNrX2xtX2FuZF9nZXRfY29u bmVjdGVkX2Jsa3MoCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiAtCXBwX2NmZyA9IHRv X2RwdV9od19waW5ncG9uZygoKnBwKS0+aHcpLT5jYXBzOwo+IC0JaWYgKChyZXFzLT50b3BvbG9n eS0+dG9wX25hbWUgPT0gRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQpICYmCj4gLQkJCSEodGVzdF9i aXQoRFBVX1BJTkdQT05HX1NQTElULCAmcHBfY2ZnLT5mZWF0dXJlcykpKSB7Cj4gLQkJRFBVX0RF QlVHKCJwcCAlZCBkb2Vzbid0IHN1cHBvcnQgcHBzcGxpdFxuIiwgcHBfY2ZnLT5pZCk7Cj4gLQkJ KmRzcHAgPSBOVUxMOwo+IC0JCSpkcyA9IE5VTEw7Cj4gLQkJcmV0dXJuIGZhbHNlOwo+IC0JfQo+ IC0KPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+IEBAIC03NDIsMjYgKzczMSw2IEBAIHN0YXRp YyBpbnQgX2RwdV9ybV9yZXNlcnZlX2xtcygKPiAgCQkJCWRzW2ldID8gZHNbaV0tPmlkIDogMCk7 Cj4gIAl9Cj4gIAo+IC0JaWYgKHJlcXMtPnRvcG9sb2d5LT50b3BfbmFtZSA9PSBEUFVfUk1fVE9Q T0xPR1lfUFBTUExJVCkgewo+IC0JCS8qIHJlc2VydmUgYSBmcmVlIFBJTkdQT05HX1NMQVZFIGJs b2NrICovCj4gLQkJcmMgPSAtRU5BVkFJTDsKPiAtCQlkcHVfcm1faW5pdF9od19pdGVyKCZpdGVy X2ksIDAsIERQVV9IV19CTEtfUElOR1BPTkcpOwo+IC0JCXdoaWxlIChfZHB1X3JtX2dldF9od19s b2NrZWQocm0sICZpdGVyX2kpKSB7Cj4gLQkJCWNvbnN0IHN0cnVjdCBkcHVfaHdfcGluZ3Bvbmcg KnBwID0KPiAtCQkJCQl0b19kcHVfaHdfcGluZ3BvbmcoaXRlcl9pLmJsay0+aHcpOwo+IC0JCQlj b25zdCBzdHJ1Y3QgZHB1X3Bpbmdwb25nX2NmZyAqcHBfY2ZnID0gcHAtPmNhcHM7Cj4gLQo+IC0J CQlpZiAoISh0ZXN0X2JpdChEUFVfUElOR1BPTkdfU0xBVkUsICZwcF9jZmctPmZlYXR1cmVzKSkp Cj4gLQkJCQljb250aW51ZTsKPiAtCQkJaWYgKFJFU0VSVkVEX0JZX09USEVSKGl0ZXJfaS5ibGss IHJzdnApKQo+IC0JCQkJY29udGludWU7Cj4gLQo+IC0JCQlpdGVyX2kuYmxrLT5yc3ZwX254dCA9 IHJzdnA7Cj4gLQkJCXJjID0gMDsKPiAtCQkJYnJlYWs7Cj4gLQkJfQo+IC0JfQo+IC0KPiAgCXJl dHVybiByYzsKPiAgfQo+ICAKPiBAQCAtNzgwLDIyICs3NDksMTggQEAgc3RhdGljIGludCBfZHB1 X3JtX3Jlc2VydmVfY3RscygKPiAgCXdoaWxlIChfZHB1X3JtX2dldF9od19sb2NrZWQocm0sICZp dGVyKSkgewo+ICAJCWNvbnN0IHN0cnVjdCBkcHVfaHdfY3RsICpjdGwgPSB0b19kcHVfaHdfY3Rs KGl0ZXIuYmxrLT5odyk7Cj4gIAkJdW5zaWduZWQgbG9uZyBmZWF0dXJlcyA9IGN0bC0+Y2Fwcy0+ ZmVhdHVyZXM7Cj4gLQkJYm9vbCBoYXNfc3BsaXRfZGlzcGxheSwgaGFzX3Bwc3BsaXQ7Cj4gKwkJ Ym9vbCBoYXNfc3BsaXRfZGlzcGxheTsKPiAgCj4gIAkJaWYgKFJFU0VSVkVEX0JZX09USEVSKGl0 ZXIuYmxrLCByc3ZwKSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCWhhc19zcGxpdF9kaXNwbGF5 ID0gQklUKERQVV9DVExfU1BMSVRfRElTUExBWSkgJiBmZWF0dXJlczsKPiAtCQloYXNfcHBzcGxp dCA9IEJJVChEUFVfQ1RMX1BJTkdQT05HX1NQTElUKSAmIGZlYXR1cmVzOwo+ICAKPiAgCQlEUFVf REVCVUcoImN0bCAlZCBjYXBzIDB4JWxYXG4iLCBpdGVyLmJsay0+aWQsIGZlYXR1cmVzKTsKPiAg Cj4gIAkJaWYgKHRvcC0+bmVlZHNfc3BsaXRfZGlzcGxheSAhPSBoYXNfc3BsaXRfZGlzcGxheSkK PiAgCQkJY29udGludWU7Cj4gIAo+IC0JCWlmICh0b3AtPnRvcF9uYW1lID09IERQVV9STV9UT1BP TE9HWV9QUFNQTElUICYmICFoYXNfcHBzcGxpdCkKPiAtCQkJY29udGludWU7Cj4gLQo+ICAJCWN0 bHNbaV0gPSBpdGVyLmJsazsKPiAgCQlEUFVfREVCVUcoImN0bCAlZCBtYXRjaFxuIiwgaXRlci5i bGstPmlkKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9ybS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmgKPiBpbmRl eCAzZGI2MWI1Li44YTZjYmNmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9ybS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X3JtLmgKPiBAQCAtMjYsMTQgKzI2LDEyIEBACj4gICAqIEBEUFVfUk1fVE9QT0xPR1lfU0lOR0xF UElQRTogICAgICAgICAgIDEgTE0sIDEgUFAsIDEgSU5URi9XQgo+ICAgKiBARFBVX1JNX1RPUE9M T0dZX0RVQUxQSVBFOiAgICAgICAgICAgICAyIExNLCAyIFBQLCAyIElOVEYvV0IKPiAgICogQERQ VV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFOiAgICAgMiBMTSwgMiBQUCwgM0RNdXgsIDEg SU5URi9XQgo+IC0gKiBARFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQ6ICAgICAgICAgICAgICAxIExN LCAyIFBQcywgMiBJTlRGL1dCCj4gICAqLwo+ICBlbnVtIGRwdV9ybV90b3BvbG9neV9uYW1lIHsK PiAgCURQVV9STV9UT1BPTE9HWV9OT05FID0gMCwKPiAgCURQVV9STV9UT1BPTE9HWV9TSU5HTEVQ SVBFLAo+ICAJRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFLAo+ICAJRFBVX1JNX1RPUE9MT0dZX0RV QUxQSVBFXzNETUVSR0UsCj4gLQlEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCwKPiAgCURQVV9STV9U T1BPTE9HWV9NQVgsCj4gIH07Cj4gIAo+IC0tIAo+IFRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENl bnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCj4gYSBMaW51 eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAo+IAoKLS0gClNlYW4gUGF1bCwgU29m dHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRy ZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=