From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH v4] xen/arm: Add a clock property Date: Thu, 14 Jul 2016 11:25:21 +0100 (BST) Message-ID: References: <1468309605-19522-1-git-send-email-dirk.behme@de.bosch.com> <146836236759.73491.11707389619985827497@resonance> <57868EDE.6060406@gmail.com> <146844380895.73491.4867379517577413421@resonance> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bNdpp-0007c3-6b for xen-devel@lists.xenproject.org; Thu, 14 Jul 2016 10:25:37 +0000 In-Reply-To: <146844380895.73491.4867379517577413421@resonance> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Michael Turquette Cc: Mark Rutland , devicetree@vger.kernel.org, Dirk Behme , Stephen Boyd , Dirk Behme , Julien Grall , Stefano Stabellini , xen-devel@lists.xenproject.org, linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org List-Id: xen-devel@lists.xenproject.org T24gV2VkLCAxMyBKdWwgMjAxNiwgTWljaGFlbCBUdXJxdWV0dGUgd3JvdGU6Cj4gUXVvdGluZyBE aXJrIEJlaG1lICgyMDE2LTA3LTEzIDExOjU2OjMwKQo+ID4gT24gMTMuMDcuMjAxNiAyMDo0Mywg U3RlZmFubyBTdGFiZWxsaW5pIHdyb3RlOgo+ID4gPiBPbiBXZWQsIDEzIEp1bCAyMDE2LCBEaXJr IEJlaG1lIHdyb3RlOgo+ID4gPj4gT24gMTMuMDcuMjAxNiAwMDoyNiwgTWljaGFlbCBUdXJxdWV0 dGUgd3JvdGU6Cj4gPiA+Pj4gUXVvdGluZyBEaXJrIEJlaG1lICgyMDE2LTA3LTEyIDAwOjQ2OjQ1 KQo+ID4gPj4+PiBDbG9ja3MgZGVzY3JpYmVkIGJ5IHRoaXMgcHJvcGVydHkgYXJlIHJlc2VydmVk IGZvciB1c2UgYnkgWGVuLCBhbmQgdGhlIE9TCj4gPiA+Pj4+IG11c3Qgbm90IGFsdGVyIHRoZWly IHN0YXRlIGFueSB3YXksIHN1Y2ggYXMgZGlzYWJsaW5nIG9yIGdhdGluZyBhIGNsb2NrLAo+ID4g Pj4+PiBvciBtb2RpZnlpbmcgaXRzIHJhdGUuIEVuc3VyaW5nIHRoaXMgbWF5IGltcG9zZSBjb25z dHJhaW50cyBvbiBwYXJlbnQKPiA+ID4+Pj4gY2xvY2tzIG9yIG90aGVyIHJlc291cmNlcyB1c2Vk IGJ5IHRoZSBjbG9jayB0cmVlLgo+ID4gPj4+Cj4gPiA+Pj4gTm90ZSB0aGF0IGNsa19wcmVwYXJl X2VuYWJsZSB3aWxsIG5vdCBwcmV2ZW50IHRoZSByYXRlIGZyb20gY2hhbmdpbmcKPiA+ID4+PiAo Y2xrX3NldF9yYXRlKSBvciBhIHBhcmVudCBmcm9tIGNoYW5naW5nIChjbGtfc2V0X3BhcmVudCku IFRoZSBvbmx5IHdheQo+ID4gPj4+IHRvIGRvIHRoaXMgY3VycmVudGx5IHdvdWxkIGJlIHRvIHNl dCB0aGUgZm9sbG93aW5nIGZsYWdzIG9uIHRoZSBlZmZlY3RlZAo+ID4gPj4+IGNsb2NrczoKPiA+ ID4+Pgo+ID4gPj4+ICAgICBDTEtfU0VUX1JBVEVfR0FURQo+ID4gPj4+ICAgICBDTEtfU0VUX1BB UkVOVF9HQVRFCj4gPiA+Pgo+ID4gPj4KPiA+ID4+Cj4gPiA+PiBSZWdhcmRpbmcgc2V0dGluZyBm bGFncywgSSB0aGluayB3ZSBhbHJlYWR5IHRhbGtlZCBhYm91dCB0aGF0LiBJIHRoaW5rIHRoZQo+ ID4gPj4gY29uY2x1c2lvbiB3YXMgdGhhdCBpbiBvdXIgY2FzZSBpdHMgbm90IHBvc3NpYmxlIHRv IG1hbmlwdWxhdGUgdGhlIGZsYWdzIGluCj4gPiA+PiB0aGUgT1MgYXMgdGhpcyBpc24ndCBpbnRl bmRlZCB0byBiZSBkb25lIGluIGNhc2VzIGxpa2Ugb3Vycy4gVGhlcmVmb3JlIG5vIEFQSQo+ID4g Pj4gaXMgZXhwb3J0ZWQgZm9yIHRoaXMuCj4gPiA+Pgo+ID4gPj4gSS5lLiBpZiB3ZSBuZWVkIHRv IHNldCB0aGVzZSBmbGFncywgd2UgaGF2ZSB0byBkbyB0aGF0IGluIFhlbiB3aGVyZSB3ZSBhZGQg dGhlCj4gPiA+PiBjbG9ja3MgdG8gdGhlIGh5cGVydmlzb3Igbm9kZSBpbiB0aGUgZGV2aWNlIHRy ZWUuIEFuZCBub3QgaW4gdGhlIGtlcm5lbCBwYXRjaAo+ID4gPj4gZGlzY3Vzc2VkIGhlcmUuCj4g PiA+Cj4gPiA+IFRoZXNlIGFyZSBpbnRlcm5hbCBMaW51eCBmbGFncywgYXJlbid0IHRoZXk/Cj4g PiAKPiA+IAo+ID4gSSd2ZSBiZWVuIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgeW91IGNhbiBz ZXQgY2xvY2sgImZsYWdzIiB2aWEgdGhlIAo+ID4gZGV2aWNlIHRyZWUuIFNlZW1zIEkgbmVlZCB0 byByZS1jaGVjayB0aGF0IDspCj4gCj4gUmlnaHQsIHlvdSBjYW5ub3Qgc2V0IGZsYWdzIGZyb20g dGhlIGRldmljZSB0cmVlLiBBbHNvLCBzZXR0aW5nIHRoZXNlCj4gZmxhZ3MgaXMgZG9uZSBieSB0 aGUgY2xvY2sgcHJvdmlkZXIgZHJpdmVyLCBub3QgYSBjb25zdW1lci4gWGVuIGlzIHRoZQo+IGNv bnN1bWVyLgoKSnVzdCBmb3IgZGlzYW1iaWd1YXRpb24sIEkgZ3Vlc3MgeW91IGFyZSByZWZlcnJp bmcgdG8gdGhlIFhlbiBjb2RlIGluCkxpbnV4IChzdWNoIGFzIGFyY2gvYXJtL3hlbi9lbmxpZ2h0 ZW4uYyksIHJpZ2h0PwoKV2UgaGF2ZSAiWGVuIiwgdGhlIGh5cGVydmlzb3IsIHdoaWNoIHJ1bnMg YmVmb3JlIExpbnV4IGFuZCBpdCBpcyBhCnNlcGFyYXRlIGNvbXBvbmVudCBydW5uaW5nIGF0IEVM MiwgYW5kIHdlIGhhdmUgWGVuIHN1cHBvcnQgaW4gTGludXgsCnN1Y2ggYXMgYXJjaC9hcm0veGVu IGFuZCBkcml2ZXJzL3hlbi4gVGhlc2UgYXJlIGRyaXZlcnMgdG8gY29tbXVuaWNhdGUKd2l0aCB0 aGUgWGVuIGh5cGVydmlzb3IgYW5kIG90aGVyIGNvbXBvbmVudHMgaW4gYSBYZW4gc3lzdGVtLgoK SW4gdGhpcyBjYXNlLCB0aGUgWGVuIGh5cGVydmlzb3Igd291bGQgYmUgdGhlIG93bmVyIG9mIHRo ZSBjbG9jay4gWGVuCnN1cHBvcnQgaW4gTGludXgsIHNwZWNpZmljYWxseSBhcmNoL2FybS94ZW4v ZW5saWdodGVuLmMsIG9ubHkgY29tZXMgaW50bwp0aGUgcGljdHVyZSB0byAid2FybiIgTGludXgg dGhhdCBzaG91bGRuJ3QgcmVhbGx5IGJlIG1lc3Npbmcgd2l0aCB0aGUKY2xvY2tzLiBJIGd1ZXNz IHRoYXQgZnJvbSBhIExpbnV4IGNsb2NrIGRyaXZlciBwb2ludCBvZiB2aWV3LCBpdCBpcyBhCmNv bnN1bWVyLgoKSSBob3BlIHRoYXQgaGVscHMuCgoKPiA+ID4gVGhleSBjYW5ub3QgYmUgc2V0IGlu IFhlbi4KPiA+ID4KPiA+ID4gSWYgdGhlIG9ubHkgd2F5IHRvIG1ha2Ugc3VyZSB0aGF0IGNsa19z ZXRfcmF0ZSBhbmQgY2xrX3NldF9wYXJlbnQgZmFpbAo+ID4gPiBvbiBvbmUgb2YgdGhlIGNsb2Nr cyAib3duZWQiIGJ5IFhlbiBpcyB0byBzZXQgQ0xLX1NFVF9SQVRFX0dBVEUgYW5kCj4gPiA+IENM S19TRVRfUEFSRU5UX0dBVEUsIHdlJ2xsIGhhdmUgdG8gZG8gdGhhdC4gRXZlbiBpZiBpdCBtZWFu cyBpbnRyb2R1Y2luZwo+ID4gPiBhIG5ldyBpbnRlcm5hbCBMaW51eCBBUEkuCj4gPiA+Cj4gPiA+ Cj4gPiA+Pj4gQW5kIHRoZW4gZW5hYmxlIHRoZSBjbG9ja3MuIEFsbCBjYWxscyB0byBjbGtfc2V0 X3BhcmVudCBhbmQgY2xrX3NldF9yYXRlCj4gPiA+Pj4gd2l0aCB0aG9zZSBjbG9ja3MgaW4gdGhl IHBhdGggd2lsbCBmYWlsLCBzbyBsb25nIGFzIHRoZXkgYXJlIHByZXBhcmVkCj4gPiA+Pj4gYW5k IGVuYWJsZWQuIFRoaXMgaW1wbGVtZW50YXRpb24gZGV0YWlsIGlzIHNwZWNpZmljIHRvIExpbnV4 IGFuZAo+ID4gPj4+IGRlZmluaXRlbHkgc2hvdWxkIG5vdCBnbyBpbnRvIHRoZSBiaW5kaW5nLgo+ ID4gPj4+Cj4gPiA+Pj4+Cj4gPiA+Pj4+IFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBwcm94eSBj bG9ja3MgZm9yIGRldmljZXMgWGVuIGhhcyB0YWtlbiBvd25lcnNoaXAKPiA+ID4+Pj4gb2YsIHN1 Y2ggYXMgVUFSVHMsIGZvciB3aGljaCB0aGUgYXNzb2NpYXRlZCBjbG9jayBjb250cm9sbGVyKHMp IHJlbWFpbgo+ID4gPj4+PiB1bmRlciB0aGUgY29udHJvbCBvZiBEb20wLgo+ID4gPj4+Cj4gPiA+ Pj4gSSdtIHN0aWxsIG5vdCBjb21wbGV0ZWx5IHN1cmUgYWJvdXQgdGhpcyB0eXBlIG9mIGxheWVy aW5nIGFuZCB3aGV0aGVyIG9yCj4gPiA+Pj4gbm90IGl0IGlzIHNhbmUuIElmIHlvdSB3YW50IFhl biB0byBtYW5hZ2UgdGhlIGNsb2NrIGNvbnRyb2xsZXIsIEFORCB5b3UKPiA+ID4+PiB3YW50IExp bnV4IGd1ZXN0cyBvciBkb20wIHRvIGNvbnN1bWUgdGhvc2UgY2xvY2tzIGFuZCBtYW5pcHVsYXRl IHRoZW0gaW4KPiA+ID4+PiBvdGhlciBkcml2ZXJzLCB0aGVuIHRoaXMgc29sdXRpb24gd29uJ3Qg d29yay4KPiA+ID4+Pgo+ID4gPj4+IFJlZ2FyZHMsCj4gPiA+Pj4gTWlrZQo+ID4gPj4+Cj4gPiA+ Pj4+Cj4gPiA+Pj4+IFVwIHRvIG5vdywgdGhlIHdvcmthcm91bmQgZm9yIHRoaXMgaGFzIGJlZW4g dG8gdXNlIHRoZSBMaW51eCBrZXJuZWwKPiA+ID4+Pj4gY29tbWFuZCBsaW5lIHBhcmFtZXRlciAn Y2xrX2lnbm9yZV91bnVzZWQnLiBTZWUgWGVuIGJ1Zwo+ID4gPj4+Pgo+ID4gPj4+PiBodHRwOi8v YnVncy54ZW5wcm9qZWN0Lm9yZy94ZW4vYnVnLzQ1Cj4gPiA+Pj4+Cj4gPiA+Pj4+IHRvby4KPiA+ ID4+Pj4KPiA+ID4+Pj4gU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBkZS5i b3NjaC5jb20+Cj4gPiA+Pj4+IC0tLQo+ID4gPj4+PiBDaGFuZ2VzIGluIHY0OiBTd2l0Y2ggdG8g dGhlIHhlbi50eHQgZGVzY3JpcHRpb24gcHJvcG9zZWQgYnkgTWFyazoKPiA+ID4+Pj4gICAgICAg ICAgICAgICAgIGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2FybS1rZXJuZWwvbXNnNTE2 MTU4Lmh0bWwKPiA+ID4+Pj4KPiA+ID4+Pj4gQ2hhbmdlcyBpbiB2MzogVXNlIHRoZSB4ZW4udHh0 IGRlc2NyaXB0aW9uIHByb3Bvc2VkIGJ5IE1pY2hhZWwuIFRoYW5rcyEKPiA+ID4+Pj4KPiA+ID4+ Pj4gQ2hhbmdlcyBpbiB2MjogRHJvcCB0aGUgTGludXggaW1wbGVtZW50YXRpb24gZGV0YWlscyBs aWtlCj4gPiA+Pj4+IGNsa19kaXNhYmxlX3VudXNlZAo+ID4gPj4+PiAgICAgICAgICAgICAgICAg aW4geGVuLnR4dC4KPiA+ID4+Pj4KPiA+ID4+Pj4gICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv YmluZGluZ3MvYXJtL3hlbi50eHQgfCAxMiArKysrKysrCj4gPiA+Pj4+ICAgYXJjaC9hcm0veGVu L2VubGlnaHRlbi5jICAgICAgICAgICAgICAgICAgICAgIHwgNDcKPiA+ID4+Pj4gKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4gPiA+Pj4+ICAgMiBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRp b25zKCspCj4gPiA+Pj4+Cj4gPiA+Pj4+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Rldmlj ZXRyZWUvYmluZGluZ3MvYXJtL3hlbi50eHQKPiA+ID4+Pj4gYi9Eb2N1bWVudGF0aW9uL2Rldmlj ZXRyZWUvYmluZGluZ3MvYXJtL3hlbi50eHQKPiA+ID4+Pj4gaW5kZXggYzliOTMyMS4uNDM3ZTUw YiAxMDA2NDQKPiA+ID4+Pj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz L2FybS94ZW4udHh0Cj4gPiA+Pj4+ICsrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k aW5ncy9hcm0veGVuLnR4dAo+ID4gPj4+PiBAQCAtMTcsNiArMTcsMTggQEAgdGhlIGZvbGxvd2lu ZyBwcm9wZXJ0aWVzOgo+ID4gPj4+PiAgICAgQSBHSUMgbm9kZSBpcyBhbHNvIHJlcXVpcmVkLgo+ ID4gPj4+PiAgICAgVGhpcyBwcm9wZXJ0eSBpcyB1bm5lY2Vzc2FyeSB3aGVuIGJvb3RpbmcgRG9t MCB1c2luZyBBQ1BJLgo+ID4gPj4+Pgo+ID4gPj4+PiArT3B0aW9uYWwgcHJvcGVydGllczoKPiA+ ID4+Pj4gKwo+ID4gPj4+PiArLSBjbG9ja3M6IGEgbGlzdCBvZiBwaGFuZGxlICsgY2xvY2stc3Bl Y2lmaWVyIHBhaXJzCj4gPiA+Pj4+ICsgIENsb2NrcyBkZXNjcmliZWQgYnkgdGhpcyBwcm9wZXJ0 eSBhcmUgcmVzZXJ2ZWQgZm9yIHVzZSBieSBYZW4sIGFuZCB0aGUKPiA+ID4+Pj4gKyAgT1MgbXVz dCBub3QgYWx0ZXIgdGhlaXIgc3RhdGUgYW55IHdheSwgc3VjaCBhcyBkaXNhYmxpbmcgb3IgZ2F0 aW5nIGEKPiA+ID4+Pj4gKyAgY2xvY2ssIG9yIG1vZGlmeWluZyBpdHMgcmF0ZS4gRW5zdXJpbmcg dGhpcyBtYXkgaW1wb3NlIGNvbnN0cmFpbnRzIG9uCj4gPiA+Pj4+ICsgIHBhcmVudCBjbG9ja3Mg b3Igb3RoZXIgcmVzb3VyY2VzIHVzZWQgYnkgdGhlIGNsb2NrIHRyZWUuCj4gPiA+Pj4+ICsKPiA+ ID4+Pj4gKyAgTm90ZTogdGhpcyBwcm9wZXJ0eSBpcyB1c2VkIHRvIHByb3h5IGNsb2NrcyBmb3Ig ZGV2aWNlcyBYZW4gaGFzIHRha2VuCj4gPiA+Pj4+ICsgIG93bmVyc2hpcCBvZiwgc3VjaCBhcyBV QVJUcywgZm9yIHdoaWNoIHRoZSBhc3NvY2lhdGVkIGNsb2NrCj4gPiA+Pj4+ICsgIGNvbnRyb2xs ZXIocykgcmVtYWluIHVuZGVyIHRoZSBjb250cm9sIG9mIERvbTAuCj4gPiA+Pj4+ICsKPiA+ID4+ Pj4gICBUbyBzdXBwb3J0IFVFRkkgb24gWGVuIEFSTSB2aXJ0dWFsIHBsYXRmb3JtcywgWGVuIHBv cHVsYXRlcyB0aGUgRkRUCj4gPiA+Pj4+ICJ1ZWZpIiBub2RlCj4gPiA+Pj4+ICAgdW5kZXIgL2h5 cGVydmlzb3Igd2l0aCBmb2xsb3dpbmcgcGFyYW1ldGVyczoKPiA+ID4+Pj4KPiA+ID4+Pj4gZGlm ZiAtLWdpdCBhL2FyY2gvYXJtL3hlbi9lbmxpZ2h0ZW4uYyBiL2FyY2gvYXJtL3hlbi9lbmxpZ2h0 ZW4uYwo+ID4gPj4+PiBpbmRleCA0N2FjYjM2Li41YzU0NmQwIDEwMDY0NAo+ID4gPj4+PiAtLS0g YS9hcmNoL2FybS94ZW4vZW5saWdodGVuLmMKPiA+ID4+Pj4gKysrIGIvYXJjaC9hcm0veGVuL2Vu bGlnaHRlbi5jCj4gPiA+Pj4+IEBAIC0yNCw2ICsyNCw3IEBACj4gPiA+Pj4+ICAgI2luY2x1ZGUg PGxpbnV4L29mX2ZkdC5oPgo+ID4gPj4+PiAgICNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4KPiA+ ID4+Pj4gICAjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPgo+ID4gPj4+PiArI2luY2x1ZGUg PGxpbnV4L2Nsay1wcm92aWRlci5oPgo+ID4gPj4+PiAgICNpbmNsdWRlIDxsaW51eC9jcHVpZGxl Lmg+Cj4gPiA+Pj4+ICAgI2luY2x1ZGUgPGxpbnV4L2NwdWZyZXEuaD4KPiA+ID4+Pj4gICAjaW5j bHVkZSA8bGludXgvY3B1Lmg+Cj4gPiA+Pj4+IEBAIC00NDQsNiArNDQ1LDUyIEBAIHN0YXRpYyBp bnQgX19pbml0IHhlbl9wbV9pbml0KHZvaWQpCj4gPiA+Pj4+ICAgfQo+ID4gPj4+PiAgIGxhdGVf aW5pdGNhbGwoeGVuX3BtX2luaXQpOwo+ID4gPj4+Pgo+ID4gPj4+PiArLyoKPiA+ID4+Pj4gKyAq IENoZWNrIGlmIHdlIHdhbnQgdG8gcmVnaXN0ZXIgc29tZSBjbG9ja3MsIHRoYXQgdGhleQo+ID4g Pj4+PiArICogYXJlIG5vdCBmcmVlZCBiZWNhdXNlIHVudXNlZCBieSBjbGtfZGlzYWJsZV91bnVz ZWQoKS4KPiA+ID4+Pj4gKyAqIEUuZy4gdGhlIHNlcmlhbCBjb25zb2xlIGNsb2NrLgo+ID4gPj4+ PiArICovCj4gPiA+Pj4+ICtzdGF0aWMgaW50IF9faW5pdCB4ZW5fYXJtX3JlZ2lzdGVyX2Nsa3Mo dm9pZCkKPiA+ID4+Pj4gK3sKPiA+ID4+Pj4gKyAgICAgICBzdHJ1Y3QgY2xrICpjbGs7Cj4gPiA+ Pj4+ICsgICAgICAgc3RydWN0IGRldmljZV9ub2RlICp4ZW5fbm9kZTsKPiA+ID4+Pj4gKyAgICAg ICB1bnNpZ25lZCBpbnQgaSwgY291bnQ7Cj4gPiA+Pj4+ICsgICAgICAgaW50IHJldCA9IDA7Cj4g PiA+Pj4+ICsKPiA+ID4+Pj4gKyAgICAgICB4ZW5fbm9kZSA9IG9mX2ZpbmRfY29tcGF0aWJsZV9u b2RlKE5VTEwsIE5VTEwsICJ4ZW4seGVuIik7Cj4gPiA+Pj4+ICsgICAgICAgaWYgKCF4ZW5fbm9k ZSkgewo+ID4gPj4+PiArICAgICAgICAgICAgICAgcHJfZXJyKCJYZW4gc3VwcG9ydCB3YXMgZGV0 ZWN0ZWQgYmVmb3JlLCBidXQgaXQgaGFzCj4gPiA+Pj4+IGRpc2FwcGVhcmVkXG4iKTsKPiA+ID4+ Pj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPj4+PiArICAgICAgIH0KPiA+ ID4+Pj4gKwo+ID4gPj4+PiArICAgICAgIGNvdW50ID0gb2ZfY2xrX2dldF9wYXJlbnRfY291bnQo eGVuX25vZGUpOwo+ID4gPj4+PiArICAgICAgIGlmICghY291bnQpCj4gPiA+Pj4+ICsgICAgICAg ICAgICAgICBnb3RvIG91dDsKPiA+ID4+Pj4gKwo+ID4gPj4+PiArICAgICAgIGZvciAoaSA9IDA7 IGkgPCBjb3VudDsgaSsrKSB7Cj4gPiA+Pj4+ICsgICAgICAgICAgICAgICBjbGsgPSBvZl9jbGtf Z2V0KHhlbl9ub2RlLCBpKTsKPiA+ID4+Pj4gKyAgICAgICAgICAgICAgIGlmIChJU19FUlIoY2xr KSkgewo+ID4gPj4+PiArICAgICAgICAgICAgICAgICAgICAgICBwcl9lcnIoIlhlbiBmYWlsZWQg dG8gcmVnaXN0ZXIgY2xvY2sgJWkuIEVycm9yOgo+ID4gPj4+PiAlbGlcbiIsCj4gPiA+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCBQVFJfRVJSKGNsaykpOwo+ID4gPj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBQVFJfRVJSKGNsayk7Cj4gPiA+Pj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gPj4+PiArICAgICAgICAgICAgICAgfQo+ ID4gPj4+PiArCj4gPiA+Pj4+ICsgICAgICAgICAgICAgICByZXQgPSBjbGtfcHJlcGFyZV9lbmFi bGUoY2xrKTsKPiA+ID4+Pj4gKyAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gPiA+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIHByX2VycigiWGVuIGZhaWxlZCB0byBlbmFibGUgY2xv Y2sgJWkuIEVycm9yOgo+ID4gPj4+PiAlaVxuIiwKPiA+ID4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGksIHJldCk7Cj4gPiA+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGdv dG8gb3V0Owo+ID4gPj4+PiArICAgICAgICAgICAgICAgfQo+ID4gPj4+PiArICAgICAgIH0KPiA+ ID4+Pj4gKwo+ID4gPj4+PiArICAgICAgIHJldCA9IDA7Cj4gPiA+Pj4+ICsKPiA+ID4+Pj4gK291 dDoKPiA+ID4+Pj4gKyAgICAgICBvZl9ub2RlX3B1dCh4ZW5fbm9kZSk7Cj4gPiA+Pj4+ICsgICAg ICAgcmV0dXJuIHJldDsKPiA+ID4+Pj4gK30KPiA+ID4+Pj4gK2xhdGVfaW5pdGNhbGwoeGVuX2Fy bV9yZWdpc3Rlcl9jbGtzKTsKPiA+ID4+Pj4KPiA+ID4+Pj4gICAvKiBlbXB0eSBzdHVicyAqLwo+ ID4gPj4+PiAgIHZvaWQgeGVuX2FyY2hfcHJlX3N1c3BlbmQodm9pZCkgeyB9Cj4gPiA+Pj4+IC0t Cj4gPiA+Pgo+ID4gPgo+ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+ID4gPiBYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPiA+IFhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCj4gPiA+IGh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwKPiA+ID4K PiA+IAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==