From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 213AE44CA8 for ; Mon, 14 Nov 2022 16:43:53 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 74DBC68BE99; Mon, 14 Nov 2022 18:43:51 +0200 (EET) Received: from mail-yb1-f179.google.com (mail-yb1-f179.google.com [209.85.219.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E890368B8F9 for ; Mon, 14 Nov 2022 18:43:44 +0200 (EET) Received: by mail-yb1-f179.google.com with SMTP id k84so9906830ybk.3 for ; Mon, 14 Nov 2022 08:43:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=ilNHmqpzvfQM4orXP6lSuUPWdarpu7hXCEt0XrFXgWA=; b=Frq+FiOKdZ25zYwdkF81ynE6W8eXUtOlZvN+9oy0eAU8MkohkS59gm7QDPrvyTRiq8 B7+oTo+C3T8uvBZL18aDQHLkt4CIZ/g7E5eBle9PSMsjbIi/dbTapNsIXFQEO/UK7I9F qqg6duesJEpqfa494p6xYrOn6anApFN9KHdxBEtijgijKwhr8bL1KMbevDiFcG/SM/Qn XoyMcBJ54ZEqFPgASSW7pjx9hjHTTq0ANIvwQWOcggZf35+0Hf2YhqA4i78aYjLRcxFt LE+Q/ky4tz/ZGSuQInZ2BXl2xFuboCfy1T086s2TjpB0lTdS3iVLsiz62V+jYkawy1ZB UHZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ilNHmqpzvfQM4orXP6lSuUPWdarpu7hXCEt0XrFXgWA=; b=2HCjztwHiuupoYC+lUzLAryIpG8UtPYhngn8N9MEDuuK0dGRvy9H2FWrrmTrRFDKus bfPOJ25eEjCO/f3W2X0i0UROQAdx/Hq1TWitLLu5tuQxD8DnSsLyjfxB9drQdAjGcRsK m+pImDmW5kcEI09UEIjPXu7VJHiKY1fz11ivbm7qVkDpG/g49gd8HIu6BkJZf5a4pb7F LgAqESZ3Ilc/WAZLXCi1NXyY53GLirB7z8/xmxc4F7eR00ga8sY3M7kb1eaOcRtWZt4U V5gJQvuBwIHei0m40QnWUq0lHYFbafvhU0/gvT7nWLPE+hiofXlb5vxKj96hy176vaCd rQQg== X-Gm-Message-State: ANoB5pmwP7HxbyJNPUgg0Anq+N4az34sFG7O7u+pFan1HDqY7XuD9yJa Isji9hS5F2qjMfOx+o3kNWvu5coZT/i7p4BQw5ZlD1QD6Gs= X-Google-Smtp-Source: AA0mqf4GL0g9k60WhPFEg3uZWlL5/uMjcHHhr617Yq1W6BxstKtWuROQ2CxwsLYOp4QD9gLVZsUqef0dsqOBAZMc+nA= X-Received: by 2002:a25:bd44:0:b0:6bc:c12a:5d3e with SMTP id p4-20020a25bd44000000b006bcc12a5d3emr13024586ybm.403.1668444223292; Mon, 14 Nov 2022 08:43:43 -0800 (PST) MIME-Version: 1.0 References: <2be0f2b8-5320-4a81-994a-2b35cc2d3af6@EX-SZ063.tencent.com> In-Reply-To: From: Olivier Ayache Date: Mon, 14 Nov 2022 17:43:31 +0100 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [Internet][PATCH 00/12] Add MediaCodec encoder and NDK MediaCodec support X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: SGVsbG8gaGVyZSBpcyB0aGUgd29yayBJIGhhdmUgcHVzaGVkIGluIGEgZm9yayBvZiBGRm1wZWcg aW50ZWdyYXRlZCBpbgpzb3VyY2UgY29kZSBvZiB4dWdnbGVyIChhIEphdmEvQysrIHdyYXBwZXIg b2YgRkZtcGVnKQpodHRwczovL2dpdGh1Yi5jb20vb2xpdmllcmF5YWNoZS94dWdnbGUteHVnZ2xl ci9jb21taXQvOTg0NjllYmVhNTljOTIxZjQ2YTExNGJkOTU0ZjdhMjdhN2M5NWE0MQoKRm9yIHRo ZSBsaW1pdGF0aW9ucyBvZiBOREsgSSBhZ3JlZSB3aXRoIHlvdSBhbmQgdGhhdCBpcyB3aHkgSSBo YXZlIG1hZGUKc29tZSBiYWNrcG9ydCB0byBiZSBhYmxlIHRvIHN1cHBvcnQgYWxsIG5lZWRlZCBm ZWF0dXJlcyBmb3IgRkZtcGVnICh3aGVuIEkKd29ya2VkIG9uIHRoYXQgaXQgd2FzIEZGbXBlZyAz LjQueCB2ZXJzaW9uKS4KVGhpcyBiYWNrcG9ydCBhbGxvd3Mgc3VwcG9ydCB0byB0aGVzZSBmdW5j dGlvbnMgZm9yIEFuZHJvaWQgZGV2aWNlcyBzaW5jZQpBUEkgMjEgKHdoaWNoIGlzIG1vcmUgdGhh biA5OSUgb2YgZGV2aWNlcykuCgogICAtIEFNZWRpYUNvZGVjX2NyZWF0ZUlucHV0U3VyZmFjZQog ICAtIEFNZWRpYUNvZGVjX3NldFBhcmFtZXRlcnMKICAgLSBBTmF0aXZlV2luZG93X3RvU3VyZmFj ZQoKCkZvciB0ZXN0aW5nIHJldmlld2luZyB0aGUgcGF0Y2ggSSB3aWxsIG1ha2UgaXQgYXMgc29v biBhcyBJIHVwZGF0ZSBGRm1wZWcKdG8gdGhlIGN1cnJlbnQgdmVyc2lvbi4gSSB3aWxsIGJlIGFi bGUgdG8gZG8gaXQgdGhpcyB3ZWVrLgoKT2xpdmllcgoKCkxlIGRpbS4gMTMgbm92LiAyMDIyLCAx Mjo0OSwgWmhhbyBaaGlsaSA8cXVpbmtibGFja0Bmb3htYWlsLmNvbT4gYSDDqWNyaXQgOgoKPgo+ ID4gRnJvbTogZmZtcGVnLWRldmVsIDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPiBP biBCZWhhbGYgT2YKPiBPbGl2aWVyIEF5YWNoZQo+ID4gU2VudDogMjAyMuW5tDEx5pyIMTLml6Ug MTg6MDAKPiA+IFRvOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlzY3Vzc2lvbnMgYW5kIHBhdGNoZXMg PGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgo+ID4gQ2M6IG1hdHRoaWV1LmJvdXJvbkBzdHVwZWZs aXguY29tOyBhbWFuQHRtbTEubmV0Cj4gPiBTdWJqZWN0OiBSZTogW0ZGbXBlZy1kZXZlbF0gW0lu dGVybmV0XVtQQVRDSCAwMC8xMl0gQWRkIE1lZGlhQ29kZWMKPiBlbmNvZGVyIGFuZCBOREsgTWVk aWFDb2RlYyBzdXBwb3J0Cj4gPgo+ID4gSGVsbG8gdGhlcmUgSSBpbXBsZW1lbnRlZCB0aGF0IGZl dyB5ZWFycyBhZ28gaW4KPiA+IGh0dHBzOi8vZ2l0aHViLmNvbS9vbGl2aWVyYXlhY2hlL3h1Z2ds ZS14dWdnbGVyLwo+Cj4gSSBjYW4ndCBmaW5kIHdoZXJlIGlzIHRoZSBwYXRjaCBvciBzb3VyY2Ug Y29kZSBvZiBGRm1wZWcuCj4KPiA+IEFuZCB3aGVuIEkgdHJpZWQgdG8gc3VibWl0IGEgcGF0Y2gg dG8gRkZtcGVnIGZvciBhZGQgc3VwcG9ydCBmb3IgTkRLIEkKPiBoYWQKPiA+IHJlY2VpdmVkIHRo aXMgYW5zd2VyLgo+ID4gSSB0aGluayB1c2luZyBOREsgZGlyZWN0bHkgcmF0aGVyIHRoYW4gSk5J IGNhbiBiZSBiZXR0ZXIgaW4gY2FzZSBvZgo+ID4gZGV2ZWxvcGluZyBuYXRpdmUgYXBwbGljYXRp b24gb24gQW5kcm9pZC4KPgo+IE5ESyBpcyBzdGlsbCBtaXNzaW5nIHNvbWUgaW1wb3J0YW50IGZl YXR1cmVzLCBhbmQgc29tZSBmZWF0dXJlcyBvbmx5Cj4gc3VwcG9ydGVkIHJlY2VudGx5Lgo+IFNv IHRoZSBOREsgaW1wbGVtZW50YXRpb24gZG9lc24ndCBtZWFudCB0byBiZSBhIHJlcGxhY2VtZW50 IG9mIHRoZSBKTkkKPiB2ZXJzaW9uOgo+IDEuIEpOSSB2ZXJzaW9uIGhhcyBtb3JlIGZlYXR1cmVz IGFuZCBzdXBwb3J0cyBtb3JlIGRldmljZXMKPiAyLiBOREsgaW1wbGVtZW50YXRpb24gY29tYmlu ZWQgd2l0aCBzb21lIEpOSSBmdW5jdGlvbnMgaGFzIGFsbW9zdCB0aGUgc2FtZQo+IGZlYXR1cmUK PiBBcyBKTkkgdmVyc2lvbiBvbiBuZXcgZGV2aWNlcy4KPiAzLiBJbiB0aGUgZW52aXJvbm1lbnQg d2hlcmUgSlZNIGlzIHVuYXZhaWxhYmxlLCB0aGUgTkRLIHZlcnNpb24gaXMgdGhlCj4gb25seSBj aG9pY2UuCj4KPiA+IElmIEkgY2FuIGhlbHAgb24gdGhlc2Ugc3ViamVjdHMgSSB3b3VsZCBiZSBy ZWFsbHkgaGFwcHkKPgo+IFdlbGNvbWUgdG8gcmV2aWV3IGFuZC9vciB0ZXN0IHRoZSBwYXRjaC4K Pgo+ID4KPiA+IE9saXZpZXIgQXlhY2hlCj4gPgo+ID4KPiA+Cj4gPiAtLS0tLS0tLS0tIEZvcndh cmRlZCBtZXNzYWdlIC0tLS0tLS0tLQo+ID4gRnJvbTogT2xpdmllciBBeWFjaGUgPG9saXZpZXIu YXlhY2hlQGdtYWlsLmNvbT4KPiA+IERhdGU6IFN1biwgSnVuIDI4LCAyMDIwIGF0IDI6NDggUE0K PiA+IFN1YmplY3Q6IFJlOiBbRkZtcGVnLWRldmVsXSBbUEFUQ0hdIGFkZCBzdXBwb3J0IHRvIEFu ZHJvaWQgbmRrIE1lZGlhQ29kZWMKPiA+IGZvciBlbmNvZGluZy9kZWNvZGluZwo+ID4gVG86IDxm Zm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4KPiA+Cj4gPgo+ID4gVGhhbmsgZm9yIHlvdXIgcmVwbGll cyBJIGNob29zZSB0aGUgTkRLIGFwcHJvYWNoIGluIG9yZGVyIHRvICBiZSBhYmxlIHRvCj4gYmUK PiA+IGluZGVwZW5kYW50IGZyb20gdGhlIEpWTSwgdG8gbWF4aW1pemUgcGVyZm9ybWFuY2UgYW5k IHRvIGJlIHN1cmUgdG8KPiBkZXRlY3QKPiA+IGNvbXBhdGliaWxpdHkgaXNzdWVzICh1c2luZyBK TkkgYXBwcm9hY2ggY2FuIGNvbXBpbGUgYW5kIGNyYXNoIGF0Cj4gcnVudGltZSkuCj4gPiBDb25j ZXJuaW5nIHRoZSB2ZXJzaW9uIG9mIEFuZHJvaWQgaXQgaXMgY29tcGF0aWJsZSBmcm9tIEFQSSAy MSAoOTQlIG9mCj4gPiBkZXZpY2VzKQo+ID4gSSBhZ3JlZSB0aGF0IEpOSSBvdmVyaGVhZCBpcyBu b3QgYmlnIGJ1dCBpbiBjb21iaW5haXNvbiB3aXRoIFh1Z2dsZXIgaXQKPiA+IHNlZW1zIHRvIG1l IGEgbGl0dGxlIHdlaXJkIGJlY2F1c2UgWHVnZ2xlciAoSmF2YSBwYXJ0KSBhbHJlYWR5IHVzZSBK TkkgdG8KPiA+IGludGVyYWN0IHdpdGggWHVnZ2xlciAoQysrKSBhbmQgRkZtcGVnLiBJZiBGRm1w ZWcgdXNlcyBKTkkgaW4gdGhlIG90aGVyCj4gd2F5Cj4gPiAoZnJvbSBjIHRvIEphdmEpIGl0IHNl ZW1zIHRvIG1lIGFuIGFudGkgcGF0dGVybi4KPiA+Cj4gPiBJZiB5b3UgdGhpbmsgaXQgaXMgYmV0 dGVyIHRvIGJlZ2luIHRvIHVzZSBKTkkgSSBjb3VsZCB0cmFuc2Zvcm0gbXkKPiBlbmNvZGVyCj4g PiBhbmQgd2UgY291bGQgZGlzY3VzcyBhYm91dCBOREsgYWZ0ZXIKPiA+Cj4gPiBPbGl2aWVyCj4g Pgo+ID4KPiA+Cj4gPiBMZSBzYW0uIDI3IGp1aW4gMjAyMCDDoCAyMDo1NSwgTWFydGluIFN0b3Jz asO2IDxtYXJ0aW5AbWFydGluLnN0PiBhIMOpY3JpdAo+IDoKPiA+Cj4gPiA+IE9uIFNhdCwgMjcg SnVuIDIwMjAsIE9saXZpZXIgQXlhY2hlIHdyb3RlOgo+ID4gPgo+ID4gPiA+IEhpIGV2ZXJ5b25l IHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgSSBwb3N0IG9uIHRoaXMgbWFpbGluZyBsaXN0LiBJIGFt Cj4gPiA+ID4gd29ya2luZyBzaW5jZSBzZXZlcmFsIHllYXJzIG9uIGEgZm9yayBvZiBYdWdnbGVy IGZvciBtYW5pcHVsYXRpbmcKPiBmZm1wZWcKPiA+ID4gPiBBUEkgd2l0aCBKYXZhL0tvdGxpbi4K PiA+ID4gPiBUaGlzIHdvcmsgbGVhZHMgbWUgdG8gZGV2ZWxvcCBlbmNvZGVyIGFuZCBkZWNvZGVy IGJhc2VkIG9uIEFuZHJvaWQKPiBOREsKPiA+ID4gPiBNZWRpYUNvZGVjLgo+ID4gPiA+Cj4gPiA+ ID4gVGhpcyB3b3JrIGNhbiBiZSBmb3VuZCBvbiBteSBHaXRodWIgcmVwb3NpdG9yeQo+ID4gPiA+ Cj4gPiA+ID4gaHR0cHM6Ly9naXRodWIuY29tL29saXZpZXJheWFjaGUveHVnZ2xlLXh1Z2dsZXIK PiA+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gSSBrbm93IHRoYXQgRkZtcGVnIGFscmVhZHkgaW50ZWdy YXRlIE1lZGlhQ29kZWMgZm9yIGRlY29kaW5nIHZpYSBKbmkKPiA+ID4gPiB3cmFwcGVycyBzaW5j ZSB2ZXJzaW9uIDMuMS4gSSBiZWdhbiB0aGlzIHdvcmsgb24gRkZtcGVnIDIuOC54IGFuZCBJCj4g PiA+IGNob29zZQo+ID4gPiA+IHRoZSBOREsgaW4gb3JkZXIgdG8gYWNoaWV2ZSBvcHRpbXVtIHBl cmZvcm1hbmNlLgo+ID4gPgo+ID4gPiBJZiB5b3UgbWVhbiB5b3UgdXNlZCB0aGUgTkRLIE1lZGlh Q29kZWMgQVBJLCBJJ2Qgc3VnZ2VzdCB5b3UgdXNlIHRoZQo+IHNhbWUKPiA+ID4gSk5JIHdyYXBw ZXJzIGFzIGZmbXBlZyBoYXMgYWxyZWFkeSwgZm9yIGNvbnNpc3RlbmN5LiBUaGUgb3ZlcmhlYWQg b2YgYQo+IGZldwo+ID4gPiBKTkkgY2FsbHMgcGVyIGVuY29kZWQgZnJhbWUgaXMgZ2VuZXJhbGx5 IG5lZ2xpZ2libGUuIElmIGl0LCBhdCBhIGxhdGVyCj4gPiA+IHRpbWUsIGlzIGRlY2lkZWQgdG8g ZHJvcCBzdXBwb3J0IGZvciBvbGRlciB2ZXJzaW9ucyBhdCBzb21lIHBvaW50LCBpdAo+ID4gPiBz aG91bGQgYmUgc3RyYWlnaHRmb3J3YXJkIHRvIGNvbnZlcnQgaXQgdG8gdXNlIHRoZSBOREsgTWVk aWFDb2RlYyBBUEkKPiA+ID4gaW5zdGVhZC4KPiA+ID4KPiA+ID4gLy8gTWFydGluCj4gPiA+Cj4g PiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiA+ IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+ID4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcK PiA+ID4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4g PiA+Cj4gPiA+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+ID4g PiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3Jp YmUiLgo+ID4KPiA+Cj4gPiBPbiBTYXQsIE5vdiAxMiwgMjAyMiBhdCA2OjA3IEFNIFpoYW8gWmhp bGkgPHF1aW5rYmxhY2tAZm94bWFpbC5jb20+Cj4gd3JvdGU6Cj4gPgo+ID4gPgo+ID4gPgo+ID4g PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+ID4gRnJvbTogZmZtcGVnLWRldmVs IDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPiBPbiBCZWhhbGYgT2YKPiBDaGVtYQo+ ID4gPiBHb256YWxlego+ID4gPiA+IFNlbnQ6IDIwMjLlubQxMeaciDEy5pelIDA6NTUKPiA+ID4g PiBUbzogRkZtcGVnIGRldmVsb3BtZW50IGRpc2N1c3Npb25zIGFuZCBwYXRjaGVzIDwKPiBmZm1w ZWctZGV2ZWxAZmZtcGVnLm9yZz4KPiA+ID4gPiBDYzogbWF0dGhpZXUuYm91cm9uQHN0dXBlZmxp eC5jb207IGFtYW5AdG1tMS5uZXQKPiA+ID4gPiBTdWJqZWN0OiBSZTogW0ZGbXBlZy1kZXZlbF0g W0ludGVybmV0XVtQQVRDSCAwMC8xMl0gQWRkIE1lZGlhQ29kZWMKPiA+ID4gZW5jb2RlciBhbmQg TkRLIE1lZGlhQ29kZWMgc3VwcG9ydAo+ID4gPiA+Cj4gPiA+ID4gT24gVGh1LCBOb3YgMTAsIDIw MjIgYXQgNzozNiBQTSAiemhpbGl6aGFvKOi1teW/l+eriykiIDwKPiBxdWlua2JsYWNrQGZveG1h aWwuY29tPgo+ID4gPiB3cm90ZToKPiA+ID4gPiA+Cj4gPiA+ID4gPiBQaW5nIGZvciByZXZpZXcu Cj4gPiA+ID4gPgo+ID4gPiA+ID4gPiBPbiBPY3QgMjQsIDIwMjIsIGF0IDExOjE2LCBaaGFvIFpo aWxpIDxxdWlua2JsYWNrQGZveG1haWwuY29tPgo+ID4gPiB3cm90ZToKPiA+ID4gPiA+ID4KPiA+ ID4gPiA+ID4gRnJvbTogWmhhbyBaaGlsaSA8emhpbGl6aGFvQHRlbmNlbnQuY29tPgo+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPiBGaXJzdGx5LCBzb21lIGJ1Z3Mgd2VyZSBmaXhlZCAocGF0Y2ggMS00 KS4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gUGF0Y2ggNSBhbmQgNiBtYWtlIG1lZGlhY29kZWNf d3JhcHBlciBzdXBwb3J0IEphdmEgTWVkaWFDb2RlYwo+IGFuZCBOREsKPiA+ID4gPiA+ID4gTWVk aWFDb2RlYy4gVGhlIHVzZSBjYXNlIEknbSBjb25zaWRlcmluZyBpcyBydW4gRkZtcGVnIG9uIGNt ZGxpbmUKPiA+ID4gd2l0aG91dCBKVk0sCj4gPiA+ID4gPiA+IGZvciBleGFtcGxlLCBydW4gRkZt cGVnIGluc2lkZSBvZiB0ZXJtdXggKGFuIEFuZHJvaWQgdGVybWluYWwKPiA+ID4gZW11bGF0b3Ip LiBJdCdzCj4gPiA+ID4gPiA+IHdlbGwga25vd24gdGhhdCBOREsgTWVkaWFDb2RlYyBtaXNzaW5n IHNvbWUgaW1wb3J0YW50IGZ1bmN0aW9ucywKPiA+ID4gbGlrZSBnZXQgdGhlCj4gPiA+ID4gPiA+ IGxpc3Qgb2YgY29kZWNzLCBidXQgc3RpbGwgdXNlYWJsZS4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gUGF0Y2ggNyBhZGQgTkRLIE1lZGlhQ29kZWMgZGVjb2RlciBzdXBwb3J0LiBJdCBjYW4gYmUg ZW5hYmxlZCB2aWEKPiA+ID4gb3B0aW9ucywKPiA+ID4gPiA+ID4gYW5kIGVuYWJsZWQgYXV0b21h dGljYWxseSBpZiBubyBKVk0gaXMgYXZhaWxhYmxlLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBQ YXRjaCA4IGFkZCBBTmF0aXZlV2luZG93IHN1cHBvcnQgdG8gaHdjb250ZXh0X21lZGlhY29kZWMu IEl0Cj4gY2FuIGJlCj4gPiA+IHNldCBieQo+ID4gPiA+ID4gPiB1c2VyLCBhbmQgY2FuIGJlIGNy ZWF0ZWQgdmlhCj4gQU1lZGlhQ29kZWNfY3JlYXRlUGVyc2lzdGVudElucHV0U3VyZmFjZQo+ID4g PiA+ID4gPiBhdXRvbWF0aWNhbGx5LiBUaGlzIGlzIGEgcHJlcGFyYXRpb24gZm9yIGVuY29kZXIu Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IFBhdGNoIDkgbWFrZXMgTWVkaWFDb2RlYyBkZWNvZGVy IHRvIHN1cHBvcnQgQU5hdGl2ZVdpbmRvdwo+IGRpcmVjdGx5Lgo+ID4gPiBJdCB3b3J0aAo+ID4g PiA+ID4gPiB0byBub3RlIHRoYXQgQVZNZWRpYUNvZGVjQ29udGV4dCBoYXMgb25seSBzdXJmYWNl LiBBbHRob3VnaCB3ZQo+ID4gPiBwcm92aWRlZAo+ID4gPiA+ID4gPiBhdl9tZWRpYWNvZGVjX2Fs bG9jX2NvbnRleHQoKSwgd2UgZGlkbid0IHN0cmljdGx5IHByZXZlbnQgdXNlcnMKPiB0bwo+ID4g PiBhbGxvY2F0ZQo+ID4gPiA+ID4gPiBBVk1lZGlhQ29kZWNDb250ZXh0IG9uIHN0YWNrLiBJJ20g bm90IHN1cmUgaWYgaXQncyBPSyB0byBhZGQgbmV3Cj4gPiA+IGZpZWxkIHRvCj4gPiA+ID4gPiA+ IEFWTWVkaWFDb2RlY0NvbnRleHQuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IFBhdGNoIDEwIGFk ZCBNZWRpYUNvZGVjIGVuY29kZXIgc3VwcG9ydC4gRnJhbWUgY2FuIGJlIGZlZWQgdG8KPiA+ID4g ZW5jb2RlciB2aWEKPiA+ID4gPiA+ID4gYnVmZmVyLCBvciB2aWEgU3VyZmFjZS9BTmF0aXZlV2lu ZG93LiBJZiBTdXJmYWNlL0FOYXRpdmVXaW5kb3cgaXMKPiA+ID4gdXNlZCwgYW5kCj4gPiA+ID4g PiA+IHRoZSBmcmFtZXMgY29tZSBmcm9tIG91ciBNZWRpYUNvZGVjIGRlY29kZXIgd3JhcHBlciwg d2UgY2FuCj4gY29udHJvbAo+ID4gPiBpdCdzCj4gPiA+ID4gPiA+ICdyZW5kZXInIChzZW5kIHRv IGVuY29kZXIncyBzdXJmYWNlKSB2aWEKPiA+ID4gYXZfbWVkaWFjb2RlY19yZWxlYXNlX2J1ZmZl cigpLiBBIERUUwo+ID4gPiA+ID4gPiBnZW5lcmF0aW9uIHN0cmF0ZWd5IHdvcmtzIGluIHRoaXMg Y2FzZS4gSG93ZXZlciwgaWYgZnJhbWVzIGNvbWVzCj4gPiA+IGZyb20gb3RoZXIKPiA+ID4gPiA+ ID4gc291cmNlcywgbGlrZSBhIGNhbWVyYSwgdGhlcmUgaXMgbm8gd2F5IHRvIGNvbnRyb2wgdGhl ICdyZW5kZXInCj4geWV0LAo+ID4gPiBzbyBEVFMgaXMKPiA+ID4gPiA+ID4gbWlzc2luZyBpbiB0 aGlzIGNhc2UuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IEZpbmFsbHksIHdlIGNhbiBkbyBtZWRp YWNvZGVjIHRyYW5zY29kaW5nIHdpdGggRkZtcGVnIGNtZGxpbmUgb24KPiA+ID4gQW5kcm9pZC4K PiA+ID4gPiA+ID4gTW9yZSBpbXBvcnRhbnRseSwgd2UgY2FuIGRvIE1lZGlhQ29kZWMgZGVjb2Rl ciB0byBlbmNvZGVyIHdpdGhvdXQKPiA+ID4gY29weSBmcmFtZXMsCj4gPiA+ID4gPiA+IGFsdGhv dWdoIGl0J3MgdmVyeSBsaW1pdGVkIHNpbmNlIG1vc3Qgb2YgYXZmaWx0ZXJzIGRvZXNuJ3Qgd29y ay4KPiBGb3IKPiA+ID4gZXhhbXBsZToKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gLi9mZm1wZWcg LWh3YWNjZWwgbWVkaWFjb2RlYyAtaHdhY2NlbF9vdXRwdXRfZm9ybWF0IG1lZGlhY29kZWMgLWkK PiA+ID4gL3NkY2FyZC90ZXN0Lm1wNCAtYW4gLWM6diBoMjY0X21lZGlhY29kZWMgLXkKPiA+ID4g PiAvc2RjYXJkL291dC5tcDQKPiA+ID4gPgo+ID4gPiA+IEhvdyBkbyB5b3UgYnVpbGQgdGhlIGZm bXBlZyBiaW5hcnkgeW91J3JlIHVzaW5nIGZvciBleHBlcmltZW50cyBpbgo+IHRoZQo+ID4gPiA+ IGFuZHJvaWQgZGV2aWNlPwo+ID4gPgo+ID4gPiBKdXN0IGNvbmZpZ3VyZSB3aXRoIC0tZW5hYmxl LW1lZGlhY29kZWMgYW5kIC0tZW5hYmxlLWpuaS4gSGVyZSBpcyB0aGUKPiBidWlsZAo+ID4gPiBz Y3JpcHQgSSB1c2VkIGZvciB0aGUgZGV2ZWxvcG1lbnQuCj4gPiA+Cj4gPiA+IGh0dHBzOi8vZ2l0 aHViLmNvbS9xdWluay1ibGFjay9mZm1wZWctY2kvYmxvYi9tYXN0ZXIvYW5kcm9pZF9mZm1wZWcu c2gKPiA+ID4KPiA+ID4gSGVyZSBpcyB0aGUgQW5kcm9pZCBTdHVkaW8gcHJvamVjdCB3aGljaCBj YW4gYmUgdXNlZCB0byB0ZXN0IHRoZQo+IG1lZGlhY29kZWMKPiA+ID4gd3JhcHBlciBpbXBsZW1l bnRlZCB2aWEgSk5JLgo+ID4gPgo+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+IFNpbmNlIHRoZXJlIGlzIG5vIHJlYWwgQVZIV0ZyYW1lQ29udGV4 dCBpbXBsZW1lbnRhdGlvbiBpbgo+ID4gPiBod2NvbnRleHRfbWVkaWFjb2RlYy4KPiA+ID4gPiA+ ID4gdGhlcmUgaXMgbm8gaHdmcmFtZV9jdHggZm9yIG1lZGlhY29kZWMgYW5kCj4gPiA+IGF2X2h3 ZnJhbWVfdHJhbnNmZXJfZGF0YSgpIGRvZXNuJ3QKPiA+ID4gPiA+ID4gd29yay4gU28gaWYgLWh3 YWNjZWxfb3V0cHV0X2Zvcm1hdCBpc24ndCBiZWluZyBzcGVjaWZpZWQgbGlrZToKPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gLi9mZm1wZWcgLWh3YWNjZWwgbWVkaWFjb2RlYyAtaSAvc2RjYXJkL3Rl c3QubXA0IC1hbiAtYzp2Cj4gPiA+IGgyNjRfbWVkaWFjb2RlYyAteSAvc2RjYXJkL291dC5tcDQK PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gSXQgd2lsbCB0cmlnZ2VyIGEgY3Jhc2ggaW4gYXZfaHdm cmFtZV90cmFuc2Zlcl9kYXRhLiBQYXRjaCAxMQo+IGFkZCBhCj4gPiA+IGNoZWNrIG9uCj4gPiA+ ID4gPiA+IGh3ZnJhbWVfY3R4LiBQYXRjaCAxMiBzZXQgaHdhY2NlbF9vdXRwdXRfZm9ybWF0IGF1 dG9tYXRpY2FsbHkgdG8KPiA+ID4gYXZvaWQgc3VjaAo+ID4gPiA+ID4gPiBjYXNlLgo+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBaaGFvIFpoaWxpICgxMik6Cj4gPiA+ID4gPiA+ ICBhdmNvZGVjL21lZGlhY29kZWM6IGZpeCBpbmNvcnJlY3QgY3JvcCBpbmZvCj4gPiA+ID4gPiA+ ICBhdmNvZGVjL21lZGlhY29kZWNkZWM6IGRvbid0IGJyZWFrIG91dCBpZiBib3RoIGlucHV0IGFu ZCBvdXRwdXQKPiBwb3J0Cj4gPiA+ID4gPiA+ICAgIHJldHVybiB0cnkgYWdhaW4KPiA+ID4gPiA+ ID4gIGF2Y29kZWMvbWVkaWFjb2RlY2RlY19jb21tb246IGZpeCBtaXN1c2UgYXZfZnJlZS9hdl9m cmVlcAo+ID4gPiA+ID4gPiAgYXZjb2RlYy9tZWRpYWNvZGVjZGVjX2NvbW1vbjogZml4IHVzZWxl c3MgYXZfYnVmZmVyX3VucmVmCj4gPiA+ID4gPiA+ICBhdmNvZGVjL21lZGlhY29kZWNfd3JhcHBl cjogc2VwYXJhdGUgaW1wbGVtZW50YXRpb24gZnJvbQo+IGludGVyZmFjZQo+ID4gPiA+ID4gPiAg YXZjb2RlYy9tZWRpYWNvZGVjOiBhZGQgTkRLIG1lZGlhIGNvZGVjIHdyYXBwZXIKPiA+ID4gPiA+ ID4gIGF2Y29kZWMvbWVkaWFjb2RlY2RlYzogZW5hYmxlIE5ESyBtZWRpYWNvZGVjCj4gPiA+ID4g PiA+ICBhdnV0aWwvaHdjb250ZXh0X21lZGlhY29kZWM6IGFkZCBBTmF0aXZlV2luZG93IHN1cHBv cnQKPiA+ID4gPiA+ID4gIGF2Y29kZWMvbWVkaWFjb2RlYzogYWRkIEFOYXRpdmVXaW5kb3cgc3Vw cG9ydAo+ID4gPiA+ID4gPiAgYXZjb2RlYzogYWRkIE1lZGlhQ29kZWMgZW5jb2Rlcgo+ID4gPiA+ ID4gPiAgYXZ1dGlsL2h3Y29udGV4dDogdmVyaWZ5IGh3X2ZyYW1lc19jdHggaW4gdHJhbnNmZXJf ZGF0YV9hbGxvYwo+ID4gPiA+ID4gPiAgZmZ0b29scy9mZm1wZWdfb3B0OiBzZXQgZGVmYXVsdCBo d2FjY2VsX291dHB1dF9mb3JtYXQgZm9yCj4gbWVkaWFjb2RlYwo+ID4gPiA+ID4gPgo+ID4gPiA+ ID4gPiBDaGFuZ2Vsb2cgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwo+ID4gPiA+ID4g PiBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwo+ID4gPiA+ID4gPiBm ZnRvb2xzL2ZmbXBlZ19vcHQuYyAgICAgICAgICAgICAgfCAgIDQgKwo+ID4gPiA+ID4gPiBsaWJh dmNvZGVjL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgIDIgKwo+ID4gPiA+ID4gPiBsaWJhdmNv ZGVjL2FsbGNvZGVjcy5jICAgICAgICAgICAgfCAgIDIgKwo+ID4gPiA+ID4gPiBsaWJhdmNvZGVj L21lZGlhY29kZWNfc3VyZmFjZS5jICAgfCAgNDYgKy0KPiA+ID4gPiA+ID4gbGliYXZjb2RlYy9t ZWRpYWNvZGVjX3N1cmZhY2UuaCAgIHwgICA4ICstCj4gPiA+ID4gPiA+IGxpYmF2Y29kZWMvbWVk aWFjb2RlY193cmFwcGVyLmMgICB8IDk0Mgo+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysr KystLS0KPiA+ID4gPiA+ID4gbGliYXZjb2RlYy9tZWRpYWNvZGVjX3dyYXBwZXIuaCAgIHwgMjc1 ICsrKysrKystLQo+ID4gPiA+ID4gPiBsaWJhdmNvZGVjL21lZGlhY29kZWNkZWMuYyAgICAgICAg fCAgMjEgKy0KPiA+ID4gPiA+ID4gbGliYXZjb2RlYy9tZWRpYWNvZGVjZGVjX2NvbW1vbi5jIHwg IDM1ICstCj4gPiA+ID4gPiA+IGxpYmF2Y29kZWMvbWVkaWFjb2RlY2RlY19jb21tb24uaCB8ICAg MSArCj4gPiA+ID4gPiA+IGxpYmF2Y29kZWMvbWVkaWFjb2RlY2VuYy5jICAgICAgICB8IDQ5NSAr KysrKysrKysrKysrKysrCj4gPiA+ID4gPiA+IGxpYmF2Y29kZWMvdmVyc2lvbi5oICAgICAgICAg ICAgICB8ICAgMiArLQo+ID4gPiA+ID4gPiBsaWJhdnV0aWwvaHdjb250ZXh0LmMgICAgICAgICAg ICAgfCAgIDYgKy0KPiA+ID4gPiA+ID4gbGliYXZ1dGlsL2h3Y29udGV4dF9tZWRpYWNvZGVjLmMg IHwgIDU2ICstCj4gPiA+ID4gPiA+IGxpYmF2dXRpbC9od2NvbnRleHRfbWVkaWFjb2RlYy5oICB8 ICAxMSArCj4gPiA+ID4gPiA+IGxpYmF2dXRpbC92ZXJzaW9uLmggICAgICAgICAgICAgICB8ICAg NCArLQo+ID4gPiA+ID4gPiAxOCBmaWxlcyBjaGFuZ2VkLCAxNzgwIGluc2VydGlvbnMoKyksIDEz OCBkZWxldGlvbnMoLSkKPiA+ID4gPiA+ID4gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMv bWVkaWFjb2RlY2VuYy5jCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IC0tCj4gPiA+ID4gPiA+IDIu MjUuMQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4KPiA+ID4gPiA+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiA+ID4gPiBmZm1wZWct ZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPiA+ID4gPiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+ID4g PiA+ID4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4g PiA+ID4gPgo+ID4gPiA+ID4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVt YWlsCj4gPiA+ID4gPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVj dCAidW5zdWJzY3JpYmUiLgo+ID4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gPiA+ID4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+ID4gPiA+ IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gPiA+ID4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxt YW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4gPiA+ID4KPiA+ID4gPiBUbyB1bnN1YnNjcmliZSwg dmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiA+ID4gPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBm Zm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo+ID4gPgo+ID4gPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gPiBmZm1wZWctZGV2 ZWwgbWFpbGluZyBsaXN0Cj4gPiA+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gPiA+IGh0dHBz Oi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+ID4gPgo+ID4gPiBU byB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiA+ID4gZmZtcGVnLWRl dmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KPiA+ID4K PiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBm Zm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+ID4g aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4gPgo+ID4g VG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gPiBmZm1wZWctZGV2 ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo+Cj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBmZm1wZWctZGV2 ZWwgbWFpbGluZyBsaXN0Cj4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczovL2ZmbXBl Zy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPgo+IFRvIHVuc3Vic2NyaWJlLCB2 aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5v cmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCj4KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWct ZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1w ZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1w ZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=