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 47FD74AE3F for ; Tue, 21 May 2024 20:12:14 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3D25668D274; Tue, 21 May 2024 23:12:12 +0300 (EEST) Received: from iq.passwd.hu (iq.passwd.hu [217.27.212.140]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 980CE68C492 for ; Tue, 21 May 2024 23:12:06 +0300 (EEST) Received: from localhost (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id 683A9E80F8 for ; Tue, 21 May 2024 22:12:06 +0200 (CEST) X-Virus-Scanned: amavisd-new at passwd.hu Received: from iq.passwd.hu ([127.0.0.1]) by localhost (iq.passwd.hu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id McJlnrGZ8GY6 for ; Tue, 21 May 2024 22:12:04 +0200 (CEST) Received: from iq (iq [217.27.212.140]) by iq.passwd.hu (Postfix) with ESMTPS id BE28AE24CE for ; Tue, 21 May 2024 22:12:03 +0200 (CEST) Date: Tue, 21 May 2024 22:12:03 +0200 (CEST) From: Marton Balint To: Lynne via ffmpeg-devel In-Reply-To: <14f2a040-c2a0-49cb-9cd8-bd5ba631c389@lynne.ee> Message-ID: References: <20240519165444.829271-1-dev@lynne.ee> <20240519165444.829271-9-dev@lynne.ee> <14f2a040-c2a0-49cb-9cd8-bd5ba631c389@lynne.ee> MIME-Version: 1.0 Content-ID: X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v2 8/8] aacdec: add a decoder for AAC USAC (xHE-AAC) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: CgpPbiBUdWUsIDIxIE1heSAyMDI0LCBMeW5uZSB2aWEgZmZtcGVnLWRldmVsIHdyb3RlOgoKPiBP biAyMS8wNS8yMDI0IDIxOjQwLCBNYXJ0b24gQmFsaW50IHdyb3RlOgo+Pgo+Pgo+PiAgT24gVHVl LCAyMSBNYXkgMjAyNCwgTHlubmUgdmlhIGZmbXBlZy1kZXZlbCB3cm90ZToKPj4KPj4+ICBPbiAy MS8wNS8yMDI0IDA5OjE2LCBNYXJ0b24gQmFsaW50IHdyb3RlOgo+Pj4+IAo+Pj4+Cj4+Pj4gIMKg T24gU3VuLCAxOSBNYXkgMjAyNCwgTHlubmUgdmlhIGZmbXBlZy1kZXZlbCB3cm90ZToKPj4+Pgo+ Pj4+PiAgwqBPbiAxOS8wNS8yMDI0IDIxOjM5LCBNYXJ0b24gQmFsaW50IHdyb3RlOgo+Pj4+Pj4g Cj4+Pj4+Pgo+Pj4+Pj4gIMKgwqBPbiBTdW4sIDE5IE1heSAyMDI0LCBMeW5uZSB2aWEgZmZtcGVn LWRldmVsIHdyb3RlOgo+Pj4+Pj4KPj4+Pj4+PiAgwqDCoFRoaXMgY29tbWl0IGFkZHMgYSBkZWNv ZGVyIGZvciB0aGUgZnJlcXVlbmN5LWRvbWFpbiBwYXJ0IG9mIFVTQUMuCj4+Pj4+Pj4KPj4+Pj4+ ICDCoMKgWy4uLl0KPj4+Pj4+IAo+Pj4+Pj4+Cj4+Pj4+Pj4gIMKgwqArLyogRmluaXNoIGxhdGVy ICovCj4+Pj4+Pj4gIMKgwqArc3RhdGljIGNvbnN0IGVudW0gQVZDaGFubmVsIHVzYWNfY2hfcG9z X3RvX2F2WzY0XSA9IHsKPj4+Pj4+PiAgwqDCoCvCoMKgwqAgWzBdID0gQVZfQ0hBTl9GUk9OVF9M RUZULAo+Pj4+Pj4+ICDCoMKgK8KgwqDCoCBbMV0gPSBBVl9DSEFOX0ZST05UX1JJR0hULAo+Pj4+ Pj4+ICDCoMKgK8KgwqDCoCBbMl0gPSBBVl9DSEFOX0ZST05UX0NFTlRFUiwKPj4+Pj4+PiAgwqDC oCvCoMKgwqAgWzNdID0gQVZfQ0hBTl9MT1dfRlJFUVVFTkNZLAo+Pj4+Pj4+ICDCoMKgK8KgwqDC oCBbNF0gPSBBVl9DSEFOX0JBQ0tfTEVGVCwgLy8gdW5zdXJlCj4+Pj4+Pj4gIMKgwqArwqDCoMKg IFs1XSA9IEFWX0NIQU5fQkFDS19SSUdIVCwgLy8gdW5zdXJlCj4+Pj4+Pj4gIMKgwqArwqDCoMKg IFs2XSA9IEFWX0NIQU5fRlJPTlRfTEVGVF9PRl9DRU5URVIsCj4+Pj4+Pj4gIMKgwqArwqDCoMKg IFs3XSA9IEFWX0NIQU5fRlJPTlRfUklHSFRfT0ZfQ0VOVEVSLAo+Pj4+Pj4+ICDCoMKgK8KgwqDC oCBbOF0gPSAwLCAvKiByZWFyIHN1cnJvdW5kIGxlZnQgaXMgbWlzc2luZyAqLwo+Pj4+Pj4+ICDC oMKgK8KgwqDCoCBbOV0gPSAwLCAvKiByZWFyIHN1cnJvdW5kIHJpZ2h0IGlzIG1pc3NpbmcgKi8K Pj4+Pj4+PiAgwqDCoCvCoMKgwqAgWzEwXSA9IEFWX0NIQU5fQkFDS19DRU5URVIsCj4+Pj4+Pj4g IMKgwqArwqDCoMKgIFsxMV0gPSBBVl9DSEFOX1NVUlJPVU5EX0RJUkVDVF9MRUZULAo+Pj4+Pj4+ ICDCoMKgK8KgwqDCoCBbMTJdID0gQVZfQ0hBTl9TVVJST1VORF9ESVJFQ1RfUklHSFQsCj4+Pj4+ Pj4gIMKgwqArwqDCoMKgIFsxM10gPSBBVl9DSEFOX1NJREVfTEVGVCwgLy8gZmFpcmx5IHN1cmUK Pj4+Pj4+PiAgwqDCoCvCoMKgwqAgWzE0XSA9IEFWX0NIQU5fU0lERV9SSUdIVCwgLy8gZmFpcmx5 IHN1cmUKPj4+Pj4+PiAgwqDCoCvCoMKgwqAgWzE1XSA9IEFWX0NIQU5fV0lERV9MRUZULCAvLyBz b21ld2hhdCBjb25maWRlbnQKPj4+Pj4+PiAgwqDCoCvCoMKgwqAgWzE2XSA9IEFWX0NIQU5fV0lE RV9SSUdIVCwgLy8gc29tZXdoYXQgY29uZmlkZW50Cj4+Pj4+Pj4gIMKgwqArwqDCoMKgIFsxN10g PSBBVl9DSEFOX1RPUF9GUk9OVF9MRUZULAo+Pj4+Pj4+ICDCoMKgK8KgwqDCoCBbMThdID0gQVZf Q0hBTl9UT1BfRlJPTlRfUklHSFQsCj4+Pj4+Pj4gIMKgwqArwqDCoMKgIFsxOV0gPSBBVl9DSEFO X1RPUF9GUk9OVF9DRU5URVIsCj4+Pj4+Pj4gIMKgwqArwqDCoMKgIFsyMF0gPSBBVl9DSEFOX1RP UF9CQUNLX0xFRlQsCj4+Pj4+Pj4gIMKgwqArwqDCoMKgIFsyMV0gPSBBVl9DSEFOX1RPUF9CQUNL X1JJR0hULAo+Pj4+Pj4+ICDCoMKgK8KgwqDCoCBbMjJdID0gQVZfQ0hBTl9UT1BfQkFDS19DRU5U RVIsCj4+Pj4+Pj4gIMKgwqArwqDCoMKgIFsyM10gPSBBVl9DSEFOX1RPUF9TSURFX0xFRlQsCj4+ Pj4+Pj4gIMKgwqArwqDCoMKgIFsyNF0gPSBBVl9DSEFOX1RPUF9TSURFX1JJR0hULAo+Pj4+Pj4+ ICDCoMKgK8KgwqDCoCBbMjVdID0gQVZfQ0hBTl9UT1BfQ0VOVEVSLAo+Pj4+Pj4+ICDCoMKgK8Kg wqDCoCBbMjZdID0gQVZfQ0hBTl9MT1dfRlJFUVVFTkNZLCAvLyBhY3R1YWxseSBMRkUyCj4+Pj4+ Pj4gIMKgwqArwqDCoMKgIFsyN10gPSBBVl9DSEFOX0JPVFRPTV9GUk9OVF9MRUZULAo+Pj4+Pj4+ ICDCoMKgK8KgwqDCoCBbMjhdID0gQVZfQ0hBTl9CT1RUT01fRlJPTlRfUklHSFQsCj4+Pj4+Pj4g IMKgwqArwqDCoMKgIFsyOV0gPSBBVl9DSEFOX0JPVFRPTV9GUk9OVF9DRU5URVIsCj4+Pj4+Pj4g IMKgwqArwqDCoMKgIFszMF0gPSAwLCAvKiB0b3AgbGVmdCBzdXJyb3VuZCBpcyBtaXNzaW5nICov Cj4+Pj4+Pj4gIMKgwqArwqDCoMKgIFszMV0gPSAwLCAvKiB0b3AgcmlnaHQgc3Vycm91bmQgaXMg bWlzc2luZyAqLwo+Pj4+Pj4+ICDCoMKgK307Cj4+Pj4+Pgo+Pj4+Pj4gIMKgwqBTb21lIGNvbW1l bnQgd291bGQgYmUgbmljZSBhYm91dCB0aGUgc291cmNlIG9mIHRoaXMgdGFibGUgKHdoaWNoCj4+ Pj4+PiAgwqBkb2N1bWVudCwKPj4+Pj4+ICDCoMKgd2hpY2ggdGFibGUpLgo+Pj4+Pj4KPj4+Pj4+ ICDCoMKgSXQgbG9va3MgdmVyeSBzaW1pbGFyIHRvIHRoZSBJU08gY2hhbm5lbCBwb3NpdG9ucyB1 c2VkIGluIG1vdl9jaGFuLgo+Pj4+Pj4gIEkKPj4+Pj4+ICDCoMKgdGhpbmsgd2UgZm9sbG93IHRo aXMgbWFwcGluZyBpbiBtb3N0IGNhc2VzOgo+Pj4+Pj4KPj4+Pj4+ICDCoMKgTGVmdMKgIFN1cnJv dW5kIGlzIFNJREVfTEVGVAo+Pj4+Pj4gIMKgwqBSaWdodCBTdXJyb3VuZCBpcyBTSURFX1JJR0hU Cj4+Pj4+PiAgwqDCoFJlYXIgU3Vycm91bmQgTGVmdMKgIGlzIEJBQ0tfTEVGVAo+Pj4+Pj4gIMKg wqBSZWFyIFN1cnJvdW5kIFJpZ2h0IGlzIEJBQ0tfUklHSFQKPj4+Pj4+Cj4+Pj4+PiAgwqDCoFNv IGluIHlvdXIgdGFibGUgWzRdIGFuZCBbNV0gc2hvdWxkIGJlIFNJREUsIFs4XSBhbmQgWzldIHNo b3VsZCBiZQo+Pj4+Pj4gIMKgQkFDSy4KPj4+Pj4+ICDCoMKgWzI2XSBjYW4gYmUgQVZfQ0hBTl9M T1dfRlJFUVVFTkNZXzIsIHdlIGRvIGhhdmUgdGhhdC4KPj4+Pj4+Cj4+Pj4+PiAgwqDCoFllcywg TGVmdC9SaWdodCBTdXJyb3VuZCBhbmQgTGVmdC9SaWdodCBTaWRlIFN1cnJvdW5kIHdpbGwgYmUg dGhlCj4+Pj4+PiAgc2FtZSwKPj4+Pj4+ICDCoMKgYnV0IHRob3NlIGFyZSBub3QgcHJlc2VudCBp biBjb21tb25seSB1c2VkIGxheW91dHMgYXQgdGhlIHNhbWUgdGltZS4KPj4+Pj4+Cj4+Pj4+PiAg wqDCoFJlZ2FyZHMsCj4+Pj4+PiAgwqDCoE1hcnRvbgo+Pj4+Pj4gIMKgwqBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+Pj4gIMKgwqBmZm1wZWctZGV2 ZWwgbWFpbGluZyBsaXN0Cj4+Pj4+PiAgwqDCoGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4+Pj4+ PiAgwqDCoGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+ Pj4+Pj4KPj4+Pj4+ICDCoMKgVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVt YWlsCj4+Pj4+PiAgwqDCoGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJq ZWN0ICJ1bnN1YnNjcmliZSIuCj4+Pj4+Cj4+Pj4+ICDCoFNvdXJjZSBvZiB0aGUgdGFibGUgaXMg SVNPL0lFQyAyMzAwMy0zLCBUYWJsZSA3NCDigJQgYnNPdXRwdXRDaGFubmVsUG9zOgo+Pj4+Pgo+ Pj4+PiAgwqAwIEwgbGVmdCBmcm9udCBGTCBmcm9udCBsZWZ0Cj4+Pj4+ICDCoDEgUiByaWdodCBm cm9udCBGUiBmcm9udCByaWdodAo+Pj4+PiAgwqAyIEMgY2VudGVyIGZyb250IEZDIGZyb250IGNl bnRyZQo+Pj4+PiAgwqAzIExGRSBsb3cgZnJlcXVlbmN5IGVuaGFuY2VtZW50IExGRTEgbG93IGZy ZXF1ZW5jeSBlZmZlY3RzLTEKPj4+Pj4gIMKgNCBMcyBsZWZ0IHN1cnJvdW5kIExTIGxlZnQgc3Vy cm91bmQKPj4+Pj4gIMKgNSBScyByaWdodCBzdXJyb3VuZCBSUyByaWdodCBzdXJyb3VuZAo+Pj4+ PiAgwqA2IExjIGxlZnQgZnJvbnQgY2VudGVyIEZMYyBmcm9udCBsZWZ0IGNlbnRyZQo+Pj4+PiAg wqA3IFJjIHJpZ2h0IGZyb250IGNlbnRlciBGUmMgZnJvbnQgcmlnaHQgY2VudHJlCj4+Pj4+ICDC oDggTHNyIHJlYXIgc3Vycm91bmQgbGVmdCBCTCBiYWNrIGxlZnQKPj4+Pj4gIMKgOSBSc3IgcmVh ciBzdXJyb3VuZCByaWdodCBCUiBiYWNrIHJpZ2h0Cj4+Pj4+ICDCoDEwIENzIHJlYXIgY2VudGVy IEJDIGJhY2sgY2VudHJlCj4+Pj4+ICDCoDExIExzZCBsZWZ0IHN1cnJvdW5kIGRpcmVjdCBMU2Qg bGVmdCBzdXJyb3VuZCBkaXJlY3QKPj4+Pj4gIMKgMTIgUnNkIHJpZ2h0IHN1cnJvdW5kIGRpcmVj dCBSU2QgcmlnaHQgc3Vycm91bmQgZGlyZWN0Cj4+Pj4+ICDCoDEzIExzcyBsZWZ0IHNpZGUgc3Vy cm91bmQgU0wgc2lkZSBsZWZ0Cj4+Pj4+ICDCoDE0IFJzcyByaWdodCBzaWRlIHN1cnJvdW5kIFNS IHNpZGUgcmlnaHQKPj4+Pj4gIMKgMTUgTHcgbGVmdCB3aWRlIGZyb250IEZMdyBmcm9udCBsZWZ0 IHdpZGUKPj4+Pj4gIMKgMTYgUncgcmlnaHQgd2lkZSBmcm9udCBGUncgZnJvbnQgcmlnaHQgd2lk ZQo+Pj4+PiAgwqAxNyBMdiBsZWZ0IGZyb250IHZlcnRpY2FsIGhlaWdodCBUcEZMIHRvcCBmcm9u dCBsZWZ0Cj4+Pj4+ICDCoDE4IFJ2IHJpZ2h0IGZyb250IHZlcnRpY2FsIGhlaWdodCBUcEZSIHRv cCBmcm9udCByaWdodAo+Pj4+PiAgwqAxOSBDdiBjZW50ZXIgZnJvbnQgdmVydGljYWwgaGVpZ2h0 IFRwRkMgdG9wIGZyb250IGNlbnRyZQo+Pj4+PiAgwqAyMCBMdnIgbGVmdCBzdXJyb3VuZCB2ZXJ0 aWNhbCBoZWlnaHQgcmVhciBUcEJMIHRvcCBiYWNrIGxlZnQKPj4+Pj4gIMKgMjEgUnZyIHJpZ2h0 IHN1cnJvdW5kIHZlcnRpY2FsIGhlaWdodCByZWFyIFRwQlIgdG9wIGJhY2sgcmlnaHQKPj4+Pj4g IMKgMjIgQ3ZyIGNlbnRlciB2ZXJ0aWNhbCBoZWlnaHQgcmVhciBUcEJDIHRvcCBiYWNrIGNlbnRy ZQo+Pj4+PiAgwqAyMyBMdnNzIGxlZnQgdmVydGljYWwgaGVpZ2h0IHNpZGUgc3Vycm91bmQgVHBT aUwgdG9wIHNpZGUgbGVmdAo+Pj4+PiAgwqAyNCBSdnNzIHJpZ2h0IHZlcnRpY2FsIGhlaWdodCBz aWRlIHN1cnJvdW5kIFRwU2lSIHRvcCBzaWRlIHJpZ2h0Cj4+Pj4+ICDCoDI1IFRzIHRvcCBjZW50 ZXIgc3Vycm91bmQgVHBDIHRvcCBjZW50cmUKPj4+Pj4gIMKgMjYgTEZFMiBsb3cgZnJlcXVlbmN5 IGVuaGFuY2VtZW50IDIgTEZFMiBsb3cgZnJlcXVlbmN5IGVmZmVjdHMtMgo+Pj4+PiAgwqAyNyBM YiBsZWZ0IGZyb250IHZlcnRpY2FsIGJvdHRvbSBCdEZMIGJvdHRvbSBmcm9udCBsZWZ0Cj4+Pj4+ ICDCoDI4IFJiIHJpZ2h0IGZyb250IHZlcnRpY2FsIGJvdHRvbSBCdEZSIGJvdHRvbSBmcm9udCBy aWdodAo+Pj4+PiAgwqAyOSBDYiBjZW50ZXIgZnJvbnQgdmVydGljYWwgYm90dG9tIEJ0RkMgYm90 dG9tIGZyb250IGNlbnRyZQo+Pj4+PiAgwqAzMCBMdnMgbGVmdCB2ZXJ0aWNhbCBoZWlnaHQgc3Vy cm91bmQgVHBMUyB0b3AgbGVmdCBzdXJyb3VuZAo+Pj4+PiAgwqAzMSBSdnMgcmlnaHQgdmVydGlj YWwgaGVpZ2h0IHN1cnJvdW5kIFRwUlMgdG9wIHJpZ2h0IHN1cnJvdW5kCj4+Pj4+Cj4+Pj4+ICDC oFRoaXJkIGZpZWxkIGlzICJMb3Vkc3BlYWtlciBwb3NpdGlvbiIsIGxhc3QgZmllbGQgaXMgIkxv dWRzcGVha2VyCj4+Pj4+ICDCoHBvc2l0aW9uIGFjY29yZGluZyB0byBJRUMgMTAwLzE3MDYvQ0RW L0lFQyA2MjU3NCAoVEMxMDApIiwgZWFjaAo+Pj4+PiAgcHJlZml4ZWQKPj4+Pj4gIMKgd2l0aCBh biBhYmJyZXZpYXRpb24uCj4+Pj4+Cj4+Pj4+ICDCoEkndmUgYWRkZWQgdGhlIHNvdXJjZSB0byB0 aGUgdGFibGUgY29tbWVudCBpbiB0aGUgY29kZS4KPj4+Pj4KPj4+Pj4gIMKgSSd2ZSBhbHNvIGZp eGVkIHRoZSBTSURFL0JBQ0svTEZFMiBpc3N1ZSBpbiBteSBnaXRodWIgcmVwbyBJIGxpbmtlZAo+ Pj4+PiAgwqBlYXJsaWVyLgo+Pj4+Cj4+Pj4gIMKgVGhhbmtzLiBMYXRlciBpbiB0aGUgY29kZSB3 aGVuIHlvdSBhY3R1YWxseSB1c2UgdGhpcyBJIGNhbiBzZWUgdGhhdCB5b3UKPj4+PiAgwqBhcmUg Y3JlYXRpbmcgYSBuYXRpdmUgbGF5b3V0Ogo+Pj4+Cj4+Pj4+ICDCoCvCoMKgwqAgY2hhbm5lbF9j b25maWdfaWR4ID0gZ2V0X2JpdHMoZ2IsIDUpOyAvKgo+Pj4+PiAgY2hhbm5lbENvbmZpZ3VyYXRp b25JbmRleAo+Pj4+PiAgwqAqLwo+Pj4+PiAgwqArwqDCoMKgIGlmICghY2hhbm5lbF9jb25maWdf aWR4KSB7Cj4+Pj4+ICDCoCvCoMKgwqDCoMKgwqDCoCAvKiBVc2FjQ2hhbm5lbENvbmZpZygpICov Cj4+Pj4+ICDCoCvCoMKgwqDCoMKgwqDCoCB1aW50OF90IGNoYW5uZWxfcG9zWzY0XTsKPj4+Pj4g IMKgK8KgwqDCoMKgwqDCoMKgIHVpbnQ4X3QgbmJfY2hhbm5lbHMgPSBnZXRfZXNjYXBlZF92YWx1 ZShnYiwgNSwgOCwgMTYpOyAvKgo+Pj4+PiAgwqBudW1PdXRDaGFubmVscyAqLwo+Pj4+PiAgwqAr wqDCoMKgwqDCoMKgwqAgaWYgKG5iX2NoYW5uZWxzID49IDY0KQo+Pj4+PiAgwqArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+Pj4+PiAgwqArCj4+Pj4+ICDC oCvCoMKgwqDCoMKgwqDCoCBhdl9jaGFubmVsX2xheW91dF91bmluaXQoJmFjLT5vY1sxXS5jaF9s YXlvdXQpOwo+Pj4+PiAgwqArwqDCoMKgwqDCoMKgwqAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYl9j aGFubmVsczsgaSsrKQo+Pj4+PiAgwqArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjaGFubmVsX3Bv c1tpXSA9IGdldF9iaXRzKGdiLCA1KTsgLyogYnNPdXRwdXRDaGFubmVsUG9zCj4+Pj4+ICAqLwo+ Pj4+PiAgwqArCj4+Pj4+ICDCoCvCoMKgwqDCoMKgwqDCoCBhYy0+b2NbMV0uY2hfbGF5b3V0Lm9y ZGVyID0gQVZfQ0hBTk5FTF9PUkRFUl9OQVRJVkU7Cj4+Pj4+ICDCoCvCoMKgwqDCoMKgwqDCoCBh Yy0+b2NbMV0uY2hfbGF5b3V0Lm5iX2NoYW5uZWxzID0gbmJfY2hhbm5lbHM7Cj4+Pj4+ICDCoCvC oMKgwqDCoMKgwqDCoCBhYy0+b2NbMV0uY2hfbGF5b3V0LnUubWFzayA9IDA7Cj4+Pj4+ICDCoCsK Pj4+Pj4gIMKgK8KgwqDCoMKgwqDCoMKgIGZvciAoaW50IGkgPSAwOyBpIDwgbmJfY2hhbm5lbHM7 IGkrKykKPj4+Pj4gIMKgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWMtPm9jWzFdLmNoX2xheW91 dC51Lm1hc2sgfD0gMSA8PAo+Pj4+PiAgwqB1c2FjX2NoX3Bvc190b19hdltjaGFubmVsX3Bvc1tp XV07Cj4+Pj4+ICDCoCsKPj4+Pj4gIMKgK8KgwqDCoMKgwqDCoMKgIGF2X2NoYW5uZWxfbGF5b3V0 X2NvcHkoJmF2Y3R4LT5jaF9sYXlvdXQsIAo+Pj4+PiAmIGFjLT5vY1sxXS5jaF9sYXlvdXQpOwo+ Pj4+PiAgwqArwqDCoMKgIH0gZWxzZSB7Cj4+Pj4KPj4+PiAgwqBQcm9iYWJseSB5b3Ugc2hvdWxk IGNyZWF0ZSBhIGN1c3RvbSBsYXlvdXQgaGVyZSwgYmVjYXVzZSB0aGUgY2hhbm5lbHMKPj4+PiAg YXJlCj4+Pj4gIMKgbm90IG5lY2Vzc2FyeSBpbiBuYXRpdmUgb3JkZXIuIFdlIGFscmVhZHkgaGF2 ZSBhIHJlbGF0aXZlbHkgc2ltcGxlIHdheQo+Pj4+ICB0bwo+Pj4+ICDCoGRvIHRoYXQgYW5kIHRv IGZhbGwgYmFjayB0byBuYXRpdmUgbGF5b3V0cyBpZiBwb3NzaWJsZSwgaGVyZSBpcyBhbgo+Pj4+ ICBleGFtcGxlCj4+Pj4gIMKgY29waWVkIGZyb20gbW92X2NoYW46Cj4+Pj4KPj4+PiAgwqByZXQg PSBhdl9jaGFubmVsX2xheW91dF9jdXN0b21faW5pdChjaF9sYXlvdXQsIGNoYW5uZWxzKTsKPj4+ PiAgwqBpZiAocmV0IDwgMCkKPj4+PiAgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+PiAgwqBmb3Ig KGkgPSAwOyBpIDwgY2hhbm5lbHM7IGkrKykgewo+Pj4+ICDCoCDCoMKgwqAgZW51bSBBVkNoYW5u ZWwgaWQgPSBsYXlvdXRfbWFwW2ldLmlkOwo+Pj4+ICDCoCDCoMKgwqAgY2hfbGF5b3V0LT51Lm1h cFtpXS5pZCA9IChpZCAhPSBBVl9DSEFOX05PTkUgPyBpZCA6Cj4+Pj4gIEFWX0NIQU5fVU5LTk9X Tik7Cj4+Pj4gfQo+Pj4+ICDCoHJldHVybiBhdl9jaGFubmVsX2xheW91dF9yZXR5cGUoY2hfbGF5 b3V0LCAwLAo+Pj4+ICDCoEFWX0NIQU5ORUxfTEFZT1VUX1JFVFlQRV9GTEFHX0NBTk9OSUNBTCk7 Cj4+Pj4KPj4+PiAgwqBTbyB5b3Ugc2hvdWxkIGFkYXB0IHRoaXMgYWNjb2RpbmdseSB0byBhYWMu Cj4+Pj4KPj4+PiAgwqBSZWdhcmRzLAo+Pj4+ICDCoE1hcnRvbgo+Pj4+ICDCoF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+Pj4gIMKgZmZtcGVnLWRldmVs IG1haWxpbmcgbGlzdAo+Pj4+ICDCoGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4+Pj4gIMKgaHR0 cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4+Pj4KPj4+PiAg wqBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPj4+PiAgwqBmZm1w ZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo+ Pj4KPj4+ICBBY2NvcmRpbmcgdG8gdGhlIHNwZWM6Cj4+Pgo+Pj4+ICDCoEluIGNhc2Ugb2YgbXVs dGlwbGUgY2hhbm5lbCBlbGVtZW50cyB0aGUgaW5kZXggaSBvZgo+Pj4+ICDCoGJzT3V0cHV0Q2hh bm5lbFBvc1tpXSBpbmRpY2F0ZXMgdGhlIHBvc2l0aW9uIGluIHdoaWNoIHRoZSBjaGFubmVsCj4+ Pj4gIMKgYXBwZWFycyBpbiB0aGUgYml0c3RyZWFtLgo+Pj4KPj4+ICBTbyB0aGUgY2hhbm5lbHMg d2lsbCBhbHdheXMgYmUgaW4gbmF0aXZlIG9yZGVyLCBhcyBmYXIgYXMgSSB1bmRlcnN0YW5kLgo+ Pj4KPj4KPj4gIEFWX0NIQU5ORUxfT1JERVJfTkFUSVZFIGV4cGVjdHMgY2hhbm5lbHMgaW4gdGhl IG9yZGVyIG9mIHRoZSBjaGFubmVsIElEcwo+PiAgaW4gdGhlIEFWQ2hhbm5lbCBlbnVtLiBTdXJl bHkgdGhhdCBpcyBub3QgdGhlIGNhc2UgaGVyZSwgdW5sZXNzIHRoZQo+PiAgZGVjb2RlciByZW9y ZGVycyB0aGUgY2hhbm5lbHMuIE9yIHdoYXQgaWYgYW4gb3V0cHV0IHBvc2l0aW9uIGFwcGVhcnMK Pj4gIG11bHRpcGxlIHRpbWVzPwo+Pgo+PiAgUmVnYXJkcywKPj4gIE1hcnRvbgo+PiAgX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gIGZmbXBlZy1kZXZl bCBtYWlsaW5nIGxpc3QKPj4gIGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4+ICBodHRwczovL2Zm bXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPj4KPj4gIFRvIHVuc3Vic2Ny aWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+PiAgZmZtcGVnLWRldmVsLXJlcXVlc3RA ZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KPgo+Cj4gSXQgc2hvdWxkIGJl IHRoZSBjYXNlIGhlcmUsIHdlIHNob3VsZG4ndCBuZWVkIHJlb3JkZXJpbmcgYXMgTkFUSVZFIGp1 c3QgbGV0cyAKPiB5b3Ugc3BlY2lmeSB3aGF0IG9yZGVyIHRoZSBlbGVtZW50cyBhcHBlYXIgaW4g dGhlIGJpdHN0cmVhbS4KCkkgZG9uJ3QgZ2V0IGl0LgoKYnNPdXRwdXRDaGFubmVsUG9zWzBdID0g MApic091dHB1dENoYW5uZWxQb3NbMV0gPSAxCgp3aWxsIG1hcCB0byB0aGUgc2FtZSBBVkNoYW5u ZWxMYXlvdXQgbGF5b3V0IGFzCgpic091dHB1dENoYW5uZWxQb3NbMF0gPSAxCmJzT3V0cHR1Q2hh bm5lbFBvc1sxXSA9IDAKCndoaWNoIHdpbGwgYmUgQVZfQ0hBTk5FTF9PUkRFUl9OQVRJVkUgd2l0 aCBhIG1hc2sgb2YgMHgzLCB3aGljaCBtZWFucyB0aGUgCmZpcnN0IGNoYW5uZWwgaXMgTEVGVCwg dGhlIHNlY29uZCBjaGFubmVsIGlzIFJJR0hULgoKUmVnYXJkcywKTWFydG9uCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5n IGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4v bGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwg b3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVu c3Vic2NyaWJlIi4K