From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 65F33C433FE for ; Mon, 21 Nov 2022 12:02:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=KNK1xCsgRmnvCquPSgs/86OPbtNWzNZ+rPTynjGpxo0=; b=bFj2mkcza6L5eg /1vB3MyelDv/MUa8wVeqGnk/1MCK7Th6Br8ggvMOpIBj6EQ8KQ42Z3KBNlrK0VeeODwZNKbAM41ZO Sw0dloMb3n8+5pDBDPMAKaN9YPAY2EEfWAacCcN/ExxqTz+G5+4taxZvaBpbq7DEZVmA4yoJRQa8o c7BHfZVW4UqTj5Epj1n9zIEVcdAxIvW8ONXqq5/2vBN2BZraRBwVGnWHO38xoSuW5x3erh4jXB5df xqMqabUuK7XvTx85JkbiKT2MbbwL15TWUS760QqZ0RITnhAg6sxcfjL33TM7QSOje3e+mK1kxqum+ TMER+SOtPrSMCWrJ1IHA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ox5U8-00DARn-Dw; Mon, 21 Nov 2022 12:01:12 +0000 Received: from madras.collabora.co.uk ([46.235.227.172]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ox5U3-00DAOv-IL; Mon, 21 Nov 2022 12:01:10 +0000 Received: from [192.168.1.100] (2-237-20-237.ip236.fastwebnet.it [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: kholk11) by madras.collabora.co.uk (Postfix) with ESMTPSA id 911C56601DEA; Mon, 21 Nov 2022 12:01:04 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1669032065; bh=NG4/5IZyY1SjaNQIs07uOPi5SzQEZBoAwoUix43JLXs=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=LSI7kAIwIu50oezePtCjqfxfuIvevXPcNXKDyuI9AY4GQ8FgHigIbZJ1+JVWGceT+ 3goVHzSb8N52oAF7e7DhODUzHfmnP2XppXjR89IBL8Ybcv0t+JYz7qsMqhmNFfABai AUtnJWjme+rJP3J2McXymBiFYY0xsn2cSfcOKA9Q1aETredpw0XVbiXRMkl+0r00wK jKO/YgKA01vBiNS8+Viihnr2hFAeDmuUYjOsQ+k+tKz3/q7Xwg/JB6PbrAZm2ObnDw bIfp3i/vm2PQ9g7E+s1ToJgeS8QUJES+HkL8WsF4hcGEdJX+SfpHFrXF1U9+hN9i/j fenV9NvXxM0Cw== Message-ID: Date: Mon, 21 Nov 2022 13:01:02 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Subject: Re: [RESEND PATCH v3] soc: mediatek: Introduce mediatek-regulator-coupler driver Content-Language: en-US To: Matthias Brugger Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, wenst@chromium.org, alyssa.rosenzweig@collabora.com, nfraprado@collabora.com, dmitry.osipenko@collabora.com References: <20221006115816.66853-1-angelogioacchino.delregno@collabora.com> From: AngeloGioacchino Del Regno In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221121_040107_892342_F4FDAF41 X-CRM114-Status: GOOD ( 41.97 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SWwgMjEvMTEvMjIgMTI6NDQsIE1hdHRoaWFzIEJydWdnZXIgaGEgc2NyaXR0bzoKPiAKPiAKPiBP biAwNi8xMC8yMDIyIDEzOjU4LCBBbmdlbG9HaW9hY2NoaW5vIERlbCBSZWdubyB3cm90ZToKPj4g VGhpcyBkcml2ZXIgY3VycmVudGx5IGRlYWxzIHdpdGggR1BVLVNSQU0gcmVndWxhdG9yIGNvdXBs aW5nLCBlbnN1cmluZwo+PiB0aGF0IHRoZSBTUkFNIHZvbHRhZ2UgaXMgYWx3YXlzIGJldHdlZW4g YSBzcGVjaWZpYyByYW5nZSBvZiBkaXN0YW5jZSB0bwo+PiB0aGUgR1BVIHZvbHRhZ2UsIGRlcGVu ZGluZyBvbiB0aGUgU29DLCBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gYWNoaWV2ZQo+PiBzeXN0ZW0g c3RhYmlsaXR5IGFjcm9zcyB0aGUgZnVsbCByYW5nZSBvZiBzdXBwb3J0ZWQgR1BVIGZyZXF1ZW5j aWVzLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBBbmdlbG9HaW9hY2NoaW5vIERlbCBSZWdubyA8YW5n ZWxvZ2lvYWNjaGluby5kZWxyZWdub0Bjb2xsYWJvcmEuY29tPgo+PiBSZXZpZXdlZC1ieTogRG1p dHJ5IE9zaXBlbmtvIDxkbWl0cnkub3NpcGVua29AY29sbGFib3JhLmNvbT4KPj4gLS0tCj4+Cj4+ IFRoaXMgZHJpdmVyIHdhcyBzdWNjZXNzZnVsbHkgdGVzdGVkIGZvciBtb3JlIHRoYW4gMyBtb250 aHMuCj4+IEdQVSBEVkZTIHdvcmtzIGNvcnJlY3RseSB3aXRoIG5vIHN0YWJpbGl0eSBpc3N1ZXMu Cj4+Cj4+IENoYW5nZXMgaW4gUkVTRU5ELHYzOgo+PiDCoCBSZWJhc2VkIG92ZXIgbmV4dC0yMDIy MTAwNQo+Pgo+PiBDaGFuZ2VzIGluIHYzOgo+PiDCoCAtIEFkZGVkIGJyYWNlcyB0byBlbHNlLWlm IGJyYW5jaAo+Pgo+PiBDaGFuZ2VzIGluIHYyOgo+PiDCoCAtIEFkZGVkIGNoZWNrIGZvciBuX2Nv dXBsZWQKPj4gwqAgLSBBZGRlZCBjaGVjayBmb3IgdmdwdSB0byBlbmZvcmNlIGF0dGFjaGluZyB0 byB2Z3B1PC0+c3JhbSBjb3VwbGluZyBvbmx5Cj4+Cj4+IENvbnRleHQ6Cj4+IFRoaXMgZHJpdmVy IGlzIHRoZSBsYXN0IG9mIHRoZSBwaWVjZXMgb2YgYSBiaWdnZXIgcHV6emxlLCBhaW1pbmcgdG8g ZmluYWxseQo+PiBlbmFibGUgRHluYW1pYyBWb2x0YWdlL0ZyZXF1ZW5jeSBTY2FsaW5nIGZvciBN YWxpIEdQVXMgZm91bmQgb24gTWVkaWFUZWsKPj4gU29DcyBvbiB0aGUgZnVsbHkgb3BlbiBzb3Vy Y2UgZ3JhcGhpY3Mgc3RhY2sgKFBhbmZyb3N0IGRyaXZlcikuCj4+Cj4+IE5vIGRldmljZXRyZWUg YmluZGluZ3MgYXJlIHByb3ZpZGVkIGJlY2F1c2UgdGhpcyBkb2VzIG5vdCByZXF1aXJlIGFueQo+ PiBkcml2ZXItc3BlY2lmaWMgYmluZGluZyBhdCBhbGwuCj4+Cj4+IExhc3QgYnV0IG5vdCBsZWFz dDogaXQgd2FzIGNob3NlbiB0byBoYXZlIHRoaXMgZHJpdmVyIGVuYWJsZWQgZm9yCj4+ICggQVJD SF9NRURJQVRFSyAmJiBSRUdVTEFUT1IgKSB3aXRob3V0IHJlYWxseSBnaXZpbmcgYSBmcmVlIGNv bmZpZ3VyYXRpb24KPj4gY2hvaWNlIGJlY2F1c2UsIG9uY2UgdGhlIERWRlMgbWVjaGFuaXNtIHdp bGwgYmUgZnVsbHkgd29ya2luZywgdXNpbmcgb25lCj4+IG9mIHRoZSBsaXN0ZWQgTWVkaWFUZWsg U29DcyAqd2l0aG91dCogdGhpcyBjb3VwbGluZyBtZWNoYW5pc20gKndpbGwqIGxlYWQKPj4gdG8g dW5zdGFiaWxpdGllcyBhbmQgc3lzdGVtIGNyYXNoZXMuCj4+IEZvciBDT01QSUxFX1RFU1QsIGNo b2ljZSBpcyBnaXZlbiBmb3Igb2J2aW91cyByZWFzb25zLgo+Pgo+PiDCoCBkcml2ZXJzL3NvYy9t ZWRpYXRlay9LY29uZmlnwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNSAr Cj4+IMKgIGRyaXZlcnMvc29jL21lZGlhdGVrL01ha2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoMKgIDEgKwo+PiDCoCBkcml2ZXJzL3NvYy9tZWRpYXRlay9tdGstcmVndWxh dG9yLWNvdXBsZXIuYyB8IDE1OSArKysrKysrKysrKysrKysrKysrCj4+IMKgIDMgZmlsZXMgY2hh bmdlZCwgMTY1IGluc2VydGlvbnMoKykKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv c29jL21lZGlhdGVrL210ay1yZWd1bGF0b3ItY291cGxlci5jCj4+Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3NvYy9tZWRpYXRlay9LY29uZmlnIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvS2NvbmZp Zwo+PiBpbmRleCA0MGQwY2M2MDBjYWUuLjMwYjVhZmMwZTUxZCAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9zb2MvbWVkaWF0ZWsvS2NvbmZpZwo+PiArKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9L Y29uZmlnCj4+IEBAIC00NCw2ICs0NCwxMSBAQCBjb25maWcgTVRLX1BNSUNfV1JBUAo+PiDCoMKg wqDCoMKgwqDCoCBvbiBkaWZmZXJlbnQgTWVkaWFUZWsgU29Dcy4gVGhlIFBNSUMgd3JhcHBlciBp cyBhIHByb3ByaWV0YXJ5Cj4+IMKgwqDCoMKgwqDCoMKgIGhhcmR3YXJlIHRvIGNvbm5lY3QgdGhl IFBNSUMuCj4+ICtjb25maWcgTVRLX1JFR1VMQVRPUl9DT1VQTEVSCj4+ICvCoMKgwqAgYm9vbCAi TWVkaWFUZWsgU29DIFJlZ3VsYXRvciBDb3VwbGVyIiBpZiBDT01QSUxFX1RFU1QKPj4gK8KgwqDC oCBkZWZhdWx0IEFSQ0hfTUVESUFURUsKPj4gK8KgwqDCoCBkZXBlbmRzIG9uIFJFR1VMQVRPUgo+ PiArCj4+IMKgIGNvbmZpZyBNVEtfU0NQU1lTCj4+IMKgwqDCoMKgwqAgYm9vbCAiTWVkaWFUZWsg U0NQU1lTIFN1cHBvcnQiCj4+IMKgwqDCoMKgwqAgZGVmYXVsdCBBUkNIX01FRElBVEVLCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZSBiL2RyaXZlcnMvc29jL21l ZGlhdGVrL01ha2VmaWxlCj4+IGluZGV4IDBlOWU3MDNjOTMxYS4uOGMwZGRhY2JjZGU4IDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJz L3NvYy9tZWRpYXRlay9NYWtlZmlsZQo+PiBAQCAtMyw2ICszLDcgQEAgb2JqLSQoQ09ORklHX01U S19DTURRKSArPSBtdGstY21kcS1oZWxwZXIubwo+PiDCoCBvYmotJChDT05GSUdfTVRLX0RFVkFQ QykgKz0gbXRrLWRldmFwYy5vCj4+IMKgIG9iai0kKENPTkZJR19NVEtfSU5GUkFDRkcpICs9IG10 ay1pbmZyYWNmZy5vCj4+IMKgIG9iai0kKENPTkZJR19NVEtfUE1JQ19XUkFQKSArPSBtdGstcG1p Yy13cmFwLm8KPj4gK29iai0kKENPTkZJR19NVEtfUkVHVUxBVE9SX0NPVVBMRVIpICs9IG10ay1y ZWd1bGF0b3ItY291cGxlci5vCj4+IMKgIG9iai0kKENPTkZJR19NVEtfU0NQU1lTKSArPSBtdGst c2Nwc3lzLm8KPj4gwqAgb2JqLSQoQ09ORklHX01US19TQ1BTWVNfUE1fRE9NQUlOUykgKz0gbXRr LXBtLWRvbWFpbnMubwo+PiDCoCBvYmotJChDT05GSUdfTVRLX01NU1lTKSArPSBtdGstbW1zeXMu bwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXRrLXJlZ3VsYXRvci1jb3Vw bGVyLmMgCj4+IGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXRrLXJlZ3VsYXRvci1jb3VwbGVyLmMK Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi5hZDJlZDQyYWE2 OTcKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9tdGstcmVn dWxhdG9yLWNvdXBsZXIuYwo+PiBAQCAtMCwwICsxLDE1OSBAQAo+PiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQo+PiArLyoKPj4gKyAqIFZvbHRhZ2UgcmVndWxhdG9y cyBjb3VwbGVyIGZvciBNZWRpYVRlayBTb0NzCj4+ICsgKgo+PiArICogQ29weXJpZ2h0IChDKSAy MDIyIENvbGxhYm9yYSwgTHRkLgo+PiArICogQXV0aG9yOiBBbmdlbG9HaW9hY2NoaW5vIERlbCBS ZWdubyA8YW5nZWxvZ2lvYWNjaGluby5kZWxyZWdub0Bjb2xsYWJvcmEuY29tPgo+PiArICovCj4+ ICsKPj4gKyNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgIjogIiBmbXQKPj4gKwo+ PiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4K Pj4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9j b3VwbGVyLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2RyaXZlci5oPgo+PiArI2lu Y2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9tYWNoaW5lLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvc3Vz cGVuZC5oPgo+PiArCj4+ICsjZGVmaW5lIHRvX21lZGlhdGVrX2NvdXBsZXIoeCnCoMKgwqAgY29u dGFpbmVyX29mKHgsIHN0cnVjdCAKPj4gbWVkaWF0ZWtfcmVndWxhdG9yX2NvdXBsZXIsIGNvdXBs ZXIpCj4+ICsKPj4gK3N0cnVjdCBtZWRpYXRla19yZWd1bGF0b3JfY291cGxlciB7Cj4+ICvCoMKg wqAgc3RydWN0IHJlZ3VsYXRvcl9jb3VwbGVyIGNvdXBsZXI7Cj4+ICvCoMKgwqAgc3RydWN0IHJl Z3VsYXRvcl9kZXYgKnZzcmFtX3JkZXY7Cj4+ICt9Owo+PiArCj4+ICsvKgo+PiArICogV2UgY3Vy cmVudGx5IHN1cHBvcnQgb25seSBjb3VwbGVzIG9mIG5vdCBtb3JlIHRoYW4gdHdvIHZyZWdzIGFu ZAo+PiArICogbW9kaWZ5IHRoZSB2c3JhbSB2b2x0YWdlIG9ubHkgd2hlbiBjaGFuZ2luZyB2b2x0 YWdlIG9mIHZncHUuCj4+ICsgKgo+PiArICogVGhpcyBmdW5jdGlvbiBpcyBsaW1pdGVkIHRvIHRo ZSBHUFU8LT5TUkFNIHZvbHRhZ2VzIHJlbGF0aW9uc2hpcHMuCj4+ICsgKi8KPj4gK3N0YXRpYyBp bnQgbWVkaWF0ZWtfcmVndWxhdG9yX2JhbGFuY2Vfdm9sdGFnZShzdHJ1Y3QgcmVndWxhdG9yX2Nv dXBsZXIgKmNvdXBsZXIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcmVndWxhdG9yX2RldiAqcmRldiwKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN1c3BlbmRfc3RhdGVfdCBz dGF0ZSkKPj4gK3sKPj4gK8KgwqDCoCBzdHJ1Y3QgbWVkaWF0ZWtfcmVndWxhdG9yX2NvdXBsZXIg Km1yYyA9IHRvX21lZGlhdGVrX2NvdXBsZXIoY291cGxlcik7Cj4+ICvCoMKgwqAgaW50IG1heF9z cHJlYWQgPSByZGV2LT5jb25zdHJhaW50cy0+bWF4X3NwcmVhZFswXTsKPj4gK8KgwqDCoCBpbnQg dnNyYW1fbWluX3VWID0gbXJjLT52c3JhbV9yZGV2LT5jb25zdHJhaW50cy0+bWluX3VWOwo+PiAr wqDCoMKgIGludCB2c3JhbV9tYXhfdVYgPSBtcmMtPnZzcmFtX3JkZXYtPmNvbnN0cmFpbnRzLT5t YXhfdVY7Cj4+ICvCoMKgwqAgaW50IHZzcmFtX3RhcmdldF9taW5fdVYsIHZzcmFtX3RhcmdldF9t YXhfdVY7Cj4+ICvCoMKgwqAgaW50IG1pbl91ViA9IDA7Cj4+ICvCoMKgwqAgaW50IG1heF91ViA9 IElOVF9NQVg7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gKwo+PiArwqDCoMKgIC8qCj4+ICvCoMKg wqDCoCAqIElmIHRoZSB0YXJnZXQgZGV2aWNlIGlzIG9uLCBzZXR0aW5nIHRoZSBTUkFNIHZvbHRh Z2UgZGlyZWN0bHkKPj4gK8KgwqDCoMKgICogaXMgbm90IHN1cHBvcnRlZCBhcyBpdCBzY2FsZXMg dGhyb3VnaCBpdHMgY291cGxlZCBzdXBwbHkgdm9sdGFnZS4KPj4gK8KgwqDCoMKgICoKPj4gK8Kg wqDCoMKgICogQW4gZXhjZXB0aW9uIGlzIG1hZGUgaW4gY2FzZSB0aGUgdXNlX2NvdW50IGlzIHpl cm86IHRoaXMgbWVhbnMKPj4gK8KgwqDCoMKgICogdGhhdCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1l IHdlIHBvd2VyIHVwIHRoZSBTUkFNIHJlZ3VsYXRvciwgd2hpY2gKPj4gK8KgwqDCoMKgICogaW1w bGllcyB0aGF0IHRoZSB0YXJnZXQgZGV2aWNlIGhhcyB5ZXQgdG8gcGVyZm9ybSBpbml0aWFsaXph dGlvbgo+PiArwqDCoMKgwqAgKiBhbmQgc2V0dGluZyBhIHZvbHRhZ2UgYXQgdGhhdCB0aW1lIGlz IGhhcm1sZXNzLgo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCBpZiAocmRldiA9PSBtcmMtPnZz cmFtX3JkZXYpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChyZGV2LT51c2VfY291bnQgPT0gMCkK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJlZ3VsYXRvcl9kb19iYWxhbmNlX3Zv bHRhZ2UocmRldiwgc3RhdGUsIHRydWUpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4g LUVQRVJNOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIHJldCA9IHJlZ3VsYXRvcl9jaGVj a19jb25zdW1lcnMocmRldiwgJm1pbl91ViwgJm1heF91Viwgc3RhdGUpOwo+PiArwqDCoMKgIGlm IChyZXQgPCAwKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gKwo+PiArwqDCoMKg IGlmIChtaW5fdVYgPT0gMCkgewo+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gcmVndWxhdG9yX2dl dF92b2x0YWdlX3JkZXYocmRldik7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gK8KgwqDCoMKgwqDCoMKgIG1p bl91ViA9IHJldDsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCByZXQgPSByZWd1bGF0b3Jf Y2hlY2tfdm9sdGFnZShyZGV2LCAmbWluX3VWLCAmbWF4X3VWKTsKPj4gK8KgwqDCoCBpZiAocmV0 IDwgMCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICsKPj4gK8KgwqDCoCAvKgo+ PiArwqDCoMKgwqAgKiBJZiB3ZSdyZSBhc2tlZCB0byBzZXQgYSB2b2x0YWdlIGxlc3MgdGhhbiBW U1JBTSBtaW5fdVYsIHNldAo+PiArwqDCoMKgwqAgKiB0aGUgbWluaW11bSBhbGxvd2VkIHZvbHRh Z2Ugb24gVlNSQU0sIGFzIGluIHRoaXMgY2FzZSBpdCBpcwo+PiArwqDCoMKgwqAgKiBzYWZlIHRv IGlnbm9yZSB0aGUgbWF4X3NwcmVhZCBwYXJhbWV0ZXIuCj4+ICvCoMKgwqDCoCAqLwo+PiArwqDC oMKgIHZzcmFtX3RhcmdldF9taW5fdVYgPSBtYXgodnNyYW1fbWluX3VWLCBtaW5fdVYgKyBtYXhf c3ByZWFkKTsKPj4gK8KgwqDCoCB2c3JhbV90YXJnZXRfbWF4X3VWID0gbWluKHZzcmFtX21heF91 ViwgdnNyYW1fdGFyZ2V0X21pbl91ViArIG1heF9zcHJlYWQpOwo+PiArCj4+ICvCoMKgwqAgLyog TWFrZSBzdXJlIHdlJ3JlIG5vdCBvdXQgb2YgcmFuZ2UgKi8KPj4gK8KgwqDCoCB2c3JhbV90YXJn ZXRfbWluX3VWID0gbWluKHZzcmFtX3RhcmdldF9taW5fdVYsIHZzcmFtX21heF91Vik7Cj4+ICsK Pj4gK8KgwqDCoCBwcl9kZWJ1ZygiU2V0dGluZyB2b2x0YWdlICVkLSVkdVYgb24gJXMgKG1pbnVW ICVkKVxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqAgdnNyYW1fdGFyZ2V0X21pbl91ViwgdnNyYW1f dGFyZ2V0X21heF91ViwKPj4gK8KgwqDCoMKgwqDCoMKgwqAgcmRldl9nZXRfbmFtZShtcmMtPnZz cmFtX3JkZXYpLCBtaW5fdVYpOwo+PiArCj4+ICvCoMKgwqAgcmV0ID0gcmVndWxhdG9yX3NldF92 b2x0YWdlX3JkZXYobXJjLT52c3JhbV9yZGV2LCB2c3JhbV90YXJnZXRfbWluX3VWLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2c3JhbV90YXJnZXRfbWF4X3VW LCBzdGF0ZSk7Cj4+ICvCoMKgwqAgaWYgKHJldCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBy ZXQ7Cj4+ICsKPj4gK8KgwqDCoCAvKiBUaGUgc3JhbSB2b2x0YWdlIGlzIG5vdyBiYWxhbmNlZDog dXBkYXRlIHRoZSB0YXJnZXQgdnJlZyB2b2x0YWdlICovCj4+ICvCoMKgwqAgcmV0dXJuIHJlZ3Vs YXRvcl9kb19iYWxhbmNlX3ZvbHRhZ2UocmRldiwgc3RhdGUsIHRydWUpOwo+PiArfQo+PiArCj4+ ICtzdGF0aWMgaW50IG1lZGlhdGVrX3JlZ3VsYXRvcl9hdHRhY2goc3RydWN0IHJlZ3VsYXRvcl9j b3VwbGVyICpjb3VwbGVyLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgcmVndWxhdG9yX2RldiAqcmRldikKPj4gK3sKPj4gK8KgwqDCoCBzdHJ1Y3Qg bWVkaWF0ZWtfcmVndWxhdG9yX2NvdXBsZXIgKm1yYyA9IHRvX21lZGlhdGVrX2NvdXBsZXIoY291 cGxlcik7Cj4+ICvCoMKgwqAgY29uc3QgY2hhciAqcmRldl9uYW1lID0gcmRldl9nZXRfbmFtZShy ZGV2KTsKPj4gKwo+PiArwqDCoMKgIC8qCj4+ICvCoMKgwqDCoCAqIElmIHdlJ3JlIGdldHRpbmcg YSBjb3VwbGluZyBvZiBtb3JlIHRoYW4gdHdvIHJlZ3VsYXRvcnMgaGVyZSBhbmQKPj4gK8KgwqDC oMKgICogdGhpcyBtZWFucyB0aGF0IHRoaXMgaXMgc3VyZWx5IG5vdCBhIEdQVTwtPlNSQU0gY291 cGxlOiBpbiB0aGF0Cj4+ICvCoMKgwqDCoCAqIGNhc2UsIHdlIG1heSB3YW50IHRvIHVzZSBhbm90 aGVyIGNvdXBsZXIgaW1wbGVtZW50YXRpb24sIGlmIGFueSwKPj4gK8KgwqDCoMKgICogb3IgdGhl IGdlbmVyaWMgb25lOiB0aGUgcmVndWxhdG9yIGNvcmUgd2lsbCBrZWVwIHdhbGtpbmcgdGhyb3Vn aAo+PiArwqDCoMKgwqAgKiB0aGUgbGlzdCBvZiBjb3VwbGVycyB3aGVuIGFueSAuYXR0YWNoX3Jl Z3VsYXRvcigpIGNiIHJldHVybnMgMS4KPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgaWYgKHJk ZXYtPmNvdXBsaW5nX2Rlc2Mubl9jb3VwbGVkID4gMikKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy biAxOwo+PiArCj4+ICvCoMKgwqAgaWYgKHN0cnN0cihyZGV2X25hbWUsICJzcmFtIikpIHsKPiAK PiBNeSB1bmRlcnN0YW5kaW5nIGlzLCB0aGF0IHdlIGhhdmUgdG8gaGF2ZSBlaXRoZXIgYSBEVCBu b2RlIHdpdGggcmVndWxhdG9yLW5hbWUgPSAKPiAic3JhbSIgcHJvcGVydHkgdG8gcG9sbHV0ZSBy ZGV2LT5jb25zdHJhaW50cy0+bmFtZSBvciBzb21lIHJlZ3VsYXRvcl9kZXNjLT5uYW1lIAo+IHBv cHVsYXRlZCBpbiB0aGUgZHJpdmVycy9yZWd1bGF0b3IvbXQqLmMKPiAKCk5vLCBpdCdzIG5vdCB0 cnlpbmcgdG8gZmluZCBhIHJlZ3VsYXRvciBuYW1lZCAic3JhbSIsIGJ1dCBhbnkgcmVndWxhdG9y IHRoYXQKKmNvbnRhaW5zKiB0aGUgInNyYW0iIHN0cmluZyBpbiBpdHMgbmFtZSwgYnV0IGNoZWNr cyBvbmx5IHJlZ3VsYXRvcnMgdGhhdCBhcmUKY291cGxlZCB0byBvdGhlcnMuIFRoaXMgaXMgdGhl IHNhbWUgZm9yIHRoZSAiVmdwdSIgLyAidmdwdSIuCgpFeGFtcGxlOgoKUmVndWxhdG9yIEEsIGNv dXBsZWQgdG8gUmVndWxhdG9yIEIuCgpSZWd1bGF0b3IgQSBuYW1lID0gIlZncHUiIG9yICJ2Z3B1 Iiwgb3IgKnZncHUqLCBvciAqVmdwdSoKICAgICAgICAgICAgICAgICAgICAobmFtZSBtdXN0IGNv bnRhaW4gZWl0aGVyIFZncHUgb3IgdmdwdSkKClJlZ3VsYXRvciBCIG5hbWUgPSAidnNyYW0iIG9y ICJzcmFtX2dwdSIgb3IgKnNyYW0qCiAgICAgICAgICAgICAgICAgICAgKG5hbWUgbXVzdCBjb250 YWluICJzcmFtIikuCgptcmMtPnZzcmFtX3JkZXYgPSByZGV2CgpyZGV2ID09IG91ciBSZWd1bGF0 b3IgQi4KCldlIGhlbmNlIHJldHVybiAwIHRvIHRoZSBjb3VwbGluZyBBUEk6IHRoaXMgd2lsbCBw cm9kdWNlIHRoZSBlZmZlY3Qgb2YgbWFraW5nCml0IHVzZSB0aGlzIGRyaXZlcidzIC5iYWxhbmNl X3ZvbHRhZ2UoKSBjYWxsYmFjayBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIG9uZQpvbiB2Z3B1PC0+ dnNyYW0uCgoKPiBJIHdhc24ndCBhYmxlIHRvIGZpbmQgZWl0aGVyIG9mIHRoaXMsIHNvIEkgd29u ZGVyIGhvdyB0aGlzIGlzIHN1cHBvc2VkIHRvIHdvcmsuIAo+IFBsZWFzZSBwcm92aWRlIHBvaW50 ZXJzIHRvIGEgd29ya2luZyBhbmQgY29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcywgc28g dGhhdCAKPiBJJ20gYWJsZSB0byBqdWRnZSB3aGF0IGlzIGdvaW5nIG9uIGFuZCBpZiB0aGUgYXBw cm9hY2ggaXMgdGhlIGNvcnJlY3Qgb25lLgo+IAo+IEkgdHJpZWQgdG8gZmlndXJlIG91dCB1c2lu ZyBtdDgxOTUtdHJhY2tpbmctbWFzdGVyLXJvbGxpbmcKClRoYXQncyB0aGUgcmlnaHQgYnJhbmNo LgoKTGV0J3MgdGFrZSBNVDgxOTIgQXN1cmFkYSBhcyBhbiBleGFtcGxlIG9mIGhvdyB0aGlzIHdv cmtzLi4uLgoKYG10NjM1OV92c3JhbV9vdGhlcnNfbGRvX3JlZ8K0IGlzIHRoZSBTUkFNIHJlZ3Vs YXRvciBmb3IgdGhlIEdQVToKaHR0cHM6Ly9naXRsYWIuY29sbGFib3JhLmNvbS9nb29nbGUvY2hy b21lb3Mta2VybmVsLy0vYmxvYi9tdDgxOTUtdHJhY2tpbmctbWFzdGVyLXJvbGxpbmcvYXJjaC9h cm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxOTItYXN1cmFkYS5kdHNpI0w1NTEKCmBtdDYzNTlf dnNyYW1fb3RoZXJzX2xkb19yZWdgIHJlZ3VsYXRvci1uYW1lID0gInZzcmFtX290aGVycyI7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXgpDb250 YWlucyAic3JhbSIsIGFuZCB0aGlzIHJlZ3VsYXRvciBpcyBhbHNvCgoJcmVndWxhdG9yLWNvdXBs ZWQtd2l0aCA9IDwmbXQ2MzE1XzdfdmJ1Y2sxPjsKCmBtdDYzMTVfN192YnVjazFgIHJlZ3VsYXRv ci1uYW1lID0gIlZncHUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5e XgpDb250YWlucyAiVmdwdSIsIGFuZCB0aGlzIHJlZ3VsYXRvciBpcyBhbHNvCgoJcmVndWxhdG9y LWNvdXBsZWQtd2l0aCA9IDwmbXQ2MzU5X3ZzcmFtX290aGVyc19sZG9fcmVnPjsKClRoYXQncyBo b3cgdGhlIGNvdXBsaW5nIHdvcmtzIGluIHRoaXMgY2FzZS4KCgpOb3csIGxvb2tpbmcgYXQgY2Fz ZSBleGNsdXNpb25zOgpJbiBNVDgxOTIgQXN1cmFkYSAob3IsIGFjdHVhbGx5LCBtdDYzNTkuZHRz aSkgd2UgaGF2ZSBvdGhlciByZWd1bGF0b3JzIHRoYXQgZG8KYWN0dWFsbHkgY29udGFpbiAic3Jh bSIgaW4gdGhlaXIgbmFtZSwgbGlrZSAidnNyYW1fcHJvYzEiIGFuZCAidnNyYW1fb3RoZXJzX3Nz aHViIi4KClRoZXNlIHJlZ3VsYXRvcnMgd2lsbCBiZSBpZ25vcmVkLCBhcyB0aGV5IGFyZSAqbm90 KiBjb3VwbGVkIHdpdGggVmdwdS4KCgpXaGF0IHRoaXMgZHJpdmVyIGN1cnJlbnRseSBkb2VzIGlu IHRoaXMgcmVnYXJkIGlzOgoxLiBSZWd1bGF0b3IgYXR0YWNoIGlzIGNhbGxlZCBvbmx5IG9uICpj b3VwbGVkKiByZWd1bGF0b3JzLCBub3Qgb24gdGhlIG90aGVycwoyLiBJZiB0aGUgcmVndWxhdG9y IGNvbnRhaW5zIG5hbWUgInZncHUiIG9yICJWZ3B1IiBvciAic3JhbSIgd2UncmUgZ29vZCwKICAg IG90aGVyd2lzZSB3ZSBkb24ndCBhdHRhY2ggdGhlIGJhbGFuY2Vfdm9sdGFnZSBsb2dpYyBvZiB0 aGlzIGRyaXZlciB0bwogICAgdGhlIHVubWF0Y2hlZCByZWd1bGF0b3JzLgoKCkRvZXMgdGhpcyBl eHBsYW5hdGlvbiBjbGFyaWZ5IHlvdXIgZG91YnRzPwoKUmVnYXJkcywKQW5nZWxvCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=