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 10D7548DF3
	for <ffmpegdev@gitmailbox.com>; Mon, 24 Mar 2025 02:48:52 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 717D4687BB6;
	Mon, 24 Mar 2025 04:48:48 +0200 (EET)
Received: from out203-205-221-155.mail.qq.com (out203-205-221-155.mail.qq.com
 [203.205.221.155])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B72F0687BA3
 for <ffmpeg-devel@ffmpeg.org>; Mon, 24 Mar 2025 04:48:40 +0200 (EET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com;
 s=s201512; t=1742784510;
 bh=8fvHx/9ew0rxhVeVXRvlXMN77UM+AHWvUiR6/IE+yJ0=;
 h=Subject:From:In-Reply-To:Date:Cc:References:To;
 b=lv+Of4RRn6jPavDqHlD8EtCS2Y/J0SGt8P7D72JVGGGgMxuNP/WhKslaZ0n/k3Q+u
 ouWSERLn64gPsxo6gCAzrjJXYM3Il2ych71J/DkxF3IF9TQ+ngYWoBvrHYZrFoR6xb
 Ydf5TIHyiq5+at5wg44WmqPDY4HWgTfW8D6qQt7Y=
Received: from smtpclient.apple ([119.147.10.242])
 by newxmesmtplogicsvrszb16-1.qq.com (NewEsmtp) with SMTP
 id C1C9E45B; Mon, 24 Mar 2025 10:48:28 +0800
X-QQ-mid: xmsmtpt1742784508tjlqr5fmj
Message-ID: <tencent_3996963ECD64202FCDE1CF88D521A73FB807@qq.com>
X-QQ-XMAILINFO: OOO9dHjlsLs7AGPTF6NsPu2kNrIRlXsf0JgMTxKtjfmUqHsyMNcttenA/k/8AU
 iYLQ1VmoqxAd4E/1Obt+ZA8NMClJC5nbiagJWRBbNq5EAuIyvsm6c+eTnC1SGtb26h4TSmY/3uT7
 ieQpegATvxolYFgYq7fZY+A3mDrFKZYCXgylFIQuCgFKxTDYZ+v3JZXKPUdXJNLj+bUXpVbitsfZ
 MjfSDaAEpQ4sL3cfm46EHDo3fBpdbq5n+JYWn+oTCbtM2WyNWLiULcHt+yTKiRuL7UCagBT5uIaK
 NiTEIFFCIahyXGZElXKibLJ9pI0RE5yLkTVN/j41+K5fTmznhu0kSN4NlRCPDvl1aprQMF6urCWJ
 +uPKmF1AlCd4IaeEg0Cjp/9TWKSHdAXxFybICnuuyWPml9nA8BGl5H0lhCsKnBku3u2vBttfniV8
 i+wKSBkbgoauRRsq4aj1237eN5MKcU4vt/avtubbln6HMQf/8F+5mvKfTbfOnIOioij9lSuaZFvJ
 QUC1Yxpdywn43fVnsagyC7JRra4dAGD+g0nRqaA4Euwl/wPCgTBIucxm/X6Z6BI6dHWkPlOkmqi5
 IoHaQHovV6cfAFRPTLrAzYpOmN982SajmRRnPofdtOKmD16GCd6RlYo2ZbiT6aHtI3Sk4/FVHSEJ
 ILwP1xcq1zYq8vwuM2K5kl+uWg+CbOMiHKKsRhQeUVbUDZYGjZY1+iXBwLhTtJuDf4qMUqLLoqG9
 UJk3wOQDtf0ncMRArCTX8Rwswc3IoRGEDQmpfpIzMJ7JOijh0sGcGMssERYZIpIijvJ4CcQHGU2f
 2I8Kw72BPGNujBp+C5Si88OZA7Zy7wIfKBKLO9Y/RYhmGdjvOc5+U3THMT9vZakJRGxrUNkPCkl6
 T5BGtzAvtPJ1f0D3f1sCqmilqVPANS8YmoR8V90ObJt5aPjuGEiwgfUzsRZ7fivRirUiNdL4xQrF
 lxKvDsc9fO6OGCIhJ0Bo6SWI5UtQlug2lh8thRVTTyWvfBhW1erKTpFoTeifANmwmToVO2yzaj7L
 MJrUW3JaeIzVO2W5dv
X-QQ-XMRINFO: NI4Ajvh11aEj8Xl/2s1/T8w=
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3818.100.11.1.3\))
From: Zhao Zhili <quinkblack-at-foxmail.com@ffmpeg.org>
In-Reply-To: <tencent_853D9B5524055F429D03DDCF89AD44CF4E05@qq.com>
Date: Mon, 24 Mar 2025 10:48:18 +0800
X-OQ-MSGID: <A26B390A-60E1-44B3-B04F-147AA753A920@foxmail.com>
References: <tencent_853D9B5524055F429D03DDCF89AD44CF4E05@qq.com>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
X-Mailer: Apple Mail (2.3818.100.11.1.3)
Subject: Re: [FFmpeg-devel] [PATCH] FFMPEG: add graph reconfig capability
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>
Cc: 269032741@qq.com
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/tencent_3996963ECD64202FCDE1CF88D521A73FB807@qq.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

