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 AD8C8CA0EED for ; Fri, 30 Aug 2024 08:30:56 +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:Reply-To:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:References:Cc:To:Subject: From:MIME-Version:Date:Message-ID:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=lkD2Mc9LYHzw6fL37wFcPxFTd6kH0DZpqzqhf6XprFk=; b=pqhxyTWiAXiFZ9iX8K9QvD7Y2l OT95U7KOdBoRCVxqsJvvZYITOeF0tgVINbV771iUWIqNGzWVZpDrEiTTkU8KsvtLy6+ol7iAU+6Nn IlkOw6M7LC1rFdqfSpsVaJQEGdjLsjDRuMBSeNPWdhe3Sf+TnveMu8QC8grIZRb3rAGu55rAXZHzt fWiHWtONox3kxcx8QHSJYijaLBZNsVX59rG6fafnz4Ijy4XQPxiNICsf9R74BD4VozU8c7BSqmbZQ krEe7Q5VCzHUTGYj3lPonByBjfcpP/3IP+AIfVhLFpB7y2/Pf82q+zQGBgx0k83TdnWWH1imhDEKT wCdR+AmA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sjx1u-00000005MhI-0wQq; Fri, 30 Aug 2024 08:30:50 +0000 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sjx0o-00000005MFP-2qH8 for linux-amlogic@lists.infradead.org; Fri, 30 Aug 2024 08:29:44 +0000 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-428178fc07eso12832855e9.3 for ; Fri, 30 Aug 2024 01:29:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1725006581; x=1725611381; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:organization:autocrypt :content-language:references:cc:to:subject:reply-to:from:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=+SzvKOM/JSsW0tgjDruIfdyEsxP+sDRG2RGMT/4o0Mg=; b=UPrAy5Y+XXmQgK3nP8rsNujmGl+DBuzUGOl87NdfOqYmX49Uoo/ZjdNsmcF89gKy7Q v8tepHhecBtJiBQa0ithOhCRliERYSrHPq4pBKWX0+2P+LVFHwCFk6OL2TLQNCrpcomO Sd4AleVYzT4ofnM/rYz3c9zjNLvwg4hsHOR9ZaklOZELGnS5wtYVcS0oALS0vAGY/t28 dbLzDBVYDb1hR10g75cp/5mzgOsskQt39Z2Xy2I1WAsa4YHzkg1/WSHxYSk1hlbSBY5b ba1YZCF1fRozJZQsQ8LD3yAtoh/qdLWYBE5bUx8/LBe9AgUvaUzDqUU9+SGgeGoonxKa MGQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725006581; x=1725611381; h=content-transfer-encoding:in-reply-to:organization:autocrypt :content-language:references:cc:to:subject:reply-to:from:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=+SzvKOM/JSsW0tgjDruIfdyEsxP+sDRG2RGMT/4o0Mg=; b=JmhCBO4G+LmbtVhjg1NcoktfTcCPCYkUZdGCF7P7QYFjfu3Z54CEjpDxEJJlI2bZA1 8rHLYHhiDNAcCKXNtEsgpdHv33yYnUgUvTPtAzA2Vv2wVAbUCtYtHKSY/zp9Jm7DA8zj /WNWDQzeLBPJc/pr9LUIEDxq9LMD+O3QqODftbMaWfnIvIeQqtyLnqbl0VBrq8ccY2vV WvaE2yiZ3MC0/Qic1CPydGJmSj4PKyTyeyPa3uWH2eNzGPmkGjQ88+qcb0pUngQNdsMj 1q2d0ESEu4uRQnV9Q2ze0ftiUaHLLtUyhpokgYo/3d9XbrXDHDnVN1iTcr1UDOLIIQj0 uCHg== X-Forwarded-Encrypted: i=1; AJvYcCWf2yYtRtyCaZBM2vuC2XKhXYuI8rxTR3vlmiq9RRQG5d0QDHVD1bL0NGU5ANJNJiau8E+AS5yRa8n0wXQ/@lists.infradead.org X-Gm-Message-State: AOJu0Yzg0wbLfQdlOMEvyoKnGRaG/g4XlJa3aMmNcs39kSJ5/qTZ1je4 K3owUtcIgf8IZu/EK4ifIbzG1s45YTstcpJI+Y4ZZApdiubmnueUq10u4BpZaVs= X-Google-Smtp-Source: AGHT+IFoUkMVkTOqbujWLMD5K+wO64gF6D6RlTROwReBcUaf0Awn7bRQsjTP9kcP41qjHx0qFL3a1A== X-Received: by 2002:adf:a347:0:b0:367:8a00:fac3 with SMTP id ffacd0b85a97d-3749b5614b5mr3632676f8f.30.1725006580400; Fri, 30 Aug 2024 01:29:40 -0700 (PDT) Received: from ?IPV6:2a01:e0a:982:cbb0:5001:8e1b:dd18:1d3? ([2a01:e0a:982:cbb0:5001:8e1b:dd18:1d3]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-42bb6df0a42sm38270645e9.11.2024.08.30.01.29.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 30 Aug 2024 01:29:39 -0700 (PDT) Message-ID: Date: Fri, 30 Aug 2024 10:29:38 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: neil.armstrong@linaro.org Subject: Re: [PATCH] drm/meson: switch to a managed drm device To: Anastasia Belova Cc: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , dri-devel@lists.freedesktop.org, linux-amlogic@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, lvc-project@linuxtesting.org References: <20240828110421.14956-1-abelova@astralinux.ru> <64ef8b1d-40ab-4c10-b217-58a3e4cbf652@linaro.org> <62972d3a-0703-4ce7-b706-b94e1a740a76@astralinux.ru> Content-Language: en-US, fr Autocrypt: addr=neil.armstrong@linaro.org; keydata= xsBNBE1ZBs8BCAD78xVLsXPwV/2qQx2FaO/7mhWL0Qodw8UcQJnkrWmgTFRobtTWxuRx8WWP GTjuhvbleoQ5Cxjr+v+1ARGCH46MxFP5DwauzPekwJUD5QKZlaw/bURTLmS2id5wWi3lqVH4 BVF2WzvGyyeV1o4RTCYDnZ9VLLylJ9bneEaIs/7cjCEbipGGFlfIML3sfqnIvMAxIMZrvcl9 qPV2k+KQ7q+aXavU5W+yLNn7QtXUB530Zlk/d2ETgzQ5FLYYnUDAaRl+8JUTjc0CNOTpCeik 80TZcE6f8M76Xa6yU8VcNko94Ck7iB4vj70q76P/J7kt98hklrr85/3NU3oti3nrIHmHABEB AAHNKk5laWwgQXJtc3Ryb25nIDxuZWlsLmFybXN0cm9uZ0BsaW5hcm8ub3JnPsLAkQQTAQoA OwIbIwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgBYhBInsPQWERiF0UPIoSBaat7Gkz/iuBQJk Q5wSAhkBAAoJEBaat7Gkz/iuyhMIANiD94qDtUTJRfEW6GwXmtKWwl/mvqQtaTtZID2dos04 YqBbshiJbejgVJjy+HODcNUIKBB3PSLaln4ltdsV73SBcwUNdzebfKspAQunCM22Mn6FBIxQ GizsMLcP/0FX4en9NaKGfK6ZdKK6kN1GR9YffMJd2P08EO8mHowmSRe/ExAODhAs9W7XXExw UNCY4pVJyRPpEhv373vvff60bHxc1k/FF9WaPscMt7hlkbFLUs85kHtQAmr8pV5Hy9ezsSRa GzJmiVclkPc2BY592IGBXRDQ38urXeM4nfhhvqA50b/nAEXc6FzqgXqDkEIwR66/Gbp0t3+r yQzpKRyQif3OwE0ETVkGzwEIALyKDN/OGURaHBVzwjgYq+ZtifvekdrSNl8TIDH8g1xicBYp QTbPn6bbSZbdvfeQPNCcD4/EhXZuhQXMcoJsQQQnO4vwVULmPGgtGf8PVc7dxKOeta+qUh6+ SRh3vIcAUFHDT3f/Zdspz+e2E0hPV2hiSvICLk11qO6cyJE13zeNFoeY3ggrKY+IzbFomIZY 4yG6xI99NIPEVE9lNBXBKIlewIyVlkOaYvJWSV+p5gdJXOvScNN1epm5YHmf9aE2ZjnqZGoM Mtsyw18YoX9BqMFInxqYQQ3j/HpVgTSvmo5ea5qQDDUaCsaTf8UeDcwYOtgI8iL4oHcsGtUX oUk33HEAEQEAAcLAXwQYAQIACQUCTVkGzwIbDAAKCRAWmrexpM/4rrXiB/sGbkQ6itMrAIfn M7IbRuiSZS1unlySUVYu3SD6YBYnNi3G5EpbwfBNuT3H8//rVvtOFK4OD8cRYkxXRQmTvqa3 3eDIHu/zr1HMKErm+2SD6PO9umRef8V82o2oaCLvf4WeIssFjwB0b6a12opuRP7yo3E3gTCS KmbUuLv1CtxKQF+fUV1cVaTPMyT25Od+RC1K+iOR0F54oUJvJeq7fUzbn/KdlhA8XPGzwGRy 4zcsPWvwnXgfe5tk680fEKZVwOZKIEuJC3v+/yZpQzDvGYJvbyix0lHnrCzq43WefRHI5XTT QbM0WUIBIcGmq38+OgUsMYu4NzLu7uZFAcmp6h8g Organization: Linaro In-Reply-To: <62972d3a-0703-4ce7-b706-b94e1a740a76@astralinux.ru> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240830_012942_732961_9DFB82B3 X-CRM114-Status: GOOD ( 21.25 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: neil.armstrong@linaro.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org T24gMzAvMDgvMjAyNCAxMDoyMywgQW5hc3Rhc2lhIEJlbG92YSB3cm90ZToKPiBIaSwKPiAKPiAy OS8wOC8yNCAxNToxNCwgTmVpbCBBcm1zdHJvbmcg0L/QuNGI0LXRgjoKPj4gSGksCj4+Cj4+IE9u IDI4LzA4LzIwMjQgMTM6MDQsIEFuYXN0YXNpYSBCZWxvdmEgd3JvdGU6Cj4+PiBTd2l0Y2ggdG8g YSBtYW5hZ2VkIGRybSBkZXZpY2UgdG8gY2xlYW51cCBzb21lIGVycm9yIGhhbmRsaW5nCj4+PiBh bmQgbWFrZSBmdXR1cmUgd29yayBlYXNpZXIuCj4+Pgo+Pj4gRml4IGRlcmVmZXJlbmNlIG9mIE5V TEwgaW4gbWVzb25fZHJ2X2JpbmRfbWFzdGVyIGJ5IHJlbW92aW5nCj4+PiBkcm1fZGV2X3B1dChk cm0pIGJlZm9yZSBtZXNvbl9lbmNvZGVyXypfcmVtb3ZlIHdoZXJlIGRybQo+Pj4gZGVyZWZlcmVu Y2VkLgo+Pgo+PiBQbGVhc2Ugc2VuZCB0aGUgZml4IHNlcGFyYXRlbHkgd2l0aCBhIEZpeGVzIHRh Zy4KPj4KPiAKPiBUaGlzIGZpeCBjYW4ndCBiZSBzZXBhcmF0ZWQgZnJvbSB0aGUgcGF0Y2guIGRy bV9kZXZfcHV0IG1heSBiZQo+IHJlbW92ZWQgb25seSB3aGlsZSBzd2l0Y2hpbmcgdG8gYSBtYW5h Z2VkIGRybS4gT3RoZXJ3aXNlCj4gYSBjaGVjayBjb3VsZCBiZSBhZGRlZCBiZWZvcmUgY2FsbGlu ZyBtZXNvbl9lbmNvZGVyXypfcmVtb3ZlLgo+IEJ1dCBpdCB3b3VsZCBiZWNvbWUgcmVkdW5kYW50 IGFmdGVyIHN3aXRjaGluZyB0byBhIG1hbmFnZWQgZHJtLgo+IAo+IEkgbWF5IHNlbmQgdGhlIHNl Y29uZCB2ZXJzaW9uIG9mIHRoaXMgcGF0Y2ggd2l0aCBGaXhlcyB0YWcsIHNvIGFsbAo+IGNoYW5n ZXMgY291bGQgYmUgYXBwbGllZCB0byBvbGRlciB2ZXJzaW9ucy4KClJlYWRpbmcgdGhlIGN1cnJl bnJ0IGNvZGUsIGNvbXBvbmVudF91bmJpbmRfYWxsKGRldiwgZHJtKSBpcyBjYWxsZWQKYWZ0ZXIg ZHJtX2Rldl9wdXQoZHJtKSwgd2hpY2ggaXMgcXVpdGUgd3JvbmcgYXN3ZWxsLgoKU28gcGVyaGFw cyB3ZSBzaG91bGQga2VlcCB0aGUga3JlZiBvbiBkcm0gIHVudGlsIGNvbXBvbmVudF91bmJpbmRf YWxsKCkKaXMgY2FsbGVkIGluIHRoZSBmaXJzdCBjYXNlLCBubyA/CgpOZWlsCgo+IAo+IFRoYW5r cywKPiBBbmFzdGFzaWEgQmVsb3ZhCj4gCj4+IFRoYW5rcywKPj4gTmVpbAo+Pgo+Pj4KPj4+IENv LWRldmVsb3BlZCBieSBMaW51eCBWZXJpZmljYXRpb24gQ2VudGVyIChsaW51eHRlc3Rpbmcub3Jn KS4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBBbmFzdGFzaWEgQmVsb3ZhIDxhYmVsb3ZhQGFzdHJh bGludXgucnU+Cj4+PiAtLS0KPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl9jcnRj LmPCoMKgwqDCoMKgwqDCoMKgIHwgMTAgKy0tCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vbWVzb24v bWVzb25fZHJ2LmPCoMKgwqDCoMKgwqDCoMKgwqAgfCA3MSArKysrKysrKysrLS0tLS0tLS0tLS0t Cj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fZHJ2LmjCoMKgwqDCoMKgwqDCoMKg wqAgfMKgIDIgKy0KPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl9lbmNvZGVyX2N2 YnMuYyB8wqAgOCArLS0KPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl9vdmVybGF5 LmPCoMKgwqDCoMKgIHzCoCA4ICstLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL21lc29uL21lc29u X3BsYW5lLmPCoMKgwqDCoMKgwqDCoCB8IDEwICstLQo+Pj4gwqAgNiBmaWxlcyBjaGFuZ2VkLCA1 MSBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21lc29uL21lc29uX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZXNvbi9t ZXNvbl9jcnRjLmMKPj4+IGluZGV4IGQ3MDYxNmRhOGNlMi4uZTFjMGJmM2JhZWVhIDEwMDY0NAo+ Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lc29uL21lc29uX2NydGMuYwo+Pj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21lc29uL21lc29uX2NydGMuYwo+Pj4gQEAgLTY2MiwxMyArNjYyLDEzIEBA IHZvaWQgbWVzb25fY3J0Y19pcnEoc3RydWN0IG1lc29uX2RybSAqcHJpdikKPj4+IMKgIMKgwqDC oMKgwqAgZHJtX2NydGNfaGFuZGxlX3ZibGFuayhwcml2LT5jcnRjKTsKPj4+IMKgIC3CoMKgwqAg c3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmRybS0+ZXZlbnRfbG9jaywgZmxhZ3MpOwo+Pj4gK8Kg wqDCoCBzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+ZHJtLmV2ZW50X2xvY2ssIGZsYWdzKTsKPj4+ IMKgwqDCoMKgwqAgaWYgKG1lc29uX2NydGMtPmV2ZW50KSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgZHJtX2NydGNfc2VuZF92YmxhbmtfZXZlbnQocHJpdi0+Y3J0YywgbWVzb25fY3J0Yy0+ZXZl bnQpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9jcnRjX3ZibGFua19wdXQocHJpdi0+Y3J0 Yyk7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbWVzb25fY3J0Yy0+ZXZlbnQgPSBOVUxMOwo+Pj4g wqDCoMKgwqDCoCB9Cj4+PiAtwqDCoMKgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPmRy bS0+ZXZlbnRfbG9jaywgZmxhZ3MpOwo+Pj4gK8KgwqDCoCBzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZwcml2LT5kcm0uZXZlbnRfbG9jaywgZmxhZ3MpOwo+Pj4gwqAgfQo+Pj4gwqAgwqAgaW50IG1l c29uX2NydGNfY3JlYXRlKHN0cnVjdCBtZXNvbl9kcm0gKnByaXYpCj4+PiBAQCAtNjc3LDE4ICs2 NzcsMTggQEAgaW50IG1lc29uX2NydGNfY3JlYXRlKHN0cnVjdCBtZXNvbl9kcm0gKnByaXYpCj4+ PiDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPj4+IMKgwqDCoMKgwqAgaW50IHJl dDsKPj4+IMKgIC3CoMKgwqAgbWVzb25fY3J0YyA9IGRldm1fa3phbGxvYyhwcml2LT5kcm0tPmRl diwgc2l6ZW9mKCptZXNvbl9jcnRjKSwKPj4+ICvCoMKgwqAgbWVzb25fY3J0YyA9IGRldm1fa3ph bGxvYyhwcml2LT5kcm0uZGV2LCBzaXplb2YoKm1lc29uX2NydGMpLAo+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0ZQX0tFUk5FTCk7Cj4+PiDCoMKgwqDCoMKgIGlm ICghbWVzb25fY3J0YykKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4+ IMKgIMKgwqDCoMKgwqAgbWVzb25fY3J0Yy0+cHJpdiA9IHByaXY7Cj4+PiDCoMKgwqDCoMKgIGNy dGMgPSAmbWVzb25fY3J0Yy0+YmFzZTsKPj4+IC3CoMKgwqAgcmV0ID0gZHJtX2NydGNfaW5pdF93 aXRoX3BsYW5lcyhwcml2LT5kcm0sIGNydGMsCj4+PiArwqDCoMKgIHJldCA9IGRybV9jcnRjX2lu aXRfd2l0aF9wbGFuZXMoJnByaXYtPmRybSwgY3J0YywKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcml2LT5wcmltYXJ5X3BsYW5lLCBOVUxMLAo+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZtZXNvbl9jcnRjX2Z1bmNz LCAibWVzb25fY3J0YyIpOwo+Pj4gwqDCoMKgwqDCoCBpZiAocmV0KSB7Cj4+PiAtwqDCoMKgwqDC oMKgwqAgZGV2X2Vycihwcml2LT5kcm0tPmRldiwgIkZhaWxlZCB0byBpbml0IENSVENcbiIpOwo+ Pj4gK8KgwqDCoMKgwqDCoMKgIGRldl9lcnIocHJpdi0+ZHJtLmRldiwgIkZhaWxlZCB0byBpbml0 IENSVENcbiIpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+PiDCoMKgwqDC oMKgIH0KPj4+IMKgIGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fZHJ2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fZHJ2LmMKPj4+IGluZGV4IDRiZDBiYWEy YTRmNS4uMmU3YzJlN2M3YjgyIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lc29u L21lc29uX2Rydi5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fZHJ2LmMK Pj4+IEBAIC0xODIsNyArMTgyLDYgQEAgc3RhdGljIGludCBtZXNvbl9kcnZfYmluZF9tYXN0ZXIo c3RydWN0IGRldmljZSAqZGV2LCBib29sIGhhc19jb21wb25lbnRzKQo+Pj4gwqDCoMKgwqDCoCBz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7Cj4+ PiDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBtZXNvbl9kcm1fbWF0Y2hfZGF0YSAqbWF0Y2g7Cj4+ PiDCoMKgwqDCoMKgIHN0cnVjdCBtZXNvbl9kcm0gKnByaXY7Cj4+PiAtwqDCoMKgIHN0cnVjdCBk cm1fZGV2aWNlICpkcm07Cj4+PiDCoMKgwqDCoMKgIHN0cnVjdCByZXNvdXJjZSAqcmVzOwo+Pj4g wqDCoMKgwqDCoCB2b2lkIF9faW9tZW0gKnJlZ3M7Cj4+PiDCoMKgwqDCoMKgIGludCByZXQsIGk7 Cj4+PiBAQCAtMTk3LDE3ICsxOTYsMTMgQEAgc3RhdGljIGludCBtZXNvbl9kcnZfYmluZF9tYXN0 ZXIoc3RydWN0IGRldmljZSAqZGV2LCBib29sIGhhc19jb21wb25lbnRzKQo+Pj4gwqDCoMKgwqDC oCBpZiAoIW1hdGNoKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PREVWOwo+Pj4g wqAgLcKgwqDCoCBkcm0gPSBkcm1fZGV2X2FsbG9jKCZtZXNvbl9kcml2ZXIsIGRldik7Cj4+PiAt wqDCoMKgIGlmIChJU19FUlIoZHJtKSkKPj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gUFRSX0VS Uihkcm0pOwo+Pj4gK8KgwqDCoCBwcml2ID0gZGV2bV9kcm1fZGV2X2FsbG9jKGRldiwgJm1lc29u X2RyaXZlciwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbWVz b25fZHJtLCBkcm0pOwo+Pj4gwqAgLcKgwqDCoCBwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6 ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7Cj4+PiAtwqDCoMKgIGlmICghcHJpdikgewo+Pj4gLcKg wqDCoMKgwqDCoMKgIHJldCA9IC1FTk9NRU07Cj4+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBmcmVl X2RybTsKPj4+IC3CoMKgwqAgfQo+Pj4gLcKgwqDCoCBkcm0tPmRldl9wcml2YXRlID0gcHJpdjsK Pj4+IC3CoMKgwqAgcHJpdi0+ZHJtID0gZHJtOwo+Pj4gK8KgwqDCoCBpZiAoSVNfRVJSKHByaXYp KQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBQVFJfRVJSKHByaXYpOwo+Pj4gKwo+Pj4gK8Kg wqDCoCBwcml2LT5kcm0uZGV2X3ByaXZhdGUgPSBwcml2Owo+Pj4gwqDCoMKgwqDCoCBwcml2LT5k ZXYgPSBkZXY7Cj4+PiDCoMKgwqDCoMKgIHByaXYtPmNvbXBhdCA9IG1hdGNoLT5jb21wYXQ7Cj4+ PiDCoMKgwqDCoMKgIHByaXYtPmFmYmNkLm9wcyA9IG1hdGNoLT5hZmJjZF9vcHM7Cj4+PiBAQCAt MjE1LDcgKzIxMCw3IEBAIHN0YXRpYyBpbnQgbWVzb25fZHJ2X2JpbmRfbWFzdGVyKHN0cnVjdCBk ZXZpY2UgKmRldiwgYm9vbCBoYXNfY29tcG9uZW50cykKPj4+IMKgwqDCoMKgwqAgcmVncyA9IGRl dm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgInZwdSIpOwo+Pj4gwqDC oMKgwqDCoCBpZiAoSVNfRVJSKHJlZ3MpKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0g UFRSX0VSUihyZWdzKTsKPj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIGZyZWVfZHJtOwo+Pj4gK8Kg wqDCoMKgwqDCoMKgIGdvdG8gcmVtb3ZlX2VuY29kZXJzOwo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiDC oCDCoMKgwqDCoMKgIHByaXYtPmlvX2Jhc2UgPSByZWdzOwo+Pj4gQEAgLTIyMywxMyArMjE4LDEz IEBAIHN0YXRpYyBpbnQgbWVzb25fZHJ2X2JpbmRfbWFzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwg Ym9vbCBoYXNfY29tcG9uZW50cykKPj4+IMKgwqDCoMKgwqAgcmVzID0gcGxhdGZvcm1fZ2V0X3Jl c291cmNlX2J5bmFtZShwZGV2LCBJT1JFU09VUkNFX01FTSwgImhoaSIpOwo+Pj4gwqDCoMKgwqDC oCBpZiAoIXJlcykgewo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FSU5WQUw7Cj4+PiAt wqDCoMKgwqDCoMKgwqAgZ290byBmcmVlX2RybTsKPj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIHJl bW92ZV9lbmNvZGVyczsKPj4+IMKgwqDCoMKgwqAgfQo+Pj4gwqDCoMKgwqDCoCAvKiBTaW1wbHkg aW9yZW1hcCBzaW5jZSBpdCBtYXkgYmUgYSBzaGFyZWQgcmVnaXN0ZXIgem9uZSAqLwo+Pj4gwqDC oMKgwqDCoCByZWdzID0gZGV2bV9pb3JlbWFwKGRldiwgcmVzLT5zdGFydCwgcmVzb3VyY2Vfc2l6 ZShyZXMpKTsKPj4+IMKgwqDCoMKgwqAgaWYgKCFyZWdzKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0ID0gLUVBRERSTk9UQVZBSUw7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBmcmVlX2Ry bTsKPj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIHJlbW92ZV9lbmNvZGVyczsKPj4+IMKgwqDCoMKg wqAgfQo+Pj4gwqAgwqDCoMKgwqDCoCBwcml2LT5oaGkgPSBkZXZtX3JlZ21hcF9pbml0X21taW8o ZGV2LCByZWdzLAo+Pj4gQEAgLTIzNywxOCArMjMyLDE4IEBAIHN0YXRpYyBpbnQgbWVzb25fZHJ2 X2JpbmRfbWFzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwgYm9vbCBoYXNfY29tcG9uZW50cykKPj4+ IMKgwqDCoMKgwqAgaWYgKElTX0VSUihwcml2LT5oaGkpKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgZGV2X2VycigmcGRldi0+ZGV2LCAiQ291bGRuJ3QgY3JlYXRlIHRoZSBISEkgcmVnbWFwXG4i KTsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBQVFJfRVJSKHByaXYtPmhoaSk7Cj4+PiAt wqDCoMKgwqDCoMKgwqAgZ290byBmcmVlX2RybTsKPj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIHJl bW92ZV9lbmNvZGVyczsKPj4+IMKgwqDCoMKgwqAgfQo+Pj4gwqAgwqDCoMKgwqDCoCBwcml2LT5j YW52YXMgPSBtZXNvbl9jYW52YXNfZ2V0KGRldik7Cj4+PiDCoMKgwqDCoMKgIGlmIChJU19FUlIo cHJpdi0+Y2FudmFzKSkgewo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IFBUUl9FUlIocHJp di0+Y2FudmFzKTsKPj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIGZyZWVfZHJtOwo+Pj4gK8KgwqDC oMKgwqDCoMKgIGdvdG8gcmVtb3ZlX2VuY29kZXJzOwo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiDCoCDC oMKgwqDCoMKgIHJldCA9IG1lc29uX2NhbnZhc19hbGxvYyhwcml2LT5jYW52YXMsICZwcml2LT5j YW52YXNfaWRfb3NkMSk7Cj4+PiDCoMKgwqDCoMKgIGlmIChyZXQpCj4+PiAtwqDCoMKgwqDCoMKg wqAgZ290byBmcmVlX2RybTsKPj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIHJlbW92ZV9lbmNvZGVy czsKPj4+IMKgwqDCoMKgwqAgcmV0ID0gbWVzb25fY2FudmFzX2FsbG9jKHByaXYtPmNhbnZhcywg JnByaXYtPmNhbnZhc19pZF92ZDFfMCk7Cj4+PiDCoMKgwqDCoMKgIGlmIChyZXQpCj4+PiDCoMKg wqDCoMKgwqDCoMKgwqAgZ290byBmcmVlX2NhbnZhc19vc2QxOwo+Pj4gQEAgLTI2MSw3ICsyNTYs NyBAQCBzdGF0aWMgaW50IG1lc29uX2Rydl9iaW5kX21hc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYs IGJvb2wgaGFzX2NvbXBvbmVudHMpCj4+PiDCoCDCoMKgwqDCoMKgIHByaXYtPnZzeW5jX2lycSA9 IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7Cj4+PiDCoCAtwqDCoMKgIHJldCA9IGRybV92Ymxh bmtfaW5pdChkcm0sIDEpOwo+Pj4gK8KgwqDCoCByZXQgPSBkcm1fdmJsYW5rX2luaXQoJnByaXYt PmRybSwgMSk7Cj4+PiDCoMKgwqDCoMKgIGlmIChyZXQpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg Z290byBmcmVlX2NhbnZhc192ZDFfMjsKPj4+IMKgIEBAIC0yODQsMTAgKzI3OSwxMCBAQCBzdGF0 aWMgaW50IG1lc29uX2Rydl9iaW5kX21hc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIGJvb2wgaGFz X2NvbXBvbmVudHMpCj4+PiDCoMKgwqDCoMKgIHJldCA9IGRybW1fbW9kZV9jb25maWdfaW5pdChk cm0pOwo+Pj4gwqDCoMKgwqDCoCBpZiAocmV0KQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8g ZnJlZV9jYW52YXNfdmQxXzI7Cj4+PiAtwqDCoMKgIGRybS0+bW9kZV9jb25maWcubWF4X3dpZHRo ID0gMzg0MDsKPj4+IC3CoMKgwqAgZHJtLT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gMjE2MDsK Pj4+IC3CoMKgwqAgZHJtLT5tb2RlX2NvbmZpZy5mdW5jcyA9ICZtZXNvbl9tb2RlX2NvbmZpZ19m dW5jczsKPj4+IC3CoMKgwqAgZHJtLT5tb2RlX2NvbmZpZy5oZWxwZXJfcHJpdmF0ZcKgwqDCoCA9 ICZtZXNvbl9tb2RlX2NvbmZpZ19oZWxwZXJzOwo+Pj4gK8KgwqDCoCBwcml2LT5kcm0ubW9kZV9j b25maWcubWF4X3dpZHRoID0gMzg0MDsKPj4+ICvCoMKgwqAgcHJpdi0+ZHJtLm1vZGVfY29uZmln Lm1heF9oZWlnaHQgPSAyMTYwOwo+Pj4gK8KgwqDCoCBwcml2LT5kcm0ubW9kZV9jb25maWcuZnVu Y3MgPSAmbWVzb25fbW9kZV9jb25maWdfZnVuY3M7Cj4+PiArwqDCoMKgIHByaXYtPmRybS5tb2Rl X2NvbmZpZy5oZWxwZXJfcHJpdmF0ZSA9ICZtZXNvbl9tb2RlX2NvbmZpZ19oZWxwZXJzOwo+Pj4g wqAgwqDCoMKgwqDCoCAvKiBIYXJkd2FyZSBJbml0aWFsaXphdGlvbiAqLwo+Pj4gwqAgQEAgLTMw OCw5ICszMDMsOSBAQCBzdGF0aWMgaW50IG1lc29uX2Rydl9iaW5kX21hc3RlcihzdHJ1Y3QgZGV2 aWNlICpkZXYsIGJvb2wgaGFzX2NvbXBvbmVudHMpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290 byBleGl0X2FmYmNkOwo+Pj4gwqAgwqDCoMKgwqDCoCBpZiAoaGFzX2NvbXBvbmVudHMpIHsKPj4+ IC3CoMKgwqDCoMKgwqDCoCByZXQgPSBjb21wb25lbnRfYmluZF9hbGwoZGV2LCBkcm0pOwo+Pj4g K8KgwqDCoMKgwqDCoMKgIHJldCA9IGNvbXBvbmVudF9iaW5kX2FsbChkZXYsICZwcml2LT5kcm0p Owo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQpIHsKPj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGRldl9lcnIoZHJtLT5kZXYsICJDb3VsZG4ndCBiaW5kIGFsbCBjb21wb25lbnRzXG4i KTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9lcnIocHJpdi0+ZHJtLmRldiwgIkNv dWxkbid0IGJpbmQgYWxsIGNvbXBvbmVudHNcbiIpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLyogRG8gbm90IHRyeSB0byB1bmJpbmQgKi8KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGhhc19jb21wb25lbnRzID0gZmFsc2U7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIGV4aXRfYWZiY2Q7Cj4+PiBAQCAtMzM5LDI2ICszMzQsMjYgQEAgc3RhdGljIGlu dCBtZXNvbl9kcnZfYmluZF9tYXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LCBib29sIGhhc19jb21w b25lbnRzKQo+Pj4gwqDCoMKgwqDCoCBpZiAocmV0KQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdv dG8gZXhpdF9hZmJjZDsKPj4+IMKgIC3CoMKgwqAgcmV0ID0gcmVxdWVzdF9pcnEocHJpdi0+dnN5 bmNfaXJxLCBtZXNvbl9pcnEsIDAsIGRybS0+ZHJpdmVyLT5uYW1lLCBkcm0pOwo+Pj4gK8KgwqDC oCByZXQgPSByZXF1ZXN0X2lycShwcml2LT52c3luY19pcnEsIG1lc29uX2lycSwgMCwgcHJpdi0+ ZHJtLmRyaXZlci0+bmFtZSwgJnByaXYtPmRybSk7Cj4+PiDCoMKgwqDCoMKgIGlmIChyZXQpCj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBleGl0X2FmYmNkOwo+Pj4gwqAgLcKgwqDCoCBkcm1f bW9kZV9jb25maWdfcmVzZXQoZHJtKTsKPj4+ICvCoMKgwqAgZHJtX21vZGVfY29uZmlnX3Jlc2V0 KCZwcml2LT5kcm0pOwo+Pj4gwqAgLcKgwqDCoCBkcm1fa21zX2hlbHBlcl9wb2xsX2luaXQoZHJt KTsKPj4+ICvCoMKgwqAgZHJtX2ttc19oZWxwZXJfcG9sbF9pbml0KCZwcml2LT5kcm0pOwo+Pj4g wqAgwqDCoMKgwqDCoCBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwcml2KTsKPj4+IMKgIC3C oMKgwqAgcmV0ID0gZHJtX2Rldl9yZWdpc3Rlcihkcm0sIDApOwo+Pj4gK8KgwqDCoCByZXQgPSBk cm1fZGV2X3JlZ2lzdGVyKCZwcml2LT5kcm0sIDApOwo+Pj4gwqDCoMKgwqDCoCBpZiAocmV0KQo+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gdW5pbnN0YWxsX2lycTsKPj4+IMKgIC3CoMKgwqAg ZHJtX2ZiZGV2X2RtYV9zZXR1cChkcm0sIDMyKTsKPj4+ICvCoMKgwqAgZHJtX2ZiZGV2X2RtYV9z ZXR1cCgmcHJpdi0+ZHJtLCAzMik7Cj4+PiDCoCDCoMKgwqDCoMKgIHJldHVybiAwOwo+Pj4gwqAg wqAgdW5pbnN0YWxsX2lycToKPj4+IC3CoMKgwqAgZnJlZV9pcnEocHJpdi0+dnN5bmNfaXJxLCBk cm0pOwo+Pj4gK8KgwqDCoCBmcmVlX2lycShwcml2LT52c3luY19pcnEsICZwcml2LT5kcm0pOwo+ Pj4gwqAgZXhpdF9hZmJjZDoKPj4+IMKgwqDCoMKgwqAgaWYgKHByaXYtPmFmYmNkLm9wcykKPj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCBwcml2LT5hZmJjZC5vcHMtPmV4aXQocHJpdik7Cj4+PiBAQCAt MzcwLDE1ICszNjUsMTQgQEAgc3RhdGljIGludCBtZXNvbl9kcnZfYmluZF9tYXN0ZXIoc3RydWN0 IGRldmljZSAqZGV2LCBib29sIGhhc19jb21wb25lbnRzKQo+Pj4gwqDCoMKgwqDCoCBtZXNvbl9j YW52YXNfZnJlZShwcml2LT5jYW52YXMsIHByaXYtPmNhbnZhc19pZF92ZDFfMCk7Cj4+PiDCoCBm cmVlX2NhbnZhc19vc2QxOgo+Pj4gwqDCoMKgwqDCoCBtZXNvbl9jYW52YXNfZnJlZShwcml2LT5j YW52YXMsIHByaXYtPmNhbnZhc19pZF9vc2QxKTsKPj4+IC1mcmVlX2RybToKPj4+IC3CoMKgwqAg ZHJtX2Rldl9wdXQoZHJtKTsKPj4+ICtyZW1vdmVfZW5jb2RlcnM6Cj4+PiDCoCDCoMKgwqDCoMKg IG1lc29uX2VuY29kZXJfZHNpX3JlbW92ZShwcml2KTsKPj4+IMKgwqDCoMKgwqAgbWVzb25fZW5j b2Rlcl9oZG1pX3JlbW92ZShwcml2KTsKPj4+IMKgwqDCoMKgwqAgbWVzb25fZW5jb2Rlcl9jdmJz X3JlbW92ZShwcml2KTsKPj4+IMKgIMKgwqDCoMKgwqAgaWYgKGhhc19jb21wb25lbnRzKQo+Pj4g LcKgwqDCoMKgwqDCoMKgIGNvbXBvbmVudF91bmJpbmRfYWxsKGRldiwgZHJtKTsKPj4+ICvCoMKg wqDCoMKgwqDCoCBjb21wb25lbnRfdW5iaW5kX2FsbChkZXYsICZwcml2LT5kcm0pOwo+Pj4gwqAg wqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+Pj4gwqAgfQo+Pj4gQEAgLTM5MSw3ICszODUsNyBAQCBz dGF0aWMgaW50IG1lc29uX2Rydl9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPj4+IMKgIHN0YXRp YyB2b2lkIG1lc29uX2Rydl91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2KQo+Pj4gwqAgewo+Pj4g wqDCoMKgwqDCoCBzdHJ1Y3QgbWVzb25fZHJtICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7 Cj4+PiAtwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBwcml2LT5kcm07Cj4+PiArwqDC oMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSAmcHJpdi0+ZHJtOwo+Pj4gwqAgwqDCoMKgwqDC oCBpZiAocHJpdi0+Y2FudmFzKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbWVzb25fY2FudmFz X2ZyZWUocHJpdi0+Y2FudmFzLCBwcml2LT5jYW52YXNfaWRfb3NkMSk7Cj4+PiBAQCAtNDA0LDcg KzM5OCw2IEBAIHN0YXRpYyB2b2lkIG1lc29uX2Rydl91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2 KQo+Pj4gwqDCoMKgwqDCoCBkcm1fa21zX2hlbHBlcl9wb2xsX2ZpbmkoZHJtKTsKPj4+IMKgwqDC oMKgwqAgZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24oZHJtKTsKPj4+IMKgwqDCoMKgwqAgZnJl ZV9pcnEocHJpdi0+dnN5bmNfaXJxLCBkcm0pOwo+Pj4gLcKgwqDCoCBkcm1fZGV2X3B1dChkcm0p Owo+Pj4gwqAgwqDCoMKgwqDCoCBtZXNvbl9lbmNvZGVyX2RzaV9yZW1vdmUocHJpdik7Cj4+PiDC oMKgwqDCoMKgIG1lc29uX2VuY29kZXJfaGRtaV9yZW1vdmUocHJpdik7Cj4+PiBAQCAtNDI4LDcg KzQyMSw3IEBAIHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbWVzb25fZHJ2X3BtX3N1c3BlbmQo c3RydWN0IGRldmljZSAqZGV2KQo+Pj4gwqDCoMKgwqDCoCBpZiAoIXByaXYpCj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+PiDCoCAtwqDCoMKgIHJldHVybiBkcm1fbW9kZV9jb25m aWdfaGVscGVyX3N1c3BlbmQocHJpdi0+ZHJtKTsKPj4+ICvCoMKgwqAgcmV0dXJuIGRybV9tb2Rl X2NvbmZpZ19oZWxwZXJfc3VzcGVuZCgmcHJpdi0+ZHJtKTsKPj4+IMKgIH0KPj4+IMKgIMKgIHN0 YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbWVzb25fZHJ2X3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNl ICpkZXYpCj4+PiBAQCAtNDQ1LDcgKzQzOCw3IEBAIHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQg bWVzb25fZHJ2X3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+PiDCoMKgwqDCoMKgIGlm IChwcml2LT5hZmJjZC5vcHMpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcHJpdi0+YWZiY2Qub3Bz LT5pbml0KHByaXYpOwo+Pj4gwqAgLcKgwqDCoCByZXR1cm4gZHJtX21vZGVfY29uZmlnX2hlbHBl cl9yZXN1bWUocHJpdi0+ZHJtKTsKPj4+ICvCoMKgwqAgcmV0dXJuIGRybV9tb2RlX2NvbmZpZ19o ZWxwZXJfcmVzdW1lKCZwcml2LT5kcm0pOwo+Pj4gwqAgfQo+Pj4gwqAgwqAgc3RhdGljIHZvaWQg bWVzb25fZHJ2X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+PiBAQCAt NDU1LDggKzQ0OCw4IEBAIHN0YXRpYyB2b2lkIG1lc29uX2Rydl9zaHV0ZG93bihzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQo+Pj4gwqDCoMKgwqDCoCBpZiAoIXByaXYpCj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuOwo+Pj4gwqAgLcKgwqDCoCBkcm1fa21zX2hlbHBlcl9wb2xsX2Zp bmkocHJpdi0+ZHJtKTsKPj4+IC3CoMKgwqAgZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24ocHJp di0+ZHJtKTsKPj4+ICvCoMKgwqAgZHJtX2ttc19oZWxwZXJfcG9sbF9maW5pKCZwcml2LT5kcm0p Owo+Pj4gK8KgwqDCoCBkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bigmcHJpdi0+ZHJtKTsKPj4+ IMKgIH0KPj4+IMKgIMKgIC8qCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lc29u L21lc29uX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL21lc29uL21lc29uX2Rydi5oCj4+PiBpbmRl eCAzZjkzNDVjMTRmMzEuLmM0YzZjODEwY2IyMCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tZXNvbi9tZXNvbl9kcnYuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lc29uL21l c29uX2Rydi5oCj4+PiBAQCAtNTMsNyArNTMsNyBAQCBzdHJ1Y3QgbWVzb25fZHJtIHsKPj4+IMKg wqDCoMKgwqAgdTggY2FudmFzX2lkX3ZkMV8xOwo+Pj4gwqDCoMKgwqDCoCB1OCBjYW52YXNfaWRf dmQxXzI7Cj4+PiDCoCAtwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkcm07Cj4+PiArwqDCoMKg IHN0cnVjdCBkcm1fZGV2aWNlIGRybTsKPj4+IMKgwqDCoMKgwqAgc3RydWN0IGRybV9jcnRjICpj cnRjOwo+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5X3BsYW5lOwo+Pj4g wqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3BsYW5lICpvdmVybGF5X3BsYW5lOwo+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl9lbmNvZGVyX2N2YnMuYyBiL2RyaXZlcnMv Z3B1L2RybS9tZXNvbi9tZXNvbl9lbmNvZGVyX2N2YnMuYwo+Pj4gaW5kZXggZDExOTFkZTg1NWQ5 Li5kZGNhMjJjOGMxZmYgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVz b25fZW5jb2Rlcl9jdmJzLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl9l bmNvZGVyX2N2YnMuYwo+Pj4gQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgaW50IG1lc29uX2Vu Y29kZXJfY3Zic19nZXRfbW9kZXMoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPj4+IMKgwqDC oMKgwqAgZm9yIChpID0gMDsgaSA8IE1FU09OX0NWQlNfTU9ERVNfQ09VTlQ7ICsraSkgewo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBtZXNvbl9jdmJzX21vZGUgKm1lc29uX21vZGUgPSAm bWVzb25fY3Zic19tb2Rlc1tpXTsKPj4+IMKgIC3CoMKgwqDCoMKgwqDCoCBtb2RlID0gZHJtX21v ZGVfZHVwbGljYXRlKHByaXYtPmRybSwgJm1lc29uX21vZGUtPm1vZGUpOwo+Pj4gK8KgwqDCoMKg wqDCoMKgIG1vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUoJnByaXYtPmRybSwgJm1lc29uX21vZGUt Pm1vZGUpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghbW9kZSkgewo+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZGV2X2Vycihwcml2LT5kZXYsICJGYWlsZWQgdG8gY3JlYXRlIGEg bmV3IGRpc3BsYXkgbW9kZVxuIik7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gMDsKPj4+IEBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fYnJp ZGdlX2Z1bmNzIG1lc29uX2VuY29kZXJfY3Zic19icmlkZ2VfZnVuY3MgPSB7Cj4+PiDCoCDCoCBp bnQgbWVzb25fZW5jb2Rlcl9jdmJzX3Byb2JlKHN0cnVjdCBtZXNvbl9kcm0gKnByaXYpCj4+PiDC oCB7Cj4+PiAtwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBwcml2LT5kcm07Cj4+PiAr wqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSAmcHJpdi0+ZHJtOwo+Pj4gwqDCoMKgwqDC oCBzdHJ1Y3QgbWVzb25fZW5jb2Rlcl9jdmJzICptZXNvbl9lbmNvZGVyX2N2YnM7Cj4+PiDCoMKg wqDCoMKgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4+PiDCoMKgwqDCoMKgIHN0 cnVjdCBkZXZpY2Vfbm9kZSAqcmVtb3RlOwo+Pj4gQEAgLTI1Niw3ICsyNTYsNyBAQCBpbnQgbWVz b25fZW5jb2Rlcl9jdmJzX3Byb2JlKHN0cnVjdCBtZXNvbl9kcm0gKnByaXYpCj4+PiDCoMKgwqDC oMKgIG1lc29uX2VuY29kZXJfY3Zicy0+cHJpdiA9IHByaXY7Cj4+PiDCoCDCoMKgwqDCoMKgIC8q IEVuY29kZXIgKi8KPj4+IC3CoMKgwqAgcmV0ID0gZHJtX3NpbXBsZV9lbmNvZGVyX2luaXQocHJp di0+ZHJtLCAmbWVzb25fZW5jb2Rlcl9jdmJzLT5lbmNvZGVyLAo+Pj4gK8KgwqDCoCByZXQgPSBk cm1fc2ltcGxlX2VuY29kZXJfaW5pdCgmcHJpdi0+ZHJtLCAmbWVzb25fZW5jb2Rlcl9jdmJzLT5l bmNvZGVyLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBEUk1fTU9ERV9FTkNPREVSX1RWREFDKTsKPj4+IMKgwqDCoMKgwqAgaWYgKHJldCkKPj4+IMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LT5kZXYsIHJldCwKPj4+ IEBAIC0yNzMsNyArMjczLDcgQEAgaW50IG1lc29uX2VuY29kZXJfY3Zic19wcm9iZShzdHJ1Y3Qg bWVzb25fZHJtICpwcml2KQo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiDCoCDCoMKgwqDCoMKgIC8qIElu aXRpYWxpemUgJiBhdHRhY2ggQnJpZGdlIENvbm5lY3RvciAqLwo+Pj4gLcKgwqDCoCBjb25uZWN0 b3IgPSBkcm1fYnJpZGdlX2Nvbm5lY3Rvcl9pbml0KHByaXYtPmRybSwgJm1lc29uX2VuY29kZXJf Y3Zicy0+ZW5jb2Rlcik7Cj4+PiArwqDCoMKgIGNvbm5lY3RvciA9IGRybV9icmlkZ2VfY29ubmVj dG9yX2luaXQoJnByaXYtPmRybSwgJm1lc29uX2VuY29kZXJfY3Zicy0+ZW5jb2Rlcik7Cj4+PiDC oMKgwqDCoMKgIGlmIChJU19FUlIoY29ubmVjdG9yKSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LT5kZXYsIFBUUl9FUlIoY29ubmVjdG9yKSwKPj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJVbmFibGUgdG8gY3Jl YXRlIENWQlMgYnJpZGdlIGNvbm5lY3RvclxuIik7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21lc29uL21lc29uX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNv bl9vdmVybGF5LmMKPj4+IGluZGV4IDdmOThkZTM4ODQyYi4uNjBlZTdmNzU4NzIzIDEwMDY0NAo+ Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lc29uL21lc29uX292ZXJsYXkuYwo+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL21lc29uL21lc29uX292ZXJsYXkuYwo+Pj4gQEAgLTQ4NCw3ICs0ODQs NyBAQCBzdGF0aWMgdm9pZCBtZXNvbl9vdmVybGF5X2F0b21pY191cGRhdGUoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCj4+PiDCoCDCoMKgwqDCoMKgIGludGVybGFjZV9tb2RlID0gbmV3X3N0YXRl LT5jcnRjLT5tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0U7Cj4+PiDCoCAtwqDC oMKgIHNwaW5fbG9ja19pcnFzYXZlKCZwcml2LT5kcm0tPmV2ZW50X2xvY2ssIGZsYWdzKTsKPj4+ ICvCoMKgwqAgc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmRybS5ldmVudF9sb2NrLCBmbGFncyk7 Cj4+PiDCoCDCoMKgwqDCoMKgIGlmICgoZmItPm1vZGlmaWVyICYgRFJNX0ZPUk1BVF9NT0RfQU1M T0dJQ19GQkMoMCwgMCkpID09Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IERSTV9GT1JNQVRfTU9EX0FNTE9HSUNfRkJDKDAsIDApKSB7Cj4+PiBAQCAtNzE3LDcgKzcxNyw3 IEBAIHN0YXRpYyB2b2lkIG1lc29uX292ZXJsYXlfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPj4+IMKgIMKgwqDCoMKgwqAgcHJpdi0+dml1LnZkMV9lbmFibGVkID0gdHJ1 ZTsKPj4+IMKgIC3CoMKgwqAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+ZHJtLT5ldmVu dF9sb2NrLCBmbGFncyk7Cj4+PiArwqDCoMKgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYt PmRybS5ldmVudF9sb2NrLCBmbGFncyk7Cj4+PiDCoCDCoMKgwqDCoMKgIERSTV9ERUJVR19EUklW RVIoIlxuIik7Cj4+PiDCoCB9Cj4+PiBAQCAtODM4LDcgKzgzOCw3IEBAIGludCBtZXNvbl9vdmVy bGF5X2NyZWF0ZShzdHJ1Y3QgbWVzb25fZHJtICpwcml2KQo+Pj4gwqAgwqDCoMKgwqDCoCBEUk1f REVCVUdfRFJJVkVSKCJcbiIpOwo+Pj4gwqAgLcKgwqDCoCBtZXNvbl9vdmVybGF5ID0gZGV2bV9r emFsbG9jKHByaXYtPmRybS0+ZGV2LCBzaXplb2YoKm1lc29uX292ZXJsYXkpLAo+Pj4gK8KgwqDC oCBtZXNvbl9vdmVybGF5ID0gZGV2bV9remFsbG9jKHByaXYtPmRybS5kZXYsIHNpemVvZigqbWVz b25fb3ZlcmxheSksCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEdGUF9LRVJORUwpOwo+Pj4gwqDCoMKgwqDCoCBpZiAoIW1lc29uX292ZXJsYXkpCj4+PiDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9NRU07Cj4+PiBAQCAtODQ2LDcgKzg0Niw3IEBAIGlu dCBtZXNvbl9vdmVybGF5X2NyZWF0ZShzdHJ1Y3QgbWVzb25fZHJtICpwcml2KQo+Pj4gwqDCoMKg wqDCoCBtZXNvbl9vdmVybGF5LT5wcml2ID0gcHJpdjsKPj4+IMKgwqDCoMKgwqAgcGxhbmUgPSAm bWVzb25fb3ZlcmxheS0+YmFzZTsKPj4+IMKgIC3CoMKgwqAgZHJtX3VuaXZlcnNhbF9wbGFuZV9p bml0KHByaXYtPmRybSwgcGxhbmUsIDB4RkYsCj4+PiArwqDCoMKgIGRybV91bml2ZXJzYWxfcGxh bmVfaW5pdCgmcHJpdi0+ZHJtLCBwbGFuZSwgMHhGRiwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAmbWVzb25fb3ZlcmxheV9mdW5jcywKPj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdXBwb3J0ZWRfZHJtX2Zvcm1hdHMsCj4+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVJSQVlfU0laRShzdXBwb3J0ZWRfZHJtX2Zv cm1hdHMpLAo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl9wbGFu ZS5jIGIvZHJpdmVycy9ncHUvZHJtL21lc29uL21lc29uX3BsYW5lLmMKPj4+IGluZGV4IGI0M2Fj NjEyMDFmMy4uMTNiZTk0MzA5YmY0IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21l c29uL21lc29uX3BsYW5lLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl9w bGFuZS5jCj4+PiBAQCAtMTU3LDcgKzE1Nyw3IEBAIHN0YXRpYyB2b2lkIG1lc29uX3BsYW5lX2F0 b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4+PiDCoMKgwqDCoMKgwqAgKiBV cGRhdGUgQnVmZmVyCj4+PiDCoMKgwqDCoMKgwqAgKiBFbmFibGUgUGxhbmUKPj4+IMKgwqDCoMKg wqDCoCAqLwo+Pj4gLcKgwqDCoCBzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+ZHJtLT5ldmVudF9s b2NrLCBmbGFncyk7Cj4+PiArwqDCoMKgIHNwaW5fbG9ja19pcnFzYXZlKCZwcml2LT5kcm0uZXZl bnRfbG9jaywgZmxhZ3MpOwo+Pj4gwqAgwqDCoMKgwqDCoCAvKiBDaGVjayBpZiBBRkJDIGRlY29k ZXIgaXMgcmVxdWlyZWQgZm9yIHRoaXMgYnVmZmVyICovCj4+PiDCoMKgwqDCoMKgIGlmICgobWVz b25fdnB1X2lzX2NvbXBhdGlibGUocHJpdiwgVlBVX0NPTVBBVElCTEVfR1hNKSB8fAo+Pj4gQEAg LTM5Myw3ICszOTMsNyBAQCBzdGF0aWMgdm9pZCBtZXNvbl9wbGFuZV9hdG9taWNfdXBkYXRlKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+Pj4gwqAgwqDCoMKgwqDCoCBwcml2LT52aXUub3NkMV9l bmFibGVkID0gdHJ1ZTsKPj4+IMKgIC3CoMKgwqAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJp di0+ZHJtLT5ldmVudF9sb2NrLCBmbGFncyk7Cj4+PiArwqDCoMKgIHNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJnByaXYtPmRybS5ldmVudF9sb2NrLCBmbGFncyk7Cj4+PiDCoCB9Cj4+PiDCoCDCoCBz dGF0aWMgdm9pZCBtZXNvbl9wbGFuZV9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKPj4+IEBAIC01MzYsNyArNTM2LDcgQEAgaW50IG1lc29uX3BsYW5lX2NyZWF0ZShzdHJ1 Y3QgbWVzb25fZHJtICpwcml2KQo+Pj4gwqDCoMKgwqDCoCBjb25zdCB1aW50NjRfdCAqZm9ybWF0 X21vZGlmaWVycyA9IGZvcm1hdF9tb2RpZmllcnNfZGVmYXVsdDsKPj4+IMKgwqDCoMKgwqAgaW50 IHJldDsKPj4+IMKgIC3CoMKgwqAgbWVzb25fcGxhbmUgPSBkZXZtX2t6YWxsb2MocHJpdi0+ZHJt LT5kZXYsIHNpemVvZigqbWVzb25fcGxhbmUpLAo+Pj4gK8KgwqDCoCBtZXNvbl9wbGFuZSA9IGRl dm1fa3phbGxvYyhwcml2LT5kcm0uZGV2LCBzaXplb2YoKm1lc29uX3BsYW5lKSwKPj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0ZQX0tFUk5FTCk7Cj4+PiDCoMKg wqDCoMKgIGlmICghbWVzb25fcGxhbmUpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1F Tk9NRU07Cj4+PiBAQCAtNTQ5LDE0ICs1NDksMTQgQEAgaW50IG1lc29uX3BsYW5lX2NyZWF0ZShz dHJ1Y3QgbWVzb25fZHJtICpwcml2KQo+Pj4gwqDCoMKgwqDCoCBlbHNlIGlmIChtZXNvbl92cHVf aXNfY29tcGF0aWJsZShwcml2LCBWUFVfQ09NUEFUSUJMRV9HMTJBKSkKPj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBmb3JtYXRfbW9kaWZpZXJzID0gZm9ybWF0X21vZGlmaWVyc19hZmJjX2cxMmE7Cj4+ PiDCoCAtwqDCoMKgIHJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdChwcml2LT5kcm0sIHBs YW5lLCAweEZGLAo+Pj4gK8KgwqDCoCByZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoJnBy aXYtPmRybSwgcGxhbmUsIDB4RkYsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgJm1lc29uX3BsYW5lX2Z1bmNzLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN1cHBvcnRlZF9kcm1fZm9ybWF0cywKPj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBUlJBWV9TSVpFKHN1cHBvcnRlZF9k cm1fZm9ybWF0cyksCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZm9ybWF0X21vZGlmaWVycywKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBEUk1fUExBTkVfVFlQRV9QUklNQVJZLCAibWVzb25fcHJpbWFyeV9wbGFuZSIp Owo+Pj4gwqDCoMKgwqDCoCBpZiAocmV0KSB7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgZGV2bV9rZnJl ZShwcml2LT5kcm0tPmRldiwgbWVzb25fcGxhbmUpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRldm1f a2ZyZWUocHJpdi0+ZHJtLmRldiwgbWVzb25fcGxhbmUpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiByZXQ7Cj4+PiDCoMKgwqDCoMKgIH0KPj4KPiAKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hbWxvZ2ljIG1haWxpbmcgbGlzdAps aW51eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hbWxvZ2ljCg==