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 154B74BBAF
	for <ffmpegdev@gitmailbox.com>; Wed,  2 Apr 2025 20:07:11 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 455CD68AD97;
	Wed,  2 Apr 2025 23:07:08 +0300 (EEST)
Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com
 [209.85.215.172])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F11FC687D2A
 for <ffmpeg-devel@ffmpeg.org>; Wed,  2 Apr 2025 23:07:01 +0300 (EEST)
Received: by mail-pg1-f172.google.com with SMTP id
 41be03b00d2f7-af5085f7861so160073a12.3
 for <ffmpeg-devel@ffmpeg.org>; Wed, 02 Apr 2025 13:07:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1743624419; x=1744229219; darn=ffmpeg.org;
 h=message-id:in-reply-to:to:references:date:subject:mime-version
 :content-transfer-encoding:from:from:to:cc:subject:date:message-id
 :reply-to; bh=S9/KXaovf+Zfoo0hyzOEDeIDJXleLuEiZe+01SzV9uQ=;
 b=h2ZXjMX3SW4ZcQghDnqV4622pnYjaGi6JyOpC2xF3RqVHDaHthy3Y4bC7kDMKEAend
 XK50N6bLWc4W8hVxiiO7rUppdp0jUsXQPW2TxmbtS7Ci2B0vIYE0ZacNaOTfqXfbK6EZ
 RP6HKj0vLifvVb/HYOE5OVwvBkk9/1EM6ahq88XpkxMinIahr0PkCHhehoKJF32t9Iqm
 ADroC4SVAaLRETaNv4AJ4d9dyisP8ksbbG+usj5eHNLK0JcwJSRwsRv3p9CU8BrdMsmK
 hqrFJoaULoZNiuxFtQmWndkCPn+/896fiZFZlPQsxARHQBL7EDkE+Mr2trhrAMJ9nKPg
 O0RQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1743624419; x=1744229219;
 h=message-id:in-reply-to:to:references:date:subject:mime-version
 :content-transfer-encoding:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=S9/KXaovf+Zfoo0hyzOEDeIDJXleLuEiZe+01SzV9uQ=;
 b=FMvgIQSBnJCuM1a1EIMBAhQvadZbPcoA+3NLurBiMjCAeoIaCtRtCIaOw3oRlLlaMC
 YcHFuzkXqy70E0aM4CB79qoGSu3sxpKscGBL6f0BbYRBfJsFcdsaQIGzwFqCyRYcovW+
 9aleZ8uXQ+SGRagANaAXL1NPyu6vhJWOayOhKosItPTlaiVNsU7gXX5lc0xXZdJ23/GJ
 zE3em919x/FCSiv/CK5zznncFtvWN/Po3R8WBHqvPrOeav0CQU2wZSgHGOWissnUmOlU
 Vn1LmFbCFZQV2Xgo1RN5N27P7RtkzLVjbuMb2pm9P92QKdUTWyJ3gdgzyWhbmwR4ef9m
 RfMA==
X-Gm-Message-State: AOJu0YzltXqiFLs3MCsDNImKP91GraakfZgUkzSEguu4W5wOdWYle6YK
 NfCRfBr5BWRvulk7Yc6a8pbxwqmxp8A9yB7DRi4uxrWUhEHNOdnyX9q0Hw==
X-Gm-Gg: ASbGncvauMbhzITbXaBnc7Vf0S7i81hjpzPM46dKqz1wPPUHSJR0qEmQ2zS+7mZnkjr
 wBivAyqbv8GW3c2CipAM1GDZ/hO4owD49MSoNglWTCcMV0i3osOk1vEYOAFMXWzX/FIY5yodc60
 CdemTSNsabpko6Ssk8+D4iWZmGug/68qajYTU+nD6q2/QPY3he/4i1NSDFfnIcxDKNjcHyPJ9z/
 I9W0Xa2GbGrU41YivNMbXR8nqzTFSEYABam/owF4tHNOkFr6Z1fwQVcu/v7ii9qrKgqApmWsg1/
 ySOtvb43AOlL1CiD9fFnO7LKNjcdXMdZpqNn+IY4VOkMKLAPXK3t+A83iE/Y8jnMKnjXUShj/pp
 UIm8d+KQDDChqZl2rjZ2sD8PE0DqkTCJyufMNdNKTZg+MkuRDRl5cktyxvQ==
X-Google-Smtp-Source: AGHT+IEJRPCgT2x+ikdW86qswtPWd9IAuCxNanNXE7pb6GhuxJmXSFg3IOytDbH3nDE45LY88JUpqA==
X-Received: by 2002:a17:90b:2644:b0:2ff:62f3:5b19 with SMTP id
 98e67ed59e1d1-3057cb3486amr102703a91.13.1743624418007; 
 Wed, 02 Apr 2025 13:06:58 -0700 (PDT)
