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 DE29A45D72 for ; Sun, 7 May 2023 22:10:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 20DCF68BD8B; Mon, 8 May 2023 01:10:44 +0300 (EEST) Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4A510688318 for ; Mon, 8 May 2023 01:10:37 +0300 (EEST) Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-3f4249b7badso3956015e9.3 for ; Sun, 07 May 2023 15:10:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683497436; x=1686089436; 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=aAHsjr6iPLMdgs3URmO0ZwXAY21ux49fVDPAKteC24A=; b=OFzJ3sCTPxa+FEXOPgM+6s4Z7qScl/ZG33x/a9iifjSGtM3vi65kNmUgMdvhyJTE1L gjNc8YTaee8JOo7D665XaW9g4Dx/FgHB8JnFPuVwIf80j4Mm89cLPAWio4cly0gDWaXy OWzv/uwcQMeAer0nx+YHMwywLmkqegEcEdMm/oMC2fdpuPJvoXj1oHzFOLufh+B0/4CS llkj6d8Xi9DzWxfl/slwHpts6VbZzfRvfGBCBbMSM5KDs0U8el799NjOcoBbDWojeR9V VWVnVefjIuY62L5gM9/hUkBabooqW6L8s3kh/jt1YLyZXLIVjkf08aNxRTDu+Qt8SbVV iCRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683497436; x=1686089436; 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=aAHsjr6iPLMdgs3URmO0ZwXAY21ux49fVDPAKteC24A=; b=crCJ8aIeKC7xenLDVvanB2YAaugMej+pBz8f5RSGlg3aj7l9/sSZtTIm66fYvkDKAR Tt4en3vTxtRSMTmkC4qhr/a/laEcveJm5MyeTKUY+OAKLiwgGPFcOwA4uqMPWzSZXvED LLSLzZcaZEN1OY2cujyWVzDPGNeImgs7KTHp2UlLYHIb5MVMK+t84jCzjDlOM9AmGVYM fJJ86baXdqb4VHVnNsUAqzLhYSqyGrg3m/qTKPWy/OGyTplxYzrBQqjn20NX30r80ObI ARkk835WSsBgpYWLRtD3VuCfCgXbWDKibLCs0k/aDzmOXFVJAxhkasAlKEQF/hqftmo9 +N6w== X-Gm-Message-State: AC+VfDzHR0ckwr3NEjcvTUX89VoWE9s8WaEInltoveLmdOGYs9M59SB2 sGFgKu8HTJjF9GpZfQCyGsr+92wxAbnLBw== X-Google-Smtp-Source: ACHHUZ7kAejMPhwR6QFCVC586hnioCkVf9altBGluLBPztgRP4CODrz6aWkGMBr8ww/Fd4qf6wQ7Ig== X-Received: by 2002:a7b:cb8e:0:b0:3f1:73ca:7807 with SMTP id m14-20020a7bcb8e000000b003f173ca7807mr5858824wmi.37.1683497435609; Sun, 07 May 2023 15:10:35 -0700 (PDT) Received: from mariano ([91.254.67.164]) by smtp.gmail.com with ESMTPSA id n22-20020a7bcbd6000000b003f41bb52834sm5279597wmi.38.2023.05.07.15.10.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 07 May 2023 15:10:34 -0700 (PDT) Received: by mariano (Postfix, from userid 1000) id B2EC7BFB73; Mon, 8 May 2023 00:10:33 +0200 (CEST) Date: Mon, 8 May 2023 00:10:33 +0200 From: Stefano Sabatini To: FFmpeg development discussions and patches Message-ID: <20230507221033.GC4348@mariano> Mail-Followup-To: FFmpeg development discussions and patches References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.13.2 (2019-12-18) Subject: Re: [FFmpeg-devel] Embedded documentation? 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: T24gZGF0ZSBNb25kYXkgMjAyMy0wNS0wMSAxMjoxMzowOSArMDIwMCwgTmljb2xhcyBHZW9yZ2Ug d3JvdGU6Cj4gSGkuCj4gCj4gVGhyZWUgeWVhcnMgYWdvLCBJIHNoYXJlZCBzb21lIGJyaWVmIHRo b3VnaHRzIGFib3V0IGVtYmVkZGluZyB0aGUKPiBkb2N1bWVudGF0aW9uIGluIHRoZSBsaWJyYXJp ZXMuIEZvciBleGFtcGxlLCB0aGF0IHdvdWxkIGFsbG93IEdVSQo+IGFwcGxpY2F0aW9ucyB0byBv cGVuIGhlbHAgZGlhbG9ncyBhYm91dCBzcGVjaWZpYyBvcHRpb25zLgo+IAo+IFRvIHNlZSB3aGF0 IGl0IHdvdWxkIG5lZWQsIEkgd3JvdGUgdGhlIGZvbGxvd2luZyBoZWFkZXIuIEkgZGlkIG5vdCB3 b3JrCj4gYW55IGZ1cnRoZXIsIGJlY2F1c2UgZ3JvdW5kd29yayBuZWVkIHRvIGJlIGxhaWQgZmly c3QuIEJ1dCBub3cgdGhhdCBpdAo+IHdhcyBtZW50aW9uZWQgaW4gYW5vdGhlciB0aHJlYWQsIEkg dGhpbmsgaXQgaXMgYSBnb29kIGlkZWEgdG8gc2hvdyBpdCwKPiB0byBzZWUgaG93IHBlb3BsZSBs aWtlIGl0Lgo+IAo+IFBsZWFzZSBzaGFyZSB5b3VyIHJlbWFya3MuIEV2ZW4g4oCcKzHigJ0gdG8g c2F5IHlvdSBsaWtlIGl0LCBiZWNhdXNlIHBlb3BsZQo+IHdobyB3aWxsIG5vdCBsaWtlIGl0IHdp bGwgbm90IGhlc2l0YXRlIHRvIHBvc3Qg4oCcLTHigJ0uCj4gCj4gUmVnYXJkcywKPiAKPiAtLSAK PiAgIE5pY29sYXMgR2VvcmdlCgo+IHR5cGVkZWYgc3RydWN0IEFWRG9jTm9kZSBBVkRvY05vZGU7 Cj4gdHlwZWRlZiBzdHJ1Y3QgQVZEb2NMaW5rIEFWRG9jTGluazsKPiB0eXBlZGVmIGVudW0gQVZE b2NOb2RlVHlwZSBBVkRvY05vZGVUeXBlOwo+IHR5cGVkZWYgZW51bSBBVkRvY0xpbmtUeXBlIEFW RG9jTGlua1R5cGU7Cj4gCj4gLyoqCj4gICogTGluayB0byBhbm90aGVyIGRvY3VtZW50YXRpb24g bm9kZS4KPiAgKi8KPiBzdHJ1Y3QgQVZEb2NMaW5rIHsKPiAgICAgQVZEb2NOb2RlICp0YXJnZXQ7 Cj4gICAgIEFWRG9jTGlua1R5cGUgdHlwZTsKPiB9Owo+IAo+IC8qKgo+ICAqIE5vZGUgaW4gdGhl IGRvY3VtZW50YXRpb24gc3lzdGVtLgo+ICAqCj4gICogQSBub2RlIGNhbiBiZSB0aGUgZGVzY3Jp cHRpb24gb2YgYSBjb2RlYywgZm9ybWF0LCBmaWx0ZXIsIG9wdGlvbiwgdHlwZSwKPiAgKiBldGMu Cj4gICovCj4gc3RydWN0IEFWRG9jTm9kZSB7Cj4gCj4gICAgIC8qKgo+ICAgICAgKiBOYW1lcyBv ZiB0aGUgY29tcG9uZW50Lgo+ICAgICAgKgo+ICAgICAgKiBJdCBpcyBhIGNvbmNhdGVuYXRpb24g b2YgMC10ZXJtaW5hdGVkIHN0cmluZ3MsIHRlcm1pbmF0ZWQgYnkgYW4gZW1wdHkKPiAgICAgICog c3RyaW5nIChpLmUuIGEgZG91YmxlIDApLgoKPiAgICAgICogRm9yIGV4YW1wbGUgImZyYW1lX3Jh dGUsIHJhdGUsIHIiIHdvdWxkIGJlICJmcmFtZV9yYXRlXDByYXRlXDByXDBcMCIuCj4gICAgICAq IFRoZSBmaXJzdCBuYW1lIGlzIHRoZSBtYWluIG5hbWUgb2YgdGhlIGNvbXBvbmVudCwgdGhlIG90 aGVyIGFyZQo+ICAgICAgKiBhbGlhc2VzLgoKSSdkIHByZWZlciB0byB1c2Ugc29tZXRoaW5nIGVh c2lseSBwYXJzYWJsZSBhbmQgc3RpbGwgbW9yZQpodW1hbi1yZWFkYWJsZSwgc3VjaCBhcyAiZnJh bWVfcmF0ZSxyYXRlLHIiCgo+ICAgICAgKiBJZiB0aGlzIGZpZWxkIGlzIHVzZWQgYXMgYSBwbGFp biBDIHN0cmluZywgaXQgY29udGFpbnMgb25seSB0aGUgbWFpbgo+ICAgICAgKiBuYW1lLgo+ICAg ICAgKi8KPiAgICAgY29uc3QgY2hhciAqbmFtZXM7Cj4gCj4gICAgIC8qKgo+ICAgICAgKiBVbmlx dWUgaWRlbnRpZmllciBvZiB0aGUgY29tcG5lbnQuCj4gICAgICAqCj4gICAgICAqIEl0IGlzIGNv bXBvc2VkIG9mIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHBsdXMgdW5kZXJzY29yZSBhbmQgc2xh c2gKPiAgICAgICogYW5kIHdyaXR0ZW4gaGllcmFyY2hpY2FsbHkuCj4gICAgICAqCgo+ICAgICAg KiBGb3IgZXhhbXBsZSwgdGhlIHdpZHRoIG9wdGlvbiBvZiB0aGUgc2NhbGUgZmlsdGVyIHdvdWxk IGJlCj4gICAgICAqICJsYXZmaS92Zl9zY2FsZS9vcHRfd2lkdGgiLgoKbWF5YmUgc29tZXRoaW5n IGFzOgpsYXZmaS9zY2FsZS9vcHRpb246d2lkdGgKCnRoZSBuYW1lIG9mIGEgZmlsdGVyIGlzIHVu aXF1ZSwgYW5kIHdlIGRvbid0IHdhbnQgdG8gZXhwb3NlIHRoZQppbnRlcm5hbHMgb2YgdGhlIGxp YnJhcnkgKHZmXywgYWZfIGV0Yy4gLSBhbHNvIHRoZXkgZG9uJ3QgbWFrZSBtdWNoCnNlbnNlIGZv ciBtdWx0aS90cmFucy1tZWRpYSBmaWx0ZXJzKQoKPiAgICAgICoKPiAgICAgICogVGhpcyBpZGVu dGlmaWVyIGNhbiBiZSB1c2VkIGZvciBsaW5rcyBpbiB0aGUgdGV4dC4KPiAgICAgICoKPiAgICAg ICogSXQgbWF0Y2hlcyB0aGUgc3ltYm9sIHRoYXQgbWFrZXMgdGhlIGRvY3VtZW50YXRpb24gYXZh aWxhYmxlLCBpbiB0aGUKPiAgICAgICogYXZkb2NfIG5hbWVzcGFjZSB3aXRoIGRvdWJsZSB1bmRl cnNjb3JlIHN0YW5kaW5nIGZvciBzbGFzaGVzOgo+ICAgICAgKiBleHRlcm4gY29uc3QgQVZEb2NO b2RlIGF2ZG9jX2xhdmZpX192Zl9zY2FsZV9fb3B0X3dpZHRoOwo+ICAgICAgKi8KPiAgICAgY29u c3QgY2hhciAqaWQ7Cj4gCj4gICAgIC8qKgo+ICAgICAgKiBUaXRsZSAvIHNob3J0IGRlc2NyaXB0 aW9uLCBwb3NzaWJseSBOVUxMLgo+ICAgICAgKgo+ICAgICAgKiBDYW4gYmUgdXNlZCBpbiBhIHRh YmxlIG9mIGNvbnRlbnRzIGZvciBleGFtcGxlLgo+ICAgICAgKi8KPiAgICAgY29uc3QgY2hhciAq dGl0bGU7Cj4gCgo+ICAgICAvKioKPiAgICAgICogVGV4dCBvZiB0aGUgZG9jdW1lbnRhdGlvbiBp biBYWFggTWFya2Rvd24gLyBGRkhUTUwuCj4gICAgICAqCj4gICAgICAqIEFwcGFyZW50bHkgd2Ug d2FudCB0byB3cml0ZSB0aGUgZG9jdW1lbnRhdGlvbiBpbiBNYXJrZG93biBvciBzaW1pbGFyLAo+ ICAgICAgKiBidXQgdGhlIGJ1aWxkIHN5c3RlbSBjYW4gY29udmVydCB3aGVuIGNyZWF0aW5nIHRo ZSBkYXRhIHN0cnVjdHVyZSB0bwo+ICAgICAgKiBlbWJlZCBpbiB0aGUgbGlicmFyeS4KPiAgICAg ICoKPiAgICAgICogT24gb25lIGhhbmQsIE1hcmtkb3duIGNhbiBiZSBkdW1wZWQgYXMgaXMgdG8g dGhlIHVzZXIsIGluIGEgdGVybWluYWwKPiAgICAgICogb3IgYSBiYXNpYyBkaWFsb2cgYm94Lgo+ ICAgICAgKgo+ICAgICAgKiBPbiB0aGUgb3RoZXIgaGFuZCwgc3RyaWN0IG1pbmltYWxpc3QgSFRN TCBpcyBtb3JlIHByb2dyYW0tZnJpZW5kbHksCj4gICAgICAqIHdoaWNoIG1ha2VzIGl0IG1vcmUg Y29udmVuaWVudCBmb3IgcHJvZ3JhbXMgdGhhdCB3YW50IHRvIGRpc3BsYXkgaXQKPiAgICAgICog d2l0aCBhY3R1YWwgaXRhbGljcyAKPiAgICAgICoKPiAgICAgICogSSB0aGluayBGRkhUTUwgKGku ZS4gYSBzbWFsbCwgc3RyaWN0IGFuZCBjbGVhcmx5IGRvY3VtZW50ZWQgc3Vic2V0IG9mCj4gICAg ICAqIEhUTUwpIHdvdWxkIGJlIGJldHRlci4KPiAgICAgICovCj4gICAgIGNvbnN0IGNoYXIgKnRl eHQ7CgpJIHRoaW5rIHRoZSBwcm9ibGVtIHdpdGggSFRNTCBpcyB0aGF0IHRoZW4geW91IG5lZWQg dG8gcGFyc2UgaXQgaWYgeW91CndhbnQgdG8gZGlzcGxheSBpdCwgc28gSSdkIHRlbmQgdG8gcmF0 aGVyIGdvIHdpdGggbWFya2Rvd246CjEuIGl0IHByb3ZpZGVzIHJlYWRhYmxlIHJhdyBvdXRwdXQK Mi4gdGhlcmUgYXJlIHBsZW50eSBvZiBsaWJyYXJpZXMgd2hpY2ggY2FuIHJlbmRlciBpdCB0byB2 YXJpb3VzCmZvcm1hdHMgKGluY2x1ZGluZyBIVE1MKQoKPiAKPiAgICAgLyoqCj4gICAgICAqIE9i amVjdCBhYm91dCB3aGljaCB0aGUgZG9jdW1lbnRhdGlvbiBpcy4KPiAgICAgICoKPiAgICAgICog SWYgbm90IE5VTEwsIHBvaW50cyB0byBhbiBvYmplY3Qgc3RhcnRpbmcgd2l0aCBhbiBBVkNsYXNz IHBvaW50ZXIuCj4gICAgICAqLwo+ICAgICB2b2lkICpvYmplY3Q7Cj4gCj4gICAgIC8qKgo+ICAg ICAgKiBMaW5rcyB0b3dhcmRzIG90aGVyIG5vZGVzLgo+ICAgICAgKgo+ICAgICAgKiBBbGwgbm9k ZXMgbGlua2VkIGluIHRoZSB0ZXh0IG11c3QgaGF2ZSBhbiBlbnRyeSBoZXJlLCBidXQgaW1wbGlj aXQKPiAgICAgICogbGlua3MgYXJlIHBvc3NpYmxlIHRvbywgZm9yIGV4YW1wbGUgdGhlIHR5cGUg b2YgYW4gb3B0aW9uLgo+ICAgICAgKgo+ICAgICAgKiBUaGUgdHlwZXMgYXJlIG9yZGVyZWQgYnkg dHlwZS4KPiAgICAgICovCj4gICAgIGNvbnN0IEFWRG9jTGluayAqbGlua3M7Cj4gCgo+ICAgICAv KioKPiAgICAgICogVHlwZSBvZiB0aGUgbm9kZSwgYW5kIG9mIHRoZSBvYmplY3QgZG9jdW1lbnRl ZC4KPiAgICAgICovCj4gICAgIEFWRG9jTm9kZVR5cGUgdHlwZTsKCldlIGFscmVhZHkgZGVmaW5l IEFWX0NMQVNTX0NBVEVHT1JZIChsaWJhdnV0aWwvbG9nLmgpLCBjb3VsZCBpdCBiZQphZGp1c3Rl ZCBmb3IgdGhpcyBzY29wZT8KCj4gfTsKPiAKPiAvKioKPiAgKiBUeXBlIG9mIGEgZG9jdW1lbnRh dGlvbiBub2RlLgo+ICAqLwo+IGVudW0gQVZEb2NOb2RlVHlwZSB7Cj4gICAgIEFWRE9DX1RZUEVf R0VORVJJQyA9IDAsCj4gICAgIEFWRE9DX1RZUEVfTVVYRVIsCj4gICAgIEFWRE9DX1RZUEVfREVN VVhFUiwKPiAgICAgQVZET0NfVFlQRV9FTkNPREVSLAo+ICAgICBBVkRPQ19UWVBFX0RFQ09ERVIs Cj4gICAgIEFWRE9DX1RZUEVfRklMVEVSLAo+ICAgICBBVkRPQ19UWVBFX0JJVFNUUkVBTV9GSUxU RVIsCj4gICAgIEFWRE9DX1RZUEVfU1dTQ0FMRVIsCj4gICAgIEFWRE9DX1RZUEVfU1dSRVNBTVBM RVIsCj4gICAgIEFWRE9DX1RZUEVfREVWSUNFX1ZJREVPX09VVFBVVCwKPiAgICAgQVZET0NfVFlQ RV9ERVZJQ0VfVklERU9fSU5QVVQsCj4gICAgIEFWRE9DX1RZUEVfREVWSUNFX0FVRElPX09VVFBV VCwKPiAgICAgQVZET0NfVFlQRV9ERVZJQ0VfQVVESU9fSU5QVVQsCj4gICAgIEFWRE9DX1RZUEVf REVWSUNFX09VVFBVVCwKPiAgICAgQVZET0NfVFlQRV9ERVZJQ0VfSU5QVVQsCj4gICAgIEFWRE9D X1RZUEVfT1BUSU9OLAo+ICAgICBBVkRPQ19UWVBFX1RZUEUsCj4gICAgIEFWRE9DX1RZUEVfU1lO VEFYLAo+ICAgICBBVkRPQ19UWVBFX0VYQU1QTEVTLAo+ICAgICBBVkRPQ19UWVBFX0VYUExBTkFU SU9OUywKPiB9Owo+IAo+IC8qKgo+ICAqIFR5cGUgb2YgYSBsaW5rLCBpLmUuIHJlbGF0aW9uIGJl dHdlZW4gdGhlIHNvdXJjZSBhbmQgdGhlIHRhcmdldCBvZiB0aGUKPiAgKiBsaW5rLgo+ICAqCj4g ICogTW9yZSBpbXBvcnRhbnQgbGlua3MgaGF2ZSBhIGxvd2VyIHZhbHVlLgo+ICAqLwo+IGVudW0g QVZEb2NMaW5rVHlwZSB7Cj4gCj4gICAgIC8qKgo+ICAgICAgKiBUaGUgbGlua2VkIG5vZGUgaXMg dGhlIHBhcmVudC4KPiAgICAgICoKPiAgICAgICogRm9yIGV4YW1wbGUsIHRoZSBwYXJlbnQgdGhl IG5vZGUgZm9yIGEgcHJpdmF0ZSBvcHRpb24gaXMgdGhlIG5vZGUgZm9yCj4gICAgICAqIHRoZSBj b3JyZXNwb25kaW5nIGNvZGVjL2Zvcm1hdC9maWx0ZXIuCj4gICAgICAqLwo+ICAgICBBVkRPQ19M SU5LX1BBUkVOVCA9IDB4MTAwLAo+IAo+ICAgICAvKioKPiAgICAgICogVGhlIGxpbmtlZCBub2Rl IGlzIGEgc3VicGFydCwgc2VjdGlvbiwgY2hhcHRlciwgZXRjLgo+ICAgICAgKi8KPiAgICAgQVZE T0NfTElOS19TVUJQQVJUID0gMHgyMDAsCj4gCgo+ICAgICAvKioKPiAgICAgICogVGhlIGxpbmtl ZCBub2RlIGRlc2NyaWJlcyBhbiBvcHRpb24gb3IgYW4gb3B0aW9uIGNvbnN0YW50Lgo+ICAgICAg Ki8KPiAgICAgQVZET0NfTElOS19PUFRJT04gPSAweDMwMCwKCj4gICAgIC8qKgo+ICAgICAgKiBU aHJlc2hvbGQgdmFsdWUgZm9yIHRoZSBzZWxmLWNvbnRhaW5lZCBtaW5pbWFsIGRvY3VtZW50YXRp b24gb2YgYW4KPiAgICAgICogb2JqZWN0Lgo+ICAgICAgKi8KCkkgY2Fubm90IHBhcnNlIHRoaXMs IHdoZXJlIGlzIHRoZSB0aHJlc2hvbGQgdmFsdWUgZGVmaW5lZD8KCj4gICAgIEFWRE9DX0xJTktf U0VMRl9DT05UQUlORUQgPSAweDQwMCwKPiAKPiAgICAgLyoqCj4gICAgICAqIFRoZSBsaW5rZWQg bm9kZSBpcyB0aGUgcmVmZXJlbmNlIGZvciBhIHR5cGUsIHN5bnRheCwgZXRjLgo+ICAgICAgKi8K PiAgICAgQVZET0NfTElOS19SRUZFUkVOQ0UgPSAweDUwMCwKPiAKPiAgICAgLyoqCj4gICAgICAq IFRocmVzaG9sZCB2YWx1ZSBmb3IgdGhlIHNlbGYtY29udGFpbmVkIGNvbXBsZXRlIGRvY3VtZW50 YXRpb24gb2YgYW4KPiAgICAgICogb2JqZWN0LCBpbmNsdWRpbmcgcmVmZXJuY2UgZm9yIHR5cGVz IGFuZCBzeW50YXhlcy4KPiAgICAgICovCj4gICAgIEFWRE9DX0xJTktfU0VMRl9DT05UQUlORURf RlVMTCA9IDB4NjAwLAo+IAoKPiAgICAgLyoqCj4gICAgICAqIFRoZSBsaW5rZWQgbm9kZSBjb250 YWlucyBkZXRhaWxzIGFuZCBleHBsYW5hdGlvbnMuCj4gICAgICAqLwo+ICAgICBBVkRPQ19MSU5L X0RFVEFJTFMgPSAweDcwMCwKCk1heWJlIGFuIGV4YW1wbGUgd291bGQgY2xhcmlmeSB0aGlzLCBz aW5jZSB0aGVyZSBpcyBhbWJpZ3VpdHkgYWJvdXQKd2hhdCBkZWZhdWx0IGFuZCBleHBsYW5hdGlv bnMgYXJlLgoKPiB9Owo+IAo+IHR5cGVkZWYgc3RydWN0IEFWRG9jRXhjZXJwdCBBVkRvY0V4Y2Vy cHQ7Cj4gdHlwZWRlZiBzdHJ1Y3QgQVZEb2NUb2NOb2RlIEFWRG9jVG9jTm9kZTsKPiAKCj4gLyoq Cj4gICogRXhjZXJwdCBvZiB0aGUgZG9jdW1lbnRhdGlvbiwgc3RydWN0dXJlZCBhbmQgd2l0aCBs aW5rcy4KPiAgKgo+ICAqIEFsd2F5cyByZXR1cm5lZCBieSB0aGUgbGlicmFyeS4KPiAgKgo+ICAq IFRoaXMgc3RydWN0dXJlIGlzIHRoZSByb290IG9mIGEgdHJlZSBvZiBBVkRvY1RvY05vZGU7Cj4g ICogc2libGluZ3MgaW4gdGhlIHRyZWUgYXJlIHN0cnVjdHVyZWQgYXMgYSBsaW5rZWQgbGlzdC4K PiAgKi8KPiBzdHJ1Y3QgQVZEb2NFeGNlcnB0IHsKPiAKPiAgICAgLyoqCj4gICAgICAqIEZpcnN0 IG5vZGUgb2YgdGhlIGV4Y2VycHQKPiAgICAgICovCj4gICAgIEFWRG9jVG9jTm9kZSAqYmVnaW47 Cj4gCj4gfTsKCmlzbid0IHRoaXMgcmVkdW5kYW50PyBjYW4ndCB5b3UganVzdCB1c2UgQVZEb2NU b2NOb2RlPwoKPiAvKioKPiAgKiBOb2RlIGluIGFuIGV4Y2VycHQgb2YgdGhlIGRvY3VtZW50YXRp b24uCj4gICoKPiAgKiBUaGlzIGNvbnRhaW5zIHRoZSBub2RlIGFuZCBpdHMgcmVsYXRpb24gd2l0 aCBvdGhlciBub2Rlcy4KPiAgKi8KPiBzdHJ1Y3QgQVZEb2NUb2NOb2RlIHsKCkkgZGlzbGlrZSB0 aGlzIG5hbWUsIGFzIGl0IGlzIG5vdCBkZXNjcmlwdGl2ZSBhdCBhbGwgKEkgYXNzdW1lIFRvYwpz dGFuZHMgZm9yIFRhYmxlIE9mIENvbnRlbnRzKS4gTWF5YmUgQVZEb2NOb2RlQ29udGV4dD8KCj4g Cj4gICAgIEFWRG9jTm9kZSAqbm9kZTsKPiAKPiAgICAgQVZEb2NUb2NOb2RlICpuZXh0Owo+IAo+ ICAgICBBVkRvY1RvY05vZGUgKmZpcnN0X2NoaWxkOwo+IAo+IH07Cgo+IC8qKgo+ICAqIEdldCB0 aGUgZG9jdW1lbnRhdGlvbiBub2RlIGFzc29jaWF0ZWQgd2l0aCBhbiBvYmplY3QsIGlmIGFueS4K PiAgKgo+ICAqIG9iaiBtdXN0IHBvaW50IHRvIGFuIG9iamVjdCBzdGFydGluZyB3aXRoIGFuIEFW Q2xhc3MgcG9pbnRlci4KPiAgKi8KPiBjb25zdCBBVkRvY05vZGUgKmF2X2RvY3VtZW50YXRpb25f Z2V0X25vZGUodm9pZCAqb2JqKTsKPiAKPiAvKioKPiAgKiBHZXQgYW4gZXhjZXJwdCBvZiB0aGUg ZG9jdW1lbnRhdGlvbiBhcm91bmQgYSBub2RlLgo+ICAqCj4gICogQHBhcmFtIGV4Y2VycHQgICAg dXNlZCB0byByZXR1cm4gdGhlIGV4Y2VycHQKPiAgKiBAcGFyYW0gbm9kZXMgICAgICBub2RlcyB0 byBkb2N1bWVudDsKPiAgKiAgICAgICAgICAgICAgICAgICBpZiBvbmUgaXMgTlVMTCwgaXQgaXMg c2tpcHBlZDsKPiAgKiAgICAgICAgICAgICAgICAgICBpZiBhbGwgYXJlIE5VTEwsIGEgZHVtbXkg ZG9jdW1lbnRhdGlvbiBpcyByZXR1cm5lZAo+ICAqIEBwYXJhbSBuYl9ub2RlcyAgIG51bWJlciBv ZiBub2Rlcwo+ICAqIEBwYXJhbSB0aHJlc2hvbGQgIGxpbWl0IG9mIHRoZSBleGNlcnB0LCBpdCB3 aWxsIGNvbnRhaW4gYWxsIG5vZGVzIHBvaW50ZWQKPiAgKiAgICAgICAgICAgICAgICAgICBieSBs aW5rcyB0aGF0IGFyZSBiZWxvdyB0aGUgdGhyZXNob2xkLCByZWN1cnNpdmVseTsKPiAgKiAgICAg ICAgICAgICAgICAgICBBVkRPQ19MSU5LX1NFTEZfQ09OVEFJTkVEIGFuZAo+ICAqICAgICAgICAg ICAgICAgICAgIEFWRE9DX0xJTktfU0VMRl9DT05UQUlORURfRlVMTCBhcmUgdXNlZnVsIHZhbHVl cy4KPiAgKiBAcmV0dXJuICA+PSAwIGZvciBzdWNjZXNzIG9yIGFuIEFWRVJST1IgY29kZSwgcG9z c2libHkgQVZFUlJPUihFTk9NRU0pCj4gICovCj4gaW50IGF2X2RvY3VtZW50YXRpb25fZ2V0X2V4 Y2VycHQoQVZEb2NFeGNlcnB0ICoqZXhjZXJwdCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBBVkRvY05vZGUgKipub2RlLCB1bnNpZ25lZCBuYl9ub2RlcywKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVkRvY0xpbmtUeXBlIHRocmVzaG9sZCk7Cj4g Cj4gdHlwZWRlZiBlbnVtIEFWRG9jRm9ybWF0IHsKPiAgICAgQVZfRE9DX0ZPUk1BVF9IVE1MLAo+ ICAgICBBVl9ET0NfRk9STUFUX01BUktET1dOLAo+IH07Cj4gCj4gI2RlZmluZSBBVl9ET0NfRk9S TUFUX0ZMQUdfVE9DIDB4MDAwMQo+IAo+IC8qKgo+ICAqIFNlcmlhbGl6ZSBhIGRvY3VtZW50YXRp b24gZXhjZXJwdC4KPiAgKi8KPiB2b2lkIGF2X2RvY3VtZW50YXRpb25fd3JpdGUoQVZXcml0ZXIg d3IsIEFWRG9jRXhjZXJwdCAqKmV4Y2VycHQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg IEFWRG9jRm9ybWF0IGZvcm1hdCwgdW5zaWduZWQgZmxhZ3MpOwoKQ2FuIHlvdSBzaGFyZSBtb3Jl IGRldGFpbHMgYWJvdXQgdGhlIHBsYW4/IEluIHBhcnRpY3VsYXIsIGlzIHRoZSBkb2MKZ29pbmcg dG8gYmUgZW1iZWRkZWQgaW4gdGhlIGNvZGUgaXRzZWxmIChlLmcuIGluIHRoZSBDCmltcGxlbWVu dGF0aW9uKT8gT3Igc2hvdWxkIHdlIGhhdmUgc29tZSBkZWRpY2F0ZWQgaGVhZGVycyBjb250YWlu aW5nCnRoZSBkb2NzPwoKV2Ugc2hvdWxkIGFsc28gYXZvaWQgdG8gZHVwbGljYXRlIHRoZSBzYW1l IGluZm9ybWF0aW9uIGJldHdlZW4gZG9jcwphbmQgY29kZSwgc28gdGhlcmUgc2hvdWxkIGJlIHNv bWUgd2F5IHRvIGF1dG9nZW5lcmF0ZSB0aGUgZG9jcyBmcm9tCnRoZSBjb3JyZXNwb25kaW5nIGVu dHJpZXMgaW4gdGhlIGNvZGUuCgoKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBmZm1wZWctZGV2ZWxA ZmZtcGVnLm9yZwo+IGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1k ZXZlbAo+IAo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+IGZm bXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIu CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWct ZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVn Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0 IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0 aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==