From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 1/5] drm: Add helpers to kick off self refresh mode in drivers Date: Tue, 2 Apr 2019 11:08:49 +0200 Message-ID: <20190402090849.GJ2665@phenom.ffwll.local> References: <20190326204509.96515-1-sean@poorly.run> <8ba6f725-4672-f987-d83f-11c4f59e1bfc@baylibre.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1835A6E751 for ; Tue, 2 Apr 2019 09:08:54 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id m16so10900301edd.12 for ; Tue, 02 Apr 2019 02:08:54 -0700 (PDT) Content-Disposition: inline In-Reply-To: <8ba6f725-4672-f987-d83f-11c4f59e1bfc@baylibre.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Neil Armstrong Cc: Zain Wang , David Airlie , Jose Souza , Tomasz Figa , Maxime Ripard , Sean Paul , dri-devel@lists.freedesktop.org, Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBcHIgMDIsIDIwMTkgYXQgMTA6NTU6MjRBTSArMDIwMCwgTmVpbCBBcm1zdHJvbmcg d3JvdGU6Cj4gSGkgU2VhbiwKPiAKPiBPbiAyNi8wMy8yMDE5IDIxOjQ0LCBTZWFuIFBhdWwgd3Jv dGU6Cj4gPiBGcm9tOiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KPiA+IAo+ID4g VGhpcyBwYXRjaCBhZGRzIGEgbmV3IGRybSBoZWxwZXIgbGlicmFyeSB0byBoZWxwIGRyaXZlcnMg aW1wbGVtZW50Cj4gPiBzZWxmIHJlZnJlc2guIERyaXZlcnMgY2hvb3NpbmcgdG8gdXNlIGl0IHdp bGwgcmVnaXN0ZXIgY3J0Y3MgYW5kCj4gPiB3aWxsIHJlY2VpdmUgY2FsbGJhY2tzIHdoZW4gaXQn cyB0aW1lIHRvIGVudGVyIG9yIGV4aXQgc2VsZiByZWZyZXNoCj4gPiBtb2RlLgo+ID4gCj4gPiBJ biBpdHMgY3VycmVudCBmb3JtLCBpdCBoYXMgYSB0aW1lciB3aGljaCB3aWxsIHRyaWdnZXIgYWZ0 ZXIgYQo+ID4gZHJpdmVyLXNwZWNpZmllZCBhbW91bnQgb2YgaW5hY3Rpdml0eS4gV2hlbiB0aGUg dGltZXIgdHJpZ2dlcnMsIHRoZQo+ID4gaGVscGVycyB3aWxsIHN1Ym1pdCBhIG5ldyBhdG9taWMg Y29tbWl0IHRvIHNodXQgdGhlIHJlZnJlc2hpbmcgcGlwZQo+ID4gb2ZmLiBPbiB0aGUgbmV4dCBh dG9taWMgY29tbWl0LCB0aGUgZHJtIGNvcmUgd2lsbCByZXZlcnQgdGhlIHNlbGYKPiA+IHJlZnJl c2ggc3RhdGUgYW5kIGJyaW5nIGV2ZXJ5dGhpbmcgYmFjayB1cCB0byBiZSBhY3RpdmVseSBkcml2 ZW4uCj4gPiAKPiA+IEZyb20gdGhlIGRyaXZlcidzIHBlcnNwZWN0aXZlLCB0aGlzIHdvcmtzIGxp a2UgYSByZWd1bGFyIGRpc2FibGUvZW5hYmxlCj4gPiBjeWNsZS4gVGhlIGRyaXZlciBuZWVkIG9u bHkgY2hlY2sgdGhlICdzZWxmX3JlZnJlc2hfYWN0aXZlJyBhbmQvb3IKPiA+ICdzZWxmX3JlZnJl c2hfY2hhbmdlZCcgc3RhdGUgaW4gY3J0Y19zdGF0ZSBhbmQgY29ubmVjdG9yX3N0YXRlLiBJdAo+ ID4gc2hvdWxkIGluaXRpYXRlIHNlbGYgcmVmcmVzaCBtb2RlIG9uIHRoZSBwYW5lbCBhbmQgZW50 ZXIgYW4gb2ZmIG9yCj4gPiBsb3ctcG93ZXIgc3RhdGUuCj4gCj4gSXQgbWF5IGJlIGEgc3R1cGlk IHF1ZXN0aW9uLCBidXQgY2FuJ3QgdGhpcyBtYWtlIHVzZSBvZiBQTSBydW50aW1lID8KCnRiaCBu byBpZGVhIHdoYXQgeW91IGhhdmUgaW4gbWluZCAuLi4gQ2FuIHlvdSBwbHMgZXhwbGFpbiBhIGJp dCBtb3JlPwotRGFuaWVsCgo+IAo+IE5laWwKPiAKPiA+IAo+ID4gQ2hhbmdlcyBpbiB2MjoKPiA+ IC0gcy9wc3Ivc2VsZl9yZWZyZXNoLyAoRGFuaWVsKQo+ID4gLSBpbnRlZ3JhdGVkIHRoZSBwc3Ig ZXhpdCBpbnRvIHRoZSBjb21taXQgdGhhdCB3YWtlcyBpdCB1cCAoSm9zZS9EYW5pZWwpCj4gPiAt IG1hZGUgdGhlIHBzciBzdGF0ZSBwZXItY3J0YyAoSm9zZS9EYW5pZWwpCj4gPiAKPiA+IExpbmsg dG8gdjE6IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC9tc2dpZC8yMDE5 MDIyODIxMDkzOS44MzM4Ni0yLXNlYW5AcG9vcmx5LnJ1bgo+ID4gCj4gPiBDYzogRGFuaWVsIFZl dHRlciA8ZGFuaWVsQGZmd2xsLmNoPgo+ID4gQ2M6IEpvc2UgU291emEgPGpvc2Uuc291emFAaW50 ZWwuY29tPgo+ID4gQ2M6IFphaW4gV2FuZyA8d3p6QHJvY2stY2hpcHMuY29tPgo+ID4gQ2M6IFRv bWFzeiBGaWdhIDx0ZmlnYUBjaHJvbWl1bS5vcmc+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBTZWFuIFBh dWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KPiA+IC0tLQo+ID4gIERvY3VtZW50YXRpb24vZ3B1 L2RybS1rbXMtaGVscGVycy5yc3QgICAgIHwgICA5ICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUgICAgICAgICAgICAgICAgICB8ICAgMyArLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljLmMgICAgICAgICAgICAgIHwgICA0ICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0 b21pY19oZWxwZXIuYyAgICAgICB8ICAzNiArKystCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWNfc3RhdGVfaGVscGVyLmMgfCAgIDggKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX3VhcGkuYyAgICAgICAgIHwgICA1ICstCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9zZWxm X3JlZnJlc2hfaGVscGVyLmMgfCAyMTIgKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIGluY2x1 ZGUvZHJtL2RybV9hdG9taWMuaCAgICAgICAgICAgICAgICAgIHwgIDE1ICsrCj4gPiAgaW5jbHVk ZS9kcm0vZHJtX2Nvbm5lY3Rvci5oICAgICAgICAgICAgICAgfCAgMzEgKysrKwo+ID4gIGluY2x1 ZGUvZHJtL2RybV9jcnRjLmggICAgICAgICAgICAgICAgICAgIHwgIDE5ICsrCj4gPiAgaW5jbHVk ZS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIuaCAgICAgfCAgMjMgKysrCj4gPiAgMTEgZmls ZXMgY2hhbmdlZCwgMzYwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fc2VsZl9yZWZyZXNoX2hlbHBlci5jCj4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVy LmgKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVy cy5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0Cj4gPiBpbmRleCA1 OGIzNzVlNDc2MTUuLmIwYjcxZjczODI5ZiAxMDA2NDQKPiA+IC0tLSBhL0RvY3VtZW50YXRpb24v Z3B1L2RybS1rbXMtaGVscGVycy5yc3QKPiA+ICsrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1r bXMtaGVscGVycy5yc3QKPiA+IEBAIC0xMDcsNiArMTA3LDE1IEBAIGZiZGV2IEhlbHBlciBGdW5j dGlvbnMgUmVmZXJlbmNlCj4gPiAgLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1f ZmJfaGVscGVyLmMKPiA+ICAgICA6ZXhwb3J0Ogo+ID4gIAo+ID4gK1BhbmVsIFNlbGYgUmVmcmVz aCBIZWxwZXIgUmVmZXJlbmNlCj4gPiArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KPiA+ICsKPiA+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9zZWxmX3Jl ZnJlc2hfaGVscGVyLmMKPiA+ICsgICA6ZG9jOiBvdmVydmlldwo+ID4gKwo+ID4gKy4uIGtlcm5l bC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIuYwo+ID4gKyAg IDpleHBvcnQ6Cj4gPiArCj4gPiAgRnJhbWVidWZmZXIgQ01BIEhlbHBlciBGdW5jdGlvbnMgUmVm ZXJlbmNlCj4gPiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4g PiAgCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9n cHUvZHJtL01ha2VmaWxlCj4gPiBpbmRleCBlNjMwZWNjYjk1MWMuLjViM2ExZTI2ZWM5NCAxMDA2 NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL01ha2VmaWxlCj4gPiBAQCAtMzgsNyArMzgsOCBAQCBkcm1fa21zX2hlbHBlci15IDo9 IGRybV9jcnRjX2hlbHBlci5vIGRybV9kcF9oZWxwZXIubyBkcm1fZHNjLm8gZHJtX3Byb2JlX2hl bHBlcgo+ID4gIAkJZHJtX2ttc19oZWxwZXJfY29tbW9uLm8gZHJtX2RwX2R1YWxfbW9kZV9oZWxw ZXIubyBcCj4gPiAgCQlkcm1fc2ltcGxlX2ttc19oZWxwZXIubyBkcm1fbW9kZXNldF9oZWxwZXIu byBcCj4gPiAgCQlkcm1fc2NkY19oZWxwZXIubyBkcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5v IFwKPiA+IC0JCWRybV9hdG9taWNfc3RhdGVfaGVscGVyLm8gZHJtX2RhbWFnZV9oZWxwZXIubwo+ ID4gKwkJZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIubyBkcm1fZGFtYWdlX2hlbHBlci5vIFwKPiA+ ICsJCWRybV9zZWxmX3JlZnJlc2hfaGVscGVyLm8KPiA+ICAKPiA+ICBkcm1fa21zX2hlbHBlci0k KENPTkZJR19EUk1fUEFORUxfQlJJREdFKSArPSBicmlkZ2UvcGFuZWwubwo+ID4gIGRybV9rbXNf aGVscGVyLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICs9IGRybV9mYl9oZWxwZXIubwo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pYy5jCj4gPiBpbmRleCA1ZWI0MDEzMGZhZmIuLmEwNmZlNTViNWViZiAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+IEBAIC0zNzksNiArMzc5LDcgQEAgc3RhdGlj IHZvaWQgZHJtX2F0b21pY19jcnRjX3ByaW50X3N0YXRlKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwK PiA+ICAJZHJtX3ByaW50ZihwLCAiY3J0Y1sldV06ICVzXG4iLCBjcnRjLT5iYXNlLmlkLCBjcnRj LT5uYW1lKTsKPiA+ICAJZHJtX3ByaW50ZihwLCAiXHRlbmFibGU9JWRcbiIsIHN0YXRlLT5lbmFi bGUpOwo+ID4gIAlkcm1fcHJpbnRmKHAsICJcdGFjdGl2ZT0lZFxuIiwgc3RhdGUtPmFjdGl2ZSk7 Cj4gPiArCWRybV9wcmludGYocCwgIlx0c2VsZl9yZWZyZXNoX2FjdGl2ZT0lZFxuIiwgc3RhdGUt PnNlbGZfcmVmcmVzaF9hY3RpdmUpOwo+ID4gIAlkcm1fcHJpbnRmKHAsICJcdHBsYW5lc19jaGFu Z2VkPSVkXG4iLCBzdGF0ZS0+cGxhbmVzX2NoYW5nZWQpOwo+ID4gIAlkcm1fcHJpbnRmKHAsICJc dG1vZGVfY2hhbmdlZD0lZFxuIiwgc3RhdGUtPm1vZGVfY2hhbmdlZCk7Cj4gPiAgCWRybV9wcmlu dGYocCwgIlx0YWN0aXZlX2NoYW5nZWQ9JWRcbiIsIHN0YXRlLT5hY3RpdmVfY2hhbmdlZCk7Cj4g PiBAQCAtODgxLDYgKzg4Miw5IEBAIHN0YXRpYyB2b2lkIGRybV9hdG9taWNfY29ubmVjdG9yX3By aW50X3N0YXRlKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwKPiA+ICAKPiA+ICAJZHJtX3ByaW50Zihw LCAiY29ubmVjdG9yWyV1XTogJXNcbiIsIGNvbm5lY3Rvci0+YmFzZS5pZCwgY29ubmVjdG9yLT5u YW1lKTsKPiA+ICAJZHJtX3ByaW50ZihwLCAiXHRjcnRjPSVzXG4iLCBzdGF0ZS0+Y3J0YyA/IHN0 YXRlLT5jcnRjLT5uYW1lIDogIihudWxsKSIpOwo+ID4gKwlkcm1fcHJpbnRmKHAsICJcdHNlbGZf cmVmcmVzaF9hY3RpdmU9JWRcbiIsIHN0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlKTsKPiA+ICsJ ZHJtX3ByaW50ZihwLCAiXHRzZWxmX3JlZnJlc2hfYXdhcmU9JWRcbiIsIHN0YXRlLT5zZWxmX3Jl ZnJlc2hfYXdhcmUpOwo+ID4gKwlkcm1fcHJpbnRmKHAsICJcdHNlbGZfcmVmcmVzaF9jaGFuZ2Vk PSVkXG4iLCBzdGF0ZS0+c2VsZl9yZWZyZXNoX2NoYW5nZWQpOwo+ID4gIAo+ID4gIAlpZiAoY29u bmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfV1JJVEVCQUNLKQo+ ID4gIAkJaWYgKHN0YXRlLT53cml0ZWJhY2tfam9iICYmIHN0YXRlLT53cml0ZWJhY2tfam9iLT5m YikKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gPiBpbmRleCAyNDUzNjc4ZDEx ODYuLmM2NTlkYjEwNTEzMyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX2hlbHBlci5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIu Ywo+ID4gQEAgLTMwLDYgKzMwLDcgQEAKPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfdWFw aS5oPgo+ID4gICNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgo+ID4gICNpbmNsdWRl IDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9zZWxmX3Jl ZnJlc2hfaGVscGVyLmg+Cj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNrLmg+Cj4gPiAg I2luY2x1ZGUgPGRybS9kcm1fZGFtYWdlX2hlbHBlci5oPgo+ID4gICNpbmNsdWRlIDxsaW51eC9k bWEtZmVuY2UuaD4KPiA+IEBAIC05NTAsMTAgKzk1MSwzMyBAQCBpbnQgZHJtX2F0b21pY19oZWxw ZXJfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJaWYgKHN0YXRlLT5sZWdhY3lf Y3Vyc29yX3VwZGF0ZSkKPiA+ICAJCXN0YXRlLT5hc3luY191cGRhdGUgPSAhZHJtX2F0b21pY19o ZWxwZXJfYXN5bmNfY2hlY2soZGV2LCBzdGF0ZSk7Cj4gPiAgCj4gPiArCWRybV9zZWxmX3JlZnJl c2hfaGVscGVyX2FsdGVyX3N0YXRlKHN0YXRlKTsKPiA+ICsKPiA+ICAJcmV0dXJuIHJldDsKPiA+ ICB9Cj4gPiAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jaGVjayk7Cj4gPiAgCj4g PiArc3RhdGljIGJvb2wKPiA+ICtjcnRjX25lZWRzX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjX3N0 YXRlICpvbGRfc3RhdGUsCj4gPiArCQkgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19zdGF0 ZSkKPiA+ICt7Cj4gPiArCS8qCj4gPiArCSAqIE5vIG5ld19zdGF0ZSBtZWFucyB0aGUgY3J0YyBp cyBvZmYsIHNvIHRoZSBvbmx5IGNyaXRlcmlhIGlzIHdoZXRoZXIKPiA+ICsJICogaXQncyBjdXJy ZW50bHkgYWN0aXZlIG9yIGluIHNlbGYgcmVmcmVzaCBtb2RlLgo+ID4gKwkgKi8KPiA+ICsJaWYg KCFuZXdfc3RhdGUpCj4gPiArCQlyZXR1cm4gZHJtX2F0b21pY19jcnRjX2VmZmVjdGl2ZWx5X2Fj dGl2ZShvbGRfc3RhdGUpOwo+ID4gKwo+ID4gKwkvKgo+ID4gKwkgKiBXZSBuZWVkIHRvIHJ1biB0 aHJvdWdoIHRoZSBjcnRjX2Z1bmNzLT5kaXNhYmxlKCkgZnVuY3Rpb24gaWYgdGhlIGNydGMKPiA+ ICsJICogaXMgY3VycmVudGx5IG9uLCBpZiBpdCdzIHRyYW5zaXRpb25pbmcgdG8gc2VsZiByZWZy ZXNoIG1vZGUsIG9yIGlmCj4gPiArCSAqIGl0J3MgaW4gc2VsZiByZWZyZXNoIG1vZGUgYW5kIG5l ZWRzIHRvIGJlIGZ1bGx5IGRpc2FibGVkLgo+ID4gKwkgKi8KPiA+ICsJcmV0dXJuIG9sZF9zdGF0 ZS0+YWN0aXZlIHx8Cj4gPiArCSAgICAgICAob2xkX3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZl ICYmICFuZXdfc3RhdGUtPmVuYWJsZSkgfHwKPiA+ICsJICAgICAgIG5ld19zdGF0ZS0+c2VsZl9y ZWZyZXNoX2FjdGl2ZTsKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIHZvaWQKPiA+ICBkaXNhYmxl X291dHB1dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUg Km9sZF9zdGF0ZSkKPiA+ICB7Cj4gPiBAQCAtOTc0LDcgKzk5OCwxNCBAQCBkaXNhYmxlX291dHB1 dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9z dGF0ZSkKPiA+ICAKPiA+ICAJCW9sZF9jcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfb2xkX2Ny dGNfc3RhdGUob2xkX3N0YXRlLCBvbGRfY29ubl9zdGF0ZS0+Y3J0Yyk7Cj4gPiAgCj4gPiAtCQlp ZiAoIW9sZF9jcnRjX3N0YXRlLT5hY3RpdmUgfHwKPiA+ICsJCWlmIChuZXdfY29ubl9zdGF0ZS0+ Y3J0YykKPiA+ICsJCQluZXdfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0 YXRlKAo+ID4gKwkJCQkJCW9sZF9zdGF0ZSwKPiA+ICsJCQkJCQluZXdfY29ubl9zdGF0ZS0+Y3J0 Yyk7Cj4gPiArCQllbHNlCj4gPiArCQkJbmV3X2NydGNfc3RhdGUgPSBOVUxMOwo+ID4gKwo+ID4g KwkJaWYgKCFjcnRjX25lZWRzX2Rpc2FibGUob2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRl KSB8fAo+ID4gIAkJICAgICFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChvbGRfY29ubl9z dGF0ZS0+Y3J0Yy0+c3RhdGUpKQo+ID4gIAkJCWNvbnRpbnVlOwo+ID4gIAo+ID4gQEAgLTEwMTgs NyArMTA0OSw3IEBAIGRpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ID4gIAkJaWYgKCFkcm1fYXRvbWljX2Ny dGNfbmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSkpCj4gPiAgCQkJY29udGludWU7Cj4gPiAg Cj4gPiAtCQlpZiAoIW9sZF9jcnRjX3N0YXRlLT5hY3RpdmUpCj4gPiArCQlpZiAoIWNydGNfbmVl ZHNfZGlzYWJsZShvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUpKQo+ID4gIAkJCWNvbnRp bnVlOwo+ID4gIAo+ID4gIAkJZnVuY3MgPSBjcnRjLT5oZWxwZXJfcHJpdmF0ZTsKPiA+IEBAIC0y OTQ4LDYgKzI5NzksNyBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZyhzdHJ1Y3Qg ZHJtX21vZGVfc2V0ICpzZXQsCj4gPiAgCQlyZXR1cm4gLUVOT01FTTsKPiA+ICAKPiA+ICAJc3Rh dGUtPmFjcXVpcmVfY3R4ID0gY3R4Owo+ID4gKwo+ID4gIAlyZXQgPSBfX2RybV9hdG9taWNfaGVs cGVyX3NldF9jb25maWcoc2V0LCBzdGF0ZSk7Cj4gPiAgCWlmIChyZXQgIT0gMCkKPiA+ICAJCWdv dG8gZmFpbDsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19zdGF0 ZV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3N0YXRlX2hlbHBlci5jCj4g PiBpbmRleCA0OTg1Mzg0ZTUxZjYuLmVjOTBjNTI3ZGVlZCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljX3N0YXRlX2hlbHBlci5jCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYwo+ID4gQEAgLTEwNSw2ICsxMDUsMTAgQEAg dm9pZCBfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiA+ICAJc3RhdGUtPmNvbW1pdCA9IE5VTEw7Cj4gPiAgCXN0YXRlLT5ldmVu dCA9IE5VTEw7Cj4gPiAgCXN0YXRlLT5wYWdlZmxpcF9mbGFncyA9IDA7Cj4gPiArCj4gPiArCS8q IFNlbGYgcmVmcmVzaCBzaG91bGQgYmUgY2FuY2VsZWQgd2hlbiBhIG5ldyB1cGRhdGUgaXMgYXZh aWxhYmxlICovCj4gPiArCXN0YXRlLT5hY3RpdmUgPSBkcm1fYXRvbWljX2NydGNfZWZmZWN0aXZl bHlfYWN0aXZlKHN0YXRlKTsKPiA+ICsJc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUgPSBmYWxz ZTsKPiA+ICB9Cj4gPiAgRVhQT1JUX1NZTUJPTChfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZHVw bGljYXRlX3N0YXRlKTsKPiA+ICAKPiA+IEBAIC0zNzAsNiArMzc0LDEwIEBAIF9fZHJtX2F0b21p Y19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAo+ID4gIAo+ID4gIAkvKiBEb24ndCBjb3B5IG92ZXIgYSB3cml0ZWJhY2sgam9i LCB0aGV5IGFyZSB1c2VkIG9ubHkgb25jZSAqLwo+ID4gIAlzdGF0ZS0+d3JpdGViYWNrX2pvYiA9 IE5VTEw7Cj4gPiArCj4gPiArCS8qIFNlbGYgcmVmcmVzaCBzaG91bGQgYmUgY2FuY2VsZWQgd2hl biBhIG5ldyB1cGRhdGUgaXMgYXZhaWxhYmxlICovCj4gPiArCXN0YXRlLT5zZWxmX3JlZnJlc2hf Y2hhbmdlZCA9IHN0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlOwo+ID4gKwlzdGF0ZS0+c2VsZl9y ZWZyZXNoX2FjdGl2ZSA9IGZhbHNlOwo+ID4gIH0KPiA+ICBFWFBPUlRfU1lNQk9MKF9fZHJtX2F0 b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSk7Cj4gPiAgCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfdWFwaS5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfdWFwaS5jCj4gPiBpbmRleCA0ZWI4MWYxMGJjNTQuLmQyMDg1MzMyMTcyYiAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfdWFwaS5jCj4gPiBAQCAtNDkwLDcgKzQ5MCw3 IEBAIGRybV9hdG9taWNfY3J0Y19nZXRfcHJvcGVydHkoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ ID4gIAlzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPSAmZGV2LT5tb2RlX2NvbmZpZzsK PiA+ICAKPiA+ICAJaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9hY3RpdmUpCj4gPiAtCQkq dmFsID0gc3RhdGUtPmFjdGl2ZTsKPiA+ICsJCSp2YWwgPSBkcm1fYXRvbWljX2NydGNfZWZmZWN0 aXZlbHlfYWN0aXZlKHN0YXRlKTsKPiA+ICAJZWxzZSBpZiAocHJvcGVydHkgPT0gY29uZmlnLT5w cm9wX21vZGVfaWQpCj4gPiAgCQkqdmFsID0gKHN0YXRlLT5tb2RlX2Jsb2IpID8gc3RhdGUtPm1v ZGVfYmxvYi0+YmFzZS5pZCA6IDA7Cj4gPiAgCWVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+ cHJvcF92cnJfZW5hYmxlZCkKPiA+IEBAIC03ODUsNyArNzg1LDggQEAgZHJtX2F0b21pY19jb25u ZWN0b3JfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiAg CWlmIChwcm9wZXJ0eSA9PSBjb25maWctPnByb3BfY3J0Y19pZCkgewo+ID4gIAkJKnZhbCA9IChz dGF0ZS0+Y3J0YykgPyBzdGF0ZS0+Y3J0Yy0+YmFzZS5pZCA6IDA7Cj4gPiAgCX0gZWxzZSBpZiAo cHJvcGVydHkgPT0gY29uZmlnLT5kcG1zX3Byb3BlcnR5KSB7Cj4gPiAtCQkqdmFsID0gY29ubmVj dG9yLT5kcG1zOwo+ID4gKwkJKnZhbCA9IHN0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlID8gRFJN X01PREVfRFBNU19PTiA6Cj4gPiArCQkJY29ubmVjdG9yLT5kcG1zOwo+ID4gIAl9IGVsc2UgaWYg KHByb3BlcnR5ID09IGNvbmZpZy0+dHZfc2VsZWN0X3N1YmNvbm5lY3Rvcl9wcm9wZXJ0eSkgewo+ ID4gIAkJKnZhbCA9IHN0YXRlLT50di5zdWJjb25uZWN0b3I7Cj4gPiAgCX0gZWxzZSBpZiAocHJv cGVydHkgPT0gY29uZmlnLT50dl9sZWZ0X21hcmdpbl9wcm9wZXJ0eSkgewo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2VsZl9yZWZyZXNoX2hlbHBlci5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmEzYWZhMDMxNDgwZQo+ID4gLS0tIC9kZXYvbnVsbAo+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmMKPiA+IEBA IC0wLDAgKzEsMjEyIEBACj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAqLwo+ ID4gKy8qCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE5IEdvb2dsZSwgSW5jLgo+ID4gKyAqCj4g PiArICogQXV0aG9yczoKPiA+ICsgKiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4K PiA+ICsgKi8KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KPiA+ICsjaW5jbHVkZSA8 ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9y Lmg+Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+ID4gKyNpbmNsdWRlIDxkcm0vZHJt X2RldmljZS5oPgo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX21vZGVfY29uZmlnLmg+Cj4gPiArI2lu Y2x1ZGUgPGRybS9kcm1fbW9kZXNldF9sb2NrLmg+Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fcHJp bnQuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmg+Cj4gPiAr I2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4g PiArI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIERP Qzogb3ZlcnZpZXcKPiA+ICsgKgo+ID4gKyAqIFRoaXMgaGVscGVyIGxpYnJhcnkgcHJvdmlkZXMg YW4gZWFzeSB3YXkgZm9yIGRyaXZlcnMgdG8gbGV2ZXJhZ2UgdGhlIGF0b21pYwo+ID4gKyAqIGZy YW1ld29yayB0byBpbXBsZW1lbnQgcGFuZWwgc2VsZiByZWZyZXNoIChTUikgc3VwcG9ydC4gRHJp dmVycyBhcmUKPiA+ICsgKiByZXNwb25zaWJsZSBmb3IgcmVnaXN0ZXJpbmcgYW5kIHVucmVnaXN0 ZXJpbmcgdGhlIFNSIGhlbHBlcnMgb24gbG9hZC91bmxvYWQuCj4gPiArICoKPiA+ICsgKiBPbmNl IGEgY3J0YyBoYXMgZW5hYmxlZCBTUiwgdGhlIGhlbHBlcnMgd2lsbCBtb25pdG9yIGFjdGl2aXR5 IGFuZAo+ID4gKyAqIGNhbGwgYmFjayBpbnRvIHRoZSBkcml2ZXIgdG8gZW5hYmxlL2Rpc2FibGUg U1IgYXMgYXBwcm9wcmlhdGUuIFRoZSBiZXN0IHdheQo+ID4gKyAqIHRvIHRoaW5rIGFib3V0IHRo aXMgaXMgdGhhdCBpdCdzIGEgRFBNUyBvbi9vZmYgcmVxdWVzdCB3aXRoIGEgZmxhZyBzZXQgaW4K PiA+ICsgKiBzdGF0ZSB0aGF0IHRlbGxzIHlvdSB0byBkaXNhYmxlL2VuYWJsZSBTUiBvbiB0aGUg cGFuZWwgaW5zdGVhZCBvZiBwb3dlci0KPiA+ICsgKiBjeWNsaW5nIGl0Lgo+ID4gKyAqCj4gPiAr ICogRHJpdmVycyBtYXkgY2hvb3NlIHRvIGZ1bGx5IGRpc2FibGUgdGhlaXIgY3J0Yy9lbmNvZGVy L2JyaWRnZSBoYXJkd2FyZSwgb3IKPiA+ICsgKiB0aGV5IGNhbiB1c2UgdGhlICJzZWxmX3JlZnJl c2hfYWN0aXZlIiBhbmQgInNlbGZfcmVmcmVzaF9jaGFuZ2VkIiBmbGFncyBpbgo+ID4gKyAqIG9i amVjdCBzdGF0ZSBpZiB0aGV5IHdhbnQgdG8gZW50ZXIgbG93IHBvd2VyIG1vZGUgd2l0aG91dCBm dWxsIGRpc2FibGUgKGluCj4gPiArICogY2FzZSBmdWxsIGRpc2FibGUvZW5hYmxlIGlzIHRvbyBz bG93KS4KPiA+ICsgKgo+ID4gKyAqIFNSIHdpbGwgYmUgZGVhY3RpdmF0ZWQgaWYgdGhlcmUgYXJl IGFueSBhdG9taWMgdXBkYXRlcyBhZmZlY3RpbmcgdGhlCj4gPiArICogcGlwZSB0aGF0IGlzIGlu IFNSIG1vZGUuIElmIGEgY3J0YyBpcyBkcml2aW5nIG11bHRpcGxlIGNvbm5lY3RvcnMsIGFsbAo+ ID4gKyAqIGNvbm5lY3RvcnMgbXVzdCBiZSBTUiBhd2FyZSBhbmQgYWxsIHdpbGwgZW50ZXIgU1Ig bW9kZS4KPiA+ICsgKi8KPiA+ICsKPiA+ICtzdHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZSB7 Cj4gPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiA+ICsJc3RydWN0IGRlbGF5ZWRfd29yayBl bnRyeV93b3JrOwo+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc2F2ZV9zdGF0ZTsKPiA+ ICsJdW5zaWduZWQgaW50IGVudHJ5X2RlbGF5X21zOwo+ID4gK307Cj4gPiArCj4gPiArc3RhdGlj IHZvaWQgZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJfZW50cnlfd29yayhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZSAqc3Jf c3RhdGUgPSBjb250YWluZXJfb2YoCj4gPiArCQkJCXRvX2RlbGF5ZWRfd29yayh3b3JrKSwKPiA+ ICsJCQkJc3RydWN0IGRybV9zZWxmX3JlZnJlc2hfc3RhdGUsIGVudHJ5X3dvcmspOwo+ID4gKwlz dHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzcl9zdGF0ZS0+Y3J0YzsKPiA+ICsJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiA+ICsJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVf Y3R4IGN0eDsKPiA+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+ID4gKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubjsKPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3RhdGU7Cj4gPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiA+ ICsJaW50IGksIHJldDsKPiA+ICsKPiA+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgs IDApOwo+ID4gKwo+ID4gKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKPiA+ ICsJaWYgKCFzdGF0ZSkgewo+ID4gKwkJcmV0ID0gLUVOT01FTTsKPiA+ICsJCWdvdG8gb3V0Owo+ ID4gKwl9Cj4gPiArCj4gPiArcmV0cnk6Cj4gPiArCXN0YXRlLT5hY3F1aXJlX2N0eCA9ICZjdHg7 Cj4gPiArCj4gPiArCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRl LCBjcnRjKTsKPiA+ICsJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkgewo+ID4gKwkJcmV0ID0gUFRS X0VSUihjcnRjX3N0YXRlKTsKPiA+ICsJCWdvdG8gb3V0Owo+ID4gKwl9Cj4gPiArCj4gPiArCWlm ICghY3J0Y19zdGF0ZS0+ZW5hYmxlKQo+ID4gKwkJZ290byBvdXQ7Cj4gPiArCj4gPiArCXJldCA9 IGRybV9hdG9taWNfYWRkX2FmZmVjdGVkX2Nvbm5lY3RvcnMoc3RhdGUsIGNydGMpOwo+ID4gKwlp ZiAocmV0KQo+ID4gKwkJZ290byBvdXQ7Cj4gPiArCj4gPiArCWNydGNfc3RhdGUtPmFjdGl2ZSA9 IGZhbHNlOwo+ID4gKwljcnRjX3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlID0gdHJ1ZTsKPiA+ ICsKPiA+ICsJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubiwgY29u bl9zdGF0ZSwgaSkgewo+ID4gKwkJaWYgKCFjb25uX3N0YXRlLT5zZWxmX3JlZnJlc2hfYXdhcmUp Cj4gPiArCQkJZ290byBvdXQ7Cj4gPiArCj4gPiArCQljb25uX3N0YXRlLT5zZWxmX3JlZnJlc2hf Y2hhbmdlZCA9IHRydWU7Cj4gPiArCQljb25uX3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlID0g dHJ1ZTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7 Cj4gPiArCWlmIChyZXQpCj4gPiArCQlnb3RvIG91dDsKPiA+ICsKPiA+ICtvdXQ6Cj4gPiArCWlm IChyZXQgPT0gLUVERUFETEspIHsKPiA+ICsJCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUp Owo+ID4gKwkJcmV0ID0gZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsKPiA+ICsJCWlmICghcmV0 KQo+ID4gKwkJCWdvdG8gcmV0cnk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJZHJtX2F0b21pY19zdGF0 ZV9wdXQoc3RhdGUpOwo+ID4gKwlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwo+ID4gKwlk cm1fbW9kZXNldF9hY3F1aXJlX2ZpbmkoJmN0eCk7Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ID4g KyAqIGRybV9zZWxmX3JlZnJlc2hfaGVscGVyX2FsdGVyX3N0YXRlIC0gQWx0ZXJzIHRoZSBhdG9t aWMgc3RhdGUgZm9yIFNSIGV4aXQKPiA+ICsgKiBAc3RhdGU6IHRoZSBzdGF0ZSBjdXJyZW50bHkg YmVpbmcgY2hlY2tlZAo+ID4gKyAqCj4gPiArICogQ2FsbGVkIGF0IHRoZSBlbmQgb2YgYXRvbWlj IGNoZWNrLiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0aGUgc3RhdGUgZm9yIGZsYWdzCj4gPiArICog aW5jb21wYXRpYmxlIHdpdGggc2VsZiByZWZyZXNoIGV4aXQgYW5kIGNoYW5nZXMgdGhlbS4gVGhp cyBpcyBhIGJpdAo+ID4gKyAqIGRpc2luZ2VudW91cyBzaW5jZSB1c2Vyc3BhY2UgaXMgZXhwZWN0 aW5nIG9uZSB0aGluZyBhbmQgd2UncmUgZ2l2aW5nIGl0Cj4gPiArICogYW5vdGhlci4gSG93ZXZl ciBpbiBvcmRlciB0byBrZWVwIHNlbGYgcmVmcmVzaCBlbnRpcmVseSBoaWRkZW4gZnJvbQo+ID4g KyAqIHVzZXJzcGFjZSwgdGhpcyBpcyByZXF1aXJlZC4KPiA+ICsgKgo+ID4gKyAqIEF0IHRoZSBl bmQsIHdlIHF1ZXVlIHVwIHRoZSBzZWxmIHJlZnJlc2ggZW50cnkgd29yayBzbyB3ZSBjYW4gZW50 ZXIgUFNSIGFmdGVyCj4gPiArICogdGhlIGRlc2lyZWQgZGVsYXkuCj4gPiArICovCj4gPiArdm9p ZCBkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl9hbHRlcl9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPiArCXN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiA+ICsJaW50IGk7Cj4gPiArCj4gPiAr CWlmIChzdGF0ZS0+YXN5bmNfdXBkYXRlKSB7Cj4gPiArCQlmb3JfZWFjaF9vbGRfY3J0Y19pbl9z dGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ID4gKwkJCWlmIChjcnRjX3N0YXRl LT5zZWxmX3JlZnJlc2hfYWN0aXZlKSB7Cj4gPiArCQkJCXN0YXRlLT5hc3luY191cGRhdGUgPSBm YWxzZTsKPiA+ICsJCQkJYnJlYWs7Cj4gPiArCQkJfQo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCWlm ICghc3RhdGUtPmFsbG93X21vZGVzZXQpIHsKPiA+ICsJCWZvcl9lYWNoX29sZF9jcnRjX2luX3N0 YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gPiArCQkJaWYgKGNydGNfc3RhdGUt PnNlbGZfcmVmcmVzaF9hY3RpdmUpIHsKPiA+ICsJCQkJc3RhdGUtPmFsbG93X21vZGVzZXQgPSB0 cnVlOwo+ID4gKwkJCQlicmVhazsKPiA+ICsJCQl9Cj4gPiArCQl9Cj4gPiArCX0KPiA+ICsKPiA+ ICsJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkp IHsKPiA+ICsJCXN0cnVjdCBkcm1fc2VsZl9yZWZyZXNoX3N0YXRlICpzcl9zdGF0ZTsKPiA+ICsK PiA+ICsJCS8qIERvbid0IHRyaWdnZXIgdGhlIGVudHJ5IHRpbWVyIHdoZW4gd2UncmUgYWxyZWFk eSBpbiBTUiAqLwo+ID4gKwkJaWYgKGNydGNfc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUpCj4g PiArCQkJY29udGludWU7Cj4gPiArCj4gPiArCQlzcl9zdGF0ZSA9IGNydGMtPnNlbGZfcmVmcmVz aF9zdGF0ZTsKPiA+ICsJCW1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCAmc3Jfc3RhdGUtPmVu dHJ5X3dvcmssCj4gPiArCQkJIG1zZWNzX3RvX2ppZmZpZXMoc3Jfc3RhdGUtPmVudHJ5X2RlbGF5 X21zKSk7Cj4gPiArCX0KPiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTChkcm1fc2VsZl9yZWZyZXNo X2hlbHBlcl9hbHRlcl9zdGF0ZSk7Cj4gPiArCj4gPiArLyoqCj4gPiArICogZHJtX3NlbGZfcmVm cmVzaF9oZWxwZXJfcmVnaXN0ZXIgLSBSZWdpc3RlcnMgc2VsZiByZWZyZXNoIGhlbHBlcnMgZm9y IGEgY3J0Ywo+ID4gKyAqIEBjcnRjOiB0aGUgY3J0YyB3aGljaCBzdXBwb3J0cyBzZWxmIHJlZnJl c2ggc3VwcG9ydGVkIGRpc3BsYXlzCj4gPiArICogQGVudHJ5X2RlbGF5X21zOiBhbW91bnQgb2Yg aW5hY3Rpdml0eSB0byB3YWl0IGJlZm9yZSBlbnRlcmluZyBzZWxmIHJlZnJlc2gKPiA+ICsgKi8K PiA+ICtpbnQgZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ID4gKwkJCQkgICAgIHVuc2lnbmVkIGludCBlbnRyeV9kZWxheV9tcykKPiA+ICt7 Cj4gPiArCXN0cnVjdCBkcm1fc2VsZl9yZWZyZXNoX3N0YXRlICpzcl9zdGF0ZSA9IGNydGMtPnNl bGZfcmVmcmVzaF9zdGF0ZTsKPiA+ICsKPiA+ICsJLyogSGVscGVyIGlzIGFscmVhZHkgcmVnaXN0 ZXJlZCAqLwo+ID4gKwlpZiAoV0FSTl9PTihzcl9zdGF0ZSkpCj4gPiArCQlyZXR1cm4gLUVJTlZB TDsKPiA+ICsKPiA+ICsJc3Jfc3RhdGUgPSBremFsbG9jKHNpemVvZigqc3Jfc3RhdGUpLCBHRlBf S0VSTkVMKTsKPiA+ICsJaWYgKCFzcl9zdGF0ZSkKPiA+ICsJCXJldHVybiAtRU5PTUVNOwo+ID4g Kwo+ID4gKwlJTklUX0RFTEFZRURfV09SSygmc3Jfc3RhdGUtPmVudHJ5X3dvcmssCj4gPiArCQkJ ICBkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl9lbnRyeV93b3JrKTsKPiA+ICsJc3Jfc3RhdGUtPmVu dHJ5X2RlbGF5X21zID0gZW50cnlfZGVsYXlfbXM7Cj4gPiArCXNyX3N0YXRlLT5jcnRjID0gY3J0 YzsKPiA+ICsKPiA+ICsJY3J0Yy0+c2VsZl9yZWZyZXNoX3N0YXRlID0gc3Jfc3RhdGU7Cj4gPiAr CXJldHVybiAwOwo+ID4gK30KPiA+ICtFWFBPUlRfU1lNQk9MKGRybV9zZWxmX3JlZnJlc2hfaGVs cGVyX3JlZ2lzdGVyKTsKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBkcm1fc2VsZl9yZWZyZXNoX2hl bHBlcl91bnJlZ2lzdGVyIC0gVW5yZWdpc3RlcnMgc2VsZiByZWZyZXNoIGhlbHBlcnMKPiA+ICsg KiBAY3J0YzogdGhlIGNydGMgdG8gdW5yZWdpc3Rlcgo+ID4gKyAqLwo+ID4gK3ZvaWQgZHJtX3Nl bGZfcmVmcmVzaF9oZWxwZXJfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPiAr ewo+ID4gKwlzdHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZSAqc3Jfc3RhdGUgPSBjcnRjLT5z ZWxmX3JlZnJlc2hfc3RhdGU7Cj4gPiArCj4gPiArCS8qIEhlbHBlciBpcyBhbHJlYWR5IHVucmVn aXN0ZXJlZCAqLwo+ID4gKwlpZiAoc3Jfc3RhdGUpCj4gPiArCQlyZXR1cm47Cj4gPiArCj4gPiAr CWNydGMtPnNlbGZfcmVmcmVzaF9zdGF0ZSA9IE5VTEw7Cj4gPiArCj4gPiArCWNhbmNlbF9kZWxh eWVkX3dvcmtfc3luYygmc3Jfc3RhdGUtPmVudHJ5X3dvcmspOwo+ID4gKwlrZnJlZShzcl9zdGF0 ZSk7Cj4gPiArfQo+ID4gK0VYUE9SVF9TWU1CT0woZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJfdW5y ZWdpc3Rlcik7Cj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oIGIvaW5j bHVkZS9kcm0vZHJtX2F0b21pYy5oCj4gPiBpbmRleCA4MjRhNWVkNGUyMTYuLjFlOWNhYjFkYTk3 YSAxMDA2NDQKPiA+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9hdG9taWMuaAo+ID4gKysrIGIvaW5j bHVkZS9kcm0vZHJtX2F0b21pYy5oCj4gPiBAQCAtOTQ0LDQgKzk0NCwxOSBAQCBkcm1fYXRvbWlj X2NydGNfbmVlZHNfbW9kZXNldChjb25zdCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ ID4gIAkgICAgICAgc3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZDsKPiA+ICB9Cj4gPiAgCj4gPiAr LyoqCj4gPiArICogZHJtX2F0b21pY19jcnRjX2VmZmVjdGl2ZWx5X2FjdGl2ZSAtIGNvbXB1dGUg d2hldGhlciBjcnRjIGlzIGFjdHVhbGx5IGFjdGl2ZQo+ID4gKyAqIEBzdGF0ZTogJmRybV9jcnRj X3N0YXRlIGZvciB0aGUgQ1JUQwo+ID4gKyAqCj4gPiArICogV2hlbiBpbiBzZWxmIHJlZnJlc2gg bW9kZSwgdGhlIGNydGNfc3RhdGUtPmFjdGl2ZSB2YWx1ZSB3aWxsIGJlIGZhbHNlLCBzaW5jZQo+ ID4gKyAqIHRoZSBjcnRjIGlzIG9mZi4gSG93ZXZlciBpbiBzb21lIGNhc2VzIHdlJ3JlIGludGVy ZXN0ZWQgaW4gd2hldGhlciB0aGUgY3J0Ywo+ID4gKyAqIGlzIGFjdGl2ZSwgb3IgZWZmZWN0aXZl bHkgYWN0aXZlIChpZTogaXQncyBjb25uZWN0ZWQgdG8gYW4gYWN0aXZlIGRpc3BsYXkpLgo+ID4g KyAqIEluIHRoZXNlIGNhc2VzLCB1c2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGp1c3QgY2hl Y2tpbmcgYWN0aXZlLgo+ID4gKyAqLwo+ID4gK3N0YXRpYyBpbmxpbmUgYm9vbAo+ID4gK2RybV9h dG9taWNfY3J0Y19lZmZlY3RpdmVseV9hY3RpdmUoY29uc3Qgc3RydWN0IGRybV9jcnRjX3N0YXRl ICpzdGF0ZSkKPiA+ICt7Cj4gPiArCXJldHVybiBzdGF0ZS0+YWN0aXZlIHx8IHN0YXRlLT5zZWxm X3JlZnJlc2hfYWN0aXZlOwo+ID4gK30KPiA+ICsKPiA+ICAjZW5kaWYgLyogRFJNX0FUT01JQ19I XyAqLwo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCBiL2luY2x1 ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+ID4gaW5kZXggYzgwNjE5OTJkNmNiLi4wYWU3ZTgxMmVj NjIgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiA+ICsrKyBi L2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+ID4gQEAgLTUwMSw2ICs1MDEsMzcgQEAgc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgewo+ID4gIAkvKiogQHR2OiBUViBjb25uZWN0b3Igc3Rh dGUgKi8KPiA+ICAJc3RydWN0IGRybV90dl9jb25uZWN0b3Jfc3RhdGUgdHY7Cj4gPiAgCj4gPiAr CS8qKgo+ID4gKwkgKiBAc2VsZl9yZWZyZXNoX2NoYW5nZWQ6Cj4gPiArCSAqCj4gPiArCSAqIFNl dCB0cnVlIHdoZW4gc2VsZiByZWZyZXNoIHN0YXR1cyBoYXMgY2hhbmdlZC4gVGhpcyBpcyB1c2Vm dWwgZm9yCj4gPiArCSAqIHVzZSBpbiBlbmNvZGVyL2JyaWRnZSBlbmFibGUgd2hlcmUgdGhlIG9s ZCBzdGF0ZSBpcyB1bmF2YWlsYWJsZSB0bwo+ID4gKwkgKiB0aGUgZHJpdmVyIGFuZCBpdCBuZWVk cyB0byBrbm93IHdoZXRoZXIgdGhlIGVuYWJsZSB0cmFuc2l0aW9uIGlzIGEKPiA+ICsJICogZnVs bCB0cmFuc2l0aW9uLCBvciBpZiBpdCBqdXN0IG5lZWRzIHRvIGV4aXQgc2VsZiByZWZyZXNoIG1v ZGUuCj4gPiArCSAqLwo+ID4gKwlib29sIHNlbGZfcmVmcmVzaF9jaGFuZ2VkOwo+ID4gKwo+ID4g KwkvKioKPiA+ICsJICogQHNlbGZfcmVmcmVzaF9hY3RpdmU6Cj4gPiArCSAqCj4gPiArCSAqIFVz ZWQgYnkgdGhlIHNlbGYgcmVmcmVzaCAoU1IpIGhlbHBlcnMgdG8gZGVub3RlIHdoZW4gdGhlIGRp c3BsYXkKPiA+ICsJICogc2hvdWxkIGJlIHNlbGYgcmVmcmVzaGluZy4gSWYgeW91ciBjb25uZWN0 b3IgaXMgU1ItY2FwYWJsZSwgY2hlY2sKPiA+ICsJICogdGhpcyBmbGFnIGluIC5kaXNhYmxlKCku IElmIGl0IGlzIHRydWUsIGluc3RlYWQgb2Ygc2h1dHRpbmcgb2ZmIHRoZQo+ID4gKwkgKiBwYW5l bCwgcHV0IGl0IGludG8gc2VsZiByZWZyZXNoaW5nIG1vZGUuCj4gPiArCSAqLwo+ID4gKwlib29s IHNlbGZfcmVmcmVzaF9hY3RpdmU7Cj4gPiArCj4gPiArCS8qKgo+ID4gKwkgKiBAc2VsZl9yZWZy ZXNoX2F3YXJlOgo+ID4gKwkgKgo+ID4gKwkgKiBUaGlzIHRyYWNrcyB3aGV0aGVyIGEgY29ubmVj dG9yIGlzIGF3YXJlIG9mIHRoZSBzZWxmIHJlZnJlc2ggc3RhdGUuCj4gPiArCSAqIEl0IHNob3Vs ZCBiZSBzZXQgdG8gdHJ1ZSBmb3IgdGhvc2UgY29ubmVjdG9yIGltcGxlbWVudGF0aW9ucyB3aGlj aAo+ID4gKwkgKiB1bmRlcnN0YW5kIHRoZSBzZWxmIHJlZnJlc2ggc3RhdGUuIFRoaXMgaXMgbmVl ZGVkIHNpbmNlIHRoZSBjcnRjCj4gPiArCSAqIHJlZ2lzdGVycyB0aGUgc2VsZiByZWZyZXNoIGhl bHBlcnMgYW5kIGl0IGRvZXNuJ3Qga25vdyBpZiB0aGUKPiA+ICsJICogY29ubmVjdG9ycyBkb3du c3RyZWFtIGhhdmUgaW1wbGVtZW50ZWQgc2VsZiByZWZyZXNoIGVudHJ5L2V4aXQuCj4gPiArCSAq Lwo+ID4gKwlib29sIHNlbGZfcmVmcmVzaF9hd2FyZTsKPiA+ICsKPiA+ICAJLyoqCj4gPiAgCSAq IEBwaWN0dXJlX2FzcGVjdF9yYXRpbzogQ29ubmVjdG9yIHByb3BlcnR5IHRvIGNvbnRyb2wgdGhl Cj4gPiAgCSAqIEhETUkgaW5mb2ZyYW1lIGFzcGVjdCByYXRpbyBzZXR0aW5nLgo+ID4gZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmggYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4g PiBpbmRleCBmN2MzMDIyZGJkZjQuLjIwOGQ2ODEyOWI0YyAxMDA2NDQKPiA+IC0tLSBhL2luY2x1 ZGUvZHJtL2RybV9jcnRjLmgKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiA+IEBA IC01Myw2ICs1Myw3IEBAIHN0cnVjdCBkcm1fbW9kZV9zZXQ7Cj4gPiAgc3RydWN0IGRybV9maWxl Owo+ID4gIHN0cnVjdCBkcm1fY2xpcF9yZWN0Owo+ID4gIHN0cnVjdCBkcm1fcHJpbnRlcjsKPiA+ ICtzdHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZTsKPiA+ICBzdHJ1Y3QgZGV2aWNlX25vZGU7 Cj4gPiAgc3RydWN0IGRtYV9mZW5jZTsKPiA+ICBzdHJ1Y3QgZWRpZDsKPiA+IEBAIC0yOTksNiAr MzAwLDE3IEBAIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSB7Cj4gPiAgCSAqLwo+ID4gIAlib29sIHZy cl9lbmFibGVkOwo+ID4gIAo+ID4gKwkvKioKPiA+ICsJICogQHNlbGZfcmVmcmVzaF9hY3RpdmU6 Cj4gPiArCSAqCj4gPiArCSAqIFVzZWQgYnkgdGhlIHNlbGYgcmVmcmVzaCBoZWxwZXJzIHRvIGRl bm90ZSB3aGVuIGEgc2VsZiByZWZyZXNoCj4gPiArCSAqIHRyYW5zaXRpb24gaXMgb2NjdXJpbmcu IFRoaXMgd2lsbCBiZSBzZXQgb24gZW5hYmxlL2Rpc2FibGUgY2FsbGJhY2tzCj4gPiArCSAqIHdo ZW4gc2VsZiByZWZyZXNoIGlzIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQuIEluIHNvbWUgY2Fz ZXMsIGl0IG1heQo+ID4gKwkgKiBub3QgYmUgZGVzaXJhYmxlIHRvIGZ1bGx5IHNodXQgb2ZmIHRo ZSBjcnRjIGR1cmluZyBzZWxmIHJlZnJlc2guCj4gPiArCSAqIENSVEMncyBjYW4gaW5zcGVjdCB0 aGlzIGZsYWcgYW5kIGRldGVybWluZSB0aGUgYmVzdCBjb3Vyc2Ugb2YgYWN0aW9uLgo+ID4gKwkg Ki8KPiA+ICsJYm9vbCBzZWxmX3JlZnJlc2hfYWN0aXZlOwo+ID4gKwo+ID4gIAkvKioKPiA+ICAJ ICogQGV2ZW50Ogo+ID4gIAkgKgo+ID4gQEAgLTEwODcsNiArMTA5OSwxMyBAQCBzdHJ1Y3QgZHJt X2NydGMgewo+ID4gIAkgKiBUaGUgbmFtZSBvZiB0aGUgQ1JUQydzIGZlbmNlIHRpbWVsaW5lLgo+ ID4gIAkgKi8KPiA+ICAJY2hhciB0aW1lbGluZV9uYW1lWzMyXTsKPiA+ICsKPiA+ICsJLyoqCj4g PiArCSAqIEBzZWxmX3JlZnJlc2hfc3RhdGU6IEhvbGRzIHRoZSBzdGF0ZSBmb3IgdGhlIHNlbGYg cmVmcmVzaCBoZWxwZXJzCj4gPiArCSAqCj4gPiArCSAqIEluaXRpYWxpemVkIHZpYSBkcm1fc2Vs Zl9yZWZyZXNoX2hlbHBlcl9yZWdpc3RlcigpLgo+ID4gKwkgKi8KPiA+ICsJc3RydWN0IGRybV9z ZWxmX3JlZnJlc2hfc3RhdGUgKnNlbGZfcmVmcmVzaF9zdGF0ZTsKPiA+ICB9Owo+ID4gIAo+ID4g IC8qKgo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVy LmggYi9pbmNsdWRlL2RybS9kcm1fc2VsZl9yZWZyZXNoX2hlbHBlci5oCj4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4wMTVkYWNiOGE4MDcKPiA+IC0tLSAv ZGV2L251bGwKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmgK PiA+IEBAIC0wLDAgKzEsMjMgQEAKPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlU ICovCj4gPiArLyoKPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTkgR29vZ2xlLCBJbmMuCj4gPiAr ICoKPiA+ICsgKiBBdXRob3JzOgo+ID4gKyAqIFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0u b3JnPgo+ID4gKyAqLwo+ID4gKyNpZm5kZWYgRFJNX1NFTEZfUkVGUkVTSF9IRUxQRVJfSF8KPiA+ ICsjZGVmaW5lIERSTV9TRUxGX1JFRlJFU0hfSEVMUEVSX0hfCj4gPiArCj4gPiArc3RydWN0IGRy bV9hdG9taWNfc3RhdGU7Cj4gPiArc3RydWN0IGRybV9jb25uZWN0b3I7Cj4gPiArc3RydWN0IGRy bV9kZXZpY2U7Cj4gPiArc3RydWN0IGRybV9zZWxmX3JlZnJlc2hfc3RhdGU7Cj4gPiArc3RydWN0 IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4Owo+ID4gKwo+ID4gK3ZvaWQgZHJtX3NlbGZfcmVmcmVz aF9oZWxwZXJfYWx0ZXJfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiA+ ICsKPiA+ICtpbnQgZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9j cnRjICpjcnRjLAo+ID4gKwkJCQkgICAgIHVuc2lnbmVkIGludCBlbnRyeV9kZWxheV9tcyk7Cj4g PiArCj4gPiArdm9pZCBkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl91bnJlZ2lzdGVyKHN0cnVjdCBk cm1fY3J0YyAqY3J0Yyk7Cj4gPiArI2VuZGlmCj4gPiAKPiAKPiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3 YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=