From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 978E94BBBD for <ffmpegdev@gitmailbox.com>; Mon, 28 Apr 2025 22:26:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E262468AE09; Tue, 29 Apr 2025 01:26:44 +0300 (EEST) Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 70483687D87 for <ffmpeg-devel@ffmpeg.org>; Tue, 29 Apr 2025 01:26:38 +0300 (EEST) Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-39ee57c0b8cso6228763f8f.0 for <ffmpeg-devel@ffmpeg.org>; Mon, 28 Apr 2025 15:26:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745879197; x=1746483997; darn=ffmpeg.org; h=user-agent:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:mail-followup-to :message-id:subject:to:from:date:from:to:cc:subject:date:message-id :reply-to; bh=U7Aw57fvlDxWrKr7MehBRPLqyKmMsO2K6GYJg0oAZas=; b=K2Ii9lzyc2PG+Ay9mnTJPSrzkWjOi6FBfLLZN5x07P5T+2g4ipA2yFAG8+48bc4Nb6 l+CkryigzFzOPu3zzva6cWVpPhMbzMZlH5qY5ADhEL6q/gLb+4ArPZDQ3vZ2a/gft3tD F3mSAaD7sWM1G4tRne8aB36RZuKXPWSi/BW8ln9TecUH+MiSH1JKpZ52qmjCFBNVyUeW mOGQ5331WosbKtaK1apK/LCyb3roOJ+jEpFp7gbMxL6l/3VZYXO508RAZI2mXvAF06d3 arz9lRwKlNVk9wqLzTQe1EfyfcAYXNZmHiQ0JVsdrwsh5Zgy3CykJv/qjVhQYexRwXPZ XR6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745879197; x=1746483997; h=user-agent:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:mail-followup-to :message-id:subject:to:from:date:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=U7Aw57fvlDxWrKr7MehBRPLqyKmMsO2K6GYJg0oAZas=; b=HPSXqjkF33ppKJgOsBs3FrT6lTTPLdkafuJ9kXnz0OsufRFPb/ZV5oRidi2PJsQylU ghTkvlbKgz75T2q2D6SzIyvj56pEI/AU1q0Dg/8zQGkHKFTXw2Mg/RDiBcpyLd5ivSd0 P1xOBh8u01Sl8d3GDCPR28veYlVxptW+j3Whjd4kg6DhC0AQnCjk11QFKqh2Nd+g2u8E +60T3qmIX6Ji5G430U9NAX2mCv3VbbxCooXUTOsMVDvgajqlaJTpOCaEmFZpjf4dUsNz cFRejTgypLzNJzL9UMo08gGjzdIYawsLtE4i4EoVBWPfzpt0RJytnlQxOA/MoOucOw/0 +jCw== X-Gm-Message-State: AOJu0YyuJsn4dwW1AC4U67BxK9HKlLjwFV2fAPWX/AZDlhZP/mWHfNy1 o/YSHUeED9QjDjpBEbdUbMFhuASRb4GRZOX0qamHpVokJZErt9UMvmhNXw== X-Gm-Gg: ASbGncvcrU/PTE+bbQJdovoeAM2NWJK920whAV9KBEjBpRl97JePrDK8A8npOwmahYB 6kwwvoQc32EC21hMCVz33G2Ic2fbB1kuP90mx/m7mS8Y1y0X7M+OwvdsgcNyhGu5q2Mk1yfyTSm tsN6i8rtUvHiJylKl/u1Tm9UeRk2T2Ktl4jonfXpkbY7c4NeKpM88l8skWw5U4uUWUkPh/N1jsL SGo2Rn48xEqe0dlPm6APWdz9blMfadkijGKhgJFwUHFfzUiljx+w2dey7ysEINHxgYeNpRiR9oH /PTpUqOsveCiYdSko7dQtZf7cGBMwURwk/qzLWXh3ZKyeh7WxtHEHfQfz+/0IN8jDsIjhfxUDAO PdieN X-Google-Smtp-Source: AGHT+IGNM075sfp9ySUWsZbMK8DKhzCiprIZW6VRfp1sPNRhZmbEcyrluDXVHXV1Rkvz1Fz/72L0Hw== X-Received: by 2002:a5d:4303:0:b0:3a0:7a5d:bbfe with SMTP id ffacd0b85a97d-3a08949d81fmr1041200f8f.43.1745879197187; Mon, 28 Apr 2025 15:26:37 -0700 (PDT) Received: from mariano (dynamic-adsl-84-220-189-10.clienti.tiscali.it. [84.220.189.10]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a089edeca6sm755509f8f.40.2025.04.28.15.26.36 for <ffmpeg-devel@ffmpeg.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Apr 2025 15:26:36 -0700 (PDT) Received: by mariano (Postfix, from userid 1000) id 6FA58BFCE8; Tue, 29 Apr 2025 00:26:35 +0200 (CEST) Date: Tue, 29 Apr 2025 00:26:35 +0200 From: Stefano Sabatini <stefasab@gmail.com> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Message-ID: <aBAAm5UlUYl72dqB@mariano> Mail-Followup-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> References: <DM8P223MB036504CFC0521633C2ADCCE3BABB2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> <12650153.O9o76ZdvQC@basile.remlab.net> <DM8P223MB03656267310C697B2094F675BA842@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> <aA4J/XYOzKKMouhn@mariano> <DM8P223MB036535B434099A2C30D82559BA862@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <DM8P223MB036535B434099A2C30D82559BA862@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> User-Agent: Mutt/2.1.4 (2021-12-11) Subject: Re: [FFmpeg-devel] [RFC] Shaping the AVTextFormat API Surface X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/aBAAm5UlUYl72dqB@mariano/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> T24gZGF0ZSBTdW5kYXkgMjAyNS0wNC0yNyAxNzo1NDoyMSArMDAwMCwgc29mdHdvcmt6IC4gd3Jv dGU6Cj4gCj4gCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJvbTogZmZtcGVn LWRldmVsIDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPiBPbiBCZWhhbGYgT2YKPiA+ IFN0ZWZhbm8gU2FiYXRpbmkKPiA+IFNlbnQ6IFNvbm50YWcsIDI3LiBBcHJpbCAyMDI1IDEyOjQy Cj4gPiBUbzogRkZtcGVnIGRldmVsb3BtZW50IGRpc2N1c3Npb25zIGFuZCBwYXRjaGVzIDxmZm1w ZWctCj4gPiBkZXZlbEBmZm1wZWcub3JnPgo+ID4gU3ViamVjdDogUmU6IFtGRm1wZWctZGV2ZWxd IFtSRkNdIFNoYXBpbmcgdGhlIEFWVGV4dEZvcm1hdCBBUEkgU3VyZmFjZQo+ID4gCj4gPiBPbiBk YXRlIEZyaWRheSAyMDI1LTA0LTI1IDEzOjE2OjU5ICswMDAwLCBzb2Z0d29ya3ogLiB3cm90ZToK PiA+IFsuLi5dCj4gPiA+IFRlbGwgbWUgd2hhdCBJIHNob3VsZCBjaGVjayBmb3IgYW5kIHdoYXQg bm90IGluIHRob3NlIGZvdXIgZ3JvdXBzIG9mCj4gPiA+IGZ1bmN0aW9ucyBhbmQgZm9yIHRob3Nl IHRoaW5ncyB3aGljaCBzaG91bGQgYmUgY2hlY2tlZCwgdGVsbCBtZQo+ID4gd2hpY2gKPiA+ID4g d2F5IChyZXR1cm4gZXJyb3IsIHJldHVybiBzaWxlbnRseSwgYWxsb3cgc2VnZmF1bHQgb3IgdXNl IGFuCj4gPiBhc3NlcnRpb24pLgo+ID4gPgo+ID4gPiBUaGVuIEknbGwgYXBwbHkgdGhhdCB0byBh bGwgdGhvc2UgZnVuY3Rpb25zIGluIGEgdW5pZm9ybSBhbmQKPiA+IGNvbnNpc3RlbnQKPiA+ID4g d2F5IHdpdGhvdXQgZXZlbiBhcmd1aW5nIGFuZCB0aGUgY2FzZSBpcyBjbG9zZWQuCj4gPiA+Cj4g PiA+IEkganVzdCBkb24ndCB3YW50IHRvIGxlYXZlIGl0IGFsb25lIGxpa2Ugbm93IHdpdGhvdXQg Y2xlYXIgcGF0dGVybnMsCj4gPiA+IHRoYXQncyBhbGwg8J+Yigo+ID4gCj4gPiBJIGRvbid0IHJl YWxseSBoYXZlIGFuIGFuc3dlci4KPiAKPiAuLi5zdGlsbCBieSBmYXIgdGhlIGJlc3Qgb25lLgo+ IAo+IAo+ID4gUHJvYmFibHkgaXQncyBnb29kIHRvIHN0YXJ0IGZyb20gdGhlCj4gPiBkb2NzLCBz byB0aGF0IHdlIGhhdmUgYSBkZWZpbml0aW9uIG9mIHRoZSBzZW1hbnRpY3MgaW4gYWR2YW5jZSwg Zm9yCj4gPiBleGFtcGxlIHN0YXRpbmcgdGhhdCBhIHBvaW50ZXIgc2hvdWxkIG5vdCBiZSBOVUxM IGFuZCBzbyBvbiBzbyB0aGF0IGF0Cj4gPiBsZWFzdCB3ZSBrbm93IHdoYXQgaXMgdG8gYmUgY29u c2lkZXJlZCB1bmRlZmluZWQgYmVoYXZpb3IuIEFzIG5vdGVkIGJ5Cj4gPiBOaWNvbGFzLCB0aGUg cGF0dGVybiBpcyBkZXBlbmRhbnQgb24gdGhlIGZ1bmN0aW9uIGJlaGF2aW9yIGFuZCBvbgo+ID4g cHJhY3RpY2FsIGVyZ29ub215IGNvbnNpZGVyYXRpb25zLgo+ID4gCj4gPiBJdCBhbHNvIHdvdWxk IGJlIG5pY2UgdG8gaGF2ZSBhIGdvb2Qgc2V0IG9mIGd1aWRlbGluZXMuCj4gCj4gRXhhY3RseS4g VGhhdCdzIG9uZSBvZiB0aGUgdGhpbmdzIEkgd291bGQgbGlrZSB0byB3b3JrIG91dCBoZXJlLgo+ IAo+IAo+IFsuLl0KPiAKPiA+IFRoaXMgbWlnaHQgZmFpbCBpbiBzZXZlcmFsIHdheXM6IGJpa2Vz aGVkIG1pZ2h0IGJlIE5VTEwgb3IgaW52YWxpZAo+ID4gKGUuZy4gYSBwb2ludGVyIHRvIGFuIHVu cmVsYXRlZCBzdHJ1Y3R1cmUpLCBsZXZlbCBtaWdodCBiZSBpbnZhbGlkCj4gPiAoZS5nLiBuZWdh dGl2ZSBvciA+TUFYX1NMSUNFX0xFVkVMKSBvciB0aGUgYmlrZXNoZWQgbWlnaHQgY29udGFpbgo+ ID4gYWxyZWFkeSB0b28gbWFueSBzbGljZXMuCj4gPiAKPiA+IFRoZSBsZXZlbCBtaWdodCBiZSBj aGVja2VkIGJ5IHRoZSBwcm9ncmFtbWVyLCBzbyB3ZSBtaWdodCBkZWNpZGUgdG8KPiA+IGhhdmUg YW4gYXNzZXJ0LiBBYm91dCB0aGUgY291bnQgY2hlY2sgaXQgaXMgdmFsaWRhdGVkIGZyb20gd2l0 aGluIHRoZQo+ID4gZnVuY3Rpb24gKHNpbmNlIHdlIG5lZWQgdG8gYWNjZXNzIHRoZSBiaWtlc2hl ZCBjb250ZXh0KSBzbyB3ZSB3YW50IHRvCj4gPiBwcm92aWRlIGZlZWRiYWNrIGFuZCBmYWlsLgo+ ID4gCj4gPiBGb3IgYm90aCBvZiB0aGVzZSB0d28gZXhhbXBsZXMsIGRvaW5nIG5vdGhpbmcgZG9l cyBub3Qgc2VlbSBhIGdvb2QKPiA+IGlkZWEuIFRoYXQncyBwcm9iYWJseSBvbmx5IGdvb2QgaWYg d2Ugd2FudCB0byBlbmFibGUgaWRlbS1wb3RlbmN5IG9yCj4gPiB3aGVuIG9uZSBvZiB0aGUgcGFy YW1ldGVyIGNhbiBiZSBpbnRlcnByZXRlZCBhcyBhICJub25lIiBhcmd1bWVudC4KPiA+IAo+ID4g Rm9yIGV4YW1wbGU6Cj4gPiAgICBpZiAoY29sb3IgPT0gTlVMTCkgewo+ID4gICAgICAgIHJldHVy biAwOwo+ID4gICAgfQo+ID4gCj4gPiBJbiB0aGlzIGNhc2Ugd2Ugc2hvdWxkIHNwZWNpZnkgdGhl IGJlaGF2aW9yIGluIHRoZSBkb2N1bWVudGF0aW9uLAo+ID4gc2luY2UgdGhhdCBkZWZpbmVzIHdo YXQgaXMgdGhlIHVuZGVmaW5lZCBiZWhhdmlvciBhbmQgdGhlIGlucHV0Cj4gPiBleHBlY3RhY3Rp b25zLgo+IAo+IFRoaXMgYWxsIG1ha2VzIHNlbnNlIGFuZCB0aGUgcHJhY3RpY2FsIHBhcnQgaXMg bm93IHRvIGFwcGx5IHRoYXQga2luZAo+IG9mIGNvbnNpZGVyYXRpb25zIHRvIHRoZSBpbmRpdmlk dWFsIEFQSXMgd2UgaGF2ZS4KPiAKPiBQcm9iYWJseSBpdCdzIGJlc3Qgd2hlbiBJIHN0YXJ0IGJ5 IG1ha2luZyBhIHN1Z2dlc3Rpb24gYXMgYSBzdGFydGluZwo+IHBvaW50LCB0aGVuIHdlIGNhbiBy ZWZpbmUgaXQgZnJvbSB0aGVyZToKPiAKPiAKPiAxLiBBVlRleHRGb3JtYXR0ZXIgSW1wbGVtZW50 YXRpb25zCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IAo+IHByaW50X3Nl Y3Rpb25faGVhZGVyKEFWVGV4dEZvcm1hdENvbnRleHQgKnRjdHgsIGNvbnN0IHZvaWQgKmRhdGEp Owo+IHByaW50X3NlY3Rpb25fZm9vdGVyKEFWVGV4dEZvcm1hdENvbnRleHQgKnRjdHgpOwo+IHBy aW50X2ludGVnZXIoQVZUZXh0Rm9ybWF0Q29udGV4dCAqdGN0eCwgY29uc3QgY2hhciAqIGtleSwg aW50NjRfdCk7Cj4gcHJpbnRfc3RyaW5nKEFWVGV4dEZvcm1hdENvbnRleHQgKnRjdHgsIGNvbnN0 IGNoYXIgKmtleSwgY29uc3QgY2hhciAqdmFsdWUpOwo+IAoKPiBSdWxlcwo+IAo+IC0gYXNzZXJ0 IHRjdHggYW5kIGtleQoKPiAtIGRhdGEgYW5kIHZhbHVlIGNhbiBiZSBudWxsCgpBbHNvOiBzaG91 bGQgd2UgcmV0dXJuIGVuIGVycm9yIGluIGNhc2Ugb2YgaW52YWxpZCBuZXN0aW5nIGxldmVsPwpU aGlzIGlzIGNvbnRleHQgZGVwZW5kZW50IHNvIG1heWJlIHRoaXMgc2hvdWxkIGJlIGEgcmVjb3Zl cmFibGUgZXJyb3IKLSBteSBndWVzcyBpcyB5ZXMgYWx0aG91Z2ggdGhpcyBtZWFucyBjb21wbGlj YXRpbmcgdXNhZ2UuCgo+IDIuIEFWVGV4dFdyaXRlciBJbXBsZW1lbnRhdGlvbnMKPiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Cj4gCj4gd3JpdGVyX3c4KEFWVGV4dFdyaXRlckNvbnRl eHQgKndjdHgsIGludCBiKTsKPiB3cml0ZXJfcHV0X3N0cihBVlRleHRXcml0ZXJDb250ZXh0ICp3 Y3R4LCBjb25zdCBjaGFyICpzdHIpOwoKPiB3cml0ZXJfdnByaW50ZihBVlRleHRXcml0ZXJDb250 ZXh0ICp3Y3R4LCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgdmwpOwoKYXNzdW1pbmcgdGhpcyBp cyBkaXJlY3RseSB1c2VkIGJ5IGEgcHJvZ3JhbW1lciwgdGhlIHZhcmlhZGljIHZhcmlhbnQKbWln aHQgYWxzbyBtYWtlIHNlbnNlCgo+IAo+IAo+IFJ1bGVzCj4gCj4gLSBhc3NlcnQgd2N0eAo+IC0g c3RyLCBmbXQsIHZsIC0gPwoKQ2FuIHRoZSBvcGVyYXRpb24gZmFpbD8gU2hvdWxkIHdlIHJldHVy biBhbiBlcnJvciBjb2RlPwogCj4gCj4gMy4gVGV4dEZvcm1hdCBBUEkKPiA9PT09PT09PT09PT09 PT09PQo+IAo+IAo+IGF2dGV4dF9wcmludF9zZWN0aW9uX2hlYWRlcigqdGN0eCwgY29uc3Qgdm9p ZCAqZGF0YSwgaW50IHNlY3Rpb25faWQpCj4gYXZ0ZXh0X3ByaW50X3NlY3Rpb25fZm9vdGVyKCp0 Y3R4KQoKPiBhdnRleHRfcHJpbnRfaW50ZWdlcigqdGN0eCwgY29uc3QgY2hhciAqa2V5LCBpbnQ2 NF90IHZhbCkKPiBhdnRleHRfcHJpbnRfaW50ZWdlcl9mbGFncygqdGN0eCwgY29uc3QgY2hhciAq a2V5LCBpbnQ2NF90IHZhbCwgaW50IGZsYWdzKQoKYSBzaW5nbGUgdmFyaWFudCBtaWdodCBkbyAo YXMgd2UgaGF2ZSBhIHNpbmdsZSBwcmludF9zdHJpbmcpCgo+IGF2dGV4dF9wcmludF91bml0X2lu dCgqdGN0eCwgY29uc3QgY2hhciAqa2V5LCBpbnQgdmFsdWUsIGNvbnN0IGNoYXIgKnVuaXQpCj4g YXZ0ZXh0X3ByaW50X3JhdGlvbmFsKCp0Y3R4LCBjb25zdCBjaGFyICprZXksIEFWUmF0aW9uYWwg cSwgY2hhciBzZXApCj4gYXZ0ZXh0X3ByaW50X3RpbWUoKnRjdHgsIGNvbnN0IGNoYXIgKmtleSwg aW50NjRfdCB0cywgY29uc3QgQVZSYXRpb25hbCAqdGltZV9iYXNlLCBpbnQgaXNfZHVyYXRpb24p Cj4gYXZ0ZXh0X3ByaW50X3RzKCp0Y3R4LCBjb25zdCBjaGFyICprZXksIGludDY0X3QgdHMsIGlu dCBpc19kdXJhdGlvbikKPiBhdnRleHRfcHJpbnRfc3RyaW5nKCp0Y3R4LCBjb25zdCBjaGFyICpr ZXksIGNvbnN0IGNoYXIgKnZhbCwgaW50IGZsYWdzKQo+IGF2dGV4dF9wcmludF9kYXRhKCp0Y3R4 LCBjb25zdCBjaGFyICprZXksIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIGludCBzaXplKQo+IGF2dGV4 dF9wcmludF9kYXRhX2hhc2goKnRjdHgsIGNvbnN0IGNoYXIgKmtleSwgY29uc3QgdWludDhfdCAq ZGF0YSwgaW50IHNpemUpCgo+IGF2dGV4dF9wcmludF9pbnRlZ2VycygqdGN0eCwgY29uc3QgY2hh ciAqa2V5LCB1aW50OF90ICpkYXRhLCBpbnQgc2l6ZSwKPiAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqZm9ybWF0LCBpbnQgY29sdW1ucywgaW50IGJ5dGVzLCBpbnQgb2Zmc2V0X2Fk ZCkKCmlzIHRoaXMgcmVhbGx5IG5lZWRlZD8gYWxzbyB0aGlzIHNlZW1zIGEgY29tcGxpY2F0aW9u IGFzIGl0IGltcGxpZXMKdGFidWxhciBmb3JtYXQKCj4gCj4gCj4gUnVsZXMKPiAKPiAtIGFzc2Vy dCB0Y3R4IGFuZCBrZXkKCj4gLSBob3cgYWJvdXQgdWludDhfdCAqZGF0YSwgdW5pdCBhbmQgdmFs IGluIC4ucHJpbnRfc3RyaW5nPwoKd2hhdCBhcmUgdGhlIGN1cnJlbnQgdXNlIGNhc2VzPyBDYW4g d2UgaGF2ZSBlbXB0eSBkYXRhL3VuaXQvdmFsPyBEbyB3ZQpuZWVkIHRvIHN1cHBvcnQgbnVsbCBz ZW1hbnRpY3M/IEkgc2VlbSB0byByZW1lbWJlciB3ZSBkbywgbGV0J3MgY2hlY2suCgo+IDQuIFRl eHRXcml0ZXIgQVBJCj4gPT09PT09PT09PT09PT09PT0KPiAKPiBhdnRleHR3cml0ZXJfY29udGV4 dF9vcGVuKEFWVGV4dFdyaXRlckNvbnRleHQgKipwd2N0eCwgY29uc3QgQVZUZXh0V3JpdGVyICp3 cml0ZXIpCj4gYXZ0ZXh0d3JpdGVyX2NvbnRleHRfY2xvc2UoQVZUZXh0V3JpdGVyQ29udGV4dCAq KnB3Y3R4KQo+IGF2dGV4dHdyaXRlcl9jcmVhdGVfc3Rkb3V0KEFWVGV4dFdyaXRlckNvbnRleHQg Kipwd2N0eCkKPiBhdnRleHR3cml0ZXJfY3JlYXRlX2F2aW8oQVZUZXh0V3JpdGVyQ29udGV4dCAq KnB3Y3R4LCBBVklPQ29udGV4dCAqYXZpb19jdHgsIGludCBjbG9zZV9vbl91bmluaXQpCj4gYXZ0 ZXh0d3JpdGVyX2NyZWF0ZV9maWxlKEFWVGV4dFdyaXRlckNvbnRleHQgKipwd2N0eCwgY29uc3Qg Y2hhciAqb3V0cHV0X2ZpbGVuYW1lKQo+IGF2dGV4dHdyaXRlcl9jcmVhdGVfYnVmZmVyKEFWVGV4 dFdyaXRlckNvbnRleHQgKipwd2N0eCwgQVZCUHJpbnQgKmJ1ZmZlcikKPiAKPiAKPiBSdWxlcwo+ IAo+IC0gKipwd2N0eDogbGVhdmUgdW5jaGVja2VkCj4gLSB3cml0ZXI6IHJldHVybiBBVkVSUk9S KEVJTlZBTCkKPiAtIGF2aW9fY3R4OiBhc3NlcnQKCj4gLSBvdXRwdXRfZmlsZW5hbWU6IGxvZyBl cnJvciBhbmQgcmV0dXJuIEVJTlZBTAoKb3IgYmV0dGVyIHByb3BhZ2F0ZSB0aGUgZmFpbHVyZSBm cm9tIG9wZW4gKHNlZSBsaWJhdnV0aWwvb3Blbl9maWxlKQoKPiAtIGJ1ZmZlcjogYXNzZXJ0ID8K CnVubGVzcyBpdCBtYWtlcyBzZW5zZSB0byBzdXBwb3J0IGFuIGVtcHR5IGJ1ZmZlcj8KCj4gCj4g NS4gR2VuZXJhbAo+ID09PT09PT09PT0KPiAKPiBBc3NlcnRpb25zCj4gCgo+IFdoaWNoIGFzc2Vy dCAtIGF2X2Fzc2VydDAoKSA/Cgp0aGV5IGFyZSBvbmNlLWNoZWNrcywgdGhlcmVmb3JlIG5vIHBl cmZvcm1hbmNlIGNyaXRpY2FsLCBzbyB5ZXMKICAKPiBQdWJsaWMvUHJpdmF0ZQo+IAo+IAo+IExv b2tpbmcgYXQgQVZUZXh0Rm9ybWF0Q29udGV4dCAtIHNob3VsZCB3ZSBzdGFydCB0aGlua2luZyBh Ym91dCAKPiB3aGljaCBtZW1iZXJzIHdlIHdvdWxkIChhdCBsZWFzdCBsb2dpY2FsbHkpIGNvbnNp ZGVyIHB1YmxpYyBhbmQKPiB3aGljaCBhcyBub24tcHVibGljPwoKRnJvbSB3aGF0IEkga25vdyB0 aGVyZSBhcmUgbm8gcHVibGljL25vbi1wdWJsaWMgZmllbGRzIGluIEZGIHN0cnVjdHMsCmJ1dCB3 ZSBjYW4gZXh0ZW5kIHRoZW0gd2l0aCBwcml2YXRlIGRhdGEvY2xhc3MgdG8gYmUgaGFuZGxlZCBp bgpzcGVjaWFsaXphdGlvbiBjb2RlIGlmIG5lZWRlZC4KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWct ZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1w ZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1w ZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=