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 9EB12452E3 for ; Mon, 20 Mar 2023 08:50:57 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CED1D68C461; Mon, 20 Mar 2023 10:50:54 +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 69E3068C3E4 for ; Mon, 20 Mar 2023 10:50:48 +0200 (EET) Received: by mail-vs1-f45.google.com with SMTP id d2so3566000vso.9 for ; Mon, 20 Mar 2023 01:50:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679302247; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=gwsjH6KYC9G3yy9/iv6itTIzeeKPR+HZJpCSUsirxfM=; b=WfUMwnqVinNjbTawo0NVob5oqN6gNc4kCigSc8MjeuoqlIOTsqKc/Bme9iwjeY0Xw/ +awIIb9Z/U/o0BwSDuMRoyB4ewpGU6Xnt5kBpv2UWk/NE2RiVtjKpM/KOQAi3nw6DrmK HNXsPtsC3WzwqFiQi+Sen1LD3ACBoPR+HuXDyDVUV2V0m6ynnM1cU9cWteevsTp6fSjM g7M/Qq+kSI5IKkeY/Pl0uOX4I2hR1ZV6CgVYCPkiE5+MXHpKL8j+FfZ/zdJN5UGsO5Hl zrhzWQikkD0uLBvWaM7o3uTvpIE4zOveWTaq8Vmu7ttCENNTVNtCnMW15xdDcf88OdkJ JpEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679302247; h=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=gwsjH6KYC9G3yy9/iv6itTIzeeKPR+HZJpCSUsirxfM=; b=R22LIaCZ8VKcDJaJzoQxOPMVvFiB8fGoJoCVU3AaK3Hd3/P/HrOHsZqLxDMSSzUyCy OkUk4du5pypTER3rbTozItc9ANBsSc3M92X/Rsc/P1DCZqh1jKAmlCxZXrwnAF75rA+8 YNOtg3GrC7rbcZ9eIaoUIFmqjC6ZH06E6ZTQTEfVmrZzgM/5nx32SBmHCphMkxILfLrk k0WNIBHfgBwO8sWxwW1VRUsHvMR9QqGu4SbdSlIG0q4+8di18TZU06Pqj+nmMeDBPRM8 kgz5VO078FS0FmjOeBQQ18fWaw4CH4G0V9qEq6rLbgL2OzkdCfCiI39FLf8MUD9EZP8Z fIbQ== X-Gm-Message-State: AO0yUKXWecoCzwMia9bXrDuHJ7WqlcsBTHd/OY8snDEJX0BLPSO2a/Vg 4Zkk/10fKRhm8hc303keGNM8Mll+wsGXAso5boxpJwQG X-Google-Smtp-Source: AK7set/OIus3eCW1mK/EtVMpLZ7jX5YZ92x+X9RDGpQkXAeCagq+9V/EiK/ggrVMtpWBr2zwMfr2R66swORa91es5pU= X-Received: by 2002:a67:d518:0:b0:402:999f:51dd with SMTP id l24-20020a67d518000000b00402999f51ddmr3657065vsj.3.1679302246455; Mon, 20 Mar 2023 01:50:46 -0700 (PDT) MIME-Version: 1.0 References: <8d713a21-f2f0-5c8d-fa93-0278965509e5@tiscali.it> <47ee718c-bce0-cffa-9c6a-2889a6547017@tiscali.it> <9ae25c06-73ce-f3b6-7a29-3dd8e3e530c3@tiscali.it> <167898554590.31370.14710235662474104045@lain.khirnov.net> <6ff579f4-dbed-5d62-a72c-96a2b9a18aef@tiscali.it> In-Reply-To: <6ff579f4-dbed-5d62-a72c-96a2b9a18aef@tiscali.it> From: Paul B Mahol Date: Mon, 20 Mar 2023 09:50:30 +0100 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] drawtext filter 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: T24gTW9uLCBNYXIgMjAsIDIwMjMgYXQgODo0MeKAr0FNIEZyYW5jZXNjbyBDYXJ1c2kgPGtsaW1r bGltQHRpc2NhbGkuaXQ+Cndyb3RlOgoKPiBXb3VsZCBpdCBiZSBvayBpZiBJIHNwbGl0IHRoZSBw YXRjaCBzbyB0aGF0IG9uZSBpcyBkZWRpY2F0ZWQgdG8KPiBjb3NtZXRpY3MgYW5kIG9uZSB0byB0 aGUgaW1wbGVtZW50YXRpb24/Cj4gSSdsbCBhbHNvIHJlbW92ZSB0aGUgY2hhbmdlIGxvZyBzZWN0 aW9uIGFuZCB0aGUgZm9yd2FyZCBkZWNsYXJhdGlvbnMgYW5kCj4gaW1wcm92ZSB0aGUgZXJyb3Ig Y2hlY2tpbmcuCj4KClllcyBzcGxpdCBpdC4KCgpOb3RlIHRoYXQgcmV2aWV3ZXJzIGhlcmUgdGVu ZCB0byByZXZpZXcgb25seSBhZnRlciBiaWcgdGltZSBwYXNzZXMgYW5kIGFyZQp1c3VhbGx5IG5p dHBpY2tpbmcgYWxsIHRoZSB0aW1lLgoKCj4KPiBPbiAxNi8wMy8yMDIzIDE3OjUyLCBBbnRvbiBL aGlybm92IHdyb3RlOgo+ID4gT3ZlcmFsbCB0aGlzIHBhdGNoIGNvdWxkIHVzZSBhIGxvdCBtb3Jl IHBvbGlzaC4gSSByZWFsbHkgd2lzaCB5b3UKPiA+IGRldmVsb3BlZCBpdCBpbiBhIG1vcmUgcmV2 aWV3LWZyaWVuZGx5IGZvcm0uCj4gPiBUaGUgY29tbWl0IG1lc3NhZ2Ugc2hvdWxkIHVzZSBzdGFu ZGFyZCBmb3JtIGFuZCBlbGFib3JhdGUgb24gd2hhdAo+ID4gYWR2YW50YWdlIGRvIHdlIGdldCBm cm9tIHRoaXMgaHVnZSBjaGFuZ2UsIHdoaWNoIGFsc28gYWRkcyBhIG5ldwo+ID4gZGVwZW5kZW5k ZW5jeS4KPiA+Cj4gPgo+ID4gUXVvdGluZyBGcmFuY2VzY28gQ2FydXNpICgyMDIzLTAyLTAzIDE1 OjE4OjIxKQo+ID4+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jIGIvbGli YXZmaWx0ZXIvdmZfZHJhd3RleHQuYwo+ID4+IGluZGV4IDUwMDEyYmIyNTguLjdhMGEyNTVjNWUg MTAwNjQ0Cj4gPj4gLS0tIGEvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwo+ID4+ICsrKyBiL2xp YmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMKPiA+IFlvdSBhcmUgYWRkaW5nIGEgYnVuY2ggb2YgdHJh aWxpbmcgd2hpdGVzcGFjZSBpbiB0aGUgZmlsZSwgd2hpY2ggaXMKPiA+IGZvcmJpZGRlbi4KPiA+ Cj4gPj4gQEAgLTEsNCArMSw1IEBACj4gPj4gICAvKgo+ID4+ICsgKiBDb3B5cmlnaHQgKGMpIDIw MjMgRnJhbmNlc2NvIENhcnVzaQo+ID4+ICAgICogQ29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbm8g U2FiYXRpbmkKPiA+PiAgICAqIENvcHlyaWdodCAoYykgMjAxMCBTLk4uIEhlbWFudGggTWVlbmFr c2hpc3VuZGFyYW0KPiA+PiAgICAqIENvcHlyaWdodCAoYykgMjAwMyBHdXN0YXZvIFN2ZXJ6dXQg QmFyYmllcmkgPAo+IGdzYmFyYmllcmlAeWFob28uY29tLmJyPgo+ID4+IEBAIC0yMCw2ICsyMSwx NCBAQAo+ID4+ICAgICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4gPj4gICAgKi8KPiA+Pgo+ID4+ ICsvKgo+ID4+ICsgKiBDaGFuZ2Vsb2cgLSAyMDIzCj4gPj4gKyAqCj4gPj4gKyAqIC0gVGhpcyBm aWx0ZXIgbm93IGRlcGVuZHMgb24gbGliaGFyZmJ1enogZm9yIHRleHQgc2hhcGluZy4KPiA+PiAr ICogLSBHbHlwaHMgcG9zaXRpb24gaXMgbm93IGFjY3VyYXRlIHRvIDEvNCBwaXhlbCBpbiBib3Ro IGRpcmVjdGlvbnMKPiA+PiArICogLSBUaGUgZGVmYXVsdCBsaW5lIGhlaWdodCBpcyBub3cgdGhl IG9uZSBkZWZpbmVkIGluIHRoZSBmb250Cj4gPj4gKyAqLwo+ID4gVGhpcyBpcyBub3QgdGhlIHBs YWNlIGZvciBhIGNoYW5nZWxvZywgdGhhdCdzIHdoYXQgY29tbWl0IG1lc3NhZ2VzIGFuZAo+ID4g dGhlIENoYW5nZWxvZyBmaWxlIGFyZSBmb3IuCj4gPgo+ID4+ICsKPiA+PiAgIC8qKgo+ID4+ICAg ICogQGZpbGUKPiA+PiAgICAqIGRyYXd0ZXh0IGZpbHRlciwgYmFzZWQgb24gdGhlIG9yaWdpbmFs IHZob29rL2RyYXd0ZXh0LmMKPiA+PiBAQCAtNzIsMTQgKzgxLDIwIEBACj4gPj4gICAjaW5jbHVk ZSBGVF9HTFlQSF9ICj4gPj4gICAjaW5jbHVkZSBGVF9TVFJPS0VSX0gKPiA+Pgo+ID4+ICsjaW5j bHVkZSA8aGIuaD4KPiA+PiArI2luY2x1ZGUgPGhiLWZ0Lmg+Cj4gPj4gKwo+ID4+ICsvLyBDZWls aW5nIG9wZXJhdGlvbiBmb3IgcG9zaXRpdmUgaW50ZWdlcnMgZGl2aXNpb24KPiA+PiArI2RlZmlu ZSBQT1NfQ0VJTCh4LCB5KSAoKHgpLyh5KSArICgoeCklKHkpICE9IDApKQo+ID4+ICsKPiA+PiAg IHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCB2YXJfbmFtZXNbXSA9IHsKPiA+PiAgICAgICAiZGFy IiwKPiA+PiAgICAgICAiaHN1YiIsICJ2c3ViIiwKPiA+PiAtICAgICJsaW5lX2giLCAibGgiLCAg ICAgICAgICAgLy8vPCBsaW5lIGhlaWdodCwgc2FtZSBhcyBtYXhfZ2x5cGhfaAo+ID4+ICsgICAg ImxpbmVfaCIsICJsaCIsICAgICAgICAgICAvLy88IGxpbmUgaGVpZ2h0Cj4gPj4gICAgICAgIm1h aW5faCIsICJoIiwgIkgiLCAgICAgICAvLy88IGhlaWdodCBvZiB0aGUgaW5wdXQgdmlkZW8KPiA+ PiAgICAgICAibWFpbl93IiwgInciLCAiVyIsICAgICAgIC8vLzwgd2lkdGggIG9mIHRoZSBpbnB1 dCB2aWRlbwo+ID4+IC0gICAgIm1heF9nbHlwaF9hIiwgImFzY2VudCIsICAvLy88IG1heCBnbHlw aCBhc2NlbnQKPiA+PiAtICAgICJtYXhfZ2x5cGhfZCIsICJkZXNjZW50IiwgLy8vPCBtaW4gZ2x5 cGggZGVzY2VudAo+ID4+ICsgICAgIm1heF9nbHlwaF9hIiwgImFzY2VudCIsICAvLy88IG1heCBn bHlwaCBhc2NlbmRlcgo+ID4+ICsgICAgIm1heF9nbHlwaF9kIiwgImRlc2NlbnQiLCAvLy88IG1p biBnbHlwaCBkZXNjZW5kZXIKPiA+IFNlZW1zIGxpa2UgdGhpcyBzaG91bGQgbm90IGJlIGluIHRo aXMgcGF0Y2guCj4gPgo+ID4+ICAgc3RhdGljIGNvbnN0IEFWT3B0aW9uIGRyYXd0ZXh0X29wdGlv bnNbXT0gewo+ID4+IC0gICAgeyJmb250ZmlsZSIsICAgICJzZXQgZm9udCBmaWxlIiwgICAgICAg IE9GRlNFVChmb250ZmlsZSksCj4gIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVMTH0sICAw LCAwLCBGTEFHU30sCj4gPj4gLSAgICB7InRleHQiLCAgICAgICAgInNldCB0ZXh0IiwgICAgICAg ICAgICAgT0ZGU0VUKHRleHQpLAo+ICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9LCAg MCwgMCwgRkxBR1N9LAo+ID4+IC0gICAgeyJ0ZXh0ZmlsZSIsICAgICJzZXQgdGV4dCBmaWxlIiwg ICAgICAgIE9GRlNFVCh0ZXh0ZmlsZSksCj4gIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVM TH0sICAwLCAwLCBGTEFHU30sCj4gPj4gLSAgICB7ImZvbnRjb2xvciIsICAgInNldCBmb3JlZ3Jv dW5kIGNvbG9yIiwgT0ZGU0VUKGZvbnRjb2xvci5yZ2JhKSwKPiAgQVZfT1BUX1RZUEVfQ09MT1Is ICB7LnN0cj0iYmxhY2sifSwgMCwgMCwgRkxBR1N9LAo+ID4+ICsgICAgeyJmb250ZmlsZSIsICAg ICAgICJzZXQgZm9udCBmaWxlIiwgICAgICAgICBPRkZTRVQoZm9udGZpbGUpLAo+ICAgICAgQVZf T1BUX1RZUEVfU1RSSU5HLCB7LnN0cj1OVUxMfSwgIDAsIDAsIEZMQUdTfSwKPiA+PiArICAgIHsi dGV4dCIsICAgICAgICAgICAic2V0IHRleHQiLCAgICAgICAgICAgICAgT0ZGU0VUKHRleHQpLAo+ ICAgICAgQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0cj1OVUxMfSwgIDAsIDAsIEZMQUdTfSwKPiA+ PiArICAgIHsidGV4dGZpbGUiLCAgICAgICAic2V0IHRleHQgZmlsZSIsICAgICAgICAgT0ZGU0VU KHRleHRmaWxlKSwKPiAgICAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVMTH0sICAwLCAw LCBGTEFHU30sCj4gPj4gKyAgICB7ImZvbnRjb2xvciIsICAgICAgInNldCBmb3JlZ3JvdW5kIGNv bG9yIiwKPiBPRkZTRVQoZm9udGNvbG9yLnJnYmEpLCAgICAgQVZfT1BUX1RZUEVfQ09MT1IsICB7 LnN0cj0iYmxhY2sifSwgMCwgMCwKPiBGTEFHU30sCj4gPj4gICAgICAgeyJmb250Y29sb3JfZXhw ciIsICJzZXQgZm9yZWdyb3VuZCBjb2xvciBleHByZXNzaW9uIiwKPiBPRkZTRVQoZm9udGNvbG9y X2V4cHIpLCBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPSIifSwgMCwgMCwgRkxBR1N9LAo+ID4+ IC0gICAgeyJib3hjb2xvciIsICAgICJzZXQgYm94IGNvbG9yIiwgICAgICAgIE9GRlNFVChib3hj b2xvci5yZ2JhKSwKPiAgIEFWX09QVF9UWVBFX0NPTE9SLCAgey5zdHI9IndoaXRlIn0sIDAsIDAs IEZMQUdTfSwKPiA+PiAtICAgIHsiYm9yZGVyY29sb3IiLCAic2V0IGJvcmRlciBjb2xvciIsICAg ICBPRkZTRVQoYm9yZGVyY29sb3IucmdiYSksCj4gIEFWX09QVF9UWVBFX0NPTE9SLCAgey5zdHI9 ImJsYWNrIn0sIDAsIDAsIEZMQUdTfSwKPiA+PiAtICAgIHsic2hhZG93Y29sb3IiLCAic2V0IHNo YWRvdyBjb2xvciIsICAgICBPRkZTRVQoc2hhZG93Y29sb3IucmdiYSksCj4gIEFWX09QVF9UWVBF X0NPTE9SLCAgey5zdHI9ImJsYWNrIn0sIDAsIDAsIEZMQUdTfSwKPiA+PiAtICAgIHsiYm94Iiwg ICAgICAgICAic2V0IGJveCIsICAgICAgICAgICAgICBPRkZTRVQoZHJhd19ib3gpLAo+ICBBVl9P UFRfVFlQRV9CT09MLCAgIHsuaTY0PTB9LCAgICAgMCwgICAgICAgIDEgICAgICAgLCBGTEFHU30s Cj4gPj4gLSAgICB7ImJveGJvcmRlcnciLCAgInNldCBib3ggYm9yZGVyIHdpZHRoIiwgT0ZGU0VU KGJveGJvcmRlcncpLAo+ICBBVl9PUFRfVFlQRV9JTlQsICAgIHsuaTY0PTB9LCAgICAgSU5UX01J TiwgIElOVF9NQVggLCBGTEFHU30sCj4gPj4gLSAgICB7ImxpbmVfc3BhY2luZyIsICAic2V0IGxp bmUgc3BhY2luZyBpbiBwaXhlbHMiLAo+IE9GRlNFVChsaW5lX3NwYWNpbmcpLCAgIEFWX09QVF9U WVBFX0lOVCwgICAgey5pNjQ9MH0sICAgICBJTlRfTUlOLAo+IElOVF9NQVgsRkxBR1N9LAo+ID4+ IC0gICAgeyJmb250c2l6ZSIsICAgICJzZXQgZm9udCBzaXplIiwgICAgICAgIE9GRlNFVChmb250 c2l6ZV9leHByKSwKPiAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVMTH0sICAwLCAwICwg RkxBR1N9LAo+ID4+IC0gICAgeyJ4IiwgICAgICAgICAgICJzZXQgeCBleHByZXNzaW9uIiwgICAg IE9GRlNFVCh4X2V4cHIpLAo+ICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPSIwIn0sICAgMCwg MCwgRkxBR1N9LAo+ID4+IC0gICAgeyJ5IiwgICAgICAgICAgICJzZXQgeSBleHByZXNzaW9uIiwg ICAgIE9GRlNFVCh5X2V4cHIpLAo+ICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPSIwIn0sICAg MCwgMCwgRkxBR1N9LAo+ID4+IC0gICAgeyJzaGFkb3d4IiwgICAgICJzZXQgc2hhZG93IHggb2Zm c2V0IiwgIE9GRlNFVChzaGFkb3d4KSwKPiAgIEFWX09QVF9UWVBFX0lOVCwgICAgey5pNjQ9MH0s ICAgICBJTlRfTUlOLCAgSU5UX01BWCAsIEZMQUdTfSwKPiA+PiAtICAgIHsic2hhZG93eSIsICAg ICAic2V0IHNoYWRvdyB5IG9mZnNldCIsICBPRkZTRVQoc2hhZG93eSksCj4gICBBVl9PUFRfVFlQ RV9JTlQsICAgIHsuaTY0PTB9LCAgICAgSU5UX01JTiwgIElOVF9NQVggLCBGTEFHU30sCj4gPj4g LSAgICB7ImJvcmRlcnciLCAgICAgInNldCBib3JkZXIgd2lkdGgiLCAgICAgT0ZGU0VUKGJvcmRl cncpLAo+ICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2ND0wfSwgICAgIElOVF9NSU4sICBJTlRf TUFYICwgRkxBR1N9LAo+ID4+IC0gICAgeyJ0YWJzaXplIiwgICAgICJzZXQgdGFiIHNpemUiLCAg ICAgICAgIE9GRlNFVCh0YWJzaXplKSwKPiAgIEFWX09QVF9UWVBFX0lOVCwgICAgey5pNjQ9NH0s ICAgICAwLCAgICAgICAgSU5UX01BWCAsIEZMQUdTfSwKPiA+PiAtICAgIHsiYmFzZXRpbWUiLCAg ICAic2V0IGJhc2UgdGltZSIsICAgICAgICBPRkZTRVQoYmFzZXRpbWUpLAo+ICBBVl9PUFRfVFlQ RV9JTlQ2NCwgIHsuaTY0PUFWX05PUFRTX1ZBTFVFfSwgSU5UNjRfTUlOLCBJTlQ2NF9NQVggLCBG TEFHU30sCj4gPj4gKyAgICB7ImJveGNvbG9yIiwgICAgICAgInNldCBib3ggY29sb3IiLAo+ICBP RkZTRVQoYm94Y29sb3IucmdiYSksICAgICAgQVZfT1BUX1RZUEVfQ09MT1IsICB7LnN0cj0id2hp dGUifSwgMCwgMCwKPiBGTEFHU30sCj4gPj4gKyAgICB7ImJvcmRlcmNvbG9yIiwgICAgInNldCBi b3JkZXIgY29sb3IiLAo+IE9GRlNFVChib3JkZXJjb2xvci5yZ2JhKSwgICBBVl9PUFRfVFlQRV9D T0xPUiwgIHsuc3RyPSJibGFjayJ9LCAwLCAwLAo+IEZMQUdTfSwKPiA+PiArICAgIHsic2hhZG93 Y29sb3IiLCAgICAic2V0IHNoYWRvdyBjb2xvciIsCj4gT0ZGU0VUKHNoYWRvd2NvbG9yLnJnYmEp LCAgIEFWX09QVF9UWVBFX0NPTE9SLCAgey5zdHI9ImJsYWNrIn0sIDAsIDAsCj4gRkxBR1N9LAo+ ID4+ICsgICAgeyJib3giLCAgICAgICAgICAgICJzZXQgYm94IiwgICAgICAgICAgICAgICBPRkZT RVQoZHJhd19ib3gpLAo+ICAgICAgQVZfT1BUX1RZUEVfQk9PTCwgICB7Lmk2ND0wfSwgICAgIDAs IDEsIEZMQUdTfSwKPiA+PiArICAgIHsiYm94Ym9yZGVydyIsICAgICAic2V0IGJveCBib3JkZXJz IHdpZHRoIiwgT0ZGU0VUKGJveGJvcmRlcncpLAo+ICAgICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7 Lmk2ND0wfSwgICAgIDAsIElOVF9NQVgsIEZMQUdTfSwKPiA+PiArICAgIHsibGluZV9zcGFjaW5n IiwgICAic2V0IGxpbmUgc3BhY2luZyBpbiBwaXhlbHMiLAo+IE9GRlNFVChsaW5lX3NwYWNpbmcp LCAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2ND0tMX0sICAgIElOVF9NSU4sIElOVF9NQVgsCj4g RkxBR1N9LAo+ID4+ICsgICAgeyJmb250c2l6ZSIsICAgICAgICJzZXQgZm9udCBzaXplIiwKPiAg T0ZGU0VUKGZvbnRzaXplX2V4cHIpLCAgICAgIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVM TH0sICAwLCAwLCBGTEFHU30sCj4gPj4gKyAgICB7IngiLCAgICAgICAgICAgICAgInNldCB4IGV4 cHJlc3Npb24iLCAgICAgIE9GRlNFVCh4X2V4cHIpLAo+ICAgICAgQVZfT1BUX1RZUEVfU1RSSU5H LCB7LnN0cj0iMCJ9LCAgIDAsIDAsIEZMQUdTfSwKPiA+PiArICAgIHsieSIsICAgICAgICAgICAg ICAic2V0IHkgZXhwcmVzc2lvbiIsICAgICAgT0ZGU0VUKHlfZXhwciksCj4gICAgICBBVl9PUFRf VFlQRV9TVFJJTkcsIHsuc3RyPSIwIn0sICAgMCwgMCwgRkxBR1N9LAo+ID4+ICsgICAgeyJzaGFk b3d4IiwgICAgICAgICJzZXQgc2hhZG93IHggb2Zmc2V0IiwgICBPRkZTRVQoc2hhZG93eCksCj4g ICAgICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2ND0wfSwgICAgIElOVF9NSU4sIElOVF9NQVgs IEZMQUdTfSwKPiA+PiArICAgIHsic2hhZG93eSIsICAgICAgICAic2V0IHNoYWRvdyB5IG9mZnNl dCIsICAgT0ZGU0VUKHNoYWRvd3kpLAo+ICAgICAgIEFWX09QVF9UWVBFX0lOVCwgICAgey5pNjQ9 MH0sICAgICBJTlRfTUlOLCBJTlRfTUFYLCBGTEFHU30sCj4gPj4gKyAgICB7ImJvcmRlcnciLCAg ICAgICAgInNldCBib3JkZXIgd2lkdGgiLCAgICAgIE9GRlNFVChib3JkZXJ3KSwKPiAgICAgICBB Vl9PUFRfVFlQRV9JTlQsICAgIHsuaTY0PTB9LCAgICAgSU5UX01JTiwgSU5UX01BWCwgRkxBR1N9 LAo+ID4+ICsgICAgeyJ0YWJzaXplIiwgICAgICAgICJzZXQgdGFiIHNpemUiLCAgICAgICAgICBP RkZTRVQodGFic2l6ZSksCj4gICAgICAgQVZfT1BUX1RZUEVfSU5ULCAgICB7Lmk2ND00fSwgICAg IDAsIElOVF9NQVgsIEZMQUdTfSwKPiA+PiArICAgIHsiYmFzZXRpbWUiLCAgICAgICAic2V0IGJh c2UgdGltZSIsICAgICAgICAgT0ZGU0VUKGJhc2V0aW1lKSwKPiAgICAgIEFWX09QVF9UWVBFX0lO VDY0LCAgey5pNjQ9QVZfTk9QVFNfVkFMVUV9LCBJTlQ2NF9NSU4sIElOVDY0X01BWCwKPiBGTEFH U30sCj4gPj4gICAjaWYgQ09ORklHX0xJQkZPTlRDT05GSUcKPiA+PiAgICAgICB7ICJmb250Iiwg ICAgICAgICJGb250IG5hbWUiLCAgICAgICAgICAgIE9GRlNFVChmb250KSwKPiAgICBBVl9PUFRf VFlQRV9TVFJJTkcsIHsgLnN0ciA9ICJTYW5zIiB9LCAgICAgICAgICAgLmZsYWdzID0gRkxBR1Mg fSwKPiA+PiAgICNlbmRpZgo+ID4+IEBAIC0yNDgsMTUgKzMzOCwxNSBAQCBzdGF0aWMgY29uc3Qg QVZPcHRpb24gZHJhd3RleHRfb3B0aW9uc1tdPSB7Cj4gPj4gICAgICAgICAgIHsic3RyZnRpbWUi LCAic2V0IHN0cmZ0aW1lIGV4cGFuc2lvbiAoZGVwcmVjYXRlZCkiLAo+IE9GRlNFVChleHBfbW9k ZSksIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2ND1FWFBfU1RSRlRJTUV9LCAwLCAwLCBGTEFHUywK PiAiZXhwYW5zaW9uIn0sCj4gPj4KPiA+PiAgICAgICB7InRpbWVjb2RlIiwgICAgICAgICJzZXQg aW5pdGlhbCB0aW1lY29kZSIsCj4gIE9GRlNFVCh0Y19vcHRfc3RyaW5nKSwgQVZfT1BUX1RZUEVf U1RSSU5HLCAgIHsuc3RyPU5VTEx9LCAwLCAwLCBGTEFHU30sCj4gPj4gLSAgICB7InRjMjRobWF4 IiwgICAgICAgICJzZXQgMjQgaG91cnMgbWF4ICh0aW1lY29kZSBvbmx5KSIsCj4gT0ZGU0VUKHRj MjRobWF4KSwgICAgICBBVl9PUFRfVFlQRV9CT09MLCAgICAgey5pNjQ9MH0sICAgICAgICAgICAw LAo+IDEsIEZMQUdTfSwKPiA+PiAtICAgIHsidGltZWNvZGVfcmF0ZSIsICAgInNldCByYXRlICh0 aW1lY29kZSBvbmx5KSIsCj4gIE9GRlNFVCh0Y19yYXRlKSwgICAgICAgQVZfT1BUX1RZUEVfUkFU SU9OQUwsIHsuZGJsPTB9LCAgICAgICAgICAgMCwKPiBJTlRfTUFYLCBGTEFHU30sCj4gPj4gLSAg ICB7InIiLCAgICAgICAgICAgICAgICJzZXQgcmF0ZSAodGltZWNvZGUgb25seSkiLAo+ICBPRkZT RVQodGNfcmF0ZSksICAgICAgIEFWX09QVF9UWVBFX1JBVElPTkFMLCB7LmRibD0wfSwgICAgICAg ICAgIDAsCj4gSU5UX01BWCwgRkxBR1N9LAo+ID4+IC0gICAgeyJyYXRlIiwgICAgICAgICAgICAi c2V0IHJhdGUgKHRpbWVjb2RlIG9ubHkpIiwKPiAgT0ZGU0VUKHRjX3JhdGUpLCAgICAgICBBVl9P UFRfVFlQRV9SQVRJT05BTCwgey5kYmw9MH0sICAgICAgICAgICAwLAo+IElOVF9NQVgsIEZMQUdT fSwKPiA+PiAtICAgIHsicmVsb2FkIiwgICAgICJyZWxvYWQgdGV4dCBmaWxlIGF0IHNwZWNpZmll ZCBmcmFtZSBpbnRlcnZhbCIsCj4gT0ZGU0VUKHJlbG9hZCksICAgICBBVl9PUFRfVFlQRV9JTlQs IHsuaTY0PTB9LCAwLCBJTlRfTUFYLCBGTEFHU30sCj4gPj4gLSAgICB7ICJhbHBoYSIsICAgICAg ICJhcHBseSBhbHBoYSB3aGlsZSByZW5kZXJpbmciLCBPRkZTRVQoYV9leHByKSwKPiAgIEFWX09Q VF9UWVBFX1NUUklORywgeyAuc3RyID0gIjEiICAgICB9LCAgICAgICAgICAuZmxhZ3MgPSBGTEFH UyB9LAo+ID4+IC0gICAgeyJmaXhfYm91bmRzIiwgImNoZWNrIGFuZCBmaXggdGV4dCBjb29yZHMg dG8gYXZvaWQgY2xpcHBpbmciLAo+IE9GRlNFVChmaXhfYm91bmRzKSwgQVZfT1BUX1RZUEVfQk9P TCwgey5pNjQ9MH0sIDAsIDEsIEZMQUdTfSwKPiA+PiAtICAgIHsic3RhcnRfbnVtYmVyIiwgInN0 YXJ0IGZyYW1lIG51bWJlciBmb3Igbi9mcmFtZV9udW0gdmFyaWFibGUiLAo+IE9GRlNFVChzdGFy dF9udW1iZXIpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0PTB9LCAwLCBJTlRfTUFYLCBGTEFHU30s Cj4gPj4gLSAgICB7InRleHRfc291cmNlIiwgInRoZSBzb3VyY2Ugb2YgdGV4dCIsIE9GRlNFVCh0 ZXh0X3NvdXJjZV9zdHJpbmcpLAo+IEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9TlVMTH0sIDAs IDEsIEZMQUdTIH0sCj4gPj4gKyAgICB7InRjMjRobWF4IiwgICAgICAgICJzZXQgMjQgaG91cnMg bWF4ICh0aW1lY29kZSBvbmx5KSIsCj4gT0ZGU0VUKHRjMjRobWF4KSwgICAgICBBVl9PUFRfVFlQ RV9CT09MLCAgICAgey5pNjQ9MH0sICAgIDAsIDEsIEZMQUdTfSwKPiA+PiArICAgIHsidGltZWNv ZGVfcmF0ZSIsICAgInNldCByYXRlICh0aW1lY29kZSBvbmx5KSIsCj4gIE9GRlNFVCh0Y19yYXRl KSwgICAgICAgQVZfT1BUX1RZUEVfUkFUSU9OQUwsIHsuZGJsPTB9LCAgICAwLCBJTlRfTUFYLAo+ IEZMQUdTfSwKPiA+PiArICAgIHsiciIsICAgICAgICAgICAgICAgInNldCByYXRlICh0aW1lY29k ZSBvbmx5KSIsCj4gIE9GRlNFVCh0Y19yYXRlKSwgICAgICAgQVZfT1BUX1RZUEVfUkFUSU9OQUws IHsuZGJsPTB9LCAgICAwLCBJTlRfTUFYLAo+IEZMQUdTfSwKPiA+PiArICAgIHsicmF0ZSIsICAg ICAgICAgICAgInNldCByYXRlICh0aW1lY29kZSBvbmx5KSIsCj4gIE9GRlNFVCh0Y19yYXRlKSwg ICAgICAgQVZfT1BUX1RZUEVfUkFUSU9OQUwsIHsuZGJsPTB9LCAgICAwLCBJTlRfTUFYLAo+IEZM QUdTfSwKPiA+PiArICAgIHsicmVsb2FkIiwgICAgICAgICAgInJlbG9hZCB0ZXh0IGZpbGUgYXQg c3BlY2lmaWVkIGZyYW1lCj4gaW50ZXJ2YWwiLCBPRkZTRVQocmVsb2FkKSwgQVZfT1BUX1RZUEVf SU5ULCB7Lmk2ND0wfSwgICAgMCwgSU5UX01BWCwgRkxBR1N9LAo+ID4+ICsgICAgeyJhbHBoYSIs ICAgICAgICAgICAiYXBwbHkgYWxwaGEgd2hpbGUgcmVuZGVyaW5nIiwKPiBPRkZTRVQoYV9leHBy KSwgICAgICAgIEFWX09QVF9UWVBFX1NUUklORywgICB7LnN0ciA9ICIxIn0sIC5mbGFncyA9IEZM QUdTfSwKPiA+PiArICAgIHsiZml4X2JvdW5kcyIsICAgICAgImNoZWNrIGFuZCBmaXggdGV4dCBj b29yZHMgdG8gYXZvaWQgY2xpcHBpbmciLAo+IE9GRlNFVChmaXhfYm91bmRzKSwgQVZfT1BUX1RZ UEVfQk9PTCwgey5pNjQ9MH0sIDAsIDEsIEZMQUdTfSwKPiA+PiArICAgIHsic3RhcnRfbnVtYmVy IiwgICAgInN0YXJ0IGZyYW1lIG51bWJlciBmb3Igbi9mcmFtZV9udW0gdmFyaWFibGUiLAo+IE9G RlNFVChzdGFydF9udW1iZXIpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0PTB9LCAwLCBJTlRfTUFY LCBGTEFHU30sCj4gPj4gKyAgICB7InRleHRfc291cmNlIiwgICAgICJ0aGUgc291cmNlIG9mIHRl eHQiLAo+IE9GRlNFVCh0ZXh0X3NvdXJjZV9zdHJpbmcpLCBBVl9PUFRfVFlQRV9TVFJJTkcsIHsu c3RyPU5VTEx9LCAwLCAxLCBGTEFHUyB9LAo+ID4gTW9zdCBvZiB0aGVzZSBjaGFuZ2VzIHNlZW0g Y29zbWV0aWMsIHRoZXkgZG8gbm90IGJlbG9uZyBpbiB0aGlzIHBhdGNoLgo+ID4KPiA+Pgo+ID4+ ICAgI2lmIENPTkZJR19MSUJGUklCSURJCj4gPj4gICAgICAgeyJ0ZXh0X3NoYXBpbmciLCAiYXR0 ZW1wdCB0byBzaGFwZSB0ZXh0IGJlZm9yZSBkcmF3aW5nIiwKPiBPRkZTRVQodGV4dF9zaGFwaW5n KSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQ9MX0sIDAsIDEsIEZMQUdTfSwKPiA+PiBAQCAtMjk3 LDE4ICszODcsMjQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmdF9lcnJvciB7Cj4gPj4KPiA+PiAg ICNkZWZpbmUgRlRfRVJSTVNHKGUpIGZ0X2Vycm9yc1tlXS5lcnJfbXNnCj4gPj4KPiA+PiAtdHlw ZWRlZiBzdHJ1Y3QgR2x5cGggewo+ID4+IC0gICAgRlRfR2x5cGggZ2x5cGg7Cj4gPj4gLSAgICBG VF9HbHlwaCBib3JkZXJfZ2x5cGg7Cj4gPj4gLSAgICB1aW50MzJfdCBjb2RlOwo+ID4+IC0gICAg dW5zaWduZWQgaW50IGZvbnRzaXplOwo+ID4+IC0gICAgRlRfQml0bWFwIGJpdG1hcDsgLy8vPCBh cnJheSBob2xkaW5nIGJpdG1hcHMgb2YgZm9udAo+ID4+IC0gICAgRlRfQml0bWFwIGJvcmRlcl9i aXRtYXA7IC8vLzwgYXJyYXkgaG9sZGluZyBiaXRtYXBzIG9mIGZvbnQgYm9yZGVyCj4gPj4gLSAg ICBGVF9CQm94IGJib3g7Cj4gPj4gLSAgICBpbnQgYWR2YW5jZTsKPiA+PiAtICAgIGludCBiaXRt YXBfbGVmdDsKPiA+PiAtICAgIGludCBiaXRtYXBfdG9wOwo+ID4+IC19IEdseXBoOwo+ID4+ICsK PiA+PiArLy8gTG9hZHMgYW5kIChvcHRpb25hbGx5KSByZW5kZXJzIGEgZ2x5cGgKPiA+PiArc3Rh dGljIGludCBsb2FkX2dseXBoKEFWRmlsdGVyQ29udGV4dCAqY3R4LCBHbHlwaCAqKmdseXBoX3B0 ciwKPiB1aW50MzJfdCBjb2RlLAo+ID4+ICsgICAgIGludDhfdCBzaGlmdF94NjQsIGludDhfdCBz aGlmdF95NjQpOwo+ID4+ICsKPiA+PiArLy8gU2hhcGVzIGEgbGluZSBvZiB0ZXh0IHVzaW5nIGxp YmhhcmZidXp6Cj4gPj4gK3N0YXRpYyB2b2lkIHNoYXBlX3RleHRfaGIoRHJhd1RleHRDb250ZXh0 ICpzLCBIYXJmYnV6ekRhdGEqIGhiLCBjb25zdAo+IGNoYXIqIHRleHQsIGludCB0ZXh0TGVuKTsK PiA+PiArCj4gPj4gKy8vIFBlcmZvcm1zIHRleHQgbWVhc3VyZW1lbnRzCj4gPj4gK3N0YXRpYyBp bnQgbWVhc3VyZV90ZXh0KEFWRmlsdGVyQ29udGV4dCAqY3R4LCBUZXh0TWV0cmljcyAqbWV0cmlj cyk7Cj4gPj4gKwo+ID4+ICsvLyBEcmF3cyBnbHlwaHMgb24gdGhlIGZyYW1lCj4gPj4gK3N0YXRp YyBpbnQgZHJhd19nbHlwaHMoRHJhd1RleHRDb250ZXh0ICpzLCBBVkZyYW1lICpmcmFtZSwKPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICBGRkRyYXdDb2xvciAqY29sb3IsIFRleHRNZXRyaWNz ICptZXRyaWNzLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCBpbnQgeSwgaW50 IGJvcmRlcncpOwo+ID4+ICsKPiA+PiArLy8gRHJhd3MgdGV4dCBvbiB0aGUgZnJhbWUKPiA+PiAr c3RhdGljIGludCBkcmF3X3RleHQoQVZGaWx0ZXJDb250ZXh0ICpjdHgsIEFWRnJhbWUgKmZyYW1l KTsKPiA+IFdoeSBpcyB0aGVyZSBhIG5lZWQgZm9yIGZvcndhcmQgZGVjbGFyYXRpb25zPwo+ID4K PiA+PiAgIHN0YXRpYyBpbnQgZ2x5cGhfY21wKGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAq YikKPiA+PiAgIHsKPiA+PiBAQCAtMzE2LDgwICs0MTIsOSBAQCBzdGF0aWMgaW50IGdseXBoX2Nt cChjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQKPiAqYikKPiA+PiAgICAgICBpbnQ2NF90IGRp ZmYgPSAoaW50NjRfdClhLT5jb2RlIC0gKGludDY0X3QpYmItPmNvZGU7Cj4gPj4KPiA+PiAgICAg ICBpZiAoZGlmZiAhPSAwKQo+ID4+IC0gICAgICAgICByZXR1cm4gZGlmZiA+IDAgPyAxIDogLTE7 Cj4gPj4gKyAgICAgICAgcmV0dXJuIGRpZmYgPiAwID8gMSA6IC0xOwo+ID4gdW5yZWxhdGVkIGNv c21ldGljcwo+ID4KPiA+PiBAQCAtNDM5LDcgKzQ2NCw2IEBAIHN0YXRpYyBhdl9jb2xkIGludCB1 cGRhdGVfZm9udHNpemUoQVZGaWx0ZXJDb250ZXh0Cj4gKmN0eCkKPiA+PiAgICAgICAgICAgICAg cmV0dXJuIGVycjsKPiA+Pgo+ID4+ICAgICAgICAgICBzaXplID0gYXZfZXhwcl9ldmFsKHMtPmZv bnRzaXplX3BleHByLCBzLT52YXJfdmFsdWVzLAo+ICZzLT5wcm5nKTsKPiA+PiAtCj4gPiB1bnJl bGF0ZWQgY29zbWV0aWNzCj4gPgo+ID4+ICAgICAgICAgICBpZiAoIWlzbmFuKHNpemUpKSB7Cj4g Pj4gICAgICAgICAgICAgICByb3VuZGVkc2l6ZSA9IHJvdW5kKHNpemUpOwo+ID4+ICAgICAgICAg ICAgICAgLy8gdGVzdCBmb3Igb3ZlcmZsb3cgYmVmb3JlIGNhc3QKPiA+PiBAQCAtNDQ3LDcgKzQ3 MSw2IEBAIHN0YXRpYyBhdl9jb2xkIGludCB1cGRhdGVfZm9udHNpemUoQVZGaWx0ZXJDb250ZXh0 Cj4gKmN0eCkKPiA+PiAgICAgICAgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1Is ICJmb250c2l6ZSBvdmVyZmxvd1xuIik7Cj4gPj4gICAgICAgICAgICAgICAgICAgcmV0dXJuIEFW RVJST1IoRUlOVkFMKTsKPiA+PiAgICAgICAgICAgICAgIH0KPiA+PiAtCj4gPiB1bnJlbGF0ZWQg Y29zbWV0aWNzCj4gPgo+ID4+ICAgICAgICAgICAgICAgZm9udHNpemUgPSByb3VuZGVkc2l6ZTsK PiA+PiAgICAgICAgICAgfQo+ID4+ICAgICAgIH0KPiA+PiBAQCAtNTQ4LDcgKzU3MSw3IEBAIHN0 YXRpYyBpbnQgbG9hZF9mb250X2ZvbnRjb25maWcoQVZGaWx0ZXJDb250ZXh0Cj4gKmN0eCkKPiA+ PiAgICAgICAgICAgZ290byBmYWlsOwo+ID4+ICAgICAgIH0KPiA+Pgo+ID4+IC0gICAgYXZfbG9n KGN0eCwgQVZfTE9HX0lORk8sICJVc2luZyBcIiVzXCJcbiIsIGZpbGVuYW1lKTsKPiA+PiArICAg IGF2X2xvZyhjdHgsIEFWX0xPR19WRVJCT1NFLCAiVXNpbmcgXCIlc1wiXG4iLCBmaWxlbmFtZSk7 Cj4gPiB1bnJlbGF0ZWQgY29zbWV0aWNzCj4gPgo+ID4+ICAgICAgIGlmIChwYXJzZV9lcnIpCj4g Pj4gICAgICAgICAgIHMtPmRlZmF1bHRfZm9udHNpemUgPSBzaXplICsgMC41Owo+ID4+Cj4gPj4g QEAgLTY5MCw2ICs3MTMsNyBAQCBzdGF0aWMgaW50IHNoYXBlX3RleHQoQVZGaWx0ZXJDb250ZXh0 ICpjdHgpCj4gPj4gICAgICAgcy0+dGV4dCA9IHRtcDsKPiA+PiAgICAgICBsZW4gPSBmcmliaWRp X3VuaWNvZGVfdG9fY2hhcnNldChGUklCSURJX0NIQVJfU0VUX1VURjgsCj4gPj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZXN0ciwgbGVuLCBzLT50ZXh0KTsK PiA+PiArCj4gPiB1bnJlbGF0ZWQgY29zbWV0aWNzCj4gPgo+ID4+Cj4gPj4gK3N0YXRpYyB2b2lk IHNoYXBlX3RleHRfaGIoRHJhd1RleHRDb250ZXh0ICpzLCBIYXJmYnV6ekRhdGEqIGhiLCBjb25z dAo+IGNoYXIqIHRleHQsIGludCB0ZXh0TGVuKQo+ID4+ICt7Cj4gPj4gKyAgICBoYi0+YnVmID0g aGJfYnVmZmVyX2NyZWF0ZSgpOwo+ID4gU2VlbXMgbGlrZSBpdCBhdCBsZWFzdCB0aGlzIG5lZWRz IHRvIGJlIGNoZWNrZWQgZm9yIGVycm9ycywgbWF5YmUgc29tZQo+ID4gb2YgdGhlIG90aGVyIGNh bGxzIHRvby4KPiA+Cj4gPj4gQEAgLTE1NTksNTYgKzE3OTUsMTQyIEBAIGNvbnRpbnVlX29uX2lu dmFsaWQyOgo+ID4+ICAgICAgIHVwZGF0ZV9jb2xvcl93aXRoX2FscGhhKHMsICZib3JkZXJjb2xv ciwgcy0+Ym9yZGVyY29sb3IpOwo+ID4+ICAgICAgIHVwZGF0ZV9jb2xvcl93aXRoX2FscGhhKHMs ICZib3hjb2xvciAgICwgcy0+Ym94Y29sb3IgICApOwo+ID4+Cj4gPj4gLSAgICBib3hfdyA9IG1h eF90ZXh0X2xpbmVfdzsKPiA+PiAtICAgIGJveF9oID0geSArIHMtPm1heF9nbHlwaF9oOwo+ID4+ ICsgICAgaWYgKHMtPmRyYXdfYm94ICYmIHMtPmJveGJvcmRlcncpIHsKPiA+PiArICAgICAgICBz LT5iYl90b3AgPSBzLT5iYl9yaWdodCA9IHMtPmJiX2JvdHRvbSA9IHMtPmJiX2xlZnQgPQo+IHMt PmJveGJvcmRlcnc7Cj4gPj4gKyAgICB9IGVsc2Ugewo+ID4+ICsgICAgICAgIHMtPmJiX3RvcCA9 IHMtPmJiX3JpZ2h0ID0gcy0+YmJfYm90dG9tID0gcy0+YmJfbGVmdCA9IDA7Cj4gPj4gKyAgICB9 Cj4gPj4KPiA+PiAgICAgICBpZiAocy0+Zml4X2JvdW5kcykgewo+ID4+IC0KPiA+PiAgICAgICAg ICAgLyogY2FsY3VsYXRlIGZvb3RwcmludCBvZiB0ZXh0IGVmZmVjdHMgKi8KPiA+PiAtICAgICAg ICBpbnQgYm94b2Zmc2V0ICAgICA9IHMtPmRyYXdfYm94ID8gRkZNQVgocy0+Ym94Ym9yZGVydywg MCkgOiAwOwo+ID4+ICAgICAgICAgICBpbnQgYm9yZGVyb2Zmc2V0ICA9IHMtPmJvcmRlcncgID8g RkZNQVgocy0+Ym9yZGVydywgMCkgOiAwOwo+ID4+Cj4gPj4gLSAgICAgICAgaW50IG9mZnNldGxl ZnQgPSBGRk1BWDMoYm94b2Zmc2V0LCBib3JkZXJvZmZzZXQsCj4gPj4gKyAgICAgICAgaW50IG9m ZnNldGxlZnQgPSBGRk1BWDMoRkZNQVgocy0+YmJfbGVmdCwgMCksIGJvcmRlcm9mZnNldCwKPiA+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMtPnNoYWRvd3ggPCAwID8gRkZB QlMocy0+c2hhZG93eCkgOgo+IDApKTsKPiA+PiAtICAgICAgICBpbnQgb2Zmc2V0dG9wID0gRkZN QVgzKGJveG9mZnNldCwgYm9yZGVyb2Zmc2V0LAo+ID4+ICsgICAgICAgIGludCBvZmZzZXR0b3Ag PSBGRk1BWDMoRkZNQVgocy0+YmJfdG9wLCAwKSwgYm9yZGVyb2Zmc2V0LAo+ID4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocy0+c2hhZG93eSA8IDAgPyBGRkFCUyhzLT5zaGFk b3d5KSA6Cj4gMCkpOwo+ID4+IC0KPiA+PiAtICAgICAgICBpbnQgb2Zmc2V0cmlnaHQgPSBGRk1B WDMoYm94b2Zmc2V0LCBib3JkZXJvZmZzZXQsCj4gPj4gKyAgICAgICAgaW50IG9mZnNldHJpZ2h0 ID0gRkZNQVgzKEZGTUFYKHMtPmJiX3JpZ2h0LCAwKSwgYm9yZGVyb2Zmc2V0LAo+ID4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMtPnNoYWRvd3ggPiAwID8gcy0+c2hhZG93 eCA6IDApKTsKPiA+PiAtICAgICAgICBpbnQgb2Zmc2V0Ym90dG9tID0gRkZNQVgzKGJveG9mZnNl dCwgYm9yZGVyb2Zmc2V0LAo+ID4+ICsgICAgICAgIGludCBvZmZzZXRib3R0b20gPSBGRk1BWDMo RkZNQVgocy0+YmJfYm90dG9tLCAwKSwgYm9yZGVyb2Zmc2V0LAo+ID4+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzLT5zaGFkb3d5ID4gMCA/IHMtPnNoYWRvd3kgOiAwKSk7 Cj4gPj4KPiA+PiAtCj4gPj4gICAgICAgICAgIGlmIChzLT54IC0gb2Zmc2V0bGVmdCA8IDApIHMt PnggPSBvZmZzZXRsZWZ0Owo+ID4+ICAgICAgICAgICBpZiAocy0+eSAtIG9mZnNldHRvcCA8IDAp ICBzLT55ID0gb2Zmc2V0dG9wOwo+ID4+Cj4gPj4gLSAgICAgICAgaWYgKHMtPnggKyBib3hfdyAr IG9mZnNldHJpZ2h0ID4gd2lkdGgpCj4gPj4gLSAgICAgICAgICAgIHMtPnggPSBGRk1BWCh3aWR0 aCAtIGJveF93IC0gb2Zmc2V0cmlnaHQsIDApOwo+ID4+IC0gICAgICAgIGlmIChzLT55ICsgYm94 X2ggKyBvZmZzZXRib3R0b20gPiBoZWlnaHQpCj4gPj4gLSAgICAgICAgICAgIHMtPnkgPSBGRk1B WChoZWlnaHQgLSBib3hfaCAtIG9mZnNldGJvdHRvbSwgMCk7Cj4gPj4gKyAgICAgICAgaWYgKHMt PnggKyBtZXRyaWNzLndpZHRoICsgb2Zmc2V0cmlnaHQgPiB3aWR0aCkKPiA+PiArICAgICAgICAg ICAgcy0+eCA9IEZGTUFYKHdpZHRoIC0gbWV0cmljcy53aWR0aCAtIG9mZnNldHJpZ2h0LCAwKTsK PiA+PiArICAgICAgICBpZiAocy0+eSArIG1ldHJpY3MuaGVpZ2h0ICsgb2Zmc2V0Ym90dG9tID4g aGVpZ2h0KQo+ID4+ICsgICAgICAgICAgICBzLT55ID0gRkZNQVgoaGVpZ2h0IC0gbWV0cmljcy5o ZWlnaHQgLSBvZmZzZXRib3R0b20sIDApOwo+ID4+ICAgICAgIH0KPiA+Pgo+ID4+IC0gICAgLyog ZHJhdyBib3ggKi8KPiA+PiAtICAgIGlmIChzLT5kcmF3X2JveCkKPiA+PiAtICAgICAgICBmZl9i bGVuZF9yZWN0YW5nbGUoJnMtPmRjLCAmYm94Y29sb3IsCj4gPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZyYW1lLT5kYXRhLCBmcmFtZS0+bGluZXNpemUsIHdpZHRoLCBoZWlnaHQsCj4g Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnggLSBzLT5ib3hib3JkZXJ3LCBzLT55 IC0gcy0+Ym94Ym9yZGVydywKPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94X3cg KyBzLT5ib3hib3JkZXJ3ICogMiwgYm94X2ggKwo+IHMtPmJveGJvcmRlcncgKiAyKTsKPiA+PiAr ICAgIHggPSAwOwo+ID4+ICsgICAgeSA9IDA7Cj4gPj4gKyAgICB4NjQgPSAoaW50KShzLT54ICog NjQuKTsKPiA+PiArICAgIHk2NCA9IChpbnQpKHMtPnkgKiA2NC4gKyBtZXRyaWNzLm9mZnNldF90 b3A2NCk7Cj4gPj4gKwo+ID4+ICsgICAgZm9yIChpbnQgbCA9IDA7IGwgPCBzLT5saW5lX2NvdW50 OyArK2wpIHsKPiA+PiArICAgICAgICBUZXh0TGluZSAqbGluZSA9ICZzLT5saW5lc1tsXTsKPiA+ PiArICAgICAgICBIYXJmYnV6ekRhdGEgKmhiID0gJmxpbmUtPmhiX2RhdGE7Cj4gPj4gKyAgICAg ICAgbGluZS0+Z2x5cGhzID0gYXZfbWFsbG9jeihoYi0+Z2x5cGhfY291bnQgKiBzaXplb2YoR2x5 cGhJbmZvKSk7Cj4gPj4gKwo+ID4+ICsgICAgICAgIGZvciAoaW50IHQgPSAwOyB0IDwgaGItPmds eXBoX2NvdW50OyArK3QpIHsKPiA+PiArICAgICAgICAgICAgR2x5cGhJbmZvICpnX2luZm8gPSAm bGluZS0+Z2x5cGhzW3RdOwo+ID4+ICsgICAgICAgICAgICB1aW50OF90IGlzX3RhYiA9IGxhc3Rf dGFiX2lkeCA8IHMtPnRhYl9jb3VudCAmJgo+ID4+ICsgICAgICAgICAgICAgICAgaGItPmdseXBo X2luZm9bdF0uY2x1c3RlciA9PQo+IHMtPnRhYl9jbHVzdGVyc1tsYXN0X3RhYl9pZHhdIC0gbGlu ZS0+Y2x1c3Rlcl9vZmZzZXQ7Cj4gPj4gKyAgICAgICAgICAgIGludCB0cnVlX3gsIHRydWVfeTsK PiA+PiArICAgICAgICAgICAgaWYgKGlzX3RhYikgewo+ID4+ICsgICAgICAgICAgICAgICAgKyts YXN0X3RhYl9pZHg7Cj4gPj4gKyAgICAgICAgICAgIH0KPiA+PiArICAgICAgICAgICAgdHJ1ZV94 ID0geCArIGhiLT5nbHlwaF9wb3NbdF0ueF9vZmZzZXQ7Cj4gPj4gKyAgICAgICAgICAgIHRydWVf eSA9IHkgKyBoYi0+Z2x5cGhfcG9zW3RdLnlfb2Zmc2V0Owo+ID4+ICsgICAgICAgICAgICBzaGlm dF94NjQgPSAoKCh4NjQgKyB0cnVlX3gpID4+IDQpICYgMGIwMDExKSA8PCA0Owo+ID4+ICsgICAg ICAgICAgICBzaGlmdF95NjQgPSAoKDQgLSAoKCh5NjQgKyB0cnVlX3kpID4+IDQpICYgMGIwMDEx KSkgJgo+IDBiMDAxMSkgPDwgNDsKPiA+PiArCj4gPj4gKyAgICAgICAgICAgIHJldCA9IGxvYWRf Z2x5cGgoY3R4LCAmZ2x5cGgsIGhiLT5nbHlwaF9pbmZvW3RdLmNvZGVwb2ludCwKPiBzaGlmdF94 NjQsIHNoaWZ0X3k2NCk7Cj4gPj4gKyAgICAgICAgICAgIGlmIChyZXQgIT0gMCkgewo+ID4+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+PiArICAgICAgICAgICAgfQo+ID4+ICsgICAg ICAgICAgICBnX2luZm8tPmNvZGUgPSBoYi0+Z2x5cGhfaW5mb1t0XS5jb2RlcG9pbnQ7Cj4gPj4g KyAgICAgICAgICAgIGdfaW5mby0+eCA9ICh4NjQgKyB0cnVlX3gpID4+IDY7Cj4gPj4gKyAgICAg ICAgICAgIGdfaW5mby0+eSA9ICgoeTY0ICsgdHJ1ZV95KSA+PiA2KSArIChzaGlmdF95NjQgPiAw ID8gMSA6Cj4gMCk7Cj4gPj4gKyAgICAgICAgICAgIGdfaW5mby0+c2hpZnRfeDY0ID0gc2hpZnRf eDY0Owo+ID4+ICsgICAgICAgICAgICBnX2luZm8tPnNoaWZ0X3k2NCA9IHNoaWZ0X3k2NDsKPiA+ PiArCj4gPj4gKyAgICAgICAgICAgIGlmICghaXNfdGFiKSB7Cj4gPj4gKyAgICAgICAgICAgICAg ICB4ICs9IGhiLT5nbHlwaF9wb3NbdF0ueF9hZHZhbmNlOwo+ID4+ICsgICAgICAgICAgICB9IGVs c2Ugewo+ID4+ICsgICAgICAgICAgICAgICAgaW50IHNpemUgPSBzLT5ibGFua19hZHZhbmNlNjQg KiBzLT50YWJzaXplOwo+ID4+ICsgICAgICAgICAgICAgICAgeCA9ICh4IC8gc2l6ZSArIDEpICog c2l6ZTsKPiA+PiArICAgICAgICAgICAgfQo+ID4+ICsgICAgICAgICAgICB5ICs9IGhiLT5nbHlw aF9wb3NbdF0ueV9hZHZhbmNlOwo+ID4+ICsgICAgICAgIH0KPiA+Pgo+ID4+IC0gICAgaWYgKHMt PnNoYWRvd3ggfHwgcy0+c2hhZG93eSkgewo+ID4+IC0gICAgICAgIGlmICgocmV0ID0gZHJhd19n bHlwaHMocywgZnJhbWUsIHdpZHRoLCBoZWlnaHQsCj4gPj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmc2hhZG93Y29sb3IsIHMtPnNoYWRvd3gsIHMtPnNoYWRvd3ksCj4gMCkpIDwg MCkKPiA+PiAtICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+PiArICAgICAgICB5ICs9IG1ldHJp Y3MubGluZV9oZWlnaHQ2NCArIHMtPmxpbmVfc3BhY2luZyAqIDY0Owo+ID4+ICsgICAgICAgIHgg PSAwOwo+ID4+ICAgICAgIH0KPiA+Pgo+ID4+IC0gICAgaWYgKHMtPmJvcmRlcncpIHsKPiA+PiAt ICAgICAgICBpZiAoKHJldCA9IGRyYXdfZ2x5cGhzKHMsIGZyYW1lLCB3aWR0aCwgaGVpZ2h0LAo+ ID4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJvcmRlcmNvbG9yLCAwLCAwLCBz LT5ib3JkZXJ3KSkgPCAwKQo+ID4+ICsgICAgbWV0cmljcy5yZWN0X3ggPSBzLT54Owo+ID4+ICsg ICAgbWV0cmljcy5yZWN0X3kgPSBzLT55Owo+ID4+ICsKPiA+PiArICAgIHMtPmJveF93aWR0aCA9 IG1ldHJpY3Mud2lkdGg7Cj4gPj4gKyAgICBzLT5ib3hfaGVpZ2h0ID0gbWV0cmljcy5oZWlnaHQ7 Cj4gPiBXaGF0IGlzIHRoZSBwb2ludCBvZiBkdXBsaWNhdGluZyB0aGVzZSB2YWx1ZXMgaW4gYm90 aCBzdHJ1Y3RzPwo+ID4KPiA+Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBmZm1wZWctZGV2ZWxA ZmZtcGVnLm9yZwo+IGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1k ZXZlbAo+Cj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gZmZt cGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K PgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWct ZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVn Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0 IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0 aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==