From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v3 03/12] drm: rcar-du: Fix legacy DT to create LVDS encoder nodes Date: Tue, 20 Feb 2018 11:15:53 +0200 Message-ID: <3866023.VvEQmjTL1d@avalon> References: <20180215000415.19077-1-laurent.pinchart+renesas@ideasonboard.com> <20180215000415.19077-4-laurent.pinchart+renesas@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Herring Cc: devicetree@vger.kernel.org, Laurent Pinchart , Sergei Shtylyov , dri-devel , "open list:MEDIA DRIVERS FOR RENESAS - FCP" , Frank Rowand List-Id: devicetree@vger.kernel.org SGkgUm9iLAoKT24gVHVlc2RheSwgMjAgRmVicnVhcnkgMjAxOCAwMjo1NDowMCBFRVQgUm9iIEhl cnJpbmcgd3JvdGU6Cj4gT24gV2VkLCBGZWIgMTQsIDIwMTggYXQgNjowNCBQTSwgTGF1cmVudCBQ aW5jaGFydCB3cm90ZToKPiA+IFRoZSBpbnRlcm5hbCBMVkRTIGVuY29kZXJzIG5vdyBoYXZlIHRo ZWlyIG93biBEVCBiaW5kaW5ncy4gQmVmb3JlCj4gPiBzd2l0Y2hpbmcgdGhlIGRyaXZlciBpbmZy YXN0cnVjdHVyZSB0byB0aG9zZSBuZXcgYmluZGluZ3MsIGltcGxlbWVudAo+ID4gYmFja3dhcmQt Y29tcGF0aWJpbGl0eSB0aHJvdWdoIGxpdmUgRFQgcGF0Y2hpbmcuCj4gPiAKPiA+IFBhdGNoaW5n IGlzIGRpc2FibGVkIGFuZCB3aWxsIGJlIGVuYWJsZWQgYWxvbmcgd2l0aCBzdXBwb3J0IGZvciB0 aGUgbmV3Cj4gPiBEVCBiaW5kaW5ncyBpbiB0aGUgRFUgZHJpdmVyLgo+ID4gCj4gPiBTaWduZWQt b2ZmLWJ5OiBMYXVyZW50IFBpbmNoYXJ0Cj4gPiA8bGF1cmVudC5waW5jaGFydCtyZW5lc2FzQGlk ZWFzb25ib2FyZC5jb20+Cj4gPiAtLS0KPiA+IENoYW5nZXMgc2luY2UgdjI6Cj4gPiAKPiA+IC0g VXBkYXRlIHRoZSBTUERYIGhlYWRlcnMgdG8gdXNlIEMtc3R5bGUgY29tbWVudHMgaW4gaGVhZGVy IGZpbGVzCj4gPiAtIFJlbW92ZWQgdGhlIG1hbnVhbGx5IGNyZWF0ZWQgX19sb2NhbF9maXh1cHNf XyBub2RlCj4gPiAtIFBlcmZvcm0gbWFudWFsIGZpeHVwcyBvbiBsaXZlIERUIGluc3RlYWQgb2Yg b3ZlcmxheQo+IAo+IEdlbmVyYWxseSBsb29rcyBmaW5lIHRvIG1lLiBBIGZldyB0aGluZ3MgYmVs b3cuCj4gCj4gPiBDaGFuZ2VzIHNpbmNlIHYxOgo+ID4gCj4gPiAtIFNlbGVjdCBPRl9GTEFUVFJF RQo+ID4gLSBDb21waWxlIExWRFMgRFQgYmluZGluZ3MgcGF0Y2ggY29kZSB3aGVuIERSTV9SQ0FS X0xWRFMgaXMgc2VsZWN0ZWQKPiA+IC0gVXBkYXRlIHRoZSBTUERYIGhlYWRlcnMgdG8gdXNlIEdQ TC0yLjAgaW5zdGVhZCBvZiBHUEwtMi4wLW9ubHkKPiA+IC0gVHVybiBfX2R0Yl9yY2FyX2R1X29m X2x2ZHNfKGJlZ2lufGVuZCkgZnJvbSB1OCB0byBjaGFyCj4gPiAtIFBhc3Mgdm9pZCBiZWdpbiBh bmQgZW5kIHBvaW50ZXJzIHRvIHJjYXJfZHVfb2ZfZ2V0X292ZXJsYXkoKQo+ID4gLSBVc2Ugb2Zf Z2V0X3BhcmVudCgpIGluc3RlYWQgb2YgYWNjZXNzaW5nIHRoZSBwYXJlbnQgcG9pbnRlciBkaXJl Y3RseQo+ID4gLSBGaW5kIHRoZSBMVkRTIGVuZHBvaW50cyBub2RlcyBiYXNlZCBvbiB0aGUgTFZE UyBub2RlIGluc3RlYWQgb2YgdGhlCj4gPiAKPiA+ICAgcm9vdCBvZiB0aGUgb3ZlcmxheQo+ID4g Cj4gPiAtIFVwZGF0ZSB0byB0aGUgPHNvYz4tbHZkcyBjb21wYXRpYmxlIHN0cmluZyBmb3JtYXQK PiA+IC0tLQo+ID4gCj4gPiAgZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvS2NvbmZpZyAgICAgICAg ICAgICAgICAgICAgfCAgIDIgKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L01ha2VmaWxl ICAgICAgICAgICAgICAgICAgIHwgICA3ICstCj4gPiAgZHJpdmVycy9ncHUvZHJtL3JjYXItZHUv cmNhcl9kdV9vZi5jICAgICAgICAgICAgICAgfCAzNzQKPiA+ICArKysrKysrKysrKysrKysrKysr KysgZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9vZi5oICAgICAgICAgICAgICAKPiA+ ICB8ICAyMCArKwo+ID4gIC4uLi9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9vZl9sdmRzX3I4YTc3 OTAuZHRzICAgIHwgIDgxICsrKysrCj4gPiAgLi4uL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29m X2x2ZHNfcjhhNzc5MS5kdHMgICAgfCAgNTUgKysrCj4gPiAgLi4uL2dwdS9kcm0vcmNhci1kdS9y Y2FyX2R1X29mX2x2ZHNfcjhhNzc5My5kdHMgICAgfCAgNTUgKysrCj4gPiAgLi4uL2dwdS9kcm0v cmNhci1kdS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5NS5kdHMgICAgfCAgNTUgKysrCj4gPiAgLi4u L2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5Ni5kdHMgICAgfCAgNTUgKysr Cj4gPiAgOSBmaWxlcyBjaGFuZ2VkLCA3MDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29m LmMKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9k dV9vZi5oCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3Jj YXJfZHVfb2ZfbHZkc19yOGE3NzkwLmR0cwo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5MS5kdHMKPiA+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9vZl9sdmRzX3I4YTc3 OTMuZHRzCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3Jj YXJfZHVfb2ZfbHZkc19yOGE3Nzk1LmR0cwo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5Ni5kdHMKPiA+IAo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L0tjb25maWcKPiA+IGIvZHJpdmVycy9n cHUvZHJtL3JjYXItZHUvS2NvbmZpZyBpbmRleCA1ZDBiNGI3MTE5YWYuLjNmODMzNTJhNzMxMyAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L0tjb25maWcKPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L0tjb25maWcKPiA+IEBAIC0yMiw2ICsyMiw4IEBAIGNv bmZpZyBEUk1fUkNBUl9MVkRTCj4gPiAKPiA+ICAgICAgICAgYm9vbCAiUi1DYXIgRFUgTFZEUyBF bmNvZGVyIFN1cHBvcnQiCj4gPiAgICAgICAgIGRlcGVuZHMgb24gRFJNX1JDQVJfRFUKPiA+ICAg ICAgICAgc2VsZWN0IERSTV9QQU5FTAo+ID4gCj4gPiArICAgICAgIHNlbGVjdCBPRl9GTEFUVFJF RQo+ID4gKyAgICAgICBzZWxlY3QgT0ZfT1ZFUkxBWQo+ID4gCj4gPiAgICAgICAgIGhlbHAKPiA+ ICAgICAgICAgCj4gPiAgICAgICAgICAgRW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBSLUNhciBEaXNw bGF5IFVuaXQgZW1iZWRkZWQgTFZEUwo+ID4gICAgICAgICAgIGVuY29kZXJzLgo+ID4gCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvTWFrZWZpbGUKPiA+IGIvZHJpdmVy cy9ncHUvZHJtL3JjYXItZHUvTWFrZWZpbGUgaW5kZXggMGNmNWMxMTAzMGU4Li44NmIzMzdiNGJl NWQKPiA+IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvTWFrZWZpbGUK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L01ha2VmaWxlCj4gPiBAQCAtOCw3ICs4 LDEyIEBAIHJjYXItZHUtZHJtLXkgOj0gcmNhcl9kdV9jcnRjLm8gXAo+ID4gCj4gPiAgICAgICAg ICAgICAgICAgIHJjYXJfZHVfcGxhbmUubwo+ID4gIAo+ID4gIHJjYXItZHUtZHJtLSQoQ09ORklH X0RSTV9SQ0FSX0xWRFMpICAgICs9IHJjYXJfZHVfbHZkc2VuYy5vCj4gPiAKPiA+IC0KPiA+ICty Y2FyLWR1LWRybS0kKENPTkZJR19EUk1fUkNBUl9MVkRTKSAgICArPSByY2FyX2R1X29mLm8gXAo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjYXJfZHVfb2Zf bHZkc19yOGE3NzkwLmR0Yi5vIFwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByY2FyX2R1X29mX2x2ZHNfcjhhNzc5MS5kdGIubyBcCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmNhcl9kdV9vZl9sdmRzX3I4YTc3OTMu ZHRiLm8gXAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJj YXJfZHVfb2ZfbHZkc19yOGE3Nzk1LmR0Yi5vIFwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByY2FyX2R1X29mX2x2ZHNfcjhhNzc5Ni5kdGIubwo+ID4gCj4g PiAgcmNhci1kdS1kcm0tJChDT05GSUdfRFJNX1JDQVJfVlNQKSAgICAgKz0gcmNhcl9kdV92c3Au bwo+ID4gIAo+ID4gIG9iai0kKENPTkZJR19EUk1fUkNBUl9EVSkgICAgICAgICAgICAgICs9IHJj YXItZHUtZHJtLm8KPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1 L3JjYXJfZHVfb2YuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mLmMg bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uMTQxZjZlZGE2ZTk4 Cj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2Fy X2R1X29mLmMKCltzbmlwXQoKPiA+ICtzdGF0aWMgc3RydWN0IGRldmljZV9ub2RlIF9faW5pdCAq Cj4gPiArcmNhcl9kdV9vZl9maW5kX25vZGVfYnlfcGF0aChzdHJ1Y3QgZGV2aWNlX25vZGUgKnBh cmVudCwgY29uc3QgY2hhcgo+ID4gKnBhdGgpCj4gPiArewo+IAo+IEkgZ3Vlc3MgSSBuZXZlciBm b2xsb3dlZCB1cCBvbiB0aGUgbGFzdCB2ZXJzaW9uLiBJIHRoaW5rIGEgd3JhcHBlcgo+IGFyb3Vu ZCBfX29mX2ZpbmRfbm9kZV9ieV9wYXRoIHdvdWxkIHdvcmsgZm9yIHlvdSBoZXJlLiBJdCBjYW4g c3RhcnQgYXQKPiBhbnkgbGV2ZWwuIFRob3VnaCBtYXliZSBpdCBpcyBub3QgbmVlZGVkLiBTZWUg YmVsb3cuCgpZb3UncmUgcmlnaHQsIEkgd29uJ3QgbmVlZCB0aGlzIGZ1bmN0aW9uIGFueW1vcmUs IHNvIEknbGwgZHJvcCBpdC4gSSB0aGluayAKbG9va2luZyB1cCBhIG5vZGUgYnkgcGF0aCBzdGFy dGluZyBhdCBhIGdpdmVuIHBhcmVudCB3b3VsZCBzdGlsbCBiZSB1c2VmdWwsIApidXQgdGhlcmUn cyBubyBuZWVkIHRvIGFkZCBhIGZ1bmN0aW9uIHdpdGhvdXQgYSB1c2VyLgoKPiA+ICsgICAgICAg cGFyZW50ID0gb2Zfbm9kZV9nZXQocGFyZW50KTsKPiA+ICsgICAgICAgaWYgKCFwYXJlbnQpCj4g PiArICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gPiArCj4gPiArICAgICAgIHdoaWxlIChw YXJlbnQgJiYgKnBhdGggPT0gJy8nKSB7Cj4gPiArICAgICAgICAgICAgICAgc3RydWN0IGRldmlj ZV9ub2RlICpjaGlsZCA9IE5VTEw7Cj4gPiArICAgICAgICAgICAgICAgc3RydWN0IGRldmljZV9u b2RlICpub2RlOwo+ID4gKyAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5leHQ7Cj4gPiArICAg ICAgICAgICAgICAgc2l6ZV90IGxlbjsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICAvKiBTa2lw IHRoZSBpbml0aWFsICcvJyBkZWxpbWl0ZXIgYW5kIGZpbmQgdGhlIG5leHQgb25lLgo+ID4gKi8K PiA+ICsgICAgICAgICAgICAgICBwYXRoKys7Cj4gPiArICAgICAgICAgICAgICAgbmV4dCA9IHN0 cmNocm51bChwYXRoLCAnLycpOwo+ID4gKyAgICAgICAgICAgICAgIGxlbiA9IG5leHQgLSBwYXRo Owo+ID4gKyAgICAgICAgICAgICAgIGlmICghbGVuKQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgZ290byBlcnJvcjsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICBmb3JfZWFjaF9jaGlsZF9v Zl9ub2RlKHBhcmVudCwgbm9kZSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqbmFtZSA9IGtiYXNlbmFtZShub2RlLT5mdWxsX25hbWUpOwo+ID4gKwo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgaWYgKHN0cm5jbXAocGF0aCwgbmFtZSwgbGVuKSA9PSAwICYmCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG5hbWUpID09IGxlbikgewo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IG5vZGU7Cj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgfQo+ID4gKyAgICAgICAgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgICAgICAgICBpZiAo IWNoaWxkKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKPiA+ICsKPiA+ ICsgICAgICAgICAgICAgICBvZl9ub2RlX3B1dChwYXJlbnQpOwo+ID4gKyAgICAgICAgICAgICAg IHBhcmVudCA9IGNoaWxkOwo+ID4gKyAgICAgICAgICAgICAgIHBhdGggPSBuZXh0Owo+ID4gKyAg ICAgICB9Cj4gPiArCj4gPiArICAgICAgIHJldHVybiBwYXJlbnQ7Cj4gPiArCj4gPiArZXJyb3I6 Cj4gPiArICAgICAgIG9mX25vZGVfcHV0KHBhcmVudCk7Cj4gPiArICAgICAgIHJldHVybiBOVUxM Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IF9faW5pdCByY2FyX2R1X29mX2FkZF9wcm9w ZXJ0eShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pZAo+ID4gKnZhbHVl LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxl bmd0aCkKPiAKPiBTbywgd2VyZSB5b3UgZ29pbmcgdG8gcmV2aXZlIFBhbnRlbGlzJyBwYXRjaCBv ciBtb3ZlIHRoaXMgdG8gdGhlIGNvcmU/CgpEbyB5b3UgaGF2ZSBhIHBvaW50ZXIgdG8gdGhhdCBw YXRjaCA/Cgo+ID4gK3sKPiA+ICsgICAgICAgc3RydWN0IHByb3BlcnR5ICpwcm9wOwo+ID4gKwo+ ID4gKyAgICAgICBwcm9wID0ga3phbGxvYyhzaXplb2YoKnByb3ApLCBHRlBfS0VSTkVMKTsKPiA+ ICsgICAgICAgaWYgKCFwcm9wKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ ID4gKwo+ID4gKyAgICAgICBwcm9wLT5uYW1lID0ga3N0cmR1cChuYW1lLCBHRlBfS0VSTkVMKTsK PiA+ICsgICAgICAgcHJvcC0+dmFsdWUgPSBrbWVtZHVwKHZhbHVlLCBsZW5ndGgsIEdGUF9LRVJO RUwpOwo+ID4gKyAgICAgICBwcm9wLT5sZW5ndGggPSBsZW5ndGg7Cj4gPiArCj4gPiArICAgICAg IGlmICghcHJvcC0+bmFtZSB8fCAhcHJvcC0+dmFsdWUpIHsKPiA+ICsgICAgICAgICAgICAgICBr ZnJlZShwcm9wLT5uYW1lKTsKPiA+ICsgICAgICAgICAgICAgICBrZnJlZShwcm9wLT52YWx1ZSk7 Cj4gPiArICAgICAgICAgICAgICAga2ZyZWUocHJvcCk7Cj4gPiArICAgICAgICAgICAgICAgcmV0 dXJuIC1FTk9NRU07Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgb2ZfcHJvcGVydHlf c2V0X2ZsYWcocHJvcCwgT0ZfRFlOQU1JQyk7Cj4gPiArCj4gPiArICAgICAgIHByb3AtPm5leHQg PSBucC0+cHJvcGVydGllczsKPiA+ICsgICAgICAgbnAtPnByb3BlcnRpZXMgPSBwcm9wOwo+ID4g Kwo+ID4gKyAgICAgICByZXR1cm4gMDsKPiA+ICt9Cgpbc25pcF0KCj4gPiArc3RhdGljIHZvaWQg X19pbml0IHJjYXJfZHVfb2ZfbHZkc19wYXRjaF9vbmUoc3RydWN0IGRldmljZV9ub2RlICpsdmRz LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IG9mX3BoYW5kbGVfYXJncwo+ID4gKmNsaywKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbG9jYWwsCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGV2aWNl X25vZGUgKnJlbW90ZSkKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqZW5k cG9pbnRzWzJdOwo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgcHNpemU7Cj4gPiArICAgICAgIHVu c2lnbmVkIGludCBpOwo+ID4gKyAgICAgICBfX2JlMzIgdmFsdWVbNF07Cj4gPiArICAgICAgIGlu dCByZXQ7Cj4gPiArCj4gPiArICAgICAgIC8qCj4gPiArICAgICAgICAqIFNldCB0aGUgTFZEUyBj bG9ja3MgcHJvcGVydHkuIFRoaXMgY2FuJ3QgYmUgcGVyZm9ybWVkIGJ5IHRoZQo+ID4gb3Zlcmxh eQo+ID4gKyAgICAgICAgKiBhcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBjbG9jayBzcGVjaWZpZXIg aGFzIGNoYW5nZWQgb3ZlciB0aW1lLAo+ID4gYW5kIHdlCj4gPiArICAgICAgICAqIGRvbid0IGtu b3cgYXQgY29tcGlsZSB0aW1lIHdoaWNoIGJpbmRpbmcgdmVyc2lvbiB0aGUgc3lzdGVtIHdlCj4g PiB3aWxsCj4gPiArICAgICAgICAqIHJ1biBvbiB1c2VzLgo+ID4gKyAgICAgICAgKi8KPiA+ICsg ICAgICAgaWYgKGNsay0+YXJnc19jb3VudCA+PSBBUlJBWV9TSVpFKHZhbHVlKSAtIDEpCj4gPiAr ICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4gKwo+ID4gKyAgICAgICB2YWx1ZVswXSA9IGNwdV90 b19iZTMyKGNsay0+bnAtPnBoYW5kbGUpOwo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2xr LT5hcmdzX2NvdW50OyArK2kpCj4gPiArICAgICAgICAgICAgICAgdmFsdWVbaSArIDFdID0gY3B1 X3RvX2JlMzIoY2xrLT5hcmdzW2ldKTsKPiA+ICsKPiA+ICsgICAgICAgcHNpemUgPSAoY2xrLT5h cmdzX2NvdW50ICsgMSkgKiA0Owo+ID4gKyAgICAgICByZXQgPSByY2FyX2R1X29mX2FkZF9wcm9w ZXJ0eShsdmRzLCAiY2xvY2tzIiwgdmFsdWUsIHBzaXplKTsKPiA+ICsgICAgICAgaWYgKHJldCA8 IDApCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4gKwo+ID4gKyAgICAgICAvKgo+ID4g KyAgICAgICAgKiBJbnNlcnQgdGhlIG5vZGUgaW4gdGhlIE9GIGdyYXBoOiBwYXRjaCB0aGUgTFZE UyBwb3J0cwo+ID4gcmVtb3RlLWVuZHBvaW50Cj4gPiArICAgICAgICAqIHByb3BlcnRpZXMgdG8g cG9pbnQgdG8gdGhlIGVuZHBvaW50cyBvZiB0aGUgc2libGluZyBub2RlcyBpbgo+ID4gdGhlCj4g PiArICAgICAgICAqIGdyYXBoLiBUaGlzIGNhbid0IGJlIHBlcmZvcm1lZCBieSB0aGUgb3Zlcmxh eTogb24gdGhlIGlucHV0Cj4gPiBzaWRlIHRoZQo+ID4gKyAgICAgICAgKiBvdmVybGF5IHdvdWxk IGNvbnRhaW4gYSBwaGFuZGxlIGZvciB0aGUgRFUgTFZEUyBvdXRwdXQgcG9ydAo+ID4gdGhhdAo+ ID4gKyAgICAgICAgKiB3b3VsZCBjbGFzaCB3aXRoIHRoZSBzeXN0ZW0gRFQsIGFuZCBvbiB0aGUg b3V0cHV0IHNpZGUgdGhlCj4gPiBjb25uZWN0aW9uCj4gPiArICAgICAgICAqIGlzIGJvYXJkLXNw ZWNpZmljLgo+ID4gKyAgICAgICAgKi8KPiA+ICsgICAgICAgZW5kcG9pbnRzWzBdID0gcmNhcl9k dV9vZl9maW5kX25vZGVfYnlfcGF0aChsdmRzLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCj4gPiAiL3BvcnRzL3BvcnRAMC9lbmRwb2ludCIp Owo+IAo+IG9mX2dyYXBoX2dldF9lbmRwb2ludF9ieV9yZWdzKCkgc2hvdWxkIHdvcmsgaGVyZSBp bnN0ZWFkIG9yIGFtIEkKPiBtaXNzaW5nIHNvbWV0aGluZz8KCkdvb2QgcG9pbnQuIFRoZSBwYXRj aCBzZXJpZXMgc3RhcnRlZCB3aXRoIGEgbmVlZCBmb3IgYSBub2RlIGxvb2t1cCBieSBwYXRoIApm dW5jdGlvbiB0byBwYXRjaCB0aGUgb3ZlcmxheSBiZWZvcmUgYXBwbHlpbmcgaXQsIGFuZCBJIGZh aWxlZCB0byBzZWUgdGhhdCB0aGUgCmZ1bmN0aW9uIHdhc24ndCBuZWVkZWQgYW55bW9yZSBpbiB0 aGlzIG5ldyB2ZXJzaW9uLiBJJ3ZlIHN1Y2Nlc3NmdWxseSB0ZXN0ZWQgCm9mX2dyYXBoX2dldF9l bmRwb2ludF9ieV9yZWdzKCksIEknbGwgdXNlIHRoYXQgaW4gdjQuCgo+ID4gKyAgICAgICBlbmRw b2ludHNbMV0gPSByY2FyX2R1X29mX2ZpbmRfbm9kZV9ieV9wYXRoKGx2ZHMsCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPiA+ICIvcG9ydHMv cG9ydEAxL2VuZHBvaW50Iik7ICsgICAgICAgaWYgKCFlbmRwb2ludHNbMF0gfHwgIWVuZHBvaW50 c1sxXSkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gPiArCj4gPiArICAgICAgIHZhbHVl WzBdID0gY3B1X3RvX2JlMzIobG9jYWwtPnBoYW5kbGUpOwo+ID4gKyAgICAgICByZXQgPSByY2Fy X2R1X29mX2FkZF9wcm9wZXJ0eShlbmRwb2ludHNbMF0sICJyZW1vdGUtZW5kcG9pbnQiLAo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgNCk7Cj4gCj4gcy80 L3NpemVvZihfX2JlMzIpLwoKV2lsbCBmaXggaW4gdjQuCgo+ID4gKyAgICAgICBpZiAocmV0IDwg MCkKPiA+ICsgICAgICAgICAgICAgICBnb3RvIGRvbmU7Cj4gPiArCj4gPiArICAgICAgIHZhbHVl WzBdID0gY3B1X3RvX2JlMzIocmVtb3RlLT5waGFuZGxlKTsKPiA+ICsgICAgICAgcmV0ID0gcmNh cl9kdV9vZl9hZGRfcHJvcGVydHkoZW5kcG9pbnRzWzFdLCAicmVtb3RlLWVuZHBvaW50IiwKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsIDQpOwo+ID4gKyAg ICAgICBpZiAocmV0IDwgMCkKPiA+ICsgICAgICAgICAgICAgICBnb3RvIGRvbmU7Cj4gPiArCj4g PiArZG9uZToKPiA+ICsgICAgICAgb2Zfbm9kZV9wdXQoZW5kcG9pbnRzWzBdKTsKPiA+ICsgICAg ICAgb2Zfbm9kZV9wdXQoZW5kcG9pbnRzWzFdKTsKPiA+ICt9Cgpbc25pcF0KCi0tIApSZWdhcmRz LAoKTGF1cmVudCBQaW5jaGFydAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==