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 D096AC43334 for ; Tue, 14 Jun 2022 16:15:13 +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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=sVktx9n51/5qVvd3pOVomR5ib6cByOKg3mr6/zbc6iU=; b=IoPCuSS1IJ0NTS XH5VuoalF+75qhbnUYhF3Ia3GGf0JPndS1JbUdQbtUILAdZiYMGJIGxJqMQLqc7sKEpmxcd+WQj13 3IbL90yC6FlY5zYNiqj0sbvlJqsKQ3FIk3IzXWJCFE4acRoANVzifVRRYDiwMB9aX9GqfuDbwV39P HJ4duLl+up5rTpt5Q3A2yVV/9V99kvLfR7deIjG7oi/PB8RMeY19RviNADZoURLE9KLmDnokz/Anh iYSkKAJQbreR8TK+KtKIGpoEwtW7QXyrJzGWdpuega1dSJbj1W19q8zvL/sN0AGuoE0xAopy7ay9y 0/G7DzxjHhOszfMOHfZg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o19C1-00AI96-NW; Tue, 14 Jun 2022 16:15:01 +0000 Received: from madras.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e5ab]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1o19By-00AI81-OY for linux-rockchip@lists.infradead.org; Tue, 14 Jun 2022 16:15:00 +0000 Received: from nicolas-tpx395.localdomain (192-222-136-102.qc.cable.ebox.net [192.222.136.102]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: nicolas) by madras.collabora.co.uk (Postfix) with ESMTPSA id 0749866015D7; Tue, 14 Jun 2022 17:14:55 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1655223297; bh=v1oVMG8D/TcLecVQ+c4GKl6+Ukw1Is0dn6GvtnEkISg=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=W4VeWv0nm+oDDfqZcEv6yfok1w2Hs2fCLK9Ii52uXYaSGHd0trXIq40lS2QB+W7XV w+1UbfMWtydh/+IdJkElC07injuWO/FOQ1KD6nkRYrBW/mR2BbqCK2WkzxScUqJNnd o3cqeAsIJaMFaY8q9Q4f5eL7wh5r6rQALkmzzPrXKyXBt3HZEbAmuOzMIgDjf/I04U qO8DeoLY0AGLA41mvyj9VbmjoJinqsBndmsK/ik1qddG+L/z0wETtE8kyAzUSxhKW5 0IkdtonfvXbnz1Prl+urYtL0JQnM3t0uDFIBn4DYwG3zHEFrgG3HIEiNChwX2qNlR+ tvDyQZZ3s1FAA== Message-ID: <46211420a76c7608c34cd6b3569f41accdfd08a1.camel@collabora.com> Subject: Re: [PATCH v1 2/5] media: rkvdec: Add an ops to check for decode errors From: Nicolas Dufresne To: Hans Verkuil , linux-media@vger.kernel.org, Ezequiel Garcia , Mauro Carvalho Chehab , Greg Kroah-Hartman Cc: kernel@collabora.com, linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org Date: Tue, 14 Jun 2022 12:14:47 -0400 In-Reply-To: References: <20220610125215.240539-1-nicolas.dufresne@collabora.com> <20220610125215.240539-3-nicolas.dufresne@collabora.com> User-Agent: Evolution 3.44.1 (3.44.1-1.fc36) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220614_091459_105551_B832094E X-CRM114-Status: GOOD ( 38.34 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org TGUgbWFyZGkgMTQganVpbiAyMDIyIMOgIDE2OjQ0ICswMjAwLCBIYW5zIFZlcmt1aWwgYSDDqWNy aXTCoDoKPiBPbiA2LzEwLzIyIDE0OjUyLCBOaWNvbGFzIER1ZnJlc25lIHdyb3RlOgo+ID4gVGhp cyBvcHRpb25hbCBpbnRlcm5hbCBvcHMgYWxsb3cgZWFjaCBjb2RlYyB0byBkbyB0aGVpciBvd24K PiA+IGVycm9yIHN0YXR1cyBjaGVja2luZy4gVGhlIHByZXNlbmNlIG9mIGFuIGVycm9yIGlzIHJl cG9ydGVkCj4gPiB1c2luZyB0aGUgRVJST1IgYnVmZmVyIHN0YXRlLiBUaGlzIHBhdGNoIGhhdmUg bm8gZnVuY3Rpb25hbAo+ID4gY2hhbmdlcy4KPiAKPiBJZiBhIGJ1ZmZlciBpcyByZXR1cm5lZCB3 aXRoIHN0YXRlIEVSUk9SLCB0aGVuIHRoYXQgbWVhbnMgdGhhdCBpdCBpcwo+IHNlcmlvdXNseSBj b3JydXB0IGFuZCB1c2Vyc3BhY2UgaXMgZXhwZWN0ZWQgdG8gZHJvcCBpdC4gWW91IG1pZ2h0IHN0 aWxsCj4gd2FudCB0byBzaG93IGl0IGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMsIGJ1dCB0aGUgbm9y bWFsIGFjdGlvbiBpcyB0byBkcm9wIGl0LgoKVGhlIGRpc2N1c3Npb24gc2hvdWxkIGJlIGFyb3Vu ZCB0aGUgRVJST1IgZmxhZywgYW5kIG5vdCB0aGUgZXJyb3Igc3RhdGUuIEVycm9yCnN0YXRlIGlz IGp1c3QgYW4gaW50ZXJuYWwgdGhpbmcgdGhhdCBoYXZlIG5vIG1lYW5pbmcgQVBJIHdpc2UsIGJ1 dCB0dXJucyBvdXQgdG8KYmUgdGhlIG9ubHkgd2F5IHRvIGdldCB0aGUgRVJST1IgZmxhZyB0byBi ZSBzZXQuIFdpdGggdGhhdCBpbiBtaW5kLCB0aGlzIGlzIG5vdAp3aGF0IFY0TDJfQlVGX0ZMQUdf RVJST1Igc3BlY2lmaWNhdGlvbiBzYXlzOgoKPiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIHRoZSBi dWZmZXIgaGFzIGJlZW4gZGVxdWV1ZWQgc3VjY2Vzc2Z1bGx5LCBhbHRob3VnaAo+IHRoZSBkYXRh IG1pZ2h0IGhhdmUgYmVlbiBjb3JydXB0ZWQuIFRoaXMgaXMgcmVjb3ZlcmFibGUsIHN0cmVhbWlu ZyBtYXkKPiBjb250aW51ZSBhcyBub3JtYWwgYW5kIHRoZSBidWZmZXIgbWF5IGJlIHJldXNlZCBu b3JtYWxseS4gRHJpdmVycyBzZXTCoAo+IHRoaXMgZmxhZyB3aGVuIHRoZSBWSURJT0NfRFFCVUYg aW9jdGwgaXMgY2FsbGVkLgoKRm9yIG1lICJzZXJpb3VzbHkgY29ycnVwdCIgYW5kICJtaWdodCBo YXZlIGJlZW4gY29ycnVwdGVkIiBpcyB2ZXJ5IGRpZmZlcmVudC4KCj4gCj4gU28gdGhpcyBpcyBu b3QgYSB2YWxpZCBhcHByb2FjaCBmb3IgYSBkZWNvZGVyIHRoYXQgY2FuIHN0aWxsIHByb2R1Y2Ug YQo+IGRlY2VudCBwaWN0dXJlLCBhbGJlaXQgd2l0aCBtYWNyb2Jsb2NrIGFydGlmYWN0cy4KPiAK PiBBIHNlcGFyYXRlIGNvbnRyb2wgdGhhdCBjYW4gYmUgcmV0dXJuZWQgYXMgcGFydCBvZiB0aGUg cmVxdWVzdCBhbmQgY29udGFpbnMKPiBzb21lIHNvcnQgb2YgZXJyb3IgaW5kaWNhdGlvbiB3b3Vs ZCBiZSBtb3JlIGFwcHJvcHJpYXRlLgo+IAo+IEJ1ZmZlciBzdGF0ZSBFUlJPUiBpcyByZWFsbHkg bWVhbnQgZm9yIGUuZy4gRE1BIGVycm9ycyBhbmQgaXQgc2hvdWxkbid0Cj4gYmUgbWl4ZWQgd2l0 aCBkZWNvZGUgZXJyb3JzIHRoYXQgc3RpbGwgcHJvZHVjZSBhIHZhbGlkIHBpY3R1cmUuCgpUaGUg RVJST1IgZmxhZyBoYXMgYmVlbiB1c2VkIGZvciBtYW55IHllYXJzIGJ5IHRoZSBVVkMgZHJpdmVy IHRvIGluZGljYXRlIGEKcGFydGlhbGx5IHJlY2VpdmVkIGltYWdlIChwb3NzaWJseSBkdWUgdG8g RE1BIGVycm9yKS4gVGhhdCBkcml2ZXIgd2VudCBldmVuCmZ1cnRoZXIgYW5kIHNldCB0aGUgYnl0 ZXN1c2VkIHRvIHRoZSBhbW91bnQgb2YgYnl0ZXMgdGhhdCB3YXMgcmVjZWl2ZWQuIEhvdyB0aGlz CmhhdmUgYmVlbiBpbnRlcnByZXRlZCAobW9zdGx5IGR1ZSB0byBob3cgdGhlIHNwZWMgYXJvdW5k IEVSUk9SIGZsYWcgaXMgd3JpdHRlbikKaW4gR1N0cmVhbWVyIGlzIHRoYXQgdGhlIGJ1ZmZlciBj b250YWlucyAic29tZSB2YWxpZCIgZGF0YSB1bmxlc3MgcGF5bG9hZCBzaXplCmlzIDAuCgpBcyBl eHBsYWluZWQgZWFybGllciwgdGhlIGRlY2lzaW9uIHRvIGRpc3BsYXkgInNvbWUgdmFsaWQiIGRh dGEgaXMgbm90IHNvbWV0aGluZwp3ZSBzaG91bGQgZGVjaWRlZCBmb3Igb3VyIHVzZXJzLiBUaGlz IHNob3VsZCBiZSBsZWZ0IHRvIHRoZSBhcHBsaWNhdGlvbiB0bwpkZWNpZGUuIFNhbWUgZ29lcyBm b3IgR1N0cmVhbWVyLCBpZiBhIGJ1ZmZlciBleGlzdCBidXQgaGFzICJzb21lIHZhbGlkIGRhdGEi LCB3ZQpoYXZlIGEgR1NUX0JVRkZFUl9GTEFHX0NPUlJVUFRFRCBmbGFnIGZvciBpdC4gSXQgaXMg dGhlbiB1cCBmb3IgdGhlIGFwcGxpY2F0aW9uCnRvIGRyb3AgaWYgbmVlZGVkIGZvciB0aGUgYXBw bGljYXRpb24uIEknbSBwcmV0dHkgc3VyZSBzb21lIHN0YXRlZnVsIGRlY29kZXJzCmFsc28gYmVo YXZlcyBsaWtlIHRoaXMgKHNpbXBseSBiZWNhdXNlIGFuIGVycm9yIGlzIGFuIGVycm9yLCByZWdh cmRsZXNzIG9mIHRoZQpuYXR1cmUgb2YgaXQpLgoKSXQgbWlnaHQgYmUgZGlmZmVyZW50IHRvZGF5 LCBidXQgZmV3IHllYXJzIGFnbywgZHJvcHBpbmcgb3Igbm90IGRyb3BwaW5nIHdhcyB0aGUKbWFp biBkaWZmZXJlbmNlIGJldHdlZW4gQXBwbGUgRmFjZXRpbWUgKGRyb3BwaW5nKSBhbmQgdGhlIG90 aGVyIHZpZGVvIHN0cmVhbWluZwphcHBsaWNhdGlvbnMuIE9uZSB3b3VsZCBmcmVlemUsIHRoZSBv dGhlciB3b3VsZCBzaG93ICJzb21lIHZhbGlkIGRhdGEiLgoKSWYgeW91IGxvb2sgYXQgdGhlIG91 dGNvbWUgb2YgYSBwYXJ0aWFsbHkgY29ycnVwdGVkIGRlY29kZWQgaW1hZ2VzIGFuZCB0aGUKb3V0 Y29tZSBvZiBhIG1pZC1mcmFtZSBETUEgZXJyb3IgKHR5cGljYWxseSBmcm9tIGEgY2FtZXJhIHN0 cmVhbSksIHlvdSdsbCBmaW5kCnRoYXQgdGhlc2UgYXJlIHZpc3VhbGx5IHRoZSBzYW1lLiBTbyBp dCBpcyB1bmZhaXIgdG8gY29uc2lkZXIgdGhlc2UgdHdvIGVycm9yIHNvCmRpZmZlcmVudCB0aGF0 IGEgbmV3IG1lY2hhbmlzbSBtdXN0IGJlIGFkZGVkLiBJbiBteSBvcGluaW9uLCBhZGRpbmcgUk8g Y29udHJvbHMKdG8gc2lnbmFsIHRoZXNlIGNvcnJ1cHRpb24gb25seSBtYWtlIHNlbnNlIGlmIHRo ZSBoYXJkd2FyZSBjYW4gcHJvdmlkZSBkZXRhaWxlZApyZXBvcnRzIG9mIHdoYXQgaXMgY29ycnVw dGVkIChsaXN0L3JhbmdlIG9mIG1hY3JvLWJsb2Nrcywgb3IgQ1RVIHRoYXQgYXJlCmFmZmVjdGVk KS4gVGhlbiB5b3UgY291bGQgbWVhc3VyZSB0aGUgbGV2ZWwgb2YgY29ycnVwdGlvbiwgYnV0IGlu IHJlYWxpdHksIEkKZG91YnQgdGhlcmUgd291bGQgYmUgYSB2YXN0IHVzYWdlIG9mIHRoaXMsIHNw ZWNpYWxseSB0aGF0IHRoZSByZXBvcnQgd2lsbCBsaWtlbHkKYmUgaW5jb25zaXN0ZW50IGR1ZSB0 byBsaW1pdGVkIEhXIHN1cHBvcnQuCgpGaW5hbGx5LCBpbiB0aGUgYml0c3RyZWFtIGRlY29kZXIg d29ybGQsIGluY2x1ZGluZyBhbGwgc29mdHdhcmUgZGVjb2RlcnMgSSd2ZQp3b3JrZWQgd2l0aCwg dGhlIGRlY29kZSBpcyBhIHN1Y2Nlc3Mgb25seSBpZiBhbGwgYml0cyBhcmUgcGVyZmVjdGx5IGRl Y29kZWQuClRoaXMgaXMgdGhlIGJhc2VsaW5lIGZvciBnb29kIHZzIGJhZC4gVXNlcmxhbmQgZXhw ZWN0ZWQgYW4gaW1hZ2UsIGFuZCB3aGF0ZXZlcgpoYXBwZW5lZCwgaW4gcmVhbC10aW1lIHNjZW5h cmlvLCBpdCBtdXN0IHNlbmQgYW4gaW1hZ2UuIFNlbmRpbmcgYSBjb3JydXB0ZWQKaW1hZ2UsIG9y IHNlbmRpbmcgdGhlIHByZXZpb3VzbHkgZ29vZCBpbWFnZSByZW1haW5zIGEgZGVjaXNpb24gdG8g YmUgbWFkZSBieQphcHBsaWNhdGlvbi4gQXMgYXBwbGljYXRpb24gZXhpc3QgYXJvdW5kIHRoZSBp bXBsZW1lbnRlZCBtZWNoYW5pc20gaGVyZSwgSSdkCnByZWZlciB0byBnbyBmb3IgdGhhdCByYXRo ZXIgdGhlbiBhZGRpbmcgYSBuZXcgQVBJLgoKTmljb2xhcwoKPiAKPiBSZWdhcmRzLAo+IAo+IAlI YW5zCj4gCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMu ZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvc3RhZ2luZy9tZWRp YS9ya3ZkZWMvcmt2ZGVjLmMgfCAxMCArKysrKystLS0tCj4gPiAgZHJpdmVycy9zdGFnaW5nL21l ZGlhL3JrdmRlYy9ya3ZkZWMuaCB8ICAyICsrCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2Vy dGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0 YWdpbmcvbWVkaWEvcmt2ZGVjL3JrdmRlYy5jIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL3JrdmRl Yy9ya3ZkZWMuYwo+ID4gaW5kZXggN2JhYjc1ODY5MThjLi43ZTc2ZjhiNzI4ODUgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjL3JrdmRlYy5jCj4gPiArKysgYi9k cml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjL3JrdmRlYy5jCj4gPiBAQCAtOTUwLDYgKzk1MCw3 IEBAIHN0YXRpYyB2b2lkIHJrdmRlY192NGwyX2NsZWFudXAoc3RydWN0IHJrdmRlY19kZXYgKnJr dmRlYykKPiA+ICBzdGF0aWMgaXJxcmV0dXJuX3Qgcmt2ZGVjX2lycV9oYW5kbGVyKGludCBpcnEs IHZvaWQgKnByaXYpCj4gPiAgewo+ID4gIAlzdHJ1Y3Qgcmt2ZGVjX2RldiAqcmt2ZGVjID0gcHJp djsKPiA+ICsJc3RydWN0IHJrdmRlY19jdHggKmN0eDsKPiA+ICAJZW51bSB2YjJfYnVmZmVyX3N0 YXRlIHN0YXRlOwo+ID4gIAl1MzIgc3RhdHVzOwo+ID4gIAo+ID4gQEAgLTk1OCwxMiArOTU5LDEz IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBya3ZkZWNfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAq cHJpdikKPiA+ICAJCVZCMl9CVUZfU1RBVEVfRE9ORSA6IFZCMl9CVUZfU1RBVEVfRVJST1I7Cj4g PiAgCj4gPiAgCXdyaXRlbCgwLCBya3ZkZWMtPnJlZ3MgKyBSS1ZERUNfUkVHX0lOVEVSUlVQVCk7 Cj4gPiAtCWlmIChjYW5jZWxfZGVsYXllZF93b3JrKCZya3ZkZWMtPndhdGNoZG9nX3dvcmspKSB7 Cj4gPiAtCQlzdHJ1Y3Qgcmt2ZGVjX2N0eCAqY3R4Owo+ID4gKwljdHggPSB2NGwyX20ybV9nZXRf Y3Vycl9wcml2KHJrdmRlYy0+bTJtX2Rldik7Cj4gPiAgCj4gPiAtCQljdHggPSB2NGwyX20ybV9n ZXRfY3Vycl9wcml2KHJrdmRlYy0+bTJtX2Rldik7Cj4gPiArCWlmIChjdHgtPmNvZGVkX2ZtdF9k ZXNjLT5vcHMtPmNoZWNrX2Vycm9yX2luZm8pCj4gPiArCQlzdGF0ZSA9IGN0eC0+Y29kZWRfZm10 X2Rlc2MtPm9wcy0+Y2hlY2tfZXJyb3JfaW5mbyhjdHgpOwo+ID4gKwo+ID4gKwlpZiAoY2FuY2Vs X2RlbGF5ZWRfd29yaygmcmt2ZGVjLT53YXRjaGRvZ193b3JrKSkKPiA+ICAJCXJrdmRlY19qb2Jf ZmluaXNoKGN0eCwgc3RhdGUpOwo+ID4gLQl9Cj4gPiAgCj4gPiAgCXJldHVybiBJUlFfSEFORExF RDsKPiA+ICB9Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL3JrdmRlYy9y a3ZkZWMuaCBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMvcmt2ZGVjLmgKPiA+IGluZGV4 IDYzMzMzNWViYjljNC4uNGFlOGU2YzZiMDNjIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9zdGFn aW5nL21lZGlhL3JrdmRlYy9ya3ZkZWMuaAo+ID4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlh L3JrdmRlYy9ya3ZkZWMuaAo+ID4gQEAgLTczLDYgKzczLDggQEAgc3RydWN0IHJrdmRlY19jb2Rl ZF9mbXRfb3BzIHsKPiA+ICAJCSAgICAgc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqZHN0X2J1ZiwK PiA+ICAJCSAgICAgZW51bSB2YjJfYnVmZmVyX3N0YXRlIHJlc3VsdCk7Cj4gPiAgCWludCAoKnRy eV9jdHJsKShzdHJ1Y3Qgcmt2ZGVjX2N0eCAqY3R4LCBzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKTsK PiA+ICsJLyogY2FsbGVkIGZyb20gSVJRIGhhbmRsZXIgKi8KPiA+ICsJaW50ICgqY2hlY2tfZXJy b3JfaW5mbykoc3RydWN0IHJrdmRlY19jdHggKmN0eCk7Cj4gPiAgfTsKPiA+ICAKPiA+ICBzdHJ1 Y3Qgcmt2ZGVjX2NvZGVkX2ZtdF9kZXNjIHsKPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgt cm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg==