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 26AA54A462 for ; Thu, 28 Mar 2024 09:33:13 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F351268D73A; Thu, 28 Mar 2024 11:33:10 +0200 (EET) Received: from mail-vk1-f176.google.com (mail-vk1-f176.google.com [209.85.221.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0DEDB68D71B for ; Thu, 28 Mar 2024 11:33:04 +0200 (EET) Received: by mail-vk1-f176.google.com with SMTP id 71dfb90a1353d-4d86ef290e0so408578e0c.1 for ; Thu, 28 Mar 2024 02:33:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711618382; x=1712223182; darn=ffmpeg.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=VSa0byiG7q6xJ+t+L73zM4sdtB9fRe0niWjWhViTlcU=; b=RETIw5czOpoyPl5I6+cTniKyZ0R/T+Bqf9elY38Vsq9iNV9gl8wO5Ly43azmi94E2z yF8IFbQjzYzo/AV1x2O1KRcG+dyyLSlotHcZl2hY96MPMejRWt6ToTFTRdSU12z2Hdij NH7DBv1Sskl65rdWlc9rbMMIRjkAlAfWBjGlTV+wSbd02jKI1qfjP9IfxByzBYNs+Mop YdPeesj2LbW0MYO3N/JjIrqvw39bKDkxmvGYsCtgxzRk4OWBQRzhFrdPvN8XFJ3mrn8R PUSJkEetcRqs//1W8KeuGxJLPoMxHkZREpj5tWT1zTbh+OEW+UGkDbCOi5o/x7dV1LxI ZtPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711618382; x=1712223182; h=cc: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=VSa0byiG7q6xJ+t+L73zM4sdtB9fRe0niWjWhViTlcU=; b=pBE62acTyZT4Ks7HaFlXJQnJK0mHdjUVnWHvEDtKsYhm6+lpOIc2hCU7aBQRsJfWDb /1nL4vS09JgF9d8h4y1/VhffSOMM+TrNjYBXZ4EMF+UX0k8jQ9inziBZJf19ZsXfrz0a FH6cJNWVFlpAnNrmAOVKJuuuVAClKUCBG/eIic1ZJ6CN6zI0IImwpFuCW3PfDm8ckQXQ IpQdhiPd0pfN8tUlmN9Jur63FfEp2ILBbnfw9U34vCnYy8CJyfU3EhJJ8H2wMQLAojqn UbJL/V8kKEXJnZe4DBdu6DbPtjCq72f7gs4XDD6z9LQ20TQ259TlOfFQZjyPiIwf0q6K NDVg== X-Gm-Message-State: AOJu0YzY+DYqtZKA8LTczKPzDRXkG3zG1mbAqVewJxO1jBBgWl7zPt8H XB+RSM7J+r9/4oENLYhqE0WNBHXP8mLYy5x87Dc38jaS9PbXQdfDjugVQvRxNur+zXe5TKQAcjY PXGeQQ01GqxuzL1W+6yWei9VyTNZ7QfFz X-Google-Smtp-Source: AGHT+IGOv1CTrWXh2uYQJxJdlEqUkGMmIGWbbzxDzb6W7ow6OCpqbT0sx68UsDQ52s7oHetoQVcMa/Eaxt8HGRPAkaM= X-Received: by 2002:a05:6122:3bc2:b0:4c8:2803:9468 with SMTP id ft2-20020a0561223bc200b004c828039468mr1046467vkb.3.1711618382437; Thu, 28 Mar 2024 02:33:02 -0700 (PDT) MIME-Version: 1.0 References: <20240327222145.601148-1-asoulier@google.com> <20240327222145.601148-3-asoulier@google.com> In-Reply-To: <20240327222145.601148-3-asoulier@google.com> From: Paul B Mahol Date: Thu, 28 Mar 2024 10:32:27 +0100 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 3/4] avformat/lc3: Add file format for LC3/LC3plus transport 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 Cc: Antoine Soulier 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: VGhpcyBmb3JtYXQgYWN0dWFsbHkgc3VwcG9ydHMgc2Vla2luZy4KClRoZSBwcm9wb3NlZCBzb2x1 dGlvbiBoZXJlIGlzIHN1Yi1vcHRpbWFsLgoKT24gV2VkLCBNYXIgMjcsIDIwMjQgYXQgMTE6MjLi gK9QTSBBbnRvaW5lIFNvdWxpZXIgdmlhIGZmbXBlZy1kZXZlbCA8CmZmbXBlZy1kZXZlbEBmZm1w ZWcub3JnPiB3cm90ZToKCj4gQSBmaWxlIGZvcm1hdCBpcyBkZXNjcmliZWQgaW4gQmx1ZXRvb3Ro IFNJRyBMQzMgYW5kIEVUU0kgVFMgMTAzIDYzNCwgZm9yCj4gdGVzdCBwdXJwb3NlLiBUaGlzIGlz IHRoZSBmb3JtYXQgaW1wbGVtZW50ZWQgaGVyZS4KPgo+IFNpZ25lZC1vZmYtYnk6IEFudG9pbmUg U291bGllciA8YXNvdWxpZXJAZ29vZ2xlLmNvbT4KPiAtLS0KPiAgZG9jL211eGVycy50ZXhpICAg ICAgICAgIHwgICA2ICsrCj4gIGxpYmF2Zm9ybWF0L01ha2VmaWxlICAgICB8ICAgMiArCj4gIGxp YmF2Zm9ybWF0L2FsbGZvcm1hdHMuYyB8ICAgMiArCj4gIGxpYmF2Zm9ybWF0L2xjM2RlYy5jICAg ICB8IDEzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgbGliYXZm b3JtYXQvbGMzZW5jLmMgICAgIHwgMTAyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g IDUgZmlsZXMgY2hhbmdlZCwgMjQ3IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGxpYmF2Zm9ybWF0L2xjM2RlYy5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZvcm1hdC9s YzNlbmMuYwo+Cj4gZGlmZiAtLWdpdCBhL2RvYy9tdXhlcnMudGV4aSBiL2RvYy9tdXhlcnMudGV4 aQo+IGluZGV4IGExMGE4ZTIxNmYuLjk2ODc3NDZjMzAgMTAwNjQ0Cj4gLS0tIGEvZG9jL211eGVy cy50ZXhpCj4gKysrIGIvZG9jL211eGVycy50ZXhpCj4gQEAgLTI2MTIsNiArMjYxMiwxMiBAQCBX ZWJEQVYgc2VydmVyIGV2ZXJ5IHNlY29uZDoKPiAgZmZtcGVnIC1mIHgxMWdyYWIgLWZyYW1lcmF0 ZSAxIC1pIDowLjAgLXE6diA2IC11cGRhdGUgMSAtcHJvdG9jb2xfb3B0cwo+IG1ldGhvZD1QVVQg aHR0cDovL2V4YW1wbGUuY29tL2Rlc2t0b3AuanBnCj4gIEBlbmQgZXhhbXBsZQo+Cj4gK0BzZWN0 aW9uIGxjMwo+ICtCbHVldG9vdGggU0lHIExvdyBDb21wbGV4aXR5IENvbW11bmljYXRpb24gQ29k ZWMgYXVkaW8gKExDMyksIG9yCj4gK0VUU0kgVFMgMTAzIDYzNCBMb3cgQ29tcGxleGl0eSBDb21t dW5pY2F0aW9uIENvZGVjIHBsdXMgKExDM3BsdXMpLgo+ICsKPiArVGhpcyBtdXhlciBhY2NlcHRz IGEgc2luZ2xlIEBjb2Rle2xjM30gYXVkaW8gc3RyZWFtLgo+ICsKPiAgQHNlY3Rpb24gbWF0cm9z a2EKPgo+ICBNYXRyb3NrYSBjb250YWluZXIgbXV4ZXIuCj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9y bWF0L01ha2VmaWxlIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiBpbmRleCA0NGFhNDg1MDI5Li40 OTYxYzQyODUyIDEwMDY0NAo+IC0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCj4gKysrIGIvbGli YXZmb3JtYXQvTWFrZWZpbGUKPiBAQCAtMzMyLDYgKzMzMiw4IEBAIE9CSlMtJChDT05GSUdfS1ZB R19ERU1VWEVSKSAgICAgICAgICAgICAgKz0ga3ZhZy5vCj4gIE9CSlMtJChDT05GSUdfS1ZBR19N VVhFUikgICAgICAgICAgICAgICAgKz0ga3ZhZy5vIHJhd2VuYy5vCj4gIE9CSlMtJChDT05GSUdf TEFGX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gbGFmZGVjLm8KPiAgT0JKUy0kKENPTkZJR19M QVRNX01VWEVSKSAgICAgICAgICAgICAgICArPSBsYXRtZW5jLm8gcmF3ZW5jLm8KPiArT0JKUy0k KENPTkZJR19MQzNfREVNVVhFUikgICAgICAgICAgICAgICArPSBsYzNkZWMubwo+ICtPQkpTLSQo Q09ORklHX0xDM19NVVhFUikgICAgICAgICAgICAgICAgICs9IGxjM2VuYy5vCj4gIE9CSlMtJChD T05GSUdfTE1MTTRfREVNVVhFUikgICAgICAgICAgICAgKz0gbG1sbTQubwo+ICBPQkpTLSQoQ09O RklHX0xPQVNfREVNVVhFUikgICAgICAgICAgICAgICs9IGxvYXNkZWMubyByYXdkZWMubwo+ICBP QkpTLSQoQ09ORklHX0xVT0RBVF9ERU1VWEVSKSAgICAgICAgICAgICs9IGx1b2RhdGRlYy5vCj4g ZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYyBiL2xpYmF2Zm9ybWF0L2FsbGZv cm1hdHMuYwo+IGluZGV4IGUxNWQwZmE2ZDcuLmUyMjUzNTRmYWYgMTAwNjQ0Cj4gLS0tIGEvbGli YXZmb3JtYXQvYWxsZm9ybWF0cy5jCj4gKysrIGIvbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jCj4g QEAgLTI1Miw2ICsyNTIsOCBAQCBleHRlcm4gY29uc3QgRkZJbnB1dEZvcm1hdCAgZmZfa3ZhZ19k ZW11eGVyOwo+ICBleHRlcm4gY29uc3QgRkZPdXRwdXRGb3JtYXQgZmZfa3ZhZ19tdXhlcjsKPiAg ZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX2xhZl9kZW11eGVyOwo+ICBleHRlcm4gY29u c3QgRkZPdXRwdXRGb3JtYXQgZmZfbGF0bV9tdXhlcjsKPiArZXh0ZXJuIGNvbnN0IEZGSW5wdXRG b3JtYXQgIGZmX2xjM19kZW11eGVyOwo+ICtleHRlcm4gY29uc3QgRkZPdXRwdXRGb3JtYXQgZmZf bGMzX211eGVyOwo+ICBleHRlcm4gY29uc3QgRkZJbnB1dEZvcm1hdCAgZmZfbG1sbTRfZGVtdXhl cjsKPiAgZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX2xvYXNfZGVtdXhlcjsKPiAgZXh0 ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX2x1b2RhdF9kZW11eGVyOwo+IGRpZmYgLS1naXQg YS9saWJhdmZvcm1hdC9sYzNkZWMuYyBiL2xpYmF2Zm9ybWF0L2xjM2RlYy5jCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi45Y2E5ODI1ZjFiCj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL2xpYmF2Zm9ybWF0L2xjM2RlYy5jCj4gQEAgLTAsMCArMSwxMzUgQEAKPiArLyoK PiArICogTEMzIGRlbXV4ZXIKPiArICogQ29weXJpZ2h0IChDKSAyMDI0ICBBbnRvaW5lIFNvdWxp ZXIgPGFzb3VsaWVyQGdvb2dsZS5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEZGbXBlZy4KPiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBv ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiAr ICoKPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiAr ICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BCj4gMDIxMTAtMTMwMSBVU0EKPiArICovCj4gKwo+ICsvKioKPiAr ICogQGZpbGUKPiArICogQmFzZWQgb24gdGhlIGZpbGUgZm9ybWF0IHNwZWNpZmllZCBieSA6Cj4g KyAqCj4gKyAqIC0gQmx1ZXRvb3RoIFNJRyAtIExvdyBDb21wbGV4aXR5IENvbW11bmljYXRpb24g Q29kZWMgVGVzdCBTdWl0ZQo+ICsgKgo+IGh0dHBzOi8vd3d3LmJsdWV0b290aC5vcmcvZG9jbWFu L2hhbmRsZXJzL2Rvd25sb2FkZG9jLmFzaHg/ZG9jX2lkPTUwMjMwMQo+ICsgKiAgIDMuMi44LjIg UmVmZXJlbmNlIExDMyBDb2RlYyBCaXRzdHJlYW0gRm9ybWF0Cj4gKyAqCj4gKyAqIC0gRVRTSSBU SSAxMDMgNjM0IFYxLjQuMSAtIExvdyBDb21wbGV4aXR5IENvbW11bmljYXRpb24gQ29kZWMgcGx1 cwo+ICsgKgo+IGh0dHBzOi8vd3d3LmV0c2kub3JnL2RlbGl2ZXIvZXRzaV90cy8xMDM2MDBfMTAz Njk5LzEwMzYzNC8wMS4wNC4wMV82MC90c18xMDM2MzR2MDEwNDAxcC5wZGYKPiArICogICBMQzNw bHVzIGNvbmZvcm1hbmNlIHNjcmlwdCBwYWNrYWdlCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImxp YmF2Y29kZWMvcGFja2V0LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgi Cj4gKwo+ICsjaW5jbHVkZSAiYXZmb3JtYXQuaCIKPiArI2luY2x1ZGUgImF2aW8uaCIKPiArI2lu Y2x1ZGUgImRlbXV4LmgiCj4gKyNpbmNsdWRlICJpbnRlcm5hbC5oIgo+ICsKPiArdHlwZWRlZiBz dHJ1Y3QgTEMzRGVtdXhDb250ZXh0IHsKPiArICAgIGludCBmcmFtZV9zYW1wbGVzOwo+ICsgICAg aW50NjRfdCBwb3NpdGlvbjsKPiArICAgIGludDY0X3QgbGVuZ3RoOwo+ICt9IExDM0RlbXV4Q29u dGV4dDsKPiArCj4gK3N0YXRpYyBpbnQgbGMzX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAq cykKPiArewo+ICsgICAgTEMzRGVtdXhDb250ZXh0ICpsYzMgPSBzLT5wcml2X2RhdGE7Cj4gKyAg ICBBVlN0cmVhbSAqc3QgPSBOVUxMOwo+ICsgICAgdWludDE2X3QgdGFnLCBoZHJfc2l6ZTsKPiAr ICAgIHVpbnQxNl90IGZyYW1lX3VzOwo+ICsgICAgdWludDMyX3QgbGVuZ3RoOwo+ICsgICAgaW50 IGVwX21vZGUsIGhyX21vZGU7Cj4gKyAgICBpbnQgc3JhdGVfaHosIGNoYW5uZWxzLCBiaXRfcmF0 ZTsKPiArICAgIGludCBudW1fZXh0cmFfcGFyYW1zLCByZXQ7Cj4gKwo+ICsgICAgdGFnID0gYXZp b19yYjE2KHMtPnBiKTsKPiArICAgIGhkcl9zaXplID0gYXZpb19ybDE2KHMtPnBiKTsKPiArCj4g KyAgICBpZiAodGFnICE9IDB4MWNjYyB8fCBoZHJfc2l6ZSA8IDkgKiBzaXplb2YodWludDE2X3Qp KQo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsKPiArICAgIG51bV9l eHRyYV9wYXJhbXMgPSBoZHJfc2l6ZSAvIHNpemVvZih1aW50MTZfdCkgLSA5Owo+ICsKPiArICAg IHNyYXRlX2h6ID0gYXZpb19ybDE2KHMtPnBiKSAqIDEwMDsKPiArICAgIGJpdF9yYXRlID0gYXZp b19ybDE2KHMtPnBiKSAqIDEwMDsKPiArICAgIGNoYW5uZWxzID0gYXZpb19ybDE2KHMtPnBiKTsK PiArICAgIGZyYW1lX3VzID0gYXZpb19ybDE2KHMtPnBiKSAqIDEwOwo+ICsgICAgZXBfbW9kZSAg PSBhdmlvX3JsMTYocy0+cGIpICE9IDA7Cj4gKyAgICBsZW5ndGggICA9IGF2aW9fcmwzMihzLT5w Yik7Cj4gKyAgICBocl9tb2RlICA9IG51bV9leHRyYV9wYXJhbXMgPj0gMSAmJiBhdmlvX3JsMTYo cy0+cGIpOwo+ICsKPiArICAgIHN0ID0gYXZmb3JtYXRfbmV3X3N0cmVhbShzLCBOVUxMKTsKPiAr ICAgIGlmICghc3QpCj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArCj4gKyAg ICBhdnByaXZfc2V0X3B0c19pbmZvKHN0LCAzMiwgMSwgc3JhdGVfaHopOwo+ICsgICAgc3QtPmR1 cmF0aW9uID0gbGVuZ3RoOwo+ICsKPiArICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9IEFW TUVESUFfVFlQRV9BVURJTzsKPiArICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBBVl9DT0RF Q19JRF9MQzM7Cj4gKyAgICBzdC0+Y29kZWNwYXItPnNhbXBsZV9yYXRlID0gc3JhdGVfaHo7Cj4g KyAgICBzdC0+Y29kZWNwYXItPmJpdF9yYXRlID0gYml0X3JhdGU7Cj4gKyAgICBzdC0+Y29kZWNw YXItPmNoX2xheW91dC5uYl9jaGFubmVscyA9IGNoYW5uZWxzOwo+ICsKPiArICAgIGlmICgocmV0 ID0gZmZfYWxsb2NfZXh0cmFkYXRhKHN0LT5jb2RlY3BhciwgNikpIDwgMCkgewo+ICsgICAgICAg IGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJDb3VsZCBub3QgYWxsb2NhdGUgZXh0cmFkYXRhXG4i KTsKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgfQo+ICsKPiArICAgIEFWX1dMMTYoc3Qt PmNvZGVjcGFyLT5leHRyYWRhdGEgKyAwLCBmcmFtZV91cyk7Cj4gKyAgICBBVl9XTDE2KHN0LT5j b2RlY3Bhci0+ZXh0cmFkYXRhICsgMiwgZXBfbW9kZSk7Cj4gKyAgICBBVl9XTDE2KHN0LT5jb2Rl Y3Bhci0+ZXh0cmFkYXRhICsgNCwgaHJfbW9kZSk7Cj4gKwo+ICsgICAgbGMzLT5mcmFtZV9zYW1w bGVzID0gYXZfcmVzY2FsZShmcmFtZV91cywgc3JhdGVfaHosIDEwMDAqMTAwMCk7Cj4gKwo+ICsg ICAgbGMzLT5wb3NpdGlvbiA9IDA7Cj4gKyAgICBsYzMtPmxlbmd0aCA9IHN0LT5kdXJhdGlvbiAr Cj4gKyAgICAgICAgYXZfcmVzY2FsZShmcmFtZV91cyA9PSA3NTAwID8gNDAwMCA6IDI1MDAsIHNy YXRlX2h6LCAxMDAwKjEwMDApOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IGxjM19yZWFkX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3Qp Cj4gK3sKPiArICAgIExDM0RlbXV4Q29udGV4dCAqbGMzID0gcy0+cHJpdl9kYXRhOwo+ICsgICAg QVZJT0NvbnRleHQgKnBiID0gcy0+cGI7Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAgIHJldCA9 IGF2X2dldF9wYWNrZXQocy0+cGIsIHBrdCwgYXZpb19ybDE2KHBiKSk7Cj4gKyAgICBpZiAocmV0 IDwgMCkKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgIHBrdC0+ZHVyYXRpb24gPSBs YzMtPmZyYW1lX3NhbXBsZXM7Cj4gKyAgICBsYzMtPnBvc2l0aW9uICs9IGxjMy0+ZnJhbWVfc2Ft cGxlczsKPiArICAgIGlmIChsYzMtPnBvc2l0aW9uID4gbGMzLT5sZW5ndGgpIHsKPiArICAgICAg ICBwa3QtPmR1cmF0aW9uIC09IGxjMy0+cG9zaXRpb24gLSBsYzMtPmxlbmd0aDsKPiArICAgICAg ICBsYzMtPnBvc2l0aW9uID0gbGMzLT5sZW5ndGg7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJu IDA7Cj4gK30KPiArCj4gK2NvbnN0IEZGSW5wdXRGb3JtYXQgZmZfbGMzX2RlbXV4ZXIgPSB7Cj4g KyAgICAucC5uYW1lICAgICAgICAgPSAibGMzIiwKPiArICAgIC5wLmxvbmdfbmFtZSAgICA9IE5V TExfSUZfQ09ORklHX1NNQUxMKCJMQzMgKExvdyBDb21wbGV4aXR5Cj4gQ29tbXVuaWNhdGlvbiBD b2RlYykiKSwKPiArICAgIC5wLmV4dGVuc2lvbnMgICA9ICJsYzMiLAo+ICsgICAgLnAuZmxhZ3Mg ICAgICAgID0gQVZGTVRfTk9CSU5TRUFSQ0ggfCBBVkZNVF9OT0dFTlNFQVJDSCB8Cj4gQVZGTVRf Tk9fQllURV9TRUVLIHwgQVZGTVRfTk9USU1FU1RBTVBTLAo+ICsgICAgLnByaXZfZGF0YV9zaXpl ID0gc2l6ZW9mKExDM0RlbXV4Q29udGV4dCksCj4gKyAgICAucmVhZF9oZWFkZXIgICAgPSBsYzNf cmVhZF9oZWFkZXIsCj4gKyAgICAucmVhZF9wYWNrZXQgICAgPSBsYzNfcmVhZF9wYWNrZXQsCj4g K307Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2xjM2VuYy5jIGIvbGliYXZmb3JtYXQvbGMz ZW5jLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLmE3ZTNlM2Y0 ZjcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliYXZmb3JtYXQvbGMzZW5jLmMKPiBAQCAtMCww ICsxLDEwMiBAQAo+ICsvKgo+ICsgKiBMQzMgbXV4ZXIKPiArICogQ29weXJpZ2h0IChDKSAyMDI0 ICBBbnRvaW5lIFNvdWxpZXIgPGFzb3VsaWVyQGdvb2dsZS5jb20+Cj4gKyAqCj4gKyAqIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsg KiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAq IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4g KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCj4gMDIxMTAtMTMwMSBVU0EKPiArICov Cj4gKwo+ICsvKioKPiArICogQGZpbGUKPiArICogQmFzZWQgb24gdGhlIGZpbGUgZm9ybWF0IHNw ZWNpZmllZCBieSA6Cj4gKyAqCj4gKyAqIC0gQmx1ZXRvb3RoIFNJRyAtIExvdyBDb21wbGV4aXR5 IENvbW11bmljYXRpb24gQ29kZWMgVGVzdCBTdWl0ZQo+ICsgKgo+IGh0dHBzOi8vd3d3LmJsdWV0 b290aC5vcmcvZG9jbWFuL2hhbmRsZXJzL2Rvd25sb2FkZG9jLmFzaHg/ZG9jX2lkPTUwMjMwMQo+ ICsgKiAgIDMuMi44LjIgUmVmZXJlbmNlIExDMyBDb2RlYyBCaXRzdHJlYW0gRm9ybWF0Cj4gKyAq Cj4gKyAqIC0gRVRTSSBUSSAxMDMgNjM0IFYxLjQuMSAtIExvdyBDb21wbGV4aXR5IENvbW11bmlj YXRpb24gQ29kZWMgcGx1cwo+ICsgKgo+IGh0dHBzOi8vd3d3LmV0c2kub3JnL2RlbGl2ZXIvZXRz aV90cy8xMDM2MDBfMTAzNjk5LzEwMzYzNC8wMS4wNC4wMV82MC90c18xMDM2MzR2MDEwNDAxcC5w ZGYKPiArICogICBMQzNwbHVzIGNvbmZvcm1hbmNlIHNjcmlwdCBwYWNrYWdlCj4gKyAqLwo+ICsK PiArI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRyZWFkd3JpdGUuaCIKPiArCj4gKyNpbmNsdWRlICJh dmZvcm1hdC5oIgo+ICsjaW5jbHVkZSAiYXZpby5oIgo+ICsjaW5jbHVkZSAibXV4LmgiCj4gKyNp bmNsdWRlICJpbnRlcm5hbC5oIgo+ICsKPiArc3RhdGljIGF2X2NvbGQgaW50IGxjM19pbml0KEFW Rm9ybWF0Q29udGV4dCAqcykKPiArewo+ICsgICAgaWYgKHMtPm5iX3N0cmVhbXMgIT0gMSkgewo+ ICsgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJUaGlzIG11eGVyIG9ubHkgc3VwcG9y dHMgYSBzaW5nbGUKPiBzdHJlYW0uXG4iKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5W QUwpOwo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IGxjM193cml0ZV9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQo+ICt7Cj4gKyAgICBBVlN0cmVh bSAqc3QgPSBzLT5zdHJlYW1zWzBdOwo+ICsgICAgaW50IGNoYW5uZWxzID0gc3QtPmNvZGVjcGFy LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7Cj4gKyAgICBpbnQgc3JhdGVfaHogPSBzdC0+Y29kZWNw YXItPnNhbXBsZV9yYXRlOwo+ICsgICAgaW50IGJpdF9yYXRlID0gc3QtPmNvZGVjcGFyLT5iaXRf cmF0ZTsKPiArICAgIHVpbnQxNl90IGZyYW1lX3VzID0gMTAwMDA7Cj4gKyAgICBpbnQgZXBfbW9k ZSA9IDAsIGhyX21vZGUgPSAwOwo+ICsgICAgdWludDMyX3QgbmJfc2FtcGxlcyA9IGF2X3Jlc2Nh bGVfcSgKPiArICAgICAgICBzdC0+ZHVyYXRpb24sIHN0LT50aW1lX2Jhc2UsIChBVlJhdGlvbmFs KXsgMSwgc3JhdGVfaHogfSk7Cj4gKwo+ICsgICAgaWYgKHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRh X3NpemUgPj0gMikKPiArICAgICAgICBmcmFtZV91cyA9IEFWX1JMMTYoc3QtPmNvZGVjcGFyLT5l eHRyYWRhdGEgKyAwKTsKPiArCj4gKyAgICBpZiAoc3QtPmNvZGVjcGFyLT5leHRyYWRhdGFfc2l6 ZSA+PSA2KSB7Cj4gKyAgICAgICAgZXBfbW9kZSA9IEFWX1JMMTYoc3QtPmNvZGVjcGFyLT5leHRy YWRhdGEgKyAyKTsKPiArICAgICAgICBocl9tb2RlID0gQVZfUkwxNihzdC0+Y29kZWNwYXItPmV4 dHJhZGF0YSArIDQpOwo+ICsgICAgfQo+ICsKPiArICAgIGF2aW9fd2IxNihzLT5wYiwgMHgxY2Nj KTsKPiArICAgIGF2aW9fd2wxNihzLT5wYiwgKDkgKyBocl9tb2RlKSAqIHNpemVvZih1aW50MTZf dCkpOwo+ICsgICAgYXZpb193bDE2KHMtPnBiLCBzcmF0ZV9oeiAvIDEwMCk7Cj4gKyAgICBhdmlv X3dsMTYocy0+cGIsIGJpdF9yYXRlIC8gMTAwKTsKPiArICAgIGF2aW9fd2wxNihzLT5wYiwgY2hh bm5lbHMpOwo+ICsgICAgYXZpb193bDE2KHMtPnBiLCBmcmFtZV91cyAvIDEwKTsKPiArICAgIGF2 aW9fd2wxNihzLT5wYiwgZXBfbW9kZSk7Cj4gKyAgICBhdmlvX3dsMzIocy0+cGIsIG5iX3NhbXBs ZXMpOwo+ICsgICAgaWYgKGhyX21vZGUpCj4gKyAgICAgICAgYXZpb193bDE2KHMtPnBiLCBocl9t b2RlKTsKPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBsYzNfd3Jp dGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKPiArewo+ICsgICAg YXZpb193bDE2KHMtPnBiLCBwa3QtPnNpemUpOwo+ICsgICAgYXZpb193cml0ZShzLT5wYiwgcGt0 LT5kYXRhLCBwa3QtPnNpemUpOwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK2NvbnN0IEZG T3V0cHV0Rm9ybWF0IGZmX2xjM19tdXhlciA9IHsKPiArICAgIC5wLm5hbWUgICAgICAgID0gImxj MyIsCj4gKyAgICAucC5sb25nX25hbWUgICA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJMQzMgKExv dyBDb21wbGV4aXR5Cj4gQ29tbXVuaWNhdGlvbiBDb2RlYykiKSwKPiArICAgIC5wLmV4dGVuc2lv bnMgID0gImxjMyIsCj4gKyAgICAucC5hdWRpb19jb2RlYyA9IEFWX0NPREVDX0lEX0xDMywKPiAr ICAgIC5wLnZpZGVvX2NvZGVjID0gQVZfQ09ERUNfSURfTk9ORSwKPiArICAgIC5wLmZsYWdzICAg ICAgID0gQVZGTVRfTk9USU1FU1RBTVBTLAo+ICsgICAgLmluaXQgICAgICAgICAgPSBsYzNfaW5p dCwKPiArICAgIC53cml0ZV9oZWFkZXIgID0gbGMzX3dyaXRlX2hlYWRlciwKPiArICAgIC53cml0 ZV9wYWNrZXQgID0gbGMzX3dyaXRlX3BhY2tldCwKPiArfTsKPiAtLQo+IDIuNDQuMC40NzguZ2Q5 MjYzOTllZjktZ29vZwo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZmZtcGVnLWRldmVsQGZmbXBl Zy5vcmcKPiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwK Pgo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+IGZmbXBlZy1k ZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCj4KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVs IG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcv bWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5r IGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3Vi amVjdCAidW5zdWJzY3JpYmUiLgo=