Received: by 10.213.65.68 with SMTP id h4csp3323805imn; Tue, 3 Apr 2018 02:55:26 -0700 (PDT) X-Google-Smtp-Source: AIpwx491FAvzbbo+eOwWNL3dSW/dEj73zvQYWABTLqJ8ojxH4Tk+HxRkKVF14tIv7t0gBGnH2bbg X-Received: by 10.98.60.146 with SMTP id b18mr10143097pfk.36.1522749326212; Tue, 03 Apr 2018 02:55:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522749326; cv=none; d=google.com; s=arc-20160816; b=f2elhe+kcHIP7Voy4/o3FnPQaTleeAQkN+upsrlcRU0Jl1hMJKb3LqBOfHLgzQJofS Eset7XG1dbhfK3SarEbl2Vfc2J5yrAp7jjdA5FY69ZuwUdWg2qD93rXE4Fr5e7wUGRUK Q41Ut5vvuDC7gjgGQb815JZg7SB1+9/DI4fdnKMKNLmRFgsQRqHseOffsobQQsMYT7d1 pXYcLcKb3amSM3gMEvVHIp+NB81T+3mOVDSNTIwCWPJUOMbL64VMBFmbKI0a4lFZy6eN TDHcOUxT1idNYxkInVYUcjLZKCTQNZpitn3oOS0e83g8JHyLuakFpUJxmqqYboOyixvj o2lA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:arc-authentication-results; bh=3/oypJKqXKiXkdP3nUwz9vIPSK7G8MNjM7vLScc79WY=; b=uhj91BrXqB+ObSIqSgp954ubGhPEiiTfuBEZ4xk/RECoCw45UFmQiI2gcfhC4NFjDN aan3RvvzPYNteyBTYu7guW/DLH+2VnNK2BYhoa8PvzGjvC0Z5uISJXuod3bB0LHW/bj7 RaaBNLRB5Erkt3/Zl1vj/Fv+TR8PRhuChguC3Rj/C9+ccL+Z8+lrrpJpX9EnQAvh4lHo 08/35hjP5BJM3I3mgctp9FCHNxsTEcfa6Drucvw8DhcbOKKLSXqQsmPmAULrEMiiZw9k u5GImpigdo7zj2GFK+c02SVJRPpGW0Dm2IP+J2VbpYtjGvhIJZRzRoh9QMi3v4mV38jh f/Sw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c66si1754723pga.494.2018.04.03.02.55.12; Tue, 03 Apr 2018 02:55:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755134AbeDCJyA (ORCPT + 99 others); Tue, 3 Apr 2018 05:54:00 -0400 Received: from mx07-00178001.pphosted.com ([62.209.51.94]:12139 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754794AbeDCJx6 (ORCPT ); Tue, 3 Apr 2018 05:53:58 -0400 Received: from pps.filterd (m0046668.ppops.net [127.0.0.1]) by mx07-.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id w339n9Pg007867; Tue, 3 Apr 2018 11:53:32 +0200 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 2h1ysx4wg1-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Tue, 03 Apr 2018 11:53:32 +0200 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id D8D3E34; Tue, 3 Apr 2018 09:53:31 +0000 (GMT) Received: from Webmail-eu.st.com (sfhdag6node2.st.com [10.75.127.17]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 9C74C23F0; Tue, 3 Apr 2018 09:53:31 +0000 (GMT) Received: from SFHDAG5NODE3.st.com (10.75.127.15) by SFHDAG6NODE2.st.com (10.75.127.17) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Tue, 3 Apr 2018 11:53:30 +0200 Received: from SFHDAG5NODE3.st.com ([fe80::7c09:5d6b:d2c7:5f47]) by SFHDAG5NODE3.st.com ([fe80::7c09:5d6b:d2c7:5f47%20]) with mapi id 15.00.1347.000; Tue, 3 Apr 2018 11:53:31 +0200 From: Fabien DESSENNE To: Jassi Brar , "linux-kernel@vger.kernel.org" CC: Rob Herring , Mark Rutland , Maxime Coquelin , Alexandre TORGUE , Ludovic BARRE , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , Benjamin Gaignard , Loic PALLARDY , "Arnaud POULIQUEN" Subject: Re: [v2,2/2] mailbox: add STMicroelectronics STM32 IPCC driver Thread-Topic: [v2,2/2] mailbox: add STMicroelectronics STM32 IPCC driver Thread-Index: AQHTyzGfsSk8DihvuEOADszhWzlubA== Date: Tue, 3 Apr 2018 09:53:30 +0000 Message-ID: <84a60ff3-3ae8-fe33-4f7d-532c998112fd@st.com> References: <1520852307-26659-3-git-send-email-fabien.dessenne@st.com> In-Reply-To: <1520852307-26659-3-git-send-email-fabien.dessenne@st.com> Accept-Language: fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.75.127.44] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-04-03_04:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SnVzdCBhIGdlbnRsZSBwaW5nIC4uLiBvciBoYXZlIEkgbWlzc2VkIG91dCBvbiBhIHJlcGx5Pw0K DQoNCk9uIDEyLzAzLzE4IDExOjU4LCBGYWJpZW4gREVTU0VOTkUgd3JvdGU6DQo+IFRoZSBTVE1p Y3JvZWxlY3Ryb25pY3MgU1RNMzIgSW50ZXItUHJvY2Vzc29yIENvbW11bmljYXRpb24gQ29udHJv bGxlcg0KPiAoSVBDQykgaXMgdXNlZCBmb3IgY29tbXVuaWNhdGluZyBkYXRhIGJldHdlZW4gdHdv IHByb2Nlc3NvcnMuDQo+IEl0IHByb3ZpZGVzIGEgbm9uIGJsb2NraW5nIHNpZ25hbGluZyBtZWNo YW5pc20gdG8gcG9zdCBhbmQgcmV0cmlldmUNCj4gY29tbXVuaWNhdGlvbiBkYXRhIGluIGFuIGF0 b21pYyB3YXkuDQo+DQo+IFNpZ25lZC1vZmYtYnk6IEZhYmllbiBEZXNzZW5uZSA8ZmFiaWVuLmRl c3Nlbm5lQHN0LmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogTHVkb3ZpYyBCYXJyZSA8bHVkb3ZpYy5i YXJyZUBzdC5jb20+DQo+IC0tLQ0KPiAgIGRyaXZlcnMvbWFpbGJveC9LY29uZmlnICAgICAgfCAg IDggKw0KPiAgIGRyaXZlcnMvbWFpbGJveC9NYWtlZmlsZSAgICAgfCAgIDIgKw0KPiAgIGRyaXZl cnMvbWFpbGJveC9zdG0zMi1pcGNjLmMgfCA0MDMgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKw0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgNDEzIGluc2VydGlvbnMoKykN Cj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tYWlsYm94L3N0bTMyLWlwY2MuYw0KPg0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tYWlsYm94L0tjb25maWcgYi9kcml2ZXJzL21haWxib3gv S2NvbmZpZw0KPiBpbmRleCBiYTJmMTUyLi5kNzU4MWYwIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJz L21haWxib3gvS2NvbmZpZw0KPiArKysgYi9kcml2ZXJzL21haWxib3gvS2NvbmZpZw0KPiBAQCAt MTcxLDQgKzE3MSwxMiBAQCBjb25maWcgQkNNX0ZMRVhSTV9NQk9YDQo+ICAgCSAgTWFpbGJveCBp bXBsZW1lbnRhdGlvbiBvZiB0aGUgQnJvYWRjb20gRmxleFJNIHJpbmcgbWFuYWdlciwNCj4gICAJ ICB3aGljaCBwcm92aWRlcyBhY2Nlc3MgdG8gdmFyaW91cyBvZmZsb2FkIGVuZ2luZXMgb24gQnJv YWRjb20NCj4gICAJICBTb0NzLiBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgQnJv YWRjb20gRmxleFJNLg0KPiArDQo+ICtjb25maWcgU1RNMzJfSVBDQw0KPiArCXRyaXN0YXRlICJT VE0zMiBJUENDIE1haWxib3giDQo+ICsJZGVwZW5kcyBvbiBNQUNIX1NUTTMyTVAxNTcNCj4gKwlo ZWxwDQo+ICsJICBNYWlsYm94IGltcGxlbWVudGF0aW9uIGZvciBTVE1pY3JvZWxlY3RvbmljcyBT VE0zMiBmYW1pbHkgY2hpcHMNCj4gKwkgIHdpdGggaGFyZHdhcmUgZm9yIEludGVyLVByb2Nlc3Nv ciBDb21tdW5pY2F0aW9uIENvbnRyb2xsZXIgKElQQ0MpDQo+ICsJICBiZXR3ZWVuIHByb2Nlc3Nv cnMuIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gaGF2ZSB0aGlzIHN1cHBvcnQuDQo+ICAgZW5k aWYNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWFpbGJveC9NYWtlZmlsZSBiL2RyaXZlcnMvbWFp bGJveC9NYWtlZmlsZQ0KPiBpbmRleCA0ODk2ZjhkLi43ZWE5NjU0IDEwMDY0NA0KPiAtLS0gYS9k cml2ZXJzL21haWxib3gvTWFrZWZpbGUNCj4gKysrIGIvZHJpdmVycy9tYWlsYm94L01ha2VmaWxl DQo+IEBAIC0zNiwzICszNiw1IEBAIG9iai0kKENPTkZJR19CQ01fRkxFWFJNX01CT1gpCSs9IGJj bS1mbGV4cm0tbWFpbGJveC5vDQo+ICAgb2JqLSQoQ09ORklHX1FDT01fQVBDU19JUEMpCSs9IHFj b20tYXBjcy1pcGMtbWFpbGJveC5vDQo+ICAgDQo+ICAgb2JqLSQoQ09ORklHX1RFR1JBX0hTUF9N Qk9YKQkrPSB0ZWdyYS1oc3Aubw0KPiArDQo+ICtvYmotJChDT05GSUdfU1RNMzJfSVBDQykgCSs9 IHN0bTMyLWlwY2Mubw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tYWlsYm94L3N0bTMyLWlwY2Mu YyBiL2RyaXZlcnMvbWFpbGJveC9zdG0zMi1pcGNjLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMC4uZmEzY2M1OQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZl cnMvbWFpbGJveC9zdG0zMi1pcGNjLmMNCj4gQEAgLTAsMCArMSw0MDMgQEANCj4gKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ICsvKg0KPiArICogQ29weXJpZ2h0IChDKSBT VE1pY3JvZWxlY3Ryb25pY3MgMjAxOCAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQNCj4gKyAqIEF1dGhv cnM6IEx1ZG92aWMgQmFycmUgPGx1ZG92aWMuYmFycmVAc3QuY29tPiBmb3IgU1RNaWNyb2VsZWN0 cm9uaWNzLg0KPiArICogICAgICAgICAgRmFiaWVuIERlc3Nlbm5lIDxmYWJpZW4uZGVzc2VubmVA c3QuY29tPiBmb3IgU1RNaWNyb2VsZWN0cm9uaWNzLg0KPiArICovDQo+ICsNCj4gKyNpbmNsdWRl IDxsaW51eC9iaXRmaWVsZC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KPiArI2luY2x1 ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L21haWxib3hfY29udHJv bGxlci5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L29mX2lycS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiArI2lu Y2x1ZGUgPGxpbnV4L3BtX3dha2VpcnEuaD4NCj4gKw0KPiArI2RlZmluZSBJUENDX1hDUgkJMHgw MDANCj4gKyNkZWZpbmUgWENSX1JYT0lFCQlCSVQoMCkNCj4gKyNkZWZpbmUgWENSX1RYT0lFCQlC SVQoMTYpDQo+ICsNCj4gKyNkZWZpbmUgSVBDQ19YTVIJCTB4MDA0DQo+ICsjZGVmaW5lIElQQ0Nf WFNDUgkJMHgwMDgNCj4gKyNkZWZpbmUgSVBDQ19YVE9ZU1IJCTB4MDBjDQo+ICsNCj4gKyNkZWZp bmUgSVBDQ19QUk9DX09GRlNUCQkweDAxMA0KPiArDQo+ICsjZGVmaW5lIElQQ0NfSFdDRkdSCQkw eDNmMA0KPiArI2RlZmluZSBJUENGR1JfQ0hBTl9NQVNLCUdFTk1BU0soNywgMCkNCj4gKw0KPiAr I2RlZmluZSBJUENDX1ZFUgkJMHgzZjQNCj4gKyNkZWZpbmUgVkVSX01JTlJFVl9NQVNLCQlHRU5N QVNLKDMsIDApDQo+ICsjZGVmaW5lIFZFUl9NQUpSRVZfTUFTSwkJR0VOTUFTSyg3LCA0KQ0KPiAr DQo+ICsjZGVmaW5lIFJYX0JJVF9NQVNLCQlHRU5NQVNLKDE1LCAwKQ0KPiArI2RlZmluZSBSWF9C SVRfQ0hBTihjaGFuKQlCSVQoY2hhbikNCj4gKyNkZWZpbmUgVFhfQklUX1NISUZUCQkxNg0KPiAr I2RlZmluZSBUWF9CSVRfTUFTSwkJR0VOTUFTSygzMSwgMTYpDQo+ICsjZGVmaW5lIFRYX0JJVF9D SEFOKGNoYW4pCUJJVChUWF9CSVRfU0hJRlQgKyAoY2hhbikpDQo+ICsNCj4gKyNkZWZpbmUgU1RN MzJfTUFYX1BST0NTCQkyDQo+ICsNCj4gK2VudW0gew0KPiArCUlQQ0NfSVJRX1JYLA0KPiArCUlQ Q0NfSVJRX1RYLA0KPiArCUlQQ0NfSVJRX05VTSwNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBzdG0z Ml9pcGNjIHsNCj4gKwlzdHJ1Y3QgbWJveF9jb250cm9sbGVyIGNvbnRyb2xsZXI7DQo+ICsJdm9p ZCBfX2lvbWVtICpyZWdfYmFzZTsNCj4gKwl2b2lkIF9faW9tZW0gKnJlZ19wcm9jOw0KPiArCXN0 cnVjdCBjbGsgKmNsazsNCj4gKwlpbnQgaXJxc1tJUENDX0lSUV9OVU1dOw0KPiArCWludCB3a3A7 DQo+ICsJdTMyIHByb2NfaWQ7DQo+ICsJdTMyIG5fY2hhbnM7DQo+ICsJdTMyIHhjcjsNCj4gKwl1 MzIgeG1yOw0KPiArfTsNCj4gKw0KPiArc3RhdGljIGlubGluZSB2b2lkIHN0bTMyX2lwY2Nfc2V0 X2JpdHModm9pZCBfX2lvbWVtICpyZWcsIHUzMiBtYXNrKQ0KPiArew0KPiArCXdyaXRlbF9yZWxh eGVkKHJlYWRsX3JlbGF4ZWQocmVnKSB8IG1hc2ssIHJlZyk7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyBpbmxpbmUgdm9pZCBzdG0zMl9pcGNjX2Nscl9iaXRzKHZvaWQgX19pb21lbSAqcmVnLCB1MzIg bWFzaykNCj4gK3sNCj4gKwl3cml0ZWxfcmVsYXhlZChyZWFkbF9yZWxheGVkKHJlZykgJiB+bWFz aywgcmVnKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlycXJldHVybl90IHN0bTMyX2lwY2Nfcnhf aXJxKGludCBpcnEsIHZvaWQgKmRhdGEpDQo+ICt7DQo+ICsJc3RydWN0IHN0bTMyX2lwY2MgKmlw Y2MgPSBkYXRhOw0KPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGlwY2MtPmNvbnRyb2xsZXIuZGV2 Ow0KPiArCXUzMiBzdGF0dXMsIG1yLCB0b3NyLCBjaGFuOw0KPiArCWlycXJldHVybl90IHJldCA9 IElSUV9OT05FOw0KPiArCWludCBwcm9jX29mZnNldDsNCj4gKw0KPiArCS8qIHJlYWQgJ2NoYW5u ZWwgb2NjdXBpZWQnIHN0YXR1cyBmcm9tIG90aGVyIHByb2MgKi8NCj4gKwlwcm9jX29mZnNldCA9 IGlwY2MtPnByb2NfaWQgPyAtSVBDQ19QUk9DX09GRlNUIDogSVBDQ19QUk9DX09GRlNUOw0KPiAr CXRvc3IgPSByZWFkbF9yZWxheGVkKGlwY2MtPnJlZ19wcm9jICsgcHJvY19vZmZzZXQgKyBJUEND X1hUT1lTUik7DQo+ICsJbXIgPSByZWFkbF9yZWxheGVkKGlwY2MtPnJlZ19wcm9jICsgSVBDQ19Y TVIpOw0KPiArDQo+ICsJLyogc2VhcmNoIGZvciB1bm1hc2tlZCAnY2hhbm5lbCBvY2N1cGllZCcg Ki8NCj4gKwlzdGF0dXMgPSB0b3NyICYgRklFTERfR0VUKFJYX0JJVF9NQVNLLCB+bXIpOw0KPiAr DQo+ICsJZm9yIChjaGFuID0gMDsgY2hhbiA8IGlwY2MtPm5fY2hhbnM7IGNoYW4rKykgew0KPiAr CQlpZiAoIShzdGF0dXMgJiAoMSA8PCBjaGFuKSkpDQo+ICsJCQljb250aW51ZTsNCj4gKw0KPiAr CQlkZXZfZGJnKGRldiwgIiVzOiBjaGFuOiVkIHJ4XG4iLCBfX2Z1bmNfXywgY2hhbik7DQo+ICsN Cj4gKwkJbWJveF9jaGFuX3JlY2VpdmVkX2RhdGEoJmlwY2MtPmNvbnRyb2xsZXIuY2hhbnNbY2hh bl0sIE5VTEwpOw0KPiArDQo+ICsJCXN0bTMyX2lwY2Nfc2V0X2JpdHMoaXBjYy0+cmVnX3Byb2Mg KyBJUENDX1hTQ1IsDQo+ICsJCQkJICAgIFJYX0JJVF9DSEFOKGNoYW4pKTsNCj4gKw0KPiArCQly ZXQgPSBJUlFfSEFORExFRDsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaXJxcmV0dXJuX3Qgc3RtMzJfaXBjY190eF9pcnEoaW50IGlycSwgdm9pZCAq ZGF0YSkNCj4gK3sNCj4gKwlzdHJ1Y3Qgc3RtMzJfaXBjYyAqaXBjYyA9IGRhdGE7DQo+ICsJc3Ry dWN0IGRldmljZSAqZGV2ID0gaXBjYy0+Y29udHJvbGxlci5kZXY7DQo+ICsJdTMyIHN0YXR1cywg bXIsIHRvc3IsIGNoYW47DQo+ICsJaXJxcmV0dXJuX3QgcmV0ID0gSVJRX05PTkU7DQo+ICsNCj4g Kwl0b3NyID0gcmVhZGxfcmVsYXhlZChpcGNjLT5yZWdfcHJvYyArIElQQ0NfWFRPWVNSKTsNCj4g KwltciA9IHJlYWRsX3JlbGF4ZWQoaXBjYy0+cmVnX3Byb2MgKyBJUENDX1hNUik7DQo+ICsNCj4g KwkvKiBzZWFyY2ggZm9yIHVubWFza2VkICdjaGFubmVsIGZyZWUnICovDQo+ICsJc3RhdHVzID0g fnRvc3IgJiBGSUVMRF9HRVQoVFhfQklUX01BU0ssIH5tcik7DQo+ICsNCj4gKwlmb3IgKGNoYW4g PSAwOyBjaGFuIDwgaXBjYy0+bl9jaGFucyA7IGNoYW4rKykgew0KPiArCQlpZiAoIShzdGF0dXMg JiAoMSA8PCBjaGFuKSkpDQo+ICsJCQljb250aW51ZTsNCj4gKw0KPiArCQlkZXZfZGJnKGRldiwg IiVzOiBjaGFuOiVkIHR4XG4iLCBfX2Z1bmNfXywgY2hhbik7DQo+ICsNCj4gKwkJLyogbWFzayAn dHggY2hhbm5lbCBmcmVlJyBpbnRlcnJ1cHQgKi8NCj4gKwkJc3RtMzJfaXBjY19zZXRfYml0cyhp cGNjLT5yZWdfcHJvYyArIElQQ0NfWE1SLA0KPiArCQkJCSAgICBUWF9CSVRfQ0hBTihjaGFuKSk7 DQo+ICsNCj4gKwkJbWJveF9jaGFuX3R4ZG9uZSgmaXBjYy0+Y29udHJvbGxlci5jaGFuc1tjaGFu XSwgMCk7DQo+ICsNCj4gKwkJcmV0ID0gSVJRX0hBTkRMRUQ7DQo+ICsJfQ0KPiArDQo+ICsJcmV0 dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBzdG0zMl9pcGNjX3NlbmRfZGF0YShz dHJ1Y3QgbWJveF9jaGFuICpsaW5rLCB2b2lkICpkYXRhKQ0KPiArew0KPiArCXVuc2lnbmVkIGlu dCBjaGFuID0gKHVuc2lnbmVkIGludClsaW5rLT5jb25fcHJpdjsNCj4gKwlzdHJ1Y3Qgc3RtMzJf aXBjYyAqaXBjYyA9IGNvbnRhaW5lcl9vZihsaW5rLT5tYm94LCBzdHJ1Y3Qgc3RtMzJfaXBjYywN Cj4gKwkJCQkJICAgICAgIGNvbnRyb2xsZXIpOw0KPiArDQo+ICsJZGV2X2RiZyhpcGNjLT5jb250 cm9sbGVyLmRldiwgIiVzOiBjaGFuOiVkXG4iLCBfX2Z1bmNfXywgY2hhbik7DQo+ICsNCj4gKwkv KiBzZXQgY2hhbm5lbCBuIG9jY3VwaWVkICovDQo+ICsJc3RtMzJfaXBjY19zZXRfYml0cyhpcGNj LT5yZWdfcHJvYyArIElQQ0NfWFNDUiwgVFhfQklUX0NIQU4oY2hhbikpOw0KPiArDQo+ICsJLyog dW5tYXNrICd0eCBjaGFubmVsIGZyZWUnIGludGVycnVwdCAqLw0KPiArCXN0bTMyX2lwY2NfY2xy X2JpdHMoaXBjYy0+cmVnX3Byb2MgKyBJUENDX1hNUiwgVFhfQklUX0NIQU4oY2hhbikpOw0KPiAr DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgc3RtMzJfaXBjY19zdGFy dHVwKHN0cnVjdCBtYm94X2NoYW4gKmxpbmspDQo+ICt7DQo+ICsJdW5zaWduZWQgaW50IGNoYW4g PSAodW5zaWduZWQgaW50KWxpbmstPmNvbl9wcml2Ow0KPiArCXN0cnVjdCBzdG0zMl9pcGNjICpp cGNjID0gY29udGFpbmVyX29mKGxpbmstPm1ib3gsIHN0cnVjdCBzdG0zMl9pcGNjLA0KPiArCQkJ CQkgICAgICAgY29udHJvbGxlcik7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCXJldCA9IGNsa19w cmVwYXJlX2VuYWJsZShpcGNjLT5jbGspOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJZGV2X2Vycihp cGNjLT5jb250cm9sbGVyLmRldiwgImNhbiBub3QgZW5hYmxlIHRoZSBjbG9ja1xuIik7DQo+ICsJ CXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJLyogdW5tYXNrICdyeCBjaGFubmVsIG9jY3Vw aWVkJyBpbnRlcnJ1cHQgKi8NCj4gKwlzdG0zMl9pcGNjX2Nscl9iaXRzKGlwY2MtPnJlZ19wcm9j ICsgSVBDQ19YTVIsIFJYX0JJVF9DSEFOKGNoYW4pKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBzdG0zMl9pcGNjX3NodXRkb3duKHN0cnVjdCBtYm94X2No YW4gKmxpbmspDQo+ICt7DQo+ICsJdW5zaWduZWQgaW50IGNoYW4gPSAodW5zaWduZWQgaW50KWxp bmstPmNvbl9wcml2Ow0KPiArCXN0cnVjdCBzdG0zMl9pcGNjICppcGNjID0gY29udGFpbmVyX29m KGxpbmstPm1ib3gsIHN0cnVjdCBzdG0zMl9pcGNjLA0KPiArCQkJCQkgICAgICAgY29udHJvbGxl cik7DQo+ICsNCj4gKwkvKiBtYXNrIHJ4L3R4IGludGVycnVwdCAqLw0KPiArCXN0bTMyX2lwY2Nf c2V0X2JpdHMoaXBjYy0+cmVnX3Byb2MgKyBJUENDX1hNUiwNCj4gKwkJCSAgICBSWF9CSVRfQ0hB TihjaGFuKSB8IFRYX0JJVF9DSEFOKGNoYW4pKTsNCj4gKw0KPiArCWNsa19kaXNhYmxlX3VucHJl cGFyZShpcGNjLT5jbGspOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG1ib3hf Y2hhbl9vcHMgc3RtMzJfaXBjY19vcHMgPSB7DQo+ICsJLnNlbmRfZGF0YQk9IHN0bTMyX2lwY2Nf c2VuZF9kYXRhLA0KPiArCS5zdGFydHVwCT0gc3RtMzJfaXBjY19zdGFydHVwLA0KPiArCS5zaHV0 ZG93bgk9IHN0bTMyX2lwY2Nfc2h1dGRvd24sDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IHN0 bTMyX2lwY2NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gK3sNCj4gKwlz dHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAq bnAgPSBkZXYtPm9mX25vZGU7DQo+ICsJc3RydWN0IHN0bTMyX2lwY2MgKmlwY2M7DQo+ICsJc3Ry dWN0IHJlc291cmNlICpyZXM7DQo+ICsJdW5zaWduZWQgaW50IGk7DQo+ICsJaW50IHJldDsNCj4g Kwl1MzIgaXBfdmVyOw0KPiArCXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaXJxX25hbWVbXSA9 IHsicngiLCAidHgifTsNCj4gKwlpcnFfaGFuZGxlcl90IGlycV90aHJlYWRbXSA9IHtzdG0zMl9p cGNjX3J4X2lycSwgc3RtMzJfaXBjY190eF9pcnF9Ow0KPiArDQo+ICsJaWYgKCFucCkgew0KPiAr CQlkZXZfZXJyKGRldiwgIk5vIERUIGZvdW5kXG4iKTsNCj4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ ICsJfQ0KPiArDQo+ICsJaXBjYyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqaXBjYyksIEdG UF9LRVJORUwpOw0KPiArCWlmICghaXBjYykNCj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4g KwkvKiBwcm9jX2lkICovDQo+ICsJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAic3QscHJv Yy1pZCIsICZpcGNjLT5wcm9jX2lkKSkgew0KPiArCQlkZXZfZXJyKGRldiwgIk1pc3Npbmcgc3Qs cHJvYy1pZFxuIik7DQo+ICsJCXJldHVybiAtRU5PREVWOw0KPiArCX0NCj4gKw0KPiArCWlmIChp cGNjLT5wcm9jX2lkID49IFNUTTMyX01BWF9QUk9DUykgew0KPiArCQlkZXZfZXJyKGRldiwgIklu dmFsaWQgcHJvY19pZCAoJWQpXG4iLCBpcGNjLT5wcm9jX2lkKTsNCj4gKwkJcmV0dXJuIC1FSU5W QUw7DQo+ICsJfQ0KPiArDQo+ICsJLyogcmVncyAqLw0KPiArCXJlcyA9IHBsYXRmb3JtX2dldF9y ZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQo+ICsJaXBjYy0+cmVnX2Jhc2UgPSBk ZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOw0KPiArCWlmIChJU19FUlIoaXBjYy0+cmVn X2Jhc2UpKQ0KPiArCQlyZXR1cm4gUFRSX0VSUihpcGNjLT5yZWdfYmFzZSk7DQo+ICsNCj4gKwlp cGNjLT5yZWdfcHJvYyA9IGlwY2MtPnJlZ19iYXNlICsgaXBjYy0+cHJvY19pZCAqIElQQ0NfUFJP Q19PRkZTVDsNCj4gKw0KPiArCS8qIGNsb2NrICovDQo+ICsJaXBjYy0+Y2xrID0gZGV2bV9jbGtf Z2V0KGRldiwgTlVMTCk7DQo+ICsJaWYgKElTX0VSUihpcGNjLT5jbGspKQ0KPiArCQlyZXR1cm4g UFRSX0VSUihpcGNjLT5jbGspOw0KPiArDQo+ICsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGlw Y2MtPmNsayk7DQo+ICsJaWYgKHJldCkgew0KPiArCQlkZXZfZXJyKGRldiwgImNhbiBub3QgZW5h YmxlIHRoZSBjbG9ja1xuIik7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJLyog aXJxICovDQo+ICsJZm9yIChpID0gMDsgaSA8IElQQ0NfSVJRX05VTTsgaSsrKSB7DQo+ICsJCWlw Y2MtPmlycXNbaV0gPSBvZl9pcnFfZ2V0X2J5bmFtZShkZXYtPm9mX25vZGUsIGlycV9uYW1lW2ld KTsNCj4gKwkJaWYgKGlwY2MtPmlycXNbaV0gPCAwKSB7DQo+ICsJCQlkZXZfZXJyKGRldiwgIm5v IElSUSBzcGVjaWZpZWQgJXNcbiIsIGlycV9uYW1lW2ldKTsNCj4gKwkJCXJldCA9IGlwY2MtPmly cXNbaV07DQo+ICsJCQlnb3RvIGVycl9jbGs7DQo+ICsJCX0NCj4gKw0KPiArCQlyZXQgPSBkZXZt X3JlcXVlc3RfdGhyZWFkZWRfaXJxKGRldiwgaXBjYy0+aXJxc1tpXSwgTlVMTCwNCj4gKwkJCQkJ CWlycV90aHJlYWRbaV0sIElSUUZfT05FU0hPVCwNCj4gKwkJCQkJCWRldl9uYW1lKGRldiksIGlw Y2MpOw0KPiArCQlpZiAocmV0KSB7DQo+ICsJCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byByZXF1 ZXN0IGlycSAlZCAoJWQpXG4iLCBpLCByZXQpOw0KPiArCQkJZ290byBlcnJfY2xrOw0KPiArCQl9 DQo+ICsJfQ0KPiArDQo+ICsJLyogbWFzayBhbmQgZW5hYmxlIHJ4L3R4IGlycSAqLw0KPiArCXN0 bTMyX2lwY2Nfc2V0X2JpdHMoaXBjYy0+cmVnX3Byb2MgKyBJUENDX1hNUiwNCj4gKwkJCSAgICBS WF9CSVRfTUFTSyB8IFRYX0JJVF9NQVNLKTsNCj4gKwlzdG0zMl9pcGNjX3NldF9iaXRzKGlwY2Mt PnJlZ19wcm9jICsgSVBDQ19YQ1IsIFhDUl9SWE9JRSB8IFhDUl9UWE9JRSk7DQo+ICsNCj4gKwkv KiB3YWtldXAgKi8NCj4gKwlpZiAob2ZfcHJvcGVydHlfcmVhZF9ib29sKG5wLCAid2FrZXVwLXNv dXJjZSIpKSB7DQo+ICsJCWlwY2MtPndrcCA9IG9mX2lycV9nZXRfYnluYW1lKGRldi0+b2Zfbm9k ZSwgIndha2V1cCIpOw0KPiArCQlpZiAoaXBjYy0+d2twIDwgMCkgew0KPiArCQkJZGV2X2Vycihk ZXYsICJjb3VsZCBub3QgZ2V0IHdha2V1cCBJUlFcbiIpOw0KPiArCQkJcmV0ID0gaXBjYy0+d2tw Ow0KPiArCQkJZ290byBlcnJfY2xrOw0KPiArCQl9DQo+ICsNCj4gKwkJZGV2aWNlX2luaXRfd2Fr ZXVwKGRldiwgdHJ1ZSk7DQo+ICsJCXJldCA9IGRldl9wbV9zZXRfZGVkaWNhdGVkX3dha2VfaXJx KGRldiwgaXBjYy0+d2twKTsNCj4gKwkJaWYgKHJldCkgew0KPiArCQkJZGV2X2VycihkZXYsICJG YWlsZWQgdG8gc2V0IHdha2UgdXAgaXJxXG4iKTsNCj4gKwkJCWdvdG8gZXJyX2luaXRfd2twOw0K PiArCQl9DQo+ICsJfSBlbHNlIHsNCj4gKwkJZGV2aWNlX2luaXRfd2FrZXVwKGRldiwgZmFsc2Up Ow0KPiArCX0NCj4gKw0KPiArCS8qIG1haWxib3ggY29udHJvbGxlciAqLw0KPiArCWlwY2MtPm5f Y2hhbnMgPSByZWFkbF9yZWxheGVkKGlwY2MtPnJlZ19iYXNlICsgSVBDQ19IV0NGR1IpOw0KPiAr CWlwY2MtPm5fY2hhbnMgJj0gSVBDRkdSX0NIQU5fTUFTSzsNCj4gKw0KPiArCWlwY2MtPmNvbnRy b2xsZXIuZGV2ID0gZGV2Ow0KPiArCWlwY2MtPmNvbnRyb2xsZXIudHhkb25lX2lycSA9IHRydWU7 DQo+ICsJaXBjYy0+Y29udHJvbGxlci5vcHMgPSAmc3RtMzJfaXBjY19vcHM7DQo+ICsJaXBjYy0+ Y29udHJvbGxlci5udW1fY2hhbnMgPSBpcGNjLT5uX2NoYW5zOw0KPiArCWlwY2MtPmNvbnRyb2xs ZXIuY2hhbnMgPSBkZXZtX2tjYWxsb2MoZGV2LCBpcGNjLT5jb250cm9sbGVyLm51bV9jaGFucywN Cj4gKwkJCQkJICAgICAgc2l6ZW9mKCppcGNjLT5jb250cm9sbGVyLmNoYW5zKSwNCj4gKwkJCQkJ ICAgICAgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFpcGNjLT5jb250cm9sbGVyLmNoYW5zKSB7DQo+ ICsJCXJldCA9IC1FTk9NRU07DQo+ICsJCWdvdG8gZXJyX2lycV93a3A7DQo+ICsJfQ0KPiArDQo+ ICsJZm9yIChpID0gMDsgaSA8IGlwY2MtPmNvbnRyb2xsZXIubnVtX2NoYW5zOyBpKyspDQo+ICsJ CWlwY2MtPmNvbnRyb2xsZXIuY2hhbnNbaV0uY29uX3ByaXYgPSAodm9pZCAqKWk7DQo+ICsNCj4g KwlyZXQgPSBtYm94X2NvbnRyb2xsZXJfcmVnaXN0ZXIoJmlwY2MtPmNvbnRyb2xsZXIpOw0KPiAr CWlmIChyZXQpDQo+ICsJCWdvdG8gZXJyX2lycV93a3A7DQo+ICsNCj4gKwlwbGF0Zm9ybV9zZXRf ZHJ2ZGF0YShwZGV2LCBpcGNjKTsNCj4gKw0KPiArCWlwX3ZlciA9IHJlYWRsX3JlbGF4ZWQoaXBj Yy0+cmVnX2Jhc2UgKyBJUENDX1ZFUik7DQo+ICsNCj4gKwlkZXZfaW5mbyhkZXYsICJpcGNjIHJl djolbGQuJWxkIGVuYWJsZWQsICVkIGNoYW5zLCBwcm9jICVkXG4iLA0KPiArCQkgRklFTERfR0VU KFZFUl9NQUpSRVZfTUFTSywgaXBfdmVyKSwNCj4gKwkJIEZJRUxEX0dFVChWRVJfTUlOUkVWX01B U0ssIGlwX3ZlciksDQo+ICsJCSBpcGNjLT5jb250cm9sbGVyLm51bV9jaGFucywgaXBjYy0+cHJv Y19pZCk7DQo+ICsNCj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoaXBjYy0+Y2xrKTsNCj4gKwly ZXR1cm4gMDsNCj4gKw0KPiArZXJyX2lycV93a3A6DQo+ICsJaWYgKGlwY2MtPndrcCkNCj4gKwkJ ZGV2X3BtX2NsZWFyX3dha2VfaXJxKGRldik7DQo+ICtlcnJfaW5pdF93a3A6DQo+ICsJZGV2aWNl X2luaXRfd2FrZXVwKGRldiwgZmFsc2UpOw0KPiArZXJyX2NsazoNCj4gKwljbGtfZGlzYWJsZV91 bnByZXBhcmUoaXBjYy0+Y2xrKTsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgaW50IHN0bTMyX2lwY2NfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ ICt7DQo+ICsJc3RydWN0IHN0bTMyX2lwY2MgKmlwY2MgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShw ZGV2KTsNCj4gKw0KPiArCW1ib3hfY29udHJvbGxlcl91bnJlZ2lzdGVyKCZpcGNjLT5jb250cm9s bGVyKTsNCj4gKw0KPiArCWlmIChpcGNjLT53a3ApDQo+ICsJCWRldl9wbV9jbGVhcl93YWtlX2ly cSgmcGRldi0+ZGV2KTsNCj4gKw0KPiArCWRldmljZV9pbml0X3dha2V1cCgmcGRldi0+ZGV2LCBm YWxzZSk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArI2lmZGVmIENPTkZJR19Q TV9TTEVFUA0KPiArc3RhdGljIHZvaWQgc3RtMzJfaXBjY19zZXRfaXJxX3dha2Uoc3RydWN0IGRl dmljZSAqZGV2LCBib29sIGVuYWJsZSkNCj4gK3sNCj4gKwlzdHJ1Y3Qgc3RtMzJfaXBjYyAqaXBj YyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArCXVuc2lnbmVkIGludCBpOw0KPiArDQo+ICsJ aWYgKGRldmljZV9tYXlfd2FrZXVwKGRldikpDQo+ICsJCWZvciAoaSA9IDA7IGkgPCBJUENDX0lS UV9OVU07IGkrKykNCj4gKwkJCWlycV9zZXRfaXJxX3dha2UoaXBjYy0+aXJxc1tpXSwgZW5hYmxl KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBzdG0zMl9pcGNjX3N1c3BlbmQoc3RydWN0IGRl dmljZSAqZGV2KQ0KPiArew0KPiArCXN0cnVjdCBzdG0zMl9pcGNjICppcGNjID0gZGV2X2dldF9k cnZkYXRhKGRldik7DQo+ICsNCj4gKwlpcGNjLT54bXIgPSByZWFkbF9yZWxheGVkKGlwY2MtPnJl Z19wcm9jICsgSVBDQ19YTVIpOw0KPiArCWlwY2MtPnhjciA9IHJlYWRsX3JlbGF4ZWQoaXBjYy0+ cmVnX3Byb2MgKyBJUENDX1hDUik7DQo+ICsNCj4gKwlzdG0zMl9pcGNjX3NldF9pcnFfd2FrZShk ZXYsIHRydWUpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQg c3RtMzJfaXBjY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQ0KPiArew0KPiArCXN0cnVjdCBz dG0zMl9pcGNjICppcGNjID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICsNCj4gKwlzdG0zMl9p cGNjX3NldF9pcnFfd2FrZShkZXYsIGZhbHNlKTsNCj4gKw0KPiArCXdyaXRlbF9yZWxheGVkKGlw Y2MtPnhtciwgaXBjYy0+cmVnX3Byb2MgKyBJUENDX1hNUik7DQo+ICsJd3JpdGVsX3JlbGF4ZWQo aXBjYy0+eGNyLCBpcGNjLT5yZWdfcHJvYyArIElQQ0NfWENSKTsNCj4gKw0KPiArCXJldHVybiAw Ow0KPiArfQ0KPiArI2VuZGlmDQo+ICsNCj4gK3N0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhzdG0z Ml9pcGNjX3BtX29wcywNCj4gKwkJCSBzdG0zMl9pcGNjX3N1c3BlbmQsIHN0bTMyX2lwY2NfcmVz dW1lKTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3RtMzJfaXBj Y19vZl9tYXRjaFtdID0gew0KPiArCXsgLmNvbXBhdGlibGUgPSAic3Qsc3RtMzJtcDEtaXBjYyIg fSwNCj4gKwl7fSwNCj4gK307DQo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdG0zMl9pcGNj X29mX21hdGNoKTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3RtMzJf aXBjY19kcml2ZXIgPSB7DQo+ICsJLmRyaXZlciA9IHsNCj4gKwkJLm5hbWUgPSAic3RtMzItaXBj YyIsDQo+ICsJCS5vd25lciA9IFRISVNfTU9EVUxFLA0KPiArCQkucG0gPSAmc3RtMzJfaXBjY19w bV9vcHMsDQo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IHN0bTMyX2lwY2Nfb2ZfbWF0Y2gsDQo+ICsJ fSwNCj4gKwkucHJvYmUJCT0gc3RtMzJfaXBjY19wcm9iZSwNCj4gKwkucmVtb3ZlCQk9IHN0bTMy X2lwY2NfcmVtb3ZlLA0KPiArfTsNCj4gKw0KPiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdG0z Ml9pcGNjX2RyaXZlcik7DQo+ICsNCj4gK01PRFVMRV9BVVRIT1IoIkx1ZG92aWMgQmFycmUgPGx1 ZG92aWMuYmFycmVAc3QuY29tPiIpOw0KPiArTU9EVUxFX0FVVEhPUigiRmFiaWVuIERlc3Nlbm5l IDxmYWJpZW4uZGVzc2VubmVAc3QuY29tPiIpOw0KPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJTVE0z MiBJUENDIGRyaXZlciIpOw0KPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOw0K