From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 09/60] drm/bridge: Add connector-related bridge operations and data Date: Thu, 8 Aug 2019 21:19:48 +0300 Message-ID: <20190808181948.GW6055@pendragon.ideasonboard.com> References: <20190707180852.5512-1-laurent.pinchart@ideasonboard.com> <20190707181937.6250-1-laurent.pinchart@ideasonboard.com> <20190707181937.6250-6-laurent.pinchart@ideasonboard.com> <1f98e5f0-d513-d3f2-420d-80e0e0c3c71b@samsung.com> <20190711073548.GD15868@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7A1476E8A5 for ; Thu, 8 Aug 2019 18:19:53 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190711073548.GD15868@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Maxime Ripard , Sebastian Reichel , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Sean Paul List-Id: dri-devel@lists.freedesktop.org SGVsbG8gRGFuaWVsIGFuZCBBbmRyemVqLAoKT24gVGh1LCBKdWwgMTEsIDIwMTkgYXQgMDk6MzU6 NDhBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBXZWQsIEp1bCAxMCwgMjAxOSBh dCAwMjoxMjoxNFBNICswMjAwLCBBbmRyemVqIEhhamRhIHdyb3RlOgo+ID4gSGkgTGF1cmVudCwK PiA+IAo+ID4gSSBsaWtlIHRoZSBhcHByb2FjaCwgY3VycmVudCBwcmFjdGljZSB3aGVuIGFsbW9z dCBldmVyeSBicmlkZ2Ugc2hvdWxkCj4gPiBvcHRpb25hbGx5IGltcGxlbWVudCBjb25uZWN0b3Is IG9yIGFsdGVybmF0aXZlbHkgZG93bnN0cmVhbSBicmlkZ2Ugb3IKPiA+IHBhbmVsIGlzIHZlcnkg cGFpbmZ1bC4KPiAKPiBZZWFoIEkgdGhpbmsgdGhpcyBsb29rcyBtb3N0bHkgcmVhc29uYWJsZS4g U29tZSBhcGkgZGVzaWduIGNvbW1lbnRzIG9uIHRvcAo+IG9mIEFuZHJ6ZWonLCB3aXRoIHRoZSBm YWlyIHdhcm5pbmcgdGhhdCBJIGRpZG4ndCBib3RoZXIgdG8gcmVhZCB1cCBvbiBob3cKPiBpdCdz IGFsbCB1c2VkIGluIHRoZSBlbmQuIEkgcHJvYmFibHkgc2hvdWxkIGdvIGFuZCBkbyB0aGF0LCBh dCBsZWFzdCB0bwo+IGdldCBhIGZlZWxpbmcgZm9yIHdoYXQgeW91ciBocGRfY2IgdXN1YWxseSBk b2VzLgo+IAo+ID4gTW9yZSBjb21tZW50cyBpbmxpbmVkLgo+ID4gCj4gPiBPbiAwNy4wNy4yMDE5 IDIwOjE4LCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4gPiBUbyBzdXBwb3J0IGltcGxlbWVu dGF0aW9uIG9mIERSTSBjb25uZWN0b3JzIG9uIHRvcCBvZiBEUk0gYnJpZGdlcwo+ID4gPiBpbnN0 ZWFkIG9mIGJ5IGJyaWRnZXMsIHRoZSBkcm1fYnJpZGdlIG5lZWRzIHRvIGV4cG9zZSBuZXcgb3Bl cmF0aW9ucyBhbmQKPiA+ID4gZGF0YToKPiA+ID4KPiA+ID4gLSBPdXRwdXQgZGV0ZWN0aW9uLCBo b3QtcGx1ZyBub3RpZmljYXRpb24sIG1vZGUgcmV0cmlldmFsIGFuZCBFRElECj4gPiA+ICAgcmV0 cmlldmFsIG9wZXJhdGlvbnMKPiA+ID4gLSBCaXRtYXNrIG9mIHN1cHBvcnRlZCBvcGVyYXRpb25z Cj4gPiAKPiA+IAo+ID4gV2h5IGRvIHdlIG5lZWQgdGhlc2UgYml0bWFzayBhdCBhbGw/IFdoeSBj YW5ub3Qgd2UgcmVseSBvbiBwcmVzZW5jZSBvZgo+ID4gb3BlcmF0aW9uJ3MgY2FsbGJhY2s/Cj4g Cj4gWWVhaCBhbHNvIG5vdCBhIGh1Z2UgZmFuIG9mIHRoZXNlIGJpdG1hc2tzLiBTbWVsbHMgbGlr ZQo+IERSSVZFUl9HRU18RFJJVkVSX01PREVTRVQsIGFuZCBJIHBlcnNvbmFsbHkgcmVhbGx5IGhh dGUgdGhvc2UuIEVhc3kgdG8KPiBhZGQsIGdlbmVyYWxseSBnb29kIGV4Y3VzZSB0byBub3QgaGF2 ZSB0byB0aGluayB0aHJvdWdoIHRoZSBkZXNpZ24gYmV0d2Vlbgo+IGRpZmZlcmVudCBwYXJ0cyBv ZiBkcml2ZXJzIC0gImp1c3QiIGFkZCBhbm90aGVyIGZsYWcuCgpUaGUgcmVhc29uIGlzIHRoYXQg YSBicmlkZ2UgbWF5IHN1cHBvcnQgYW4gb3BlcmF0aW9uIChhcyBpbiBpbXBsZW1lbnRlZAppbiB0 aGUgYnJpZGdlIGhhcmR3YXJlKSwgYnV0IHRoYXQgb3BlcmF0aW9uIG1heSBub3QgYmUgc3VwcG9y dGVkIG9uIGEKcGFydGljdWxhciBib2FyZC4gRm9yIGluc3RhbmNlIGFuIEhETUkgZW5jb2RlciBt YXkgc3VwcG9ydCByZWFkaW5nIEVESUQKd2hlbiB0aGUgRERDIGxpbmVzIGFyZSBjb25uZWN0ZWQg dG8gdGhlIGVuY29kZXIsIGJ1dCBhIGJvYXJkIG1heSBjb25uZWN0CnRoZSBEREMgbGluZXMgdG8g YW4gSTJDIHBvcnQgb2YgdGhlIFNvQy4gV2UgdGh1cyBuZWVkIHRvIGRlY291cGxlCmlmIGEgcGFy dGljdWxhciBpbnN0YW5jZSBvZiB0aGUgZGV2aWNlIHN1cHBvcnRzIHRoZSBvcGVyYXRpb24gKGV4 cG9zZWQKYnkgdGhlIG9wcyBmbGFncykgZnJvbSB0aGUgZnVuY3Rpb24gcG9pbnRlcnMuCgpXZSBj b3VsZCBvZiBjb3Vyc2UgYWxsb2NhdGUgdGhlIGRybV9icmlkZ2VfZnVuY3Mgc3RydWN0dXJlIGR5 bmFtaWNhbGx5CmZvciBlYWNoIGJyaWRnZSBpbnN0YW5jZSwgYW5kIGZpbGwgaXQgd2l0aCBmdW5j dGlvbiBwb2ludGVycyBtYW51YWxseSwKbGVhdmluZyB0aGUgdW51c2VkIG9wcyBhbHdheXMgTlVM TCwgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBtYWtpbmcgdGhlCnN0cnVjdHVyZSB3cml0YWJsZSwg d2hpY2ggaXMgY29uc2lkZXJlZCBhIHNlY3VyaXR5IGlzc3VlLiBUaGF0J3Mgd2h5IEkKZGVjaWRl ZCB0byBrZWVwIHRoZSBkcm1fYnJpZGdlX2Z1bmNzIHN0cnVjdHVyZSBhcyBhIGdsb2JhbCBzdGF0 aWMgY29uc3QKc3RydWN0dXJlLCBhbmQgYWRkIGFuIG9wcyBiaXRtYXNrLgoKPiA+ID4gLSBCcmlk Z2Ugb3V0cHV0IHR5cGUKPiA+ID4KPiA+ID4gQWRkIGFuZCBkb2N1bWVudCB0aGVzZS4KPiA+ID4K PiA+ID4gVGhyZWUgbmV3IGJyaWRnZSBoZWxwZXIgZnVuY3Rpb25zIGFyZSBhbHNvIGFkZGVkIHRv IGhhbmRsZSBob3QgcGx1Zwo+ID4gPiBub3RpZmljYXRpb24gaW4gYSB3YXkgdGhhdCBpcyBhcyB0 cmFuc3BhcmVudCBhcyBwb3NzaWJsZSBmb3IgdGhlCj4gPiA+IGJyaWRnZXMuCj4gPiAKPiA+IERv Y3VtZW50YXRpb24gb2YgbmV3IG9wc2VzIGRvZXMgbm90IGV4cGxhaW4gaG93IGl0IHNob3VsZCBj b29wZXJhdGUgd2l0aAo+ID4gYnJpZGdlIGNoYWluaW5nLCBJIHN1cHBvc2UgdGhleSBzaG91bGQg YmUgY2hhaW5lZCBleHBsaWNpdGx5LCBhbSBJCj4gPiByaWdodD8gTW9yZSBjb21tZW50cyBhYm91 dCBpdCBsYXRlci4KCk5vLCB0aGUgd2hvbGUgcG9pbnQgaXMgdGhhdCB0aGV5IHNob3VsZCBub3Qg YmUgY2hhaW5lZCBhdCBhbGwuIEEgYnJpZGdlCmRvZXMgbm90IGhhdmUgdG8gcHJvcGFnYXRlLCBm b3IgaW5zdGFuY2UsIC5nZXRfZWRpZCgpIHRvIHRoZSBuZXh0CmJyaWRnZS4gVGhhdCdzIG9uZSBv ZiB0aGUgY29yZSBkZXNpZ24gcHJpbmNpcGxlcyBpbiB0aGlzIHNlcmllcywgSSB3YW50CnRvIGtl ZXAgdGhlIGJyaWRnZXMgYXMgc2ltcGxlIGFzIHBvc3NpYmxlLCBhbmQgbW92ZSB0aGUgY29tcGxl eGl0eSBvZgp0aGUgYm9pbGVycGxhdGUgY29kZSB0aGF0IGlzIGN1cnJlbnRseSBjb3BpZWQgYWxs IGFyb3VuZCB0byBoZWxwZXJzLiBTZWUKcGF0Y2ggImRybTogQWRkIGhlbHBlciB0byBjcmVhdGUg YSBjb25uZWN0b3IgZm9yIGEgY2hhaW4gb2YgYnJpZGdlcyIgZm9yCm1vcmUgaW5mb3JtYXRpb24g YWJvdXQgaG93IHRoaXMgaXMgdXNlZCwgd2l0aCBhIGhlbHBlciB0aGF0IGRlbGVnYXRlcwp0aGUg Y29ubmVjdG9yIG9wZXJhdGlvbnMgdG8gdGhlIGNvcnJlY3QgYnJpZGdlIGluIHRoZSBjaGFpbiBi YXNlZCBvbiB0aGUKb3BzIHJlcG9ydGVkIGJ5IGVhY2ggYnJpZGdlLgoKPiA+ID4gU2lnbmVkLW9m Zi1ieTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29t Pgo+ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMgfCAgOTIgKysr KysrKysrKysrKysrKysrKwo+ID4gPiAgaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oICAgICB8IDE3 MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ID4gPiAgMiBmaWxlcyBjaGFu Z2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ID4gPgo+ID4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f YnJpZGdlLmMKPiA+ID4gaW5kZXggNTE5NTc3ZjM2M2UzLi4zYzJhMjU1ZGY3YWYgMTAwNjQ0Cj4g PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMKPiA+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+ID4gPiBAQCAtNzAsNiArNzAsOCBAQCBzdGF0aWMgTElT VF9IRUFEKGJyaWRnZV9saXN0KTsKPiA+ID4gICAqLwo+ID4gPiAgdm9pZCBkcm1fYnJpZGdlX2Fk ZChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4gPiAgewo+ID4gPiArCW11dGV4X2luaXQo JmJyaWRnZS0+aHBkX211dGV4KTsKPiA+ID4gKwo+ID4gPiAgCW11dGV4X2xvY2soJmJyaWRnZV9s b2NrKTsKPiA+ID4gIAlsaXN0X2FkZF90YWlsKCZicmlkZ2UtPmxpc3QsICZicmlkZ2VfbGlzdCk7 Cj4gPiA+ICAJbXV0ZXhfdW5sb2NrKCZicmlkZ2VfbG9jayk7Cj4gPiA+IEBAIC04Niw2ICs4OCw4 IEBAIHZvaWQgZHJtX2JyaWRnZV9yZW1vdmUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiA+ ID4gIAltdXRleF9sb2NrKCZicmlkZ2VfbG9jayk7Cj4gPiA+ICAJbGlzdF9kZWxfaW5pdCgmYnJp ZGdlLT5saXN0KTsKPiA+ID4gIAltdXRleF91bmxvY2soJmJyaWRnZV9sb2NrKTsKPiA+ID4gKwo+ ID4gPiArCW11dGV4X2Rlc3Ryb3koJmJyaWRnZS0+aHBkX211dGV4KTsKPiA+ID4gIH0KPiA+ID4g IEVYUE9SVF9TWU1CT0woZHJtX2JyaWRnZV9yZW1vdmUpOwo+ID4gPiAgCj4gPiA+IEBAIC00NjMs NiArNDY3LDk0IEBAIHZvaWQgZHJtX2F0b21pY19icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJp ZGdlICpicmlkZ2UsCj4gPiA+ICB9Cj4gPiA+ICBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfYnJp ZGdlX2VuYWJsZSk7Cj4gPiA+ICAKPiA+ID4gKy8qKgo+ID4gPiArICogZHJtX2JyaWRnZV9ocGRf ZW5hYmxlIC0gZW5hYmxlIGhvdCBwbHVnIGRldGVjdGlvbiBmb3IgdGhlIGJyaWRnZQo+ID4gPiAr ICogQGJyaWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4gPiA+ICsgKiBAY2I6IGhvdC1w bHVnIGRldGVjdGlvbiBjYWxsYmFjawo+ID4gPiArICogQGRhdGE6IGRhdGEgdG8gYmUgcGFzc2Vk IHRvIHRoZSBob3QtcGx1ZyBkZXRlY3Rpb24gY2FsbGJhY2sKPiA+ID4gKyAqCj4gPiA+ICsgKiBD YWxsICZkcm1fYnJpZGdlX2Z1bmNzLmhwZF9lbmFibGUgYW5kIHJlZ2lzdGVyIHRoZSBnaXZlbiBA Y2IgYW5kIEBkYXRhIGFzCj4gPiA+ICsgKiBob3QgcGx1ZyBub3RpZmljYXRpb24gY2FsbGJhY2su IEZyb20gbm93IG9uIHRoZSBAY2Igd2lsbCBiZSBjYWxsZWQgd2l0aAo+ID4gPiArICogQGRhdGEg d2hlbiBhbiBvdXRwdXQgc3RhdHVzIGNoYW5nZSBpcyBkZXRlY3RlZCBieSB0aGUgYnJpZGdlLCB1 bnRpbCBob3QgcGx1Zwo+ID4gPiArICogbm90aWZpY2F0aW9uIGdldHMgZGlzYWJsZWQgd2l0aCBk cm1fYnJpZGdlX2hwZF9kaXNhYmxlKCkuCj4gPiA+ICsgKgo+ID4gPiArICogSG90IHBsdWcgZGV0 ZWN0aW9uIGlzIHN1cHBvcnRlZCBvbmx5IGlmIHRoZSBEUk1fQlJJREdFX09QX0hQRCBmbGFnIGlz IHNldCBpbgo+ID4gPiArICogYnJpZGdlLT5vcHMuIFRoaXMgZnVuY3Rpb24gc2hhbGwgbm90IGJl IGNhbGxlZCB3aGVuIHRoZSBmbGFnIGlzIG5vdCBzZXQuCj4gPiA+ICsgKgo+ID4gPiArICogT25s eSBvbmUgaG90IHBsdWcgZGV0ZWN0aW9uIGNhbGxiYWNrIGNhbiBiZSByZWdpc3RlcmVkIGF0IGEg dGltZSwgaXQgaXMgYW4KPiA+ID4gKyAqIGVycm9yIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVu IGhvdCBwbHVnIGRldGVjdGlvbiBpcyBhbHJlYWR5IGVuYWJsZWQgZm9yCj4gPiA+ICsgKiB0aGUg YnJpZGdlLgo+ID4gPiArICovCj4gPiAKPiA+IFRvIHNpbXBsaWZ5IGFyY2hpdGVjdHVyZSBtYXli ZSB3b3VsZCBiZSBiZXR0ZXIgdG8gZW5hYmxlIGhwZCBqdXN0IG9uCj4gPiBicmlkZ2UgYXR0YWNo Ogo+ID4gCj4gPiBicmlkZ2UtPmhwZF9jYiA9IGNiOwo+ID4gCj4gPiBicmlkZ2UtPmhwZF9kYXRh ID0gZGF0YTsKPiA+IAo+ID4gcmV0ID0gZHJtX2JyaWRnZV9hdHRhY2goLi4uKTsKPiAKPiBZZWFo IEkgbGlrZSB0aGlzIG1vcmUuIFRoZSBvdGhlciBwcm9ibGVtIGhlcmUgaXMsIHdoYXQgaWYgeW91 IG5lZWQgbW9yZQo+IHRoYW4gMSBjYWxsYmFjayByZWdpc3RlcnMgb24gdGhlIHNhbWUgYnJpZGdl IGhkcCBzaWduYWw/CgpUaGF0J3Mgd2h5IEkgZGVjaWRlZCB0byBoaWRlIGhpZGUgSFBEIHRocm91 Z2ggaGVscGVycywKZHJtX2JyaWRnZV9ocGRfZW5hYmxlKCkgYW5kIGRybV9icmlkZ2VfaHBkX2Rp c2FibGUoKSBvbiB0aGUgbGlzdGVuZXIKc2lkZSwgYW5kIGRybV9icmlkZ2VfaHBkX25vdGlmeSgp IG9uIHRoZSBldmVudCByZXBvcnRlciBzaWRlLiBXaGlsZSB0aGUKY3VycmVudCBpbXBsZW1lbnRh dGlvbiBpcyBsaW1pdGVkIHRvIGEgc2luZ2xlIGxpc3RlbmVyLCBvbmx5IHRoZSBoZWxwZXJzCndv dWxkIG5lZWQgdG8gYmUgY2hhbmdlZCB0byBleHRlbmQgdGhhdCB0byBtdWx0aXBsZSBsaXN0ZW5l cnMuCgpOb3RlIHRoYXQgdGhlIC5ocGRfZW5hYmxlKCkgYW5kIC5ocGRfZGlzYWJsZSgpIG9wZXJh dGlvbnMgYWxzbyBhbGxvdyB0aGUKYnJpZGdlIHRvIGRpc2FibGUgSFBEIGRldGVjdGlvbiB3aGVu IG5vdCB1c2VkLiBEb2luZyBzbyBrZWVwcyB0aGUgYnJpZGdlCnNpbXBsZSwgaXQgb25seSBuZWVk cyB0byBjYXJlIGFib3V0IHJlcG9ydGluZyBIUEQgZXZlbnRzIHdoZW4gdGhleSdyZQplbmFibGVk LCB3aXRob3V0IGNhcmluZyB3aG8gKGlmIGFueW9uZSkgaXMgbGlzdGVuaW5nLCBhbmQgZ2V0cyBj bGVhcgppbnN0cnVjdGlvbnMgb24gd2hldGhlciB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgSFBE IGhhcmR3YXJlIChpbiBjYXNlCml0IGNhbiBiZSBkaXNhYmxlZCkuCgo+ID4gVGhpcyB3YXkgd2Ug Y291bGQgYXZvaWQgYWRkaW5nIG5ldyBjYWxsYmFja3MgaHBkXyhlbmFibGV8ZGlzYWJsZSkKPiA+ IHdpdGhvdXQgYmlnIHNhY3JpZmljZXMuCj4gPiAKPiA+IE9uZSBtb3JlIHRoaW5nOiBIUEQgaW4g RGlzcGxheVBvcnQvSERNSSBiZXNpZGUgc2lnbmFsbGluZyBwbHVnL3VucGx1ZywKPiA+IG5vdGlm aWVzIGFib3V0IHNpbmsgc3RhdHVzIGNoYW5nZSwgaG93IGl0IHRyYW5zbGF0ZXMgdG8gdGhpcyBj Yj8KClRoaXMgaXMgc29tZXRoaW5nIHRoaXMgc2VyaWVzIGRvZXNuJ3QgaW1wbGVtZW50LiBJIGRv bid0IHRoaW5rIGl0IHdvdWxkCmJlIGEgYmlnIGRlYWwsIGJ1dCBteSBrbm93bGVkZ2Ugb2YgSFBE IChlc3BlY2lhbGx5IGZvciBEaXNwbGF5UG9ydCkgZW5kcwpoZXJlLiBJZiB5b3UgY2FuIGVsYWJv cmF0ZSBvbiB3aGF0IHdvdWxkIGJlIG5lZWRlZCwgSSBjYW4gaW1wbGVtZW50CnRoYXQuCgo+ID4g PiArdm9pZCBkcm1fYnJpZGdlX2hwZF9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwK PiA+ID4gKwkJCSAgIHZvaWQgKCpjYikodm9pZCAqZGF0YSwKPiA+ID4gKwkJCQkgICAgICBlbnVt IGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1cyksCj4gPiA+ICsJCQkgICB2b2lkICpkYXRhKQo+ ID4gPiArewo+ID4gPiArCWlmICghYnJpZGdlIHx8ICFicmlkZ2UtPmZ1bmNzLT5ocGRfZW5hYmxl KQo+ID4gPiArCQlyZXR1cm47Cj4gPiA+ICsKPiA+ID4gKwltdXRleF9sb2NrKCZicmlkZ2UtPmhw ZF9tdXRleCk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoV0FSTihicmlkZ2UtPmhwZF9jYiwgIkhvdCBw bHVnIGRldGVjdGlvbiBhbHJlYWR5IGVuYWJsZWRcbiIpKQo+ID4gPiArCQlnb3RvIHVubG9jazsK PiA+ID4gKwo+ID4gPiArCWJyaWRnZS0+aHBkX2NiID0gY2I7Cj4gPiA+ICsJYnJpZGdlLT5ocGRf ZGF0YSA9IGRhdGE7Cj4gPiA+ICsKPiA+ID4gKwlicmlkZ2UtPmZ1bmNzLT5ocGRfZW5hYmxlKGJy aWRnZSk7Cj4gPiA+ICsKPiA+ID4gK3VubG9jazoKPiA+ID4gKwltdXRleF91bmxvY2soJmJyaWRn ZS0+aHBkX211dGV4KTsKPiA+ID4gK30KPiA+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKGRybV9icmlk Z2VfaHBkX2VuYWJsZSk7Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICogZHJtX2JyaWRnZV9o cGRfZGlzYWJsZSAtIGRpc2FibGUgaG90IHBsdWcgZGV0ZWN0aW9uIGZvciB0aGUgYnJpZGdlCj4g PiA+ICsgKiBAYnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiA+ID4gKyAqCj4gPiA+ ICsgKiBDYWxsICZkcm1fYnJpZGdlX2Z1bmNzLmhwZF9kaXNhYmxlIGFuZCB1bnJlZ2lzdGVyIHRo ZSBob3QgcGx1ZyBkZXRlY3Rpb24KPiA+ID4gKyAqIGNhbGxiYWNrIHByZXZpb3VzbHkgcmVnaXN0 ZXJlZCB3aXRoIGRybV9icmlkZ2VfaHBkX2VuYWJsZSgpLiBPbmNlIHRoaXMKPiA+ID4gKyAqIGZ1 bmN0aW9uIHJldHVybnMgdGhlIGNhbGxiYWNrIHdpbGwgbm90IGJlIGNhbGxlZCBieSB0aGUgYnJp ZGdlIHdoZW4gYW4KPiA+ID4gKyAqIG91dHB1dCBzdGF0dXMgY2hhbmdlIG9jY3Vycy4KPiA+ID4g KyAqCj4gPiA+ICsgKiBIb3QgcGx1ZyBkZXRlY3Rpb24gaXMgc3VwcG9ydGVkIG9ubHkgaWYgdGhl IERSTV9CUklER0VfT1BfSFBEIGZsYWcgaXMgc2V0IGluCj4gPiA+ICsgKiBicmlkZ2UtPm9wcy4g VGhpcyBmdW5jdGlvbiBzaGFsbCBub3QgYmUgY2FsbGVkIHdoZW4gdGhlIGZsYWcgaXMgbm90IHNl dC4KPiA+ID4gKyAqLwo+ID4gPiArdm9pZCBkcm1fYnJpZGdlX2hwZF9kaXNhYmxlKHN0cnVjdCBk cm1fYnJpZGdlICpicmlkZ2UpCj4gPiA+ICt7Cj4gPiA+ICsJaWYgKCFicmlkZ2UgfHwgIWJyaWRn ZS0+ZnVuY3MtPmhwZF9kaXNhYmxlKQo+ID4gPiArCQlyZXR1cm47Cj4gPiA+ICsKPiA+ID4gKwlt dXRleF9sb2NrKCZicmlkZ2UtPmhwZF9tdXRleCk7Cj4gPiA+ICsJYnJpZGdlLT5mdW5jcy0+aHBk X2Rpc2FibGUoYnJpZGdlKTsKPiA+ID4gKwo+ID4gPiArCWJyaWRnZS0+aHBkX2NiID0gTlVMTDsK PiA+ID4gKwlicmlkZ2UtPmhwZF9kYXRhID0gTlVMTDsKPiA+ID4gKwltdXRleF91bmxvY2soJmJy aWRnZS0+aHBkX211dGV4KTsKPiA+ID4gK30KPiA+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKGRybV9i cmlkZ2VfaHBkX2Rpc2FibGUpOwo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIGRybV9icmlk Z2VfaHBkX25vdGlmeSAtIG5vdGlmeSBob3QgcGx1ZyBkZXRlY3Rpb24gZXZlbnRzCj4gPiA+ICsg KiBAYnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiA+ID4gKyAqIEBzdGF0dXM6IG91 dHB1dCBjb25uZWN0aW9uIHN0YXR1cwo+ID4gPiArICoKPiA+ID4gKyAqIEJyaWRnZSBkcml2ZXJz IHNoYWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byByZXBvcnQgaG90IHBsdWcgZXZlbnRzIHdoZW4g dGhleQo+ID4gPiArICogZGV0ZWN0IGEgY2hhbmdlIGluIHRoZSBvdXRwdXQgc3RhdHVzLCB3aGVu IGhvdCBwbHVnIGRldGVjdGlvbiBoYXMgYmVlbgo+ID4gPiArICogZW5hYmxlZCBieSB0aGUgJmRy bV9icmlkZ2VfZnVuY3MuaHBkX2VuYWJsZSBjYWxsYmFjay4KPiA+ID4gKyAqCj4gPiA+ICsgKiBU aGlzIGZ1bmN0aW9uIHNoYWxsIGJlIGNhbGxlZCBpbiBhIGNvbnRleHQgdGhhdCBjYW4gc2xlZXAu Cj4gPiA+ICsgKi8KPiA+ID4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfbm90aWZ5KHN0cnVjdCBkcm1f YnJpZGdlICpicmlkZ2UsCj4gPiA+ICsJCQkgICBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0 YXR1cykKPiA+ID4gK3sKPiA+ID4gKwltdXRleF9sb2NrKCZicmlkZ2UtPmhwZF9tdXRleCk7Cj4g PiA+ICsJaWYgKGJyaWRnZS0+aHBkX2NiKQo+ID4gPiArCQlicmlkZ2UtPmhwZF9jYihicmlkZ2Ut PmhwZF9kYXRhLCBzdGF0dXMpOwo+IAo+IFNvIHRoaXMgaXNuJ3QgcXVpdGUgd2hhdCBJIGhhZCBp biBtaW5kLiBJbnN0ZWFkIHNvbWV0aGluZyBsaWtlIHRoaXM6Cj4gCj4gCS8qIGl0ZXJhdGVzIG92 ZXIgYWxsIGJyaWRnZXMgaW4gdGhlIGNoYWluIGNvbnRhaW5pbmcgQGJyaWRnZSAqLwo+IAlmb3Jf ZWFjaF9icmlkZ2UodG1wX2JyaWRnZSwgYnJpZGdlKSB7Cj4gCQlpZiAodG1wX2JyaWRnZSA9PSBi cmlkZ2UpCj4gCQkJY29udGludWU7Cj4gCQlpZiAoYnJpZGdlLT5ocGRfbm90aWZ5KTsKPiAJCQli cmlkZ2UtPmhwZF9ub3RpZnkodG1wX2JyaWRnZSwgYnJpZGdlLCBzdGF0dXMpOwo+IAl9Cj4gCj4g CWVuY29kZXIgPSBlbmNvZGVyX2Zvcl9icmlkZ2UoYnJpZGdlKTsKPiAJaWYgKGVuY29kZXItPmhl bHBlcl9wcml2YXRlLT5icmlkZ2VfaHBkX25vdGlmeSkKPiAJCWVuY29kZXItPmhlbHBlcl9wcml2 YXRlLT5icmlkZ2VfaHBkX25vdGlmeShlbmNvZGVyLCBicmlkZ2UsIHN0YXR1cyk7Cj4gCj4gCWRl diA9IGJyaWRnZS0+ZGV2Cj4gCWlmIChkZXYtPm1vZGVfY29uZmlnLmhlbHBlcl9wcml2YXRlLT5i cmlkZ2VfaHBkX25vdGlmeSkKPiAJCWRldi0+bW9kZV9jb25maWcuaGVscGVyX3ByaXZhdGUtPmJy aWRnZV9ocGRfbm90aWZ5KGRldiwgYnJpZGdlLCBzdGF0dXMpCj4gCj4gTm8gcmVnaXN0ZXIgY2Fs bGJhY2sgbmVlZGVkLCBubyBsb2NraW5nIG5lZWRlZCwgZXZlcnlvbmUgZ2V0cyBleGFjdGx5IHRo ZQo+IGhwZCB0aGV5IHdhbnQvbmVlZC4KCkknbGwgcmVwbHkgdG8gdGhpcyBmdXJ0aGVyIGRvd24g dGhlIG1haWwgdGhyZWFkLCB0byBhZGRyZXNzIGFkZGl0aW9uYWwKY29tbWVudHMuCgo+ID4gPiAr CW11dGV4X3VubG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4gPiArfQo+ID4gPiArRVhQT1JU X1NZTUJPTF9HUEwoZHJtX2JyaWRnZV9ocGRfbm90aWZ5KTsKPiA+ID4gKwo+ID4gPiAgI2lmZGVm IENPTkZJR19PRgo+ID4gPiAgLyoqCj4gPiA+ICAgKiBvZl9kcm1fZmluZF9icmlkZ2UgLSBmaW5k IHRoZSBicmlkZ2UgY29ycmVzcG9uZGluZyB0byB0aGUgZGV2aWNlIG5vZGUgaW4KPiA+ID4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaCBiL2luY2x1ZGUvZHJtL2RybV9icmlk Z2UuaAo+ID4gPiBpbmRleCAwOGRjMTVmOTNkZWQuLmI5NDQ1YWE1YjFlZiAxMDA2NDQKPiA+ID4g LS0tIGEvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2Ry bV9icmlkZ2UuaAo+ID4gPiBAQCAtMjMsOCArMjMsOSBAQAo+ID4gPiAgI2lmbmRlZiBfX0RSTV9C UklER0VfSF9fCj4gPiA+ICAjZGVmaW5lIF9fRFJNX0JSSURHRV9IX18KPiA+ID4gIAo+ID4gPiAt I2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPiA+ID4gICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgo+ ID4gPiArI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9tdXRl eC5oPgo+ID4gPiAgI2luY2x1ZGUgPGRybS9kcm1fbW9kZV9vYmplY3QuaD4KPiA+ID4gICNpbmNs dWRlIDxkcm0vZHJtX21vZGVzLmg+Cj4gPiA+ICAKPiA+ID4gQEAgLTMzNCw2ICszMzUsMTEwIEBA IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIHsKPiA+ID4gIAkgKi8KPiA+ID4gIAl2b2lkICgqYXRv bWljX3Bvc3RfZGlzYWJsZSkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+ID4gIAkJCQkg ICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiA+ID4gKwo+ID4gPiArCS8qKgo+ ID4gPiArCSAqIEBkZXRlY3Q6Cj4gPiA+ICsJICoKPiA+ID4gKwkgKiBDaGVjayBpZiBhbnl0aGlu ZyBpcyBhdHRhY2hlZCB0byB0aGUgYnJpZGdlIG91dHB1dC4KPiA+ID4gKwkgKgo+ID4gPiArCSAq IFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwsIGlmIG5vdCBpbXBsZW1lbnRlZCB0aGUgYnJpZGdl IHdpbGwgYmUKPiA+ID4gKwkgKiBjb25zaWRlcmVkIGFzIGFsd2F5cyBoYXZpbmcgYSBjb21wb25l bnQgYXR0YWNoZWQgdG8gaXRzIG91dHB1dC4KPiA+ID4gKwkgKiBCcmlkZ2VzIHRoYXQgaW1wbGVt ZW50IHRoaXMgY2FsbGJhY2sgc2hhbGwgc2V0IHRoZQo+ID4gPiArCSAqIERSTV9CUklER0VfT1Bf REVURUNUIGZsYWcgaW4gdGhlaXIgJmRybV9icmlkZ2UtPm9wcy4KPiA+ID4gKwkgKgo+ID4gPiAr CSAqIFJFVFVSTlM6Cj4gPiA+ICsJICoKPiA+ID4gKwkgKiBkcm1fY29ubmVjdG9yX3N0YXR1cyBp bmRpY2F0aW5nIHRoZSBicmlkZ2Ugb3V0cHV0IHN0YXR1cy4KPiA+ID4gKwkgKi8KPiA+ID4gKwll bnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzICgqZGV0ZWN0KShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKTsKPiA+ID4gKwo+ID4gPiArCS8qKgo+ID4gPiArCSAqIEBnZXRfbW9kZXM6Cj4gPiA+ICsJ ICoKPiA+ID4gKwkgKiBGaWxsIGFsbCBtb2RlcyBjdXJyZW50bHkgdmFsaWQgZm9yIHRoZSBzaW5r IGludG8gdGhlICZkcm1fY29ubmVjdG9yCj4gPiA+ICsJICogd2l0aCBkcm1fbW9kZV9wcm9iZWRf YWRkKCkuCj4gPiA+ICsJICoKPiA+ID4gKwkgKiBUaGUgQGdldF9tb2RlcyBjYWxsYmFjayBpcyBt b3N0bHkgaW50ZW5kZWQgdG8gc3VwcG9ydCBub24tcHJvYmFibGUKPiA+ID4gKwkgKiBkaXNwbGF5 cyBzdWNoIGFzIG1hbnkgZml4ZWQgcGFuZWxzLiBCcmlkZ2VzIHRoYXQgc3VwcG9ydCByZWFkaW5n Cj4gPiA+ICsJICogRURJRCBzaGFsbCBsZWF2ZSBAZ2V0X21vZGVzIHVuaW1wbGVtZW50ZWQgYW5k IGltcGxlbWVudCB0aGUKPiA+ID4gKwkgKiAmZHJtX2JyaWRnZV9mdW5jcy0+Z2V0X2VkaWQgY2Fs bGJhY2sgaW5zdGVhZC4KPiA+ID4gKwkgKgo+ID4gPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0 aW9uYWwuIEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQgaXQgc2hhbGwgc2V0IHRoZQo+ID4gPiArCSAq IERSTV9CUklER0VfT1BfTU9ERVMgZmxhZyBpbiB0aGVpciAmZHJtX2JyaWRnZS0+b3BzLgo+ID4g PiArCSAqCj4gPiA+ICsJICogUkVUVVJOUzoKPiA+ID4gKwkgKgo+ID4gPiArCSAqIFRoZSBudW1i ZXIgb2YgbW9kZXMgYWRkZWQgYnkgY2FsbGluZyBkcm1fbW9kZV9wcm9iZWRfYWRkKCkuCj4gPiA+ ICsJICovCj4gPiA+ICsJaW50ICgqZ2V0X21vZGVzKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdl LAo+ID4gPiArCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwo+ID4gPiArCj4g PiA+ICsJLyoqCj4gPiA+ICsJICogQGdldF9lZGlkOgo+ID4gPiArCSAqCj4gPiA+ICsJICogUmVh ZCBhbmQgcGFyc2UgdGhlIEVESUQgZGF0YSBvZiB0aGUgY29ubmVjdGVkIGRpc3BsYXkuCj4gPiA+ ICsJICoKPiA+ID4gKwkgKiBUaGUgQGdldF9lZGlkIGNhbGxiYWNrIGlzIHRoZSBwcmVmZXJyZWQg d2F5IG9mIHJlcG9ydGluZyBtb2RlCj4gPiA+ICsJICogaW5mb3JtYXRpb24gZm9yIGEgZGlzcGxh eSBjb25uZWN0ZWQgdG8gdGhlIGJyaWRnZSBvdXRwdXQuIEJyaWRnZXMKPiA+ID4gKwkgKiB0aGF0 IHN1cHBvcnQgcmVhZGluZCBFRElEIHNoYWxsIGltcGxlbWVudCB0aGlzIGNhbGxiYWNrIGFuZCBs ZWF2ZQo+ID4gPiArCSAqIHRoZSBAZ2V0X21vZGVzIGNhbGxiYWNrIHVuaW1wbGVtZW50ZWQuCj4g PiA+ICsJICoKPiA+ID4gKwkgKiBUaGUgY2FsbGVyIG9mIHRoaXMgb3BlcmF0aW9uIHNoYWxsIGZp cnN0IHZlcmlmeSB0aGUgb3V0cHV0Cj4gPiA+ICsJICogY29ubmVjdGlvbiBzdGF0dXMgYW5kIHJl ZnJhaW4gZnJvbSByZWFkaW5nIEVESUQgZnJvbSBhIGRpc2Nvbm5lY3RlZAo+ID4gPiArCSAqIG91 dHB1dC4KPiA+ID4gKwkgKgo+ID4gPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuIEJy aWRnZXMgdGhhdCBpbXBsZW1lbnQgaXQgc2hhbGwgc2V0IHRoZQo+ID4gPiArCSAqIERSTV9CUklE R0VfT1BfRURJRCBmbGFnIGluIHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4gPiA+ICsJICoKPiA+ ID4gKwkgKiBSRVRVUk5TOgo+ID4gPiArCSAqCj4gPiA+ICsJICogQW4gZWRpZCBzdHJ1Y3R1cmUg bmV3bHkgYWxsb2NhdGVkIHdpdGgga21hbGxvYygpIChvciBzaW1pbGFyKSBvbgo+ID4gPiArCSAq IHN1Y2Nlc3MsIG9yIE5VTEwgb3RoZXJ3aXNlLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZv ciBmcmVlaW5nCj4gPiA+ICsJICogdGhlIHJldHVybmVkIGVkaWQgc3RydWN0dXJlIHdpdGgga2Zy ZWUoKS4KPiA+ID4gKwkgKi8KPiA+ID4gKwlzdHJ1Y3QgZWRpZCAqKCpnZXRfZWRpZCkoc3RydWN0 IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+ID4gKwkJCQkgc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3Rvcik7Cj4gPiAKPiA+IEl0IG92ZXJsYXBzIHdpdGggZ2V0X21vZGVzLCBJIGd1ZXNzIHBy ZXNlbmNlIG9mIG9uZSBvcHMgc2hvdWxkIGRpc2FsbG93Cj4gPiBwcmVzZW5jZSBvZiBhbm90aGVy IG9uZT8KPiA+IAo+ID4gSSBhbSBub3QgcmVhbGx5IGNvbnZpbmNlZCB3ZSBuZWVkIHRoaXMgb3Ag YXQgYWxsLCBjYW5ub3Qgd2UganVzdCBhc3NpZ24KPiA+IHNvbWUgaGVscGVyIGZ1bmN0aW9uIHRv IC5nZXRfbW9kZXMgY2IsIHdoaWNoIHdpbGwgZG8gdGhlIHNhbWU/Cj4gCj4gUGxhbiBCKTogZGl0 Y2ggLT5nZXRfZWRpZCwgcmVxdWlyZSB0aGF0IHRoZSBkcml2ZXIgaGFzIC0+Z2V0X21vZGVzIGlu IHRoYXQKPiBjYXNlLCBhbmQgcmVxdWlyZSB0aGF0IGlmIGl0IGhhcyBhbiBlZGlkIGl0IG11c3Qg ZmlsbCBvdXQgY29ubmVjdG9yLT5pbmZvCj4gYW5kIGNvbm5lY3Rvci0+ZWRpZCBjb3JyZWN0bHku CgpJIHRoaW5rIHRoYXQncyBkb2FibGUsIEknbGwgaGF2ZSBhIGxvb2suCgo+IEJ0dyBpZiBhIGhw ZCBoYXBwZW5zLCB3aG8ncyByZXNwb25pYmxlIGZvciBtYWtpbmcgc3VyZSB0aGUgZWRpZC9tb2Rl IGxpc3QKPiBpbiB0aGUgY29ubmVjdG9yIGlzIHVwLXRvLWRhdGU/IFdpdGggeW91ciBjdXJyZW50 IGNhbGxiYWNrIGRlc2lnbiB0aGF0J3MKPiB1cCB0byB0aGUgY2FsbGJhY2ssIHdoaWNoIGRvZXNu J3QgZmVlbCBncmVhdC4gTWF5YmUgIGRybV9icmlkZ2VfaHBkX25vdGlmeQo+IHNob3VsZCBndWFy YW50ZWUgdGhhdCBpdCdsbCBmaXJzdCB3YWxrIHRoZSBjb25uZWN0b3JzIHRvIHVwZGF0ZSBzdGF0 dXMgYW5kCj4gZWRpZC9tb2RlIGxpc3QgZm9yIHRoZSBmaW5hbCBkcm1fY29ubmVjdG9yLiBBbmQg dGhlbiBpbnN0ZWFkIG9mIGp1c3QKPiBwYXNzaW5nIHRoZSBzaW1wbGUgInN0YXR1cyIsIGl0J2xs IHBhc3MgdGhlIGNvbm5lY3Rvciwgd2l0aCBldmVyeXRoaW5nCj4gY29ycmVjdGx5IHVwZGF0ZWQu Cj4gCj4gT3RoZXJ3aXNlIGV2ZXJ5b25lIGludGVyZXN0ZWQgaW4gdGhhdCBocGQgc2lnbmFsIHdp bGwgZ28gYW5kIHJlLWZldGNoIHRoZQo+IGVkaWQsIHdoaWNoIGlzIG5vdCBzbyBhd2Vzb21lIDot KQoKV2l0aCB0aGUgY3VycmVudCBkZXNpZ24gdGhlcmUncyBhIHNpbmdsZSBsaXN0ZW5lciwgc28g aXQncyBub3QgYSBiaWcKZGVhbCA6LSkgRnVydGhlcm1vcmUsIHRoZSBsaXN0ZW5lciBpcyB0aGUg aGVscGVyIHRoYXQgY3JlYXRlcyBhCmNvbm5lY3RvciBvbiB0b3Agb2YgYSBjaGFpbiBvZiBicmlk Z2VzLCBzbyBpdCdzIGEgcHJldHR5IGdvb2QgcGxhY2UgdG8KaGFuZGxlIHRoaXMuIFNlZSB0aGUg Y2FsbCB0byBkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50KCkgaW4KZHJtX2JyaWRnZV9jb25u ZWN0b3JfaHBkX2NiKCkuCgpJJ20gYWxsIGZvciByZXdvcmtpbmcgSFBEIGFuZCBtb2RlIGZldGNo aW5nLCBidXQgSSB0aGluayBpdCdzIGEgYml0IHRvbwpiaWcgb2YgYSByZXF1aXJlbWVudCBhcyBh IHByZXJlcXVpc2l0ZSBmb3IgdGhpcyBzZXJpZXMgKG9yIGFzIHBhcnQgb2YKdGhpcyBzZXJpZXMp LiBXZSBoYXZlIGhhcmR3YXJlIHRoYXQgY2FuIHJlcG9ydCBIUEQgd2l0aCB2YXJpb3VzIGxldmVs IG9mCmRldGFpbHMgKGZyb20gInNvbWV0aGluZyBoYXBwZW5lZCBvbiBhIGNvbm5lY3RvciIgdG8g InRoaXMgcGFydGljdWxhcgpldmVudCBoYXBwZW5lZCBvbiB0aGlzIHBhcnRpY3VsYXIgY29ubmVj dG9yIiksIGFuZCB3ZSBjaGFubmVsIHRoYXQKdGhyb3VnaCBoZWxwZXJzIHN1Y2ggYXMgZHJtX2tt c19oZWxwZXJfaG90cGx1Z19ldmVudCgpIHRoYXQgbG9zZSB0aGUKZGV0YWlscyBhbmQgZ28gdGhy b3VnaCBhIGhlYXZ5IG1lY2hhbmlzbSB0byByZWZldGNoIGV2ZXJ5dGhpbmcuIEkKdW5kZXJzdGFu ZCB0aGlzIGlzIG5lZWRlZCBpbiBtYW55IGNhc2VzLCBidXQgSSB0aGluayB0aGVyZSdzIHJvb20g Zm9yCmltcHJvdmVtZW50LiBUaGlzIHNlcmllcywgaW4gbXkgb3BpbmlvbiwgZG9lc24ndCBnbyBp biB0aGUgd3JvbmcKZGlyZWN0aW9uIGluIHRoYXQgcmVnYXJkLCBhcyBpdCBldmVudHVhbGx5IGNh bGxzCmRybV9rbXNfaGVscGVyX2hvdHBsdWdfZXZlbnQoKSwgc28gSSB0aGluayBpbXByb3ZlbWVu dHMgd291bGQgbWFrZSBzZW5zZQpvbiB0b3Agb2YgaXQuIEknbSBldmVuIHdpbGxpbmcgdG8gd29y ayBvbiB0aGlzLCBwcm92aWRlZCBJIGdldCBmZWVkYmFjawpvbiB3aGF0IGlzIGRlc2lyZWQuCgo+ ID4gPiArCS8qKgo+ID4gPiArCSAqIEBsb3N0X2hvdHBsdWc6Cj4gPiA+ICsJICoKPiA+ID4gKwkg KiBOb3RpZnkgdGhlIGJyaWRnZSBvZiBkaXNwbGF5IGRpc2Nvbm5lY3Rpb24uCj4gPiA+ICsJICoK PiA+ID4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLCBpdCBtYXkgYmUgaW1wbGVtZW50 ZWQgYnkgYnJpZGdlcyB0aGF0Cj4gPiA+ICsJICogbmVlZCB0byBiZSBub3RpZmllZCBvZiBkaXNw bGF5IGRpc2Nvbm5lY3Rpb24gZm9yIGludGVybmFsIHJlYXNvbnMuCj4gPiA+ICsJICogT25lIHVz ZSBjYXNlIGlzIHRvIHJlc2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiBDRUMgY29udHJvbGxlcnMg Zm9yCj4gPiA+ICsJICogSERNSSBicmlkZ2VzLgo+ID4gPiArCSAqLwo+ID4gPiArCXZvaWQgKCps b3N0X2hvdHBsdWcpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ID4gPiArCj4gPiA+ICsJ LyoqCj4gPiA+ICsJICogQGhwZF9lbmFibGU6Cj4gPiA+ICsJICoKPiA+ID4gKwkgKiBFbmFibGUg aG90IHBsdWcgZGV0ZWN0aW9uLiBGcm9tIG5vdyBvbiB0aGUgYnJpZGdlIHNoYWxsIGNhbGwKPiA+ ID4gKwkgKiBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoKSBlYWNoIHRpbWUgYSBjaGFuZ2UgaXMgZGV0 ZWN0ZWQgaW4gdGhlIG91dHB1dAo+ID4gPiArCSAqIGNvbm5lY3Rpb24gc3RhdHVzLCB1bnRpbCBo b3QgcGx1ZyBkZXRlY3Rpb24gZ2V0cyBkaXNhYmxlZCB3aXRoCj4gPiA+ICsJICogQGhwZF9kaXNh YmxlLgo+ID4gPiArCSAqCj4gPiA+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCBhbmQg c2hhbGwgb25seSBiZSBpbXBsZW1lbnRlZCBieSBicmlkZ2VzCj4gPiA+ICsJICogdGhhdCBzdXBw b3J0IGhvdC1wbHVnIG5vdGlmaWNhdGlvbiB3aXRob3V0IHBvbGxpbmcuIEJyaWRnZXMgdGhhdAo+ ID4gPiArCSAqIGltcGxlbWVudCBpdCBzaGFsbCBhbHNvIGltcGxlbWVudCB0aGUgQGhwZF9kaXNh YmxlIGNhbGxiYWNrIGFuZCBzZXQKPiA+ID4gKwkgKiB0aGUgRFJNX0JSSURHRV9PUF9IUEQgZmxh ZyBpbiB0aGVpciAmZHJtX2JyaWRnZS0+b3BzLgo+ID4gPiArCSAqLwo+ID4gPiArCXZvaWQgKCpo cGRfZW5hYmxlKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiA+ID4gKwo+ID4gPiArCS8q Kgo+ID4gPiArCSAqIEBocGRfZGlzYWJsZToKPiA+ID4gKwkgKgo+ID4gPiArCSAqIERpc2FibGUg aG90IHBsdWcgZGV0ZWN0aW9uLiBPbmNlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYnJpZGdl Cj4gPiA+ICsJICogc2hhbGwgbm90IGNhbGwgZHJtX2JyaWRnZV9ocGRfbm90aWZ5KCkgd2hlbiBh IGNoYW5nZSBpbiB0aGUgb3V0cHV0Cj4gPiA+ICsJICogY29ubmVjdGlvbiBzdGF0dXMgb2NjdXJz Lgo+ID4gPiArCSAqCj4gPiA+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCBhbmQgc2hh bGwgb25seSBiZSBpbXBsZW1lbnRlZCBieSBicmlkZ2VzCj4gPiA+ICsJICogdGhhdCBzdXBwb3J0 IGhvdC1wbHVnIG5vdGlmaWNhdGlvbiB3aXRob3V0IHBvbGxpbmcuIEJyaWRnZXMgdGhhdAo+ID4g PiArCSAqIGltcGxlbWVudCBpdCBzaGFsbCBhbHNvIGltcGxlbWVudCB0aGUgQGhwZF9lbmFibGUg Y2FsbGJhY2sgYW5kIHNldAo+ID4gPiArCSAqIHRoZSBEUk1fQlJJREdFX09QX0hQRCBmbGFnIGlu IHRoZWlyICZkcm1fYnJpZGdlLT5vcHMuCj4gPiA+ICsJICovCj4gPiA+ICsJdm9pZCAoKmhwZF9k aXNhYmxlKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ ID4gIC8qKgo+ID4gPiBAQCAtMzcyLDYgKzQ3NywzOCBAQCBzdHJ1Y3QgZHJtX2JyaWRnZV90aW1p bmdzIHsKPiA+ID4gIAlib29sIGR1YWxfbGluazsKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gKy8q Kgo+ID4gPiArICogZW51bSBkcm1fYnJpZGdlX29wcyAtIEJpdG1hc2sgb2Ygb3BlcmF0aW9ucyBz dXBwb3J0ZWQgYnkgdGhlIGJyaWRnZQo+ID4gPiArICovCj4gPiA+ICtlbnVtIGRybV9icmlkZ2Vf b3BzIHsKPiA+ID4gKwkvKioKPiA+ID4gKwkgKiBARFJNX0JSSURHRV9PUF9ERVRFQ1Q6IFRoZSBi cmlkZ2UgY2FuIGRldGVjdCBkaXNwbGF5cyBjb25uZWN0ZWQgdG8KPiA+ID4gKwkgKiBpdHMgb3V0 cHV0LiBCcmlkZ2VzIHRoYXQgc2V0IHRoaXMgZmxhZyBzaGFsbCBpbXBsZW1lbnQgdGhlCj4gPiA+ ICsJICogJmRybV9icmlkZ2VfZnVuY3MtPmRldGVjdCBjYWxsYmFjay4KPiA+ID4gKwkgKi8KPiA+ ID4gKwlEUk1fQlJJREdFX09QX0RFVEVDVCA9IEJJVCgwKSwKPiA+ID4gKwkvKioKPiA+ID4gKwkg KiBARFJNX0JSSURHRV9PUF9FRElEOiBUaGUgYnJpZGdlIGNhbiByZXRyaWV2ZSB0aGUgRURJRCBv ZiB0aGUgZGlzcGxheQo+ID4gPiArCSAqIGNvbm5lY3RlZCB0byBpdHMgb3V0cHV0LiBCcmlkZ2Vz IHRoYXQgc2V0IHRoaXMgZmxhZyBzaGFsbCBpbXBsZW1lbnQKPiA+ID4gKwkgKiB0aGUgJmRybV9i cmlkZ2VfZnVuY3MtPmdldF9lZGlkIGNhbGxiYWNrLgo+ID4gPiArCSAqLwo+ID4gPiArCURSTV9C UklER0VfT1BfRURJRCA9IEJJVCgxKSwKPiA+ID4gKwkvKioKPiA+ID4gKwkgKiBARFJNX0JSSURH RV9PUF9IUEQ6IFRoZSBicmlkZ2UgY2FuIGRldGVjdCBob3QtcGx1ZyBhbmQgaG90LXVucGx1Zwo+ ID4gPiArCSAqIHdpdGhvdXQgcmVxdWlyaW5nIHBvbGxpbmcuIEJyaWRnZXMgdGhhdCBzZXQgdGhp cyBmbGFnIHNoYWxsCj4gPiA+ICsJICogaW1wbGVtZW50IHRoZSAmZHJtX2JyaWRnZV9mdW5jcy0+ aHBkX2VuYWJsZSBhbmQKPiA+ID4gKwkgKiAmZHJtX2JyaWRnZV9mdW5jcy0+ZGlzYWJsZV9ocGRf Y2IgY2FsbGJhY2tzLgo+ID4gPiArCSAqLwo+ID4gPiArCURSTV9CUklER0VfT1BfSFBEID0gQklU KDIpLAo+ID4gPiArCS8qKgo+ID4gPiArCSAqIEBEUk1fQlJJREdFX09QX01PREVTOiBUaGUgYnJp ZGdlIGNhbiByZXRyaWV2aW5nIHRoZSBtb2RlcyBzdXBwb3J0ZWQKPiA+ID4gKwkgKiBieSB0aGUg ZGlzcGxheSBhdCBpdHMgb3V0cHV0LiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgcmVhZGluZCBFRElE Cj4gPiA+ICsJICogd2hpY2ggaXMgc2VwYXJhdGVseSBjb3ZlcmVkIGJ5IEBEUk1fQlJJREdFX09Q X0VESUQuIEJyaWRnZXMgdGhhdCBzZXQKPiA+ID4gKwkgKiB0aGlzIGZsYWcgc2hhbGwgaW1wbGVt ZW50IHRoZSAmZHJtX2JyaWRnZV9mdW5jcy0+Z2V0X21vZGVzIGNhbGxiYWNrLgo+ID4gPiArCSAq Lwo+ID4gPiArCURSTV9CUklER0VfT1BfTU9ERVMgPSBCSVQoMyksCj4gPiA+ICt9Owo+ID4gPiAr Cj4gPiA+ICAvKioKPiA+ID4gICAqIHN0cnVjdCBkcm1fYnJpZGdlIC0gY2VudHJhbCBEUk0gYnJp ZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4gPiA+ICAgKi8KPiA+ID4gQEAgLTM5OCw2ICs1MzUsMjkg QEAgc3RydWN0IGRybV9icmlkZ2Ugewo+ID4gPiAgCWNvbnN0IHN0cnVjdCBkcm1fYnJpZGdlX2Z1 bmNzICpmdW5jczsKPiA+ID4gIAkvKiogQGRyaXZlcl9wcml2YXRlOiBwb2ludGVyIHRvIHRoZSBi cmlkZ2UgZHJpdmVyJ3MgaW50ZXJuYWwgY29udGV4dCAqLwo+ID4gPiAgCXZvaWQgKmRyaXZlcl9w cml2YXRlOwo+ID4gPiArCS8qKiBAb3BzOiBiaXRtYXNrIG9mIG9wZXJhdGlvbnMgc3VwcG9ydGVk IGJ5IHRoZSBicmlkZ2UgKi8KPiA+ID4gKwllbnVtIGRybV9icmlkZ2Vfb3BzIG9wczsKPiA+ID4g KwkvKioKPiA+ID4gKwkgKiBAdHlwZTogVHlwZSBvZiB0aGUgY29ubmVjdGlvbiBhdCB0aGUgYnJp ZGdlIG91dHB1dAo+ID4gPiArCSAqIChEUk1fTU9ERV9DT05ORUNUT1JfKikuIEZvciBicmlkZ2Vz IGF0IHRoZSBlbmQgb2YgdGhpcyBjaGFpbiB0aGlzCj4gPiA+ICsJICogaWRlbnRpZmllcyB0aGUg dHlwZSBvZiBjb25uZWN0ZWQgZGlzcGxheS4KPiA+ID4gKwkgKi8KPiA+ID4gKwlpbnQgdHlwZTsK PiA+ID4gKwkvKiogcHJpdmF0ZTogKi8KPiA+ID4gKwkvKioKPiA+ID4gKwkgKiBAaHBkX211dGV4 OiBQcm90ZWN0cyB0aGUgQGhwZF9jYiBhbmQgQGhwZF9kYXRhIGZpZWxkcy4KPiA+ID4gKwkgKi8K PiA+ID4gKwlzdHJ1Y3QgbXV0ZXggaHBkX211dGV4Owo+ID4gPiArCS8qKgo+ID4gPiArCSAqIEBo cGRfY2I6IEhvdCBwbHVnIGRldGVjdGlvbiBjYWxsYmFjaywgcmVnaXN0ZXJlZCB3aXRoCj4gPiA+ ICsJICogZHJtX2JyaWRnZV9ocGRfZW5hYmxlKCkuCj4gPiA+ICsJICovCj4gPiA+ICsJdm9pZCAo KmhwZF9jYikodm9pZCAqZGF0YSwgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpOwo+ ID4gPiArCS8qKgo+ID4gPiArCSAqIEBocGRfZGF0YTogUHJpdmF0ZSBkYXRhIHBhc3NlZCB0byB0 aGUgSG90IHBsdWcgZGV0ZWN0aW9uIGNhbGxiYWNrCj4gPiA+ICsJICogQGhwZF9jYi4KPiA+ID4g KwkgKi8KPiA+ID4gKwl2b2lkICpocGRfZGF0YTsKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gIHZv aWQgZHJtX2JyaWRnZV9hZGQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gPiA+IEBAIC00 MjgsNiArNTg4LDE0IEBAIHZvaWQgZHJtX2F0b21pY19icmlkZ2VfcHJlX2VuYWJsZShzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4gPiAgdm9pZCBkcm1fYXRvbWljX2JyaWRnZV9lbmFibGUo c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+ID4gIAkJCSAgICAgIHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSk7Cj4gPiA+ICAKPiA+ID4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfZW5h YmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPiA+ICsJCQkgICB2b2lkICgqY2IpKHZv aWQgKmRhdGEsCj4gPiA+ICsJCQkJICAgICAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0 dXMpLAo+ID4gPiArCQkJICAgdm9pZCAqZGF0YSk7Cj4gPiA+ICt2b2lkIGRybV9icmlkZ2VfaHBk X2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gPiA+ICt2b2lkIGRybV9icmlk Z2VfaHBkX25vdGlmeShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4gPiArCQkJICAgZW51 bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpOwo+ID4gPiArCj4gPiA+ICAjaWZkZWYgQ09O RklHX0RSTV9QQU5FTF9CUklER0UKPiA+ID4gIHN0cnVjdCBkcm1fYnJpZGdlICpkcm1fcGFuZWxf YnJpZGdlX2FkZChzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCwKPiA+ID4gIAkJCQkJdTMyIGNvbm5l Y3Rvcl90eXBlKTsKCi0tIApSZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFydApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=