From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from m16.mail.163.com (m16.mail.163.com [117.135.210.4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D9313191A9; Mon, 5 Jan 2026 12:55:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=117.135.210.4 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767617728; cv=none; b=aJeuLJieZNYRXUiN0FWXLb5dxivmJ9PvgZ4g80k22jpD/+R7FIsAW/PyxjSC+B4KHix5ery/F4pLhIfC/rPhqsB7wVPbiUNOPtHUAIjlat9yPgCXOjPTcEWYIwAlDKnwO2z3T0ChUs+aBaJkYOg/Hyp9L9WQkHp6EE46IPz05JU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767617728; c=relaxed/simple; bh=k8cv9uFPTQvSeOmYsMKa4h5Rb7KEdJ6qCmN07gPVNQM=; h=Date:From:To:Cc:Subject:In-Reply-To:References:Content-Type: MIME-Version:Message-ID; b=l2hIPOys25btrPAyCuj6AAHUpZ8UjSQP7RmqxhIPf+oukdmlkV+jkfJXS2C6iijdAoSzjy8Rmo0/3Zl7EkNT7L0dcaucYSz5vYz0ozM3QX5yEQN8wLyp+DosJTmtMkwUEqEqhtXnTRbkKGEFoWFqbjOxV01xHOIVN9YFGRyvGlI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com; spf=pass smtp.mailfrom=163.com; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b=CQPh5b00; arc=none smtp.client-ip=117.135.210.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=163.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b="CQPh5b00" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:To:Subject:Content-Type:MIME-Version: Message-ID; bh=k8cv9uFPTQvSeOmYsMKa4h5Rb7KEdJ6qCmN07gPVNQM=; b=C QPh5b00Z8PxOSGto1q6TO4knekOKo3ZC9KTvJ3jW6w/rgmvHG0hnWoEzEBKMlQj2 Z+VM4q1Drhzfdpg5V6F6fOOvu/EazUrm+Hs/6tKpaLsV0PbFDLdNbgT2+AUgZ3xn JQpeOBJNPffV0ODHn6Rs/GNAC2guXrtwxkUTz/kvVo= Received: from kiraskyler$163.com ( [101.227.46.167] ) by ajax-webmail-wmsvr-40-106 (Coremail) ; Mon, 5 Jan 2026 20:53:37 +0800 (CST) Date: Mon, 5 Jan 2026 20:53:37 +0800 (CST) From: "WanLi Niu" To: "Jose E. Marchesi" Cc: "Quentin Monnet" , "Alexei Starovoitov" , "Daniel Borkmann" , "Andrii Nakryiko" , "Martin KaFai Lau" , "Eduard Zingerman" , "Song Liu" , "Yonghong Song" , "John Fastabend" , "KP Singh" , "Stanislav Fomichev" , "Hao Luo" , "Jiri Olsa" , "Menglong Dong" , bpf@vger.kernel.org, linux-kernel@vger.kernel.org, "WanLi Niu" , "Menglong Dong" Subject: Re: [PATCH v4 bpf-next] bpftool: Make skeleton C++ compatible with explicit casts X-Priority: 3 X-Mailer: Coremail Webmail Server Version 2023.4-cmXT build 20250723(a044bf12) Copyright (c) 2002-2026 www.mailtech.cn 163com In-Reply-To: <87eco4nuri.fsf@oracle.com> References: <20260104021402.2968-1-kiraskyler@163.com> <20260105071231.2501-1-kiraskyler@163.com> <87eco4nuri.fsf@oracle.com> X-NTES-SC: AL_Qu2dBfqauE4q4SWfYekfmEoTguw+XcO0s/ok1YFTc+EEnSH//AwBQUV4JXrL/8iwJxuHvCCtVBZH0Pp+Y7N0rJVeqpJKEvhjpXk34ChzDQ== Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=GBK Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-ID: <7219135.9fee.19b8e385eb5.Coremail.kiraskyler@163.com> X-Coremail-Locale: zh_CN X-CM-TRANSID:aigvCgD332lRtFtpABpQAA--.13346W X-CM-SenderInfo: 5nlut2pn1ov2i6rwjhhfrp/xtbC3BFyzmlbtFGILQAA3D X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== PiBGV0lXIEkgdGVzdGVkIHRoZSByZXByb2R1Y2VyIHdpdGggZ2NjLWJwZiBhbmQgZ290IG5vIHBv aW50ZXIgY29udmVyc2lvbgo+IHdhcm5pbmdzIChub3QgdGhhdCBJIHdhcyBleHBlY3RpbmcgYW55 dGhpbmcgZGlmZmVyZW50LCBidXQganVzdCBpbgo+IGNhc2UpOgo+Cj4gICQgYnBmLXVua25vd24t bm9uZS1nY2MgLXN0ZD1nbnUxMSAtSS4vdG9vbHMvaW5jbHVkZSAtZyAtTzIgLWMgdGV4dC5icGYu YyAtbyB0ZXN0LmJwZi5vCj4gICQgYnBmdG9vbCBnZW4gc2tlbGV0b24gdGVzdC5icGYubyAtTCA+ IHRlc3QuYnBmLnNrZWwuaAo+ICAkIGcrKyAtYyB0ZXN0LmNwcCAtSS4KClRoYW5rcyBmb3IgdGVz dGluZy4KClRoZSBpc3N1ZSBvbmx5IG9jY3VycyB3aGVuIGJwZnRvb2wgZ2VuIHNrZWxldG9uIGlz IHVzZWQgaW4gdXNlX2xvYWRlciBtb2RlIChicGZ0b29sIGdlbiBza2VsZXRvbiAtTHwtLXVzZS1s b2FkZXIpLgoKQ291bGQgeW91IGRvdWJsZS1jaGVjayBpZiAtTCB3YXMgaW5jbHVkZWQ/IEkgY2Fu IHJlcHJvZHVjZSB0aGUgZXJyb3IgcmVsaWFibHkgd2l0aCBpdCChqiBoZXJloa9zIHRoZSBmdWxs IG91dHB1dDoKCiQgcnBtIC1xZiBgd2hpY2ggYnBmLXVua25vd24tbm9uZS1nY2NgCmdjYy1icGYt dW5rbm93bi1ub25lLTE1LjIuMS0xLmZjNDIueDg2XzY0CiQgYnBmLXVua25vd24tbm9uZS1nY2Mg LXN0ZD1nbnUxMSAtSS91c3IvaW5jbHVkZSAtZyAtTzIgLWMgdGVzdC5icGYuYyAtbyB0ZXN0LmJw Zi5vCiQgYnBmdG9vbCBnZW4gc2tlbGV0b24gdGVzdC5icGYubyAtTCA+IHRlc3QuYnBmLnNrZWwu aApsaWJicGY6IGVsZjogc2tpcHBpbmcgc2VjdGlvbigyKSAuZGF0YSAoc2l6ZSAwKQpsaWJicGY6 IGVsZjogc2tpcHBpbmcgdW5yZWNvZ25pemVkIGRhdGEgc2VjdGlvbig3KSAuY29tbWVudApsaWJi cGY6IHByb2cgJ2hhbmRsZSc6IG1pc3NpbmcgLkJURi5leHQgbGluZSBpbmZvIGZvciB0aGUgbWFp biBwcm9ncmFtLCBza2lwcGluZyBhbGwgb2YgLkJURi5leHQgbGluZSBpbmZvLgokIGcrKyAtYyB0 ZXN0LmNwcCAtSS4KSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHRlc3QuY3BwOjQ6CnRlc3QuYnBmLnNr ZWwuaDogSW4gZnVuY3Rpb24goa50ZXN0X2JwZiogdGVzdF9icGZfX29wZW4oKaGvOgp0ZXN0LmJw Zi5za2VsLmg6NjU6MjY6IGVycm9yOiBpbnZhbGlkIGNvbnZlcnNpb24gZnJvbSChrnZvaWQqoa8g dG8goa50ZXN0X2JwZiqhryBbLWZwZXJtaXNzaXZlXQogICA2NSB8ICAgICAgICAgc2tlbCA9IHNr ZWxfYWxsb2Moc2l6ZW9mKCpza2VsKSk7CiAgICAgIHwgICAgICAgICAgICAgICAgfn5+fn5+fn5+ fl5+fn5+fn5+fn5+fn5+fgogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqCnRlc3QuYnBmLnNrZWwuaDo2ODo1NTog ZXJyb3I6IGludmFsaWQgdXNlIG9mIKGudm9pZKGvCiAgIDY4IHwgICAgICAgICBza2VsLT5jdHgu c3ogPSAodm9pZCAqKSZza2VsLT5saW5rcyAtICh2b2lkICopc2tlbDsKICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+CnRlc3Qu YnBmLnNrZWwuaDo3Mzo0NzogZXJyb3I6IGludmFsaWQgY29udmVyc2lvbiBmcm9tIKGudm9pZCqh ryB0byChrnRlc3RfYnBmOjp0ZXN0X2JwZl9fYnNzKqGvIFstZnBlcm1pc3NpdmVdCiAgIDczIHwg ICAgICAgICAgICAgICAgIHNrZWwtPmJzcyA9IHNrZWxfcHJlcF9tYXBfZGF0YSgodm9pZCAqKWRh dGEsIDQwOTYsCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+ fn5+fn5+fl5+fn5+fn5+fn5+fn5+fn5+fn5+CiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCoKICAgNzQgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZGF0YSkgLSAxKTsKICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+ fn5+fn5+fgp0ZXN0LmJwZi5za2VsLmg6IEluIGZ1bmN0aW9uIKGuaW50IHRlc3RfYnBmX19sb2Fk KHRlc3RfYnBmKimhrzoKdGVzdC5icGYuc2tlbC5oOjE5Njo0MzogZXJyb3I6IGludmFsaWQgY29u dmVyc2lvbiBmcm9tIKGudm9pZCqhryB0byChrnRlc3RfYnBmOjp0ZXN0X2JwZl9fYnNzKqGvIFst ZnBlcm1pc3NpdmVdCiAgMTk2IHwgICAgICAgICBza2VsLT5ic3MgPSBza2VsX2ZpbmFsaXplX21h cF9kYXRhKCZza2VsLT5tYXBzLmJzcy5pbml0aWFsX3ZhbHVlLAogICAgICB8ICAgICAgICAgICAg ICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fl5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn4KICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 CiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCoK ICAxOTcgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDA5NiwgUFJP VF9SRUFEIHwgUFJPVF9XUklURSwgc2tlbC0+bWFwcy5ic3MubWFwX2ZkKTsKICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgokIGNhdCB0ZXN0LmJwZi5za2VsLmggCi8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoTEdQTC0yLjEgT1IgQlNELTItQ2xhdXNlKSAqLwov KiBUSElTIEZJTEUgSVMgQVVUT0dFTkVSQVRFRCBCWSBCUEZUT09MISAqLwojaWZuZGVmIF9fVEVT VF9CUEZfU0tFTF9IX18KI2RlZmluZSBfX1RFU1RfQlBGX1NLRUxfSF9fCgojaW5jbHVkZSA8YnBm L3NrZWxfaW50ZXJuYWwuaD4KCnN0cnVjdCB0ZXN0X2JwZiB7CiAgICAgICAgc3RydWN0IGJwZl9s b2FkZXJfY3R4IGN0eDsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgc3RydWN0IGJw Zl9tYXBfZGVzYyBic3M7CiAgICAgICAgfSBtYXBzOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAg ICAgICAgICBzdHJ1Y3QgYnBmX3Byb2dfZGVzYyBoYW5kbGU7CiAgICAgICAgfSBwcm9nczsKICAg ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgaW50IGhhbmRsZV9mZDsKICAgICAgICB9IGxp bmtzOwogICAgICAgIHN0cnVjdCB0ZXN0X2JwZl9fYnNzIHsKICAgICAgICAgICAgICAgIGludCB2 YWw7CiAgICAgICAgfSAqYnNzOwp9OwoKc3RhdGljIGlubGluZSBpbnQKdGVzdF9icGZfX2hhbmRs ZV9fYXR0YWNoKHN0cnVjdCB0ZXN0X2JwZiAqc2tlbCkKewogICAgICAgIGludCBwcm9nX2ZkID0g c2tlbC0+cHJvZ3MuaGFuZGxlLnByb2dfZmQ7CiAgICAgICAgaW50IGZkID0gc2tlbF9yYXdfdHJh Y2Vwb2ludF9vcGVuKCJzY2hlZF93YWtldXBfbmV3IiwgcHJvZ19mZCk7CgogICAgICAgIGlmIChm ZCA+IDApCiAgICAgICAgICAgICAgICBza2VsLT5saW5rcy5oYW5kbGVfZmQgPSBmZDsKICAgICAg ICByZXR1cm4gZmQ7Cn0KCnN0YXRpYyBpbmxpbmUgaW50CnRlc3RfYnBmX19hdHRhY2goc3RydWN0 IHRlc3RfYnBmICpza2VsKQp7CiAgICAgICAgaW50IHJldCA9IDA7CgogICAgICAgIHJldCA9IHJl dCA8IDAgPyByZXQgOiB0ZXN0X2JwZl9faGFuZGxlX19hdHRhY2goc2tlbCk7CiAgICAgICAgcmV0 dXJuIHJldCA8IDAgPyByZXQgOiAwOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQKdGVzdF9icGZfX2Rl dGFjaChzdHJ1Y3QgdGVzdF9icGYgKnNrZWwpCnsKICAgICAgICBza2VsX2Nsb3Nlbnooc2tlbC0+ bGlua3MuaGFuZGxlX2ZkKTsKfQpzdGF0aWMgdm9pZAp0ZXN0X2JwZl9fZGVzdHJveShzdHJ1Y3Qg dGVzdF9icGYgKnNrZWwpCnsKICAgICAgICBpZiAoIXNrZWwpCiAgICAgICAgICAgICAgICByZXR1 cm47CiAgICAgICAgdGVzdF9icGZfX2RldGFjaChza2VsKTsKICAgICAgICBza2VsX2Nsb3Nlbnoo c2tlbC0+cHJvZ3MuaGFuZGxlLnByb2dfZmQpOwogICAgICAgIHNrZWxfZnJlZV9tYXBfZGF0YShz a2VsLT5ic3MsIHNrZWwtPm1hcHMuYnNzLmluaXRpYWxfdmFsdWUsIDQwOTYpOwogICAgICAgIHNr ZWxfY2xvc2Vueihza2VsLT5tYXBzLmJzcy5tYXBfZmQpOwogICAgICAgIHNrZWxfZnJlZShza2Vs KTsKfQpzdGF0aWMgaW5saW5lIHN0cnVjdCB0ZXN0X2JwZiAqCnRlc3RfYnBmX19vcGVuKHZvaWQp CnsKICAgICAgICBzdHJ1Y3QgdGVzdF9icGYgKnNrZWw7CgogICAgICAgIHNrZWwgPSBza2VsX2Fs bG9jKHNpemVvZigqc2tlbCkpOwogICAgICAgIGlmICghc2tlbCkKICAgICAgICAgICAgICAgIGdv dG8gY2xlYW51cDsKICAgICAgICBza2VsLT5jdHguc3ogPSAodm9pZCAqKSZza2VsLT5saW5rcyAt ICh2b2lkICopc2tlbDsKICAgICAgICB7CiAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hh ciBkYXRhW10gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oOCkpKSA9ICJcClwwXDBcMFwwIjsK CiAgICAgICAgICAgICAgICBza2VsLT5ic3MgPSBza2VsX3ByZXBfbWFwX2RhdGEoKHZvaWQgKilk YXRhLCA0MDk2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplb2YoZGF0YSkgLSAxKTsKICAgICAgICAgICAgICAgIGlmICghc2tlbC0+YnNzKQogICAg ICAgICAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7CiAgICAgICAgICAgICAgICBza2VsLT5t YXBzLmJzcy5pbml0aWFsX3ZhbHVlID0gKF9fdTY0KSAobG9uZykgc2tlbC0+YnNzOwogICAgICAg IH0KICAgICAgICByZXR1cm4gc2tlbDsKY2xlYW51cDoKICAgICAgICB0ZXN0X2JwZl9fZGVzdHJv eShza2VsKTsKICAgICAgICByZXR1cm4gTlVMTDsKfQoKc3RhdGljIGlubGluZSBpbnQKdGVzdF9i cGZfX2xvYWQoc3RydWN0IHRlc3RfYnBmICpza2VsKQp7CiAgICAgICAgc3RydWN0IGJwZl9sb2Fk X2FuZF9ydW5fb3B0cyBvcHRzID0ge307CiAgICAgICAgaW50IGVycjsKICAgICAgICBzdGF0aWMg Y29uc3QgY2hhciBvcHRzX2RhdGFbXSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyg4KSkpID0g IlwKXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXApcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcClwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwKXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXApcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcClwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwKXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXApcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcClwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwKXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXApcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcClwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwKXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXApcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcClwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwKXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXApcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcClwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwKXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXApcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcClwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwKXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXApcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcClwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwKXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXApcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcClwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwKXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXApcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcClwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwKXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXApcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcClww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBceDlmXHhlYlx4MDFcMFwKXHgxOFwwXDBcMFwwXDBcMFwwXHg2NFwwXDBcMFx4NjRcMFww XDBceDQxXDBcMFwwXDBcMFwwXDBceDAxXDBcMFx4MGRceDAyXDBcMFwwXApceDE4XDBcMFwwXHgw M1wwXDBcMFx4MDhcMFwwXDBcMFwwXDBceDAxXHgwNFwwXDBcMFx4MjBcMFwwXHgwMVwwXDBcMFww XDBcMFwwXApceDAyXDBcMFwwXDBceDEzXDBcMFwwXDBcMFwwXHgwZVx4MDJcMFwwXDBceDAxXDBc MFwwXHgwY1wwXDBcMFx4MDFcMFwwXHgwY1x4MDFcClwwXDBcMFx4M2NcMFwwXDBceDAxXDBcMFx4 MGZceDA0XDBcMFwwXHgwNFwwXDBcMFwwXDBcMFwwXHgwNFwwXDBcMFwwXHg2OFx4NjFcClx4NmVc eDY0XHg2Y1x4NjVcMFx4NjlceDZlXHg3NFwwXHg2OFx4NjFceDZlXHg2NFx4NmNceDY1XDBceDc2 XHg2MVx4NmNcMFwwXHg2M1wKXHg3NFx4NzhcMFx4NzJceDYxXHg3N1x4NWZceDc0XHg3Mlx4NjFc eDYzXHg2NVx4NzBceDZmXHg2OVx4NmVceDc0XHgyZlx4NzNceDYzXApceDY4XHg2NVx4NjRceDVm XHg3N1x4NjFceDZiXHg2NVx4NzVceDcwXHg1Zlx4NmVceDY1XHg3N1wwXHgyZVx4NjJceDczXHg3 M1wwXDBcClwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4YmRcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBceDAyXDBcMFwKXDBceDA0XDBcMFwwXHgwNFwwXDBcMFx4MDFc MFwwXDBcMFx4MDRcMFwwXDBcMFwwXDBcMFwwXDBcMFx4NzRceDY1XHg3M1x4NzRceDVmXApceDYy XHg3MFx4NjZceDJlXHg2Mlx4NzNceDczXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc eDA2XDBcMFwwXDBcMFwwXDBcClwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwKXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceGI3XDBcMFwwXDBcMFwwXDBceDk1 XDBcMFwwXApcMFwwXDBcMFwwXDBcMFwwXHgwNVwwXDBcMFx4MTFcMFwwXDBceDAyXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcClwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4NjhceDYxXHg2ZVx4NjRceDZjXHg2NVwwXDBcMFwKXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDA4XDBcMFwwXDBcMFwwXDBcMFww XDBcMFx4MDFcMFwwXDBcMFwwXApcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcClwwXDBcMFx4MTBcMFww XDBcMFwwXDBcMCI7CiAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgb3B0c19pbnNuW10gX19hdHRy aWJ1dGVfXygoX19hbGlnbmVkX18oOCkpKSA9ICJcClx4YmZceDE2XDBcMFwwXDBcMFwwXHhiZlx4 YTFcMFwwXDBcMFwwXDBceDA3XHgwMVwwXDBceDc4XHhmZlx4ZmZceGZmXHhiN1x4MDJcMFwKXDBc eDg4XDBcMFwwXHhiN1x4MDNcMFwwXDBcMFwwXDBceDg1XDBcMFwwXHg3MVwwXDBcMFx4MDVcMFx4 MTFcMFwwXDBcMFwwXHg2MVwKXHhhMVx4NzhceGZmXDBcMFwwXDBceGQ1XHgwMVx4MDFcMFwwXDBc MFwwXHg4NVwwXDBcMFx4YThcMFwwXDBceDYxXHhhMVx4N2NceGZmXApcMFwwXDBcMFx4ZDVceDAx XHgwMVwwXDBcMFwwXDBceDg1XDBcMFwwXHhhOFwwXDBcMFx4NjFceGExXHg4MFx4ZmZcMFwwXDBc MFx4ZDVcClx4MDFceDAxXDBcMFwwXDBcMFx4ODVcMFwwXDBceGE4XDBcMFwwXHgxOFx4NjBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg2MVwKXHgwMVwwXDBcMFwwXDBcMFx4ZDVceDAxXHgw MlwwXDBcMFwwXDBceGJmXHgxOVwwXDBcMFwwXDBcMFx4ODVcMFwwXDBceGE4XDBcMFwwXApceGJm XHg3MFwwXDBcMFwwXDBcMFx4OTVcMFwwXDBcMFwwXDBcMFx4NjFceDYwXHgwOFwwXDBcMFwwXDBc eDE4XHg2MVwwXDBcMFwwXDBcClwwXDBcMFwwXDBceGQ4XHgwNVwwXDBceDYzXHgwMVwwXDBcMFww XDBcMFx4NjFceDYwXHgwY1wwXDBcMFwwXDBceDE4XHg2MVwwXDBcMFwKXDBcMFwwXDBcMFwwXDBc eGQ0XHgwNVwwXDBceDYzXHgwMVwwXDBcMFwwXDBcMFx4NzlceDYwXHgxMFwwXDBcMFwwXDBceDE4 XHg2MVwwXApcMFwwXDBcMFwwXDBcMFwwXDBceGM4XHgwNVwwXDBceDdiXHgwMVwwXDBcMFwwXDBc MFx4MThceDYwXDBcMFwwXDBcMFwwXDBcMFwwXDBcClwwXHgwNVwwXDBceDE4XHg2MVwwXDBcMFww XDBcMFwwXDBcMFwwXHhjMFx4MDVcMFwwXHg3Ylx4MDFcMFwwXDBcMFwwXDBceGI3XHgwMVwKXDBc MFx4MTJcMFwwXDBceDE4XHg2MlwwXDBcMFwwXDBcMFwwXDBcMFwwXHhjMFx4MDVcMFwwXHhiN1x4 MDNcMFwwXHgxY1wwXDBcMFwKXHg4NVwwXDBcMFx4YTZcMFwwXDBceGJmXHgwN1wwXDBcMFwwXDBc MFx4YzVceDA3XHhkN1x4ZmZcMFwwXDBcMFx4NjNceDdhXHg3OFwKXHhmZlwwXDBcMFwwXHg2MVx4 YTBceDc4XHhmZlwwXDBcMFwwXHgxOFx4NjFcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MTBceDA2XDBc MFwKXHg2M1x4MDFcMFwwXDBcMFwwXDBceDYxXHg2MFx4MWNcMFwwXDBcMFwwXHgxNVwwXHgwM1ww XDBcMFwwXDBceDE4XHg2MVwwXDBcMFwwXApcMFwwXDBcMFwwXDBceGVjXHgwNVwwXDBceDYzXHgw MVwwXDBcMFwwXDBcMFx4YjdceDAxXDBcMFwwXDBcMFwwXHgxOFx4NjJcMFwwXDBcClwwXDBcMFww XDBcMFwwXHhlMFx4MDVcMFwwXHhiN1x4MDNcMFwwXHg0OFwwXDBcMFx4ODVcMFwwXDBceGE2XDBc MFwwXHhiZlx4MDdcMFwKXDBcMFwwXDBcMFx4YzVceDA3XHhjNlx4ZmZcMFwwXDBcMFx4MThceDYx XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4NjNceDcxXApcMFwwXDBcMFwwXDBceDc5XHg2 M1x4MjBcMFwwXDBcMFwwXHgxNVx4MDNceDA4XDBcMFwwXDBcMFx4MThceDYxXDBcMFwwXDBcMFww XDBcClwwXDBcMFx4MjhceDA2XDBcMFx4YjdceDAyXDBcMFx4MDRcMFwwXDBceDYxXHg2MFx4MDRc MFwwXDBcMFwwXHg0NVwwXHgwMlwwXHgwMVwKXDBcMFwwXHg4NVwwXDBcMFx4OTRcMFwwXDBceDA1 XDBceDAxXDBcMFwwXDBcMFx4ODVcMFwwXDBceDcxXDBcMFwwXHgxOFx4NjJcMFwwXApcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBceDYxXHgyMFwwXDBcMFwwXDBcMFx4MThceDYxXDBcMFwwXDBcMFww XDBcMFwwXDBceDM4XApceDA2XDBcMFx4NjNceDAxXDBcMFwwXDBcMFwwXHgxOFx4NjBcMFwwXDBc MFwwXDBcMFwwXDBcMFx4MzBceDA2XDBcMFx4MThceDYxXDBcClwwXDBcMFwwXDBcMFwwXDBcMFx4 NDBceDA2XDBcMFx4N2JceDAxXDBcMFwwXDBcMFwwXHgxOFx4NjBcMFwwXDBcMFwwXDBcMFwwXDBc MFwKXHgyOFx4MDZcMFwwXHgxOFx4NjFcMFwwXDBcMFwwXDBcMFwwXDBcMFx4NDhceDA2XDBcMFx4 N2JceDAxXDBcMFwwXDBcMFwwXHhiN1wKXHgwMVwwXDBceDAyXDBcMFwwXHgxOFx4NjJcMFwwXDBc MFwwXDBcMFwwXDBcMFx4MzhceDA2XDBcMFx4YjdceDAzXDBcMFx4MjBcMFwwXApcMFx4ODVcMFww XDBceGE2XDBcMFwwXHhiZlx4MDdcMFwwXDBcMFwwXDBceGM1XHgwN1x4YTJceGZmXDBcMFwwXDBc eDE4XHg2MFwwXDBcClwwXDBcMFwwXDBcMFwwXDBceDU4XHgwNlwwXDBceDE4XHg2MVwwXDBcMFww XDBcMFwwXDBcMFwwXHg4OFx4MDZcMFwwXHg3Ylx4MDFcMFwKXDBcMFwwXDBcMFx4MThceDYwXDBc MFwwXDBcMFwwXDBcMFwwXDBceDYwXHgwNlwwXDBceDE4XHg2MVwwXDBcMFwwXDBcMFwwXDBcMFww XApceDgwXHgwNlwwXDBceDdiXHgwMVwwXDBcMFwwXDBcMFx4MThceDYwXDBcMFwwXDBcMFwwXDBc MFwwXDBceDcwXHgwNlwwXDBceDE4XApceDYxXDBcMFwwXDBcMFwwXDBcMFwwXDBceGM4XHgwNlww XDBceDdiXHgwMVwwXDBcMFwwXDBcMFx4MThceDYwXDBcMFwwXDBcMFwwXDBcClwwXDBcMFx4Nzhc eDA2XDBcMFx4MThceDYxXDBcMFwwXDBcMFwwXDBcMFwwXDBceGQ4XHgwNlwwXDBceDdiXHgwMVww XDBcMFwwXDBcMFwKXHgxOFx4NjBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4NzhceDA2XDBcMFx4MThc eDYxXDBcMFwwXDBcMFwwXDBcMFwwXDBceGY4XHgwNlwwXApcMFx4N2JceDAxXDBcMFwwXDBcMFww XHgxOFx4NjBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgxOFx4NjFcMFwwXDBcMFwwXDBc ClwwXDBcMFwwXHhmMFx4MDZcMFwwXHg3Ylx4MDFcMFwwXDBcMFwwXDBceDYxXHg2MFx4MDhcMFww XDBcMFwwXHgxOFx4NjFcMFwwXDBcMFwKXDBcMFwwXDBcMFwwXHg5MFx4MDZcMFwwXHg2M1x4MDFc MFwwXDBcMFwwXDBceDYxXHg2MFx4MGNcMFwwXDBcMFwwXHgxOFx4NjFcMFwwXApcMFwwXDBcMFww XDBcMFwwXHg5NFx4MDZcMFwwXHg2M1x4MDFcMFwwXDBcMFwwXDBceDc5XHg2MFx4MTBcMFwwXDBc MFwwXHgxOFx4NjFcClwwXDBcMFwwXDBcMFwwXDBcMFwwXHg5OFx4MDZcMFwwXHg3Ylx4MDFcMFww XDBcMFwwXDBceDYxXHhhMFx4NzhceGZmXDBcMFwwXDBcClx4MThceDYxXDBcMFwwXDBcMFwwXDBc MFwwXDBceGMwXHgwNlwwXDBceDYzXHgwMVwwXDBcMFwwXDBcMFx4YjdceDAxXDBcMFx4MDVcMFwK XDBcMFx4MThceDYyXDBcMFwwXDBcMFwwXDBcMFwwXDBceDc4XHgwNlwwXDBceGI3XHgwM1wwXDBc eDhjXDBcMFwwXHg4NVwwXDBcMFwKXHhhNlwwXDBcMFx4YmZceDA3XDBcMFwwXDBcMFwwXHhjNVx4 MDdceDZkXHhmZlwwXDBcMFwwXHg2M1x4N2FceDgwXHhmZlwwXDBcMFwwXApceDYxXHhhMVx4Nzhc eGZmXDBcMFwwXDBceGQ1XHgwMVx4MDJcMFwwXDBcMFwwXHhiZlx4MTlcMFwwXDBcMFwwXDBceDg1 XDBcMFwwXApceGE4XDBcMFwwXHg2MVx4YTBceDgwXHhmZlwwXDBcMFwwXHg2M1x4MDZceDI4XDBc MFwwXDBcMFx4MThceDYxXDBcMFwwXDBcMFwwXDBcClwwXDBcMFwwXDBcMFwwXHg2MVx4MTBcMFww XDBcMFwwXDBceDYzXHgwNlx4MThcMFwwXDBcMFwwXHhiN1wwXDBcMFwwXDBcMFwwXHg5NVwKXDBc MFwwXDBcMFwwXDAiOwogICAgICAgIG9wdHMuY3R4ID0gKHN0cnVjdCBicGZfbG9hZGVyX2N0eCAq KXNrZWw7CiAgICAgICAgb3B0cy5kYXRhX3N6ID0gc2l6ZW9mKG9wdHNfZGF0YSkgLSAxOwogICAg ICAgIG9wdHMuZGF0YSA9ICh2b2lkICopb3B0c19kYXRhOwogICAgICAgIG9wdHMuaW5zbnNfc3og PSBzaXplb2Yob3B0c19pbnNuKSAtIDE7CiAgICAgICAgb3B0cy5pbnNucyA9ICh2b2lkICopb3B0 c19pbnNuOwoKICAgICAgICBlcnIgPSBicGZfbG9hZF9hbmRfcnVuKCZvcHRzKTsKICAgICAgICBp ZiAoZXJyIDwgMCkKICAgICAgICAgICAgICAgIHJldHVybiBlcnI7CiAgICAgICAgc2tlbC0+YnNz ID0gc2tlbF9maW5hbGl6ZV9tYXBfZGF0YSgmc2tlbC0+bWFwcy5ic3MuaW5pdGlhbF92YWx1ZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwOTYsIFBST1RfUkVBRCB8 IFBST1RfV1JJVEUsIHNrZWwtPm1hcHMuYnNzLm1hcF9mZCk7CiAgICAgICAgaWYgKCFza2VsLT5i c3MpCiAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKICAgICAgICByZXR1cm4gMDsKfQoK c3RhdGljIGlubGluZSBzdHJ1Y3QgdGVzdF9icGYgKgp0ZXN0X2JwZl9fb3Blbl9hbmRfbG9hZCh2 b2lkKQp7CiAgICAgICAgc3RydWN0IHRlc3RfYnBmICpza2VsOwoKICAgICAgICBza2VsID0gdGVz dF9icGZfX29wZW4oKTsKICAgICAgICBpZiAoIXNrZWwpCiAgICAgICAgICAgICAgICByZXR1cm4g TlVMTDsKICAgICAgICBpZiAodGVzdF9icGZfX2xvYWQoc2tlbCkpIHsKICAgICAgICAgICAgICAg IHRlc3RfYnBmX19kZXN0cm95KHNrZWwpOwogICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAg ICAgICAgfQogICAgICAgIHJldHVybiBza2VsOwp9CgpfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBz dGF0aWMgdm9pZAp0ZXN0X2JwZl9fYXNzZXJ0KHN0cnVjdCB0ZXN0X2JwZiAqcyBfX2F0dHJpYnV0 ZV9fKCh1bnVzZWQpKSkKewojaWZkZWYgX19jcGx1c3BsdXMKI2RlZmluZSBfU3RhdGljX2Fzc2Vy dCBzdGF0aWNfYXNzZXJ0CiNlbmRpZgogICAgICAgIF9TdGF0aWNfYXNzZXJ0KHNpemVvZihzLT5i c3MtPnZhbCkgPT0gNCwgInVuZXhwZWN0ZWQgc2l6ZSBvZiAndmFsJyIpOwojaWZkZWYgX19jcGx1 c3BsdXMKI3VuZGVmIF9TdGF0aWNfYXNzZXJ0CiNlbmRpZgp9CgojZW5kaWYgLyogX19URVNUX0JQ Rl9TS0VMX0hfXyAqLwoKQXQgMjAyNi0wMS0wNSAxOTo1MDoyNSwgIkpvc2UgRS4gTWFyY2hlc2ki IDxqb3NlLm1hcmNoZXNpQG9yYWNsZS5jb20+IHdyb3RlOgo+Cj5GV0lXIEkgdGVzdGVkIHRoZSBy ZXByb2R1Y2VyIHdpdGggZ2NjLWJwZiBhbmQgZ290IG5vIHBvaW50ZXIgY29udmVyc2lvbgo+d2Fy bmluZ3MgKG5vdCB0aGF0IEkgd2FzIGV4cGVjdGluZyBhbnl0aGluZyBkaWZmZXJlbnQsIGJ1dCBq dXN0IGluCj5jYXNlKToKPgo+ICQgYnBmLXVua25vd24tbm9uZS1nY2MgLXN0ZD1nbnUxMSAtSS4v dG9vbHMvaW5jbHVkZSAtZyAtTzIgLWMgdGV4dC5icGYuYyAtbyB0ZXN0LmJwZi5vCj4gJCBicGZ0 b29sIGdlbiBza2VsZXRvbiB0ZXN0LmJwZi5vIC1MID4gdGVzdC5icGYuc2tlbC5oCj4gJCBnKysg LWMgdGVzdC5jcHAgLUkuCj4KPj4gRnJvbTogV2FuTGkgTml1IDxuaXV3bDFAY2hpbmF0ZWxlY29t LmNuPgo+Pgo+PiBGaXggQysrIGNvbXBpbGF0aW9uIGVycm9ycyBpbiBnZW5lcmF0ZWQgc2tlbGV0 b24gYnkgYWRkaW5nIGV4cGxpY2l0Cj4+IHBvaW50ZXIgY2FzdHMgYW5kIHVzaW5nIGludGVnZXIg c3VidHJhY3Rpb24gZm9yIG9mZnNldCBjYWxjdWxhdGlvbi4KPj4KPj4gVXNlIHN0cnVjdCBvdXRl cjo6aW5uZXIgc3ludGF4IHVuZGVyIF9fY3BsdXNwbHVzIHRvIGFjY2VzcyBuZXN0ZWQgc2tlbGV0 b24gbWFwCj4+IHN0cnVjdHMsIGVuc3VyaW5nIEMrKyBjb21waWxhdGlvbiBjb21wYXRpYmlsaXR5 IHdoaWxlIHByZXNlcnZpbmcgQyBzdXBwb3J0Cj4+Cj4+IGVycm9yOiBpbnZhbGlkIGNvbnZlcnNp b24gZnJvbSAndm9pZConIHRvICc8b2JqX25hbWU+KicgWy1mcGVybWlzc2l2ZV0KPj4gICAgICAg fCAgICAgICAgIHNrZWwgPSBza2VsX2FsbG9jKHNpemVvZigqc2tlbCkpOwo+PiAgICAgICB8ICAg ICAgICAgICAgICAgIH5+fn5+fn5+fn5efn5+fn5+fn5+fn5+fn4KPj4gICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgfAo+PiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB2 b2lkKgo+Pgo+PiBlcnJvcjogYXJpdGhtZXRpYyBvbiBwb2ludGVycyB0byB2b2lkCj4+ICAgICAg IHwgICAgICAgICBza2VsLT5jdHguc3ogPSAodm9pZCAqKSZza2VsLT5saW5rcyAtICh2b2lkICop c2tlbDsKPj4gICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+ fn5+IF4gfn5+fn5+fn5+fn5+Cj4+Cj4+IGVycm9yOiBhc3NpZ25pbmcgdG8gJ3N0cnVjdCA8b2Jq X25hbWU+X188aWRlbnQ+IConIGZyb20gaW5jb21wYXRpYmxlIHR5cGUgJ3ZvaWQgKicKPj4gICAg ICAgfCAgICAgICAgICAgICAgICAgc2tlbC0+PGlkZW50PiA9IHNrZWxfcHJlcF9tYXBfZGF0YSgo dm9pZCAqKWRhdGEsIDQwOTYsCj4+ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Cj4+ICAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRhdGEpIC0g MSk7Cj4+ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfn5+fn5+fn5+fn5+fn5+fn4KPj4KPj4gZXJyb3I6IGFzc2lnbmluZyB0byAnc3RydWN0 IDxvYmpfbmFtZT5fXzxpZGVudD4gKicgZnJvbSBpbmNvbXBhdGlibGUgdHlwZSAndm9pZCAqJwo+ PiAgICAgICB8ICAgICAgICAgc2tlbC0+PGlkZW50PiA9IHNrZWxfZmluYWxpemVfbWFwX2RhdGEo JnNrZWwtPm1hcHMuPGlkZW50Pi5pbml0aWFsX3ZhbHVlLAo+PiAgICAgICB8ICAgICAgICAgICAg ICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn4KPj4gICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg NDA5NiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgc2tlbC0+bWFwcy48aWRlbnQ+Lm1hcF9mZCk7 Cj4+ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KPj4KPj4gTWlu aW11bSByZXByb2R1Y2VyOgo+Pgo+PiAJJCBjYXQgdGVzdC5icGYuYwo+PiAJaW50IHZhbDsgLy8g cGxhY2VkIGluIC5ic3Mgc2VjdGlvbgo+Pgo+PiAJI2luY2x1ZGUgInZtbGludXguaCIKPj4gCSNp bmNsdWRlIDxicGYvYnBmX2hlbHBlcnMuaD4KPj4KPj4gCVNFQygicmF3X3RyYWNlcG9pbnQvc2No ZWRfd2FrZXVwX25ldyIpIGludCBoYW5kbGUodm9pZCAqY3R4KSB7IHJldHVybiAwOyB9Cj4+Cj4+ IAkkIGNhdCB0ZXN0LmNwcAo+PiAJI2luY2x1ZGUgPGNlcnJubz4KPj4KPj4gCWV4dGVybiAiQyIg ewo+PiAJI2luY2x1ZGUgInRlc3QuYnBmLnNrZWwuaCIKPj4gCX0KPj4KPj4gCSQgYnBmdG9vbCBi dGYgZHVtcCBmaWxlIC9zeXMva2VybmVsL2J0Zi92bWxpbnV4IGZvcm1hdCBjID4gdm1saW51eC5o Cj4+IAkkIGNsYW5nIC1nIC1PMiAtdGFyZ2V0IGJwZiAtYyB0ZXN0LmJwZi5jIC1vIHRlc3QuYnBm Lm8KPj4gCSQgYnBmdG9vbCBnZW4gc2tlbGV0b24gdGVzdC5icGYubyAtTCAgPiB0ZXN0LmJwZi5z a2VsLmgKPj4gCSQgZysrIC1jIHRlc3QuY3BwIC1JLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBXYW5M aSBOaXUgPG5pdXdsMUBjaGluYXRlbGVjb20uY24+Cj4+IENvLWRldmVsb3BlZC1ieTogTWVuZ2xv bmcgRG9uZyA8ZG9uZ21sMkBjaGluYXRlbGVjb20uY24+Cj4+IFNpZ25lZC1vZmYtYnk6IE1lbmds b25nIERvbmcgPGRvbmdtbDJAY2hpbmF0ZWxlY29tLmNuPgo+PiAtLS0KPj4gY2hhbmdlbG9nOgo+ PiB2NDoKPj4gLSBBZGQgYSBtaW5pbXVtIHJlcHJvZHVjZXIgdG8gZGVtb25zdHJhdGUgdGhlIGlz c3VlLCBhcyBzdWdnZXN0ZWQgYnkgWW9uZ2hvbmcgU29uZwo+Pgo+PiB2MzogaHR0cHM6Ly9sb3Jl Lmtlcm5lbC5vcmcvYWxsLzIwMjYwMTA0MDIxNDAyLjI5NjgtMS1raXJhc2t5bGVyQDE2My5jb20v Cj4+IC0gRml4IHR3byBhZGRpdGlvbmFsIDxvYmpfbmFtZT5fXzxpZGVudD4gdHlwZSBtaXNtYXRj aGVzIGFzIHN1Z2dlc3RlZCBieSBZb25naG9uZyBTb25nCj4+Cj4+IHYyOiBodHRwczovL2xvcmUu a2VybmVsLm9yZy9hbGwvMjAyNTEyMzExMDI5MjkuMzg0My0xLWtpcmFza3lsZXJAMTYzLmNvbS8K Pj4gLSBVc2UgZ2VuZXJpYyAoc3RydWN0ICUxJHMgKikgaW5zdGVhZCBvZiBwcm9qZWN0LXNwZWNp ZmljIChzdHJ1Y3QgdHJhY2VfYnBmICopCj4+Cj4+IHYxOiBodHRwczovL2xvcmUua2VybmVsLm9y Zy9hbGwvMjAyNTEyMzEwOTI1NDEuMzM1Mi0xLWtpcmFza3lsZXJAMTYzLmNvbS8KPj4gLS0tCj4+ ICB0b29scy9icGYvYnBmdG9vbC9nZW4uYyB8IDE2ICsrKysrKysrKysrKy0tLS0KPj4gIDEgZmls ZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0t Z2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvZ2VuLmMgYi90b29scy9icGYvYnBmdG9vbC9nZW4uYwo+ PiBpbmRleCA5OTNjN2Q5NDg0YTQuLjAxMDg2MWI3ZDBlYSAxMDA2NDQKPj4gLS0tIGEvdG9vbHMv YnBmL2JwZnRvb2wvZ2VuLmMKPj4gKysrIGIvdG9vbHMvYnBmL2JwZnRvb2wvZ2VuLmMKPj4gQEAg LTczMSwxMCArNzMxLDEwIEBAIHN0YXRpYyBpbnQgZ2VuX3RyYWNlKHN0cnVjdCBicGZfb2JqZWN0 ICpvYmosIGNvbnN0IGNoYXIgKm9ial9uYW1lLCBjb25zdCBjaGFyICpoCj4+ICAJCXsJCQkJCQkJ ICAgIFxuXAo+PiAgCQkJc3RydWN0ICUxJHMgKnNrZWw7CQkJCSAgICBcblwKPj4gIAkJCQkJCQkJ CSAgICBcblwKPj4gLQkJCXNrZWwgPSBza2VsX2FsbG9jKHNpemVvZigqc2tlbCkpOwkJICAgIFxu XAo+PiArCQkJc2tlbCA9IChzdHJ1Y3QgJTEkcyAqKXNrZWxfYWxsb2Moc2l6ZW9mKCpza2VsKSk7 ICAgIFxuXAo+PiAgCQkJaWYgKCFza2VsKQkJCQkJICAgIFxuXAo+PiAgCQkJCWdvdG8gY2xlYW51 cDsJCQkJICAgIFxuXAo+PiAtCQkJc2tlbC0+Y3R4LnN6ID0gKHZvaWQgKikmc2tlbC0+bGlua3Mg LSAodm9pZCAqKXNrZWw7IFxuXAo+PiArCQkJc2tlbC0+Y3R4LnN6ID0gKF9fdTY0KSZza2VsLT5s aW5rcyAtIChfX3U2NClza2VsOyAgIFxuXAo+PiAgCQkiLAo+PiAgCQlvYmpfbmFtZSwgb3B0cy5k YXRhX3N6KTsKPj4gIAlicGZfb2JqZWN0X19mb3JfZWFjaF9tYXAobWFwLCBvYmopIHsKPj4gQEAg LTc1NSwxMyArNzU1LDE3IEBAIHN0YXRpYyBpbnQgZ2VuX3RyYWNlKHN0cnVjdCBicGZfb2JqZWN0 ICpvYmosIGNvbnN0IGNoYXIgKm9ial9uYW1lLCBjb25zdCBjaGFyICpoCj4+ICAJCVxuXAo+PiAg CQlcIjsJCQkJCQkJICAgIFxuXAo+PiAgCQkJCQkJCQkJICAgIFxuXAo+PiArCQkjaWZkZWYgX19j cGx1c3BsdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblwKPj4g KwkJCQlza2VsLT4lMSRzID0gKHN0cnVjdCAlMyRzOjolMyRzX18lMSRzICopc2tlbF9wcmVwX21h cF9kYXRhKCh2b2lkICopZGF0YSwgJTIkemQsXG5cCj4+ICsJCSNlbHNlICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXAo+PiAgCQkJCXNrZWwt PiUxJHMgPSBza2VsX3ByZXBfbWFwX2RhdGEoKHZvaWQgKilkYXRhLCAlMiR6ZCxcblwKPj4gKwkJ I2VuZGlmCQkJCQkJCSAgICBcblwKPj4gIAkJCQkJCQkJc2l6ZW9mKGRhdGEpIC0gMSk7XG5cCj4+ ICAJCQkJaWYgKCFza2VsLT4lMSRzKQkJCSAgICBcblwKPj4gIAkJCQkJZ290byBjbGVhbnVwOwkJ CSAgICBcblwKPj4gIAkJCQlza2VsLT5tYXBzLiUxJHMuaW5pdGlhbF92YWx1ZSA9IChfX3U2NCkg KGxvbmcpIHNrZWwtPiUxJHM7XG5cCj4+ICAJCQl9CQkJCQkJICAgIFxuXAo+PiAtCQkJIiwgaWRl bnQsIGJwZl9tYXBfbW1hcF9zeihtYXApKTsKPj4gKwkJCSIsIGlkZW50LCBicGZfbWFwX21tYXBf c3oobWFwKSwgb2JqX25hbWUpOwo+PiAgCX0KPj4gIAljb2RlZ2VuKCJcCj4+ICAJCVxuXAo+PiBA QCAtODU3LDEyICs4NjEsMTYgQEAgc3RhdGljIGludCBnZW5fdHJhY2Uoc3RydWN0IGJwZl9vYmpl Y3QgKm9iaiwgY29uc3QgY2hhciAqb2JqX25hbWUsIGNvbnN0IGNoYXIgKmgKPj4gIAo+PiAgCQlj b2RlZ2VuKCJcCj4+ICAJCVxuXAo+PiArCQkjaWZkZWYgX19jcGx1c3BsdXMJCQkJCSAgICBcblwK Pj4gKwkJCXNrZWwtPiUxJHMgPSAoc3RydWN0ICU0JHM6OiU0JHNfXyUxJHMgKilza2VsX2ZpbmFs aXplX21hcF9kYXRhKCZza2VsLT5tYXBzLiUxJHMuaW5pdGlhbF92YWx1ZSxcblwKPj4gKwkJI2Vs c2UJCQkJCQkJICAgIFxuXAo+PiAgCQkJc2tlbC0+JTEkcyA9IHNrZWxfZmluYWxpemVfbWFwX2Rh dGEoJnNrZWwtPm1hcHMuJTEkcy5pbml0aWFsX3ZhbHVlLCAgXG5cCj4+ICsJCSNlbmRpZgkJCQkJ CQkgICAgXG5cCj4+ICAJCQkJCQkJJTIkemQsICUzJHMsIHNrZWwtPm1hcHMuJTEkcy5tYXBfZmQp O1xuXAo+PiAgCQkJaWYgKCFza2VsLT4lMSRzKQkJCQkgICAgXG5cCj4+ICAJCQkJcmV0dXJuIC1F Tk9NRU07CQkJCSAgICBcblwKPj4gIAkJCSIsCj4+IC0JCSAgICAgICBpZGVudCwgYnBmX21hcF9t bWFwX3N6KG1hcCksIG1tYXBfZmxhZ3MpOwo+PiArCQkgICAgICAgaWRlbnQsIGJwZl9tYXBfbW1h cF9zeihtYXApLCBtbWFwX2ZsYWdzLCBvYmpfbmFtZSk7Cj4+ICAJfQo+PiAgCWNvZGVnZW4oIlwK Pj4gIAkJXG5cCg==