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 700C547AEE for ; Sat, 29 Jun 2024 10:58:13 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 19F9168D6A7; Sat, 29 Jun 2024 13:58:11 +0300 (EEST) Received: from haasn.dev (haasn.dev [78.46.187.166]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0372568D67E for ; Sat, 29 Jun 2024 13:58:03 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1719658683; bh=6VGCftX/zRrElqR2GzQWp1IbUtCShm6iELVwC3DBBM4=; h=Date:From:To:Subject:In-Reply-To:References:From; b=XxJrFA6Gxc47Q3SP4uMErAbOJh7l4abOXn8jv2RB23g8kXkdXc/oAWXsxz/WGWdtf +hQ/FtLv5BKt0prht1onm86afIQYClJ7absHltp8+kwElKbnZEMm2Fc2ocLI6Wp7O4 lr0kGHmfISRejD58IvkKzhNcLfw5a4/1DGtDw1yM= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 699D741761 for ; Sat, 29 Jun 2024 12:58:03 +0200 (CEST) Date: Sat, 29 Jun 2024 12:58:03 +0200 Message-ID: <20240629125803.GB4857@haasn.xyz> From: Niklas Haas To: FFmpeg development discussions and patches In-Reply-To: References: <20240622151334.GD14140@haasn.xyz> MIME-Version: 1.0 Content-Disposition: inline Subject: Re: [FFmpeg-devel] [RFC]] swscale modernization proposal 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: T24gU2F0LCAyOSBKdW4gMjAyNCAxNTo0MTo1OCArMDgwMCBaaGFvIFpoaWxpIDxxdWlua2JsYWNr QGZveG1haWwuY29tPiB3cm90ZToKPiAKPiAKPiA+IE9uIEp1biAyMiwgMjAyNCwgYXQgMjE6MTMs IE5pa2xhcyBIYWFzIDxmZm1wZWdAaGFhc24ueHl6PiB3cm90ZToKPiA+IAo+ID4gSGV5LAo+ID4g Cj4gPiBBcyBzb21lIG9mIHlvdSBrbm93LCBJIGdvdCBjb250cmFjdGVkIChieSBTVEYgMjAyNCkg dG8gd29yayBvbiBpbXByb3ZpbmcKPiA+IHN3c2NhbGUsIG92ZXIgdGhlIGNvdXJzZSBvZiB0aGUg bmV4dCBjb3VwbGUgb2YgbW9udGhzLiBJIHdhbnQgdG8gc2hhcmUgbXkKPiA+IGN1cnJlbnQgcGxh bnMgYW5kIGdhdGhlciBmZWVkYmFjayArIG1lYXN1cmUgc2VudGltZW50Lgo+ID4gCj4gPiAjIyBQ cm9ibGVtIHN0YXRlbWVudAo+ID4gCj4gPiBUaGUgdHdvIGlzc3VlcyBJJ2QgbGlrZSB0byBmb2N1 cyBvbiBmb3Igbm93IGFyZToKPiA+IAo+ID4gMS4gTGFjayBvZiBzdXBwb3J0IGZvciBhIGxvdCBv ZiBtb2Rlcm4gZm9ybWF0cyBhbmQgY29udmVyc2lvbnMgKEhEUiwgSUN0Q3AsCj4gPiAgIElQVGMy LCBCVC4yMDIwLUNMLCBYWVosIFlDZ0NvLCBEb2xieSBWaXNpb24sIC4uLikKPiA+IDIuIENvbXBs aWNhdGVkIGNvbnRleHQgbWFuYWdlbWVudCwgd2l0aCBjYXNjYWRlZCBjb250ZXh0cywgdGhyZWFk aW5nLCBzdGF0ZWZ1bAo+ID4gICBjb25maWd1cmF0aW9uLCBtdWx0aS1zdGVwIGluaXQgcHJvY2Vk dXJlcywgZXRjOyBhbmQgcmVsYXRlZCBidWdzCj4gPiAKPiA+IEluIG9yZGVyIHRvIG1ha2UgdGhl c2UgZmVhc2libGUsIHNvbWUgYW1vdW50IG9mIGludGVybmFsIHJlLW9yZ2FuaXphdGlvbiBvZgo+ ID4gZHV0aWVzIGluc2lkZSBzd3NjYWxlIGlzIHBydWRlbnQuCj4gPiAKPiA+ICMjIFByb3Bvc2Vk IGFwcHJvYWNoCj4gPiAKPiA+IFRoZSBmaXJzdCBzdGVwIGlzIHRvIGNyZWF0ZSBhIG5ldyBBUEks IHdoaWNoIHdpbGwgKHRlbnRhdGl2ZWx5KSBsaXZlIGluCj4gPiA8bGlic3dzY2FsZS9hdnNjYWxl Lmg+LiBUaGlzIEFQSSB3aWxsIGluaXRpYWxseSBzdGFydCBvZmYgYXMgYSBuZWFyLWNvcHkgb2Yg dGhlCj4gPiBjdXJyZW50IHN3c2NhbGUgcHVibGljIEFQSSwgYnV0IHdpdGggdGhlIG1ham9yIGRp ZmZlcmVuY2UgdGhhdCBJIHdhbnQgaXQgdG8gYmUKPiA+IHN0YXRlLWZyZWUgYW5kIG9ubHkgYWNj ZXNzIG1ldGFkYXRhIGluIHRlcm1zIG9mIEFWRnJhbWUgcHJvcGVydGllcy4gU28gdGhlcmUKPiA+ IHdpbGwgYmUgbm8gaW5kZXBlbmRlbnQgY29uZmlndXJhdGlvbiBvZiB0aGUgaW5wdXQgY2hyb21h IGxvY2F0aW9uIGV0Yy4gbGlrZQo+ID4gdGhlcmUgaXMgY3VycmVudGx5LCBhbmQgbm8gbmVlZCB0 byByZS1jb25maWd1cmUgb3IgcmUtaW5pdCB0aGUgY29udGV4dCB3aGVuCj4gPiBmZWVkaW5nIGl0 IGZyYW1lcyB3aXRoIGRpZmZlcmVudCBwcm9wZXJ0aWVzLiBUaGUgZ29hbCBpcyBmb3IgdXNlcnMg dG8gYmUgYWJsZQo+ID4gdG8ganVzdCBmZWVkIGl0IEFWRnJhbWUgcGFpcnMgYW5kIGhhdmUgaXQg aW50ZXJuYWxseSBjYWNoZSBleHBlbnNpdmUKPiA+IHByZS1wcm9jZXNzaW5nIHN0ZXBzIGFzIG5l ZWRlZC4gRmluYWxseSwgYXZzY2FsZV8qIHNob3VsZCB1bHRpbWF0ZWx5IGFsc28KPiA+IHN1cHBv cnQgaGFyZHdhcmUgZnJhbWVzIGRpcmVjdGx5LCBpbiB3aGljaCBjYXNlIGl0IHdpbGwgZGlzcGF0 Y2ggdG8gc29tZQo+ID4gZXF1aXZhbGVudCBvZiBzY2FsZV92dWxrYW4vdmFhcGkvY3VkYSBvciBw b3NzaWJseSBldmVuIGxpYnBsYWNlYm8uIChCdXQgSSB3aWxsCj4gPiBkZWZlciB0aGlzIHRvIGEg ZnV0dXJlIG1pbGVzdG9uZSkKPiA+IAo+ID4gQWZ0ZXIgdGhpcyBBUEkgaXMgZXN0YWJsaXNoZWQs IEkgd2FudCB0byBzdGFydCBleHBhbmRpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgaW4KPiA+IHRoZSBm b2xsb3dpbmcgbWFubmVyOgo+ID4gCj4gPiAjIyMgUGhhc2UgMQo+ID4gCj4gPiBGb3IgYmFzaWMg b3BlcmF0aW9uLCBhdnNjYWxlXyogd2lsbCBqdXN0IGRpc3BhdGNoIHRvIGEgc2VxdWVuY2Ugb2Yg c3dzY2FsZV8qCj4gPiBpbnZvY2F0aW9ucy4gSW4gdGhlIGJhc2ljIGNhc2UsIGl0IHdpbGwganVz dCBkaXJlY3RseSBpbnZva2Ugc3dzY2FsZSB3aXRoCj4gPiBtaW5pbWFsIG92ZXJoZWFkLiBJbiBt b3JlIGFkdmFuY2VkIGNhc2VzLCBpdCBtaWdodCByZXNvbHZlIHRvIGEgKnNlcXVlbmNlKiBvZgo+ ID4gc3dzY2FsZSBvcGVyYXRpb25zLCB3aXRoIG90aGVyIG9wZXJhdGlvbnMgKGUuZy4gY29sb3Jz cGFjZSBjb252ZXJzaW9ucyBhIGxhCj4gPiB2Zl9jb2xvcnNwYWNlKSBtaXhlZCBpbi4KPiA+IAo+ ID4gVGhpcyB3aWxsIGFsbG93IHVzIHRvIGdhaW4gbmV3IGZ1bmN0aW9uYWxpdHkgaW4gYSBtaW5p bWFsbHkgaW52YXNpdmUgd2F5LCBhbmQKPiA+IHdpbGwgbGV0IEFQSSB1c2VycyBzdGFydCBwb3J0 aW5nIHRvIHRoZSBuZXcgQVBJLiBUaGlzIHdpbGwgYWxzbyBzZXJ2ZSBhcyBhIGdvb2QKPiA+ICJz ZWxsaW5nIHBvaW50IiBmb3IgdGhlIG5ldyBBUEksIGFsbG93aW5nIHVzIHRvIGhvcGVmdWxseSBi cmVhayB1cCB0aGUgbGVnYWN5Cj4gPiBzd3NjYWxlIEFQSSBhZnRlcndhcmRzLgo+ID4gCj4gPiAj IyMgUGhhc2UgMgo+ID4gCj4gPiBBZnRlciB0aGlzIGlzIHdvcmtpbmcsIEkgd2FudCB0byBjbGVh bmx5IHNlcGFyYXRlIHN3c2NhbGUgaW50byB0d28gZGlzdGluY3QKPiA+IGNvbXBvbmVudHM6Cj4g PiAKPiA+IDEuIHZlcnRpY2FsL2hvcml6b250YWwgc2NhbGluZwo+ID4gMi4gaW5wdXQvb3V0cHV0 IGNvbnZlcnNpb25zCj4gPiAKPiA+IFJpZ2h0IG5vdywgdGhlc2Ugb3BlcmF0aW9ucyBib3RoIGxp dmUgaW5zaWRlIHRoZSBtYWluIFN3c0NvbnRleHQsIGV2ZW4gdGhvdWdoCj4gPiB0aGV5IGFyZSBj b25jZXB0dWFsbHkgb3J0aG9nb25hbC4gSW5wdXQgaGFuZGxpbmcgaXMgZG9uZSBlbnRpcmVseSBi eSB0aGUKPiA+IGFic3RyYWN0IGNhbGxiYWNrcyBsdW1Ub1lWMTIgZXRjLiwgd2hpbGUgb3V0cHV0 IGNvbnZlcnNpb24gaXMgY3VycmVudGx5Cj4gPiAibWVyZ2VkIiB3aXRoIHZlcnRpY2FsIHNjYWxp bmcgKHl1djJwbGFuZVggZXRjLikuCj4gPiAKPiA+IEkgd2FudCB0byBjbGVhbmx5IHNlcGFyYXRl IHRoZXNlIGNvbXBvbmVudHMgc28gdGhleSBjYW4gbGl2ZSBpbnNpZGUgaW5kZXBlbmRlbnQKPiA+ IGNvbnRleHRzLCBhbmQgYmUgY29uc2lkZXJlZCBhcyBzZW1hbnRpY2FsbHkgZGlzdGluY3Qgc3Rl cHMuIChJbiBwYXJ0aWN1bGFyLAo+ID4gdGhlcmUgc2hvdWxkIGlkZWFsbHkgYmUgbm8gbW9yZSAi dW5zY2FsZWQgc3BlY2lhbCBjb252ZXJ0ZXJzIiwgaW5zdGVhZCB0aGlzIGNhbgo+ID4gYmUgc2Vl biBhcyBhIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGVyZSBzaW1wbHkgaXMgbm8gdmVydGljYWwvaG9y aXpvbnRhbCBzY2FsaW5nCj4gPiBzdGVwKQo+ID4gCj4gPiBUaGUgaWRlYSBpcyBmb3IgdGhlIGNv bG9yc3BhY2UgY29udmVyc2lvbiBsYXllciB0byBzaXQgaW4gYmV0d2VlbiB0aGUKPiA+IGlucHV0 L291dHB1dCBjb252ZXJ0ZXJzIGFuZCB0aGUgaG9yaXpvbnRhbC92ZXJ0aWNhbCBzY2FsZXJzLiBU aGlzIGFsbCB3b3VsZCBiZQo+ID4gb3JjaGVzdHJhdGVkIGJ5IHRoZSBhdnNjYWxlXyogYWJzdHJh Y3Rpb24uCj4gPiAKPiA+ICMjIEltcGxlbWVudGF0aW9uIGRldGFpbHMKPiA+IAo+ID4gVG8gYXZv aWQgcGVyZm9ybWFuY2UgbG9zcyBmcm9tIHNlcGFyYXRpbmcgIm1lcmdlZCIgZnVuY3Rpb25zIGlu dG8gdGhlaXIKPiA+IGNvbnN0aXR1ZW50cywgY2FyZSBuZWVkcyB0byBiZSB0YWtlbiBzdWNoIHRo YXQgYWxsIGludGVybWVkaWF0ZSBkYXRhLCBpbgo+ID4gYWRkaXRpb24gdG8gYWxsIGludm9sdmVk IGxvb2stdXAgdGFibGVzLCB3aWxsIGZpdCBjb21mb3J0YWJseSBpbnNpZGUgdGhlIEwxCj4gPiBj YWNoZS4gVGhlIGFwcHJvYWNoIEkgcHJvcG9zZSwgd2hpY2ggaXMgYWxzbyAoYWZhaWN0KSB1c2Vk IGJ5IHpzY2FsZSwgaXMgdG8KPiA+IGxvb3Agb3ZlciBsaW5lIHNlZ21lbnRzLCBhcHBseWluZyBl YWNoIG9wZXJhdGlvbiBpbiBzZXF1ZW5jZSwgb24gYSBzbWFsbAo+ID4gdGVtcG9yYXJ5IGJ1ZmZl ci4KPiA+IAo+ID4gZS5nLgo+ID4gCj4gPiBoc2NhbGVfcm93KHBpeGVsICpkc3QsIGNvbnN0IHBp eGVsICpzcmMsIGludCBpbWdfd2lkdGgpCj4gPiB7Cj4gPiAgICBjb25zdCBpbnQgU0laRSA9IDI1 NjsgLy8gb3Igc29tZSBvdGhlciBzbWFsbC1pc2ggZmlndXJlLCBwb3NzaWJseSBhIGRlc2lnbgo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IG9mIHRoZSBBUEkgc28gdGhh dCBTSU1EIGltcGxlbWVudGF0aW9ucwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNh biBiZSBhcHByb3ByaWF0ZWx5IHVucm9sbGVkCj4gPiAKPiA+ICAgIHBpeGVsIHRtcFtTSVpFXTsK PiA+ICAgIGZvciAoaSA9IDA7IGkgPCBpbWdfd2lkdGg7IGkgKz0gU0laRSkgewo+ID4gICAgICAg IGludCBwaXhlbHMgPSBtaW4oU0laRSwgaW1nX3dpZHRoIC0gaSk7Cj4gPiAKPiA+ICAgICAgICB7 IC8qIGluc2lkZSByZWFkIGlucHV0IGNhbGxiYWNrICovCj4gPiAgICAgICAgICAgIHVucGFja19p bnB1dCh0bXAsIHNyYywgcGl4ZWxzKTsKPiA+ICAgICAgICAgICAgLy8gdGhlIGFtb3VudCBvZiBz ZXBhcmF0aW9uIGhlcmUgd2lsbCBkZXBlbmQgb24gdGhlIHBlcmZvcm1hbmNlCj4gPiAgICAgICAg ICAgIGFwcGx5X21hdHJpeDN4Myh0bXAsIHl1djJyZ2IsIHBpeGVscyk7Cj4gPiAgICAgICAgICAg IGFwcGx5X2x1dDN4MWQodG1wLCBnYW1tYV9sdXQsIHBpeGVscyk7Cj4gPiAgICAgICAgICAgIC4u Lgo+ID4gICAgICAgIH0KPiA+IAo+ID4gICAgICAgIGhzY2FsZShkc3QsIHRtcCwgZmlsdGVyLCBw aXhlbHMpOwo+ID4gCj4gPiAgICAgICAgc3JjICs9IHBpeGVsczsKPiA+ICAgICAgICBkc3QgKz0g c2NhbGVfZmFjdG9yKHBpeGVscyk7Cj4gPiAgICB9Cj4gPiB9Cj4gPiAKPiA+IFRoaXMgZnVuY3Rp b24gY2FuIHRoZW4gb3V0cHV0IHJvd3MgaW50byBhIHJpbmcgYnVmZmVyIGZvciB1c2UgaW5zaWRl IHRoZQo+ID4gdmVydGljYWwgc2NhbGVyLCBhZnRlciB3aGljaCB0aGUgc2FtZSBwcm9jZWR1cmUg aGFwcGVucyAoaW4gcmV2ZXJzZSkgZm9yIHRoZQo+ID4gZmluYWwgb3V0cHV0IHBhc3MuCj4gPiAK PiA+IFBvc3NpYmx5LCB3ZSBhbHNvIHdhbnQgdG8gYWRkaXRpb25hbGx5IGxpbWl0IHRoZSBzaXpl IG9mIGEgcm93IGZvciB0aGUKPiA+IGhvcml6b250YWwgc2NhbGVyLCB0byBhbGxvdyBhcmJpdHJh cnkgbGFyZ2UgaW5wdXQgaW1hZ2VzLgo+IAo+IEkgZGlkIGEgc2ltcGxlIGJlbmNobWFyayB0byBj b21wYXJlIHRoZSBwZXJmb3JtYW5jZSBiZXR3ZWVuIGxpYnN3c2NhbGUgYW5kCj4gbGlieXV2LiBX aXRoIEFwcGxlIE0xIGFybTY0LCBsaWJ5dXYgaXMgYWJvdXQgMTAgdGltZXMgZmFzdGVyIHRoYW4g bGlic3dzY2FsZSBmb3IKPiB1bnNjYWxlZCByZ2JhIHRvIHl1djQyMHAuIEFmdGVyIHJlY2VudGx5 IGFhcmNoNjQgbmVvbiBvcHRpbWl6YXRpb25zLCBsaWJ5dXYgaXMKPiBzdGlsbCA1IHRpbWVzIGZh c3RlciB0aGFuIGxpYnN3c2NhbGUuIFRoZSBzaXR1YXRpb24gaXNu4oCZdCBtdWNoIGJldHRlciB3 aXRoIHNjYWxlZAo+IGNvbnZlcnNpb24uCj4gCj4gU3VyZSBsaWJzd3NjYWxlIGhhcyBtb3JlIGZl YXR1cmVzIGFuZCBjYW4gYmUgbW9yZSBwcmVjaXNlIHRoYW4gbGlieXV2LiBIb3BlCj4gd2UgY2Fu IGNhdGNoIHVwIHRoZSBwZXJmb3JtYW5jZSBhZnRlciB5b3VyIHJlZmFjdG9yLgoKQUZBSUNULCBs aWJ5dXYgZG9lcyBub3QgZG8gYW55IGRpdGhlcmluZyBub3IgYWR2YW5jZWQgZmlsdGVyaW5nLCB3 aGljaApzd3NjYWxlIGlzIGNhcGFibGUgb2YuIFRoZXkgYWxzbyBkbyBwcm9jZXNzaW5nIGF0IGEg cHJldHR5IGxvdyBiaXQKZGVwdGgsIGUuZy4gY29udmVydGluZyBmcm9tIDgtYml0IHl1djQyMHAg c3RyYWlnaHQgdG8gOC1iaXQgcmdiYSBiZWZvcmUKc2NhbGluZyBhdCwgeW91IGd1ZXNzZWQgaXQs IDgtYml0IHJlc29sdXRpb24uIChsaWJzd3NjYWxlIHdvdWxkIHVzZQoxNS1iaXQgaGVyZSkKClRo YXQgc2FpZCwgdGhlcmUncyBwcm9iYWJseSBzdGlsbCBzb21ldGhpbmcgd2UgY2FuL3Nob3VsZCBs ZWFybiBmcm9tCnRoaXMgaW1wbGVtZW50YXRpb24uCgo+IAo+ID4gCj4gPiAjIyBDb21tZW50cyAv IGZlZWRiYWNrPwo+ID4gCj4gPiBEb2VzIHRoZSBhYm92ZSBhcHByb2FjaCBzZWVtIHJlYXNvbmFi bGU/IEhvdyBkbyBwZW9wbGUgZmVlbCBhYm91dCBpbnRyb2R1Y2luZwo+ID4gYSBuZXcgQVBJIHZz LiB0cnlpbmcgdG8gaGFtbWVyIHRoZSBleGlzdGluZyBBUEkgaW50byB0aGUgc2hhcGUgSSB3YW50 IGl0IHRvIGJlPwo+ID4gCj4gPiBJJ3ZlIGF0dGFjaGVkIGFuIGV4YW1wbGUgb2Ygd2hhdCA8YXZz Y2FsZS5oPiBjb3VsZCBlbmQgdXAgbG9va2luZyBsaWtlLiBJZgo+ID4gdGhlcmUgaXMgYnJvYWQg YWdyZWVtZW50IG9uIHRoaXMgZGVzaWduLCBJIHdpbGwgbW92ZSBvbiB0byBhbiBpbXBsZW1lbnRh dGlvbi4KPiA+IDxhdnNjYWxlLmg+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPiA+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+IGZmbXBlZy1kZXZl bEBmZm1wZWcub3JnCj4gPiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1w ZWctZGV2ZWwKPiA+IAo+ID4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVt YWlsCj4gPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5z dWJzY3JpYmUiLgo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcu b3JnCj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4g Cj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gZmZtcGVnLWRl dmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1h aWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFp bG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFi b3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVj dCAidW5zdWJzY3JpYmUiLgo=