From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH v3 03/13] drm: bridge: Link encoder and bridge in core code Date: Tue, 29 Nov 2016 20:58:45 +0100 Message-ID: <20161129205845.67ece364@bbrezillon> References: <1480410283-28698-1-git-send-email-laurent.pinchart+renesas@ideasonboard.com> <1480410283-28698-4-git-send-email-laurent.pinchart+renesas@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.free-electrons.com (mail.free-electrons.com [62.4.15.54]) by gabe.freedesktop.org (Postfix) with ESMTP id 2A62B6E650 for ; Tue, 29 Nov 2016 19:58:47 +0000 (UTC) In-Reply-To: <1480410283-28698-4-git-send-email-laurent.pinchart+renesas@ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Alison Wang , Jingoo Han , Seung-Woo Kim , Xinwei Kong , dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, Kyungmin Park , Xinliang Liu , Chen Feng , Rongrong Zou , Maxime Ripard , Vincent Abriou List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCAyOSBOb3YgMjAxNiAxMTowNDozMyArMDIwMApMYXVyZW50IFBpbmNoYXJ0IDxsYXVy ZW50LnBpbmNoYXJ0K3JlbmVzYXNAaWRlYXNvbmJvYXJkLmNvbT4gd3JvdGU6Cgo+IEluc3RlYWQg b2YgbGlua2luZyBlbmNvZGVycyBhbmQgYnJpZGdlcyBpbiBldmVyeSBkcml2ZXIgKGFuZCBnZXR0 aW5nIGl0Cj4gd3JvbmcgaGFsZiBvZiB0aGUgdGltZSwgYXMgbWFueSBkcml2ZXJzIGZvcmdldCB0 byBzZXQgdGhlIGRybV9icmlkZ2UKPiBlbmNvZGVyIHBvaW50ZXIpLCBkbyBzbyBpbiBjb3JlIGNv ZGUuIFRoZSBkcm1fYnJpZGdlX2F0dGFjaCgpIGZ1bmN0aW9uCj4gbmVlZHMgdGhlIGVuY29kZXIg YW5kIG9wdGlvbmFsIHByZXZpb3VzIGJyaWRnZSB0byBwZXJmb3JtIHRoYXQgdGFzaywKPiB1cGRh dGUgYWxsIHRoZSBjYWxsZXJzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IExhdXJlbnQgUGluY2hhcnQg PGxhdXJlbnQucGluY2hhcnQrcmVuZXNhc0BpZGVhc29uYm9hcmQuY29tPgo+IC0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vYXRtZWwtaGxjZGMvYXRtZWxfaGxjZGNfb3V0cHV0LmMgICB8ICA0ICstCgpG b3IgYXRtZWwtaGxjZGMKCkFja2VkLWJ5OiBCb3JpcyBCcmV6aWxsb24gPGJvcmlzLmJyZXppbGxv bkBmcmVlLWVsZWN0cm9ucy5jb20+Cgo+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4 L2FuYWxvZ2l4X2RwX2NvcmUuYyB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHct aGRtaS5jICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9i cmlkZ2UuYyAgICAgICAgICAgICAgICAgICAgICAgfCA0NiArKysrKysrKysrKysrKysrLS0tLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuYyAgICAgICAgICAgIHwg IDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHAuYyAgICAgICAgICAgICAg ICAgfCAgNSArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RzaS5jICAg ICAgICAgICAgfCAgNiArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1f cmdiLmMgICAgICAgICAgfCAgNSArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJp bi9kd19kcm1fZHNpLmMgICAgICAgfCAgNSArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2lteC9pbXgt bGRiLmMgICAgICAgICAgICAgICAgICAgICAgfCAgNiArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2lt eC9wYXJhbGxlbC1kaXNwbGF5LmMgICAgICAgICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2RwaS5jICAgICAgICAgICAgICAgICB8ICA4ICsrLS0KPiAgZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19kc2kuYyAgICAgICAgICAgICAgICAgfCAyNCArKy0tLS0t LS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWkuYyAgICAgICAgICAgICAg ICB8IDExICsrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfbWFuYWdlci5jICAg ICAgICAgICAgICB8IDE3ICsrKysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZWRwL2VkcF9i cmlkZ2UuYyAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9oZG1p L2hkbWlfYnJpZGdlLmMgICAgICAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vcmNh ci1kdS9yY2FyX2R1X2hkbWllbmMuYyAgICAgICAgICB8ICA1ICstLQo+ICBkcml2ZXJzL2dwdS9k cm0vc3RpL3N0aV9kdm8uYyAgICAgICAgICAgICAgICAgICAgICB8ICAzICstCj4gIGRyaXZlcnMv Z3B1L2RybS9zdGkvc3RpX2hkYS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KPiAgZHJp dmVycy9ncHUvZHJtL3N0aS9zdGlfaGRtaS5jICAgICAgICAgICAgICAgICAgICAgfCAgMyArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfcmdiLmMgICAgICAgICAgICAgICAgICB8IDEz ICsrKy0tLQo+ICBpbmNsdWRlL2RybS9kcm1fYnJpZGdlLmggICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAzICstCj4gIDIzIGZpbGVzIGNoYW5nZWQsIDgzIGluc2VydGlvbnMoKyksIDEwMyBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2Rj L2F0bWVsX2hsY2RjX291dHB1dC5jIGIvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVs X2hsY2RjX291dHB1dC5jCj4gaW5kZXggNjExOWI1MDg1NTAxLi5lNzc5OWI2ZWU4MjkgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX291dHB1dC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX291dHB1dC5j Cj4gQEAgLTIzMCw5ICsyMzAsNyBAQCBzdGF0aWMgaW50IGF0bWVsX2hsY2RjX2F0dGFjaF9lbmRw b2ludChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJb2Zfbm9kZV9wdXQobnApOwo+ICAKPiAg CWlmIChicmlkZ2UpIHsKPiAtCQlvdXRwdXQtPmVuY29kZXIuYnJpZGdlID0gYnJpZGdlOwo+IC0J CWJyaWRnZS0+ZW5jb2RlciA9ICZvdXRwdXQtPmVuY29kZXI7Cj4gLQkJcmV0ID0gZHJtX2JyaWRn ZV9hdHRhY2goZGV2LCBicmlkZ2UpOwo+ICsJCXJldCA9IGRybV9icmlkZ2VfYXR0YWNoKCZvdXRw dXQtPmVuY29kZXIsIGJyaWRnZSwgTlVMTCk7Cj4gIAkJaWYgKCFyZXQpCj4gIAkJCXJldHVybiAw Owo+ICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2Fu YWxvZ2l4X2RwX2NvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9n aXhfZHBfY29yZS5jCj4gaW5kZXggNmUwNDQ3ZjMyOWEyLi4xODM1ZjFmZGFkMTkgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3JlLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUu Ywo+IEBAIC0xMjI3LDEyICsxMjI3LDEwIEBAIHN0YXRpYyBpbnQgYW5hbG9naXhfZHBfY3JlYXRl X2JyaWRnZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiwKPiAgCj4gIAlkcC0+YnJpZGdlID0g YnJpZGdlOwo+ICAKPiAtCWRwLT5lbmNvZGVyLT5icmlkZ2UgPSBicmlkZ2U7Cj4gIAlicmlkZ2Ut PmRyaXZlcl9wcml2YXRlID0gZHA7Cj4gLQlicmlkZ2UtPmVuY29kZXIgPSBkcC0+ZW5jb2RlcjsK PiAgCWJyaWRnZS0+ZnVuY3MgPSAmYW5hbG9naXhfZHBfYnJpZGdlX2Z1bmNzOwo+ICAKPiAtCXJl dCA9IGRybV9icmlkZ2VfYXR0YWNoKGRybV9kZXYsIGJyaWRnZSk7Cj4gKwlyZXQgPSBkcm1fYnJp ZGdlX2F0dGFjaChkcC0+ZW5jb2RlciwgYnJpZGdlLCBOVUxMKTsKPiAgCWlmIChyZXQpIHsKPiAg CQlEUk1fRVJST1IoImZhaWxlZCB0byBhdHRhY2ggZHJtIGJyaWRnZVxuIik7Cj4gIAkJcmV0dXJu IC1FSU5WQUw7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHctaGRtaS5j IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kdy1oZG1pLmMKPiBpbmRleCBiNzEwODhkYWIyNjgu LjQzMmUwZTNmZmY3MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3LWhk bWkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHctaGRtaS5jCj4gQEAgLTE4NDEs MTMgKzE4NDEsMTIgQEAgc3RhdGljIGludCBkd19oZG1pX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2 aWNlICpkcm0sIHN0cnVjdCBkd19oZG1pICpoZG1pKQo+ICAJaGRtaS0+YnJpZGdlID0gYnJpZGdl Owo+ICAJYnJpZGdlLT5kcml2ZXJfcHJpdmF0ZSA9IGhkbWk7Cj4gIAlicmlkZ2UtPmZ1bmNzID0g JmR3X2hkbWlfYnJpZGdlX2Z1bmNzOwo+IC0JcmV0ID0gZHJtX2JyaWRnZV9hdHRhY2goZHJtLCBi cmlkZ2UpOwo+ICsJcmV0ID0gZHJtX2JyaWRnZV9hdHRhY2goZW5jb2RlciwgYnJpZGdlLCBOVUxM KTsKPiAgCWlmIChyZXQpIHsKPiAgCQlEUk1fRVJST1IoIkZhaWxlZCB0byBpbml0aWFsaXplIGJy aWRnZSB3aXRoIGRybVxuIik7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IC0JZW5j b2Rlci0+YnJpZGdlID0gYnJpZGdlOwo+ICAJaGRtaS0+Y29ubmVjdG9yLnBvbGxlZCA9IERSTV9D T05ORUNUT1JfUE9MTF9IUEQ7Cj4gIAo+ICAJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKCZoZG1p LT5jb25uZWN0b3IsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4gaW5kZXggMGVlMDUyYjdjMjFhLi44NTBi ZDY1MDllZjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMKPiBAQCAtMjYsNiArMjYsNyBAQAo+ICAj aW5jbHVkZSA8bGludXgvbXV0ZXguaD4KPiAgCj4gICNpbmNsdWRlIDxkcm0vZHJtX2JyaWRnZS5o Pgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9lbmNvZGVyLmg+Cj4gIAo+ICAvKioKPiAgICogRE9DOiBv dmVydmlldwo+IEBAIC05MiwzMiArOTMsNTMgQEAgdm9pZCBkcm1fYnJpZGdlX3JlbW92ZShzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICBFWFBPUlRfU1lNQk9MKGRybV9icmlkZ2VfcmVtb3Zl KTsKPiAgCj4gIC8qKgo+IC0gKiBkcm1fYnJpZGdlX2F0dGFjaCAtIGFzc29jaWF0ZSBnaXZlbiBi cmlkZ2UgdG8gb3VyIERSTSBkZXZpY2UKPiArICogZHJtX2JyaWRnZV9hdHRhY2ggLSBhdHRhY2gg dGhlIGJyaWRnZSB0byBhbiBlbmNvZGVyJ3MgY2hhaW4KPiAgICoKPiAtICogQGRldjogRFJNIGRl dmljZQo+IC0gKiBAYnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiArICogQGVuY29k ZXI6IERSTSBlbmNvZGVyCj4gKyAqIEBicmlkZ2U6IGJyaWRnZSB0byBhdHRhY2gKPiArICogQHBy ZXZpb3VzOiBwcmV2aW91cyBicmlkZ2UgaW4gdGhlIGNoYWluIChvcHRpb25hbCkKPiAgICoKPiAt ICogQ2FsbGVkIGJ5IGEga21zIGRyaXZlciB0byBsaW5rIG9uZSBvZiBvdXIgZW5jb2Rlci9icmlk Z2UgdG8gdGhlIGdpdmVuCj4gLSAqIGJyaWRnZS4KPiArICogQ2FsbGVkIGJ5IGEga21zIGRyaXZl ciB0byBsaW5rIHRoZSBicmlkZ2UgdG8gYW4gZW5jb2RlcidzIGNoYWluLiBUaGUgcHJldmlvdXMK PiArICogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBwcmV2aW91cyBicmlkZ2UgaW4gdGhlIGNoYWlu LiBJZiBOVUxMLCB0aGUgYnJpZGdlIGlzCj4gKyAqIGxpbmtlZCBkaXJlY3RseSBhdCB0aGUgZW5j b2RlcidzIG91dHB1dC4gT3RoZXJ3aXNlIGl0IGlzIGxpbmtlZCBhdCB0aGUKPiArICogcHJldmlv dXMgYnJpZGdlJ3Mgb3V0cHV0Lgo+ICAgKgo+IC0gKiBOb3RlIHRoYXQgc2V0dGluZyB1cCBsaW5r cyBiZXR3ZWVuIHRoZSBicmlkZ2UgYW5kIG91ciBlbmNvZGVyL2JyaWRnZQo+IC0gKiBvYmplY3Rz IG5lZWRzIHRvIGJlIGhhbmRsZWQgYnkgdGhlIGttcyBkcml2ZXIgaXRzZWxmLgo+ICsgKiBJZiBu b24tTlVMTCB0aGUgcHJldmlvdXMgYnJpZGdlIG11c3QgYmUgYWxyZWFkeSBhdHRhY2hlZCBieSBh IGNhbGwgdG8gdGhpcwo+ICsgKiBmdW5jdGlvbi4KPiAgICoKPiAgICogUkVUVVJOUzoKPiAgICog WmVybyBvbiBzdWNjZXNzLCBlcnJvciBjb2RlIG9uIGZhaWx1cmUKPiAgICovCj4gLWludCBkcm1f YnJpZGdlX2F0dGFjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2JyaWRnZSAq YnJpZGdlKQo+ICtpbnQgZHJtX2JyaWRnZV9hdHRhY2goc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyLCBzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICsJCSAgICAgIHN0cnVjdCBkcm1fYnJp ZGdlICpwcmV2aW91cykKPiAgewo+IC0JaWYgKCFkZXYgfHwgIWJyaWRnZSkKPiArCWludCByZXQ7 Cj4gKwo+ICsJaWYgKCFlbmNvZGVyIHx8ICFicmlkZ2UpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4g Kwo+ICsJaWYgKHByZXZpb3VzICYmICghcHJldmlvdXMtPmRldiB8fCBwcmV2aW91cy0+ZW5jb2Rl ciAhPSBlbmNvZGVyKSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gIAlpZiAoYnJpZGdlLT5k ZXYpCj4gIAkJcmV0dXJuIC1FQlVTWTsKPiAgCj4gLQlicmlkZ2UtPmRldiA9IGRldjsKPiArCWJy aWRnZS0+ZGV2ID0gZW5jb2Rlci0+ZGV2Owo+ICsJYnJpZGdlLT5lbmNvZGVyID0gZW5jb2RlcjsK PiArCj4gKwlpZiAoYnJpZGdlLT5mdW5jcy0+YXR0YWNoKSB7Cj4gKwkJcmV0ID0gYnJpZGdlLT5m dW5jcy0+YXR0YWNoKGJyaWRnZSk7Cj4gKwkJaWYgKHJldCA8IDApIHsKPiArCQkJYnJpZGdlLT5k ZXYgPSBOVUxMOwo+ICsJCQlicmlkZ2UtPmVuY29kZXIgPSBOVUxMOwo+ICsJCQlyZXR1cm4gcmV0 Owo+ICsJCX0KPiArCX0KPiAgCj4gLQlpZiAoYnJpZGdlLT5mdW5jcy0+YXR0YWNoKQo+IC0JCXJl dHVybiBicmlkZ2UtPmZ1bmNzLT5hdHRhY2goYnJpZGdlKTsKPiArCWlmIChwcmV2aW91cykKPiAr CQlwcmV2aW91cy0+bmV4dCA9IGJyaWRnZTsKPiArCWVsc2UKPiArCQllbmNvZGVyLT5icmlkZ2Ug PSBicmlkZ2U7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zaW1w bGVfa21zX2hlbHBlci5jCj4gaW5kZXggN2JhZTA4YzJiZjBhLi5iYTdiZTYxNjkzMzkgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5jCj4gQEAgLTE4Miw5ICsxODIs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBkcm1fc2ltcGxlX2ttc19w bGFuZV9mdW5jcyA9IHsKPiAgaW50IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2F0dGFjaF9icmlk Z2Uoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAo+ICAJCQkJCSAgc3RydWN0 IGRybV9icmlkZ2UgKmJyaWRnZSkKPiAgewo+IC0JYnJpZGdlLT5lbmNvZGVyID0gJnBpcGUtPmVu Y29kZXI7Cj4gLQlwaXBlLT5lbmNvZGVyLmJyaWRnZSA9IGJyaWRnZTsKPiAtCXJldHVybiBkcm1f YnJpZGdlX2F0dGFjaChwaXBlLT5lbmNvZGVyLmRldiwgYnJpZGdlKTsKPiArCXJldHVybiBkcm1f YnJpZGdlX2F0dGFjaCgmcGlwZS0+ZW5jb2RlciwgYnJpZGdlLCBOVUxMKTsKPiAgfQo+ICBFWFBP UlRfU1lNQk9MKGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2F0dGFjaF9icmlkZ2UpOwo+ICAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHAuYyBiL2RyaXZlcnMv Z3B1L2RybS9leHlub3MvZXh5bm9zX2RwLmMKPiBpbmRleCA1MjgyMjlmYWZmZTQuLjFlZjBiZTMz OGI4NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHAuYwo+IEBAIC05OSw3ICs5OSw2 IEBAIHN0YXRpYyBpbnQgZXh5bm9zX2RwX2JyaWRnZV9hdHRhY2goc3RydWN0IGFuYWxvZ2l4X2Rw X3BsYXRfZGF0YSAqcGxhdF9kYXRhLAo+ICAJCQkJICAgc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcikKPiAgewo+ICAJc3RydWN0IGV4eW5vc19kcF9kZXZpY2UgKmRwID0gdG9fZHAocGxh dF9kYXRhKTsKPiAtCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZkcC0+ZW5jb2RlcjsK PiAgCWludCByZXQ7Cj4gIAo+ICAJZHJtX2Nvbm5lY3Rvcl9yZWdpc3Rlcihjb25uZWN0b3IpOwo+ IEBAIC0xMDcsOSArMTA2LDcgQEAgc3RhdGljIGludCBleHlub3NfZHBfYnJpZGdlX2F0dGFjaChz dHJ1Y3QgYW5hbG9naXhfZHBfcGxhdF9kYXRhICpwbGF0X2RhdGEsCj4gIAo+ICAJLyogUHJlLWVt cHQgRFAgY29ubmVjdG9yIGNyZWF0aW9uIGlmIHRoZXJlJ3MgYSBicmlkZ2UgKi8KPiAgCWlmIChk cC0+cHRuX2JyaWRnZSkgewo+IC0JCWJyaWRnZS0+bmV4dCA9IGRwLT5wdG5fYnJpZGdlOwo+IC0J CWRwLT5wdG5fYnJpZGdlLT5lbmNvZGVyID0gZW5jb2RlcjsKPiAtCQlyZXQgPSBkcm1fYnJpZGdl X2F0dGFjaChlbmNvZGVyLT5kZXYsIGRwLT5wdG5fYnJpZGdlKTsKPiArCQlyZXQgPSBkcm1fYnJp ZGdlX2F0dGFjaCgmZHAtPmVuY29kZXIsIGRwLT5wdG5fYnJpZGdlLCBicmlkZ2UpOwo+ICAJCWlm IChyZXQpIHsKPiAgCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYXR0YWNoIGJyaWRnZSB0byBkcm1c biIpOwo+ICAJCQlicmlkZ2UtPm5leHQgPSBOVUxMOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4 eW5vc19kcm1fZHNpLmMKPiBpbmRleCBlMDdjYjFmZTQ4NjAuLjgxMmUyZWMwNzYxZCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMKPiBAQCAtMTcxOCwxMCArMTcx OCw4IEBAIHN0YXRpYyBpbnQgZXh5bm9zX2RzaV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0IGRldmljZSAqbWFzdGVyLAo+ICAJfQo+ICAKPiAgCWJyaWRnZSA9IG9mX2RybV9maW5kX2Jy aWRnZShkc2ktPmJyaWRnZV9ub2RlKTsKPiAtCWlmIChicmlkZ2UpIHsKPiAtCQllbmNvZGVyLT5i cmlkZ2UgPSBicmlkZ2U7Cj4gLQkJZHJtX2JyaWRnZV9hdHRhY2goZHJtX2RldiwgYnJpZGdlKTsK PiAtCX0KPiArCWlmIChicmlkZ2UpCj4gKwkJZHJtX2JyaWRnZV9hdHRhY2goZW5jb2RlciwgYnJp ZGdlLCBOVUxMKTsKPiAgCj4gIAlyZXR1cm4gbWlwaV9kc2lfaG9zdF9yZWdpc3RlcigmZHNpLT5k c2lfaG9zdCk7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNs X2RjdV9kcm1fcmdiLmMgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9yZ2Iu Ywo+IGluZGV4IGUxZGQ3NWIxODExOC4uM2FkNzY0MjNjNjBkIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX3JnYi5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcmdiLmMKPiBAQCAtMTY3LDEwICsxNjcsNyBAQCBzdGF0 aWMgaW50IGZzbF9kY3VfYXR0YWNoX2VuZHBvaW50KHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2Ug KmZzbF9kZXYsCj4gIAlpZiAoIWJyaWRnZSkKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCj4gLQlm c2xfZGV2LT5lbmNvZGVyLmJyaWRnZSA9IGJyaWRnZTsKPiAtCWJyaWRnZS0+ZW5jb2RlciA9ICZm c2xfZGV2LT5lbmNvZGVyOwo+IC0KPiAtCXJldHVybiBkcm1fYnJpZGdlX2F0dGFjaChmc2xfZGV2 LT5kcm0sIGJyaWRnZSk7Cj4gKwlyZXR1cm4gZHJtX2JyaWRnZV9hdHRhY2goJmZzbF9kZXYtPmVu Y29kZXIsIGJyaWRnZSwgTlVMTCk7Cj4gIH0KPiAgCj4gIGludCBmc2xfZGN1X2NyZWF0ZV9vdXRw dXRzKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYpCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4vZHdfZHJtX2RzaS5jIGIvZHJpdmVycy9ncHUv ZHJtL2hpc2lsaWNvbi9raXJpbi9kd19kcm1fZHNpLmMKPiBpbmRleCA5OTg0NTJhZDBmY2IuLjE3 MzdlOThiYzEwYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmlu L2R3X2RybV9kc2kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4vZHdf ZHJtX2RzaS5jCj4gQEAgLTcwOSwxMCArNzA5LDcgQEAgc3RhdGljIGludCBkc2lfYnJpZGdlX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGR3X2RzaSAqZHNpKQo+ICAJaW50IHJl dDsKPiAgCj4gIAkvKiBhc3NvY2lhdGUgdGhlIGJyaWRnZSB0byBkc2kgZW5jb2RlciAqLwo+IC0J ZW5jb2Rlci0+YnJpZGdlID0gYnJpZGdlOwo+IC0JYnJpZGdlLT5lbmNvZGVyID0gZW5jb2RlcjsK PiAtCj4gLQlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChkZXYsIGJyaWRnZSk7Cj4gKwlyZXQgPSBk cm1fYnJpZGdlX2F0dGFjaChlbmNvZGVyLCBicmlkZ2UsIE5VTEwpOwo+ICAJaWYgKHJldCkgewo+ ICAJCURSTV9FUlJPUigiZmFpbGVkIHRvIGF0dGFjaCBleHRlcm5hbCBicmlkZ2VcbiIpOwo+ICAJ CXJldHVybiByZXQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWxkYi5j IGIvZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtbGRiLmMKPiBpbmRleCBiMzAwOTk4ZGNlN2QuLjJm Y2I1NzlmNTQ4OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC1sZGIuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWxkYi5jCj4gQEAgLTQ2MSwxMCArNDYxLDgg QEAgc3RhdGljIGludCBpbXhfbGRiX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCj4g IAkJCSBEUk1fTU9ERV9FTkNPREVSX0xWRFMsIE5VTEwpOwo+ICAKPiAgCWlmIChpbXhfbGRiX2No LT5icmlkZ2UpIHsKPiAtCQlpbXhfbGRiX2NoLT5icmlkZ2UtPmVuY29kZXIgPSBlbmNvZGVyOwo+ IC0KPiAtCQlpbXhfbGRiX2NoLT5lbmNvZGVyLmJyaWRnZSA9IGlteF9sZGJfY2gtPmJyaWRnZTsK PiAtCQlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChkcm0sIGlteF9sZGJfY2gtPmJyaWRnZSk7Cj4g KwkJcmV0ID0gZHJtX2JyaWRnZV9hdHRhY2goJmlteF9sZGJfY2gtPmVuY29kZXIsCj4gKwkJCQkJ aW14X2xkYl9jaC0+YnJpZGdlLCBOVUxMKTsKPiAgCQlpZiAocmV0KSB7Cj4gIAkJCURSTV9FUlJP UigiRmFpbGVkIHRvIGluaXRpYWxpemUgYnJpZGdlIHdpdGggZHJtXG4iKTsKPiAgCQkJcmV0dXJu IHJldDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2lteC9wYXJhbGxlbC1kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaW14L3BhcmFsbGVsLWRpc3BsYXkuYwo+IGluZGV4IGQ3OTZh ZGEyYTQ3YS4uMmQ4MGM3NjlmNTZiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbXgv cGFyYWxsZWwtZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2lteC9wYXJhbGxlbC1k aXNwbGF5LmMKPiBAQCAtMTk4LDkgKzE5OCw3IEBAIHN0YXRpYyBpbnQgaW14X3BkX3JlZ2lzdGVy KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCj4gIAkJZHJtX3BhbmVsX2F0dGFjaChpbXhwZC0+cGFu ZWwsICZpbXhwZC0+Y29ubmVjdG9yKTsKPiAgCj4gIAlpZiAoaW14cGQtPmJyaWRnZSkgewo+IC0J CWlteHBkLT5icmlkZ2UtPmVuY29kZXIgPSBlbmNvZGVyOwo+IC0JCWVuY29kZXItPmJyaWRnZSA9 IGlteHBkLT5icmlkZ2U7Cj4gLQkJcmV0ID0gZHJtX2JyaWRnZV9hdHRhY2goZHJtLCBpbXhwZC0+ YnJpZGdlKTsKPiArCQlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChlbmNvZGVyLCBpbXhwZC0+YnJp ZGdlLCBOVUxMKTsKPiAgCQlpZiAocmV0IDwgMCkgewo+ICAJCQlkZXZfZXJyKGlteHBkLT5kZXYs ICJmYWlsZWQgdG8gYXR0YWNoIGJyaWRnZTogJWRcbiIsCj4gIAkJCQlyZXQpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaS5jIGIvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kcGkuYwo+IGluZGV4IDAxODZlNTAwZDJhNS4uM2NjZWQxYzUyMmZkIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaS5jCj4gQEAgLTYzLDYgKzYzLDcgQEAgZW51 bSBtdGtfZHBpX291dF9jb2xvcl9mb3JtYXQgewo+ICBzdHJ1Y3QgbXRrX2RwaSB7Cj4gIAlzdHJ1 Y3QgbXRrX2RkcF9jb21wIGRkcF9jb21wOwo+ICAJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7 Cj4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlOwo+ICAJdm9pZCBfX2lvbWVtICpyZWdzOwo+ ICAJc3RydWN0IGRldmljZSAqZGV2Owo+ICAJc3RydWN0IGNsayAqZW5naW5lX2NsazsKPiBAQCAt NjE1LDggKzYxNiw3IEBAIHN0YXRpYyBpbnQgbXRrX2RwaV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQo+ICAJLyogQ3VycmVudGx5IERQ STAgaXMgZml4ZWQgdG8gYmUgZHJpdmVuIGJ5IE9WTDEgKi8KPiAgCWRwaS0+ZW5jb2Rlci5wb3Nz aWJsZV9jcnRjcyA9IEJJVCgxKTsKPiAgCj4gLQlkcGktPmVuY29kZXIuYnJpZGdlLT5lbmNvZGVy ID0gJmRwaS0+ZW5jb2RlcjsKPiAtCXJldCA9IGRybV9icmlkZ2VfYXR0YWNoKGRwaS0+ZW5jb2Rl ci5kZXYsIGRwaS0+ZW5jb2Rlci5icmlkZ2UpOwo+ICsJcmV0ID0gZHJtX2JyaWRnZV9hdHRhY2go JmRwaS0+ZW5jb2RlciwgZHBpLT5icmlkZ2UsIE5VTEwpOwo+ICAJaWYgKHJldCkgewo+ICAJCWRl dl9lcnIoZGV2LCAiRmFpbGVkIHRvIGF0dGFjaCBicmlkZ2U6ICVkXG4iLCByZXQpOwo+ICAJCWdv dG8gZXJyX2NsZWFudXA7Cj4gQEAgLTcxMyw5ICs3MTMsOSBAQCBzdGF0aWMgaW50IG10a19kcGlf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCj4gIAlkZXZfaW5mbyhkZXYs ICJGb3VuZCBicmlkZ2Ugbm9kZTogJXNcbiIsIGJyaWRnZV9ub2RlLT5mdWxsX25hbWUpOwo+ICAK PiAtCWRwaS0+ZW5jb2Rlci5icmlkZ2UgPSBvZl9kcm1fZmluZF9icmlkZ2UoYnJpZGdlX25vZGUp Owo+ICsJZHBpLT5icmlkZ2UgPSBvZl9kcm1fZmluZF9icmlkZ2UoYnJpZGdlX25vZGUpOwo+ICAJ b2Zfbm9kZV9wdXQoYnJpZGdlX25vZGUpOwo+IC0JaWYgKCFkcGktPmVuY29kZXIuYnJpZGdlKQo+ ICsJaWYgKCFkcGktPmJyaWRnZSkKPiAgCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsKPiAgCj4gIAlj b21wX2lkID0gbXRrX2RkcF9jb21wX2dldF9pZChkZXYtPm9mX25vZGUsIE1US19EUEkpOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RzaS5jIGIvZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kc2kuYwo+IGluZGV4IDI4YjIwNDRlZDlmMi4uMmFjMGYxYWJi YTg2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHNpLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RzaS5jCj4gQEAgLTU5NywyNiArNTk3 LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcwo+ICAJ LmdldF9tb2RlcyA9IG10a19kc2lfY29ubmVjdG9yX2dldF9tb2RlcywKPiAgfTsKPiAgCj4gLXN0 YXRpYyBpbnQgbXRrX2RybV9hdHRhY2hfYnJpZGdlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Us Cj4gLQkJCQkgc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+IC17Cj4gLQlpbnQgcmV0Owo+ IC0KPiAtCWlmICghYnJpZGdlKQo+IC0JCXJldHVybiAtRU5PRU5UOwo+IC0KPiAtCWVuY29kZXIt PmJyaWRnZSA9IGJyaWRnZTsKPiAtCWJyaWRnZS0+ZW5jb2RlciA9IGVuY29kZXI7Cj4gLQlyZXQg PSBkcm1fYnJpZGdlX2F0dGFjaChlbmNvZGVyLT5kZXYsIGJyaWRnZSk7Cj4gLQlpZiAocmV0KSB7 Cj4gLQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYXR0YWNoIGJyaWRnZSB0byBkcm1cbiIpOwo+IC0J CWVuY29kZXItPmJyaWRnZSA9IE5VTEw7Cj4gLQkJYnJpZGdlLT5lbmNvZGVyID0gTlVMTDsKPiAt CX0KPiAtCj4gLQlyZXR1cm4gcmV0Owo+IC19Cj4gLQo+ICBzdGF0aWMgaW50IG10a19kc2lfY3Jl YXRlX2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgbXRrX2RzaSAqZHNp KQo+ICB7Cj4gIAlpbnQgcmV0Owo+IEBAIC02NjcsOCArNjQ3LDEwIEBAIHN0YXRpYyBpbnQgbXRr X2RzaV9jcmVhdGVfY29ubl9lbmMoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0IG10a19k c2kgKmRzaSkKPiAgCWRzaS0+ZW5jb2Rlci5wb3NzaWJsZV9jcnRjcyA9IDE7Cj4gIAo+ICAJLyog SWYgdGhlcmUncyBhIGJyaWRnZSwgYXR0YWNoIHRvIGl0IGFuZCBsZXQgaXQgY3JlYXRlIHRoZSBj b25uZWN0b3IgKi8KPiAtCXJldCA9IG10a19kcm1fYXR0YWNoX2JyaWRnZShkc2ktPmJyaWRnZSwg JmRzaS0+ZW5jb2Rlcik7Cj4gKwlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaCgmZHNpLT5lbmNvZGVy LCBkc2ktPmJyaWRnZSwgTlVMTCk7Cj4gIAlpZiAocmV0KSB7Cj4gKwkJRFJNX0VSUk9SKCJGYWls ZWQgdG8gYXR0YWNoIGJyaWRnZSB0byBkcm1cbiIpOwo+ICsKPiAgCQkvKiBPdGhlcndpc2UgY3Jl YXRlIG91ciBvd24gY29ubmVjdG9yIGFuZCBhdHRhY2ggdG8gYSBwYW5lbCAqLwo+ICAJCXJldCA9 IG10a19kc2lfY3JlYXRlX2Nvbm5lY3Rvcihkcm0sIGRzaSk7Cj4gIAkJaWYgKHJldCkKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pLmMgYi9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWkuYwo+IGluZGV4IDcxMjI3ZGVlZjIxYi4uNWNhMWIwZmJm OTM3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pLmMKPiBAQCAtMTQ5LDYgKzE0 OSw3IEBAIHN0cnVjdCBoZG1pX2F1ZGlvX3BhcmFtIHsKPiAgCj4gIHN0cnVjdCBtdGtfaGRtaSB7 Cj4gIAlzdHJ1Y3QgZHJtX2JyaWRnZSBicmlkZ2U7Cj4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSAqbmV4 dF9icmlkZ2U7Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uOwo+ICAJc3RydWN0IGRldmlj ZSAqZGV2Owo+ICAJc3RydWN0IHBoeSAqcGh5Owo+IEBAIC0xMzIwLDkgKzEzMjEsOSBAQCBzdGF0 aWMgaW50IG10a19oZG1pX2JyaWRnZV9hdHRhY2goc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkK PiAgCQlyZXR1cm4gcmV0Owo+ICAJfQo+ICAKPiAtCWlmIChicmlkZ2UtPm5leHQpIHsKPiAtCQli cmlkZ2UtPm5leHQtPmVuY29kZXIgPSBicmlkZ2UtPmVuY29kZXI7Cj4gLQkJcmV0ID0gZHJtX2Jy aWRnZV9hdHRhY2goYnJpZGdlLT5lbmNvZGVyLT5kZXYsIGJyaWRnZS0+bmV4dCk7Cj4gKwlpZiAo aGRtaS0+bmV4dF9icmlkZ2UpIHsKPiArCQlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChicmlkZ2Ut PmVuY29kZXIsIGhkbWktPm5leHRfYnJpZGdlLAo+ICsJCQkJCWJyaWRnZSk7Cj4gIAkJaWYgKHJl dCkgewo+ICAJCQlkZXZfZXJyKGhkbWktPmRldiwKPiAgCQkJCSJGYWlsZWQgdG8gYXR0YWNoIGV4 dGVybmFsIGJyaWRnZTogJWRcbiIsIHJldCk7Cj4gQEAgLTE1MDUsOCArMTUwNiw4IEBAIHN0YXRp YyBpbnQgbXRrX2hkbWlfZHRfcGFyc2VfcGRhdGEoc3RydWN0IG10a19oZG1pICpoZG1pLAo+ICAJ b2Zfbm9kZV9wdXQoZXApOwo+ICAKPiAgCWlmICghb2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUocmVt b3RlLCAiaGRtaS1jb25uZWN0b3IiKSkgewo+IC0JCWhkbWktPmJyaWRnZS5uZXh0ID0gb2ZfZHJt X2ZpbmRfYnJpZGdlKHJlbW90ZSk7Cj4gLQkJaWYgKCFoZG1pLT5icmlkZ2UubmV4dCkgewo+ICsJ CWhkbWktPm5leHRfYnJpZGdlID0gb2ZfZHJtX2ZpbmRfYnJpZGdlKHJlbW90ZSk7Cj4gKwkJaWYg KCFoZG1pLT5uZXh0X2JyaWRnZSkgewo+ICAJCQlkZXZfZXJyKGRldiwgIldhaXRpbmcgZm9yIGV4 dGVybmFsIGJyaWRnZVxuIik7Cj4gIAkJCW9mX25vZGVfcHV0KHJlbW90ZSk7Cj4gIAkJCXJldHVy biAtRVBST0JFX0RFRkVSOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9k c2lfbWFuYWdlci5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX21hbmFnZXIuYwo+IGlu ZGV4IGM4ZDFmMTljOWE2ZC4uMmJkOGRhZDc2MTA1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZHNpL2RzaV9tYW5hZ2VyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rz aS9kc2lfbWFuYWdlci5jCj4gQEAgLTU3OSw2ICs1NzksNyBAQCBzdHJ1Y3QgZHJtX2JyaWRnZSAq bXNtX2RzaV9tYW5hZ2VyX2JyaWRnZV9pbml0KHU4IGlkKQo+ICAJc3RydWN0IG1zbV9kc2kgKm1z bV9kc2kgPSBkc2lfbWdyX2dldF9kc2koaWQpOwo+ICAJc3RydWN0IGRybV9icmlkZ2UgKmJyaWRn ZSA9IE5VTEw7Cj4gIAlzdHJ1Y3QgZHNpX2JyaWRnZSAqZHNpX2JyaWRnZTsKPiArCXN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlcjsKPiAgCWludCByZXQ7Cj4gIAo+ICAJZHNpX2JyaWRnZSA9IGRl dm1fa3phbGxvYyhtc21fZHNpLT5kZXYtPmRldiwKPiBAQCAtNTkwLDEwICs1OTEsMTggQEAgc3Ry dWN0IGRybV9icmlkZ2UgKm1zbV9kc2lfbWFuYWdlcl9icmlkZ2VfaW5pdCh1OCBpZCkKPiAgCj4g IAlkc2lfYnJpZGdlLT5pZCA9IGlkOwo+ICAKPiArCS8qCj4gKwkgKiBIQUNLOiB3ZSBtYXkgbm90 IGtub3cgdGhlIGV4dGVybmFsIERTSSBicmlkZ2UgZGV2aWNlJ3MgbW9kZQo+ICsJICogZmxhZ3Mg aGVyZS4gV2UnbGwgZ2V0IHRvIGtub3cgdGhlbSBvbmx5IHdoZW4gdGhlIGRldmljZQo+ICsJICog YXR0YWNoZXMgdG8gdGhlIGRzaSBob3N0LiBGb3Igbm93LCBhc3N1bWUgdGhlIGJyaWRnZSBzdXBw b3J0cwo+ICsJICogRFNJIHZpZGVvIG1vZGUKPiArCSAqLwo+ICsJZW5jb2RlciA9IG1zbV9kc2kt PmVuY29kZXJzW01TTV9EU0lfVklERU9fRU5DT0RFUl9JRF07Cj4gKwo+ICAJYnJpZGdlID0gJmRz aV9icmlkZ2UtPmJhc2U7Cj4gIAlicmlkZ2UtPmZ1bmNzID0gJmRzaV9tZ3JfYnJpZGdlX2Z1bmNz Owo+ICAKPiAtCXJldCA9IGRybV9icmlkZ2VfYXR0YWNoKG1zbV9kc2ktPmRldiwgYnJpZGdlKTsK PiArCXJldCA9IGRybV9icmlkZ2VfYXR0YWNoKGVuY29kZXIsIGJyaWRnZSwgTlVMTCk7Cj4gIAlp ZiAocmV0KQo+ICAJCWdvdG8gZmFpbDsKPiAgCj4gQEAgLTYyOCwxMSArNjM3LDcgQEAgc3RydWN0 IGRybV9jb25uZWN0b3IgKm1zbV9kc2lfbWFuYWdlcl9leHRfYnJpZGdlX2luaXQodTggaWQpCj4g IAllbmNvZGVyID0gbXNtX2RzaS0+ZW5jb2RlcnNbTVNNX0RTSV9WSURFT19FTkNPREVSX0lEXTsK PiAgCj4gIAkvKiBsaW5rIHRoZSBpbnRlcm5hbCBkc2kgYnJpZGdlIHRvIHRoZSBleHRlcm5hbCBi cmlkZ2UgKi8KPiAtCWludF9icmlkZ2UtPm5leHQgPSBleHRfYnJpZGdlOwo+IC0JLyogc2V0IHRo ZSBleHRlcm5hbCBicmlkZ2UncyBlbmNvZGVyIGFzIGRzaSdzIGVuY29kZXIgKi8KPiAtCWV4dF9i cmlkZ2UtPmVuY29kZXIgPSBlbmNvZGVyOwo+IC0KPiAtCWRybV9icmlkZ2VfYXR0YWNoKGRldiwg ZXh0X2JyaWRnZSk7Cj4gKwlkcm1fYnJpZGdlX2F0dGFjaChlbmNvZGVyLCBleHRfYnJpZGdlLCBp bnRfYnJpZGdlKTsKPiAgCj4gIAkvKgo+ICAJICogd2UgbmVlZCB0aGUgZHJtX2Nvbm5lY3RvciBj cmVhdGVkIGJ5IHRoZSBleHRlcm5hbCBicmlkZ2UKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9lZHAvZWRwX2JyaWRnZS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9lZHAvZWRwX2Jy aWRnZS5jCj4gaW5kZXggMmJjNzNmODJmM2Y1Li45MzFhNWM5N2NjY2YgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21zbS9lZHAvZWRwX2JyaWRnZS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9lZHAvZWRwX2JyaWRnZS5jCj4gQEAgLTEwNiw3ICsxMDYsNyBAQCBzdHJ1Y3QgZHJt X2JyaWRnZSAqbXNtX2VkcF9icmlkZ2VfaW5pdChzdHJ1Y3QgbXNtX2VkcCAqZWRwKQo+ICAJYnJp ZGdlID0gJmVkcF9icmlkZ2UtPmJhc2U7Cj4gIAlicmlkZ2UtPmZ1bmNzID0gJmVkcF9icmlkZ2Vf ZnVuY3M7Cj4gIAo+IC0JcmV0ID0gZHJtX2JyaWRnZV9hdHRhY2goZWRwLT5kZXYsIGJyaWRnZSk7 Cj4gKwlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChlZHAtPmVuY29kZXIsIGJyaWRnZSwgTlVMTCk7 Cj4gIAlpZiAocmV0KQo+ICAJCWdvdG8gZmFpbDsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vaGRtaS9oZG1pX2JyaWRnZS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9oZG1p L2hkbWlfYnJpZGdlLmMKPiBpbmRleCBiYWNiZDVkOGRmMGUuLjRlNmQxYmYyNzQ3NCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2hkbWkvaGRtaV9icmlkZ2UuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vaGRtaS9oZG1pX2JyaWRnZS5jCj4gQEAgLTIyNyw3ICsyMjcsNyBA QCBzdHJ1Y3QgZHJtX2JyaWRnZSAqbXNtX2hkbWlfYnJpZGdlX2luaXQoc3RydWN0IGhkbWkgKmhk bWkpCj4gIAlicmlkZ2UgPSAmaGRtaV9icmlkZ2UtPmJhc2U7Cj4gIAlicmlkZ2UtPmZ1bmNzID0g Jm1zbV9oZG1pX2JyaWRnZV9mdW5jczsKPiAgCj4gLQlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaCho ZG1pLT5kZXYsIGJyaWRnZSk7Cj4gKwlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChoZG1pLT5lbmNv ZGVyLCBicmlkZ2UsIE5VTEwpOwo+ICAJaWYgKHJldCkKPiAgCQlnb3RvIGZhaWw7Cj4gIAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2hkbWllbmMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfaGRtaWVuYy5jCj4gaW5kZXggYTFhMmM1ZTc4 MjJjLi45MzNhMjU0Nzc5OGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUv cmNhcl9kdV9oZG1pZW5jLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1 X2hkbWllbmMuYwo+IEBAIC0xMjQsMTAgKzEyNCw3IEBAIGludCByY2FyX2R1X2hkbWllbmNfaW5p dChzdHJ1Y3QgcmNhcl9kdV9kZXZpY2UgKnJjZHUsCj4gIAloZG1pZW5jLT5yZW5jID0gcmVuYzsK PiAgCj4gIAkvKiBMaW5rIHRoZSBicmlkZ2UgdG8gdGhlIGVuY29kZXIuICovCj4gLQlicmlkZ2Ut PmVuY29kZXIgPSBlbmNvZGVyOwo+IC0JZW5jb2Rlci0+YnJpZGdlID0gYnJpZGdlOwo+IC0KPiAt CXJldCA9IGRybV9icmlkZ2VfYXR0YWNoKHJjZHUtPmRkZXYsIGJyaWRnZSk7Cj4gKwlyZXQgPSBk cm1fYnJpZGdlX2F0dGFjaChlbmNvZGVyLCBicmlkZ2UsIE5VTEwpOwo+ICAJaWYgKHJldCkgewo+ ICAJCWRybV9lbmNvZGVyX2NsZWFudXAoZW5jb2Rlcik7Cj4gIAkJcmV0dXJuIHJldDsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfZHZvLmMgYi9kcml2ZXJzL2dwdS9kcm0v c3RpL3N0aV9kdm8uYwo+IGluZGV4IGU4YzFlZDA4YTlmNy4uNDExZGM2ZWM5NzZlIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2R2by5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL3N0aS9zdGlfZHZvLmMKPiBAQCAtNDc4LDE0ICs0NzgsMTMgQEAgc3RhdGljIGludCBzdGlf ZHZvX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQg KmRhdGEpCj4gIAkJcmV0dXJuIGVycjsKPiAgCX0KPiAgCj4gLQllcnIgPSBkcm1fYnJpZGdlX2F0 dGFjaChkcm1fZGV2LCBicmlkZ2UpOwo+ICsJZXJyID0gZHJtX2JyaWRnZV9hdHRhY2goZW5jb2Rl ciwgYnJpZGdlLCBOVUxMKTsKPiAgCWlmIChlcnIpIHsKPiAgCQlEUk1fRVJST1IoIkZhaWxlZCB0 byBhdHRhY2ggYnJpZGdlXG4iKTsKPiAgCQlyZXR1cm4gZXJyOwo+ICAJfQo+ICAKPiAgCWR2by0+ YnJpZGdlID0gYnJpZGdlOwo+IC0JZW5jb2Rlci0+YnJpZGdlID0gYnJpZGdlOwo+ICAJY29ubmVj dG9yLT5lbmNvZGVyID0gZW5jb2RlcjsKPiAgCWR2by0+ZW5jb2RlciA9IGVuY29kZXI7Cj4gIAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9oZGEuYyBiL2RyaXZlcnMvZ3B1 L2RybS9zdGkvc3RpX2hkYS5jCj4gaW5kZXggZTdjMjQzZjcwODcwLi41YjE4NTVlNDRmODcgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfaGRhLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vc3RpL3N0aV9oZGEuYwo+IEBAIC03MTQsOSArNzE0LDggQEAgc3RhdGljIGludCBz dGlfaGRhX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZv aWQgKmRhdGEpCj4gIAo+ICAJYnJpZGdlLT5kcml2ZXJfcHJpdmF0ZSA9IGhkYTsKPiAgCWJyaWRn ZS0+ZnVuY3MgPSAmc3RpX2hkYV9icmlkZ2VfZnVuY3M7Cj4gLQlkcm1fYnJpZGdlX2F0dGFjaChk cm1fZGV2LCBicmlkZ2UpOwo+ICsJZHJtX2JyaWRnZV9hdHRhY2goZW5jb2RlciwgYnJpZGdlLCBO VUxMKTsKPiAgCj4gLQllbmNvZGVyLT5icmlkZ2UgPSBicmlkZ2U7Cj4gIAljb25uZWN0b3ItPmVu Y29kZXIgPSBlbmNvZGVyOwo+ICAKPiAgCWRybV9jb25uZWN0b3IgPSAoc3RydWN0IGRybV9jb25u ZWN0b3IgKiljb25uZWN0b3I7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zdGkvc3Rp X2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuYwo+IGluZGV4IDM3NmIwNzYz Yzg3NC4uZjBhZjFhZTgyZWU5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zdGkvc3Rp X2hkbWkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2hkbWkuYwo+IEBAIC0xMzA4 LDkgKzEzMDgsOCBAQCBzdGF0aWMgaW50IHN0aV9oZG1pX2JpbmQoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCj4gIAo+ICAJYnJpZGdlLT5kcml2 ZXJfcHJpdmF0ZSA9IGhkbWk7Cj4gIAlicmlkZ2UtPmZ1bmNzID0gJnN0aV9oZG1pX2JyaWRnZV9m dW5jczsKPiAtCWRybV9icmlkZ2VfYXR0YWNoKGRybV9kZXYsIGJyaWRnZSk7Cj4gKwlkcm1fYnJp ZGdlX2F0dGFjaChlbmNvZGVyLCBicmlkZ2UsIE5VTEwpOwo+ICAKPiAtCWVuY29kZXItPmJyaWRn ZSA9IGJyaWRnZTsKPiAgCWNvbm5lY3Rvci0+ZW5jb2RlciA9IGVuY29kZXI7Cj4gIAo+ICAJZHJt X2Nvbm5lY3RvciA9IChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqKWNvbm5lY3RvcjsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX3JnYi5jIGIvZHJpdmVycy9ncHUvZHJt L3N1bjRpL3N1bjRpX3JnYi5jCj4gaW5kZXggYzNmZjEwZjU1OWNjLi5jZTA3MWMxNzEzNGIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX3JnYi5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX3JnYi5jCj4gQEAgLTIxOSw2ICsyMTksNyBAQCBpbnQg c3VuNGlfcmdiX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKPiAgCXN0cnVjdCBzdW40aV9k cnYgKmRydiA9IGRybS0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3Qgc3VuNGlfdGNvbiAqdGNvbiA9 IGRydi0+dGNvbjsKPiAgCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiArCXN0cnVjdCBk cm1fYnJpZGdlICpicmlkZ2U7Cj4gIAlzdHJ1Y3Qgc3VuNGlfcmdiICpyZ2I7Cj4gIAlpbnQgcmV0 Owo+ICAKPiBAQCAtMjI5LDggKzIzMCw4IEBAIGludCBzdW40aV9yZ2JfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZHJtKQo+ICAJZW5jb2RlciA9ICZyZ2ItPmVuY29kZXI7Cj4gIAo+ICAJdGNvbi0+ cGFuZWwgPSBzdW40aV90Y29uX2ZpbmRfcGFuZWwodGNvbi0+ZGV2LT5vZl9ub2RlKTsKPiAtCWVu Y29kZXItPmJyaWRnZSA9IHN1bjRpX3Rjb25fZmluZF9icmlkZ2UodGNvbi0+ZGV2LT5vZl9ub2Rl KTsKPiAtCWlmIChJU19FUlIodGNvbi0+cGFuZWwpICYmIElTX0VSUihlbmNvZGVyLT5icmlkZ2Up KSB7Cj4gKwlicmlkZ2UgPSBzdW40aV90Y29uX2ZpbmRfYnJpZGdlKHRjb24tPmRldi0+b2Zfbm9k ZSk7Cj4gKwlpZiAoSVNfRVJSKHRjb24tPnBhbmVsKSAmJiBJU19FUlIoYnJpZGdlKSkgewo+ICAJ CWRldl9pbmZvKGRybS0+ZGV2LCAiTm8gcGFuZWwgb3IgYnJpZGdlIGZvdW5kLi4uIFJHQiBvdXRw dXQgZGlzYWJsZWRcbiIpOwo+ICAJCXJldHVybiAwOwo+ICAJfQo+IEBAIC0yNzEsMTYgKzI3Miwx MiBAQCBpbnQgc3VuNGlfcmdiX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKPiAgCQl9Cj4g IAl9Cj4gIAo+IC0JaWYgKCFJU19FUlIoZW5jb2Rlci0+YnJpZGdlKSkgewo+IC0JCWVuY29kZXIt PmJyaWRnZS0+ZW5jb2RlciA9ICZyZ2ItPmVuY29kZXI7Cj4gLQo+IC0JCXJldCA9IGRybV9icmlk Z2VfYXR0YWNoKGRybSwgZW5jb2Rlci0+YnJpZGdlKTsKPiArCWlmICghSVNfRVJSKGJyaWRnZSkp IHsKPiArCQlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChlbmNvZGVyLCBicmlkZ2UsIE5VTEwpOwo+ ICAJCWlmIChyZXQpIHsKPiAgCQkJZGV2X2Vycihkcm0tPmRldiwgIkNvdWxkbid0IGF0dGFjaCBv dXIgYnJpZGdlXG4iKTsKPiAgCQkJZ290byBlcnJfY2xlYW51cF9jb25uZWN0b3I7Cj4gIAkJfQo+ IC0JfSBlbHNlIHsKPiAtCQllbmNvZGVyLT5icmlkZ2UgPSBOVUxMOwo+ICAJfQo+ICAKPiAgCXJl dHVybiAwOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fYnJpZGdlLmggYi9pbmNsdWRl L2RybS9kcm1fYnJpZGdlLmgKPiBpbmRleCA1MzBhMWQ2ZThjZGUuLjk0ZTVlZTk2YjNiNSAxMDA2 NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fYnJpZGdlLmgKPiArKysgYi9pbmNsdWRlL2RybS9k cm1fYnJpZGdlLmgKPiBAQCAtMjAxLDcgKzIwMSw4IEBAIHN0cnVjdCBkcm1fYnJpZGdlIHsKPiAg aW50IGRybV9icmlkZ2VfYWRkKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ICB2b2lkIGRy bV9icmlkZ2VfcmVtb3ZlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ICBzdHJ1Y3QgZHJt X2JyaWRnZSAqb2ZfZHJtX2ZpbmRfYnJpZGdlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApOwo+IC1p bnQgZHJtX2JyaWRnZV9hdHRhY2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSk7Cj4gK2ludCBkcm1fYnJpZGdlX2F0dGFjaChzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIsIHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gKwkJICAgICAgc3RydWN0 IGRybV9icmlkZ2UgKnByZXZpb3VzKTsKPiAgdm9pZCBkcm1fYnJpZGdlX2RldGFjaChzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiAgCj4gIGJvb2wgZHJtX2JyaWRnZV9tb2RlX2ZpeHVwKHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK