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 17B4248EA3 for ; Sat, 30 Mar 2024 11:46:09 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 534CF68D3B4; Sat, 30 Mar 2024 13:46:08 +0200 (EET) Received: from mail-vs1-f45.google.com (mail-vs1-f45.google.com [209.85.217.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5DEAB68D280 for ; Sat, 30 Mar 2024 13:46:01 +0200 (EET) Received: by mail-vs1-f45.google.com with SMTP id ada2fe7eead31-4765cffb446so839278137.0 for ; Sat, 30 Mar 2024 04:46:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711799159; x=1712403959; 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=TKoV8+BIiHDyLzD1Koj6ZcBGHyrw2e8uheFTAbYsm70=; b=aChee8k6rFqUjvHyTPFRYoC3UzyLv7kCANMTky8NOxWigKi93fRgrUW2651YFjI0M6 u9v1JjuT+an1HoJfGxPcL1ZMkZ/koDdxBWLrkRnbeQODHYhYmSAr0Hkidhxp+QpAK0mX +NMdx+v0P8k24Amf22v8kPEfPKB8r7VUWQywdMYJWBP/yGgqQJtqljN78UsOAKwFg4j3 2+khEGh7Rn1RPgPs7p1ou6WauXvasFP3zFmNgLNxWBT8+cGt7XjmJmjebRolYVLd3o0C FU03fgcQaCkYhb3A3Z6hX8MKYCXEnqGe0qAeuVtjEmX2W9CVZz4wClOfjIHGx9b2QGs8 9cmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711799159; x=1712403959; 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=TKoV8+BIiHDyLzD1Koj6ZcBGHyrw2e8uheFTAbYsm70=; b=bZHSqXwQvEbiFQKPkvXJxe0Ivj1OrqbhOLJW8A1L6WMnyDI4HxDHR62YLBZPVjqI4b hN0PZliNES10QTJZQJTs84lhH6MPYhawUOFnZvRG6FPLEyhrCAMVa0Y0MOcDuYD3riDW qgulYmQpeqjewhtcAOkC5r3BY0PZD4GEvQj3maiaEvHWn7fkieZyXJYWtTWZTh3Y+bMo KlHDr63DzwAtrk8U9ndn9skJSpZ+29Tf3d1OJcI02yUXi2FiRvEDpkbCSKh3CjAuHrsu 09Ybpx/R3JjvuxIb8J8oaBe7Db7soI7MU51oPrR/0eWcUUGs2foLpcW9kRm0ayWZyNHN Ai1A== X-Gm-Message-State: AOJu0YxXB6pKIeOaLdGe/6gIn+ApjI3Io9NTYaTInL8kq6enpkRR+2kS gjORP4QsJ+NTkmCDzUmohIYJ5aXMJw7Q5JxGuj1uJDlP2Xug6mwV06tf5KIyh6IfMofOnyBnO26 0EvBkdxDakAeJ2oPC8UwTkpxisHhPkOuR X-Google-Smtp-Source: AGHT+IEHVVjoGxRFUKrJ9qpkIkW0wIUSwUQWtDsSFegUojq5MZi2C24WMl5p45MscA27o9d5C8cehhZ205S+19JXizI= X-Received: by 2002:a05:6122:586:b0:4d3:3878:a523 with SMTP id i6-20020a056122058600b004d33878a523mr2842806vko.12.1711799159343; Sat, 30 Mar 2024 04:45:59 -0700 (PDT) MIME-Version: 1.0 References: <20240329173032.1122372-1-asoulier@google.com> <20240329173032.1122372-2-asoulier@google.com> In-Reply-To: <20240329173032.1122372-2-asoulier@google.com> From: Paul B Mahol Date: Sat, 30 Mar 2024 12:45:22 +0100 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 2/2] 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: T24gRnJpLCBNYXIgMjksIDIwMjQgYXQgNjozMOKAr1BNIEFudG9pbmUgU291bGllciB2aWEgZmZt cGVnLWRldmVsIDwKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+IHdyb3RlOgoKPiBBIGZpbGUgZm9y bWF0IGlzIGRlc2NyaWJlZCBpbiBCbHVldG9vdGggU0lHIExDMyBhbmQgRVRTSSBUUyAxMDMgNjM0 LCBmb3IKPiB0ZXN0IHB1cnBvc2UuIFRoaXMgaXMgdGhlIGZvcm1hdCBpbXBsZW1lbnRlZCBoZXJl Lgo+Cj4gU2lnbmVkLW9mZi1ieTogQW50b2luZSBTb3VsaWVyIDxhc291bGllckBnb29nbGUuY29t Pgo+IC0tLQo+ICBDaGFuZ2Vsb2cgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICBkb2MvbXV4ZXJz LnRleGkgICAgICAgICAgfCAgIDYgKysKPiAgbGliYXZmb3JtYXQvTWFrZWZpbGUgICAgIHwgICAy ICsKPiAgbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jIHwgICAyICsKPiAgbGliYXZmb3JtYXQvbGMz ZGVjLmMgICAgIHwgMTY0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ ICBsaWJhdmZvcm1hdC9sYzNlbmMuYyAgICAgfCAxMDAgKysrKysrKysrKysrKysrKysrKysrKysr Cj4gIDYgZmlsZXMgY2hhbmdlZCwgMjc1IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGxpYmF2Zm9ybWF0L2xjM2RlYy5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZvcm1h dC9sYzNlbmMuYwo+Cj4gZGlmZiAtLWdpdCBhL0NoYW5nZWxvZyBiL0NoYW5nZWxvZwo+IGluZGV4 IDgzYTRjZjc4ODguLjA4YzIwMGE0MWQgMTAwNjQ0Cj4gLS0tIGEvQ2hhbmdlbG9nCj4gKysrIGIv Q2hhbmdlbG9nCj4gQEAgLTIsNiArMiw3IEBAIEVudHJpZXMgYXJlIHNvcnRlZCBjaHJvbm9sb2dp Y2FsbHkgZnJvbSBvbGRlc3QgdG8geW91bmdlc3QKPiB3aXRoaW4gZWFjaCByZWxlYXNlLAo+ICBy ZWxlYXNlcyBhcmUgc29ydGVkIGZyb20geW91bmdlc3QgdG8gb2xkZXN0Lgo+Cj4gIHZlcnNpb24g PG5leHQ+Ogo+ICstIExDMy9MQzNwbHVzIGRlbXV4ZXIgYW5kIG11eGVyCj4gIC0gTEMzL0xDM3Bs dXMgZGVjb2RpbmcvZW5jb2RpbmcgdXNpbmcgZXh0ZXJuYWwgbGlicmFyeSBsaWJsYzMKPgo+Cj4g ZGlmZiAtLWdpdCBhL2RvYy9tdXhlcnMudGV4aSBiL2RvYy9tdXhlcnMudGV4aQo+IGluZGV4IGEx MGE4ZTIxNmYuLjk2ODc3NDZjMzAgMTAwNjQ0Cj4gLS0tIGEvZG9jL211eGVycy50ZXhpCj4gKysr IGIvZG9jL211eGVycy50ZXhpCj4gQEAgLTI2MTIsNiArMjYxMiwxMiBAQCBXZWJEQVYgc2VydmVy IGV2ZXJ5IHNlY29uZDoKPiAgZmZtcGVnIC1mIHgxMWdyYWIgLWZyYW1lcmF0ZSAxIC1pIDowLjAg LXE6diA2IC11cGRhdGUgMSAtcHJvdG9jb2xfb3B0cwo+IG1ldGhvZD1QVVQgaHR0cDovL2V4YW1w bGUuY29tL2Rlc2t0b3AuanBnCj4gIEBlbmQgZXhhbXBsZQo+Cj4gK0BzZWN0aW9uIGxjMwo+ICtC bHVldG9vdGggU0lHIExvdyBDb21wbGV4aXR5IENvbW11bmljYXRpb24gQ29kZWMgYXVkaW8gKExD MyksIG9yCj4gK0VUU0kgVFMgMTAzIDYzNCBMb3cgQ29tcGxleGl0eSBDb21tdW5pY2F0aW9uIENv ZGVjIHBsdXMgKExDM3BsdXMpLgo+ICsKPiArVGhpcyBtdXhlciBhY2NlcHRzIGEgc2luZ2xlIEBj b2Rle2xjM30gYXVkaW8gc3RyZWFtLgo+ICsKPiAgQHNlY3Rpb24gbWF0cm9za2EKPgo+ICBNYXRy b3NrYSBjb250YWluZXIgbXV4ZXIuCj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L01ha2VmaWxl IGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiBpbmRleCA0NGFhNDg1MDI5Li40OTYxYzQyODUyIDEw MDY0NAo+IC0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCj4gKysrIGIvbGliYXZmb3JtYXQvTWFr ZWZpbGUKPiBAQCAtMzMyLDYgKzMzMiw4IEBAIE9CSlMtJChDT05GSUdfS1ZBR19ERU1VWEVSKSAg ICAgICAgICAgICAgKz0ga3ZhZy5vCj4gIE9CSlMtJChDT05GSUdfS1ZBR19NVVhFUikgICAgICAg ICAgICAgICAgKz0ga3ZhZy5vIHJhd2VuYy5vCj4gIE9CSlMtJChDT05GSUdfTEFGX0RFTVVYRVIp ICAgICAgICAgICAgICAgKz0gbGFmZGVjLm8KPiAgT0JKUy0kKENPTkZJR19MQVRNX01VWEVSKSAg ICAgICAgICAgICAgICArPSBsYXRtZW5jLm8gcmF3ZW5jLm8KPiArT0JKUy0kKENPTkZJR19MQzNf REVNVVhFUikgICAgICAgICAgICAgICArPSBsYzNkZWMubwo+ICtPQkpTLSQoQ09ORklHX0xDM19N VVhFUikgICAgICAgICAgICAgICAgICs9IGxjM2VuYy5vCj4gIE9CSlMtJChDT05GSUdfTE1MTTRf REVNVVhFUikgICAgICAgICAgICAgKz0gbG1sbTQubwo+ICBPQkpTLSQoQ09ORklHX0xPQVNfREVN VVhFUikgICAgICAgICAgICAgICs9IGxvYXNkZWMubyByYXdkZWMubwo+ICBPQkpTLSQoQ09ORklH X0xVT0RBVF9ERU1VWEVSKSAgICAgICAgICAgICs9IGx1b2RhdGRlYy5vCj4gZGlmZiAtLWdpdCBh L2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYyBiL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYwo+IGlu ZGV4IDlkZjQyYmI4N2EuLjBiMzZhN2MzZWIgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmb3JtYXQvYWxs Zm9ybWF0cy5jCj4gKysrIGIvbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jCj4gQEAgLTI1Miw2ICsy NTIsOCBAQCBleHRlcm4gY29uc3QgRkZJbnB1dEZvcm1hdCAgZmZfa3ZhZ19kZW11eGVyOwo+ICBl eHRlcm4gY29uc3QgRkZPdXRwdXRGb3JtYXQgZmZfa3ZhZ19tdXhlcjsKPiAgZXh0ZXJuIGNvbnN0 IEZGSW5wdXRGb3JtYXQgIGZmX2xhZl9kZW11eGVyOwo+ICBleHRlcm4gY29uc3QgRkZPdXRwdXRG b3JtYXQgZmZfbGF0bV9tdXhlcjsKPiArZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX2xj M19kZW11eGVyOwo+ICtleHRlcm4gY29uc3QgRkZPdXRwdXRGb3JtYXQgZmZfbGMzX211eGVyOwo+ ICBleHRlcm4gY29uc3QgRkZJbnB1dEZvcm1hdCAgZmZfbG1sbTRfZGVtdXhlcjsKPiAgZXh0ZXJu IGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX2xvYXNfZGVtdXhlcjsKPiAgZXh0ZXJuIGNvbnN0IEZG SW5wdXRGb3JtYXQgIGZmX2x1b2RhdF9kZW11eGVyOwo+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1h dC9sYzNkZWMuYyBiL2xpYmF2Zm9ybWF0L2xjM2RlYy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwMDAwLi43NGQ2Nzk0ZDAwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xp YmF2Zm9ybWF0L2xjM2RlYy5jCj4gQEAgLTAsMCArMSwxNjQgQEAKPiArLyoKPiArICogTEMzIGRl bXV4ZXIKPiArICogQ29weXJpZ2h0IChDKSAyMDI0ICBBbnRvaW5lIFNvdWxpZXIgPGFzb3VsaWVy QGdvb2dsZS5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiAr ICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZt cGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4g KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBh bG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsg KiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0 b24sIE1BCj4gMDIxMTAtMTMwMSBVU0EKPiArICovCj4gKwo+ICsvKioKPiArICogQGZpbGUKPiAr ICogQmFzZWQgb24gdGhlIGZpbGUgZm9ybWF0IHNwZWNpZmllZCBieSA6Cj4gKyAqCj4gKyAqIC0g Qmx1ZXRvb3RoIFNJRyAtIExvdyBDb21wbGV4aXR5IENvbW11bmljYXRpb24gQ29kZWMgVGVzdCBT dWl0ZQo+ICsgKgo+IGh0dHBzOi8vd3d3LmJsdWV0b290aC5vcmcvZG9jbWFuL2hhbmRsZXJzL2Rv d25sb2FkZG9jLmFzaHg/ZG9jX2lkPTUwMjMwMQo+ICsgKiAgIDMuMi44LjIgUmVmZXJlbmNlIExD MyBDb2RlYyBCaXRzdHJlYW0gRm9ybWF0Cj4gKyAqCj4gKyAqIC0gRVRTSSBUSSAxMDMgNjM0IFYx LjQuMSAtIExvdyBDb21wbGV4aXR5IENvbW11bmljYXRpb24gQ29kZWMgcGx1cwo+ICsgKgo+IGh0 dHBzOi8vd3d3LmV0c2kub3JnL2RlbGl2ZXIvZXRzaV90cy8xMDM2MDBfMTAzNjk5LzEwMzYzNC8w MS4wNC4wMV82MC90c18xMDM2MzR2MDEwNDAxcC5wZGYKPiArICogICBMQzNwbHVzIGNvbmZvcm1h bmNlIHNjcmlwdCBwYWNrYWdlCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImxpYmF2Y29kZWMvcGFj a2V0LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCj4gKwo+ICsjaW5j bHVkZSAiYXZmb3JtYXQuaCIKPiArI2luY2x1ZGUgImF2aW8uaCIKPiArI2luY2x1ZGUgImRlbXV4 LmgiCj4gKyNpbmNsdWRlICJpbnRlcm5hbC5oIgo+ICsKPiArdHlwZWRlZiBzdHJ1Y3QgTEMzRGVt dXhDb250ZXh0IHsKPiArICAgIGludCBkdCwgZGVsYXk7Cj4gKyAgICBpbnQ2NF90IHRpbWVzdGFt cDsKPiArICAgIGludDY0X3QgbGVuZ3RoOwo+ICt9IExDM0RlbXV4Q29udGV4dDsKPiArCj4gK3N0 YXRpYyBpbnQgbGMzX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKPiArewo+ICsgICAg TEMzRGVtdXhDb250ZXh0ICpsYzMgPSBzLT5wcml2X2RhdGE7Cj4gKyAgICBBVlN0cmVhbSAqc3Qg PSBOVUxMOwo+ICsgICAgdWludDE2X3QgdGFnLCBoZHJfc2l6ZTsKPiArICAgIHVpbnQxNl90IGZy YW1lXzEwdXM7Cj4gKyAgICB1aW50MzJfdCBsZW5ndGg7Cj4gKyAgICBpbnQgZXBfbW9kZSwgaHJf bW9kZTsKPiArICAgIGludCBzcmF0ZV9oeiwgY2hhbm5lbHMsIGJpdF9yYXRlOwo+ICsgICAgaW50 IG51bV9leHRyYV9wYXJhbXMsIHJldDsKPiArCj4gKyAgICB0YWcgPSBhdmlvX3JiMTYocy0+cGIp Owo+ICsgICAgaGRyX3NpemUgPSBhdmlvX3JsMTYocy0+cGIpOwo+ICsKPiArICAgIGlmICh0YWcg IT0gMHgxY2NjIHx8IGhkcl9zaXplIDwgOSAqIHNpemVvZih1aW50MTZfdCkpCj4gKyAgICAgICAg cmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKwo+ICsgICAgbnVtX2V4dHJhX3BhcmFtcyA9 IGhkcl9zaXplIC8gc2l6ZW9mKHVpbnQxNl90KSAtIDk7Cj4gKwo+ICsgICAgc3JhdGVfaHogICA9 IGF2aW9fcmwxNihzLT5wYikgKiAxMDA7Cj4gKyAgICBiaXRfcmF0ZSAgID0gYXZpb19ybDE2KHMt PnBiKSAqIDEwMDsKPiArICAgIGNoYW5uZWxzICAgPSBhdmlvX3JsMTYocy0+cGIpOwo+ICsgICAg ZnJhbWVfMTB1cyA9IGF2aW9fcmwxNihzLT5wYik7Cj4gKyAgICBlcF9tb2RlICAgID0gYXZpb19y bDE2KHMtPnBiKSAhPSAwOwo+ICsgICAgbGVuZ3RoICAgICA9IGF2aW9fcmwzMihzLT5wYik7Cj4g KyAgICBocl9tb2RlICAgID0gbnVtX2V4dHJhX3BhcmFtcyA+PSAxICYmIGF2aW9fcmwxNihzLT5w Yik7Cj4gKwo+ICsgICAgc3QgPSBhdmZvcm1hdF9uZXdfc3RyZWFtKHMsIE5VTEwpOwo+ICsgICAg aWYgKCFzdCkKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ICsKPiArICAgIGF2 cHJpdl9zZXRfcHRzX2luZm8oc3QsIDY0LCAxLCBzcmF0ZV9oeik7Cj4gKyAgICBzdC0+c3RhcnRf dGltZSA9IDA7Cj4gKyAgICBzdC0+ZHVyYXRpb24gPSBsZW5ndGg7Cj4gKwo+ICsgICAgc3QtPmNv ZGVjcGFyLT5jb2RlY190eXBlID0gQVZNRURJQV9UWVBFX0FVRElPOwo+ICsgICAgc3QtPmNvZGVj cGFyLT5jb2RlY19pZCA9IEFWX0NPREVDX0lEX0xDMzsKPiArICAgIHN0LT5jb2RlY3Bhci0+c2Ft cGxlX3JhdGUgPSBzcmF0ZV9oejsKPiArICAgIHN0LT5jb2RlY3Bhci0+Yml0X3JhdGUgPSBiaXRf cmF0ZTsKPiArICAgIHN0LT5jb2RlY3Bhci0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzID0gY2hhbm5l bHM7Cj4gKwo+ICsgICAgaWYgKChyZXQgPSBmZl9hbGxvY19leHRyYWRhdGEoc3QtPmNvZGVjcGFy LCA2KSkgPCAwKSB7Cj4gKyAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIkNvdWxkIG5v dCBhbGxvY2F0ZSBleHRyYWRhdGEuXG4iKTsKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAg fQo+ICsKPiArICAgIEFWX1dMMTYoc3QtPmNvZGVjcGFyLT5leHRyYWRhdGEgKyAwLCBmcmFtZV8x MHVzKTsKPiArICAgIEFWX1dMMTYoc3QtPmNvZGVjcGFyLT5leHRyYWRhdGEgKyAyLCBlcF9tb2Rl KTsKPiArICAgIEFWX1dMMTYoc3QtPmNvZGVjcGFyLT5leHRyYWRhdGEgKyA0LCBocl9tb2RlKTsK PiArCj4gKyAgICBsYzMtPmR0ID0gYXZfcmVzY2FsZShmcmFtZV8xMHVzLCBzcmF0ZV9oeiwgMTAw KjEwMDApOwo+ICsgICAgbGMzLT5kZWxheSA9IGF2X3Jlc2NhbGUoZnJhbWVfMTB1cyA9PSA3NTAg PyA0MDAgOiAyNTAsIHNyYXRlX2h6LAo+IDEwMCoxMDAwKTsKPiArCj4gKyAgICBsYzMtPnRpbWVz dGFtcCA9IC1sYzMtPmRlbGF5Owo+ICsgICAgbGMzLT5sZW5ndGggPSBzdC0+ZHVyYXRpb247Cj4g Kwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbGMzX3JlYWRfcGFja2V0 KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKPiArewo+ICsgICAgTEMzRGVtdXhD b250ZXh0ICpsYzMgPSBzLT5wcml2X2RhdGE7Cj4gKyAgICBBVklPQ29udGV4dCAqcGIgPSBzLT5w YjsKPiArICAgIGludCByZXQ7Cj4gKwo+CgppbnQ2NF90IHBvcyA9IGF2aW9fdGVsbChwYik7CgoK PiArICAgIHJldCA9IGF2X2dldF9wYWNrZXQocy0+cGIsIHBrdCwgYXZpb19ybDE2KHBiKSk7Cj4g KyAgICBpZiAocmV0IDwgMCkKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgIHBrdC0+ cG9zIC09IDI7Cj4KCnBrdC0+cG9zID0gcG9zOwoKKyAgICBwa3QtPnB0cyA9IEZGTUFYKGxjMy0+ dGltZXN0YW1wLCAwKTsKPgoKUmVtb3ZlIHRoYXQgbGluZSBhYm92ZS4KCgo+ICsgICAgcGt0LT5k dXJhdGlvbiA9IGxjMy0+ZHQ7Cj4gKwo+ICsgICAgbGMzLT50aW1lc3RhbXAgKz0gbGMzLT5kdDsK PiArICAgIGlmIChsYzMtPnRpbWVzdGFtcCA+IGxjMy0+bGVuZ3RoKSB7Cj4gKyAgICAgICAgcGt0 LT5kdXJhdGlvbiAtPSBsYzMtPnRpbWVzdGFtcCAtIGxjMy0+bGVuZ3RoOwo+ICsgICAgICAgIGxj My0+dGltZXN0YW1wID0gbGMzLT5sZW5ndGg7Cj4gKyAgICB9Cj4gKwo+CgpSZW1vdmUgYWJvdmUg YmxvY2suCgoKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGxjM19yZWFk X3NlZWsoQVZGb3JtYXRDb250ZXh0ICpzLCBpbnQgc3RyZWFtX2luZGV4LCBpbnQ2NF90Cj4gdGlt ZXN0YW1wLCBpbnQgZmxhZ3MpCj4gK3sKPiArICAgIEFWU3RyZWFtICpzdCA9IHMtPnN0cmVhbXNb c3RyZWFtX2luZGV4XTsKPiArICAgIEZGU3RyZWFtICpjb25zdCBzdGkgPSBmZnN0cmVhbShzdCk7 Cj4gKyAgICBMQzNEZW11eENvbnRleHQgKmxjMyA9IHMtPnByaXZfZGF0YTsKPiArICAgIGNvbnN0 IEFWSW5kZXhFbnRyeSAqaWU7Cj4gKyAgICBpbnQgaW5kZXg7Cj4gKwo+ICsgICAgdGltZXN0YW1w ID0gRkZNQVgodGltZXN0YW1wIC0gbGMzLT5kZWxheSwgMCk7Cj4gKyAgICBpZiAodGltZXN0YW1w ID49IGxjMy0+bGVuZ3RoKQo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0VPRjsKPiArCj4gKyAg ICBpbmRleCA9IGF2X2luZGV4X3NlYXJjaF90aW1lc3RhbXAoc3QsIHRpbWVzdGFtcCwgZmxhZ3Mp Owo+ICsgICAgaWUgPSBpbmRleCA8IDAgPyBOVUxMIDogJnN0aS0+aW5kZXhfZW50cmllc1tpbmRl eF07Cj4gKyAgICBpZiAoIWllIHx8IGF2aW9fc2VlayhzLT5wYiwgaWUtPnBvcywgU0VFS19TRVQp IDwgMCkKPiArICAgICAgICByZXR1cm4gLTE7Cj4gKwo+ICsgICAgbGMzLT50aW1lc3RhbXAgPSBp ZS0+dGltZXN0YW1wOwo+ICsgICAgaWYgKGxjMy0+dGltZXN0YW1wID09IDApCj4gKyAgICAgIGxj My0+dGltZXN0YW1wIC09IGxjMy0+ZGVsYXk7Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPgoK VGhpcyBsb2dpYyBpcyB1bm5lY2Vzc2FyeS4KRm9ybWF0IGRvZXMgbm90IHN0b3JlIHRpbWVzdGFt cCBpbnRlcm5hbGx5IGluIGJpdHN0cmVhbS4KSnVzdCBzZXQgcGFja2V0IGR1cmF0aW9uIHRvIG51 bWJlciBvZiBzYW1wbGVzIHN0b3JlZCBpbiB0aGF0IHBhY2tldC4KTm8gbmVlZCBmb3IgcHRzIG92 ZXJkZXNpZ24sIGFuZCByZW1vdmUgdGhpcyByZWFkX3NlZWtfZnVuY3Rpb24uCkFuZCBqdXN0IGxl YXZlIEdFTkVSSUNfSU5ERVggZmxhZ3MgYmVsbG93LgoKCj4gKwo+ICtjb25zdCBGRklucHV0Rm9y bWF0IGZmX2xjM19kZW11eGVyID0gewo+ICsgICAgLnAubmFtZSAgICAgICAgID0gImxjMyIsCj4g KyAgICAucC5sb25nX25hbWUgICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgiTEMzIChMb3cgQ29t cGxleGl0eQo+IENvbW11bmljYXRpb24gQ29kZWMpIiksCj4gKyAgICAucC5leHRlbnNpb25zICAg PSAibGMzIiwKPiArICAgIC5wLmZsYWdzICAgICAgICA9IEFWRk1UX0dFTkVSSUNfSU5ERVgsCj4g KyAgICAucHJpdl9kYXRhX3NpemUgPSBzaXplb2YoTEMzRGVtdXhDb250ZXh0KSwKPiArICAgIC5y ZWFkX2hlYWRlciAgICA9IGxjM19yZWFkX2hlYWRlciwKPiArICAgIC5yZWFkX3BhY2tldCAgICA9 IGxjM19yZWFkX3BhY2tldCwKPiArICAgIC5yZWFkX3NlZWsgICAgICA9IGxjM19yZWFkX3NlZWss Cj4gK307Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2xjM2VuYy5jIGIvbGliYXZmb3JtYXQv bGMzZW5jLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLmU3Njgy MTJmNjMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliYXZmb3JtYXQvbGMzZW5jLmMKPiBAQCAt MCwwICsxLDEwMCBAQAo+ICsvKgo+ICsgKiBMQzMgbXV4ZXIKPiArICogQ29weXJpZ2h0IChDKSAy MDI0ICBBbnRvaW5lIFNvdWxpZXIgPGFzb3VsaWVyQGdvb2dsZS5jb20+Cj4gKyAqCj4gKyAqIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4g KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAq Cj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCj4gMDIxMTAtMTMwMSBVU0EKPiAr ICovCj4gKwo+ICsvKioKPiArICogQGZpbGUKPiArICogQmFzZWQgb24gdGhlIGZpbGUgZm9ybWF0 IHNwZWNpZmllZCBieSA6Cj4gKyAqCj4gKyAqIC0gQmx1ZXRvb3RoIFNJRyAtIExvdyBDb21wbGV4 aXR5IENvbW11bmljYXRpb24gQ29kZWMgVGVzdCBTdWl0ZQo+ICsgKgo+IGh0dHBzOi8vd3d3LmJs dWV0b290aC5vcmcvZG9jbWFuL2hhbmRsZXJzL2Rvd25sb2FkZG9jLmFzaHg/ZG9jX2lkPTUwMjMw MQo+ICsgKiAgIDMuMi44LjIgUmVmZXJlbmNlIExDMyBDb2RlYyBCaXRzdHJlYW0gRm9ybWF0Cj4g KyAqCj4gKyAqIC0gRVRTSSBUSSAxMDMgNjM0IFYxLjQuMSAtIExvdyBDb21wbGV4aXR5IENvbW11 bmljYXRpb24gQ29kZWMgcGx1cwo+ICsgKgo+IGh0dHBzOi8vd3d3LmV0c2kub3JnL2RlbGl2ZXIv ZXRzaV90cy8xMDM2MDBfMTAzNjk5LzEwMzYzNC8wMS4wNC4wMV82MC90c18xMDM2MzR2MDEwNDAx cC5wZGYKPiArICogICBMQzNwbHVzIGNvbmZvcm1hbmNlIHNjcmlwdCBwYWNrYWdlCj4gKyAqLwo+ ICsKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRyZWFkd3JpdGUuaCIKPiArCj4gKyNpbmNsdWRl ICJhdmZvcm1hdC5oIgo+ICsjaW5jbHVkZSAiYXZpby5oIgo+ICsjaW5jbHVkZSAibXV4LmgiCj4g KyNpbmNsdWRlICJpbnRlcm5hbC5oIgo+ICsKPiArc3RhdGljIGF2X2NvbGQgaW50IGxjM19pbml0 KEFWRm9ybWF0Q29udGV4dCAqcykKPiArewo+ICsgICAgaWYgKHMtPm5iX3N0cmVhbXMgIT0gMSkg ewo+ICsgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJUaGlzIG11eGVyIG9ubHkgc3Vw cG9ydHMgYSBzaW5nbGUKPiBzdHJlYW0uXG4iKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihF SU5WQUwpOwo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IGxjM193cml0ZV9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQo+ICt7Cj4gKyAgICBBVlN0 cmVhbSAqc3QgPSBzLT5zdHJlYW1zWzBdOwo+ICsgICAgaW50IGNoYW5uZWxzID0gc3QtPmNvZGVj cGFyLT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7Cj4gKyAgICBpbnQgc3JhdGVfaHogPSBzdC0+Y29k ZWNwYXItPnNhbXBsZV9yYXRlOwo+ICsgICAgaW50IGJpdF9yYXRlID0gc3QtPmNvZGVjcGFyLT5i aXRfcmF0ZTsKPiArICAgIGludCBmcmFtZV91cywgZXBfbW9kZSwgaHJfbW9kZTsKPiArICAgIHVp bnQzMl90IG5iX3NhbXBsZXMgPSBhdl9yZXNjYWxlX3EoCj4gKyAgICAgICAgc3QtPmR1cmF0aW9u LCBzdC0+dGltZV9iYXNlLCAoQVZSYXRpb25hbCl7IDEsIHNyYXRlX2h6IH0pOwo+ICsKPiArICAg IGlmIChzdC0+Y29kZWNwYXItPmV4dHJhZGF0YV9zaXplIDwgNikKPiArICAgICAgICByZXR1cm4g QVZFUlJPUl9JTlZBTElEREFUQTsKPiArCj4gKyAgICBmcmFtZV91cyA9IEFWX1JMMTYoc3QtPmNv ZGVjcGFyLT5leHRyYWRhdGEgKyAwKSAqIDEwOwo+ICsgICAgZXBfbW9kZSA9IEFWX1JMMTYoc3Qt PmNvZGVjcGFyLT5leHRyYWRhdGEgKyAyKSAhPSAwOwo+ICsgICAgaHJfbW9kZSA9IEFWX1JMMTYo c3QtPmNvZGVjcGFyLT5leHRyYWRhdGEgKyA0KSAhPSAwOwo+ICsKPiArICAgIGF2aW9fd2IxNihz LT5wYiwgMHgxY2NjKTsKPiArICAgIGF2aW9fd2wxNihzLT5wYiwgKDkgKyBocl9tb2RlKSAqIHNp emVvZih1aW50MTZfdCkpOwo+ICsgICAgYXZpb193bDE2KHMtPnBiLCBzcmF0ZV9oeiAvIDEwMCk7 Cj4gKyAgICBhdmlvX3dsMTYocy0+cGIsIGJpdF9yYXRlIC8gMTAwKTsKPiArICAgIGF2aW9fd2wx NihzLT5wYiwgY2hhbm5lbHMpOwo+ICsgICAgYXZpb193bDE2KHMtPnBiLCBmcmFtZV91cyAvIDEw KTsKPiArICAgIGF2aW9fd2wxNihzLT5wYiwgZXBfbW9kZSk7Cj4gKyAgICBhdmlvX3dsMzIocy0+ cGIsIG5iX3NhbXBsZXMpOwo+ICsgICAgaWYgKGhyX21vZGUpCj4gKyAgICAgICAgYXZpb193bDE2 KHMtPnBiLCBocl9tb2RlKTsKPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IGludCBsYzNfd3JpdGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkK PiArewo+ICsgICAgYXZpb193bDE2KHMtPnBiLCBwa3QtPnNpemUpOwo+ICsgICAgYXZpb193cml0 ZShzLT5wYiwgcGt0LT5kYXRhLCBwa3QtPnNpemUpOwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiAr Cj4gK2NvbnN0IEZGT3V0cHV0Rm9ybWF0IGZmX2xjM19tdXhlciA9IHsKPiArICAgIC5wLm5hbWUg ICAgICAgID0gImxjMyIsCj4gKyAgICAucC5sb25nX25hbWUgICA9IE5VTExfSUZfQ09ORklHX1NN QUxMKCJMQzMgKExvdyBDb21wbGV4aXR5Cj4gQ29tbXVuaWNhdGlvbiBDb2RlYykiKSwKPiArICAg IC5wLmV4dGVuc2lvbnMgID0gImxjMyIsCj4gKyAgICAucC5hdWRpb19jb2RlYyA9IEFWX0NPREVD X0lEX0xDMywKPiArICAgIC5wLnZpZGVvX2NvZGVjID0gQVZfQ09ERUNfSURfTk9ORSwKPiArICAg IC5wLmZsYWdzICAgICAgID0gQVZGTVRfTk9USU1FU1RBTVBTLAo+ICsgICAgLmluaXQgICAgICAg ICAgPSBsYzNfaW5pdCwKPiArICAgIC53cml0ZV9oZWFkZXIgID0gbGMzX3dyaXRlX2hlYWRlciwK PiArICAgIC53cml0ZV9wYWNrZXQgID0gbGMzX3dyaXRlX3BhY2tldCwKPiArfTsKPiAtLQo+IDIu NDQuMC40NzguZ2Q5MjYzOTllZjktZ29vZwo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZmZtcGVn LWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9m Zm1wZWctZGV2ZWwKPgo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFp bAo+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNj cmliZSIuCj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczov L2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJl LCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcu b3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=