Cgo+IE9uIE1hciAyNCwgMjAyNSwgYXQgMTA6MjgsIHlhbmd5YWxlaTA1MCB2aWEgZmZtcGVnLWRl
dmVsIDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4gd3JvdGU6Cj4gCj4gRnJvbTogeWFuZ3lhbGVp
MDUwIDwyNjkwMzI3NDFAcXEuY29tPgo+IAo+IDEuIFN1cHBvcnQgcmV1c2UgdGhlIGdyYXBoIHRv
IHBsYXkgZGlmZmVyZW50IGF1ZGlvLgo+IDIuIFN1cHBvcnQgY29uZmlnIHBhcnQgb2YgdGhlIGdy
YXBoLgo+IAo+IFNpZ25lZC1vZmYtYnk6IHlhbmd5YWxlaTA1MCA8MjY5MDMyNzQxQHFxLmNvbT4K
PiAtLS0KPiBsaWJhdmZpbHRlci9hdmZpbHRlci5jICAgICAgfCAgIDggKy0KPiBsaWJhdmZpbHRl
ci9hdmZpbHRlci5oICAgICAgfCAgIDkgKysKPiBsaWJhdmZpbHRlci9hdmZpbHRlcmdyYXBoLmMg
fCAyMTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gMyBmaWxlcyBjaGFu
Z2VkLCAyMTUgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh
L2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmMgYi9saWJhdmZpbHRlci9hdmZpbHRlci5jCj4gaW5kZXgg
ZTczMjU1NmZmYS4uNzEzOTY2NzRmZSAxMDA2NDQKPiAtLS0gYS9saWJhdmZpbHRlci9hdmZpbHRl
ci5jCj4gKysrIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYwo+IEBAIC0zNDUsNyArMzQ1LDggQEAg
aW50IGZmX2ZpbHRlcl9jb25maWdfbGlua3MoQVZGaWx0ZXJDb250ZXh0ICpmaWx0ZXIpCj4gICAg
ICAgICBGaWx0ZXJMaW5rSW50ZXJuYWwgKmxpID0gZmZfbGlua19pbnRlcm5hbChsaW5rKTsKPiAg
ICAgICAgIEZpbHRlckxpbmtJbnRlcm5hbCAqbGlfaW47Cj4gCj4gLSAgICAgICAgaWYgKCFsaW5r
KSBjb250aW51ZTsKPiArICAgICAgICBpZiAoIWxpbmsgfHwgIWxpbmstPmluY2ZnLmZvcm1hdHMg
fHwgIWxpbmstPm91dGNmZy5mb3JtYXRzKQo+ICsgICAgICAgICAgICBjb250aW51ZTsKPiAgICAg
ICAgIGlmICghbGluay0+c3JjIHx8ICFsaW5rLT5kc3QpIHsKPiAgICAgICAgICAgICBhdl9sb2co
ZmlsdGVyLCBBVl9MT0dfRVJST1IsCj4gICAgICAgICAgICAgICAgICAgICJOb3QgYWxsIGlucHV0
IGFuZCBvdXRwdXQgYXJlIHByb3Blcmx5IGxpbmtlZCAoJWQpLlxuIiwgaSk7Cj4gQEAgLTM1OSw2
ICszNjAsMTEgQEAgaW50IGZmX2ZpbHRlcl9jb25maWdfbGlua3MoQVZGaWx0ZXJDb250ZXh0ICpm
aWx0ZXIpCj4gCj4gICAgICAgICBzd2l0Y2ggKGxpLT5pbml0X3N0YXRlKSB7Cj4gICAgICAgICBj
YXNlIEFWTElOS19JTklUOgo+ICsgICAgICAgICAgICAvKiBmb3IgcGFydCBncmFwaCByZS1uZWdv
dGlhdGlvbi4KPiArICAgICAgICAgICAgICogRm9yIGV4YW1wbGU6IG91dHB1dC1maWx0ZXIgbGlu
ayBoYXMgY29uZmlnX3Byb3BzLAo+ICsgICAgICAgICAgICAgKiBidXQgdGhlIGlucHV0LWZpbHRl
ciBzdGlsbCBuZWVkIGNvbmZpZ19wcm9wcy4gKi8KPiArICAgICAgICAgICAgaWYgKChyZXQgPSBm
Zl9maWx0ZXJfY29uZmlnX2xpbmtzKGxpbmstPnNyYykpIDwgMCkKPiArICAgICAgICAgICAgICAg
IHJldHVybiByZXQ7Cj4gICAgICAgICAgICAgY29udGludWU7Cj4gICAgICAgICBjYXNlIEFWTElO
S19TVEFSVElOSVQ6Cj4gICAgICAgICAgICAgYXZfbG9nKGZpbHRlciwgQVZfTE9HX0lORk8sICJj
aXJjdWxhciBmaWx0ZXIgY2hhaW4gZGV0ZWN0ZWRcbiIpOwo+IGRpZmYgLS1naXQgYS9saWJhdmZp
bHRlci9hdmZpbHRlci5oIGIvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaAo+IGluZGV4IDQ1MjBkNWY5
NzguLjk3MjdiMTQyMzEgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaAo+ICsr
KyBiL2xpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgKPiBAQCAtNzE1LDYgKzcxNSwxNSBAQCBlbnVtIHsK
PiAgKi8KPiBpbnQgYXZmaWx0ZXJfZ3JhcGhfY29uZmlnKEFWRmlsdGVyR3JhcGggKmdyYXBoY3R4
LCB2b2lkICpsb2dfY3R4KTsKPiAKPiArLyoqCj4gKyAqIENoZWNrIHZhbGlkaXR5IGFuZCByZWNv
bmZpZ3VyZSBhbGwgdGhlIGxpbmtzIGFuZCBmb3JtYXRzIGluIHRoZSBncmFwaC4KPiArICoKPiAr
ICogQHBhcmFtIGdyYXBoY3R4IHRoZSBmaWx0ZXIgZ3JhcGgKPiArICogQHBhcmFtIGxvZ19jdHgg
Y29udGV4dCB1c2VkIGZvciBsb2dnaW5nCj4gKyAqIEByZXR1cm4gPj0gMCBpbiBjYXNlIG9mIHN1
Y2Nlc3MsIGEgbmVnYXRpdmUgQVZFUlJPUiBjb2RlIG90aGVyd2lzZQo+ICsgKi8KPiAraW50IGZm
X2F2ZmlsdGVyX2dyYXBoX3JlY29uZmlnKEFWRmlsdGVyR3JhcGggKmdyYXBoY3R4LCB2b2lkICps
b2dfY3R4KTsKPiArCj4gLyoqCj4gICogRnJlZSBhIGdyYXBoLCBkZXN0cm95IGl0cyBsaW5rcywg
YW5kIHNldCAqZ3JhcGggdG8gTlVMTC4KPiAgKiBJZiAqZ3JhcGggaXMgTlVMTCwgZG8gbm90aGlu
Zy4KPiBkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYXZmaWx0ZXJncmFwaC5jIGIvbGliYXZmaWx0
ZXIvYXZmaWx0ZXJncmFwaC5jCj4gaW5kZXggNWU5M2Y5M2FhYi4uMTU3MzAwNjNkMCAxMDA2NDQK
PiAtLS0gYS9saWJhdmZpbHRlci9hdmZpbHRlcmdyYXBoLmMKPiArKysgYi9saWJhdmZpbHRlci9h
dmZpbHRlcmdyYXBoLmMKPiBAQCAtMjMsNiArMjMsNyBAQAo+ICNpbmNsdWRlICJjb25maWcuaCIK
PiAKPiAjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDxzdGRib29sLmg+Cj4gCj4gI2lu
Y2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgo+ICNpbmNsdWRlICJsaWJhdnV0aWwvYnByaW50
LmgiCj4gQEAgLTM0OCw3ICszNDksNyBAQCBzdGF0aWMgaW50IGZpbHRlcl9xdWVyeV9mb3JtYXRz
KEFWRmlsdGVyQ29udGV4dCAqY3R4KQo+IAo+ICAgICBpZiAoZmlsdGVyLT5mb3JtYXRzX3N0YXRl
ID09IEZGX0ZJTFRFUl9GT1JNQVRTX1FVRVJZX0ZVTkMpIHsKPiAgICAgICAgIGlmICgocmV0ID0g
ZmlsdGVyLT5mb3JtYXRzLnF1ZXJ5X2Z1bmMoY3R4KSkgPCAwKSB7Cj4gLSAgICAgICAgICAgIGlm
IChyZXQgIT0gQVZFUlJPUihFQUdBSU4pKQo+ICsgICAgICAgICAgICBpZiAocmV0ICE9IEFWRVJS
T1IoRUFHQUlOKSAmJiByZXQgIT0gRkZFUlJPUl9OT1RfUkVBRFkpCj4gICAgICAgICAgICAgICAg
IGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIlF1ZXJ5IGZvcm1hdCBmYWlsZWQgZm9yICclcyc6
ICVzXG4iLAo+ICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5uYW1lLCBhdl9lcnIyc3RyKHJl
dCkpOwo+ICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gQEAgLTM5MCw3ICszOTEsNyBAQCBzdGF0
aWMgaW50IGZpbHRlcl9xdWVyeV9mb3JtYXRzKEFWRmlsdGVyQ29udGV4dCAqY3R4KQo+ICAgICAg
ICAgYXZfZnJlZXAoJmNmZ19pbl9keW4pOwo+ICAgICAgICAgYXZfZnJlZXAoJmNmZ19vdXRfZHlu
KTsKPiAgICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gLSAgICAgICAgICAgIGlmIChyZXQgIT0gQVZF
UlJPUihFQUdBSU4pKQo+ICsgICAgICAgICAgICBpZiAocmV0ICE9IEFWRVJST1IoRUFHQUlOKSAm
JiByZXQgIT0gRkZFUlJPUl9OT1RfUkVBRFkpCj4gICAgICAgICAgICAgICAgIGF2X2xvZyhjdHgs
IEFWX0xPR19FUlJPUiwgIlF1ZXJ5IGZvcm1hdCBmYWlsZWQgZm9yICclcyc6ICVzXG4iLAo+ICAg
ICAgICAgICAgICAgICAgICAgICAgY3R4LT5uYW1lLCBhdl9lcnIyc3RyKHJldCkpOwo+ICAgICAg
ICAgICAgIHJldHVybiByZXQ7Cj4gQEAgLTQzOCw2ICs0MzksODUgQEAgc3RhdGljIGludCBmb3Jt
YXRzX2RlY2xhcmVkKEFWRmlsdGVyQ29udGV4dCAqZikKPiAgICAgcmV0dXJuIDE7Cj4gfQo+IAo+
ICtzdGF0aWMgdm9pZCBmZl9hdmZpbHRlcl9saW5rX3VucmVmX2Zvcm1hdHMoQVZGaWx0ZXJMaW5r
ICpsaW5rKQo+ICt7Cj4gKyAgICBmZl9mb3JtYXRzX3VucmVmKCZsaW5rLT5pbmNmZy5mb3JtYXRz
KTsKPiArICAgIGZmX2Zvcm1hdHNfdW5yZWYoJmxpbmstPm91dGNmZy5mb3JtYXRzKTsKPiArICAg
IGZmX2Zvcm1hdHNfdW5yZWYoJmxpbmstPmluY2ZnLnNhbXBsZXJhdGVzKTsKPiArICAgIGZmX2Zv
cm1hdHNfdW5yZWYoJmxpbmstPm91dGNmZy5zYW1wbGVyYXRlcyk7Cj4gKyAgICBmZl9jaGFubmVs
X2xheW91dHNfdW5yZWYoJmxpbmstPmluY2ZnLmNoYW5uZWxfbGF5b3V0cyk7Cj4gKyAgICBmZl9j
aGFubmVsX2xheW91dHNfdW5yZWYoJmxpbmstPm91dGNmZy5jaGFubmVsX2xheW91dHMpOwo+ICt9
Cj4gKwo+ICtzdGF0aWMgYm9vbCBmb3JtYXRzX3VzZWxlc3MoQVZGaWx0ZXJDb250ZXh0ICpmKQo+
ICt7Cj4gKyAgICBib29sIGluLCBvdXQ7Cj4gKyAgICBpbnQgaTsKPiArCj4gKyAgICBpZiAoIWYt
Pm5iX2lucHV0cyB8fCAhZi0+bmJfb3V0cHV0cykKPiArICAgICAgICByZXR1cm4gZmFsc2U7Cj4g
Kwo+ICsgICAgaW4gPSBvdXQgPSB0cnVlOwo+ICsKPiArICAgIGZvciAoaSA9IDA7IGkgPCBmLT5u
Yl9pbnB1dHM7IGkrKykKPiArICAgICAgICBpZiAoZi0+aW5wdXRzW2ldLT5vdXRjZmcuZm9ybWF0
cykgewo+ICsgICAgICAgICAgICBpbiA9IGZhbHNlOwo+ICsgICAgICAgICAgICBicmVhazsKPiAr
ICAgICAgICB9Cj4gKwo+ICsgICAgZm9yIChpID0gMDsgaSA8IGYtPm5iX291dHB1dHM7IGkrKykK
PiArICAgICAgICBpZiAoZi0+b3V0cHV0c1tpXS0+aW5jZmcuZm9ybWF0cykgewo+ICsgICAgICAg
ICAgICBvdXQgPSBmYWxzZTsKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgfQo+ICsK
PiArICAgIGlmICghc3RyY21wKGYtPm5hbWUsICJhbWl4QGEyZHAiKSkgewo+ICsgICAgICAgIGF2
X2xvZyhmLCBBVl9MT0dfRVJST1IsICJjaGVjayBhbWl4QGEyZHAsIGluOiVkLCBvdXQ6JWQsIHJl
dDolZFxuIiwgaW4sIG91dCwgaW4gXiBvdXQpOwo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiBp
biBeIG91dDsKPiArfQo+ICsKPiArCj4gK3N0YXRpYyBib29sIHNhbml0aXplX2Zvcm1hdHMoQVZG
aWx0ZXJHcmFwaCAqZ3JhcGgpCj4gK3sKPiArICAgIEFWRmlsdGVyQ29udGV4dCAqZjsKPiArICAg
IGJvb2wgY2hhbmdlZCA9IGZhbHNlOwo+ICsgICAgdW5zaWduZWQgaSwgajsKPiArCj4gKyAgICBm
b3IgKGkgPSAwOyBpIDwgZ3JhcGgtPm5iX2ZpbHRlcnM7IGkrKykgewo+ICsgICAgICAgIGYgPSBn
cmFwaC0+ZmlsdGVyc1tpXTsKPiArCj4gKyAgICAgICAgZm9yIChqID0gMDsgaiA8IGYtPm5iX2lu
cHV0czsgaisrKSB7Cj4gKyAgICAgICAgICAgIGlmICgoIWYtPmlucHV0c1tqXS0+b3V0Y2ZnLmZv
cm1hdHMgJiYgZi0+aW5wdXRzW2pdLT5pbmNmZy5mb3JtYXRzKQo+ICsgICAgICAgICAgICAgICAg
IHx8IChmLT5pbnB1dHNbal0tPm91dGNmZy5mb3JtYXRzICYmICFmLT5pbnB1dHNbal0tPmluY2Zn
LmZvcm1hdHMpKSB7Cj4gKyAgICAgICAgICAgICAgICBmZl9hdmZpbHRlcl9saW5rX3VucmVmX2Zv
cm1hdHMoZi0+aW5wdXRzW2pdKTsKPiArICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwo+
ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBmb3IgKGogPSAwOyBq
IDwgZi0+bmJfb3V0cHV0czsgaisrKSB7Cj4gKyAgICAgICAgICAgIGlmICgoIWYtPm91dHB1dHNb
al0tPmluY2ZnLmZvcm1hdHMgJiYgZi0+b3V0cHV0c1tqXS0+b3V0Y2ZnLmZvcm1hdHMpCj4gKyAg
ICAgICAgICAgICAgICB8fCAoZi0+b3V0cHV0c1tqXS0+aW5jZmcuZm9ybWF0cyAmJiAhZi0+b3V0
cHV0c1tqXS0+b3V0Y2ZnLmZvcm1hdHMpKSB7Cj4gKyAgICAgICAgICAgICAgICBmZl9hdmZpbHRl
cl9saW5rX3VucmVmX2Zvcm1hdHMoZi0+b3V0cHV0c1tqXSk7Cj4gKyAgICAgICAgICAgICAgICBj
aGFuZ2VkID0gdHJ1ZTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArCj4gKyAgICAg
ICAgaWYgKGZvcm1hdHNfdXNlbGVzcyhmKSkgewo+ICsgICAgICAgICAgICBmb3IgKGogPSAwOyBq
IDwgZi0+bmJfaW5wdXRzOyBqKyspCj4gKyAgICAgICAgICAgICAgICBmZl9hdmZpbHRlcl9saW5r
X3VucmVmX2Zvcm1hdHMoZi0+aW5wdXRzW2pdKTsKPiArCj4gKyAgICAgICAgICAgIGZvciAoaiA9
IDA7IGogPCBmLT5uYl9vdXRwdXRzOyBqKyspCj4gKyAgICAgICAgICAgICAgICBmZl9hdmZpbHRl
cl9saW5rX3VucmVmX2Zvcm1hdHMoZi0+b3V0cHV0c1tqXSk7Cj4gKwo+ICsgICAgICAgICAgICBj
aGFuZ2VkID0gdHJ1ZTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIGNo
YW5nZWQ7Cj4gK30KPiArCj4gLyoqCj4gICogUGVyZm9ybSBvbmUgcm91bmQgb2YgcXVlcnlfZm9y
bWF0cygpIGFuZCBtZXJnaW5nIGZvcm1hdHMgbGlzdHMgb24gdGhlCj4gICogZmlsdGVyIGdyYXBo
Lgo+IEBAIC00NjIsMTIgKzU0MiwxNCBAQCBzdGF0aWMgaW50IHF1ZXJ5X2Zvcm1hdHMoQVZGaWx0
ZXJHcmFwaCAqZ3JhcGgsIHZvaWQgKmxvZ19jdHgpCj4gICAgICAgICBpZiAoZm9ybWF0c19kZWNs
YXJlZChmKSkKPiAgICAgICAgICAgICBjb250aW51ZTsKPiAgICAgICAgIHJldCA9IGZpbHRlcl9x
dWVyeV9mb3JtYXRzKGYpOwo+IC0gICAgICAgIGlmIChyZXQgPCAwICYmIHJldCAhPSBBVkVSUk9S
KEVBR0FJTikpCj4gKyAgICAgICAgaWYgKHJldCA8IDAgJiYgcmV0ICE9IEFWRVJST1IoRUFHQUlO
KSAmJiByZXQgIT0gRkZFUlJPUl9OT1RfUkVBRFkpCj4gICAgICAgICAgICAgcmV0dXJuIHJldDsK
PiAgICAgICAgIC8qIG5vdGU6IEVBR0FJTiBjb3VsZCBpbmRpY2F0ZSBhIHBhcnRpYWwgc3VjY2Vz
cywgbm90IGNvdW50ZWQgeWV0ICovCj4gICAgICAgICBjb3VudF9xdWVyaWVkICs9IHJldCA+PSAw
Owo+ICAgICB9Cj4gCj4gKyAgICB3aGlsZSAoc2FuaXRpemVfZm9ybWF0cyhncmFwaCkpOwo+ICsK
PiAgICAgLyogZ28gdGhyb3VnaCBhbmQgbWVyZ2UgYXMgbWFueSBmb3JtYXQgbGlzdHMgYXMgcG9z
c2libGUgKi8KPiAgICAgZm9yIChpID0gMDsgaSA8IGdyYXBoLT5uYl9maWx0ZXJzOyBpKyspIHsK
PiAgICAgICAgIEFWRmlsdGVyQ29udGV4dCAqZmlsdGVyID0gZ3JhcGgtPmZpbHRlcnNbaV07Cj4g
QEAgLTQ3OCw3ICs1NjAsNyBAQCBzdGF0aWMgaW50IHF1ZXJ5X2Zvcm1hdHMoQVZGaWx0ZXJHcmFw
aCAqZ3JhcGgsIHZvaWQgKmxvZ19jdHgpCj4gICAgICAgICAgICAgdW5zaWduZWQgbmVnX3N0ZXA7
Cj4gICAgICAgICAgICAgaW50IGNvbnZlcnRfbmVlZGVkID0gMDsKPiAKPiAtICAgICAgICAgICAg
aWYgKCFsaW5rKQo+ICsgICAgICAgICAgICBpZiAoIWxpbmsgfHwgIWxpbmstPmluY2ZnLmZvcm1h
dHMpCj4gICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+IAo+ICAgICAgICAgICAgIG5lZyA9IGZm
X2ZpbHRlcl9nZXRfbmVnb3RpYXRpb24obGluayk7Cj4gQEAgLTQ5Miw2ICs1NzQsNyBAQCBzdGF0
aWMgaW50IHF1ZXJ5X2Zvcm1hdHMoQVZGaWx0ZXJHcmFwaCAqZ3JhcGgsIHZvaWQgKmxvZ19jdHgp
Cj4gICAgICAgICAgICAgICAgICAgICBicmVhazsKPiAgICAgICAgICAgICAgICAgfQo+ICAgICAg
ICAgICAgIH0KPiArCj4gICAgICAgICAgICAgZm9yIChuZWdfc3RlcCA9IDA7IG5lZ19zdGVwIDwg
bmVnLT5uYl9tZXJnZXJzOyBuZWdfc3RlcCsrKSB7Cj4gICAgICAgICAgICAgICAgIGNvbnN0IEFW
RmlsdGVyRm9ybWF0c01lcmdlciAqbSA9ICZuZWctPm1lcmdlcnNbbmVnX3N0ZXBdOwo+ICAgICAg
ICAgICAgICAgICB2b2lkICphID0gRkZfRklFTERfQVQodm9pZCAqLCBtLT5vZmZzZXQsIGxpbmst
PmluY2ZnKTsKPiBAQCAtNzg5LDE3ICs4NzIsNiBAQCBzdGF0aWMgaW50IHBpY2tfZm9ybWF0KEFW
RmlsdGVyTGluayAqbGluaywgQVZGaWx0ZXJMaW5rICpyZWYpCj4gICAgICAgICAgICAgcmV0dXJu
IHJldDsKPiAgICAgfQo+IAo+IC0gICAgZmZfZm9ybWF0c191bnJlZigmbGluay0+aW5jZmcuZm9y
bWF0cyk7Cj4gLSAgICBmZl9mb3JtYXRzX3VucmVmKCZsaW5rLT5vdXRjZmcuZm9ybWF0cyk7Cj4g
LSAgICBmZl9mb3JtYXRzX3VucmVmKCZsaW5rLT5pbmNmZy5zYW1wbGVyYXRlcyk7Cj4gLSAgICBm
Zl9mb3JtYXRzX3VucmVmKCZsaW5rLT5vdXRjZmcuc2FtcGxlcmF0ZXMpOwo+IC0gICAgZmZfY2hh
bm5lbF9sYXlvdXRzX3VucmVmKCZsaW5rLT5pbmNmZy5jaGFubmVsX2xheW91dHMpOwo+IC0gICAg
ZmZfY2hhbm5lbF9sYXlvdXRzX3VucmVmKCZsaW5rLT5vdXRjZmcuY2hhbm5lbF9sYXlvdXRzKTsK
PiAtICAgIGZmX2Zvcm1hdHNfdW5yZWYoJmxpbmstPmluY2ZnLmNvbG9yX3NwYWNlcyk7Cj4gLSAg
ICBmZl9mb3JtYXRzX3VucmVmKCZsaW5rLT5vdXRjZmcuY29sb3Jfc3BhY2VzKTsKPiAtICAgIGZm
X2Zvcm1hdHNfdW5yZWYoJmxpbmstPmluY2ZnLmNvbG9yX3Jhbmdlcyk7Cj4gLSAgICBmZl9mb3Jt
YXRzX3VucmVmKCZsaW5rLT5vdXRjZmcuY29sb3JfcmFuZ2VzKTsKPiAtCj4gICAgIHJldHVybiAw
Owo+IH0KPiAKPiBAQCAtODE4LDYgKzg5MCw3IEBAIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAg
ICAgIGxpc3RfdHlwZSAqZm10czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAgICAgIGlmIChsaW5rLT50eXBlICE9
IG91dF9saW5rLT50eXBlIHx8ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAg
ICAgICAgIW91dF9saW5rLT5pbmNmZy5saXN0IHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiAgICAgICAgICAgICAgICAgb3V0X2xpbmstPmluY2ZnLmxpc3QtPm5iID09IDEpICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICAgICAgICAgICAgY29udGludWU7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICAgICAgICBm
bXRzID0gb3V0X2xpbmstPmluY2ZnLmxpc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiBAQCAtOTI1LDYgKzk5OCw3IEBAIHN0YXRpYyB2b2lkIHN3YXBfc2FtcGxlcmF0ZXNfb25f
ZmlsdGVyKEFWRmlsdGVyQ29udGV4dCAqZmlsdGVyKQo+ICAgICAgICAgbGluayA9IGZpbHRlci0+
aW5wdXRzW2ldOwo+IAo+ICAgICAgICAgaWYgKGxpbmstPnR5cGUgPT0gQVZNRURJQV9UWVBFX0FV
RElPICYmCj4gKyAgICAgICAgICAgIGxpbmstPm91dGNmZy5zYW1wbGVyYXRlcyAmJgo+ICAgICAg
ICAgICAgIGxpbmstPm91dGNmZy5zYW1wbGVyYXRlcy0+bmJfZm9ybWF0cz09IDEpCj4gICAgICAg
ICAgICAgYnJlYWs7Cj4gICAgIH0KPiBAQCAtOTM4LDYgKzEwMTIsNyBAQCBzdGF0aWMgdm9pZCBz
d2FwX3NhbXBsZXJhdGVzX29uX2ZpbHRlcihBVkZpbHRlckNvbnRleHQgKmZpbHRlcikKPiAgICAg
ICAgIGludCBiZXN0X2lkeCwgYmVzdF9kaWZmID0gSU5UX01BWDsKPiAKPiAgICAgICAgIGlmIChv
dXRsaW5rLT50eXBlICE9IEFWTUVESUFfVFlQRV9BVURJTyB8fAo+ICsgICAgICAgICAgICAhb3V0
bGluay0+aW5jZmcuc2FtcGxlcmF0ZXMgfHwKPiAgICAgICAgICAgICBvdXRsaW5rLT5pbmNmZy5z
YW1wbGVyYXRlcy0+bmJfZm9ybWF0cyA8IDIpCj4gICAgICAgICAgICAgY29udGludWU7Cj4gCj4g
QEAgLTEwMDcsNiArMTA4Miw3IEBAIHN0YXRpYyB2b2lkIHN3YXBfY2hhbm5lbF9sYXlvdXRzX29u
X2ZpbHRlcihBVkZpbHRlckNvbnRleHQgKmZpbHRlcikKPiAgICAgICAgIGxpbmsgPSBmaWx0ZXIt
PmlucHV0c1tpXTsKPiAKPiAgICAgICAgIGlmIChsaW5rLT50eXBlID09IEFWTUVESUFfVFlQRV9B
VURJTyAmJgo+ICsgICAgICAgICAgICBsaW5rLT5vdXRjZmcuY2hhbm5lbF9sYXlvdXRzICYmCj4g
ICAgICAgICAgICAgbGluay0+b3V0Y2ZnLmNoYW5uZWxfbGF5b3V0cy0+bmJfY2hhbm5lbF9sYXlv
dXRzID09IDEpCj4gICAgICAgICAgICAgYnJlYWs7Cj4gICAgIH0KPiBAQCAtMTAxOCw2ICsxMDk0
LDcgQEAgc3RhdGljIHZvaWQgc3dhcF9jaGFubmVsX2xheW91dHNfb25fZmlsdGVyKEFWRmlsdGVy
Q29udGV4dCAqZmlsdGVyKQo+ICAgICAgICAgaW50IGJlc3RfaWR4ID0gLTEsIGJlc3Rfc2NvcmUg
PSBJTlRfTUlOLCBiZXN0X2NvdW50X2RpZmYgPSBJTlRfTUFYOwo+IAo+ICAgICAgICAgaWYgKG91
dGxpbmstPnR5cGUgIT0gQVZNRURJQV9UWVBFX0FVRElPIHx8Cj4gKyAgICAgICAgICAgICFvdXRs
aW5rLT5pbmNmZy5jaGFubmVsX2xheW91dHMgfHwKPiAgICAgICAgICAgICBvdXRsaW5rLT5pbmNm
Zy5jaGFubmVsX2xheW91dHMtPm5iX2NoYW5uZWxfbGF5b3V0cyA8IDIpCj4gICAgICAgICAgICAg
Y29udGludWU7Cj4gCj4gQEAgLTExMTAsNiArMTE4Nyw3IEBAIHN0YXRpYyB2b2lkIHN3YXBfc2Ft
cGxlX2ZtdHNfb25fZmlsdGVyKEFWRmlsdGVyQ29udGV4dCAqZmlsdGVyKQo+ICAgICAgICAgbGlu
ayA9IGZpbHRlci0+aW5wdXRzW2ldOwo+IAo+ICAgICAgICAgaWYgKGxpbmstPnR5cGUgPT0gQVZN
RURJQV9UWVBFX0FVRElPICYmCj4gKyAgICAgICAgICAgIGxpbmstPm91dGNmZy5mb3JtYXRzICYm
Cj4gICAgICAgICAgICAgbGluay0+b3V0Y2ZnLmZvcm1hdHMtPm5iX2Zvcm1hdHMgPT0gMSkKPiAg
ICAgICAgICAgICBicmVhazsKPiAgICAgfQo+IEBAIC0xMTI0LDYgKzEyMDIsNyBAQCBzdGF0aWMg
dm9pZCBzd2FwX3NhbXBsZV9mbXRzX29uX2ZpbHRlcihBVkZpbHRlckNvbnRleHQgKmZpbHRlcikK
PiAgICAgICAgIGludCBiZXN0X2lkeCA9IC0xLCBiZXN0X3Njb3JlID0gSU5UX01JTjsKPiAKPiAg
ICAgICAgIGlmIChvdXRsaW5rLT50eXBlICE9IEFWTUVESUFfVFlQRV9BVURJTyB8fAo+ICsgICAg
ICAgICAgICAhb3V0bGluay0+aW5jZmcuZm9ybWF0cyB8fAo+ICAgICAgICAgICAgIG91dGxpbmst
PmluY2ZnLmZvcm1hdHMtPm5iX2Zvcm1hdHMgPCAyKQo+ICAgICAgICAgICAgIGNvbnRpbnVlOwo+
IAo+IEBAIC0xMTgwLDcgKzEyNTksOCBAQCBzdGF0aWMgaW50IHBpY2tfZm9ybWF0cyhBVkZpbHRl
ckdyYXBoICpncmFwaCkKPiAgICAgICAgICAgICBBVkZpbHRlckNvbnRleHQgKmZpbHRlciA9IGdy
YXBoLT5maWx0ZXJzW2ldOwo+ICAgICAgICAgICAgIGlmIChmaWx0ZXItPm5iX2lucHV0cyl7Cj4g
ICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBmaWx0ZXItPm5iX2lucHV0czsgaisrKXsK
PiAtICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyLT5pbnB1dHNbal0tPmluY2ZnLmZvcm1h
dHMgJiYgZmlsdGVyLT5pbnB1dHNbal0tPmluY2ZnLmZvcm1hdHMtPm5iX2Zvcm1hdHMgPT0gMSkg
ewo+ICsgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXItPmlucHV0c1tqXS0+Zm9ybWF0IDwg
MCAmJgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXItPmlucHV0c1tqXS0+aW5jZmcu
Zm9ybWF0cyAmJiBmaWx0ZXItPmlucHV0c1tqXS0+aW5jZmcuZm9ybWF0cy0+bmJfZm9ybWF0cyA9
PSAxKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyZXQgPSBwaWNrX2Zvcm1hdChm
aWx0ZXItPmlucHV0c1tqXSwgTlVMTCkpIDwgMCkKPiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJldDsKPiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgPSAxOwo+IEBA
IC0xMTg5LDcgKzEyNjksOCBAQCBzdGF0aWMgaW50IHBpY2tfZm9ybWF0cyhBVkZpbHRlckdyYXBo
ICpncmFwaCkKPiAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgaWYgKGZpbHRlci0+bmJfb3V0
cHV0cyl7Cj4gICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBmaWx0ZXItPm5iX291dHB1
dHM7IGorKyl7Cj4gLSAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlci0+b3V0cHV0c1tqXS0+
aW5jZmcuZm9ybWF0cyAmJiBmaWx0ZXItPm91dHB1dHNbal0tPmluY2ZnLmZvcm1hdHMtPm5iX2Zv
cm1hdHMgPT0gMSkgewo+ICsgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXItPm91dHB1dHNb
al0tPmZvcm1hdCA8IDAgJiYKPiArICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLT5vdXRw
dXRzW2pdLT5pbmNmZy5mb3JtYXRzICYmIGZpbHRlci0+b3V0cHV0c1tqXS0+aW5jZmcuZm9ybWF0
cy0+bmJfZm9ybWF0cyA9PSAxKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyZXQg
PSBwaWNrX2Zvcm1hdChmaWx0ZXItPm91dHB1dHNbal0sIE5VTEwpKSA8IDApCj4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlID0gMTsKPiBAQCAtMTE5OCw3ICsxMjc5LDcgQEAgc3RhdGljIGludCBwaWNrX2Zvcm1h
dHMoQVZGaWx0ZXJHcmFwaCAqZ3JhcGgpCj4gICAgICAgICAgICAgfQo+ICAgICAgICAgICAgIGlm
IChmaWx0ZXItPm5iX2lucHV0cyAmJiBmaWx0ZXItPm5iX291dHB1dHMgJiYgZmlsdGVyLT5pbnB1
dHNbMF0tPmZvcm1hdD49MCkgewo+ICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgZmls
dGVyLT5uYl9vdXRwdXRzOyBqKyspIHsKPiAtICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVy
LT5vdXRwdXRzW2pdLT5mb3JtYXQ8MCkgewo+ICsgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0
ZXItPm91dHB1dHNbal0tPmZvcm1hdCA8IDAgJiYgZmlsdGVyLT5vdXRwdXRzW2pdLT5pbmNmZy5m
b3JtYXRzKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyZXQgPSBwaWNrX2Zvcm1h
dChmaWx0ZXItPm91dHB1dHNbal0sIGZpbHRlci0+aW5wdXRzWzBdKSkgPCAwKQo+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYW5nZSA9IDE7Cj4gQEAgLTEyOTIsNiArMTM3Myw4MiBAQCBzdGF0aWMgaW50IGdyYXBoX2Nv
bmZpZ19wb2ludGVycyhBVkZpbHRlckdyYXBoICpncmFwaCwgdm9pZCAqbG9nX2N0eCkKPiAgICAg
cmV0dXJuIDA7Cj4gfQo+IAo+ICtzdGF0aWMgdm9pZCBncmFwaF9jbGVhcl9mb3JtYXRzKEFWRmls
dGVyR3JhcGggKmdyYXBoLCB2b2lkICpsb2dfY3R4KQo+ICt7Cj4gKyAgICBpbnQgc3RhdHVzX2lu
LCBzdGF0dXNfb3V0Owo+ICsgICAgQVZSYXRpb25hbCB0aW1lX2Jhc2U7Cj4gKyAgICBBVkZpbHRl
ckNvbnRleHQgKmY7Cj4gKyAgICBGaWx0ZXJMaW5rSW50ZXJuYWwgKmlsaW5raTsKPiArICAgIEZp
bHRlckxpbmtJbnRlcm5hbCAqb2xpbmtpOwo+ICsgICAgaW50IGksIGo7Cj4gKwo+ICsgICAgZm9y
IChpID0gZ3JhcGgtPm5iX2ZpbHRlcnMgLSAxOyBpID49IDA7IGktLSkgewo+ICsgICAgICAgIGYg
PSBncmFwaC0+ZmlsdGVyc1tpXTsKPiArCj4gKyAgICAgICAgaWYgKCFzdHJuY21wKGYtPm5hbWUs
ICJhdXRvXyIsIHN0cmxlbigiYXV0b18iKSkpIHsKPiArICAgICAgICAgICAgaWxpbmtpID0gZmZf
bGlua19pbnRlcm5hbChmLT5pbnB1dHNbMF0pOwo+ICsgICAgICAgICAgICBvbGlua2kgPSBmZl9s
aW5rX2ludGVybmFsKGYtPm91dHB1dHNbMF0pOwo+ICsgICAgICAgICAgICBpZiAoaWxpbmtpLT5z
dGF0dXNfb3V0IHx8IGlsaW5raS0+c3RhdHVzX2luIHx8Cj4gKyAgICAgICAgICAgICAgICBvbGlu
a2ktPnN0YXR1c19vdXQgfHwgb2xpbmtpLT5zdGF0dXNfaW4pIHsKPiArICAgICAgICAgICAgICAg
IEFWRmlsdGVyQ29udGV4dCAqc3JjID0gZi0+aW5wdXRzWzBdLT5zcmM7Cj4gKyAgICAgICAgICAg
ICAgICBBVkZpbHRlckNvbnRleHQgKmRzdCA9IGYtPm91dHB1dHNbMF0tPmRzdDsKPiArICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHNyY3BhZCA9IEZGX09VVExJTktfSURYKGYtPmlucHV0c1swXSk7
Cj4gKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBkc3RwYWQgPSBGRl9JTkxJTktfSURYKGYtPm91
dHB1dHNbMF0pOwo+ICsKPiArICAgICAgICAgICAgICAgIHN0YXR1c19pbiAgPSBpbGlua2ktPnN0
YXR1c19pbjsKPiArICAgICAgICAgICAgICAgIHN0YXR1c19vdXQgPSBpbGlua2ktPnN0YXR1c19v
dXQ7Cj4gKyAgICAgICAgICAgICAgICB0aW1lX2Jhc2UgID0gZi0+aW5wdXRzWzBdLT50aW1lX2Jh
c2U7Cj4gKwo+ICsgICAgICAgICAgICAgICAgYXZmaWx0ZXJfZnJlZShmKTsKPiArICAgICAgICAg
ICAgICAgIGF2ZmlsdGVyX2xpbmsoc3JjLCBzcmNwYWQsIGRzdCwgZHN0cGFkKTsKPiArCj4gKyAg
ICAgICAgICAgICAgICBvbGlua2ktPnN0YXR1c19pbiAgPSBzdGF0dXNfaW47Cj4gKyAgICAgICAg
ICAgICAgICBvbGlua2ktPnN0YXR1c19vdXQgPSBzdGF0dXNfb3V0Owo+ICsgICAgICAgICAgICAg
ICAgZHN0LT5pbnB1dHNbMF0tPnRpbWVfYmFzZSAgPSB0aW1lX2Jhc2U7Cj4gKwo+ICsgICAgICAg
ICAgICAgICAgZmZfZmlsdGVyX3NldF9yZWFkeShkc3QsIDIwMCk7Cj4gKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAg
Zm9yIChqID0gMDsgaiA8IGYtPm5iX2lucHV0czsgaisrKSB7Cj4gKyAgICAgICAgICAgIGlsaW5r
aSA9IGZmX2xpbmtfaW50ZXJuYWwoZi0+aW5wdXRzW2pdKTsKPiArICAgICAgICAgICAgaWYgKGls
aW5raS0+c3RhdHVzX291dCkgewo+ICsgICAgICAgICAgICAgICAgZmZfZm9ybWF0c191bnJlZigm
Zi0+aW5wdXRzW2pdLT5vdXRjZmcuZm9ybWF0cyk7Cj4gKyAgICAgICAgICAgICAgICBmZl9mb3Jt
YXRzX3VucmVmKCZmLT5pbnB1dHNbal0tPm91dGNmZy5zYW1wbGVyYXRlcyk7Cj4gKyAgICAgICAg
ICAgICAgICBmZl9jaGFubmVsX2xheW91dHNfdW5yZWYoJmYtPmlucHV0c1tqXS0+b3V0Y2ZnLmNo
YW5uZWxfbGF5b3V0cyk7Cj4gKwo+ICsgICAgICAgICAgICAgICAgaWYgKGlsaW5raS0+c3RhdHVz
X2luKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgZi0+aW5wdXRzW2pdLT5mb3JtYXQgICAgICAg
ICA9IC0xOwo+ICsgICAgICAgICAgICAgICAgICAgIGYtPmlucHV0c1tqXS0+c2FtcGxlX3JhdGUg
ICAgPSAwOwo+ICsgICAgICAgICAgICAgICAgICAgIGlsaW5raS0+aW5pdF9zdGF0ZSAgICAgPSBB
VkxJTktfVU5JTklUOwo+ICsgICAgICAgICAgICAgICAgICAgIGYtPmlucHV0c1tqXS0+dGltZV9i
YXNlLm51bSAgPSAwOwo+ICsgICAgICAgICAgICAgICAgICAgIGYtPmlucHV0c1tqXS0+dGltZV9i
YXNlLmRlbiAgPSAwOwo+ICsgICAgICAgICAgICAgICAgICAgIGF2X2NoYW5uZWxfbGF5b3V0X3Vu
aW5pdCgmZi0+aW5wdXRzW2pdLT5jaF9sYXlvdXQpOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsg
ICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBmb3IgKGogPSAwOyBqIDwg
Zi0+bmJfb3V0cHV0czsgaisrKSB7Cj4gKyAgICAgICAgICAgIG9saW5raSA9IGZmX2xpbmtfaW50
ZXJuYWwoZi0+b3V0cHV0c1tqXSk7Cj4gKyAgICAgICAgICAgIGlmIChvbGlua2ktPnN0YXR1c19p
bikgewo+ICsgICAgICAgICAgICAgICAgZmZfZm9ybWF0c191bnJlZigmZi0+b3V0cHV0c1tqXS0+
aW5jZmcuZm9ybWF0cyk7Cj4gKyAgICAgICAgICAgICAgICBmZl9mb3JtYXRzX3VucmVmKCZmLT5v
dXRwdXRzW2pdLT5pbmNmZy5zYW1wbGVyYXRlcyk7Cj4gKyAgICAgICAgICAgICAgICBmZl9jaGFu
bmVsX2xheW91dHNfdW5yZWYoJmYtPm91dHB1dHNbal0tPmluY2ZnLmNoYW5uZWxfbGF5b3V0cyk7
Cj4gKwo+ICsgICAgICAgICAgICAgICAgaWYgKG9saW5raS0+c3RhdHVzX291dCkgewo+ICsgICAg
ICAgICAgICAgICAgICAgIGYtPm91dHB1dHNbal0tPmZvcm1hdCAgICAgICAgID0gLTE7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgZi0+b3V0cHV0c1tqXS0+c2FtcGxlX3JhdGUgICAgPSAwOwo+ICsg
ICAgICAgICAgICAgICAgICAgIG9saW5raS0+aW5pdF9zdGF0ZSAgICAgPSBBVkxJTktfVU5JTklU
Owo+ICsgICAgICAgICAgICAgICAgICAgIGYtPm91dHB1dHNbal0tPnRpbWVfYmFzZS5udW0gID0g
MDsKPiArICAgICAgICAgICAgICAgICAgICBmLT5vdXRwdXRzW2pdLT50aW1lX2Jhc2UuZGVuICA9
IDA7Cj4gKyAgICAgICAgICAgICAgICAgICAgYXZfY2hhbm5lbF9sYXlvdXRfdW5pbml0KCZmLT5v
dXRwdXRzW2pdLT5jaF9sYXlvdXQpOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAg
ICB9Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICt9Cj4gKwo+IGludCBhdmZpbHRlcl9ncmFwaF9j
b25maWcoQVZGaWx0ZXJHcmFwaCAqZ3JhcGhjdHgsIHZvaWQgKmxvZ19jdHgpCj4gewo+ICAgICBp
bnQgcmV0Owo+IEBAIC0xMzEwLDYgKzE0NjcsMzAgQEAgaW50IGF2ZmlsdGVyX2dyYXBoX2NvbmZp
ZyhBVkZpbHRlckdyYXBoICpncmFwaGN0eCwgdm9pZCAqbG9nX2N0eCkKPiAgICAgcmV0dXJuIDA7
Cj4gfQo+IAo+ICtpbnQgZmZfYXZmaWx0ZXJfZ3JhcGhfcmVjb25maWcoQVZGaWx0ZXJHcmFwaCAq
Z3JhcGhjdHgsIHZvaWQgKmxvZ19jdHgpCj4gK3sKPiArICAgIEFWQ2xhc3MgKmF2YyA9IGxvZ19j
dHggPyAqKEFWQ2xhc3MgKiopbG9nX2N0eCA6IE5VTEw7Cj4gKyAgICBpbnQgcmV0LCBpOwo+ICsK
PiArICAgIGlmIChhdmMpCj4gKyAgICAgICAgYXZfbG9nKGxvZ19jdHgsIEFWX0xPR19JTkZPLCAi
JXMgc2V0IGdyYXBoIHJlY29uZmlnXG4iLCBhdmMtPml0ZW1fbmFtZShsb2dfY3R4KSk7Cj4gKwo+
ICsgICAgZm9yIChpID0gMDsgaSA8IGdyYXBoY3R4LT5uYl9maWx0ZXJzOyBpKyspCj4gKyAgICAg
ICAgYXZfbG9nKGxvZ19jdHgsIEFWX0xPR19JTkZPLCAiXHQlcyIsIGdyYXBoY3R4LT5maWx0ZXJz
W2ldLT5uYW1lKTsKPiArCj4gKyAgICBncmFwaF9jbGVhcl9mb3JtYXRzKGdyYXBoY3R4LCBsb2df
Y3R4KTsKPiArICAgIGlmICgocmV0ID0gZ3JhcGhfY29uZmlnX2Zvcm1hdHMoZ3JhcGhjdHgsIGxv
Z19jdHgpKSkKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgaWYgKChyZXQgPSBncmFwaF9j
b25maWdfbGlua3MoZ3JhcGhjdHgsIGxvZ19jdHgpKSkKPiArICAgICAgICByZXR1cm4gcmV0Owo+
ICsgICAgaWYgKChyZXQgPSBncmFwaF9jaGVja19saW5rcyhncmFwaGN0eCwgbG9nX2N0eCkpKQo+
ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICBpZiAoKHJldCA9IGdyYXBoX2NvbmZpZ19wb2lu
dGVycyhncmFwaGN0eCwgbG9nX2N0eCkpKQo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKwo+ICsg
ICAgcmV0dXJuIDA7Cj4gK30KClRoaXMgaXNu4oCZdCBBUEkgb2YgbGliYXZmaWx0ZXIuIFBsZWFz
ZSBub3RlIGZmXyBpcyBmb3IgbGliYXZmaWx0ZXIgaW50ZXJuYWwgdXNhZ2UuCgpJIGRvbuKAmXQg
dGhpbmsgdGhlIHBhdGNoIHdvcmtzLgoKPiArCj4gaW50IGF2ZmlsdGVyX2dyYXBoX3NlbmRfY29t
bWFuZChBVkZpbHRlckdyYXBoICpncmFwaCwgY29uc3QgY2hhciAqdGFyZ2V0LCBjb25zdCBjaGFy
ICpjbWQsIGNvbnN0IGNoYXIgKmFyZywgY2hhciAqcmVzLCBpbnQgcmVzX2xlbiwgaW50IGZsYWdz
KQo+IHsKPiAgICAgaW50IGksIHIgPSBBVkVSUk9SKEVOT1NZUyk7Cj4gLS0gCj4gMi40Ny4wCj4g
Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBmZm1w
ZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczov
L2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPiAKPiBUbyB1bnN1YnNj
cmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBm
Zm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApm
Zm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5m
by9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFp
bApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3Jp
YmUiLgo=