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 30C84EB64DA for ; Mon, 26 Jun 2023 07:50:29 +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:References:Cc:To:From: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=eloNNzOl1zOPW2vPcJoduvQA2BOwh1dW1svQ8nWd4Z0=; b=4Iw/+756ziTKws OpOv+iQWtFRLspQqBy3EwDaUSnFyoDAQonml0XivABJ5XqG4vCFJLU78gB4h+/tlmMe0v0R2j9dEi c7Ioc70VB8q7/6GLF9rBmRW2OGPUtmGFKLvnIqLfZpUcb9M0OPvh0EeYIyEVZCOicuOjzMz2D+hV1 YHeedvG4yRd+91UI6q/V8L/QHLbhgLGQzE8+lalucDhOssUguwCN8rJ5B8ghTroyaYgF3yTrN23m8 yCl30vfHRkGvK8nKrbgkW3vycqx8mw+PbNpDib3ZI12kF62yq2SonbRaWCvq37D4PM4MRSUWqJw5C w28tkIFN3VQ0cNYR4NsQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qDgzO-009aSJ-0f; Mon, 26 Jun 2023 07:50:22 +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 1qDgzJ-009aQr-0G; Mon, 26 Jun 2023 07:50:19 +0000 Received: from [IPV6:2a01:e0a:120:3210:960a:2463:3114:4c3a] (unknown [IPv6:2a01:e0a:120:3210:960a:2463:3114:4c3a]) (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 792A16607113; Mon, 26 Jun 2023 08:50:15 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1687765815; bh=a/QcuBsQxPJxqv6m9NOObLzUEXQwEhZnP7Fufxc0X1Q=; h=Date:Subject:From:To:Cc:References:In-Reply-To:From; b=nNL8NkOq949VAgd78R2lttJ9csOjWnkJqaj7f5cD+0Ee+fIHSKxGnaGuGDRow3+2c U5UK8QKJQ2B0aN8P4weFmwQTC9bztbFgLcE3FQvmGIJ0jq/nK7By0thdVDgxrBGDI6 OdvpoTGyQpMCjlAPxIUwXWvJLjgef7YlGg48LR6+nK8/LJ2flAUvqBTZKrFC+ku7vA zsLyjxWY1kENkan2pDe+bpg4OZ7V6eDGWN6ue8+/RALeFZoibYKL/M/jdlTSEK+q1m qWWwdUWLfj2h79pRrbw+WOke7hkBGoeeCRGbFJ4+CdHAEJWwbykBZXU5EceCprRzMv uKSBTTL5zcdEg== Message-ID: Date: Mon, 26 Jun 2023 09:50:13 +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: [EXT] [PATCH v3 10/11] media: v4l2: Add DELETE_BUF ioctl Content-Language: en-US From: Benjamin Gaignard To: Ming Qian , "mchehab@kernel.org" , "tfiga@chromium.org" , "m.szyprowski@samsung.com" , "ezequiel@vanguardiasur.com.ar" , "p.zabel@pengutronix.de" , "gregkh@linuxfoundation.org" , "hverkuil-cisco@xs4all.nl" , "nicolas.dufresne@collabora.com" Cc: "linux-media@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-mediatek@lists.infradead.org" , "linux-arm-msm@vger.kernel.org" , "linux-rockchip@lists.infradead.org" , "linux-staging@lists.linux.dev" , "kernel@collabora.com" References: <20230622131349.144160-1-benjamin.gaignard@collabora.com> <20230622131349.144160-11-benjamin.gaignard@collabora.com> In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230626_005017_381572_1A2347CD X-CRM114-Status: GOOD ( 33.77 ) 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 CkxlIDI2LzA2LzIwMjMgw6AgMDk6NDgsIEJlbmphbWluIEdhaWduYXJkIGEgw6ljcml0wqA6Cj4K PiBMZSAyNi8wNi8yMDIzIMOgIDA5OjA4LCBNaW5nIFFpYW4gYSDDqWNyaXTCoDoKPj4gSGkgQmVu amFtaW4sCj4+Cj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+Pj4gRnJvbTogQmVuamFt aW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJkQGNvbGxhYm9yYS5jb20+Cj4+PiBTZW50OiAy MDIz5bm0NuaciDIy5pelIDIxOjE0Cj4+PiBUbzogbWNoZWhhYkBrZXJuZWwub3JnOyB0ZmlnYUBj aHJvbWl1bS5vcmc7IG0uc3p5cHJvd3NraUBzYW1zdW5nLmNvbTsKPj4+IE1pbmcgUWlhbiA8bWlu Zy5xaWFuQG54cC5jb20+OyBlemVxdWllbEB2YW5ndWFyZGlhc3VyLmNvbS5hcjsKPj4+IHAuemFi ZWxAcGVuZ3V0cm9uaXguZGU7IGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnOyBodmVya3VpbC0K Pj4+IGNpc2NvQHhzNGFsbC5ubDsgbmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tCj4+PiBD YzogbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwu b3JnOyAKPj4+IGxpbnV4LWFybS0KPj4+IGtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51 eC1tZWRpYXRla0BsaXN0cy5pbmZyYWRlYWQub3JnOyAKPj4+IGxpbnV4LWFybS0KPj4+IG1zbUB2 Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmc7IGxpbnV4 LQo+Pj4gc3RhZ2luZ0BsaXN0cy5saW51eC5kZXY7IGtlcm5lbEBjb2xsYWJvcmEuY29tOyBCZW5q YW1pbiBHYWlnbmFyZAo+Pj4gPGJlbmphbWluLmdhaWduYXJkQGNvbGxhYm9yYS5jb20+Cj4+PiBT dWJqZWN0OiBbRVhUXSBbUEFUQ0ggdjMgMTAvMTFdIG1lZGlhOiB2NGwyOiBBZGQgREVMRVRFX0JV RiBpb2N0bAo+Pj4KPj4+IENhdXRpb246IFRoaXMgaXMgYW4gZXh0ZXJuYWwgZW1haWwuIFBsZWFz ZSB0YWtlIGNhcmUgd2hlbiBjbGlja2luZyAKPj4+IGxpbmtzIG9yCj4+PiBvcGVuaW5nIGF0dGFj aG1lbnRzLiBXaGVuIGluIGRvdWJ0LCByZXBvcnQgdGhlIG1lc3NhZ2UgdXNpbmcgdGhlIAo+Pj4g J1JlcG9ydAo+Pj4gdGhpcyBlbWFpbCcgYnV0dG9uCj4+Pgo+Pj4KPj4+IFZJRElPQ19ERUxFVEVf QlVGIGlvY3RsIGFsbG93cyB0byBkZWxldGUgYSBidWZmZXIgZnJvbSBhIHF1ZXVlLgo+Pj4KPj4+ IFNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEdhaWduYXJkIDxiZW5qYW1pbi5nYWlnbmFyZEBjb2xs YWJvcmEuY29tPgo+Pj4gLS0tCj4+PiAuLi4vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvdXNlci1m dW5jLnJzdMKgwqDCoMKgIHzCoCAxICsKPj4+IC4uLi9tZWRpYS92NGwvdmlkaW9jLWRlbGV0ZS1i dWYucnN0wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA1MSArKysrKysrKysrKysrKysrKysrCj4+PiAu Li4vbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItY29yZS5jwqDCoCB8IDMzICsrKysr KysrKysrKwo+Pj4gLi4uL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9idWYyLXY0bDIuY8Kg wqAgfMKgIDYgKysrCj4+PiBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWRldi5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8wqAgMSArCj4+PiBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwy LWlvY3RsLmPCoMKgwqDCoMKgwqDCoMKgwqAgfCAxMCArKysrCj4+PiBpbmNsdWRlL21lZGlhL3Y0 bDItaW9jdGwuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA0ICsr Cj4+PiBpbmNsdWRlL21lZGlhL3ZpZGVvYnVmMi1jb3JlLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfMKgIDkgKysrKwo+Pj4gaW5jbHVkZS9tZWRpYS92aWRlb2J1ZjItdjRsMi5owqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTEgKysrKwo+Pj4gaW5jbHVkZS91YXBpL2xp bnV4L3ZpZGVvZGV2Mi5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyICsKPj4+ IDEwIGZpbGVzIGNoYW5nZWQsIDEyOCBpbnNlcnRpb25zKCspCj4+PiBjcmVhdGUgbW9kZSAxMDA2 NDQgRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0bC92aWRpb2MtZGVsZXRlLQo+ Pj4gYnVmLnJzdAo+Pj4KPj4+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1h cGkvbWVkaWEvdjRsL3VzZXItZnVuYy5yc3QKPj4+IGIvRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2Ut YXBpL21lZGlhL3Y0bC91c2VyLWZ1bmMucnN0Cj4+PiBpbmRleCAxNWZmMGJmN2JiZTYuLjhjNzQw MTZlMTJmZCAxMDA2NDQKPj4+IC0tLSBhL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRp YS92NGwvdXNlci1mdW5jLnJzdAo+Pj4gKysrIGIvRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBp L21lZGlhL3Y0bC91c2VyLWZ1bmMucnN0Cj4+PiBAQCAtMTcsNiArMTcsNyBAQCBGdW5jdGlvbiBS ZWZlcmVuY2UKPj4+IMKgwqDCoMKgIHZpZGlvYy1kYmctZy1jaGlwLWluZm8KPj4+IMKgwqDCoMKg IHZpZGlvYy1kYmctZy1yZWdpc3Rlcgo+Pj4gwqDCoMKgwqAgdmlkaW9jLWRlY29kZXItY21kCj4+ PiArwqDCoMKgIHZpZGlvYy1kZWxldGUtYnVmCj4+PiDCoMKgwqDCoCB2aWRpb2MtZHFldmVudAo+ Pj4gwqDCoMKgwqAgdmlkaW9jLWR2LXRpbWluZ3MtY2FwCj4+PiDCoMKgwqDCoCB2aWRpb2MtZW5j b2Rlci1jbWQKPj4+IGRpZmYgLS1naXQgCj4+PiBhL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFw aS9tZWRpYS92NGwvdmlkaW9jLWRlbGV0ZS1idWYucnN0Cj4+PiBiL0RvY3VtZW50YXRpb24vdXNl cnNwYWNlLWFwaS9tZWRpYS92NGwvdmlkaW9jLWRlbGV0ZS1idWYucnN0Cj4+PiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi4wZTdjZTU4ZjkxYmMKPj4+IC0tLSAv ZGV2L251bGwKPj4+ICsrKyBiL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwv dmlkaW9jLWRlbGV0ZS1idWYucnN0Cj4+PiBAQCAtMCwwICsxLDUxIEBACj4+PiArLi4gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdGREwtMS4xLW5vLWludmFyaWFudHMtb3ItbGF0ZXIgLi4KPj4+ ICtjOm5hbWVzcGFjZTo6IFY0TAo+Pj4gKwo+Pj4gKy4uIF9WSURJT0NfREVMRVRFX0JVRjoKPj4+ ICsKPj4+ICsqKioqKioqKioqKioqKioqKioqKioqKioKPj4+ICtpb2N0bCBWSURJT0NfREVMRVRF X0JVRgo+Pj4gKyoqKioqKioqKioqKioqKioqKioqKioqKgo+Pj4gKwo+Pj4gK05hbWUKPj4+ICs9 PT09Cj4+PiArCj4+PiArVklESU9DX0RFTEVURV9CVUYgLSBEZWxldGUgYSBidWZmZXIgZnJvbSBh IHF1ZXVlCj4+PiArCj4+PiArU3lub3BzaXMKPj4+ICs9PT09PT09PQo+Pj4gKwo+Pj4gKy4uIGM6 bWFjcm86OiBWSURJT0NfREVMRVRFX0JVRgo+Pj4gKwo+Pj4gK2BgaW50IGlvY3RsKGludCBmZCwg VklESU9DX0RFTEVURV9CVUYsIHN0cnVjdCB2NGwyX2J1ZmZlciAqYXJncClgYAo+Pj4gKwo+Pj4g K0FyZ3VtZW50cwo+Pj4gKz09PT09PT09PQo+Pj4gKwo+Pj4gK2BgZmRgYAo+Pj4gK8KgwqDCoCBG aWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgOmM6ZnVuYzpgb3BlbigpYC4KPj4+ICsKPj4+ICtg YGFyZ3BgYAo+Pj4gK8KgwqDCoCBQb2ludGVyIHRvIHN0cnVjdCA6Yzp0eXBlOmB2NGwyX2J1ZmZl cmAuCj4+PiArCj4+PiArRGVzY3JpcHRpb24KPj4+ICs9PT09PT09PT09PQo+Pj4gKwo+Pj4gK0Fw cGxpY2F0aW9ucyBjYW4gb3B0aW9uYWxseSBjYWxsIHRoZSA6cmVmOmBWSURJT0NfREVMRVRFX0JV RmAgaW9jdGwgdG8KPj4+ICtkZWxldGUgYSBidWZmZXIgZnJvbSBhIHF1ZXVlLgo+Pj4gKwo+Pj4g K1RoZSBzdHJ1Y3QgOmM6dHlwZTpgdjRsMl9idWZmZXJgIHN0cnVjdHVyZSBpcyBzcGVjaWZpZWQg aW4KPj4+ICs6cmVmOmBidWZmZXJgLgo+Pj4gKwo+Pj4gK1JldHVybiBWYWx1ZQo+Pj4gKz09PT09 PT09PT09PQo+Pj4gKwo+Pj4gK09uIHN1Y2Nlc3MgMCBpcyByZXR1cm5lZCwgb24gZXJyb3IgLTEg YW5kIHRoZSBgYGVycm5vYGAgdmFyaWFibGUgaXMgCj4+PiBzZXQKPj4+ICthcHByb3ByaWF0ZWx5 LiBUaGUgZ2VuZXJpYyBlcnJvciBjb2RlcyBhcmUgZGVzY3JpYmVkIGF0IHRoZQo+Pj4gKzpyZWY6 YEdlbmVyaWMgRXJyb3IgQ29kZXMgPGdlbi1lcnJvcnM+YCBjaGFwdGVyLgo+Pj4gKwo+Pj4gK0VC VVNZCj4+PiArwqDCoMKgIEZpbGUgSS9PIGlzIGluIHByb2dyZXNzLgo+Pj4gKwo+Pj4gK0VJTlZB TAo+Pj4gK8KgwqDCoCBUaGUgYnVmZmVyIGBgaW5kZXhgYCBkb2Vzbid0IGV4aXN0IGluIHRoZSBx dWV1ZS4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlk ZW9idWYyLWNvcmUuYwo+Pj4gYi9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9i dWYyLWNvcmUuYwo+Pj4gaW5kZXggODk5NzgzZjY3NTgwLi5hYTU0NmM5NzJjM2QgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9idWYyLWNvcmUuYwo+ Pj4gKysrIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL3ZpZGVvYnVmMi1jb3JlLmMK Pj4+IEBAIC0xNjM3LDYgKzE2MzcsMzkgQEAgaW50IHZiMl9jb3JlX3ByZXBhcmVfYnVmKHN0cnVj dCB2YjJfcXVldWUgKnEsCj4+PiB1bnNpZ25lZCBpbnQgaW5kZXgsIHZvaWQgKnBiKcKgIH0KPj4+ IEVYUE9SVF9TWU1CT0xfR1BMKHZiMl9jb3JlX3ByZXBhcmVfYnVmKTsKPj4+Cj4+PiAraW50IHZi Ml9jb3JlX2RlbGV0ZV9idWYoc3RydWN0IHZiMl9xdWV1ZSAqcSwgdW5zaWduZWQgaW50IGluZGV4 KSB7Cj4+PiArwqDCoMKgwqDCoMKgIHN0cnVjdCB2YjJfYnVmZmVyICp2YjsKPj4+ICsKPj4+ICvC oMKgwqDCoMKgwqAgdmIgPSB2YjJfZ2V0X2J1ZmZlcihxLCBpbmRleCk7Cj4+PiArwqDCoMKgwqDC oMKgIGlmICghdmIpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRwcmludGso cSwgMSwgImludmFsaWQgYnVmZmVyIGluZGV4ICVkXG4iLCBpbmRleCk7Cj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4+ICvCoMKgwqDCoMKgwqAgfQo+ Pj4gKwo+Pj4gK8KgwqDCoMKgwqDCoCBpZiAodmItPnN0YXRlICE9IFZCMl9CVUZfU1RBVEVfREVR VUVVRUQpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRwcmludGsocSwgMSwg ImNhbid0IGRlbGV0ZSBub24gZGVxdWV1ZWQgYnVmZmVyIAo+Pj4gaW5kZXggJWRcbiIsIGluZGV4 KTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+Pj4g K8KgwqDCoMKgwqDCoCB9Cj4+PiArCj4+PiArwqDCoMKgwqDCoMKgIGlmICh2Yi0+cGxhbmVzWzBd Lm1lbV9wcml2KQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2FsbF92b2lkX3Zi X3FvcCh2YiwgYnVmX2NsZWFudXAsIHZiKTsKPj4+ICsKPj4+ICvCoMKgwqDCoMKgwqAgLyogRnJl ZSBNTUFQIGJ1ZmZlcnMgb3IgcmVsZWFzZSBVU0VSUFRSIGJ1ZmZlcnMgKi8KPj4+ICvCoMKgwqDC oMKgwqAgaWYgKHEtPm1lbW9yeSA9PSBWQjJfTUVNT1JZX01NQVApCj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBfX3ZiMl9idWZfbWVtX2ZyZWUodmIpOwo+Pj4gK8KgwqDCoMKgwqDC oCBlbHNlIGlmIChxLT5tZW1vcnkgPT0gVkIyX01FTU9SWV9ETUFCVUYpCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBfX3ZiMl9idWZfZG1hYnVmX3B1dCh2Yik7Cj4+PiArwqDCoMKg wqDCoMKgIGVsc2UKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fdmIyX2J1Zl91 c2VycHRyX3B1dCh2Yik7Cj4+PiArCj4+PiArwqDCoMKgwqDCoMKgIHZiMl9xdWV1ZV9yZW1vdmVf YnVmZmVyKHEsIHZiKTsKPj4+ICvCoMKgwqDCoMKgwqAga2ZyZWUodmIpOwo+PiBUaGUgbnVtX2J1 ZmZlcnMgaXMgbm90IGNoYW5nZWQsIElzIHRoYXQgb24gcHVycG9zZT8KPj4gbnVtX2J1ZmZlcnMg ZG9lc24ndCBtZWFuIHRoZSBudW1iZXIgb2YgdmIyIGJ1ZmZlcnMswqAgYnV0IG9ubHkgZGVjaWRl cyAKPj4gdGhlIG1heCBpbmRleCBvZiBhbGxvY2F0ZWQgdmIyIGJ1ZmZlcj8KPj4gT25jZSB0aGUg aW5kZXggaXMgZGVsZXRlZCwgdGhlbiBpdCB3b24ndCBiZSB1c2VkIGFueW1vcmUsIHVubGVzcyBm cmVlIAo+PiB0aGUgdmIyIHF1ZXVlPyBpcyBpdCBhIGhvbGUgaW4gdmIyIHF1ZXVlPwo+Cj4gWWVz IG51bV9idWZmZXJzIGlzbid0IGNoYW5nZSBhbmQgc3RpbGwgcmVwcmVzZW50IHRoZSBoaWdoZXN0 IGluZGV4IG9mIAo+IGFsbG9jYXRlZCBidWZmZXIuCj4gREVMRVRFX0JVRiByZW1vdmUgdGhlIGJ1 ZmZlciBmcm9tIHRoZSBsaXN0IGFuZCBmcmVlIHRoZSBtZW1vcnkuCj4gVGhhdCBjb3VsZCBhIGNy ZWF0ZSBhIGhvbGUgaW4gdmIyIHF1ZXVlLCB0aGF0IHdoeSB0aGUgZmlyc3QgcGF0Y2ggb2YgCj4g dGhpcyBzZXJpZXMgY2hhbmdlCj4gYWxsIHBsYWNlcyB3aGVyZSB2YjIgcXVldWUgYXJyYXkgd2Fz IHVzZWQgYnkgY2FsbHMgdG8gaGVscGVycyBmdW5jdGlvbiAKPiBhbmQgYWxzbyBjaGVjayB0aGUg cmV0dXJuIHZhbHVlLgo+IG51bV9idWZmZXJzIGlzIHVzZWQgYXMgdGhlIGxvd2VzdCBwb3NzaWJs ZSB2YWx1ZSB3aGVuIGZpbmRpbmcgdGhlIGZyZWUgCj4gaW5kZXhlcyBmb3IgYnVmZmVycyAoc2Vl IHZiMl9xdWV1ZV9hZGRfYnVmZmVyKCkpCj4gdGhpcyB3YXkgSSBjYW4gZ3VhcmFudHkgdGhhdCB0 aGUgaW5kZXhlcyBhIGNvbnRpbnVvdXMgd2hpY2ggaXMgYSAKPiByZXF1aXJlbWVudCBmb3IgY3Jl YXRlX2J1ZnMuCj4gSSBjaG9vc2UgdGhpcyBzb2x1dGlvbiBiZWNhdXNlIFhBcnJheSBBUEkgZG9l c24ndCBvZmZlciB3YXkgdG8gZmluZCAKPiBjb250aW51b3VzIGZyZWUgcmFuZ2UuCj4gSXQgZG9l c24ndCBzZWVtIGltcG9zc2libGUgdG8gYWRkIGl0IGJ1dCB0aGlzIHNlcmllcyBpcyBhbHJlYWR5 IGJpZyAKPiBlbm91Z2ggZnJvbSBteSBwb2ludCBvZiB2aWV3Lgo+Cj4gUmVnYXJkcywKPiBCZW5q YW1pbgo+Cj4+Cj4+IEFuZCB5b3UgY2FuIHVzZSB4YV9mb3JfZWFjaCgpIGluc3RlYWQgdGhlIGZv ciBsb29wIHRvIGl0ZXJhdGUgb3ZlciAKPj4gdGhlIHByZXNlbnQgYnVmZmVycyBpbiB2YjIgcXVl dWUuCgpTb3JyeSBJIGZvcmdvdCB0aGlzIGNvbW1lbnQuCldoZXJlIGRvIHlvdSB0aGluayBJIGNh biBpbXByb3ZlIHRoZSBjb2RlID8KClRoYW5rcywKQmVuamFtaW4KCj4+Cj4+PiArCj4+PiArwqDC oMKgwqDCoMKgIGRwcmludGsocSwgMiwgImJ1ZmZlciAlZCBkZWxldGVkXG4iLCBpbmRleCk7Cj4+ PiArwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+IC8qCj4+PiDCoCAqIHZi Ml9zdGFydF9zdHJlYW1pbmcoKSAtIEF0dGVtcHQgdG8gc3RhcnQgc3RyZWFtaW5nLgo+Pj4gwqAg KiBAcTrCoMKgwqDCoMKgwqDCoMKgIHZpZGVvYnVmMiBxdWV1ZQo+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItdjRsMi5jCj4+PiBiL2RyaXZl cnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItdjRsMi5jCj4+PiBpbmRleCA3MjQx MzVkNDFmN2YuLmNlYTY2NmMxN2I0MSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvbWVkaWEvY29t bW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItdjRsMi5jCj4+PiArKysgYi9kcml2ZXJzL21lZGlhL2Nv bW1vbi92aWRlb2J1ZjIvdmlkZW9idWYyLXY0bDIuYwo+Pj4gQEAgLTc1MSw2ICs3NTEsMTIgQEAg aW50IHZiMl9wcmVwYXJlX2J1ZihzdHJ1Y3QgdmIyX3F1ZXVlICpxLCBzdHJ1Y3QKPj4+IG1lZGlh X2RldmljZSAqbWRldizCoCB9wqAgRVhQT1JUX1NZTUJPTF9HUEwodmIyX3ByZXBhcmVfYnVmKTsK Pj4+Cj4+PiAraW50IHZiMl9kZWxldGVfYnVmKHN0cnVjdCB2YjJfcXVldWUgKnEsIHN0cnVjdCB2 NGwyX2J1ZmZlciAqYikgewo+Pj4gK8KgwqDCoMKgwqDCoCByZXR1cm4gdmIyX2NvcmVfZGVsZXRl X2J1ZihxLCBiLT5pbmRleCk7IH0KPj4+ICtFWFBPUlRfU1lNQk9MX0dQTCh2YjJfZGVsZXRlX2J1 Zik7Cj4+PiArCj4+PiBpbnQgdmIyX2NyZWF0ZV9idWZzKHN0cnVjdCB2YjJfcXVldWUgKnEsIHN0 cnVjdCB2NGwyX2NyZWF0ZV9idWZmZXJzIAo+Pj4gKmNyZWF0ZSkKPj4+IHsKPj4+IMKgwqDCoMKg wqDCoMKgIHVuc2lnbmVkIHJlcXVlc3RlZF9wbGFuZXMgPSAxOwo+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItZGV2LmMgYi9kcml2ZXJzL21lZGlhL3Y0bDItCj4+ PiBjb3JlL3Y0bDItZGV2LmMKPj4+IGluZGV4IGY4MTI3OTQ5MjY4Mi4uODBhY2UyZTFlOTMyIDEw MDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1kZXYuYwo+Pj4gKysr IGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1kZXYuYwo+Pj4gQEAgLTcyMCw2ICs3MjAs NyBAQCBzdGF0aWMgdm9pZCBkZXRlcm1pbmVfdmFsaWRfaW9jdGxzKHN0cnVjdCAKPj4+IHZpZGVv X2RldmljZQo+Pj4gKnZkZXYpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU0VU X1ZBTElEX0lPQ1RMKG9wcywgVklESU9DX1BSRVBBUkVfQlVGLCAKPj4+IHZpZGlvY19wcmVwYXJl X2J1Zik7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU0VUX1ZBTElEX0lPQ1RM KG9wcywgVklESU9DX1NUUkVBTU9OLCB2aWRpb2Nfc3RyZWFtb24pOwo+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIFNFVF9WQUxJRF9JT0NUTChvcHMsIFZJRElPQ19TVFJFQU1PRkYs IAo+Pj4gdmlkaW9jX3N0cmVhbW9mZik7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBTRVRfVkFMSURfSU9DVEwob3BzLCBWSURJT0NfREVMRVRFX0JVRiwKPj4+ICsgdmlkaW9jX2Rl bGV0ZV9idWYpOwo+Pj4gwqDCoMKgwqDCoMKgwqAgfQo+Pj4KPj4+IMKgwqDCoMKgwqDCoMKgIGlm IChpc192aWQgfHwgaXNfdmJpIHx8IGlzX21ldGEpIHsgZGlmZiAtLWdpdCAKPj4+IGEvZHJpdmVy cy9tZWRpYS92NGwyLWNvcmUvdjRsMi0KPj4+IGlvY3RsLmMgYi9kcml2ZXJzL21lZGlhL3Y0bDIt Y29yZS92NGwyLWlvY3RsLmMKPj4+IGluZGV4IGE4NThhY2VhNjU0Ny4uMWM3MzcyNzlkM2VmIDEw MDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1pb2N0bC5jCj4+PiAr KysgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWlvY3RsLmMKPj4+IEBAIC0yMTU2LDYg KzIxNTYsMTUgQEAgc3RhdGljIGludCB2NGxfcHJlcGFyZV9idWYoY29uc3Qgc3RydWN0Cj4+PiB2 NGwyX2lvY3RsX29wcyAqb3BzLAo+Pj4gwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldCA/IHJldCA6 IG9wcy0+dmlkaW9jX3ByZXBhcmVfYnVmKGZpbGUsIGZoLCBiKTvCoCB9Cj4+Pgo+Pj4gK3N0YXRp YyBpbnQgdjRsX2RlbGV0ZV9idWYoY29uc3Qgc3RydWN0IHY0bDJfaW9jdGxfb3BzICpvcHMsCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCBmaWxlICpmaWxlLCB2b2lkICpmaCwgdm9pZCAqYXJnKSB7Cj4+PiArwqDCoMKgwqDCoMKgIHN0 cnVjdCB2NGwyX2J1ZmZlciAqYiA9IGFyZzsKPj4+ICvCoMKgwqDCoMKgwqAgaW50IHJldCA9IGNo ZWNrX2ZtdChmaWxlLCBiLT50eXBlKTsKPj4+ICsKPj4+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIHJl dCA/IHJldCA6IG9wcy0+dmlkaW9jX2RlbGV0ZV9idWYoZmlsZSwgZmgsIGIpOyB9Cj4+PiArCj4+ PiBzdGF0aWMgaW50IHY0bF9nX3Bhcm0oY29uc3Qgc3RydWN0IHY0bDJfaW9jdGxfb3BzICpvcHMs Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHZvaWQgCj4+PiAqYXJnKcKg IHsgQEAgLTI5MDUsNiArMjkxNCw3Cj4+PiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfaW9j dGxfaW5mbyB2NGwyX2lvY3Rsc1tdID0gewo+Pj4gwqDCoMKgwqDCoMKgwqAgSU9DVExfSU5GTyhW SURJT0NfRU5VTV9GUkVRX0JBTkRTLCB2NGxfZW51bV9mcmVxX2JhbmRzLAo+Pj4gdjRsX3ByaW50 X2ZyZXFfYmFuZCwgMCksCj4+PiDCoMKgwqDCoMKgwqDCoCBJT0NUTF9JTkZPKFZJRElPQ19EQkdf R19DSElQX0lORk8sIHY0bF9kYmdfZ19jaGlwX2luZm8sCj4+PiB2NGxfcHJpbnRfZGJnX2NoaXBf aW5mbywgSU5GT19GTF9DTEVBUih2NGwyX2RiZ19jaGlwX2luZm8sIG1hdGNoKSksCj4+PiDCoMKg wqDCoMKgwqDCoCBJT0NUTF9JTkZPKFZJRElPQ19RVUVSWV9FWFRfQ1RSTCwgdjRsX3F1ZXJ5X2V4 dF9jdHJsLAo+Pj4gdjRsX3ByaW50X3F1ZXJ5X2V4dF9jdHJsLCBJTkZPX0ZMX0NUUkwgfCAKPj4+ IElORk9fRkxfQ0xFQVIodjRsMl9xdWVyeV9leHRfY3RybCwKPj4+IGlkKSksCj4+PiArwqDCoMKg wqDCoMKgIElPQ1RMX0lORk8oVklESU9DX0RFTEVURV9CVUYsIHY0bF9kZWxldGVfYnVmLCB2NGxf cHJpbnRfYnVmZmVyLAo+Pj4gKyBJTkZPX0ZMX1FVRVVFKSwKPj4+IH07Cj4+PiAjZGVmaW5lIFY0 TDJfSU9DVExTIEFSUkFZX1NJWkUodjRsMl9pb2N0bHMpCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbWVkaWEvdjRsMi1pb2N0bC5oIGIvaW5jbHVkZS9tZWRpYS92NGwyLWlvY3RsLmggCj4+ PiBpbmRleAo+Pj4gZWRiNzMzZjIxNjA0Li4yZjIzMmVkODg0YzcgMTAwNjQ0Cj4+PiAtLS0gYS9p bmNsdWRlL21lZGlhL3Y0bDItaW9jdGwuaAo+Pj4gKysrIGIvaW5jbHVkZS9tZWRpYS92NGwyLWlv Y3RsLmgKPj4+IEBAIC0xNjMsNiArMTYzLDggQEAgc3RydWN0IHY0bDJfZmg7Cj4+PiDCoCAqwqDC oMKgwqAgOnJlZjpgVklESU9DX0NSRUFURV9CVUZTIDx2aWRpb2NfY3JlYXRlX2J1ZnM+YCBpb2N0 bAo+Pj4gwqAgKiBAdmlkaW9jX3ByZXBhcmVfYnVmOiBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0 aGF0IGltcGxlbWVudHMKPj4+IMKgICrCoMKgwqDCoCA6cmVmOmBWSURJT0NfUFJFUEFSRV9CVUYg PHZpZGlvY19wcmVwYXJlX2J1Zj5gIGlvY3RsCj4+PiArICogQHZpZGlvY19kZWxldGVfYnVmOiBw b2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMKPj4+ICsgKsKgwqDCoMKgIDpy ZWY6YFZJRElPQ19ERUxFVEVfQlVGIDx2aWRpb2NfZGVsZXRlX2J1Zj5gIGlvY3RsCj4+PiDCoCAq IEB2aWRpb2Nfb3ZlcmxheTogcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRz Cj4+PiDCoCAqwqDCoMKgwqAgOnJlZjpgVklESU9DX09WRVJMQVkgPHZpZGlvY19vdmVybGF5PmAg aW9jdGwKPj4+IMKgICogQHZpZGlvY19nX2ZidWY6IHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRo YXQgaW1wbGVtZW50cyBAQCAKPj4+IC00MjIsNiArNDI0LDgKPj4+IEBAIHN0cnVjdCB2NGwyX2lv Y3RsX29wcyB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHY0bDJfY3JlYXRlX2J1ZmZlcnMgKmIpOwo+ Pj4gwqDCoMKgwqDCoMKgwqAgaW50ICgqdmlkaW9jX3ByZXBhcmVfYnVmKShzdHJ1Y3QgZmlsZSAq ZmlsZSwgdm9pZCAqZmgsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHY0bDJfYnVmZmVyICpiKTsKPj4+ ICvCoMKgwqDCoMKgwqAgaW50ICgqdmlkaW9jX2RlbGV0ZV9idWYpKHN0cnVjdCBmaWxlICpmaWxl LCB2b2lkICpmaCwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9idWZmZXIgKmIpOwo+Pj4KPj4+IMKg wqDCoMKgwqDCoMKgIGludCAoKnZpZGlvY19vdmVybGF5KShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9p ZCAqZmgsIHVuc2lnbmVkIAo+Pj4gaW50IGkpOwo+Pj4gwqDCoMKgwqDCoMKgwqAgaW50ICgqdmlk aW9jX2dfZmJ1Zikoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBkaWZmIC0tZ2l0Cj4+PiBh L2luY2x1ZGUvbWVkaWEvdmlkZW9idWYyLWNvcmUuaCBiL2luY2x1ZGUvbWVkaWEvdmlkZW9idWYy LWNvcmUuaCBpbmRleAo+Pj4gMDgwYjc4M2Q2MDhkLi4wZjllNjhmNzZiNzcgMTAwNjQ0Cj4+PiAt LS0gYS9pbmNsdWRlL21lZGlhL3ZpZGVvYnVmMi1jb3JlLmgKPj4+ICsrKyBiL2luY2x1ZGUvbWVk aWEvdmlkZW9idWYyLWNvcmUuaAo+Pj4gQEAgLTg0MCw2ICs4NDAsMTUgQEAgaW50IHZiMl9jb3Jl X2NyZWF0ZV9idWZzKHN0cnVjdCB2YjJfcXVldWUgKnEsCj4+PiBlbnVtIHZiMl9tZW1vcnkgbWVt b3J5LAo+Pj4gwqAgKi8KPj4+IGludCB2YjJfY29yZV9wcmVwYXJlX2J1ZihzdHJ1Y3QgdmIyX3F1 ZXVlICpxLCB1bnNpZ25lZCBpbnQgaW5kZXgsIAo+Pj4gdm9pZCAqcGIpOwo+Pj4KPj4+ICsvKioK Pj4+ICsgKiB2YjJfY29yZV9kZWxldGVfYnVmKCkgLQo+Pj4gKyAqIEBxOiBwb2ludGVyIHRvICZz dHJ1Y3QgdmIyX3F1ZXVlIHdpdGggdmlkZW9idWYyIHF1ZXVlLgo+Pj4gKyAqIEBpbmRleDrCoMKg wqDCoCBpZCBudW1iZXIgb2YgdGhlIGJ1ZmZlci4KPj4+ICsgKgo+Pj4gKyAqwqAgUmV0dXJuOiBy ZXR1cm5zIHplcm8gb24gc3VjY2VzczsgYW4gZXJyb3IgY29kZSBvdGhlcndpc2UuCj4+PiArICov Cj4+PiAraW50IHZiMl9jb3JlX2RlbGV0ZV9idWYoc3RydWN0IHZiMl9xdWV1ZSAqcSwgdW5zaWdu ZWQgaW50IGluZGV4KTsKPj4+ICsKPj4+IC8qKgo+Pj4gwqAgKiB2YjJfY29yZV9xYnVmKCkgLSBR dWV1ZSBhIGJ1ZmZlciBmcm9tIHVzZXJzcGFjZQo+Pj4gwqAgKgo+Pj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbWVkaWEvdmlkZW9idWYyLXY0bDIuaCAKPj4+IGIvaW5jbHVkZS9tZWRpYS92aWRlb2J1 ZjItdjRsMi5oCj4+PiBpbmRleCA4OGE3YTU2NTE3MGUuLjNiZWViNGM3MzVmMCAxMDA2NDQKPj4+ IC0tLSBhL2luY2x1ZGUvbWVkaWEvdmlkZW9idWYyLXY0bDIuaAo+Pj4gKysrIGIvaW5jbHVkZS9t ZWRpYS92aWRlb2J1ZjItdjRsMi5oCj4+PiBAQCAtMTE0LDYgKzExNCwxNyBAQCBpbnQgdmIyX2Ny ZWF0ZV9idWZzKHN0cnVjdCB2YjJfcXVldWUgKnEsIHN0cnVjdAo+Pj4gdjRsMl9jcmVhdGVfYnVm ZmVycyAqY3JlYXRlKTsKPj4+IMKgICovCj4+PiBpbnQgdmIyX3ByZXBhcmVfYnVmKHN0cnVjdCB2 YjJfcXVldWUgKnEsIHN0cnVjdCBtZWRpYV9kZXZpY2UgKm1kZXYsCj4+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdjRsMl9idWZmZXIgKmIpOwo+Pj4gKy8q Kgo+Pj4gKyAqIHZiMl9kZWxldGVfYnVmKCkgLSBEZWxldGUgdGhlIGJ1ZmZlciBmcm9tIHRoZSBx dWV1ZQo+Pj4gKyAqCj4+PiArICogQHE6wqDCoMKgwqDCoMKgwqDCoCBwb2ludGVyIHRvICZzdHJ1 Y3QgdmIyX3F1ZXVlIHdpdGggdmlkZW9idWYyIHF1ZXVlLgo+Pj4gKyAqIEBiOsKgwqDCoMKgwqDC oMKgwqAgYnVmZmVyIHN0cnVjdHVyZSBwYXNzZWQgZnJvbSB1c2Vyc3BhY2UgdG8KPj4+ICsgKsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmdjRsMl9pb2N0bF9vcHMtPnZpZGlvY19kZWxldGVfYnVm IGhhbmRsZXIgaW4gZHJpdmVyCj4+PiArICoKPj4+ICsgKiBUaGUgcmV0dXJuIHZhbHVlcyBmcm9t IHRoaXMgZnVuY3Rpb24gYXJlIGludGVuZGVkIHRvIGJlIGRpcmVjdGx5Cj4+PiArcmV0dXJuZWQK Pj4+ICsgKiBmcm9tICZ2NGwyX2lvY3RsX29wcy0+dmlkaW9jX2RlbGV0ZV9idWYgaGFuZGxlciBp biBkcml2ZXIuCj4+PiArICovCj4+PiAraW50IHZiMl9kZWxldGVfYnVmKHN0cnVjdCB2YjJfcXVl dWUgKnEsIHN0cnVjdCB2NGwyX2J1ZmZlciAqYik7Cj4+Pgo+Pj4gLyoqCj4+PiDCoCAqIHZiMl9x YnVmKCkgLSBRdWV1ZSBhIGJ1ZmZlciBmcm9tIHVzZXJzcGFjZSBkaWZmIC0tZ2l0Cj4+PiBhL2lu Y2x1ZGUvdWFwaS9saW51eC92aWRlb2RldjIuaCBiL2luY2x1ZGUvdWFwaS9saW51eC92aWRlb2Rl djIuaCBpbmRleAo+Pj4gYWVlNzVlYjllNjg2Li4zMWJiYTE5MTU2NDIgMTAwNjQ0Cj4+PiAtLS0g YS9pbmNsdWRlL3VhcGkvbGludXgvdmlkZW9kZXYyLmgKPj4+ICsrKyBiL2luY2x1ZGUvdWFwaS9s aW51eC92aWRlb2RldjIuaAo+Pj4gQEAgLTI3MDIsNiArMjcwMiw4IEBAIHN0cnVjdCB2NGwyX2Ny ZWF0ZV9idWZmZXJzIHvCoCAjZGVmaW5lCj4+PiBWSURJT0NfREJHX0dfQ0hJUF9JTkZPwqAgX0lP V1IoJ1YnLCAxMDIsIHN0cnVjdCB2NGwyX2RiZ19jaGlwX2luZm8pCj4+Pgo+Pj4gI2RlZmluZSBW SURJT0NfUVVFUllfRVhUX0NUUkzCoCBfSU9XUignVicsIDEwMywgc3RydWN0IAo+Pj4gdjRsMl9x dWVyeV9leHRfY3RybCkKPj4+ICsjZGVmaW5lIFZJRElPQ19ERUxFVEVfQlVGwqDCoMKgwqDCoCBf SU9XUignVicsIDEwNCwgc3RydWN0IHY0bDJfYnVmZmVyKQo+Pj4gKwo+Pj4KPj4+IC8qIFJlbWlu ZGVyOiB3aGVuIGFkZGluZyBuZXcgaW9jdGxzIHBsZWFzZSBhZGQgc3VwcG9ydCBmb3IgdGhlbSB0 bwo+Pj4gwqDCoMKgIGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY29tcGF0LWlvY3RsMzIu YyBhcyB3ZWxsISAqLwo+Pj4gLS0gCj4+PiAyLjM5LjIKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LXJvY2tjaGlwIG1haWxpbmcgbGlzdApMaW51 eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2NoaXAK