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 A9B26C761A6 for ; Fri, 31 Mar 2023 15:01:12 +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=CjjL7skVKRx6VxkVLVFiLcD9UREHYLIuD2hzUJeLbQ0=; b=a/2O69o3QUffIi WEB2g3Gd6ZrR9IR7ai3UpwpG4/NXnJWgWWa2Myn3SEjTe3MArttJV+iawi0BZRF/XB5aakgjz5qUe X2y1c66RDOu+OUpjWJoI9S/GHQYXyOMEGqnjjy50OmyiDzI1BK4G/1HI1z3ACpYR3BksPuzZJnHHR pL7alprgUpFnmfC//LhW5vVHNVhPwqzaxuWHBYsDGmbH0qinNnFiCIc6yzhN3+7PSa/v9qnnpG+6g zK60AVfrRjRKFFjYR/7aBKkxAdgbxAtX+V5sFOCod3r8ja+eR7wF3FwKFCnyV2l35ZGS/o4n19P+F aR42AFqs/n+t4gdJdd7g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1piGES-007pED-0D; Fri, 31 Mar 2023 15:00:00 +0000 Received: from madras.collabora.co.uk ([46.235.227.172]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1piGEO-007pCA-0f; Fri, 31 Mar 2023 14:59:58 +0000 Received: from nicolas-tpx395.localdomain (unknown [IPv6:2606:6d00:15:a07e::580]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: nicolas) by madras.collabora.co.uk (Postfix) with ESMTPSA id BD8D7660319A; Fri, 31 Mar 2023 15:59:49 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1680274790; bh=xv/rpdUq4p5K5XILaYm5iabxVB2D5+/1ru7CEpOaTtM=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=Rf0wfvFRYoFK0vqowseBXIsQaxFm9YBmVjbHxnHSZarHYs189Mu5ISSXjdMPAqSe6 79hRjh+i3m2dQ4huNaLKFd2p2TdgdD5ArqXpDAHM9RaZiCEwhwVMQz3V4EMGFHa64M QrGdoPWlMwKg5/UdkbmuC3p+rSW5vykuYmrtDnH7v8DMrmmIFhEwwlVe8/VD6nAhEE WI1Kss9TIixm8182WZ/nv3ZplA5ESFAjsm8yaopvVf85Ih2mMbRR92/e5jjD/I4Nb7 9eAYUv2bJdKJ6dR37IJCCGN3EAqY1eqwEGnkN4ARU8n1Tgqw7jPZFbGIj3f3FxIouv 9rmfepla2WoLw== Message-ID: Subject: Re: [RFC 1/2] media: uapi: Add VP8 stateless encoder controls From: Nicolas Dufresne To: Andrzej Pietrasiewicz , Hans Verkuil , linux-media@vger.kernel.org Cc: linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Mauro Carvalho Chehab , Ezequiel Garcia , Philipp Zabel , Heiko Stuebner , kernel@collabora.com Date: Fri, 31 Mar 2023 10:59:41 -0400 In-Reply-To: <0224abd9-df5b-0c79-6366-a52176a2e45b@collabora.com> References: <20230309125651.23911-1-andrzej.p@collabora.com> <20230309125651.23911-2-andrzej.p@collabora.com> <4ddd59e5-4db3-5027-850c-118230926911@collabora.com> <421f8157aa11aab997b092f4b1378a8bbd008c18.camel@collabora.com> <0224abd9-df5b-0c79-6366-a52176a2e45b@collabora.com> User-Agent: Evolution 3.46.4 (3.46.4-1.fc37) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230331_075956_602903_87044EA6 X-CRM114-Status: GOOD ( 39.53 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGksCgpMZSBsdW5kaSAyNyBtYXJzIDIwMjMgw6AgMTQ6NTMgKzAyMDAsIEFuZHJ6ZWogUGlldHJh c2lld2ljeiBhIMOpY3JpdMKgOgo+IEhpLAo+IAo+IFcgZG5pdSAyNC4wMy4yMDIzIG/CoDE5OjQ5 LCBOaWNvbGFzIER1ZnJlc25lIHBpc3plOgo+ID4gTGUgbWVyY3JlZGkgMjIgbWFycyAyMDIzIMOg IDExOjA2ICswMTAwLCBBbmRyemVqIFBpZXRyYXNpZXdpY3ogYSDDqWNyaXTCoDoKPiA+ID4gSGkg SGFucywKPiA+ID4gCj4gPiA+IFcgZG5pdSAyMS4wMy4yMDIzIG/CoDE0OjM5LCBIYW5zIFZlcmt1 aWwgcGlzemU6Cj4gPiA+ID4gSGkgQW5kcnplaiwKPiA+ID4gPiAKPiA+ID4gPiBPbiAwOS8wMy8y MDIzIDEzOjU2LCBBbmRyemVqIFBpZXRyYXNpZXdpY3ogd3JvdGU6Cj4gPiA+ID4gPiBBZGQgdUFQ SSBmb3Igc3RhdGVsZXNzIFZQOCBlbmNvZGVycy4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gU2lnbmVk LW9mZi1ieTogQW5kcnplaiBQaWV0cmFzaWV3aWN6IDxhbmRyemVqLnBAY29sbGFib3JhLmNvbT4K PiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gICAgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1j dHJscy1jb3JlLmMgfCAxNiArKysrCj4gPiA+ID4gPiAgICBkcml2ZXJzL21lZGlhL3Y0bDItY29y ZS92NGwyLWN0cmxzLWRlZnMuYyB8ICA1ICsrCj4gPiA+ID4gPiAgICBpbmNsdWRlL21lZGlhL3Y0 bDItY3RybHMuaCAgICAgICAgICAgICAgICB8ICAxICsKPiA+ID4gPiA+ICAgIGluY2x1ZGUvdWFw aS9saW51eC92NGwyLWNvbnRyb2xzLmggICAgICAgIHwgOTEgKysrKysrKysrKysrKysrKysrKysr KysKPiA+ID4gPiA+ICAgIGluY2x1ZGUvdWFwaS9saW51eC92aWRlb2RldjIuaCAgICAgICAgICAg IHwgIDMgKwo+ID4gPiA+ID4gICAgNSBmaWxlcyBjaGFuZ2VkLCAxMTYgaW5zZXJ0aW9ucygrKQo+ ID4gPiA+ID4gCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUv djRsMi1jdHJscy1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNv cmUuYwo+ID4gPiA+ID4gaW5kZXggMjkxNjkxNzA4ODBhLi41MDU1ZTc1ZDM3YmIgMTAwNjQ0Cj4g PiA+ID4gPiAtLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYwo+ ID4gPiA+ID4gKysrIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1jb3JlLmMK PiA+ID4gPiA+IEBAIC0zMzUsNiArMzM1LDkgQEAgdm9pZCB2NGwyX2N0cmxfdHlwZV9vcF9sb2co Y29uc3Qgc3RydWN0IHY0bDJfY3RybCAqY3RybCkKPiA+ID4gPiA+ICAgIAljYXNlIFY0TDJfQ1RS TF9UWVBFX1ZQOV9GUkFNRToKPiA+ID4gPiA+ICAgIAkJcHJfY29udCgiVlA5X0ZSQU1FIik7Cj4g PiA+ID4gPiAgICAJCWJyZWFrOwo+ID4gPiA+ID4gKwljYXNlIFY0TDJfQ1RSTF9UWVBFX1ZQOF9F TkNPREVfUEFSQU1TOgo+ID4gPiA+ID4gKwkJcHJfY29udCgiVlA4X0VOQ09ERV9QQVJBTVMiKTsK PiA+ID4gPiA+ICsJCWJyZWFrOwo+ID4gPiA+ID4gICAgCWNhc2UgVjRMMl9DVFJMX1RZUEVfSEVW Q19TUFM6Cj4gPiA+ID4gPiAgICAJCXByX2NvbnQoIkhFVkNfU1BTIik7Cj4gPiA+ID4gPiAgICAJ CWJyZWFrOwo+ID4gPiA+ID4gQEAgLTU2OCw2ICs1NzEsNyBAQCBzdGF0aWMgaW50IHN0ZF92YWxp ZGF0ZV9jb21wb3VuZChjb25zdCBzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsLCB1MzIgaWR4LAo+ID4g PiA+ID4gICAgCXN0cnVjdCB2NGwyX2N0cmxfaGV2Y19wcHMgKnBfaGV2Y19wcHM7Cj4gPiA+ID4g PiAgICAJc3RydWN0IHY0bDJfY3RybF9oZHIxMF9tYXN0ZXJpbmdfZGlzcGxheSAqcF9oZHIxMF9t YXN0ZXJpbmc7Cj4gPiA+ID4gPiAgICAJc3RydWN0IHY0bDJfY3RybF9oZXZjX2RlY29kZV9wYXJh bXMgKnBfaGV2Y19kZWNvZGVfcGFyYW1zOwo+ID4gPiA+ID4gKwlzdHJ1Y3QgdjRsMl9jdHJsX3Zw OF9lbmNvZGVfcGFyYW1zICpwX3ZwOF9lbmNvZGVfcGFyYW1zOwo+ID4gPiA+ID4gICAgCXN0cnVj dCB2NGwyX2FyZWEgKmFyZWE7Cj4gPiA+ID4gPiAgICAJdm9pZCAqcCA9IHB0ci5wICsgaWR4ICog Y3RybC0+ZWxlbV9zaXplOwo+ID4gPiA+ID4gICAgCXVuc2lnbmVkIGludCBpOwo+ID4gPiA+ID4g QEAgLTkxOCw2ICs5MjIsMTUgQEAgc3RhdGljIGludCBzdGRfdmFsaWRhdGVfY29tcG91bmQoY29u c3Qgc3RydWN0IHY0bDJfY3RybCAqY3RybCwgdTMyIGlkeCwKPiA+ID4gPiA+ICAgIAkJCXJldHVy biAtRUlOVkFMOwo+ID4gPiA+ID4gICAgCQlicmVhazsKPiA+ID4gPiA+ICAgIAo+ID4gPiA+ID4g KwljYXNlIFY0TDJfQ1RSTF9UWVBFX1ZQOF9FTkNPREVfUEFSQU1TOgo+ID4gPiA+ID4gKwkJcF92 cDhfZW5jb2RlX3BhcmFtcyA9IHA7Cj4gPiA+ID4gPiArCQlpZiAocF92cDhfZW5jb2RlX3BhcmFt cy0+bG9vcF9maWx0ZXJfbGV2ZWwgPiA2MykKPiA+ID4gPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsK PiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJCWlmIChwX3ZwOF9lbmNvZGVfcGFyYW1zLT5zaGFycG5l c3NfbGV2ZWwgPiA3KQo+ID4gPiA+ID4gKwkJCXJldHVybiAtRUlOVkFMOwo+ID4gPiA+ID4gKwkJ YnJlYWs7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAgICAJZGVmYXVsdDoKPiA+ID4gPiA+ICAgIAkJ cmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiAgICAJfQo+ID4gPiA+ID4gQEAgLTE2MDIsNiArMTYx NSw5IEBAIHN0YXRpYyBzdHJ1Y3QgdjRsMl9jdHJsICp2NGwyX2N0cmxfbmV3KHN0cnVjdCB2NGwy X2N0cmxfaGFuZGxlciAqaGRsLAo+ID4gPiA+ID4gICAgCWNhc2UgVjRMMl9DVFJMX1RZUEVfVlA5 X0ZSQU1FOgo+ID4gPiA+ID4gICAgCQllbGVtX3NpemUgPSBzaXplb2Yoc3RydWN0IHY0bDJfY3Ry bF92cDlfZnJhbWUpOwo+ID4gPiA+ID4gICAgCQlicmVhazsKPiA+ID4gPiA+ICsJY2FzZSBWNEwy X0NUUkxfVFlQRV9WUDhfRU5DT0RFX1BBUkFNUzoKPiA+ID4gPiA+ICsJCWVsZW1fc2l6ZSA9IHNp emVvZihzdHJ1Y3QgdjRsMl9jdHJsX3ZwOF9lbmNvZGVfcGFyYW1zKTsKPiA+ID4gPiA+ICsJCWJy ZWFrOwo+ID4gPiA+ID4gICAgCWNhc2UgVjRMMl9DVFJMX1RZUEVfQVJFQToKPiA+ID4gPiA+ICAg IAkJZWxlbV9zaXplID0gc2l6ZW9mKHN0cnVjdCB2NGwyX2FyZWEpOwo+ID4gPiA+ID4gICAgCQli cmVhazsKPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwy LWN0cmxzLWRlZnMuYyBiL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtZGVmcy5j Cj4gPiA+ID4gPiBpbmRleCA1NjRmZWRlZTJjODguLjkzNWJkOWEwN2JhZCAxMDA2NDQKPiA+ID4g PiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtZGVmcy5jCj4gPiA+ ID4gPiArKysgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWRlZnMuYwo+ID4g PiA+ID4gQEAgLTExODIsNiArMTE4Miw4IEBAIGNvbnN0IGNoYXIgKnY0bDJfY3RybF9nZXRfbmFt ZSh1MzIgaWQpCj4gPiA+ID4gPiAgICAJY2FzZSBWNEwyX0NJRF9TVEFURUxFU1NfTVBFRzJfUVVB TlRJU0FUSU9OOgkJcmV0dXJuICJNUEVHLTIgUXVhbnRpc2F0aW9uIE1hdHJpY2VzIjsKPiA+ID4g PiA+ICAgIAljYXNlIFY0TDJfQ0lEX1NUQVRFTEVTU19WUDlfQ09NUFJFU1NFRF9IRFI6CXJldHVy biAiVlA5IFByb2JhYmlsaXRpZXMgVXBkYXRlcyI7Cj4gPiA+ID4gPiAgICAJY2FzZSBWNEwyX0NJ RF9TVEFURUxFU1NfVlA5X0ZSQU1FOgkJCXJldHVybiAiVlA5IEZyYW1lIERlY29kZSBQYXJhbWV0 ZXJzIjsKPiA+ID4gPiA+ICsJY2FzZSBWNEwyX0NJRF9TVEFURUxFU1NfVlA4X0VOQ09ERV9QQVJB TVM6CQlyZXR1cm4gIlZQOCBFbmNvZGUgUGFyYW1ldGVycyI7Cj4gPiA+ID4gPiArCWNhc2UgVjRM Ml9DSURfU1RBVEVMRVNTX1ZQOF9FTkNPREVfUVA6CQkJcmV0dXJuICJWUDggRW5jb2RlIFFQIjsK PiA+ID4gPiA+ICAgIAljYXNlIFY0TDJfQ0lEX1NUQVRFTEVTU19IRVZDX1NQUzoJCQlyZXR1cm4g IkhFVkMgU2VxdWVuY2UgUGFyYW1ldGVyIFNldCI7Cj4gPiA+ID4gPiAgICAJY2FzZSBWNEwyX0NJ RF9TVEFURUxFU1NfSEVWQ19QUFM6CQkJcmV0dXJuICJIRVZDIFBpY3R1cmUgUGFyYW1ldGVyIFNl dCI7Cj4gPiA+ID4gPiAgICAJY2FzZSBWNEwyX0NJRF9TVEFURUxFU1NfSEVWQ19TTElDRV9QQVJB TVM6CQlyZXR1cm4gIkhFVkMgU2xpY2UgUGFyYW1ldGVycyI7Cj4gPiA+ID4gPiBAQCAtMTUzMSw2 ICsxNTMzLDkgQEAgdm9pZCB2NGwyX2N0cmxfZmlsbCh1MzIgaWQsIGNvbnN0IGNoYXIgKipuYW1l LCBlbnVtIHY0bDJfY3RybF90eXBlICp0eXBlLAo+ID4gPiA+ID4gICAgCWNhc2UgVjRMMl9DSURf U1RBVEVMRVNTX1ZQOV9GUkFNRToKPiA+ID4gPiA+ICAgIAkJKnR5cGUgPSBWNEwyX0NUUkxfVFlQ RV9WUDlfRlJBTUU7Cj4gPiA+ID4gPiAgICAJCWJyZWFrOwo+ID4gPiA+ID4gKwljYXNlIFY0TDJf Q0lEX1NUQVRFTEVTU19WUDhfRU5DT0RFX1BBUkFNUzoKPiA+ID4gPiA+ICsJCSp0eXBlID0gVjRM Ml9DVFJMX1RZUEVfVlA4X0VOQ09ERV9QQVJBTVM7Cj4gPiA+ID4gPiArCQlicmVhazsKPiA+ID4g PiAKPiA+ID4gPiBXaHkgaXNuJ3QgVjRMMl9DSURfU1RBVEVMRVNTX1ZQOF9FTkNPREVfUVAgYWRk ZWQgaGVyZSBhcyB3ZWxsPyBJIGFzc3VtZSBpdCBpcyBvZgo+ID4gPiA+IHR5cGUgSU5URUdFUj8K PiA+ID4gPiAKPiA+ID4gCj4gPiA+IFRoYW5rcyBmb3IgcG9pbnRpbmcgdGhhdC4KPiA+ID4gCj4g PiA+IEFuZCBpdCBpcyBhIHNpbXBsZSBpbnRlZ2VyLCBpbmRlZWQuCj4gPiA+IAo+ID4gPiA+IEkg YWxzbyB3b25kZXIgaWYgVlA5IHdvdWxkIGhhdmUgdGhlIHNhbWUgY29udHJvbCwgc28gdGhhdCB0 aGlzIGNvdWxkIGJlIGNhbGxlZAo+ID4gPiA+IFY0TDJfQ0lEX1NUQVRFTEVTU19WUFhfRU5DT0RF X1FQLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhhdCBtaWdodCBiZSBvdmVya2lsbC4KPiA+ID4gPiAK PiA+ID4gCj4gPiA+IEl0IHNlZW1zIHRvIG1lIHRoYXQgaGF2aW5nIGEgc2luZ2xlIGtpbmQgb2Yg Y29udHJvbCBmb3IgcGFzc2luZyB0aGUKPiA+ID4gcmVxdWVzdGVkIFFQIHZhbHVlIGZvciBib3Ro IFZQOCBhbmQgVlA5IG1ha2VzIHNlbnNlLiBJbiBmYWN0LCBwZXJoYXBzIG5vdAo+ID4gPiByZXN0 cmljdGluZyBvdXJzZWx2ZXMgdG8gVlBYIHdvdWxkIG1ha2UgZXZlbiBtb3JlIHNlbnNlPwo+ID4g PiAKPiA+ID4gVGhpcyB0b3VjaGVzIHRoZSBxdWVzdGlvbiBvZiBob3cgd2UgZG8gcmF0ZSBjb250 cm9sIGluIGdlbmVyYWwgaW4gc3RhdGVsZXNzCj4gPiA+IGVuY29kZXJzLiBJZiB0aGUgdUFQSSBp cyB0byBiZSBpbmRlcGVuZGVudCBvZiB1bmRlcmx5aW5nIGhhcmR3YXJlLCB0aGVuIHRoZSBvbmx5 Cj4gPiA+IHBhcmFtZXRlciB1c2Vyc3BhY2UgcGFzc2VzIHRvIHRoZSBrZXJuZWwgaXMgdGhlIHJl cXVpcmVkIFFQICh3aGljaCBpcyBkZXRlcm1pbmVkCj4gPiA+IGVudGlyZWx5IGJ5IHVzZXJzcGFj ZSB1c2luZyB3aGF0ZXZlciBtZWFucyBpdCBjb25zaWRlcnMgYXBwcm9wcmlhdGUsIGZvciBleGFt cGxlCj4gPiA+IGp1ZGdpbmcgYnkgdGhlIGxhc3QgZW5jb2RlZCBmcmFtZShzKSBzaXplKHMpKS4g QW55IG90aGVyIGtpbmRzIG9mIGRhdGEgd291bGQKPiA+ID4gcHJvYmFibHkgYmUgc29tZWhvdyBo YXJkd2FyZS1zcGVjaWZpYy4gU28sIEknbSB3b25kZXJpbmcgaWYgbWF5YmUgZXZlbiBhCj4gPiA+ IAo+ID4gPiBWNEwyX0NJRF9TVEFURUxFU1NfRU5DT0RFX1FQCj4gPiA+IAo+ID4gPiBpcyB3aGF0 IHdlIHdhbnQ/Cj4gPiAKPiA+IFdlIGFscmVhZHkgaGF2ZSBWNEwyX0NJRF9NUEVHX1ZJREVPX0NP TlNUQU5UX1FVQUxJVFkgd2hpY2ggaXMgYm91bmQgdG8KPiA+IFY0TDJfTVBFR19WSURFT19CSVRS QVRFX01PREVfQ1EsCj4gCj4gTmljZSBjYXRjaC4gQm90aCBhcmUgdXNlZCBvbmx5IGJ5IFZlbnVz LiBXZSBjb3VsZCByZXVzZSBpdC4gQnV0IHRoZW4gdGhlcmUncwo+IHRoZSBhbGxvd2VkIHJhbmdl IC0gd2hpY2ggeW91IGRvIGRpc2N1c3MgYmVsb3cuCj4gCj4gCj4gd2hpY2ggc2VlbXMgd2hhdCB3 ZSBzaG91bGQgZXhwZWN0IGZvcm0gYQo+ID4gc3RhdGVsZXNzIGVuY29kZXIuIEluIGZhY3QsIGFk ZGluZyB0aGUgZW50aXJlIEJJVFJBVEVfTU9ERSB3b3VsZCBlbmFibGUgbGF0ZXIKPiA+IGVuY29k ZXIgdGhhdCBoYXMgZmlybXdhcmUgZHJpdmVuIHJhdGUgY29udHJvbCB0byBiZSBhYmxlIHRvIGFk ZCBpdCBlYXNpbHkKPiA+IChzaW1pbGFyIHRvIHdoYXQgd2UgaGF2ZSBpbiBHUFVzKS4KPiA+IAo+ ID4gV2UgZG9uJ3QgbmVlZCBwZXIgZnJhbWUgdHlwZSBRUCwgYXMgc3RhdGVsZXNzIGVuY29kZXIg aGF2ZSByZXF1ZXN0cywgc28gd2UgY2FuCj4gPiBzZXQgdGhlIFFQIGZvciBlYWNoIGZyYW1lIHNl cGFyYXRlbHkgYW55d2F5Lgo+ID4gCj4gPiA+IAo+ID4gPiBUaGlzLCBpbiB0dXJuLCBicmluZ3Mg YW5vdGhlciBxdWVzdGlvbiBvZiB0aGUgcmFuZ2UgYW5kIGludGVycHJldGF0aW9uIG9mIHZhbHVl cwo+ID4gPiB0aGF0IHNob3VsZCBiZSBwYXNzZWQgdGhyb3VnaCB0aGlzIGNvbnRyb2wuIDAtMjU1 PyAwLTEwMD8gMCA9IG5vIHF1YW50aXphdGlvbiBhdAo+ID4gPiBhbGwgKGkuZS4gaGlnaGVzdCBx dWFsaXR5KSBvciBtYXliZSAwID0gbG93ZXN0IHBvc3NpYmxlIHF1YWxpdHk/Cj4gPiAKPiA+IEl0 IHNlZW1zIFY0TDJfQ0lEX01QRUdfVklERU9fQ09OU1RBTlRfUVVBTElUWSBoYXMgZGVjaWRlZCB0 byBnbyAwLTEwMCByZWdhcmRsZXNzCj4gPiBvZiB0aGUgQ09ERUMuIFRoZSBBUEkgaXMgbm90IHZl cnkgaW5jb25zaXN0ZW50LCBsaWtlIFZQWF9JTl9RUCBkb2VzIG5vdCBldmVuCj4gPiBkb2N1bWVu dCBhIHJhbmdlLCBhbmQgc2F5cyBpdHMgZm9yIFZQOCBvbmx5LiBQZXJoYXBzIHdlIGNvdWxkIG9w ZW4gaXQgdXAsIGFuZAo+ID4gYWxsb3cgcGVyIGNvZGVjIHJhbmdlIHNvIHdlIGNhbiBtYXRjaCAx OjEgd2l0aCB0aGUgQ09ERUMgc3BlY3MgPyBXZSBjb3VsZCBvbmx5Cj4gPiBhbGxvdyB0aGF0IGZv ciBzdGF0ZWxlc3MgaWYgd2UgYmVsZWl2ZSBhYnN0cmFjdGluZyBpdCB0byAwLTEwMCBtYWtlIGlz IGJldHRlciBpbgo+ID4gZ2VuZXJhbC4gSnVzdCB0aGF0IGluIHN0YXRlbGVzcywgd2UgZXhwZWN0 IHRoYXQgbnVtYmVyIHRvIGJlIHdyaXR0ZW4gaW4gdGhlCj4gPiBiaXRzdHJlYW0gdmVyYmF0aW0u Cj4gPiAKPiAKPiBEbyB5b3UgbWVhbiB0byByZWxheCB0aGUgMC0xMDAgcmFuZ2Ugb2YgVjRMMl9D SURfTVBFR19WSURFT19DT05TVEFOVF9RVUFMSVRZCj4gYW5kIHRoZW4gdXNlIHRoaXMgY29udHJv bCBpbnN0ZWFkIG9mIGFkZGluZyBhIG5ldyBvbmUgZm9yIHN0YXRlbGVzcyBjb2RlY3MsCj4gb3Ig dG8gc3BlY2lmaWNhbGx5IGFkZCBhIG5ldyBvbmUsIG1vZGVsZWQgYWZ0ZXIKPiBWNEwyX0NJRF9N UEVHX1ZJREVPX0NPTlNUQU5UX1FVQUxJVFk/CgoKWWVzLCBJJ2QgcmVsYXggdGhlIHJhbmdlIG92 ZXJhbGwuIEFuZCB0aGVuLCBzcGVjaWZpY2FsbHkgZm9yIHN0YXRlbGVzcywgSSdkCnJlcXVpcmUg aXQgdG8gbWF0Y2ggdGhlIGNvZGVjIHNwZWMgc3BlY2lmaWVkIHJhbmdlLgoKPiAKPiBSZWdhcmRz LAo+IAo+IEFuZHJ6ZWoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==