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 E3D7CC7618E for ; Wed, 26 Apr 2023 04:56:43 +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=kiDa6qrxAsLab1MxMhYrWNhaKg6JRRrp45PHVGefPdg=; b=b3lf84Smg9q2FP Y68HSU9MJLFq3XoBq3lmuUMO54rUnmYw5CaDGa6QM1oCUVRelSNvrjLcatsreye0xovFH3ak0noOA gX5earZnG13DQ0SbXySrxco4wYSf3Mz+aRwFrP7lIk6jZzORoqxwUW/ezcp66S8UVuK8G6REmr6HS XsweX+Y1P3BsabMEL/trnnW6UkjOAMn4X6rQs19yJhFPM05ky/AR6SBTbD+ARJaRrsbrHFoCPh/lQ WFPsDTKlUBleDKbUDFoO9D5B/0BRa/m266drDcKVwWAvqf6xLhJYhuAdJrzboQUG9mktx52y/cSbb 8bwz+HPmtHt4mVJq7a1g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1prXBt-002n4m-0D; Wed, 26 Apr 2023 04:55:41 +0000 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1prXBn-002n4E-2X for linux-arm-kernel@lists.infradead.org; Wed, 26 Apr 2023 04:55:38 +0000 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-1a814fe0ddeso70706815ad.2 for ; Tue, 25 Apr 2023 21:55:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682484935; x=1685076935; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=WjNT6AOkgQnHM+NHsCYx6Ex8tc21sRsFftHlaRPMdtA=; b=Fe9fMTswOgusuHqx7Iga6xCj+gnjwvNrB/lIZelCGaGvNLEXkLOsTMwOIGMpDVu3dB Y331NZw/OwjHFN4eYCbtadmSBhG0yDiVr0af/OfHejUjEFAxkASfbd3yhFnCwOproqFn K4Y6HuaCZ+Z3rKD+V5npvUwyG9HqUeHvtSrTZFk0oy31gQSGwKJ4bWs6QjmQKF9u5UF6 d21i7DdX9fFLeykSOaXw7x26u04IByfN0qFLuIvFSc+IYQIJHpgEuvhD/Z1W/E9fc7PE +ok7g6xSEOWZD0G4oPfATjIIic6uJw0AKqavgHekIj+aEccPe28i6peL1scbfUSRxE8w yhyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682484935; x=1685076935; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=WjNT6AOkgQnHM+NHsCYx6Ex8tc21sRsFftHlaRPMdtA=; b=RtJR4ejclM4LB096t5eE5WCUBUsTw4JiGghqYlEMJq3i7v8vyCkYXNt5YTeiddnCt8 kcIFDi4JVB2rH1W9wCU/GoBZkvY2RFgiMB2gq39L1DOf7qWe+A5WRwlsmp/XzrNvpyrx JTTq4f/HwcWrlPetLGOdUpAhbn8FpemgcUp60RNMgrPTeDdcwvQmrQMco5Q7CiRM6Ib4 al/YfAEJio2/bdtgSoXQxaY0UKS65UjLApozUhJSxg3gicHMzFUW7o4KFev285aBO9IQ 14b5tU3scGhBASfmUN7/dfaLxzQhaV8XffTzEHriWEwfYu1eMRBJKYHJtTCqbwJ5dIjd 9CpQ== X-Gm-Message-State: AC+VfDxsDK6J5mAPtHViIOe6lBb3nGJ3ta0jCmlb8E1HoD2MQv/xWo5k 3t2/ROTJg2jfuqajCEfMbUg= X-Google-Smtp-Source: ACHHUZ5lIN7JTKiOJwM15BG+7XvHSh8jGEntO8um57ceuJpWihU7hhHPZrNkT78P1MRttQZ9Kyu+CQ== X-Received: by 2002:a17:902:e884:b0:1a9:9b92:bd84 with SMTP id w4-20020a170902e88400b001a99b92bd84mr2030040plg.31.1682484934404; Tue, 25 Apr 2023 21:55:34 -0700 (PDT) Received: from [172.19.1.47] (60-250-192-107.hinet-ip.hinet.net. [60.250.192.107]) by smtp.gmail.com with ESMTPSA id g4-20020a1709026b4400b001a183ade911sm9033526plt.56.2023.04.25.21.55.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 25 Apr 2023 21:55:33 -0700 (PDT) Message-ID: <5e532409-5c5d-966f-7994-12e3a01f5029@gmail.com> Date: Wed, 26 Apr 2023 12:55:29 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: [PATCH v8 08/11] clk: nuvoton: Add clock driver for ma35d1 clock controller Content-Language: en-US To: =?UTF-8?Q?Ilpo_J=c3=a4rvinen?= Cc: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, lee@kernel.org, mturquette@baylibre.com, sboyd@kernel.org, p.zabel@pengutronix.de, gregkh@linuxfoundation.org, jirislaby@kernel.org, tmaimon77@gmail.com, catalin.marinas@arm.com, will@kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-serial@vger.kernel.org, arnd@arndb.de, schung@nuvoton.com, mjchen@nuvoton.com, Jacky Huang References: <20230425102418.185783-1-ychuang570808@gmail.com> <20230425102418.185783-9-ychuang570808@gmail.com> <4eef3e9e-ad13-a64c-69bd-fb37b63437a5@linux.intel.com> From: Jacky Huang In-Reply-To: <4eef3e9e-ad13-a64c-69bd-fb37b63437a5@linux.intel.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230425_215536_052196_46C58ABE X-CRM114-Status: GOOD ( 24.78 ) 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 CkRlYXIgSWxwbywKCgoKT24gMjAyMy80LzI1IOS4i+WNiCAwNzozMCwgSWxwbyBKw6RydmluZW4g d3JvdGU6Cj4gT24gVHVlLCAyNSBBcHIgMjAyMywgSmFja3kgSHVhbmcgd3JvdGU6Cj4KPj4gRnJv bTogSmFja3kgSHVhbmcgPHljaHVhbmczQG51dm90b24uY29tPgo+Pgo+PiBUaGUgY2xvY2sgY29u dHJvbGxlciBnZW5lcmF0ZXMgY2xvY2tzIGZvciB0aGUgd2hvbGUgY2hpcCwgaW5jbHVkaW5nCj4+ IHN5c3RlbSBjbG9ja3MgYW5kIGFsbCBwZXJpcGhlcmFsIGNsb2Nrcy4gVGhpcyBkcml2ZXIgc3Vw cG9ydCBtYTM1ZDEKPj4gY2xvY2sgZ2F0aW5nLCBkaXZpZGVyLCBhbmQgaW5kaXZpZHVhbCBQTEwg Y29uZmlndXJhdGlvbi4KPj4KPj4gVGhlcmUgYXJlIDYgUExMcyBpbiBtYTM1ZDEgU29DOgo+PiAg ICAtIENBLVBMTCBmb3IgdGhlIHR3byBDb3J0ZXgtQTM1IENQVSBjbG9jawo+PiAgICAtIFNZUy1Q TEwgZm9yIHN5c3RlbSBidXMsIHdoaWNoIGNvbWVzIGZyb20gdGhlIGNvbXBhbmlvbiBNQ1UKPj4g ICAgICBhbmQgY2Fubm90IGJlIHByb2dyYW1tZWQgYnkgY2xvY2sgY29udHJvbGxlci4KPj4gICAg LSBERFItUExMIGZvciBERFIKPj4gICAgLSBFUExMIGZvciBHTUFDIGFuZCBHRlgsIERpc3BsYXks IGFuZCBWREVDIElQcy4KPj4gICAgLSBWUExMIGZvciB2aWRlbyBvdXRwdXQgcGl4ZWwgY2xvY2sK Pj4gICAgLSBBUExMIGZvciBTREhDLCBJMlMgYXVkaW8sIGFuZCBvdGhlciBJUHMuCj4+IENBLVBM TCBoYXMgb25seSBvbmUgb3BlcmF0aW9uIG1vZGUuCj4+IEREUi1QTEwsIEVQTEwsIFZQTEwsIGFu ZCBBUExMIGFyZSBhZHZhbmNlZCBQTExzIHdoaWNoIGhhdmUgMwo+PiBvcGVyYXRpb24gbW9kZXM6 IGludGVnZXIgbW9kZSwgZnJhY3Rpb24gbW9kZSwgYW5kIHNwcmVhZCBzcGVjdHVybSBtb2RlLgo+ Pgo+PiBTaWduZWQtb2ZmLWJ5OiBKYWNreSBIdWFuZyA8eWNodWFuZzNAbnV2b3Rvbi5jb20+Cj4+ IC0tLQo+PiAgIGRyaXZlcnMvY2xrL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgIDEg Kwo+PiAgIGRyaXZlcnMvY2xrL251dm90b24vS2NvbmZpZyAgICAgICAgICAgICAgfCAgMTkgKwo+ PiAgIGRyaXZlcnMvY2xrL251dm90b24vTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDQgKwo+PiAg IGRyaXZlcnMvY2xrL251dm90b24vY2xrLW1hMzVkMS1kaXZpZGVyLmMgfCAxNDAgKysrKwo+PiAg IGRyaXZlcnMvY2xrL251dm90b24vY2xrLW1hMzVkMS1wbGwuYyAgICAgfCAzNjQgKysrKysrKysr Cj4+ICAgZHJpdmVycy9jbGsvbnV2b3Rvbi9jbGstbWEzNWQxLmMgICAgICAgICB8IDk0NyArKysr KysrKysrKysrKysrKysrKysrKwo+PiAgIDYgZmlsZXMgY2hhbmdlZCwgMTQ3NSBpbnNlcnRpb25z KCspCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvY2xrL251dm90b24vS2NvbmZpZwo+ PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2Nsay9udXZvdG9uL01ha2VmaWxlCj4+ICAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvY2xrL251dm90b24vY2xrLW1hMzVkMS1kaXZpZGVy LmMKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9jbGsvbnV2b3Rvbi9jbGstbWEzNWQx LXBsbC5jCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvY2xrL251dm90b24vY2xrLW1h MzVkMS5jCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9NYWtlZmlsZSBiL2RyaXZlcnMv Y2xrL01ha2VmaWxlCj4+IGluZGV4IGUzY2EwZDA1OGEyNS4uNDAxZjJkODAwZTdmIDEwMDY0NAo+ PiAtLS0gYS9kcml2ZXJzL2Nsay9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL2Nsay9NYWtlZmls ZQo+PiBAQCAtMTAzLDYgKzEwMyw3IEBAIGVuZGlmCj4+ICAgb2JqLXkJCQkJCSs9IG1zdGFyLwo+ PiAgIG9iai15CQkJCQkrPSBtdmVidS8KPj4gICBvYmotJChDT05GSUdfQVJDSF9NWFMpCQkJKz0g bXhzLwo+PiArb2JqLXkJCQkJCSs9IG51dm90b24vCj4+ICAgb2JqLSQoQ09ORklHX0NPTU1PTl9D TEtfTlhQKQkJKz0gbnhwLwo+PiAgIG9iai0kKENPTkZJR19DT01NT05fQ0xLX1BJU1RBQ0hJTykJ Kz0gcGlzdGFjaGlvLwo+PiAgIG9iai0kKENPTkZJR19DT01NT05fQ0xLX1BYQSkJCSs9IHB4YS8K Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL251dm90b24vS2NvbmZpZyBiL2RyaXZlcnMvY2xr L251dm90b24vS2NvbmZpZwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAw MDAwMDAuLjliYjgxMWQyMGIxYwo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvY2xr L251dm90b24vS2NvbmZpZwo+PiBAQCAtMCwwICsxLDE5IEBACj4+ICsjIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wCj4+ICsjIGNvbW1vbiBjbG9jayBzdXBwb3J0IGZvciBOdXZvdG9u IFNvQyBmYW1pbHkuCj4+ICsKPj4gK2NvbmZpZyBDT01NT05fQ0xLX05VVk9UT04KPj4gKwlib29s ICJOdXZvdG9uIGNsb2NrIGNvbnRyb2xsZXIgY29tbW9uIHN1cHBvcnQiCj4+ICsJZGVwZW5kcyBv biBBUkNIX05VVk9UT04gfHwgQ09NUElMRV9URVNUCj4+ICsJZGVmYXVsdCB5Cj4+ICsJaGVscAo+ PiArCSAgU2F5IHkgaGVyZSB0byBlbmFibGUgY29tbW9uIGNsb2NrIGNvbnRyb2xsZXIgZm9yIE51 dm90b24gcGxhdGZvcm1zLgo+PiArCj4+ICtpZiBDT01NT05fQ0xLX05VVk9UT04KPj4gKwo+PiAr Y29uZmlnIENMS19NQTM1RDEKPj4gKwlib29sICJOdXZvdG9uIE1BMzVEMSBjbG9jayBjb250cm9s bGVyIHN1cHBvcnQiCj4+ICsJZGVmYXVsdCB5Cj4+ICsJaGVscAo+PiArCSAgQnVpbGQgdGhlIGNs b2NrIGNvbnRyb2xsZXIgZHJpdmVyIGZvciBNQTM1RDEgU29DLgo+PiArCj4+ICtlbmRpZgo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvbnV2b3Rvbi9NYWtlZmlsZSBiL2RyaXZlcnMvY2xrL251 dm90b24vTWFrZWZpbGUKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAw MDAwLi5kMmMwOTI1NDFiOGQKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2Nsay9u dXZvdG9uL01ha2VmaWxlCj4+IEBAIC0wLDAgKzEsNCBAQAo+PiArIyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMC1vbmx5Cj4+ICtvYmotJChDT05GSUdfQVJDSF9OVVZPVE9OKSArPSBj bGstbWEzNWQxLm8KPj4gK29iai0kKENPTkZJR19BUkNIX05VVk9UT04pICs9IGNsay1tYTM1ZDEt ZGl2aWRlci5vCj4+ICtvYmotJChDT05GSUdfQVJDSF9OVVZPVE9OKSArPSBjbGstbWEzNWQxLXBs bC5vCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9udXZvdG9uL2Nsay1tYTM1ZDEtZGl2aWRl ci5jIGIvZHJpdmVycy9jbGsvbnV2b3Rvbi9jbGstbWEzNWQxLWRpdmlkZXIuYwo+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjBkNGQ4MTg2YTg1Ywo+PiAtLS0g L2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvY2xrL251dm90b24vY2xrLW1hMzVkMS1kaXZpZGVy LmMKPj4gQEAgLTAsMCArMSwxNDAgQEAKPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wLW9ubHkKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjMgTnV2b3RvbiBUZWNo bm9sb2d5IENvcnAuCj4+ICsgKiBBdXRob3I6IENoaS1GYW5nIExpIDxjZmxpMEBudXZvdG9uLmNv bT4KPj4gKyAqLwo+PiArCj4+ICsjaW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+Cj4+ICsj aW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4+ ICsjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KPj4gKwo+PiArc3RydWN0IG1hMzVkMV9hZGNf Y2xrX2RpdiB7Cj4+ICsJc3RydWN0IGNsa19odyBodzsKPj4gKwl2b2lkIF9faW9tZW0gKnJlZzsK Pj4gKwl1OCBzaGlmdDsKPj4gKwl1OCB3aWR0aDsKPj4gKwl1MzIgbWFzazsKPj4gKwljb25zdCBz dHJ1Y3QgY2xrX2Rpdl90YWJsZSAqdGFibGU7Cj4+ICsJLyogcHJvdGVjdHMgY29uY3VycmVudCBh Y2Nlc3MgdG8gY2xvY2sgZGl2aWRlciByZWdpc3RlcnMgKi8KPj4gKwlzcGlubG9ja190ICpsb2Nr Owo+PiArfTsKPj4gKwo+PiArc3RydWN0IGNsa19odyAqbWEzNWQxX3JlZ19hZGNfY2xrZGl2KHN0 cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqbmFtZSwKPj4gKwkJCQkgICAgIHN0cnVjdCBj bGtfaHcgKnBhcmVudF9odywgc3BpbmxvY2tfdCAqbG9jaywKPj4gKwkJCQkgICAgIHVuc2lnbmVk IGxvbmcgZmxhZ3MsIHZvaWQgX19pb21lbSAqcmVnLAo+PiArCQkJCSAgICAgdTggc2hpZnQsIHU4 IHdpZHRoLCB1MzIgbWFza19iaXQpOwo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBtYTM1 ZDFfYWRjX2Nsa19kaXYgKnRvX21hMzVkMV9hZGNfY2xrX2RpdihzdHJ1Y3QgY2xrX2h3ICpfaHcp Cj4+ICt7Cj4+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihfaHcsIHN0cnVjdCBtYTM1ZDFfYWRjX2Ns a19kaXYsIGh3KTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG1h MzVkMV9jbGtkaXZfcmVjYWxjX3JhdGUoc3RydWN0IGNsa19odyAqaHcsCj4+ICsJCQkJCQkgICAg ICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKQo+PiArewo+PiArCXVuc2lnbmVkIGludCB2YWw7 Cj4+ICsJc3RydWN0IG1hMzVkMV9hZGNfY2xrX2RpdiAqZGNsayA9IHRvX21hMzVkMV9hZGNfY2xr X2Rpdihodyk7Cj4+ICsKPj4gKwl2YWwgPSByZWFkbF9yZWxheGVkKGRjbGstPnJlZykgPj4gZGNs ay0+c2hpZnQ7Cj4+ICsJdmFsICY9IGNsa19kaXZfbWFzayhkY2xrLT53aWR0aCk7Cj4+ICsJdmFs ICs9IDE7Cj4+ICsJcmV0dXJuIGRpdmlkZXJfcmVjYWxjX3JhdGUoaHcsIHBhcmVudF9yYXRlLCB2 YWwsIGRjbGstPnRhYmxlLAo+PiArCQkJCSAgIENMS19ESVZJREVSX1JPVU5EX0NMT1NFU1QsIGRj bGstPndpZHRoKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZSBsb25nIG1hMzVkMV9jbGtk aXZfcm91bmRfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywKPj4gKwkJCQkJICAgIHVuc2lnbmVkIGxv bmcgcmF0ZSwKPj4gKwkJCQkJICAgIHVuc2lnbmVkIGxvbmcgKnByYXRlKQo+PiArewo+PiArCXN0 cnVjdCBtYTM1ZDFfYWRjX2Nsa19kaXYgKmRjbGsgPSB0b19tYTM1ZDFfYWRjX2Nsa19kaXYoaHcp Owo+PiArCj4+ICsJcmV0dXJuIGRpdmlkZXJfcm91bmRfcmF0ZShodywgcmF0ZSwgcHJhdGUsIGRj bGstPnRhYmxlLAo+PiArCQkJCSAgZGNsay0+d2lkdGgsIENMS19ESVZJREVSX1JPVU5EX0NMT1NF U1QpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIGludCBtYTM1ZDFfY2xrZGl2X3NldF9y YXRlKHN0cnVjdCBjbGtfaHcgKmh3LAo+PiArCQkJCQkgdW5zaWduZWQgbG9uZyByYXRlLAo+PiAr CQkJCQkgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSkKPj4gK3sKPj4gKwlpbnQgdmFsdWU7Cj4+ ICsJdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7Cj4+ICsJdTMyIGRhdGE7Cj4+ICsJc3RydWN0IG1h MzVkMV9hZGNfY2xrX2RpdiAqZGNsayA9IHRvX21hMzVkMV9hZGNfY2xrX2Rpdihodyk7Cj4+ICsK Pj4gKwl2YWx1ZSA9IGRpdmlkZXJfZ2V0X3ZhbChyYXRlLCBwYXJlbnRfcmF0ZSwgZGNsay0+dGFi bGUsCj4+ICsJCQkJZGNsay0+d2lkdGgsIENMS19ESVZJREVSX1JPVU5EX0NMT1NFU1QpOwo+PiAr Cj4+ICsJc3Bpbl9sb2NrX2lycXNhdmUoZGNsay0+bG9jaywgZmxhZ3MpOwo+PiArCj4+ICsJZGF0 YSA9IHJlYWRsX3JlbGF4ZWQoZGNsay0+cmVnKTsKPj4gKwlkYXRhICY9IH4oY2xrX2Rpdl9tYXNr KGRjbGstPndpZHRoKSA8PCBkY2xrLT5zaGlmdCk7Cj4+ICsJZGF0YSB8PSAodmFsdWUgLSAxKSA8 PCBkY2xrLT5zaGlmdDsKPj4gKwlkYXRhIHw9IGRjbGstPm1hc2s7Cj4+ICsJd3JpdGVsX3JlbGF4 ZWQoZGF0YSwgZGNsay0+cmVnKTsKPj4gKwo+PiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoZGNs ay0+bG9jaywgZmxhZ3MpOwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGNsa19vcHMgbWEzNWQxX2FkY19jbGtkaXZfb3BzID0gewo+PiArCS5yZWNhbGNf cmF0ZSA9IG1hMzVkMV9jbGtkaXZfcmVjYWxjX3JhdGUsCj4+ICsJLnJvdW5kX3JhdGUgPSBtYTM1 ZDFfY2xrZGl2X3JvdW5kX3JhdGUsCj4+ICsJLnNldF9yYXRlID0gbWEzNWQxX2Nsa2Rpdl9zZXRf cmF0ZSwKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBjbGtfaHcgKm1hMzVkMV9yZWdfYWRjX2Nsa2Rp dihzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUsCj4+ICsJCQkJICAgICBzdHJ1 Y3QgY2xrX2h3ICpwYXJlbnRfaHcsIHNwaW5sb2NrX3QgKmxvY2ssCj4+ICsJCQkJICAgICB1bnNp Z25lZCBsb25nIGZsYWdzLCB2b2lkIF9faW9tZW0gKnJlZywKPj4gKwkJCQkgICAgIHU4IHNoaWZ0 LCB1OCB3aWR0aCwgdTMyIG1hc2tfYml0KQo+PiArewo+PiArCXN0cnVjdCBtYTM1ZDFfYWRjX2Ns a19kaXYgKmRpdjsKPj4gKwlzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0Owo+PiArCXN0cnVjdCBj bGtfZGl2X3RhYmxlICp0YWJsZTsKPj4gKwlzdHJ1Y3QgY2xrX3BhcmVudF9kYXRhIHBkYXRhID0g eyAuaW5kZXggPSAwIH07Cj4+ICsJdTMyIG1heF9kaXYsIG1pbl9kaXY7Cj4+ICsJc3RydWN0IGNs a19odyAqaHc7Cj4+ICsJaW50IHJldDsKPj4gKwlpbnQgaTsKPj4gKwo+PiArCWRpdiA9IGRldm1f a3phbGxvYyhkZXYsIHNpemVvZigqZGl2KSwgR0ZQX0tFUk5FTCk7Cj4+ICsJaWYgKCFkaXYpCj4+ ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+PiArCj4+ICsJbWF4X2RpdiA9IGNsa19kaXZf bWFzayh3aWR0aCkgKyAxOwo+PiArCW1pbl9kaXYgPSAxOwo+PiArCj4+ICsJdGFibGUgPSBkZXZt X2tjYWxsb2MoZGV2LCBtYXhfZGl2ICsgMSwgc2l6ZW9mKCp0YWJsZSksIEdGUF9LRVJORUwpOwo+ PiArCWlmICghdGFibGUpCj4+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+PiArCj4+ICsJ Zm9yIChpID0gMDsgaSA8IG1heF9kaXY7IGkrKykgewo+PiArCQl0YWJsZVtpXS52YWwgPSBtaW5f ZGl2ICsgaTsKPj4gKwkJdGFibGVbaV0uZGl2ID0gMiAqIHRhYmxlW2ldLnZhbDsKPj4gKwl9Cj4+ ICsJdGFibGVbbWF4X2Rpdl0udmFsID0gMDsKPj4gKwl0YWJsZVttYXhfZGl2XS5kaXYgPSAwOwo+ PiArCj4+ICsJbWVtc2V0KCZpbml0LCAwLCBzaXplb2YoaW5pdCkpOwo+PiArCWluaXQubmFtZSA9 IG5hbWU7Cj4+ICsJaW5pdC5vcHMgPSAmbWEzNWQxX2FkY19jbGtkaXZfb3BzOwo+PiArCWluaXQu ZmxhZ3MgfD0gZmxhZ3M7Cj4+ICsJcGRhdGEuaHcgPSBwYXJlbnRfaHc7Cj4+ICsJaW5pdC5wYXJl bnRfZGF0YSA9ICZwZGF0YTsKPj4gKwlpbml0Lm51bV9wYXJlbnRzID0gMTsKPj4gKwo+PiArCWRp di0+cmVnID0gcmVnOwo+PiArCWRpdi0+c2hpZnQgPSBzaGlmdDsKPj4gKwlkaXYtPndpZHRoID0g d2lkdGg7Cj4+ICsJZGl2LT5tYXNrID0gbWFza19iaXQgPyBCSVQobWFza19iaXQpIDogMDsKPj4g KwlkaXYtPmxvY2sgPSBsb2NrOwo+PiArCWRpdi0+aHcuaW5pdCA9ICZpbml0Owo+PiArCWRpdi0+ dGFibGUgPSB0YWJsZTsKPj4gKwo+PiArCWh3ID0gJmRpdi0+aHc7Cj4+ICsJcmV0ID0gZGV2bV9j bGtfaHdfcmVnaXN0ZXIoZGV2LCBodyk7Cj4+ICsJaWYgKHJldCkKPj4gKwkJcmV0dXJuIEVSUl9Q VFIocmV0KTsKPj4gKwlyZXR1cm4gaHc7Cj4+ICt9Cj4+ICtFWFBPUlRfU1lNQk9MX0dQTChtYTM1 ZDFfcmVnX2FkY19jbGtkaXYpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvbnV2b3Rvbi9j bGstbWEzNWQxLXBsbC5jIGIvZHJpdmVycy9jbGsvbnV2b3Rvbi9jbGstbWEzNWQxLXBsbC5jCj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uOGZmZWZlMjg1NjAz Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9jbGsvbnV2b3Rvbi9jbGstbWEzNWQx LXBsbC5jCj4+IEBAIC0wLDAgKzEsMzY0IEBACj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMC1vbmx5Cj4+ICsvKgo+PiArICogQ29weXJpZ2h0IChDKSAyMDIzIE51dm90b24g VGVjaG5vbG9neSBDb3JwLgo+PiArICogQXV0aG9yOiBDaGktRmFuZyBMaSA8Y2ZsaTBAbnV2b3Rv bi5jb20+Cj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L2JpdGZpZWxkLmg+Cj4+ICsj aW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvY29udGFp bmVyX29mLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4+ICsjaW5jbHVkZSA8bGlu dXgvaW8uaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4gKyNpbmNsdWRlIDxsaW51 eC9zbGFiLmg+Cj4+ICsjaW5jbHVkZSA8ZHQtYmluZGluZ3MvY2xvY2svbnV2b3RvbixtYTM1ZDEt Y2xrLmg+Cj4+ICsKPj4gKy8qIFBMTCBmcmVxdWVuY3kgbGltaXRzICovCj4+ICsjZGVmaW5lIFBM TF9GUkVGX01BWF9GUkVRCTIwMDAwMDAwMFVMCj4+ICsjZGVmaW5lIFBMTF9GUkVGX01JTl9GUkVR CTEwMDAwMDBVTAo+PiArI2RlZmluZSBQTExfRlJFRl9NX01BWF9GUkVRCTQwMDAwMDAwVUwKPj4g KyNkZWZpbmUgUExMX0ZSRUZfTV9NSU5fRlJFUQkxMDAwMDAwMFVMCj4+ICsjZGVmaW5lIFBMTF9G Q0xLX01BWF9GUkVRCTI0MDAwMDAwMDBVTAo+PiArI2RlZmluZSBQTExfRkNMS19NSU5fRlJFUQk2 MDAwMDAwMDBVTAo+PiArI2RlZmluZSBQTExfRkNMS09fTUFYX0ZSRVEJMjQwMDAwMDAwMFVMCj4+ ICsjZGVmaW5lIFBMTF9GQ0xLT19NSU5fRlJFUQk4NTcwMDAwMFVMCj4gSWYgdGhlcmUgYXJlIGlu IEh6LCB0aGVyZSB3b3VsZCBiZSBzb21ldGhpbmcgaW4gaW5jbHVkZS9saW51eC91bml0cy5oIHRv Cj4gcmVkdWNlIHRoZSBudW1iZXIgb2YgemVyb3MgaGVyZS4KCk9rYXksIEkgd2lsbCBmaXggaXQu Cj4+ICsjZGVmaW5lIFBMTF9TU19SQVRFCQkweDc3Cj4+ICsjZGVmaW5lIFBMTF9TTE9QRQkJMHg1 OENGQQo+PiArCj4+ICsjZGVmaW5lIFJFR19QTExfQ1RMMF9PRkZTRVQJMHgwCj4+ICsjZGVmaW5l IFJFR19QTExfQ1RMMV9PRkZTRVQJMHg0Cj4+ICsjZGVmaW5lIFJFR19QTExfQ1RMMl9PRkZTRVQJ MHg4Cj4+ICsKPj4gKy8qIGJpdCBmaWVsZHMgZm9yIFJFR19DTEtfUExMMENUTDAsIHdoaWNoIGlz IFNNSUMgUExMIGRlc2lnbiAqLwo+PiArI2RlZmluZSBTUExMMF9DVEwwX0ZCRElWCUdFTk1BU0so NywgMCkKPj4gKyNkZWZpbmUgU1BMTDBfQ1RMMF9JTkRJVglHRU5NQVNLKDExLCA4KQo+PiArI2Rl ZmluZSBTUExMMF9DVEwwX09VVERJVglHRU5NQVNLKDEzLCAxMikKPj4gKyNkZWZpbmUgU1BMTDBf Q1RMMF9QRAkJQklUKDE2KQo+PiArI2RlZmluZSBTUExMMF9DVEwwX0JQCQlCSVQoMTcpCj4+ICsK Pj4gKy8qIGJpdCBmaWVsZHMgZm9yIFJFR19DTEtfUExMeENUTDAgfiBSRUdfQ0xLX1BMTHhDVEwy LCB3aGVyZSB4ID0gMiB+IDUgKi8KPj4gKyNkZWZpbmUgUExMX0NUTDBfRkJESVYJCUdFTk1BU0so MTAsIDApCj4+ICsjZGVmaW5lIFBMTF9DVEwwX0lORElWCQlHRU5NQVNLKDE3LCAxMikKPj4gKyNk ZWZpbmUgUExMX0NUTDBfTU9ERQkJR0VOTUFTSygxOSwgMTgpCj4+ICsjZGVmaW5lIFBMTF9DVEww X1NTUkFURQkJR0VOTUFTSygzMCwgMjApCj4+ICsjZGVmaW5lIFBMTF9DVEwxX1BECQlCSVQoMCkK Pj4gKyNkZWZpbmUgUExMX0NUTDFfQlAJCUJJVCgxKQo+PiArI2RlZmluZSBQTExfQ1RMMV9PVVRE SVYJCUdFTk1BU0soNiwgNCkKPj4gKyNkZWZpbmUgUExMX0NUTDFfRlJBQwkJR0VOTUFTSygzMSwg MjQpCj4+ICsjZGVmaW5lIFBMTF9DVEwyX1NMT1BFCQlHRU5NQVNLKDIzLCAwKQo+PiArCj4+ICsj ZGVmaW5lIElORElWX01JTgkJMQo+PiArI2RlZmluZSBJTkRJVl9NQVgJCTYzCj4+ICsjZGVmaW5l IEZCRElWX01JTgkJMTYKPj4gKyNkZWZpbmUgRkJESVZfTUFYCQkyMDQ3Cj4+ICsjZGVmaW5lIEZC RElWX0ZSQUNfTUlOCQkxNjAwCj4+ICsjZGVmaW5lIEZCRElWX0ZSQUNfTUFYCQkyMDQ3MDAKPj4g KyNkZWZpbmUgT1VURElWX01JTgkJMQo+PiArI2RlZmluZSBPVVRESVZfTUFYCQk3Cj4+ICsKPj4g KyNkZWZpbmUgUExMX01PREVfSU5UICAgICAgICAgICAgMAo+PiArI2RlZmluZSBQTExfTU9ERV9G UkFDICAgICAgICAgICAxCj4+ICsjZGVmaW5lIFBMTF9NT0RFX1NTICAgICAgICAgICAgIDIKPj4g Kwo+PiArc3RydWN0IG1hMzVkMV9jbGtfcGxsIHsKPj4gKwlzdHJ1Y3QgY2xrX2h3IGh3Owo+PiAr CXUzMiBpZDsKPj4gKwl1OCBtb2RlOwo+PiArCXZvaWQgX19pb21lbSAqY3RsMF9iYXNlOwo+PiAr CXZvaWQgX19pb21lbSAqY3RsMV9iYXNlOwo+PiArCXZvaWQgX19pb21lbSAqY3RsMl9iYXNlOwo+ PiArfTsKPj4gKwo+PiArc3RydWN0IGNsa19odyAqbWEzNWQxX3JlZ19jbGtfcGxsKHN0cnVjdCBk ZXZpY2UgKmRldiwgdTMyIGlkLCB1OCB1OG1vZGUsIGNvbnN0IGNoYXIgKm5hbWUsCj4+ICsJCQkJ ICBzdHJ1Y3QgY2xrX2h3ICpwYXJlbnRfaHcsIHZvaWQgX19pb21lbSAqYmFzZSk7Cj4+ICsKPj4g K3N0YXRpYyBpbmxpbmUgc3RydWN0IG1hMzVkMV9jbGtfcGxsICp0b19tYTM1ZDFfY2xrX3BsbChz dHJ1Y3QgY2xrX2h3ICpfaHcpCj4+ICt7Cj4+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihfaHcsIHN0 cnVjdCBtYTM1ZDFfY2xrX3BsbCwgaHcpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdW5zaWduZWQg bG9uZyBtYTM1ZDFfY2FsY19zbWljX3BsbF9mcmVxKHUzMiBwbGwwX2N0bDAsCj4+ICsJCQkJCSAg ICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKQo+PiArewo+PiArCXUzMiBtLCBuLCBwLCBv dXRkaXY7Cj4+ICsJdTY0IHBsbF9mcmVxOwo+PiArCWNvbnN0IHUzMiBjbGtfZGl2X3RhYmxlW10g PSB7IDEsIDIsIDQsIDggfTsKPj4gKwo+PiArCWlmIChwbGwwX2N0bDAgJiBTUExMMF9DVEwwX0JQ KQo+PiArCQlyZXR1cm4gcGFyZW50X3JhdGU7Cj4+ICsKPj4gKwluID0gRklFTERfR0VUKFNQTEww X0NUTDBfRkJESVYsIHBsbDBfY3RsMCk7Cj4+ICsJbSA9IEZJRUxEX0dFVChTUExMMF9DVEwwX0lO RElWLCBwbGwwX2N0bDApOwo+PiArCXAgPSBGSUVMRF9HRVQoU1BMTDBfQ1RMMF9PVVRESVYsIHBs bDBfY3RsMCk7Cj4+ICsJb3V0ZGl2ID0gY2xrX2Rpdl90YWJsZVtwXTsKPj4gKwlwbGxfZnJlcSA9 ICh1NjQpcGFyZW50X3JhdGUgKiBuOwo+PiArCWRvX2RpdihwbGxfZnJlcSwgbSAqIG91dGRpdik7 Cj4+ICsJcmV0dXJuIHBsbF9mcmVxOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdW5zaWduZWQgbG9u ZyBtYTM1ZDFfY2FsY19wbGxfZnJlcSh1OCBtb2RlLCB1MzIgKnJlZ19jdGwsCj4+ICsJCQkJCSAg dW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSkKPj4gK3sKPj4gKwl1MzIgbSwgbiwgcDsKPj4gKwl1 NjQgcGxsX2ZyZXEsIHg7Cj4+ICsKPj4gKwlpZiAocmVnX2N0bFsxXSAmIFBMTF9DVEwxX0JQKQo+ PiArCQlyZXR1cm4gcGFyZW50X3JhdGU7Cj4+ICsKPj4gKwluID0gRklFTERfR0VUKFBMTF9DVEww X0ZCRElWLCByZWdfY3RsWzBdKTsKPj4gKwltID0gRklFTERfR0VUKFBMTF9DVEwwX0lORElWLCBy ZWdfY3RsWzBdKTsKPj4gKwlwID0gRklFTERfR0VUKFBMTF9DVEwxX09VVERJViwgcmVnX2N0bFsx XSk7Cj4+ICsKPj4gKwlpZiAobW9kZSA9PSBQTExfTU9ERV9JTlQpIHsKPj4gKwkJcGxsX2ZyZXEg PSAodTY0KXBhcmVudF9yYXRlICogbjsKPj4gKwkJZG9fZGl2KHBsbF9mcmVxLCBtICogcCk7Cj4+ ICsJfSBlbHNlIHsKPj4gKwkJeCA9IEZJRUxEX0dFVChQTExfQ1RMMV9GUkFDLCByZWdfY3RsWzFd KTsKPj4gKwkJLyogMiBkZWNpbWFsIHBsYWNlcyBmbG9hdGluZyB0byBpbnRlZ2VyIChleC4gMS4y MyB0byAxMjMpICovCj4+ICsJCW4gPSBuICogMTAwICsgKCh4ICogMTAwKSAvIEZJRUxEX01BWChQ TExfQ1RMMV9GUkFDKSk7Cj4+ICsJCXBsbF9mcmVxID0gKCh1NjQpcGFyZW50X3JhdGUgKiBuKSAv IDEwMCAvIG0gLyBwOwo+IERvbid0IHJlbHkgb24gY29tcGlsZXIsIHlvdSBuZWVkIHRvIHVzZSBj b3JyZWN0IGZ1Y3Rpb24gdG8gZG8gYW55Cj4gNjQtYml0IGRpdmlkZS4gQWxzbywgeW91IHByb2Jh Ymx5IHdhbnQgdG8gZG8ganVzdCBvbmUgZGl2aWRlLgoKSSB3aWxsIGZpeCBpdC4KCj4+ICsJfQo+ PiArCXJldHVybiBwbGxfZnJlcTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBtYTM1ZDFfcGxs X2ZpbmRfY2xvc2VzdChzdHJ1Y3QgbWEzNWQxX2Nsa19wbGwgKnBsbCwgdW5zaWduZWQgbG9uZyBy YXRlLAo+PiArCQkJCSAgIHVuc2lnbmVkIGxvbmcgcGFyZW50X3JhdGUsIHUzMiAqcmVnX2N0bCwK Pj4gKwkJCQkgICB1bnNpZ25lZCBsb25nICpmcmVxKQo+PiArewo+PiArCWludCBwLCBtLCBuOwo+ PiArCWludCBmYmRpdl9taW4sIGZiZGl2X21heDsKPj4gKwl1bnNpZ25lZCBsb25nIGRpZmYgPSAw eGZmZmZmZmZmOwo+IEknbSBqdXN0IG5vdGluZyB0aGF0IHRoaXMgaXMgbm90IHRoZSBtYXhpbXVt IHZhbHVlIG9mIHVuc2lnbmVkIGxvbmcgd2l0aAo+IDY0LWJpdCBsb25ncy4gSXQgaXMgcHJvYmFi bHkgY29ycmVjdCBhcyBpcyAoMzItYml0IGxpbWl0ZXIpIGJ1dCBwbGVhc2UKPiBkb3VibGUgY2hl Y2sgaXQgZG9lcyB3aGF0IHlvdSBpbnRlbmRlZC4KCkhlcmUgd2UganVzdCB3YW50IHRvIHByb3Zp ZGUgZGlmZiB3aXRoIGFuIGluaXRpYWwgdmFsdWUgZm9yIGNvbXBhcmlzb24sIAp3aGljaCBpcwph bHJlYWR5IGZhciBiZXlvbmQgdGhlIHJlYXNvbmFibGUgcmFuZ2UsIHNvIGl0IHNob3VsZCBiZSBz dWZmaWNpZW50LgoKPj4gKwo+PiArCSpmcmVxID0gMDsKPj4gKwlpZiAocmF0ZSA8IFBMTF9GQ0xL T19NSU5fRlJFUSB8fCByYXRlID4gUExMX0ZDTEtPX01BWF9GUkVRKQo+PiArCQlyZXR1cm4gLUVJ TlZBTDsKPj4gKwo+PiArCWlmIChwbGwtPm1vZGUgPT0gUExMX01PREVfSU5UKSB7Cj4+ICsJCWZi ZGl2X21pbiA9IEZCRElWX01JTjsKPj4gKwkJZmJkaXZfbWF4ID0gRkJESVZfTUFYOwo+PiArCX0g ZWxzZSB7Cj4+ICsJCWZiZGl2X21pbiA9IEZCRElWX0ZSQUNfTUlOOwo+PiArCQlmYmRpdl9tYXgg PSBGQkRJVl9GUkFDX01BWDsKPj4gKwl9Cj4+ICsKPj4gKwlmb3IgKG0gPSBJTkRJVl9NSU47IG0g PD0gSU5ESVZfTUFYOyBtKyspIHsKPj4gKwkJZm9yIChuID0gZmJkaXZfbWluOyBuIDw9IGZiZGl2 X21heDsgbisrKSB7Cj4+ICsJCQlmb3IgKHAgPSBPVVRESVZfTUlOOyBwIDw9IE9VVERJVl9NQVg7 IHArKykgewo+PiArCQkJCXVuc2lnbmVkIGxvbmcgdG1wLCBmb3V0Owo+PiArCQkJCXU2NCBmY2xr Owo+PiArCj4+ICsJCQkJdG1wID0gcGFyZW50X3JhdGUgLyBtOwo+IDY0LWJpdCBkaXZpZGUgc2hv dWxkbid0IGJlIGxlZnQgdG8gY29tcGlsZXIsIHVzZSBhIDY0LWJpdCBoZWxwZXIgZnVuY3Rpb24u CgpPa2F5LCBJIHdpbGwgdXNlIGhlbHBlciBmdW5jdGlvbnMgaW5zdGVhZC4KCj4+ICsJCQkJaWYg KHRtcCA8IFBMTF9GUkVGX01fTUlOX0ZSRVEgfHwKPj4gKwkJCQkgICAgdG1wID4gUExMX0ZSRUZf TV9NQVhfRlJFUSkKPj4gKwkJCQkJY29udGludWU7IC8qIGNvbnN0cmFpbiAqLwo+PiArCj4+ICsJ CQkJZmNsayA9ICh1NjQpcGFyZW50X3JhdGUgKiBuIC8gbTsKPiBEaXR0by4KPgo+PiArCQkJCS8q IGZvciAyIGRlY2ltYWwgcGxhY2VzICovCj4+ICsJCQkJaWYgKHBsbC0+bW9kZSAhPSBQTExfTU9E RV9JTlQpCj4+ICsJCQkJCWZjbGsgLz0gMTAwOwo+IERpdHRvLgo+Cj4+ICsKPj4gKwkJCQlpZiAo ZmNsayA8IFBMTF9GQ0xLX01JTl9GUkVRIHx8Cj4+ICsJCQkJICAgIGZjbGsgPiBQTExfRkNMS19N QVhfRlJFUSkKPj4gKwkJCQkJY29udGludWU7IC8qIGNvbnN0cmFpbiAqLwo+PiArCj4+ICsJCQkJ Zm91dCA9ICh1bnNpZ25lZCBsb25nKShmY2xrIC8gcCk7Cj4+ICsJCQkJaWYgKGZvdXQgPCBQTExf RkNMS09fTUlOX0ZSRVEgfHwKPj4gKwkJCQkgICAgZm91dCA+IFBMTF9GQ0xLT19NQVhfRlJFUSkK Pj4gKwkJCQkJY29udGludWU7IC8qIGNvbnN0cmFpbiAqLwo+PiArCj4+ICsJCQkJaWYgKGFicyhy YXRlIC0gZm91dCkgPCBkaWZmKSB7Cj4gZGlmZiA9IGFicyhyYXRlIC0gZm91dCk7Cj4gaWYgKGRp ZmYgPCBtaW5fZGlmZikgewoKPgo+PiArCQkJCQlyZWdfY3RsWzBdID0gRklFTERfUFJFUChQTExf Q1RMMF9JTkRJViwgbSkgfAo+PiArCQkJCQkJICAgICBGSUVMRF9QUkVQKFBMTF9DVEwwX0ZCRElW LCBuKTsKPj4gKwkJCQkJcmVnX2N0bFsxXSA9IEZJRUxEX1BSRVAoUExMX0NUTDFfT1VURElWLCBw KTsKPj4gKwkJCQkJKmZyZXEgPSBmb3V0Owo+PiArCQkJCQlkaWZmID0gYWJzKHJhdGUgLSBmb3V0 KTsKPj4gKwkJCQkJaWYgKGRpZmYgPT0gMCkKPiBtaW5fZGlmZiA9IGRpZmY7Cj4gaWYgKG1pbl9k aWZmID09IDApCj4KPiBZb3UgbmVlZCB0byBhZGQgdGhlIG1pbl9kaWZmIHZhcmlhYmxlLiBQZXJo YXBzIG1vdmUgZGlmZiB2YXJpYWJsZSBsb2NhbCB0bwo+IHRoaXMgYmxvY2suCgpTdXJlLCBJIHdp bGwgYWRkIGEgbWluX2RpZmYgdmFyaWFibGUgdG8gbWFrZSB0aGUgY29kZSBtb3JlIHJlYWRhYmxl LgoKPj4gKwkJCQkJCWJyZWFrOwo+PiArCQkJCX0KPj4gKwkJCX0KPj4gKwkJfQo+PiArCX0KPj4g KwlpZiAoKmZyZXEgPT0gMCkKPj4gKwkJcmV0dXJuIC1FSU5WQUw7IC8qIGNhbm5vdCBmaW5kIGV2 ZW4gb25lIHZhbGlkIHNldHRpbmcgKi8KPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3Rh dGljIGludCBtYTM1ZDFfY2xrX3BsbF9zZXRfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5zaWdu ZWQgbG9uZyByYXRlLAo+PiArCQkJCSAgIHVuc2lnbmVkIGxvbmcgcGFyZW50X3JhdGUpCj4+ICt7 Cj4+ICsJc3RydWN0IG1hMzVkMV9jbGtfcGxsICpwbGwgPSB0b19tYTM1ZDFfY2xrX3BsbChodyk7 Cj4+ICsJdTMyIHJlZ19jdGxbM10gPSB7IDAgfTsKPj4gKwl1bnNpZ25lZCBsb25nIHBsbF9mcmVx Owo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlpZiAocGFyZW50X3JhdGUgPCBQTExfRlJFRl9NSU5f RlJFUSB8fAo+PiArCSAgICBwYXJlbnRfcmF0ZSA+IFBMTF9GUkVGX01BWF9GUkVRKQo+PiArCQly ZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArCXJldCA9IG1hMzVkMV9wbGxfZmluZF9jbG9zZXN0KHBs bCwgcmF0ZSwgcGFyZW50X3JhdGUsIHJlZ19jdGwsICZwbGxfZnJlcSk7Cj4+ICsJaWYgKHJldCAh PSAwKQo+PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJc3dpdGNoIChwbGwtPm1vZGUpIHsKPj4g KwljYXNlIFBMTF9NT0RFX0lOVDoKPj4gKwkJcmVnX2N0bFswXSB8PSBGSUVMRF9QUkVQKFBMTF9D VEwwX01PREUsIFBMTF9NT0RFX0lOVCk7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2UgUExMX01PREVf RlJBQzoKPj4gKwkJcmVnX2N0bFswXSB8PSBGSUVMRF9QUkVQKFBMTF9DVEwwX01PREUsIFBMTF9N T0RFX0ZSQUMpOwo+PiArCQlicmVhazsKPj4gKwljYXNlIFBMTF9NT0RFX1NTOgo+PiArCQlyZWdf Y3RsWzBdIHw9IEZJRUxEX1BSRVAoUExMX0NUTDBfTU9ERSwgUExMX01PREVfU1MpIHwKPj4gKwkJ CSAgICAgIEZJRUxEX1BSRVAoUExMX0NUTDBfU1NSQVRFLCBQTExfU1NfUkFURSk7Cj4+ICsJCXJl Z19jdGxbMl0gPSBGSUVMRF9QUkVQKFBMTF9DVEwyX1NMT1BFLCBQTExfU0xPUEUpOwo+PiArCQli cmVhazsKPj4gKwl9Cj4+ICsJcmVnX2N0bFsxXSB8PSBQTExfQ1RMMV9QRDsKPj4gKwo+PiArCXdy aXRlbF9yZWxheGVkKHJlZ19jdGxbMF0sIHBsbC0+Y3RsMF9iYXNlKTsKPj4gKwl3cml0ZWxfcmVs YXhlZChyZWdfY3RsWzFdLCBwbGwtPmN0bDFfYmFzZSk7Cj4+ICsJd3JpdGVsX3JlbGF4ZWQocmVn X2N0bFsyXSwgcGxsLT5jdGwyX2Jhc2UpOwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtz dGF0aWMgdW5zaWduZWQgbG9uZyBtYTM1ZDFfY2xrX3BsbF9yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xr X2h3ICpodywKPj4gKwkJCQkJCXVuc2lnbmVkIGxvbmcgcGFyZW50X3JhdGUpCj4+ICt7Cj4+ICsJ c3RydWN0IG1hMzVkMV9jbGtfcGxsICpwbGwgPSB0b19tYTM1ZDFfY2xrX3BsbChodyk7Cj4+ICsJ dTMyIHJlZ19jdGxbM107Cj4+ICsJdW5zaWduZWQgbG9uZyBwbGxfZnJlcTsKPj4gKwo+PiArCWlm IChwYXJlbnRfcmF0ZSA8IFBMTF9GUkVGX01JTl9GUkVRIHx8IHBhcmVudF9yYXRlID4gUExMX0ZS RUZfTUFYX0ZSRVEpCj4+ICsJCXJldHVybiAwOwo+PiArCj4+ICsJc3dpdGNoIChwbGwtPmlkKSB7 Cj4+ICsJY2FzZSBDQVBMTDoKPj4gKwkJcmVnX2N0bFswXSA9IHJlYWRsX3JlbGF4ZWQocGxsLT5j dGwwX2Jhc2UpOwo+PiArCQlwbGxfZnJlcSA9IG1hMzVkMV9jYWxjX3NtaWNfcGxsX2ZyZXEocmVn X2N0bFswXSwgcGFyZW50X3JhdGUpOwo+PiArCQlyZXR1cm4gcGxsX2ZyZXE7Cj4+ICsJY2FzZSBE RFJQTEw6Cj4+ICsJY2FzZSBBUExMOgo+PiArCWNhc2UgRVBMTDoKPj4gKwljYXNlIFZQTEw6Cj4+ ICsJCXJlZ19jdGxbMF0gPSByZWFkbF9yZWxheGVkKHBsbC0+Y3RsMF9iYXNlKTsKPj4gKwkJcmVn X2N0bFsxXSA9IHJlYWRsX3JlbGF4ZWQocGxsLT5jdGwxX2Jhc2UpOwo+PiArCQlwbGxfZnJlcSA9 IG1hMzVkMV9jYWxjX3BsbF9mcmVxKHBsbC0+bW9kZSwgcmVnX2N0bCwgcGFyZW50X3JhdGUpOwo+ PiArCQlyZXR1cm4gcGxsX2ZyZXE7Cj4+ICsJfQo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ ICtzdGF0aWMgbG9uZyBtYTM1ZDFfY2xrX3BsbF9yb3VuZF9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3 LCB1bnNpZ25lZCBsb25nIHJhdGUsCj4+ICsJCQkJICAgICAgdW5zaWduZWQgbG9uZyAqcGFyZW50 X3JhdGUpCj4+ICt7Cj4+ICsJc3RydWN0IG1hMzVkMV9jbGtfcGxsICpwbGwgPSB0b19tYTM1ZDFf Y2xrX3BsbChodyk7Cj4+ICsJdTMyIHJlZ19jdGxbM10gPSB7IDAgfTsKPj4gKwl1bnNpZ25lZCBs b25nIHBsbF9mcmVxOwo+PiArCWxvbmcgcmV0Owo+PiArCj4+ICsJaWYgKCpwYXJlbnRfcmF0ZSA8 IFBMTF9GUkVGX01JTl9GUkVRIHx8ICpwYXJlbnRfcmF0ZSA+IFBMTF9GUkVGX01BWF9GUkVRKQo+ PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArCXJldCA9IG1hMzVkMV9wbGxfZmluZF9jbG9z ZXN0KHBsbCwgcmF0ZSwgKnBhcmVudF9yYXRlLCByZWdfY3RsLCAmcGxsX2ZyZXEpOwo+PiArCWlm IChyZXQgIT0gMCkKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwo+PiArCXN3aXRjaCAocGxsLT5pZCkg ewo+PiArCWNhc2UgQ0FQTEw6Cj4+ICsJCXJlZ19jdGxbMF0gPSByZWFkbF9yZWxheGVkKHBsbC0+ Y3RsMF9iYXNlKTsKPj4gKwkJcGxsX2ZyZXEgPSBtYTM1ZDFfY2FsY19zbWljX3BsbF9mcmVxKHJl Z19jdGxbMF0sICpwYXJlbnRfcmF0ZSk7Cj4+ICsJCXJldHVybiBwbGxfZnJlcTsKPj4gKwljYXNl IEREUlBMTDoKPj4gKwljYXNlIEFQTEw6Cj4+ICsJY2FzZSBFUExMOgo+PiArCWNhc2UgVlBMTDoK Pj4gKwkJcmVnX2N0bFswXSA9IHJlYWRsX3JlbGF4ZWQocGxsLT5jdGwwX2Jhc2UpOwo+PiArCQly ZWdfY3RsWzFdID0gcmVhZGxfcmVsYXhlZChwbGwtPmN0bDFfYmFzZSk7Cj4+ICsJCXBsbF9mcmVx ID0gbWEzNWQxX2NhbGNfcGxsX2ZyZXEocGxsLT5tb2RlLCByZWdfY3RsLCAqcGFyZW50X3JhdGUp Owo+PiArCQlyZXR1cm4gcGxsX2ZyZXE7Cj4+ICsJfQo+PiArCXJldHVybiAwOwo+PiArfQo+PiAr Cj4+ICtzdGF0aWMgaW50IG1hMzVkMV9jbGtfcGxsX2lzX3ByZXBhcmVkKHN0cnVjdCBjbGtfaHcg Kmh3KQo+PiArewo+PiArCXN0cnVjdCBtYTM1ZDFfY2xrX3BsbCAqcGxsID0gdG9fbWEzNWQxX2Ns a19wbGwoaHcpOwo+PiArCXUzMiB2YWwgPSByZWFkbF9yZWxheGVkKHBsbC0+Y3RsMV9iYXNlKTsK Pj4gKwo+PiArCXJldHVybiB2YWwgJiBQTExfQ1RMMV9QRCA/IDAgOiAxOwo+IHJldHVybiAhKHZh bCAmIFBMTF9DVEwxX1BEKTsKCkkgd2lsbCBmaXggaXQuCgo+PiArfQo+PiArCj4+ICtzdGF0aWMg aW50IG1hMzVkMV9jbGtfcGxsX3ByZXBhcmUoc3RydWN0IGNsa19odyAqaHcpCj4+ICt7Cj4+ICsJ c3RydWN0IG1hMzVkMV9jbGtfcGxsICpwbGwgPSB0b19tYTM1ZDFfY2xrX3BsbChodyk7Cj4+ICsJ dTMyIHZhbDsKPj4gKwo+PiArCXZhbCA9IHJlYWRsX3JlbGF4ZWQocGxsLT5jdGwxX2Jhc2UpOwo+ PiArCXZhbCAmPSB+UExMX0NUTDFfUEQ7Cj4+ICsJd3JpdGVsX3JlbGF4ZWQodmFsLCBwbGwtPmN0 bDFfYmFzZSk7Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIG1hMzVk MV9jbGtfcGxsX3VucHJlcGFyZShzdHJ1Y3QgY2xrX2h3ICpodykKPj4gK3sKPj4gKwlzdHJ1Y3Qg bWEzNWQxX2Nsa19wbGwgKnBsbCA9IHRvX21hMzVkMV9jbGtfcGxsKGh3KTsKPj4gKwl1MzIgdmFs Owo+PiArCj4+ICsJdmFsID0gcmVhZGxfcmVsYXhlZChwbGwtPmN0bDFfYmFzZSk7Cj4+ICsJdmFs IHw9IFBMTF9DVEwxX1BEOwo+PiArCXdyaXRlbF9yZWxheGVkKHZhbCwgcGxsLT5jdGwxX2Jhc2Up Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgbWEzNWQxX2Nsa19w bGxfb3BzID0gewo+PiArCS5pc19wcmVwYXJlZCA9IG1hMzVkMV9jbGtfcGxsX2lzX3ByZXBhcmVk LAo+PiArCS5wcmVwYXJlID0gbWEzNWQxX2Nsa19wbGxfcHJlcGFyZSwKPj4gKwkudW5wcmVwYXJl ID0gbWEzNWQxX2Nsa19wbGxfdW5wcmVwYXJlLAo+PiArCS5zZXRfcmF0ZSA9IG1hMzVkMV9jbGtf cGxsX3NldF9yYXRlLAo+PiArCS5yZWNhbGNfcmF0ZSA9IG1hMzVkMV9jbGtfcGxsX3JlY2FsY19y YXRlLAo+PiArCS5yb3VuZF9yYXRlID0gbWEzNWQxX2Nsa19wbGxfcm91bmRfcmF0ZSwKPj4gK307 Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBtYTM1ZDFfY2xrX2ZpeGVkX3Bs bF9vcHMgPSB7Cj4+ICsJLnJlY2FsY19yYXRlID0gbWEzNWQxX2Nsa19wbGxfcmVjYWxjX3JhdGUs Cj4+ICsJLnJvdW5kX3JhdGUgPSBtYTM1ZDFfY2xrX3BsbF9yb3VuZF9yYXRlLAo+PiArfTsKPj4g Kwo+PiArc3RydWN0IGNsa19odyAqbWEzNWQxX3JlZ19jbGtfcGxsKHN0cnVjdCBkZXZpY2UgKmRl diwgdTMyIGlkLCB1OCB1OG1vZGUsIGNvbnN0IGNoYXIgKm5hbWUsCj4+ICsJCQkJICBzdHJ1Y3Qg Y2xrX2h3ICpwYXJlbnRfaHcsIHZvaWQgX19pb21lbSAqYmFzZSkKPj4gK3sKPj4gKwlzdHJ1Y3Qg bWEzNWQxX2Nsa19wbGwgKnBsbDsKPj4gKwlzdHJ1Y3QgY2xrX3BhcmVudF9kYXRhIHBkYXRhID0g eyAuaW5kZXggPSAwIH07Cj4+ICsJc3RydWN0IGNsa19odyAqaHc7Cj4+ICsJc3RydWN0IGNsa19p bml0X2RhdGEgaW5pdDsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJcGxsID0gZGV2bV9remFsbG9j KGRldiwgc2l6ZW9mKCpwbGwpLCBHRlBfS0VSTkVMKTsKPj4gKwlpZiAoIXBsbCkKPj4gKwkJcmV0 dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4+ICsKPj4gKwlwbGwtPmlkID0gaWQ7Cj4+ICsJcGxsLT5t b2RlID0gdThtb2RlOwo+PiArCXBsbC0+Y3RsMF9iYXNlID0gYmFzZSArIFJFR19QTExfQ1RMMF9P RkZTRVQ7Cj4+ICsJcGxsLT5jdGwxX2Jhc2UgPSBiYXNlICsgUkVHX1BMTF9DVEwxX09GRlNFVDsK Pj4gKwlwbGwtPmN0bDJfYmFzZSA9IGJhc2UgKyBSRUdfUExMX0NUTDJfT0ZGU0VUOwo+PiArCj4+ ICsJbWVtc2V0KCZpbml0LCAwLCBzaXplb2YoaW5pdCkpOwo+IEFkZCA9IHt9IHRvIHRoZSBkZWNs YXJhdGlvbiBpbnN0ZWFkIHRvIGdldCBpdCBpbml0aWFsaXplZC4KCk9rYXksIEkgd2lsbCBmaXgg aXQuCgo+PiArCWluaXQubmFtZSA9IG5hbWU7Cj4+ICsJaW5pdC5mbGFncyA9IDA7Cj4+ICsJcGRh dGEuaHcgPSBwYXJlbnRfaHc7Cj4+ICsJaW5pdC5wYXJlbnRfZGF0YSA9ICZwZGF0YTsKPj4gKwlp bml0Lm51bV9wYXJlbnRzID0gMTsKPj4gKwo+PiArCWlmIChpZCA9PSBDQVBMTCB8fCBpZCA9PSBE RFJQTEwpCj4+ICsJCWluaXQub3BzID0gJm1hMzVkMV9jbGtfZml4ZWRfcGxsX29wczsKPj4gKwll bHNlCj4+ICsJCWluaXQub3BzID0gJm1hMzVkMV9jbGtfcGxsX29wczsKPj4gKwo+PiArCXBsbC0+ aHcuaW5pdCA9ICZpbml0Owo+PiArCWh3ID0gJnBsbC0+aHc7Cj4+ICsKPj4gKwlyZXQgPSBkZXZt X2Nsa19od19yZWdpc3RlcihkZXYsIGh3KTsKPj4gKwlpZiAocmV0KQo+PiArCQlyZXR1cm4gRVJS X1BUUihyZXQpOwo+PiArCXJldHVybiBodzsKPj4gK30KPj4gK0VYUE9SVF9TWU1CT0xfR1BMKG1h MzVkMV9yZWdfY2xrX3BsbCk7Cj4+ICtzdGF0aWMgaW50IG1hMzVkMV9jbG9ja3NfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gK3sKPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYg PSAmcGRldi0+ZGV2Owo+PiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqY2xrX25vZGUgPSBwZGV2LT5k ZXYub2Zfbm9kZTsKPj4gKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9IHBsYXRmb3JtX2dldF9yZXNv dXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4+ICsJdm9pZCBfX2lvbWVtICpjbGtfYmFz ZTsKPj4gKwlzdGF0aWMgc3RydWN0IGNsa19odyAqKmh3czsKPj4gKwlzdGF0aWMgc3RydWN0IGNs a19od19vbmVjZWxsX2RhdGEgKm1hMzVkMV9od19kYXRhOwo+PiArCXUzMiBwbGxtb2RlW1BMTF9N QVhfTlVNXTsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJbWEzNWQxX2h3X2RhdGEgPSBkZXZtX2t6 YWxsb2MoZGV2LCBzdHJ1Y3Rfc2l6ZShtYTM1ZDFfaHdfZGF0YSwKPj4gKwkJCQkgICAgICBod3Ms IENMS19NQVhfSURYKSwgR0ZQX0tFUk5FTCk7Cj4gTm90IGEgZ29vZCBzcGxpdCBvZiBsaW5lcyBo ZXJlLCBzdHJ1Y3Rfc2l6ZSgpIHNob3VsZG4ndCBiZSBzcGxpdCBsaWtlCj4gdGhhdCB3cnQuIGFs aWdubWVudC4KCkkgd2lsbCBtYWtlIGl0IGluIG9uZSBsaW5lLgoKPj4gKwlpZiAoV0FSTl9PTigh bWEzNWQxX2h3X2RhdGEpKQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArCW1hMzVkMV9o d19kYXRhLT5udW0gPSBDTEtfTUFYX0lEWDsKPj4gKwlod3MgPSBtYTM1ZDFfaHdfZGF0YS0+aHdz Owo+PiArCj4+ICsJY2xrX2Jhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOwo+ PiArCWlmIChJU19FUlIoY2xrX2Jhc2UpKQo+PiArCQlyZXR1cm4gUFRSX0VSUihjbGtfYmFzZSk7 Cj4+ICsKPj4gKwlyZXQgPSBtYTM1ZDFfZ2V0X3BsbF9zZXR0aW5nKGNsa19ub2RlLCBwbGxtb2Rl KTsKPj4gKwlpZiAocmV0IDwgMCkgewo+PiArCQlkZXZfZXJyKGRldiwgIkludmFsaWQgUExMIHNl dHRpbmchXG4iKTsKPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsJfQo+PiArCj4gWy4uLnNuaXAu Li5dCj4KPiBTb21ld2hlcmUgaW4gdGhlIG1pZGRsZSwgSSByZWFsaXplZCB0aGlzIHBhdGNoIG11 c3QgaGF2ZSBiZWVuIHRoZQo+IHVucmVhZGFibGUgbWVzcyBvbmUgSSByZXZpZXdlZCBlYXJsaWVy LiAuLi5JdCBzdXJlIGhhcyBjb21lIGxvbmcgd2F5IGZyb20KPiB0aGF0LCBpdCdzIHNvIG11Y2gg ZWFzaWVyIHRvIHJlYWQgbm93LiBHcmVhdCB3b3JrIHNvIGZhci4KPgpUaGFuayB5b3UgZm9yIHlv dXIga2luZCBoZWxwLgoKCkJlc3QgUmVnYXJkcywKSmFja3kgSHVhbmcKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxp bmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==