Received: from smtpclient.apple ([2a00:79e1:2e00:5b01:b17c:9518:7af1:3252])
 by smtp.gmail.com with ESMTPSA id
 98e67ed59e1d1-3057cb9500dsm40044a91.47.2025.04.02.13.06.56
 for <ffmpeg-devel@ffmpeg.org>
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 02 Apr 2025 13:06:57 -0700 (PDT)
From: Peter Xia <aattyy@gmail.com>
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.400.131.1.6\))
Date: Wed, 2 Apr 2025 13:06:46 -0700
References: <20250401102902.89332-1-aattyy@gmail.com>
To: ffmpeg-devel@ffmpeg.org
In-Reply-To: <20250401102902.89332-1-aattyy@gmail.com>
Message-Id: <3AE673DA-FD00-4C99-9064-3A2A8D82C953@gmail.com>
X-Mailer: Apple Mail (2.3826.400.131.1.6)
Subject: Re: [FFmpeg-devel] [PATCH] avcodec/libwebpdec: Add libwebp WebP
 decoder.
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/3AE673DA-FD00-4C99-9064-3A2A8D82C953@gmail.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

Q2FuIGFueW9uZSB0YWtlIGEgbG9vayBhdCB0aGlzPyBUaGlzIGlzIG15IGZpcnN0IHBhdGNoIHNv
IG5vdCBlbnRpcmVseSBzdXJlIGFib3V0IHRoZSBwcm9jZXNzLgoKVGhhbmtzLApQZXRlcgoKPiBP
biBBcHIgMSwgMjAyNSwgYXQgMzoyOeKAr0FNLCBQZXRlciBYaWEgPGFhdHR5eUBnbWFpbC5jb20+
IHdyb3RlOgo+IAo+IEFkZHMgc3VwcG9ydCBvZiBkZWNvZGluZyBhbmltYXRlZCB3ZWJwLgo+IAo+
IFNpZ25lZC1vZmYtYnk6IFBldGVyIFhpYSA8YWF0dHl5QGdtYWlsLmNvbT4KPiAtLS0KPiBDaGFu
Z2Vsb2cgICAgICAgICAgICAgICAgIHwgICAxICsKPiBjb25maWd1cmUgICAgICAgICAgICAgICAg
IHwgICA0ICstCj4gZG9jL2dlbmVyYWxfY29udGVudHMudGV4aSB8ICAgMiArLQo+IGxpYmF2Y29k
ZWMvTWFrZWZpbGUgICAgICAgfCAgIDEgKwo+IGxpYmF2Y29kZWMvYWxsY29kZWNzLmMgICAgfCAg
IDMgKy0KPiBsaWJhdmNvZGVjL2xpYndlYnBkZWMuYyAgIHwgMjAwICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrCj4gbGliYXZjb2RlYy92ZXJzaW9uLmggICAgICB8ICAgMiAr
LQo+IDcgZmlsZXMgY2hhbmdlZCwgMjA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4g
Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvbGlid2VicGRlYy5jCj4gCj4gZGlmZiAtLWdp
dCBhL0NoYW5nZWxvZyBiL0NoYW5nZWxvZwo+IGluZGV4IGEwM2E3OWQxN2EuLjQ2MzVlMTZjMDUg
MTAwNjQ0Cj4gLS0tIGEvQ2hhbmdlbG9nCj4gKysrIGIvQ2hhbmdlbG9nCj4gQEAgLTEyLDYgKzEy
LDcgQEAgdmVyc2lvbiA8bmV4dD46Cj4gLSBBbmltYXRlZCBKUEVHIFhMIGVuY29kaW5nICh2aWEg
bGlianhsKQo+IC0gVlZDIGluIE1hdHJvc2thCj4gLSBDRU5DIEFWMSBzdXBwb3J0IGluIE1QNCBt
dXhlcgo+ICstIEFuaW1hdGVkIFdlYlAgZGVjb2RpbmcKPiAKPiB2ZXJzaW9uIDcuMToKPiAtIFJh
dyBDYXB0aW9ucyB3aXRoIFRpbWUgKFJDV1QpIGNsb3NlZCBjYXB0aW9uIGRlbXV4ZXIKPiBkaWZm
IC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCj4gaW5kZXggNDU1OTk2MmE0YS4uMjhhNTMy
NjQxYiAxMDA3NTUKPiAtLS0gYS9jb25maWd1cmUKPiArKysgYi9jb25maWd1cmUKPiBAQCAtMzYx
MSw2ICszNjExLDcgQEAgbGlidnB4X3ZwOV9lbmNvZGVyX2RlcHM9ImxpYnZweCIKPiBsaWJ2dmVu
Y19lbmNvZGVyX2RlcHM9ImxpYnZ2ZW5jIgo+IGxpYndlYnBfZW5jb2Rlcl9kZXBzPSJsaWJ3ZWJw
Igo+IGxpYndlYnBfYW5pbV9lbmNvZGVyX2RlcHM9ImxpYndlYnAiCj4gK2xpYndlYnBfZGVjb2Rl
cl9kZXBzPSJsaWJ3ZWJwIgo+IGxpYngyNjJfZW5jb2Rlcl9kZXBzPSJsaWJ4MjYyIgo+IGxpYngy
NjRfZW5jb2Rlcl9kZXBzPSJsaWJ4MjY0Igo+IGxpYngyNjRfZW5jb2Rlcl9zZWxlY3Q9ImF0c2Nf
YTUzIGdvbG9tYiIKPiBAQCAtNzA4MSw3ICs3MDgyLDggQEAgZW5hYmxlZCBsaWJ2cHggICAgICAg
ICAgICAmJiB7Cj4gZW5hYmxlZCBsaWJ2dmVuYyAgICAgICAgICAmJiByZXF1aXJlX3BrZ19jb25m
aWcgbGlidnZlbmMgImxpYnZ2ZW5jID49IDEuNi4xIiAidnZlbmMvdnZlbmMuaCIgdnZlbmNfZ2V0
X3ZlcnNpb24KPiBlbmFibGVkIGxpYndlYnAgICAgICAgICAgICYmIHsKPiAgICAgZW5hYmxlZCBs
aWJ3ZWJwX2VuY29kZXIgICAgICAmJiByZXF1aXJlX3BrZ19jb25maWcgbGlid2VicCAibGlid2Vi
cCA+PSAwLjIuMCIgd2VicC9lbmNvZGUuaCBXZWJQR2V0RW5jb2RlclZlcnNpb24KPiAtICAgIGVu
YWJsZWQgbGlid2VicF9hbmltX2VuY29kZXIgJiYgY2hlY2tfcGtnX2NvbmZpZyBsaWJ3ZWJwX2Fu
aW1fZW5jb2RlciAibGlid2VicG11eCA+PSAwLjQuMCIgd2VicC9tdXguaCBXZWJQQW5pbUVuY29k
ZXJPcHRpb25zSW5pdDsgfQo+ICsgICAgZW5hYmxlZCBsaWJ3ZWJwX2FuaW1fZW5jb2RlciAmJiBj
aGVja19wa2dfY29uZmlnIGxpYndlYnBfYW5pbV9lbmNvZGVyICJsaWJ3ZWJwbXV4ID49IDAuNC4w
IiB3ZWJwL211eC5oIFdlYlBBbmltRW5jb2Rlck9wdGlvbnNJbml0Cj4gKyAgICBlbmFibGVkIGxp
YndlYnBfZGVjb2RlciAgICAgICYmIGNoZWNrX3BrZ19jb25maWcgbGlid2VicF9kZWNvZGVyICJs
aWJ3ZWJwZGVtdXggPj0gMS41LjAiIHdlYnAvZGVtdXguaCBXZWJQQW5pbURlY29kZXJPcHRpb25z
SW5pdEludGVybmFsOyB9Cj4gZW5hYmxlZCBsaWJ4MjY0ICAgICAgICAgICAmJiByZXF1aXJlX3Br
Z19jb25maWcgbGlieDI2NCB4MjY0ICJzdGRpbnQuaCB4MjY0LmgiIHgyNjRfZW5jb2Rlcl9lbmNv
ZGUgJiYKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVfY3BwX2NvbmRpdGlv
biBsaWJ4MjY0IHgyNjQuaCAiWDI2NF9CVUlMRCA+PSAxNTUiICYmIHsKPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsgIiR0b29sY2hhaW4iICE9ICJtc3ZjIiBdIHx8Cj4gZGlmZiAtLWdp
dCBhL2RvYy9nZW5lcmFsX2NvbnRlbnRzLnRleGkgYi9kb2MvZ2VuZXJhbF9jb250ZW50cy50ZXhp
Cj4gaW5kZXggNWZhZjg5ODE1Yi4uNGYxMGMzZTM0YSAxMDA2NDQKPiAtLS0gYS9kb2MvZ2VuZXJh
bF9jb250ZW50cy50ZXhpCj4gKysrIGIvZG9jL2dlbmVyYWxfY29udGVudHMudGV4aQo+IEBAIC04
NTcsNyArODU3LDcgQEAgZm9sbG93aW5nIGltYWdlIGZvcm1hdHMgYXJlIHN1cHBvcnRlZDoKPiBA
aXRlbSBXQk1QICAgICAgICAgQHRhYiBYIEB0YWIgWAo+ICAgICBAdGFiIFdpcmVsZXNzIEFwcGxp
Y2F0aW9uIFByb3RvY29sIEJpdG1hcCBpbWFnZSBmb3JtYXQKPiBAaXRlbSBXZWJQICAgICAgICAg
QHRhYiBFIEB0YWIgWAo+IC0gICAgQHRhYiBXZWJQIGltYWdlIGZvcm1hdCwgZW5jb2Rpbmcgc3Vw
cG9ydGVkIHRocm91Z2ggZXh0ZXJuYWwgbGlicmFyeSBsaWJ3ZWJwCj4gKyAgICBAdGFiIFdlYlAg
aW1hZ2UgZm9ybWF0LCBzdXBwb3J0ZWQgdGhyb3VnaCBleHRlcm5hbCBsaWJyYXJ5IGxpYndlYnAK
PiBAaXRlbSBYQk0gIEB0YWIgWCBAdGFiIFgKPiAgICAgQHRhYiBYIEJpdE1hcCBpbWFnZSBmb3Jt
YXQKPiBAaXRlbSBYRmFjZSBAdGFiIFggQHRhYiBYCj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMv
TWFrZWZpbGUgYi9saWJhdmNvZGVjL01ha2VmaWxlCj4gaW5kZXggYjI0MjAxYjFhZi4uYzk2Mzdh
MjExNCAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCj4gKysrIGIvbGliYXZjb2Rl
Yy9NYWtlZmlsZQo+IEBAIC0xMTc5LDYgKzExNzksNyBAQCBPQkpTLSQoQ09ORklHX0xJQlZQWF9W
UDlfRU5DT0RFUikgICAgICAgICArPSBsaWJ2cHhlbmMubwo+IE9CSlMtJChDT05GSUdfTElCVlZF
TkNfRU5DT0RFUikgICAgICAgICAgICs9IGxpYnZ2ZW5jLm8KPiBPQkpTLSQoQ09ORklHX0xJQldF
QlBfRU5DT0RFUikgICAgICAgICAgICArPSBsaWJ3ZWJwZW5jX2NvbW1vbi5vIGxpYndlYnBlbmMu
bwo+IE9CSlMtJChDT05GSUdfTElCV0VCUF9BTklNX0VOQ09ERVIpICAgICAgICs9IGxpYndlYnBl
bmNfY29tbW9uLm8gbGlid2VicGVuY19hbmltZW5jb2Rlci5vCj4gK09CSlMtJChDT05GSUdfTElC
V0VCUF9ERUNPREVSKSAgICAgICAgICAgICs9IGxpYndlYnBkZWMubwo+IE9CSlMtJChDT05GSUdf
TElCWDI2Ml9FTkNPREVSKSAgICAgICAgICAgICs9IGxpYngyNjQubwo+IE9CSlMtJChDT05GSUdf
TElCWDI2NF9FTkNPREVSKSAgICAgICAgICAgICs9IGxpYngyNjQubwo+IE9CSlMtJChDT05GSUdf
TElCWDI2NV9FTkNPREVSKSAgICAgICAgICAgICs9IGxpYngyNjUubwo+IGRpZmYgLS1naXQgYS9s
aWJhdmNvZGVjL2FsbGNvZGVjcy5jIGIvbGliYXZjb2RlYy9hbGxjb2RlY3MuYwo+IGluZGV4IGYx
MDUxOTYxN2UuLjVmOGY2ODIxMTEgMTAwNjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy9hbGxjb2RlY3Mu
Ywo+ICsrKyBiL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKPiBAQCAtODEwLDggKzgxMCw5IEBAIGV4
dGVybiBGRkNvZGVjIGZmX2xpYnZweF92cDlfZW5jb2RlcjsKPiBleHRlcm4gY29uc3QgRkZDb2Rl
YyBmZl9saWJ2cHhfdnA5X2RlY29kZXI7Cj4gZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfbGlidnZl
bmNfZW5jb2RlcjsKPiAvKiBwcmVmZXJyZWQgb3ZlciBsaWJ3ZWJwICovCj4gLWV4dGVybiBjb25z
dCBGRkNvZGVjIGZmX2xpYndlYnBfYW5pbV9lbmNvZGVyOwo+IGV4dGVybiBjb25zdCBGRkNvZGVj
IGZmX2xpYndlYnBfZW5jb2RlcjsKPiArZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfbGlid2VicF9h
bmltX2VuY29kZXI7Cj4gK2V4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYndlYnBfZGVjb2RlcjsK
PiBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9saWJ4MjYyX2VuY29kZXI7Cj4gZXh0ZXJuIGNvbnN0
IEZGQ29kZWMgZmZfbGlieDI2NF9lbmNvZGVyOwo+IGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xp
YngyNjRyZ2JfZW5jb2RlcjsKPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9saWJ3ZWJwZGVjLmMg
Yi9saWJhdmNvZGVjL2xpYndlYnBkZWMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg
MDAwMDAwMDAwMC4uOWVjM2I2MDcwOQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJhdmNvZGVj
L2xpYndlYnBkZWMuYwo+IEBAIC0wLDAgKzEsMjAwIEBACj4gKy8qCj4gKyAqIExpYldlYlAgZGVj
b2Rlcgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjUgUGV0ZXIgWGlhCj4gKyAqCj4gKyAqIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsg
KiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAq
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4g
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+
ICsKPiArLyoqCj4gKyAqIEBmaWxlCj4gKyAqIExpYldlYlAgZGVjb2Rlcgo+ICsgKi8KPiArCj4g
KyNpbmNsdWRlICJkZWNvZGUuaCIKPiArI2luY2x1ZGUgImNvZGVjX2ludGVybmFsLmgiCj4gKyNp
bmNsdWRlICJsaWJhdnV0aWwvYXZ1dGlsLmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0Lmgi
Cj4gKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgo+ICsjaW5jbHVkZSAibGliYXZm
b3JtYXQvYXZpby5oIgo+ICsKPiArI2luY2x1ZGUgPHdlYnAvZGVtdXguaD4KPiArI2luY2x1ZGUg
PHdlYnAvZGVjb2RlLmg+Cj4gKwo+ICt0eXBlZGVmIHN0cnVjdCBBbmltYXRlZFdlYlBDb250ZXh0
Cj4gK3sKPiArICAgIGNvbnN0IEFWQ2xhc3MgKmNsYXNzOwo+ICsgICAgV2ViUEFuaW1EZWNvZGVy
T3B0aW9ucyBkZWNfb3B0aW9uczsKPiArICAgIFdlYlBBbmltRGVjb2RlciAqZGVjOwo+ICsgICAg
QVZCdWZmZXJSZWYgKmZpbGVfY29udGVudDsKPiArICAgIFdlYlBEYXRhIHdlYnBfZGF0YTsgLy8g
cmVmZXJlbmNlcyB8ZmlsZV9jb250ZW50fAo+ICsgICAgdWludDMyX3QgbG9vcF90b19zZW5kOwo+
ICsgICAgdWludDMyX3QgbG9vcF9zZW50Owo+ICsKPiArICAgIC8vIC0tLSBPcHRpb25zIC0tLQo+
ICsgICAgaW50IGlnbm9yZV9sb29wOwo+ICt9IEFuaW1hdGVkV2ViUENvbnRleHQ7Cj4gKwo+ICsv
LyBJbml0aWFsaXplIHRoZSBkZWNvZGVyIGNvbnRleHQKPiArc3RhdGljIGF2X2NvbGQgaW50IGRl
Y29kZV9saWJ3ZWJwX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQo+ICt7Cj4gKyAgICBBbmlt
YXRlZFdlYlBDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKPiArCj4gKyAgICBpZiAoIVdl
YlBBbmltRGVjb2Rlck9wdGlvbnNJbml0KCZzLT5kZWNfb3B0aW9ucykpCj4gKyAgICB7Cj4gKyAg
ICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJDYW5ub3QgaW5pdGlhbGl6ZSBXZWJQ
QW5pbURlY29kZXJPcHRpb25zXG4iKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0p
Owo+ICsgICAgfQo+ICsgICAgcy0+ZGVjX29wdGlvbnMuY29sb3JfbW9kZSA9IE1PREVfUkdCQTsK
PiArICAgIHMtPmRlY19vcHRpb25zLnVzZV90aHJlYWRzID0gMTsKPiArICAgIHMtPmZpbGVfY29u
dGVudCA9IE5VTEw7Cj4gKyAgICBzLT5sb29wX3NlbnQgPSAwOwo+ICsKPiArICAgIGF2Y3R4LT5w
aXhfZm10ID0gQVZfUElYX0ZNVF9SR0JBOwo+ICsgICAgYXZjdHgtPnBrdF90aW1lYmFzZSA9IGF2
X21ha2VfcSgxLCAxMDAwKTsKPiArICAgIGF2Y3R4LT5mcmFtZXJhdGUgPSBhdl9tYWtlX3EoMSwg
MCk7Cj4gKwo+ICsgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJBbmltYXRlZCBXZWJQ
IGRlY29kZXIgaW5pdGlhbGl6ZWQuXG4iKTsKPiArICAgIHJldHVybiAwOyAvLyBTdWNjZXNzCj4g
K30KPiArCj4gKy8vIERlY29kZSBvbmUgZnJhbWUgb2YgdGhlIGFuaW1hdGVkIFdlYlAKPiArLy8g
VGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBieSBGRm1wZWcuCj4g
Ky8vIFRoZSBmaXJzdCBjYWxsIHJlY2VpdmVzIHRoZSBBVlBhY2tldCB3aXRoIHRoZSBmdWxsIFdl
YlAgZmlsZS4KPiArLy8gU3Vic2VxdWVudCBjYWxscyByZWNlaXZlIGVtcHR5IEFWUGFja2V0IHVu
dGlsIGFsbCBmcmFtZXMgYXJlIGRlY29kZWQuCj4gK3N0YXRpYyBpbnQgZGVjb2RlX2xpYndlYnBf
ZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpwLAo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCAqZ290X2ZyYW1lLCBBVlBhY2tldCAqYXZwa3QpCj4gK3sK
PiArICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0lORk8sICJkZWNvZGVfbGlid2VicF9mcmFtZSgp
XG4iKTsKPiArCj4gKyAgICBXZWJQQW5pbUluZm8gYW5pbV9pbmZvOwo+ICsgICAgdWludDhfdCAq
ZnJhbWVfcmdiYTsKPiArICAgIGludCB0aW1lc3RhbXBfbXM7Cj4gKwo+ICsgICAgQW5pbWF0ZWRX
ZWJQQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7Cj4gKyAgICBpbnQgcmV0ID0gYXZwa3Qt
PnNpemU7Cj4gKwo+ICsgICAgLy8gSW5pdGlhbGl6YXRpb24gUGhhc2UgKEZpcnN0IENhbGwpCj4g
KyAgICAvLyB8YXZwa3R8IGNvbnRhaW5zIHRoZSBlbnRpcmUgZmlsZS4KPiArICAgIGlmICghcy0+
ZGVjKQo+ICsgICAgewo+ICsgICAgICAgIGlmICghYXZwa3QgfHwgYXZwa3QtPnNpemUgPD0gMCkK
PiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIC8vIFNob3VsZCBub3QgaGFwcGVuIG9uIHRoZSBm
aXJzdCBjYWxsLCBidXQgY2hlY2sgYW55d2F5Lgo+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgs
IEFWX0xPR19FUlJPUiwgIk5vIGlucHV0IGRhdGEgcHJvdmlkZWQgb24gZmlyc3QgY2FsbC5cbiIp
Owo+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+ICsgICAgICAgIH0KPiAr
Cj4gKyAgICAgICAgLy8gU3RvcmUgZW50aXJlIFdlYlAgZmlsZSBpbiBtZW1vcnkuCj4gKyAgICAg
ICAgcy0+ZmlsZV9jb250ZW50ID0gYXZfYnVmZmVyX3JlZihhdnBrdC0+YnVmKTsKPiArICAgICAg
ICBzLT53ZWJwX2RhdGEuYnl0ZXMgPSBzLT5maWxlX2NvbnRlbnQtPmRhdGE7Cj4gKyAgICAgICAg
cy0+d2VicF9kYXRhLnNpemUgPSBzLT5maWxlX2NvbnRlbnQtPnNpemU7Cj4gKwo+ICsgICAgICAg
IHMtPmRlYyA9IFdlYlBBbmltRGVjb2Rlck5ldygmcy0+d2VicF9kYXRhLCAmcy0+ZGVjX29wdGlv
bnMpOwo+ICsgICAgICAgIGlmICghcy0+ZGVjKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAg
YXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJFcnJvciBjcmVhdGluZyBXZWJQQW5pbURlY29k
ZXIuXG4iKTsKPiArICAgICAgICAgICAgYXZfYnVmZmVyX3VucmVmKCZzLT5maWxlX2NvbnRlbnQp
Owo+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ICsgICAgICAgIH0KPiAr
Cj4gKyAgICAgICAgV2ViUEFuaW1EZWNvZGVyR2V0SW5mbyhzLT5kZWMsICZhbmltX2luZm8pOwo+
ICsKPiArICAgICAgICBzLT5sb29wX3RvX3NlbmQgPSBzLT5pZ25vcmVfbG9vcCA/IDEgOiBhbmlt
X2luZm8ubG9vcF9jb3VudDsKPiArICAgICAgICBhdmN0eC0+d2lkdGggPSBhbmltX2luZm8uY2Fu
dmFzX3dpZHRoOwo+ICsgICAgICAgIGF2Y3R4LT5jb2RlZF93aWR0aCA9IGFuaW1faW5mby5jYW52
YXNfd2lkdGg7Cj4gKyAgICAgICAgYXZjdHgtPmhlaWdodCA9IGFuaW1faW5mby5jYW52YXNfaGVp
Z2h0Owo+ICsgICAgICAgIGF2Y3R4LT5jb2RlZF9oZWlnaHQgPSBhbmltX2luZm8uY2FudmFzX2hl
aWdodDsKPiArICAgICAgICBhdmN0eC0+ZnJhbWVyYXRlID0gYXZfbWFrZV9xKDEsIDApOwo+ICsg
ICAgfQo+ICsKPiArICAgIGlmICghV2ViUEFuaW1EZWNvZGVySGFzTW9yZUZyYW1lcyhzLT5kZWMp
KQo+ICsgICAgewo+ICsgICAgICAgIHMtPmxvb3Bfc2VudCsrOwo+ICsgICAgICAgIFdlYlBBbmlt
RGVjb2RlclJlc2V0KHMtPmRlYyk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKHMtPmxvb3Bfc2Vu
dCA+PSBzLT5sb29wX3RvX3NlbmQpCj4gKyAgICB7Cj4gKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBB
Vl9MT0dfREVCVUcsICJFbmQgb2YgYW5pbWF0ZWQgV2ViUCBzdHJlYW0uXG4iKTsKPiArICAgICAg
ICByZXR1cm4gQVZFUlJPUl9FT0Y7Cj4gKyAgICB9Cj4gKwo+ICsKPiArICAgIGlmICghV2ViUEFu
aW1EZWNvZGVyR2V0TmV4dChzLT5kZWMsICZmcmFtZV9yZ2JhLCAmdGltZXN0YW1wX21zKSkKPiAr
ICAgIHsKPiArICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkVycm9yIGdldHRp
bmcgbmV4dCBmcmFtZSBmcm9tIFdlYlBBbmltRGVjb2Rlci5cbiIpOwo+ICsgICAgICAgIHJldHVy
biBBVkVSUk9SKEVJTlZBTCk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0ID0gZmZfZ2V0X2J1ZmZl
cihhdmN0eCwgcCwgMCk7Cj4gKyAgICBpZiAocmV0KQo+ICsgICAgewo+ICsgICAgICAgIGF2X2xv
ZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGFsbG9jYXRlZCBidWZmZXIuXG4iKTsK
PiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ICsgICAgfQo+ICsKPiArICAgIHAt
PndpZHRoID0gYXZjdHgtPndpZHRoOwo+ICsgICAgcC0+aGVpZ2h0ID0gYXZjdHgtPmhlaWdodDsK
PiArICAgIHAtPmZvcm1hdCA9IEFWX1BJWF9GTVRfUkdCQTsKPiArICAgIHAtPnB0cyA9IHRpbWVz
dGFtcF9tczsKPiArICAgIHAtPnBrdF9kdHMgPSAwOwo+ICsgICAgcC0+cGljdF90eXBlID0gQVZf
UElDVFVSRV9UWVBFX0k7Cj4gKwo+ICsgICAgbWVtY3B5KHAtPmRhdGFbMF0sIGZyYW1lX3JnYmEs
IHAtPndpZHRoICogcC0+aGVpZ2h0ICogNCk7Cj4gKwo+ICsgICAgKmdvdF9mcmFtZSA9IDE7Cj4g
KyAgICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgYXZfY29sZCBpbnQgZGVjb2RlX2xp
YndlYnBfY2xvc2UoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQo+ICt7Cj4gKyAgICBBbmltYXRlZFdl
YlBDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKPiArICAgIGF2X2J1ZmZlcl91bnJlZigm
cy0+ZmlsZV9jb250ZW50KTsKPiArICAgIGlmIChzLT5kZWMpCj4gKyAgICB7Cj4gKyAgICAgICAg
V2ViUEFuaW1EZWNvZGVyRGVsZXRlKHMtPmRlYyk7Cj4gKyAgICAgICAgcy0+ZGVjID0gTlVMTDsK
PiArICAgIH0KPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3QgQVZPcHRp
b24gb3B0aW9uc1tdID0gewo+ICsgICAgeyJpZ25vcmVfbG9vcCIsICJpZ25vcmUgbG9vcCBzZXR0
aW5nIChuZXRzY2FwZSBleHRlbnNpb24pIiwgb2Zmc2V0b2YoQW5pbWF0ZWRXZWJQQ29udGV4dCwg
aWdub3JlX2xvb3ApLCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2NCA9IDF9LCAwLCAxLCBBVl9PUFRf
RkxBR19ERUNPRElOR19QQVJBTX0sCj4gKyAgICB7TlVMTH19Owo+ICsKPiArc3RhdGljIGNvbnN0
IEFWQ2xhc3MgbGlid2VicF9kZWNvZGVyX2NsYXNzID0gewo+ICsgICAgLmNsYXNzX25hbWUgPSAi
bGlid2VicF9kZWNvZGVyIiwKPiArICAgIC5pdGVtX25hbWUgPSBhdl9kZWZhdWx0X2l0ZW1fbmFt
ZSwKPiArICAgIC5vcHRpb24gPSBvcHRpb25zLAo+ICsgICAgLnZlcnNpb24gPSBMSUJBVlVUSUxf
VkVSU0lPTl9JTlQsCj4gKyAgICAuY2F0ZWdvcnkgPSBBVl9DTEFTU19DQVRFR09SWV9ERUNPREVS
LAo+ICt9Owo+ICsKPiArLy8gRGVmaW5lIHRoZSBBVkNvZGVjIHN0cnVjdHVyZSBmb3IgRkZtcGVn
Cj4gK2NvbnN0IEZGQ29kZWMgZmZfbGlid2VicF9kZWNvZGVyID0gewo+ICsgICAgLnAubmFtZSAg
ICAgICAgID0gImxpYndlYnAiLAo+ICsgICAgQ09ERUNfTE9OR19OQU1FKCJsaWJ3ZWJwIGltYWdl
L2FuaW1hdGlvbiBkZWNvZGVyIiksCj4gKyAgICAucC50eXBlICAgICAgICAgPSBBVk1FRElBX1RZ
UEVfVklERU8sCj4gKyAgICAucC5pZCAgICAgICAgICAgPSBBVl9DT0RFQ19JRF9XRUJQLAo+ICsg
ICAgLnAucHJpdl9jbGFzcyAgID0gJmxpYndlYnBfZGVjb2Rlcl9jbGFzcywKPiArICAgIC5wcml2
X2RhdGFfc2l6ZSA9IHNpemVvZihBbmltYXRlZFdlYlBDb250ZXh0KSwKPiArICAgIC5wLndyYXBw
ZXJfbmFtZSA9ICJsaWJ3ZWJwIiwKPiArICAgIC5pbml0ICAgICAgICAgICA9IGRlY29kZV9saWJ3
ZWJwX2luaXQsCj4gKyAgICBGRl9DT0RFQ19ERUNPREVfQ0IoZGVjb2RlX2xpYndlYnBfZnJhbWUp
LAo+ICsgICAgLmNsb3NlICAgICAgICAgID0gZGVjb2RlX2xpYndlYnBfY2xvc2UsCj4gKyAgICAu
cC5jYXBhYmlsaXRpZXMgPSBBVl9DT0RFQ19DQVBfRFIxIHwgQVZfQ09ERUNfQ0FQX0RFTEFZLAo+
ICt9Owo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZlcnNpb24uaCBiL2xpYmF2Y29kZWMvdmVy
c2lvbi5oCj4gaW5kZXggOGMzZDQ3NjAwMy4uNTk1NzAwOTQ1NyAxMDA2NDQKPiAtLS0gYS9saWJh
dmNvZGVjL3ZlcnNpb24uaAo+ICsrKyBiL2xpYmF2Y29kZWMvdmVyc2lvbi5oCj4gQEAgLTI5LDcg
KzI5LDcgQEAKPiAKPiAjaW5jbHVkZSAidmVyc2lvbl9tYWpvci5oIgo+IAo+IC0jZGVmaW5lIExJ
QkFWQ09ERUNfVkVSU0lPTl9NSU5PUiAgIDAKPiArI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJT05f
TUlOT1IgICAxCj4gI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fTUlDUk8gMTAwCj4gCj4gI2Rl
ZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fSU5UICBBVl9WRVJTSU9OX0lOVChMSUJBVkNPREVDX1ZF
UlNJT05fTUFKT1IsIFwKPiAtLSAKPiAyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCj4gCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFp
bGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWls
bWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJv
dmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0
ICJ1bnN1YnNjcmliZSIuCg==