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 A080DEB64DD for ; Mon, 3 Jul 2023 08:13:21 +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=eY75wdqGKzsNFiynYNq81XVBJUyvQLRJHg8F/12Z7VI=; b=FEG+mSifYbFs8q EslgL+ZICF2p8qaRCqgIy1bgXmYyX0vJLpxaDp+YPZtUefMbQfSGZsUOc8IljSZXOMCmgNa0nrwBs 480WgxUAQQU3NVv6oP+s4TOnr/MAUFuEaAYUhiWIuxk+f776IchIbYX8WCgI0ppm2fwjpHA+6gqw4 9Au/47wjPl/0ZSYNAFPhlgsMR2t55xxMjFNILEa0ZzCofq9cjnfIB46PnfDW3inmDaCBffOeiCMq+ er2dYV5soFzxfmt2G7HbJNUCqtK3ODjkyIR6qZIBVhNPdrzUM2VD2Wgq8t9R4Ra/l/vOH6Tl0yZ/S R/T31mZ1SrJWg6mmueiQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qGEgM-009iAJ-0m; Mon, 03 Jul 2023 08:13:14 +0000 Received: from madras.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e5ab]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qGEgG-009i5d-0E; Mon, 03 Jul 2023 08:13:10 +0000 Received: from [IPV6:2a01:e0a:120:3210:4563:92b0:7df7:68d2] (unknown [IPv6:2a01:e0a:120:3210:4563:92b0:7df7:68d2]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: benjamin.gaignard) by madras.collabora.co.uk (Postfix) with ESMTPSA id 26DDC6606F50; Mon, 3 Jul 2023 09:12:58 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1688371978; bh=Q73cajyRdy9Vx0EJlC0kT1EtEDksvf3PRasZag8GL5Q=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=NSE5ZfHyJhxrF+lH5SMjttc2oUUCcJK5QuOyH2Bqj5pr//3YxLPhKQWwS6X0ls5jM 5mBgvy2kiFc25dnafRib3YBU4Ir+fuu4OcoogXWgexbIsym7tG/+yeyL3Qp9yFqeN8 gFyaWYDaX6nmJ7cFpzj9oqYnYprm21Bjw3ZdrES3hsxP75khEGBnR/Df5qpy0JCRvJ /W2MXZFKq5aD57S/ys5vv82DIiIh3BomiYSAgRB2EwwcYyUFugEEv/Mv66zMSFsLhx 9TMuJ9/W2dfXrJu5DcXX37OojGK5oGCIxDw2AiNkPYg7+AL5HG+51T/LkbrTOwczA6 jL4HA/mDArUGQ== Message-ID: <0f4fd31f-ef61-8dee-7a88-55263f266975@collabora.com> Date: Mon, 3 Jul 2023 10:12:55 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Subject: Re: [PATCH v3 10/11] media: v4l2: Add DELETE_BUF ioctl Content-Language: en-US To: Hsia-Jun Li Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, p.zabel@pengutronix.de, ming.qian@nxp.com, hverkuil-cisco@xs4all.nl, gregkh@linuxfoundation.org, ezequiel@vanguardiasur.com.ar, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-rockchip@lists.infradead.org, nicolas.dufresne@collabora.com, linux-staging@lists.linux.dev, kernel@collabora.com, mchehab@kernel.org, tfiga@chromium.org, m.szyprowski@samsung.com, ayaka References: <20230622131349.144160-1-benjamin.gaignard@collabora.com> <20230622131349.144160-11-benjamin.gaignard@collabora.com> <80a03c29-6f3d-43f1-755c-10f3ae2c2756@synaptics.com> <42a45bad-09c7-ffb6-49cb-29ec0826599d@collabora.com> <3b22fda9-4a0e-2c03-2f12-19e5e3239235@synaptics.com> <54833256-7d88-9316-4f0f-b8c57552cd7b@synaptics.com> From: Benjamin Gaignard In-Reply-To: <54833256-7d88-9316-4f0f-b8c57552cd7b@synaptics.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230703_011308_374405_A2DCFEC2 X-CRM114-Status: GOOD ( 27.36 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms 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-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org CkxlIDMwLzA2LzIwMjMgw6AgMTE6NDMsIEhzaWEtSnVuIExpIGEgw6ljcml0wqA6Cj4KPiBPbiA2 LzI3LzIzIDE2OjQ3LCBIc2lhLUp1biBMaSB3cm90ZToKPj4gQ0FVVElPTjogRW1haWwgb3JpZ2lu YXRlZCBleHRlcm5hbGx5LCBkbyBub3QgY2xpY2sgbGlua3Mgb3Igb3BlbiAKPj4gYXR0YWNobWVu dHMgdW5sZXNzIHlvdSByZWNvZ25pemUgdGhlIHNlbmRlciBhbmQga25vdyB0aGUgY29udGVudCBp cyAKPj4gc2FmZS4KPj4KPj4KPj4gT24gNi8yNy8yMyAxNjo0MywgQmVuamFtaW4gR2FpZ25hcmQg d3JvdGU6Cj4+PiBDQVVUSU9OOiBFbWFpbCBvcmlnaW5hdGVkIGV4dGVybmFsbHksIGRvIG5vdCBj bGljayBsaW5rcyBvciBvcGVuCj4+PiBhdHRhY2htZW50cyB1bmxlc3MgeW91IHJlY29nbml6ZSB0 aGUgc2VuZGVyIGFuZCBrbm93IHRoZSBjb250ZW50IGlzIAo+Pj4gc2FmZS4KPj4+Cj4+Pgo+Pj4g TGUgMjcvMDYvMjAyMyDDoCAwOTozMCwgSHNpYS1KdW4gTGkgYSDDqWNyaXQgOgo+Pj4+Cj4+Pj4g T24gNi8yMi8yMyAyMToxMywgQmVuamFtaW4gR2FpZ25hcmQgd3JvdGU6Cj4+Pj4+IENBVVRJT046 IEVtYWlsIG9yaWdpbmF0ZWQgZXh0ZXJuYWxseSwgZG8gbm90IGNsaWNrIGxpbmtzIG9yIG9wZW4K Pj4+Pj4gYXR0YWNobWVudHMgdW5sZXNzIHlvdSByZWNvZ25pemUgdGhlIHNlbmRlciBhbmQga25v dyB0aGUgY29udGVudCBpcwo+Pj4+PiBzYWZlLgo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBWSURJT0NfREVM RVRFX0JVRiBpb2N0bCBhbGxvd3MgdG8gZGVsZXRlIGEgYnVmZmVyIGZyb20gYSBxdWV1ZS4KPj4+ Pj4KPj4+Pj4gU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWdu YXJkQGNvbGxhYm9yYS5jb20+Cj4+Pj4+IC0tLQo+Pj4+PiDCoCAuLi4vdXNlcnNwYWNlLWFwaS9t ZWRpYS92NGwvdXNlci1mdW5jLnJzdMKgwqDCoMKgIHzCoCAxICsKPj4+Pj4gwqAgLi4uL21lZGlh L3Y0bC92aWRpb2MtZGVsZXRlLWJ1Zi5yc3TCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDUxCj4+Pj4+ ICsrKysrKysrKysrKysrKysrKysKPj4+Pj4gwqAgLi4uL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIv dmlkZW9idWYyLWNvcmUuY8KgwqAgfCAzMyArKysrKysrKysrKysKPj4+Pj4gwqAgLi4uL21lZGlh L2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9idWYyLXY0bDIuY8KgwqAgfMKgIDYgKysrCj4+Pj4+IMKg IGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItZGV2LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoCAxICsKPj4+Pj4gwqAgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1pb2N0bC5jwqDC oMKgwqDCoMKgwqDCoMKgIHwgMTAgKysrKwo+Pj4+PiDCoCBpbmNsdWRlL21lZGlhL3Y0bDItaW9j dGwuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA0ICsrCj4+Pj4+ IMKgIGluY2x1ZGUvbWVkaWEvdmlkZW9idWYyLWNvcmUuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8wqAgOSArKysrCj4+Pj4+IMKgIGluY2x1ZGUvbWVkaWEvdmlkZW9idWYyLXY0bDIu aMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDExICsrKysKPj4+Pj4gwqAgaW5jbHVk ZS91YXBpL2xpbnV4L3ZpZGVvZGV2Mi5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzC oCAyICsKPj4+Pj4gwqAgMTAgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKykKPj4+Pj4g wqAgY3JlYXRlIG1vZGUgMTAwNjQ0Cj4+Pj4+IERvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9t ZWRpYS92NGwvdmlkaW9jLWRlbGV0ZS1idWYucnN0Cj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9E b2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL3VzZXItZnVuYy5yc3QKPj4+Pj4g Yi9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL3VzZXItZnVuYy5yc3QKPj4+ Pj4gaW5kZXggMTVmZjBiZjdiYmU2Li44Yzc0MDE2ZTEyZmQgMTAwNjQ0Cj4+Pj4+IC0tLSBhL0Rv Y3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvdXNlci1mdW5jLnJzdAo+Pj4+PiAr KysgYi9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL3VzZXItZnVuYy5yc3QK Pj4+Pj4gQEAgLTE3LDYgKzE3LDcgQEAgRnVuY3Rpb24gUmVmZXJlbmNlCj4+Pj4+IMKgwqDCoMKg wqAgdmlkaW9jLWRiZy1nLWNoaXAtaW5mbwo+Pj4+PiDCoMKgwqDCoMKgIHZpZGlvYy1kYmctZy1y ZWdpc3Rlcgo+Pj4+PiDCoMKgwqDCoMKgIHZpZGlvYy1kZWNvZGVyLWNtZAo+Pj4+PiArwqDCoMKg IHZpZGlvYy1kZWxldGUtYnVmCj4+Pj4+IMKgwqDCoMKgwqAgdmlkaW9jLWRxZXZlbnQKPj4+Pj4g wqDCoMKgwqDCoCB2aWRpb2MtZHYtdGltaW5ncy1jYXAKPj4+Pj4gwqDCoMKgwqDCoCB2aWRpb2Mt ZW5jb2Rlci1jbWQKPj4+Pj4gZGlmZiAtLWdpdAo+Pj4+PiBhL0RvY3VtZW50YXRpb24vdXNlcnNw YWNlLWFwaS9tZWRpYS92NGwvdmlkaW9jLWRlbGV0ZS1idWYucnN0Cj4+Pj4+IGIvRG9jdW1lbnRh dGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0bC92aWRpb2MtZGVsZXRlLWJ1Zi5yc3QKPj4+Pj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi4wZTdjZTU4Zjkx YmMKPj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+PiArKysgYi9Eb2N1bWVudGF0aW9uL3VzZXJzcGFj ZS1hcGkvbWVkaWEvdjRsL3ZpZGlvYy1kZWxldGUtYnVmLnJzdAo+Pj4+PiBAQCAtMCwwICsxLDUx IEBACj4+Pj4+ICsuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR0ZETC0xLjEtbm8taW52YXJp YW50cy1vci1sYXRlcgo+Pj4+PiArLi4gYzpuYW1lc3BhY2U6OiBWNEwKPj4+Pj4gKwo+Pj4+PiAr Li4gX1ZJRElPQ19ERUxFVEVfQlVGOgo+Pj4+PiArCj4+Pj4+ICsqKioqKioqKioqKioqKioqKioq KioqKioKPj4+Pj4gK2lvY3RsIFZJRElPQ19ERUxFVEVfQlVGCj4+Pj4+ICsqKioqKioqKioqKioq KioqKioqKioqKioKPj4+Pj4gKwo+Pj4+PiArTmFtZQo+Pj4+PiArPT09PQo+Pj4+PiArCj4+Pj4+ ICtWSURJT0NfREVMRVRFX0JVRiAtIERlbGV0ZSBhIGJ1ZmZlciBmcm9tIGEgcXVldWUKPj4+Pj4g Kwo+Pj4+PiArU3lub3BzaXMKPj4+Pj4gKz09PT09PT09Cj4+Pj4+ICsKPj4+Pj4gKy4uIGM6bWFj cm86OiBWSURJT0NfREVMRVRFX0JVRgo+Pj4+PiArCj4+Pj4+ICtgYGludCBpb2N0bChpbnQgZmQs IFZJRElPQ19ERUxFVEVfQlVGLCBzdHJ1Y3QgdjRsMl9idWZmZXIgKmFyZ3ApYGAKPj4+Pj4gKwo+ Pj4+PiArQXJndW1lbnRzCj4+Pj4+ICs9PT09PT09PT0KPj4+Pj4gKwo+Pj4+PiArYGBmZGBgCj4+ Pj4+ICvCoMKgwqAgRmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IDpjOmZ1bmM6YG9wZW4oKWAu Cj4+Pj4+ICsKPj4+Pj4gK2BgYXJncGBgCj4+Pj4+ICvCoMKgwqAgUG9pbnRlciB0byBzdHJ1Y3Qg OmM6dHlwZTpgdjRsMl9idWZmZXJgLgo+Pj4+PiArCj4+Pj4+ICtEZXNjcmlwdGlvbgo+Pj4+PiAr PT09PT09PT09PT0KPj4+Pj4gKwo+Pj4+PiArQXBwbGljYXRpb25zIGNhbiBvcHRpb25hbGx5IGNh bGwgdGhlIDpyZWY6YFZJRElPQ19ERUxFVEVfQlVGYCAKPj4+Pj4gaW9jdGwgdG8KPj4+Pj4gK2Rl bGV0ZSBhIGJ1ZmZlciBmcm9tIGEgcXVldWUuCj4+Pj4+ICsKPj4+Pj4gK1RoZSBzdHJ1Y3QgOmM6 dHlwZTpgdjRsMl9idWZmZXJgIHN0cnVjdHVyZSBpcyBzcGVjaWZpZWQgaW4KPj4+Pj4gKzpyZWY6 YGJ1ZmZlcmAuCj4+Pj4+ICsKPj4+Pj4gK1JldHVybiBWYWx1ZQo+Pj4+PiArPT09PT09PT09PT09 Cj4+Pj4+ICsKPj4+Pj4gK09uIHN1Y2Nlc3MgMCBpcyByZXR1cm5lZCwgb24gZXJyb3IgLTEgYW5k IHRoZSBgYGVycm5vYGAgdmFyaWFibGUgaXMKPj4+Pj4gc2V0Cj4+Pj4+ICthcHByb3ByaWF0ZWx5 LiBUaGUgZ2VuZXJpYyBlcnJvciBjb2RlcyBhcmUgZGVzY3JpYmVkIGF0IHRoZQo+Pj4+PiArOnJl ZjpgR2VuZXJpYyBFcnJvciBDb2RlcyA8Z2VuLWVycm9ycz5gIGNoYXB0ZXIuCj4+Pj4+ICsKPj4+ Pj4gK0VCVVNZCj4+Pj4+ICvCoMKgwqAgRmlsZSBJL08gaXMgaW4gcHJvZ3Jlc3MuCj4+Pj4+ICsK Pj4+Pj4gK0VJTlZBTAo+Pj4+PiArwqDCoMKgIFRoZSBidWZmZXIgYGBpbmRleGBgIGRvZXNuJ3Qg ZXhpc3QgaW4gdGhlIHF1ZXVlLgo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9jb21t b24vdmlkZW9idWYyL3ZpZGVvYnVmMi1jb3JlLmMKPj4+Pj4gYi9kcml2ZXJzL21lZGlhL2NvbW1v bi92aWRlb2J1ZjIvdmlkZW9idWYyLWNvcmUuYwo+Pj4+PiBpbmRleCA4OTk3ODNmNjc1ODAuLmFh NTQ2Yzk3MmMzZCAxMDA2NDQKPj4+Pj4gLS0tIGEvZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9i dWYyL3ZpZGVvYnVmMi1jb3JlLmMKPj4+Pj4gKysrIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdmlk ZW9idWYyL3ZpZGVvYnVmMi1jb3JlLmMKPj4+Pj4gQEAgLTE2MzcsNiArMTYzNywzOSBAQCBpbnQg dmIyX2NvcmVfcHJlcGFyZV9idWYoc3RydWN0IHZiMl9xdWV1ZSAqcSwKPj4+Pj4gdW5zaWduZWQg aW50IGluZGV4LCB2b2lkICpwYikKPj4+Pj4gwqAgfQo+Pj4+PiDCoCBFWFBPUlRfU1lNQk9MX0dQ TCh2YjJfY29yZV9wcmVwYXJlX2J1Zik7Cj4+Pj4+Cj4+Pj4+ICtpbnQgdmIyX2NvcmVfZGVsZXRl X2J1ZihzdHJ1Y3QgdmIyX3F1ZXVlICpxLCB1bnNpZ25lZCBpbnQgaW5kZXgpCj4+Pj4+ICt7Cj4+ Pj4+ICvCoMKgwqDCoMKgwqAgc3RydWN0IHZiMl9idWZmZXIgKnZiOwo+Pj4+PiArCj4+Pj4+ICvC oMKgwqDCoMKgwqAgdmIgPSB2YjJfZ2V0X2J1ZmZlcihxLCBpbmRleCk7Cj4+Pj4+ICvCoMKgwqDC oMKgwqAgaWYgKCF2Yikgewo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcHJp bnRrKHEsIDEsICJpbnZhbGlkIGJ1ZmZlciBpbmRleCAlZFxuIiwgaW5kZXgpOwo+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4+Pj4gK8KgwqDCoMKg wqDCoCB9Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoMKgwqDCoCBpZiAodmItPnN0YXRlICE9IFZCMl9C VUZfU1RBVEVfREVRVUVVRUQpIHsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZHByaW50ayhxLCAxLCAiY2FuJ3QgZGVsZXRlIG5vbiBkZXF1ZXVlZCBidWZmZXIgaW5kZXgKPj4+ Pj4gJWRcbiIsIGluZGV4KTsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC1FSU5WQUw7Cj4+Pj4+ICvCoMKgwqDCoMKgwqAgfQo+Pj4+PiArCj4+Pj4gSSBrbm93IHRo ZSBkcml2ZXIgY291bGQgaW1wbGVtZW50IGl0cyBvd24KPj4+PiB2NGwyX2lvY3RsX29wcy0+dmlk aW9jX2RlbGV0ZV9idWYoKSB0aGF0IGNoZWNrIHdoZXRoZXIgYSBidWZmZXIgaXMKPj4+PiB1c2Vk IGJ5IHRoZSBoYXJkd2FyZSBhcyBhIGZ1dHVyZSByZWZlcmVuY2UgZnJhbWUuCj4+Pj4gQnV0IEkg dGhpbmsgd2UgbmVlZCBhIGZsYWcgdG8gbGV0IHRoZSB1c2VyIGtub3cgd2hpY2ggYnVmZmVyIGlz IHN0aWxsCj4+Pj4gdXNlZCBieSB0aGUgaGFyZHdhcmUuCj4+Pj4gQWx0ZXJuYXRpdmUgcmVmIGNh c2UgaXMgc2FmZSwgd2Ugb25seSBrbm93IGl0J3MgZXhpc3Rpbmcgd2hlbiBpdCBpcwo+Pj4+IGRl cXVldWVkIGluIGN1cnJlbnQgVjRMMiBidWZmZXIgbWVjaGFuaXNtLgo+Pj4+IFdoaWxlIHRoZSBH b2xkZW4gcmVmZXJlbmNlIGZyYW1lLCBzdWNoIGxvbmcgdGVybSByZWZlcmVuY2UgZnJhbWUgY291 bGQKPj4+PiBsYXN0IG11Y2ggbG9uZ2VyLgo+Pj4KPj4+IEl0IGlzIHVwIHRvIHVzZXJsYW5kIHN0 YWNrIHRvIGtub3cgZnJhbWVzIGxpZmUgdGltZSwgaXQgZ290IHRoZQo+Pj4gaW5mb3JtYXRpb24g Zm9yIHRoYXQuCj4+Cj4+IFRoYXQgaXMgdHJ1ZSBmb3IgdGhlIHN0YXRlbGVzcyBjb2RlYyBkcml2 ZXIuCj4+Cj4+IFdoaWxlIGFwcGxpY2F0aW9uIGZvciBzdGF0ZWZ1bCBkZWNvZGVyIGNvdWxkIG5l dmVyIGRvIHRoYXQuIEl0IGFsc28KPj4gYnJlYWtzIHdoYXQgdGhlIGRvY3VtZW50IHNhaWQ6Cj4+ Cj4+ICJUaGUgYmFja2luZyBtZW1vcnkgb2YgfENBUFRVUkV8IGJ1ZmZlcnMgdGhhdCBhcmUgdXNl ZCBhcyByZWZlcmVuY2UKPj4gZnJhbWVzIGJ5IHRoZSBzdHJlYW0gbWF5IGJlIHJlYWQgYnkgdGhl IGhhcmR3YXJlIGV2ZW4gYWZ0ZXIgdGhleSBhcmUKPj4gZGVxdWV1ZWQuIENvbnNlcXVlbnRseSwg dGhlIGNsaWVudCBzaG91bGQgYXZvaWQgd3JpdGluZyBpbnRvIHRoaXMgbWVtb3J5Cj4+IHdoaWxl IHRoZSB8Q0FQVFVSRXwgcXVldWUgaXMgc3RyZWFtaW5nLiBGYWlsdXJlIHRvIG9ic2VydmUgdGhp cyBtYXkKPj4gcmVzdWx0IGluIGNvcnJ1cHRpb24gb2YgZGVjb2RlZCBmcmFtZXMuIgo+Pgo+Pj4K Pj4+Pj4gK8KgwqDCoMKgwqDCoCBpZiAodmItPnBsYW5lc1swXS5tZW1fcHJpdikKPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2FsbF92b2lkX3ZiX3FvcCh2YiwgYnVmX2NsZWFu dXAsIHZiKTsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKgwqDCoMKgIC8qIEZyZWUgTU1BUCBidWZmZXJz IG9yIHJlbGVhc2UgVVNFUlBUUiBidWZmZXJzICovCj4+Pj4+ICvCoMKgwqDCoMKgwqAgaWYgKHEt Pm1lbW9yeSA9PSBWQjJfTUVNT1JZX01NQVApCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIF9fdmIyX2J1Zl9tZW1fZnJlZSh2Yik7Cj4KPiBIZXJlIGlzIGFub3RoZXIgcHJvYmxl bSBmb3IgdGhlIGV4aXN0aW5nIGFwcGxpY2F0aW9uLCB0aGUgbW1hcCgpIGZyb20gCj4gdGhlIG1t YXAgb2Zmc2V0IG9yIGV4cG9ydGJ1ZmZlciBmZCB3b3VsZCBub3QgY3JlYXRlIGEgcmVmZXJlbmNl IHRvIAo+IGJ1ZmZlciBpbiB0aGlzIHN0ZXAod2hpbGUgdGhlIGV4cG9ydGJ1ZmZlciB3b3VsZCBj cmVhdGUgb25lIGl0c2VsZikuCj4KPiBXaGVuIHlvdSBkZWxldGUgYSBidWZmZXIsIHlvdSBtYXkg bm90IHJlbGVhc2UgaXQgZnJvbSBpdHMgdmlydHVhbCAKPiBtZW1vcnkgc3BhY2UsIGxlYXZpbmcg YSBjb3JydXB0ZWQgdmlydHVhbCBtZW1vcnkgc3BhY2UuIEFsc28gdGhpcyAKPiBiZWhhdmlvciBp cyByaWdodCwgYmVjYXVzZSBtbWFwKDIpIHNheXM6Cj4KPiAiQWZ0ZXLCoCB0aGXCoCBtbWFwKCnC oCBjYWxsIGhhcyByZXR1cm5lZCwgdGhlIGZpbGUgZGVzY3JpcHRvciwgZmQsIGNhbiAKPiBiZSBj bG9zZWQgaW1tZWRpYXRlbHkgd2l0aG91dCBpbnZhbGlkYXRpbmcgdGhlIG1hcOKAkHBpbmcuIgoK RXhpc3RpbmcgYXBwbGljYXRpb25zIGRvIG5vdCBjYWxsIERFTEVURV9CVUYgaW9jdGwgYW5kIHdo ZW4gY2FsbCBpdCB0aGV5IHdpbGwgYmUgYXdhcmUgdGhhdCB0aGUgYnVmZmVyIGlzIHJlbW92ZWQu CkkgaGF2ZSBkb25lIGl0IGluIEdTdHJlYW1lcjoKaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Au b3JnL2JlbmphbWluLmdhaWduYXJkMS9nc3RyZWFtZXIvLS9jb21taXQvZmNhMGZiYzkzNGY0NDQw NjkzY2UwZmY2YzhkYzhhMmU1ZjVmMTdkOQoKUmVnYXJkcywKQmVuamFtaW4KCj4KPj4+Pj4gK8Kg wqDCoMKgwqDCoCBlbHNlIGlmIChxLT5tZW1vcnkgPT0gVkIyX01FTU9SWV9ETUFCVUYpCj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fdmIyX2J1Zl9kbWFidWZfcHV0KHZiKTsK Pj4+Pj4gK8KgwqDCoMKgwqDCoCBlbHNlCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIF9fdmIyX2J1Zl91c2VycHRyX3B1dCh2Yik7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoMKgwqDC oCB2YjJfcXVldWVfcmVtb3ZlX2J1ZmZlcihxLCB2Yik7Cj4+Pj4+ICvCoMKgwqDCoMKgwqAga2Zy ZWUodmIpOwo+Pj4+PiArCj4+Pj4+ICvCoMKgwqDCoMKgwqAgZHByaW50ayhxLCAyLCAiYnVmZmVy ICVkIGRlbGV0ZWRcbiIsIGluZGV4KTsKPj4+Pj4gK8KgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4+ Pj4gK30KPj4+Pj4gKwo+Pj4+PiDCoCAvKgo+Pj4+PiDCoMKgICogdmIyX3N0YXJ0X3N0cmVhbWlu ZygpIC0gQXR0ZW1wdCB0byBzdGFydCBzdHJlYW1pbmcuCj4+Pj4+IMKgwqAgKiBAcTrCoMKgwqDC oMKgwqDCoMKgIHZpZGVvYnVmMiBxdWV1ZQo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRp YS9jb21tb24vdmlkZW9idWYyL3ZpZGVvYnVmMi12NGwyLmMKPj4+Pj4gYi9kcml2ZXJzL21lZGlh L2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9idWYyLXY0bDIuYwo+Pj4+PiBpbmRleCA3MjQxMzVkNDFm N2YuLmNlYTY2NmMxN2I0MSAxMDA2NDQKPj4+Pj4gLS0tIGEvZHJpdmVycy9tZWRpYS9jb21tb24v dmlkZW9idWYyL3ZpZGVvYnVmMi12NGwyLmMKPj4+Pj4gKysrIGIvZHJpdmVycy9tZWRpYS9jb21t b24vdmlkZW9idWYyL3ZpZGVvYnVmMi12NGwyLmMKPj4+Pj4gQEAgLTc1MSw2ICs3NTEsMTIgQEAg aW50IHZiMl9wcmVwYXJlX2J1ZihzdHJ1Y3QgdmIyX3F1ZXVlICpxLCBzdHJ1Y3QKPj4+Pj4gbWVk aWFfZGV2aWNlICptZGV2LAo+Pj4+PiDCoCB9Cj4+Pj4+IMKgIEVYUE9SVF9TWU1CT0xfR1BMKHZi Ml9wcmVwYXJlX2J1Zik7Cj4+Pj4+Cj4+Pj4+ICtpbnQgdmIyX2RlbGV0ZV9idWYoc3RydWN0IHZi Ml9xdWV1ZSAqcSwgc3RydWN0IHY0bDJfYnVmZmVyICpiKQo+Pj4+PiArewo+Pj4+PiArwqDCoMKg wqDCoMKgIHJldHVybiB2YjJfY29yZV9kZWxldGVfYnVmKHEsIGItPmluZGV4KTsKPj4+Pj4gK30K Pj4+Pj4gK0VYUE9SVF9TWU1CT0xfR1BMKHZiMl9kZWxldGVfYnVmKTsKPj4+Pj4gKwo+Pj4+PiDC oCBpbnQgdmIyX2NyZWF0ZV9idWZzKHN0cnVjdCB2YjJfcXVldWUgKnEsIHN0cnVjdCB2NGwyX2Ny ZWF0ZV9idWZmZXJzCj4+Pj4+ICpjcmVhdGUpCj4+Pj4+IMKgIHsKPj4+Pj4gwqDCoMKgwqDCoMKg wqDCoCB1bnNpZ25lZCByZXF1ZXN0ZWRfcGxhbmVzID0gMTsKPj4+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItZGV2LmMKPj4+Pj4gYi9kcml2ZXJzL21lZGlhL3Y0 bDItY29yZS92NGwyLWRldi5jCj4+Pj4+IGluZGV4IGY4MTI3OTQ5MjY4Mi4uODBhY2UyZTFlOTMy IDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWRldi5jCj4+ Pj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItZGV2LmMKPj4+Pj4gQEAgLTcy MCw2ICs3MjAsNyBAQCBzdGF0aWMgdm9pZCBkZXRlcm1pbmVfdmFsaWRfaW9jdGxzKHN0cnVjdAo+ Pj4+PiB2aWRlb19kZXZpY2UgKnZkZXYpCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFNFVF9WQUxJRF9JT0NUTChvcHMsIFZJRElPQ19QUkVQQVJFX0JVRiwKPj4+Pj4gdmlk aW9jX3ByZXBhcmVfYnVmKTsKPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg U0VUX1ZBTElEX0lPQ1RMKG9wcywgVklESU9DX1NUUkVBTU9OLAo+Pj4+PiB2aWRpb2Nfc3RyZWFt b24pOwo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTRVRfVkFMSURfSU9D VEwob3BzLCBWSURJT0NfU1RSRUFNT0ZGLAo+Pj4+PiB2aWRpb2Nfc3RyZWFtb2ZmKTsKPj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU0VUX1ZBTElEX0lPQ1RMKG9wcywgVklESU9D X0RFTEVURV9CVUYsCj4+Pj4+IHZpZGlvY19kZWxldGVfYnVmKTsKPj4+Pj4gwqDCoMKgwqDCoMKg wqDCoCB9Cj4+Pj4+Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgaWYgKGlzX3ZpZCB8fCBpc192Ymkg fHwgaXNfbWV0YSkgewo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUv djRsMi1pb2N0bC5jCj4+Pj4+IGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1pb2N0bC5j Cj4+Pj4+IGluZGV4IGE4NThhY2VhNjU0Ny4uMWM3MzcyNzlkM2VmIDEwMDY0NAo+Pj4+PiAtLS0g YS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWlvY3RsLmMKPj4+Pj4gKysrIGIvZHJpdmVy cy9tZWRpYS92NGwyLWNvcmUvdjRsMi1pb2N0bC5jCj4+Pj4+IEBAIC0yMTU2LDYgKzIxNTYsMTUg QEAgc3RhdGljIGludCB2NGxfcHJlcGFyZV9idWYoY29uc3Qgc3RydWN0Cj4+Pj4+IHY0bDJfaW9j dGxfb3BzICpvcHMsCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldCA/IHJldCA6IG9w cy0+dmlkaW9jX3ByZXBhcmVfYnVmKGZpbGUsIGZoLCBiKTsKPj4+Pj4gwqAgfQo+Pj4+Pgo+Pj4+ PiArc3RhdGljIGludCB2NGxfZGVsZXRlX2J1Zihjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMg Km9wcywKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHZvaWQgKmFyZykKPj4+Pj4gK3sKPj4+ Pj4gK8KgwqDCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9idWZmZXIgKmIgPSBhcmc7Cj4+Pj4+ICvCoMKg wqDCoMKgwqAgaW50IHJldCA9IGNoZWNrX2ZtdChmaWxlLCBiLT50eXBlKTsKPj4+Pj4gKwo+Pj4+ PiArwqDCoMKgwqDCoMKgIHJldHVybiByZXQgPyByZXQgOiBvcHMtPnZpZGlvY19kZWxldGVfYnVm KGZpbGUsIGZoLCBiKTsKPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiDCoCBzdGF0aWMgaW50IHY0bF9n X3Bhcm0oY29uc3Qgc3RydWN0IHY0bDJfaW9jdGxfb3BzICpvcHMsCj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCB2b2lkCj4+Pj4+ICphcmcpCj4+Pj4+IMKgIHsKPj4+ Pj4gQEAgLTI5MDUsNiArMjkxNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9p bmZvCj4+Pj4+IHY0bDJfaW9jdGxzW10gPSB7Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgSU9DVExf SU5GTyhWSURJT0NfRU5VTV9GUkVRX0JBTkRTLCB2NGxfZW51bV9mcmVxX2JhbmRzLAo+Pj4+PiB2 NGxfcHJpbnRfZnJlcV9iYW5kLCAwKSwKPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBJT0NUTF9JTkZP KFZJRElPQ19EQkdfR19DSElQX0lORk8sIHY0bF9kYmdfZ19jaGlwX2luZm8sCj4+Pj4+IHY0bF9w cmludF9kYmdfY2hpcF9pbmZvLCBJTkZPX0ZMX0NMRUFSKHY0bDJfZGJnX2NoaXBfaW5mbywgbWF0 Y2gpKSwKPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBJT0NUTF9JTkZPKFZJRElPQ19RVUVSWV9FWFRf Q1RSTCwgdjRsX3F1ZXJ5X2V4dF9jdHJsLAo+Pj4+PiB2NGxfcHJpbnRfcXVlcnlfZXh0X2N0cmws IElORk9fRkxfQ1RSTCB8Cj4+Pj4+IElORk9fRkxfQ0xFQVIodjRsMl9xdWVyeV9leHRfY3RybCwg aWQpKSwKPj4+Pj4gK8KgwqDCoMKgwqDCoCBJT0NUTF9JTkZPKFZJRElPQ19ERUxFVEVfQlVGLCB2 NGxfZGVsZXRlX2J1ZiwKPj4+Pj4gdjRsX3ByaW50X2J1ZmZlciwgSU5GT19GTF9RVUVVRSksCj4+ Pj4+IMKgIH07Cj4+Pj4+IMKgICNkZWZpbmUgVjRMMl9JT0NUTFMgQVJSQVlfU0laRSh2NGwyX2lv Y3RscykKPj4+Pj4KPj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvdjRsMi1pb2N0bC5o IGIvaW5jbHVkZS9tZWRpYS92NGwyLWlvY3RsLmgKPj4+Pj4gaW5kZXggZWRiNzMzZjIxNjA0Li4y ZjIzMmVkODg0YzcgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2luY2x1ZGUvbWVkaWEvdjRsMi1pb2N0bC5o Cj4+Pj4+ICsrKyBiL2luY2x1ZGUvbWVkaWEvdjRsMi1pb2N0bC5oCj4+Pj4+IEBAIC0xNjMsNiAr MTYzLDggQEAgc3RydWN0IHY0bDJfZmg7Cj4+Pj4+IMKgwqAgKsKgwqDCoMKgIDpyZWY6YFZJRElP Q19DUkVBVEVfQlVGUyA8dmlkaW9jX2NyZWF0ZV9idWZzPmAgaW9jdGwKPj4+Pj4gwqDCoCAqIEB2 aWRpb2NfcHJlcGFyZV9idWY6IHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50 cwo+Pj4+PiDCoMKgICrCoMKgwqDCoCA6cmVmOmBWSURJT0NfUFJFUEFSRV9CVUYgPHZpZGlvY19w cmVwYXJlX2J1Zj5gIGlvY3RsCj4+Pj4+ICsgKiBAdmlkaW9jX2RlbGV0ZV9idWY6IHBvaW50ZXIg dG8gdGhlIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cwo+Pj4+PiArICrCoMKgwqDCoCA6cmVmOmBW SURJT0NfREVMRVRFX0JVRiA8dmlkaW9jX2RlbGV0ZV9idWY+YCBpb2N0bAo+Pj4+PiDCoMKgICog QHZpZGlvY19vdmVybGF5OiBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMK Pj4+Pj4gwqDCoCAqwqDCoMKgwqAgOnJlZjpgVklESU9DX09WRVJMQVkgPHZpZGlvY19vdmVybGF5 PmAgaW9jdGwKPj4+Pj4gwqDCoCAqIEB2aWRpb2NfZ19mYnVmOiBwb2ludGVyIHRvIHRoZSBmdW5j dGlvbiB0aGF0IGltcGxlbWVudHMKPj4+Pj4gQEAgLTQyMiw2ICs0MjQsOCBAQCBzdHJ1Y3QgdjRs Ml9pb2N0bF9vcHMgewo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9jcmVhdGVfYnVmZmVy cyAqYik7Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgaW50ICgqdmlkaW9jX3ByZXBhcmVfYnVmKShz dHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2NGwy X2J1ZmZlciAqYik7Cj4+Pj4+ICvCoMKgwqDCoMKgwqAgaW50ICgqdmlkaW9jX2RlbGV0ZV9idWYp KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2NGwyX2J1 ZmZlciAqYik7Cj4+Pj4+Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgaW50ICgqdmlkaW9jX292ZXJs YXkpKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgdW5zaWduZWQKPj4+Pj4gaW50IGkpOwo+ Pj4+PiDCoMKgwqDCoMKgwqDCoMKgIGludCAoKnZpZGlvY19nX2ZidWYpKHN0cnVjdCBmaWxlICpm aWxlLCB2b2lkICpmaCwKPj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvdmlkZW9idWYy LWNvcmUuaAo+Pj4+PiBiL2luY2x1ZGUvbWVkaWEvdmlkZW9idWYyLWNvcmUuaAo+Pj4+PiBpbmRl eCAwODBiNzgzZDYwOGQuLjBmOWU2OGY3NmI3NyAxMDA2NDQKPj4+Pj4gLS0tIGEvaW5jbHVkZS9t ZWRpYS92aWRlb2J1ZjItY29yZS5oCj4+Pj4+ICsrKyBiL2luY2x1ZGUvbWVkaWEvdmlkZW9idWYy LWNvcmUuaAo+Pj4+PiBAQCAtODQwLDYgKzg0MCwxNSBAQCBpbnQgdmIyX2NvcmVfY3JlYXRlX2J1 ZnMoc3RydWN0IHZiMl9xdWV1ZSAqcSwKPj4+Pj4gZW51bSB2YjJfbWVtb3J5IG1lbW9yeSwKPj4+ Pj4gwqDCoCAqLwo+Pj4+PiDCoCBpbnQgdmIyX2NvcmVfcHJlcGFyZV9idWYoc3RydWN0IHZiMl9x dWV1ZSAqcSwgdW5zaWduZWQgaW50IGluZGV4LAo+Pj4+PiB2b2lkICpwYik7Cj4+Pj4+Cj4+Pj4+ ICsvKioKPj4+Pj4gKyAqIHZiMl9jb3JlX2RlbGV0ZV9idWYoKSAtCj4+Pj4+ICsgKiBAcTogcG9p bnRlciB0byAmc3RydWN0IHZiMl9xdWV1ZSB3aXRoIHZpZGVvYnVmMiBxdWV1ZS4KPj4+Pj4gKyAq IEBpbmRleDrCoMKgwqDCoCBpZCBudW1iZXIgb2YgdGhlIGJ1ZmZlci4KPj4+Pj4gKyAqCj4+Pj4+ ICsgKsKgIFJldHVybjogcmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3M7IGFuIGVycm9yIGNvZGUgb3Ro ZXJ3aXNlLgo+Pj4+PiArICovCj4+Pj4+ICtpbnQgdmIyX2NvcmVfZGVsZXRlX2J1ZihzdHJ1Y3Qg dmIyX3F1ZXVlICpxLCB1bnNpZ25lZCBpbnQgaW5kZXgpOwo+Pj4+PiArCj4+Pj4+IMKgIC8qKgo+ Pj4+PiDCoMKgICogdmIyX2NvcmVfcWJ1ZigpIC0gUXVldWUgYSBidWZmZXIgZnJvbSB1c2Vyc3Bh Y2UKPj4+Pj4gwqDCoCAqCj4+Pj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3ZpZGVvYnVm Mi12NGwyLmgKPj4+Pj4gYi9pbmNsdWRlL21lZGlhL3ZpZGVvYnVmMi12NGwyLmgKPj4+Pj4gaW5k ZXggODhhN2E1NjUxNzBlLi4zYmVlYjRjNzM1ZjAgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2luY2x1ZGUv bWVkaWEvdmlkZW9idWYyLXY0bDIuaAo+Pj4+PiArKysgYi9pbmNsdWRlL21lZGlhL3ZpZGVvYnVm Mi12NGwyLmgKPj4+Pj4gQEAgLTExNCw2ICsxMTQsMTcgQEAgaW50IHZiMl9jcmVhdGVfYnVmcyhz dHJ1Y3QgdmIyX3F1ZXVlICpxLCBzdHJ1Y3QKPj4+Pj4gdjRsMl9jcmVhdGVfYnVmZmVycyAqY3Jl YXRlKTsKPj4+Pj4gwqDCoCAqLwo+Pj4+PiDCoCBpbnQgdmIyX3ByZXBhcmVfYnVmKHN0cnVjdCB2 YjJfcXVldWUgKnEsIHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYsCj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHY0bDJfYnVmZmVyICpiKTsKPj4+ Pj4gKy8qKgo+Pj4+PiArICogdmIyX2RlbGV0ZV9idWYoKSAtIERlbGV0ZSB0aGUgYnVmZmVyIGZy b20gdGhlIHF1ZXVlCj4+Pj4+ICsgKgo+Pj4+PiArICogQHE6wqDCoMKgwqDCoMKgwqDCoCBwb2lu dGVyIHRvICZzdHJ1Y3QgdmIyX3F1ZXVlIHdpdGggdmlkZW9idWYyIHF1ZXVlLgo+Pj4+PiArICog QGI6wqDCoMKgwqDCoMKgwqDCoCBidWZmZXIgc3RydWN0dXJlIHBhc3NlZCBmcm9tIHVzZXJzcGFj ZSB0bwo+Pj4+PiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnY0bDJfaW9jdGxfb3BzLT52 aWRpb2NfZGVsZXRlX2J1ZiBoYW5kbGVyIGluIGRyaXZlcgo+Pj4+PiArICoKPj4+Pj4gKyAqIFRo ZSByZXR1cm4gdmFsdWVzIGZyb20gdGhpcyBmdW5jdGlvbiBhcmUgaW50ZW5kZWQgdG8gYmUgZGly ZWN0bHkKPj4+Pj4gcmV0dXJuZWQKPj4+Pj4gKyAqIGZyb20gJnY0bDJfaW9jdGxfb3BzLT52aWRp b2NfZGVsZXRlX2J1ZiBoYW5kbGVyIGluIGRyaXZlci4KPj4+Pj4gKyAqLwo+Pj4+PiAraW50IHZi Ml9kZWxldGVfYnVmKHN0cnVjdCB2YjJfcXVldWUgKnEsIHN0cnVjdCB2NGwyX2J1ZmZlciAqYik7 Cj4+Pj4+Cj4+Pj4+IMKgIC8qKgo+Pj4+PiDCoMKgICogdmIyX3FidWYoKSAtIFF1ZXVlIGEgYnVm ZmVyIGZyb20gdXNlcnNwYWNlCj4+Pj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgv dmlkZW9kZXYyLmgKPj4+Pj4gYi9pbmNsdWRlL3VhcGkvbGludXgvdmlkZW9kZXYyLmgKPj4+Pj4g aW5kZXggYWVlNzVlYjllNjg2Li4zMWJiYTE5MTU2NDIgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2luY2x1 ZGUvdWFwaS9saW51eC92aWRlb2RldjIuaAo+Pj4+PiArKysgYi9pbmNsdWRlL3VhcGkvbGludXgv dmlkZW9kZXYyLmgKPj4+Pj4gQEAgLTI3MDIsNiArMjcwMiw4IEBAIHN0cnVjdCB2NGwyX2NyZWF0 ZV9idWZmZXJzIHsKPj4+Pj4gwqAgI2RlZmluZSBWSURJT0NfREJHX0dfQ0hJUF9JTkZPwqAgX0lP V1IoJ1YnLCAxMDIsIHN0cnVjdAo+Pj4+PiB2NGwyX2RiZ19jaGlwX2luZm8pCj4+Pj4+Cj4+Pj4+ IMKgICNkZWZpbmUgVklESU9DX1FVRVJZX0VYVF9DVFJMwqAgX0lPV1IoJ1YnLCAxMDMsIHN0cnVj dAo+Pj4+PiB2NGwyX3F1ZXJ5X2V4dF9jdHJsKQo+Pj4+PiArI2RlZmluZSBWSURJT0NfREVMRVRF X0JVRsKgwqDCoMKgwqAgX0lPV1IoJ1YnLCAxMDQsIHN0cnVjdCB2NGwyX2J1ZmZlcikKPj4+Pj4g Kwo+Pj4+Pgo+Pj4+PiDCoCAvKiBSZW1pbmRlcjogd2hlbiBhZGRpbmcgbmV3IGlvY3RscyBwbGVh c2UgYWRkIHN1cHBvcnQgZm9yIHRoZW0gdG8KPj4+Pj4gwqDCoMKgwqAgZHJpdmVycy9tZWRpYS92 NGwyLWNvcmUvdjRsMi1jb21wYXQtaW9jdGwzMi5jIGFzIHdlbGwhICovCj4+Pj4+IC0tIAo+Pj4+ PiAyLjM5LjIKPj4+Pj4KPj4gLS0gCj4+IEhzaWEtSnVuKFJhbmR5KSBMaQo+PgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFp bGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yb2NrY2hpcAo=